diff options
329 files changed, 11136 insertions, 19186 deletions
diff --git a/.bowerrc b/.bowerrc new file mode 100644 index 00000000..e0163687 --- /dev/null +++ b/.bowerrc | |||
@@ -0,0 +1,4 @@ | |||
1 | { | ||
2 | "directory" : "app/Resources/static/lib", | ||
3 | "json" : "bower.json" | ||
4 | } | ||
diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 00000000..976a9eb5 --- /dev/null +++ b/.eslintrc.json | |||
@@ -0,0 +1,4 @@ | |||
1 | { | ||
2 | "extends": "airbnb", | ||
3 | "installedESLint": true, | ||
4 | } | ||
@@ -41,3 +41,11 @@ docker/data/ | |||
41 | 41 | ||
42 | # To avoid crazy stuff on some PR, we must manually FORCE ADD IT on each new release | 42 | # To avoid crazy stuff on some PR, we must manually FORCE ADD IT on each new release |
43 | composer.lock | 43 | composer.lock |
44 | |||
45 | # assets stuff | ||
46 | /node_modules/ | ||
47 | !app/Resources/static/lib | ||
48 | app/Resources/static/lib/* | ||
49 | /bin | ||
50 | !/src/Wallabag/CoreBundle/Resources/public | ||
51 | /src/Wallabag/CoreBundle/Resources/public/* | ||
diff --git a/.travis.yml b/.travis.yml index 53cf9bb5..c5fe7b01 100644 --- a/.travis.yml +++ b/.travis.yml | |||
@@ -1,5 +1,9 @@ | |||
1 | language: php | 1 | language: php |
2 | 2 | ||
3 | services: | ||
4 | - rabbitmq | ||
5 | - redis | ||
6 | |||
3 | # faster builds on docker-container setup | 7 | # faster builds on docker-container setup |
4 | sudo: false | 8 | sudo: false |
5 | 9 | ||
@@ -15,6 +19,9 @@ cache: | |||
15 | directories: | 19 | directories: |
16 | - vendor | 20 | - vendor |
17 | - $HOME/.composer/cache | 21 | - $HOME/.composer/cache |
22 | - node_modules | ||
23 | - $HOME/.cache/bower | ||
24 | - $HOME/.npm | ||
18 | 25 | ||
19 | php: | 26 | php: |
20 | - 5.5 | 27 | - 5.5 |
@@ -23,6 +30,9 @@ php: | |||
23 | - 7.1 | 30 | - 7.1 |
24 | - nightly | 31 | - nightly |
25 | 32 | ||
33 | node_js: | ||
34 | - "5" | ||
35 | |||
26 | env: | 36 | env: |
27 | - DB=mysql | 37 | - DB=mysql |
28 | - DB=pgsql | 38 | - DB=pgsql |
@@ -52,6 +62,8 @@ matrix: | |||
52 | env: DB=sqlite | 62 | env: DB=sqlite |
53 | - php: 7.0 | 63 | - php: 7.0 |
54 | env: CS_FIXER=run VALIDATE_TRANSLATION_FILE=run DB=sqlite | 64 | env: CS_FIXER=run VALIDATE_TRANSLATION_FILE=run DB=sqlite |
65 | - php: 7.0 | ||
66 | env: DB=sqlite ASSETS=build | ||
55 | allow_failures: | 67 | allow_failures: |
56 | - php: hhvm-3.12 | 68 | - php: hhvm-3.12 |
57 | - php: 7.1 | 69 | - php: 7.1 |
@@ -67,15 +79,20 @@ before_script: | |||
67 | - if [[ ! $PHP = hhvm* ]]; then echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi; | 79 | - if [[ ! $PHP = hhvm* ]]; then echo "memory_limit=-1" >> ~/.phpenv/versions/$(phpenv version-name)/etc/conf.d/travis.ini; fi; |
68 | # xdebug isn't enable for PHP 7.1 | 80 | # xdebug isn't enable for PHP 7.1 |
69 | - if [[ ! $PHP = hhvm* ]]; then phpenv config-rm xdebug.ini || echo "xdebug not available"; fi | 81 | - if [[ ! $PHP = hhvm* ]]; then phpenv config-rm xdebug.ini || echo "xdebug not available"; fi |
82 | - if [[ $PHP = 5.5 ]]; then composer require "phpunit/phpunit:4.*" --no-update; fi; | ||
70 | - composer self-update --no-progress | 83 | - composer self-update --no-progress |
71 | - if [[ "$DB" = "pgsql" ]]; then psql -c 'create database wallabag_test;' -U postgres; fi; | 84 | - if [[ $DB = pgsql ]]; then psql -c 'create database wallabag_test;' -U postgres; fi; |
85 | |||
86 | install: | ||
87 | - if [[ $ASSETS = build ]]; then source ~/.nvm/nvm.sh && nvm install 5.0; fi; | ||
88 | - if [[ $ASSETS = build ]]; then npm install -g npm@latest; fi; | ||
72 | 89 | ||
73 | before_install: | 90 | before_install: |
74 | - if [[ $TRAVIS_REPO_SLUG = wallabag/wallabag ]]; then cp .composer-auth.json ~/.composer/auth.json; fi; | 91 | - if [[ $TRAVIS_REPO_SLUG = wallabag/wallabag ]]; then cp .composer-auth.json ~/.composer/auth.json; fi; |
75 | 92 | ||
76 | script: | 93 | script: |
77 | - travis_wait composer install --no-interaction --no-progress --prefer-dist -o | 94 | - travis_wait bash install.sh |
78 | - ant prepare-$DB | 95 | - ant prepare-$DB |
79 | - phpunit -v | 96 | - phpunit -v |
80 | - if [ "$CS_FIXER" = "run" ]; then php bin/php-cs-fixer fix src/ --verbose --dry-run ; fi; | 97 | - if [[ $CS_FIXER = run ]]; then php bin/php-cs-fixer fix src/ --verbose --dry-run ; fi; |
81 | - if [ "$VALIDATE_TRANSLATION_FILE" = "run" ]; then php bin/console lint:yaml src/Wallabag/CoreBundle/Resources/translations -v ; fi; | 98 | - if [[ $VALIDATE_TRANSLATION_FILE = run ]]; then php bin/console lint:yaml src/Wallabag/CoreBundle/Resources/translations -v ; fi; |
diff --git a/Gruntfile.js b/Gruntfile.js new file mode 100644 index 00000000..8dc5b83b --- /dev/null +++ b/Gruntfile.js | |||
@@ -0,0 +1,216 @@ | |||
1 | module.exports = function (grunt) { | ||
2 | require('load-grunt-tasks')(grunt); | ||
3 | |||
4 | grunt.initConfig({ | ||
5 | appDir: 'app/Resources/static', | ||
6 | buildDir: 'web/bundles/wallabagcore', | ||
7 | |||
8 | postcss: { | ||
9 | material: { | ||
10 | options: { | ||
11 | map: { | ||
12 | inline: false, | ||
13 | }, | ||
14 | |||
15 | processors: [ | ||
16 | require('pixrem')(), | ||
17 | require('autoprefixer')({ browsers: 'last 2 versions' }), | ||
18 | require('cssnano')(), | ||
19 | ], | ||
20 | }, | ||
21 | src: '<%= buildDir %>/material.css', | ||
22 | dest: '<%= buildDir %>/themes/material/css/style.min.css', | ||
23 | }, | ||
24 | baggy: { | ||
25 | options: { | ||
26 | map: { | ||
27 | inline: false, | ||
28 | }, | ||
29 | |||
30 | processors: [ | ||
31 | require('pixrem')(), | ||
32 | require('autoprefixer')({ browsers: 'last 2 versions' }), | ||
33 | require('cssnano')(), | ||
34 | ], | ||
35 | }, | ||
36 | src: '<%= buildDir %>/baggy.css', | ||
37 | dest: '<%= buildDir %>/themes/baggy/css/style.min.css', | ||
38 | }, | ||
39 | }, | ||
40 | concat: { | ||
41 | options: { | ||
42 | separator: ';', | ||
43 | }, | ||
44 | jsMaterial: { | ||
45 | src: [ | ||
46 | '<%= appDir %>/themes/material/js/init.js', | ||
47 | '<%= appDir %>/themes/_global/js/restoreScroll.js', | ||
48 | 'node_modules/jquery.tinydot/src/jquery.tinydot.js', | ||
49 | ], | ||
50 | dest: '<%= buildDir %>/material.js', | ||
51 | }, | ||
52 | jsBaggy: { | ||
53 | src: [ | ||
54 | '<%= appDir %>/themes/baggy/js/init.js', | ||
55 | '<%= appDir %>/themes/_global/js/restoreScroll.js', | ||
56 | '<%= appDir %>/themes/baggy/js/autoClose.js', | ||
57 | '<%= appDir %>/themes/baggy/js/autoCompleteTags.js', | ||
58 | '<%= appDir %>/themes/baggy/js/closeMessage.js', | ||
59 | '<%= appDir %>/themes/baggy/js/popupForm.js', | ||
60 | // Save link is no more used for now | ||
61 | // '<%= appDir %>/themes/baggy/js/saveLink.js', | ||
62 | ], | ||
63 | dest: '<%= buildDir %>/baggy.js', | ||
64 | }, | ||
65 | cssMaterial: { | ||
66 | src: [ | ||
67 | 'node_modules/materialize-css/bin/materialize.css', | ||
68 | '<%= appDir %>/themes/material/css/*.css', | ||
69 | ], | ||
70 | dest: '<%= buildDir %>/material.css', | ||
71 | }, | ||
72 | cssBaggy: { | ||
73 | src: [ | ||
74 | '<%= appDir %>/themes/baggy/css/*.css', | ||
75 | ], | ||
76 | dest: '<%= buildDir %>/baggy.css', | ||
77 | }, | ||
78 | }, | ||
79 | browserify: { | ||
80 | '<%= buildDir %>/material.browser.js': ['<%= buildDir %>/material.js'], | ||
81 | '<%= buildDir %>/baggy.browser.js': ['<%= buildDir %>/baggy.js'], | ||
82 | }, | ||
83 | uglify: { | ||
84 | material: { | ||
85 | files: { | ||
86 | '<%= buildDir %>/themes/material/js/material.min.js': | ||
87 | ['<%= buildDir %>/material.browser.js'], | ||
88 | }, | ||
89 | options: { | ||
90 | sourceMap: true, | ||
91 | }, | ||
92 | }, | ||
93 | baggy: { | ||
94 | files: { | ||
95 | '<%= buildDir %>/themes/baggy/js/baggy.min.js': | ||
96 | ['<%= buildDir %>/baggy.browser.js'], | ||
97 | }, | ||
98 | options: { | ||
99 | sourceMap: true, | ||
100 | }, | ||
101 | }, | ||
102 | }, | ||
103 | copy: { | ||
104 | pickerjs: { | ||
105 | expand: true, | ||
106 | cwd: 'node_modules/pickadate/lib', | ||
107 | src: 'picker.js', | ||
108 | dest: '<%= buildDir %>', | ||
109 | }, | ||
110 | annotator: { | ||
111 | expand: true, | ||
112 | cwd: 'node_modules/annotator/pkg', | ||
113 | src: 'annotator.min.js', | ||
114 | dest: '<%= buildDir %>/themes/_global/js/', | ||
115 | }, | ||
116 | }, | ||
117 | symlink: { | ||
118 | baggyfonts: { | ||
119 | files: [ | ||
120 | { | ||
121 | expand: true, | ||
122 | overwrite: true, | ||
123 | cwd: '<%= appDir %>/lib/icomoon-bower/', | ||
124 | src: 'fonts', | ||
125 | dest: '<%= buildDir %>/themes/baggy/', | ||
126 | }, | ||
127 | { | ||
128 | expand: true, | ||
129 | overwrite: true, | ||
130 | cwd: '<%= appDir %>/lib/bower-pt-sans/fonts', | ||
131 | src: '*', | ||
132 | dest: '<%= buildDir %>/themes/baggy/fonts/', | ||
133 | }, | ||
134 | ], | ||
135 | }, | ||
136 | materialfonts: { | ||
137 | files: [ | ||
138 | { | ||
139 | expand: true, | ||
140 | overwrite: true, | ||
141 | cwd: '<%= appDir %>/lib/icomoon-bower/', | ||
142 | src: 'fonts', | ||
143 | dest: '<%= buildDir %>/themes/material/', | ||
144 | }, | ||
145 | { | ||
146 | expand: true, | ||
147 | overwrite: true, | ||
148 | cwd: 'node_modules/materialize-css/', | ||
149 | src: 'font', | ||
150 | dest: '<%= buildDir %>/themes/material', | ||
151 | }, | ||
152 | { | ||
153 | expand: true, | ||
154 | overwrite: true, | ||
155 | cwd: '<%= appDir %>/lib/roboto-fontface/fonts/', | ||
156 | src: '*', | ||
157 | dest: '<%= buildDir %>/themes/material/fonts/roboto/', | ||
158 | }, | ||
159 | { | ||
160 | expand: true, | ||
161 | overwrite: true, | ||
162 | cwd: '<%= appDir %>/lib/material-design-icons-iconfont/dist/fonts/', | ||
163 | src: '*', | ||
164 | dest: '<%= buildDir %>/themes/material/fonts/', | ||
165 | }, | ||
166 | ], | ||
167 | }, | ||
168 | pics: { | ||
169 | files: [ | ||
170 | { | ||
171 | expand: true, | ||
172 | overwrite: true, | ||
173 | cwd: '<%= appDir %>/themes/_global/', | ||
174 | src: 'img', | ||
175 | dest: '<%= buildDir %>/themes/_global/', | ||
176 | }, | ||
177 | ], | ||
178 | }, | ||
179 | }, | ||
180 | clean: { | ||
181 | css: { | ||
182 | src: ['<%= buildDir %>/**/*.css'], | ||
183 | }, | ||
184 | js: { | ||
185 | src: ['<%= buildDir %>/**/*.js', '<%= buildDir %>/**/*.map'], | ||
186 | }, | ||
187 | all: { | ||
188 | src: ['./<%= buildDir %>'], | ||
189 | }, | ||
190 | }, | ||
191 | }); | ||
192 | |||
193 | grunt.registerTask( | ||
194 | 'fonts', | ||
195 | 'Install fonts', | ||
196 | ['symlink:baggyfonts', 'symlink:materialfonts'] | ||
197 | ); | ||
198 | |||
199 | grunt.registerTask( | ||
200 | 'js', | ||
201 | 'Build and install js files', | ||
202 | ['clean:js', 'copy:pickerjs', 'concat:jsMaterial', 'concat:jsBaggy', 'browserify', 'uglify'] | ||
203 | ); | ||
204 | |||
205 | grunt.registerTask( | ||
206 | 'default', | ||
207 | 'Build and install everything', | ||
208 | ['clean', 'copy:pickerjs', 'concat', 'browserify', 'uglify', 'postcss', 'symlink'] | ||
209 | ); | ||
210 | |||
211 | grunt.registerTask( | ||
212 | 'css', | ||
213 | 'Compiles the stylesheets.', | ||
214 | ['clean:css', 'concat:cssMaterial', 'concat:cssBaggy', 'postcss'] | ||
215 | ); | ||
216 | }; | ||
@@ -10,15 +10,14 @@ More informations on our website: [wallabag.org](https://wallabag.org) | |||
10 | 10 | ||
11 | # Install wallabag | 11 | # Install wallabag |
12 | 12 | ||
13 | If you don't have it yet, please [install composer](https://getcomposer.org/download/) or be sure to use Composer 1.2 (`composer selfupdate` can help you about that). | 13 | If you don't have it yet, please [install composer](https://getcomposer.org/download/) or be sure to use Composer 1.2 (`composer selfupdate` can help you about that). Read [our documentation](http://doc.wallabag.org) to have more information about installation. |
14 | Then you can install wallabag by executing the following commands: | 14 | Then you can install wallabag by executing the following commands: |
15 | 15 | ||
16 | ``` | 16 | ``` |
17 | git clone https://github.com/wallabag/wallabag.git | 17 | git clone https://github.com/wallabag/wallabag.git |
18 | cd wallabag | 18 | cd wallabag |
19 | git checkout 2.0.8 | 19 | git checkout 2.1.0 |
20 | SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist | 20 | ./install.sh |
21 | php bin/console wallabag:install --env=prod | ||
22 | php bin/console server:run --env=prod | 21 | php bin/console server:run --env=prod |
23 | ``` | 22 | ``` |
24 | 23 | ||
diff --git a/app/AppKernel.php b/app/AppKernel.php index 04f86eb7..52f85558 100644 --- a/app/AppKernel.php +++ b/app/AppKernel.php | |||
@@ -13,7 +13,6 @@ class AppKernel extends Kernel | |||
13 | new Symfony\Bundle\TwigBundle\TwigBundle(), | 13 | new Symfony\Bundle\TwigBundle\TwigBundle(), |
14 | new Symfony\Bundle\MonologBundle\MonologBundle(), | 14 | new Symfony\Bundle\MonologBundle\MonologBundle(), |
15 | new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), | 15 | new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), |
16 | new Symfony\Bundle\AsseticBundle\AsseticBundle(), | ||
17 | new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), | 16 | new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), |
18 | new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), | 17 | new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), |
19 | new FOS\RestBundle\FOSRestBundle(), | 18 | new FOS\RestBundle\FOSRestBundle(), |
@@ -39,6 +38,7 @@ class AppKernel extends Kernel | |||
39 | new Wallabag\UserBundle\WallabagUserBundle(), | 38 | new Wallabag\UserBundle\WallabagUserBundle(), |
40 | new Wallabag\ImportBundle\WallabagImportBundle(), | 39 | new Wallabag\ImportBundle\WallabagImportBundle(), |
41 | new Wallabag\AnnotationBundle\WallabagAnnotationBundle(), | 40 | new Wallabag\AnnotationBundle\WallabagAnnotationBundle(), |
41 | new OldSound\RabbitMqBundle\OldSoundRabbitMqBundle(), | ||
42 | ]; | 42 | ]; |
43 | 43 | ||
44 | if (in_array($this->getEnvironment(), ['dev', 'test'], true)) { | 44 | if (in_array($this->getEnvironment(), ['dev', 'test'], true)) { |
diff --git a/app/DoctrineMigrations/Version20160410190541.php b/app/DoctrineMigrations/Version20160410190541.php new file mode 100644 index 00000000..4014857b --- /dev/null +++ b/app/DoctrineMigrations/Version20160410190541.php | |||
@@ -0,0 +1,46 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Application\Migrations; | ||
4 | |||
5 | use Doctrine\DBAL\Migrations\AbstractMigration; | ||
6 | use Doctrine\DBAL\Schema\Schema; | ||
7 | use Symfony\Component\DependencyInjection\ContainerAwareInterface; | ||
8 | use Symfony\Component\DependencyInjection\ContainerInterface; | ||
9 | |||
10 | class Version20160410190541 extends AbstractMigration implements ContainerAwareInterface | ||
11 | { | ||
12 | /** | ||
13 | * @var ContainerInterface | ||
14 | */ | ||
15 | private $container; | ||
16 | |||
17 | public function setContainer(ContainerInterface $container = null) | ||
18 | { | ||
19 | $this->container = $container; | ||
20 | } | ||
21 | |||
22 | private function getTable($tableName) | ||
23 | { | ||
24 | return $this->container->getParameter('database_table_prefix') . $tableName; | ||
25 | } | ||
26 | |||
27 | /** | ||
28 | * @param Schema $schema | ||
29 | */ | ||
30 | public function up(Schema $schema) | ||
31 | { | ||
32 | $this->addSql('ALTER TABLE `'.$this->getTable('entry').'` ADD `uuid` LONGTEXT DEFAULT NULL'); | ||
33 | $this->addSql("INSERT INTO `".$this->getTable('craue_config_setting')."` (`name`, `value`, `section`) VALUES ('share_public', '1', 'entry')"); | ||
34 | } | ||
35 | |||
36 | /** | ||
37 | * @param Schema $schema | ||
38 | */ | ||
39 | public function down(Schema $schema) | ||
40 | { | ||
41 | $this->abortIf($this->connection->getDatabasePlatform()->getName() != 'sqlite', 'This down migration can\'t be executed on SQLite databases, because SQLite don\'t support DROP COLUMN.'); | ||
42 | |||
43 | $this->addSql('ALTER TABLE `'.$this->getTable('entry').'` DROP `uuid`'); | ||
44 | $this->addSql("DELETE FROM `".$this->getTable('craue_config_setting')."` WHERE `name` = 'share_public'"); | ||
45 | } | ||
46 | } | ||
diff --git a/app/DoctrineMigrations/Version20160812120952.php b/app/DoctrineMigrations/Version20160812120952.php new file mode 100644 index 00000000..a8d3bcf2 --- /dev/null +++ b/app/DoctrineMigrations/Version20160812120952.php | |||
@@ -0,0 +1,48 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Application\Migrations; | ||
4 | |||
5 | use Doctrine\DBAL\Migrations\AbstractMigration; | ||
6 | use Doctrine\DBAL\Schema\Schema; | ||
7 | use Symfony\Component\DependencyInjection\ContainerAwareInterface; | ||
8 | use Symfony\Component\DependencyInjection\ContainerInterface; | ||
9 | |||
10 | class Version20160812120952 extends AbstractMigration implements ContainerAwareInterface | ||
11 | { | ||
12 | /** | ||
13 | * @var ContainerInterface | ||
14 | */ | ||
15 | private $container; | ||
16 | |||
17 | public function setContainer(ContainerInterface $container = null) | ||
18 | { | ||
19 | $this->container = $container; | ||
20 | } | ||
21 | |||
22 | private function getTable($tableName) | ||
23 | { | ||
24 | return $this->container->getParameter('database_table_prefix') . $tableName; | ||
25 | } | ||
26 | |||
27 | /** | ||
28 | * @param Schema $schema | ||
29 | */ | ||
30 | public function up(Schema $schema) | ||
31 | { | ||
32 | if ($this->connection->getDatabasePlatform()->getName() == 'sqlite') { | ||
33 | $this->addSql('ALTER TABLE '.$this->getTable('oauth2_clients').' ADD name longtext DEFAULT NULL'); | ||
34 | } else { | ||
35 | $this->addSql('ALTER TABLE '.$this->getTable('oauth2_clients').' ADD name longtext COLLATE \'utf8_unicode_ci\' DEFAULT NULL'); | ||
36 | } | ||
37 | } | ||
38 | |||
39 | /** | ||
40 | * @param Schema $schema | ||
41 | */ | ||
42 | public function down(Schema $schema) | ||
43 | { | ||
44 | $this->abortIf($this->connection->getDatabasePlatform()->getName() == 'sqlite', 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.'); | ||
45 | |||
46 | $this->addSql('ALTER TABLE '.$this->getTable('oauth2_clients').' DROP COLUMN name'); | ||
47 | } | ||
48 | } | ||
diff --git a/app/DoctrineMigrations/Version20160911214952.php b/app/DoctrineMigrations/Version20160911214952.php new file mode 100644 index 00000000..35809cec --- /dev/null +++ b/app/DoctrineMigrations/Version20160911214952.php | |||
@@ -0,0 +1,42 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Application\Migrations; | ||
4 | |||
5 | use Doctrine\DBAL\Migrations\AbstractMigration; | ||
6 | use Doctrine\DBAL\Schema\Schema; | ||
7 | use Symfony\Component\DependencyInjection\ContainerAwareInterface; | ||
8 | use Symfony\Component\DependencyInjection\ContainerInterface; | ||
9 | |||
10 | class Version20160911214952 extends AbstractMigration implements ContainerAwareInterface | ||
11 | { | ||
12 | /** | ||
13 | * @var ContainerInterface | ||
14 | */ | ||
15 | private $container; | ||
16 | |||
17 | public function setContainer(ContainerInterface $container = null) | ||
18 | { | ||
19 | $this->container = $container; | ||
20 | } | ||
21 | |||
22 | private function getTable($tableName) | ||
23 | { | ||
24 | return $this->container->getParameter('database_table_prefix') . $tableName; | ||
25 | } | ||
26 | |||
27 | /** | ||
28 | * @param Schema $schema | ||
29 | */ | ||
30 | public function up(Schema $schema) | ||
31 | { | ||
32 | $this->addSql('INSERT INTO `'.$this->getTable('craue_config_setting').'` (`name`, `value`, `section`) VALUES (\'import_with_redis\', \'0\', \'import\')'); | ||
33 | $this->addSql('INSERT INTO `'.$this->getTable('craue_config_setting').'` (`name`, `value`, `section`) VALUES (\'import_with_rabbitmq\', \'0\', \'import\')'); | ||
34 | } | ||
35 | |||
36 | /** | ||
37 | * @param Schema $schema | ||
38 | */ | ||
39 | public function down(Schema $schema) | ||
40 | { | ||
41 | } | ||
42 | } | ||
diff --git a/app/DoctrineMigrations/Version20160916201049.php b/app/DoctrineMigrations/Version20160916201049.php new file mode 100644 index 00000000..202901e6 --- /dev/null +++ b/app/DoctrineMigrations/Version20160916201049.php | |||
@@ -0,0 +1,46 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Application\Migrations; | ||
4 | |||
5 | use Doctrine\DBAL\Migrations\AbstractMigration; | ||
6 | use Doctrine\DBAL\Schema\Schema; | ||
7 | use Symfony\Component\DependencyInjection\ContainerAwareInterface; | ||
8 | use Symfony\Component\DependencyInjection\ContainerInterface; | ||
9 | |||
10 | class Version20160916201049 extends AbstractMigration implements ContainerAwareInterface | ||
11 | { | ||
12 | /** | ||
13 | * @var ContainerInterface | ||
14 | */ | ||
15 | private $container; | ||
16 | |||
17 | public function setContainer(ContainerInterface $container = null) | ||
18 | { | ||
19 | $this->container = $container; | ||
20 | } | ||
21 | |||
22 | private function getTable($tableName) | ||
23 | { | ||
24 | return $this->container->getParameter('database_table_prefix') . $tableName; | ||
25 | } | ||
26 | |||
27 | /** | ||
28 | * @param Schema $schema | ||
29 | */ | ||
30 | public function up(Schema $schema) | ||
31 | { | ||
32 | $this->addSql('ALTER TABLE '.$this->getTable('config').' ADD pocket_consumer_key VARCHAR(255) DEFAULT NULL'); | ||
33 | $this->addSql("DELETE FROM `".$this->getTable('craue_config_setting')."` WHERE `name` = 'pocket_consumer_key';"); | ||
34 | } | ||
35 | |||
36 | /** | ||
37 | * @param Schema $schema | ||
38 | */ | ||
39 | public function down(Schema $schema) | ||
40 | { | ||
41 | $this->abortIf($this->connection->getDatabasePlatform()->getName() == 'sqlite', 'Migration can only be executed safely on \'mysql\' or \'postgresql\'.'); | ||
42 | |||
43 | $this->addSql('ALTER TABLE `'.$this->getTable('config').'` DROP pocket_consumer_key'); | ||
44 | $this->addSql("INSERT INTO `".$this->getTable('craue_config_setting')."` (`name`, `value`, `section`) VALUES ('pocket_consumer_key', NULL, 'import')"); | ||
45 | } | ||
46 | } | ||
diff --git a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.da.yml b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.da.yml index c46fdb14..85079330 100644 --- a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.da.yml +++ b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.da.yml | |||
@@ -8,7 +8,8 @@ export_csv: Aktiver eksport til CSV | |||
8 | export_json: Aktiver eksport til JSON | 8 | export_json: Aktiver eksport til JSON |
9 | export_txt: Aktiver eksport til TXT | 9 | export_txt: Aktiver eksport til TXT |
10 | export_xml: Aktiver eksport til XML | 10 | export_xml: Aktiver eksport til XML |
11 | pocket_consumer_key: Brugers nøgle til Pocket for at importere materialer (https://getpocket.com/developer/docs/authentication) | 11 | # import_with_rabbitmq: Enable RabbitMQ to import data asynchronously |
12 | # import_with_redis: Enable Redis to import data asynchronously | ||
12 | shaarli_url: Shaarli-URL, hvis tjenesten er aktiv | 13 | shaarli_url: Shaarli-URL, hvis tjenesten er aktiv |
13 | share_diaspora: Aktiver deling til Diaspora | 14 | share_diaspora: Aktiver deling til Diaspora |
14 | share_mail: Aktiver deling med email | 15 | share_mail: Aktiver deling med email |
@@ -27,3 +28,4 @@ piwik_site_id: ID for din side hos Piwik | |||
27 | piwik_enabled: Aktiver Piwik | 28 | piwik_enabled: Aktiver Piwik |
28 | demo_mode_enabled: "Aktiver demo-indstilling? (anvendes kun til wallabags offentlige demo)" | 29 | demo_mode_enabled: "Aktiver demo-indstilling? (anvendes kun til wallabags offentlige demo)" |
29 | demo_mode_username: "Demobruger" | 30 | demo_mode_username: "Demobruger" |
31 | # share_public: Allow public url for entries | ||
diff --git a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.de.yml b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.de.yml index fa2093b5..eaba14cd 100644 --- a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.de.yml +++ b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.de.yml | |||
@@ -8,7 +8,8 @@ export_csv: CSV-Export aktivieren | |||
8 | export_json: JSON-Export aktivieren | 8 | export_json: JSON-Export aktivieren |
9 | export_txt: TXT-Export aktivieren | 9 | export_txt: TXT-Export aktivieren |
10 | export_xml: XML-Export aktivieren | 10 | export_xml: XML-Export aktivieren |
11 | pocket_consumer_key: Consumer-Key für Pocket, um Inhalte zu importieren (https://getpocket.com/developer/docs/authentication) | 11 | # import_with_rabbitmq: Enable RabbitMQ to import data asynchronously |
12 | # import_with_redis: Enable Redis to import data asynchronously | ||
12 | shaarli_url: Shaarli-URL, sofern der Service aktiviert ist | 13 | shaarli_url: Shaarli-URL, sofern der Service aktiviert ist |
13 | share_diaspora: Teilen zu Diaspora aktiveren | 14 | share_diaspora: Teilen zu Diaspora aktiveren |
14 | share_mail: Teilen via E-Mail aktiveren | 15 | share_mail: Teilen via E-Mail aktiveren |
@@ -27,3 +28,4 @@ piwik_site_id: ID deiner Webseite in Piwik | |||
27 | piwik_enabled: Piwik aktivieren | 28 | piwik_enabled: Piwik aktivieren |
28 | demo_mode_enabled: "Test-Modus aktivieren? (nur für die öffentliche wallabag-Demo genutzt)" | 29 | demo_mode_enabled: "Test-Modus aktivieren? (nur für die öffentliche wallabag-Demo genutzt)" |
29 | demo_mode_username: "Test-Benutzer" | 30 | demo_mode_username: "Test-Benutzer" |
31 | # share_public: Allow public url for entries | ||
diff --git a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.en.yml b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.en.yml index b627376e..8aaa27e7 100644 --- a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.en.yml +++ b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.en.yml | |||
@@ -8,7 +8,8 @@ export_csv: Enable CSV export | |||
8 | export_json: Enable JSON export | 8 | export_json: Enable JSON export |
9 | export_txt: Enable TXT export | 9 | export_txt: Enable TXT export |
10 | export_xml: Enable XML export | 10 | export_xml: Enable XML export |
11 | pocket_consumer_key: Consumer key for Pocket to import contents (https://getpocket.com/developer/docs/authentication) | 11 | import_with_rabbitmq: Enable RabbitMQ to import data asynchronously |
12 | import_with_redis: Enable Redis to import data asynchronously | ||
12 | shaarli_url: Shaarli URL, if the service is enabled | 13 | shaarli_url: Shaarli URL, if the service is enabled |
13 | share_diaspora: Enable share to Diaspora | 14 | share_diaspora: Enable share to Diaspora |
14 | share_mail: Enable share by email | 15 | share_mail: Enable share by email |
@@ -27,3 +28,4 @@ piwik_site_id: ID of your website in Piwik | |||
27 | piwik_enabled: Enable Piwik | 28 | piwik_enabled: Enable Piwik |
28 | demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)" | 29 | demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)" |
29 | demo_mode_username: "Demo user" | 30 | demo_mode_username: "Demo user" |
31 | share_public: Allow public url for entries | ||
diff --git a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.es.yml b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.es.yml index af1657e4..bf3a79af 100644 --- a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.es.yml +++ b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.es.yml | |||
@@ -8,7 +8,8 @@ export_csv: Activar exportación a CSV | |||
8 | export_json: Activar exportación a JSON | 8 | export_json: Activar exportación a JSON |
9 | export_txt: Activar exportación a TXT | 9 | export_txt: Activar exportación a TXT |
10 | export_xml: Activar exportación a XML | 10 | export_xml: Activar exportación a XML |
11 | pocket_consumer_key: Consumer key for Pocket to import contents (https://getpocket.com/developer/docs/authentication) | 11 | # import_with_rabbitmq: Enable RabbitMQ to import data asynchronously |
12 | # import_with_redis: Enable Redis to import data asynchronously | ||
12 | shaarli_url: Shaarli URL, si el servicio está activado | 13 | shaarli_url: Shaarli URL, si el servicio está activado |
13 | share_diaspora: Activar compartir con Diaspora | 14 | share_diaspora: Activar compartir con Diaspora |
14 | share_mail: Activar compartir con email | 15 | share_mail: Activar compartir con email |
@@ -27,3 +28,4 @@ piwik_site_id: ID de tu website de Piwik | |||
27 | piwik_enabled: Activar Piwik | 28 | piwik_enabled: Activar Piwik |
28 | demo_mode_enabled: "Activar modo demo (sólo usado para la demo de wallabag)" | 29 | demo_mode_enabled: "Activar modo demo (sólo usado para la demo de wallabag)" |
29 | demo_mode_username: "Nombre de usuario demo" | 30 | demo_mode_username: "Nombre de usuario demo" |
31 | # share_public: Allow public url for entries | ||
diff --git a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.fa.yml b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.fa.yml index 7cb4e833..d86c4343 100644 --- a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.fa.yml +++ b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.fa.yml | |||
@@ -8,7 +8,8 @@ export_csv: فعالسازی برونسپاری به CSV | |||
8 | export_json: فعالسازی برونسپاری به JSON | 8 | export_json: فعالسازی برونسپاری به JSON |
9 | export_txt: فعالسازی برونسپاری به TXT | 9 | export_txt: فعالسازی برونسپاری به TXT |
10 | export_xml: فعالسازی برونسپاری به XML | 10 | export_xml: فعالسازی برونسپاری به XML |
11 | pocket_consumer_key: کلید کاربری Pocket برای درونریزی مطالب (https://getpocket.com/developer/docs/authentication) | 11 | # import_with_rabbitmq: Enable RabbitMQ to import data asynchronously |
12 | # import_with_redis: Enable Redis to import data asynchronously | ||
12 | shaarli_url: نشانی Shaarli، اگر فعال بود | 13 | shaarli_url: نشانی Shaarli، اگر فعال بود |
13 | share_diaspora: فعالسازی همرسانی به Diaspora | 14 | share_diaspora: فعالسازی همرسانی به Diaspora |
14 | share_mail: فعالسازی همرسانی با ایمیل | 15 | share_mail: فعالسازی همرسانی با ایمیل |
@@ -22,3 +23,9 @@ export: "برونسپاری" | |||
22 | import: "درونریزی" | 23 | import: "درونریزی" |
23 | misc: "غیره" | 24 | misc: "غیره" |
24 | modify_settings: "اعمال" | 25 | modify_settings: "اعمال" |
26 | # piwik_host: Host of your website in Piwik | ||
27 | # piwik_site_id: ID of your website in Piwik | ||
28 | # piwik_enabled: Enable Piwik | ||
29 | # demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)" | ||
30 | # demo_mode_username: "Demo user" | ||
31 | # share_public: Allow public url for entries | ||
diff --git a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.fr.yml b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.fr.yml index 084eb6df..5e1ecf26 100644 --- a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.fr.yml +++ b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.fr.yml | |||
@@ -8,7 +8,8 @@ export_csv: Activer l'export CSV | |||
8 | export_json: Activer l'export JSON | 8 | export_json: Activer l'export JSON |
9 | export_txt: Activer l'export TXT | 9 | export_txt: Activer l'export TXT |
10 | export_xml: Activer l'export XML | 10 | export_xml: Activer l'export XML |
11 | pocket_consumer_key: Clé d'authentification Pocket pour importer les données (https://getpocket.com/developer/docs/authentication) | 11 | import_with_rabbitmq: Activer RabbitMQ pour gérer les imports de façon asynchrone |
12 | import_with_redis: Activer Redis pour gérer les imports de façon asynchrone | ||
12 | shaarli_url: URL de Shaarli, si le service Shaarli est activé | 13 | shaarli_url: URL de Shaarli, si le service Shaarli est activé |
13 | share_diaspora: Activer le partage vers Diaspora | 14 | share_diaspora: Activer le partage vers Diaspora |
14 | share_mail: Activer le partage par email | 15 | share_mail: Activer le partage par email |
@@ -27,3 +28,4 @@ piwik_site_id: ID de votre site dans Piwik | |||
27 | piwik_enabled: Activer Piwik | 28 | piwik_enabled: Activer Piwik |
28 | demo_mode_enabled: "Activer le mode démo ? (utiliser uniquement pour la démo publique de wallabag)" | 29 | demo_mode_enabled: "Activer le mode démo ? (utiliser uniquement pour la démo publique de wallabag)" |
29 | demo_mode_username: "Utilisateur de la démo" | 30 | demo_mode_username: "Utilisateur de la démo" |
31 | share_public: Autoriser une URL publique pour les articles | ||
diff --git a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.it.yml b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.it.yml index e4417139..9d820e4b 100644 --- a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.it.yml +++ b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.it.yml | |||
@@ -8,7 +8,8 @@ export_csv: Abilita esportazione CSV | |||
8 | export_json: Abilita esportazione JSON | 8 | export_json: Abilita esportazione JSON |
9 | export_txt: Abilita esportazione TXT | 9 | export_txt: Abilita esportazione TXT |
10 | export_xml: Abilita esportazione XML | 10 | export_xml: Abilita esportazione XML |
11 | pocket_consumer_key: Consumer key per Pocket per importare i contenuti (https://getpocket.com/developer/docs/authentication) | 11 | # import_with_rabbitmq: Enable RabbitMQ to import data asynchronously |
12 | # import_with_redis: Enable Redis to import data asynchronously | ||
12 | shaarli_url: Shaarli URL, se il servizio è abilitato | 13 | shaarli_url: Shaarli URL, se il servizio è abilitato |
13 | share_diaspora: Abilita la condivisione con Diaspora | 14 | share_diaspora: Abilita la condivisione con Diaspora |
14 | share_mail: Abilita la condivisione per email | 15 | share_mail: Abilita la condivisione per email |
@@ -27,3 +28,4 @@ piwik_site_id: ID del tuo sito in Piwik | |||
27 | piwik_enabled: Abilita Piwik | 28 | piwik_enabled: Abilita Piwik |
28 | demo_mode_enabled: "Abilita modalità demo ? (usato solo per la demo pubblica di wallabag)" | 29 | demo_mode_enabled: "Abilita modalità demo ? (usato solo per la demo pubblica di wallabag)" |
29 | demo_mode_username: "Utente Demo" | 30 | demo_mode_username: "Utente Demo" |
31 | # share_public: Allow public url for entries | ||
diff --git a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.oc.yml b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.oc.yml index 67880b8b..49dc7732 100644 --- a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.oc.yml +++ b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.oc.yml | |||
@@ -8,7 +8,8 @@ export_csv: Activar l'expòrt CSV | |||
8 | export_json: Activar l'expòrt JSON | 8 | export_json: Activar l'expòrt JSON |
9 | export_txt: Activar l'expòrt TXT | 9 | export_txt: Activar l'expòrt TXT |
10 | export_xml: Activar l'expòrt XML | 10 | export_xml: Activar l'expòrt XML |
11 | pocket_consumer_key: Clau d'autentificacion Pocket per importar las donadas (https://getpocket.com/developer/docs/authentication) | 11 | # import_with_rabbitmq: Enable RabbitMQ to import data asynchronously |
12 | # import_with_redis: Enable Redis to import data asynchronously | ||
12 | shaarli_url: URL de Shaarli, se lo servici Shaarli es activat | 13 | shaarli_url: URL de Shaarli, se lo servici Shaarli es activat |
13 | share_diaspora: Activar lo partatge cap a Diaspora | 14 | share_diaspora: Activar lo partatge cap a Diaspora |
14 | share_mail: Activar lo partatge per corrièl | 15 | share_mail: Activar lo partatge per corrièl |
@@ -27,3 +28,4 @@ piwik_site_id: ID de vòstre site dins Piwik | |||
27 | piwik_enabled: Activar Piwik | 28 | piwik_enabled: Activar Piwik |
28 | demo_mode_enabled: "Activar lo mode demostracion ? (utilizar solament per la demostracion publica de wallabag)" | 29 | demo_mode_enabled: "Activar lo mode demostracion ? (utilizar solament per la demostracion publica de wallabag)" |
29 | demo_mode_username: "Utilizaire de la demostracion" | 30 | demo_mode_username: "Utilizaire de la demostracion" |
31 | # share_public: Allow public url for entries | ||
diff --git a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.pl.yml b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.pl.yml index 87ca5060..7432b0a7 100644 --- a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.pl.yml +++ b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.pl.yml | |||
@@ -8,7 +8,8 @@ export_csv: Włącz eksport do CSV | |||
8 | export_json: Włącz eksport do JSON | 8 | export_json: Włącz eksport do JSON |
9 | export_txt: Włącz eksport do TXT | 9 | export_txt: Włącz eksport do TXT |
10 | export_xml: Włącz eksport do XML | 10 | export_xml: Włącz eksport do XML |
11 | pocket_consumer_key: Klucz klienta Pocket do importu zawartości (https://getpocket.com/developer/docs/authentication) | 11 | import_with_rabbitmq: Włącz RabbitMQ dla asynchronicznego importu danych |
12 | import_with_redis: Włącz Redis dla asynchronicznego importu danych | ||
12 | shaarli_url: Adress URL Shaarli, jeżeli usługa jest włączona | 13 | shaarli_url: Adress URL Shaarli, jeżeli usługa jest włączona |
13 | share_diaspora: Włącz udostępnianie dla Diaspora | 14 | share_diaspora: Włącz udostępnianie dla Diaspora |
14 | share_mail: Włącz udostępnianie przez email | 15 | share_mail: Włącz udostępnianie przez email |
@@ -22,3 +23,9 @@ export: "eksport" | |||
22 | import: "import" | 23 | import: "import" |
23 | misc: "różne" | 24 | misc: "różne" |
24 | modify_settings: "zatwierdz" | 25 | modify_settings: "zatwierdz" |
26 | piwik_host: Host twojej strony Piwik | ||
27 | piwik_site_id: ID twojej strony Piwik | ||
28 | piwik_enabled: Włacz Piwik | ||
29 | demo_mode_enabled: "Włacz tryb demo? (używany wyłącznie dla publicznej demonstracji Wallabag)" | ||
30 | demo_mode_username: "Użytkownik Demonstracyjny" | ||
31 | share_public: Zezwalaj na publiczny adres url dla wpisow | ||
diff --git a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.ro.yml b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.ro.yml index f5ff8c6a..20d664f7 100644 --- a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.ro.yml +++ b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.ro.yml | |||
@@ -8,7 +8,8 @@ export_csv: Permite exportare CSV | |||
8 | export_json: Permite exportare JSON | 8 | export_json: Permite exportare JSON |
9 | export_txt: Permite exportare TXT | 9 | export_txt: Permite exportare TXT |
10 | export_xml: Permite exportare XML | 10 | export_xml: Permite exportare XML |
11 | pocket_consumer_key: Cheie consumator pentru importarea contentului din Pocket (https://getpocket.com/developer/docs/authentication) | 11 | # import_with_rabbitmq: Enable RabbitMQ to import data asynchronously |
12 | # import_with_redis: Enable Redis to import data asynchronously | ||
12 | shaarli_url: Shaarli URL, dacă serviciul este permis | 13 | shaarli_url: Shaarli URL, dacă serviciul este permis |
13 | share_diaspora: Permite share către Diaspora | 14 | share_diaspora: Permite share către Diaspora |
14 | share_mail: Permite share prin email | 15 | share_mail: Permite share prin email |
@@ -22,3 +23,9 @@ export: "exportă" | |||
22 | import: "importă" | 23 | import: "importă" |
23 | misc: "diverse" | 24 | misc: "diverse" |
24 | modify_settings: "aplică" | 25 | modify_settings: "aplică" |
26 | # piwik_host: Host of your website in Piwik | ||
27 | # piwik_site_id: ID of your website in Piwik | ||
28 | # piwik_enabled: Enable Piwik | ||
29 | # demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)" | ||
30 | # demo_mode_username: "Demo user" | ||
31 | # share_public: Allow public url for entries | ||
diff --git a/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.tr.yml b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.tr.yml new file mode 100644 index 00000000..4b4d3edb --- /dev/null +++ b/app/Resources/CraueConfigBundle/translations/CraueConfigBundle.tr.yml | |||
@@ -0,0 +1,31 @@ | |||
1 | # download_pictures: Download pictures on your server | ||
2 | # carrot: Enable share to Carrot | ||
3 | # diaspora_url: Diaspora URL, if the service is enabled | ||
4 | # export_epub: Enable ePub export | ||
5 | # export_mobi: Enable .mobi export | ||
6 | # export_pdf: Enable PDF export | ||
7 | # export_csv: Enable CSV export | ||
8 | # export_json: Enable JSON export | ||
9 | # export_txt: Enable TXT export | ||
10 | # export_xml: Enable XML export | ||
11 | # import_with_rabbitmq: Enable RabbitMQ to import data asynchronously | ||
12 | # import_with_redis: Enable Redis to import data asynchronously | ||
13 | # shaarli_url: Shaarli URL, if the service is enabled | ||
14 | # share_diaspora: Enable share to Diaspora | ||
15 | # share_mail: Enable share by email | ||
16 | # share_shaarli: Enable share to Shaarli | ||
17 | # share_twitter: Enable share to Twitter | ||
18 | # show_printlink: Display a link to print content | ||
19 | # wallabag_support_url: Support URL for wallabag | ||
20 | # wallabag_url: URL of *your* wallabag instance | ||
21 | # entry: "article" | ||
22 | # export: "export" | ||
23 | # import: "import" | ||
24 | # misc: "misc" | ||
25 | # modify_settings: "apply" | ||
26 | # piwik_host: Host of your website in Piwik | ||
27 | # piwik_site_id: ID of your website in Piwik | ||
28 | # piwik_enabled: Enable Piwik | ||
29 | # demo_mode_enabled: "Enable demo mode ? (only used for the wallabag public demo)" | ||
30 | # demo_mode_username: "Demo user" | ||
31 | # share_public: Allow public url for entries | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-114.png b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-114.png index 0e96edd5..0e96edd5 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-114.png +++ b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-114.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-120.png b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-120.png index dc5aab1c..dc5aab1c 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-120.png +++ b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-120.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-144.png b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-144.png index 1d005db6..1d005db6 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-144.png +++ b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-144.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-152.png b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-152.png index f915231f..f915231f 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-152.png +++ b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-152.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-57.png b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-57.png index 5aa19ed9..5aa19ed9 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-57.png +++ b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-57.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-72.png b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-72.png index b8b48e1b..b8b48e1b 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-72.png +++ b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-72.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-76.png b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-76.png index 9f9dba27..9f9dba27 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon-76.png +++ b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon-76.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon.png b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon.png index 9cf29e2b..9cf29e2b 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/apple-touch-icon.png +++ b/app/Resources/static/themes/_global/img/appicon/apple-touch-icon.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/favicon.ico b/app/Resources/static/themes/_global/img/appicon/favicon.ico index 0346558b..0346558b 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/appicon/favicon.ico +++ b/app/Resources/static/themes/_global/img/appicon/favicon.ico | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/bg-select.png b/app/Resources/static/themes/_global/img/bg-select.png index 95120441..95120441 100644 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/bg-select.png +++ b/app/Resources/static/themes/_global/img/bg-select.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/icons/carrot-icon--black.png b/app/Resources/static/themes/_global/img/icons/carrot-icon--black.png index 6da7925b..6da7925b 100644 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/icons/carrot-icon--black.png +++ b/app/Resources/static/themes/_global/img/icons/carrot-icon--black.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/icons/carrot-icon--white.png b/app/Resources/static/themes/_global/img/icons/carrot-icon--white.png index a70044b6..a70044b6 100644 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/icons/carrot-icon--white.png +++ b/app/Resources/static/themes/_global/img/icons/carrot-icon--white.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/icons/diaspora-icon--black.png b/app/Resources/static/themes/_global/img/icons/diaspora-icon--black.png index 32bca194..32bca194 100644 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/icons/diaspora-icon--black.png +++ b/app/Resources/static/themes/_global/img/icons/diaspora-icon--black.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/icons/diaspora-icon--white.png b/app/Resources/static/themes/_global/img/icons/diaspora-icon--white.png index fc48d47c..fc48d47c 100644 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/img/icons/diaspora-icon--white.png +++ b/app/Resources/static/themes/_global/img/icons/diaspora-icon--white.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/img/logo-other_themes.png b/app/Resources/static/themes/_global/img/logo-other_themes.png index c90aa46f..c90aa46f 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/img/logo-other_themes.png +++ b/app/Resources/static/themes/_global/img/logo-other_themes.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/img/logo-square.png b/app/Resources/static/themes/_global/img/logo-square.png index d5e05977..d5e05977 100644 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/img/logo-square.png +++ b/app/Resources/static/themes/_global/img/logo-square.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/logo-w.png b/app/Resources/static/themes/_global/img/logo-w.png index 65dc607b..65dc607b 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/logo-w.png +++ b/app/Resources/static/themes/_global/img/logo-w.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/logo-wallabag.svg b/app/Resources/static/themes/_global/img/logo-wallabag.svg index 40193e1c..40193e1c 100644 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/logo-wallabag.svg +++ b/app/Resources/static/themes/_global/img/logo-wallabag.svg | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/bookmarklet.js b/app/Resources/static/themes/_global/js/bookmarklet.js index 2afdfc3c..2afdfc3c 100644 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/bookmarklet.js +++ b/app/Resources/static/themes/_global/js/bookmarklet.js | |||
diff --git a/app/Resources/static/themes/_global/js/restoreScroll.js b/app/Resources/static/themes/_global/js/restoreScroll.js new file mode 100644 index 00000000..9c4d7e20 --- /dev/null +++ b/app/Resources/static/themes/_global/js/restoreScroll.js | |||
@@ -0,0 +1,25 @@ | |||
1 | function supportsLocalStorage() { | ||
2 | try { | ||
3 | return 'localStorage' in window && window.localStorage !== null; | ||
4 | } catch (e) { | ||
5 | return false; | ||
6 | } | ||
7 | } | ||
8 | |||
9 | function savePercent(id, percent) { | ||
10 | if (!supportsLocalStorage()) { return false; } | ||
11 | localStorage['wallabag.article.' + id + '.percent'] = percent; | ||
12 | return true; | ||
13 | } | ||
14 | |||
15 | function retrievePercent(id) { | ||
16 | if (!supportsLocalStorage()) { return false; } | ||
17 | |||
18 | var bheight = $(document).height(); | ||
19 | var percent = localStorage['wallabag.article.' + id + '.percent']; | ||
20 | var scroll = bheight * percent; | ||
21 | |||
22 | $('html,body').animate({ scrollTop: scroll }, 'fast'); | ||
23 | |||
24 | return true; | ||
25 | } | ||
diff --git a/app/Resources/static/themes/baggy/css/font.css b/app/Resources/static/themes/baggy/css/font.css new file mode 100755 index 00000000..cae7904a --- /dev/null +++ b/app/Resources/static/themes/baggy/css/font.css | |||
@@ -0,0 +1,6 @@ | |||
1 | @font-face { | ||
2 | font-family: "PT Sans"; | ||
3 | font-style: normal; | ||
4 | font-weight: 700; | ||
5 | src: local("PT Sans Bold"), local("PTSans-Bold"), url("../fonts/pt_sans/regular/PTS55F.woff") format("woff"); | ||
6 | } | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/css/main.css b/app/Resources/static/themes/baggy/css/main.css index ba430cc4..7ffaa12c 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/css/main.css +++ b/app/Resources/static/themes/baggy/css/main.css | |||
@@ -15,7 +15,7 @@ html { | |||
15 | } | 15 | } |
16 | 16 | ||
17 | body { | 17 | body { |
18 | background-color: #EEE; | 18 | background-color: #eee; |
19 | } | 19 | } |
20 | 20 | ||
21 | .login { | 21 | .login { |
@@ -28,9 +28,9 @@ body { | |||
28 | } | 28 | } |
29 | 29 | ||
30 | .login form { | 30 | .login form { |
31 | background-color: #FFF; | 31 | background-color: #fff; |
32 | padding: 1.5em; | 32 | padding: 1.5em; |
33 | box-shadow: 0 1px 8px rgba(0,0,0,0.9); | 33 | box-shadow: 0 1px 8px rgba(0, 0, 0, 0.9); |
34 | width: 20em; | 34 | width: 20em; |
35 | position: absolute; | 35 | position: absolute; |
36 | top: 8em; | 36 | top: 8em; |
@@ -50,7 +50,7 @@ body { | |||
50 | ========================================================================== */ | 50 | ========================================================================== */ |
51 | 51 | ||
52 | ::selection { | 52 | ::selection { |
53 | color: #FFF; | 53 | color: #fff; |
54 | background-color: #000; | 54 | background-color: #000; |
55 | } | 55 | } |
56 | 56 | ||
@@ -65,12 +65,16 @@ body { | |||
65 | left: 0.6em; | 65 | left: 0.6em; |
66 | } | 66 | } |
67 | 67 | ||
68 | h2, h3, h4 { | 68 | h2, |
69 | font-family: 'PT Sans', sans-serif; | 69 | h3, |
70 | h4 { | ||
71 | font-family: "PT Sans", sans-serif; | ||
70 | text-transform: uppercase; | 72 | text-transform: uppercase; |
71 | } | 73 | } |
72 | 74 | ||
73 | p, li, label { | 75 | p, |
76 | li, | ||
77 | label { | ||
74 | color: #666; | 78 | color: #666; |
75 | } | 79 | } |
76 | 80 | ||
@@ -79,28 +83,38 @@ a { | |||
79 | font-weight: bold; | 83 | font-weight: bold; |
80 | } | 84 | } |
81 | 85 | ||
82 | a:hover, a:focus { | 86 | a.nostyle { |
87 | text-decoration: none; | ||
88 | } | ||
89 | |||
90 | a:hover, | ||
91 | a:focus { | ||
83 | text-decoration: none; | 92 | text-decoration: none; |
84 | } | 93 | } |
85 | 94 | ||
86 | form fieldset { | 95 | form fieldset { |
87 | border:0; | 96 | border: 0; |
88 | padding: 0; | 97 | padding: 0; |
89 | margin: 0; | 98 | margin: 0; |
90 | } | 99 | } |
91 | 100 | ||
92 | form input[type="text"], form input[type="number"], select, form input[type="password"], form input[type="url"], form input[type="email"] { | 101 | form input[type="text"], |
102 | form input[type="number"], | ||
103 | select, | ||
104 | form input[type="password"], | ||
105 | form input[type="url"], | ||
106 | form input[type="email"] { | ||
93 | border: 1px solid #999; | 107 | border: 1px solid #999; |
94 | padding: 0.5em 1em; | 108 | padding: 0.5em 1em; |
95 | min-width: 12em; | 109 | min-width: 12em; |
96 | color: #666; | 110 | color: #666; |
97 | } | 111 | } |
98 | 112 | ||
99 | @media screen and (-webkit-min-device-pixel-ratio:0){ | 113 | @media screen and (-webkit-min-device-pixel-ratio: 0) { |
100 | select{ | 114 | select { |
101 | -webkit-appearance: none; | 115 | -webkit-appearance: none; |
102 | border-radius: 0; | 116 | border-radius: 0; |
103 | background: #FFF url(../img/bg-select.png) no-repeat right center; | 117 | background: #fff url("../../_global/img/bg-select.png") no-repeat right center; |
104 | } | 118 | } |
105 | } | 119 | } |
106 | 120 | ||
@@ -127,31 +141,34 @@ form .row { | |||
127 | margin-bottom: 0.5em; | 141 | margin-bottom: 0.5em; |
128 | } | 142 | } |
129 | 143 | ||
130 | form button, input[type="submit"] { | 144 | form button, |
131 | cursor:pointer; | 145 | input[type="submit"] { |
146 | cursor: pointer; | ||
132 | background-color: #000; | 147 | background-color: #000; |
133 | color: #FFF; | 148 | color: #fff; |
134 | border:0; | ||
135 | padding: 0.5em 1em; | 149 | padding: 0.5em 1em; |
136 | display: inline-block; | 150 | display: inline-block; |
137 | border:1px solid #000; | 151 | border: 1px solid #000; |
138 | } | 152 | } |
139 | 153 | ||
140 | form button:hover, form button:focus, input[type="submit"]:hover, input[type="submit"]:focus { | 154 | form button:hover, |
141 | background-color: #FFF; | 155 | form button:focus, |
142 | color: #000; | 156 | input[type="submit"]:hover, |
143 | -webkit-transition: all 0.5s ease; | 157 | input[type="submit"]:focus { |
144 | -moz-transition: all 0.5s ease; | 158 | background-color: #fff; |
145 | -ms-transition: all 0.5s ease; | 159 | color: #000; |
146 | -o-transition: all 0.5s ease; | 160 | -webkit-transition: all 0.5s ease; |
147 | transition: all 0.5s ease; | 161 | -moz-transition: all 0.5s ease; |
148 | } | 162 | -ms-transition: all 0.5s ease; |
163 | -o-transition: all 0.5s ease; | ||
164 | transition: all 0.5s ease; | ||
165 | } | ||
149 | 166 | ||
150 | #bookmarklet { | 167 | #bookmarklet { |
151 | cursor: move; | 168 | cursor: move; |
152 | } | 169 | } |
153 | 170 | ||
154 | h2:after { | 171 | h2::after { |
155 | content: ""; | 172 | content: ""; |
156 | height: 4px; | 173 | height: 4px; |
157 | width: 70px; | 174 | width: 70px; |
@@ -163,12 +180,12 @@ h2:after { | |||
163 | padding: 0; | 180 | padding: 0; |
164 | margin: 0; | 181 | margin: 0; |
165 | } | 182 | } |
166 | .links li { | ||
167 | list-style: none; | ||
168 | margin: 0; | ||
169 | padding: 0; | ||
170 | } | ||
171 | 183 | ||
184 | .links li { | ||
185 | list-style: none; | ||
186 | margin: 0; | ||
187 | padding: 0; | ||
188 | } | ||
172 | 189 | ||
173 | #links { | 190 | #links { |
174 | position: fixed; | 191 | position: fixed; |
@@ -179,119 +196,132 @@ h2:after { | |||
179 | background-color: #333; | 196 | background-color: #333; |
180 | padding-top: 9.5em; | 197 | padding-top: 9.5em; |
181 | height: 100%; | 198 | height: 100%; |
182 | box-shadow:inset -4px 0 20px rgba(0,0,0,0.6); | 199 | box-shadow: inset -4px 0 20px rgba(0, 0, 0, 0.6); |
183 | z-index: 15; | 200 | z-index: 15; |
184 | } | 201 | } |
185 | 202 | ||
186 | #main { | 203 | #main { |
187 | margin-left: 13em; | 204 | margin-left: 12em; |
188 | position: relative; | 205 | position: relative; |
189 | z-index: 10; | 206 | z-index: 10; |
190 | padding-right: 5%; | 207 | padding-right: 5%; |
191 | padding-bottom: 1em; | 208 | padding-bottom: 1em; |
192 | } | 209 | } |
193 | 210 | ||
194 | #links > li > a { | 211 | #links > li > a { |
195 | display: block; | 212 | display: block; |
196 | padding: 0.5em 2em 0.5em 1em; | 213 | padding: 0.5em 2em 0.5em 1em; |
197 | color: #FFF; | 214 | color: #fff; |
198 | position: relative; | 215 | position: relative; |
199 | text-transform: uppercase; | 216 | text-transform: uppercase; |
200 | text-decoration: none; | 217 | text-decoration: none; |
201 | font-weight: normal; | 218 | font-weight: normal; |
202 | font-family: 'PT Sans', sans-serif; | 219 | font-family: "PT Sans", sans-serif; |
203 | -webkit-transition: all 0.5s ease; | 220 | -webkit-transition: all 0.5s ease; |
204 | -moz-transition: all 0.5s ease; | 221 | -moz-transition: all 0.5s ease; |
205 | -ms-transition: all 0.5s ease; | 222 | -ms-transition: all 0.5s ease; |
206 | -o-transition: all 0.5s ease; | 223 | -o-transition: all 0.5s ease; |
207 | transition: all 0.5s ease; | 224 | transition: all 0.5s ease; |
208 | } | 225 | } |
209 | |||
210 | #links > li > a:hover, #links > li > a:focus { | ||
211 | background-color: #999; | ||
212 | color: #000; | ||
213 | } | ||
214 | 226 | ||
215 | #links .current:after { | 227 | #links > li > a:hover, |
216 | content: ""; | 228 | #links > li > a:focus { |
217 | width: 0; | 229 | background-color: #999; |
218 | height: 0; | 230 | color: #000; |
219 | position: absolute; | 231 | } |
220 | border-style: solid; | ||
221 | border-width: 10px; | ||
222 | border-color: transparent #EEE transparent transparent; | ||
223 | right: 0; | ||
224 | top: 50%; | ||
225 | margin-top: -10px; | ||
226 | } | ||
227 | 232 | ||
228 | #links li:last-child { | 233 | #links .current::after { |
229 | position: fixed; | 234 | content: ""; |
230 | bottom: 1em; | 235 | width: 0; |
231 | width: 10em; | 236 | height: 0; |
232 | } | 237 | position: absolute; |
238 | border-style: solid; | ||
239 | border-width: 10px; | ||
240 | border-color: transparent #eee transparent transparent; | ||
241 | right: 0; | ||
242 | top: 50%; | ||
243 | margin-top: -10px; | ||
244 | } | ||
233 | 245 | ||
234 | #links li:last-child a:before { | 246 | #links li:last-child { |
235 | font-size: 1.2em; | 247 | position: fixed; |
236 | position: relative; | 248 | bottom: 1em; |
237 | top: 2px; | 249 | width: 10em; |
238 | } | 250 | } |
239 | 251 | ||
252 | #links li:last-child a::before { | ||
253 | font-size: 1.2em; | ||
254 | position: relative; | ||
255 | top: 2px; | ||
256 | } | ||
240 | 257 | ||
241 | #sort { | 258 | #sort { |
242 | padding: 0; | 259 | padding: 0; |
243 | list-style-type: none; | 260 | list-style-type: none; |
244 | opacity: 0.5; | 261 | opacity: 0.5; |
245 | display: inline-block; | 262 | display: inline-block; |
246 | } | 263 | } |
247 | 264 | ||
248 | #sort li { | 265 | #sort li { |
249 | display: inline; | 266 | display: inline; |
250 | font-size: 0.9em; | 267 | font-size: 0.9em; |
251 | } | 268 | } |
252 | 269 | ||
253 | #sort li + li { | 270 | #sort li + li { |
254 | margin-left: 10px; | 271 | margin-left: 10px; |
255 | } | 272 | } |
256 | 273 | ||
257 | #sort a { | 274 | #sort a { |
258 | padding: 2px 2px 0; | 275 | padding: 2px 2px 0; |
259 | vertical-align: middle; | 276 | vertical-align: middle; |
260 | } | 277 | } |
261 | 278 | ||
262 | #sort img { | 279 | #sort img { |
263 | vertical-align: baseline; | 280 | vertical-align: baseline; |
264 | } | 281 | } |
282 | |||
265 | #sort img:hover { | 283 | #sort img:hover { |
266 | cursor: pointer; | 284 | cursor: pointer; |
267 | } | 285 | } |
268 | 286 | ||
269 | #display-mode { | 287 | #display-mode { |
270 | float: right; | 288 | float: right; |
271 | vertical-align: middle; | ||
272 | margin-top: 10px; | 289 | margin-top: 10px; |
273 | margin-bottom: 10px; | 290 | margin-bottom: 10px; |
274 | opacity: 0.5; | 291 | opacity: 0.5; |
275 | } | 292 | } |
293 | |||
276 | #listmode { | 294 | #listmode { |
277 | width: 16px; | 295 | width: 16px; |
278 | display: inline-block; | 296 | display: inline-block; |
279 | text-decoration: none; | 297 | text-decoration: none; |
280 | } | 298 | } |
299 | |||
281 | #listmode a:hover { | 300 | #listmode a:hover { |
282 | opacity: 1; | 301 | opacity: 1; |
283 | } | 302 | } |
303 | |||
284 | #listmode.tablemode { | 304 | #listmode.tablemode { |
285 | background-image: url("../img/baggy/table.png"); | 305 | background-image: url("../img/baggy/table.png"); |
286 | background-repeat: no-repeat; | 306 | background-repeat: no-repeat; |
287 | background-position: bottom; | 307 | background-position: bottom; |
288 | } | 308 | } |
309 | |||
289 | #listmode.listmode { | 310 | #listmode.listmode { |
290 | background-image: url("../img/baggy/list.png"); | 311 | background-image: url("../img/baggy/list.png"); |
291 | background-repeat: no-repeat; | 312 | background-repeat: no-repeat; |
292 | background-position: bottom; | 313 | background-position: bottom; |
293 | } | 314 | } |
294 | 315 | ||
316 | #warning_message { | ||
317 | position: fixed; | ||
318 | background-color: #ff6347; | ||
319 | z-index: 1000; | ||
320 | bottom: 0; | ||
321 | left: 0; | ||
322 | width: 100%; | ||
323 | color: #000; | ||
324 | } | ||
295 | 325 | ||
296 | /* ========================================================================== | 326 | /* ========================================================================== |
297 | 2 = Layout | 327 | 2 = Layout |
@@ -319,12 +349,52 @@ footer a { | |||
319 | } | 349 | } |
320 | 350 | ||
321 | .list-entries { | 351 | .list-entries { |
322 | letter-spacing:-5px; | 352 | letter-spacing: -5px; |
323 | } | 353 | } |
324 | 354 | ||
325 | .listmode .entry { | 355 | .listmode .entry { |
326 | width: 100%!important; | 356 | width: 100% !important; |
327 | margin-left: 0!important; | 357 | margin-left: 0 !important; |
358 | } | ||
359 | |||
360 | .card-entry-labels { | ||
361 | position: absolute; | ||
362 | top: 100px; | ||
363 | left: -1em; | ||
364 | z-index: 90; | ||
365 | max-width: 50%; | ||
366 | padding-left: 0; | ||
367 | } | ||
368 | |||
369 | .card-entry-labels li { | ||
370 | margin: 10px 10px 10px auto; | ||
371 | padding: 5px 12px 5px 25px; | ||
372 | background-color: rgba(0, 0, 0, 0.6); | ||
373 | border-radius: 0 3px 3px 0; | ||
374 | color: #fff; | ||
375 | cursor: default; | ||
376 | max-height: 2em; | ||
377 | overflow: hidden; | ||
378 | text-overflow: ellipsis; | ||
379 | white-space: nowrap; | ||
380 | } | ||
381 | |||
382 | .card-entry-tags { | ||
383 | max-height: 2em; | ||
384 | overflow-y: hidden; | ||
385 | padding: 0; | ||
386 | } | ||
387 | |||
388 | .card-entry-tags li { | ||
389 | display: inline-block; | ||
390 | margin: 0 5px; | ||
391 | padding: 5px 12px; | ||
392 | background-color: rgba(0, 0, 0, 0.6); | ||
393 | border-radius: 3px; | ||
394 | max-height: 2em; | ||
395 | overflow: hidden; | ||
396 | text-overflow: ellipsis; | ||
397 | color: #fff; | ||
328 | } | 398 | } |
329 | 399 | ||
330 | .list-entries + .results { | 400 | .list-entries + .results { |
@@ -344,47 +414,39 @@ footer a { | |||
344 | } | 414 | } |
345 | 415 | ||
346 | .entry { | 416 | .entry { |
347 | background-color: #FFF; | 417 | background-color: #fff; |
348 | letter-spacing:normal; | 418 | letter-spacing: normal; |
349 | box-shadow: 0 3px 7px rgba(0,0,0,0.3); | 419 | box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); |
350 | display: inline-block; | 420 | display: inline-block; |
351 | width: 32%; | 421 | width: 32%; |
352 | margin-bottom: 1.5em; | 422 | margin-bottom: 1.5em; |
353 | vertical-align: top; | 423 | vertical-align: top; |
354 | margin-left: 1.5%; | 424 | margin-right: 1%; |
355 | position: relative; | 425 | position: relative; |
356 | overflow: hidden; | 426 | overflow: hidden; |
357 | padding: 1.5em 1.5em 3em 1.5em; | 427 | padding: 1.5em 1.5em 3em; |
358 | 428 | height: 440px; | |
359 | /* Removing CSS transitions because they make the switch from list view to | ||
360 | * table view jerky | ||
361 | */ | ||
362 | /* -webkit-transition: all 0.5s ease; */ | ||
363 | /* -moz-transition: all 0.5s ease; */ | ||
364 | /* -ms-transition: all 0.5s ease; */ | ||
365 | /* -o-transition: all 0.5s ease; */ | ||
366 | /* transition: all 0.5s ease; */ | ||
367 | } | 429 | } |
368 | 430 | ||
369 | .entry:before { | 431 | .entry::before { |
370 | content: ""; | 432 | content: ""; |
371 | width: 0; | 433 | width: 0; |
372 | height: 0; | 434 | height: 0; |
373 | border-style:solid; | 435 | border-style: solid; |
374 | border-color: transparent transparent #000 transparent; | 436 | border-color: transparent transparent #000; |
375 | border-width: 10px; | 437 | border-width: 10px; |
376 | position: absolute; | 438 | position: absolute; |
377 | bottom: 0.3em; | 439 | bottom: 0.3em; |
378 | z-index: 10; | 440 | z-index: 10; |
379 | right: 1.5em; | 441 | right: 1.5em; |
380 | -webkit-transition: all 0.5s ease; | 442 | -webkit-transition: all 0.5s ease; |
381 | -moz-transition: all 0.5s ease; | 443 | -moz-transition: all 0.5s ease; |
382 | -ms-transition: all 0.5s ease; | 444 | -ms-transition: all 0.5s ease; |
383 | -o-transition: all 0.5s ease; | 445 | -o-transition: all 0.5s ease; |
384 | transition: all 0.5s ease; | 446 | transition: all 0.5s ease; |
385 | } | 447 | } |
386 | 448 | ||
387 | .entry:after { | 449 | .entry::after { |
388 | content: ""; | 450 | content: ""; |
389 | position: absolute; | 451 | position: absolute; |
390 | height: 7px; | 452 | height: 7px; |
@@ -393,21 +455,21 @@ footer a { | |||
393 | left: 0; | 455 | left: 0; |
394 | background-color: #000; | 456 | background-color: #000; |
395 | -webkit-transition: all 0.5s ease; | 457 | -webkit-transition: all 0.5s ease; |
396 | -moz-transition: all 0.5s ease; | 458 | -moz-transition: all 0.5s ease; |
397 | -ms-transition: all 0.5s ease; | 459 | -ms-transition: all 0.5s ease; |
398 | -o-transition: all 0.5s ease; | 460 | -o-transition: all 0.5s ease; |
399 | transition: all 0.5s ease; | 461 | transition: all 0.5s ease; |
400 | } | 462 | } |
401 | 463 | ||
402 | .entry:hover { | 464 | .entry:hover { |
403 | box-shadow: 0 3px 10px rgba(0,0,0,1); | 465 | box-shadow: 0 3px 10px rgba(0, 0, 0, 1); |
404 | } | 466 | } |
405 | 467 | ||
406 | .entry:hover:after { | 468 | .entry:hover::after { |
407 | height: 40px; | 469 | height: 40px; |
408 | } | 470 | } |
409 | 471 | ||
410 | .entry:hover:before { | 472 | .entry:hover::before { |
411 | bottom: 2.4em; | 473 | bottom: 2.4em; |
412 | } | 474 | } |
413 | 475 | ||
@@ -419,12 +481,14 @@ footer a { | |||
419 | text-transform: none; | 481 | text-transform: none; |
420 | margin-bottom: 0; | 482 | margin-bottom: 0; |
421 | line-height: 1.2; | 483 | line-height: 1.2; |
484 | text-align: justify; | ||
485 | -moz-text-align-last: center; | ||
486 | text-align-last: center; | ||
422 | } | 487 | } |
423 | 488 | ||
424 | .entry h2:after { | 489 | .entry h2::after { |
425 | content: none; | 490 | content: none; |
426 | } | 491 | } |
427 | |||
428 | 492 | ||
429 | .entry h2 a { | 493 | .entry h2 a { |
430 | display: block; | 494 | display: block; |
@@ -432,24 +496,16 @@ footer a { | |||
432 | color: #000; | 496 | color: #000; |
433 | word-wrap: break-word; | 497 | word-wrap: break-word; |
434 | -webkit-transition: all 0.5s ease; | 498 | -webkit-transition: all 0.5s ease; |
435 | -moz-transition: all 0.5s ease; | 499 | -moz-transition: all 0.5s ease; |
436 | -ms-transition: all 0.5s ease; | 500 | -ms-transition: all 0.5s ease; |
437 | -o-transition: all 0.5s ease; | 501 | -o-transition: all 0.5s ease; |
438 | transition: all 0.5s ease; | 502 | transition: all 0.5s ease; |
439 | } | 503 | } |
440 | /* | ||
441 | .entry h2 a:after { | ||
442 | content: ""; | ||
443 | position: absolute; | ||
444 | top: 0; | ||
445 | width: 100%; | ||
446 | height: 100%; | ||
447 | left: 0; | ||
448 | } | ||
449 | */ | ||
450 | 504 | ||
451 | img.preview { | 505 | img.preview { |
452 | max-width: 100%; | 506 | max-width: calc(100% + 3em); |
507 | left: -1.5em; | ||
508 | position: relative; | ||
453 | } | 509 | } |
454 | 510 | ||
455 | .entry p { | 511 | .entry p { |
@@ -458,9 +514,9 @@ img.preview { | |||
458 | line-height: 1.7; | 514 | line-height: 1.7; |
459 | } | 515 | } |
460 | 516 | ||
461 | .entry h2 a:first-letter { | 517 | .entry h2 a::first-letter { |
462 | text-transform: uppercase; | 518 | text-transform: uppercase; |
463 | } | 519 | } |
464 | 520 | ||
465 | .entry:hover .tools { | 521 | .entry:hover .tools { |
466 | bottom: 0; | 522 | bottom: 0; |
@@ -475,26 +531,26 @@ img.preview { | |||
475 | padding-right: 0.5em; | 531 | padding-right: 0.5em; |
476 | text-align: right; | 532 | text-align: right; |
477 | -webkit-transition: all 0.5s ease; | 533 | -webkit-transition: all 0.5s ease; |
478 | -moz-transition: all 0.5s ease; | 534 | -moz-transition: all 0.5s ease; |
479 | -ms-transition: all 0.5s ease; | 535 | -ms-transition: all 0.5s ease; |
480 | -o-transition: all 0.5s ease; | 536 | -o-transition: all 0.5s ease; |
481 | transition: all 0.5s ease; | 537 | transition: all 0.5s ease; |
482 | } | 538 | } |
483 | 539 | ||
484 | .entry .tools a { | 540 | .entry .tools a { |
485 | color: #666; | 541 | color: #666; |
486 | text-decoration: none; | 542 | text-decoration: none; |
487 | display: block; | 543 | display: block; |
488 | padding: 0.4em; | 544 | padding: 0.4em; |
489 | } | 545 | } |
490 | 546 | ||
491 | .entry .tools a:hover { | 547 | .entry .tools a:hover { |
492 | color: #FFF; | 548 | color: #fff; |
493 | } | 549 | } |
494 | 550 | ||
495 | .entry .tools li { | 551 | .entry .tools li { |
496 | display: inline-block; | 552 | display: inline-block; |
497 | } | 553 | } |
498 | 554 | ||
499 | .entry:nth-child(3n+1) { | 555 | .entry:nth-child(3n+1) { |
500 | margin-left: 0; | 556 | margin-left: 0; |
@@ -510,11 +566,12 @@ img.preview { | |||
510 | vertical-align: top; | 566 | vertical-align: top; |
511 | letter-spacing: normal; | 567 | letter-spacing: normal; |
512 | width: 50%; | 568 | width: 50%; |
569 | text-align: right; | ||
513 | } | 570 | } |
514 | 571 | ||
515 | div.pagination ul { | 572 | div.pagination ul { |
516 | text-align: right; | 573 | text-align: right; |
517 | margin-bottom:50px; | 574 | margin-bottom: 50px; |
518 | } | 575 | } |
519 | 576 | ||
520 | .nb-results { | 577 | .nb-results { |
@@ -533,11 +590,13 @@ div.pagination ul a { | |||
533 | text-decoration: none; | 590 | text-decoration: none; |
534 | } | 591 | } |
535 | 592 | ||
536 | div.pagination ul a:hover, div.pagination ul a:focus { | 593 | div.pagination ul a:hover, |
537 | text-decoration: underline; | 594 | div.pagination ul a:focus { |
595 | text-decoration: underline; | ||
538 | } | 596 | } |
539 | 597 | ||
540 | div.pagination ul .disabled { | 598 | div.pagination ul .prev.disabled, |
599 | div.pagination ul .next.disabled { | ||
541 | display: none; | 600 | display: none; |
542 | } | 601 | } |
543 | 602 | ||
@@ -556,7 +615,7 @@ div.pagination ul .current { | |||
556 | ========================================================================== */ | 615 | ========================================================================== */ |
557 | 616 | ||
558 | .popup-form { | 617 | .popup-form { |
559 | background: rgba(0,0,0,0.5); | 618 | background: rgba(0, 0, 0, 0.5); |
560 | position: absolute; | 619 | position: absolute; |
561 | top: 0; | 620 | top: 0; |
562 | left: 10em; | 621 | left: 10em; |
@@ -567,11 +626,11 @@ div.pagination ul .current { | |||
567 | margin-top: -30% !important; | 626 | margin-top: -30% !important; |
568 | padding: 2em; | 627 | padding: 2em; |
569 | display: none; | 628 | display: none; |
570 | border-left: 1px #EEE solid; | 629 | border-left: 1px #eee solid; |
571 | } | 630 | } |
572 | 631 | ||
573 | .popup-form form { | 632 | .popup-form form { |
574 | background-color: #FFF; | 633 | background-color: #fff; |
575 | position: absolute; | 634 | position: absolute; |
576 | top: 0; | 635 | top: 0; |
577 | left: 0; | 636 | left: 0; |
@@ -580,51 +639,52 @@ div.pagination ul .current { | |||
580 | width: 400px; | 639 | width: 400px; |
581 | height: 200px; | 640 | height: 200px; |
582 | padding: 2em; | 641 | padding: 2em; |
583 | } | 642 | } |
584 | 643 | ||
585 | #bagit-form-form .addurl { | 644 | #bagit-form-form .addurl { |
586 | margin-left: 0; | 645 | margin-left: 0; |
587 | } | 646 | } |
588 | 647 | ||
589 | .closeMessage, | 648 | .closeMessage, |
590 | .close-button { | 649 | .close-button { |
591 | background-color: #000; | 650 | background-color: #000; |
592 | color: #FFF; | 651 | color: #fff; |
593 | font-size: 1.2em; | 652 | font-size: 1.2em; |
594 | line-height: 1.6; | 653 | line-height: 1.6; |
595 | width: 1.6em; | 654 | width: 1.6em; |
596 | height: 1.6em; | 655 | height: 1.6em; |
597 | text-align: center; | 656 | text-align: center; |
598 | text-decoration: none; | 657 | text-decoration: none; |
599 | } | 658 | } |
600 | .closeMessage:hover, | 659 | |
601 | .closeMessage:focus, | 660 | .closeMessage:hover, |
602 | .close-button:hover, | 661 | .closeMessage:focus, |
603 | .close-button:focus { | 662 | .close-button:hover, |
663 | .close-button:focus { | ||
604 | background-color: #999; | 664 | background-color: #999; |
605 | color: #000; | 665 | color: #000; |
606 | } | 666 | } |
607 | 667 | ||
608 | .close-button--popup { | 668 | .close-button--popup { |
609 | display: inline-block; | 669 | display: inline-block; |
610 | position: absolute; | 670 | position: absolute; |
611 | top: 0; | 671 | top: 0; |
612 | right: 0; | 672 | right: 0; |
613 | font-size: 1.4em; | 673 | font-size: 1.4em; |
614 | } | 674 | } |
615 | 675 | ||
616 | .active-current { | 676 | .active-current { |
617 | background-color: #999; | 677 | background-color: #999; |
618 | } | 678 | } |
619 | 679 | ||
620 | .active-current:after { | 680 | .active-current::after { |
621 | content: ""; | 681 | content: ""; |
622 | width: 0; | 682 | width: 0; |
623 | height: 0; | 683 | height: 0; |
624 | position: absolute; | 684 | position: absolute; |
625 | border-style: solid; | 685 | border-style: solid; |
626 | border-width: 10px; | 686 | border-width: 10px; |
627 | border-color: transparent #EEE transparent transparent; | 687 | border-color: transparent #eee transparent transparent; |
628 | right: 0; | 688 | right: 0; |
629 | top: 50%; | 689 | top: 50%; |
630 | margin-top: -10px; | 690 | margin-top: -10px; |
@@ -637,26 +697,27 @@ div.pagination ul .current { | |||
637 | .add-to-wallabag-link-after { | 697 | .add-to-wallabag-link-after { |
638 | background-color: #000; | 698 | background-color: #000; |
639 | color: #fff; | 699 | color: #fff; |
640 | padding: 0 3px 2px 3px; | 700 | padding: 0 3px 2px; |
641 | } | 701 | } |
642 | 702 | ||
643 | a.add-to-wallabag-link-after { | 703 | a.add-to-wallabag-link-after { |
644 | visibility: hidden; | 704 | visibility: hidden; |
645 | position: absolute; | 705 | position: absolute; |
646 | opacity: 0; | 706 | opacity: 0; |
647 | transition-duration: 2s; | 707 | transition-duration: 2s; |
648 | transition-timing-function: ease-out; | 708 | transition-timing-function: ease-out; |
649 | } | 709 | } |
650 | 710 | ||
651 | #article article a:hover + a.add-to-wallabag-link-after, a.add-to-wallabag-link-after:hover { | 711 | #article article a:hover + a.add-to-wallabag-link-after, |
652 | opacity: 1; | 712 | a.add-to-wallabag-link-after:hover { |
653 | visibility: visible; | 713 | opacity: 1; |
654 | transition-duration: .3s; | 714 | visibility: visible; |
655 | transition-timing-function: ease-in; | 715 | transition-duration: 0.3s; |
716 | transition-timing-function: ease-in; | ||
656 | } | 717 | } |
657 | 718 | ||
658 | a.add-to-wallabag-link-after:after { | 719 | a.add-to-wallabag-link-after::after { |
659 | content: "w"; | 720 | content: "w"; |
660 | } | 721 | } |
661 | 722 | ||
662 | #add-link-result { | 723 | #add-link-result { |
@@ -664,29 +725,78 @@ a.add-to-wallabag-link-after:after { | |||
664 | font-size: 0.9em; | 725 | font-size: 0.9em; |
665 | } | 726 | } |
666 | 727 | ||
728 | .btn-clickable { | ||
729 | cursor: pointer; | ||
730 | } | ||
731 | |||
667 | /* ========================================================================== | 732 | /* ========================================================================== |
668 | 3 = Pictos | 733 | 3 = Pictos |
669 | ========================================================================== */ | 734 | ========================================================================== */ |
670 | 735 | ||
671 | @font-face { | 736 | @font-face { |
672 | font-family: 'icomoon'; | 737 | font-family: icomoon; |
673 | src:url('../fonts/icomoon.eot?-s0mcsx'); | 738 | src: url("../fonts/icomoon.eot?-s0mcsx"); |
674 | src:url('../fonts/icomoon.eot?#iefix-s0mcsx') format('embedded-opentype'), | 739 | src: |
675 | url('../fonts/icomoon.woff?-s0mcsx') format('woff'), | 740 | url("../fonts/icomoon.eot?#iefix-s0mcsx") format("embedded-opentype"), |
676 | url('../fonts/icomoon.ttf?-s0mcsx') format('truetype'), | 741 | url("../fonts/icomoon.woff?-s0mcsx") format("woff"), |
677 | url('../fonts/icomoon.svg?-s0mcsx#icomoon') format('svg'); | 742 | url("../fonts/icomoon.ttf?-s0mcsx") format("truetype"), |
743 | url("../fonts/icomoon.svg?-s0mcsx#icomoon") format("svg"); | ||
744 | font-weight: normal; | ||
745 | font-style: normal; | ||
746 | } | ||
747 | |||
748 | @font-face { | ||
749 | font-family: 'Material Icons'; | ||
750 | font-style: normal; | ||
751 | font-weight: 400; | ||
752 | src: url(../fonts/MaterialIcons-Regular.eot); | ||
753 | |||
754 | /* For IE6-8 */ | ||
755 | src: local("Material Icons"), local("MaterialIcons-Regular"), url(../fonts/MaterialIcons-Regular.woff2) format("woff2"), url(../fonts/MaterialIcons-Regular.woff) format("woff"), url(../fonts/MaterialIcons-Regular.ttf) format("truetype"); | ||
756 | } | ||
757 | |||
758 | .material-icons { | ||
759 | font-family: 'Material Icons'; | ||
678 | font-weight: normal; | 760 | font-weight: normal; |
679 | font-style: normal; | 761 | font-style: normal; |
762 | font-size: 1em; /* Preferred icon size */ | ||
763 | width: 1em; | ||
764 | height: 1em; | ||
765 | display: inline-block; | ||
766 | line-height: 1; | ||
767 | text-transform: none; | ||
768 | letter-spacing: normal; | ||
769 | word-wrap: normal; | ||
770 | white-space: nowrap; | ||
771 | direction: ltr; | ||
772 | |||
773 | /* Support for all WebKit browsers. */ | ||
774 | -webkit-font-smoothing: antialiased; | ||
775 | |||
776 | /* Support for Safari and Chrome. */ | ||
777 | text-rendering: optimizeLegibility; | ||
778 | |||
779 | /* Support for Firefox. */ | ||
780 | -moz-osx-font-smoothing: grayscale; | ||
781 | |||
782 | /* Support for IE. */ | ||
783 | font-feature-settings: 'liga'; | ||
680 | } | 784 | } |
681 | 785 | ||
786 | .material-icons.md-18 { font-size: 18px; } | ||
787 | .material-icons.md-24 { font-size: 24px; } | ||
788 | .material-icons.md-36 { font-size: 36px; } | ||
789 | .material-icons.md-48 { font-size: 48px; } | ||
790 | |||
682 | .icon span, | 791 | .icon span, |
683 | .icon-image span { | 792 | .icon-image span { |
684 | position: absolute; | 793 | position: absolute; |
685 | top: -9999px; | 794 | top: -9999px; |
686 | } | 795 | } |
687 | 796 | ||
688 | [class^="icon-"]:before, [class*=" icon-"]:before { | 797 | [class^="icon-"]::before, |
689 | font-family: 'icomoon'; | 798 | [class*=" icon-"]::before { |
799 | font-family: icomoon; | ||
690 | speak: none; | 800 | speak: none; |
691 | font-style: normal; | 801 | font-style: normal; |
692 | font-weight: normal; | 802 | font-weight: normal; |
@@ -699,93 +809,113 @@ a.add-to-wallabag-link-after:after { | |||
699 | -moz-osx-font-smoothing: grayscale; | 809 | -moz-osx-font-smoothing: grayscale; |
700 | } | 810 | } |
701 | 811 | ||
702 | .icon-flattr:before { | 812 | .icon-flattr::before { |
703 | content: "\e800"; | 813 | content: "\ead4"; |
704 | } | 814 | } |
705 | .icon-mail:before { | 815 | |
706 | content: "\e80a"; | 816 | .icon-mail::before { |
817 | content: "\ea86"; | ||
707 | } | 818 | } |
708 | .icon-up-open:before { | 819 | |
820 | .icon-up-open::before { | ||
709 | content: "\e80b"; | 821 | content: "\e80b"; |
710 | } | 822 | } |
711 | .icon-star:before { | 823 | |
712 | content: "\e805"; | 824 | .icon-star::before { |
825 | content: "\e9d9"; | ||
713 | } | 826 | } |
714 | .icon-check:before { | 827 | |
715 | content: "\e804"; | 828 | .icon-check::before { |
829 | content: "\ea10"; | ||
716 | } | 830 | } |
717 | .icon-link:before { | 831 | |
718 | content: "\e801"; | 832 | .icon-link::before { |
833 | content: "\e9cb"; | ||
719 | } | 834 | } |
720 | .icon-reply:before { | 835 | |
836 | .icon-reply::before { | ||
721 | content: "\e806"; | 837 | content: "\e806"; |
722 | } | 838 | } |
723 | .icon-menu:before { | 839 | |
724 | content: "\e802"; | 840 | .icon-menu::before { |
841 | content: "\e9bd"; | ||
725 | } | 842 | } |
726 | .icon-clock:before { | 843 | |
844 | .icon-clock::before { | ||
727 | content: "\e803"; | 845 | content: "\e803"; |
728 | } | 846 | } |
729 | .icon-twitter:before { | 847 | |
730 | content: "\e807"; | 848 | .icon-twitter::before { |
849 | content: "\ea91"; | ||
731 | } | 850 | } |
732 | .icon-down-open:before { | 851 | |
852 | .icon-down-open::before { | ||
733 | content: "\e809"; | 853 | content: "\e809"; |
734 | } | 854 | } |
735 | .icon-trash:before { | 855 | |
736 | content: "\e80c"; | 856 | .icon-trash::before { |
857 | content: "\e9ac"; | ||
737 | } | 858 | } |
738 | .icon-delete:before { | 859 | |
739 | content: "\e600"; | 860 | .icon-delete::before { |
861 | content: "\ea0d"; | ||
740 | } | 862 | } |
741 | .icon-power:before { | 863 | |
742 | content: "\e601"; | 864 | .icon-power::before { |
865 | content: "\ea14"; | ||
743 | } | 866 | } |
744 | .icon-arrow-up-thick:before { | 867 | |
745 | content: "\e602"; | 868 | .icon-arrow-up-thick::before { |
869 | content: "\ea3a"; | ||
746 | } | 870 | } |
747 | .icon-rss:before { | 871 | |
872 | .icon-rss::before { | ||
748 | content: "\e808"; | 873 | content: "\e808"; |
749 | } | 874 | } |
750 | .icon-print:before { | 875 | |
751 | content: "\e80d"; | 876 | .icon-print::before { |
877 | content: "\e954"; | ||
752 | } | 878 | } |
753 | .icon-reload:before { | 879 | |
880 | .icon-reload::before { | ||
754 | content: "\ea2e"; | 881 | content: "\ea2e"; |
755 | } | 882 | } |
756 | 883 | ||
884 | .icon-price-tags::before { | ||
885 | content: "\e936"; | ||
886 | } | ||
757 | 887 | ||
758 | /* .icon-image class, for image-based icons | 888 | /* .icon-image class, for image-based icons |
759 | ========================================================================== */ | 889 | ========================================================================== */ |
760 | 890 | ||
761 | .icon-image { | 891 | .icon-image { |
762 | background-size: 16px 16px; | 892 | background-size: 16px 16px; |
763 | background-repeat: no-repeat; | 893 | background-repeat: no-repeat; |
764 | background-position: center; | 894 | background-position: center; |
765 | padding-right: 1em !important; | 895 | padding-right: 1em !important; |
766 | padding-left: 1em !important; | 896 | padding-left: 1em !important; |
767 | } | 897 | } |
768 | 898 | ||
769 | /* Carrot (http://carrot.org) */ | 899 | /* Carrot (http://carrot.org) */ |
770 | .icon-image--carrot { | 900 | .icon-image--carrot { |
771 | background-image: url('../../_global/img/icons/carrot-icon--white.png'); | 901 | background-image: url("../../_global/img/icons/carrot-icon--white.png"); |
772 | } | 902 | } |
773 | 903 | ||
774 | /* Diaspora */ | 904 | /* Diaspora */ |
775 | .icon-image--diaspora { | 905 | .icon-image--diaspora { |
776 | background-image: url('../../_global/img/icons/diaspora-icon--black.png'); | 906 | background-image: url("../../_global/img/icons/diaspora-icon--black.png"); |
777 | } | 907 | } |
778 | 908 | ||
779 | /* ========================================================================== | 909 | /* ========================================================================== |
780 | Icon selected | 910 | Icon selected |
781 | ========================================================================== */ | 911 | ========================================================================== */ |
782 | 912 | ||
783 | .icon-star.fav:before { | 913 | .icon-star.fav::before { |
784 | color: #FFF; | 914 | color: #fff; |
785 | } | 915 | } |
786 | 916 | ||
787 | .icon-check.archive:before { | 917 | .icon-check.archive::before { |
788 | color: #FFF; | 918 | color: #fff; |
789 | } | 919 | } |
790 | 920 | ||
791 | /* ========================================================================== | 921 | /* ========================================================================== |
@@ -797,33 +927,25 @@ a.add-to-wallabag-link-after:after { | |||
797 | margin-top: 1em; | 927 | margin-top: 1em; |
798 | } | 928 | } |
799 | 929 | ||
800 | .messages > * { display: inline-block;} | 930 | .messages > * { |
931 | display: inline-block; | ||
932 | } | ||
801 | 933 | ||
802 | .warning { | 934 | .warning { |
803 | /* font-size: 3em; | ||
804 | color: #999; | ||
805 | font-style: italic; | ||
806 | position: absolute; | ||
807 | top: 50%; | ||
808 | left: 0; | ||
809 | width: 100%; | ||
810 | text-align: center; | ||
811 | padding-right: 5%; | ||
812 | margin-top: -2em;*/ | ||
813 | font-weight: bold; | 935 | font-weight: bold; |
814 | display: block; | 936 | display: block; |
815 | width: 100%; | 937 | width: 100%; |
816 | } | 938 | } |
817 | 939 | ||
818 | .more-info { | 940 | .more-info { |
819 | font-size: 0.85em; | 941 | font-size: 0.85em; |
820 | line-height: 1.5; | 942 | line-height: 1.5; |
821 | color: #aaa; | 943 | color: #aaa; |
822 | } | 944 | } |
823 | 945 | ||
824 | .more-info a { | 946 | .more-info a { |
825 | color: #aaa; | 947 | color: #aaa; |
826 | } | 948 | } |
827 | 949 | ||
828 | /* ========================================================================== | 950 | /* ========================================================================== |
829 | 5 = Article | 951 | 5 = Article |
@@ -844,8 +966,8 @@ a.add-to-wallabag-link-after:after { | |||
844 | } | 966 | } |
845 | 967 | ||
846 | blockquote { | 968 | blockquote { |
847 | border:1px solid #999; | 969 | border: 1px solid #999; |
848 | background-color: #FFF; | 970 | background-color: #fff; |
849 | padding: 1em; | 971 | padding: 1em; |
850 | margin: 0; | 972 | margin: 0; |
851 | } | 973 | } |
@@ -854,11 +976,13 @@ blockquote { | |||
854 | text-align: left; | 976 | text-align: left; |
855 | } | 977 | } |
856 | 978 | ||
857 | #article h2, #article h3, #article h4 { | 979 | #article h2, |
980 | #article h3, | ||
981 | #article h4 { | ||
858 | text-transform: none; | 982 | text-transform: none; |
859 | } | 983 | } |
860 | 984 | ||
861 | #article h2:after { | 985 | #article h2::after { |
862 | content: none; | 986 | content: none; |
863 | } | 987 | } |
864 | 988 | ||
@@ -880,19 +1004,20 @@ blockquote { | |||
880 | #article_toolbar a { | 1004 | #article_toolbar a { |
881 | background-color: #000; | 1005 | background-color: #000; |
882 | padding: 0.3em 0.5em 0.2em; | 1006 | padding: 0.3em 0.5em 0.2em; |
883 | color: #FFF; | 1007 | color: #fff; |
884 | text-decoration: none; | 1008 | text-decoration: none; |
885 | } | 1009 | } |
886 | 1010 | ||
887 | #article_toolbar a:hover, #article_toolbar a:focus { | 1011 | #article_toolbar a:hover, |
1012 | #article_toolbar a:focus { | ||
888 | background-color: #999; | 1013 | background-color: #999; |
889 | } | 1014 | } |
890 | 1015 | ||
891 | #nav-btn-add-tag { | 1016 | #nav-btn-add-tag { |
892 | cursor: pointer; | 1017 | cursor: pointer; |
893 | } | 1018 | } |
894 | 1019 | ||
895 | .shaarli:before { | 1020 | .shaarli::before { |
896 | content: "*"; | 1021 | content: "*"; |
897 | } | 1022 | } |
898 | 1023 | ||
@@ -902,7 +1027,7 @@ blockquote { | |||
902 | display: block; | 1027 | display: block; |
903 | } | 1028 | } |
904 | 1029 | ||
905 | .return:before { | 1030 | .return::before { |
906 | margin-right: 0.5em; | 1031 | margin-right: 0.5em; |
907 | } | 1032 | } |
908 | 1033 | ||
@@ -913,11 +1038,11 @@ blockquote { | |||
913 | 1038 | ||
914 | .icon-rss { | 1039 | .icon-rss { |
915 | background-color: #000; | 1040 | background-color: #000; |
916 | color: #FFF; | 1041 | color: #fff; |
917 | padding: 0.2em 0.5em; | 1042 | padding: 0.2em 0.5em; |
918 | } | 1043 | } |
919 | 1044 | ||
920 | .icon-rss:before { | 1045 | .icon-rss::before { |
921 | position: relative; | 1046 | position: relative; |
922 | top: 2px; | 1047 | top: 2px; |
923 | } | 1048 | } |
@@ -926,8 +1051,9 @@ blockquote { | |||
926 | margin-bottom: 0.5em; | 1051 | margin-bottom: 0.5em; |
927 | } | 1052 | } |
928 | 1053 | ||
929 | .list-tags .icon-rss:hover, .list-tags .icon-rss:focus { | 1054 | .list-tags .icon-rss:hover, |
930 | background-color: #FFF; | 1055 | .list-tags .icon-rss:focus { |
1056 | background-color: #fff; | ||
931 | color: #000; | 1057 | color: #000; |
932 | text-decoration: none; | 1058 | text-decoration: none; |
933 | } | 1059 | } |
@@ -936,14 +1062,13 @@ blockquote { | |||
936 | text-decoration: none; | 1062 | text-decoration: none; |
937 | } | 1063 | } |
938 | 1064 | ||
939 | .list-tags a:hover, .list-tags a:focus { | 1065 | .list-tags a:hover, |
1066 | .list-tags a:focus { | ||
940 | text-decoration: underline; | 1067 | text-decoration: underline; |
941 | } | 1068 | } |
942 | 1069 | ||
943 | pre code { | 1070 | pre code { |
944 | font-family: "Courier New", Courier, monospace; | 1071 | font-family: "Courier New", Courier, monospace; |
945 | border: 1px solid #ccc; | ||
946 | font-size: 0.96em; | ||
947 | } | 1072 | } |
948 | 1073 | ||
949 | #filter-form { | 1074 | #filter-form { |
@@ -952,28 +1077,45 @@ pre code { | |||
952 | height: 100%; | 1077 | height: 100%; |
953 | top: 0; | 1078 | top: 0; |
954 | right: 0; | 1079 | right: 0; |
955 | background-color: #FFF; | 1080 | background-color: #fff; |
956 | padding: 15px; | 1081 | padding: 15px; |
957 | padding-right: 30px; | 1082 | padding-right: 30px; |
958 | padding-top: 30px; | 1083 | padding-top: 30px; |
959 | border-left: 1px #333 solid; | 1084 | border-left: 1px #333 solid; |
960 | z-index: 12; | 1085 | z-index: 12; |
961 | 1086 | min-width: 300px; | |
962 | /*transition-property: transform; | ||
963 | transition-duration: 0.3s; | ||
964 | transition-delay: 0.3s; | ||
965 | |||
966 | transform: translate3d(100%, 0, 0);*/ | ||
967 | } | ||
968 | |||
969 | #filter-form form { | ||
970 | |||
971 | } | 1087 | } |
972 | 1088 | ||
973 | #filter-form form .filter-group { | 1089 | #filter-form form .filter-group { |
974 | margin: 5px; | 1090 | margin: 5px; |
975 | } | 1091 | } |
976 | 1092 | ||
1093 | #download-form { | ||
1094 | position: fixed; | ||
1095 | width: 10%; | ||
1096 | height: 100%; | ||
1097 | top: 0; | ||
1098 | right: 0; | ||
1099 | background-color: #fff; | ||
1100 | padding: 15px; | ||
1101 | padding-right: 30px; | ||
1102 | padding-top: 30px; | ||
1103 | border-left: 1px #333 solid; | ||
1104 | z-index: 12; | ||
1105 | min-width: 200px; | ||
1106 | } | ||
1107 | |||
1108 | #download-form li { | ||
1109 | display: block; | ||
1110 | padding: 0.5em 2em 0.5em 1em; | ||
1111 | color: #fff; | ||
1112 | position: relative; | ||
1113 | text-transform: uppercase; | ||
1114 | text-decoration: none; | ||
1115 | font-weight: 400; | ||
1116 | font-family: PT Sans, sans-serif; | ||
1117 | transition: all 0.5s ease; | ||
1118 | } | ||
977 | 1119 | ||
978 | /* ========================================================================== | 1120 | /* ========================================================================== |
979 | 6 = Media Queries | 1121 | 6 = Media Queries |
@@ -1015,6 +1157,7 @@ pre code { | |||
1015 | width: 100%; | 1157 | width: 100%; |
1016 | margin-left: 0; | 1158 | margin-left: 0; |
1017 | } | 1159 | } |
1160 | |||
1018 | body > header { | 1161 | body > header { |
1019 | background-color: #333; | 1162 | background-color: #333; |
1020 | position: fixed; | 1163 | position: fixed; |
@@ -1023,70 +1166,86 @@ pre code { | |||
1023 | height: 3em; | 1166 | height: 3em; |
1024 | z-index: 11; | 1167 | z-index: 11; |
1025 | } | 1168 | } |
1169 | |||
1026 | #links li:last-child { | 1170 | #links li:last-child { |
1027 | position: static; | 1171 | position: static; |
1028 | width: auto; | 1172 | width: auto; |
1029 | } | 1173 | } |
1030 | #links li:last-child a:before { | 1174 | |
1175 | #links li:last-child a::before { | ||
1031 | content: none; | 1176 | content: none; |
1032 | } | 1177 | } |
1178 | |||
1033 | .logo { | 1179 | .logo { |
1034 | width: 1.25em; | 1180 | width: 1.25em; |
1035 | height: 1.25em; | 1181 | height: 1.25em; |
1036 | left: 0; | 1182 | left: 0; |
1037 | top: 0; | 1183 | top: 0; |
1038 | } | 1184 | } |
1185 | |||
1039 | .login > header { | 1186 | .login > header { |
1040 | position: static; | 1187 | position: static; |
1041 | } | 1188 | } |
1189 | |||
1042 | .login form { | 1190 | .login form { |
1043 | width: 100%; | 1191 | width: 100%; |
1044 | position: static; | 1192 | position: static; |
1045 | margin-left: 0; | 1193 | margin-left: 0; |
1046 | } | 1194 | } |
1195 | |||
1047 | .login .logo { | 1196 | .login .logo { |
1048 | width: auto; | ||
1049 | height: auto; | 1197 | height: auto; |
1050 | top: 0.5em; | 1198 | top: 0.5em; |
1051 | width: 75px; | 1199 | width: 75px; |
1052 | height: 75px; | 1200 | height: 75px; |
1053 | margin-left: -37.5px; | 1201 | margin-left: -37.5px; |
1054 | } | 1202 | } |
1203 | |||
1055 | .desktopHide { | 1204 | .desktopHide { |
1056 | display: block; | 1205 | display: block; |
1057 | position: fixed; | 1206 | position: fixed; |
1058 | z-index: 20; | 1207 | z-index: 20; |
1059 | top: 0; | 1208 | top: 0; |
1060 | right: 0; | 1209 | right: 0; |
1061 | border:0; | 1210 | border: 0; |
1062 | width: 2.5em; | 1211 | width: 2.5em; |
1063 | height: 2.5em; | 1212 | height: 2.5em; |
1064 | cursor: pointer; | 1213 | cursor: pointer; |
1065 | background-color: #999; | 1214 | background-color: #999; |
1066 | font-size: 1.2em; | 1215 | font-size: 1.2em; |
1067 | } | 1216 | } |
1068 | .desktopHide:hover, .desktopHide:focus { | 1217 | .desktopHide:hover, |
1069 | background-color: #FFF; | 1218 | .desktopHide:focus { |
1070 | } | 1219 | background-color: #fff; |
1220 | } | ||
1221 | |||
1071 | #links { | 1222 | #links { |
1072 | display: none; | 1223 | display: none; |
1073 | width: 100%; | 1224 | width: 100%; |
1074 | height: auto; | 1225 | height: auto; |
1075 | padding-top: 3em; | 1226 | padding-top: 3em; |
1076 | } | 1227 | } |
1228 | |||
1077 | #links.menu--open { | 1229 | #links.menu--open { |
1078 | display: block; | 1230 | display: block; |
1079 | } | 1231 | } |
1080 | footer { | 1232 | |
1233 | footer { | ||
1081 | position: static; | 1234 | position: static; |
1082 | margin-right: 3em; | 1235 | margin-right: 3em; |
1083 | } | 1236 | } |
1237 | |||
1084 | #main { | 1238 | #main { |
1085 | margin-left: 1.5em; | 1239 | margin-left: 1.5em; |
1086 | padding-right: 1.5em; | 1240 | padding-right: 1.5em; |
1087 | position: static; | 1241 | position: static; |
1088 | margin-top: 3em; | 1242 | margin-top: 3em; |
1089 | } | 1243 | } |
1244 | |||
1245 | .card-entry-labels { | ||
1246 | display: none; | ||
1247 | } | ||
1248 | |||
1090 | #article_toolbar .topPosF { | 1249 | #article_toolbar .topPosF { |
1091 | display: none; | 1250 | display: none; |
1092 | } | 1251 | } |
@@ -1098,6 +1257,7 @@ pre code { | |||
1098 | #article h1 { | 1257 | #article h1 { |
1099 | font-size: 1.5em; | 1258 | font-size: 1.5em; |
1100 | } | 1259 | } |
1260 | |||
1101 | #article_toolbar a { | 1261 | #article_toolbar a { |
1102 | padding: 0.3em 0.4em 0.2em; | 1262 | padding: 0.3em 0.4em 0.2em; |
1103 | } | 1263 | } |
@@ -1106,7 +1266,9 @@ pre code { | |||
1106 | display: none; | 1266 | display: none; |
1107 | } | 1267 | } |
1108 | 1268 | ||
1109 | .popup-form, #bagit-form, #search-form { | 1269 | .popup-form, |
1270 | #bagit-form, | ||
1271 | #search-form { | ||
1110 | left: 0; | 1272 | left: 0; |
1111 | width: 100%; | 1273 | width: 100%; |
1112 | border-left: none; | 1274 | border-left: none; |
diff --git a/app/Resources/static/themes/baggy/css/messages.css b/app/Resources/static/themes/baggy/css/messages.css new file mode 100755 index 00000000..bfaf1448 --- /dev/null +++ b/app/Resources/static/themes/baggy/css/messages.css | |||
@@ -0,0 +1,19 @@ | |||
1 | .messages.error.install { | ||
2 | border: 1px solid #c42608; | ||
3 | color: #c00 !important; | ||
4 | background: #fff0ef; | ||
5 | text-align: left; | ||
6 | } | ||
7 | |||
8 | .messages.notice.install { | ||
9 | border: 1px solid #ebcd41; | ||
10 | color: #000; | ||
11 | background: #fffcd3; | ||
12 | text-align: left; | ||
13 | } | ||
14 | |||
15 | .messages.success.install { | ||
16 | border: 1px solid #6dc70c; | ||
17 | background: #e0fbcc !important; | ||
18 | text-align: left; | ||
19 | } | ||
diff --git a/app/Resources/static/themes/baggy/css/print.css b/app/Resources/static/themes/baggy/css/print.css new file mode 100755 index 00000000..f7f6a8ad --- /dev/null +++ b/app/Resources/static/themes/baggy/css/print.css | |||
@@ -0,0 +1,66 @@ | |||
1 | @media print { | ||
2 | /* ### Layout ### */ | ||
3 | |||
4 | body { | ||
5 | font-family: Serif; | ||
6 | background-color: #fff; | ||
7 | } | ||
8 | |||
9 | @page { | ||
10 | margin: 1cm; | ||
11 | } | ||
12 | |||
13 | img { | ||
14 | max-width: 100% !important; | ||
15 | } | ||
16 | |||
17 | /* ### Content ### */ | ||
18 | |||
19 | /* Hide useless blocks */ | ||
20 | body > header, | ||
21 | #article_toolbar, | ||
22 | #links, | ||
23 | #sort, | ||
24 | body > footer, | ||
25 | .top_link, | ||
26 | div.tools, | ||
27 | header div, | ||
28 | .messages, | ||
29 | .entrie + .results, | ||
30 | #article .mbm a, | ||
31 | #article-informations { | ||
32 | display: none !important; | ||
33 | } | ||
34 | |||
35 | article { | ||
36 | border: none !important; | ||
37 | } | ||
38 | |||
39 | /* Add URL after links */ | ||
40 | .vieworiginal a::after { | ||
41 | content: " (" attr(href) ")"; | ||
42 | } | ||
43 | |||
44 | /* Add explanation after abbr */ | ||
45 | abbr[title]::after { | ||
46 | content: " (" attr(title) ")"; | ||
47 | } | ||
48 | |||
49 | /* Change border on current pager item */ | ||
50 | .pagination span.current { | ||
51 | border-style: dashed; | ||
52 | } | ||
53 | |||
54 | #main { | ||
55 | width: 100%; | ||
56 | padding: 0; | ||
57 | margin: 0; | ||
58 | margin-left: 0; | ||
59 | padding-right: 0; | ||
60 | padding-bottom: 0; | ||
61 | } | ||
62 | |||
63 | #article { | ||
64 | width: 100%; | ||
65 | } | ||
66 | } | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/css/ratatouille.css b/app/Resources/static/themes/baggy/css/ratatouille.css index 605eb641..b5aeb54e 100644 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/css/ratatouille.css +++ b/app/Resources/static/themes/baggy/css/ratatouille.css | |||
@@ -6,8 +6,8 @@ | |||
6 | 6 | ||
7 | * { | 7 | * { |
8 | -webkit-box-sizing: border-box; | 8 | -webkit-box-sizing: border-box; |
9 | -moz-box-sizing: border-box; | 9 | -moz-box-sizing: border-box; |
10 | box-sizing: border-box; | 10 | box-sizing: border-box; |
11 | } | 11 | } |
12 | 12 | ||
13 | html { | 13 | html { |
@@ -18,7 +18,7 @@ html { | |||
18 | 18 | ||
19 | body { | 19 | body { |
20 | font-size: 1em; | 20 | font-size: 1em; |
21 | line-height:1.5; | 21 | line-height: 1.5; |
22 | margin: 0; | 22 | margin: 0; |
23 | } | 23 | } |
24 | 24 | ||
@@ -35,7 +35,7 @@ h6:first-child, | |||
35 | p:first-child, | 35 | p:first-child, |
36 | ul:first-child, | 36 | ul:first-child, |
37 | ol:first-child, | 37 | ol:first-child, |
38 | dl:first-child{ | 38 | dl:first-child { |
39 | margin-top: 0; | 39 | margin-top: 0; |
40 | } | 40 | } |
41 | 41 | ||
@@ -43,14 +43,13 @@ code, | |||
43 | kbd, | 43 | kbd, |
44 | pre, | 44 | pre, |
45 | samp { | 45 | samp { |
46 | font-family: monospace, serif; | 46 | font-family: monospace, serif; |
47 | } | 47 | } |
48 | 48 | ||
49 | pre { | 49 | pre { |
50 | white-space: pre-wrap; | 50 | white-space: pre-wrap; |
51 | } | 51 | } |
52 | 52 | ||
53 | |||
54 | .upper { | 53 | .upper { |
55 | text-transform: uppercase; | 54 | text-transform: uppercase; |
56 | } | 55 | } |
@@ -61,12 +60,12 @@ pre { | |||
61 | 60 | ||
62 | .inner { | 61 | .inner { |
63 | margin: 0 auto; | 62 | margin: 0 auto; |
64 | max-width: 61.25em;/*980px*/ | 63 | max-width: 61.25em; /* 980px */ |
65 | } | 64 | } |
66 | 65 | ||
67 | table, img, figure { | 66 | table, img, figure { |
68 | max-width: 100%; | 67 | max-width: 100%; |
69 | height :auto; | 68 | height: auto; |
70 | } | 69 | } |
71 | 70 | ||
72 | iframe { | 71 | iframe { |
@@ -93,13 +92,13 @@ button, | |||
93 | input, | 92 | input, |
94 | select, | 93 | select, |
95 | textarea { | 94 | textarea { |
96 | font-family: inherit; | 95 | font-family: inherit; |
97 | font-size: 100%; | 96 | font-size: 100%; |
98 | margin: 0; | 97 | margin: 0; |
99 | } | 98 | } |
100 | 99 | ||
101 | input[type="search"] { | 100 | input[type="search"] { |
102 | -webkit-appearance: textfield; | 101 | -webkit-appearance: textfield; |
103 | } | 102 | } |
104 | 103 | ||
105 | /* ========================================================================== | 104 | /* ========================================================================== |
@@ -115,11 +114,17 @@ input[type="search"] { | |||
115 | display: none; | 114 | display: none; |
116 | } | 115 | } |
117 | 116 | ||
118 | .dtable { display:table } | 117 | .dtable { |
118 | display: table; | ||
119 | } | ||
119 | 120 | ||
120 | .dtable > * { display:table-row; } | 121 | .dtable > * { |
122 | display: table-row; | ||
123 | } | ||
121 | 124 | ||
122 | .dtable > * > * { display:table-cell; } | 125 | .dtable > * > * { |
126 | display: table-cell; | ||
127 | } | ||
123 | 128 | ||
124 | .element-invisible { | 129 | .element-invisible { |
125 | border: 0; | 130 | border: 0; |
@@ -133,32 +138,60 @@ input[type="search"] { | |||
133 | } | 138 | } |
134 | 139 | ||
135 | .small { | 140 | .small { |
136 | font-size:0.8em; | 141 | font-size: 0.8em; |
137 | } | 142 | } |
138 | 143 | ||
139 | .big { | 144 | .big { |
140 | font-size: 1.2em; | 145 | font-size: 1.2em; |
141 | } | 146 | } |
142 | 147 | ||
143 | /*Width*/ | 148 | /* Width */ |
144 | 149 | ||
145 | .w100 { width:100%; } | 150 | .w100 { |
146 | .w90 { width:90%; } | 151 | width: 100%; |
147 | .w80 { width:80%; } | 152 | } |
148 | .w70 { width:70%; } | 153 | |
149 | .w60 { width:60%; } | 154 | .w90 { |
150 | .w50 { width:50%; } | 155 | width: 90%; |
151 | .w40 { width:40%; } | 156 | } |
152 | .w30 { width:30%; } | 157 | |
153 | .w20 { width:20%; } | 158 | .w80 { |
154 | .w10 { width:10%; } | 159 | width: 80%; |
160 | } | ||
155 | 161 | ||
162 | .w70 { | ||
163 | width: 70%; | ||
164 | } | ||
165 | |||
166 | .w60 { | ||
167 | width: 60%; | ||
168 | } | ||
169 | |||
170 | .w50 { | ||
171 | width: 50%; | ||
172 | } | ||
173 | |||
174 | .w40 { | ||
175 | width: 40%; | ||
176 | } | ||
177 | |||
178 | .w30 { | ||
179 | width: 30%; | ||
180 | } | ||
181 | |||
182 | .w20 { | ||
183 | width: 20%; | ||
184 | } | ||
185 | |||
186 | .w10 { | ||
187 | width: 10%; | ||
188 | } | ||
156 | 189 | ||
157 | /* ========================================================================== | 190 | /* ========================================================================== |
158 | Internet Explorer | 191 | Internet Explorer |
159 | ========================================================================== */ | 192 | ========================================================================== */ |
160 | 193 | ||
161 | /*IE8 and IE9*/ | 194 | /* IE8 and IE9 */ |
162 | 195 | ||
163 | article, | 196 | article, |
164 | aside, | 197 | aside, |
@@ -172,40 +205,20 @@ main, | |||
172 | nav, | 205 | nav, |
173 | section, | 206 | section, |
174 | summary { | 207 | summary { |
175 | display: block; | 208 | display: block; |
176 | } | 209 | } |
177 | 210 | ||
178 | /*IE8 and IE9*/ | 211 | /* IE8 and IE9 */ |
179 | 212 | ||
180 | audio, | 213 | audio, |
181 | canvas, | 214 | canvas, |
182 | video { | 215 | video { |
183 | display: inline-block; | 216 | display: inline-block; |
184 | } | 217 | } |
185 | 218 | ||
186 | @media screen and (-webkit-min-device-pixel-ratio:0){ | 219 | @media screen and (-webkit-min-device-pixel-ratio: 0) { |
187 | select{ | 220 | select { |
188 | -webkit-appearance: none; | 221 | -webkit-appearance: none; |
189 | border-radius: 0; | 222 | border-radius: 0; |
190 | } | 223 | } |
191 | } | 224 | } |
192 | |||
193 | /* ========================================================================== | ||
194 | Medias Queries | ||
195 | ========================================================================== */ | ||
196 | |||
197 | /*Desktop 1080px*/ | ||
198 | |||
199 | @media screen and (max-width: 67.50em) { | ||
200 | } | ||
201 | |||
202 | /*Tablet 800px*/ | ||
203 | |||
204 | @media screen and (max-width: 50em) { | ||
205 | } | ||
206 | |||
207 | /*Mobile 640px*/ | ||
208 | |||
209 | @media screen and (max-width: 40em) { | ||
210 | } | ||
211 | |||
diff --git a/app/Resources/static/themes/baggy/font/icomoon.eot b/app/Resources/static/themes/baggy/font/icomoon.eot new file mode 100644 index 00000000..248758fb --- /dev/null +++ b/app/Resources/static/themes/baggy/font/icomoon.eot | |||
Binary files differ | |||
diff --git a/app/Resources/static/themes/baggy/font/icomoon.svg b/app/Resources/static/themes/baggy/font/icomoon.svg new file mode 100644 index 00000000..b1b9c92a --- /dev/null +++ b/app/Resources/static/themes/baggy/font/icomoon.svg | |||
@@ -0,0 +1,501 @@ | |||
1 | <?xml version="1.0" standalone="no"?> | ||
2 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > | ||
3 | <svg xmlns="http://www.w3.org/2000/svg"> | ||
4 | <metadata>Generated by IcoMoon</metadata> | ||
5 | <defs> | ||
6 | <font id="icomoon" horiz-adv-x="1024"> | ||
7 | <font-face units-per-em="1024" ascent="960" descent="-64" /> | ||
8 | <missing-glyph horiz-adv-x="1024" /> | ||
9 | <glyph unicode=" " horiz-adv-x="512" d="" /> | ||
10 | <glyph unicode="" glyph-name="home" d="M1024 369.556l-512 397.426-512-397.428v162.038l512 397.426 512-397.428zM896 384v-384h-256v256h-256v-256h-256v384l384 288z" /> | ||
11 | <glyph unicode="" glyph-name="home2" d="M512 928l-512-512 96-96 96 96v-416h256v192h128v-192h256v416l96-96 96 96-512 512zM512 512c-35.346 0-64 28.654-64 64s28.654 64 64 64c35.346 0 64-28.654 64-64s-28.654-64-64-64z" /> | ||
12 | <glyph unicode="" glyph-name="home3" d="M1024 352l-192 192v288h-128v-160l-192 192-512-512v-32h128v-320h320v192h128v-192h320v320h128z" /> | ||
13 | <glyph unicode="" glyph-name="office" d="M0-64h512v1024h-512v-1024zM320 832h128v-128h-128v128zM320 576h128v-128h-128v128zM320 320h128v-128h-128v128zM64 832h128v-128h-128v128zM64 576h128v-128h-128v128zM64 320h128v-128h-128v128zM576 640h448v-64h-448zM576-64h128v256h192v-256h128v576h-448z" /> | ||
14 | <glyph unicode="" glyph-name="newspaper" d="M896 704v128h-896v-704c0-35.346 28.654-64 64-64h864c53.022 0 96 42.978 96 96v544h-128zM832 128h-768v640h768v-640zM128 640h640v-64h-640zM512 512h256v-64h-256zM512 384h256v-64h-256zM512 256h192v-64h-192zM128 512h320v-320h-320z" /> | ||
15 | <glyph unicode="" glyph-name="pencil" d="M864 960c88.364 0 160-71.634 160-160 0-36.020-11.91-69.258-32-96l-64-64-224 224 64 64c26.742 20.090 59.978 32 96 32zM64 224l-64-288 288 64 592 592-224 224-592-592zM715.578 596.422l-448-448-55.156 55.156 448 448 55.156-55.156z" /> | ||
16 | <glyph unicode="" glyph-name="pencil2" d="M384 320l128 64 448 448-64 64-448-448-64-128zM289.3 92.902c-31.632 66.728-65.666 100.762-132.396 132.394l99.096 272.792 128 77.912 384 384h-192l-384-384-192-640 640 192 384 384v192l-384-384-77.912-128z" /> | ||
17 | <glyph unicode="" glyph-name="quill" d="M0-64c128 384 463 1024 1024 1024-263-211-384-704-576-704s-192 0-192 0l-192-320h-64z" /> | ||
18 | <glyph unicode="" glyph-name="pen" d="M1018.17 668.11l-286.058 286.058c-9.334 9.334-21.644 7.234-27.356-4.666l-38.354-79.904 267.198-267.198 79.904 38.354c11.9 5.712 14 18.022 4.666 27.356zM615.384 824.616l-263.384-21.95c-17.5-2.166-32.080-5.898-37.090-28.752-0.006-0.024-0.012-0.042-0.018-0.066-71.422-343.070-314.892-677.848-314.892-677.848l57.374-57.374 271.986 271.99c-5.996 12.53-9.36 26.564-9.36 41.384 0 53.020 42.98 96 96 96s96-42.98 96-96-42.98-96-96-96c-14.82 0-28.852 3.364-41.384 9.36l-271.988-271.986 57.372-57.374c0 0 334.778 243.47 677.848 314.892 0.024 0.006 0.042 0.012 0.066 0.018 22.854 5.010 26.586 19.59 28.752 37.090l21.95 263.384-273.232 273.232z" /> | ||
19 | <glyph unicode="" glyph-name="blog" d="M384 960v-96c73.482 0 144.712-14.37 211.716-42.71 64.768-27.394 122.958-66.632 172.948-116.624s89.228-108.18 116.624-172.948c28.342-67.004 42.712-138.238 42.712-211.718h96c0 353.46-286.54 640-640 640zM384 768v-96c94.022 0 182.418-36.614 248.9-103.098 66.486-66.484 103.1-154.878 103.1-248.902h96c0 247.422-200.576 448-448 448zM480 576l-64-64-224-64-192-416 25.374-25.374 232.804 232.804c-1.412 5.286-2.178 10.84-2.178 16.57 0 35.346 28.654 64 64 64s64-28.654 64-64-28.654-64-64-64c-5.732 0-11.282 0.764-16.568 2.178l-232.804-232.804 25.372-25.374 416 192 64 224 64 64-160 160z" /> | ||
20 | <glyph unicode="" glyph-name="eyedropper" d="M986.51 922.51c-49.988 49.986-131.032 49.986-181.020 0l-172.118-172.118-121.372 121.372-135.764-135.764 106.426-106.426-472.118-472.118c-8.048-8.048-11.468-18.958-10.3-29.456h-0.244v-160c0-17.674 14.328-32 32-32h160c0 0 2.664 0 4 0 9.212 0 18.426 3.516 25.456 10.544l472.118 472.118 106.426-106.426 135.764 135.764-121.372 121.372 172.118 172.118c49.986 49.988 49.986 131.032 0 181.020zM173.090 0h-109.090v109.090l469.574 469.572 109.088-109.088-469.572-469.574z" /> | ||
21 | <glyph unicode="" glyph-name="droplet" d="M864.626 486.838c-65.754 183.44-205.11 348.15-352.626 473.162-147.516-125.012-286.87-289.722-352.626-473.162-40.664-113.436-44.682-236.562 12.584-345.4 65.846-125.14 198.632-205.438 340.042-205.438s274.196 80.298 340.040 205.44c57.27 108.838 53.25 231.962 12.586 345.398zM738.764 201.044c-43.802-83.252-132.812-137.044-226.764-137.044-55.12 0-108.524 18.536-152.112 50.652 13.242-1.724 26.632-2.652 40.112-2.652 117.426 0 228.668 67.214 283.402 171.242 44.878 85.292 40.978 173.848 23.882 244.338 14.558-28.15 26.906-56.198 36.848-83.932 22.606-63.062 40.024-156.34-5.368-242.604z" /> | ||
22 | <glyph unicode="" glyph-name="paint-format" d="M1024 384v384h-192v64c0 35.2-28.8 64-64 64h-704c-35.2 0-64-28.8-64-64v-192c0-35.2 28.8-64 64-64h704c35.2 0 64 28.8 64 64v64h128v-256h-576v-128h-32c-17.674 0-32-14.326-32-32v-320c0-17.674 14.326-32 32-32h128c17.674 0 32 14.326 32 32v320c0 17.674-14.326 32-32 32h-32v64h576zM768 768h-704v64h704v-64z" /> | ||
23 | <glyph unicode="" glyph-name="image" d="M959.884 832c0.040-0.034 0.082-0.076 0.116-0.116v-767.77c-0.034-0.040-0.076-0.082-0.116-0.116h-895.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.772c0.034 0.040 0.076 0.082 0.114 0.114h895.77zM960 896h-896c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v768c0 35.2-28.8 64-64 64v0zM832 672c0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM896 128h-768v128l224 384 256-320h64l224 192z" /> | ||
24 | <glyph unicode="" glyph-name="images" horiz-adv-x="1152" d="M1088 832h-64v64c0 35.2-28.8 64-64 64h-896c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h64v-64c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v768c0 35.2-28.8 64-64 64zM128 768v-640h-63.886c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h895.77c0.040-0.034 0.082-0.076 0.116-0.116v-63.884h-768c-35.2 0-64-28.8-64-64v0zM1088 0.116c-0.034-0.040-0.076-0.082-0.116-0.116h-895.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.77c0.034 0.040 0.076 0.082 0.114 0.114h895.77c0.040-0.034 0.082-0.076 0.116-0.116v-767.768zM960 608c0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM1024 64h-768v128l224 384 256-320h64l224 192z" /> | ||
25 | <glyph unicode="" glyph-name="camera" d="M304 352c0-114.876 93.124-208 208-208s208 93.124 208 208-93.124 208-208 208-208-93.124-208-208zM960 704h-224c-16 64-32 128-96 128h-256c-64 0-80-64-96-128h-224c-35.2 0-64-28.8-64-64v-576c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v576c0 35.2-28.8 64-64 64zM512 68c-156.85 0-284 127.148-284 284 0 156.85 127.15 284 284 284 156.852 0 284-127.15 284-284 0-156.852-127.146-284-284-284zM960 512h-128v64h128v-64z" /> | ||
26 | <glyph unicode="" glyph-name="headphones" d="M288 384h-64v-448h64c17.6 0 32 14.4 32 32v384c0 17.6-14.4 32-32 32zM736 384c-17.602 0-32-14.4-32-32v-384c0-17.6 14.398-32 32-32h64v448h-64zM1024 448c0 282.77-229.23 512-512 512s-512-229.23-512-512c0-61.412 10.83-120.29 30.656-174.848-19.478-33.206-30.656-71.87-30.656-113.152 0-112.846 83.448-206.188 192-221.716v443.418c-31.914-4.566-61.664-15.842-87.754-32.378-5.392 26.718-8.246 54.364-8.246 82.676 0 229.75 186.25 416 416 416s416-186.25 416-416c0-28.314-2.83-55.968-8.22-82.696-26.1 16.546-55.854 27.848-87.78 32.418v-443.44c108.548 15.532 192 108.874 192 221.714 0 41.274-11.178 79.934-30.648 113.138 19.828 54.566 30.648 113.452 30.648 174.866z" /> | ||
27 | <glyph unicode="" glyph-name="music" d="M960 960h64v-736c0-88.366-100.29-160-224-160s-224 71.634-224 160c0 88.368 100.29 160 224 160 62.684 0 119.342-18.4 160-48.040v368.040l-512-113.778v-494.222c0-88.366-100.288-160-224-160s-224 71.634-224 160c0 88.368 100.288 160 224 160 62.684 0 119.342-18.4 160-48.040v624.040l576 128z" /> | ||
28 | <glyph unicode="" glyph-name="play" d="M981.188 799.892c-143.632 20.65-302.332 32.108-469.186 32.108-166.86 0-325.556-11.458-469.194-32.108-27.53-107.726-42.808-226.75-42.808-351.892 0-125.14 15.278-244.166 42.808-351.89 143.638-20.652 302.336-32.11 469.194-32.11 166.854 0 325.552 11.458 469.186 32.11 27.532 107.724 42.812 226.75 42.812 351.89 0 125.142-15.28 244.166-42.812 351.892zM384.002 256v384l320-192-320-192z" /> | ||
29 | <glyph unicode="" glyph-name="film" d="M0 832v-768h1024v768h-1024zM192 128h-128v128h128v-128zM192 384h-128v128h128v-128zM192 640h-128v128h128v-128zM768 128h-512v640h512v-640zM960 128h-128v128h128v-128zM960 384h-128v128h128v-128zM960 640h-128v128h128v-128zM384 640v-384l256 192z" /> | ||
30 | <glyph unicode="" glyph-name="video-camera" d="M384 672c0 88.366 71.634 160 160 160s160-71.634 160-160c0-88.366-71.634-160-160-160s-160 71.634-160 160zM0 672c0 88.366 71.634 160 160 160s160-71.634 160-160c0-88.366-71.634-160-160-160s-160 71.634-160 160zM768 352v96c0 35.2-28.8 64-64 64h-640c-35.2 0-64-28.8-64-64v-320c0-35.2 28.8-64 64-64h640c35.2 0 64 28.8 64 64v96l256-160v448l-256-160zM640 192h-512v192h512v-192z" /> | ||
31 | <glyph unicode="" glyph-name="dice" d="M864 768h-512c-88 0-160-72-160-160v-512c0-88 72-160 160-160h512c88 0 160 72 160 160v512c0 88-72 160-160 160zM416 64c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM416 448c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM608 256c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM800 64c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM800 448c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM828.76 832c-14.93 72.804-79.71 128-156.76 128h-512c-88 0-160-72-160-160v-512c0-77.046 55.196-141.83 128-156.76v636.76c0 35.2 28.8 64 64 64h636.76z" /> | ||
32 | <glyph unicode="" glyph-name="pacman" d="M964.73 781.196c-93.902 109.45-233.21 178.804-388.73 178.804-282.77 0-512-229.23-512-512s229.23-512 512-512c155.52 0 294.828 69.356 388.728 178.804l-324.728 333.196 324.73 333.196zM704 839.398c39.432 0 71.398-31.964 71.398-71.398 0-39.432-31.966-71.398-71.398-71.398s-71.398 31.966-71.398 71.398c0 39.432 31.966 71.398 71.398 71.398z" /> | ||
33 | <glyph unicode="" glyph-name="spades" d="M817.57 611.85c-193.566 143.858-260.266 259.018-305.566 348.148v0c-0.004 0-0.004 0.002-0.004 0.002v-0.002c-45.296-89.13-112-204.292-305.566-348.148-330.036-245.286-19.376-587.668 253.758-399.224-17.796-116.93-78.53-202.172-140.208-238.882v-37.744h384.032v37.74c-61.682 36.708-122.41 121.954-140.212 238.884 273.136-188.446 583.8 153.94 253.766 399.226z" /> | ||
34 | <glyph unicode="" glyph-name="clubs" d="M786.832 567.228c-59.032 0-112.086-24.596-149.852-64.694-15.996-16.984-43.762-37.112-73.8-54.81 14.11 53.868 58.676 121.7 89.628 151.456 39.64 38.17 63.984 91.83 63.984 151.5 0.006 114.894-91.476 208.096-204.788 209.32-113.32-1.222-204.796-94.426-204.796-209.318 0-59.672 24.344-113.33 63.986-151.5 30.954-29.756 75.52-97.588 89.628-151.456-30.042 17.7-57.806 37.826-73.8 54.81-37.768 40.098-90.82 64.694-149.85 64.694-114.386 0-207.080-93.664-207.080-209.328 0-115.638 92.692-209.338 207.080-209.338 59.042 0 112.082 25.356 149.85 65.452 16.804 17.872 46.444 40.138 78.292 58.632-3.002-147.692-73.532-256.168-145.318-298.906v-37.742h384.014v37.74c-71.792 42.736-142.32 151.216-145.32 298.906 31.852-18.494 61.488-40.768 78.292-58.632 37.766-40.094 90.808-65.452 149.852-65.452 114.386 0 207.078 93.7 207.078 209.338-0.002 115.664-92.692 209.328-207.080 209.328z" /> | ||
35 | <glyph unicode="" glyph-name="diamonds" d="M512 960l-320-512 320-512 320 512z" /> | ||
36 | <glyph unicode="" glyph-name="bullhorn" d="M1024 530.744c0 200.926-58.792 363.938-131.482 365.226 0.292 0.006 0.578 0.030 0.872 0.030h-82.942c0 0-194.8-146.336-475.23-203.754-8.56-45.292-14.030-99.274-14.030-161.502s5.466-116.208 14.030-161.5c280.428-57.418 475.23-203.756 475.23-203.756h82.942c-0.292 0-0.578 0.024-0.872 0.032 72.696 1.288 131.482 164.298 131.482 365.224zM864.824 220.748c-9.382 0-19.532 9.742-24.746 15.548-12.63 14.064-24.792 35.96-35.188 63.328-23.256 61.232-36.066 143.31-36.066 231.124 0 87.81 12.81 169.89 36.066 231.122 10.394 27.368 22.562 49.266 35.188 63.328 5.214 5.812 15.364 15.552 24.746 15.552 9.38 0 19.536-9.744 24.744-15.552 12.634-14.064 24.796-35.958 35.188-63.328 23.258-61.23 36.068-143.312 36.068-231.122 0-87.804-12.81-169.888-36.068-231.124-10.39-27.368-22.562-49.264-35.188-63.328-5.208-5.806-15.36-15.548-24.744-15.548zM251.812 530.744c0 51.95 3.81 102.43 11.052 149.094-47.372-6.554-88.942-10.324-140.34-10.324-67.058 0-67.058 0-67.058 0l-55.466-94.686v-88.17l55.46-94.686c0 0 0 0 67.060 0 51.398 0 92.968-3.774 140.34-10.324-7.236 46.664-11.048 97.146-11.048 149.096zM368.15 317.828l-127.998 24.51 81.842-321.544c4.236-16.634 20.744-25.038 36.686-18.654l118.556 47.452c15.944 6.376 22.328 23.964 14.196 39.084l-123.282 229.152zM864.824 411.27c-3.618 0-7.528 3.754-9.538 5.992-4.87 5.42-9.556 13.86-13.562 24.408-8.962 23.6-13.9 55.234-13.9 89.078s4.938 65.478 13.9 89.078c4.006 10.548 8.696 18.988 13.562 24.408 2.010 2.24 5.92 5.994 9.538 5.994 3.616 0 7.53-3.756 9.538-5.994 4.87-5.42 9.556-13.858 13.56-24.408 8.964-23.598 13.902-55.234 13.902-89.078 0-33.842-4.938-65.478-13.902-89.078-4.004-10.548-8.696-18.988-13.56-24.408-2.008-2.238-5.92-5.992-9.538-5.992z" /> | ||
37 | <glyph unicode="" glyph-name="connection" horiz-adv-x="1280" d="M640 384c105.87 0 201.87-43.066 271.402-112.598l-90.468-90.468c-46.354 46.356-110.356 75.066-180.934 75.066s-134.578-28.71-180.934-75.066l-90.468 90.468c69.532 69.532 165.532 112.598 271.402 112.598zM187.452 452.548c120.88 120.88 281.598 187.452 452.548 187.452s331.668-66.572 452.55-187.452l-90.51-90.508c-96.706 96.704-225.28 149.96-362.040 149.96-136.762 0-265.334-53.256-362.038-149.962l-90.51 90.51zM988.784 825.562c106.702-45.132 202.516-109.728 284.782-191.996v0l-90.508-90.508c-145.056 145.056-337.92 224.942-543.058 224.942-205.14 0-398-79.886-543.058-224.942l-90.51 90.51c82.268 82.266 178.082 146.862 284.784 191.994 110.504 46.738 227.852 70.438 348.784 70.438s238.278-23.7 348.784-70.438zM576 64c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64z" /> | ||
38 | <glyph unicode="" glyph-name="podcast" d="M1024 448c0 282.77-229.23 512-512 512s-512-229.23-512-512c0-220.054 138.836-407.664 333.686-480.068l-13.686-31.932h384l-13.686 31.932c194.85 72.404 333.686 260.014 333.686 480.068zM486.79 325.174c-22.808 9.788-38.79 32.436-38.79 58.826 0 35.346 28.654 64 64 64s64-28.654 64-64c0-26.39-15.978-49.044-38.786-58.834l-25.214 58.834-25.21-58.826zM538.268 322.708c58.092 12.118 101.732 63.602 101.732 125.292 0 70.694-57.306 128-128 128-70.692 0-128-57.306-128-128 0-61.692 43.662-113.122 101.76-125.228l-74.624-174.122c-91.23 39.15-155.136 129.784-155.136 235.35 0 141.384 114.616 268 256 268s256-126.616 256-268c0-105.566-63.906-196.2-155.136-235.35l-74.596 174.058zM688.448-27.708l-73.924 172.486c126.446 42.738 217.476 162.346 217.476 303.222 0 176.73-143.268 320-320 320-176.73 0-320-143.27-320-320 0-140.876 91.030-260.484 217.476-303.222l-73.924-172.486c-159.594 68.488-271.386 227.034-271.386 411.708 0 247.332 200.502 459.834 447.834 459.834s447.834-212.502 447.834-459.834c0-184.674-111.792-343.22-271.386-411.708z" /> | ||
39 | <glyph unicode="" glyph-name="feed" d="M384 448c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM664.348 729.474c99.852-54.158 167.652-159.898 167.652-281.474s-67.8-227.316-167.652-281.474c44.066 70.126 71.652 170.27 71.652 281.474s-27.586 211.348-71.652 281.474zM288 448c0-111.204 27.584-211.348 71.652-281.474-99.852 54.16-167.652 159.898-167.652 281.474s67.8 227.314 167.652 281.474c-44.068-70.126-71.652-170.27-71.652-281.474zM96 448c0-171.9 54.404-326.184 140.652-431.722-142.302 90.948-236.652 250.314-236.652 431.722s94.35 340.774 236.652 431.722c-86.248-105.538-140.652-259.822-140.652-431.722zM787.352 879.72c142.298-90.946 236.648-250.312 236.648-431.72s-94.35-340.774-236.648-431.72c86.244 105.536 140.648 259.82 140.648 431.72s-54.404 326.184-140.648 431.72z" /> | ||
40 | <glyph unicode="" glyph-name="mic" d="M480 256c88.366 0 160 71.634 160 160v384c0 88.366-71.634 160-160 160s-160-71.634-160-160v-384c0-88.366 71.636-160 160-160zM704 512v-96c0-123.71-100.29-224-224-224-123.712 0-224 100.29-224 224v96h-64v-96c0-148.238 112.004-270.3 256-286.22v-129.78h-128v-64h320v64h-128v129.78c143.994 15.92 256 137.982 256 286.22v96h-64z" /> | ||
41 | <glyph unicode="" glyph-name="book" d="M896 832v-832h-672c-53.026 0-96 42.98-96 96s42.974 96 96 96h608v768h-640c-70.398 0-128-57.6-128-128v-768c0-70.4 57.602-128 128-128h768v896h-64zM224.056 128v0c-0.018-0.002-0.038 0-0.056 0-17.672 0-32-14.326-32-32s14.328-32 32-32c0.018 0 0.038 0.002 0.056 0.002v-0.002h607.89v64h-607.89z" /> | ||
42 | <glyph unicode="" glyph-name="books" horiz-adv-x="1152" d="M224 832h-192c-17.6 0-32-14.4-32-32v-704c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v704c0 17.6-14.4 32-32 32zM192 640h-128v64h128v-64zM544 832h-192c-17.6 0-32-14.4-32-32v-704c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v704c0 17.6-14.4 32-32 32zM512 640h-128v64h128v-64zM765.088 782.52l-171.464-86.394c-15.716-7.918-22.096-27.258-14.178-42.976l287.978-571.548c7.918-15.718 27.258-22.098 42.976-14.178l171.464 86.392c15.716 7.92 22.096 27.26 14.178 42.974l-287.978 571.55c-7.92 15.718-27.26 22.1-42.976 14.18zM928 96c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32z" /> | ||
43 | <glyph unicode="" glyph-name="library" horiz-adv-x="1088" d="M1024 0v64h-64v384h64v64h-192v-64h64v-384h-192v384h64v64h-192v-64h64v-384h-192v384h64v64h-192v-64h64v-384h-192v384h64v64h-192v-64h64v-384h-64v-64h-64v-64h1088v64h-64zM512 960h64l512-320v-64h-1088v64l512 320z" /> | ||
44 | <glyph unicode="" glyph-name="file-text" d="M864 960h-768c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h768c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM832 64h-704v768h704v-768zM256 512h448v-64h-448zM256 384h448v-64h-448zM256 256h448v-64h-448zM256 640h448v-64h-448z" /> | ||
45 | <glyph unicode="" glyph-name="profile" d="M864 960h-768c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h768c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM832 64h-704v768h704v-768zM256 384h448v-64h-448zM256 256h448v-64h-448zM320 672c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM480 576h-128c-52.8 0-96-28.8-96-64v-64h320v64c0 35.2-43.2 64-96 64z" /> | ||
46 | <glyph unicode="" glyph-name="file-empty" d="M917.806 730.924c-22.212 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.888-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.984-17.78 50.678-41.878 81.374-72.572zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.326-32 32-32h224v-624z" /> | ||
47 | <glyph unicode="" glyph-name="files-empty" d="M917.806 602.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-368c-44.114 0-80-35.888-80-80v-736c0-44.112 35.886-80 80-80h608c44.112 0 80 35.888 80 80v496c0 14.332-4.372 39.35-42.194 90.924zM785.374 657.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-608c-8.672 0-16 7.328-16 16v736c0 8.672 7.328 16 16 16 0 0 367.956 0.002 368 0v-224c0-17.672 14.324-32 32-32h224v-496zM602.924 917.804c-51.574 37.822-76.592 42.196-90.924 42.196h-368c-44.112 0-80-35.888-80-80v-736c0-38.632 27.528-70.958 64-78.39v814.39c0 8.672 7.328 16 16 16h486.876c-9.646 7.92-19.028 15.26-27.952 21.804z" /> | ||
48 | <glyph unicode="" glyph-name="file-text2" d="M917.806 730.924c-22.212 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.888-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.984-17.78 50.678-41.878 81.374-72.572zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.326-32 32-32h224v-624zM736 128h-448c-17.672 0-32 14.326-32 32s14.328 32 32 32h448c17.674 0 32-14.326 32-32s-14.326-32-32-32zM736 256h-448c-17.672 0-32 14.326-32 32s14.328 32 32 32h448c17.674 0 32-14.326 32-32s-14.326-32-32-32zM736 384h-448c-17.672 0-32 14.326-32 32s14.328 32 32 32h448c17.674 0 32-14.326 32-32s-14.326-32-32-32z" /> | ||
49 | <glyph unicode="" glyph-name="file-picture" d="M832 64h-640v128l192 320 263-320 185 128v-256zM832 480c0-53.020-42.98-96-96-96-53.022 0-96 42.98-96 96s42.978 96 96 96c53.020 0 96-42.98 96-96zM917.806 730.924c-22.212 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.888-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.984-17.78 50.678-41.878 81.374-72.572zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.326-32 32-32h224v-624z" /> | ||
50 | <glyph unicode="" glyph-name="file-music" d="M917.806 730.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.886-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.324-32 32-32h224v-624zM756.288 568.748c-7.414 6.080-17.164 8.514-26.562 6.632l-320-64c-14.958-2.994-25.726-16.126-25.726-31.38v-236.876c-18.832 8.174-40.678 12.876-64 12.876-70.692 0-128-42.98-128-96s57.308-96 128-96 128 42.98 128 96v229.766l256 51.202v-133.842c-18.832 8.174-40.678 12.876-64 12.876-70.692 0-128-42.98-128-96s57.308-96 128-96 128 42.98 128 96v319.998c0 9.586-4.298 18.668-11.712 24.748z" /> | ||
51 | <glyph unicode="" glyph-name="file-play" d="M384 576l320-224-320-224v448zM917.806 730.924c-22.212 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.888-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.984-17.78 50.678-41.878 81.374-72.572zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.326-32 32-32h224v-624z" /> | ||
52 | <glyph unicode="" glyph-name="file-video" d="M917.806 730.924c-22.208 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.594 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.882-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0 0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.98-17.78 50.678-41.878 81.374-72.572v0 0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.32-32 32-32h224v-624zM256 448h320v-320h-320v320zM576 320l192 128v-320l-192 128z" /> | ||
53 | <glyph unicode="" glyph-name="file-zip" d="M917.806 730.924c-22.208 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.884-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0 0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.98-17.78 50.678-41.878 81.374-72.572v0 0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.322-32 32-32h224v-624zM256 896h128v-64h-128v64zM384 832h128v-64h-128v64zM256 768h128v-64h-128v64zM384 704h128v-64h-128v64zM256 640h128v-64h-128v64zM384 576h128v-64h-128v64zM256 512h128v-64h-128v64zM384 448h128v-64h-128v64zM256 112c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-80v64h-128v-272zM448 192v-64h-128v64h128z" /> | ||
54 | <glyph unicode="" glyph-name="copy" d="M640 704v256h-448l-192-192v-576h384v-256h640v768h-384zM192 869.49v-101.49h-101.49l101.49 101.49zM64 256v448h192v192h320v-192l-192-192v-256h-320zM576 613.49v-101.49h-101.49l101.49 101.49zM960 0h-512v448h192v192h320v-640z" /> | ||
55 | <glyph unicode="" glyph-name="paste" d="M704 832h-128v64c0 35.2-28.8 64-64 64h-128c-35.204 0-64-28.8-64-64v-64h-128v-128h512v128zM512 832h-128v63.886c0.034 0.038 0.072 0.078 0.114 0.114h127.768c0.042-0.036 0.082-0.076 0.118-0.114v-63.886zM832 640v160c0 17.6-14.4 32-32 32h-64v-64h32v-128h-192l-192-192v-256h-256v576h32v64h-64c-17.602 0-32-14.4-32-32v-640c0-17.6 14.398-32 32-32h288v-192h640v704h-192zM576 549.49v-101.49h-101.49l101.49 101.49zM960 0h-512v384h192v192h320v-576z" /> | ||
56 | <glyph unicode="" glyph-name="stack" d="M1024 640l-512 256-512-256 512-256 512 256zM512 811.030l342.058-171.030-342.058-171.030-342.058 171.030 342.058 171.030zM921.444 499.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722zM921.444 307.278l102.556-51.278-512-256-512 256 102.556 51.278 409.444-204.722z" /> | ||
57 | <glyph unicode="" glyph-name="folder" d="M448 832l128-128h448v-704h-1024v832z" /> | ||
58 | <glyph unicode="" glyph-name="folder-open" d="M832 0l192 512h-832l-192-512zM128 576l-128-576v832h288l128-128h416v-128z" /> | ||
59 | <glyph unicode="" glyph-name="folder-plus" d="M576 704l-128 128h-448v-832h1024v704h-448zM704 256h-128v-128h-128v128h-128v128h128v128h128v-128h128v-128z" /> | ||
60 | <glyph unicode="" glyph-name="folder-minus" d="M576 704l-128 128h-448v-832h1024v704h-448zM704 256h-384v128h384v-128z" /> | ||
61 | <glyph unicode="" glyph-name="folder-download" d="M576 704l-128 128h-448v-832h1024v704h-448zM512 96l-224 224h160v256h128v-256h160l-224-224z" /> | ||
62 | <glyph unicode="" glyph-name="folder-upload" d="M576 704l-128 128h-448v-832h1024v704h-448zM512 480l224-224h-160v-256h-128v256h-160l224 224z" /> | ||
63 | <glyph unicode="" glyph-name="price-tag" d="M976 960h-384c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l476.118 476.118c18.666 18.666 33.94 55.54 33.94 81.94v384c0 26.4-21.6 48-48 48zM736 576c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96z" /> | ||
64 | <glyph unicode="" glyph-name="price-tags" horiz-adv-x="1280" d="M1232 960h-384c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l476.118 476.118c18.666 18.666 33.94 55.54 33.94 81.94v384c0 26.4-21.6 48-48 48zM992 576c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM128 416l544 544h-80c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l30.058 30.058-416 416z" /> | ||
65 | <glyph unicode="" glyph-name="barcode" d="M0 832h128v-640h-128zM192 832h64v-640h-64zM320 832h64v-640h-64zM512 832h64v-640h-64zM768 832h64v-640h-64zM960 832h64v-640h-64zM640 832h32v-640h-32zM448 832h32v-640h-32zM864 832h32v-640h-32zM0 128h64v-64h-64zM192 128h64v-64h-64zM320 128h64v-64h-64zM640 128h64v-64h-64zM960 128h64v-64h-64zM768 128h128v-64h-128zM448 128h128v-64h-128z" /> | ||
66 | <glyph unicode="" glyph-name="qrcode" d="M320 896h-256v-256h256v256zM384 960v0-384h-384v384h384zM128 832h128v-128h-128zM960 896h-256v-256h256v256zM1024 960v0-384h-384v384h384zM768 832h128v-128h-128zM320 256h-256v-256h256v256zM384 320v0-384h-384v384h384zM128 192h128v-128h-128zM448 960h64v-64h-64zM512 896h64v-64h-64zM448 832h64v-64h-64zM512 768h64v-64h-64zM448 704h64v-64h-64zM512 640h64v-64h-64zM448 576h64v-64h-64zM448 448h64v-64h-64zM512 384h64v-64h-64zM448 320h64v-64h-64zM512 256h64v-64h-64zM448 192h64v-64h-64zM512 128h64v-64h-64zM448 64h64v-64h-64zM512 0h64v-64h-64zM960 448h64v-64h-64zM64 448h64v-64h-64zM128 512h64v-64h-64zM0 512h64v-64h-64zM256 512h64v-64h-64zM320 448h64v-64h-64zM384 512h64v-64h-64zM576 448h64v-64h-64zM640 512h64v-64h-64zM704 448h64v-64h-64zM768 512h64v-64h-64zM832 448h64v-64h-64zM896 512h64v-64h-64zM960 320h64v-64h-64zM576 320h64v-64h-64zM640 384h64v-64h-64zM704 320h64v-64h-64zM832 320h64v-64h-64zM896 384h64v-64h-64zM960 192h64v-64h-64zM576 192h64v-64h-64zM640 256h64v-64h-64zM768 256h64v-64h-64zM832 192h64v-64h-64zM896 256h64v-64h-64zM960 64h64v-64h-64zM640 128h64v-64h-64zM704 64h64v-64h-64zM768 128h64v-64h-64zM832 64h64v-64h-64zM640 0h64v-64h-64zM768 0h64v-64h-64zM896 0h64v-64h-64z" /> | ||
67 | <glyph unicode="" glyph-name="ticket" d="M575.996 640l127.998-127.998-255.994-255.994-127.998 127.998zM1001.526 662.496l-73.516 73.516-32.008-32.008c-16.378-16.38-39.010-26.51-64-26.51-49.988 0-90.514 40.522-90.514 90.51 0 25.002 10.14 47.638 26.534 64.018l31.988 31.986-73.518 73.516c-29.968 29.968-79.008 29.968-108.976 0l-595.040-595.038c-29.966-29.968-29.966-79.010 0-108.976l73.52-73.518 31.962 31.964c16.382 16.406 39.030 26.552 64.044 26.552 49.988 0 90.51-40.524 90.51-90.51 0-25.006-10.14-47.64-26.534-64.022l-31.984-31.986 73.516-73.518c29.966-29.966 79.008-29.966 108.976 0l595.040 595.040c29.964 29.976 29.964 79.016 0 108.984zM448.002 128.004l-256 256 384 384 256-256-384-384z" /> | ||
68 | <glyph unicode="" glyph-name="cart" d="M384 32c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM1024 32c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM1024 448v384h-768c0 35.346-28.654 64-64 64h-192v-64h128l48.074-412.054c-29.294-23.458-48.074-59.5-48.074-99.946 0-70.696 57.308-128 128-128h768v64h-768c-35.346 0-64 28.654-64 64 0 0.218 0.014 0.436 0.016 0.656l831.984 127.344z" /> | ||
69 | <glyph unicode="" glyph-name="coin-dollar" d="M480 896c-265.096 0-480-214.904-480-480 0-265.098 214.904-480 480-480 265.098 0 480 214.902 480 480 0 265.096-214.902 480-480 480zM480 32c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384zM512 448v128h128v64h-128v64h-64v-64h-128v-256h128v-128h-128v-64h128v-64h64v64h128.002l-0.002 256h-128zM448 448h-64v128h64v-128zM576.002 256h-64.002v128h64.002v-128z" /> | ||
70 | <glyph unicode="" glyph-name="coin-euro" d="M480 896c-265.096 0-480-214.904-480-480s214.904-480 480-480c265.098 0 480 214.902 480 480s-214.902 480-480 480zM480 32c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.076 0 384-171.922 384-384s-171.924-384-384-384zM670.824 315.66c-15.27 8.884-34.862 3.708-43.75-11.57-17.256-29.662-49.088-48.090-83.074-48.090h-128c-41.716 0-77.286 26.754-90.496 64h154.496c17.672 0 32 14.326 32 32s-14.328 32-32 32h-160v64h160c17.672 0 32 14.328 32 32s-14.328 32-32 32h-154.496c13.21 37.246 48.78 64 90.496 64h128c33.986 0 65.818-18.426 83.074-48.090 8.888-15.276 28.478-20.456 43.752-11.568 15.276 8.888 20.456 28.476 11.568 43.752-28.672 49.288-81.702 79.906-138.394 79.906h-128c-77.268 0-141.914-55.056-156.78-128h-35.22c-17.672 0-32-14.328-32-32s14.328-32 32-32h32v-64h-32c-17.672 0-32-14.326-32-32s14.328-32 32-32h35.22c14.866-72.944 79.512-128 156.78-128h128c56.692 0 109.72 30.62 138.394 79.91 8.888 15.276 3.708 34.864-11.57 43.75z" /> | ||
71 | <glyph unicode="" glyph-name="coin-pound" d="M480 896c-265.096 0-480-214.904-480-480s214.904-480 480-480c265.098 0 480 214.902 480 480s-214.902 480-480 480zM480 32c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.074 0 384-171.922 384-384s-171.926-384-384-384zM608 256h-224v128h96c17.672 0 32 14.326 32 32s-14.328 32-32 32h-96v32c0 52.934 43.066 96 96 96 34.17 0 66.042-18.404 83.18-48.030 8.85-15.298 28.426-20.526 43.722-11.676 15.296 8.848 20.526 28.424 11.676 43.722-28.538 49.336-81.638 79.984-138.578 79.984-88.224 0-160-71.776-160-160v-32h-32c-17.672 0-32-14.326-32-32s14.328-32 32-32h32v-192h288c17.674 0 32 14.326 32 32s-14.326 32-32 32z" /> | ||
72 | <glyph unicode="" glyph-name="coin-yen" d="M480 896c-265.096 0-480-214.904-480-480s214.904-480 480-480c265.098 0 480 214.902 480 480s-214.902 480-480 480zM480 32c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.076 0 384-171.922 384-384s-171.924-384-384-384zM608 384c17.674 0 32 14.326 32 32s-14.326 32-32 32h-68.208l94.832 142.25c9.804 14.704 5.83 34.572-8.876 44.376-14.704 9.802-34.572 5.83-44.376-8.876l-101.372-152.062-101.374 152.062c-9.804 14.706-29.672 18.68-44.376 8.876-14.706-9.804-18.678-29.672-8.876-44.376l94.834-142.25h-68.208c-17.672 0-32-14.326-32-32s14.328-32 32-32h96v-64h-96c-17.672 0-32-14.326-32-32s14.328-32 32-32h96v-96c0-17.674 14.328-32 32-32s32 14.326 32 32v96h96c17.674 0 32 14.326 32 32s-14.326 32-32 32h-96v64h96z" /> | ||
73 | <glyph unicode="" glyph-name="credit-card" d="M928 832h-832c-52.8 0-96-43.2-96-96v-576c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v576c0 52.8-43.2 96-96 96zM96 768h832c17.346 0 32-14.654 32-32v-96h-896v96c0 17.346 14.654 32 32 32zM928 128h-832c-17.346 0-32 14.654-32 32v288h896v-288c0-17.346-14.654-32-32-32zM128 320h64v-128h-64zM256 320h64v-128h-64zM384 320h64v-128h-64z" /> | ||
74 | <glyph unicode="" glyph-name="calculator" d="M384 896h-320c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h320c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM384 640h-320v64h320v-64zM896 896h-320c-35.204 0-64-28.8-64-64v-832c0-35.2 28.796-64 64-64h320c35.2 0 64 28.8 64 64v832c0 35.2-28.8 64-64 64zM896 320h-320v64h320v-64zM896 512h-320v64h320v-64zM384 384h-320c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h320c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM384 128h-128v-128h-64v128h-128v64h128v128h64v-128h128v-64z" /> | ||
75 | <glyph unicode="" glyph-name="lifebuoy" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM320 448c0 106.040 85.96 192 192 192s192-85.96 192-192-85.96-192-192-192-192 85.96-192 192zM925.98 276.524v0l-177.42 73.49c12.518 30.184 19.44 63.276 19.44 97.986s-6.922 67.802-19.44 97.986l177.42 73.49c21.908-52.822 34.020-110.73 34.020-171.476s-12.114-118.654-34.020-171.476v0zM683.478 861.98v0 0l-73.49-177.42c-30.184 12.518-63.276 19.44-97.988 19.44s-67.802-6.922-97.986-19.44l-73.49 177.422c52.822 21.904 110.732 34.018 171.476 34.018 60.746 0 118.654-12.114 171.478-34.020zM98.020 619.476l177.422-73.49c-12.518-30.184-19.442-63.276-19.442-97.986s6.922-67.802 19.44-97.986l-177.42-73.49c-21.906 52.822-34.020 110.73-34.020 171.476s12.114 118.654 34.020 171.476zM340.524 34.020l73.49 177.42c30.184-12.518 63.276-19.44 97.986-19.44s67.802 6.922 97.986 19.44l73.49-177.42c-52.822-21.904-110.73-34.020-171.476-34.020-60.744 0-118.654 12.114-171.476 34.020z" /> | ||
76 | <glyph unicode="" glyph-name="phone" d="M704 320c-64-64-64-128-128-128s-128 64-192 128-128 128-128 192 64 64 128 128-128 256-192 256-192-192-192-192c0-128 131.5-387.5 256-512s384-256 512-256c0 0 192 128 192 192s-192 256-256 192z" /> | ||
77 | <glyph unicode="" glyph-name="phone-hang-up" d="M1017.378 384.006c8.004-55.482 13.216-131.392-11.664-160.446-41.142-48.044-301.712-48.044-301.712 48.042 0 48.398 42.856 80.134 1.712 128.178-40.472 47.262-113.026 48.030-193.714 48.042-80.686-0.012-153.242-0.78-193.714-48.042-41.142-48.046 1.714-79.78 1.714-128.178 0-96.086-260.57-96.086-301.714-48.044-24.878 29.054-19.668 104.964-11.662 160.446 6.16 37.038 21.724 76.996 71.548 127.994 0 0.002 0.002 0.002 0.002 0.004 74.738 69.742 187.846 126.738 429.826 127.968v0.030c1.344 0 2.664-0.010 4-0.014 1.338 0.004 2.656 0.014 4 0.014v-0.028c241.98-1.23 355.088-58.226 429.826-127.968 0.002-0.002 0.002-0.004 0.002-0.004 49.824-50.996 65.39-90.954 71.55-127.994z" /> | ||
78 | <glyph unicode="" glyph-name="address-book" d="M192 960v-1024h768v1024h-768zM576 703.67c70.51 0 127.67-57.16 127.67-127.67s-57.16-127.67-127.67-127.67-127.67 57.16-127.67 127.67 57.16 127.67 127.67 127.67v0zM768 192h-384v64c0 70.696 57.306 128 128 128v0h128c70.696 0 128-57.304 128-128v-64zM64 896h96v-192h-96v192zM64 640h96v-192h-96v192zM64 384h96v-192h-96v192zM64 128h96v-192h-96v192z" /> | ||
79 | <glyph unicode="" glyph-name="envelop" d="M928 832h-832c-52.8 0-96-43.2-96-96v-640c0-52.8 43.2-96 96-96h832c52.8 0 96 43.2 96 96v640c0 52.8-43.2 96-96 96zM398.74 409.628l-270.74-210.892v501.642l270.74-290.75zM176.38 704h671.24l-335.62-252-335.62 252zM409.288 398.302l102.712-110.302 102.71 110.302 210.554-270.302h-626.528l210.552 270.302zM625.26 409.628l270.74 290.75v-501.642l-270.74 210.892z" /> | ||
80 | <glyph unicode="" glyph-name="pushpin" d="M544 960l-96-96 96-96-224-256h-224l176-176-272-360.616v-39.384h39.384l360.616 272 176-176v224l256 224 96-96 96 96-480 480zM448 416l-64 64 224 224 64-64-224-224z" /> | ||
81 | <glyph unicode="" glyph-name="location" d="M512 960c-176.732 0-320-143.268-320-320 0-320 320-704 320-704s320 384 320 704c0 176.732-143.27 320-320 320zM512 448c-106.040 0-192 85.96-192 192s85.96 192 192 192 192-85.96 192-192-85.96-192-192-192z" /> | ||
82 | <glyph unicode="" glyph-name="location2" d="M512 960c-176.732 0-320-143.268-320-320 0-320 320-704 320-704s320 384 320 704c0 176.732-143.27 320-320 320zM512 444c-108.248 0-196 87.752-196 196s87.752 196 196 196 196-87.752 196-196-87.752-196-196-196zM388 640c0 68.483 55.517 124 124 124s124-55.517 124-124c0-68.483-55.517-124-124-124s-124 55.517-124 124z" /> | ||
83 | <glyph unicode="" glyph-name="compass" d="M544.010-64.004c-2.296 0-4.622 0.25-6.94 0.764-14.648 3.25-25.070 16.238-25.070 31.24v480h-480c-15.002 0-27.992 10.422-31.24 25.070-3.25 14.646 4.114 29.584 17.708 35.928l960 448c12.196 5.688 26.644 3.144 36.16-6.372 9.516-9.514 12.060-23.966 6.372-36.16l-448-960c-5.342-11.44-16.772-18.47-28.99-18.47zM176.242 512h367.758c17.674 0 32-14.328 32-32v-367.758l349.79 749.546-749.548-349.788z" /> | ||
84 | <glyph unicode="" glyph-name="compass2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM96 448c0 229.75 186.25 416 416 416 109.574 0 209.232-42.386 283.534-111.628l-411.534-176.372-176.372-411.534c-69.242 74.302-111.628 173.96-111.628 283.534zM585.166 374.834l-256.082-109.75 109.75 256.082 146.332-146.332zM512 32c-109.574 0-209.234 42.386-283.532 111.628l411.532 176.372 176.372 411.532c69.242-74.298 111.628-173.958 111.628-283.532 0-229.75-186.25-416-416-416z" /> | ||
85 | <glyph unicode="" glyph-name="map" d="M0 768l320 128v-768l-320-128zM384 928l320-192v-736l-320 160zM768 736l256 192v-768l-256-192z" /> | ||
86 | <glyph unicode="" glyph-name="map2" d="M672 768l-320 128-352-128v-768l352 128 320-128 352 128v768l-352-128zM384 814.27l256-102.4v-630.138l-256 102.398v630.14zM64 723.172l256 93.090v-631.8l-256-93.088v631.798zM960 172.828l-256-93.092v631.8l256 93.090v-631.798z" /> | ||
87 | <glyph unicode="" glyph-name="history" horiz-adv-x="1088" d="M640 896c247.424 0 448-200.576 448-448s-200.576-448-448-448v96c94.024 0 182.418 36.614 248.902 103.098s103.098 154.878 103.098 248.902c0 94.022-36.614 182.418-103.098 248.902s-154.878 103.098-248.902 103.098c-94.022 0-182.418-36.614-248.902-103.098-51.14-51.138-84.582-115.246-97.306-184.902h186.208l-224-256-224 256h164.57c31.060 217.102 217.738 384 443.43 384zM832 512v-128h-256v320h128v-192z" /> | ||
88 | <glyph unicode="" glyph-name="clock" d="M658.744 210.744l-210.744 210.746v282.51h128v-229.49l173.256-173.254zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384z" /> | ||
89 | <glyph unicode="" glyph-name="clock2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM658.744 210.744l-210.744 210.746v282.51h128v-229.49l173.256-173.254-90.512-90.512z" /> | ||
90 | <glyph unicode="" glyph-name="alarm" d="M512 832c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448-200.576 448-448 448zM512 24c-198.824 0-360 161.178-360 360 0 198.824 161.176 360 360 360 198.822 0 360-161.176 360-360 0-198.822-161.178-360-360-360zM934.784 672.826c16.042 28.052 25.216 60.542 25.216 95.174 0 106.040-85.96 192-192 192-61.818 0-116.802-29.222-151.92-74.596 131.884-27.236 245.206-105.198 318.704-212.578v0zM407.92 885.404c-35.116 45.374-90.102 74.596-151.92 74.596-106.040 0-192-85.96-192-192 0-34.632 9.174-67.122 25.216-95.174 73.5 107.38 186.822 185.342 318.704 212.578zM512 384v256h-64v-320h256v64z" /> | ||
91 | <glyph unicode="" glyph-name="bell" d="M1025.5 160c0 288-256 224-256 448 0 18.56-1.788 34.42-5.048 47.928-16.83 113.018-92.156 203.72-189.772 231.36 0.866 3.948 1.32 8.032 1.32 12.21 0 33.278-28.8 60.502-64 60.502s-64-27.224-64-60.5c0-4.18 0.456-8.264 1.32-12.21-109.47-30.998-190.914-141.298-193.254-273.442-0.040-1.92-0.066-3.864-0.066-5.846 0-224.002-256-160.002-256-448.002 0-76.226 170.59-139.996 398.97-156.080 21.524-40.404 64.056-67.92 113.030-67.92s91.508 27.516 113.030 67.92c228.38 16.084 398.97 79.854 398.97 156.080 0 0.228-0.026 0.456-0.028 0.682l1.528-0.682zM826.246 105.904c-54.23-14.47-118.158-24.876-186.768-30.648-5.704 65.418-60.582 116.744-127.478 116.744s-121.774-51.326-127.478-116.744c-68.608 5.772-132.538 16.178-186.768 30.648-74.63 19.914-110.31 42.19-123.368 54.096 13.058 11.906 48.738 34.182 123.368 54.096 86.772 23.152 198.372 35.904 314.246 35.904s227.474-12.752 314.246-35.904c74.63-19.914 110.31-42.19 123.368-54.096-13.058-11.906-48.738-34.182-123.368-54.096z" /> | ||
92 | <glyph unicode="" glyph-name="stopwatch" d="M512.002 766.788v65.212h128v64c0 35.346-28.654 64-64.002 64h-191.998c-35.346 0-64-28.654-64-64v-64h128v-65.212c-214.798-16.338-384-195.802-384-414.788 0-229.75 186.25-416 416-416s416 186.25 416 416c0 218.984-169.202 398.448-384 414.788zM706.276 125.726c-60.442-60.44-140.798-93.726-226.274-93.726s-165.834 33.286-226.274 93.726c-60.44 60.44-93.726 140.8-93.726 226.274s33.286 165.834 93.726 226.274c58.040 58.038 134.448 91.018 216.114 93.548l-21.678-314.020c-1.86-26.29 12.464-37.802 31.836-37.802s33.698 11.512 31.836 37.802l-21.676 314.022c81.666-2.532 158.076-35.512 216.116-93.55 60.44-60.44 93.726-140.8 93.726-226.274s-33.286-165.834-93.726-226.274z" /> | ||
93 | <glyph unicode="" glyph-name="calendar" d="M320 576h128v-128h-128zM512 576h128v-128h-128zM704 576h128v-128h-128zM128 192h128v-128h-128zM320 192h128v-128h-128zM512 192h128v-128h-128zM320 384h128v-128h-128zM512 384h128v-128h-128zM704 384h128v-128h-128zM128 384h128v-128h-128zM832 960v-64h-128v64h-448v-64h-128v64h-128v-1024h960v1024h-128zM896 0h-832v704h832v-704z" /> | ||
94 | <glyph unicode="" glyph-name="printer" d="M256 896h512v-128h-512v128zM960 704h-896c-35.2 0-64-28.8-64-64v-320c0-35.2 28.794-64 64-64h192v-256h512v256h192c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM128 512c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.652-64-64-64zM704 64h-384v320h384v-320z" /> | ||
95 | <glyph unicode="" glyph-name="keyboard" horiz-adv-x="1152" d="M1088 832h-1024c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h1024c35.2 0 64 28.8 64 64v640c0 35.2-28.8 64-64 64zM640 704h128v-128h-128v128zM832 512v-128h-128v128h128zM448 704h128v-128h-128v128zM640 512v-128h-128v128h128zM256 704h128v-128h-128v128zM448 512v-128h-128v128h128zM128 704h64v-128h-64v128zM128 512h128v-128h-128v128zM192 192h-64v128h64v-128zM768 192h-512v128h512v-128zM1024 192h-192v128h192v-128zM1024 384h-128v128h128v-128zM1024 576h-192v128h192v-128z" /> | ||
96 | <glyph unicode="" glyph-name="display" d="M0 896v-640h1024v640h-1024zM960 320h-896v512h896v-512zM672 192h-320l-32-128-64-64h512l-64 64z" /> | ||
97 | <glyph unicode="" glyph-name="laptop" d="M896 256v512c0 35.2-28.8 64-64 64h-640c-35.2 0-64-28.8-64-64v-512h-128v-192h1024v192h-128zM640 128h-256v64h256v-64zM832 256h-640v511.886c0.034 0.040 0.076 0.082 0.114 0.114h639.77c0.040-0.034 0.082-0.076 0.116-0.116v-511.884z" /> | ||
98 | <glyph unicode="" glyph-name="mobile" d="M736 960h-448c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h448c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM384 912h256v-32h-256v32zM512 0c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zM768 192h-512v640h512v-640z" /> | ||
99 | <glyph unicode="" glyph-name="mobile2" d="M768 960h-576c-35.2 0-64-28.798-64-64v-896c0-35.2 28.798-64 64-64h576c35.2 0 64 28.8 64 64v896c0 35.202-28.8 64-64 64zM480-17.782c-27.492 0-49.782 22.29-49.782 49.782s22.29 49.782 49.782 49.782 49.782-22.29 49.782-49.782-22.29-49.782-49.782-49.782zM768 128h-576v704h576v-704z" /> | ||
100 | <glyph unicode="" glyph-name="tablet" d="M800 960h-640c-52.8 0-96-43.2-96-96v-832c0-52.8 43.2-96 96-96h640c52.8 0 96 43.2 96 96v832c0 52.8-43.2 96-96 96zM480-32c-17.672 0-32 14.326-32 32s14.328 32 32 32 32-14.326 32-32-14.328-32-32-32zM768 64h-576v768h576v-768z" /> | ||
101 | <glyph unicode="" glyph-name="tv" d="M981.188 671.892c-88.808 12.768-183.382 22.016-282.076 27.22l164.888 164.888-64 64-224.558-224.556c-21.006 0.368-42.156 0.556-63.442 0.556v0l-256 256-64-64 194.196-194.196c-120.922-4.242-236.338-14.524-343.386-29.912-27.532-107.726-42.81-226.752-42.81-351.892s15.278-244.166 42.804-351.89c143.642-20.652 302.34-32.11 469.196-32.11s325.55 11.458 469.188 32.11c27.534 107.724 42.812 226.75 42.812 351.89s-15.278 244.166-42.812 351.892zM863.892 85.406c-107.73-13.766-226.75-21.406-351.892-21.406s-244.166 7.64-351.892 21.406c-20.648 71.816-32.108 151.166-32.108 234.594 0 83.43 11.458 162.78 32.108 234.596 107.726 13.766 226.75 21.404 351.892 21.404 125.136 0 244.162-7.638 351.886-21.404 20.656-71.816 32.114-151.166 32.114-234.596 0-83.428-11.458-162.778-32.108-234.594z" /> | ||
102 | <glyph unicode="" glyph-name="drawer" d="M1016.988 307.99l-256 320c-6.074 7.592-15.266 12.010-24.988 12.010h-448c-9.72 0-18.916-4.418-24.988-12.010l-256-320c-4.538-5.674-7.012-12.724-7.012-19.99v-288c0-35.346 28.654-64 64-64h896c35.348 0 64 28.654 64 64v288c0 7.266-2.472 14.316-7.012 19.99zM960 256h-224l-128-128h-192l-128 128h-224v20.776l239.38 299.224h417.24l239.38-299.224v-20.776zM736 448h-448c-17.672 0-32 14.328-32 32s14.328 32 32 32h448c17.674 0 32-14.328 32-32s-14.326-32-32-32zM800 320h-576c-17.672 0-32 14.326-32 32s14.328 32 32 32h576c17.674 0 32-14.326 32-32s-14.326-32-32-32z" /> | ||
103 | <glyph unicode="" glyph-name="drawer2" d="M1016.988 307.99l-256 320c-6.074 7.592-15.266 12.010-24.988 12.010h-448c-9.72 0-18.916-4.418-24.988-12.010l-256-320c-4.538-5.674-7.012-12.724-7.012-19.99v-288c0-35.346 28.654-64 64-64h896c35.348 0 64 28.654 64 64v288c0 7.266-2.472 14.316-7.012 19.99zM960 256h-224l-128-128h-192l-128 128h-224v20.776l239.38 299.224h417.24l239.38-299.224v-20.776z" /> | ||
104 | <glyph unicode="" glyph-name="box-add" d="M832 896h-640l-192-192v-672c0-17.674 14.326-32 32-32h960c17.672 0 32 14.326 32 32v672l-192 192zM512 128l-320 256h192v192h256v-192h192l-320-256zM154.51 768l64 64h586.978l64-64h-714.978z" /> | ||
105 | <glyph unicode="" glyph-name="box-remove" d="M832 896h-640l-192-192v-672c0-17.674 14.326-32 32-32h960c17.672 0 32 14.326 32 32v672l-192 192zM640 320v-192h-256v192h-192l320 256 320-256h-192zM154.51 768l64 64h586.976l64-64h-714.976z" /> | ||
106 | <glyph unicode="" glyph-name="download" d="M512 384l256 256h-192v256h-128v-256h-192zM744.726 488.728l-71.74-71.742 260.080-96.986-421.066-157.018-421.066 157.018 260.080 96.986-71.742 71.742-279.272-104.728v-256l512-192 512 192v256z" /> | ||
107 | <glyph unicode="" glyph-name="upload" d="M448 384h128v256h192l-256 256-256-256h192zM640 528v-98.712l293.066-109.288-421.066-157.018-421.066 157.018 293.066 109.288v98.712l-384-144v-256l512-192 512 192v256z" /> | ||
108 | <glyph unicode="" glyph-name="floppy-disk" d="M896 960h-896v-1024h1024v896l-128 128zM512 832h128v-256h-128v256zM896 64h-768v768h64v-320h576v320h74.978l53.022-53.018v-714.982z" /> | ||
109 | <glyph unicode="" glyph-name="drive" d="M192 64h640c106.038 0 192 85.96 192 192h-1024c0-106.040 85.962-192 192-192zM832 192h64v-64h-64v64zM960 832h-896l-64-512h1024z" /> | ||
110 | <glyph unicode="" glyph-name="database" d="M512 960c-282.77 0-512-71.634-512-160v-128c0-88.366 229.23-160 512-160s512 71.634 512 160v128c0 88.366-229.23 160-512 160zM512 416c-282.77 0-512 71.634-512 160v-192c0-88.366 229.23-160 512-160s512 71.634 512 160v192c0-88.366-229.23-160-512-160zM512 128c-282.77 0-512 71.634-512 160v-192c0-88.366 229.23-160 512-160s512 71.634 512 160v192c0-88.366-229.23-160-512-160z" /> | ||
111 | <glyph unicode="" glyph-name="undo" d="M512 896c-141.384 0-269.376-57.32-362.032-149.978l-149.968 149.978v-384h384l-143.532 143.522c69.496 69.492 165.492 112.478 271.532 112.478 212.068 0 384-171.924 384-384 0-114.696-50.292-217.636-130.018-288l84.666-96c106.302 93.816 173.352 231.076 173.352 384 0 282.77-229.23 512-512 512z" /> | ||
112 | <glyph unicode="" glyph-name="redo" d="M0 384c0-152.924 67.048-290.184 173.35-384l84.666 96c-79.726 70.364-130.016 173.304-130.016 288 0 212.076 171.93 384 384 384 106.042 0 202.038-42.986 271.53-112.478l-143.53-143.522h384v384l-149.97-149.978c-92.654 92.658-220.644 149.978-362.030 149.978-282.77 0-512-229.23-512-512z" /> | ||
113 | <glyph unicode="" glyph-name="undo2" d="M761.862-64c113.726 206.032 132.888 520.306-313.862 509.824v-253.824l-384 384 384 384v-248.372c534.962 13.942 594.57-472.214 313.862-775.628z" /> | ||
114 | <glyph unicode="" glyph-name="redo2" d="M576 711.628v248.372l384-384-384-384v253.824c-446.75 10.482-427.588-303.792-313.86-509.824-280.712 303.414-221.1 789.57 313.86 775.628z" /> | ||
115 | <glyph unicode="" glyph-name="forward" d="M262.14 960c-113.728-206.032-132.89-520.304 313.86-509.824v253.824l384-384-384-384v248.372c-534.96-13.942-594.572 472.214-313.86 775.628z" /> | ||
116 | <glyph unicode="" glyph-name="reply" d="M448 184.372v-248.372l-384 384 384 384v-253.824c446.75-10.48 427.588 303.792 313.862 509.824 280.71-303.414 221.1-789.57-313.862-775.628z" /> | ||
117 | <glyph unicode="" glyph-name="bubble" d="M512 896c282.77 0 512-186.25 512-416 0-229.752-229.23-416-512-416-27.156 0-53.81 1.734-79.824 5.044-109.978-109.978-241.25-129.7-368.176-132.596v26.916c68.536 33.578 128 94.74 128 164.636 0 9.754-0.758 19.33-2.164 28.696-115.796 76.264-189.836 192.754-189.836 323.304 0 229.75 229.23 416 512 416z" /> | ||
118 | <glyph unicode="" glyph-name="bubbles" horiz-adv-x="1152" d="M1088 58.834c0-45.5 26.028-84.908 64-104.184v-15.938c-10.626-1.454-21.472-2.224-32.5-2.224-68.008 0-129.348 28.528-172.722 74.264-26.222-6.982-54.002-10.752-82.778-10.752-159.058 0-288 114.616-288 256s128.942 256 288 256c159.058 0 288-114.616 288-256 0-55.348-19.764-106.592-53.356-148.466-6.824-14.824-10.644-31.312-10.644-48.7zM512 960c278.458 0 504.992-180.614 511.836-405.52-49.182 21.92-103.586 33.52-159.836 33.52-95.56 0-185.816-33.446-254.138-94.178-70.846-62.972-109.862-147.434-109.862-237.822 0-44.672 9.544-87.888 27.736-127.788-5.228-0.126-10.468-0.212-15.736-0.212-27.156 0-53.81 1.734-79.824 5.044-109.978-109.978-241.25-129.7-368.176-132.596v26.916c68.536 33.578 128 94.74 128 164.636 0 9.754-0.758 19.33-2.164 28.696-115.796 76.264-189.836 192.754-189.836 323.304 0 229.75 229.23 416 512 416z" /> | ||
119 | <glyph unicode="" glyph-name="bubbles2" horiz-adv-x="1152" d="M480 960v0c265.096 0 480-173.914 480-388.448s-214.904-388.448-480-388.448c-25.458 0-50.446 1.62-74.834 4.71-103.106-102.694-222.172-121.108-341.166-123.814v25.134c64.252 31.354 116 88.466 116 153.734 0 9.106-0.712 18.048-2.030 26.794-108.558 71.214-177.97 179.988-177.97 301.89 0 214.534 214.904 388.448 480 388.448zM996 89.314c0-55.942 36.314-104.898 92-131.772v-21.542c-103.126 2.318-197.786 18.102-287.142 106.126-21.14-2.65-42.794-4.040-64.858-4.040-95.47 0-183.408 25.758-253.614 69.040 144.674 0.506 281.26 46.854 384.834 130.672 52.208 42.252 93.394 91.826 122.414 147.348 30.766 58.866 46.366 121.582 46.366 186.406 0 10.448-0.45 20.836-1.258 31.168 72.57-59.934 117.258-141.622 117.258-231.676 0-104.488-60.158-197.722-154.24-258.764-1.142-7.496-1.76-15.16-1.76-22.966z" /> | ||
120 | <glyph unicode="" glyph-name="bubble2" d="M512 768c-54.932 0-107.988-8.662-157.694-25.742-46.712-16.054-88.306-38.744-123.628-67.444-66.214-53.798-102.678-122.984-102.678-194.814 0-40.298 11.188-79.378 33.252-116.152 22.752-37.92 56.982-72.586 98.988-100.252 30.356-19.992 50.78-51.948 56.176-87.894 1.8-11.984 2.928-24.088 3.37-36.124 7.47 6.194 14.75 12.846 21.88 19.976 24.154 24.152 56.78 37.49 90.502 37.49 5.368 0 10.762-0.336 16.156-1.024 20.974-2.666 42.398-4.020 63.676-4.020 54.934 0 107.988 8.66 157.694 25.742 46.712 16.054 88.306 38.744 123.628 67.444 66.214 53.796 102.678 122.984 102.678 194.814s-36.464 141.016-102.678 194.814c-35.322 28.698-76.916 51.39-123.628 67.444-49.706 17.080-102.76 25.742-157.694 25.742zM512 896v0c282.77 0 512-186.25 512-416 0-229.752-229.23-416-512-416-27.156 0-53.81 1.734-79.824 5.044-109.978-109.978-241.25-129.7-368.176-132.596v26.916c68.536 33.578 128 94.74 128 164.636 0 9.754-0.758 19.33-2.164 28.696-115.796 76.264-189.836 192.754-189.836 323.304 0 229.75 229.23 416 512 416z" /> | ||
121 | <glyph unicode="" glyph-name="bubbles3" horiz-adv-x="1152" d="M1088 58.834c0-45.5 26.028-84.908 64-104.184v-15.938c-10.626-1.454-21.472-2.224-32.5-2.224-68.008 0-129.348 28.528-172.722 74.264-26.222-6.982-54.002-10.752-82.778-10.752-159.058 0-288 114.616-288 256s128.942 256 288 256c159.058 0 288-114.616 288-256 0-55.348-19.764-106.592-53.356-148.466-6.824-14.824-10.644-31.312-10.644-48.7zM230.678 738.814c-66.214-53.798-102.678-122.984-102.678-194.814 0-40.298 11.188-79.378 33.252-116.15 22.752-37.92 56.982-72.586 98.988-100.252 30.356-19.992 50.78-51.948 56.176-87.894 1.8-11.984 2.928-24.088 3.37-36.124 7.47 6.194 14.75 12.846 21.88 19.976 24.154 24.152 56.78 37.49 90.502 37.49 5.368 0 10.762-0.336 16.156-1.024 20.948-2.662 42.344-4.016 63.594-4.020v-128c-27.128 0.002-53.754 1.738-79.742 5.042-109.978-109.978-241.25-129.7-368.176-132.596v26.916c68.536 33.578 128 94.74 128 164.636 0 9.754-0.758 19.33-2.164 28.696-115.796 76.264-189.836 192.754-189.836 323.304 0 229.75 229.23 416 512 416 278.458 0 504.992-180.614 511.836-405.52-41.096 18.316-85.84 29.422-132.262 32.578-11.53 56.068-45.402 108.816-98.252 151.756-35.322 28.698-76.916 51.39-123.628 67.444-49.706 17.080-102.76 25.742-157.694 25.742-54.932 0-107.988-8.662-157.694-25.742-46.712-16.054-88.306-38.744-123.628-67.444z" /> | ||
122 | <glyph unicode="" glyph-name="bubbles4" horiz-adv-x="1152" d="M480 832c-50.666 0-99.582-7.95-145.386-23.628-42.924-14.694-81.114-35.436-113.502-61.646-60.044-48.59-93.112-110.802-93.112-175.174 0-35.99 10.066-70.948 29.92-103.898 20.686-34.34 51.898-65.794 90.26-90.958 30.44-19.968 50.936-51.952 56.362-87.95 0.902-5.99 1.63-12.006 2.18-18.032 2.722 2.52 5.424 5.114 8.114 7.794 24.138 24.040 56.688 37.312 90.322 37.312 5.348 0 10.718-0.336 16.094-1.018 19.36-2.452 39.124-3.696 58.748-3.696 50.666 0 99.58 7.948 145.384 23.628 42.926 14.692 81.116 35.434 113.504 61.644 60.046 48.59 93.112 110.802 93.112 175.174s-33.066 126.582-93.112 175.174c-32.388 26.212-70.578 46.952-113.504 61.646-45.804 15.678-94.718 23.628-145.384 23.628zM480 960v0c265.096 0 480-173.914 480-388.448s-214.904-388.448-480-388.448c-25.458 0-50.446 1.62-74.834 4.71-103.106-102.694-222.172-121.108-341.166-123.814v25.134c64.252 31.354 116 88.466 116 153.734 0 9.106-0.712 18.048-2.030 26.794-108.558 71.214-177.97 179.988-177.97 301.89 0 214.534 214.904 388.448 480 388.448zM996 89.314c0-55.942 36.314-104.898 92-131.772v-21.542c-103.126 2.318-197.786 18.102-287.142 106.126-21.14-2.65-42.794-4.040-64.858-4.040-95.47 0-183.408 25.758-253.614 69.040 144.674 0.506 281.26 46.854 384.834 130.672 52.208 42.252 93.394 91.826 122.414 147.348 30.766 58.866 46.366 121.582 46.366 186.406 0 10.448-0.45 20.836-1.258 31.168 72.57-59.934 117.258-141.622 117.258-231.676 0-104.488-60.158-197.722-154.24-258.764-1.142-7.496-1.76-15.16-1.76-22.966z" /> | ||
123 | <glyph unicode="" glyph-name="user" d="M576 253.388v52.78c70.498 39.728 128 138.772 128 237.832 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h896c0 128.968-166.898 235.64-384 253.388z" /> | ||
124 | <glyph unicode="" glyph-name="users" horiz-adv-x="1152" d="M768 189.388v52.78c70.498 39.728 128 138.772 128 237.832 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h896c0 128.968-166.898 235.64-384 253.388zM327.196 164.672c55.31 36.15 124.080 63.636 199.788 80.414-15.054 17.784-28.708 37.622-40.492 59.020-30.414 55.234-46.492 116.058-46.492 175.894 0 86.042 0 167.31 30.6 233.762 29.706 64.504 83.128 104.496 159.222 119.488-16.914 76.48-61.94 126.75-181.822 126.75-192 0-192-128.942-192-288 0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h279.006c14.518 12.91 30.596 25.172 48.19 36.672z" /> | ||
125 | <glyph unicode="" glyph-name="user-plus" d="M384 224c0 151.234 95.874 280.486 230.032 330.2 16.28 36.538 25.968 77.164 25.968 117.8 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h397.306c-8.664 30.53-13.306 62.732-13.306 96zM736 512c-159.058 0-288-128.942-288-288s128.942-288 288-288c159.056 0 288 128.942 288 288s-128.942 288-288 288zM896 192h-128v-128h-64v128h-128v64h128v128h64v-128h128v-64z" /> | ||
126 | <glyph unicode="" glyph-name="user-minus" d="M384 224c0 151.234 95.874 280.486 230.032 330.2 16.28 36.538 25.968 77.164 25.968 117.8 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h397.306c-8.664 30.53-13.306 62.732-13.306 96zM736 512c-159.058 0-288-128.942-288-288s128.942-288 288-288c159.056 0 288 128.942 288 288s-128.942 288-288 288zM896 192h-320v64h320v-64z" /> | ||
127 | <glyph unicode="" glyph-name="user-check" d="M960 352l-288-288-96 96-64-64 160-160 352 352zM448 192h320v115.128c-67.22 39.2-156.308 66.11-256 74.26v52.78c70.498 39.728 128 138.772 128 237.832 0 159.058 0 288-192 288s-192-128.942-192-288c0-99.060 57.502-198.104 128-237.832v-52.78c-217.102-17.748-384-124.42-384-253.388h448v64z" /> | ||
128 | <glyph unicode="" glyph-name="user-tie" d="M320 768c0 106.039 85.961 192 192 192s192-85.961 192-192c0-106.039-85.961-192-192-192s-192 85.961-192 192zM768.078 512h-35.424l-199.104-404.244 74.45 372.244-96 96-96-96 74.45-372.244-199.102 404.244h-35.424c-127.924 0-127.924-85.986-127.924-192v-320h768v320c0 106.014 0 192-127.922 192z" /> | ||
129 | <glyph unicode="" glyph-name="quotes-left" d="M225 512c123.712 0 224-100.29 224-224 0-123.712-100.288-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.634-11.636-22.252-24.016-31.83-37.020 11.438 1.8 23.16 2.746 35.104 2.746zM801 512c123.71 0 224-100.29 224-224 0-123.712-100.29-224-224-224s-224 100.288-224 224l-1 32c0 247.424 200.576 448 448 448v-128c-85.474 0-165.834-33.286-226.274-93.726-11.636-11.636-22.254-24.016-31.832-37.020 11.44 1.8 23.16 2.746 35.106 2.746z" /> | ||
130 | <glyph unicode="" glyph-name="quotes-right" d="M800 320c-123.712 0-224 100.29-224 224 0 123.712 100.288 224 224 224s224-100.288 224-224l1-32c0-247.424-200.576-448-448-448v128c85.474 0 165.834 33.286 226.274 93.726 11.634 11.636 22.252 24.016 31.83 37.020-11.438-1.8-23.16-2.746-35.104-2.746zM224 320c-123.71 0-224 100.29-224 224 0 123.712 100.29 224 224 224s224-100.288 224-224l1-32c0-247.424-200.576-448-448-448v128c85.474 0 165.834 33.286 226.274 93.726 11.636 11.636 22.254 24.016 31.832 37.020-11.44-1.8-23.16-2.746-35.106-2.746z" /> | ||
131 | <glyph unicode="" glyph-name="hour-glass" d="M728.992 448c137.754 87.334 231.008 255.208 231.008 448 0 21.676-1.192 43.034-3.478 64h-889.042c-2.29-20.968-3.48-42.326-3.48-64 0-192.792 93.254-360.666 231.006-448-137.752-87.334-231.006-255.208-231.006-448 0-21.676 1.19-43.034 3.478-64h889.042c2.288 20.966 3.478 42.324 3.478 64 0.002 192.792-93.252 360.666-231.006 448zM160 0c0 186.912 80.162 345.414 224 397.708v100.586c-143.838 52.29-224 210.792-224 397.706v0h704c0-186.914-80.162-345.416-224-397.706v-100.586c143.838-52.294 224-210.796 224-397.708h-704zM619.626 290.406c-71.654 40.644-75.608 93.368-75.626 125.366v64.228c0 31.994 3.804 84.914 75.744 125.664 38.504 22.364 71.808 56.348 97.048 98.336h-409.582c25.266-42.032 58.612-76.042 97.166-98.406 71.654-40.644 75.606-93.366 75.626-125.366v-64.228c0-31.992-3.804-84.914-75.744-125.664-72.622-42.18-126.738-125.684-143.090-226.336h501.67c-16.364 100.708-70.53 184.248-143.212 226.406z" /> | ||
132 | <glyph unicode="" glyph-name="spinner" d="M384 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM655.53 719.53c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM832 448c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM719.53 176.47c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM448.002 64c0 0 0 0 0 0 0 35.346 28.654 64 64 64s64-28.654 64-64c0 0 0 0 0 0 0-35.346-28.654-64-64-64s-64 28.654-64 64zM176.472 176.47c0 0 0 0 0 0 0 35.346 28.654 64 64 64s64-28.654 64-64c0 0 0 0 0 0 0-35.346-28.654-64-64-64s-64 28.654-64 64zM144.472 719.53c0 0 0 0 0 0 0 53.019 42.981 96 96 96s96-42.981 96-96c0 0 0 0 0 0 0-53.019-42.981-96-96-96s-96 42.981-96 96zM56 448c0 39.765 32.235 72 72 72s72-32.235 72-72c0-39.765-32.235-72-72-72s-72 32.235-72 72z" /> | ||
133 | <glyph unicode="" glyph-name="spinner2" d="M1024 448c-1.278 66.862-15.784 133.516-42.576 194.462-26.704 61-65.462 116.258-113.042 161.92-47.552 45.696-103.944 81.82-164.984 105.652-61.004 23.924-126.596 35.352-191.398 33.966-64.81-1.282-129.332-15.374-188.334-41.356-59.048-25.896-112.542-63.47-156.734-109.576-44.224-46.082-79.16-100.708-102.186-159.798-23.114-59.062-34.128-122.52-32.746-185.27 1.286-62.76 14.964-125.148 40.134-182.206 25.088-57.1 61.476-108.828 106.11-151.548 44.61-42.754 97.472-76.504 154.614-98.72 57.118-22.304 118.446-32.902 179.142-31.526 60.708 1.29 120.962 14.554 176.076 38.914 55.15 24.282 105.116 59.48 146.366 102.644 41.282 43.14 73.844 94.236 95.254 149.43 13.034 33.458 21.88 68.4 26.542 103.798 1.246-0.072 2.498-0.12 3.762-0.12 35.346 0 64 28.652 64 64 0 1.796-0.094 3.572-0.238 5.332h0.238zM922.306 278.052c-23.472-53.202-57.484-101.4-99.178-141.18-41.67-39.81-91-71.186-144.244-91.79-53.228-20.678-110.29-30.452-166.884-29.082-56.604 1.298-112.596 13.736-163.82 36.474-51.25 22.666-97.684 55.49-135.994 95.712-38.338 40.198-68.528 87.764-88.322 139.058-19.87 51.284-29.228 106.214-27.864 160.756 1.302 54.552 13.328 108.412 35.254 157.69 21.858 49.3 53.498 93.97 92.246 130.81 38.73 36.868 84.53 65.87 133.874 84.856 49.338 19.060 102.136 28.006 154.626 26.644 52.5-1.306 104.228-12.918 151.562-34.034 47.352-21.050 90.256-51.502 125.624-88.782 35.396-37.258 63.21-81.294 81.39-128.688 18.248-47.392 26.782-98.058 25.424-148.496h0.238c-0.144-1.76-0.238-3.536-0.238-5.332 0-33.012 24.992-60.174 57.086-63.624-6.224-34.822-16.53-68.818-30.78-100.992z" /> | ||
134 | <glyph unicode="" glyph-name="spinner3" d="M512 656.904c-32.964 0-59.686 26.724-59.686 59.686v179.060c0 32.964 26.722 59.686 59.686 59.686 32.962 0 59.688-26.722 59.688-59.686v-179.060c0-32.964-26.726-59.686-59.688-59.686zM512-36.956c-20.602 0-37.304 16.702-37.304 37.304v179.060c0 20.602 16.702 37.304 37.304 37.304 20.604 0 37.304-16.704 37.304-37.304v-179.060c0-20.602-16.7-37.304-37.304-37.304zM377.756 624.64c-19.34 0-38.146 10.034-48.512 27.988l-89.53 155.070c-15.452 26.764-6.282 60.986 20.482 76.438 26.762 15.45 60.986 6.284 76.438-20.482l89.53-155.072c15.452-26.764 6.282-60.986-20.482-76.438-8.81-5.084-18.432-7.504-27.926-7.504zM735.856 26.744c-11.602 0-22.886 6.022-29.108 16.792l-89.53 155.070c-9.27 16.056-3.77 36.592 12.29 45.864 16.056 9.264 36.59 3.77 45.864-12.292l89.532-155.068c9.27-16.058 3.768-36.592-12.292-45.864-5.286-3.048-11.060-4.502-16.756-4.502zM279.344 530.060c-8.86 0-17.838 2.256-26.064 7.006l-155.072 89.53c-24.978 14.422-33.538 46.362-19.116 71.342 14.42 24.978 46.364 33.538 71.342 19.116l155.070-89.53c24.98-14.422 33.538-46.362 19.116-71.34-9.668-16.756-27.226-26.124-45.276-26.124zM899.648 194.326c-5.064 0-10.196 1.29-14.894 4.004l-155.068 89.53c-14.274 8.24-19.164 26.494-10.924 40.768 8.242 14.276 26.496 19.166 40.766 10.924l155.070-89.532c14.274-8.24 19.164-26.492 10.924-40.766-5.53-9.574-15.562-14.928-25.874-14.928zM243.41 399.504h-179.060c-26.784 0-48.496 21.712-48.496 48.496s21.712 48.496 48.496 48.496h179.060c26.784 0 48.496-21.712 48.496-48.496s-21.712-48.496-48.496-48.496zM959.65 418.156c-0.002 0 0 0 0 0h-179.060c-16.482 0.002-29.844 13.364-29.844 29.844s13.364 29.844 29.844 29.844c0.002 0 0 0 0 0h179.060c16.482 0 29.844-13.362 29.844-29.844 0-16.48-13.364-29.844-29.844-29.844zM124.366 179.402c-15.472 0-30.518 8.028-38.81 22.39-12.362 21.41-5.026 48.79 16.384 61.148l155.072 89.532c21.41 12.368 48.79 5.028 61.15-16.384 12.362-21.412 5.026-48.79-16.384-61.15l-155.072-89.53c-7.050-4.070-14.748-6.006-22.34-6.006zM744.632 552.448c-10.314 0-20.346 5.352-25.874 14.926-8.24 14.274-3.35 32.526 10.924 40.768l155.070 89.528c14.272 8.236 32.526 3.352 40.768-10.922 8.24-14.274 3.35-32.526-10.924-40.768l-155.070-89.528c-4.7-2.714-9.83-4.004-14.894-4.004zM288.136 19.284c-6.962 0-14.016 1.774-20.48 5.504-19.626 11.332-26.35 36.428-15.020 56.054l89.53 155.070c11.33 19.628 36.426 26.352 56.054 15.022 19.626-11.332 26.35-36.43 15.020-56.054l-89.53-155.072c-7.598-13.166-21.392-20.524-35.574-20.524zM646.266 650.758c-5.062 0-10.196 1.29-14.894 4.002-14.274 8.242-19.164 26.494-10.924 40.766l89.534 155.070c8.24 14.274 26.492 19.166 40.766 10.922 14.274-8.242 19.164-26.494 10.924-40.766l-89.532-155.070c-5.53-9.57-15.56-14.924-25.874-14.924z" /> | ||
135 | <glyph unicode="" glyph-name="spinner4" d="M192 448c0 12.18 0.704 24.196 2.030 36.022l-184.98 60.104c-5.916-31.14-9.050-63.264-9.050-96.126 0-147.23 62.166-279.922 161.654-373.324l114.284 157.296c-52.124 56.926-83.938 132.758-83.938 216.028zM832 448c0-83.268-31.812-159.102-83.938-216.028l114.284-157.296c99.488 93.402 161.654 226.094 161.654 373.324 0 32.862-3.132 64.986-9.048 96.126l-184.98-60.104c1.324-11.828 2.028-23.842 2.028-36.022zM576 761.592c91.934-18.662 169.544-76.742 214.45-155.826l184.978 60.102c-73.196 155.42-222.24 268.060-399.428 290.156v-194.432zM233.55 605.768c44.906 79.084 122.516 137.164 214.45 155.826v194.43c-177.188-22.096-326.23-134.736-399.426-290.154l184.976-60.102zM644.556 156.672c-40.39-18.408-85.272-28.672-132.556-28.672s-92.166 10.264-132.554 28.67l-114.292-157.31c73.206-40.366 157.336-63.36 246.846-63.36s173.64 22.994 246.848 63.36l-114.292 157.312z" /> | ||
136 | <glyph unicode="" glyph-name="spinner5" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 704c141.384 0 256-114.616 256-256s-114.616-256-256-256-256 114.616-256 256 114.616 256 256 256zM817.47 142.53c-81.594-81.594-190.080-126.53-305.47-126.53-115.392 0-223.876 44.936-305.47 126.53s-126.53 190.078-126.53 305.47c0 115.39 44.936 223.876 126.53 305.47l67.882-67.882c0 0 0 0 0 0-131.006-131.006-131.006-344.17 0-475.176 63.462-63.462 147.838-98.412 237.588-98.412 89.748 0 174.124 34.95 237.588 98.412 131.006 131.006 131.006 344.168 0 475.176l67.882 67.882c81.594-81.594 126.53-190.080 126.53-305.47 0-115.392-44.936-223.876-126.53-305.47z" /> | ||
137 | <glyph unicode="" glyph-name="spinner6" d="M384 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM790.994 448c0 0 0 0 0 0 0 57.993 47.013 105.006 105.006 105.006s105.006-47.013 105.006-105.006c0 0 0 0 0 0 0-57.993-47.013-105.006-105.006-105.006s-105.006 47.013-105.006 105.006zM688.424 176.47c0 52.526 42.58 95.106 95.106 95.106s95.106-42.58 95.106-95.106c0-52.526-42.58-95.106-95.106-95.106s-95.106 42.58-95.106 95.106zM425.862 64c0 47.573 38.565 86.138 86.138 86.138s86.138-38.565 86.138-86.138c0-47.573-38.565-86.138-86.138-86.138s-86.138 38.565-86.138 86.138zM162.454 176.47c0 43.088 34.93 78.018 78.018 78.018s78.018-34.93 78.018-78.018c0-43.088-34.93-78.018-78.018-78.018s-78.018 34.93-78.018 78.018zM57.338 448c0 39.026 31.636 70.662 70.662 70.662s70.662-31.636 70.662-70.662c0-39.026-31.636-70.662-70.662-70.662s-70.662 31.636-70.662 70.662zM176.472 719.528c0 0 0 0 0 0 0 35.346 28.654 64 64 64s64-28.654 64-64c0 0 0 0 0 0 0-35.346-28.654-64-64-64s-64 28.654-64 64zM899.464 719.528c0-64.024-51.906-115.934-115.936-115.934-64.024 0-115.936 51.91-115.936 115.934 0 64.032 51.912 115.934 115.936 115.934 64.030 0 115.936-51.902 115.936-115.934z" /> | ||
138 | <glyph unicode="" glyph-name="spinner7" d="M416 32c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM0 448c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM832 448c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM121.844 742.156c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM710.156 153.844c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM121.844 153.844c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM710.156 742.156c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96z" /> | ||
139 | <glyph unicode="" glyph-name="spinner8" d="M512-64c-136.76 0-265.334 53.258-362.040 149.96-96.702 96.706-149.96 225.28-149.96 362.040 0 96.838 27.182 191.134 78.606 272.692 50 79.296 120.664 143.372 204.356 185.3l43-85.832c-68.038-34.084-125.492-86.186-166.15-150.67-41.746-66.208-63.812-142.798-63.812-221.49 0-229.382 186.618-416 416-416s416 186.618 416 416c0 78.692-22.066 155.282-63.81 221.49-40.66 64.484-98.114 116.584-166.15 150.67l43 85.832c83.692-41.928 154.358-106.004 204.356-185.3 51.422-81.558 78.604-175.854 78.604-272.692 0-136.76-53.258-265.334-149.96-362.040-96.706-96.702-225.28-149.96-362.040-149.96z" /> | ||
140 | <glyph unicode="" glyph-name="spinner9" d="M512 960c-278.748 0-505.458-222.762-511.848-499.974 5.92 241.864 189.832 435.974 415.848 435.974 229.75 0 416-200.576 416-448 0-53.020 42.98-96 96-96s96 42.98 96 96c0 282.77-229.23 512-512 512zM512-64c278.748 0 505.458 222.762 511.848 499.974-5.92-241.864-189.832-435.974-415.848-435.974-229.75 0-416 200.576-416 448 0 53.020-42.98 96-96 96s-96-42.98-96-96c0-282.77 229.23-512 512-512z" /> | ||
141 | <glyph unicode="" glyph-name="spinner10" d="M0.042 446.382l-0.022-0.004c0 0 0.012-0.090 0.028-0.222 0.11-3.878 0.55-7.676 1.322-11.352 0.204-1.746 0.428-3.66 0.674-5.774 0.222-1.886 0.46-3.914 0.718-6.078 0.374-2.566 0.77-5.292 1.19-8.176 0.856-5.746 1.8-12.124 2.908-18.958 1.348-6.446 2.804-13.414 4.364-20.864 0.71-3.718 1.776-7.504 2.786-11.406 1.024-3.89 2.078-7.894 3.16-12.004 0.566-2.042 1.040-4.132 1.708-6.208 0.656-2.074 1.32-4.176 1.988-6.3 1.348-4.234 2.726-8.566 4.136-12.988 0.352-1.106 0.708-2.21 1.064-3.324 0.408-1.102 0.814-2.208 1.226-3.316 0.826-2.218 1.658-4.458 2.502-6.714 1.696-4.496 3.422-9.078 5.18-13.742 1.968-4.566 3.97-9.214 6.004-13.934 1.018-2.348 2.044-4.714 3.078-7.098 1.048-2.376 2.27-4.704 3.408-7.074 2.322-4.714 4.678-9.496 7.062-14.332 2.47-4.786 5.208-9.512 7.846-14.328 1.336-2.398 2.68-4.808 4.028-7.23 1.368-2.41 2.902-4.75 4.356-7.14 2.95-4.738 5.93-9.524 8.934-14.348 12.64-18.894 26.676-37.566 42.21-55.278 15.712-17.578 32.726-34.25 50.692-49.602 18.18-15.136 37.264-28.902 56.726-41.114 19.604-12.036 39.644-22.312 59.376-31.144 5.004-2.040 9.964-4.062 14.878-6.066 2.462-0.972 4.868-2.032 7.336-2.918 2.47-0.868 4.93-1.734 7.376-2.594 4.898-1.684 9.678-3.468 14.484-4.992 4.832-1.43 9.604-2.844 14.312-4.242 2.356-0.672 4.66-1.426 7.004-2.012 2.346-0.574 4.676-1.14 6.986-1.704 4.606-1.118 9.142-2.214 13.604-3.296 4.5-0.868 8.926-1.722 13.27-2.558 2.166-0.41 4.31-0.82 6.434-1.222 1.062-0.2 2.118-0.398 3.166-0.598 1.060-0.148 2.118-0.292 3.166-0.442 4.192-0.582 8.292-1.152 12.3-1.71 1.998-0.274 3.972-0.546 5.922-0.816 1.946-0.286 3.904-0.378 5.814-0.57 3.822-0.336 7.544-0.664 11.164-0.98 3.616-0.304 7.104-0.688 10.526-0.738 0.23-0.008 0.452-0.016 0.682-0.026 0.614-34.812 29.008-62.846 63.968-62.846 0.542 0 1.080 0.028 1.62 0.042v-0.022c0 0 0.090 0.012 0.224 0.028 3.878 0.11 7.674 0.55 11.35 1.322 1.748 0.204 3.662 0.426 5.776 0.672 1.884 0.222 3.912 0.462 6.076 0.718 2.566 0.376 5.292 0.772 8.176 1.192 5.746 0.856 12.124 1.8 18.958 2.908 6.446 1.348 13.414 2.804 20.864 4.362 3.718 0.712 7.504 1.778 11.406 2.786 3.892 1.026 7.894 2.080 12.004 3.162 2.044 0.566 4.132 1.040 6.208 1.708 2.074 0.656 4.174 1.318 6.3 1.988 4.232 1.348 8.564 2.726 12.988 4.134 1.104 0.354 2.21 0.708 3.324 1.066 1.1 0.406 2.206 0.814 3.316 1.226 2.216 0.824 4.456 1.658 6.714 2.5 4.496 1.698 9.078 3.424 13.74 5.182 4.568 1.968 9.216 3.97 13.936 6.004 2.348 1.018 4.714 2.044 7.098 3.078 2.376 1.048 4.702 2.27 7.074 3.408 4.714 2.322 9.494 4.678 14.33 7.062 4.786 2.47 9.512 5.208 14.328 7.846 2.398 1.336 4.808 2.678 7.23 4.028 2.41 1.366 4.75 2.9 7.14 4.354 4.738 2.952 9.524 5.93 14.35 8.936 18.89 12.64 37.564 26.674 55.278 42.21 17.574 15.712 34.248 32.726 49.602 50.69 15.136 18.182 28.902 37.264 41.112 56.728 12.036 19.602 22.314 39.644 31.142 59.376 2.042 5.002 4.062 9.964 6.068 14.878 0.974 2.462 2.032 4.868 2.918 7.334 0.87 2.472 1.732 4.932 2.592 7.376 1.686 4.898 3.468 9.678 4.994 14.484 1.432 4.832 2.846 9.604 4.24 14.31 0.674 2.358 1.43 4.66 2.016 7.004 0.57 2.348 1.138 4.676 1.702 6.988 1.118 4.606 2.216 9.14 3.296 13.602 0.868 4.502 1.72 8.928 2.558 13.272 0.41 2.164 0.818 4.308 1.222 6.434 0.2 1.060 0.398 2.116 0.596 3.164 0.148 1.062 0.296 2.118 0.444 3.168 0.582 4.19 1.152 8.292 1.708 12.3 0.278 1.996 0.55 3.97 0.82 5.922 0.284 1.946 0.376 3.902 0.568 5.812 0.336 3.822 0.664 7.546 0.98 11.164 0.304 3.616 0.686 7.106 0.738 10.528 0.020 0.534 0.040 1.044 0.058 1.574 35.224 0.146 63.732 28.738 63.732 63.992 0 0.542-0.028 1.080-0.042 1.62h0.022c0 0-0.012 0.090-0.028 0.224-0.11 3.878-0.55 7.674-1.322 11.35-0.204 1.748-0.428 3.662-0.674 5.776-0.222 1.886-0.46 3.914-0.718 6.076-0.374 2.566-0.77 5.294-1.19 8.176-0.856 5.746-1.8 12.124-2.908 18.958-1.348 6.444-2.804 13.414-4.364 20.862-0.71 3.72-1.776 7.506-2.786 11.408-1.024 3.892-2.078 7.894-3.16 12.002-0.566 2.044-1.040 4.134-1.708 6.208-0.656 2.076-1.32 4.174-1.988 6.3-1.348 4.234-2.726 8.566-4.136 12.99-0.352 1.102-0.708 2.21-1.064 3.324-0.408 1.1-0.814 2.206-1.226 3.316-0.826 2.216-1.658 4.454-2.502 6.714-1.696 4.498-3.422 9.080-5.18 13.74-1.968 4.57-3.97 9.216-6.004 13.936-1.020 2.348-2.044 4.714-3.078 7.098-1.048 2.376-2.27 4.702-3.408 7.076-2.322 4.714-4.678 9.494-7.062 14.33-2.47 4.786-5.208 9.512-7.846 14.328-1.336 2.398-2.68 4.808-4.028 7.23-1.368 2.41-2.902 4.75-4.356 7.14-2.95 4.74-5.93 9.524-8.934 14.35-12.64 18.892-26.676 37.564-42.21 55.278-15.712 17.576-32.726 34.25-50.692 49.602-18.18 15.136-37.264 28.902-56.726 41.112-19.604 12.036-39.644 22.314-59.376 31.142-5.004 2.040-9.964 4.062-14.878 6.068-2.462 0.974-4.868 2.032-7.336 2.918-2.47 0.87-4.93 1.734-7.376 2.592-4.898 1.684-9.678 3.468-14.484 4.994-4.832 1.432-9.604 2.846-14.312 4.242-2.356 0.672-4.66 1.428-7.004 2.014-2.346 0.572-4.676 1.138-6.986 1.702-4.606 1.118-9.142 2.216-13.604 3.298-4.5 0.868-8.926 1.72-13.27 2.558-2.166 0.412-4.31 0.82-6.434 1.222-1.062 0.2-2.118 0.398-3.166 0.596-1.060 0.148-2.118 0.296-3.166 0.442-4.192 0.584-8.292 1.154-12.3 1.71-1.998 0.276-3.972 0.55-5.922 0.82-1.946 0.284-3.904 0.376-5.814 0.57-3.822 0.336-7.544 0.664-11.164 0.98-3.616 0.304-7.104 0.686-10.526 0.738-0.852 0.032-1.674 0.062-2.512 0.092-0.65 34.78-29.028 62.778-63.966 62.778-0.542 0-1.080-0.028-1.62-0.042l-0.002 0.022c0 0-0.090-0.012-0.222-0.028-3.878-0.11-7.676-0.55-11.352-1.322-1.748-0.204-3.662-0.426-5.776-0.672-1.884-0.222-3.912-0.462-6.076-0.718-2.566-0.376-5.292-0.772-8.176-1.192-5.746-0.856-12.124-1.8-18.958-2.908-6.446-1.348-13.414-2.804-20.864-4.362-3.718-0.712-7.504-1.778-11.406-2.786-3.892-1.026-7.894-2.080-12.004-3.162-2.044-0.566-4.132-1.040-6.208-1.708-2.074-0.656-4.174-1.318-6.3-1.988-4.232-1.348-8.564-2.726-12.988-4.134-1.104-0.354-2.21-0.708-3.324-1.066-1.1-0.406-2.206-0.814-3.316-1.226-2.216-0.824-4.456-1.658-6.714-2.5-4.496-1.698-9.078-3.424-13.74-5.182-4.568-1.968-9.216-3.97-13.936-6.004-2.348-1.018-4.714-2.044-7.098-3.078-2.376-1.048-4.702-2.27-7.074-3.408-4.714-2.322-9.494-4.678-14.33-7.062-4.786-2.47-9.512-5.208-14.328-7.846-2.398-1.336-4.808-2.678-7.23-4.028-2.41-1.366-4.75-2.9-7.14-4.354-4.738-2.952-9.524-5.93-14.35-8.936-18.89-12.64-37.564-26.674-55.278-42.21-17.574-15.712-34.248-32.726-49.602-50.69-15.136-18.182-28.902-37.264-41.112-56.728-12.036-19.602-22.314-39.644-31.142-59.376-2.042-5.002-4.062-9.964-6.068-14.878-0.974-2.462-2.032-4.868-2.918-7.334-0.87-2.472-1.732-4.932-2.592-7.376-1.686-4.898-3.468-9.678-4.994-14.484-1.432-4.832-2.846-9.604-4.24-14.31-0.674-2.358-1.43-4.66-2.016-7.004-0.57-2.348-1.138-4.676-1.702-6.988-1.118-4.606-2.216-9.14-3.296-13.602-0.868-4.502-1.72-8.928-2.558-13.272-0.41-2.164-0.818-4.308-1.222-6.434-0.2-1.060-0.398-2.116-0.596-3.164-0.148-1.062-0.296-2.118-0.444-3.168-0.582-4.19-1.152-8.292-1.708-12.3-0.278-1.996-0.55-3.97-0.82-5.922-0.284-1.946-0.376-3.902-0.568-5.812-0.336-3.822-0.664-7.546-0.98-11.164-0.304-3.616-0.686-7.106-0.738-10.528-0.020-0.548-0.040-1.076-0.058-1.62-34.376-1.112-61.902-29.304-61.902-63.946 0-0.542 0.028-1.078 0.042-1.618zM73.518 511.294c0.042 0.196 0.086 0.384 0.128 0.58 0.644 3.248 1.632 6.542 2.556 9.942 0.934 3.388 1.894 6.876 2.88 10.454 0.516 1.78 0.934 3.602 1.546 5.406 0.596 1.802 1.202 3.628 1.81 5.476 1.218 3.682 2.464 7.45 3.736 11.294 0.316 0.958 0.634 1.924 0.956 2.892 0.37 0.954 0.74 1.914 1.114 2.876 0.746 1.924 1.5 3.868 2.26 5.83 1.52 3.904 3.070 7.882 4.646 11.93 1.768 3.96 3.566 7.99 5.392 12.080 0.908 2.038 1.824 4.090 2.746 6.156 0.932 2.060 2.036 4.072 3.052 6.126 2.070 4.084 4.17 8.222 6.294 12.412 2.202 4.142 4.654 8.224 6.998 12.392 1.184 2.074 2.374 4.16 3.57 6.256 1.21 2.086 2.586 4.102 3.876 6.166 2.616 4.098 5.256 8.232 7.918 12.402 11.234 16.298 23.632 32.398 37.33 47.638 13.874 15.104 28.842 29.404 44.598 42.548 15.974 12.928 32.686 24.65 49.676 35.022 17.13 10.194 34.6 18.838 51.734 26.258 4.35 1.7 8.662 3.382 12.934 5.050 2.136 0.812 4.216 1.71 6.36 2.444 2.146 0.714 4.28 1.428 6.404 2.136 4.25 1.386 8.382 2.888 12.548 4.142 4.184 1.174 8.314 2.332 12.392 3.474 2.038 0.55 4.026 1.19 6.054 1.662 2.030 0.458 4.044 0.914 6.044 1.368 3.978 0.91 7.896 1.806 11.748 2.688 3.888 0.686 7.71 1.36 11.462 2.022 1.868 0.33 3.716 0.658 5.546 0.98 0.914 0.162 1.824 0.324 2.728 0.484 0.916 0.112 1.828 0.222 2.734 0.332 3.612 0.448 7.148 0.882 10.604 1.31 1.72 0.216 3.422 0.432 5.102 0.644 1.674 0.226 3.364 0.266 5.010 0.408 3.292 0.238 6.498 0.472 9.616 0.7 3.11 0.218 6.11 0.524 9.058 0.508 5.848 0.132 11.32 0.256 16.38 0.372 4.664-0.168 8.948-0.324 12.818-0.462 1.914-0.054 3.726-0.108 5.432-0.156 2.122-0.134 4.108-0.26 5.958-0.378 2.13-0.138 4.060-0.266 5.82-0.38 3.256-0.51 6.592-0.782 9.99-0.782 0.466 0 0.93 0.026 1.396 0.036 0.132-0.008 0.224-0.014 0.224-0.014v0.020c31.14 0.778 56.75 23.784 61.556 53.754 0.542-0.12 1.064-0.236 1.612-0.356 3.246-0.644 6.542-1.632 9.942-2.556 3.386-0.934 6.876-1.894 10.454-2.88 1.778-0.516 3.602-0.934 5.404-1.546 1.802-0.596 3.63-1.202 5.478-1.812 3.68-1.218 7.448-2.464 11.292-3.736 0.96-0.316 1.924-0.634 2.892-0.956 0.956-0.37 1.914-0.74 2.876-1.112 1.926-0.746 3.868-1.5 5.83-2.26 3.904-1.52 7.884-3.070 11.932-4.646 3.96-1.768 7.988-3.566 12.080-5.392 2.038-0.908 4.088-1.824 6.156-2.746 2.060-0.932 4.072-2.036 6.126-3.054 4.082-2.070 8.222-4.17 12.41-6.294 4.144-2.202 8.226-4.654 12.394-6.998 2.074-1.184 4.16-2.374 6.256-3.572 2.086-1.21 4.102-2.586 6.166-3.876 4.098-2.616 8.23-5.256 12.402-7.918 16.296-11.234 32.398-23.632 47.636-37.33 15.104-13.874 29.406-28.842 42.55-44.598 12.928-15.974 24.648-32.686 35.020-49.676 10.196-17.13 18.84-34.6 26.26-51.736 1.698-4.348 3.382-8.662 5.050-12.932 0.812-2.136 1.71-4.216 2.444-6.36 0.714-2.146 1.428-4.28 2.136-6.404 1.386-4.25 2.888-8.384 4.142-12.548 1.174-4.184 2.33-8.316 3.474-12.392 0.55-2.038 1.19-4.026 1.66-6.054 0.46-2.030 0.916-4.046 1.368-6.046 0.91-3.978 1.808-7.896 2.688-11.748 0.688-3.888 1.362-7.71 2.024-11.462 0.33-1.868 0.656-3.716 0.98-5.548 0.162-0.914 0.324-1.824 0.484-2.728 0.11-0.916 0.222-1.828 0.332-2.734 0.446-3.612 0.882-7.148 1.31-10.604 0.216-1.72 0.432-3.42 0.642-5.1 0.226-1.674 0.268-3.364 0.41-5.010 0.238-3.292 0.472-6.498 0.7-9.616 0.218-3.11 0.524-6.11 0.508-9.058 0.132-5.848 0.256-11.32 0.372-16.38-0.168-4.664-0.324-8.948-0.462-12.818-0.054-1.914-0.108-3.726-0.156-5.432-0.134-2.122-0.26-4.108-0.378-5.958-0.138-2.13-0.266-4.060-0.38-5.82-0.498-3.256-0.768-6.592-0.768-9.99 0-0.468 0.026-0.93 0.036-1.396-0.008-0.132-0.016-0.224-0.016-0.224h0.022c0.768-30.766 23.236-56.128 52.682-61.37-0.066-0.296-0.13-0.584-0.198-0.884-0.644-3.248-1.632-6.542-2.556-9.942-0.934-3.388-1.894-6.876-2.88-10.454-0.516-1.78-0.934-3.602-1.546-5.406-0.596-1.802-1.202-3.628-1.81-5.476-1.218-3.682-2.464-7.45-3.736-11.294-0.316-0.958-0.634-1.924-0.956-2.892-0.37-0.954-0.74-1.914-1.114-2.876-0.746-1.924-1.5-3.868-2.26-5.83-1.52-3.904-3.070-7.882-4.646-11.93-1.768-3.96-3.566-7.99-5.392-12.080-0.908-2.038-1.824-4.090-2.746-6.156-0.932-2.060-2.036-4.072-3.052-6.126-2.070-4.084-4.17-8.222-6.294-12.412-2.202-4.142-4.654-8.224-6.998-12.392-1.184-2.074-2.374-4.16-3.57-6.256-1.21-2.086-2.586-4.102-3.876-6.166-2.616-4.098-5.256-8.232-7.918-12.402-11.234-16.298-23.632-32.398-37.33-47.638-13.874-15.104-28.842-29.404-44.598-42.548-15.974-12.928-32.686-24.65-49.676-35.022-17.13-10.194-34.6-18.838-51.734-26.258-4.35-1.7-8.662-3.382-12.934-5.050-2.136-0.812-4.216-1.71-6.36-2.444-2.146-0.714-4.28-1.428-6.404-2.136-4.25-1.386-8.382-2.888-12.548-4.142-4.184-1.174-8.314-2.332-12.392-3.474-2.038-0.55-4.026-1.19-6.054-1.662-2.030-0.458-4.044-0.914-6.044-1.368-3.978-0.91-7.896-1.806-11.748-2.688-3.888-0.686-7.71-1.36-11.462-2.022-1.868-0.33-3.716-0.658-5.546-0.98-0.914-0.162-1.824-0.324-2.728-0.484-0.916-0.112-1.828-0.222-2.734-0.332-3.612-0.448-7.148-0.882-10.604-1.31-1.72-0.216-3.422-0.432-5.102-0.644-1.674-0.226-3.364-0.266-5.010-0.408-3.292-0.238-6.498-0.472-9.616-0.7-3.11-0.218-6.11-0.524-9.058-0.508-5.848-0.132-11.32-0.256-16.38-0.372-4.664 0.168-8.948 0.324-12.818 0.462-1.914 0.054-3.726 0.108-5.432 0.156-2.122 0.134-4.108 0.26-5.958 0.378-2.13 0.138-4.060 0.266-5.82 0.38-3.256 0.51-6.592 0.782-9.99 0.782-0.466 0-0.93-0.026-1.396-0.036-0.132 0.008-0.224 0.014-0.224 0.014v-0.020c-31.004-0.774-56.524-23.586-61.488-53.364-3.2 0.64-6.446 1.61-9.792 2.522-3.386 0.934-6.876 1.894-10.454 2.878-1.778 0.516-3.602 0.938-5.404 1.546-1.802 0.598-3.63 1.204-5.478 1.812-3.68 1.218-7.448 2.464-11.292 3.738-0.96 0.316-1.924 0.632-2.892 0.954-0.956 0.372-1.914 0.742-2.876 1.114-1.926 0.746-3.868 1.5-5.83 2.258-3.904 1.524-7.884 3.070-11.932 4.648-3.96 1.77-7.988 3.566-12.080 5.39-2.038 0.91-4.088 1.824-6.156 2.746-2.060 0.934-4.072 2.036-6.126 3.054-4.082 2.070-8.222 4.172-12.41 6.296-4.144 2.2-8.226 4.652-12.394 6.996-2.074 1.184-4.16 2.376-6.256 3.57-2.086 1.21-4.102 2.586-6.166 3.878-4.098 2.614-8.23 5.254-12.402 7.918-16.296 11.23-32.398 23.632-47.636 37.328-15.104 13.876-29.406 28.84-42.55 44.598-12.928 15.972-24.648 32.684-35.020 49.676-10.196 17.128-18.84 34.602-26.26 51.734-1.698 4.352-3.382 8.664-5.050 12.934-0.812 2.136-1.71 4.218-2.444 6.36-0.714 2.148-1.428 4.282-2.136 6.406-1.386 4.25-2.888 8.382-4.142 12.546-1.174 4.184-2.33 8.316-3.474 12.394-0.55 2.036-1.19 4.024-1.66 6.054-0.46 2.028-0.916 4.042-1.368 6.042-0.91 3.98-1.808 7.898-2.688 11.75-0.688 3.886-1.362 7.71-2.024 11.46-0.33 1.868-0.656 3.718-0.98 5.546-0.162 0.914-0.324 1.824-0.484 2.73-0.11 0.914-0.222 1.828-0.332 2.734-0.446 3.61-0.882 7.148-1.31 10.602-0.216 1.722-0.432 3.422-0.642 5.102-0.226 1.676-0.268 3.364-0.41 5.012-0.238 3.29-0.472 6.496-0.7 9.614-0.218 3.11-0.524 6.11-0.508 9.058-0.132 5.848-0.256 11.32-0.372 16.382 0.168 4.664 0.324 8.946 0.462 12.816 0.054 1.914 0.108 3.726 0.156 5.434 0.134 2.122 0.26 4.106 0.378 5.958 0.138 2.128 0.266 4.058 0.38 5.82 0.496 3.26 0.766 6.596 0.766 9.994 0 0.466-0.026 0.93-0.036 1.396 0.008 0.132 0.016 0.224 0.016 0.224h-0.022c-0.78 31.38-24.134 57.154-54.44 61.674z" /> | ||
142 | <glyph unicode="" glyph-name="spinner11" d="M1024 576h-384l143.53 143.53c-72.53 72.526-168.96 112.47-271.53 112.47s-199-39.944-271.53-112.47c-72.526-72.53-112.47-168.96-112.47-271.53s39.944-199 112.47-271.53c72.53-72.526 168.96-112.47 271.53-112.47s199 39.944 271.528 112.472c6.056 6.054 11.86 12.292 17.456 18.668l96.32-84.282c-93.846-107.166-231.664-174.858-385.304-174.858-282.77 0-512 229.23-512 512s229.23 512 512 512c141.386 0 269.368-57.326 362.016-149.984l149.984 149.984v-384z" /> | ||
143 | <glyph unicode="" glyph-name="binoculars" d="M64 960h384v-64h-384zM576 960h384v-64h-384zM952 640h-56v256h-256v-256h-256v256h-256v-256h-56c-39.6 0-72-32.4-72-72v-560c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v376h128v-376c0-39.6 32.4-72 72-72h304c39.6 0 72 32.4 72 72v560c0 39.6-32.4 72-72 72zM348 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32zM544 448h-64c-17.6 0-32 14.4-32 32s14.4 32 32 32h64c17.6 0 32-14.4 32-32s-14.4-32-32-32zM924 0h-248c-19.8 0-36 14.4-36 32s16.2 32 36 32h248c19.8 0 36-14.4 36-32s-16.2-32-36-32z" /> | ||
144 | <glyph unicode="" glyph-name="search" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256z" /> | ||
145 | <glyph unicode="" glyph-name="zoom-in" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM448 768h-128v-128h-128v-128h128v-128h128v128h128v128h-128z" /> | ||
146 | <glyph unicode="" glyph-name="zoom-out" d="M992.262 88.604l-242.552 206.294c-25.074 22.566-51.89 32.926-73.552 31.926 57.256 67.068 91.842 154.078 91.842 249.176 0 212.078-171.922 384-384 384-212.076 0-384-171.922-384-384s171.922-384 384-384c95.098 0 182.108 34.586 249.176 91.844-1-21.662 9.36-48.478 31.926-73.552l206.294-242.552c35.322-39.246 93.022-42.554 128.22-7.356s31.892 92.898-7.354 128.22zM384 320c-141.384 0-256 114.616-256 256s114.616 256 256 256 256-114.616 256-256-114.614-256-256-256zM192 640h384v-128h-384z" /> | ||
147 | <glyph unicode="" glyph-name="enlarge" d="M1024 960h-416l160-160-192-192 96-96 192 192 160-160zM1024-64v416l-160-160-192 192-96-96 192-192-160-160zM0-64h416l-160 160 192 192-96 96-192-192-160 160zM0 960v-416l160 160 192-192 96 96-192 192 160 160z" /> | ||
148 | <glyph unicode="" glyph-name="shrink" d="M576 512h416l-160 160 192 192-96 96-192-192-160 160zM576 384v-416l160 160 192-192 96 96-192 192 160 160zM448 384.004h-416l160-160-192-192 96-96 192 192 160-160zM448 512v416l-160-160-192 192-96-96 192-192-160-160z" /> | ||
149 | <glyph unicode="" glyph-name="enlarge2" d="M1024 960v-416l-160 160-192-192-96 96 192 192-160 160zM448 288l-192-192 160-160h-416v416l160-160 192 192z" /> | ||
150 | <glyph unicode="" glyph-name="shrink2" d="M448 384v-416l-160 160-192-192-96 96 192 192-160 160zM1024 864l-192-192 160-160h-416v416l160-160 192 192z" /> | ||
151 | <glyph unicode="" glyph-name="key" d="M704 960c-176.73 0-320-143.268-320-320 0-20.026 1.858-39.616 5.376-58.624l-389.376-389.376v-192c0-35.346 28.654-64 64-64h64v64h128v128h128v128h128l83.042 83.042c34.010-12.316 70.696-19.042 108.958-19.042 176.73 0 320 143.268 320 320s-143.27 320-320 320zM799.874 639.874c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96z" /> | ||
152 | <glyph unicode="" glyph-name="key2" d="M1002.132 645.758l-101.106 101.104c-24.792 24.794-65.37 65.368-90.162 90.164l-101.106 101.104c-24.792 24.794-68.954 29.166-98.13 9.716l-276.438-184.292c-29.176-19.452-40.218-61.028-24.536-92.39l70.486-140.974c2.154-4.306 4.646-8.896 7.39-13.66l-356.53-356.53-32-224h192v64h128v128h128v128h128v71.186c6.396-3.812 12.534-7.216 18.192-10.044l140.97-70.488c31.366-15.682 72.94-4.638 92.39 24.538l184.294 276.44c19.454 29.172 15.078 73.33-9.714 98.126zM150.628 105.374l-45.254 45.254 311.572 311.57 45.254-45.254-311.572-311.57zM917.020 536.236l-45.256-45.256c-12.446-12.444-32.808-12.444-45.254 0l-271.53 271.53c-12.446 12.444-12.446 32.81 0 45.254l45.256 45.256c12.446 12.444 32.808 12.444 45.254 0l271.53-271.53c12.446-12.444 12.446-32.81 0-45.254z" /> | ||
153 | <glyph unicode="" glyph-name="lock" d="M592 512h-16v192c0 105.87-86.13 192-192 192h-128c-105.87 0-192-86.13-192-192v-192h-16c-26.4 0-48-21.6-48-48v-480c0-26.4 21.6-48 48-48h544c26.4 0 48 21.6 48 48v480c0 26.4-21.6 48-48 48zM192 704c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-192h-256v192z" /> | ||
154 | <glyph unicode="" glyph-name="unlocked" d="M768 896c105.87 0 192-86.13 192-192v-192h-128v192c0 35.29-28.71 64-64 64h-128c-35.29 0-64-28.71-64-64v-192h16c26.4 0 48-21.6 48-48v-480c0-26.4-21.6-48-48-48h-544c-26.4 0-48 21.6-48 48v480c0 26.4 21.6 48 48 48h400v192c0 105.87 86.13 192 192 192h128z" /> | ||
155 | <glyph unicode="" glyph-name="wrench" d="M1002.934 142.124l-460.552 394.76c21.448 40.298 33.618 86.282 33.618 135.116 0 159.058-128.942 288-288 288-29.094 0-57.172-4.332-83.646-12.354l166.39-166.39c24.89-24.89 24.89-65.62 0-90.51l-101.49-101.49c-24.89-24.89-65.62-24.89-90.51 0l-166.39 166.39c-8.022-26.474-12.354-54.552-12.354-83.646 0-159.058 128.942-288 288-288 48.834 0 94.818 12.17 135.116 33.62l394.76-460.552c22.908-26.724 62.016-28.226 86.904-3.338l101.492 101.492c24.888 24.888 23.386 63.994-3.338 86.902z" /> | ||
156 | <glyph unicode="" glyph-name="equalizer" d="M448 832v16c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576zM256 704v128h128v-128h-128zM832 528c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-576v-128h576v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h192v128h-192v16zM640 384v128h128v-128h-128zM448 208c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-16h-192v-128h192v-16c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v16h576v128h-576v16zM256 64v128h128v-128h-128z" /> | ||
157 | <glyph unicode="" glyph-name="equalizer2" d="M896 512h16c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-16v192h-128v-192h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h16v-576h128v576zM768 704h128v-128h-128v128zM592 128c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-16v576h-128v-576h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h16v-192h128v192h16zM448 320h128v-128h-128v128zM272 512c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-16v192h-128v-192h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h16v-576h128v576h16zM128 704h128v-128h-128v128z" /> | ||
158 | <glyph unicode="" glyph-name="cog" d="M933.79 349.75c-53.726 93.054-21.416 212.304 72.152 266.488l-100.626 174.292c-28.75-16.854-62.176-26.518-97.846-26.518-107.536 0-194.708 87.746-194.708 195.99h-201.258c0.266-33.41-8.074-67.282-25.958-98.252-53.724-93.056-173.156-124.702-266.862-70.758l-100.624-174.292c28.97-16.472 54.050-40.588 71.886-71.478 53.638-92.908 21.512-211.92-71.708-266.224l100.626-174.292c28.65 16.696 61.916 26.254 97.4 26.254 107.196 0 194.144-87.192 194.7-194.958h201.254c-0.086 33.074 8.272 66.57 25.966 97.218 53.636 92.906 172.776 124.594 266.414 71.012l100.626 174.29c-28.78 16.466-53.692 40.498-71.434 71.228zM512 240.668c-114.508 0-207.336 92.824-207.336 207.334 0 114.508 92.826 207.334 207.336 207.334 114.508 0 207.332-92.826 207.332-207.334-0.002-114.51-92.824-207.334-207.332-207.334z" /> | ||
159 | <glyph unicode="" glyph-name="cogs" d="M363.722 237.948l41.298 57.816-45.254 45.256-57.818-41.296c-10.722 5.994-22.204 10.774-34.266 14.192l-11.682 70.084h-64l-11.68-70.086c-12.062-3.418-23.544-8.198-34.266-14.192l-57.818 41.298-45.256-45.256 41.298-57.816c-5.994-10.72-10.774-22.206-14.192-34.266l-70.086-11.682v-64l70.086-11.682c3.418-12.060 8.198-23.544 14.192-34.266l-41.298-57.816 45.254-45.256 57.818 41.296c10.722-5.994 22.204-10.774 34.266-14.192l11.682-70.084h64l11.68 70.086c12.062 3.418 23.544 8.198 34.266 14.192l57.818-41.296 45.254 45.256-41.298 57.816c5.994 10.72 10.774 22.206 14.192 34.266l70.088 11.68v64l-70.086 11.682c-3.418 12.060-8.198 23.544-14.192 34.266zM224 96c-35.348 0-64 28.654-64 64s28.652 64 64 64 64-28.654 64-64-28.652-64-64-64zM1024 576v64l-67.382 12.25c-1.242 8.046-2.832 15.978-4.724 23.79l57.558 37.1-24.492 59.128-66.944-14.468c-4.214 6.91-8.726 13.62-13.492 20.13l39.006 56.342-45.256 45.254-56.342-39.006c-6.512 4.766-13.22 9.276-20.13 13.494l14.468 66.944-59.128 24.494-37.1-57.558c-7.812 1.892-15.744 3.482-23.79 4.724l-12.252 67.382h-64l-12.252-67.382c-8.046-1.242-15.976-2.832-23.79-4.724l-37.098 57.558-59.128-24.492 14.468-66.944c-6.91-4.216-13.62-8.728-20.13-13.494l-56.342 39.006-45.254-45.254 39.006-56.342c-4.766-6.51-9.278-13.22-13.494-20.13l-66.944 14.468-24.492-59.128 57.558-37.1c-1.892-7.812-3.482-15.742-4.724-23.79l-67.384-12.252v-64l67.382-12.25c1.242-8.046 2.832-15.978 4.724-23.79l-57.558-37.1 24.492-59.128 66.944 14.468c4.216-6.91 8.728-13.618 13.494-20.13l-39.006-56.342 45.254-45.256 56.342 39.006c6.51-4.766 13.22-9.276 20.13-13.492l-14.468-66.944 59.128-24.492 37.102 57.558c7.81-1.892 15.742-3.482 23.788-4.724l12.252-67.384h64l12.252 67.382c8.044 1.242 15.976 2.832 23.79 4.724l37.1-57.558 59.128 24.492-14.468 66.944c6.91 4.216 13.62 8.726 20.13 13.492l56.342-39.006 45.256 45.256-39.006 56.342c4.766 6.512 9.276 13.22 13.492 20.13l66.944-14.468 24.492 59.13-57.558 37.1c1.892 7.812 3.482 15.742 4.724 23.79l67.382 12.25zM672 468.8c-76.878 0-139.2 62.322-139.2 139.2s62.32 139.2 139.2 139.2 139.2-62.322 139.2-139.2c0-76.878-62.32-139.2-139.2-139.2z" /> | ||
160 | <glyph unicode="" glyph-name="hammer" d="M1009.996 131.024l-301.544 301.544c-18.668 18.668-49.214 18.668-67.882 0l-22.626-22.626-184 184 302.056 302.058h-320l-142.058-142.058-14.060 14.058h-67.882v-67.882l14.058-14.058-206.058-206.060 160-160 206.058 206.058 184-184-22.626-22.626c-18.668-18.668-18.668-49.214 0-67.882l301.544-301.544c18.668-18.668 49.214-18.668 67.882 0l113.136 113.136c18.67 18.666 18.67 49.214 0.002 67.882z" /> | ||
161 | <glyph unicode="" glyph-name="magic-wand" d="M256 768l-128 128h-64v-64l128-128zM320 960h64v-128h-64zM576 640h128v-64h-128zM640 832v64h-64l-128-128 64-64zM0 640h128v-64h-128zM320 384h64v-128h-64zM64 384v-64h64l128 128-64 64zM1010 78l-636.118 636.118c-18.668 18.668-49.214 18.668-67.882 0l-60.118-60.118c-18.668-18.668-18.668-49.214 0-67.882l636.118-636.118c18.668-18.668 49.214-18.668 67.882 0l60.118 60.118c18.668 18.668 18.668 49.214 0 67.882zM480 416l-192 192 64 64 192-192-64-64z" /> | ||
162 | <glyph unicode="" glyph-name="aid-kit" d="M896 704h-192v128c0 35.2-28.8 64-64 64h-256c-35.2 0-64-28.8-64-64v-128h-192c-70.4 0-128-57.6-128-128v-512c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v512c0 70.4-57.6 128-128 128zM384 832h256v-128h-256v128zM768 256h-192v-192h-128v192h-192v128h192v192h128v-192h192v-128z" /> | ||
163 | <glyph unicode="" glyph-name="bug" d="M1024 384v64h-193.29c-5.862 72.686-31.786 139.026-71.67 192.25h161.944l70.060 280.24-62.090 15.522-57.94-231.76h-174.68c-0.892 0.694-1.796 1.374-2.698 2.056 6.71 19.502 10.362 40.422 10.362 62.194 0.002 105.76-85.958 191.498-191.998 191.498s-192-85.738-192-191.5c0-21.772 3.65-42.692 10.362-62.194-0.9-0.684-1.804-1.362-2.698-2.056h-174.68l-57.94 231.76-62.090-15.522 70.060-280.24h161.944c-39.884-53.222-65.806-119.562-71.668-192.248h-193.29v-64h193.37c3.802-45.664 15.508-88.812 33.638-127.75h-123.992l-70.060-280.238 62.090-15.524 57.94 231.762h112.354c58.692-78.032 147.396-127.75 246.66-127.75s187.966 49.718 246.662 127.75h112.354l57.94-231.762 62.090 15.524-70.060 280.238h-123.992c18.13 38.938 29.836 82.086 33.636 127.75h193.37z" /> | ||
164 | <glyph unicode="" glyph-name="pie-chart" d="M448 384v448c-247.424 0-448-200.576-448-448s200.576-448 448-448 448 200.576 448 448c0 72.034-17.028 140.084-47.236 200.382l-400.764-200.382zM912.764 712.382c-73.552 146.816-225.374 247.618-400.764 247.618v-448l400.764 200.382z" /> | ||
165 | <glyph unicode="" glyph-name="stats-dots" d="M128 64h896v-128h-1024v1024h128zM288 128c-53.020 0-96 42.98-96 96s42.98 96 96 96c2.828 0 5.622-0.148 8.388-0.386l103.192 171.986c-9.84 15.070-15.58 33.062-15.58 52.402 0 53.020 42.98 96 96 96s96-42.98 96-96c0-19.342-5.74-37.332-15.58-52.402l103.192-171.986c2.766 0.238 5.56 0.386 8.388 0.386 2.136 0 4.248-0.094 6.35-0.23l170.356 298.122c-10.536 15.408-16.706 34.036-16.706 54.11 0 53.020 42.98 96 96 96s96-42.98 96-96c0-53.020-42.98-96-96-96-2.14 0-4.248 0.094-6.35 0.232l-170.356-298.124c10.536-15.406 16.706-34.036 16.706-54.11 0-53.020-42.98-96-96-96s-96 42.98-96 96c0 19.34 5.74 37.332 15.578 52.402l-103.19 171.984c-2.766-0.238-5.56-0.386-8.388-0.386s-5.622 0.146-8.388 0.386l-103.192-171.986c9.84-15.068 15.58-33.060 15.58-52.4 0-53.020-42.98-96-96-96z" /> | ||
166 | <glyph unicode="" glyph-name="stats-bars" d="M0 128h1024v-128h-1024zM128 384h128v-192h-128zM320 640h128v-448h-128zM512 448h128v-256h-128zM704 832h128v-640h-128z" /> | ||
167 | <glyph unicode="" glyph-name="stats-bars2" d="M288 576h-192c-17.6 0-32-14.4-32-32v-576c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v576c0 17.6-14.4 32-32 32zM288 0h-192v256h192v-256zM608 704h-192c-17.6 0-32-14.4-32-32v-704c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v704c0 17.6-14.4 32-32 32zM608 0h-192v320h192v-320zM928 832h-192c-17.6 0-32-14.4-32-32v-832c0-17.6 14.4-32 32-32h192c17.6 0 32 14.4 32 32v832c0 17.6-14.4 32-32 32zM928 0h-192v384h192v-384z" /> | ||
168 | <glyph unicode="" glyph-name="trophy" d="M832 768v128h-640v-128h-192v-128c0-106.038 85.958-192 192-192 20.076 0 39.43 3.086 57.62 8.802 46.174-66.008 116.608-113.796 198.38-130.396v-198.406h-64c-70.694 0-128-57.306-128-128h512c0 70.694-57.306 128-128 128h-64v198.406c81.772 16.6 152.206 64.386 198.38 130.396 18.19-5.716 37.544-8.802 57.62-8.802 106.042 0 192 85.962 192 192v128h-192zM192 524c-63.962 0-116 52.038-116 116v64h116v-64c0-40.186 7.43-78.632 20.954-114.068-6.802-1.246-13.798-1.932-20.954-1.932zM948 640c0-63.962-52.038-116-116-116-7.156 0-14.152 0.686-20.954 1.932 13.524 35.436 20.954 73.882 20.954 114.068v64h116v-64z" /> | ||
169 | <glyph unicode="" glyph-name="gift" d="M771.516 640c18.126 12.88 35.512 27.216 51.444 43.148 33.402 33.402 55.746 74.5 62.912 115.722 7.858 45.186-3.672 87.14-31.63 115.1-22.3 22.298-52.51 34.086-87.364 34.086-49.632 0-101.922-23.824-143.46-65.362-66.476-66.476-105.226-158.238-126.076-223.722-15.44 65.802-46.206 154.644-106.018 214.458-32.094 32.092-73.114 48.57-111.846 48.57-31.654 0-61.78-11.004-84.26-33.486-49.986-49.988-43.232-137.786 15.086-196.104 20.792-20.792 45.098-38.062 70.72-52.412h-217.024v-256h64v-448h768v448.002h64v256h-188.484zM674.326 831.782c27.724 27.724 62.322 44.274 92.55 44.274 10.7 0 25.708-2.254 36.45-12.998 26.030-26.028 11.412-86.308-31.28-128.998-43.946-43.946-103.060-74.168-154.432-94.060h-50.672c18.568 57.548 52.058 136.456 107.384 191.782zM233.934 799.11c-0.702 9.12-0.050 26.248 12.196 38.494 10.244 10.244 23.788 12.396 33.348 12.396v0c21.258 0 43.468-10.016 60.932-27.48 33.872-33.872 61.766-87.772 80.668-155.876 0.51-1.84 1.008-3.67 1.496-5.486-1.816 0.486-3.646 0.984-5.486 1.496-68.104 18.904-122.002 46.798-155.874 80.67-15.828 15.826-25.77 36.16-27.28 55.786zM448 0h-256v416h256v-416zM448 448h-320v128h320v-128zM832 0h-256v416h256v-416zM896 448h-320v128h320v-128z" /> | ||
170 | <glyph unicode="" glyph-name="glass" d="M777.784 943.144c-5.576 10.38-16.406 16.856-28.19 16.856h-475.188c-11.784 0-22.614-6.476-28.19-16.856-35.468-66.020-54.216-143.184-54.216-223.144 0-105.412 32.372-204.828 91.154-279.938 45.428-58.046 102.48-96.54 164.846-112.172v-327.89h-96c-17.672 0-32-14.326-32-32s14.328-32 32-32h320c17.674 0 32 14.326 32 32s-14.326 32-32 32h-96v327.89c62.368 15.632 119.418 54.124 164.846 112.172 58.782 75.11 91.154 174.526 91.154 279.938 0 79.96-18.748 157.122-54.216 223.144zM294.1 896h435.8c24.974-52.902 38.1-113.338 38.1-176 0-5.364-0.108-10.696-0.296-16h-511.406c-0.19 5.304-0.296 10.636-0.296 16-0.002 62.664 13.126 123.098 38.098 176z" /> | ||
171 | <glyph unicode="" glyph-name="glass2" d="M889.162 780.23c7.568 9.632 8.972 22.742 3.62 33.758-5.356 11.018-16.532 18.012-28.782 18.012h-704c-12.25 0-23.426-6.994-28.78-18.012-5.356-11.018-3.95-24.126 3.618-33.758l313.162-398.57v-381.66h-96c-17.672 0-32-14.326-32-32s14.328-32 32-32h320c17.674 0 32 14.326 32 32s-14.326 32-32 32h-96v381.66l313.162 398.57zM798.162 768l-100.572-128h-371.18l-100.57 128h572.322z" /> | ||
172 | <glyph unicode="" glyph-name="mug" d="M960 640h-192v96c0 88.366-171.922 160-384 160s-384-71.634-384-160v-640c0-88.366 171.922-160 384-160s384 71.634 384 160v96h192c35.346 0 64 28.654 64 64v320c0 35.346-28.654 64-64 64zM176.056 701.602c-36.994 12.19-59.408 25.246-71.41 34.398 12.004 9.152 34.416 22.208 71.41 34.398 57.942 19.090 131.79 29.602 207.944 29.602s150.004-10.512 207.944-29.602c36.994-12.188 59.408-25.246 71.41-34.398-12.002-9.152-34.416-22.208-71.41-34.398-57.94-19.090-131.79-29.602-207.944-29.602s-150.002 10.512-207.944 29.602zM896 320h-128v192h128v-192z" /> | ||
173 | <glyph unicode="" glyph-name="spoon-knife" d="M224 960c-106.040 0-192-100.288-192-224 0-105.924 63.022-194.666 147.706-217.998l-31.788-518.124c-2.154-35.132 24.882-63.878 60.082-63.878h32c35.2 0 62.236 28.746 60.082 63.878l-31.788 518.124c84.684 23.332 147.706 112.074 147.706 217.998 0 123.712-85.96 224-192 224zM869.334 960l-53.334-320h-40l-26.666 320h-26.668l-26.666-320h-40l-53.334 320h-26.666v-416c0-17.672 14.326-32 32-32h83.338l-31.42-512.122c-2.154-35.132 24.882-63.878 60.082-63.878h32c35.2 0 62.236 28.746 60.082 63.878l-31.42 512.122h83.338c17.674 0 32 14.328 32 32v416h-26.666z" /> | ||
174 | <glyph unicode="" glyph-name="leaf" d="M1011.328 825.504c-110.752 83.928-281.184 134.034-455.91 134.034-216.12 0-392.226-75.456-483.16-207.020-42.708-61.79-66.33-134.958-70.208-217.474-3.454-73.474 8.884-154.726 36.684-242.146 94.874 284.384 359.82 507.102 665.266 507.102 0 0-285.826-75.232-465.524-308.192-0.112-0.138-2.494-3.090-6.614-8.698-36.080-48.278-67.538-103.162-91.078-165.328-39.87-94.83-76.784-224.948-76.784-381.782h128c0 0-19.43 122.222 14.36 262.79 55.89-7.556 105.858-11.306 150.852-11.306 117.678 0 201.37 25.46 263.388 80.124 55.568 48.978 86.198 114.786 118.624 184.456 49.524 106.408 105.654 227.010 268.654 320.152 9.33 5.332 15.362 14.992 16.056 25.716s-4.040 21.080-12.606 27.572z" /> | ||
175 | <glyph unicode="" glyph-name="rocket" d="M704 896l-320-320h-192l-192-256c0 0 203.416 56.652 322.066 30.084l-322.066-414.084 421.902 328.144c58.838-134.654-37.902-328.144-37.902-328.144l256 192v192l320 320 64 320-320-64z" /> | ||
176 | <glyph unicode="" glyph-name="meter" d="M512 896c282.77 0 512-229.23 512-512 0-192.792-106.576-360.666-264.008-448h-495.984c-157.432 87.334-264.008 255.208-264.008 448 0 282.77 229.23 512 512 512zM801.914 94.086c77.438 77.44 120.086 180.398 120.086 289.914h-90v64h85.038c-7.014 44.998-21.39 88.146-42.564 128h-106.474v64h64.284c-9.438 11.762-19.552 23.096-30.37 33.914-46.222 46.22-101.54 80.038-161.914 99.798v-69.712h-64v85.040c-20.982 3.268-42.36 4.96-64 4.96s-43.018-1.69-64-4.96v-85.040h-64v69.712c-60.372-19.76-115.692-53.576-161.914-99.798-10.818-10.818-20.932-22.152-30.37-33.914h64.284v-64h-106.476c-21.174-39.854-35.552-83.002-42.564-128h85.040v-64h-90c0-109.516 42.648-212.474 120.086-289.914 10.71-10.71 21.924-20.728 33.56-30.086h192.354l36.572 512h54.856l36.572-512h192.354c11.636 9.358 22.852 19.378 33.56 30.086z" /> | ||
177 | <glyph unicode="" glyph-name="meter2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM302.836 125.848c11.106 30.632 17.164 63.688 17.164 98.152 0 124.35-78.81 230.292-189.208 270.606 10.21 84.924 48.254 163.498 109.678 224.924 72.53 72.526 168.96 112.47 271.53 112.47s199-39.944 271.53-112.47c61.428-61.426 99.468-140 109.682-224.924-110.402-40.314-189.212-146.256-189.212-270.606 0-34.468 6.060-67.52 17.166-98.15-61.706-40.242-133.77-61.85-209.166-61.85-75.394 0-147.458 21.608-209.164 61.848zM551.754 319.004c13.878-3.494 24.246-16.080 24.246-31.004v-64c0-17.6-14.4-32-32-32h-64c-17.6 0-32 14.4-32 32v64c0 14.924 10.368 27.51 24.246 31.004l23.754 448.996h32l23.754-448.996z" /> | ||
178 | <glyph unicode="" glyph-name="hammer2" d="M1010.174 44.25l-548.634 499.458 25.534 25.598c20.894 20.954 32.188 48.030 33.918 75.61 1.002 0.45 2.002 0.912 2.958 1.442l102.99 64.402c13.934 16.392 12.916 42.268-2.284 57.502l-179.12 179.608c-15.19 15.234-40.998 16.262-57.344 2.284l-64.236-103.268c-0.526-0.966-0.99-1.966-1.44-2.974-27.502-1.736-54.5-13.056-75.398-34.006l-97.428-97.702c-20.898-20.956-32.184-48.026-33.918-75.604-1.004-0.45-2.004-0.916-2.964-1.446l-102.986-64.406c-13.942-16.39-12.916-42.264 2.276-57.496l179.12-179.604c15.194-15.238 40.996-16.262 57.35-2.286l64.228 103.27c0.528 0.958 0.988 1.96 1.442 2.966 27.502 1.738 54.504 13.050 75.398 34.004l28.292 28.372 498.122-550.114c14.436-15.944 36.7-18.518 49.474-5.712l50.356 50.488c12.764 12.808 10.196 35.132-5.706 49.614z" /> | ||
179 | <glyph unicode="" glyph-name="fire" d="M321.008-64c-68.246 142.008-31.902 223.378 20.55 300.044 57.44 83.956 72.244 167.066 72.244 167.066s45.154-58.7 27.092-150.508c79.772 88.8 94.824 230.28 82.782 284.464 180.314-126.012 257.376-398.856 153.522-601.066 552.372 312.532 137.398 780.172 65.154 832.85 24.082-52.676 28.648-141.85-20-185.126-82.352 312.276-285.972 376.276-285.972 376.276 24.082-161.044-87.296-337.144-194.696-468.73-3.774 64.216-7.782 108.528-41.55 169.98-7.58-116.656-96.732-211.748-120.874-328.628-32.702-158.286 24.496-274.18 241.748-396.622z" /> | ||
180 | <glyph unicode="" glyph-name="lab" d="M956.29 155.518l-316.29 527.024v213.458h32c17.6 0 32 14.4 32 32s-14.4 32-32 32h-320c-17.6 0-32-14.4-32-32s14.4-32 32-32h32v-213.458l-316.288-527.024c-72.442-120.734-16.512-219.518 124.288-219.518h640c140.8 0 196.73 98.784 124.29 219.518zM241.038 320l206.962 344.938v231.062h128v-231.062l206.964-344.938h-541.926z" /> | ||
181 | <glyph unicode="" glyph-name="magnet" d="M896 960h-256l64-576c0-106.040-85.96-192-192-192s-192 85.96-192 192l64 576h-256l-64-576c0-247.424 200.576-448 448-448s448 200.576 448 448l-64 576zM777.874 118.126c-71.018-71.014-165.44-110.126-265.874-110.126s-194.856 39.112-265.872 110.126c-70.116 70.118-109.13 163.048-110.11 262.054l36.092 324.82h111.114l-35.224-317.010v-3.99c0-70.518 27.46-136.814 77.324-186.676 49.862-49.864 116.158-77.324 186.676-77.324s136.814 27.46 186.676 77.324c49.864 49.862 77.324 116.158 77.324 186.676v3.988l-0.44 3.962-34.782 313.050h111.114l36.090-324.818c-0.98-99.006-39.994-191.938-110.108-262.056z" /> | ||
182 | <glyph unicode="" glyph-name="bin" d="M128 640v-640c0-35.2 28.8-64 64-64h576c35.2 0 64 28.8 64 64v640h-704zM320 64h-64v448h64v-448zM448 64h-64v448h64v-448zM576 64h-64v448h64v-448zM704 64h-64v448h64v-448zM848 832h-208v80c0 26.4-21.6 48-48 48h-224c-26.4 0-48-21.6-48-48v-80h-208c-26.4 0-48-21.6-48-48v-80h832v80c0 26.4-21.6 48-48 48zM576 832h-192v63.198h192v-63.198z" /> | ||
183 | <glyph unicode="" glyph-name="bin2" d="M192-64h640l64 704h-768zM640 832v128h-256v-128h-320v-192l64 64h768l64-64v192h-320zM576 832h-128v64h128v-64z" /> | ||
184 | <glyph unicode="" glyph-name="briefcase" d="M960 704h-256v64c0 35.2-28.8 64-64 64h-256c-35.204 0-64-28.8-64-64v-64h-256c-35.2 0-64-28.8-64-64v-576c0-35.202 28.796-64 64-64h896c35.2 0 64 28.798 64 64v576c0 35.2-28.8 64-64 64zM384 767.884c0.034 0.040 0.074 0.082 0.114 0.116h255.772c0.042-0.034 0.082-0.076 0.118-0.116v-63.884h-256.004v63.884zM960 448h-128v-96c0-17.602-14.4-32-32-32h-64c-17.604 0-32 14.398-32 32v96h-384v-96c0-17.602-14.4-32-32-32h-64c-17.602 0-32 14.398-32 32v96h-128v64h896v-64z" /> | ||
185 | <glyph unicode="" glyph-name="airplane" d="M768 320.032l-182.82 182.822 438.82 329.15-128.010 127.996-548.52-219.442-172.7 172.706c-49.78 49.778-119.302 61.706-154.502 26.508-35.198-35.198-23.268-104.726 26.51-154.5l172.686-172.684-219.464-548.582 127.99-128.006 329.19 438.868 182.826-182.828v-255.98h127.994l63.992 191.988 191.988 63.996v127.992l-255.98-0.004z" /> | ||
186 | <glyph unicode="" glyph-name="truck" d="M1024 384l-128 256h-192v128c0 35.2-28.8 64-64 64h-576c-35.2 0-64-28.8-64-64v-512l64-64h81.166c-10.898-18.832-17.166-40.678-17.166-64 0-70.692 57.308-128 128-128s128 57.308 128 128c0 23.322-6.268 45.168-17.166 64h354.334c-10.898-18.832-17.168-40.678-17.168-64 0-70.692 57.308-128 128-128s128 57.308 128 128c0 23.322-6.27 45.168-17.168 64h81.168v192zM704 384v192h132.668l96-192h-228.668z" /> | ||
187 | <glyph unicode="" glyph-name="road" d="M704-64h320l-256 1024h-192l32-256h-192l32 256h-192l-256-1024h320l32 256h320l32-256zM368 320l32 256h224l32-256h-288z" /> | ||
188 | <glyph unicode="" glyph-name="accessibility" d="M416 864c0 53.018 42.98 96 96 96s96-42.982 96-96c0-53.020-42.98-96-96-96s-96 42.98-96 96zM640 640l329.596 142.172-23.77 59.424-401.826-137.596h-64l-401.826 137.596-23.77-59.424 329.596-142.172v-256l-131.27-424.57 59.84-22.7 185.716 415.27h27.428l185.716-415.27 59.84 22.7-131.27 424.57z" /> | ||
189 | <glyph unicode="" glyph-name="target" d="M1024 512h-100.924c-27.64 178.24-168.836 319.436-347.076 347.076v100.924h-128v-100.924c-178.24-27.64-319.436-168.836-347.076-347.076h-100.924v-128h100.924c27.64-178.24 168.836-319.436 347.076-347.076v-100.924h128v100.924c178.24 27.64 319.436 168.836 347.076 347.076h100.924v128zM792.822 512h-99.762c-19.284 54.55-62.51 97.778-117.060 117.060v99.762c107.514-24.49 192.332-109.31 216.822-216.822zM512 384c-35.346 0-64 28.654-64 64s28.654 64 64 64c35.346 0 64-28.654 64-64s-28.654-64-64-64zM448 728.822v-99.762c-54.55-19.282-97.778-62.51-117.060-117.060h-99.762c24.49 107.512 109.31 192.332 216.822 216.822zM231.178 384h99.762c19.282-54.55 62.51-97.778 117.060-117.060v-99.762c-107.512 24.49-192.332 109.308-216.822 216.822zM576 167.178v99.762c54.55 19.284 97.778 62.51 117.060 117.060h99.762c-24.49-107.514-109.308-192.332-216.822-216.822z" /> | ||
190 | <glyph unicode="" glyph-name="shield" d="M960 960l-448-128-448 128c0 0-4.5-51.698 0-128l448-140.090 448 140.090c4.498 76.302 0 128 0 128zM72.19 764.894c23.986-250.696 113.49-672.234 439.81-828.894 326.32 156.66 415.824 578.198 439.81 828.894l-439.81-165.358-439.81 165.358z" /> | ||
191 | <glyph unicode="" glyph-name="power" d="M384 960l-384-512h384l-256-512 896 640h-512l384 384z" /> | ||
192 | <glyph unicode="" glyph-name="switch" d="M640 813.412v-135.958c36.206-15.804 69.5-38.408 98.274-67.18 60.442-60.44 93.726-140.8 93.726-226.274s-33.286-165.834-93.726-226.274c-60.44-60.44-140.798-93.726-226.274-93.726s-165.834 33.286-226.274 93.726c-60.44 60.44-93.726 140.8-93.726 226.274s33.286 165.834 93.726 226.274c28.774 28.774 62.068 51.378 98.274 67.182v135.956c-185.048-55.080-320-226.472-320-429.412 0-247.424 200.578-448 448-448 247.424 0 448 200.576 448 448 0 202.94-134.95 374.332-320 429.412zM448 960h128v-512h-128z" /> | ||
193 | <glyph unicode="" glyph-name="power-cord" d="M1024 677.5l-90.506 90.5-178.746-178.752-101.5 101.502 178.75 178.75-90.5 90.5-178.75-178.75-114.748 114.75-86.626-86.624 512.002-512 86.624 86.622-114.752 114.752 178.752 178.75zM794.040 286.21l-443.824 443.824c-95.818-114.904-204.52-292.454-129.396-445.216l-132.248-132.248c-31.112-31.114-31.112-82.024 0-113.136l14.858-14.858c31.114-31.114 82.026-31.114 113.138 0l132.246 132.244c152.764-75.132 330.318 33.566 445.226 129.39z" /> | ||
194 | <glyph unicode="" glyph-name="clipboard" d="M928 832h-288c0 70.692-57.306 128-128 128-70.692 0-128-57.308-128-128h-288c-17.672 0-32-14.328-32-32v-832c0-17.674 14.328-32 32-32h832c17.674 0 32 14.326 32 32v832c0 17.672-14.326 32-32 32zM512 896c35.346 0 64-28.654 64-64s-28.654-64-64-64c-35.346 0-64 28.654-64 64s28.654 64 64 64zM896 0h-768v768h128v-96c0-17.672 14.328-32 32-32h448c17.674 0 32 14.328 32 32v96h128v-768zM448 101.49l-205.254 237.254 58.508 58.51 146.746-114.744 274.742 242.744 58.514-58.508z" /> | ||
195 | <glyph unicode="" glyph-name="list-numbered" d="M384 128h640v-128h-640zM384 512h640v-128h-640zM384 896h640v-128h-640zM192 960v-256h-64v192h-64v64zM128 434v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM256 256v-320h-192v64h128v64h-128v64h128v64h-128v64z" /> | ||
196 | <glyph unicode="" glyph-name="list" d="M0 960h256v-256h-256zM384 896h640v-128h-640zM0 576h256v-256h-256zM384 512h640v-128h-640zM0 192h256v-256h-256zM384 128h640v-128h-640z" /> | ||
197 | <glyph unicode="" glyph-name="list2" d="M384 896h640v-128h-640v128zM384 512h640v-128h-640v128zM384 128h640v-128h-640v128zM0 832c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 448c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM0 64c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128z" /> | ||
198 | <glyph unicode="" glyph-name="tree" d="M976 192h-16v208c0 61.756-50.242 112-112 112h-272v128h16c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-160c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h16v-128h-272c-61.756 0-112-50.244-112-112v-208h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-16v192h256v-192h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48h-16v192h256v-192h-16c-26.4 0-48-21.6-48-48v-160c0-26.4 21.6-48 48-48h160c26.4 0 48 21.6 48 48v160c0 26.4-21.6 48-48 48zM192 0h-128v128h128v-128zM576 0h-128v128h128v-128zM448 704v128h128v-128h-128zM960 0h-128v128h128v-128z" /> | ||
199 | <glyph unicode="" glyph-name="menu" d="M64 768h896v-192h-896zM64 512h896v-192h-896zM64 256h896v-192h-896z" /> | ||
200 | <glyph unicode="" glyph-name="menu2" horiz-adv-x="1408" d="M0 768h896v-192h-896v192zM0 512h896v-192h-896v192zM0 256h896v-192h-896v192zM992 384l192-192 192 192zM1376 448l-192 192-192-192z" /> | ||
201 | <glyph unicode="" glyph-name="menu3" horiz-adv-x="1408" d="M0 768h896v-192h-896v192zM0 512h896v-192h-896v192zM0 256h896v-192h-896v192zM992 512l192-192 192 192z" /> | ||
202 | <glyph unicode="" glyph-name="menu4" horiz-adv-x="1408" d="M0 768h896v-192h-896v192zM0 512h896v-192h-896v192zM0 256h896v-192h-896v192zM992 320l192 192 192-192z" /> | ||
203 | <glyph unicode="" glyph-name="cloud" d="M1024 302.458c0 82.090-56.678 150.9-132.996 169.48-3.242 128.7-108.458 232.062-237.862 232.062-75.792 0-143.266-35.494-186.854-90.732-24.442 31.598-62.69 51.96-105.708 51.96-73.81 0-133.642-59.874-133.642-133.722 0-6.436 0.48-12.76 1.364-18.954-11.222 2.024-22.766 3.138-34.57 3.138-106.998 0.002-193.732-86.786-193.732-193.842 0-107.062 86.734-193.848 193.73-193.848l656.262 0.012c96.138 0.184 174.008 78.212 174.008 174.446z" /> | ||
204 | <glyph unicode="" glyph-name="cloud-download" d="M891.004 599.94c-3.242 128.698-108.458 232.060-237.862 232.060-75.792 0-143.266-35.494-186.854-90.732-24.442 31.598-62.69 51.96-105.708 51.96-73.81 0-133.642-59.876-133.642-133.722 0-6.436 0.48-12.76 1.364-18.954-11.222 2.024-22.766 3.138-34.57 3.138-106.998 0.002-193.732-86.786-193.732-193.842 0-107.062 86.734-193.848 193.73-193.848h91.76l226.51-234.51 226.51 234.51 111.482 0.012c96.138 0.184 174.008 78.21 174.008 174.446 0 82.090-56.678 150.9-132.996 169.482zM512 128l-192 192h128v192h128v-192h128l-192-192z" /> | ||
205 | <glyph unicode="" glyph-name="cloud-upload" d="M892.268 573.51c2.444 11.11 3.732 22.648 3.732 34.49 0 88.366-71.634 160-160 160-14.222 0-28.014-1.868-41.132-5.352-24.798 77.352-97.29 133.352-182.868 133.352-87.348 0-161.054-58.336-184.326-138.17-22.742 6.622-46.792 10.17-71.674 10.17-141.384 0-256-114.616-256-256 0-141.388 114.616-256 256-256h128v-192h256v192h224c88.366 0 160 71.632 160 160 0 78.72-56.854 144.162-131.732 157.51zM576 320v-192h-128v192h-160l224 224 224-224h-160z" /> | ||
206 | <glyph unicode="" glyph-name="cloud-check" d="M892.268 445.51c2.442 11.108 3.732 22.646 3.732 34.49 0 88.366-71.634 160-160 160-14.224 0-28.014-1.868-41.134-5.352-24.796 77.352-97.288 133.352-182.866 133.352-87.348 0-161.054-58.336-184.326-138.17-22.742 6.62-46.792 10.17-71.674 10.17-141.384 0-256-114.616-256-256 0-141.382 114.616-256 256-256h608c88.366 0 160 71.632 160 160 0 78.718-56.854 144.16-131.732 157.51zM416 192l-160 160 64 64 96-96 224 224 64-64-288-288z" /> | ||
207 | <glyph unicode="" glyph-name="download2" d="M896 448h-160l-224-224-224 224h-160l-128-256v-64h1024v64l-128 256zM0 64h1024v-64h-1024v64zM576 640v256h-128v-256h-224l288-288 288 288h-224z" /> | ||
208 | <glyph unicode="" glyph-name="upload2" d="M0 64h1024v-64h-1024zM1024 192v-64h-1024v64l128 256h256v-128h256v128h256zM224 640l288 288 288-288h-224v-256h-128v256z" /> | ||
209 | <glyph unicode="" glyph-name="download3" d="M736 512l-256-256-256 256h160v384h192v-384zM480 256h-480v-256h960v256h-480zM896 128h-128v64h128v-64z" /> | ||
210 | <glyph unicode="" glyph-name="upload3" d="M480 256h-480v-256h960v256h-480zM896 128h-128v64h128v-64zM224 640l256 256 256-256h-160v-320h-192v320z" /> | ||
211 | <glyph unicode="" glyph-name="sphere" d="M480 896c-265.096 0-480-214.904-480-480 0-265.098 214.904-480 480-480 265.098 0 480 214.902 480 480 0 265.096-214.902 480-480 480zM751.59 256c8.58 40.454 13.996 83.392 15.758 128h127.446c-3.336-44.196-13.624-87.114-30.68-128h-112.524zM208.41 576c-8.58-40.454-13.996-83.392-15.758-128h-127.444c3.336 44.194 13.622 87.114 30.678 128h112.524zM686.036 576c9.614-40.962 15.398-83.854 17.28-128h-191.316v128h174.036zM512 640v187.338c14.59-4.246 29.044-11.37 43.228-21.37 26.582-18.74 52.012-47.608 73.54-83.486 14.882-24.802 27.752-52.416 38.496-82.484h-155.264zM331.232 722.484c21.528 35.878 46.956 64.748 73.54 83.486 14.182 10 28.638 17.124 43.228 21.37v-187.34h-155.264c10.746 30.066 23.616 57.68 38.496 82.484zM448 576v-128h-191.314c1.88 44.146 7.666 87.038 17.278 128h174.036zM95.888 256c-17.056 40.886-27.342 83.804-30.678 128h127.444c1.762-44.608 7.178-87.546 15.758-128h-112.524zM256.686 384h191.314v-128h-174.036c-9.612 40.96-15.398 83.854-17.278 128zM448 192v-187.34c-14.588 4.246-29.044 11.372-43.228 21.37-26.584 18.74-52.014 47.61-73.54 83.486-14.882 24.804-27.75 52.418-38.498 82.484h155.266zM628.768 109.516c-21.528-35.876-46.958-64.746-73.54-83.486-14.184-9.998-28.638-17.124-43.228-21.37v187.34h155.266c-10.746-30.066-23.616-57.68-38.498-82.484zM512 256v128h191.314c-1.88-44.146-7.666-87.040-17.28-128h-174.034zM767.348 448c-1.762 44.608-7.178 87.546-15.758 128h112.524c17.056-40.886 27.344-83.806 30.68-128h-127.446zM830.658 640h-95.9c-18.638 58.762-44.376 110.294-75.316 151.428 42.536-20.34 81.058-47.616 114.714-81.272 21.48-21.478 40.362-44.938 56.502-70.156zM185.844 710.156c33.658 33.658 72.18 60.932 114.714 81.272-30.942-41.134-56.676-92.666-75.316-151.428h-95.898c16.138 25.218 35.022 48.678 56.5 70.156zM129.344 192h95.898c18.64-58.762 44.376-110.294 75.318-151.43-42.536 20.34-81.058 47.616-114.714 81.274-21.48 21.478-40.364 44.938-56.502 70.156zM774.156 121.844c-33.656-33.658-72.18-60.934-114.714-81.274 30.942 41.134 56.678 92.668 75.316 151.43h95.9c-16.14-25.218-35.022-48.678-56.502-70.156z" /> | ||
212 | <glyph unicode="" glyph-name="earth" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512-0.002c-62.958 0-122.872 13.012-177.23 36.452l233.148 262.29c5.206 5.858 8.082 13.422 8.082 21.26v96c0 17.674-14.326 32-32 32-112.99 0-232.204 117.462-233.374 118.626-6 6.002-14.14 9.374-22.626 9.374h-128c-17.672 0-32-14.328-32-32v-192c0-12.122 6.848-23.202 17.69-28.622l110.31-55.156v-187.886c-116.052 80.956-192 215.432-192 367.664 0 68.714 15.49 133.806 43.138 192h116.862c8.488 0 16.626 3.372 22.628 9.372l128 128c6 6.002 9.372 14.14 9.372 22.628v77.412c40.562 12.074 83.518 18.588 128 18.588 70.406 0 137.004-16.26 196.282-45.2-4.144-3.502-8.176-7.164-12.046-11.036-36.266-36.264-56.236-84.478-56.236-135.764s19.97-99.5 56.236-135.764c36.434-36.432 85.218-56.264 135.634-56.26 3.166 0 6.342 0.080 9.518 0.236 13.814-51.802 38.752-186.656-8.404-372.334-0.444-1.744-0.696-3.488-0.842-5.224-81.324-83.080-194.7-134.656-320.142-134.656z" /> | ||
213 | <glyph unicode="" glyph-name="link" d="M440.236 324.234c-13.31 0-26.616 5.076-36.77 15.23-95.134 95.136-95.134 249.934 0 345.070l192 192c46.088 46.086 107.36 71.466 172.534 71.466s126.448-25.38 172.536-71.464c95.132-95.136 95.132-249.934 0-345.070l-87.766-87.766c-20.308-20.308-53.23-20.308-73.54 0-20.306 20.306-20.306 53.232 0 73.54l87.766 87.766c54.584 54.586 54.584 143.404 0 197.99-26.442 26.442-61.6 41.004-98.996 41.004s-72.552-14.562-98.996-41.006l-192-191.998c-54.586-54.586-54.586-143.406 0-197.992 20.308-20.306 20.306-53.232 0-73.54-10.15-10.152-23.462-15.23-36.768-15.23zM256-52c-65.176 0-126.45 25.38-172.534 71.464-95.134 95.136-95.134 249.934 0 345.070l87.764 87.764c20.308 20.306 53.234 20.306 73.54 0 20.308-20.306 20.308-53.232 0-73.54l-87.764-87.764c-54.586-54.586-54.586-143.406 0-197.992 26.44-26.44 61.598-41.002 98.994-41.002s72.552 14.562 98.998 41.006l192 191.998c54.584 54.586 54.584 143.406 0 197.992-20.308 20.308-20.306 53.232 0 73.54 20.306 20.306 53.232 20.306 73.54-0.002 95.132-95.134 95.132-249.932 0.002-345.068l-192.002-192c-46.090-46.088-107.364-71.466-172.538-71.466z" /> | ||
214 | <glyph unicode="" glyph-name="flag" d="M0 960h128v-1024h-128v1024zM832 316.998c82.624 0 154.57 19.984 192 49.5v512c-37.43-29.518-109.376-49.502-192-49.502s-154.57 19.984-192 49.502v-512c37.43-29.516 109.376-49.5 192-49.5zM608 927.472c-46.906 19.94-115.52 32.528-192 32.528-96.396 0-180.334-19.984-224-49.502v-512c43.666 29.518 127.604 49.502 224 49.502 76.48 0 145.094-12.588 192-32.528v512z" /> | ||
215 | <glyph unicode="" glyph-name="attachment" d="M665.832 632.952l-64.952 64.922-324.81-324.742c-53.814-53.792-53.814-141.048 0-194.844 53.804-53.792 141.060-53.792 194.874 0l389.772 389.708c89.714 89.662 89.714 235.062 0 324.726-89.666 89.704-235.112 89.704-324.782 0l-409.23-409.178c-0.29-0.304-0.612-0.576-0.876-0.846-125.102-125.096-125.102-327.856 0-452.906 125.054-125.056 327.868-125.056 452.988 0 0.274 0.274 0.516 0.568 0.82 0.876l0.032-0.034 279.332 279.292-64.986 64.92-279.33-279.262c-0.296-0.268-0.564-0.57-0.846-0.844-89.074-89.058-233.98-89.058-323.076 0-89.062 89.042-89.062 233.922 0 322.978 0.304 0.304 0.604 0.582 0.888 0.846l-0.046 0.060 409.28 409.166c53.712 53.738 141.144 53.738 194.886 0 53.712-53.734 53.712-141.148 0-194.84l-389.772-389.7c-17.936-17.922-47.054-17.922-64.972 0-17.894 17.886-17.894 47.032 0 64.92l324.806 324.782z" /> | ||
216 | <glyph unicode="" glyph-name="eye" d="M512 768c-223.318 0-416.882-130.042-512-320 95.118-189.958 288.682-320 512-320 223.312 0 416.876 130.042 512 320-95.116 189.958-288.688 320-512 320zM764.45 598.296c60.162-38.374 111.142-89.774 149.434-150.296-38.292-60.522-89.274-111.922-149.436-150.296-75.594-48.218-162.89-73.704-252.448-73.704-89.56 0-176.858 25.486-252.452 73.704-60.158 38.372-111.138 89.772-149.432 150.296 38.292 60.524 89.274 111.924 149.434 150.296 3.918 2.5 7.876 4.922 11.86 7.3-9.96-27.328-15.41-56.822-15.41-87.596 0-141.382 114.616-256 256-256 141.382 0 256 114.618 256 256 0 30.774-5.452 60.268-15.408 87.598 3.978-2.378 7.938-4.802 11.858-7.302v0zM512 544c0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.982 96-96z" /> | ||
217 | <glyph unicode="" glyph-name="eye-plus" d="M1024 832h-128v128h-128v-128h-128v-128h128v-128h128v128h128zM863.862 513.972c18.436-20.478 35.192-42.53 50.022-65.972-38.292-60.522-89.274-111.922-149.436-150.296-75.594-48.218-162.89-73.704-252.448-73.704-89.56 0-176.86 25.486-252.454 73.704-60.156 38.372-111.136 89.772-149.43 150.296 38.292 60.524 89.274 111.924 149.434 150.296 3.918 2.5 7.876 4.922 11.862 7.3-9.962-27.328-15.412-56.822-15.412-87.596 0-141.382 114.616-256 256-256 141.38 0 256 114.618 256 256 0 0.692-0.018 1.38-0.024 2.072-109.284 28.138-190.298 126.63-191.932 244.31-21.026 2.38-42.394 3.618-64.044 3.618-223.318 0-416.882-130.042-512-320 95.118-189.958 288.682-320 512-320 223.31 0 416.876 130.042 512 320-17.64 35.23-38.676 68.394-62.65 99.054-29.28-17.178-62.272-28.71-97.488-33.082zM416 640c53.020 0 96-42.982 96-96 0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96z" /> | ||
218 | <glyph unicode="" glyph-name="eye-minus" d="M640 832h384v-128h-384v128zM870.32 640h-294.32v124.388c-21.014 2.376-42.364 3.612-64 3.612-223.318 0-416.882-130.042-512-320 95.118-189.958 288.682-320 512-320 223.31 0 416.876 130.042 512 320-37.396 74.686-90.020 140.1-153.68 192zM416 640c53.020 0 96-42.982 96-96 0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96zM764.448 297.704c-75.594-48.218-162.89-73.704-252.448-73.704-89.56 0-176.86 25.486-252.454 73.704-60.156 38.372-111.136 89.772-149.43 150.296 38.292 60.524 89.274 111.924 149.434 150.296 3.918 2.5 7.876 4.922 11.862 7.3-9.962-27.328-15.412-56.822-15.412-87.596 0-141.382 114.616-256 256-256 141.38 0 256 114.618 256 256 0 30.774-5.454 60.268-15.408 87.598 3.976-2.378 7.938-4.802 11.858-7.302 60.162-38.374 111.142-89.774 149.434-150.296-38.292-60.522-89.274-111.922-149.436-150.296z" /> | ||
219 | <glyph unicode="" glyph-name="eye-blocked" d="M945.942 945.942c-18.746 18.744-49.136 18.744-67.882 0l-202.164-202.164c-51.938 15.754-106.948 24.222-163.896 24.222-223.318 0-416.882-130.042-512-320 41.122-82.124 100.648-153.040 173.022-207.096l-158.962-158.962c-18.746-18.746-18.746-49.136 0-67.882 9.372-9.374 21.656-14.060 33.94-14.060s24.568 4.686 33.942 14.058l864 864c18.744 18.746 18.744 49.138 0 67.884zM416 640c42.24 0 78.082-27.294 90.92-65.196l-121.724-121.724c-37.902 12.838-65.196 48.68-65.196 90.92 0 53.020 42.98 96 96 96zM110.116 448c38.292 60.524 89.274 111.924 149.434 150.296 3.918 2.5 7.876 4.922 11.862 7.3-9.962-27.328-15.412-56.822-15.412-87.596 0-54.89 17.286-105.738 46.7-147.418l-60.924-60.924c-52.446 36.842-97.202 83.882-131.66 138.342zM768 518c0 27.166-4.256 53.334-12.102 77.898l-321.808-321.808c24.568-7.842 50.742-12.090 77.91-12.090 141.382 0 256 114.618 256 256zM830.026 670.026l-69.362-69.362c1.264-0.786 2.53-1.568 3.786-2.368 60.162-38.374 111.142-89.774 149.434-150.296-38.292-60.522-89.274-111.922-149.436-150.296-75.594-48.218-162.89-73.704-252.448-73.704-38.664 0-76.902 4.76-113.962 14.040l-76.894-76.894c59.718-21.462 123.95-33.146 190.856-33.146 223.31 0 416.876 130.042 512 320-45.022 89.916-112.118 166.396-193.974 222.026z" /> | ||
220 | <glyph unicode="" glyph-name="bookmark" d="M192 960v-1024l320 320 320-320v1024z" /> | ||
221 | <glyph unicode="" glyph-name="bookmarks" d="M256 832v-896l320 320 320-320v896zM768 960h-640v-896l64 64v768h576z" /> | ||
222 | <glyph unicode="" glyph-name="sun" d="M512 128c35.346 0 64-28.654 64-64v-64c0-35.346-28.654-64-64-64s-64 28.654-64 64v64c0 35.346 28.654 64 64 64zM512 768c-35.346 0-64 28.654-64 64v64c0 35.346 28.654 64 64 64s64-28.654 64-64v-64c0-35.346-28.654-64-64-64zM960 512c35.346 0 64-28.654 64-64s-28.654-64-64-64h-64c-35.348 0-64 28.654-64 64s28.652 64 64 64h64zM192 448c0-35.346-28.654-64-64-64h-64c-35.346 0-64 28.654-64 64s28.654 64 64 64h64c35.346 0 64-28.654 64-64zM828.784 221.726l45.256-45.258c24.992-24.99 24.992-65.516 0-90.508-24.994-24.992-65.518-24.992-90.51 0l-45.256 45.256c-24.992 24.99-24.992 65.516 0 90.51 24.994 24.992 65.518 24.992 90.51 0zM195.216 674.274l-45.256 45.256c-24.994 24.994-24.994 65.516 0 90.51s65.516 24.994 90.51 0l45.256-45.256c24.994-24.994 24.994-65.516 0-90.51s-65.516-24.994-90.51 0zM828.784 674.274c-24.992-24.992-65.516-24.992-90.51 0-24.992 24.994-24.992 65.516 0 90.51l45.256 45.254c24.992 24.994 65.516 24.994 90.51 0 24.992-24.994 24.992-65.516 0-90.51l-45.256-45.254zM195.216 221.726c24.992 24.992 65.518 24.992 90.508 0 24.994-24.994 24.994-65.52 0-90.51l-45.254-45.256c-24.994-24.992-65.516-24.992-90.51 0s-24.994 65.518 0 90.508l45.256 45.258zM512 704c-141.384 0-256-114.616-256-256 0-141.382 114.616-256 256-256 141.382 0 256 114.618 256 256 0 141.384-114.616 256-256 256zM512 288c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160-71.634-160-160-160z" /> | ||
223 | <glyph unicode="" glyph-name="contrast" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM128 448c0 212.078 171.922 384 384 384v-768c-212.078 0-384 171.922-384 384z" /> | ||
224 | <glyph unicode="" glyph-name="brightness-contrast" d="M512 704c-141.384 0-256-114.616-256-256s114.616-256 256-256 256 114.616 256 256-114.616 256-256 256zM512 288v320c88.224 0 160-71.776 160-160s-71.776-160-160-160zM512 128c35.346 0 64-28.654 64-64v-64c0-35.346-28.654-64-64-64s-64 28.654-64 64v64c0 35.346 28.654 64 64 64zM512 768c-35.346 0-64 28.654-64 64v64c0 35.346 28.654 64 64 64s64-28.654 64-64v-64c0-35.346-28.654-64-64-64zM960 512c35.346 0 64-28.654 64-64s-28.654-64-64-64h-64c-35.346 0-64 28.654-64 64s28.654 64 64 64h64zM192 448c0-35.346-28.654-64-64-64h-64c-35.346 0-64 28.654-64 64s28.654 64 64 64h64c35.346 0 64-28.654 64-64zM828.784 221.726l45.256-45.256c24.992-24.992 24.992-65.516 0-90.51-24.994-24.992-65.518-24.992-90.51 0l-45.256 45.256c-24.992 24.992-24.992 65.516 0 90.51 24.994 24.992 65.518 24.992 90.51 0zM195.216 674.274l-45.256 45.256c-24.994 24.994-24.994 65.516 0 90.51s65.516 24.994 90.51 0l45.256-45.256c24.994-24.994 24.994-65.516 0-90.51s-65.516-24.994-90.51 0zM828.784 674.274c-24.992-24.992-65.516-24.992-90.51 0-24.992 24.994-24.992 65.516 0 90.51l45.256 45.254c24.992 24.994 65.516 24.994 90.51 0 24.992-24.994 24.992-65.516 0-90.51l-45.256-45.254zM195.216 221.726c24.992 24.992 65.516 24.992 90.508 0 24.994-24.994 24.994-65.518 0-90.51l-45.254-45.256c-24.994-24.992-65.516-24.992-90.51 0-24.994 24.994-24.994 65.518 0 90.51l45.256 45.256z" /> | ||
225 | <glyph unicode="" glyph-name="star-empty" d="M1024 562.95l-353.78 51.408-158.22 320.582-158.216-320.582-353.784-51.408 256-249.538-60.432-352.352 316.432 166.358 316.432-166.358-60.434 352.352 256.002 249.538zM512 206.502l-223.462-117.48 42.676 248.83-180.786 176.222 249.84 36.304 111.732 226.396 111.736-226.396 249.836-36.304-180.788-176.222 42.678-248.83-223.462 117.48z" /> | ||
226 | <glyph unicode="" glyph-name="star-half" d="M1024 562.95l-353.78 51.408-158.22 320.582-158.216-320.582-353.784-51.408 256-249.538-60.432-352.352 316.432 166.358 316.432-166.358-60.434 352.352 256.002 249.538zM512 206.502l-0.942-0.496 0.942 570.768 111.736-226.396 249.836-36.304-180.788-176.222 42.678-248.83-223.462 117.48z" /> | ||
227 | <glyph unicode="" glyph-name="star-full" d="M1024 562.95l-353.78 51.408-158.22 320.582-158.216-320.582-353.784-51.408 256-249.538-60.432-352.352 316.432 166.358 316.432-166.358-60.434 352.352 256.002 249.538z" /> | ||
228 | <glyph unicode="" glyph-name="heart" d="M755.188 896c-107.63 0-200.258-87.554-243.164-179-42.938 91.444-135.578 179-243.216 179-148.382 0-268.808-120.44-268.808-268.832 0-301.846 304.5-380.994 512.022-679.418 196.154 296.576 511.978 387.206 511.978 679.418 0 148.392-120.43 268.832-268.812 268.832z" /> | ||
229 | <glyph unicode="" glyph-name="heart-broken" d="M755.188 896c148.382 0 268.812-120.44 268.812-268.832 0-292.21-315.824-382.842-511.978-679.418-207.522 298.424-512.022 377.572-512.022 679.418 0 148.392 120.426 268.832 268.808 268.832 60.354 0 115.99-27.53 160.796-67.834l-77.604-124.166 224-128-128-320 352 384-224 128 61.896 92.846c35.42 21.768 75.21 35.154 117.292 35.154z" /> | ||
230 | <glyph unicode="" glyph-name="man" d="M576 864c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM576 704h-192c-35.346 0-64-28.654-64-64v-320h64v-384h80v384h32v-384h80v384h64v320c0 35.346-28.652 64-64 64z" /> | ||
231 | <glyph unicode="" glyph-name="woman" d="M576 864c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM719 448l49 35.5-133.286 206.116c-5.92 8.98-15.958 14.384-26.714 14.384h-256c-10.756 0-20.792-5.404-26.714-14.384l-133.286-206.116 49-35.5 110.644 143.596 38.458-89.74-134.102-245.856h122.666l21.334-320h64v320h32v-320h64l21.334 320h122.666l-134.104 245.858 38.458 89.74 110.646-143.598z" /> | ||
232 | <glyph unicode="" glyph-name="man-woman" d="M256 864c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM832 864c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96zM256 704h-192c-35.346 0-64-28.654-64-64v-320h64v-384h80v384h32v-384h80v384h64v320c0 35.346-28.652 64-64 64zM975 448l49 35.5-133.286 206.116c-5.92 8.98-15.958 14.384-26.714 14.384h-256c-10.756 0-20.792-5.404-26.714-14.384l-133.286-206.116 49-35.5 110.644 143.596 38.458-89.74-134.102-245.856h122.666l21.334-320h64v320h32v-320h64l21.334 320h122.666l-134.104 245.858 38.458 89.74 110.646-143.598z" /> | ||
233 | <glyph unicode="" glyph-name="happy" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM512 361.24c115.95 0 226.23 30.806 320 84.92-14.574-178.438-153.128-318.16-320-318.16-166.868 0-305.422 139.872-320 318.304 93.77-54.112 204.050-85.064 320-85.064zM256 608c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96zM640 608c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96z" /> | ||
234 | <glyph unicode="" glyph-name="happy2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM704 704c35.348 0 64-42.98 64-96s-28.652-96-64-96-64 42.98-64 96 28.652 96 64 96zM320 704c35.346 0 64-42.98 64-96s-28.654-96-64-96-64 42.98-64 96 28.654 96 64 96zM512 64c-166.868 0-305.422 139.872-320 318.304 93.77-54.114 204.050-85.064 320-85.064s226.23 30.806 320 84.92c-14.574-178.438-153.128-318.16-320-318.16z" /> | ||
235 | <glyph unicode="" glyph-name="smile" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM640 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM704.098 332.74l82.328-49.396c-55.962-93.070-157.916-155.344-274.426-155.344s-218.464 62.274-274.426 155.344l82.328 49.396c39.174-65.148 110.542-108.74 192.098-108.74s152.924 43.592 192.098 108.74z" /> | ||
236 | <glyph unicode="" glyph-name="smile2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM704 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM320 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM512 128c-116.51 0-218.464 62.274-274.426 155.344l82.328 49.396c39.174-65.148 110.542-108.74 192.098-108.74s152.924 43.592 192.098 108.74l82.328-49.396c-55.962-93.070-157.916-155.344-274.426-155.344z" /> | ||
237 | <glyph unicode="" glyph-name="tongue" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM640 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM768 384v-64h-64v-96c0-53.020-42.98-96-96-96s-96 42.98-96 96v96h-256v64h512z" /> | ||
238 | <glyph unicode="" glyph-name="tongue2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM320 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM768 320h-64v-96c0-53.020-42.98-96-96-96s-96 42.98-96 96v96h-256v64h512v-64zM704 576c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64z" /> | ||
239 | <glyph unicode="" glyph-name="sad" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM640 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM319.902 179.26l-82.328 49.396c55.962 93.070 157.916 155.344 274.426 155.344 116.508 0 218.462-62.274 274.426-155.344l-82.328-49.396c-39.174 65.148-110.542 108.74-192.098 108.74-81.558 0-152.924-43.592-192.098-108.74z" /> | ||
240 | <glyph unicode="" glyph-name="sad2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM704 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM320 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM704.098 179.26c-39.174 65.148-110.544 108.74-192.098 108.74-81.556 0-152.924-43.592-192.098-108.74l-82.328 49.396c55.96 93.070 157.916 155.344 274.426 155.344 116.508 0 218.464-62.274 274.426-155.344l-82.328-49.396z" /> | ||
241 | <glyph unicode="" glyph-name="wink" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM542.74 248.972c140.248 27.706 249.11 91.542 288.454 176.594-21.654-167.956-161.518-297.566-330.85-297.566-119.242 0-223.858 64.282-282.892 160.948 70.41-55.058 194.534-65.808 325.288-39.976zM640 608c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96zM352 588.5c-41.796 0-77.334-15.656-90.516-37.5-3.54 5.866-5.484 32.174-5.484 38.75 0 31.066 42.98 56.25 96 56.25s96-25.184 96-56.25c0-6.576-1.944-32.884-5.484-38.75-13.182 21.844-48.72 37.5-90.516 37.5z" /> | ||
242 | <glyph unicode="" glyph-name="wink2" d="M512 960c-282.77 0-512-229.228-512-512 0-282.77 229.228-512 512-512 282.77 0 512 229.23 512 512 0 282.772-229.23 512-512 512zM704 704c35.346 0 64-42.98 64-96s-28.654-96-64-96-64 42.98-64 96 28.654 96 64 96zM352 647.938c59.646 0 102-22.332 102-57.282 0-7.398 3.812-42.994-0.17-49.594-14.828 24.576-54.81 42.188-101.83 42.188s-87.002-17.612-101.83-42.188c-3.982 6.6-0.17 42.196-0.17 49.594 0 34.95 42.354 57.282 102 57.282zM500.344 128c-119.242 0-223.858 64.28-282.892 160.952 70.41-55.060 194.534-65.81 325.288-39.978 140.248 27.706 249.11 91.542 288.454 176.594-21.654-167.96-161.518-297.568-330.85-297.568z" /> | ||
243 | <glyph unicode="" glyph-name="grin" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM192 448v-64c0-140.8 115.2-256 256-256h128c140.8 0 256 115.2 256 256v64h-640zM384 203.012c-26.538 9.458-50.924 24.822-71.544 45.446-36.406 36.402-56.456 84.54-56.456 135.542h128v-180.988zM576 192h-128v192h128v-192zM711.544 248.458c-20.624-20.624-45.010-35.988-71.544-45.446v180.988h128c0-51.002-20.048-99.14-56.456-135.542zM225.352 576c0.002 0 0 0 0 0 9.768 0 18.108 7.056 19.724 16.69 6.158 36.684 37.668 63.31 74.924 63.31s68.766-26.626 74.924-63.31c1.616-9.632 9.956-16.69 19.722-16.69 9.768 0 18.108 7.056 19.724 16.688 1.082 6.436 1.628 12.934 1.628 19.312 0 63.962-52.038 116-116 116s-116-52.038-116-116c0-6.378 0.548-12.876 1.628-19.312 1.62-9.632 9.96-16.688 19.726-16.688zM609.352 576c0.002 0 0 0 0 0 9.77 0 18.112 7.056 19.724 16.69 6.158 36.684 37.668 63.31 74.924 63.31s68.766-26.626 74.924-63.31c1.616-9.632 9.958-16.69 19.722-16.69s18.108 7.056 19.722 16.688c1.082 6.436 1.628 12.934 1.628 19.312 0 63.962-52.038 116-116 116s-116-52.038-116-116c0-6.378 0.544-12.876 1.626-19.312 1.624-9.632 9.964-16.688 19.73-16.688z" /> | ||
244 | <glyph unicode="" glyph-name="grin2" d="M512 960c-282.77 0-512-229.23-512-512s229.226-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM704 724c63.962 0 116-52.038 116-116 0-6.378-0.546-12.876-1.628-19.312-1.618-9.632-9.958-16.688-19.724-16.688s-18.108 7.056-19.722 16.69c-6.16 36.684-37.67 53.31-74.926 53.31s-68.766-16.626-74.924-53.31c-1.616-9.632-9.956-16.69-19.722-16.69-0.002 0 0 0-0.002 0-9.766 0-18.106 7.056-19.722 16.688-1.084 6.436-1.63 12.934-1.63 19.312 0 63.962 52.038 116 116 116zM320 724c63.962 0 116-52.038 116-116 0-6.378-0.548-12.876-1.628-19.312-1.618-9.632-9.956-16.688-19.724-16.688s-18.106 7.056-19.722 16.69c-6.16 36.684-37.67 53.31-74.926 53.31s-68.766-16.626-74.924-53.31c-1.616-9.632-9.956-16.69-19.722-16.69 0 0 0 0 0 0-9.766 0-18.106 7.056-19.724 16.688-1.082 6.436-1.63 12.934-1.63 19.312 0 63.962 52.038 116 116 116zM192 384h192v-247.846c-110.094 28.606-192 129.124-192 247.846zM448 128v256h128v-256h-128zM640 136.154v247.846h192c0-118.722-81.904-219.24-192-247.846z" /> | ||
245 | <glyph unicode="" glyph-name="cool" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM800 704c17.6 0 32-14.4 32-32v-96c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64h-128c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v96c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-32h128v32c0 17.6 14.4 32 32 32h192zM512 192c93.208 0 174.772 49.818 219.546 124.278l54.88-32.934c-55.966-93.070-157.916-155.344-274.426-155.344-48.458 0-94.384 10.796-135.54 30.082l33.162 55.278c31.354-13.714 65.964-21.36 102.378-21.36z" /> | ||
246 | <glyph unicode="" glyph-name="cool2" d="M512 960c-282.77 0-512-229.23-512-512s229.226-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM512 128c-48.458 0-94.384 10.796-135.542 30.082l33.162 55.276c31.356-13.712 65.966-21.358 102.38-21.358 93.208 0 174.772 49.818 219.542 124.278l54.882-32.934c-55.964-93.070-157.914-155.344-274.424-155.344zM832 576c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64h-128c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v96c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-32h128v32c0 17.6 14.4 32 32 32h192c17.6 0 32-14.4 32-32v-96z" /> | ||
247 | <glyph unicode="" glyph-name="angry" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM704.098 179.26c-39.174 65.148-110.544 108.74-192.098 108.74-81.556 0-152.924-43.592-192.098-108.74l-82.328 49.396c55.96 93.070 157.916 155.344 274.426 155.344 116.508 0 218.464-62.274 274.426-155.344l-82.328-49.396zM767.042 679.76c4.284-17.144-6.14-34.518-23.282-38.804-17.626-4.45-38.522-12.12-56.936-21.35 10.648-11.43 17.174-26.752 17.174-43.606 0-35.346-28.654-64-64-64s-64 28.654-64 64c0 1.17 0.036 2.33 0.098 3.484 2.032 47.454 45.212 78.946 81.592 97.138 34.742 17.37 69.102 26.060 70.548 26.422 17.146 4.288 34.518-6.138 38.806-23.284zM256.958 679.76c4.288 17.146 21.66 27.572 38.806 23.284 1.446-0.362 35.806-9.052 70.548-26.422 36.38-18.192 79.56-49.684 81.592-97.138 0.062-1.154 0.098-2.314 0.098-3.484 0-35.346-28.654-64-64-64s-64 28.654-64 64c0 16.854 6.526 32.176 17.174 43.606-18.414 9.23-39.31 16.9-56.936 21.35-17.142 4.286-27.566 21.66-23.282 38.804z" /> | ||
248 | <glyph unicode="" glyph-name="angry2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM576.094 579.484c2.032 47.454 45.21 78.948 81.592 97.138 34.742 17.372 69.104 26.060 70.548 26.422 17.146 4.288 34.52-6.138 38.806-23.284s-6.138-34.518-23.284-38.806c-17.624-4.45-38.522-12.12-56.936-21.35 10.648-11.43 17.174-26.752 17.174-43.606 0-35.346-28.654-64-64-64s-64 28.654-64 64c0.002 1.17 0.038 2.332 0.1 3.486zM256.958 679.76c4.288 17.146 21.66 27.572 38.806 23.284 1.446-0.362 35.806-9.052 70.548-26.422 36.38-18.192 79.56-49.684 81.592-97.138 0.062-1.154 0.098-2.314 0.098-3.484 0-35.346-28.654-64-64-64s-64 28.654-64 64c0 16.854 6.526 32.176 17.174 43.606-18.414 9.23-39.31 16.9-56.936 21.35-17.142 4.286-27.566 21.66-23.282 38.804zM704.098 179.26c-39.174 65.148-110.544 108.74-192.098 108.74-81.556 0-152.924-43.592-192.098-108.74l-82.328 49.396c55.96 93.070 157.916 155.344 274.426 155.344 116.508 0 218.464-62.274 274.426-155.344l-82.328-49.396z" /> | ||
249 | <glyph unicode="" glyph-name="evil" d="M639.996 512c-35.346 0-64 28.654-63.998 64.002 0 1.17 0.036 2.33 0.098 3.484 2.032 47.454 45.212 78.946 81.592 97.138 34.742 17.37 69.102 26.060 70.548 26.422 17.146 4.288 34.518-6.138 38.806-23.284 4.284-17.146-6.14-34.518-23.284-38.806-17.626-4.45-38.522-12.12-56.936-21.35 10.648-11.43 17.174-26.752 17.174-43.606 0-35.346-28.654-64-64-64zM280.242 640.956c-17.144 4.286-27.568 21.66-23.282 38.804 4.286 17.146 21.66 27.572 38.806 23.284 1.444-0.362 35.806-9.050 70.548-26.422 36.382-18.19 79.56-49.684 81.592-97.138 0.062-1.154 0.098-2.316 0.098-3.484 0-35.346-28.654-64-64-64s-64 28.654-64 64c0 16.854 6.526 32.176 17.174 43.606-18.414 9.23-39.312 16.9-56.936 21.35zM512 224c81.554 0 152.924 43.592 192.098 108.74l82.328-49.396c-55.962-93.070-157.916-155.344-274.426-155.344s-218.464 62.274-274.426 155.344l82.328 49.396c39.174-65.148 110.542-108.74 192.098-108.74zM1024 896c0 45.516-9.524 88.8-26.652 128-33.576-76.836-96.448-137.932-174.494-169.178-86.194 65.96-193.936 105.178-310.854 105.178s-224.66-39.218-310.854-105.178c-78.048 31.246-140.918 92.342-174.494 169.178-17.128-39.2-26.652-82.484-26.652-128 0-73.574 24.85-141.328 66.588-195.378-42.37-74.542-66.588-160.75-66.588-252.622 0-282.77 229.23-512 512-512s512 229.23 512 512c0 91.872-24.218 178.080-66.588 252.622 41.738 54.050 66.588 121.804 66.588 195.378zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416z" /> | ||
250 | <glyph unicode="" glyph-name="evil2" d="M1024 896c0 45.516-9.524 88.8-26.652 128-33.576-76.836-96.448-137.932-174.494-169.178-86.194 65.96-193.936 105.178-310.854 105.178s-224.66-39.218-310.854-105.178c-78.048 31.246-140.918 92.342-174.494 169.178-17.128-39.2-26.652-82.484-26.652-128 0-73.574 24.85-141.328 66.588-195.378-42.37-74.542-66.588-160.75-66.588-252.622 0-282.77 229.23-512 512-512s512 229.23 512 512c0 91.872-24.218 178.080-66.588 252.622 41.738 54.050 66.588 121.804 66.588 195.378zM576.094 579.484c2.032 47.454 45.21 78.948 81.592 97.138 34.742 17.372 69.104 26.060 70.548 26.422 17.146 4.288 34.52-6.138 38.806-23.284s-6.138-34.518-23.284-38.806c-17.624-4.45-38.522-12.12-56.936-21.35 10.648-11.43 17.174-26.752 17.174-43.606 0-35.346-28.654-64-64-64s-64 28.654-64 64c0.002 1.17 0.038 2.332 0.1 3.486zM256.958 679.76c4.288 17.146 21.66 27.572 38.806 23.284 1.446-0.362 35.806-9.052 70.548-26.422 36.38-18.192 79.56-49.684 81.592-97.138 0.062-1.154 0.098-2.314 0.098-3.484 0-35.346-28.654-64-64-64s-64 28.654-64 64c0 16.854 6.526 32.176 17.174 43.606-18.414 9.23-39.31 16.9-56.936 21.35-17.142 4.286-27.566 21.66-23.282 38.804zM512 128c-116.51 0-218.464 62.274-274.426 155.344l82.328 49.396c39.174-65.148 110.542-108.74 192.098-108.74 81.554 0 152.924 43.592 192.098 108.74l82.328-49.396c-55.962-93.070-157.916-155.344-274.426-155.344z" /> | ||
251 | <glyph unicode="" glyph-name="shocked" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM384 256c0 70.692 57.308 128 128 128s128-57.308 128-128c0-70.692-57.308-128-128-128s-128 57.308-128 128zM640 608c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96zM256 608c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96z" /> | ||
252 | <glyph unicode="" glyph-name="shocked2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM320 512c-35.346 0-64 42.98-64 96s28.654 96 64 96 64-42.98 64-96-28.654-96-64-96zM512 128c-70.692 0-128 57.308-128 128s57.308 128 128 128c70.692 0 128-57.308 128-128s-57.308-128-128-128zM704 512c-35.346 0-64 42.98-64 96s28.654 96 64 96 64-42.98 64-96-28.654-96-64-96z" /> | ||
253 | <glyph unicode="" glyph-name="baffled" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM384 544c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM352 640c53.020 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM352 704c-88.224 0-160-71.776-160-160s71.776-160 160-160 160 71.776 160 160-71.776 160-160 160v0zM704 544c0-17.673-14.327-32-32-32s-32 14.327-32 32c0 17.673 14.327 32 32 32s32-14.327 32-32zM672 640c53.020 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96 42.98 96 96 96zM672 704c-88.224 0-160-71.776-160-160s71.776-160 160-160 160 71.776 160 160-71.776 160-160 160v0zM384 256h256v-64h-256v64z" /> | ||
254 | <glyph unicode="" glyph-name="baffled2" d="M384 544c0-17.674-14.326-32-32-32s-32 14.326-32 32 14.326 32 32 32 32-14.326 32-32zM704 544c0-17.674-14.326-32-32-32s-32 14.326-32 32 14.326 32 32 32 32-14.326 32-32zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM256 544c0 53.020 42.98 96 96 96s96-42.98 96-96-42.98-96-96-96-96 42.98-96 96zM640 192h-256v64h256v-64zM672 448c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96z" /> | ||
255 | <glyph unicode="" glyph-name="confused" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM640 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM726.106 320h64.864c9.246-72.506-32.452-144.53-103.958-170.56-82.904-30.176-174.9 12.716-205.080 95.616-18.108 49.744-73.306 75.482-123.048 57.372-45.562-16.588-70.956-64.298-60.988-110.424h-64.86c-9.242 72.508 32.45 144.528 103.956 170.56 82.904 30.178 174.902-12.716 205.082-95.614 18.104-49.748 73.306-75.482 123.044-57.372 45.562 16.584 70.956 64.298 60.988 110.422z" /> | ||
256 | <glyph unicode="" glyph-name="confused2" d="M512 960c-282.77 0-512-229.23-512-512s229.226-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM704 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64c0 35.346 28.654 64 64 64zM320 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64c0 35.346 28.654 64 64 64zM687.010 149.44c-82.902-30.18-174.9 12.712-205.080 95.614-18.108 49.742-73.306 75.478-123.048 57.372-45.562-16.588-70.958-64.296-60.988-110.424h-64.86c-9.244 72.508 32.45 144.532 103.956 170.56 82.904 30.18 174.902-12.712 205.082-95.614 18.108-49.742 73.306-75.476 123.046-57.37 45.562 16.584 70.958 64.294 60.988 110.422h64.864c9.24-72.506-32.454-144.532-103.96-170.56z" /> | ||
257 | <glyph unicode="" glyph-name="neutral" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM256 640c0-35.346 28.654-64 64-64s64 28.654 64 64-28.654 64-64 64-64-28.654-64-64zM640 640c0-35.346 28.654-64 64-64s64 28.654 64 64-28.654 64-64 64-64-28.654-64-64zM384 256h256v-64h-256v64z" /> | ||
258 | <glyph unicode="" glyph-name="neutral2" d="M512 960c-282.77 0-512-229.23-512-512s229.226-512 512-512c282.77 0 512 229.23 512 512s-229.23 512-512 512zM640 192h-256v64h256v-64zM704 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64c0 35.346 28.654 64 64 64zM320 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64c0 35.346 28.654 64 64 64z" /> | ||
259 | <glyph unicode="" glyph-name="hipster" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64-28.654-64-64-64-64 28.654-64 64zM640 640c0 35.346 28.654 64 64 64s64-28.654 64-64-28.654-64-64-64-64 28.654-64 64zM675.882 419.882c-37.49 37.49-98.276 37.49-135.766 0s-37.49-98.276 0-135.766c1.204-1.204 2.434-2.368 3.684-3.492 86.528-78.512 288.2 1.842 288.2 103.376-62-40-110.45-9.786-156.118 35.882zM348.118 419.882c37.49 37.49 98.276 37.49 135.766 0s37.49-98.276 0-135.766c-1.204-1.204-2.434-2.368-3.684-3.492-86.528-78.512-288.2 1.842-288.2 103.376 62-40 110.45-9.786 156.118 35.882z" /> | ||
260 | <glyph unicode="" glyph-name="hipster2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM704 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM320 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM543.8 280.624c-1.25 1.124-2.48 2.29-3.684 3.492-18.74 18.74-28.112 43.3-28.118 67.864-0.004-24.562-9.376-49.124-28.118-67.864-1.204-1.204-2.434-2.368-3.684-3.492-86.524-78.512-288.196 1.842-288.196 103.376 62-40 110.45-9.786 156.118 35.882 37.49 37.49 98.276 37.49 135.766 0 18.74-18.74 28.112-43.3 28.118-67.864 0.004 24.562 9.376 49.124 28.118 67.864 37.49 37.49 98.276 37.49 135.766 0 45.664-45.668 94.114-75.882 156.114-35.882 0-101.534-201.672-181.888-288.2-103.376z" /> | ||
261 | <glyph unicode="" glyph-name="wondering" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM745.74 358.38l22.488-76.776-437.008-128.002-22.488 76.776zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM640 640c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64z" /> | ||
262 | <glyph unicode="" glyph-name="wondering2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM704 704c35.346 0 64-28.654 64-64s-28.654-64-64-64-64 28.654-64 64 28.654 64 64 64zM256 640c0 35.346 28.654 64 64 64s64-28.654 64-64-28.654-64-64-64-64 28.654-64 64zM331.244 153.614l-22.488 76.774 437 128 22.488-76.774-437-128z" /> | ||
263 | <glyph unicode="" glyph-name="sleepy" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM640 288c0-88.366-57.308-160-128.002-160s-128.002 71.634-128.002 160c0 88.366 57.308 160 128.002 160s128.002-71.634 128.002-160zM416 620c-8.19 0-16.378 3.124-22.626 9.374-19.334 19.332-63.412 19.332-82.746 0-12.496-12.498-32.758-12.498-45.254 0-12.498 12.496-12.498 32.758 0 45.254 44.528 44.53 128.726 44.53 173.254 0 12.498-12.496 12.498-32.758 0-45.254-6.248-6.25-14.438-9.374-22.628-9.374zM736 620c-8.19 0-16.378 3.124-22.626 9.374-19.332 19.332-63.414 19.332-82.746 0-12.496-12.498-32.758-12.498-45.254 0-12.498 12.496-12.498 32.758 0 45.254 44.528 44.53 128.726 44.53 173.254 0 12.498-12.496 12.498-32.758 0-45.254-6.248-6.25-14.438-9.374-22.628-9.374z" /> | ||
264 | <glyph unicode="" glyph-name="sleepy2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM310.628 629.374c-12.496-12.498-32.758-12.498-45.254 0-12.498 12.496-12.498 32.758 0 45.254 44.528 44.53 128.726 44.53 173.254 0 12.498-12.496 12.498-32.758 0-45.254-6.248-6.25-14.438-9.374-22.628-9.374s-16.378 3.124-22.626 9.374c-19.334 19.332-63.412 19.332-82.746 0zM511.998 128c-70.694 0-128.002 71.634-128.002 160s57.308 160 128.002 160 128.002-71.634 128.002-160-57.308-160-128.002-160zM758.628 629.374c-6.248-6.25-14.438-9.374-22.628-9.374s-16.378 3.124-22.626 9.374c-19.332 19.332-63.414 19.332-82.746 0-12.496-12.498-32.758-12.498-45.254 0-12.498 12.496-12.498 32.758 0 45.254 44.528 44.53 128.726 44.53 173.254 0 12.498-12.498 12.498-32.758 0-45.254z" /> | ||
265 | <glyph unicode="" glyph-name="frustrated" d="M366.312 676.622c-34.742 17.37-69.102 26.060-70.548 26.422-17.146 4.288-34.518-6.138-38.806-23.284-4.284-17.144 6.14-34.518 23.282-38.804 17.626-4.45 38.522-12.12 56.936-21.35-10.648-11.43-17.174-26.752-17.174-43.606 0-35.346 28.654-64 64-64s64 28.654 64 64c0 1.17-0.036 2.33-0.098 3.484-2.032 47.454-45.212 78.946-81.592 97.138zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM236.498 136.336c10.706-5.324 22.756-8.336 35.502-8.336h480c12.746 0 24.796 3.012 35.502 8.338-73.378-64.914-169.828-104.338-275.502-104.338-105.672 0-202.124 39.424-275.502 104.336zM256 208v96c0 8.674 7.328 16 16 16h112v-128h-112c-8.672 0-16 7.326-16 16zM448 192v128h128v-128h-128zM640 192v128h112c8.674 0 16-7.326 16-16v-96c0-8.674-7.326-16-16-16h-112zM823.662 172.498c5.326 10.706 8.338 22.756 8.338 35.502v96c0 44.112-35.888 80-80 80h-480c-44.112 0-80-35.888-80-80v-96c0-12.746 3.012-24.796 8.336-35.502-64.912 73.378-104.336 169.828-104.336 275.502 0 229.75 186.25 416 416 416s416-186.25 416-416c0-105.674-39.424-202.124-104.338-275.502zM728.236 703.044c-1.448-0.362-35.806-9.052-70.548-26.422-36.378-18.192-79.558-49.684-81.592-97.138-0.060-1.154-0.098-2.314-0.098-3.484 0-35.346 28.654-64 64-64s64 28.654 64 64c0 16.854-6.526 32.176-17.174 43.606 18.414 9.23 39.31 16.9 56.936 21.35 17.142 4.286 27.566 21.66 23.284 38.804-4.29 17.146-21.662 27.572-38.808 23.284z" /> | ||
266 | <glyph unicode="" glyph-name="frustrated2" d="M256 304v-96c0-8.674 7.328-16 16-16h112v128h-112c-8.672 0-16-7.326-16-16zM448 320h128v-128h-128v128zM752 320h-112v-128h112c8.674 0 16 7.326 16 16v96c0 8.674-7.326 16-16 16zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM576.096 579.484c2.034 47.454 45.212 78.946 81.592 97.138 34.742 17.37 69.102 26.060 70.548 26.422 17.146 4.288 34.518-6.138 38.806-23.284 4.284-17.144-6.14-34.518-23.284-38.804-17.624-4.45-38.522-12.12-56.936-21.35 10.648-11.43 17.174-26.752 17.174-43.606 0-35.346-28.654-64-64-64s-64 28.654-64 64c0.002 1.17 0.040 2.33 0.1 3.484zM256.958 679.76c4.288 17.146 21.66 27.572 38.806 23.284 1.446-0.362 35.806-9.052 70.548-26.422 36.38-18.192 79.56-49.684 81.592-97.138 0.062-1.154 0.098-2.314 0.098-3.484 0-35.346-28.654-64-64-64s-64 28.654-64 64c0 16.854 6.526 32.176 17.174 43.606-18.414 9.23-39.31 16.9-56.936 21.35-17.142 4.286-27.566 21.66-23.282 38.804zM832 208c0-44.112-35.888-80-80-80h-480c-44.112 0-80 35.888-80 80v96c0 44.112 35.888 80 80 80h480c44.112 0 80-35.888 80-80v-96z" /> | ||
267 | <glyph unicode="" glyph-name="crying" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM800 576h-128c-17.674 0-32 14.328-32 32s14.326 32 32 32h128c17.674 0 32-14.328 32-32s-14.326-32-32-32zM352 576h-128c-17.672 0-32 14.328-32 32s14.328 32 32 32h128c17.672 0 32-14.328 32-32s-14.328-32-32-32zM608 104c-8.19 0-16.378 3.124-22.626 9.374-4.582 4.582-29.42 14.626-73.374 14.626s-68.79-10.044-73.374-14.626c-12.496-12.496-32.758-12.496-45.254 0-12.498 12.496-12.498 32.758 0 45.254 30.122 30.12 92.994 33.372 118.628 33.372 25.632 0 88.506-3.252 118.626-33.374 12.498-12.496 12.498-32.758 0-45.254-6.248-6.248-14.436-9.372-22.626-9.372zM736 384c-17.674 0-32 14.326-32 32v64c0 17.672 14.326 32 32 32s32-14.328 32-32v-64c0-17.674-14.326-32-32-32zM736 192c-17.674 0-32 14.326-32 32v64c0 17.674 14.326 32 32 32s32-14.326 32-32v-64c0-17.674-14.326-32-32-32zM288 384c-17.672 0-32 14.326-32 32v64c0 17.672 14.328 32 32 32s32-14.328 32-32v-64c0-17.674-14.328-32-32-32zM288 192c-17.672 0-32 14.326-32 32v64c0 17.674 14.328 32 32 32s32-14.326 32-32v-64c0-17.674-14.328-32-32-32z" /> | ||
268 | <glyph unicode="" glyph-name="crying2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM320 224c0-17.674-14.328-32-32-32s-32 14.326-32 32v64c0 17.674 14.328 32 32 32s32-14.326 32-32v-64zM320 416c0-17.674-14.328-32-32-32s-32 14.326-32 32v64c0 17.672 14.328 32 32 32s32-14.328 32-32v-64zM352 576h-128c-17.672 0-32 14.328-32 32s14.328 32 32 32h128c17.672 0 32-14.328 32-32s-14.328-32-32-32zM630.626 113.374c-6.248-6.25-14.436-9.374-22.626-9.374s-16.378 3.124-22.626 9.374c-4.582 4.582-29.42 14.626-73.374 14.626s-68.79-10.044-73.374-14.626c-12.496-12.496-32.758-12.496-45.254 0-12.498 12.496-12.498 32.758 0 45.254 30.122 30.12 92.994 33.372 118.628 33.372 25.632 0 88.506-3.252 118.626-33.374 12.498-12.496 12.498-32.756 0-45.252zM768 224c0-17.674-14.326-32-32-32s-32 14.326-32 32v64c0 17.674 14.326 32 32 32s32-14.326 32-32v-64zM768 416c0-17.674-14.326-32-32-32s-32 14.326-32 32v64c0 17.672 14.326 32 32 32s32-14.328 32-32v-64zM800 576h-128c-17.674 0-32 14.328-32 32s14.326 32 32 32h128c17.674 0 32-14.328 32-32s-14.326-32-32-32z" /> | ||
269 | <glyph unicode="" glyph-name="point-up" d="M960 352v160c0 52.934-43.066 96-96 96-17.104 0-33.176-4.494-47.098-12.368-17.076 26.664-46.958 44.368-80.902 44.368-24.564 0-47.004-9.274-64-24.504-16.996 15.23-39.436 24.504-64 24.504-11.214 0-21.986-1.934-32-5.484v229.484c0 52.934-43.066 96-96 96s-96-43.066-96-96v-394.676l-176.018 93.836c-14.536 8.4-31.126 12.84-47.982 12.84-52.934 0-96-43.066-96-96 0-26.368 10.472-50.954 29.49-69.226 0.248-0.238 0.496-0.47 0.75-0.7l239.17-218.074h-45.41c-17.672 0-32-14.326-32-32v-192c0-17.674 14.328-32 32-32h640c17.674 0 32 14.326 32 32v192c0 17.674-14.326 32-32 32h-44.222l72.844 145.69c2.222 4.442 3.378 9.342 3.378 14.31zM896 96c0-17.674-14.326-32-32-32s-32 14.326-32 32 14.326 32 32 32 32-14.326 32-32zM896 359.554l-83.776-167.554h-383.826l-290.818 265.166c-6.18 6.070-9.58 14.164-9.58 22.834 0 17.644 14.356 32 32 32 5.46 0 10.612-1.31 15.324-3.894 0.53-0.324 1.070-0.632 1.622-0.926l224-119.416c9.92-5.288 21.884-4.986 31.52 0.8 9.638 5.782 15.534 16.196 15.534 27.436v448c0 17.644 14.356 32 32 32s32-14.356 32-32v-320c0-17.672 14.326-32 32-32s32 14.328 32 32c0 17.644 14.356 32 32 32s32-14.356 32-32c0-17.672 14.326-32 32-32s32 14.328 32 32c0 17.644 14.356 32 32 32s32-14.356 32-32v-32c0-17.672 14.326-32 32-32s32 14.328 32 32c0 17.644 14.356 32 32 32s32-14.356 32-32v-152.446z" /> | ||
270 | <glyph unicode="" glyph-name="point-right" d="M416 0h160c52.934 0 96 43.066 96 96 0 17.104-4.494 33.176-12.368 47.098 26.664 17.076 44.368 46.958 44.368 80.902 0 24.564-9.276 47.004-24.504 64 15.228 16.996 24.504 39.436 24.504 64 0 11.214-1.934 21.986-5.484 32h229.484c52.934 0 96 43.066 96 96s-43.066 96-96 96h-394.676l93.836 176.018c8.4 14.536 12.84 31.126 12.84 47.982 0 52.934-43.066 96-96 96-26.368 0-50.954-10.472-69.226-29.49-0.238-0.248-0.47-0.496-0.7-0.75l-218.074-239.17v45.41c0 17.672-14.326 32-32 32h-192c-17.674 0-32-14.328-32-32v-640c0-17.674 14.326-32 32-32h192c17.674 0 32 14.326 32 32v44.222l145.69-72.844c4.444-2.222 9.342-3.378 14.31-3.378zM160 64c-17.674 0-32 14.326-32 32s14.326 32 32 32 32-14.326 32-32-14.326-32-32-32zM423.556 64l-167.556 83.778v383.824l265.168 290.818c6.066 6.18 14.162 9.58 22.832 9.58 17.644 0 32-14.356 32-32 0-5.46-1.308-10.612-3.894-15.324-0.324-0.53-0.632-1.070-0.926-1.622l-119.418-224c-5.288-9.92-4.986-21.884 0.8-31.52 5.784-9.638 16.198-15.534 27.438-15.534h448c17.644 0 32-14.356 32-32s-14.356-32-32-32h-320c-17.672 0-32-14.326-32-32s14.328-32 32-32c17.644 0 32-14.356 32-32s-14.356-32-32-32c-17.674 0-32-14.326-32-32s14.326-32 32-32c17.644 0 32-14.356 32-32s-14.356-32-32-32h-32c-17.674 0-32-14.326-32-32s14.326-32 32-32c17.644 0 32-14.356 32-32s-14.356-32-32-32h-152.444z" /> | ||
271 | <glyph unicode="" glyph-name="point-down" d="M960 544v-160c0-52.934-43.066-96-96-96-17.104 0-33.176 4.494-47.098 12.368-17.076-26.662-46.96-44.368-80.902-44.368-24.564 0-47.004 9.276-64 24.504-16.996-15.228-39.436-24.504-64-24.504-11.214 0-21.986 1.934-32 5.484v-229.484c0-52.934-43.066-96-96-96-52.936 0-96 43.066-96 96v394.676l-176.018-93.836c-14.538-8.398-31.126-12.84-47.982-12.84-52.936 0-96 43.066-96 96 0 26.368 10.472 50.952 29.488 69.226 0.248 0.238 0.496 0.47 0.75 0.7l239.17 218.074h-45.408c-17.674 0-32 14.326-32 32v192c0 17.674 14.326 32 32 32h640c17.674 0 32-14.326 32-32v-192c0-17.674-14.326-32-32-32h-44.222l72.842-145.69c2.224-4.442 3.38-9.342 3.38-14.31zM896 800c0 17.674-14.326 32-32 32s-32-14.326-32-32 14.326-32 32-32 32 14.326 32 32zM896 536.446l-83.778 167.554h-383.824l-290.82-265.168c-6.18-6.066-9.578-14.162-9.578-22.832 0-17.644 14.356-32 32-32 5.458 0 10.612 1.308 15.324 3.894 0.53 0.324 1.070 0.632 1.622 0.926l224 119.416c9.92 5.288 21.884 4.986 31.52-0.8 9.638-5.782 15.534-16.196 15.534-27.436v-448c0-17.644 14.356-32 32-32s32 14.356 32 32v320c0 17.672 14.326 32 32 32s32-14.328 32-32c0-17.644 14.356-32 32-32s32 14.356 32 32c0 17.674 14.326 32 32 32s32-14.326 32-32c0-17.644 14.356-32 32-32s32 14.356 32 32v32c0 17.674 14.326 32 32 32s32-14.326 32-32c0-17.644 14.356-32 32-32s32 14.356 32 32v152.446z" /> | ||
272 | <glyph unicode="" glyph-name="point-left" d="M608 0h-160c-52.934 0-96 43.066-96 96 0 17.104 4.494 33.176 12.368 47.098-26.662 17.076-44.368 46.958-44.368 80.902 0 24.564 9.276 47.004 24.504 64-15.228 16.996-24.504 39.436-24.504 64 0 11.214 1.934 21.986 5.484 32h-229.484c-52.934 0-96 43.066-96 96 0 52.936 43.066 96 96 96h394.676l-93.836 176.018c-8.398 14.536-12.84 31.126-12.84 47.982 0 52.936 43.066 96 96 96 26.368 0 50.952-10.472 69.224-29.488 0.238-0.248 0.472-0.496 0.7-0.75l218.076-239.17v45.408c0 17.674 14.326 32 32 32h192c17.674 0 32-14.326 32-32v-640c0-17.674-14.326-32-32-32h-192c-17.674 0-32 14.326-32 32v44.222l-145.69-72.844c-4.442-2.222-9.34-3.378-14.31-3.378zM864 64c17.674 0 32 14.326 32 32s-14.326 32-32 32-32-14.326-32-32 14.326-32 32-32zM600.446 64l167.554 83.778v383.824l-265.168 290.82c-6.066 6.18-14.162 9.578-22.832 9.578-17.644 0-32-14.356-32-32 0-5.458 1.308-10.612 3.894-15.324 0.324-0.53 0.632-1.070 0.926-1.622l119.416-224c5.29-9.92 4.988-21.884-0.798-31.52-5.784-9.638-16.198-15.534-27.438-15.534h-448c-17.644 0-32-14.356-32-32s14.356-32 32-32h320c17.672 0 32-14.326 32-32s-14.328-32-32-32c-17.644 0-32-14.356-32-32s14.356-32 32-32c17.674 0 32-14.326 32-32s-14.326-32-32-32c-17.644 0-32-14.356-32-32s14.356-32 32-32h32c17.674 0 32-14.326 32-32s-14.326-32-32-32c-17.644 0-32-14.356-32-32s14.356-32 32-32h152.446z" /> | ||
273 | <glyph unicode="" glyph-name="warning" d="M512 867.226l429.102-855.226h-858.206l429.104 855.226zM512 960c-22.070 0-44.14-14.882-60.884-44.648l-437.074-871.112c-33.486-59.532-5-108.24 63.304-108.24h869.308c68.3 0 96.792 48.708 63.3 108.24h0.002l-437.074 871.112c-16.742 29.766-38.812 44.648-60.882 44.648v0zM576 128c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64zM512 256c-35.346 0-64 28.654-64 64v192c0 35.346 28.654 64 64 64s64-28.654 64-64v-192c0-35.346-28.654-64-64-64z" /> | ||
274 | <glyph unicode="" glyph-name="notification" d="M512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512zM448 256h128v-128h-128zM448 768h128v-384h-128z" /> | ||
275 | <glyph unicode="" glyph-name="question" d="M448 256h128v-128h-128zM704 704c35.346 0 64-28.654 64-64v-192l-192-128h-128v64l192 128v64h-320v128h384zM512 864c-111.118 0-215.584-43.272-294.156-121.844s-121.844-183.038-121.844-294.156c0-111.118 43.272-215.584 121.844-294.156s183.038-121.844 294.156-121.844c111.118 0 215.584 43.272 294.156 121.844s121.844 183.038 121.844 294.156c0 111.118-43.272 215.584-121.844 294.156s-183.038 121.844-294.156 121.844zM512 960v0c282.77 0 512-229.23 512-512s-229.23-512-512-512c-282.77 0-512 229.23-512 512s229.23 512 512 512z" /> | ||
276 | <glyph unicode="" glyph-name="plus" d="M992 576h-352v352c0 17.672-14.328 32-32 32h-192c-17.672 0-32-14.328-32-32v-352h-352c-17.672 0-32-14.328-32-32v-192c0-17.672 14.328-32 32-32h352v-352c0-17.672 14.328-32 32-32h192c17.672 0 32 14.328 32 32v352h352c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32z" /> | ||
277 | <glyph unicode="" glyph-name="minus" d="M0 544v-192c0-17.672 14.328-32 32-32h960c17.672 0 32 14.328 32 32v192c0 17.672-14.328 32-32 32h-960c-17.672 0-32-14.328-32-32z" /> | ||
278 | <glyph unicode="" glyph-name="info" d="M448 656c0 26.4 21.6 48 48 48h32c26.4 0 48-21.6 48-48v-32c0-26.4-21.6-48-48-48h-32c-26.4 0-48 21.6-48 48v32zM640 192h-256v64h64v192h-64v64h192v-256h64zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416z" /> | ||
279 | <glyph unicode="" glyph-name="cancel-circle" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM672 704l-160-160-160 160-96-96 160-160-160-160 96-96 160 160 160-160 96 96-160 160 160 160z" /> | ||
280 | <glyph unicode="" glyph-name="blocked" d="M874.040 810.040c-96.706 96.702-225.28 149.96-362.040 149.96s-265.334-53.258-362.040-149.96c-96.702-96.706-149.96-225.28-149.96-362.040s53.258-265.334 149.96-362.040c96.706-96.702 225.28-149.96 362.040-149.96s265.334 53.258 362.040 149.96c96.702 96.706 149.96 225.28 149.96 362.040s-53.258 265.334-149.96 362.040zM896 448c0-82.814-26.354-159.588-71.112-222.38l-535.266 535.268c62.792 44.758 139.564 71.112 222.378 71.112 211.738 0 384-172.262 384-384zM128 448c0 82.814 26.354 159.586 71.112 222.378l535.27-535.268c-62.794-44.756-139.568-71.11-222.382-71.11-211.738 0-384 172.262-384 384z" /> | ||
281 | <glyph unicode="" glyph-name="cross" d="M1014.662 137.34c-0.004 0.004-0.008 0.008-0.012 0.010l-310.644 310.65 310.644 310.65c0.004 0.004 0.008 0.006 0.012 0.010 3.344 3.346 5.762 7.254 7.312 11.416 4.246 11.376 1.824 24.682-7.324 33.83l-146.746 146.746c-9.148 9.146-22.45 11.566-33.828 7.32-4.16-1.55-8.070-3.968-11.418-7.31 0-0.004-0.004-0.006-0.008-0.010l-310.648-310.652-310.648 310.65c-0.004 0.004-0.006 0.006-0.010 0.010-3.346 3.342-7.254 5.76-11.414 7.31-11.38 4.248-24.682 1.826-33.83-7.32l-146.748-146.748c-9.148-9.148-11.568-22.452-7.322-33.828 1.552-4.16 3.97-8.072 7.312-11.416 0.004-0.002 0.006-0.006 0.010-0.010l310.65-310.648-310.65-310.652c-0.002-0.004-0.006-0.006-0.008-0.010-3.342-3.346-5.76-7.254-7.314-11.414-4.248-11.376-1.826-24.682 7.322-33.83l146.748-146.746c9.15-9.148 22.452-11.568 33.83-7.322 4.16 1.552 8.070 3.97 11.416 7.312 0.002 0.004 0.006 0.006 0.010 0.010l310.648 310.65 310.648-310.65c0.004-0.002 0.008-0.006 0.012-0.008 3.348-3.344 7.254-5.762 11.414-7.314 11.378-4.246 24.684-1.826 33.828 7.322l146.746 146.748c9.148 9.148 11.57 22.454 7.324 33.83-1.552 4.16-3.97 8.068-7.314 11.414z" /> | ||
282 | <glyph unicode="" glyph-name="checkmark" d="M864 832l-480-480-224 224-160-160 384-384 640 640z" /> | ||
283 | <glyph unicode="" glyph-name="checkmark2" d="M397.434 42.304l-397.868 391.6 197.378 194.27 200.49-197.332 429.62 422.852 197.378-194.27-626.998-617.12zM107.912 433.904l289.524-284.962 518.656 510.482-89.036 87.632-429.62-422.852-200.49 197.334-89.034-87.634z" /> | ||
284 | <glyph unicode="" glyph-name="spell-check" d="M128 704h128v-192h64v384c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-384h64v192zM128 896h128v-128h-128v128zM960 896v64h-192c-35.202 0-64-28.8-64-64v-320c0-35.2 28.798-64 64-64h192v64h-192v320h192zM640 800v96c0 35.2-28.8 64-64 64h-192v-448h192c35.2 0 64 28.8 64 64v96c0 35.2-8.8 64-44 64 35.2 0 44 28.8 44 64zM576 576h-128v128h128v-128zM576 768h-128v128h128v-128zM832 384l-416-448-224 288 82 70 142-148 352 302z" /> | ||
285 | <glyph unicode="" glyph-name="enter" d="M384 448h-320v128h320v128l192-192-192-192zM1024 960v-832l-384-192v192h-384v256h64v-192h320v576l256 128h-576v-256h-64v320z" /> | ||
286 | <glyph unicode="" glyph-name="exit" d="M768 320v128h-320v128h320v128l192-192zM704 384v-256h-320v-192l-384 192v832h704v-320h-64v256h-512l256-128v-576h256v192z" /> | ||
287 | <glyph unicode="" glyph-name="play2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM384 672l384-224-384-224z" /> | ||
288 | <glyph unicode="" glyph-name="pause" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM320 640h128v-384h-128zM576 640h128v-384h-128z" /> | ||
289 | <glyph unicode="" glyph-name="stop" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM320 640h384v-384h-384z" /> | ||
290 | <glyph unicode="" glyph-name="previous" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM448 448l256 192v-384zM320 640h128v-384h-128v384z" /> | ||
291 | <glyph unicode="" glyph-name="next" d="M512 960c282.77 0 512-229.23 512-512s-229.23-512-512-512-512 229.23-512 512 229.23 512 512 512zM512 32c229.75 0 416 186.25 416 416s-186.25 416-416 416-416-186.25-416-416 186.25-416 416-416zM576 448l-256 192v-384zM704 640h-128v-384h128v384z" /> | ||
292 | <glyph unicode="" glyph-name="backward" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM704 288l-224 160 224 160zM448 288l-224 160 224 160z" /> | ||
293 | <glyph unicode="" glyph-name="forward2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM320 608l224-160-224-160zM576 608l224-160-224-160z" /> | ||
294 | <glyph unicode="" glyph-name="play3" d="M192 832l640-384-640-384z" /> | ||
295 | <glyph unicode="" glyph-name="pause2" d="M128 832h320v-768h-320zM576 832h320v-768h-320z" /> | ||
296 | <glyph unicode="" glyph-name="stop2" d="M128 832h768v-768h-768z" /> | ||
297 | <glyph unicode="" glyph-name="backward2" d="M576 800v-320l320 320v-704l-320 320v-320l-352 352z" /> | ||
298 | <glyph unicode="" glyph-name="forward3" d="M512 96v320l-320-320v704l320-320v320l352-352z" /> | ||
299 | <glyph unicode="" glyph-name="first" d="M128 64v768h128v-352l320 320v-320l320 320v-704l-320 320v-320l-320 320v-352z" /> | ||
300 | <glyph unicode="" glyph-name="last" d="M896 832v-768h-128v352l-320-320v320l-320-320v704l320-320v320l320-320v352z" /> | ||
301 | <glyph unicode="" glyph-name="previous2" d="M256 64v768h128v-352l320 320v-704l-320 320v-352z" /> | ||
302 | <glyph unicode="" glyph-name="next2" d="M768 832v-768h-128v352l-320-320v704l320-320v352z" /> | ||
303 | <glyph unicode="" glyph-name="eject" d="M0 192h1024v-128h-1024zM512 832l512-512h-1024z" /> | ||
304 | <glyph unicode="" glyph-name="volume-high" horiz-adv-x="1088" d="M890.040 37.96c-12.286 0-24.566 4.686-33.942 14.056-18.744 18.746-18.744 49.136 0 67.882 87.638 87.642 135.904 204.16 135.904 328.1 0 123.938-48.266 240.458-135.904 328.098-18.744 18.746-18.744 49.138 0 67.882s49.138 18.744 67.882 0c105.77-105.772 164.022-246.4 164.022-395.98s-58.252-290.208-164.022-395.98c-9.372-9.372-21.656-14.058-33.94-14.058zM719.53 128.47c-12.286 0-24.566 4.686-33.942 14.056-18.744 18.744-18.744 49.136 0 67.882 131.006 131.006 131.006 344.17 0 475.176-18.744 18.746-18.744 49.138 0 67.882 18.744 18.742 49.138 18.744 67.882 0 81.594-81.59 126.53-190.074 126.53-305.466 0-115.39-44.936-223.876-126.53-305.47-9.372-9.374-21.656-14.060-33.94-14.060v0zM549.020 218.98c-12.286 0-24.568 4.686-33.942 14.058-18.746 18.746-18.746 49.134 0 67.88 81.1 81.1 81.1 213.058 0 294.156-18.746 18.746-18.746 49.138 0 67.882s49.136 18.744 67.882 0c118.53-118.53 118.53-311.392 0-429.922-9.372-9.368-21.656-14.054-33.94-14.054zM416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> | ||
305 | <glyph unicode="" glyph-name="volume-medium" d="M719.53 128.47c-12.286 0-24.566 4.686-33.942 14.056-18.744 18.744-18.744 49.136 0 67.882 131.006 131.006 131.006 344.17 0 475.176-18.744 18.746-18.744 49.138 0 67.882 18.744 18.742 49.138 18.744 67.882 0 81.594-81.59 126.53-190.074 126.53-305.466 0-115.39-44.936-223.876-126.53-305.47-9.372-9.374-21.656-14.060-33.94-14.060v0zM549.020 218.98c-12.286 0-24.566 4.686-33.942 14.058-18.746 18.746-18.746 49.134 0 67.88 81.1 81.1 81.1 213.058 0 294.156-18.746 18.746-18.746 49.138 0 67.882s49.136 18.744 67.882 0c118.53-118.53 118.53-311.392 0-429.922-9.372-9.368-21.656-14.054-33.94-14.054zM416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> | ||
306 | <glyph unicode="" glyph-name="volume-low" d="M549.020 218.98c-12.286 0-24.566 4.686-33.942 14.058-18.746 18.746-18.746 49.134 0 67.88 81.1 81.1 81.1 213.058 0 294.156-18.746 18.746-18.746 49.138 0 67.882s49.136 18.744 67.882 0c118.53-118.53 118.53-311.392 0-429.922-9.372-9.368-21.656-14.054-33.94-14.054zM416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> | ||
307 | <glyph unicode="" glyph-name="volume-mute" d="M416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> | ||
308 | <glyph unicode="" glyph-name="volume-mute2" d="M960 340.852v-84.852h-84.852l-107.148 107.148-107.148-107.148h-84.852v84.852l107.148 107.148-107.148 107.148v84.852h84.852l107.148-107.148 107.148 107.148h84.852v-84.852l-107.148-107.148 107.148-107.148zM416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> | ||
309 | <glyph unicode="" glyph-name="volume-increase" d="M1024 384h-192v-192h-128v192h-192v128h192v192h128v-192h192v-128zM416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> | ||
310 | <glyph unicode="" glyph-name="volume-decrease" d="M512 512h512v-128h-512v128zM416.006 0c-8.328 0-16.512 3.25-22.634 9.374l-246.626 246.626h-114.746c-17.672 0-32 14.326-32 32v320c0 17.672 14.328 32 32 32h114.746l246.626 246.628c9.154 9.154 22.916 11.89 34.874 6.936 11.958-4.952 19.754-16.622 19.754-29.564v-832c0-12.944-7.796-24.612-19.754-29.564-3.958-1.64-8.118-2.436-12.24-2.436z" /> | ||
311 | <glyph unicode="" glyph-name="loop" d="M128 640h640v-192l256 256-256 256v-192h-768v-384h128zM896 256h-640v192l-256-256 256-256v192h768v384h-128z" /> | ||
312 | <glyph unicode="" glyph-name="loop2" d="M889.68 793.68c-93.608 102.216-228.154 166.32-377.68 166.32-282.77 0-512-229.23-512-512h96c0 229.75 186.25 416 416 416 123.020 0 233.542-53.418 309.696-138.306l-149.696-149.694h352v352l-134.32-134.32zM928 448c0-229.75-186.25-416-416-416-123.020 0-233.542 53.418-309.694 138.306l149.694 149.694h-352v-352l134.32 134.32c93.608-102.216 228.154-166.32 377.68-166.32 282.77 0 512 229.23 512 512h-96z" /> | ||
313 | <glyph unicode="" glyph-name="infinite" d="M783.988 207.988c-64.104 0-124.372 24.96-169.7 70.288l-102.288 102.282-102.276-102.27c-45.332-45.336-105.6-70.3-169.706-70.3-64.118 0-124.39 24.964-169.722 70.3-45.332 45.334-70.296 105.604-70.296 169.712s24.964 124.38 70.296 169.714c45.334 45.332 105.608 70.296 169.714 70.296 64.108 0 124.38-24.964 169.712-70.296l102.278-102.276 102.276 102.276c45.332 45.332 105.604 70.298 169.712 70.298 64.112 0 124.384-24.966 169.71-70.298 45.338-45.334 70.302-105.606 70.302-169.714 0-64.112-24.964-124.382-70.3-169.71-45.326-45.336-105.598-70.302-169.712-70.302zM681.72 345.712c27.322-27.31 63.64-42.354 102.268-42.352 38.634 0 74.958 15.044 102.276 42.362 27.316 27.322 42.364 63.644 42.364 102.278s-15.046 74.956-42.364 102.274c-27.32 27.318-63.64 42.364-102.276 42.364-38.632 0-74.956-15.044-102.278-42.364l-102.268-102.274 102.278-102.288zM240.012 592.638c-38.634 0-74.956-15.044-102.274-42.364-27.32-27.318-42.364-63.64-42.364-102.274 0-38.632 15.044-74.954 42.364-102.276 27.32-27.316 63.642-42.364 102.274-42.364 38.634 0 74.956 15.044 102.272 42.362l102.276 102.278-102.276 102.274c-27.318 27.32-63.64 42.366-102.272 42.364v0z" /> | ||
314 | <glyph unicode="" glyph-name="shuffle" d="M768 256h-101.49l-160 160 160 160h101.49v-160l224 224-224 224v-160h-128c-16.974 0-33.252-6.744-45.254-18.746l-178.746-178.744-178.746 178.746c-12 12-28.28 18.744-45.254 18.744h-192v-128h165.49l160-160-160-160h-165.49v-128h192c16.974 0 33.252 6.742 45.254 18.746l178.746 178.744 178.746-178.744c12.002-12.004 28.28-18.746 45.254-18.746h128v-160l224 224-224 224v-160z" /> | ||
315 | <glyph unicode="" glyph-name="arrow-up-left" d="M0 224l256 256 544-544 224 224-544 544 255.998 256h-735.998v-736z" /> | ||
316 | <glyph unicode="" glyph-name="arrow-up" d="M512 928l-480-480h288v-512h384v512h288z" /> | ||
317 | <glyph unicode="" glyph-name="arrow-up-right" d="M288 960l256-256-544-544 224-224 544 544 256-255.998v735.998h-736z" /> | ||
318 | <glyph unicode="" glyph-name="arrow-right" d="M992 448l-480 480v-288h-512v-384h512v-288z" /> | ||
319 | <glyph unicode="" glyph-name="arrow-down-right" d="M1024 672l-256-256-544 544-224-224 544-544-255.998-256h735.998v736z" /> | ||
320 | <glyph unicode="" glyph-name="arrow-down" d="M512-32l480 480h-288v512h-384v-512h-288z" /> | ||
321 | <glyph unicode="" glyph-name="arrow-down-left" d="M736-64l-256 256 544 544-224 224-544-544-256 255.998v-735.998h736z" /> | ||
322 | <glyph unicode="" glyph-name="arrow-left" d="M32 448l480-480v288h512v384h-512v288z" /> | ||
323 | <glyph unicode="" glyph-name="arrow-up-left2" d="M877.254 173.254l-530.744 530.746h229.49c35.346 0 64 28.654 64 64s-28.654 64-64 64h-384c-25.886 0-49.222-15.592-59.128-39.508-3.282-7.924-4.84-16.242-4.838-24.492h-0.034v-384c0-35.346 28.654-64 64-64s64 28.654 64 64v229.49l530.746-530.744c12.496-12.498 28.876-18.746 45.254-18.746s32.758 6.248 45.254 18.746c24.994 24.992 24.994 65.516 0 90.508z" /> | ||
324 | <glyph unicode="" glyph-name="arrow-up2" d="M877.254 557.254l-320 320c-24.992 24.994-65.514 24.994-90.508 0l-320-320c-24.994-24.994-24.994-65.516 0-90.51 24.994-24.996 65.516-24.996 90.51 0l210.744 210.746v-613.49c0-35.346 28.654-64 64-64s64 28.654 64 64v613.49l210.746-210.746c12.496-12.496 28.876-18.744 45.254-18.744s32.758 6.248 45.254 18.746c24.994 24.994 24.994 65.514 0 90.508z" /> | ||
325 | <glyph unicode="" glyph-name="arrow-up-right2" d="M237.254 82.746l530.746 530.744v-229.49c0-35.346 28.654-64 64-64s64 28.654 64 64v384c0 25.884-15.594 49.222-39.508 59.126-7.924 3.284-16.242 4.84-24.492 4.838v0.036h-384c-35.346 0-64-28.654-64-64 0-35.348 28.654-64 64-64h229.49l-530.744-530.746c-12.498-12.496-18.746-28.876-18.746-45.254s6.248-32.758 18.746-45.254c24.992-24.994 65.516-24.994 90.508 0z" /> | ||
326 | <glyph unicode="" glyph-name="arrow-right2" d="M621.254 82.746l320 320c24.994 24.992 24.994 65.516 0 90.51l-320 320c-24.994 24.992-65.516 24.992-90.51 0-24.994-24.994-24.994-65.516 0-90.51l210.746-210.746h-613.49c-35.346 0-64-28.654-64-64s28.654-64 64-64h613.49l-210.746-210.746c-12.496-12.496-18.744-28.876-18.744-45.254s6.248-32.758 18.744-45.254c24.994-24.994 65.516-24.994 90.51 0z" /> | ||
327 | <glyph unicode="" glyph-name="arrow-down-right2" d="M146.746 722.746l530.742-530.746h-229.488c-35.346 0-64-28.654-64-64s28.654-64 64-64h384c25.884 0 49.222 15.594 59.126 39.508 3.284 7.924 4.84 16.242 4.838 24.492h0.036v384c0 35.346-28.654 64-64 64-35.348 0-64-28.654-64-64v-229.49l-530.746 530.744c-12.496 12.498-28.874 18.746-45.254 18.746s-32.758-6.248-45.254-18.746c-24.994-24.992-24.994-65.516 0-90.508z" /> | ||
328 | <glyph unicode="" glyph-name="arrow-down2" d="M877.254 338.746l-320-320c-24.992-24.994-65.514-24.994-90.508 0l-320 320c-24.994 24.994-24.994 65.516 0 90.51 24.994 24.996 65.516 24.996 90.51 0l210.744-210.746v613.49c0 35.346 28.654 64 64 64s64-28.654 64-64v-613.49l210.746 210.746c12.496 12.496 28.876 18.744 45.254 18.744s32.758-6.248 45.254-18.746c24.994-24.994 24.994-65.514 0-90.508z" /> | ||
329 | <glyph unicode="" glyph-name="arrow-down-left2" d="M786.744 813.256l-530.744-530.744v229.49c0 35.346-28.654 64-64 64s-64-28.654-64-64v-384.002c0-25.886 15.592-49.222 39.508-59.128 7.924-3.282 16.242-4.84 24.492-4.836v-0.036l384 0.002c35.344 0 64 28.654 64 63.998 0 35.348-28.656 64-64 64h-229.49l530.744 530.746c12.496 12.496 18.746 28.876 18.746 45.256 0 16.376-6.25 32.758-18.746 45.254-24.992 24.992-65.518 24.992-90.51 0v0z" /> | ||
330 | <glyph unicode="" glyph-name="arrow-left2" d="M402.746 82.746l-320 320c-24.994 24.992-24.994 65.516 0 90.51l320 320c24.994 24.992 65.516 24.992 90.51 0 24.994-24.994 24.994-65.516 0-90.51l-210.746-210.746h613.49c35.346 0 64-28.654 64-64s-28.654-64-64-64h-613.49l210.746-210.746c12.496-12.496 18.744-28.876 18.744-45.254s-6.248-32.758-18.744-45.254c-24.994-24.994-65.516-24.994-90.51 0z" /> | ||
331 | <glyph unicode="" glyph-name="circle-up" d="M0 448c0-282.77 229.23-512 512-512s512 229.23 512 512-229.23 512-512 512-512-229.23-512-512zM928 448c0-229.75-186.25-416-416-416s-416 186.25-416 416 186.25 416 416 416 416-186.25 416-416zM706.744 290.744l90.512 90.512-285.256 285.254-285.254-285.256 90.508-90.508 194.746 194.744z" /> | ||
332 | <glyph unicode="" glyph-name="circle-right" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 32c-229.75 0-416 186.25-416 416s186.25 416 416 416 416-186.25 416-416-186.25-416-416-416zM354.744 253.256l90.512-90.512 285.254 285.256-285.256 285.254-90.508-90.508 194.744-194.746z" /> | ||
333 | <glyph unicode="" glyph-name="circle-down" d="M1024 448c0 282.77-229.23 512-512 512s-512-229.23-512-512 229.23-512 512-512 512 229.23 512 512zM96 448c0 229.75 186.25 416 416 416s416-186.25 416-416-186.25-416-416-416-416 186.25-416 416zM317.256 605.256l-90.512-90.512 285.256-285.254 285.254 285.256-90.508 90.508-194.746-194.744z" /> | ||
334 | <glyph unicode="" glyph-name="circle-left" d="M512-64c282.77 0 512 229.23 512 512s-229.23 512-512 512-512-229.23-512-512 229.23-512 512-512zM512 864c229.75 0 416-186.25 416-416s-186.25-416-416-416-416 186.25-416 416 186.25 416 416 416zM669.256 642.744l-90.512 90.512-285.254-285.256 285.256-285.254 90.508 90.508-194.744 194.746z" /> | ||
335 | <glyph unicode="" glyph-name="tab" d="M960 960h64v-512h-64v512zM0 448h64v-512h-64v512zM320 256h704v-128h-704v-160l-224 224 224 224v-160zM704 640h-704v128h704v160l224-224-224-224z" /> | ||
336 | <glyph unicode="" glyph-name="move-up" d="M704 448v-384h64v384h160l-192 192-192-192zM64 768h96v-64h-96v64zM192 768h96v-64h-96v64zM320 768h64v-96h-64v96zM64 544h64v-96h-64v96zM160 512h96v-64h-96v64zM288 512h96v-64h-96v64zM64 672h64v-96h-64v96zM320 640h64v-96h-64v96zM320 256v-192h-192v192h192zM384 320h-320v-320h320v320z" /> | ||
337 | <glyph unicode="" glyph-name="move-down" d="M768 256v384h-64v-384h-160l192-192 192 192zM320 704v-192h-192v192h192zM384 768h-320v-320h320v320zM64 320h96v-64h-96v64zM192 320h96v-64h-96v64zM320 320h64v-96h-64v96zM64 96h64v-96h-64v96zM160 64h96v-64h-96v64zM288 64h96v-64h-96v64zM64 224h64v-96h-64v96zM320 192h64v-96h-64v96z" /> | ||
338 | <glyph unicode="" glyph-name="sort-alpha-asc" d="M320 192v768h-128v-768h-160l224-224 224 224h-160zM928-64h-256c-11.8 0-22.644 6.496-28.214 16.9-5.566 10.404-4.958 23.030 1.59 32.85l222.832 334.25h-196.208c-17.672 0-32 14.328-32 32s14.328 32 32 32h256c11.8 0 22.644-6.496 28.214-16.9 5.566-10.404 4.958-23.030-1.59-32.85l-222.83-334.25h196.206c17.672 0 32-14.328 32-32s-14.328-32-32-32zM1020.622 558.314l-192.002 384c-5.42 10.842-16.502 17.69-28.622 17.69-12.122 0-23.202-6.848-28.624-17.69l-191.996-384c-7.904-15.806-1.496-35.030 14.31-42.932 4.594-2.296 9.476-3.386 14.288-3.386 11.736 0 23.040 6.484 28.644 17.698l55.156 110.31h216.446l55.156-110.31c7.902-15.806 27.124-22.21 42.932-14.31 15.808 7.902 22.216 27.124 14.312 42.93zM723.778 704.004l76.22 152.446 76.224-152.446h-152.444z" /> | ||
339 | <glyph unicode="" glyph-name="sort-alpha-desc" d="M320 192v768h-128v-768h-160l224-224 224 224h-160zM928 512h-256c-11.8 0-22.644 6.496-28.214 16.9-5.566 10.406-4.958 23.030 1.59 32.85l222.832 334.25h-196.208c-17.672 0-32 14.328-32 32s14.328 32 32 32h256c11.8 0 22.644-6.496 28.214-16.9 5.566-10.406 4.958-23.030-1.59-32.85l-222.83-334.25h196.206c17.672 0 32-14.328 32-32s-14.328-32-32-32zM1020.622-17.69l-192.002 384c-5.42 10.842-16.502 17.69-28.622 17.69-12.122 0-23.202-6.848-28.624-17.69l-191.996-384c-7.904-15.806-1.496-35.030 14.31-42.932 4.594-2.296 9.476-3.386 14.288-3.386 11.736 0 23.040 6.484 28.644 17.698l55.158 110.31h216.446l55.156-110.31c7.902-15.806 27.124-22.21 42.932-14.31 15.806 7.902 22.214 27.124 14.31 42.93zM723.778 128l76.22 152.446 76.226-152.446h-152.446z" /> | ||
340 | <glyph unicode="" glyph-name="sort-numeric-asc" d="M320 192v768h-128v-768h-160l224-224 224 224h-160zM864 512c-17.674 0-32 14.328-32 32v352h-32c-17.674 0-32 14.328-32 32s14.326 32 32 32h64c17.674 0 32-14.328 32-32v-384c0-17.672-14.326-32-32-32zM928 384h-192c-17.674 0-32-14.326-32-32v-192c0-17.674 14.326-32 32-32h160v-128h-160c-17.674 0-32-14.326-32-32s14.326-32 32-32h192c17.674 0 32 14.326 32 32v384c0 17.674-14.326 32-32 32zM768 320h128v-128h-128v128z" /> | ||
341 | <glyph unicode="" glyph-name="sort-numberic-desc" d="M320 192v768h-128v-768h-160l224-224 224 224h-160zM864-64c-17.674 0-32 14.328-32 32v352h-32c-17.674 0-32 14.328-32 32s14.326 32 32 32h64c17.674 0 32-14.328 32-32v-384c0-17.672-14.326-32-32-32zM928 960h-192c-17.674 0-32-14.326-32-32v-192c0-17.674 14.326-32 32-32h160v-128h-160c-17.674 0-32-14.326-32-32s14.326-32 32-32h192c17.674 0 32 14.326 32 32v384c0 17.674-14.326 32-32 32zM768 896h128v-128h-128v128z" /> | ||
342 | <glyph unicode="" glyph-name="sort-amount-asc" d="M320 192v768h-128v-768h-160l224-224 224 224h-160zM448 384h576v-128h-576v128zM448 576h448v-128h-448v128zM448 768h320v-128h-320v128zM448 960h192v-128h-192v128z" /> | ||
343 | <glyph unicode="" glyph-name="sort-amount-desc" d="M320 192v768h-128v-768h-160l224-224 224 224h-160zM448 960h576v-128h-576v128zM448 768h448v-128h-448v128zM448 576h320v-128h-320v128zM448 384h192v-128h-192v128z" /> | ||
344 | <glyph unicode="" glyph-name="command" d="M736 64c-88.224 0-160 71.776-160 160v96h-128v-96c0-88.224-71.776-160-160-160s-160 71.776-160 160 71.776 160 160 160h96v128h-96c-88.224 0-160 71.776-160 160s71.776 160 160 160 160-71.776 160-160v-96h128v96c0 88.224 71.776 160 160 160s160-71.776 160-160-71.776-160-160-160h-96v-128h96c88.224 0 160-71.776 160-160s-71.774-160-160-160zM640 320v-96c0-52.934 43.066-96 96-96s96 43.066 96 96-43.066 96-96 96h-96zM288 320c-52.934 0-96-43.066-96-96s43.066-96 96-96 96 43.066 96 96v96h-96zM448 384h128v128h-128v-128zM640 576h96c52.934 0 96 43.066 96 96s-43.066 96-96 96-96-43.066-96-96v-96zM288 768c-52.934 0-96-43.066-96-96s43.066-96 96-96h96v96c0 52.934-43.064 96-96 96z" /> | ||
345 | <glyph unicode="" glyph-name="shift" d="M672 64h-320c-17.672 0-32 14.326-32 32v352h-128c-12.942 0-24.612 7.796-29.564 19.754-4.954 11.958-2.214 25.722 6.936 34.874l320 320c12.498 12.496 32.758 12.496 45.254 0l320-320c9.152-9.152 11.89-22.916 6.938-34.874s-16.62-19.754-29.564-19.754h-128v-352c0-17.674-14.326-32-32-32zM384 128h256v352c0 17.672 14.326 32 32 32h82.744l-242.744 242.746-242.744-242.746h82.744c17.672 0 32-14.328 32-32v-352z" /> | ||
346 | <glyph unicode="" glyph-name="ctrl" d="M736.014 512c-8.908 0-17.77 3.698-24.096 10.928l-199.918 228.478-199.918-228.478c-11.636-13.3-31.856-14.65-45.154-3.010-13.3 11.638-14.648 31.854-3.010 45.154l224 256c6.076 6.944 14.854 10.928 24.082 10.928s18.006-3.984 24.082-10.928l224-256c11.638-13.3 10.292-33.516-3.010-45.154-6.070-5.312-13.582-7.918-21.058-7.918z" /> | ||
347 | <glyph unicode="" glyph-name="opt" d="M928 128h-256c-12.646 0-24.106 7.448-29.242 19.004l-247.554 556.996h-299.204c-17.672 0-32 14.328-32 32s14.328 32 32 32h320c12.646 0 24.106-7.448 29.242-19.004l247.556-556.996h235.202c17.674 0 32-14.326 32-32s-14.326-32-32-32zM928 704h-320c-17.674 0-32 14.328-32 32s14.326 32 32 32h320c17.674 0 32-14.328 32-32s-14.326-32-32-32z" /> | ||
348 | <glyph unicode="" glyph-name="checkbox-checked" d="M896 960h-768c-70.4 0-128-57.6-128-128v-768c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v768c0 70.4-57.6 128-128 128zM448 165.49l-237.254 237.256 90.51 90.508 146.744-146.744 306.746 306.746 90.508-90.51-397.254-397.256z" /> | ||
349 | <glyph unicode="" glyph-name="checkbox-unchecked" d="M896 960h-768c-70.4 0-128-57.6-128-128v-768c0-70.4 57.6-128 128-128h768c70.4 0 128 57.6 128 128v768c0 70.4-57.6 128-128 128zM896 64h-768v768h768v-768z" /> | ||
350 | <glyph unicode="" glyph-name="radio-checked" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384zM320 448c0 106.039 85.961 192 192 192s192-85.961 192-192c0-106.039-85.961-192-192-192s-192 85.961-192 192z" /> | ||
351 | <glyph unicode="" glyph-name="radio-checked2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 320c-70.692 0-128 57.306-128 128 0 70.692 57.308 128 128 128 70.694 0 128-57.308 128-128 0-70.694-57.306-128-128-128z" /> | ||
352 | <glyph unicode="" glyph-name="radio-unchecked" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 64c-212.078 0-384 171.922-384 384s171.922 384 384 384c212.078 0 384-171.922 384-384s-171.922-384-384-384z" /> | ||
353 | <glyph unicode="" glyph-name="crop" d="M832 704l192 192-64 64-192-192h-448v192h-128v-192h-192v-128h192v-512h512v-192h128v192h192v128h-192v448zM320 640h320l-320-320v320zM384 256l320 320v-320h-320z" /> | ||
354 | <glyph unicode="" glyph-name="make-group" d="M320 832h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM704 576h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64zM704 768h128v-128h-128v128zM320 320h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM320 128h-128v128h128v-128zM832 320h-128c-35.2 0-64-28.8-64-64v-128c0-35.2 28.8-64 64-64h128c35.2 0 64 28.8 64 64v128c0 35.2-28.8 64-64 64zM896 448h-64c-85.476 0-165.834 33.286-226.274 93.724-60.44 60.442-93.726 140.802-93.726 226.276v64c0 70.4-57.6 128-128 128h-256c-70.4 0-128-57.6-128-128v-256c0-70.4 57.6-128 128-128h64c85.476 0 165.834-33.286 226.274-93.724 60.44-60.442 93.726-140.802 93.726-226.276v-64c0-70.4 57.6-128 128-128h256c70.4 0 128 57.6 128 128v256c0 70.4-57.6 128-128 128zM960 64c0-16.954-6.696-32.986-18.856-45.144-12.158-12.16-28.19-18.856-45.144-18.856h-256c-16.954 0-32.986 6.696-45.144 18.856-12.16 12.158-18.856 28.19-18.856 45.144v64c0 212.078-171.922 384-384 384h-64c-16.954 0-32.986 6.696-45.146 18.854-12.158 12.16-18.854 28.192-18.854 45.146v256c0 16.954 6.696 32.986 18.854 45.146 12.16 12.158 28.192 18.854 45.146 18.854h256c16.954 0 32.986-6.696 45.146-18.854 12.158-12.16 18.854-28.192 18.854-45.146v-64c0-212.078 171.922-384 384-384h64c16.954 0 32.986-6.696 45.144-18.856 12.16-12.158 18.856-28.19 18.856-45.144v-256z" /> | ||
355 | <glyph unicode="" glyph-name="ungroup" d="M384 496c0-26.4-21.6-48-48-48h-96c-26.4 0-48 21.6-48 48v96c0 26.4 21.6 48 48 48h96c26.4 0 48-21.6 48-48v-96zM704 496c0-26.4-21.6-48-48-48h-96c-26.4 0-48 21.6-48 48v96c0 26.4 21.6 48 48 48h96c26.4 0 48-21.6 48-48v-96zM384 176c0-26.4-21.6-48-48-48h-96c-26.4 0-48 21.6-48 48v96c0 26.4 21.6 48 48 48h96c26.4 0 48-21.6 48-48v-96zM704 176c0-26.4-21.6-48-48-48h-96c-26.4 0-48 21.6-48 48v96c0 26.4 21.6 48 48 48h96c26.4 0 48-21.6 48-48v-96zM912.082 800l111.918 111.916v48.084h-48.082l-111.918-111.916-111.918 111.916h-48.082v-48.084l111.918-111.916-111.918-111.916v-48.084h48.082l111.918 111.916 111.918-111.916h48.082v48.084zM0 192h64v-128h-64v128zM0 384h64v-128h-64v128zM832 512h64v-128h-64v128zM832 128h64v-128h-64v128zM832 320h64v-128h-64v128zM0 576h64v-128h-64v128zM0 768h64v-128h-64v128zM512 832h128v-64h-128v64zM320 832h128v-64h-128v64zM128 832h128v-64h-128v64zM448 0h128v-64h-128v64zM640 0h128v-64h-128v64zM256 0h128v-64h-128v64zM64 0h128v-64h-128v64z" /> | ||
356 | <glyph unicode="" glyph-name="scissors" d="M913.826 280.306c-66.684 104.204-181.078 150.064-255.51 102.434-6.428-4.116-12.334-8.804-17.744-13.982l-79.452 124.262 183.462 287.972c15.016 27.73 20.558 60.758 13.266 93.974-6.972 31.75-24.516 58.438-48.102 77.226l-12.278 7.808-217.468-340.114-217.47 340.114-12.276-7.806c-23.586-18.79-41.13-45.476-48.1-77.226-7.292-33.216-1.75-66.244 13.264-93.974l183.464-287.972-79.454-124.262c-5.41 5.178-11.316 9.868-17.744 13.982-74.432 47.63-188.826 1.77-255.51-102.434-66.68-104.2-60.398-227.286 14.032-274.914 74.43-47.632 188.824-1.77 255.508 102.432l164.286 257.87 164.288-257.872c66.684-104.202 181.078-150.064 255.508-102.432 74.428 47.63 80.71 170.716 14.030 274.914zM234.852 159.57c-30.018-46.904-68.534-69.726-94.572-75.446-0.004 0-0.004 0-0.004 0-8.49-1.868-20.294-3.010-28.324 2.128-8.898 5.694-14.804 20.748-15.8 40.276-1.616 31.644 9.642 68.836 30.888 102.034 30.014 46.906 68.53 69.726 94.562 75.444 8.496 1.866 20.308 3.010 28.336-2.126 8.898-5.694 14.802-20.75 15.798-40.272 1.618-31.65-9.64-68.84-30.884-102.038zM480 448c-17.672 0-32 14.328-32 32s14.328 32 32 32 32-14.328 32-32-14.328-32-32-32zM863.85 126.53c-0.996-19.528-6.902-34.582-15.8-40.276-8.030-5.138-19.834-3.996-28.324-2.128 0 0 0 0-0.004 0-26.040 5.718-64.554 28.542-94.572 75.446-21.244 33.198-32.502 70.388-30.884 102.038 0.996 19.522 6.9 34.578 15.798 40.272 8.028 5.136 19.84 3.992 28.336 2.126 26.034-5.716 64.548-28.538 94.562-75.444 21.246-33.198 32.502-70.39 30.888-102.034z" /> | ||
357 | <glyph unicode="" glyph-name="filter" d="M512 960c-282.77 0-512-71.634-512-160v-96l384-384v-320c0-35.346 57.306-64 128-64 70.692 0 128 28.654 128 64v320l384 384v96c0 88.366-229.23 160-512 160zM94.384 821.176c23.944 13.658 57.582 26.62 97.278 37.488 87.944 24.076 201.708 37.336 320.338 37.336 118.628 0 232.394-13.26 320.338-37.336 39.696-10.868 73.334-23.83 97.28-37.488 15.792-9.006 24.324-16.624 28.296-21.176-3.972-4.552-12.506-12.168-28.296-21.176-23.946-13.658-57.584-26.62-97.28-37.488-87.942-24.076-201.708-37.336-320.338-37.336s-232.394 13.26-320.338 37.336c-39.696 10.868-73.334 23.83-97.278 37.488-15.792 9.008-24.324 16.624-28.298 21.176 3.974 4.552 12.506 12.168 28.298 21.176z" /> | ||
358 | <glyph unicode="" glyph-name="font" d="M799.596 943.792c-90.526 0-148.62 16.208-241.848 16.208-301.284 0-441.792-171.584-441.792-345.872 0-102.678 48.64-136.458 144.564-136.458-6.758 14.864-18.914 31.080-18.914 104.034 0 204.010 77.006 263.458 175.636 267.51 0 0-80.918-793.374-315.778-888.542v-24.672h316.594l108.026 512h197.844l44.072 128h-214.908l51.944 246.19c59.446-12.156 117.542-24.316 167.532-24.316 62.148 0 118.894 18.914 149.968 162.126-37.826-12.16-78.362-16.208-122.94-16.208z" /> | ||
359 | <glyph unicode="" glyph-name="ligature" d="M768 88.178c0 0.040 0.002 0.076 0.002 0.116l-0.344 436.562-127.492-6.19h-251.93v21.494c0 81.542 5.8 162.976 17.24 194.716 7.896 21.948 22.598 41.744 43.698 58.836 20.618 16.702 41.178 25.17 61.11 25.17 16.772 0 30.702-2.878 41.402-8.554 15.026-8.562 29.716-22.964 43.67-42.818 36.95-52.504 51.99-66.454 60.094-72.376 13.804-10.094 30.512-15.212 49.658-15.212 18.668 0 34.962 6.97 48.436 20.714 13.372 13.636 20.15 30.682 20.15 50.666 0 21.452-8.916 44.204-26.502 67.622-17.184 22.888-43.708 41.742-78.834 56.032-34.322 13.964-72.94 21.044-114.778 21.044-60.716 0-116.012-14.596-164.356-43.384-48.424-28.834-85.558-68.952-110.37-119.24-22.994-46.604-21.334-134.706-22.732-214.712h-125.732v-71.402h125.598v-324.668c0-71.666-21.906-91.008-30.216-101.324-11.436-14.202-32.552-29.104-60.444-29.104h-38.654v-56.166h385.326v56.168h-6.708c-91.144 0-117.020 9.832-117.020 120.842 0 0.018 0 0.034 0 0.048l-0.038 334.206h140.204c74.404 0 91.496-3.444 95.392-4.924 4.706-1.79 10.798-4.832 13.084-9.144 0.868-1.684 5.194-25.008 5.194-82.972v-250.67c0-58.454-7.124-77.896-11.45-84.402-9.248-14.194-20.41-22.066-54.66-22.904v-56.248h293.61v55.846c-91.608 0-101.608 9.82-101.608 96.332z" /> | ||
360 | <glyph unicode="" glyph-name="ligature2" d="M855.328 42.546c-11.734 0-83.62 13.2-88.020 29.338-10.274 39.612-11.738 82.152-11.738 130.568v540.974c0 80.686 16.138 127.632 16.138 127.632-1.468 7.334-8.804 23.472-17.604 23.472h-4.404c-4.4 0-55.746-32.276-102.692-32.276-38.14 0.002-61.89 33.746-105.902 33.746-185.106 0-271.942-150.31-271.942-363.032v-11.072c0-4.402-2.934-8.804-7.336-8.804h-60.148c-7.336 0-22.006-41.078-22.006-60.148 0-5.87 1.466-8.8 4.4-8.8h77.754c4.402 0 7.336-5.872 7.336-10.27 0-130.566-1.466-259.298-1.466-259.298 0-20.54-1.466-66.016-10.27-102.692-4.4-16.138-71.884-29.338-89.488-29.338-7.334 0-7.334-35.212 0-42.546 60.148 2.934 99.758 7.334 159.908 7.334 55.75 0 98.292-4.4 156.974-7.334 2.934 8.802 2.934 42.546-4.4 42.546-11.736 0-83.624 13.2-88.022 29.338-10.27 39.612-10.27 82.152-11.738 130.568v232.888c0 4.402 4.402 8.804 8.802 8.804h151.104c10.27 20.538 17.606 45.476 17.606 58.68 0 8.802 0 10.27-7.336 10.27h-162.84c-2.934 0-7.336 4.402-7.336 7.334v52.82c0 130.568 53.482 245.538 142.97 245.538 63.372 0 118.666-41.060 118.666-197.922 0-0.006 0-0.012 0-0.018 0.208-4.036 0.314-7.294 0.314-9.452v-436.816c0-20.54-1.47-66.016-10.27-102.692-4.404-16.138-71.884-29.338-89.492-29.338-7.336 0-7.336-35.212 0-42.546 60.15 2.934 99.762 7.334 159.912 7.334 55.746 0 98.288-4.4 156.972-7.334 2.928 8.8 2.928 42.544-4.406 42.544z" /> | ||
361 | <glyph unicode="" glyph-name="text-height" d="M896 192h128l-160-192-160 192h128v512h-128l160 192 160-192h-128zM640 896v-256l-64 128h-192v-704h128v-64h-384v64h128v704h-192l-64-128v256z" /> | ||
362 | <glyph unicode="" glyph-name="text-width" d="M256 64v-128l-192 160 192 160v-128h512v128l192-160-192-160v128zM832 896v-256l-64 128h-192v-448h128v-64h-384v64h128v448h-192l-64-128v256z" /> | ||
363 | <glyph unicode="" glyph-name="font-size" d="M64 448h384v-128h-128v-384h-128v384h-128zM960 704h-251.75v-768h-136.5v768h-251.75v128h640z" /> | ||
364 | <glyph unicode="" glyph-name="bold" d="M707.88 475.348c37.498 44.542 60.12 102.008 60.12 164.652 0 141.16-114.842 256-256 256h-320v-896h384c141.158 0 256 114.842 256 256 0 92.956-49.798 174.496-124.12 219.348zM384 768h101.5c55.968 0 101.5-57.42 101.5-128s-45.532-128-101.5-128h-101.5v256zM543 128h-159v256h159c58.45 0 106-57.42 106-128s-47.55-128-106-128z" /> | ||
365 | <glyph unicode="" glyph-name="underline" d="M704 896h128v-416c0-159.058-143.268-288-320-288-176.73 0-320 128.942-320 288v416h128v-416c0-40.166 18.238-78.704 51.354-108.506 36.896-33.204 86.846-51.494 140.646-51.494s103.75 18.29 140.646 51.494c33.116 29.802 51.354 68.34 51.354 108.506v416zM192 128h640v-128h-640z" /> | ||
366 | <glyph unicode="" glyph-name="italic" d="M896 896v-64h-128l-320-768h128v-64h-448v64h128l320 768h-128v64z" /> | ||
367 | <glyph unicode="" glyph-name="strikethrough" d="M1024 448v-64h-234.506c27.504-38.51 42.506-82.692 42.506-128 0-70.878-36.66-139.026-100.58-186.964-59.358-44.518-137.284-69.036-219.42-69.036-82.138 0-160.062 24.518-219.42 69.036-63.92 47.938-100.58 116.086-100.58 186.964h128c0-69.382 87.926-128 192-128s192 58.618 192 128c0 69.382-87.926 128-192 128h-512v64h299.518c-2.338 1.654-4.656 3.324-6.938 5.036-63.92 47.94-100.58 116.086-100.58 186.964s36.66 139.024 100.58 186.964c59.358 44.518 137.282 69.036 219.42 69.036 82.136 0 160.062-24.518 219.42-69.036 63.92-47.94 100.58-116.086 100.58-186.964h-128c0 69.382-87.926 128-192 128s-192-58.618-192-128c0-69.382 87.926-128 192-128 78.978 0 154.054-22.678 212.482-64h299.518z" /> | ||
368 | <glyph unicode="" glyph-name="omega" d="M704 64h256l64 128v-256h-384v214.214c131.112 56.484 224 197.162 224 361.786 0 214.432-157.598 382.266-352 382.266-194.406 0-352-167.832-352-382.266 0-164.624 92.886-305.302 224-361.786v-214.214h-384v256l64-128h256v32.59c-187.63 66.46-320 227.402-320 415.41 0 247.424 229.23 448 512 448s512-200.576 512-448c0-188.008-132.37-348.95-320-415.41v-32.59z" /> | ||
369 | <glyph unicode="" glyph-name="sigma" d="M941.606 225.292l44.394 94.708h38l-64-384h-960v74.242l331.546 391.212-331.546 331.546v227h980l44-256h-34.376l-18.72 38.88c-35.318 73.364-61.904 89.12-138.904 89.12h-662l353.056-353.056-297.42-350.944h542.364c116.008 0 146.648 41.578 173.606 97.292z" /> | ||
370 | <glyph unicode="" glyph-name="page-break" d="M0 448h128v-64h-128zM192 448h192v-64h-192zM448 448h128v-64h-128zM640 448h192v-64h-192zM896 448h128v-64h-128zM880 960l16-448h-768l16 448h32l16-384h640l16 384zM144-64l-16 384h768l-16-384h-32l-16 320h-640l-16-320z" /> | ||
371 | <glyph unicode="" glyph-name="superscript" d="M768 754v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" /> | ||
372 | <glyph unicode="" glyph-name="subscript" d="M768 50v-50h128v-64h-192v146l128 60v50h-128v64h192v-146zM676 704h-136l-188-188-188 188h-136l256-256-256-256h136l188 188 188-188h136l-256 256z" /> | ||
373 | <glyph unicode="" glyph-name="superscript2" d="M194.018 128l57.6 192h264.764l57.6-192h113.632l-192 640h-223.232l-192-640h113.636zM347.618 640h72.764l57.6-192h-187.964l57.6 192zM704 128l160 256 160-256h-320zM864 832h-64c-17.644 0-32 14.356-32 32s14.356 32 32 32h128c17.674 0 32 14.328 32 32s-14.326 32-32 32h-128c-52.936 0-96-43.066-96-96 0-24.568 9.288-47.002 24.524-64 17.588-19.624 43.11-32 71.476-32h64c17.644 0 32-14.356 32-32s-14.356-32-32-32h-128c-17.674 0-32-14.328-32-32s14.326-32 32-32h128c52.936 0 96 43.066 96 96 0 24.568-9.288 47.002-24.524 64-17.588 19.624-43.108 32-71.476 32z" /> | ||
374 | <glyph unicode="" glyph-name="subscript2" d="M194.018 128l57.6 192h264.764l57.6-192h113.632l-192 640h-223.232l-192-640h113.636zM347.618 640h72.764l57.6-192h-187.964l57.6 192zM1024 768l-160-256-160 256h320zM864 128h-64c-17.644 0-32 14.356-32 32s14.356 32 32 32h128c17.674 0 32 14.328 32 32s-14.326 32-32 32h-128c-52.936 0-96-43.066-96-96 0-24.568 9.29-47.002 24.524-64 17.588-19.624 43.112-32 71.476-32h64c17.644 0 32-14.356 32-32s-14.356-32-32-32h-128c-17.674 0-32-14.328-32-32s14.326-32 32-32h128c52.936 0 96 43.066 96 96 0 24.568-9.29 47.002-24.524 64-17.588 19.624-43.108 32-71.476 32z" /> | ||
375 | <glyph unicode="" glyph-name="text-color" d="M322.018 128l57.6 192h264.764l57.6-192h113.632l-191.996 640h-223.236l-192-640h113.636zM475.618 640h72.764l57.6-192h-187.964l57.6 192z" /> | ||
376 | <glyph unicode="" glyph-name="pagebreak" d="M256 576v384h768v-384h-64v320h-640v-320zM1024 384v-448h-768v448h64v-384h640v384zM512 512h128v-64h-128zM320 512h128v-64h-128zM704 512h128v-64h-128zM896 512h128v-64h-128zM0 672l192-192-192-192z" /> | ||
377 | <glyph unicode="" glyph-name="clear-formatting" d="M0 64h576v-128h-576zM896 832h-302.56l-183.764-704h-132.288l183.762 704h-269.15v128h704zM929.774-64l-129.774 129.774-129.774-129.774-62.226 62.226 129.774 129.774-129.774 129.774 62.226 62.226 129.774-129.774 129.774 129.774 62.226-62.226-129.774-129.774 129.774-129.774z" /> | ||
378 | <glyph unicode="" glyph-name="table" d="M0 768v-704h1024v704h-1024zM384 320v128h256v-128h-256zM640 256v-128h-256v128h256zM640 640v-128h-256v128h256zM320 640v-128h-256v128h256zM64 448h256v-128h-256v128zM704 448h256v-128h-256v128zM704 512v128h256v-128h-256zM64 256h256v-128h-256v128zM704 128v128h256v-128h-256z" /> | ||
379 | <glyph unicode="" glyph-name="table2" d="M0 896v-896h1024v896h-1024zM384 320v192h256v-192h-256zM640 256v-192h-256v192h256zM640 768v-192h-256v192h256zM320 768v-192h-256v192h256zM64 512h256v-192h-256v192zM704 512h256v-192h-256v192zM704 576v192h256v-192h-256zM64 256h256v-192h-256v192zM704 64v192h256v-192h-256z" /> | ||
380 | <glyph unicode="" glyph-name="insert-template" d="M384 768h128v-64h-128zM576 768h128v-64h-128zM896 768v-256h-192v64h128v128h-64v64zM320 576h128v-64h-128zM512 576h128v-64h-128zM192 704v-128h64v-64h-128v256h192v-64zM384 384h128v-64h-128zM576 384h128v-64h-128zM896 384v-256h-192v64h128v128h-64v64zM320 192h128v-64h-128zM512 192h128v-64h-128zM192 320v-128h64v-64h-128v256h192v-64zM960 896h-896v-896h896v896zM1024 960v0-1024h-1024v1024h1024z" /> | ||
381 | <glyph unicode="" glyph-name="pilcrow" d="M384 960h512v-128h-128v-896h-128v896h-128v-896h-128v512c-141.384 0-256 114.616-256 256s114.616 256 256 256z" /> | ||
382 | <glyph unicode="" glyph-name="ltr" d="M512 960c-141.384 0-256-114.616-256-256s114.616-256 256-256v-512h128v896h128v-896h128v896h128v128h-512zM0 256l256 256-256 256z" /> | ||
383 | <glyph unicode="" glyph-name="rtl" d="M256 960c-141.384 0-256-114.616-256-256s114.616-256 256-256v-512h128v896h128v-896h128v896h128v128h-512zM1024 768l-256-256 256-256z" /> | ||
384 | <glyph unicode="" glyph-name="section" d="M495.964-64c-49.36 0-91.116 14.406-124.104 42.82-33.224 28.614-50.068 62.038-50.068 99.344 0 18.128 6.6 33.756 19.622 46.458 13.232 12.914 29.782 19.744 47.85 19.744 18.002 0 34.194-6.41 46.826-18.542 12.472-11.972 18.796-27.824 18.796-47.104 0-11.318-1.85-23.818-5.494-37.146-3.616-13.178-4.376-19.938-4.376-23.292 0-3.682 0.924-8.076 7.774-12.756 12.76-8.824 28.066-13.084 46.876-13.084 22.576 0 42.718 7.858 61.574 24.022 18.578 15.942 27.612 32.318 27.612 50.056 0 19.736-5.27 36.826-16.12 52.242-18.336 25.758-52.878 55.954-102.612 89.668-79.858 53.454-133.070 99.766-162.58 141.52-22.89 32.684-34.476 67.89-34.476 104.704 0 37.062 12.142 73.948 36.092 109.63 20.508 30.554 50.8 58.12 90.228 82.138-21.096 22.7-36.896 44.064-47.094 63.688-12.872 24.76-19.398 50.372-19.398 76.122 0 47.814 18.91 89.16 56.206 122.89 37.32 33.76 83.86 50.878 138.322 50.878 50.086 0 92.206-14.082 125.182-41.852 33.328-28.082 50.222-60.898 50.222-97.54 0-18.656-6.986-35.364-20.766-49.66l-0.276-0.282c-7.976-7.924-22.618-17.37-47.046-17.37-19.148 0-35.934 6.272-48.54 18.136-12.558 11.794-18.93 25.918-18.93 41.966 0 6.934 1.702 17.416 5.352 32.98 1.778 7.364 2.668 14.142 2.668 20.25 0 10.338-3.726 18.272-11.724 24.966-8.282 6.93-20.108 10.302-36.142 10.302-24.868 0-45.282-7.562-62.41-23.118-17.19-15.606-25.544-34.088-25.544-56.508 0-20.156 4.568-36.762 13.58-49.362 17.112-23.938 46.796-49.79 88.22-76.836 84.17-54.588 142.902-104.672 174.518-148.826 23.35-33.12 35.152-68.34 35.152-104.792 0-36.598-11.882-73.496-35.318-109.676-20.208-31.18-50.722-59.276-90.884-83.71 22.178-23.466 37.812-44.042 47.554-62.538 12.082-22.97 18.208-48.048 18.208-74.542 0-49.664-18.926-91.862-56.244-125.422-37.34-33.554-83.866-50.566-138.288-50.566zM446.416 603.654c-48.222-28.952-71.712-62.19-71.712-101.314 0-22.756 6.498-43.13 19.86-62.278 19.936-27.926 59.27-62.054 116.804-101.288 24.358-16.586 46.36-32.712 65.592-48.060 49.060 29.504 72.956 62.366 72.956 100.178 0 20.598-8.142 42.774-24.204 65.916-16.808 24.196-52.85 55.796-107.128 93.914-28.328 19.562-52.558 37.334-72.168 52.932z" /> | ||
385 | <glyph unicode="" glyph-name="paragraph-left" d="M0 896h1024v-128h-1024zM0 704h640v-128h-640zM0 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" /> | ||
386 | <glyph unicode="" glyph-name="paragraph-center" d="M0 896h1024v-128h-1024zM192 704h640v-128h-640zM192 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" /> | ||
387 | <glyph unicode="" glyph-name="paragraph-right" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 320h640v-128h-640zM0 512h1024v-128h-1024zM0 128h1024v-128h-1024z" /> | ||
388 | <glyph unicode="" glyph-name="paragraph-justify" d="M0 896h1024v-128h-1024zM0 704h1024v-128h-1024zM0 512h1024v-128h-1024zM0 320h1024v-128h-1024zM0 128h1024v-128h-1024z" /> | ||
389 | <glyph unicode="" glyph-name="indent-increase" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM0 256v384l256-192z" /> | ||
390 | <glyph unicode="" glyph-name="indent-decrease" d="M0 896h1024v-128h-1024zM384 704h640v-128h-640zM384 512h640v-128h-640zM384 320h640v-128h-640zM0 128h1024v-128h-1024zM256 640v-384l-256 192z" /> | ||
391 | <glyph unicode="" glyph-name="share" d="M256 320c0 0 58.824 192 384 192v-192l384 256-384 256v-192c-256 0-384-159.672-384-320zM704 192h-576v384h125.876c10.094 11.918 20.912 23.334 32.488 34.18 43.964 41.19 96.562 72.652 156.114 93.82h-442.478v-640h832v268.624l-128-85.334v-55.29z" /> | ||
392 | <glyph unicode="" glyph-name="new-tab" d="M192 896v-768h768v768h-768zM896 192h-640v640h640v-640zM128 64v672l-64 64v-800h800l-64 64h-672zM352 704l160-160-192-192 96-96 192 192 160-160v416z" /> | ||
393 | <glyph unicode="" glyph-name="embed" d="M576 224l96-96 320 320-320 320-96-96 224-224zM448 672l-96 96-320-320 320-320 96 96-224 224z" /> | ||
394 | <glyph unicode="" glyph-name="embed2" horiz-adv-x="1280" d="M832 224l96-96 320 320-320 320-96-96 224-224zM448 672l-96 96-320-320 320-320 96 96-224 224zM701.298 809.481l69.468-18.944-191.987-704.026-69.468 18.944 191.987 704.026z" /> | ||
395 | <glyph unicode="" glyph-name="terminal" d="M0 896v-896h1024v896h-1024zM960 64h-896v768h896v-768zM896 768h-768v-640h768v640zM448 448h-64v-64h-64v-64h-64v64h64v64h64v64h-64v64h-64v64h64v-64h64v-64h64v-64zM704 320h-192v64h192v-64z" /> | ||
396 | <glyph unicode="" glyph-name="share2" d="M864 256c-45.16 0-85.92-18.738-115.012-48.83l-431.004 215.502c1.314 8.252 2.016 16.706 2.016 25.328s-0.702 17.076-2.016 25.326l431.004 215.502c29.092-30.090 69.852-48.828 115.012-48.828 88.366 0 160 71.634 160 160s-71.634 160-160 160-160-71.634-160-160c0-8.622 0.704-17.076 2.016-25.326l-431.004-215.504c-29.092 30.090-69.852 48.83-115.012 48.83-88.366 0-160-71.636-160-160 0-88.368 71.634-160 160-160 45.16 0 85.92 18.738 115.012 48.828l431.004-215.502c-1.312-8.25-2.016-16.704-2.016-25.326 0-88.368 71.634-160 160-160s160 71.632 160 160c0 88.364-71.634 160-160 160z" /> | ||
397 | <glyph unicode="" glyph-name="mail" d="M853.31 960h-682.62c-93.88 0-170.69-76.784-170.69-170.658v-682.656c0-93.876 76.81-170.686 170.69-170.686h682.622c93.938 0 170.688 76.81 170.688 170.686v682.656c0 93.874-76.75 170.658-170.69 170.658zM256 704h512c9.138 0 18.004-1.962 26.144-5.662l-282.144-329.168-282.144 329.17c8.14 3.696 17.006 5.66 26.144 5.66zM192 256v384c0 1.34 0.056 2.672 0.14 4l187.664-218.94-185.598-185.6c-1.444 5.338-2.206 10.886-2.206 16.54zM768 192h-512c-5.654 0-11.202 0.762-16.54 2.206l182.118 182.118 90.422-105.496 90.424 105.494 182.116-182.118c-5.34-1.442-10.886-2.204-16.54-2.204zM832 256c0-5.654-0.762-11.2-2.206-16.54l-185.598 185.598 187.664 218.942c0.084-1.328 0.14-2.66 0.14-4v-384z" /> | ||
398 | <glyph unicode="" glyph-name="mail2" d="M853.342 960h-682.656c-93.874 0-170.686-76.81-170.686-170.69v-682.622c0-93.938 76.812-170.688 170.686-170.688h682.656c93.876 0 170.658 76.75 170.658 170.69v682.62c0 93.88-76.782 170.69-170.658 170.69zM853.342 832c7.988 0 15.546-2.334 22.020-6.342l-363.362-300.404-363.354 300.4c6.478 4.010 14.044 6.346 22.040 6.346h682.656zM170.686 64c-1.924 0-3.82 0.146-5.684 0.408l225.626 312.966-29.256 29.254-233.372-233.37v611.138l384-464.396 384 464.394v-611.136l-233.372 233.37-29.254-29.254 225.628-312.968c-1.858-0.26-3.746-0.406-5.662-0.406h-682.654z" /> | ||
399 | <glyph unicode="" glyph-name="mail3" d="M853.342 960h-682.656c-93.874 0-170.686-76.81-170.686-170.69v-682.622c0-93.938 76.812-170.688 170.686-170.688h682.656c93.876 0 170.658 76.75 170.658 170.69v682.62c0 93.88-76.782 170.69-170.658 170.69zM182.628 73.374l-77.256 77.254 256 256 29.256-29.254-208-304zM153.372 761.372l29.256 29.256 329.372-265.374 329.374 265.374 29.254-29.256-358.628-422.626-358.628 422.626zM841.374 73.374l-208 304 29.254 29.254 256-256-77.254-77.254z" /> | ||
400 | <glyph unicode="" glyph-name="mail4" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM256 704h512c9.138 0 18.004-1.962 26.144-5.662l-282.144-329.168-282.144 329.17c8.14 3.696 17.006 5.66 26.144 5.66zM192 256v384c0 1.34 0.056 2.672 0.14 4l187.664-218.942-185.598-185.598c-1.444 5.336-2.206 10.886-2.206 16.54zM768 192h-512c-5.654 0-11.202 0.762-16.54 2.208l182.118 182.118 90.422-105.498 90.424 105.494 182.116-182.12c-5.34-1.44-10.886-2.202-16.54-2.202zM832 256c0-5.654-0.762-11.2-2.206-16.54l-185.6 185.598 187.666 218.942c0.084-1.328 0.14-2.66 0.14-4v-384z" /> | ||
401 | <glyph unicode="" glyph-name="google" d="M789.534 896c0 0-200.956 0-267.94 0-120.122 0-233.17-91.006-233.17-196.422 0-107.726 81.882-194.666 204.088-194.666 8.498 0 16.756 0.17 24.84 0.752-7.928-15.186-13.6-32.288-13.6-50.042 0-29.938 16.104-54.21 36.468-74.024-15.386 0-30.242-0.448-46.452-0.448-148.782 0.002-263.3-94.76-263.3-193.022 0-96.778 125.542-157.312 274.334-157.312 169.624 0 263.306 96.244 263.306 193.028 0 77.602-22.896 124.072-93.686 174.134-24.216 17.142-70.532 58.836-70.532 83.344 0 28.72 8.196 42.868 51.428 76.646 44.312 34.624 75.674 83.302 75.674 139.916 0 67.406-30.022 133.098-86.374 154.772h84.956l59.96 43.344zM695.948 240.542c2.126-8.972 3.284-18.208 3.284-27.628 0-78.2-50.39-139.31-194.974-139.31-102.842 0-177.116 65.104-177.116 143.3 0 76.642 92.126 140.444 194.964 139.332 24-0.254 46.368-4.116 66.668-10.69 55.828-38.828 95.876-60.76 107.174-105.004zM531.286 532.224c-69.038 2.064-134.636 77.226-146.552 167.86-11.916 90.666 34.37 160.042 103.388 157.99 69.008-2.074 134.636-74.814 146.558-165.458 11.906-90.66-34.39-162.458-103.394-160.392z" /> | ||
402 | <glyph unicode="" glyph-name="google-plus" d="M559.066 896c0 0-200.956 0-267.94 0-120.12 0-233.17-91.006-233.17-196.422 0-107.726 81.882-194.666 204.088-194.666 8.498 0 16.756 0.17 24.842 0.752-7.93-15.186-13.602-32.288-13.602-50.042 0-29.938 16.104-54.21 36.468-74.024-15.386 0-30.242-0.448-46.452-0.448-148.782 0.002-263.3-94.758-263.3-193.020 0-96.778 125.542-157.314 274.334-157.314 169.624 0 263.306 96.244 263.306 193.028 0 77.6-22.896 124.072-93.686 174.134-24.216 17.144-70.53 58.836-70.53 83.344 0 28.72 8.196 42.868 51.428 76.646 44.312 34.624 75.672 83.302 75.672 139.916 0 67.406-30.020 133.098-86.372 154.772h84.954l59.96 43.344zM465.48 240.542c2.126-8.972 3.284-18.206 3.284-27.628 0-78.2-50.392-139.31-194.974-139.31-102.842 0-177.116 65.104-177.116 143.3 0 76.642 92.126 140.444 194.964 139.332 24-0.254 46.368-4.116 66.67-10.69 55.826-38.826 95.876-60.762 107.172-105.004zM300.818 532.224c-69.038 2.064-134.636 77.226-146.552 167.86-11.916 90.666 34.37 160.042 103.388 157.99 69.010-2.074 134.638-74.814 146.558-165.458 11.906-90.66-34.39-162.458-103.394-160.392zM832 704v192h-64v-192h-192v-64h192v-192h64v192h192v64z" /> | ||
403 | <glyph unicode="" glyph-name="google-plus2" d="M0.806 90.336c-0.244 2.532-0.452 5.070-0.584 7.63 0.13-2.56 0.34-5.098 0.584-7.63zM235.908 394.852c92.010-2.738 153.734 92.698 137.862 213.198-15.894 120.48-103.396 217.168-195.408 219.922-92.026 2.73-153.74-89.482-137.852-210 15.882-120.468 103.352-220.374 195.398-223.12zM1024 704v85.31c0 93.88-76.782 170.69-170.658 170.69h-682.656c-92.276 0-168.012-74.232-170.564-165.926 58.362 51.386 139.324 94.316 222.874 94.316 89.304 0 357.244 0 357.244 0l-79.948-67.618h-113.268c75.13-28.804 115.156-116.124 115.156-205.722 0-75.248-41.81-139.954-100.888-185.968-57.644-44.902-68.572-63.708-68.572-101.878 0-32.578 61.746-88 94.032-110.788 94.382-66.538 124.916-128.312 124.916-231.456 0-16.428-2.042-32.83-6.066-48.96h307.742c93.874 0 170.656 76.75 170.656 170.69v533.308h-192v-191.998h-64v192h-191.998v64h191.998v192h64v-192h192zM185.886 194.064c21.614 0 41.422 0.59 61.936 0.59-27.146 26.334-48.626 58.6-48.626 98.38 0 23.608 7.564 46.336 18.134 66.52-10.782-0.77-21.79-0.994-33.126-0.994-74.356 0-137.506 24.076-184.204 63.854v-67.242l0.006-201.73c53.44 25.374 116.888 40.622 185.88 40.622zM3.42 72.742c-1.112 5.458-1.966 11.006-2.542 16.634 0.574-5.628 1.43-11.176 2.542-16.634zM455.45 7.154c-15.058 58.806-68.454 87.964-142.888 139.568-27.072 8.732-56.894 13.874-88.894 14.208-89.618 0.964-173.108-34.942-220.216-88.372 15.92-77.706 85.034-136.558 167.234-136.558h286.444c1.816 11.128 2.696 22.632 2.696 34.432 0 12.534-1.534 24.792-4.376 36.722z" /> | ||
404 | <glyph unicode="" glyph-name="google-plus3" d="M437.006 141.838c0-75.068-46.39-134.392-177.758-139.176-76.984 43.786-141.49 106.952-186.908 182.866 23.69 58.496 97.692 103.046 182.316 102.114 24.022-0.252 46.41-4.114 66.744-10.7 55.908-38.866 101-63.152 112.324-107.448 2.114-8.964 3.282-18.206 3.282-27.656zM512 960c-147.94 0-281.196-62.77-374.666-163.098 36.934 20.452 80.538 32.638 126.902 32.638 67.068 0 256.438 0 256.438 0l-57.304-60.14h-67.31c47.496-27.212 72.752-83.248 72.752-145.012 0-56.692-31.416-102.38-75.78-137.058-43.28-33.802-51.492-47.966-51.492-76.734 0-24.542 51.722-61.098 75.5-78.936 82.818-62.112 99.578-101.184 99.578-178.87 0-78.726-68.936-157.104-185.866-183.742 56.348-21.338 117.426-33.048 181.248-33.048 282.77 0 512 229.23 512 512s-229.23 512-512 512zM768 576v-128h-64v128h-128v64h128v128h64v-128h128v-64h-128zM365.768 620.528c11.922-90.776-27.846-149.19-96.934-147.134-69.126 2.082-134.806 65.492-146.74 156.242-11.928 90.788 34.418 160.254 103.53 158.196 69.090-2.074 128.22-76.542 140.144-167.304zM220.886 317.932c-74.68 0-138.128-25.768-182.842-63.864-24.502 59.82-38.044 125.29-38.044 193.932 0 56.766 9.256 111.368 26.312 162.396 7.374-99.442 77.352-176.192 192.97-176.192 8.514 0 16.764 0.442 24.874 1.022-7.95-15.23-13.622-32.19-13.622-49.982 0-29.97 16.488-47.070 36.868-66.894-15.402 0-30.27-0.418-46.516-0.418z" /> | ||
405 | <glyph unicode="" glyph-name="google-drive" d="M459.33 300.168l-170.654-295.668h564.654l170.67 295.668zM975.612 384l-292.934 507.5h-341.348l292.956-507.5zM292.836 807.486l-292.836-507.318 170.676-295.668 292.832 507.324z" /> | ||
406 | <glyph unicode="" glyph-name="facebook" d="M672 768c-88.366 0-160-71.634-160-160v-96h-128v-128h128v-448h128v448h144l32 128h-176v96c0 17.672 14.326 32 32 32h160v128h-160z" /> | ||
407 | <glyph unicode="" glyph-name="facebook2" d="M853.35 960h-682.702c-94.25 0-170.648-76.42-170.648-170.686v-682.63c0-94.266 76.398-170.684 170.648-170.684h341.352v448h-128v128h128v96c0 88.366 71.634 160 160 160h160v-128h-160c-17.674 0-32-14.328-32-32v-96h176l-32-128h-144v-448h213.35c94.25 0 170.65 76.418 170.65 170.684v682.63c0 94.266-76.4 170.686-170.65 170.686z" /> | ||
408 | <glyph unicode="" glyph-name="facebook3" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512v384h-128v128h128v96c0 88.366 71.632 160 160 160h160v-128h-160c-17.674 0-32-14.328-32-32v-96h176l-32-128h-144v-367.87c220.828 56.838 384 257.3 384 495.87 0 282.77-229.23 512-512 512z" /> | ||
409 | <glyph unicode="" glyph-name="ello" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM824.636 370.402c-36.798-142.716-165.358-242.402-312.63-242.402-147.282 0-275.85 99.686-312.654 242.42-6.232 24.158 8.352 48.886 32.512 55.124 3.71 0.958 7.528 1.446 11.338 1.446 20.624 0 38.628-13.972 43.788-33.976 26.512-102.748 119.042-174.51 225.014-174.51 105.978 0 198.502 71.76 225 174.51 5.152 20.006 23.15 33.982 43.766 33.982 3.822 0 7.65-0.49 11.376-1.456 11.692-3.016 21.526-10.418 27.668-20.842 6.142-10.416 7.854-22.596 4.822-34.296z" /> | ||
410 | <glyph unicode="" glyph-name="instagram" d="M854 960h-684c-93.5 0-170-76.5-170-170v-684c0-93.5 76.5-170 170-170h684c93.5 0 170 76.5 170 170v684c0 93.5-76.5 170-170 170zM327.8 512h368.4c6.988-20.058 10.8-41.59 10.8-64 0-107.524-87.476-195-195-195s-195 87.476-195 195c0 22.41 3.812 43.942 10.8 64zM896 511.95v-383.95c0-35.2-28.8-64-64-64h-640c-35.2 0-64 28.8-64 64v384h100.108c-4.642-20.602-7.108-42.016-7.108-64 0-160.458 130.542-291 291-291s291 130.542 291 291c0 21.984-2.464 43.398-7.108 64l100.108-0.050zM896 736c0-17.6-14.4-32-32-32h-64c-17.6 0-32 14.4-32 32v64c0 17.6 14.4 32 32 32h64c17.6 0 32-14.4 32-32v-64z" /> | ||
411 | <glyph unicode="" glyph-name="twitter" d="M1024 765.582c-37.676-16.708-78.164-28.002-120.66-33.080 43.372 26 76.686 67.17 92.372 116.23-40.596-24.078-85.556-41.56-133.41-50.98-38.32 40.83-92.922 66.34-153.346 66.34-116.022 0-210.088-94.058-210.088-210.078 0-16.466 1.858-32.5 5.44-47.878-174.6 8.764-329.402 92.4-433.018 219.506-18.084-31.028-28.446-67.116-28.446-105.618 0-72.888 37.088-137.192 93.46-174.866-34.438 1.092-66.832 10.542-95.154 26.278-0.020-0.876-0.020-1.756-0.020-2.642 0-101.788 72.418-186.696 168.522-206-17.626-4.8-36.188-7.372-55.348-7.372-13.538 0-26.698 1.32-39.528 3.772 26.736-83.46 104.32-144.206 196.252-145.896-71.9-56.35-162.486-89.934-260.916-89.934-16.958 0-33.68 0.994-50.116 2.94 92.972-59.61 203.402-94.394 322.042-94.394 386.422 0 597.736 320.124 597.736 597.744 0 9.108-0.206 18.168-0.61 27.18 41.056 29.62 76.672 66.62 104.836 108.748z" /> | ||
412 | <glyph unicode="" glyph-name="twitter2" d="M853.342 960h-682.656c-93.874 0-170.686-76.81-170.686-170.69v-682.624c0-93.936 76.812-170.686 170.686-170.686h682.656c93.876 0 170.658 76.75 170.658 170.69v682.62c0 93.88-76.782 170.69-170.658 170.69zM766.478 578.52c0.252-5.632 0.38-11.296 0.38-16.988 0-173.51-132.070-373.588-373.584-373.588-74.15 0-143.168 21.738-201.276 58.996 10.272-1.218 20.724-1.84 31.322-1.84 61.518 0 118.134 20.992 163.072 56.21-57.458 1.054-105.948 39.020-122.658 91.184 8.018-1.532 16.244-2.36 24.704-2.36 11.976 0 23.578 1.61 34.592 4.61-60.064 12.066-105.326 65.132-105.326 128.75 0 0.554 0 1.104 0.012 1.652 17.7-9.834 37.948-15.742 59.47-16.424-35.232 23.546-58.414 63.736-58.414 109.292 0 24.064 6.476 46.62 17.78 66.010 64.76-79.44 161.51-131.712 270.634-137.19-2.238 9.612-3.4 19.632-3.4 29.924 0 72.512 58.792 131.298 131.304 131.298 37.766 0 71.892-15.944 95.842-41.462 29.908 5.886 58.008 16.814 83.38 31.862-9.804-30.662-30.624-56.394-57.732-72.644 26.56 3.174 51.866 10.232 75.412 20.674-17.594-26.328-39.854-49.454-65.514-67.966z" /> | ||
413 | <glyph unicode="" glyph-name="twitter3" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM766.478 578.52c0.252-5.632 0.38-11.296 0.38-16.988 0-173.51-132.070-373.588-373.584-373.588-74.15 0-143.168 21.738-201.276 58.996 10.272-1.218 20.724-1.84 31.322-1.84 61.518 0 118.134 20.992 163.072 56.21-57.458 1.054-105.948 39.020-122.658 91.184 8.018-1.532 16.244-2.36 24.704-2.36 11.976 0 23.578 1.61 34.592 4.61-60.064 12.066-105.326 65.132-105.326 128.75 0 0.554 0 1.104 0.012 1.652 17.7-9.834 37.948-15.742 59.47-16.424-35.232 23.546-58.414 63.736-58.414 109.292 0 24.064 6.476 46.62 17.78 66.010 64.76-79.44 161.51-131.712 270.634-137.19-2.238 9.612-3.4 19.632-3.4 29.924 0 72.512 58.792 131.298 131.304 131.298 37.766 0 71.892-15.944 95.842-41.462 29.908 5.886 58.008 16.814 83.38 31.862-9.804-30.662-30.624-56.394-57.732-72.644 26.56 3.174 51.866 10.232 75.412 20.674-17.594-26.328-39.854-49.454-65.514-67.966z" /> | ||
414 | <glyph unicode="" glyph-name="feed2" d="M136.294 209.070c-75.196 0-136.292-61.334-136.292-136.076 0-75.154 61.1-135.802 136.292-135.802 75.466 0 136.494 60.648 136.494 135.802-0.002 74.742-61.024 136.076-136.494 136.076zM0.156 612.070v-196.258c127.784 0 247.958-49.972 338.458-140.512 90.384-90.318 140.282-211.036 140.282-339.3h197.122c-0.002 372.82-303.282 676.070-675.862 676.070zM0.388 960v-196.356c455.782 0 826.756-371.334 826.756-827.644h196.856c0 564.47-459.254 1024-1023.612 1024z" /> | ||
415 | <glyph unicode="" glyph-name="feed3" d="M853.34 960h-682.654c-93.876 0-170.686-76.812-170.686-170.688v-682.628c0-93.934 76.812-170.684 170.688-170.684h682.652c93.876 0 170.66 76.748 170.66 170.684v682.628c0 93.876-76.784 170.688-170.66 170.688zM278.944 128.752c-47.97 0-86.944 38.692-86.944 86.628 0 47.684 38.972 86.812 86.944 86.812 48.158 0 87.060-39.128 87.060-86.812-0.002-47.936-38.904-86.628-87.060-86.628zM497.468 128.004c0 81.81-31.808 158.818-89.46 216.444-57.714 57.75-134.376 89.626-215.904 89.626v125.186c237.652 0 431.126-193.442 431.126-431.254l-125.762-0.002zM719.628 128.004c0 291.062-236.658 527.94-527.376 527.94v125.248c360.002 0 652.946-293.124 652.946-653.192l-125.57 0.004z" /> | ||
416 | <glyph unicode="" glyph-name="feed4" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM320 192c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zM496 192c0 132.336-107.664 240-240 240v96c185.272 0 336-150.728 336-336h-96zM688 192c0 115.39-44.936 223.876-126.53 305.47s-190.078 126.53-305.47 126.53v96c141.034 0 273.626-54.922 373.354-154.648 99.724-99.726 154.646-232.318 154.646-373.352h-96z" /> | ||
417 | <glyph unicode="" glyph-name="youtube" d="M832 832h-640c-105.6 0-192-86.4-192-192v-384c0-105.6 86.4-192 192-192h640c105.6 0 192 86.4 192 192v384c0 105.6-86.4 192-192 192zM384 192v512l320-256-320-256z" /> | ||
418 | <glyph unicode="" glyph-name="youtube2" d="M832 832h-640c-105.6 0-192-86.4-192-192v-384c0-105.6 86.4-192 192-192h640c105.6 0 192 86.4 192 192v384c0 105.6-86.4 192-192 192zM960 256c0-33.978-13.374-66.062-37.654-90.346-24.284-24.28-56.366-37.654-90.346-37.654h-640c-33.978 0-66.062 13.374-90.344 37.654-24.282 24.284-37.656 56.368-37.656 90.346v384c0 33.978 13.374 66.062 37.656 90.344s56.366 37.656 90.344 37.656h640c33.978 0 66.062-13.374 90.346-37.656 24.282-24.282 37.654-56.366 37.654-90.344v-384zM384 192l320 256-320 256z" /> | ||
419 | <glyph unicode="" glyph-name="youtube3" d="M293.188 960l-69.188-137.234-69.188 137.234h-88.248l124.71-217.314 0.726 0.43v-167.116h64v167.116l0.726-0.43 124.71 217.314zM480 832c17.346 0 32-14.654 32-32v-128c0-17.346-14.654-32-32-32s-32 14.654-32 32v128c0 17.346 14.654 32 32 32zM480 896c-52.8 0-96-43.2-96-96v-128c0-52.8 43.2-96 96-96s96 43.2 96 96v128c0 52.8-43.2 96-96 96v0zM768 896v-251.968c-27.922-23.288-64-37.332-64 45.634v206.334h-64v-219.324h0.096c0.986-52.91 12.142-148.168 127.904-70.712v-29.964h64v320h-64zM864 256c-17.644 0-32-14.356-32-32v-32h64v32c0 17.644-14.356 32-32 32zM576 224v-168c21.666-21.666 64-24 64 8s0 118 0 150-32 42-64 10zM1018.766 378.46c-2.792 36.862-16.046 66.942-39.778 90.244-23.726 23.298-54.080 35.994-91.068 38.080-69.784 3.478-229.452 5.216-369.716 5.216-140.266 0-311.294-1.738-381.078-5.216-36.986-2.086-67.342-14.782-91.068-38.080-23.728-23.302-36.988-53.382-39.778-90.244-4.188-75.116-6.28-102.352-6.28-139.91 0-37.56 2.092-93.894 6.28-169.012 2.792-36.862 16.050-66.944 39.778-90.244 23.726-23.298 54.082-35.992 91.068-38.080 69.782-3.476 240.81-5.214 381.078-5.214 140.266 0 299.934 1.738 369.716 5.214 36.988 2.088 67.342 14.782 91.068 38.080 23.73 23.3 36.986 53.382 39.778 90.244 3.49 62.598 5.234 118.934 5.234 169.012 0 50.076-1.744 77.314-5.234 139.91zM192 0h-64v320h-64v64h192v-64h-64v-320zM448 0h-64v29.962c-121.666-68.294-126.918-2.198-127.904 50.712h-0.096v175.326h64v-176.334c0-38.666 36.078-34.924 64-11.634v187.968h64v-256zM704 64.914c0-66.892-68.504-86.402-128-34.39v-30.524h-64v384h64v-104c64 64 128 40 128-24s0-121.172 0-191.086zM960 192v-32h-128v-64c0-17.644 14.356-32 32-32s32 14.356 32 32v32h64v-32c0-52.934-43.066-96-96-96s-96 43.066-96 96v128c0 52.934 43.066 96 96 96s96-43.066 96-96v-32z" /> | ||
420 | <glyph unicode="" glyph-name="youtube4" horiz-adv-x="2569" d="M344.012 790.601c0.209 0.865 0.344 1.479 0.388 1.8l1.042 7.559-47.349 0.267c-42.779 0.242-55.87-0.007-57.047-1.084-0.565-0.516-15.333-56.633-41.655-158.273-12.556-48.484-23.124-87.206-23.487-86.051s-15.391 56.498-33.397 122.98c-18.006 66.482-33.104 121.243-33.55 121.692-0.623 0.623-57.98 0.9-104.417 0.502-6.735-0.056-10.477 13.11 60.021-211.133 9.759-31.041 24.371-74.997 32.469-97.679 9.333-26.141 15.989-46.323 20.534-63.173 8.038-32.067 8.319-52.163 6.565-75.625-2.026-27.101-2.321-218.438-0.342-221.638 1.512-2.449 91.223-3.589 99.712-1.268 1.358 0.372 2.265 1.691 2.87 8.928 2.119 6.219 2.286 30.969 2.286 133.744v131.281l5.742 18.112c3.756 11.849 13.201 42.995 20.989 69.22 7.789 26.222 17.21 57.619 20.938 69.771 33.834 110.319 66.14 218.831 66.994 225.011l0.693 5.056zM846.122 631.349l-0.021-6.838-1.065-0.014-0.595-188.993-0.577-183.227-14.666-14.929c-16.424-16.719-29.585-23.101-41.488-20.113-12.963 3.254-12.64-1.8-13.722 214.768l-0.998 199.347h-94.316v-6.851h-1.086v-216.289c0-231.737-0.007-231.599 11.752-254.875 9.366-18.536 23.010-27.559 46.391-30.671h0.002c30.79-4.1 64.001 9.849 94.77 39.809l13.373 13.022v-22.445c0-19.396 0.554-22.601 4.070-23.58 5.756-1.605 77.173-1.707 84.89-0.126l6.396 1.314v6.628l1.086 0.223v495.098l-94.195-1.258zM606.892 533.67c-8.935 38.341-25.68 64.115-53.233 81.939-43.281 27.999-92.718 30.957-138.586 8.291-33.425-16.515-54.951-43.914-66.071-84.083-1.326-4.786-2.298-8.812-3.033-14.815-2.83-14.184-3.163-35.351-3.889-133.951-1.121-151.928 0.616-170.003 19.643-204.51 18.664-33.848 57.403-58.661 99.572-63.782 12.696-1.54 38.43 0.858 53.23 4.961 33.632 9.326 65.864 35.906 80.118 66.078 6.158 13.033 9.875 22.096 12.115 38.651 4.175 22.617 4.47 59.175 4.47 152.375-0.002 118.875-0.379 131.862-4.337 148.847zM499.34 223.997c-7.907-6.028-21.734-8.649-32.983-6.249-8.656 1.847-20.338 15.419-23.934 27.801-4.479 15.436-4.823 229.985-0.954 272.059 6.379 21.054 24.19 32.050 43.635 26.813 15.157-4.082 22.915-13.575 27.336-33.457 3.282-14.754 3.67-33.129 2.972-141.26-0.46-71.701-0.716-106.742-3.058-125.553-2.382-11.87-6.319-15.047-13.015-20.154zM2300.389 425.863h45.57l-0.726 41.281c-0.705 37.869-1.263 42.2-6.324 52.472-7.982 16.21-19.759 23.401-38.446 23.401-22.448 0-36.678-10.849-43.388-33.141-2.858-9.486-5.863-74.685-3.707-80.308 1.205-3.144 7.724-3.705 47.021-3.705zM1995.795 519.763c-6.077 12.247-17.385 18.278-30.525 17.806-10.221-0.365-21.561-4.677-32.488-13.010l-8.14-6.177v-296.598l8.14-6.177c18.429-14.052 38.674-17.031 52.619-7.703 5.519 3.691 9.117 8.779 11.919 16.861 3.647 10.524 3.965 24.003 3.489 148.772-0.495 130.043-0.781 137.702-5.014 146.226zM2560.878 653.367c-9.080 108.842-16.303 144.165-38.751 189.544-29.729 60.101-72.692 91.788-133.876 98.747-47.309 5.379-225.315 12.97-390.044 16.631-285.188 6.338-754.057-5.858-813.939-21.173-27.673-7.077-48.426-19.11-70.022-40.604-37.844-37.662-60.391-91.679-69.452-166.396-20.692-170.606-21.134-376.727-1.188-553.515 8.577-76.041 26.243-125.443 59.41-166.159 20.694-25.406 56.352-46.998 88.26-53.442 22.385-4.523 134.42-10.798 297.605-16.668 24.306-0.874 88.667-2.379 143.030-3.344 113.301-2.012 321.627-0.821 440.719 2.519 80.127 2.249 226.201 8.172 253.5 10.282 7.677 0.593 25.469 1.728 39.537 2.523 47.277 2.67 77.353 12.568 105.596 34.76 36.553 28.718 64.857 81.795 76.815 144.037 11.314 58.894 18.887 163.773 20.422 282.851 1.284 99.491-0.426 153.175-7.621 239.409zM1425.273 692.808l-52.982-0.654-2.326-565.143-45.932-0.581c-35.525-0.488-46.307 0.044-47.167 2.326-0.616 1.626-1.356 129.020-1.672 283.153l-0.581 280.246-103.493 1.307v88.304l305.829-1.235 1.307-87.069-52.982-0.654zM1750.216 368.883v-243.035h-83.725v25.583c0 19.247-0.735 25.583-2.979 25.583-1.64 0-9.226-6.344-16.861-14.098-16.557-16.817-36.171-30.367-52.91-36.63-34.662-12.968-67.589-5.4-81.618 18.75-12.838 22.11-13.082 27.052-13.082 256.335v210.547h83.653l0.654-198.265c0.623-194.821 0.714-198.393 5.377-206.333 6.182-10.521 15.608-13.347 30.597-9.231 8.817 2.423 14.836 6.707 29.143 20.931l18.024 17.952v374.946h83.725v-243.035zM2076.757 160.59c-7.372-16.424-23.806-32.509-37.283-36.485-35.167-10.382-63.375-1.923-95.935 28.708-10.103 9.505-19.51 17.224-20.931 17.224-1.712 0-2.616-7.449-2.616-22.094v-22.094h-83.725v655.845h83.725v-106.982c0-58.84 0.786-106.982 1.744-106.982s9.789 7.807 19.624 17.298c22.629 21.841 41.548 31.399 65.557 33.213 42.811 3.24 68.327-18.794 80.018-69.117 3.647-15.696 3.998-33.625 3.998-179.078-0.002-177.178-0.021-177.918-14.175-209.457zM2430.99 257.832c-0.744-18.226-2.954-39.137-4.942-46.514-11.642-43.167-42.635-73.731-87.432-86.269-60.315-16.878-126.704 10.777-153.205 63.812-14.875 29.769-15.408 35.706-15.408 181.185 0 118.617 0.419 133.171 4.214 149.354 10.747 45.788 37.392 75.422 82.49 91.865 13.068 4.765 26.708 7.207 40.337 7.486 48.672 0.998 96.984-25.18 117.229-67.808 13.659-28.76 15.35-41.060 16.717-122.099l1.235-72.678-178.497-1.235-0.654-48.84c-0.93-68.901 3.716-90.088 22.313-102.621 15.645-10.54 39.679-9.745 52.765 1.744 12.263 10.768 15.726 22.336 16.933 56.107l1.091 29.653h86.195l-1.381-33.143z" /> | ||
421 | <glyph unicode="" glyph-name="twitch" d="M96 960l-96-160v-736h256v-128h128l128 128h160l288 288v608h-864zM832 416l-160-160h-160l-128-128v128h-192v576h640v-416zM608 704h96v-256h-96v256zM416 704h96v-256h-96v256z" /> | ||
422 | <glyph unicode="" glyph-name="vimeo" d="M0 651.63l41.594-54.544c0 0 85.77 67.608 114.36 33.802 28.588-33.802 137.736-441.956 174.17-517.246 31.8-66.030 119.518-153.32 215.714-90.982 96.136 62.34 415.84 335.286 473.066 657.616 57.18 322.226-384.72 254.726-431.53-26.010 116.99 70.236 179.436-28.538 119.57-140.372-59.758-111.724-114.36-184.592-142.952-184.592-28.538 0-50.49 74.768-83.188 205.446-33.798 135.102-33.592 378.46-174.116 350.87-132.518-26.012-306.688-233.988-306.688-233.988z" /> | ||
423 | <glyph unicode="" glyph-name="vimeo2" d="M853.31 960h-682.62c-93.878 0-170.69-76.816-170.69-170.692v-682.62c0-93.938 76.812-170.688 170.69-170.688h682.62c93.878 0 170.69 76.75 170.69 170.69v682.618c0 93.876-76.812 170.692-170.69 170.692zM812.868 521.874c-33.958-191.296-223.708-353.296-280.78-390.31-57.088-37.006-109.154 14.822-128.038 53.994-21.616 44.708-86.41 286.94-103.368 307.020-16.964 20.038-67.876-20.080-67.876-20.080l-24.692 32.376c0 0 103.382 123.448 182.040 138.878 83.404 16.366 83.28-128.066 103.34-208.242 19.4-77.564 32.44-121.952 49.376-121.952 16.97 0 49.382 43.262 84.852 109.57 35.536 66.376-1.538 125.010-70.972 83.292 27.786 166.652 290.062 206.72 256.118 15.454z" /> | ||
424 | <glyph unicode="" glyph-name="vimeo3" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM812.868 521.874c-33.958-191.296-223.708-353.296-280.78-390.31-57.088-37.006-109.154 14.822-128.038 53.994-21.616 44.708-86.41 286.94-103.368 307.020-16.964 20.038-67.876-20.080-67.876-20.080l-24.692 32.376c0 0 103.382 123.448 182.040 138.878 83.404 16.366 83.28-128.066 103.34-208.242 19.4-77.564 32.44-121.952 49.376-121.952 16.97 0 49.382 43.262 84.852 109.57 35.536 66.376-1.538 125.010-70.972 83.292 27.786 166.652 290.062 206.72 256.118 15.454z" /> | ||
425 | <glyph unicode="" glyph-name="lanyrd" d="M852 960h-680c-94.6 0-172-77.4-172-172v-680c0-94.6 77.4-172 172-172h680c94.6 0 172 77.4 172 172v680c0 94.6-77.4 172-172 172zM843.668 152.334c-113.332-37.334-334.666-110-376-120.334s-84-27.668-108 41.666c0 0-204 602.666-222.666 656s-36.848 85.486 5.332 102.334c97.376 38.894 198.666 88.5 217.334 32 16.702-50.546 194.666-608 194.666-608s209.332 73.668 266.666 89.668 77.002 26.668 92-52 44-104-69.332-141.334z" /> | ||
426 | <glyph unicode="" glyph-name="flickr" d="M0 416c0 123.712 100.288 224 224 224s224-100.288 224-224c0-123.712-100.288-224-224-224s-224 100.288-224 224zM576 416c0 123.712 100.288 224 224 224s224-100.288 224-224c0-123.712-100.288-224-224-224s-224 100.288-224 224z" /> | ||
427 | <glyph unicode="" glyph-name="flickr2" d="M800 544c-70.58 0-128-57.42-128-128s57.42-128 128-128c70.58 0 128 57.42 128 128s-57.42 128-128 128zM800 640v0c123.71 0 224-100.288 224-224 0-123.71-100.29-224-224-224s-224 100.29-224 224c0 123.712 100.29 224 224 224zM0 416c0 123.712 100.288 224 224 224s224-100.288 224-224c0-123.712-100.288-224-224-224s-224 100.288-224 224z" /> | ||
428 | <glyph unicode="" glyph-name="flickr3" d="M853.376 960h-682.688c-93.876 0-170.688-76.812-170.688-170.682v-682.626c0-93.942 76.812-170.692 170.688-170.692h682.682c93.874 0 170.63 76.754 170.63 170.696v682.622c0 93.87-76.756 170.682-170.624 170.682zM288 288c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160c0-88.366-71.634-160-160-160zM736 288c-88.368 0-160 71.634-160 160s71.632 160 160 160 160-71.634 160-160c0-88.366-71.632-160-160-160z" /> | ||
429 | <glyph unicode="" glyph-name="flickr4" d="M512 960c-282.77 0-512-230.796-512-515.5s229.23-515.5 512-515.5 512 230.796 512 515.5-229.23 515.5-512 515.5zM288 288c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160c0-88.366-71.634-160-160-160zM736 288c-88.368 0-160 71.634-160 160s71.632 160 160 160 160-71.634 160-160c0-88.366-71.632-160-160-160z" /> | ||
430 | <glyph unicode="" glyph-name="picassa" d="M704 565.74l-364.456 364.456c53.89 19.276 111.94 29.804 172.456 29.804 67.904 0 132.704-13.25 192-37.256v-357.004zM768 256v635.486c153.034-88.528 256-253.978 256-443.486 0-67.904-13.25-132.704-37.256-192h-218.744zM320 192h635.486c-88.528-153.034-253.978-256-443.486-256-67.904 0-132.704 13.25-192 37.256v218.744zM426.26 736l-411.282-411.282c-9.764 39.49-14.978 80.774-14.978 123.282 0 193.382 107.226 361.702 265.452 448.808l160.808-160.808zM256 458.26v-453.746c-94.596 54.722-170.036 138.848-213.874 239.872l213.874 213.874z" /> | ||
431 | <glyph unicode="" glyph-name="picassa2" d="M853.376 960h-682.688c-93.876 0-170.688-76.812-170.688-170.682v-682.626c0-93.942 76.812-170.692 170.688-170.692h682.68c93.876 0 170.632 76.754 170.632 170.696v682.622c0 93.87-76.756 170.682-170.624 170.682zM512 896c68.714 0 133.804-15.49 192-43.138v-287.122l-313.558 313.558c38.656 10.874 79.426 16.702 121.558 16.702zM64 448c0 175.888 101.376 328.074 248.874 401.386l113.386-113.386-356.974-356.974c-3.474 22.484-5.286 45.516-5.286 68.974zM256 80.338c-74.684 52.098-132.764 126.348-164.672 213.25l164.672 164.672v-377.922zM512 0c-68.714 0-133.804 15.49-192 43.138v148.862h559.662c-80.956-116.052-215.43-192-367.662-192zM916.862 256h-148.862v559.664c116.052-80.958 192-215.43 192-367.664 0-68.714-15.49-133.804-43.138-192z" /> | ||
432 | <glyph unicode="" glyph-name="dribbble" d="M512.002-64c-282.32 0-512.002 229.682-512.002 512s229.682 512 512.002 512c282.322 0 511.998-229.682 511.998-512s-229.676-512-511.998-512zM943.798 377.914c-14.962 4.72-135.364 40.632-272.41 18.698 57.204-157.186 80.478-285.208 84.958-311.808 98.114 66.336 167.958 171.426 187.452 293.11zM682.832 44.762c-6.506 38.37-31.898 172.090-93.298 331.64-0.96-0.328-1.922-0.64-2.88-0.972-246.67-85.958-335.216-257.016-343.086-273.104 74.15-57.824 167.336-92.32 268.436-92.32 60.58 0 118.318 12.39 170.828 34.756zM187.098 154.922c9.908 16.96 129.93 215.684 355.476 288.594 5.704 1.84 11.448 3.57 17.236 5.2-10.98 24.844-22.94 49.714-35.456 74.216-218.398-65.36-430.324-62.63-449.46-62.236-0.132-4.442-0.222-8.89-0.222-13.366 0-112.32 42.58-214.874 112.426-292.408zM83.912 536.904c19.558-0.26 199.736-1.042 404.302 53.282-72.46 128.812-150.612 237.11-162.142 252.92-122.348-57.708-213.802-170.496-242.16-306.202zM409.518 872.5c12.088-16.184 91.518-124.348 163.18-256.014 155.508 58.284 221.34 146.77 229.208 157.974-77.23 68.518-178.782 110.2-289.902 110.2-35.29 0-69.6-4.232-102.486-12.16zM850.522 723.888c-9.216-12.474-82.504-106.418-244.202-172.434 10.178-20.832 19.934-42.018 29.016-63.344 3.216-7.56 6.354-15.084 9.418-22.57 145.518 18.298 290.104-11.028 304.526-14.078-0.968 103.224-37.85 198.010-98.758 272.426z" /> | ||
433 | <glyph unicode="" glyph-name="dribbble2" d="M538.752 444.076c-197.352-63.796-302.372-237.678-311.042-252.522-61.116 67.842-98.374 157.576-98.374 255.858 0 3.916 0.078 7.81 0.196 11.696 16.744-0.342 202.18-2.732 393.278 54.458 10.952-21.44 21.416-43.202 31.024-64.94-5.064-1.426-10.092-2.94-15.082-4.55zM765.666 733.654c-6.882-9.804-64.486-87.23-200.556-138.228-62.704 115.206-132.206 209.85-142.782 224.012 28.776 6.936 58.798 10.64 89.674 10.64 97.23 0 186.088-36.47 253.664-96.424zM491.188 572.412c-178.996-47.532-336.65-46.848-353.766-46.622 24.814 118.742 104.836 217.432 211.892 267.926 10.088-13.834 78.472-108.594 141.874-221.304zM577.32 384.5c0.84 0.292 1.68 0.564 2.522 0.852 53.724-139.606 75.942-256.612 81.636-290.186-45.946-19.568-96.466-30.41-149.476-30.41-88.464 0-170.002 30.184-234.882 80.78 6.886 14.078 84.364 163.754 300.2 238.964zM852 960h-680c-94.6 0-172-77.4-172-172v-680c0-94.6 77.4-172 172-172h680c94.6 0 172 77.4 172 172v680c0 94.6-77.4 172-172 172zM512.002 0c-247.030 0-448.002 200.97-448.002 448 0 247.028 200.972 448 448.002 448 247.032 0 447.998-200.972 447.998-448 0-247.030-200.966-448-447.998-448zM651.464 403.036c119.916 19.192 225.266-12.232 238.36-16.36-17.060-106.474-78.172-198.428-164.020-256.472-3.922 23.276-24.288 135.294-74.34 272.832zM594.532 538.524c141.484 57.764 205.608 139.964 213.674 150.88 53.292-65.116 85.566-148.052 86.412-238.372-12.618 2.668-139.13 28.328-266.458 12.316-2.682 6.552-5.426 13.134-8.242 19.75-7.944 18.66-16.482 37.198-25.386 55.426z" /> | ||
434 | <glyph unicode="" glyph-name="dribbble3" d="M765.666 733.654c-6.882-9.804-64.486-87.23-200.556-138.228-62.704 115.206-132.206 209.85-142.782 224.012 28.776 6.936 58.798 10.64 89.674 10.64 97.23 0 186.088-36.47 253.664-96.424zM538.752 444.076c-197.352-63.796-302.372-237.678-311.042-252.522-61.116 67.842-98.374 157.576-98.374 255.858 0 3.916 0.078 7.81 0.196 11.696 16.744-0.342 202.18-2.732 393.278 54.458 10.952-21.44 21.416-43.202 31.024-64.94-5.064-1.426-10.092-2.94-15.082-4.55zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512.002 0c-247.030 0-448.002 200.97-448.002 448 0 247.028 200.972 448 448.002 448 247.032 0 447.998-200.972 447.998-448 0-247.030-200.966-448-447.998-448zM619.918 483.098c-7.946 18.66-16.482 37.198-25.388 55.428 141.484 57.762 205.61 139.964 213.676 150.878 53.292-65.116 85.566-148.052 86.412-238.372-12.618 2.668-139.13 28.328-266.458 12.316-2.682 6.552-5.426 13.134-8.242 19.75zM491.188 572.412c-178.996-47.532-336.65-46.848-353.766-46.622 24.814 118.742 104.836 217.432 211.892 267.926 10.088-13.834 78.472-108.594 141.874-221.304zM577.32 384.5c0.84 0.292 1.68 0.564 2.522 0.852 53.724-139.606 75.942-256.612 81.636-290.186-45.946-19.568-96.466-30.41-149.476-30.41-88.464 0-170.002 30.184-234.882 80.78 6.886 14.078 84.364 163.754 300.2 238.964zM651.464 403.036c119.916 19.192 225.266-12.232 238.36-16.36-17.060-106.474-78.172-198.428-164.020-256.472-3.922 23.276-24.288 135.294-74.34 272.832z" /> | ||
435 | <glyph unicode="" glyph-name="forrst" d="M384 64h-384l448 896 448-896h-384v128h128v64h-128v128h-128zM384 64h128v-128h-128z" /> | ||
436 | <glyph unicode="" glyph-name="forrst2" d="M448 384h128v-256h-128zM852 960h-680c-94.6 0-172-77.4-172-172v-680c0-94.6 77.4-172 172-172h680c94.6 0 172 77.4 172 172v680c0 94.6-77.4 172-172 172zM576 128v-128h-128v128h-256l320 704 320-704h-256z" /> | ||
437 | <glyph unicode="" glyph-name="deviantart" d="M561.856 553c-39.042 2.282-84.082-0.048-136.25-8.95l120.334-216.888 478.060 131.266c-5.154 12.26-12.686 24.226-22.662 35.798-49.474 57.278-156.74 108.374-273.604 131.418l0.002 0.026c-114.644 26.874-238.802 25.744-365.96 6.548-4.584-0.688-9.144-1.422-13.68-2.184l-42.272 78.292c-41.142-5.492-79.808-14.050-115.606-25.474l40.26-84.198c-65.76-25.476-119.722-61.76-158.658-105.432-64.212-73.064-89.59-164.908-58.746-254.352 6.204-18.042 14.588-35.16 24.936-51.196l478.068 131.298-132.75 245.848c4.558 0.88 9.196 1.768 13.928 2.624 214.682 38.298 332.102-20.864 396.416-83.83l-163.558-39.648-68.258 109.034zM174.722 333.61c-14.758 67.352-3.012 142.526 90.404 192.594l73.138-152.948-163.542-39.646z" /> | ||
438 | <glyph unicode="" glyph-name="deviantart2" d="M852 960h-680c-94.6 0-172-77.4-172-172v-680c0-94.6 77.4-172 172-172h680c94.6 0 172 77.4 172 172v680c0 94.6-77.4 172-172 172zM960 192h-384v236c0 0 70.334-1 108-40v-68h154.41c-11.82 37.882-37.068 75.112-73.128 106.664-61.98 54.23-163.194 81.336-253.282 81.336v-316h-448v96c0 43.396 14.65 86.538 42.364 124.76 24.594 33.918 58.864 63.832 101.86 88.914 50.432 29.418 110.562 50.708 175.776 62.778v139.548h128v-128c147 0 221.612-26.396 303.778-74.326 42.996-25.082 77.266-54.996 101.86-88.914 27.714-38.222 42.362-81.364 42.362-124.76v-96zM199.59 320c11.82 37.882 37.070 75.112 73.128 106.664 31.54 27.596 69.62 49.188 111.282 63.756v-170.42h-184.41z" /> | ||
439 | <glyph unicode="" glyph-name="steam" d="M704 672c0 53.019 42.981 96 96 96s96-42.981 96-96c0-53.019-42.981-96-96-96s-96 42.981-96 96zM958.392 830.392c-87.478 87.476-229.306 87.476-316.786 0-35.578-35.578-56.684-80.146-63.322-126.392v0l-204.694-310.228c-27.506-1.41-54.776-8.416-79.966-21.016l-157.892 123.424c-36.55 28.574-89.342 22.102-117.912-14.448-28.572-36.55-22.102-89.342 14.448-117.912l155.934-121.892c-16.96-66.782 0.672-140.538 52.93-192.794 78.906-78.904 206.832-78.904 285.736 0 48.466 48.466 67.15 115.428 56.076 178.166l249.054 222.986c46.248 6.638 90.816 27.744 126.394 63.322 87.478 87.476 87.478 229.306 0 316.784zM384 57.302c-74.39 0-134.698 60.304-134.698 134.698 0 0.712 0.042 1.414 0.054 2.124l66.912-52.304c15.36-12.006 33.582-17.824 51.674-17.824 24.962 0 49.672 11.080 66.238 32.272 28.572 36.55 22.102 89.342-14.448 117.912l-63.5 49.636c8.962 1.878 18.248 2.88 27.768 2.88 74.392 0 134.698-60.304 134.698-134.698s-60.306-134.696-134.698-134.696zM800 512c-88.366 0-160 71.634-160 160s71.634 160 160 160 160-71.634 160-160-71.634-160-160-160z" /> | ||
440 | <glyph unicode="" glyph-name="steam2" d="M303.922 123.99c27.144 0 53.786 13.136 69.972 37.416 25.734 38.602 15.302 90.754-23.298 116.488l-66.074 44.048c11.308 3.080 23.194 4.756 35.478 4.756 74.392 0 134.696-60.304 134.696-134.698s-60.306-134.698-134.698-134.698c-72.404 0-131.444 57.132-134.548 128.774l71.954-47.968c14.322-9.548 30.506-14.118 46.518-14.118zM853.34 960c93.876 0 170.66-76.812 170.66-170.688v-682.628c0-93.936-76.784-170.684-170.66-170.684h-682.652c-93.876 0-170.688 76.75-170.688 170.682v203.028l121.334-80.888c-11.652-63.174 6.938-130.83 55.798-179.69 78.904-78.904 206.83-78.904 285.736 0 48.468 48.466 67.15 115.43 56.076 178.166l249.056 222.988c46.248 6.638 90.816 27.744 126.394 63.322 87.476 87.476 87.476 229.306 0 316.784-87.48 87.478-229.308 87.478-316.786 0-35.578-35.578-56.684-80.146-63.322-126.392v0l-204.694-310.23c-31.848-1.632-63.378-10.764-91.726-27.392l-217.866 145.244v277.69c0 93.876 76.81 170.688 170.686 170.688h682.654zM896 672c0 88.366-71.634 160-160 160s-160-71.634-160-160 71.634-160 160-160 160 71.634 160 160zM640 672c0 53.020 42.98 96 96 96s96-42.98 96-96-42.98-96-96-96-96 42.98-96 96z" /> | ||
441 | <glyph unicode="" glyph-name="dropbox" d="M736 928l-224-192 288-192 224 192zM512 736l-224 192-288-192 224-192zM800 544l224-192-288-160-224 192zM512 384l-288 160-224-192 288-160zM728.156 114.43l-216.156 185.278-216.158-185.278-135.842 75.468v-93.898l352-160 352 160v93.898z" /> | ||
442 | <glyph unicode="" glyph-name="onedrive" d="M350.868 131.612c-60.274 15.060-93.856 62.97-93.962 134.064-0.032 22.726 1.612 33.62 7.286 48.236 13.908 35.834 50.728 62.872 99.176 72.822 24.11 4.95 31.536 10.266 31.536 22.572 0 3.862 2.872 15.36 6.378 25.552 15.932 46.306 45.43 84.91 76.948 100.702 32.99 16.526 49.642 20.254 89.548 20.040 56.674-0.304 84.952-12.598 124.496-54.128l21.75-22.842 19.484 6.742c94.3 32.636 188.306-22.916 195.888-115.756l2.072-25.398 18.57-6.65c53.032-19.004 77.96-58.904 73.442-117.556-2.958-38.358-20.89-68.98-49.3-84.184l-13.356-7.146-296.822-0.57c-228.094-0.44-300.6 0.368-313.134 3.5v0zM103.218 174.034c-36.176 9.086-74.506 42.854-92.48 81.47-10.196 21.906-10.738 25.128-10.738 63.88 0 36.864 0.87 42.778 8.988 61.080 17.11 38.582 49.894 66.46 91.030 77.408 8.684 2.312 16.842 6 18.128 8.196 1.29 2.198 2.722 14.164 3.182 26.592 2.866 77.196 50.79 145.214 117.708 167.056 36.154 11.8 83.572 12.898 122.896-3.726 12.47-5.274 11.068-6.404 37.438 30.14 15.594 21.612 45.108 44.49 70.9 58.18 27.838 14.776 56.792 21.584 91.412 21.494 96.768-0.252 180.166-64.22 211.004-161.848 9.854-31.192 9.362-39.926-2.26-40.184-5.072-0.112-19.604-3.064-32.292-6.558l-23.072-6.358-21.052 22.25c-59.362 62.734-156.238 76.294-238.592 33.396-32.9-17.138-59.34-41.746-79.31-73.81-14.236-22.858-32.39-65.504-32.39-76.094 0-7.51-5.754-11.264-30.332-19.782-76.094-26.376-120.508-87.282-120.476-165.218 0.010-28.368 6.922-63.074 16.52-82.956 3.618-7.494 5.634-14.622 4.484-15.836-2.946-3.106-97.608-2.060-110.696 1.228v0z" /> | ||
443 | <glyph unicode="" glyph-name="github" d="M512.008 947.358c-282.738 0-512.008-229.218-512.008-511.998 0-226.214 146.704-418.132 350.136-485.836 25.586-4.738 34.992 11.11 34.992 24.632 0 12.204-0.48 52.542-0.696 95.324-142.448-30.976-172.504 60.41-172.504 60.41-23.282 59.176-56.848 74.916-56.848 74.916-46.452 31.778 3.51 31.124 3.51 31.124 51.4-3.61 78.476-52.766 78.476-52.766 45.672-78.27 119.776-55.64 149.004-42.558 4.588 33.086 17.852 55.68 32.506 68.464-113.73 12.942-233.276 56.85-233.276 253.032 0 55.898 20.004 101.574 52.76 137.428-5.316 12.9-22.854 64.972 4.952 135.5 0 0 43.006 13.752 140.84-52.49 40.836 11.348 84.636 17.036 128.154 17.234 43.502-0.198 87.336-5.886 128.256-17.234 97.734 66.244 140.656 52.49 140.656 52.49 27.872-70.528 10.35-122.6 5.036-135.5 32.82-35.856 52.694-81.532 52.694-137.428 0-196.654-119.778-239.95-233.79-252.624 18.364-15.89 34.724-47.046 34.724-94.812 0-68.508-0.596-123.644-0.596-140.508 0-13.628 9.222-29.594 35.172-24.566 203.322 67.776 349.842 259.626 349.842 485.768 0 282.78-229.234 511.998-511.992 511.998z" /> | ||
444 | <glyph unicode="" glyph-name="github2" d="M0 403.59c0-46.398 4.34-88.38 13.022-125.934 8.678-37.554 20.696-70.184 36.052-97.892s34.884-52.078 58.586-73.108c23.7-21.032 49.406-38.224 77.112-51.576 27.706-13.35 59.336-24.198 94.888-32.546 35.552-8.346 71.856-14.188 108.91-17.528 37.054-3.338 77.78-5.006 122.178-5.006 44.732 0 85.628 1.668 122.68 5.006 37.054 3.34 73.442 9.184 109.16 17.528s67.512 19.192 95.388 32.546c27.876 13.354 53.746 30.544 77.616 51.576 23.87 21.030 43.566 45.404 59.086 73.108s27.622 60.336 36.302 97.892c8.68 37.556 13.020 79.536 13.020 125.934 0 82.788-27.708 154.394-83.118 214.816 3.004 8.012 5.758 17.108 8.262 27.29s4.84 24.702 7.010 43.564c2.17 18.862 1.336 40.642-2.504 65.346-3.838 24.704-10.932 49.906-21.284 75.612l-7.51 1.502c-5.342 1-14.106 0.75-26.29-0.752s-26.372-4.506-42.562-9.014c-16.19-4.506-37.054-13.186-62.592-26.038s-52.494-28.958-80.87-48.32c-48.736 13.352-115.668 20.030-200.792 20.030-84.792 0-151.556-6.678-200.294-20.030-28.376 19.362-55.5 35.468-81.37 48.32s-46.484 21.532-61.84 26.038c-15.354 4.508-29.71 7.428-43.062 8.764-13.354 1.336-21.784 1.752-25.288 1.252s-6.26-1.086-8.262-1.752c-10.348-25.706-17.442-50.906-21.28-75.612-3.838-24.704-4.674-46.486-2.504-65.346s4.508-33.382 7.010-43.564c2.504-10.182 5.258-19.278 8.262-27.29-55.414-60.422-83.122-132.026-83.122-214.816zM125.684 277.906c0 48.070 21.866 92.136 65.596 132.194 13.018 12.020 28.208 21.114 45.566 27.292 17.358 6.176 36.97 9.68 58.836 10.516 21.866 0.834 42.812 0.668 62.842-0.502 20.028-1.168 44.732-2.754 74.108-4.756 29.376-2.004 54.748-3.004 76.112-3.004 21.366 0 46.736 1 76.112 3.004 29.378 2.002 54.078 3.588 74.11 4.756 20.030 1.17 40.974 1.336 62.842 0.502 21.866-0.836 41.476-4.34 58.838-10.516 17.356-6.176 32.544-15.27 45.564-27.292 43.73-39.394 65.598-83.456 65.598-132.194 0-28.712-3.59-54.162-10.768-76.364-7.178-22.2-16.358-40.81-27.542-55.83s-26.704-27.79-46.568-38.306c-19.862-10.516-39.222-18.61-58.084-24.288-18.862-5.674-43.066-10.098-72.608-13.27-29.546-3.172-55.916-5.092-79.118-5.758-23.2-0.668-52.66-1.002-88.378-1.002s-65.178 0.334-88.378 1.002c-23.2 0.666-49.574 2.586-79.116 5.758s-53.744 7.596-72.606 13.27c-18.86 5.678-38.222 13.774-58.084 24.288s-35.386 23.282-46.568 38.306c-11.182 15.022-20.364 33.63-27.54 55.83-7.178 22.202-10.766 47.656-10.766 76.364zM640 288c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96zM256 288c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96z" /> | ||
445 | <glyph unicode="" glyph-name="github3" d="M512 128.108c-19.154 0-38.308 9.916-58.142 29.75-7.81 7.81-7.81 20.474 0 28.286 7.81 7.808 20.474 7.808 28.286 0 12.206-12.21 21.972-18.144 29.856-18.144 7.882 0 17.65 5.934 29.858 18.142 7.812 7.808 20.472 7.808 28.286 0 7.81-7.81 7.81-20.474 0-28.286-19.836-19.832-38.99-29.748-58.144-29.748zM0 434.508c0-49.892 4.266-95.122 12.8-135.682s20.534-75.74 36-105.532c15.466-29.792 35.022-55.904 58.666-78.34s49.332-40.92 77.066-55.458c27.734-14.536 59.466-26.296 95.2-35.266 35.732-8.974 72.088-15.256 109.066-18.846s77.69-5.384 122.134-5.384c44.444 0 85.242 1.79 122.398 5.38s73.602 9.872 109.332 18.846c35.734 8.974 67.558 20.73 95.468 35.266 27.91 14.538 53.778 33.026 77.598 55.458 23.824 22.436 43.47 48.548 58.934 78.34 15.47 29.794 27.56 64.974 36.27 105.532 8.71 40.56 13.066 85.788 13.066 135.68 0 89.38-27.736 166.372-83.2 230.982 3.2 8.616 5.954 18.486 8.266 29.614 2.308 11.128 4.532 26.832 6.664 47.112 2.138 20.282 1.336 43.704-2.398 70.264-3.734 26.564-10.754 53.664-21.066 81.302l-8 1.618c-5.332 1.076-14.042 0.718-26.132-1.080-12.086-1.794-26.222-5.022-42.398-9.69-16.176-4.664-37.066-13.908-62.668-27.728-25.598-13.818-52.62-31.318-81.066-52.496-48.356 14.718-115.020 30.116-200 30.116-84.976 0-151.822-15.396-200.53-30.114-28.446 21.18-55.556 38.588-81.334 52.228-25.78 13.642-46.402 22.974-61.868 27.998-15.468 5.024-29.778 8.256-42.934 9.69-13.156 1.436-21.602 1.886-25.334 1.346-3.732-0.538-6.488-1.166-8.266-1.884-10.314-27.64-17.424-54.74-21.336-81.304-3.91-26.56-4.8-49.892-2.666-69.992 2.134-20.102 4.444-35.898 6.934-47.382 2.49-11.486 5.334-21.358 8.534-29.614-55.466-64.25-83.2-141.242-83.2-230.98zM136.536 320.596c0 58.022 21.332 110.638 64 157.856 12.8 14.406 27.646 25.312 44.534 32.712 16.89 7.402 36.088 11.606 57.6 12.606s42.044 0.8 61.6-0.6c19.556-1.402 43.734-3.302 72.534-5.702 28.798-2.404 53.688-3.602 74.666-3.602 20.976 0 45.868 1.2 74.664 3.602 28.806 2.4 52.982 4.3 72.536 5.702 19.56 1.4 40.090 1.6 61.602 0.6 21.512-1.002 40.802-5.204 57.868-12.606 17.066-7.4 32-18.306 44.8-32.712 42.664-47.218 64-99.834 64-157.856 0-34.012-3.554-64.324-10.668-90.934-7.11-26.612-16.090-48.916-26.934-66.922-10.844-18.008-26.048-33.218-45.598-45.62-19.558-12.406-38.492-22.010-56.8-28.81-18.312-6.8-41.958-12.104-70.934-15.906-28.982-3.796-54.934-6.102-77.872-6.9-22.934-0.8-51.82-1.2-86.664-1.2s-63.644 0.402-86.4 1.2c-22.756 0.798-48.622 3.104-77.6 6.9-28.978 3.802-52.622 9.104-70.934 15.906-18.31 6.802-37.244 16.404-56.8 28.81-19.556 12.404-34.756 27.612-45.6 45.62-10.846 18.006-19.824 40.31-26.934 66.922-7.11 26.61-10.666 56.922-10.666 90.934zM256 351.996c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96zM640 351.996c0 53.019 28.654 96 64 96s64-42.981 64-96c0-53.019-28.654-96-64-96s-64 42.981-64 96z" /> | ||
446 | <glyph unicode="" glyph-name="github4" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM816.056 143.944c-39.518-39.516-85.512-70.532-136.708-92.186-13.006-5.5-26.214-10.328-39.6-14.492v76.734c0 40.334-13.834 70-41.5 89 17.334 1.666 33.25 4 47.75 7s29.834 7.334 46 13 30.666 12.416 43.5 20.25 25.166 18 37 30.5 21.75 26.666 29.75 42.5 14.334 34.834 19 57 7 46.584 7 73.25c0 51.666-16.834 95.666-50.5 132 15.334 40 13.666 83.5-5 130.5l-12.5 1.5c-8.666 1-24.25-2.666-46.75-11s-47.75-22-75.75-41c-39.666 11-80.834 16.5-123.5 16.5-43 0-84-5.5-123-16.5-17.666 12-34.416 21.916-50.25 29.75s-28.5 13.166-38 16-18.334 4.584-26.5 5.25-13.416 0.834-15.75 0.5-4-0.666-5-1c-18.666-47.334-20.334-90.834-5-130.5-33.666-36.334-50.5-80.334-50.5-132 0-26.666 2.334-51.084 7-73.25s11-41.166 19-57 17.916-30 29.75-42.5 24.166-22.666 37-30.5 27.334-14.584 43.5-20.25 31.5-10 46-13 30.416-5.334 47.75-7c-27.334-18.666-41-48.334-41-89v-78.23c-15.098 4.494-29.98 9.804-44.6 15.988-51.194 21.654-97.188 52.67-136.706 92.186-39.516 39.518-70.534 85.512-92.186 136.708-22.398 52.958-33.756 109.262-33.756 167.348s11.358 114.39 33.758 167.35c21.654 51.194 52.67 97.188 92.186 136.706s85.512 70.534 136.706 92.186c52.96 22.4 109.264 33.758 167.35 33.758s114.39-11.358 167.35-33.758c51.196-21.654 97.19-52.67 136.708-92.186 39.516-39.516 70.532-85.512 92.186-136.706 22.398-52.96 33.756-109.264 33.756-167.35s-11.358-114.39-33.758-167.35c-21.654-51.194-52.67-97.19-92.186-136.706z" /> | ||
447 | <glyph unicode="" glyph-name="github5" d="M235.278 711.28c-50.792 0-94.484-16.806-131.084-50.416-38.086-35.852-57.14-80.66-57.14-134.436 0-35.852 10.376-69.462 31.294-100.832 18.674-29.126 38.18-47.806 63.778-56.024v-2.242c-25.598-10.448-36.966-36.59-36.966-78.418 0-32.124 11.372-56.022 36.966-71.708v-2.242c-70.654-23.146-102.992-66.094-102.992-128.83 0-54.534 23.748-94.488 70.066-119.878 36.59-20.172 83.578-30.254 140.346-30.254 138.17 0 207.406 57.882 207.406 173.664 0 72.446-53.322 116.882-160.128 133.316-24.646 3.726-43.286 12.696-55.982 26.89-9.708 9.708-14.542 19.418-14.542 29.126 0 27.632 14.958 43.696 44.82 48.176 45.558 6.714 82.728 27.824 111.486 63.296 28.75 35.48 43.13 77.118 43.13 124.916 0 14.938-4.518 30.996-10.488 48.172 19.418 4.488 33.050 8.594 43.292 12.332v115.392c-45.054-17.928-86.99-26.884-122.842-26.884-31.374 17.922-63.824 26.884-100.42 26.884zM247.602 152.23c62.744 0 94.104-19.042 94.104-57.14 0-40.336-28.754-60.492-86.264-60.492-65.724 0-98.586 19.422-98.586 58.254-0.002 39.59 30.244 59.378 90.746 59.378zM239.76 448c-47.054 0-70.586 25.764-70.586 77.308 0 55.262 23.532 82.906 70.586 82.906 22.402 0 39.958-8.596 52.652-25.768 10.458-15.69 15.69-34.36 15.69-56.022 0-52.278-22.786-78.424-68.342-78.424zM580.384 960c-21.656 0-40.14-8.214-55.454-24.648-15.314-16.436-22.97-36.216-22.97-59.376 0-22.41 7.658-41.82 22.97-58.258 15.308-16.434 33.792-24.64 55.454-24.64 20.91 0 39.028 8.208 54.34 24.64 15.312 16.438 22.96 35.848 22.96 58.258 0 23.16-7.648 42.944-22.96 59.376-15.318 16.434-33.43 24.648-54.34 24.648zM643.13 704.002h-126.606c1.496-14.336-0.64-36.042-0.64-71.14v-348.432c0-35.856 2.136-64.774 0.64-76.036h126.606c-1.5 16.376-5.394 44.668-5.394 82.758v343.946c-0.006 32.864 3.894 54.568 5.394 68.904zM922.336 315.8c-32.872 0-49.082 25.028-49.082 75.066v206.64h49.864c8.96 0 17.032 0.492 27.118-0.246 10.086-0.748 14.152-0.25 19.278-0.25v106.99h-96.258v47.616c0 17.922 2.816 34.302 5.054 44.542h-129.958c2.242-10.24 2.028-25.876 2.028-46.79v-45.368h-56.32v-106.988c15.364 2.24 29.090 3.356 38.796 3.356l17.524-1.118v-202.786c0-62.742 7.958-108.672 23.636-137.8 20.922-38.84 57.622-58.258 112.136-58.258 38.848 0 73.118 7.464 98.714 22.41v112.032c-20.474-12.7-39.382-19.048-62.53-19.048z" /> | ||
448 | <glyph unicode="" glyph-name="wordpress" d="M128 448.008c0-148.026 88.322-275.968 216.43-336.578l-183.178 488.784c-21.308-46.508-33.252-97.982-33.252-152.206zM771.228 466.872c0 46.234-17.054 78.236-31.654 103.142-19.458 30.82-37.72 56.894-37.72 87.716 0 34.374 26.766 66.376 64.486 66.376 1.704 0 3.32-0.204 4.976-0.302-68.316 60.97-159.34 98.196-259.308 98.196-134.16 0-252.186-67.046-320.844-168.568 9.010-0.282 17.506-0.454 24.712-0.454 40.154 0 102.34 4.752 102.34 4.752 20.69 1.182 23.132-28.434 2.458-30.822 0 0-20.81-2.368-43.952-3.55l139.834-405.106 84.044 245.456-59.822 159.65c-20.688 1.184-40.278 3.55-40.278 3.55-20.702 1.192-18.272 32.002 2.438 30.822 0 0 63.4-4.752 101.134-4.752 40.146 0 102.35 4.752 102.35 4.752 20.702 1.182 23.14-28.434 2.446-30.822 0 0-20.834-2.372-43.948-3.55l138.78-402.018 38.312 124.632c16.58 51.75 29.216 88.9 29.216 120.9zM518.742 415.296l-115.226-326.058c34.416-9.858 70.794-15.238 108.488-15.238 44.716 0 87.604 7.518 127.518 21.2-1.018 1.602-1.974 3.304-2.75 5.154l-118.030 314.942zM848.962 627.428c1.652-11.91 2.588-24.686 2.588-38.458 0-37.93-7.292-80.596-29.202-133.95l-117.286-330.272c114.162 64.828 190.938 185.288 190.938 323.258 0 65.030-17.060 126.16-47.038 179.422zM512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 0c-247.424 0-448 200.576-448 448s200.576 448 448 448 448-200.576 448-448-200.576-448-448-448z" /> | ||
449 | <glyph unicode="" glyph-name="wordpress2" d="M518.742 415.296l118.030-314.942c0.778-1.85 1.732-3.55 2.75-5.154-39.912-13.682-82.804-21.2-127.518-21.2-37.694 0-74.072 5.38-108.488 15.238l115.226 326.058zM896 448.006c0-137.97-76.776-258.43-190.94-323.258l117.286 330.272c21.912 53.354 29.204 96.020 29.204 133.95 0 13.772-0.938 26.548-2.588 38.458 29.978-53.262 47.038-114.392 47.038-179.422zM128 448.008c0 54.224 11.944 105.698 33.252 152.206l183.178-488.784c-128.108 60.61-216.43 188.552-216.43 336.578zM191.164 653.432c68.658 101.522 186.684 168.568 320.844 168.568 99.968 0 190.992-37.226 259.308-98.196-1.656 0.098-3.27 0.302-4.976 0.302-37.72 0-64.486-32.002-64.486-66.376 0-30.822 18.262-56.896 37.72-87.716 14.6-24.906 31.654-56.908 31.654-103.142 0-32.002-12.636-69.15-29.216-120.9l-38.312-124.632-138.78 402.018c23.116 1.178 43.948 3.55 43.948 3.55 20.694 2.388 18.258 32.004-2.446 30.822 0 0-62.204-4.752-102.35-4.752-37.734 0-101.134 4.752-101.134 4.752-20.71 1.18-23.14-29.63-2.438-30.822 0 0 19.59-2.366 40.278-3.55l59.822-159.65-84.044-245.456-139.834 405.106c23.142 1.182 43.952 3.55 43.952 3.55 20.674 2.388 18.232 32.004-2.458 30.822 0 0-62.186-4.752-102.34-4.752-7.206 0-15.702 0.172-24.712 0.454zM852 960h-680c-94.6 0-172-77.4-172-172v-680c0-94.6 77.4-172 172-172h680c94.6 0 172 77.4 172 172v680c0 94.6-77.4 172-172 172zM960 448c0-247.424-200.576-448-448-448s-448 200.576-448 448 200.576 448 448 448 448-200.576 448-448z" /> | ||
450 | <glyph unicode="" glyph-name="joomla" d="M266.004 683.322c32.832 32.844 86.002 32.844 118.804 0.032l7.826-7.868 101.104 101.156-7.874 7.88c-57.624 57.7-138.514 77.878-212.42 60.522-10.594 65.182-67.088 114.924-135.174 114.956-75.65 0-136.954-61.442-136.97-137.158 0-65.336 45.59-120 106.662-133.83-23.138-77.45-4.242-164.834 56.846-225.984l227.826-227.9 100.996 101.214-227.81 227.886c-32.682 32.722-32.742 86.126 0.184 119.094zM1022.712 822.842c0.016 75.762-61.318 137.158-136.984 137.158-69.234 0-126.478-51.444-135.682-118.238-77.074 22.664-163.784 3.496-224.64-57.408l-227.84-227.9 101.102-101.172 227.766 227.856c32.94 32.966 85.988 32.906 118.684 0.184 32.8-32.83 32.8-86.114-0.032-118.956l-7.794-7.836 101.010-101.248 7.858 7.928c60.458 60.566 79.678 146.756 57.612 223.638 67.15 8.834 118.94 66.364 118.94 135.994zM906.266 208.936c18.102 74.458-1.976 156.324-60.108 214.5l-227.49 227.992-101.102-101.122 227.52-228.012c32.94-32.996 32.864-86.096 0.184-118.848-32.802-32.814-86.004-32.814-118.836 0.030l-7.766 7.79-100.994-101.246 7.732-7.728c61.516-61.594 149.618-80.438 227.368-56.488 12.632-62.682 67.934-109.804 134.258-109.804 75.604 0 136.968 61.35 136.968 137.126 0 69.2-51.18 126.456-117.734 135.81zM612.344 431.316l-227.536-227.992c-32.71-32.768-86.034-32.828-118.944 0.124-32.818 32.904-32.832 86.098-0.044 118.97l7.808 7.774-101.086 101.124-7.734-7.712c-58.76-58.802-78.56-141.834-59.45-216.982-60.398-14.26-105.358-68.634-105.358-133.496-0.016-75.746 61.332-137.126 136.982-137.126 65.1 0.032 119.588 45.418 133.54 106.382 74.702-18.552 156.998 1.304 215.344 59.756l227.49 227.96-101.012 101.218z" /> | ||
451 | <glyph unicode="" glyph-name="blogger" d="M957.796 576h-57.406c-35.166 0-65.988 29.742-68.39 64v0c0.004 182.668-147.258 320-331.19 320h-167.824c-183.812 0-332.856-148-332.986-330.666v-362.798c0-182.654 149.174-330.536 332.984-330.536h358.42c183.948 0 332.596 147.882 332.596 330.536v234.382c0 36.502-29.44 75.082-66.204 75.082zM320 704h192c35.2 0 64-28.8 64-64s-28.8-64-64-64h-192c-35.2 0-64 28.8-64 64s28.8 64 64 64zM704 192h-384c-35.2 0-64 28.8-64 64s28.8 64 64 64h384c35.2 0 64-28.8 64-64s-28.8-64-64-64z" /> | ||
452 | <glyph unicode="" glyph-name="blogger2" d="M853.348 960h-682.698c-94.246 0-170.65-76.418-170.65-170.682v-682.636c0-94.266 76.404-170.682 170.65-170.682h682.696c94.25 0 170.648 76.416 170.648 170.682l0.006 682.636c0 94.264-76.404 170.682-170.652 170.682zM896 311.902c0-136.99-111.486-247.902-249.444-247.902h-268.818c-137.856 0-249.738 110.912-249.738 247.902v272.098c0.096 137 111.88 248 249.738 248h125.868c137.952 0 248.398-103 248.394-240 1.802-25.694 24.922-48 51.292-48h43.052c27.574 0 49.656-28.934 49.656-56.312v-175.786zM704 320c0-35.2-28.8-64-64-64h-256c-35.2 0-64 28.8-64 64v0c0 35.2 28.8 64 64 64h256c35.2 0 64-28.8 64-64v0zM576 576c0-35.2-28.8-64-64-64h-128c-35.2 0-64 28.8-64 64v0c0 35.2 28.8 64 64 64h128c35.2 0 64-28.8 64-64v0z" /> | ||
453 | <glyph unicode="" glyph-name="tumblr" d="M576.032 512l-0.002-234.184c0-59.418-0.77-93.656 5.53-110.5 6.25-16.754 21.918-34.146 38.99-44.202 22.684-13.588 48.542-20.376 77.708-20.376 51.854 0 82.478 6.848 133.742 40.54v-153.944c-43.7-20.552-81.866-32.594-117.324-40.922-35.5-8.242-73.86-12.406-115.064-12.406-46.828 0-74.456 5.886-110.41 17.656-35.958 11.868-66.66 28.806-92.020 50.54-25.45 21.922-43.022 45.208-52.848 69.832-9.826 24.636-14.716 60.414-14.716 107.244v359.1h-137.426v145.006c40.208 13.042 85.164 31.788 113.78 56.152 28.754 24.45 51.766 53.706 69.106 87.944 17.392 34.146 29.348 77.712 35.872 130.516h165.084l-0.002-255.996h255.968v-192h-255.968z" /> | ||
454 | <glyph unicode="" glyph-name="tumblr2" d="M853.38 960h-682.692c-93.878 0-170.686-76.814-170.686-170.686v-682.626c0-93.938 76.808-170.688 170.686-170.688h682.692c93.87 0 170.62 76.75 170.62 170.688v682.628c-0.008 93.87-76.758 170.684-170.62 170.684zM731.716 135.312c-30.152-14.188-57.528-24.188-82-29.938-24.496-5.69-50.96-8.558-79.402-8.558-32.312 0-51.376 4.058-76.188 12.188-24.808 8.188-46 19.872-63.5 34.872-17.558 15.128-29.686 31.198-36.466 48.194-6.784 17.004-10.156 41.692-10.156 74.004v247.802h-95.996v100.066c27.744 9 59.936 21.934 79.684 38.75 19.84 16.872 35.718 37.058 47.684 60.684 12.004 23.566 20.25 53.626 24.752 90.066h100.5v-163.442h163.372v-126.126h-163.378v-181.188c0-41-0.528-64.626 3.816-76.25 4.312-11.56 15.126-23.56 26.902-30.5 15.656-9.376 33.504-14.060 53.626-14.060 35.786 0 71.378 11.626 106.75 34.876v-111.44z" /> | ||
455 | <glyph unicode="" glyph-name="yahoo" d="M848 320l-14.858 416.020c-0.628 17.59 13.258 31.98 30.858 31.98h128c17.6 0 29.468-14.176 26.376-31.502l-74.376-416.498zM960 184c0-30.8-25.2-56-56-56h-16c-30.8 0-56 25.2-56 56v16c0 30.8 25.2 56 56 56h16c30.8 0 56-25.2 56-56v-16zM384 768c-212.078 0-384-143.268-384-320 0-176.73 171.922-320 384-320s384 143.27 384 320c0 176.732-171.922 320-384 320zM640 512h-74.262l-117.738-117.74v-74.26h96v-64h-256v64h96v74.26l-181.74 181.74h-42.062v64h191.606v-64h-42.064l106.26-106.26 32 32v74.26h192v-64z" /> | ||
456 | <glyph unicode="" glyph-name="tux" d="M567.656 223.084c-81.944-38.118-158.158-37.716-209.34-34.020-61.052 4.41-110.158 21.124-131.742 35.732-13.3 9.006-31.384 5.522-40.39-7.782-9.004-13.302-5.52-31.386 7.782-40.39 34.698-23.486 96.068-40.954 160.162-45.58 10.866-0.784 22.798-1.278 35.646-1.278 55.782 0 126.626 5.316 202.42 40.57 14.564 6.778 20.878 24.074 14.104 38.64-6.776 14.566-24.076 20.872-38.642 14.108zM890.948 266.184c2.786 252.688 28.762 730.206-454.97 691.612-477.6-38.442-350.964-542.968-358.082-711.95-6.308-89.386-35.978-198.648-77.896-309.846h129.1c13.266 47.122 23.024 93.72 27.232 138.15 7.782-5.428 16.108-10.674 24.994-15.7 14.458-8.518 26.884-19.844 40.040-31.834 30.744-28.018 65.59-59.774 133.712-63.752 4.572-0.262 9.174-0.394 13.676-0.394 68.896 0 116.014 30.154 153.878 54.382 18.14 11.612 33.818 21.64 48.564 26.452 41.91 13.12 78.532 34.296 105.904 61.252 4.276 4.208 8.242 8.538 11.962 12.948 15.246-55.878 36.118-118.758 59.288-181.504h275.65c-66.174 102.224-134.436 202.374-133.052 330.184zM124.11 403.648c0 0.016 0 0.030-0.002 0.046-4.746 82.462 34.71 151.832 88.126 154.936 53.412 3.106 100.56-61.228 105.304-143.692 0-0.014 0.004-0.030 0.004-0.044 0.256-4.446 0.368-8.846 0.37-13.206-16.924-4.256-32.192-10.436-45.872-17.63-0.052 0.612-0.092 1.216-0.152 1.83 0 0.008 0 0.018 0 0.026-4.57 46.81-29.572 82.16-55.852 78.958-26.28-3.204-43.88-43.75-39.312-90.558 0-0.010 0.004-0.018 0.004-0.026 1.992-20.408 7.868-38.636 16.042-52.444-2.034-1.604-7.784-5.812-14.406-10.656-4.97-3.634-11.020-8.058-18.314-13.43-19.882 26.094-33.506 63.58-35.94 105.89zM665.26 199.822c-1.9-43.586-58.908-84.592-111.582-101.044l-0.296-0.096c-21.9-7.102-41.428-19.6-62.104-32.83-34.732-22.224-70.646-45.208-122.522-45.208-3.404 0-6.894 0.104-10.326 0.296-47.516 2.778-69.742 23.032-97.88 48.676-14.842 13.526-30.19 27.514-49.976 39.124l-0.424 0.244c-42.706 24.104-69.212 54.082-70.908 80.194-0.842 12.98 4.938 24.218 17.182 33.4 26.636 19.972 44.478 33.022 56.284 41.658 13.11 9.588 17.068 12.48 20 15.264 2.096 1.986 4.364 4.188 6.804 6.562 24.446 23.774 65.36 63.562 128.15 63.562 38.404 0 80.898-14.8 126.17-43.902 21.324-13.878 39.882-20.286 63.38-28.4 16.156-5.578 34.468-11.902 58.992-22.404l0.396-0.164c22.88-9.404 49.896-26.564 48.66-54.932zM652.646 302.194c-4.4 2.214-8.974 4.32-13.744 6.286-22.106 9.456-39.832 15.874-54.534 20.998 8.116 15.894 13.16 35.72 13.624 57.242 0 0.010 0 0.022 0 0.030 1.126 52.374-25.288 94.896-58.996 94.976-33.71 0.078-61.95-42.314-63.076-94.686 0-0.010 0-0.018 0-0.028-0.038-1.714-0.042-3.416-0.020-5.11-20.762 9.552-41.18 16.49-61.166 20.76-0.092 1.968-0.204 3.932-0.244 5.92 0 0.016 0 0.036 0 0.050-1.938 95.412 56.602 174.39 130.754 176.402 74.15 2.014 135.828-73.7 137.772-169.11 0-0.018 0-0.038 0-0.052 0.874-43.146-10.66-82.866-30.37-113.678z" /> | ||
457 | <glyph unicode="" glyph-name="apple" d="M791.498 415.908c-1.294 129.682 105.758 191.876 110.542 194.966-60.152 88.020-153.85 100.078-187.242 101.472-79.742 8.074-155.596-46.948-196.066-46.948-40.368 0-102.818 45.754-168.952 44.552-86.916-1.292-167.058-50.538-211.812-128.38-90.304-156.698-23.126-388.84 64.89-515.926 43.008-62.204 94.292-132.076 161.626-129.58 64.842 2.588 89.362 41.958 167.756 41.958s100.428-41.958 169.050-40.67c69.774 1.296 113.982 63.398 156.692 125.796 49.39 72.168 69.726 142.038 70.924 145.626-1.548 0.706-136.060 52.236-137.408 207.134zM662.562 796.478c35.738 43.358 59.86 103.512 53.28 163.522-51.478-2.096-113.878-34.29-150.81-77.55-33.142-38.376-62.148-99.626-54.374-158.436 57.466-4.484 116.128 29.204 151.904 72.464z" /> | ||
458 | <glyph unicode="" glyph-name="finder" d="M569.226 181.744c-0.002 0.044-0.002 0.088-0.004 0.132 0.002-0.044 0.002-0.088 0.004-0.132zM570.596 145.462c-0.012 0.234-0.022 0.466-0.032 0.702 0.010-0.234 0.020-0.466 0.032-0.702zM569.814 163.688c-0.006 0.178-0.012 0.356-0.020 0.536 0.010-0.182 0.016-0.358 0.020-0.536zM960 960h-896c-35.2 0-64-28.8-64-64v-896c0-35.2 28.8-64 64-64h493.832c0.044 0 0.088-0.006 0.132-0.006 0.042 0 0.084 0.006 0.126 0.006h401.91c35.2 0 64 28.8 64 64v896c0 35.2-28.8 64-64 64zM192 736c0 17.672 14.328 32 32 32s32-14.328 32-32v-64c0-17.672-14.328-32-32-32s-32 14.328-32 32v64zM960 0h-375.058c-6.7 42.082-10.906 85.476-13.388 127.604 0.006-0.116 0.010-0.228 0.018-0.344-19.696-2.146-39.578-3.26-59.572-3.26-133.65 0-262.382 48.656-362.484 137.006-14.906 13.156-16.326 35.906-3.168 50.812 13.158 14.904 35.906 16.326 50.814 3.168 86.936-76.728 198.748-118.986 314.838-118.986 19.086 0 38.052 1.166 56.816 3.416-2.192 118.194 6.876 211.914 7.026 213.404 0.898 8.996-2.050 17.952-8.118 24.654-6.066 6.702-14.682 10.526-23.724 10.526h-95.174c1.384 34.614 5.082 93.814 14.958 160.188 18.864 126.76 51.994 225.77 96.152 287.812h400.064v-896zM800 640c-17.674 0-32 14.328-32 32v64c0 17.672 14.326 32 32 32s32-14.328 32-32v-64c0-17.672-14.326-32-32-32zM540.496 124.768c-3.646-0.192-7.298-0.336-10.956-0.454 3.658 0.116 7.31 0.264 10.956 0.454zM512 124c4.692 0 9.374 0.074 14.050 0.196-4.676-0.122-9.358-0.196-14.050-0.196zM539.074 196.798c0.784 0.044 1.568 0.084 2.352 0.132-0.782-0.048-1.568-0.088-2.352-0.132zM525.084 196.2c1.074 0.030 2.146 0.072 3.218 0.11-1.072-0.038-2.144-0.082-3.218-0.11zM877.65 311.818c-13.156 14.91-35.908 16.322-50.812 3.168-72.642-64.114-162.658-104.136-258.022-115.57 0.43-23.278 1.294-47.496 2.754-72.156 111.954 12.21 217.786 58.614 302.912 133.746 14.908 13.156 16.326 35.906 3.168 50.812zM571.498 127.252c-4.606-0.5-9.222-0.936-13.848-1.322 4.626 0.384 9.244 0.822 13.848 1.322zM555.488 125.758c-3.906-0.312-7.822-0.576-11.742-0.806 3.92 0.226 7.834 0.496 11.742 0.806z" /> | ||
459 | <glyph unicode="" glyph-name="android" d="M896 576c-35.2 0-64-28.8-64-64v-256c0-35.2 28.8-64 64-64s64 28.8 64 64v256c0 35.2-28.8 64-64 64zM128 576c-35.2 0-64-28.8-64-64v-256c0-35.2 28.8-64 64-64s64 28.8 64 64v256c0 35.2-28.802 64-64 64zM224 224c0-53.020 42.98-96 96-96v0-128c0-35.2 28.8-64 64-64s64 28.8 64 64v128h128v-128c0-35.2 28.8-64 64-64s64 28.8 64 64v128c53.020 0 96 42.98 96 96v352h-576v-352zM798.216 639.998c-9.716 87.884-59.004 163.792-129.62 209.646l32.024 64.046c7.904 15.806 1.496 35.028-14.31 42.932s-35.030 1.496-42.932-14.312l-32.142-64.286-8.35 3.316c-28.568 9.502-59.122 14.66-90.886 14.66-31.762 0-62.316-5.158-90.888-14.656l-8.348-3.316-32.142 64.282c-7.904 15.808-27.128 22.212-42.932 14.312-15.808-7.904-22.214-27.126-14.312-42.932l32.022-64.046c-70.616-45.852-119.904-121.762-129.622-209.644v-32h574.222v31.998h-1.784zM416 704c-17.674 0-32 14.328-32 32 0 17.648 14.288 31.958 31.93 31.996 0.032 0 0.062-0.002 0.094-0.002 0.018 0 0.036 0.002 0.052 0.002 17.638-0.042 31.924-14.35 31.924-31.996 0-17.672-14.326-32-32-32zM608 704c-17.674 0-32 14.328-32 32 0 17.646 14.286 31.954 31.924 31.996 0.016 0 0.034-0.002 0.050-0.002 0.032 0 0.064 0.002 0.096 0.002 17.64-0.038 31.93-14.348 31.93-31.996 0-17.672-14.326-32-32-32z" /> | ||
460 | <glyph unicode="" glyph-name="windows" d="M412.23 448.086c-47.708 24.518-94.086 36.958-137.88 36.958-5.956 0-11.952-0.18-17.948-0.708-55.88-4.624-106.922-19.368-139.75-30.828-8.708-3.198-17.634-6.576-26.83-10.306l-89.822-311.394c61.702 22.832 116.292 33.938 166.27 33.938 80.846 0 139.528-30.208 187.992-61.304 22.962 77.918 78.044 266.090 94.482 322.324-11.95 7.284-24.076 14.57-36.514 21.32zM528.348 368.93l-90.446-314.148c26.832-15.372 117.098-64.050 186.212-64.050 55.792 0 118.252 14.296 190.834 43.792l86.356 301.976c-58.632-18.922-114.876-28.52-167.464-28.52-95.95 0-163.114 31.098-205.492 60.95zM292.822 591.21c77.118-0.798 134.152-30.208 181.416-60.502l92.752 317.344c-19.546 11.196-70.806 39.094-107.858 48.6-24.386 5.684-50.020 8.616-77.204 8.616-51.796-0.976-108.388-13.946-172.888-39.8l-88.44-310.596c64.808 24.436 120.644 36.34 172.086 36.34 0.046-0.002 0.136-0.002 0.136-0.002zM1024 761.876c-58.814-22.832-116.208-34.466-171.028-34.466-91.686 0-159.292 31.802-203.094 62.366l-91.95-318.236c61.746-39.708 128.29-59.878 198.122-59.878 56.948 0 115.94 13.68 175.462 40.688l-0.182 2.222 3.734 0.886 88.936 306.418z" /> | ||
461 | <glyph unicode="" glyph-name="windows8" d="M0.35 448l-0.35 312.074 384 52.144v-364.218zM448 821.518l511.872 74.482v-448h-511.872zM959.998 384l-0.126-448-511.872 72.016v375.984zM384 16.164l-383.688 52.594-0.020 315.242h383.708z" /> | ||
462 | <glyph unicode="" glyph-name="soundcloud" d="M891.96 445.796c-18.086 0-35.348-3.52-51.064-9.856-10.506 114.358-110.29 204.060-232 204.060-29.786 0-58.682-5.63-84.318-15.164-9.96-3.702-12.578-7.52-12.578-14.916v-402.714c0-7.766 6.24-14.234 14.124-14.996 0.336-0.034 363.536-0.21 365.89-0.21 72.904 0 131.986 56.816 131.986 126.894s-59.134 126.902-132.040 126.902zM400 192h32l16 224.22-16 223.78h-32l-16-223.78zM304 192h-32l-16 162.75 16 157.25h32l16-160zM144 192h32l16 128-16 128h-32l-16-128zM16 256h32l16 64-16 64h-32l-16-64z" /> | ||
463 | <glyph unicode="" glyph-name="soundcloud2" d="M853.372 960h-682.684c-93.874 0-170.686-76.806-170.686-170.68v-469.316l15.998 63.996h32l16-64-16-64h-32l-16 63.996v-213.304c0.002-93.938 76.814-170.692 170.688-170.692h682.684c93.878 0 170.628 76.754 170.628 170.692v212.202c0-70.078-59.082-126.894-131.986-126.894-2.354 0-365.554 0.176-365.89 0.21-7.882 0.762-14.124 7.23-14.124 14.996v402.714c0 7.394 2.618 11.212 12.578 14.916 25.636 9.534 54.534 15.164 84.318 15.164 121.708 0 221.492-89.702 231.998-204.058 15.716 6.336 32.978 9.856 51.064 9.856 72.906 0 132.042-56.824 132.042-126.902v470.422c0 93.876-76.758 170.682-170.628 170.682zM176 192h-32l-16 128 16 128h32l16-128-16-128zM304 192h-32l-16 162.75 16 157.25h32l16-160-16-160zM432 192h-32l-16 224.22 16 223.78h32l16-223.78-16-224.22z" /> | ||
464 | <glyph unicode="" glyph-name="skype" d="M975.31 382.062c2.812 20.8 4.43 41.946 4.43 63.472 0 258.31-210.542 467.744-470.206 467.744-25.808 0-51.11-2.12-75.732-6.16-44.144 28.768-96.684 45.534-153.224 45.534-155.046 0-280.578-125.616-280.578-280.612 0-56.396 16.598-108.788 45.18-152.778-3.85-24.034-5.818-48.646-5.818-73.718 0-258.352 210.434-467.764 470.17-467.764 29.314 0 57.854 2.854 85.592 7.866 43.1-26.738 93.868-42.296 148.292-42.296 155.004-0.002 280.584 125.646 280.584 280.626-0.006 58.586-17.92 113.056-48.69 158.086zM553.48 100.808c-149.41-7.784-219.328 25.274-283.378 85.382-71.53 67.134-42.796 143.708 15.48 147.602 58.244 3.888 93.214-66.026 124.3-85.472 31.048-19.376 149.188-63.52 211.588 7.816 67.952 77.656-45.188 117.84-128.118 130.004-118.406 17.532-267.9 81.584-256.27 207.814 11.632 126.148 107.164 190.828 207.7 199.952 128.154 11.634 211.582-19.414 277.57-75.72 76.3-65.058 35.016-137.788-13.598-143.64-48.424-5.818-102.808 107.008-209.582 108.704-110.054 1.728-184.434-114.522-48.572-147.568 135.932-33.010 281.5-46.572 333.922-170.834 52.458-124.274-81.508-256.25-231.042-264.040z" /> | ||
465 | <glyph unicode="" glyph-name="reddit" d="M256 320c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM640 320c0 35.346 28.654 64 64 64s64-28.654 64-64c0-35.346-28.654-64-64-64s-64 28.654-64 64zM643.112 183.222c16.482 12.986 40.376 10.154 53.364-6.332s10.152-40.378-6.334-53.366c-45.896-36.158-115.822-59.524-178.142-59.524-62.322 0-132.248 23.366-178.144 59.522-16.486 12.99-19.32 36.882-6.332 53.368 12.99 16.482 36.882 19.318 53.366 6.332 26.422-20.818 78.722-43.222 131.11-43.222s104.688 22.404 131.112 43.222zM1024 448c0 70.692-57.308 128-128 128-48.116 0-89.992-26.57-111.852-65.82-65.792 35.994-145.952 59.246-233.28 64.608l76.382 171.526 146.194-42.2c13.152-37.342 48.718-64.114 90.556-64.114 53.020 0 96 42.98 96 96s-42.98 96-96 96c-36.56 0-68.342-20.442-84.554-50.514l-162.906 47.024c-18.224 5.258-37.538-3.722-45.252-21.052l-103.77-233.026c-85.138-5.996-163.262-29.022-227.636-64.236-21.864 39.25-63.766 65.804-111.882 65.804-70.692 0-128-57.308-128-128 0-52.312 31.402-97.254 76.372-117.102-8.070-24.028-12.372-49.104-12.372-74.898 0-176.73 200.576-320 448-320 247.422 0 448 143.27 448 320 0 25.792-4.3 50.862-12.368 74.886 44.97 19.85 76.368 64.802 76.368 117.114zM864 772c19.882 0 36-16.118 36-36s-16.118-36-36-36-36 16.118-36 36 16.118 36 36 36zM64 448c0 35.29 28.71 64 64 64 25.508 0 47.572-15.004 57.846-36.646-33.448-25.366-61.166-54.626-81.666-86.738-23.524 9.47-40.18 32.512-40.18 59.384zM512 12c-205.45 0-372 109.242-372 244s166.55 244 372 244c205.45 0 372-109.242 372-244s-166.55-244-372-244zM919.82 388.616c-20.5 32.112-48.218 61.372-81.666 86.738 10.276 21.642 32.338 36.646 57.846 36.646 35.29 0 64-28.71 64-64 0-26.872-16.656-49.914-40.18-59.384z" /> | ||
466 | <glyph unicode="" glyph-name="linkedin" d="M852 960h-680c-94.6 0-172-77.4-172-172v-680c0-94.6 77.4-172 172-172h680c94.6 0 172 77.4 172 172v680c0 94.6-77.4 172-172 172zM384 128h-128v448h128v-448zM320 640c-35.346 0-64 28.654-64 64s28.654 64 64 64 64-28.654 64-64-28.654-64-64-64zM832 128h-128v256c0 35.346-28.654 64-64 64s-64-28.654-64-64v-256h-128v448h128v-79.472c26.398 36.264 66.752 79.472 112 79.472 79.53 0 144-71.634 144-160v-288z" /> | ||
467 | <glyph unicode="" glyph-name="linkedin2" d="M384 576h177.106v-90.782h2.532c24.64 44.194 84.958 90.782 174.842 90.782 186.946 0 221.52-116.376 221.52-267.734v-308.266h-184.61v273.278c0 65.184-1.334 149.026-96.028 149.026-96.148 0-110.82-70.986-110.82-144.292v-278.012h-184.542v576zM64 576h192v-576h-192v576zM256 736c0-53.019-42.981-96-96-96s-96 42.981-96 96c0 53.019 42.981 96 96 96s96-42.981 96-96z" /> | ||
468 | <glyph unicode="" glyph-name="lastfm" d="M819.58 146.372c-106.666 0.418-163.498 52.582-202.992 144.502l-11.298 25.082-97.37 222c-32.292 78.586-112.422 131.672-202.834 131.672-122.334 0-221.584-99.252-221.584-221.672 0-122.418 99.248-221.668 221.584-221.668 85.338 0 159.542 48.25 196.582 119l39.376-90.832c-55.912-68.17-140.876-111.584-235.954-111.584-168.51 0-305.090 136.502-305.090 305.086 0 168.504 136.58 305.172 305.084 305.172 127.166 0 229.836-67.918 282-188.252 3.956-9.336 55.158-129.086 99.826-231 27.668-63.082 51.26-104.918 127.756-107.504 75.168-2.582 126.756 43.168 126.756 101.008 0 56.5-39.336 70.082-105.75 92.164-119.382 39.334-181.006 78.834-181.006 173.502 0 92.336 62.832 153.918 164.914 153.918 66.496 0 114.506-29.586 147.76-88.586l-65.256-33.332c-24.59 34.414-51.708 48-86.172 48-47.912 0-82.126-33.336-82.126-77.666 0-62.922 56.294-72.422 135.006-98.254 105.958-34.5 155.208-73.92 155.208-172.336 0.002-103.336-88.672-178.588-204.42-178.42z" /> | ||
469 | <glyph unicode="" glyph-name="lastfm2" d="M852 960h-680c-94.6 0-172-77.4-172-172v-680c0-94.6 77.4-172 172-172h680c94.6 0 172 77.4 172 172v680c0 94.6-77.4 172-172 172zM746.516 199.112c-177.558 0-239.138 80.056-271.972 179.604l-32.85 102.636c-24.638 74.926-53.374 133.424-143.684 133.424-62.62 0-126.246-45.158-126.246-171.398 0-98.528 50.288-160.112 121.114-160.112 80.042 0 133.42 59.53 133.42 59.53l32.85-89.288c0 0-55.436-54.394-171.398-54.394-143.692 0-223.75 84.152-223.75 240.164 0 162.162 80.058 257.61 230.928 257.61 136.506 0 205.28-49.264 248.376-182.692l33.872-102.626c24.636-74.93 67.734-129.324 171.396-129.324 69.792 0 106.734 15.398 106.734 53.368 0 29.77-17.44 51.32-69.784 63.64l-69.8 16.414c-85.174 20.524-119.044 64.658-119.044 134.452 0 111.872 90.32 146.768 182.686 146.768 104.69 0 168.322-37.976 176.532-130.344l-102.634-12.32c-4.108 44.132-30.792 62.61-80.054 62.61-45.164 0-72.872-20.53-72.872-55.426 0-30.79 13.342-49.266 58.494-59.53l65.684-14.364c88.27-20.532 135.492-63.64 135.492-146.772-0.004-102.634-86.216-141.63-213.49-141.63z" /> | ||
470 | <glyph unicode="" glyph-name="delicious" d="M853.376 960h-682.69c-93.876 0-170.686-76.816-170.686-170.692v-682.624c0-93.93 76.81-170.684 170.686-170.684h682.69c93.874 0 170.624 76.752 170.624 170.684v682.624c0 93.876-76.75 170.692-170.624 170.692zM960 106.684c0-28.334-11.14-55.082-31.37-75.316-20.222-20.228-46.948-31.368-75.254-31.368h-341.376v448h-448v341.308c0 28.308 11.15 55.050 31.396 75.296 20.244 20.246 46.984 31.396 75.29 31.396h341.314v-448h448v-341.316z" /> | ||
471 | <glyph unicode="" glyph-name="stumbleupon" d="M852 960h-680c-94.6 0-172-77.4-172-172v-680c0-94.6 77.4-172 172-172h680c94.6 0 172 77.4 172 172v680c0 94.6-77.4 172-172 172zM512 640c-35.29 0-64-28.71-64-64v-256c0-105.872-86.13-192-192-192s-192 86.128-192 192v128h128v-128c0-35.29 28.71-64 64-64s64 28.71 64 64v256c0 105.87 86.13 192 192 192s192-86.13 192-178v-62l-82-24-46 24v62c0 21.29-28.71 50-64 50zM960 320c0-105.872-86.13-192-192-192s-192 86.128-192 206v124l46-24 82 24v-124c0-49.29 28.71-78 64-78s64 28.71 64 64v128h128v-128z" /> | ||
472 | <glyph unicode="" glyph-name="stumbleupon2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512 704c-35.29 0-64-28.71-64-64v-256c0-105.87-86.13-192-192-192s-192 86.13-192 192v128h128v-128c0-35.29 28.71-64 64-64s64 28.71 64 64v256c0 105.87 86.13 192 192 192s192-86.13 192-178v-62l-82-24-46 24v62c0 21.29-28.71 50-64 50zM768 192c-105.87 0-192 86.13-192 206v124l46-24 82 24v-124c0-49.29 28.71-78 64-78s64 28.71 64 64v128h128v-128c0-105.87-86.13-192-192-192z" /> | ||
473 | <glyph unicode="" glyph-name="stackoverflow" d="M1024 320v-384h-1024v384h128v-256h768v256zM192 256h640v-128h-640zM207.152 394.534l27.698 124.964 624.832-138.496-27.698-124.964zM279.658 651.442l54.092 116.006 580.032-270.464-54.092-116.006zM991.722 598.524l-77.922-101.55-507.746 389.608 56.336 73.418h58.244z" /> | ||
474 | <glyph unicode="" glyph-name="pinterest" d="M512.006 959.998c-282.774 0-512.006-229.23-512.006-511.996 0-216.906 134.952-402.166 325.414-476.772-4.478 40.508-8.518 102.644 1.774 146.876 9.298 39.954 60.040 254.5 60.040 254.5s-15.32 30.664-15.32 76.008c0 71.19 41.268 124.336 92.644 124.336 43.68 0 64.784-32.794 64.784-72.12 0-43.928-27.964-109.604-42.404-170.464-12.060-50.972 25.556-92.536 75.814-92.536 91.008 0 160.958 95.96 160.958 234.466 0 122.584-88.088 208.298-213.868 208.298-145.678 0-231.186-109.274-231.186-222.19 0-44.008 16.95-91.196 38.102-116.844 4.182-5.070 4.792-9.516 3.548-14.68-3.884-16.18-12.522-50.96-14.216-58.076-2.234-9.368-7.422-11.356-17.124-6.842-63.95 29.77-103.926 123.264-103.926 198.348 0 161.51 117.348 309.834 338.294 309.834 177.61 0 315.634-126.56 315.634-295.704 0-176.458-111.256-318.466-265.676-318.466-51.886 0-100.652 26.958-117.35 58.796 0 0-25.672-97.766-31.894-121.71-11.564-44.468-42.768-100.218-63.642-134.226 47.91-14.832 98.818-22.832 151.604-22.832 282.768 0.002 511.996 229.23 511.996 512 0 282.766-229.228 511.996-511.994 511.996z" /> | ||
475 | <glyph unicode="" glyph-name="pinterest2" d="M853.35 960h-682.704c-94.25 0-170.646-76.42-170.646-170.686v-682.63c0-94.266 76.398-170.684 170.646-170.684h682.704c94.25 0 170.65 76.418 170.65 170.684v682.63c0 94.266-76.4 170.686-170.65 170.686zM573.288 155.976c-51.886 0-100.652 26.958-117.35 58.796 0 0-25.674-97.766-31.896-121.71-11.562-44.468-42.766-100.218-63.64-134.226l-34.986 12.394c-4.478 40.508-8.518 102.644 1.774 146.876 9.298 39.954 60.040 254.5 60.040 254.5s-15.32 30.664-15.32 76.008c0 71.19 41.268 124.336 92.64 124.336 43.684 0 64.786-32.794 64.786-72.12 0-43.928-27.964-109.604-42.404-170.464-12.060-50.972 25.556-92.536 75.814-92.536 91.008 0 160.958 95.96 160.958 234.466 0 122.584-88.088 208.298-213.87 208.298-145.676 0-231.186-109.274-231.186-222.19 0-44.008 16.95-91.196 38.102-116.844 4.182-5.070 4.792-9.516 3.548-14.68-3.884-16.18-12.522-50.96-14.216-58.076-2.234-9.368-7.422-11.356-17.124-6.842-63.95 29.77-103.926 123.264-103.926 198.348 0 161.51 117.348 309.834 338.294 309.834 177.61 0 315.634-126.56 315.634-295.704 0.004-176.456-111.252-318.464-265.672-318.464z" /> | ||
476 | <glyph unicode="" glyph-name="xing" d="M853.342 960h-682.656c-93.874 0-170.686-76.81-170.686-170.69v-682.622c0-93.938 76.812-170.688 170.686-170.688h682.656c93.876 0 170.658 76.75 170.658 170.69v682.62c0 93.88-76.782 170.69-170.658 170.69zM311.778 293.212h-111.264c-6.702 0-11.708 3.008-14.542 7.584-2.934 4.758-3.084 10.928 0 17.068l118.22 208.626c0.126 0.228 0.126 0.38 0 0.632l-75.23 130.232c-3.112 6.196-3.566 12.314-0.632 17.068 2.834 4.602 8.47 6.954 15.172 6.954h111.264c17.070 0 25.44-10.998 30.978-20.862 0 0 76.040-132.66 76.498-133.392-4.504-7.94-120.118-212.42-120.118-212.42-5.688-10.262-13.704-21.49-30.346-21.49zM837.912 809.462l-246.352-435.58c-0.15-0.23-0.15-0.51 0-0.734l156.862-286.59c3.112-6.168 3.186-12.442 0.226-17.194-2.83-4.576-8.066-7.104-14.766-7.104h-111.14c-17.044 0-25.566 11.326-31.080 21.192 0 0-157.696 289.292-158.1 290.046 7.888 13.96 247.594 439.046 247.594 439.046 5.968 10.724 13.174 21.192 29.788 21.192h112.406c6.702 0 11.962-2.53 14.792-7.106 2.932-4.752 2.856-11.022-0.23-17.168z" /> | ||
477 | <glyph unicode="" glyph-name="xing2" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM345.482 319.594h-92.534c-5.576 0-9.74 2.494-12.098 6.292-2.438 3.952-2.564 9.066 0 14.16l98.324 173.070c0.104 0.19 0.104 0.316 0 0.526l-62.568 108.038c-2.588 5.138-2.966 10.212-0.526 14.158 2.358 3.818 7.044 5.77 12.62 5.77h92.534c14.2 0 21.158-9.124 25.768-17.308 0 0 63.24-110.050 63.618-110.656-3.746-6.59-99.9-176.22-99.9-176.22-4.732-8.516-11.398-17.83-25.238-17.83zM783.050 747.862l-204.882-361.344c-0.124-0.194-0.124-0.428 0-0.612l130.458-237.75c2.59-5.116 2.652-10.32 0.192-14.264-2.356-3.794-6.708-5.892-12.282-5.892h-92.434c-14.176 0-21.266 9.398-25.848 17.58 0 0-131.152 239.992-131.488 240.614 6.56 11.582 205.916 364.226 205.916 364.226 4.96 8.896 10.954 17.58 24.774 17.58h93.484c5.578 0 9.954-2.098 12.304-5.894 2.44-3.948 2.374-9.146-0.194-14.244z" /> | ||
478 | <glyph unicode="" glyph-name="flattr" d="M367.562 960c-243.358 0-367.562-140.162-367.562-401.856v0-549.034l238.39 238.628v278.896c0 108.416 28.73 177.406 125.118 192.894v0c33.672 6.584 103.75 4.278 148.306 4.278v0-165.596c0-1.51 0.208-4.206 0.594-5.586v0c1.87-6.704 7.93-11.616 15.116-11.63v0c4.062-0.008 7.868 2.104 11.79 5.97v0l413.122 412.974-584.874 0.062zM785.61 648.254v-278.89c0-108.414-28.736-177.414-125.116-192.894v0c-33.672-6.582-103.756-4.278-148.312-4.278v0 165.594c0 1.5-0.206 4.204-0.594 5.582v0c-1.864 6.712-7.922 11.622-15.112 11.63v0c-4.064 0.008-7.866-2.112-11.79-5.966v0l-413.124-412.966 584.874-0.066c243.354 0 367.564 140.168 367.564 401.852v0 549.028l-238.39-238.626z" /> | ||
479 | <glyph unicode="" glyph-name="foursquare" d="M851.564 869.91c-12.060 16.404-31.204 26.090-51.564 26.090h-608c-35.346 0-64-28.654-64-64v-768c0-25.884 15.592-49.222 39.508-59.128 7.918-3.28 16.234-4.874 24.478-4.874 16.656 0 33.026 6.504 45.268 18.748l237.256 237.254h165.49c27.992 0 52.736 18.192 61.086 44.91l160 512c6.074 19.432 2.538 40.596-9.522 57zM672.948 640h-224.948c-35.346 0-64-28.654-64-64s28.654-64 64-64h184.948l-40-128h-144.948c-16.974 0-33.252-6.742-45.254-18.746l-146.746-146.744v549.49h456.948l-40-128z" /> | ||
480 | <glyph unicode="" glyph-name="paypal" d="M880.634 829.226c25.698-12.576 48.094-30.486 64.502-52.482 34.536-46.3 44.236-109.372 28.836-187.466-15.56-79.026-50.416-145.734-101.166-194.044-9.282-9.702-19.222-18.746-29.804-27.080-54.356-42.802-122.998-65.428-198.508-65.428h-240.060l-64.564-302.726h-132.424l10.086 46.3h46.128l64.564 302.726h188.27c180.25 0 330.938 111.078 371.258 299.936 45.722 213.834-107.598 311.038-239.41 311.038h-449.278l-199.064-913.7h152.032l-24.032-110.3h263.66l64.564 302.726h188.27c180.25 0 330.938 111.078 371.258 299.936 33.716 157.68-40.804 251.932-135.118 290.564zM422.344 773.918h129.132c64.592 0 107.602-55.538 88.786-124.956-16.136-69.44-83.386-124.976-150.64-124.976h-123.758l56.48 249.932z" /> | ||
481 | <glyph unicode="" glyph-name="paypal2" d="M880.634 829.226c25.698-12.576 48.094-30.486 64.502-52.482 34.536-46.3 44.236-109.372 28.836-187.466-15.56-79.026-50.416-145.734-101.166-194.044-9.282-9.702-19.222-18.746-29.804-27.080-54.356-42.802-122.998-65.428-198.508-65.428h-240.060l-64.564-302.726h-132.424l10.086 46.3h46.128l64.564 302.726h188.27c180.25 0 330.938 111.078 371.258 299.936 45.722 213.834-107.598 311.038-239.41 311.038h-449.278l-199.064-913.7h152.032l-24.032-110.3h263.66l64.564 302.726h188.27c180.25 0 330.938 111.078 371.258 299.936 33.716 157.68-40.804 251.932-135.118 290.564zM640.262 648.962c-13.724-59.060-64.428-108.040-120.656-121.368l30.738 136.022h92.986c-0.728-4.806-1.722-9.69-3.068-14.654zM422.344 773.918h129.132c36.76 0 66.508-18.004 81.87-46.3h-134.154l-46.016-203.63h-87.312l56.48 249.93z" /> | ||
482 | <glyph unicode="" glyph-name="paypal3" d="M648.342 896c28.332 0 56.918-5.804 82.666-16.784 27.084-11.548 49.324-27.924 66.104-48.672 33.598-41.542 43.038-98.132 28.050-168.218-16.306-76.378-54.398-139.96-110.16-183.87-54.356-42.802-122.998-65.428-198.508-65.428h-240.060l-64.564-302.728h-132.424l171.176 785.7h397.72zM285.786 459.986h203.836c47.436 0 95.494 18.17 135.318 51.164 38.82 32.162 66.274 75.522 77.396 122.2 13.902 52.524 4.63 105.152-25.514 144.554-29.176 38.14-74.864 60.014-125.346 60.014h-180.282l-85.408-377.932zM648.342 960h-449.278l-199.064-913.7h152.032l-24.032-110.3h263.66l64.564 302.726h188.27c180.25 0 330.938 111.078 371.258 299.936 33.716 157.68-40.804 251.932-135.118 290.564 25.698-12.576 48.094-30.486 64.502-52.482 34.536-46.3 44.236-109.372 28.836-187.466-15.56-79.026-50.416-145.734-101.166-194.044-9.282-9.702-19.222-18.746-29.804-27.080-54.356-42.802-122.998-65.428-198.508-65.428h-240.060l-64.564-302.726h-132.424l10.086 46.3h46.128l64.564 302.726h188.27c180.25 0 330.938 111.078 371.258 299.936 45.722 213.834-107.598 311.038-239.41 311.038v0zM365.864 523.986l56.482 249.932h129.132c64.592 0 107.602-55.538 88.786-124.956-16.136-69.44-83.386-124.976-150.64-124.976h-123.76z" /> | ||
483 | <glyph unicode="" glyph-name="yelp" d="M608.876 306.532c-17.282-17.426-2.668-49.128-2.668-49.128l130.090-217.218c0 0 21.36-28.64 39.864-28.64 18.59 0 36.954 15.27 36.954 15.27l102.844 147.008c0 0 10.36 18.546 10.598 34.792 0.372 23.106-34.454 29.434-34.454 29.434l-243.488 78.192c-0.002-0.004-23.858 6.328-39.74-9.71zM596.532 416.016c12.46-21.128 46.828-14.972 46.828-14.972l242.938 71.006c0 0 33.106 13.466 37.832 31.418 4.64 17.954-5.46 39.622-5.46 39.622l-116.098 136.752c0 0-10.062 17.292-30.938 19.032-23.016 1.958-37.18-25.898-37.18-25.898l-137.27-216.010c0-0.004-12.134-21.516-0.652-40.95zM481.754 500.232c28.608 7.044 33.148 48.604 33.148 48.604l-1.944 345.87c0 0-4.314 42.666-23.486 54.232-30.070 18.242-38.982 8.718-47.596 7.444l-201.696-74.944c0 0-19.754-6.536-30.042-23.018-14.69-23.352 14.928-57.544 14.928-57.544l209.644-285.756c0 0 20.69-21.396 47.044-14.888zM431.944 360.262c0.722 26.676-32.030 42.7-32.030 42.7l-216.796 109.524c0 0-32.126 13.246-47.722 4.016-11.95-7.060-22.536-19.84-23.572-31.134l-14.12-173.812c0 0-2.116-30.114 5.69-43.82 11.054-19.442 47.428-5.902 47.428-5.902l253.096 55.942c9.832 6.61 27.074 7.204 28.026 42.486zM494.88 266.458c-21.726 11.156-47.724-11.95-47.724-11.95l-169.468-186.566c0 0-21.144-28.528-15.768-46.050 5.066-16.418 13.454-24.578 25.318-30.328l170.192-53.726c0 0 20.634-4.286 36.258 0.242 22.18 6.43 18.094 41.152 18.094 41.152l3.848 252.602c-0.002-0.002-0.868 24.334-20.75 34.624z" /> | ||
484 | <glyph unicode="" glyph-name="file-pdf" d="M842.012 370.52c-13.648 13.446-43.914 20.566-89.972 21.172-31.178 0.344-68.702-2.402-108.17-7.928-17.674 10.198-35.892 21.294-50.188 34.658-38.462 35.916-70.568 85.772-90.576 140.594 1.304 5.12 2.414 9.62 3.448 14.212 0 0 21.666 123.060 15.932 164.666-0.792 5.706-1.276 7.362-2.808 11.796l-1.882 4.834c-5.894 13.592-17.448 27.994-35.564 27.208l-10.916 0.344c-20.202 0-36.664-10.332-40.986-25.774-13.138-48.434 0.418-120.892 24.98-214.738l-6.288-15.286c-17.588-42.876-39.63-86.060-59.078-124.158l-2.528-4.954c-20.46-40.040-39.026-74.028-55.856-102.822l-17.376-9.188c-1.264-0.668-31.044-16.418-38.028-20.644-59.256-35.38-98.524-75.542-105.038-107.416-2.072-10.17-0.53-23.186 10.014-29.212l16.806-8.458c7.292-3.652 14.978-5.502 22.854-5.502 42.206 0 91.202 52.572 158.698 170.366 77.93 25.37 166.652 46.458 244.412 58.090 59.258-33.368 132.142-56.544 178.142-56.544 8.168 0 15.212 0.78 20.932 2.294 8.822 2.336 16.258 7.368 20.792 14.194 8.926 13.432 10.734 31.932 8.312 50.876-0.72 5.622-5.21 12.574-10.068 17.32zM211.646 145.952c7.698 21.042 38.16 62.644 83.206 99.556 2.832 2.296 9.808 8.832 16.194 14.902-47.104-75.124-78.648-105.066-99.4-114.458zM478.434 760.314c13.566 0 21.284-34.194 21.924-66.254s-6.858-54.56-16.158-71.208c-7.702 24.648-11.426 63.5-11.426 88.904 0 0-0.566 48.558 5.66 48.558v0zM398.852 322.506c9.45 16.916 19.282 34.756 29.33 53.678 24.492 46.316 39.958 82.556 51.478 112.346 22.91-41.684 51.444-77.12 84.984-105.512 4.186-3.542 8.62-7.102 13.276-10.65-68.21-13.496-127.164-29.91-179.068-49.862v0zM828.902 326.348c-4.152-2.598-16.052-4.1-23.708-4.1-24.708 0-55.272 11.294-98.126 29.666 16.468 1.218 31.562 1.838 45.102 1.838 24.782 0 32.12 0.108 56.35-6.072 24.228-6.18 24.538-18.734 20.382-21.332v0zM917.806 730.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.886-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.324-32 32-32h224v-624z" /> | ||
485 | <glyph unicode="" glyph-name="file-openoffice" d="M690.22 488.318c-60.668 28.652-137.97 34.42-194.834-6.048 69.14 6.604 144.958-4.838 195.106-57.124 48 55.080 124.116 65.406 192.958 59.732-57.488 38.144-133.22 33.024-193.23 3.44v0zM665.646 354.25c-68.376 1.578-134.434-23.172-191.1-60.104-107.176 45.588-242.736 37.124-334.002-38.982 26.33 0.934 52.006 7.446 78.056 10.792 95.182 9.488 196.588-14.142 268.512-79.824 29.772 43.542 71.644 78.242 119.652 99.922 63.074 30.52 134.16 33.684 202.82 34.52-41.688 28.648-94.614 33.954-143.938 33.676zM917.806 730.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.886-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.324-32 32-32h224v-624z" /> | ||
486 | <glyph unicode="" glyph-name="file-word" d="M639.778 484.108h44.21l-51.012-226.178-66.324 318.010h-106.55l-77.114-318.010-57.816 318.010h-111.394l113.092-511.88h108.838l76.294 302.708 68.256-302.708h100.336l129.628 511.88h-170.446v-91.832zM917.806 730.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.886-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.324-32 32-32h224v-624z" /> | ||
487 | <glyph unicode="" glyph-name="file-excel" d="M743.028 576h-135.292l-95.732-141.032-95.742 141.032h-135.29l162.162-242.464-182.972-269.536h251.838v91.576h-50.156l50.156 74.994 111.396-166.57h140.444l-182.976 269.536 162.164 242.464zM917.806 730.924c-22.21 30.292-53.174 65.7-87.178 99.704s-69.412 64.964-99.704 87.178c-51.574 37.82-76.592 42.194-90.924 42.194h-496c-44.112 0-80-35.888-80-80v-864c0-44.112 35.886-80 80-80h736c44.112 0 80 35.888 80 80v624c0 14.332-4.372 39.35-42.194 90.924v0zM785.374 785.374c30.7-30.7 54.8-58.398 72.58-81.374h-153.954v153.946c22.982-17.78 50.678-41.878 81.374-72.572v0zM896 16c0-8.672-7.328-16-16-16h-736c-8.672 0-16 7.328-16 16v864c0 8.672 7.328 16 16 16 0 0 495.956 0.002 496 0v-224c0-17.672 14.324-32 32-32h224v-624z" /> | ||
488 | <glyph unicode="" glyph-name="libreoffice" d="M534.626 937.372c-12.444 12.444-37.026 22.628-54.626 22.628h-384c-17.6 0-32-14.4-32-32v-960c0-17.6 14.4-32 32-32h768c17.6 0 32 14.4 32 32v576c0 17.6-10.182 42.182-22.626 54.626l-338.748 338.746zM832 0h-704v896h351.158c2.916-0.48 8.408-2.754 10.81-4.478l337.556-337.554c1.722-2.402 3.996-7.894 4.476-10.81v-543.158zM864 960h-192c-17.6 0-21.818-10.182-9.374-22.626l210.746-210.746c12.446-12.446 22.628-8.228 22.628 9.372v192c0 17.6-14.4 32-32 32z" /> | ||
489 | <glyph unicode="" glyph-name="html5" d="M60.538 960l82.144-921.63 368.756-102.37 369.724 102.524 82.3 921.476h-902.924zM784.63 658.572h-432.54l10.302-115.75h411.968l-31.042-347.010-231.844-64.254-231.572 64.254-15.83 177.512h113.494l8.048-90.232 125.862-33.916 0.278 0.078 125.934 33.992 13.070 146.55h-391.74l-30.494 341.8h566.214l-10.108-113.024z" /> | ||
490 | <glyph unicode="" glyph-name="html52" d="M60.538 960l82.144-921.63 368.756-102.37 369.724 102.524 82.3 921.476h-902.924zM810.762 97.176l-297.226-82.376v-0.466l-0.776 0.234-0.782-0.234v0.466l-297.222 82.376-70.242 787.486h736.496l-70.248-787.486zM650.754 429.796l-13.070-146.552-126.21-34.070-125.862 33.916-8.050 90.234h-113.49l15.83-177.512 232.076-64.176 231.342 64.176 31.040 347.012h-411.966l-10.302 115.748h432.534l10.112 113.026h-566.218l30.498-341.802z" /> | ||
491 | <glyph unicode="" glyph-name="css3" d="M152.388 911.478l-34.36-171.926h699.748l-21.884-111.054h-700.188l-33.892-171.898h699.684l-39.018-196.064-282.012-93.422-244.4 93.422 16.728 85.042h-171.898l-40.896-206.352 404.226-154.704 466.006 154.704 153.768 772.252z" /> | ||
492 | <glyph unicode="" glyph-name="git" d="M1004.692 493.606l-447.096 447.080c-25.738 25.754-67.496 25.754-93.268 0l-103.882-103.876 78.17-78.17c12.532 5.996 26.564 9.36 41.384 9.36 53.020 0 96-42.98 96-96 0-14.82-3.364-28.854-9.362-41.386l127.976-127.974c12.532 5.996 26.566 9.36 41.386 9.36 53.020 0 96-42.98 96-96s-42.98-96-96-96-96 42.98-96 96c0 14.82 3.364 28.854 9.362 41.386l-127.976 127.974c-3.042-1.456-6.176-2.742-9.384-3.876v-266.968c37.282-13.182 64-48.718 64-90.516 0-53.020-42.98-96-96-96s-96 42.98-96 96c0 41.796 26.718 77.334 64 90.516v266.968c-37.282 13.18-64 48.72-64 90.516 0 14.82 3.364 28.852 9.36 41.384l-78.17 78.17-295.892-295.876c-25.75-25.776-25.75-67.534 0-93.288l447.12-447.080c25.738-25.75 67.484-25.75 93.268 0l445.006 445.006c25.758 25.762 25.758 67.54-0.002 93.29z" /> | ||
493 | <glyph unicode="" glyph-name="svg" d="M928 544c-28.428 0-53.958-12.366-71.536-32h-189.956l134.318 134.318c26.312-1.456 53.11 7.854 73.21 27.956 37.49 37.49 37.49 98.274 0 135.764s-98.274 37.49-135.766 0c-20.102-20.102-29.41-46.898-27.956-73.21l-134.314-134.318v189.954c19.634 17.578 32 43.108 32 71.536 0 53.020-42.98 96-96 96s-96-42.98-96-96c0-28.428 12.366-53.958 32-71.536v-189.954l-134.318 134.318c1.454 26.312-7.856 53.11-27.958 73.21-37.49 37.49-98.274 37.49-135.764 0-37.49-37.492-37.49-98.274 0-135.764 20.102-20.102 46.898-29.412 73.212-27.956l134.32-134.318h-189.956c-17.578 19.634-43.108 32-71.536 32-53.020 0-96-42.98-96-96s42.98-96 96-96c28.428 0 53.958 12.366 71.536 32h189.956l-134.318-134.318c-26.314 1.456-53.11-7.854-73.212-27.956-37.49-37.492-37.49-98.276 0-135.766 37.492-37.49 98.274-37.49 135.764 0 20.102 20.102 29.412 46.898 27.958 73.21l134.316 134.32v-189.956c-19.634-17.576-32-43.108-32-71.536 0-53.020 42.98-96 96-96s96 42.98 96 96c0 28.428-12.366 53.958-32 71.536v189.956l134.318-134.318c-1.456-26.312 7.854-53.11 27.956-73.21 37.492-37.49 98.276-37.49 135.766 0s37.49 98.274 0 135.766c-20.102 20.102-46.898 29.41-73.21 27.956l-134.32 134.316h189.956c17.576-19.634 43.108-32 71.536-32 53.020 0 96 42.98 96 96s-42.982 96-96.002 96z" /> | ||
494 | <glyph unicode="" glyph-name="codepen" d="M945.75 591.958l-448 298.666c-10.748 7.166-24.752 7.166-35.5 0l-448-298.666c-8.902-5.934-14.25-15.926-14.25-26.624v-298.666c0-10.7 5.348-20.692 14.25-26.624l448-298.666c5.374-3.584 11.562-5.376 17.75-5.376s12.376 1.792 17.75 5.376l448 298.666c8.902 5.934 14.25 15.926 14.25 26.624v298.666c0 10.698-5.348 20.69-14.25 26.624zM480 305.124l-166.312 110.876 166.312 110.874 166.312-110.874-166.312-110.876zM512 582.458v221.75l358.31-238.876-166.31-110.874-192 128zM448 582.458l-192-128-166.312 110.874 358.312 238.876v-221.75zM198.312 416l-134.312-89.542v179.082l134.312-89.54zM256 377.542l192-128v-221.748l-358.312 238.872 166.312 110.876zM512 249.542l192 128 166.312-110.876-358.312-238.874v221.75zM761.688 416l134.312 89.54v-179.084l-134.312 89.544z" /> | ||
495 | <glyph unicode="" glyph-name="chrome" d="M258.278 513.458l-146.532 253.802c93.818 117.464 238.234 192.74 400.254 192.74 187.432 0 351.31-100.736 440.532-251h-417.77c-7.504 0.65-15.092 1-22.762 1-121.874 0-224.578-83.644-253.722-196.542zM695.306 635h293.46c22.74-57.93 35.234-121.004 35.234-187 0-280.826-226.1-508.804-506.186-511.926l209.394 362.678c29.48 42.378 46.792 93.826 46.792 149.248 0 73.17-30.164 139.42-78.694 187zM326 448c0 102.56 83.44 186 186 186s186-83.44 186-186c0-102.56-83.44-186-186-186s-186 83.44-186 186zM582.182 195.558l-146.578-253.878c-246.532 36.884-435.604 249.516-435.604 506.32 0 91.218 23.884 176.846 65.696 251.024l209.030-362.054c41.868-89.112 132.476-150.97 237.274-150.97 24.3 0 47.836 3.34 70.182 9.558z" /> | ||
496 | <glyph unicode="" glyph-name="firefox" d="M1022.526 625.86l-11.86-76.080c0 0-16.954 140.856-37.732 193.514-31.846 80.688-46.014 80.040-46.108 79.922 21.33-54.204 17.462-83.324 17.462-83.324s-37.792 102.998-137.712 135.768c-110.686 36.282-170.57 26.364-177.488 24.486-1.050 0.008-2.064 0.010-3.030 0.010 0.818-0.062 1.612-0.146 2.426-0.212-0.034-0.020-0.090-0.042-0.082-0.052 0.45-0.548 122.306-21.302 143.916-50.996 0 0-51.76 0-103.272-14.842-2.328-0.666 189.524-23.964 228.746-215.674 0 0-21.030 43.876-47.040 51.328 17.106-52.036 12.714-150.776-3.576-199.85-2.096-6.312-4.24 27.282-36.328 41.75 10.28-73.646-0.616-190.456-51.708-222.632-3.982-2.504 32.030 115.31 7.242 69.762-142.708-218.802-311.404-100.972-387.248-49.11 38.866-8.462 112.654 1.318 145.314 25.612 0.042 0.030 0.078 0.056 0.118 0.086 35.468 24.252 56.472 41.964 75.334 37.772 18.874-4.214 31.438 14.726 16.78 31.53-14.676 16.838-50.314 39.978-98.524 27.366-34-8.904-76.134-46.522-140.448-8.432-49.364 29.25-54.012 53.546-54.45 70.376 1.218 5.966 2.754 11.536 4.576 16.624 5.682 15.87 22.912 20.658 32.494 24.438 16.256-2.792 30.262-7.862 44.968-15.406 0.19 4.894 0.252 11.39-0.018 18.76 1.41 2.802 0.538 11.252-1.722 21.58-1.302 10.308-3.42 20.974-6.752 30.692 0.012 0.002 0.020 0.010 0.030 0.014 0.056 0.018 0.108 0.040 0.156 0.070 0.078 0.044 0.146 0.112 0.208 0.19 0.012 0.020 0.030 0.034 0.044 0.052 0.082 0.124 0.154 0.272 0.198 0.466 1.020 4.618 12.022 13.524 25.718 23.1 12.272 8.58 26.702 17.696 38.068 24.752 10.060 6.248 17.72 10.882 19.346 12.098 0.618 0.466 1.358 1.012 2.164 1.636 0.15 0.116 0.3 0.232 0.454 0.354 0.094 0.074 0.19 0.148 0.286 0.226 5.41 4.308 13.484 12.448 15.178 29.578 0.004 0.042 0.010 0.080 0.012 0.122 0.050 0.504 0.092 1.014 0.13 1.534 0.028 0.362 0.050 0.726 0.072 1.096 0.014 0.284 0.032 0.566 0.044 0.856 0.030 0.674 0.050 1.364 0.060 2.064 0 0.040 0.002 0.076 0.004 0.116 0.022 1.658-0.006 3.386-0.104 5.202-0.054 1.014-0.126 1.93-0.298 2.762-0.008 0.044-0.018 0.092-0.028 0.136-0.018 0.082-0.036 0.164-0.058 0.244-0.036 0.146-0.076 0.292-0.122 0.43-0.006 0.018-0.010 0.032-0.016 0.046-0.052 0.16-0.112 0.314-0.174 0.464-0.004 0.006-0.004 0.010-0.006 0.016-1.754 4.108-8.32 5.658-35.442 6.118-0.026 0.002-0.050 0.002-0.076 0.002v0c-11.066 0.188-25.538 0.194-44.502 0.118-33.25-0.134-51.628 32.504-57.494 45.132 8.040 44.46 31.276 76.142 69.45 97.626 0.722 0.406 0.58 0.742-0.274 0.978 7.464 4.514-90.246 0.124-135.186-57.036-39.888 9.914-74.654 9.246-104.616 2.214-5.754 0.162-12.924 0.88-21.434 2.652-19.924 18.056-48.448 51.402-49.976 91.208 0 0-0.092-0.072-0.252-0.204-0.020 0.382-0.056 0.76-0.072 1.142 0 0-60.716-46.664-51.628-173.882-0.022-2.036-0.064-3.986-0.12-5.874-16.432-22.288-24.586-41.020-25.192-45.156-14.56-29.644-29.334-74.254-41.356-141.98 0 0 8.408 26.666 25.284 56.866-12.412-38.022-22.164-97.156-16.436-185.856 0 0 1.514 19.666 6.874 47.994 4.186-55.010 22.518-122.924 68.858-202.788 88.948-153.32 225.67-230.74 376.792-242.616 26.836-2.212 54.050-2.264 81.424-0.186 2.516 0.178 5.032 0.364 7.55 0.574 30.964 2.174 62.134 6.852 93.238 14.366 425.172 102.798 378.942 616.198 378.942 616.198z" /> | ||
497 | <glyph unicode="" glyph-name="IE" d="M734.202 331.17h236.050c1.82 16.37 2.548 33.098 2.548 50.196 0 80.224-21.534 155.468-59.124 220.266 38.88 103.308 37.492 190.988-14.556 243.39-49.496 49.28-182.29 41.28-332.412-25.198-11.104 0.84-22.318 1.272-33.638 1.272-206.048 0-378.926-141.794-426.708-332.85 64.638 82.754 132.638 142.754 223.478 186.448-8.26-7.74-56.454-55.652-64.56-63.764-239.548-239.478-315.090-552.306-233.806-633.604 61.786-61.774 173.758-51.342 302.376 11.648 59.806-30.458 127.5-47.63 199.218-47.63 193.134 0 356.804 124.316 416.090 297.448h-237.868c-32.734-60.382-96.748-101.48-170.218-101.48-73.468 0-137.484 41.098-170.216 101.48-14.55 27.274-22.914 58.554-22.914 91.656v0.722h386.26zM348.302 447.196c5.456 97.11 86.2 174.584 184.766 174.584s179.312-77.472 184.766-174.584h-369.532zM896.966 796.192c33.526-33.88 32.688-96.214 4.012-174.022-49.136 74.908-120.518 133.936-204.792 167.64 90.106 38.638 163.406 43.756 200.78 6.382zM93.482-7.256c-42.782 42.796-29.884 132.618 25.23 240.832 34.308-96.27 101.156-177.090 187.336-229.154-95.43-43.318-173.536-50.674-212.566-11.678z" /> | ||
498 | <glyph unicode="" glyph-name="opera" d="M510.046 960c-279.724 0-480.748-202.896-480.748-507.224 0-270.818 195.502-516.776 480.784-516.776 288.078 0 484.62 245.886 484.62 516.776 0 306.76-207.446 507.224-484.656 507.224zM688.358 461.458c-0.068-169.352-9.098-410.482-178.276-410.482v-0.034c-166.784 0-173.432 241.266-173.432 410.308 0 198.38 18.56 388.568 173.432 388.568 154.874 0 178.276-192.584 178.276-388.36z" /> | ||
499 | <glyph unicode="" glyph-name="safari" d="M512 896c-24.064 0-47.708-1.792-70.824-5.212-0.3 0.782-0.624 1.548-0.982 2.296 12.826 10.002 19.55 23.83 16.634 37.552-3.734 17.564-22.394 29.364-46.434 29.364-5.18 0-10.458-0.562-15.68-1.672-30.168-6.414-50.146-28.622-45.482-50.562 2.834-13.338 14.292-23.338 30.164-27.384-0.032-0.972-0.016-1.95 0.042-2.934-200.622-57.53-347.438-242.338-347.438-461.448 0-265.098 214.904-480 480-480 265.098 0 480 214.902 480 480 0 265.096-214.902 480-480 480zM364.882 911.092c-2.706 12.726 12.48 27.19 33.158 31.584 4.132 0.878 8.29 1.324 12.354 1.324 16.036 0 28.694-6.864 30.784-16.69 1.596-7.51-3.070-15.61-11.386-21.904-7.034 4.966-16.016 7.126-25.1 5.196-9.044-1.922-16.348-7.508-20.758-14.856-10.184 2.45-17.508 8.084-19.052 15.346zM769.386 158.614c-43.968-43.968-97.21-75.278-155.31-92.154l-42.396 68.768-10.746-79.958c-16.090-2.152-32.426-3.27-48.934-3.27-97.228 0-188.636 37.864-257.386 106.614-43.968 43.966-75.278 97.21-92.154 155.308l68.768 42.398-79.96 10.746c-2.15 16.090-3.268 32.426-3.268 48.934 0 97.228 37.862 188.636 106.614 257.386 43.968 43.968 97.212 75.278 155.31 92.156l42.396-68.77 10.748 79.96c16.088 2.15 32.424 3.268 48.932 3.268 97.228 0 188.636-37.862 257.386-106.614 43.968-43.968 75.278-97.212 92.154-155.31l-68.77-42.398 79.96-10.746c2.152-16.088 3.27-32.424 3.27-48.932 0-97.228-37.864-188.636-106.614-257.386zM760.902 664.902l-196.978-149.704c-14.644 7.658-30.876 12.062-47.416 12.726l-51.080 107.18-3.068-118.664c-13.284-6.536-25.104-15.664-34.876-26.95l-63.088 22.364 46.092-48.538c-6.334-13.518-9.866-28.030-10.434-42.824l-107.158-51.066 118.738-3.068c0.38-0.768 0.774-1.526 1.17-2.282l-149.704-196.98 196.978 149.704c14.644-7.656 30.874-12.060 47.416-12.724l51.080-107.182 3.066 118.664c13.286 6.538 25.106 15.664 34.878 26.952l63.090-22.368-46.094 48.54c6.336 13.52 9.868 28.030 10.436 42.824l107.156 51.066-118.736 3.070c-0.378 0.766-0.774 1.524-1.17 2.28l149.702 196.98zM512.102 515.466v0zM492.042 509.902c6.726 1.43 13.444 2.118 20.056 2.118 4.144 0 8.25-0.27 12.294-0.796l0.092-0.032-0.010 0.022c8.732-1.144 17.176-3.5 25.132-6.896l-71.546-54.376-54.38-71.552c-2.376 5.594-4.27 11.484-5.58 17.652-11.026 51.86 22.080 102.836 73.942 113.86zM562.12 334.116v0 0c-9.056-5.544-19.182-9.684-30.16-12.018-6.726-1.43-13.444-2.118-20.054-2.118-4.15 0-8.258 0.272-12.308 0.798l-0.068 0.010c-8.734 1.142-17.174 3.5-25.132 6.894l71.544 54.376 54.38 71.554c2.376-5.594 4.27-11.486 5.58-17.654 8.69-40.882-10.056-81.2-43.782-101.842z" /> | ||
500 | <glyph unicode="" glyph-name="IcoMoon" d="M259.544 448.002c0 65.416 53.030 118.446 118.446 118.446s118.446-53.030 118.446-118.446c0-65.416-53.030-118.446-118.446-118.446s-118.446 53.030-118.446 118.446zM512.004 960c-282.774 0-512.004-229.232-512.004-512s229.226-512 512.004-512c282.764 0 511.996 229.23 511.996 512 0 282.768-229.23 512-511.996 512zM379.396 0.718c-153.956 89.574-257.468 256.324-257.468 447.282s103.512 357.708 257.462 447.282c154.010-89.562 257.59-256.288 257.59-447.282 0-190.988-103.58-357.718-257.584-447.282z" /> | ||
501 | </font></defs></svg> \ No newline at end of file | ||
diff --git a/app/Resources/static/themes/baggy/font/icomoon.ttf b/app/Resources/static/themes/baggy/font/icomoon.ttf new file mode 100644 index 00000000..c03770c6 --- /dev/null +++ b/app/Resources/static/themes/baggy/font/icomoon.ttf | |||
Binary files differ | |||
diff --git a/app/Resources/static/themes/baggy/font/icomoon.woff b/app/Resources/static/themes/baggy/font/icomoon.woff new file mode 100644 index 00000000..121e0bdd --- /dev/null +++ b/app/Resources/static/themes/baggy/font/icomoon.woff | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/baggy/blank.png b/app/Resources/static/themes/baggy/img/blank.png index 63e09844..63e09844 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/baggy/blank.png +++ b/app/Resources/static/themes/baggy/img/blank.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/baggy/down.png b/app/Resources/static/themes/baggy/img/down.png index b9d536a7..b9d536a7 100644 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/baggy/down.png +++ b/app/Resources/static/themes/baggy/img/down.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/baggy/list.png b/app/Resources/static/themes/baggy/img/list.png index bd5aff5a..bd5aff5a 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/baggy/list.png +++ b/app/Resources/static/themes/baggy/img/list.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/baggy/table.png b/app/Resources/static/themes/baggy/img/table.png index 859c4cd8..859c4cd8 100755 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/baggy/table.png +++ b/app/Resources/static/themes/baggy/img/table.png | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/baggy/top.png b/app/Resources/static/themes/baggy/img/top.png index 954a8c0a..954a8c0a 100644 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/baggy/top.png +++ b/app/Resources/static/themes/baggy/img/top.png | |||
Binary files differ | |||
diff --git a/app/Resources/static/themes/baggy/js/autoClose.js b/app/Resources/static/themes/baggy/js/autoClose.js new file mode 100644 index 00000000..b0dafab2 --- /dev/null +++ b/app/Resources/static/themes/baggy/js/autoClose.js | |||
@@ -0,0 +1,8 @@ | |||
1 | var $ = global.jquery = require('jquery'); | ||
2 | |||
3 | $(document).ready(function () { | ||
4 | var currentUrl = window.location.href; | ||
5 | if (currentUrl.match('&closewin=true')) { | ||
6 | window.close(); | ||
7 | } | ||
8 | }); | ||
diff --git a/app/Resources/static/themes/baggy/js/autoCompleteTags.js b/app/Resources/static/themes/baggy/js/autoCompleteTags.js new file mode 100755 index 00000000..edd0a421 --- /dev/null +++ b/app/Resources/static/themes/baggy/js/autoCompleteTags.js | |||
@@ -0,0 +1,46 @@ | |||
1 | var $ = global.jquery = require('jquery'); | ||
2 | |||
3 | jQuery(function ($) { | ||
4 | function split(val) { | ||
5 | return val.split(/,\s*/); | ||
6 | } | ||
7 | function extractLast(term) { | ||
8 | return split(term).pop(); | ||
9 | } | ||
10 | |||
11 | |||
12 | $('#value').bind('keydown', function (event) { | ||
13 | if (event.keyCode === $.ui.keyCode.TAB && $(this).data('ui-autocomplete').menu.active) { | ||
14 | event.preventDefault(); | ||
15 | } | ||
16 | }).autocomplete({ | ||
17 | source: function (request, response) { | ||
18 | $.getJSON('./?view=tags', { | ||
19 | term: extractLast(request.term), | ||
20 | //id: $(':hidden#entry_id').val() | ||
21 | }, response); | ||
22 | }, | ||
23 | search: function () { | ||
24 | // custom minLength | ||
25 | var term = extractLast(this.value); | ||
26 | if (term.length < 1) { | ||
27 | return false; | ||
28 | } | ||
29 | }, | ||
30 | focus: function () { | ||
31 | // prevent value inserted on focus | ||
32 | return false; | ||
33 | }, | ||
34 | select: function (event, ui) { | ||
35 | var terms = split(this.value); | ||
36 | // remove the current input | ||
37 | terms.pop(); | ||
38 | // add the selected item | ||
39 | terms.push(ui.item.value); | ||
40 | // add placeholder to get the comma-and-space at the end | ||
41 | terms.push(''); | ||
42 | this.value = terms.join(', '); | ||
43 | return false; | ||
44 | }, | ||
45 | }); | ||
46 | }); | ||
diff --git a/app/Resources/static/themes/baggy/js/closeMessage.js b/app/Resources/static/themes/baggy/js/closeMessage.js new file mode 100644 index 00000000..ae4b1791 --- /dev/null +++ b/app/Resources/static/themes/baggy/js/closeMessage.js | |||
@@ -0,0 +1,19 @@ | |||
1 | var $ = global.jquery = require('jquery'); | ||
2 | |||
3 | $(function () { | ||
4 | //--------------------------------------------------------------------------- | ||
5 | // Show the close icon when the user hover over a message | ||
6 | //--------------------------------------------------------------------------- | ||
7 | // $('.messages').on('mouseenter', function(){ | ||
8 | // $(this).find('a.closeMessage').stop(true, true).show(); | ||
9 | // }).on('mouseleave', function(){ | ||
10 | // $(this).find('a.closeMessage').stop(true, true).hide(); | ||
11 | // }); | ||
12 | //--------------------------------------------------------------------------- | ||
13 | // Close the message box when the user clicks the close icon | ||
14 | //--------------------------------------------------------------------------- | ||
15 | $('a.closeMessage').on('click', function () { | ||
16 | $(this).parents('div.messages').slideUp(300, function () { $(this).remove(); }); | ||
17 | return false; | ||
18 | }); | ||
19 | }); | ||
diff --git a/app/Resources/static/themes/baggy/js/init.js b/app/Resources/static/themes/baggy/js/init.js new file mode 100755 index 00000000..d7d4b166 --- /dev/null +++ b/app/Resources/static/themes/baggy/js/init.js | |||
@@ -0,0 +1,98 @@ | |||
1 | var $ = global.jquery = require('jquery'); | ||
2 | require('jquery.cookie'); | ||
3 | require('jquery-ui'); | ||
4 | var annotator = require('annotator'); | ||
5 | |||
6 | |||
7 | $.fn.ready(function () { | ||
8 | var $listmode = $('#listmode'); | ||
9 | var $listentries = $('#list-entries'); | ||
10 | |||
11 | /* ========================================================================== | ||
12 | Menu | ||
13 | ========================================================================== */ | ||
14 | |||
15 | $('#menu').click(function () { | ||
16 | $('#links').toggleClass('menu--open'); | ||
17 | if ($('#content').hasClass('opacity03')) { | ||
18 | $('#content').removeClass('opacity03'); | ||
19 | } | ||
20 | }); | ||
21 | |||
22 | /* ========================================================================== | ||
23 | List mode or Table Mode | ||
24 | ========================================================================== */ | ||
25 | |||
26 | $listmode.click(function () { | ||
27 | if (jquery.cookie('listmode') === 1) { | ||
28 | // Cookie | ||
29 | $.removeCookie('listmode'); | ||
30 | |||
31 | $listentries.removeClass('listmode'); | ||
32 | $listmode.removeClass('tablemode'); | ||
33 | $listmode.addClass('listmode'); | ||
34 | } else { | ||
35 | // Cookie | ||
36 | jquery.cookie('listmode', 1, { expires: 365 }); | ||
37 | |||
38 | $listentries.addClass('listmode'); | ||
39 | $listmode.removeClass('listmode'); | ||
40 | $listmode.addClass('tablemode'); | ||
41 | } | ||
42 | }); | ||
43 | |||
44 | /* ========================================================================== | ||
45 | Cookie listmode | ||
46 | ========================================================================== */ | ||
47 | |||
48 | if (jquery.cookie('listmode') === 1) { | ||
49 | $listentries.addClass('listmode'); | ||
50 | $listmode.removeClass('listmode'); | ||
51 | $listmode.addClass('tablemode'); | ||
52 | } | ||
53 | |||
54 | /* ========================================================================== | ||
55 | Add tag panel | ||
56 | ========================================================================== */ | ||
57 | |||
58 | |||
59 | $('#nav-btn-add-tag').on('click', function () { | ||
60 | $('.nav-panel-add-tag').toggle(100); | ||
61 | $('.nav-panel-menu').addClass('hidden'); | ||
62 | $('#tag_label').focus(); | ||
63 | return false; | ||
64 | }); | ||
65 | |||
66 | /* ========================================================================== | ||
67 | Annotations & Remember position | ||
68 | ========================================================================== */ | ||
69 | |||
70 | if ($('article').length) { | ||
71 | var app = new annotator.App(); | ||
72 | |||
73 | app.include(annotator.ui.main, { | ||
74 | element: document.querySelector('article'), | ||
75 | }); | ||
76 | |||
77 | var x = JSON.parse($('#annotationroutes').html()); | ||
78 | app.include(annotator.storage.http, x); | ||
79 | |||
80 | app.start().then(function () { | ||
81 | app.annotations.load({ entry: x.entryId }); | ||
82 | }); | ||
83 | |||
84 | $(window).scroll(function (e) { | ||
85 | var scrollTop = $(window).scrollTop(); | ||
86 | var docHeight = $(document).height(); | ||
87 | var scrollPercent = (scrollTop) / (docHeight); | ||
88 | var scrollPercentRounded = Math.round(scrollPercent * 100) / 100; | ||
89 | savePercent(x.entryId, scrollPercentRounded); | ||
90 | }); | ||
91 | |||
92 | retrievePercent(x.entryId); | ||
93 | |||
94 | $(window).resize(function () { | ||
95 | retrievePercent(x.entryId); | ||
96 | }); | ||
97 | } | ||
98 | }); | ||
diff --git a/app/Resources/static/themes/baggy/js/popupForm.js b/app/Resources/static/themes/baggy/js/popupForm.js new file mode 100644 index 00000000..95ba60ee --- /dev/null +++ b/app/Resources/static/themes/baggy/js/popupForm.js | |||
@@ -0,0 +1,101 @@ | |||
1 | var $ = global.jquery = require('jquery'); | ||
2 | |||
3 | $(document).ready(function () { | ||
4 | $('#search-form').hide(); | ||
5 | $('#bagit-form').hide(); | ||
6 | $('#filter-form').hide(); | ||
7 | $('#download-form').hide(); | ||
8 | |||
9 | //--------------------------------------------------------------------------- | ||
10 | // Toggle the 'Search' popup in the sidebar | ||
11 | //--------------------------------------------------------------------------- | ||
12 | function toggleSearch() { | ||
13 | $('#search-form').toggle(); | ||
14 | $('#search').toggleClass('current'); | ||
15 | $('#search').toggleClass('active-current'); | ||
16 | $('#search-arrow').toggleClass('arrow-down'); | ||
17 | if ($('#search').hasClass('current')) { | ||
18 | $('#content').addClass('opacity03'); | ||
19 | } else { | ||
20 | $('#content').removeClass('opacity03'); | ||
21 | } | ||
22 | } | ||
23 | |||
24 | //--------------------------------------------------------------------------- | ||
25 | // Toggle the 'Filter' popup on entries list | ||
26 | //--------------------------------------------------------------------------- | ||
27 | function toggleFilter() { | ||
28 | $('#filter-form').toggle(); | ||
29 | } | ||
30 | |||
31 | //--------------------------------------------------------------------------- | ||
32 | // Toggle the 'Download' popup on entries list | ||
33 | //--------------------------------------------------------------------------- | ||
34 | function toggleDownload() { | ||
35 | $('#download-form').toggle(); | ||
36 | } | ||
37 | |||
38 | //--------------------------------------------------------------------------- | ||
39 | // Toggle the 'Save a Link' popup in the sidebar | ||
40 | //--------------------------------------------------------------------------- | ||
41 | function toggleBagit() { | ||
42 | $('#bagit-form').toggle(); | ||
43 | $('#bagit').toggleClass('current'); | ||
44 | $('#bagit').toggleClass('active-current'); | ||
45 | $('#bagit-arrow').toggleClass('arrow-down'); | ||
46 | if ($('#bagit').hasClass('current')) { | ||
47 | $('#content').addClass('opacity03'); | ||
48 | } else { | ||
49 | $('#content').removeClass('opacity03'); | ||
50 | } | ||
51 | } | ||
52 | |||
53 | //--------------------------------------------------------------------------- | ||
54 | // Close all #links popups in the sidebar | ||
55 | //--------------------------------------------------------------------------- | ||
56 | function closePopups() { | ||
57 | $('#links .messages').hide(); | ||
58 | $('#links > li > a').removeClass('active-current'); | ||
59 | $('#links > li > a').removeClass('current'); | ||
60 | $('[id$=-arrow]').removeClass('arrow-down'); | ||
61 | $('#content').removeClass('opacity03'); | ||
62 | } | ||
63 | |||
64 | $('#search').click(function () { | ||
65 | closePopups(); | ||
66 | toggleSearch(); | ||
67 | $('#searchfield').focus(); | ||
68 | }); | ||
69 | |||
70 | $('.filter-btn').click(function () { | ||
71 | closePopups(); | ||
72 | toggleFilter(); | ||
73 | }); | ||
74 | |||
75 | $('.download-btn').click(function () { | ||
76 | closePopups(); | ||
77 | toggleDownload(); | ||
78 | }); | ||
79 | |||
80 | $('#bagit').click(function () { | ||
81 | closePopups(); | ||
82 | toggleBagit(); | ||
83 | $('#plainurl').focus(); | ||
84 | }); | ||
85 | |||
86 | $('#search-form-close').click(function () { | ||
87 | toggleSearch(); | ||
88 | }); | ||
89 | |||
90 | $('#filter-form-close').click(function () { | ||
91 | toggleFilter(); | ||
92 | }); | ||
93 | |||
94 | $('#download-form-close').click(function () { | ||
95 | toggleDownload(); | ||
96 | }); | ||
97 | |||
98 | $('#bagit-form-close').click(function () { | ||
99 | toggleBagit(); | ||
100 | }); | ||
101 | }); | ||
diff --git a/app/Resources/static/themes/baggy/js/saveLink.js b/app/Resources/static/themes/baggy/js/saveLink.js new file mode 100755 index 00000000..5c720886 --- /dev/null +++ b/app/Resources/static/themes/baggy/js/saveLink.js | |||
@@ -0,0 +1,75 @@ | |||
1 | var $ = global.jquery = require('jquery'); | ||
2 | |||
3 | $.fn.ready(function () { | ||
4 | var $bagit = $('#bagit'); | ||
5 | var $bagitForm = $('#bagit-form'); | ||
6 | var $bagitFormForm = $('#bagit-form-form'); | ||
7 | |||
8 | /* ========================================================================== | ||
9 | bag it link and close button | ||
10 | ========================================================================== */ | ||
11 | |||
12 | function toggleSaveLinkForm(url, event) { | ||
13 | $('#add-link-result').empty(); | ||
14 | |||
15 | $bagit.toggleClass('active-current'); | ||
16 | |||
17 | // only if bag-it link is not presented on page | ||
18 | if ($bagit.length === 0) { | ||
19 | if (event !== 'undefined' && event) { | ||
20 | $bagitForm.css({ position: 'absolute', top: event.pageY, left: event.pageX - 200 }); | ||
21 | } else { | ||
22 | $bagitForm.css({ position: 'relative', top: 'auto', left: 'auto' }); | ||
23 | } | ||
24 | } | ||
25 | |||
26 | if ($('#search-form').length !== 0) { | ||
27 | $('#search').removeClass('current'); | ||
28 | $('#search-arrow').removeClass('arrow-down'); | ||
29 | $('#search-form').hide(); | ||
30 | } | ||
31 | $bagitForm.toggle(); | ||
32 | $('#content').toggleClass('opacity03'); | ||
33 | if (url !== 'undefined' && url) { | ||
34 | $('#plainurl').val(url); | ||
35 | } | ||
36 | $('#plainurl').focus(); | ||
37 | } | ||
38 | |||
39 | // send 'bag it link' form request via ajax | ||
40 | $bagitFormForm.submit(function (event) { | ||
41 | $('body').css('cursor', 'wait'); | ||
42 | $('#add-link-result').empty(); | ||
43 | |||
44 | $.ajax({ | ||
45 | type: $bagitFormForm.attr('method'), | ||
46 | url: $bagitFormForm.attr('action'), | ||
47 | data: $bagitFormForm.serialize(), | ||
48 | success: function (data) { | ||
49 | $('#add-link-result').html('Done!'); | ||
50 | $('#plainurl').val(''); | ||
51 | $('#plainurl').blur(''); | ||
52 | $('body').css('cursor', 'auto'); | ||
53 | }, | ||
54 | error: function (data) { | ||
55 | $('#add-link-result').html('Failed!'); | ||
56 | $('body').css('cursor', 'auto'); | ||
57 | }, | ||
58 | }); | ||
59 | |||
60 | event.preventDefault(); | ||
61 | }); | ||
62 | |||
63 | /* ========================================================================== | ||
64 | Process all links inside an article | ||
65 | ========================================================================== */ | ||
66 | |||
67 | $('article a[href^="http"]').after(function () { | ||
68 | return ' <a href="' + $(this).attr('href') + '" class="add-to-wallabag-link-after" alt="add to wallabag" title="add to wallabag"></a> '; | ||
69 | }); | ||
70 | |||
71 | $('.add-to-wallabag-link-after').click(function (event) { | ||
72 | toggleSaveLinkForm($(this).attr('href'), event); | ||
73 | event.preventDefault(); | ||
74 | }); | ||
75 | }); | ||
diff --git a/app/Resources/static/themes/material/css/main.css b/app/Resources/static/themes/material/css/main.css new file mode 100755 index 00000000..9ea59eb0 --- /dev/null +++ b/app/Resources/static/themes/material/css/main.css | |||
@@ -0,0 +1,680 @@ | |||
1 | /* ========================================================================== | ||
2 | Sommaire | ||
3 | |||
4 | 0 = Common | ||
5 | 1 = Nav | ||
6 | 2 = Side-nav | ||
7 | 3 = Filters slider | ||
8 | 4 = Cards | ||
9 | 5 = Article | ||
10 | 6 = Media queries | ||
11 | 7 = Font | ||
12 | 8 = Others | ||
13 | |||
14 | ========================================================================== */ | ||
15 | |||
16 | /* ========================================================================== | ||
17 | 0 = Common | ||
18 | ========================================================================== */ | ||
19 | |||
20 | @font-face { | ||
21 | font-family: icomoon; | ||
22 | src: url("../fonts/icomoon.eot"); | ||
23 | src: | ||
24 | url("../fonts/icomoon.eot#iefix") format("embedded-opentype"), | ||
25 | url("../fonts/icomoon.ttf") format("truetype"), | ||
26 | url("../fonts/icomoon.woff") format("woff"), | ||
27 | url("../fonts/icomoon.svg#icomoon") format("svg"); | ||
28 | font-weight: normal; | ||
29 | font-style: normal; | ||
30 | } | ||
31 | |||
32 | @font-face { | ||
33 | font-family: 'Material Icons'; | ||
34 | font-style: normal; | ||
35 | font-weight: 400; | ||
36 | src: url(../fonts/MaterialIcons-Regular.eot); | ||
37 | |||
38 | /* For IE6-8 */ | ||
39 | src: local("Material Icons"), local("MaterialIcons-Regular"), url(../fonts/MaterialIcons-Regular.woff2) format("woff2"), url(../fonts/MaterialIcons-Regular.woff) format("woff"), url(../fonts/MaterialIcons-Regular.ttf) format("truetype"); | ||
40 | } | ||
41 | |||
42 | .material-icons { | ||
43 | font-family: 'Material Icons'; | ||
44 | font-weight: normal; | ||
45 | font-style: normal; | ||
46 | font-size: 24px; /* Preferred icon size */ | ||
47 | width: 1em; | ||
48 | height: 1em; | ||
49 | display: inline-block; | ||
50 | line-height: 1; | ||
51 | text-transform: none; | ||
52 | letter-spacing: normal; | ||
53 | word-wrap: normal; | ||
54 | white-space: nowrap; | ||
55 | direction: ltr; | ||
56 | |||
57 | /* Support for all WebKit browsers. */ | ||
58 | -webkit-font-smoothing: antialiased; | ||
59 | |||
60 | /* Support for Safari and Chrome. */ | ||
61 | text-rendering: optimizeLegibility; | ||
62 | |||
63 | /* Support for Firefox. */ | ||
64 | -moz-osx-font-smoothing: grayscale; | ||
65 | |||
66 | /* Support for IE. */ | ||
67 | font-feature-settings: 'liga'; | ||
68 | } | ||
69 | |||
70 | [class^="icon-"], | ||
71 | [class*=" icon-"] { | ||
72 | font-family: icomoon; | ||
73 | speak: none; | ||
74 | font-style: normal; | ||
75 | font-weight: normal; | ||
76 | font-variant: normal; | ||
77 | text-transform: none; | ||
78 | line-height: 1; | ||
79 | |||
80 | /* Better Font Rendering =========== */ | ||
81 | -webkit-font-smoothing: antialiased; | ||
82 | -moz-osx-font-smoothing: grayscale; | ||
83 | } | ||
84 | |||
85 | body { | ||
86 | display: flex; | ||
87 | min-height: 100vh; | ||
88 | flex-direction: column; | ||
89 | background: #f0f0f0; | ||
90 | } | ||
91 | |||
92 | body.login main { | ||
93 | padding: 0; | ||
94 | min-height: 100vh; | ||
95 | } | ||
96 | |||
97 | .border-bottom { | ||
98 | border-bottom: 1px solid #ddd; | ||
99 | } | ||
100 | |||
101 | nav, | ||
102 | main, | ||
103 | footer { | ||
104 | padding-left: 240px; | ||
105 | } | ||
106 | |||
107 | main, | ||
108 | #content, | ||
109 | .valign-wrapper { | ||
110 | height: 100%; | ||
111 | } | ||
112 | |||
113 | #main { | ||
114 | flex: 1 0 auto; | ||
115 | } | ||
116 | |||
117 | .results { | ||
118 | height: 1em; | ||
119 | line-height: 30px; | ||
120 | } | ||
121 | |||
122 | .results .nb-results, | ||
123 | .results .pagination { | ||
124 | margin: 15px; | ||
125 | margin-bottom: 0; | ||
126 | } | ||
127 | |||
128 | .pagination { | ||
129 | float: right; | ||
130 | } | ||
131 | |||
132 | .pagination ul { | ||
133 | margin: 0 !important; | ||
134 | } | ||
135 | |||
136 | .pagination li { | ||
137 | padding: 0; | ||
138 | } | ||
139 | |||
140 | .pagination a { | ||
141 | padding: 0 10px; | ||
142 | height: 30px; | ||
143 | display: block; | ||
144 | } | ||
145 | |||
146 | .pagination .disabled { | ||
147 | margin-right: 10px; | ||
148 | margin-left: 10px; | ||
149 | } | ||
150 | |||
151 | div.pagination ul .prev.disabled, | ||
152 | div.pagination ul .next.disabled { | ||
153 | display: none; | ||
154 | } | ||
155 | |||
156 | .pagination li.active span { | ||
157 | padding: 0 10px; | ||
158 | height: 30px; | ||
159 | display: block; | ||
160 | color: #fff; | ||
161 | } | ||
162 | |||
163 | .page-footer .footer-copyright p { | ||
164 | display: inline; | ||
165 | } | ||
166 | |||
167 | .hidden { | ||
168 | display: none; | ||
169 | } | ||
170 | |||
171 | .picker__date-display { | ||
172 | display: none; | ||
173 | } | ||
174 | |||
175 | footer.page-footer { | ||
176 | margin-top: 10px; | ||
177 | padding-top: 0px; | ||
178 | } | ||
179 | |||
180 | footer .row { | ||
181 | margin-bottom: 10px; | ||
182 | } | ||
183 | |||
184 | /* ========================================================================== | ||
185 | 1 = Nav | ||
186 | ========================================================================== */ | ||
187 | |||
188 | nav input { | ||
189 | color: #aaa; | ||
190 | } | ||
191 | |||
192 | .nav-wrapper .button-collapse { | ||
193 | padding: 0 15px; | ||
194 | } | ||
195 | |||
196 | .nav-input { | ||
197 | display: none; | ||
198 | } | ||
199 | |||
200 | .nav-panels { | ||
201 | overflow: hidden; | ||
202 | } | ||
203 | |||
204 | .nav-panel-buttom li { | ||
205 | max-height: 64px; | ||
206 | } | ||
207 | |||
208 | .nav-panels { | ||
209 | transition: background 0.2s ease; | ||
210 | } | ||
211 | |||
212 | .nav-panel-add .add, | ||
213 | .nav-panel-search .search, | ||
214 | .nav-panels .close { | ||
215 | color: #444 !important; | ||
216 | } | ||
217 | |||
218 | .nav-panels .action { | ||
219 | padding-left: 0.75rem; | ||
220 | font-size: 2.1rem; | ||
221 | white-space: nowrap; | ||
222 | } | ||
223 | |||
224 | .nav-panels .input-field input { | ||
225 | display: block; | ||
226 | line-height: inherit; | ||
227 | padding-left: 4rem !important; | ||
228 | width: calc(100% - 8rem); | ||
229 | } | ||
230 | |||
231 | .nav-panels .input-field input:focus { | ||
232 | background-color: #fff; | ||
233 | border: 0; | ||
234 | box-shadow: none; | ||
235 | color: #444; | ||
236 | } | ||
237 | |||
238 | .input-field.nav-panel-add label { | ||
239 | left: 1rem; | ||
240 | } | ||
241 | |||
242 | .input-field.nav-panel-add .close { | ||
243 | position: absolute; | ||
244 | top: 0; | ||
245 | right: 1rem; | ||
246 | color: transparent; | ||
247 | cursor: pointer; | ||
248 | font-size: 2rem; | ||
249 | transition: 0.3s color; | ||
250 | } | ||
251 | |||
252 | #button_filters { | ||
253 | display: none; | ||
254 | } | ||
255 | |||
256 | #button_export { | ||
257 | display: none; | ||
258 | } | ||
259 | |||
260 | .input-field.nav-panel-add, .input-field.nav-panel-add form { | ||
261 | height: 100%; | ||
262 | } | ||
263 | |||
264 | /* ========================================================================== | ||
265 | 2 = Side-nav | ||
266 | ========================================================================== */ | ||
267 | |||
268 | .side-nav.fixed a { | ||
269 | font-size: 13px; | ||
270 | line-height: 44px; | ||
271 | height: 44px; | ||
272 | } | ||
273 | |||
274 | .side-nav .collapsible-header, | ||
275 | .side-nav.fixed .collapsible-header { | ||
276 | height: 45px; | ||
277 | line-height: 44px; | ||
278 | padding: 0 20px; | ||
279 | } | ||
280 | |||
281 | .bold > a { | ||
282 | font-weight: bold; | ||
283 | } | ||
284 | |||
285 | .side-nav > li.logo { | ||
286 | line-height: 0; | ||
287 | text-align: center; | ||
288 | } | ||
289 | |||
290 | #main .logo a { | ||
291 | height: 100pt; | ||
292 | } | ||
293 | |||
294 | #main .logo img { | ||
295 | height: 100pt; | ||
296 | width: 100pt; | ||
297 | } | ||
298 | |||
299 | #main .logo:hover { | ||
300 | background: transparent; | ||
301 | } | ||
302 | |||
303 | .side-nav li { | ||
304 | padding: 0; | ||
305 | } | ||
306 | |||
307 | .side-nav a { | ||
308 | margin: 0 1rem; | ||
309 | } | ||
310 | |||
311 | span.numberItems { | ||
312 | float: right; | ||
313 | } | ||
314 | |||
315 | /* ========================================================================== | ||
316 | * 3 = Filters slider | ||
317 | * ========================================================================== */ | ||
318 | |||
319 | #filters button { | ||
320 | padding: 0; | ||
321 | width: 100%; | ||
322 | } | ||
323 | |||
324 | .side-nav.fixed.right-aligned { | ||
325 | right: -250px; | ||
326 | left: auto !important; | ||
327 | overflow-y: visible; | ||
328 | } | ||
329 | |||
330 | #filters div.with-checkbox { | ||
331 | height: 3rem; | ||
332 | margin-top: 0; | ||
333 | } | ||
334 | |||
335 | /* ========================================================================== | ||
336 | 4 = Cards | ||
337 | ========================================================================== */ | ||
338 | |||
339 | main #content { | ||
340 | padding: 0 0.5rem; | ||
341 | } | ||
342 | |||
343 | main ul.row { | ||
344 | padding: 0 0.75rem; | ||
345 | } | ||
346 | |||
347 | .data .card .card-body { | ||
348 | height: 22em; | ||
349 | overflow: hidden; | ||
350 | } | ||
351 | |||
352 | .card .card-content .card-title { | ||
353 | line-height: 32px; | ||
354 | max-height: 64px; | ||
355 | } | ||
356 | |||
357 | .card .card-content i.right, .card .card-reveal i.right { | ||
358 | margin-left: 0; | ||
359 | } | ||
360 | |||
361 | .card .card-entry-labels { | ||
362 | position: absolute; | ||
363 | top: 10px; | ||
364 | z-index: 90; | ||
365 | max-width: 50%; | ||
366 | } | ||
367 | |||
368 | .card .card-entry-labels li { | ||
369 | margin: 10px 10px 10px auto; | ||
370 | padding: 5px 12px 5px 16px; | ||
371 | background-color: rgba(0, 151, 167, 0.85); | ||
372 | border-radius: 0 3px 3px 0; | ||
373 | color: #fff; | ||
374 | cursor: default; | ||
375 | max-height: 2em; | ||
376 | overflow: hidden; | ||
377 | text-overflow: ellipsis; | ||
378 | white-space: nowrap; | ||
379 | } | ||
380 | |||
381 | .card .card-entry-labels-hidden { | ||
382 | margin-top: 5px; | ||
383 | } | ||
384 | |||
385 | .card .card-entry-labels-hidden li { | ||
386 | display: inline-block; | ||
387 | background-color: rgba(0, 151, 167, 0.85); | ||
388 | margin: 0 5px; | ||
389 | padding: 5px 12px; | ||
390 | border-radius: 3px; | ||
391 | color: #fff; | ||
392 | max-height: 2em; | ||
393 | max-width: calc(100% - 15px); | ||
394 | overflow: hidden; | ||
395 | text-overflow: ellipsis; | ||
396 | white-space: nowrap; | ||
397 | } | ||
398 | |||
399 | .card .card-content .estimatedTime { | ||
400 | margin-bottom: 10px; | ||
401 | } | ||
402 | |||
403 | .card .card-action .original { | ||
404 | line-height: 24px; | ||
405 | } | ||
406 | |||
407 | .card .card-action ul.links { | ||
408 | margin: 0; | ||
409 | font-size: 24px; | ||
410 | line-height: 24px; | ||
411 | } | ||
412 | |||
413 | .card .card-action a { | ||
414 | color: #fff; | ||
415 | margin: 0; | ||
416 | } | ||
417 | |||
418 | .card .card-action a:hover { | ||
419 | color: #fff; | ||
420 | } | ||
421 | |||
422 | .settings .div_tabs { | ||
423 | padding-bottom: 15px; | ||
424 | } | ||
425 | |||
426 | .card.sw { | ||
427 | max-width: 370px; | ||
428 | margin-left: auto; | ||
429 | margin-right: auto; | ||
430 | } | ||
431 | |||
432 | .card .card-image { | ||
433 | height: 14em; | ||
434 | } | ||
435 | |||
436 | .card .card-image .preview { | ||
437 | height: 14em; | ||
438 | background-size: cover; | ||
439 | background-repeat: no-repeat; | ||
440 | background-position: 50%; | ||
441 | } | ||
442 | |||
443 | /* ========================================================================== | ||
444 | 5 = Article | ||
445 | ========================================================================== */ | ||
446 | |||
447 | #article { | ||
448 | font-size: 20px; | ||
449 | margin: 0 auto; | ||
450 | max-width: 40em; | ||
451 | } | ||
452 | |||
453 | #article img, | ||
454 | #article figure { | ||
455 | max-width: 100%; | ||
456 | height: auto; | ||
457 | } | ||
458 | |||
459 | #article > header > h1 { | ||
460 | font-size: 2em; | ||
461 | } | ||
462 | |||
463 | .reader-mode { | ||
464 | width: 95px !important; | ||
465 | transition: width 0.2s ease; | ||
466 | } | ||
467 | |||
468 | .reader-mode:hover { | ||
469 | width: 240px !important; | ||
470 | } | ||
471 | |||
472 | .reader-mode .collapsible-body { | ||
473 | height: 0; | ||
474 | overflow: hidden; | ||
475 | } | ||
476 | |||
477 | .reader-mode:hover .collapsible-body { | ||
478 | height: auto; | ||
479 | } | ||
480 | |||
481 | .reader-mode span { | ||
482 | opacity: 0; | ||
483 | transition: opacity 0.2s ease; | ||
484 | } | ||
485 | |||
486 | .reader-mode:hover span { | ||
487 | opacity: 1; | ||
488 | } | ||
489 | |||
490 | .progress { | ||
491 | position: fixed; | ||
492 | top: 0; | ||
493 | width: 100%; | ||
494 | height: 3px; | ||
495 | margin: 0; | ||
496 | z-index: 9999; | ||
497 | } | ||
498 | |||
499 | #article aside .link { | ||
500 | color: #000; | ||
501 | font-size: 0.8em; | ||
502 | text-decoration: none; | ||
503 | } | ||
504 | |||
505 | #article aside #list { | ||
506 | float: right; | ||
507 | margin: 0 15px 10px; | ||
508 | } | ||
509 | |||
510 | #article aside .chip { | ||
511 | background-color: rgba(0, 151, 167, 0.85); | ||
512 | color: #fff; | ||
513 | padding: 0 15px 0 10px; | ||
514 | } | ||
515 | |||
516 | #article aside .chip i { | ||
517 | color: #fff; | ||
518 | } | ||
519 | |||
520 | /* ========================================================================== | ||
521 | 6 = Media queries | ||
522 | ========================================================================== */ | ||
523 | |||
524 | @media only screen and (max-width: 992px) { | ||
525 | header, | ||
526 | main, | ||
527 | footer { | ||
528 | padding-left: 0; | ||
529 | } | ||
530 | nav, | ||
531 | main, | ||
532 | footer { | ||
533 | padding-left: 0; | ||
534 | } | ||
535 | .pagination { | ||
536 | width: auto; | ||
537 | } | ||
538 | .reader-mode { | ||
539 | width: 240px !important; | ||
540 | } | ||
541 | .reader-mode span { | ||
542 | opacity: 1; | ||
543 | } | ||
544 | .tabs { | ||
545 | display: inline-block; | ||
546 | height: auto; | ||
547 | } | ||
548 | .tab { | ||
549 | min-width: 100%; | ||
550 | } | ||
551 | .indicator { | ||
552 | display: none; | ||
553 | } | ||
554 | .pagination li.prev, | ||
555 | .pagination li.next { | ||
556 | width: auto; | ||
557 | } | ||
558 | } | ||
559 | |||
560 | @media only screen and (min-width: 400px) { | ||
561 | .nav-panel-buttom { | ||
562 | float: right; | ||
563 | } | ||
564 | } | ||
565 | |||
566 | @media only screen and (min-width: 993px) and (max-width: 1180px) { | ||
567 | .row .col.l1 { | ||
568 | width: 25%; | ||
569 | margin-left: 0; | ||
570 | } | ||
571 | .row .col.l2 { | ||
572 | width: 33.33333%; | ||
573 | margin-left: 0; | ||
574 | } | ||
575 | .row .col.l3 { | ||
576 | width: 41.66667%; | ||
577 | margin-left: 0; | ||
578 | } | ||
579 | .row .col.l4 { | ||
580 | width: 50%; | ||
581 | margin-left: 0; | ||
582 | } | ||
583 | .row .col.l5 { | ||
584 | width: 58.33333%; | ||
585 | margin-left: 0; | ||
586 | } | ||
587 | .row .col.l6 { | ||
588 | width: 66.66667%; | ||
589 | margin-left: 0; | ||
590 | } | ||
591 | .row .col.l7 { | ||
592 | width: 75%; | ||
593 | margin-left: 0; | ||
594 | } | ||
595 | .row .col.l8 { | ||
596 | width: 83.33333%; | ||
597 | margin-left: 0; | ||
598 | } | ||
599 | .row .col.l9 { | ||
600 | width: 91.66667%; | ||
601 | margin-left: 0; | ||
602 | } | ||
603 | .row .col.l10 { | ||
604 | width: 100%; | ||
605 | margin-left: 0; | ||
606 | } | ||
607 | } | ||
608 | |||
609 | @media only screen and (max-width: 350px) { | ||
610 | .nb-results { | ||
611 | display: none; | ||
612 | } | ||
613 | } | ||
614 | |||
615 | /* ========================================================================== | ||
616 | 7 = Font | ||
617 | ========================================================================== */ | ||
618 | |||
619 | .icon-google-plus2::before { | ||
620 | content: "\ea89"; | ||
621 | } | ||
622 | |||
623 | .icon-facebook2::before { | ||
624 | content: "\ea8d"; | ||
625 | } | ||
626 | |||
627 | .icon-twitter::before { | ||
628 | content: "\ea91"; | ||
629 | } | ||
630 | |||
631 | .icon-apple::before { | ||
632 | content: "\eabf"; | ||
633 | } | ||
634 | |||
635 | .icon-android::before { | ||
636 | content: "\eac1"; | ||
637 | } | ||
638 | |||
639 | .icon-chrome::before { | ||
640 | content: "\eae5"; | ||
641 | } | ||
642 | |||
643 | .icon-firefox::before { | ||
644 | content: "\eae6"; | ||
645 | } | ||
646 | |||
647 | .icon-link::before { | ||
648 | content: "\e9cb"; | ||
649 | } | ||
650 | |||
651 | footer [class^="icon-"], | ||
652 | footer [class*=" icon-"] { | ||
653 | font-size: 2em; | ||
654 | transition: text-shadow 0.2s ease; | ||
655 | padding-right: 10px; | ||
656 | } | ||
657 | |||
658 | footer [class^="icon-"]:hover, | ||
659 | footer [class*=" icon-"]:hover { | ||
660 | text-shadow: 0 0 10px rgba(0, 0, 0, 0.3); | ||
661 | } | ||
662 | |||
663 | /* ========================================================================== | ||
664 | 8 = Others | ||
665 | ========================================================================== */ | ||
666 | |||
667 | /* force height on non-input field in the settings page */ | ||
668 | div.settings div.input-field div, | ||
669 | div.settings div.input-field ul { | ||
670 | margin-top: 40px; | ||
671 | } | ||
672 | |||
673 | /* but avoid to kill all file input */ | ||
674 | div.settings div.file-field div { | ||
675 | margin-top: inherit; | ||
676 | } | ||
677 | |||
678 | .input-field label.active { | ||
679 | font-size: 1rem; | ||
680 | } | ||
diff --git a/app/Resources/static/themes/material/css/print.css b/app/Resources/static/themes/material/css/print.css new file mode 100755 index 00000000..1eb96735 --- /dev/null +++ b/app/Resources/static/themes/material/css/print.css | |||
@@ -0,0 +1,77 @@ | |||
1 | @media print { | ||
2 | /* ### Layout ### */ | ||
3 | |||
4 | body { | ||
5 | font-family: Serif; | ||
6 | background-color: #fff; | ||
7 | } | ||
8 | |||
9 | @page { | ||
10 | margin: 1cm; | ||
11 | } | ||
12 | |||
13 | img { | ||
14 | max-width: 100% !important; | ||
15 | } | ||
16 | |||
17 | /* ### Content ### */ | ||
18 | |||
19 | /* Hide useless blocks */ | ||
20 | body > header, | ||
21 | #article_toolbar, | ||
22 | #links, | ||
23 | #sort, | ||
24 | body > footer, | ||
25 | .top_link, | ||
26 | div.tools, | ||
27 | header div, | ||
28 | .messages, | ||
29 | .entry + .results, | ||
30 | #slide-out, | ||
31 | .progress, .hide-on-large-only, | ||
32 | #article > aside, | ||
33 | #article .mbm a | ||
34 | { | ||
35 | display: none !important; | ||
36 | } | ||
37 | |||
38 | main { | ||
39 | padding-left: 0 !important; | ||
40 | } | ||
41 | |||
42 | #article { | ||
43 | margin: inherit !important; | ||
44 | } | ||
45 | |||
46 | article { | ||
47 | border: none !important; | ||
48 | } | ||
49 | |||
50 | /* Add URL after links */ | ||
51 | .vieworiginal a::after { | ||
52 | content: " (" attr(href) ")"; | ||
53 | } | ||
54 | |||
55 | /* Add explanation after abbr */ | ||
56 | abbr[title]::after { | ||
57 | content: " (" attr(title) ")"; | ||
58 | } | ||
59 | |||
60 | /* Change border on current pager item */ | ||
61 | .pagination span.current { | ||
62 | border-style: dashed; | ||
63 | } | ||
64 | |||
65 | #main { | ||
66 | width: 100%; | ||
67 | padding: 0; | ||
68 | margin: 0; | ||
69 | margin-left: 0; | ||
70 | padding-right: 0; | ||
71 | padding-bottom: 0; | ||
72 | } | ||
73 | |||
74 | #article { | ||
75 | width: 100%; | ||
76 | } | ||
77 | } | ||
diff --git a/app/Resources/static/themes/material/js/init.js b/app/Resources/static/themes/material/js/init.js new file mode 100755 index 00000000..d6a87941 --- /dev/null +++ b/app/Resources/static/themes/material/js/init.js | |||
@@ -0,0 +1,117 @@ | |||
1 | var $ = require('jquery'); | ||
2 | require('materialize'); | ||
3 | var annotator = require('annotator'); | ||
4 | |||
5 | function initFilters() { | ||
6 | // no display if filters not aviable | ||
7 | if ($('div').is('#filters')) { | ||
8 | $('#button_filters').show(); | ||
9 | $('.button-collapse-right').sideNav({ edge: 'right' }); | ||
10 | $('#clear_form_filters').on('click', function () { | ||
11 | $('#filters input').val(''); | ||
12 | $('#filters :checked').removeAttr('checked'); | ||
13 | return false; | ||
14 | }); | ||
15 | } | ||
16 | } | ||
17 | |||
18 | function initExport() { | ||
19 | // no display if export not aviable | ||
20 | if ($('div').is('#export')) { | ||
21 | $('#button_export').show(); | ||
22 | $('.button-collapse-right').sideNav({ edge: 'right' }); | ||
23 | } | ||
24 | } | ||
25 | |||
26 | $(document).ready(function () { | ||
27 | // sideNav | ||
28 | $('.button-collapse').sideNav(); | ||
29 | $('select').material_select(); | ||
30 | $('.collapsible').collapsible({ | ||
31 | accordion: false, | ||
32 | }); | ||
33 | $('.datepicker').pickadate({ | ||
34 | selectMonths: true, | ||
35 | selectYears: 15, | ||
36 | formatSubmit: 'dd/mm/yyyy', | ||
37 | hiddenName: true, | ||
38 | format: 'dd/mm/yyyy', | ||
39 | }); | ||
40 | initFilters(); | ||
41 | initExport(); | ||
42 | |||
43 | $('#nav-btn-add-tag').on('click', function () { | ||
44 | $('.nav-panel-add-tag').toggle(100); | ||
45 | $('.nav-panel-menu').addClass('hidden'); | ||
46 | $('#tag_label').focus(); | ||
47 | return false; | ||
48 | }); | ||
49 | $('#nav-btn-add').on('click', function () { | ||
50 | $('.nav-panel-buttom').hide(100); | ||
51 | $('.nav-panel-add').show(100); | ||
52 | $('.nav-panels .action').hide(100); | ||
53 | $('.nav-panel-menu').addClass('hidden'); | ||
54 | $('.nav-panels').css('background', 'white'); | ||
55 | $('#entry_url').focus(); | ||
56 | return false; | ||
57 | }); | ||
58 | $('#nav-btn-search').on('click', function () { | ||
59 | $('.nav-panel-buttom').hide(100); | ||
60 | $('.nav-panel-search').show(100); | ||
61 | $('.nav-panels .action').hide(100); | ||
62 | $('.nav-panel-menu').addClass('hidden'); | ||
63 | $('.nav-panels').css('background', 'white'); | ||
64 | $('#searchfield').focus(); | ||
65 | return false; | ||
66 | }); | ||
67 | $('.close').on('click', function () { | ||
68 | $('.nav-panel-add').hide(100); | ||
69 | $('.nav-panel-search').hide(100); | ||
70 | $('.nav-panel-buttom').show(100); | ||
71 | $('.nav-panels .action').show(100); | ||
72 | $('.nav-panel-menu').removeClass('hidden'); | ||
73 | $('.nav-panels').css('background', 'transparent'); | ||
74 | return false; | ||
75 | }); | ||
76 | $(window).scroll(function () { | ||
77 | var s = $(window).scrollTop(); | ||
78 | var d = $(document).height(); | ||
79 | var c = $(window).height(); | ||
80 | var scrollPercent = (s / (d - c)) * 100; | ||
81 | $('.progress .determinate').css('width', scrollPercent + '%'); | ||
82 | }); | ||
83 | |||
84 | /* ========================================================================== | ||
85 | Annotations & Remember position | ||
86 | ========================================================================== */ | ||
87 | |||
88 | if ($('article').length) { | ||
89 | var app = new annotator.App(); | ||
90 | var x = JSON.parse($('#annotationroutes').html()); | ||
91 | |||
92 | |||
93 | app.include(annotator.ui.main, { | ||
94 | element: document.querySelector('article'), | ||
95 | }); | ||
96 | |||
97 | app.include(annotator.storage.http, x); | ||
98 | |||
99 | app.start().then(function () { | ||
100 | app.annotations.load({ entry: x.entryId }); | ||
101 | }); | ||
102 | |||
103 | $(window).scroll(function (e) { | ||
104 | var scrollTop = $(window).scrollTop(); | ||
105 | var docHeight = $(document).height(); | ||
106 | var scrollPercent = (scrollTop) / (docHeight); | ||
107 | var scrollPercentRounded = Math.round(scrollPercent * 100) / 100; | ||
108 | savePercent(x.entryId, scrollPercentRounded); | ||
109 | }); | ||
110 | |||
111 | retrievePercent(x.entryId); | ||
112 | |||
113 | $(window).resize(function () { | ||
114 | retrievePercent(x.entryId); | ||
115 | }); | ||
116 | } | ||
117 | }); | ||
diff --git a/app/config/config.yml b/app/config/config.yml index 2b11937c..b5d82ed9 100644 --- a/app/config/config.yml +++ b/app/config/config.yml | |||
@@ -30,7 +30,7 @@ framework: | |||
30 | assets: ~ | 30 | assets: ~ |
31 | 31 | ||
32 | wallabag_core: | 32 | wallabag_core: |
33 | version: 2.0.8 | 33 | version: 2.1.0 |
34 | paypal_url: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9UBA65LG3FX9Y&lc=gb" | 34 | paypal_url: "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=9UBA65LG3FX9Y&lc=gb" |
35 | languages: | 35 | languages: |
36 | en: 'English' | 36 | en: 'English' |
@@ -49,9 +49,13 @@ wallabag_core: | |||
49 | language: en | 49 | language: en |
50 | rss_limit: 50 | 50 | rss_limit: 50 |
51 | reading_speed: 1 | 51 | reading_speed: 1 |
52 | cache_lifetime: 10 | ||
53 | |||
54 | wallabag_user: | ||
55 | registration_enabled: "%fosuser_registration%" | ||
52 | 56 | ||
53 | wallabag_import: | 57 | wallabag_import: |
54 | allow_mimetypes: ['application/octet-stream', 'application/json', 'text/plain'] | 58 | allow_mimetypes: ['application/octet-stream', 'application/json', 'text/plain', 'text/csv'] |
55 | resource_dir: "%kernel.root_dir%/../web/uploads/import" | 59 | resource_dir: "%kernel.root_dir%/../web/uploads/import" |
56 | 60 | ||
57 | # Twig Configuration | 61 | # Twig Configuration |
@@ -61,19 +65,6 @@ twig: | |||
61 | form_themes: | 65 | form_themes: |
62 | - "LexikFormFilterBundle:Form:form_div_layout.html.twig" | 66 | - "LexikFormFilterBundle:Form:form_div_layout.html.twig" |
63 | 67 | ||
64 | # Assetic Configuration | ||
65 | assetic: | ||
66 | debug: "%kernel.debug%" | ||
67 | use_controller: false | ||
68 | bundles: [ ] | ||
69 | #java: /usr/bin/java | ||
70 | filters: | ||
71 | cssrewrite: ~ | ||
72 | #closure: | ||
73 | # jar: "%kernel.root_dir%/Resources/java/compiler.jar" | ||
74 | #yui_css: | ||
75 | # jar: "%kernel.root_dir%/Resources/java/yuicompressor-2.4.7.jar" | ||
76 | |||
77 | # Doctrine Configuration | 68 | # Doctrine Configuration |
78 | doctrine: | 69 | doctrine: |
79 | dbal: | 70 | dbal: |
@@ -224,3 +215,106 @@ lexik_maintenance: | |||
224 | response: | 215 | response: |
225 | code: 503 | 216 | code: 503 |
226 | status: "wallabag Service Temporarily Unavailable" | 217 | status: "wallabag Service Temporarily Unavailable" |
218 | |||
219 | old_sound_rabbit_mq: | ||
220 | connections: | ||
221 | default: | ||
222 | host: "%rabbitmq_host%" | ||
223 | port: "%rabbitmq_port%" | ||
224 | user: "%rabbitmq_user%" | ||
225 | password: "%rabbitmq_password%" | ||
226 | vhost: / | ||
227 | lazy: true | ||
228 | producers: | ||
229 | import_pocket: | ||
230 | connection: default | ||
231 | exchange_options: | ||
232 | name: 'wallabag.import.pocket' | ||
233 | type: topic | ||
234 | import_readability: | ||
235 | connection: default | ||
236 | exchange_options: | ||
237 | name: 'wallabag.import.readability' | ||
238 | type: topic | ||
239 | import_instapaper: | ||
240 | connection: default | ||
241 | exchange_options: | ||
242 | name: 'wallabag.import.instapaper' | ||
243 | type: topic | ||
244 | import_wallabag_v1: | ||
245 | connection: default | ||
246 | exchange_options: | ||
247 | name: 'wallabag.import.wallabag_v1' | ||
248 | type: topic | ||
249 | import_wallabag_v2: | ||
250 | connection: default | ||
251 | exchange_options: | ||
252 | name: 'wallabag.import.wallabag_v2' | ||
253 | type: topic | ||
254 | import_firefox: | ||
255 | connection: default | ||
256 | exchange_options: | ||
257 | name: 'wallabag.import.firefox' | ||
258 | type: topic | ||
259 | import_chrome: | ||
260 | connection: default | ||
261 | exchange_options: | ||
262 | name: 'wallabag.import.chrome' | ||
263 | type: topic | ||
264 | consumers: | ||
265 | import_pocket: | ||
266 | connection: default | ||
267 | exchange_options: | ||
268 | name: 'wallabag.import.pocket' | ||
269 | type: topic | ||
270 | queue_options: | ||
271 | name: 'wallabag.import.pocket' | ||
272 | callback: wallabag_import.consumer.amqp.pocket | ||
273 | import_readability: | ||
274 | connection: default | ||
275 | exchange_options: | ||
276 | name: 'wallabag.import.readability' | ||
277 | type: topic | ||
278 | queue_options: | ||
279 | name: 'wallabag.import.readability' | ||
280 | callback: wallabag_import.consumer.amqp.readability | ||
281 | import_instapaper: | ||
282 | connection: default | ||
283 | exchange_options: | ||
284 | name: 'wallabag.import.instapaper' | ||
285 | type: topic | ||
286 | queue_options: | ||
287 | name: 'wallabag.import.instapaper' | ||
288 | callback: wallabag_import.consumer.amqp.instapaper | ||
289 | import_wallabag_v1: | ||
290 | connection: default | ||
291 | exchange_options: | ||
292 | name: 'wallabag.import.wallabag_v1' | ||
293 | type: topic | ||
294 | queue_options: | ||
295 | name: 'wallabag.import.wallabag_v1' | ||
296 | callback: wallabag_import.consumer.amqp.wallabag_v1 | ||
297 | import_wallabag_v2: | ||
298 | connection: default | ||
299 | exchange_options: | ||
300 | name: 'wallabag.import.wallabag_v2' | ||
301 | type: topic | ||
302 | queue_options: | ||
303 | name: 'wallabag.import.wallabag_v2' | ||
304 | callback: wallabag_import.consumer.amqp.wallabag_v2 | ||
305 | import_firefox: | ||
306 | connection: default | ||
307 | exchange_options: | ||
308 | name: 'wallabag.import.firefox' | ||
309 | type: topic | ||
310 | queue_options: | ||
311 | name: 'wallabag.import.firefox' | ||
312 | callback: wallabag_import.consumer.amqp.firefox | ||
313 | import_chrome: | ||
314 | connection: default | ||
315 | exchange_options: | ||
316 | name: 'wallabag.import.chrome' | ||
317 | type: topic | ||
318 | queue_options: | ||
319 | name: 'wallabag.import.chrome' | ||
320 | callback: wallabag_import.consumer.amqp.chrome | ||
diff --git a/app/config/config_dev.yml b/app/config/config_dev.yml index 0fa23dbf..3b67d8f6 100644 --- a/app/config/config_dev.yml +++ b/app/config/config_dev.yml | |||
@@ -35,11 +35,16 @@ monolog: | |||
35 | VERBOSITY_DEBUG: DEBUG | 35 | VERBOSITY_DEBUG: DEBUG |
36 | channels: [doctrine] | 36 | channels: [doctrine] |
37 | 37 | ||
38 | assetic: | ||
39 | use_controller: true | ||
40 | |||
41 | swiftmailer: | 38 | swiftmailer: |
42 | # see http://mailcatcher.me/ | 39 | # see http://mailcatcher.me/ |
43 | transport: smtp | 40 | transport: smtp |
44 | host: 'localhost' | 41 | host: 'localhost' |
45 | port: 1025 | 42 | port: 1025 |
43 | |||
44 | # If you want to use cache for queries used in WallabagExtension | ||
45 | # Uncomment the following lines | ||
46 | #doctrine: | ||
47 | # orm: | ||
48 | # metadata_cache_driver: apcu | ||
49 | # result_cache_driver: apcu | ||
50 | # query_cache_driver: apcu | ||
diff --git a/app/config/parameters.yml.dist b/app/config/parameters.yml.dist index d45839f4..f2e5bec3 100644 --- a/app/config/parameters.yml.dist +++ b/app/config/parameters.yml.dist | |||
@@ -34,6 +34,19 @@ parameters: | |||
34 | twofactor_sender: no-reply@wallabag.org | 34 | twofactor_sender: no-reply@wallabag.org |
35 | 35 | ||
36 | # fosuser stuff | 36 | # fosuser stuff |
37 | fosuser_registration: true | ||
37 | fosuser_confirmation: true | 38 | fosuser_confirmation: true |
38 | 39 | ||
39 | from_email: no-reply@wallabag.org | 40 | from_email: no-reply@wallabag.org |
41 | |||
42 | rss_limit: 50 | ||
43 | |||
44 | # RabbitMQ processing | ||
45 | rabbitmq_host: localhost | ||
46 | rabbitmq_port: 5672 | ||
47 | rabbitmq_user: guest | ||
48 | rabbitmq_password: guest | ||
49 | |||
50 | # Redis processing | ||
51 | redis_host: localhost | ||
52 | redis_port: 6379 | ||
diff --git a/app/config/parameters_test.yml b/app/config/parameters_test.yml index 696c95ef..2943b27a 100644 --- a/app/config/parameters_test.yml +++ b/app/config/parameters_test.yml | |||
@@ -5,4 +5,4 @@ parameters: | |||
5 | test_database_name: null | 5 | test_database_name: null |
6 | test_database_user: null | 6 | test_database_user: null |
7 | test_database_password: null | 7 | test_database_password: null |
8 | test_database_path: '%kernel.root_dir%/../data/db/wallabag_testYO.sqlite' | 8 | test_database_path: '%kernel.root_dir%/../data/db/wallabag_test.sqlite' |
diff --git a/app/config/security.yml b/app/config/security.yml index e24e03df..1f30e58b 100644 --- a/app/config/security.yml +++ b/app/config/security.yml | |||
@@ -60,6 +60,7 @@ security: | |||
60 | - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } | 60 | - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY } |
61 | - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } | 61 | - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY } |
62 | - { path: /(unread|starred|archive).xml$, roles: IS_AUTHENTICATED_ANONYMOUSLY } | 62 | - { path: /(unread|starred|archive).xml$, roles: IS_AUTHENTICATED_ANONYMOUSLY } |
63 | - { path: ^/share, roles: IS_AUTHENTICATED_ANONYMOUSLY } | ||
63 | - { path: ^/settings, roles: ROLE_SUPER_ADMIN } | 64 | - { path: ^/settings, roles: ROLE_SUPER_ADMIN } |
64 | - { path: ^/annotations, roles: ROLE_USER } | 65 | - { path: ^/annotations, roles: ROLE_USER } |
65 | - { path: ^/, roles: ROLE_USER } | 66 | - { path: ^/, roles: ROLE_USER } |
diff --git a/app/config/services.yml b/app/config/services.yml index 480408d9..76bbce27 100644 --- a/app/config/services.yml +++ b/app/config/services.yml | |||
@@ -16,6 +16,11 @@ services: | |||
16 | wallabag.twig_extension: | 16 | wallabag.twig_extension: |
17 | class: Wallabag\CoreBundle\Twig\WallabagExtension | 17 | class: Wallabag\CoreBundle\Twig\WallabagExtension |
18 | public: false | 18 | public: false |
19 | arguments: | ||
20 | - "@wallabag_core.entry_repository" | ||
21 | - "@wallabag_core.tag_repository" | ||
22 | - "@security.token_storage" | ||
23 | - "%wallabag_core.cache_lifetime%" | ||
19 | tags: | 24 | tags: |
20 | - { name: twig.extension } | 25 | - { name: twig.extension } |
21 | 26 | ||
diff --git a/bin/symfony_requirements b/bin/symfony_requirements index 8825a964..a7bf65a1 100755 --- a/bin/symfony_requirements +++ b/bin/symfony_requirements | |||
@@ -22,7 +22,6 @@ echo '> Checking Symfony requirements:'.PHP_EOL.' '; | |||
22 | 22 | ||
23 | $messages = array(); | 23 | $messages = array(); |
24 | foreach ($symfonyRequirements->getRequirements() as $req) { | 24 | foreach ($symfonyRequirements->getRequirements() as $req) { |
25 | /** @var $req Requirement */ | ||
26 | if ($helpText = get_error_message($req, $lineSize)) { | 25 | if ($helpText = get_error_message($req, $lineSize)) { |
27 | echo_style('red', 'E'); | 26 | echo_style('red', 'E'); |
28 | $messages['error'][] = $helpText; | 27 | $messages['error'][] = $helpText; |
@@ -121,10 +120,14 @@ function echo_block($style, $title, $message) | |||
121 | 120 | ||
122 | echo PHP_EOL.PHP_EOL; | 121 | echo PHP_EOL.PHP_EOL; |
123 | 122 | ||
124 | echo_style($style, str_repeat(' ', $width).PHP_EOL); | 123 | echo_style($style, str_repeat(' ', $width)); |
125 | echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT).PHP_EOL); | 124 | echo PHP_EOL; |
126 | echo_style($style, str_pad($message, $width, ' ', STR_PAD_RIGHT).PHP_EOL); | 125 | echo_style($style, str_pad(' ['.$title.']', $width, ' ', STR_PAD_RIGHT)); |
127 | echo_style($style, str_repeat(' ', $width).PHP_EOL); | 126 | echo PHP_EOL; |
127 | echo_style($style, $message); | ||
128 | echo PHP_EOL; | ||
129 | echo_style($style, str_repeat(' ', $width)); | ||
130 | echo PHP_EOL; | ||
128 | } | 131 | } |
129 | 132 | ||
130 | function has_color_support() | 133 | function has_color_support() |
diff --git a/bower.json b/bower.json new file mode 100644 index 00000000..f2d2bd26 --- /dev/null +++ b/bower.json | |||
@@ -0,0 +1,39 @@ | |||
1 | { | ||
2 | "name": "wallabag", | ||
3 | "version": "2.0.0-beta.1", | ||
4 | "homepage": "https://github.com/wallabag/wallabag", | ||
5 | "authors": [ | ||
6 | { | ||
7 | "name": "Nicolas Lœuillet", | ||
8 | "email": "nicolas@loeuillet.org", | ||
9 | "homepage": "http://www.cdetc.fr", | ||
10 | "role": "Developer" | ||
11 | }, | ||
12 | { | ||
13 | "name": "Thomas Citharel", | ||
14 | "homepage": "http://tcit.fr", | ||
15 | "role": "Developer" | ||
16 | }, | ||
17 | { | ||
18 | "name": "Jérémy Benoist", | ||
19 | "homepage": "http://www.j0k3r.net", | ||
20 | "role": "Developer" | ||
21 | } | ||
22 | ], | ||
23 | "description": "wallabag is a self hostable application for saving web pages", | ||
24 | "license": "MIT", | ||
25 | "main": "bower.json", | ||
26 | "ignore": [ | ||
27 | "**/.*", | ||
28 | "node_modules", | ||
29 | "bower_components", | ||
30 | "test", | ||
31 | "tests" | ||
32 | ], | ||
33 | "dependencies": { | ||
34 | "icomoon-bower": "^0.1.0", | ||
35 | "bower-pt-sans": "pt-sans#*", | ||
36 | "roboto-fontface": "^0.4.5", | ||
37 | "material-design-icons-iconfont": "^2.0.4" | ||
38 | } | ||
39 | } | ||
diff --git a/composer.json b/composer.json index c7830a14..8220ed45 100644 --- a/composer.json +++ b/composer.json | |||
@@ -48,7 +48,6 @@ | |||
48 | "doctrine/doctrine-bundle": "^1.6", | 48 | "doctrine/doctrine-bundle": "^1.6", |
49 | "doctrine/doctrine-cache-bundle": "^1.2", | 49 | "doctrine/doctrine-cache-bundle": "^1.2", |
50 | "twig/extensions": "~1.0", | 50 | "twig/extensions": "~1.0", |
51 | "symfony/assetic-bundle": "~2.3", | ||
52 | "symfony/swiftmailer-bundle": "^2.3", | 51 | "symfony/swiftmailer-bundle": "^2.3", |
53 | "symfony/monolog-bundle": "^2.8", | 52 | "symfony/monolog-bundle": "^2.8", |
54 | "sensio/distribution-bundle": "^5.0", | 53 | "sensio/distribution-bundle": "^5.0", |
@@ -81,22 +80,26 @@ | |||
81 | "mnapoli/piwik-twig-extension": "^1.0", | 80 | "mnapoli/piwik-twig-extension": "^1.0", |
82 | "lexik/maintenance-bundle": "~2.1", | 81 | "lexik/maintenance-bundle": "~2.1", |
83 | "ocramius/proxy-manager": "1.*", | 82 | "ocramius/proxy-manager": "1.*", |
84 | "white-october/pagerfanta-bundle": "^1.0" | 83 | "white-october/pagerfanta-bundle": "^1.0", |
84 | "mouf/nodejs-installer": "~1.0", | ||
85 | "php-amqplib/rabbitmq-bundle": "^1.8", | ||
86 | "predis/predis": "^1.0", | ||
87 | "javibravo/simpleue": "^1.0" | ||
85 | }, | 88 | }, |
86 | "require-dev": { | 89 | "require-dev": { |
87 | "doctrine/doctrine-fixtures-bundle": "~2.2", | 90 | "doctrine/doctrine-fixtures-bundle": "~2.2", |
88 | "doctrine/data-fixtures": "~1.1.1", | 91 | "doctrine/data-fixtures": "~1.1.1", |
89 | "sensio/generator-bundle": "^3.0", | 92 | "sensio/generator-bundle": "^3.0", |
90 | "phpunit/phpunit": "~4.4", | 93 | "phpunit/phpunit": "~5.0", |
91 | "symfony/phpunit-bridge": "^3.0", | 94 | "symfony/phpunit-bridge": "^3.0", |
92 | "friendsofphp/php-cs-fixer": "~1.9" | 95 | "friendsofphp/php-cs-fixer": "~1.9", |
96 | "m6web/redis-mock": "^2.0" | ||
93 | }, | 97 | }, |
94 | "scripts": { | 98 | "scripts": { |
95 | "post-cmd": [ | 99 | "post-cmd": [ |
96 | "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", | 100 | "Incenteev\\ParameterHandler\\ScriptHandler::buildParameters", |
97 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", | 101 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::buildBootstrap", |
98 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", | 102 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::clearCache", |
99 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installAssets", | ||
100 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile", | 103 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::installRequirementsFile", |
101 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget" | 104 | "Sensio\\Bundle\\DistributionBundle\\Composer\\ScriptHandler::prepareDeploymentTarget" |
102 | ], | 105 | ], |
@@ -113,7 +116,6 @@ | |||
113 | "symfony-var-dir": "var", | 116 | "symfony-var-dir": "var", |
114 | "symfony-web-dir": "web", | 117 | "symfony-web-dir": "web", |
115 | "symfony-tests-dir": "tests", | 118 | "symfony-tests-dir": "tests", |
116 | "symfony-assets-install": "relative", | ||
117 | "incenteev-parameters": { | 119 | "incenteev-parameters": { |
118 | "file": "app/config/parameters.yml" | 120 | "file": "app/config/parameters.yml" |
119 | } | 121 | } |
diff --git a/docker-compose.yml b/docker-compose.yml index 50d8c546..3c28f2f1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml | |||
@@ -11,6 +11,7 @@ services: | |||
11 | links: | 11 | links: |
12 | - php:php | 12 | - php:php |
13 | command: nginx -c /nginx.conf | 13 | command: nginx -c /nginx.conf |
14 | |||
14 | php: | 15 | php: |
15 | build: | 16 | build: |
16 | context: docker/php | 17 | context: docker/php |
@@ -30,6 +31,7 @@ services: | |||
30 | # If all DBMS are commented out, sqlite will be used as default | 31 | # If all DBMS are commented out, sqlite will be used as default |
31 | # - ./docker/postgres/env | 32 | # - ./docker/postgres/env |
32 | # - ./docker/mariadb/env | 33 | # - ./docker/mariadb/env |
34 | |||
33 | #postgres: | 35 | #postgres: |
34 | # image: postgres:9 | 36 | # image: postgres:9 |
35 | # ports: | 37 | # ports: |
@@ -38,6 +40,7 @@ services: | |||
38 | # - ./docker/data/pgsql:/var/lib/postgresql/data | 40 | # - ./docker/data/pgsql:/var/lib/postgresql/data |
39 | # env_file: | 41 | # env_file: |
40 | # - ./docker/postgres/env | 42 | # - ./docker/postgres/env |
43 | |||
41 | #mariadb: | 44 | #mariadb: |
42 | # image: mariadb:10 | 45 | # image: mariadb:10 |
43 | # ports: | 46 | # ports: |
@@ -46,3 +49,13 @@ services: | |||
46 | # - ./docker/data/mariadb:/var/lib/mysql | 49 | # - ./docker/data/mariadb:/var/lib/mysql |
47 | # env_file: | 50 | # env_file: |
48 | # - ./docker/mariadb/env | 51 | # - ./docker/mariadb/env |
52 | |||
53 | rabbitmq: | ||
54 | image: rabbitmq:3-management | ||
55 | ports: | ||
56 | - "15672:15672" | ||
57 | |||
58 | redis: | ||
59 | image: redis | ||
60 | ports: | ||
61 | - "6379:6379" | ||
diff --git a/docs/de/conf.py b/docs/de/conf.py index 8f2d130d..cc9dcdf8 100644 --- a/docs/de/conf.py +++ b/docs/de/conf.py | |||
@@ -12,7 +12,7 @@ source_suffix = '.rst' | |||
12 | master_doc = 'index' | 12 | master_doc = 'index' |
13 | project = u'wallabag-fr' | 13 | project = u'wallabag-fr' |
14 | copyright = u'2013-2016, Nicolas Lœuillet - MIT Licence' | 14 | copyright = u'2013-2016, Nicolas Lœuillet - MIT Licence' |
15 | version = '2.0.0' | 15 | version = '2.1.0' |
16 | release = version | 16 | release = version |
17 | exclude_patterns = ['_build'] | 17 | exclude_patterns = ['_build'] |
18 | pygments_style = 'sphinx' | 18 | pygments_style = 'sphinx' |
diff --git a/docs/de/developer/rabbitmq.rst b/docs/de/developer/rabbitmq.rst new file mode 100644 index 00000000..bea02ff4 --- /dev/null +++ b/docs/de/developer/rabbitmq.rst | |||
@@ -0,0 +1,77 @@ | |||
1 | Installiere RabbitMQ für asynchrone Aufgaben | ||
2 | ============================================ | ||
3 | |||
4 | Um asynchrone Aufgaben zu starten (nützlich z.B. für große Imports), können wir RabbitMQ nutzen. | ||
5 | |||
6 | Voraussetzungen | ||
7 | --------------- | ||
8 | |||
9 | Du musst RabbitMQ auf deinem Server installiert haben. | ||
10 | |||
11 | Installation | ||
12 | ~~~~~~~~~~~~ | ||
13 | |||
14 | .. code:: bash | ||
15 | |||
16 | wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc | ||
17 | apt-key add rabbitmq-signing-key-public.asc | ||
18 | apt-get update | ||
19 | apt-get install rabbitmq-server | ||
20 | |||
21 | Konfiguration und Starten | ||
22 | ~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
23 | |||
24 | .. code:: bash | ||
25 | |||
26 | rabbitmq-plugins enable rabbitmq_management # (useful to have a web interface, available at http://localhost:15672/ (guest/guest) | ||
27 | rabbitmq-server -detached | ||
28 | |||
29 | RabbitMQ stoppen | ||
30 | ~~~~~~~~~~~~~~~ | ||
31 | |||
32 | .. code:: bash | ||
33 | |||
34 | rabbitmqctl stop | ||
35 | |||
36 | |||
37 | Konfigure RabbitMQ in wallabag | ||
38 | ------------------------------ | ||
39 | |||
40 | Bearbeite die Datei ``parameters.yml``, um die RabbitMQ Konfiguration einzurichten. Die Standardkonfiguration sollte ok sein: | ||
41 | |||
42 | .. code:: yaml | ||
43 | |||
44 | rabbitmq_host: localhost | ||
45 | rabbitmq_port: 5672 | ||
46 | rabbitmq_user: guest | ||
47 | rabbitmq_password: guest | ||
48 | |||
49 | |||
50 | Starte den RabbitMQ Consumer | ||
51 | ---------------------------- | ||
52 | |||
53 | Abhängig von welchem Service du importieren möchtest, solltest du einen Cron Job aktivieren (oder mehrere, wenn du viele unterstützen willst): | ||
54 | |||
55 | .. code:: bash | ||
56 | |||
57 | # for Pocket import | ||
58 | bin/console rabbitmq:consumer import_pocket -w | ||
59 | |||
60 | # for Readability import | ||
61 | bin/console rabbitmq:consumer import_readability -w | ||
62 | |||
63 | # for Instapaper import | ||
64 | bin/console rabbitmq:consumer import_instapaper -w | ||
65 | |||
66 | # for wallabag v1 import | ||
67 | bin/console rabbitmq:consumer import_wallabag_v1 -w | ||
68 | |||
69 | # for wallabag v2 import | ||
70 | bin/console rabbitmq:consumer import_wallabag_v2 -w | ||
71 | |||
72 | # for Firefox import | ||
73 | bin/console rabbitmq:consumer import_firefox -w | ||
74 | |||
75 | # for Chrome import | ||
76 | bin/console rabbitmq:consumer import_chrome -w | ||
77 | |||
diff --git a/docs/de/developer/redis.rst b/docs/de/developer/redis.rst new file mode 100644 index 00000000..d613ce6c --- /dev/null +++ b/docs/de/developer/redis.rst | |||
@@ -0,0 +1,71 @@ | |||
1 | Installiere Redis für asynchrone Aufgaben | ||
2 | ========================================= | ||
3 | |||
4 | Um asynchrone Aufgaben zu starten (nützlich z.B. für große Imports), können wir Redis nutzen. | ||
5 | |||
6 | Voraussetzungen | ||
7 | --------------- | ||
8 | |||
9 | Du musst Redis auf deinem Server installiert haben. | ||
10 | |||
11 | Installation | ||
12 | ~~~~~~~~~~~~ | ||
13 | |||
14 | .. code:: bash | ||
15 | |||
16 | apt-get install redis-server | ||
17 | |||
18 | Starten | ||
19 | ~~~~~~ | ||
20 | |||
21 | Der Redis Service läuft eventuell schon direkt nach der Installation. Falls nicht kannst du ihn wie folgt starten: | ||
22 | |||
23 | .. code:: bash | ||
24 | |||
25 | redis-server | ||
26 | |||
27 | |||
28 | Konfigure Redis in wallabag | ||
29 | --------------------------- | ||
30 | |||
31 | Bearbeite die Datei ``parameters.yml``, um die RabbitMQ Konfiguration einzurichten. Die Standardkonfiguration sollte ok sein: | ||
32 | |||
33 | .. code:: yaml | ||
34 | |||
35 | redis_host: localhost | ||
36 | redis_port: 6379 | ||
37 | |||
38 | |||
39 | Starte den Redis Consumer | ||
40 | ------------------------- | ||
41 | |||
42 | Abhängig von welchem Service du importieren möchtest, solltest du einen Cron Job aktivieren (oder mehrere, wenn du viele unterstützen willst): | ||
43 | |||
44 | .. code:: bash | ||
45 | |||
46 | # for Pocket import | ||
47 | bin/console wallabag:import:redis-worker pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log | ||
48 | |||
49 | # for Readability import | ||
50 | bin/console wallabag:import:redis-worker readability -vv >> /path/to/wallabag/var/logs/redis-readability.log | ||
51 | |||
52 | # for Instapaper import | ||
53 | bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log | ||
54 | |||
55 | # for wallabag v1 import | ||
56 | bin/console wallabag:import:redis-worker wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log | ||
57 | |||
58 | # for wallabag v2 import | ||
59 | bin/console wallabag:import:redis-worker wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log | ||
60 | |||
61 | # for Firefox import | ||
62 | bin/console wallabag:import:redis-worker firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log | ||
63 | |||
64 | # for Chrome import | ||
65 | bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log | ||
66 | |||
67 | Wenn du den Import nur für ein paar Nachrichten und nicht für alle starten willst, kannst du die Nummer (im folgenden Beispiel 12) angeben. Der Redis Worker wird dann nach der 12. Nachricht stoppen: | ||
68 | |||
69 | .. code:: bash | ||
70 | |||
71 | bin/console wallabag:import:redis-worker pocket -vv --maxIterations=12 | ||
diff --git a/docs/de/index.rst b/docs/de/index.rst index 5311150f..b3cd33b0 100644 --- a/docs/de/index.rst +++ b/docs/de/index.rst | |||
@@ -17,6 +17,11 @@ Die Hauptdokumentation für diese Applikation ist in einigen Abschnitten organis | |||
17 | * :ref:`user-docs` | 17 | * :ref:`user-docs` |
18 | * :ref:`dev-docs` | 18 | * :ref:`dev-docs` |
19 | 19 | ||
20 | Die Dokumentation ist in anderen Sprachen verfügbar : | ||
21 | |||
22 | * `Documentation in english <http://doc.wallabag.org/en/master/>`_ | ||
23 | * `Documentation en français <http://doc.wallabag.org/fr/master/>`_ | ||
24 | |||
20 | .. _user-docs: | 25 | .. _user-docs: |
21 | 26 | ||
22 | .. toctree:: | 27 | .. toctree:: |
@@ -25,7 +30,8 @@ Die Hauptdokumentation für diese Applikation ist in einigen Abschnitten organis | |||
25 | 30 | ||
26 | user/faq | 31 | user/faq |
27 | user/installation | 32 | user/installation |
28 | user/upgrade | 33 | user/upgrade-2.0.x-2.1.y |
34 | user/upgrade-2.0.x-2.0.y | ||
29 | user/migration | 35 | user/migration |
30 | user/import | 36 | user/import |
31 | user/create_account | 37 | user/create_account |
@@ -50,3 +56,5 @@ Die Hauptdokumentation für diese Applikation ist in einigen Abschnitten organis | |||
50 | developer/documentation | 56 | developer/documentation |
51 | developer/translate | 57 | developer/translate |
52 | developer/maintenance | 58 | developer/maintenance |
59 | developer/redis | ||
60 | developer/rabbitmq | ||
diff --git a/docs/de/user/installation.rst b/docs/de/user/installation.rst index fced2ed4..05602bf3 100644 --- a/docs/de/user/installation.rst +++ b/docs/de/user/installation.rst | |||
@@ -46,7 +46,7 @@ Composer installieren: | |||
46 | 46 | ||
47 | curl -s http://getcomposer.org/installer | php | 47 | curl -s http://getcomposer.org/installer | php |
48 | 48 | ||
49 | Du kannst eine spezifische Anleitung `hier <https://getcomposer.org/doc/00-intro.md>`__ finden: | 49 | Du kannst eine spezifische Anleitung `hier <https://getcomposer.org/doc/00-intro.md>`__ finden. |
50 | 50 | ||
51 | Um wallabag selbst zu installieren, musst du die folgenden Kommandos ausführen: | 51 | Um wallabag selbst zu installieren, musst du die folgenden Kommandos ausführen: |
52 | 52 | ||
@@ -54,9 +54,8 @@ Um wallabag selbst zu installieren, musst du die folgenden Kommandos ausführen: | |||
54 | 54 | ||
55 | git clone https://github.com/wallabag/wallabag.git | 55 | git clone https://github.com/wallabag/wallabag.git |
56 | cd wallabag | 56 | cd wallabag |
57 | git checkout 2.0.8 | 57 | git checkout 2.1.0 |
58 | SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist | 58 | ./install.sh |
59 | php bin/console wallabag:install --env=prod | ||
60 | 59 | ||
61 | Um PHPs eingebauten Server zu starten und zu testen, ob alles korrekt installiert wurde, kannst du folgendes Kommando ausführen: | 60 | Um PHPs eingebauten Server zu starten und zu testen, ob alles korrekt installiert wurde, kannst du folgendes Kommando ausführen: |
62 | 61 | ||
diff --git a/docs/de/user/upgrade.rst b/docs/de/user/upgrade-2.0.x-2.0.y.rst index c04b68f3..adf288bd 100644 --- a/docs/de/user/upgrade.rst +++ b/docs/de/user/upgrade-2.0.x-2.0.y.rst | |||
@@ -1,5 +1,5 @@ | |||
1 | Wallabag updaten | 1 | Wallabag updaten 2.0.x -> 2.1.x |
2 | ================ | 2 | =============================== |
3 | 3 | ||
4 | Update auf einem dedizierten Webserver | 4 | Update auf einem dedizierten Webserver |
5 | -------------------------------------- | 5 | -------------------------------------- |
diff --git a/docs/de/user/upgrade-2.0.x-2.1.y.rst b/docs/de/user/upgrade-2.0.x-2.1.y.rst new file mode 100644 index 00000000..85229d30 --- /dev/null +++ b/docs/de/user/upgrade-2.0.x-2.1.y.rst | |||
@@ -0,0 +1,64 @@ | |||
1 | Wallabag updaten | ||
2 | ================ | ||
3 | |||
4 | .. warning:: | ||
5 | Wenn du den Import von Pocket durch das Hinzufügen des Consumer Key in den internen Einstellungen konfiguriert hast, fertige bitte ein Backup deines Keys an, bevor du auf das neue Release migrierst: Du wirst den Key nach dem Update in der Konfiguration erneut eintragen müssen. | ||
6 | |||
7 | Update auf einem dedizierten Webserver | ||
8 | -------------------------------------- | ||
9 | |||
10 | Das neueste Release ist auf https://www.wallabag.org/pages/download-wallabag.html veröffentlicht. Um deine wallabag-Installation auf die neueste Version zu aktualisieren, führe die folgenden Kommandos in deinem wallabag-Ordner aus (ersetze ``2.1.0`` mit der neuesten Releasenummer): | ||
11 | |||
12 | :: | ||
13 | |||
14 | git fetch origin | ||
15 | git fetch --tags | ||
16 | git checkout 2.1.0 | ||
17 | ASSETS=build ./install.sh | ||
18 | php bin/console doctrine:migrations:migrate --env=prod | ||
19 | php bin/console cache:clear --env=prod | ||
20 | |||
21 | Update auf einem Shared Webhosting | ||
22 | ---------------------------------- | ||
23 | |||
24 | Sichere deine ``app/config/parameters.yml`` Datei. | ||
25 | |||
26 | Lade das neueste Release von wallabag herunter: | ||
27 | |||
28 | .. code-block:: bash | ||
29 | |||
30 | wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package | ||
31 | |||
32 | (md5 hash: ``4f84c725d1d6e3345eae0a406115e5ff``) | ||
33 | |||
34 | Entpacke das Archiv in deinen wallabag-Ordner und ersetze ``app/config/parameters.yml`` mit deiner Datei. | ||
35 | |||
36 | Bitte beachte, dass wir in dieser Version neue Parameter hinzugefügt haben. Du musst die Datei ``app/config/parameters.yml`` bearbeiten und die folgenden Zeilen hinzufügen (ersetze die Werte mit deiner Konfiguration): | ||
37 | |||
38 | .. code-block:: bash | ||
39 | |||
40 | # RabbitMQ processing | ||
41 | rabbitmq_host: localhost | ||
42 | rabbitmq_port: 5672 | ||
43 | rabbitmq_user: guest | ||
44 | rabbitmq_password: guest | ||
45 | |||
46 | # Redis processing | ||
47 | redis_host: localhost | ||
48 | redis_port: 6379 | ||
49 | |||
50 | Wenn du SQLite nutzt, musst auch das ``data/`` Verzeichnis in die neue Installation kopieren. | ||
51 | |||
52 | Leere den ``var/cache`` Ordner. | ||
53 | |||
54 | Du musst einige SQL-Abfragen ausführen, um die Datenbank zu aktualisieren. Wir nehmen in diesem Fall an, dass das Tabellenpräfix ``wallabag_`` ist und eine MySQL-Datenbank genutzt wird: | ||
55 | |||
56 | .. code-block:: sql | ||
57 | |||
58 | ALTER TABLE `wallabag_entry` ADD `uuid` LONGTEXT DEFAULT NULL; | ||
59 | INSERT INTO `wallabag_craue_config_setting` (`name`, `value`, `section`) VALUES ('share_public', '1', 'entry'); | ||
60 | ALTER TABLE `wallabag_oauth2_clients` ADD name longtext COLLATE 'utf8_unicode_ci' DEFAULT NULL; | ||
61 | INSERT INTO `wallabag_craue_config_setting` (`name`, `value`, `section`) VALUES ('import_with_redis', '0', 'import'); | ||
62 | INSERT INTO `wallabag_craue_config_setting` (`name`, `value`, `section`) VALUES ('import_with_rabbitmq', '0', 'import'); | ||
63 | ALTER TABLE `wallabag_config` ADD `pocket_consumer_key` VARCHAR(255) DEFAULT NULL; | ||
64 | DELETE FROM `wallabag_craue_config_setting` WHERE `name` = 'pocket_consumer_key'; | ||
diff --git a/docs/en/conf.py b/docs/en/conf.py index 86e33704..717b35f1 100644 --- a/docs/en/conf.py +++ b/docs/en/conf.py | |||
@@ -12,7 +12,7 @@ source_suffix = '.rst' | |||
12 | master_doc = 'index' | 12 | master_doc = 'index' |
13 | project = u'wallabag' | 13 | project = u'wallabag' |
14 | copyright = u'2013-2016, Nicolas Lœuillet - MIT Licence' | 14 | copyright = u'2013-2016, Nicolas Lœuillet - MIT Licence' |
15 | version = '2.0.0' | 15 | version = '2.1.0' |
16 | release = version | 16 | release = version |
17 | exclude_patterns = ['_build'] | 17 | exclude_patterns = ['_build'] |
18 | pygments_style = 'sphinx' | 18 | pygments_style = 'sphinx' |
diff --git a/docs/en/developer/rabbitmq.rst b/docs/en/developer/rabbitmq.rst new file mode 100644 index 00000000..63b85106 --- /dev/null +++ b/docs/en/developer/rabbitmq.rst | |||
@@ -0,0 +1,76 @@ | |||
1 | Install RabbitMQ for asynchronous tasks | ||
2 | ======================================= | ||
3 | |||
4 | In order to launch asynchronous tasks (useful for huge imports for example), we can use RabbitMQ. | ||
5 | |||
6 | Requirements | ||
7 | ------------ | ||
8 | |||
9 | You need to have RabbitMQ installed on your server. | ||
10 | |||
11 | Installation | ||
12 | ~~~~~~~~~~~~ | ||
13 | |||
14 | .. code:: bash | ||
15 | |||
16 | wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc | ||
17 | apt-key add rabbitmq-signing-key-public.asc | ||
18 | apt-get update | ||
19 | apt-get install rabbitmq-server | ||
20 | |||
21 | Configuration and launch | ||
22 | ~~~~~~~~~~~~~~~~~~~~~~~~ | ||
23 | |||
24 | .. code:: bash | ||
25 | |||
26 | rabbitmq-plugins enable rabbitmq_management # (useful to have a web interface, available at http://localhost:15672/ (guest/guest) | ||
27 | rabbitmq-server -detached | ||
28 | |||
29 | Stop RabbitMQ | ||
30 | ~~~~~~~~~~~~~ | ||
31 | |||
32 | .. code:: bash | ||
33 | |||
34 | rabbitmqctl stop | ||
35 | |||
36 | |||
37 | Configure RabbitMQ in wallabag | ||
38 | ------------------------------ | ||
39 | |||
40 | Edit your ``parameters.yml`` file to edit RabbitMQ configuration. The default one should be ok: | ||
41 | |||
42 | .. code:: yaml | ||
43 | |||
44 | rabbitmq_host: localhost | ||
45 | rabbitmq_port: 5672 | ||
46 | rabbitmq_user: guest | ||
47 | rabbitmq_password: guest | ||
48 | |||
49 | |||
50 | Launch RabbitMQ consumer | ||
51 | ------------------------ | ||
52 | |||
53 | Depending on which service you want to import from you need to enable one (or many if you want to support many) cron job: | ||
54 | |||
55 | .. code:: bash | ||
56 | |||
57 | # for Pocket import | ||
58 | bin/console rabbitmq:consumer import_pocket -w | ||
59 | |||
60 | # for Readability import | ||
61 | bin/console rabbitmq:consumer import_readability -w | ||
62 | |||
63 | # for Instapaper import | ||
64 | bin/console rabbitmq:consumer import_instapaper -w | ||
65 | |||
66 | # for wallabag v1 import | ||
67 | bin/console rabbitmq:consumer import_wallabag_v1 -w | ||
68 | |||
69 | # for wallabag v2 import | ||
70 | bin/console rabbitmq:consumer import_wallabag_v2 -w | ||
71 | |||
72 | # for Firefox import | ||
73 | bin/console rabbitmq:consumer import_firefox -w | ||
74 | |||
75 | # for Chrome import | ||
76 | bin/console rabbitmq:consumer import_chrome -w | ||
diff --git a/docs/en/developer/redis.rst b/docs/en/developer/redis.rst new file mode 100644 index 00000000..820a52e9 --- /dev/null +++ b/docs/en/developer/redis.rst | |||
@@ -0,0 +1,71 @@ | |||
1 | Install Redis for asynchronous tasks | ||
2 | ==================================== | ||
3 | |||
4 | In order to launch asynchronous tasks (useful for huge imports for example), we can use Redis. | ||
5 | |||
6 | Requirements | ||
7 | ------------ | ||
8 | |||
9 | You need to have Redis installed on your server. | ||
10 | |||
11 | Installation | ||
12 | ~~~~~~~~~~~~ | ||
13 | |||
14 | .. code:: bash | ||
15 | |||
16 | apt-get install redis-server | ||
17 | |||
18 | Launch | ||
19 | ~~~~~~ | ||
20 | |||
21 | The server might be already running after installing, if not you can launch it using: | ||
22 | |||
23 | .. code:: bash | ||
24 | |||
25 | redis-server | ||
26 | |||
27 | |||
28 | Configure Redis in wallabag | ||
29 | --------------------------- | ||
30 | |||
31 | Edit your ``parameters.yml`` file to edit Redis configuration. The default one should be ok: | ||
32 | |||
33 | .. code:: yaml | ||
34 | |||
35 | redis_host: localhost | ||
36 | redis_port: 6379 | ||
37 | |||
38 | |||
39 | Launch Redis consumer | ||
40 | --------------------- | ||
41 | |||
42 | Depending on which service you want to import from you need to enable one (or many if you want to support many) cron job: | ||
43 | |||
44 | .. code:: bash | ||
45 | |||
46 | # for Pocket import | ||
47 | bin/console wallabag:import:redis-worker pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log | ||
48 | |||
49 | # for Readability import | ||
50 | bin/console wallabag:import:redis-worker readability -vv >> /path/to/wallabag/var/logs/redis-readability.log | ||
51 | |||
52 | # for Instapaper import | ||
53 | bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log | ||
54 | |||
55 | # for wallabag v1 import | ||
56 | bin/console wallabag:import:redis-worker wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log | ||
57 | |||
58 | # for wallabag v2 import | ||
59 | bin/console wallabag:import:redis-worker wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log | ||
60 | |||
61 | # for Firefox import | ||
62 | bin/console wallabag:import:redis-worker firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log | ||
63 | |||
64 | # for Chrome import | ||
65 | bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log | ||
66 | |||
67 | If you want to launch the import only for some messages and not all, you can specify this number (here 12) and the worker will stop right after the 12th message : | ||
68 | |||
69 | .. code:: bash | ||
70 | |||
71 | bin/console wallabag:import:redis-worker pocket -vv --maxIterations=12 | ||
diff --git a/docs/en/index.rst b/docs/en/index.rst index 03025ef9..beb3816e 100644 --- a/docs/en/index.rst +++ b/docs/en/index.rst | |||
@@ -17,6 +17,11 @@ The main documentation for this application is organized into a couple sections: | |||
17 | * :ref:`user-docs` | 17 | * :ref:`user-docs` |
18 | * :ref:`dev-docs` | 18 | * :ref:`dev-docs` |
19 | 19 | ||
20 | The documentation is available in other languages: | ||
21 | |||
22 | * `Documentation en français <http://doc.wallabag.org/fr/master/>`_ | ||
23 | * `Deutsch Dokumentation <http://doc.wallabag.org/de/master/>`_ | ||
24 | |||
20 | .. _user-docs: | 25 | .. _user-docs: |
21 | 26 | ||
22 | .. toctree:: | 27 | .. toctree:: |
@@ -25,7 +30,8 @@ The main documentation for this application is organized into a couple sections: | |||
25 | 30 | ||
26 | user/faq | 31 | user/faq |
27 | user/installation | 32 | user/installation |
28 | user/upgrade | 33 | user/upgrade-2.0.x-2.1.y |
34 | user/upgrade-2.0.x-2.0.y | ||
29 | user/migration | 35 | user/migration |
30 | user/import | 36 | user/import |
31 | user/create_account | 37 | user/create_account |
@@ -35,6 +41,7 @@ The main documentation for this application is organized into a couple sections: | |||
35 | user/errors_during_fetching | 41 | user/errors_during_fetching |
36 | user/annotations | 42 | user/annotations |
37 | user/download_articles | 43 | user/download_articles |
44 | user/share | ||
38 | user/filters | 45 | user/filters |
39 | user/tags | 46 | user/tags |
40 | user/android | 47 | user/android |
@@ -50,3 +57,5 @@ The main documentation for this application is organized into a couple sections: | |||
50 | developer/documentation | 57 | developer/documentation |
51 | developer/translate | 58 | developer/translate |
52 | developer/maintenance | 59 | developer/maintenance |
60 | developer/redis | ||
61 | developer/rabbitmq | ||
diff --git a/docs/en/user/import.rst b/docs/en/user/import.rst index 63210484..758e3816 100644 --- a/docs/en/user/import.rst +++ b/docs/en/user/import.rst | |||
@@ -23,22 +23,43 @@ Now, all is fine to migrate from Pocket. | |||
23 | Import your data into wallabag 2.x | 23 | Import your data into wallabag 2.x |
24 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 24 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
25 | 25 | ||
26 | Click on ``Import`` link in the menu, on ``Import contents`` in Pocket section | 26 | Click on ``Import`` link in the menu, on ``Import contents`` in Pocket section |
27 | and then on ``Connect to Pocket and import data``. | 27 | and then on ``Connect to Pocket and import data``. |
28 | 28 | ||
29 | You need to authorize wallabag to interact with your Pocket account. | 29 | You need to authorize wallabag to interact with your Pocket account. |
30 | Your data will be imported. Data import can be a demanding process for your server | 30 | Your data will be imported. Data import can be a demanding process for your server. |
31 | (we need to work on this import to improve it). | 31 | |
32 | From Readability | ||
33 | ---------------- | ||
34 | |||
35 | Export your Readability data | ||
36 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
37 | |||
38 | On the tools (`https://www.readability.com/tools/<https://www.readability.com/tools/>`_) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact). | ||
39 | |||
40 | Import your data into wallabag 2.x | ||
41 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
42 | |||
43 | Click on ``Import`` link in the menu, on ``Import contents`` in Readability section | ||
44 | and then select your json file and upload it. | ||
45 | |||
46 | Your data will be imported. Data import can be a demanding process for your server. | ||
32 | 47 | ||
33 | From Instapaper | 48 | From Instapaper |
34 | --------------- | 49 | --------------- |
35 | 50 | ||
36 | *Feature not yet implemented in wallabag v2.* | 51 | Export your Instapaper data |
52 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
37 | 53 | ||
38 | From Readability | 54 | On the settings (`https://www.instapaper.com/user<https://www.instapaper.com/user>`_) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like ``instapaper-export.csv``). |
39 | ---------------- | ||
40 | 55 | ||
41 | *Feature not yet implemented in wallabag v2.* | 56 | Import your data into wallabag 2.x |
57 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
58 | |||
59 | Click on ``Import`` link in the menu, on ``Import contents`` in Instapaper section | ||
60 | and then select your CSV file and upload it. | ||
61 | |||
62 | Your data will be imported. Data import can be a demanding process for your server. | ||
42 | 63 | ||
43 | From HTML or JSON file | 64 | From HTML or JSON file |
44 | ---------------------- | 65 | ---------------------- |
diff --git a/docs/en/user/installation.rst b/docs/en/user/installation.rst index 763d7c66..8e9f71d4 100644 --- a/docs/en/user/installation.rst +++ b/docs/en/user/installation.rst | |||
@@ -37,7 +37,7 @@ Installation | |||
37 | On a dedicated web server (recommended way) | 37 | On a dedicated web server (recommended way) |
38 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 38 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
39 | 39 | ||
40 | wallabag uses a large number of libraries in order to function. These libraries must be installed with a tool called Composer. You need to install it if you have not already done so and be sure to use the 1.2 version (if you already have Composer, run a ``composer selfupdate``). | 40 | wallabag uses a large number of PHP libraries in order to function. These libraries must be installed with a tool called Composer. You need to install it if you have not already done so and be sure to use the 1.2 version (if you already have Composer, run a ``composer selfupdate``). |
41 | 41 | ||
42 | Install Composer: | 42 | Install Composer: |
43 | 43 | ||
@@ -45,7 +45,7 @@ Install Composer: | |||
45 | 45 | ||
46 | curl -s http://getcomposer.org/installer | php | 46 | curl -s http://getcomposer.org/installer | php |
47 | 47 | ||
48 | You can find specific instructions `here <https://getcomposer.org/doc/00-intro.md>`__: | 48 | You can find specific instructions `here <https://getcomposer.org/doc/00-intro.md>`__. |
49 | 49 | ||
50 | To install wallabag itself, you must run the following commands: | 50 | To install wallabag itself, you must run the following commands: |
51 | 51 | ||
@@ -53,9 +53,8 @@ To install wallabag itself, you must run the following commands: | |||
53 | 53 | ||
54 | git clone https://github.com/wallabag/wallabag.git | 54 | git clone https://github.com/wallabag/wallabag.git |
55 | cd wallabag | 55 | cd wallabag |
56 | git checkout 2.0.8 | 56 | git checkout 2.1.0 |
57 | SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist | 57 | ./install.sh |
58 | php bin/console wallabag:install --env=prod | ||
59 | 58 | ||
60 | To start PHP's build-in server and test if everything did install correctly, you can do: | 59 | To start PHP's build-in server and test if everything did install correctly, you can do: |
61 | 60 | ||
diff --git a/docs/en/user/migration.rst b/docs/en/user/migration.rst index e141ae40..42062796 100644 --- a/docs/en/user/migration.rst +++ b/docs/en/user/migration.rst | |||
@@ -24,20 +24,38 @@ After creating an user account on your new wallabag v2 instance, you must head o | |||
24 | :alt: Import from wallabag v1 | 24 | :alt: Import from wallabag v1 |
25 | :align: center | 25 | :align: center |
26 | 26 | ||
27 | From wallabag 2.x | ||
28 | ----------------- | ||
29 | |||
30 | From the previous wallabag instance on which you were before, go to `All articles`, then export these articles as json. | ||
31 | |||
32 | .. image:: ../../img/user/export_v2.png | ||
33 | :alt: Export depuis wallabag v2 | ||
34 | :align: center | ||
35 | |||
36 | From your new wallabag instance, create your user account and click on the link in the menu to proceed to import. Choose import from wallabag v2 and select your json file to upload it. | ||
37 | |||
38 | .. note:: | ||
39 | If you encounter issues during the export or the import, don't hesitate to `ask for support <https://www.wallabag.org/pages/support.html>`__. | ||
40 | |||
27 | Import via command-line interface (CLI) | 41 | Import via command-line interface (CLI) |
28 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 42 | --------------------------------------- |
29 | 43 | ||
30 | If you have a CLI access on your web server, you can execute this command to import your wallabag v1 export: | 44 | If you have a CLI access on your web server, you can execute this command to import your wallabag v1 export: |
31 | 45 | ||
32 | :: | 46 | :: |
33 | 47 | ||
34 | bin/console wallabag:import-v1 1 ~/Downloads/wallabag-export-1-2016-04-05.json --env=prod | 48 | bin/console wallabag:import 1 ~/Downloads/wallabag-export-1-2016-04-05.json --env=prod |
35 | 49 | ||
36 | Please replace values: | 50 | Please replace values: |
37 | 51 | ||
38 | * ``1`` is the user identifier in database (The ID of the first user created on wallabag is 1) | 52 | * ``1`` is the user identifier in database (The ID of the first user created on wallabag is 1) |
39 | * ``~/Downloads/wallabag-export-1-2016-04-05.json`` is the path of your wallabag v1 export | 53 | * ``~/Downloads/wallabag-export-1-2016-04-05.json`` is the path of your wallabag v1 export |
40 | 54 | ||
55 | If you want to mark all these entries as read, you can add the ``--markAsRead`` option. | ||
56 | |||
57 | To import a wallabag v2 file, you need to add the option ``--importer=v2``. | ||
58 | |||
41 | You'll have this in return: | 59 | You'll have this in return: |
42 | 60 | ||
43 | :: | 61 | :: |
@@ -46,17 +64,3 @@ You'll have this in return: | |||
46 | 403 imported | 64 | 403 imported |
47 | 0 already saved | 65 | 0 already saved |
48 | End : 05-04-2016 11:36:09 --- | 66 | End : 05-04-2016 11:36:09 --- |
49 | |||
50 | From wallabag 2.x | ||
51 | ----------------- | ||
52 | |||
53 | From the previous wallabag instance on which you were before, go to `All articles`, then export these articles as json. | ||
54 | |||
55 | .. image:: ../../img/user/export_v2.png | ||
56 | :alt: Export depuis wallabag v2 | ||
57 | :align: center | ||
58 | |||
59 | From your new wallabag instance, create your user account and click on the link in the menu to proceed to import. Choose import from wallabag v2 and select your json file to upload it. | ||
60 | |||
61 | .. note:: | ||
62 | If you encounter issues during the export or the import, don't hesitate to `ask for support <https://www.wallabag.org/pages/support.html>`__. | ||
diff --git a/docs/en/user/share.rst b/docs/en/user/share.rst new file mode 100644 index 00000000..e99e51ab --- /dev/null +++ b/docs/en/user/share.rst | |||
@@ -0,0 +1,17 @@ | |||
1 | Share articles | ||
2 | ============== | ||
3 | |||
4 | When you're reading an article, you can share it. Just click on the share button: | ||
5 | |||
6 | .. image:: ../../img/user/share.png | ||
7 | :alt: share article | ||
8 | :align: center | ||
9 | |||
10 | Now, you can share the article: | ||
11 | |||
12 | - with a public URL (you'll have a light view of the article) | ||
13 | - with a tweet | ||
14 | - into your Shaarli | ||
15 | - with a post in Diaspora* | ||
16 | - to Carrot | ||
17 | - with an email | ||
diff --git a/docs/en/user/upgrade.rst b/docs/en/user/upgrade-2.0.x-2.0.y.rst index 90ed6c70..6a0818b3 100644 --- a/docs/en/user/upgrade.rst +++ b/docs/en/user/upgrade-2.0.x-2.0.y.rst | |||
@@ -1,5 +1,5 @@ | |||
1 | Upgrade wallabag | 1 | Upgrade from 2.0.x to 2.0.y |
2 | ================ | 2 | =========================== |
3 | 3 | ||
4 | Upgrade on a dedicated web server | 4 | Upgrade on a dedicated web server |
5 | --------------------------------- | 5 | --------------------------------- |
@@ -25,7 +25,7 @@ Download the last release of wallabag: | |||
25 | 25 | ||
26 | wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package | 26 | wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package |
27 | 27 | ||
28 | (md5 hash of the package: ``4f84c725d1d6e3345eae0a406115e5ff``) | 28 | (md5 hash of the 2.0.8 package: ``4f84c725d1d6e3345eae0a406115e5ff``) |
29 | 29 | ||
30 | Extract the archive in your wallabag folder and replace ``app/config/parameters.yml`` with yours. | 30 | Extract the archive in your wallabag folder and replace ``app/config/parameters.yml`` with yours. |
31 | 31 | ||
diff --git a/docs/en/user/upgrade-2.0.x-2.1.y.rst b/docs/en/user/upgrade-2.0.x-2.1.y.rst new file mode 100644 index 00000000..5ae5eb43 --- /dev/null +++ b/docs/en/user/upgrade-2.0.x-2.1.y.rst | |||
@@ -0,0 +1,64 @@ | |||
1 | Upgrading from 2.0.x to 2.1.y | ||
2 | ============================= | ||
3 | |||
4 | .. warning:: | ||
5 | Before this migration, if you configured the Pocket import by adding your consumer key in Internal settings, please do a backup of it: you'll have to add it into the Config page after the upgrade. | ||
6 | |||
7 | Upgrade on a dedicated web server | ||
8 | --------------------------------- | ||
9 | |||
10 | The last release is published on https://www.wallabag.org/pages/download-wallabag.html. In order to upgrade your wallabag installation and get the last version, run the following commands in you wallabag folder (replace ``2.1.0`` by the last release number): | ||
11 | |||
12 | :: | ||
13 | |||
14 | git fetch origin | ||
15 | git fetch --tags | ||
16 | git checkout 2.1.0 | ||
17 | ASSETS=build ./install.sh | ||
18 | php bin/console doctrine:migrations:migrate --env=prod | ||
19 | php bin/console cache:clear --env=prod | ||
20 | |||
21 | Upgrade on a shared hosting | ||
22 | --------------------------- | ||
23 | |||
24 | Backup your ``app/config/parameters.yml`` file. | ||
25 | |||
26 | Download the last release of wallabag: | ||
27 | |||
28 | .. code-block:: bash | ||
29 | |||
30 | wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package | ||
31 | |||
32 | (md5 hash of the package: ``4f84c725d1d6e3345eae0a406115e5ff``) | ||
33 | |||
34 | Extract the archive in your wallabag folder and replace ``app/config/parameters.yml`` with yours. | ||
35 | |||
36 | Please note that we added new parameters in this version. You have to edit ``app/config/parameters.yml`` by adding these lines (replace with your configuration) : | ||
37 | |||
38 | .. code-block:: bash | ||
39 | |||
40 | # RabbitMQ processing | ||
41 | rabbitmq_host: localhost | ||
42 | rabbitmq_port: 5672 | ||
43 | rabbitmq_user: guest | ||
44 | rabbitmq_password: guest | ||
45 | |||
46 | # Redis processing | ||
47 | redis_host: localhost | ||
48 | redis_port: 6379 | ||
49 | |||
50 | If you use SQLite, you must also copy your ``data/`` folder inside the new installation. | ||
51 | |||
52 | Empty ``var/cache`` folder. | ||
53 | |||
54 | You must run some SQL queries to upgrade your database. We assume that the table prefix is ``wallabag_`` and the database server is a MySQL one: | ||
55 | |||
56 | .. code-block:: sql | ||
57 | |||
58 | ALTER TABLE `wallabag_entry` ADD `uuid` LONGTEXT DEFAULT NULL; | ||
59 | INSERT INTO `wallabag_craue_config_setting` (`name`, `value`, `section`) VALUES ('share_public', '1', 'entry'); | ||
60 | ALTER TABLE `wallabag_oauth2_clients` ADD name longtext COLLATE 'utf8_unicode_ci' DEFAULT NULL; | ||
61 | INSERT INTO `wallabag_craue_config_setting` (`name`, `value`, `section`) VALUES ('import_with_redis', '0', 'import'); | ||
62 | INSERT INTO `wallabag_craue_config_setting` (`name`, `value`, `section`) VALUES ('import_with_rabbitmq', '0', 'import'); | ||
63 | ALTER TABLE `wallabag_config` ADD `pocket_consumer_key` VARCHAR(255) DEFAULT NULL; | ||
64 | DELETE FROM `wallabag_craue_config_setting` WHERE `name` = 'pocket_consumer_key'; | ||
diff --git a/docs/fr/conf.py b/docs/fr/conf.py index f1fe3967..49a57e2d 100644 --- a/docs/fr/conf.py +++ b/docs/fr/conf.py | |||
@@ -12,7 +12,7 @@ source_suffix = '.rst' | |||
12 | master_doc = 'index' | 12 | master_doc = 'index' |
13 | project = u'wallabag-fr' | 13 | project = u'wallabag-fr' |
14 | copyright = u'2013-2016, Nicolas Lœuillet - MIT Licence' | 14 | copyright = u'2013-2016, Nicolas Lœuillet - MIT Licence' |
15 | version = '2.0.0' | 15 | version = '2.1.0' |
16 | release = version | 16 | release = version |
17 | exclude_patterns = ['_build'] | 17 | exclude_patterns = ['_build'] |
18 | pygments_style = 'sphinx' | 18 | pygments_style = 'sphinx' |
diff --git a/docs/fr/developer/rabbitmq.rst b/docs/fr/developer/rabbitmq.rst new file mode 100644 index 00000000..20182e6e --- /dev/null +++ b/docs/fr/developer/rabbitmq.rst | |||
@@ -0,0 +1,76 @@ | |||
1 | Installer RabbitMQ pour des tâches asynchrones | ||
2 | ============================================== | ||
3 | |||
4 | Pour lancer des tâches asynchrones (utile pour des imports importants par exemple), nous pouvons utiliser RabbitMQ. | ||
5 | |||
6 | Pré-requis | ||
7 | ---------- | ||
8 | |||
9 | Vous devez installer RabbitMQ sur votre serveur. | ||
10 | |||
11 | Installation | ||
12 | ~~~~~~~~~~~~ | ||
13 | |||
14 | .. code:: bash | ||
15 | |||
16 | wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc | ||
17 | apt-key add rabbitmq-signing-key-public.asc | ||
18 | apt-get update | ||
19 | apt-get install rabbitmq-server | ||
20 | |||
21 | Configuration et démarrage | ||
22 | ~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
23 | |||
24 | .. code:: bash | ||
25 | |||
26 | rabbitmq-plugins enable rabbitmq_management # (useful to have a web interface, available at http://localhost:15672/ (guest/guest) | ||
27 | rabbitmq-server -detached | ||
28 | |||
29 | Arrêter RabbitMQ | ||
30 | ~~~~~~~~~~~~~~~~ | ||
31 | |||
32 | .. code:: bash | ||
33 | |||
34 | rabbitmqctl stop | ||
35 | |||
36 | |||
37 | Configurer RabbitMQ dans wallabag | ||
38 | --------------------------------- | ||
39 | |||
40 | Modifiez votre fichier ``parameters.yml`` pour éditer la configuration RabbitMQ. Celle par défaut devrait convenir : | ||
41 | |||
42 | .. code:: yaml | ||
43 | |||
44 | rabbitmq_host: localhost | ||
45 | rabbitmq_port: 5672 | ||
46 | rabbitmq_user: guest | ||
47 | rabbitmq_password: guest | ||
48 | |||
49 | |||
50 | Démarrer les clients RabbitMQ | ||
51 | ----------------------------- | ||
52 | |||
53 | En fonction du service dont vous souhaitez importer vos données, vous devez activer un (ou plusieurs si vous souhaitez en supporter plusieurs) cron job : | ||
54 | |||
55 | .. code:: bash | ||
56 | |||
57 | # for Pocket import | ||
58 | bin/console rabbitmq:consumer import_pocket -w | ||
59 | |||
60 | # for Readability import | ||
61 | bin/console rabbitmq:consumer import_readability -w | ||
62 | |||
63 | # for Instapaper import | ||
64 | bin/console rabbitmq:consumer import_instapaper -w | ||
65 | |||
66 | # for wallabag v1 import | ||
67 | bin/console rabbitmq:consumer import_wallabag_v1 -w | ||
68 | |||
69 | # for wallabag v2 import | ||
70 | bin/console rabbitmq:consumer import_wallabag_v2 -w | ||
71 | |||
72 | # for Firefox import | ||
73 | bin/console rabbitmq:consumer import_firefox -w | ||
74 | |||
75 | # for Chrome import | ||
76 | bin/console rabbitmq:consumer import_chrome -w | ||
diff --git a/docs/fr/developer/redis.rst b/docs/fr/developer/redis.rst new file mode 100644 index 00000000..097e375d --- /dev/null +++ b/docs/fr/developer/redis.rst | |||
@@ -0,0 +1,71 @@ | |||
1 | Installer Redis pour des tâches asynchrones | ||
2 | =========================================== | ||
3 | |||
4 | Pour lancer des tâches asynchrones (utile pour des imports importants par exemple), nous pouvons utiliser Redis. | ||
5 | |||
6 | Pré-requis | ||
7 | ---------- | ||
8 | |||
9 | Vous devez installer Redis sur votre serveur. | ||
10 | |||
11 | Installation | ||
12 | ~~~~~~~~~~~~ | ||
13 | |||
14 | .. code:: bash | ||
15 | |||
16 | apt-get install redis-server | ||
17 | |||
18 | Démarrage | ||
19 | ~~~~~~~~~ | ||
20 | |||
21 | Le serveur devrait déjà être démarré après l'installation. Si ce n'est pas le cas, vous pouvez le démarrer ainsi : | ||
22 | |||
23 | .. code:: bash | ||
24 | |||
25 | redis-server | ||
26 | |||
27 | |||
28 | Configurer Redis dans wallabag | ||
29 | ------------------------------- | ||
30 | |||
31 | Modifiez votre fichier ``parameters.yml`` pour éditer la configuration Redis. Celle par défaut devrait convenir : | ||
32 | |||
33 | .. code:: yaml | ||
34 | |||
35 | redis_host: localhost | ||
36 | redis_port: 6379 | ||
37 | |||
38 | |||
39 | Démarrer les clients Redis | ||
40 | -------------------------- | ||
41 | |||
42 | En fonction du service dont vous souhaitez importer vos données, vous devez activer un (ou plusieurs si vous souhaitez en supporter plusieurs) cron job : | ||
43 | |||
44 | .. code:: bash | ||
45 | |||
46 | # for Pocket import | ||
47 | bin/console wallabag:import:redis-worker pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log | ||
48 | |||
49 | # for Readability import | ||
50 | bin/console wallabag:import:redis-worker readability -vv >> /path/to/wallabag/var/logs/redis-readability.log | ||
51 | |||
52 | # for Instapaper import | ||
53 | bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log | ||
54 | |||
55 | # for wallabag v1 import | ||
56 | bin/console wallabag:import:redis-worker wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log | ||
57 | |||
58 | # for wallabag v2 import | ||
59 | bin/console wallabag:import:redis-worker wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log | ||
60 | |||
61 | # for Firefox import | ||
62 | bin/console wallabag:import:redis-worker firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log | ||
63 | |||
64 | # for Chrome import | ||
65 | bin/console wallabag:import:redis-worker instapaper -vv >> /path/to/wallabag/var/logs/redis-chrome.log | ||
66 | |||
67 | Si vous souhaitez démarrer l'import pour quelques messages uniquement, vous pouvez spécifier cette valeur en paramètre (ici 12) et le client va s'arrêter après le 12ème message : | ||
68 | |||
69 | .. code:: bash | ||
70 | |||
71 | bin/console wallabag:import:redis-worker pocket -vv --maxIterations=12 | ||
diff --git a/docs/fr/index.rst b/docs/fr/index.rst index 1e72dae7..359b103c 100644 --- a/docs/fr/index.rst +++ b/docs/fr/index.rst | |||
@@ -18,6 +18,11 @@ La documentation principale de cette application est découpée en plusieurs sec | |||
18 | * :ref:`user-docs` | 18 | * :ref:`user-docs` |
19 | * :ref:`dev-docs` | 19 | * :ref:`dev-docs` |
20 | 20 | ||
21 | La documentation est disponible dans d'autres langues : | ||
22 | |||
23 | * `Documentation in english <http://doc.wallabag.org/en/master/>`_ | ||
24 | * `Deutsch Dokumentation <http://doc.wallabag.org/de/master/>`_ | ||
25 | |||
21 | .. _user-docs: | 26 | .. _user-docs: |
22 | 27 | ||
23 | .. toctree:: | 28 | .. toctree:: |
@@ -26,7 +31,8 @@ La documentation principale de cette application est découpée en plusieurs sec | |||
26 | 31 | ||
27 | user/faq | 32 | user/faq |
28 | user/installation | 33 | user/installation |
29 | user/upgrade | 34 | user/upgrade-2.0.x-2.1.y |
35 | user/upgrade-2.0.x-2.0.y | ||
30 | user/migration | 36 | user/migration |
31 | user/import | 37 | user/import |
32 | user/create_account | 38 | user/create_account |
@@ -36,6 +42,7 @@ La documentation principale de cette application est découpée en plusieurs sec | |||
36 | user/errors_during_fetching | 42 | user/errors_during_fetching |
37 | user/annotations | 43 | user/annotations |
38 | user/download_articles | 44 | user/download_articles |
45 | user/share | ||
39 | user/filters | 46 | user/filters |
40 | user/tags | 47 | user/tags |
41 | 48 | ||
@@ -50,3 +57,5 @@ La documentation principale de cette application est découpée en plusieurs sec | |||
50 | developer/documentation | 57 | developer/documentation |
51 | developer/translate | 58 | developer/translate |
52 | developer/maintenance | 59 | developer/maintenance |
60 | developer/redis | ||
61 | developer/rabbitmq | ||
diff --git a/docs/fr/user/import.rst b/docs/fr/user/import.rst index e6c2fa02..6f114dd6 100644 --- a/docs/fr/user/import.rst +++ b/docs/fr/user/import.rst | |||
@@ -28,17 +28,40 @@ la section Pocket puis sur ``Se connecter à Pocket et importer les données``. | |||
28 | 28 | ||
29 | Vous devez autoriser wallabag à se connecter à votre compte Pocket. | 29 | Vous devez autoriser wallabag à se connecter à votre compte Pocket. |
30 | Vos données vont être importées. L'import de données est une action qui peut être couteuse | 30 | Vos données vont être importées. L'import de données est une action qui peut être couteuse |
31 | pour votre serveur (nous devons encore travailler pour améliorer cet import). | 31 | pour votre serveur. |
32 | |||
33 | Depuis Readability | ||
34 | ------------------ | ||
35 | |||
36 | Exportez vos données de Readability | ||
37 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
38 | |||
39 | Sur la page des outils (`https://www.readability.com/tools/<https://www.readability.com/tools/>`_), cliquez sur "Export your data" dans la section "Data Export". Vous allez recevoir un email avec un lien pour télécharger le json. | ||
40 | |||
41 | Importez vos données dans wallabag 2.x | ||
42 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
43 | |||
44 | Cliquez sur le lien ``Importer`` dans le menu, sur ``Importer les contenus`` dans | ||
45 | la section Readability et ensuite sélectionnez votre fichier json pour l'uploader. | ||
46 | |||
47 | Vos données vont être importées. L'import de données est une action qui peut être couteuse pour votre serveur. | ||
32 | 48 | ||
33 | Depuis Instapaper | 49 | Depuis Instapaper |
34 | ----------------- | 50 | ----------------- |
35 | 51 | ||
36 | *Fonctionnalité pas encore implémentée dans wallabag v2.* | 52 | Exportez vos données de Instapaper |
53 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
37 | 54 | ||
38 | Depuis Readability | 55 | Sur la page des paramètres (`https://www.instapaper.com/user<https://www.instapaper.com/user>`_), cliquez sur "Download .CSV file" dans la section "Export". Un fichier CSV se téléchargera (``instapaper-export.csv``). |
39 | ------------------ | 56 | |
57 | Importez vos données dans wallabag 2.x | ||
58 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
59 | |||
60 | Cliquez sur le lien ``Importer`` dans le menu, sur ``Importer les contenus`` dans | ||
61 | la section Instapaper et ensuite sélectionnez votre fichier CSV pour l'uploader. | ||
62 | |||
63 | Vos données vont être importées. L'import de données est une action qui peut être couteuse pour votre serveur. | ||
40 | 64 | ||
41 | *Fonctionnalité pas encore implémentée dans wallabag v2.* | ||
42 | 65 | ||
43 | Depuis un fichier HTML ou JSON | 66 | Depuis un fichier HTML ou JSON |
44 | ------------------------------ | 67 | ------------------------------ |
diff --git a/docs/fr/user/installation.rst b/docs/fr/user/installation.rst index 480970c5..4fccd0d4 100644 --- a/docs/fr/user/installation.rst +++ b/docs/fr/user/installation.rst | |||
@@ -35,7 +35,7 @@ Installation | |||
35 | Sur un serveur dédié (méthode conseillée) | 35 | Sur un serveur dédié (méthode conseillée) |
36 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 36 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
37 | 37 | ||
38 | wallabag utilise un grand nombre de bibliothèques pour fonctionner. Ces bibliothèques doivent être installées à l'aide d'un outil nommé Composer. Vous devez l'installer si ce n'est déjà fait et vous assurer que vous utilisez bien la version 1.2 (si vous avez déjà Composer, faite un ``composer selfupdate``). | 38 | wallabag utilise un grand nombre de bibliothèques PHP pour fonctionner. Ces bibliothèques doivent être installées à l'aide d'un outil nommé Composer. Vous devez l'installer si ce n'est déjà fait et vous assurer que vous utilisez bien la version 1.2 (si vous avez déjà Composer, faite un ``composer selfupdate``). |
39 | 39 | ||
40 | Installation de Composer : | 40 | Installation de Composer : |
41 | 41 | ||
@@ -43,17 +43,16 @@ Installation de Composer : | |||
43 | 43 | ||
44 | curl -s http://getcomposer.org/installer | php | 44 | curl -s http://getcomposer.org/installer | php |
45 | 45 | ||
46 | Vous pouvez trouver des instructions spécifiques `ici (en anglais) <https://getcomposer.org/doc/00-intro.md>`__ : | 46 | Vous pouvez trouver des instructions spécifiques `ici (en anglais) <https://getcomposer.org/doc/00-intro.md>`__. |
47 | 47 | ||
48 | Pour installer wallabag, vous devez exécuter ces deux commandes : | 48 | Pour installer wallabag, vous devez exécuter ces commandes : |
49 | 49 | ||
50 | :: | 50 | :: |
51 | 51 | ||
52 | git clone https://github.com/wallabag/wallabag.git | 52 | git clone https://github.com/wallabag/wallabag.git |
53 | cd wallabag | 53 | cd wallabag |
54 | git checkout 2.0.8 | 54 | git checkout 2.1.0 |
55 | SYMFONY_ENV=prod composer install --no-dev -o --prefer-dist | 55 | ./install.sh |
56 | php bin/console wallabag:install --env=prod | ||
57 | 56 | ||
58 | Pour démarrer le serveur interne à php et vérifier que tout s'est installé correctement, vous pouvez exécuter : | 57 | Pour démarrer le serveur interne à php et vérifier que tout s'est installé correctement, vous pouvez exécuter : |
59 | 58 | ||
diff --git a/docs/fr/user/migration.rst b/docs/fr/user/migration.rst index 66024572..91f8bab2 100644 --- a/docs/fr/user/migration.rst +++ b/docs/fr/user/migration.rst | |||
@@ -24,20 +24,38 @@ Une fois que vous avez créé un compte utilisateur sur votre nouvelle instance | |||
24 | :alt: Import depuis wallabag v1 | 24 | :alt: Import depuis wallabag v1 |
25 | :align: center | 25 | :align: center |
26 | 26 | ||
27 | Import via via la ligne de commande (CLI) | 27 | Depuis wallabag 2.x |
28 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | 28 | ------------------- |
29 | |||
30 | Depuis l'instance sur laquelle vous étiez, rendez-vous dans la section `Tous les articles`, puis exportez ces articles au format json. | ||
31 | |||
32 | .. image:: ../../img/user/export_v2.png | ||
33 | :alt: Export depuis wallabag v2 | ||
34 | :align: center | ||
35 | |||
36 | Depuis votre nouvelle instance de wallabag, créez votre compte utilisateur puis cliquez sur le lien dans le menu pour accéder à l'import. Choisissez l'import depuis wallabag v2 puis sélectionnez votre fichier json pour l'uploader. | ||
37 | |||
38 | .. note:: | ||
39 | S'il vous arrive des problèmes durant l'export ou l'import, n'hésitez pas à `demander de l'aide <https://www.wallabag.org/pages/support.html>`__. | ||
40 | |||
41 | Import via la ligne de commande (CLI) | ||
42 | ------------------------------------- | ||
29 | 43 | ||
30 | Si vous avez accès à la ligne de commandes de votre serveur web, vous pouvez exécuter cette commande pour import votre fichier wallabag v1 : | 44 | Si vous avez accès à la ligne de commandes de votre serveur web, vous pouvez exécuter cette commande pour import votre fichier wallabag v1 : |
31 | 45 | ||
32 | :: | 46 | :: |
33 | 47 | ||
34 | bin/console wallabag:import-v1 1 ~/Downloads/wallabag-export-1-2016-04-05.json --env=prod | 48 | bin/console wallabag:import 1 ~/Downloads/wallabag-export-1-2016-04-05.json --env=prod |
35 | 49 | ||
36 | Remplacez les valeurs : | 50 | Remplacez les valeurs : |
37 | 51 | ||
38 | * ``1`` est l'identifiant de votre utilisateur en base (l'ID de votre premier utilisateur créé sur wallabag est 1) | 52 | * ``1`` est l'identifiant de votre utilisateur en base (l'ID de votre premier utilisateur créé sur wallabag est 1) |
39 | * ``~/Downloads/wallabag-export-1-2016-04-05.json`` est le chemin de votre export wallabag v1 | 53 | * ``~/Downloads/wallabag-export-1-2016-04-05.json`` est le chemin de votre export wallabag v1 |
40 | 54 | ||
55 | Si vous voulez marquer tous ces articles comme lus, vous pouvez ajouter l'option ``--markAsRead``. | ||
56 | |||
57 | Pour importer un fichier wallabag v2, vous devez ajouter l'option ``--importer=v2``. | ||
58 | |||
41 | Vous obtiendrez : | 59 | Vous obtiendrez : |
42 | 60 | ||
43 | :: | 61 | :: |
@@ -46,17 +64,3 @@ Vous obtiendrez : | |||
46 | 403 imported | 64 | 403 imported |
47 | 0 already saved | 65 | 0 already saved |
48 | End : 05-04-2016 11:36:09 --- | 66 | End : 05-04-2016 11:36:09 --- |
49 | |||
50 | Depuis wallabag 2.x | ||
51 | ------------------- | ||
52 | |||
53 | Depuis l'instance sur laquelle vous étiez, rendez-vous dans la section `Tous les articles`, puis exportez ces articles au format json. | ||
54 | |||
55 | .. image:: ../../img/user/export_v2.png | ||
56 | :alt: Export depuis wallabag v2 | ||
57 | :align: center | ||
58 | |||
59 | Depuis votre nouvelle instance de wallabag, créez votre compte utilisateur puis cliquez sur le lien dans le menu pour accéder à l'import. Choisissez l'import depuis wallabag v2 puis sélectionnez votre fichier json pour l'uploader. | ||
60 | |||
61 | .. note:: | ||
62 | S'il vous arrive des problèmes durant l'export ou l'import, n'hésitez pas à `demander de l'aide <https://www.wallabag.org/pages/support.html>`__. | ||
diff --git a/docs/fr/user/share.rst b/docs/fr/user/share.rst new file mode 100644 index 00000000..b5faa5ba --- /dev/null +++ b/docs/fr/user/share.rst | |||
@@ -0,0 +1,17 @@ | |||
1 | Partager des articles | ||
2 | ===================== | ||
3 | |||
4 | Quand vous lisez un article, vous pouvez le partager. Cliquez sur le bouton de partage : | ||
5 | |||
6 | .. image:: ../../img/user/share.png | ||
7 | :alt: partager un article | ||
8 | :align: center | ||
9 | |||
10 | Vous pouvez maintenant le partager : | ||
11 | |||
12 | - avec une URL publique (vous obtiendrez une vue allégée de l'article) | ||
13 | - avec un tweet | ||
14 | - dans votre Shaarli | ||
15 | - avec un message dans Diaspora* | ||
16 | - sur Carrot | ||
17 | - avec un email | ||
diff --git a/docs/fr/user/upgrade.rst b/docs/fr/user/upgrade-2.0.x-2.0.y.rst index 1ead2c94..d8dfac6e 100644 --- a/docs/fr/user/upgrade.rst +++ b/docs/fr/user/upgrade-2.0.x-2.0.y.rst | |||
@@ -1,5 +1,5 @@ | |||
1 | Mettre à jour wallabag | 1 | Mettre à jour de la 2.0.x à la 2.0.y |
2 | ====================== | 2 | ==================================== |
3 | 3 | ||
4 | Mise à jour sur un serveur dédié | 4 | Mise à jour sur un serveur dédié |
5 | -------------------------------- | 5 | -------------------------------- |
@@ -25,7 +25,7 @@ Téléchargez la dernière version de wallabag : | |||
25 | 25 | ||
26 | wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package | 26 | wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package |
27 | 27 | ||
28 | (hash md5 de l'archive : ``4f84c725d1d6e3345eae0a406115e5ff``) | 28 | (hash md5 de l'archive 2.0.8 : ``4f84c725d1d6e3345eae0a406115e5ff``) |
29 | 29 | ||
30 | Décompressez l'archive dans votre répertoire d'installation et remplacez le fichier ``app/config/parameters.yml`` avec le votre. | 30 | Décompressez l'archive dans votre répertoire d'installation et remplacez le fichier ``app/config/parameters.yml`` avec le votre. |
31 | 31 | ||
diff --git a/docs/fr/user/upgrade-2.0.x-2.1.y.rst b/docs/fr/user/upgrade-2.0.x-2.1.y.rst new file mode 100644 index 00000000..a4afe768 --- /dev/null +++ b/docs/fr/user/upgrade-2.0.x-2.1.y.rst | |||
@@ -0,0 +1,65 @@ | |||
1 | Mettre à jour de la 2.0.x à la 2.1.y | ||
2 | ==================================== | ||
3 | |||
4 | .. warning:: | ||
5 | Avant cette migration, si vous aviez configuré l'import depuis Pocket en ajoutant votre consumer key dans les paramètres internes, pensez à effectuer une sauvegarde de celle-ci : vous devrez l'ajouter dans la configuration de wallabag après la mise à jour. | ||
6 | |||
7 | Mise à jour sur un serveur dédié | ||
8 | -------------------------------- | ||
9 | |||
10 | La dernière version de wallabag est publiée à cette adresse : https://www.wallabag.org/pages/download-wallabag.html. Pour mettre à jour votre installation de wallabag, exécutez les commandes suivantes dans votre répertoire d'installation (remplacez ``2.1.0`` par le numéro de la dernière version) : | ||
11 | |||
12 | :: | ||
13 | |||
14 | git fetch origin | ||
15 | git fetch --tags | ||
16 | git checkout 2.1.0 | ||
17 | ASSETS=build ./install.sh | ||
18 | php bin/console doctrine:migrations:migrate --env=prod | ||
19 | php bin/console cache:clear --env=prod | ||
20 | |||
21 | Mise à jour sur un hébergement mutualisé | ||
22 | ---------------------------------------- | ||
23 | |||
24 | Effectuez une sauvegarde du fichier ``app/config/parameters.yml``. | ||
25 | |||
26 | Téléchargez la dernière version de wallabag : | ||
27 | |||
28 | .. code-block:: bash | ||
29 | |||
30 | wget http://wllbg.org/latest-v2-package && tar xvf latest-v2-package | ||
31 | |||
32 | (hash md5 de l'archive : ``4f84c725d1d6e3345eae0a406115e5ff``) | ||
33 | |||
34 | Décompressez l'archive dans votre répertoire d'installation et remplacez le fichier ``app/config/parameters.yml`` avec le votre. | ||
35 | |||
36 | Nous avons ajouté de nouveaux paramètres dans cette nouvelle version. Vous devez donc éditer le fichier ``app/config/parameters.yml`` en ajoutant ces lignes (et en remplaçant par votre configuration) : | ||
37 | |||
38 | .. code-block:: bash | ||
39 | |||
40 | # RabbitMQ processing | ||
41 | rabbitmq_host: localhost | ||
42 | rabbitmq_port: 5672 | ||
43 | rabbitmq_user: guest | ||
44 | rabbitmq_password: guest | ||
45 | |||
46 | # Redis processing | ||
47 | redis_host: localhost | ||
48 | redis_port: 6379 | ||
49 | |||
50 | Si vous utilisez SQLite, vous devez également conserver le contenu du répertoire ``data/``. | ||
51 | |||
52 | Videz le répertoire ``var/cache``. | ||
53 | |||
54 | Vous allez devoir également exécuter des requêtes SQL pour mettre à jour votre base de données. Nous partons du principe que le préfixe de vos tables est ``wallabag_`` et que le serveur SQL est un serveur MySQL : | ||
55 | |||
56 | .. code-block:: sql | ||
57 | |||
58 | ALTER TABLE `wallabag_entry` ADD `uuid` LONGTEXT DEFAULT NULL; | ||
59 | INSERT INTO `wallabag_craue_config_setting` (`name`, `value`, `section`) VALUES ('share_public', '1', 'entry'); | ||
60 | ALTER TABLE `wallabag_oauth2_clients` ADD name longtext COLLATE 'utf8_unicode_ci' DEFAULT NULL; | ||
61 | INSERT INTO `wallabag_craue_config_setting` (`name`, `value`, `section`) VALUES ('import_with_redis', '0', 'import'); | ||
62 | INSERT INTO `wallabag_craue_config_setting` (`name`, `value`, `section`) VALUES ('import_with_rabbitmq', '0', 'import'); | ||
63 | ALTER TABLE `wallabag_config` ADD `pocket_consumer_key` VARCHAR(255) DEFAULT NULL; | ||
64 | DELETE FROM `wallabag_craue_config_setting` WHERE `name` = 'pocket_consumer_key'; | ||
65 | |||
diff --git a/docs/img/user/share.png b/docs/img/user/share.png new file mode 100644 index 00000000..4cfe9edb --- /dev/null +++ b/docs/img/user/share.png | |||
Binary files differ | |||
diff --git a/install.sh b/install.sh new file mode 100755 index 00000000..a486e8a5 --- /dev/null +++ b/install.sh | |||
@@ -0,0 +1,18 @@ | |||
1 | #! /usr/bin/env bash | ||
2 | |||
3 | if [[ $ASSETS == 'build' ]]; then | ||
4 | echo "Installing PHP dependencies through Composer..." | ||
5 | composer install --no-interaction --no-progress --prefer-dist -o | ||
6 | |||
7 | chmod ugo+x vendor/mouf/nodejs-installer/bin/local/npm | ||
8 | echo "Downloading javascript librairies through npm..." | ||
9 | vendor/mouf/nodejs-installer/bin/local/npm install | ||
10 | |||
11 | echo "Downloading fonts librairies through bower..." | ||
12 | node_modules/bower/bin/bower install | ||
13 | |||
14 | echo "Concat, minify and installing assets..." | ||
15 | node_modules/grunt/bin/grunt | ||
16 | else | ||
17 | composer install --no-interaction --no-progress --prefer-dist -o | ||
18 | fi | ||
diff --git a/install_dev.sh b/install_dev.sh new file mode 100755 index 00000000..81f871da --- /dev/null +++ b/install_dev.sh | |||
@@ -0,0 +1,16 @@ | |||
1 | #! /usr/bin/env bash | ||
2 | |||
3 | echo "Installing PHP dependencies (including dev) through Composer..." | ||
4 | composer install | ||
5 | |||
6 | echo "Downloading javascript librairies through npm..." | ||
7 | npm install | ||
8 | |||
9 | echo "Downloading fonts librairies through bower..." | ||
10 | bower install | ||
11 | |||
12 | echo "Concat, minify and installing assets..." | ||
13 | grunt | ||
14 | |||
15 | echo "Installing wallabag..." | ||
16 | php bin/console wallabag:install | ||
diff --git a/package.json b/package.json new file mode 100644 index 00000000..39a10e9c --- /dev/null +++ b/package.json | |||
@@ -0,0 +1,89 @@ | |||
1 | { | ||
2 | "name": "wallabag", | ||
3 | "version": "2.1.0", | ||
4 | "description": "wallabag is a self hostable application for saving web pages", | ||
5 | "main": "index.js", | ||
6 | "private": true, | ||
7 | "directories": { | ||
8 | "doc": "docs" | ||
9 | }, | ||
10 | "dependencies": { | ||
11 | "annotator": "git://github.com/wallabag/annotator.git#0f076c7d371ed25eb0793346f46982d90f2c4c85", | ||
12 | "autoprefixer": "^6.3.6", | ||
13 | "bower": "^1.7.7", | ||
14 | "browserify": "^13.0.0", | ||
15 | "browserify-shim": "^3.8.12", | ||
16 | "cssnano": "^3.5.2", | ||
17 | "es6-promise": "^3.2.1", | ||
18 | "grunt": ">=0.4.0", | ||
19 | "grunt-browserify": "^5.0.0", | ||
20 | "grunt-cli": "^1.2.0", | ||
21 | "grunt-contrib-clean": "^1.0.0", | ||
22 | "grunt-contrib-concat": "^1.0.0", | ||
23 | "grunt-contrib-copy": "^1.0.0", | ||
24 | "grunt-contrib-symlink": "^1.0.0", | ||
25 | "grunt-contrib-uglify": "^1.0.0", | ||
26 | "grunt-postcss": "^0.8.0", | ||
27 | "hammerjs": "^2.0.6", | ||
28 | "jquery": "^2.2.1", | ||
29 | "jquery-ui": "^1.10.5", | ||
30 | "jquery.cookie": "^1.4.1", | ||
31 | "jquery.tinydot": "^0.2.1", | ||
32 | "load-grunt-tasks": "^3.4.1", | ||
33 | "materialize-css": "0.97.5", | ||
34 | "npm": "^3.8.3", | ||
35 | "pickadate": "^3.5.6", | ||
36 | "pixrem": "^3.0.0", | ||
37 | "postcss-cssnext": "^2.5.1", | ||
38 | "prismjs": "^1.4.1", | ||
39 | "through": "^2.3.8" | ||
40 | }, | ||
41 | "engines": { | ||
42 | "node": ">0.12" | ||
43 | }, | ||
44 | "browser": { | ||
45 | "jquery": "./node_modules/jquery/dist/jquery.js", | ||
46 | "jQuery": "./node_modules/jquery/dist/jquery.js", | ||
47 | "materialize": "./node_modules/materialize-css/bin/materialize.js" | ||
48 | }, | ||
49 | "browserify-shim": { | ||
50 | "jquery": "$", | ||
51 | "jQuery": "jQuery", | ||
52 | "materialize": "materialize" | ||
53 | }, | ||
54 | "browserify": { | ||
55 | "transform": [ | ||
56 | "browserify-shim" | ||
57 | ] | ||
58 | }, | ||
59 | "repository": { | ||
60 | "type": "git", | ||
61 | "url": "https://github.com/wallabag/wallabag" | ||
62 | }, | ||
63 | "contributors": [ | ||
64 | { | ||
65 | "name": "Nicolas Lœuillet", | ||
66 | "email": "nicolas@loeuillet.org", | ||
67 | "homepage": "http://www.cdetc.fr", | ||
68 | "role": "Developer" | ||
69 | }, | ||
70 | { | ||
71 | "name": "Thomas Citharel", | ||
72 | "homepage": "http://tcit.fr", | ||
73 | "role": "Developer" | ||
74 | }, | ||
75 | { | ||
76 | "name": "Jérémy Benoist", | ||
77 | "homepage": "http://www.j0k3r.net", | ||
78 | "role": "Developer" | ||
79 | } | ||
80 | ], | ||
81 | "license": "MIT", | ||
82 | "bugs": { | ||
83 | "url": "https://github.com/wallabag/wallabag/issues" | ||
84 | }, | ||
85 | "devDependencies": { | ||
86 | "eslint": "^2.11.1", | ||
87 | "eslint-config-airbnb": "^9.0.1" | ||
88 | } | ||
89 | } | ||
diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 38880908..3216b6ff 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist | |||
@@ -16,6 +16,7 @@ | |||
16 | <php> | 16 | <php> |
17 | <ini name="error_reporting" value="-1" /> | 17 | <ini name="error_reporting" value="-1" /> |
18 | <server name="KERNEL_DIR" value="app/" /> | 18 | <server name="KERNEL_DIR" value="app/" /> |
19 | <env name="SYMFONY_DEPRECATIONS_HELPER" value="weak" /> | ||
19 | </php> | 20 | </php> |
20 | 21 | ||
21 | <filter> | 22 | <filter> |
diff --git a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php index af24e498..dd17ef97 100644 --- a/src/Wallabag/ApiBundle/Controller/WallabagRestController.php +++ b/src/Wallabag/ApiBundle/Controller/WallabagRestController.php | |||
@@ -7,7 +7,7 @@ use Hateoas\Configuration\Route; | |||
7 | use Hateoas\Representation\Factory\PagerfantaFactory; | 7 | use Hateoas\Representation\Factory\PagerfantaFactory; |
8 | use Nelmio\ApiDocBundle\Annotation\ApiDoc; | 8 | use Nelmio\ApiDocBundle\Annotation\ApiDoc; |
9 | use Symfony\Component\HttpFoundation\Request; | 9 | use Symfony\Component\HttpFoundation\Request; |
10 | use Symfony\Component\HttpFoundation\Response; | 10 | use Symfony\Component\HttpFoundation\JsonResponse; |
11 | use Symfony\Component\Routing\Generator\UrlGeneratorInterface; | 11 | use Symfony\Component\Routing\Generator\UrlGeneratorInterface; |
12 | use Symfony\Component\Security\Core\Exception\AccessDeniedException; | 12 | use Symfony\Component\Security\Core\Exception\AccessDeniedException; |
13 | use Wallabag\CoreBundle\Entity\Entry; | 13 | use Wallabag\CoreBundle\Entity\Entry; |
@@ -34,10 +34,11 @@ class WallabagRestController extends FOSRestController | |||
34 | * {"name"="page", "dataType"="integer", "required"=false, "format"="default '1'", "description"="what page you want."}, | 34 | * {"name"="page", "dataType"="integer", "required"=false, "format"="default '1'", "description"="what page you want."}, |
35 | * {"name"="perPage", "dataType"="integer", "required"=false, "format"="default'30'", "description"="results per page."}, | 35 | * {"name"="perPage", "dataType"="integer", "required"=false, "format"="default'30'", "description"="results per page."}, |
36 | * {"name"="tags", "dataType"="string", "required"=false, "format"="api,rest", "description"="a list of tags url encoded. Will returns entries that matches ALL tags."}, | 36 | * {"name"="tags", "dataType"="string", "required"=false, "format"="api,rest", "description"="a list of tags url encoded. Will returns entries that matches ALL tags."}, |
37 | * {"name"="since", "dataType"="integer", "required"=false, "format"="default '0'", "description"="The timestamp since when you want entries updated."}, | ||
37 | * } | 38 | * } |
38 | * ) | 39 | * ) |
39 | * | 40 | * |
40 | * @return Response | 41 | * @return JsonResponse |
41 | */ | 42 | */ |
42 | public function getEntriesAction(Request $request) | 43 | public function getEntriesAction(Request $request) |
43 | { | 44 | { |
@@ -49,10 +50,12 @@ class WallabagRestController extends FOSRestController | |||
49 | $order = $request->query->get('order', 'desc'); | 50 | $order = $request->query->get('order', 'desc'); |
50 | $page = (int) $request->query->get('page', 1); | 51 | $page = (int) $request->query->get('page', 1); |
51 | $perPage = (int) $request->query->get('perPage', 30); | 52 | $perPage = (int) $request->query->get('perPage', 30); |
53 | $since = $request->query->get('since', 0); | ||
54 | $tags = $request->query->get('tags', ''); | ||
52 | 55 | ||
53 | $pager = $this->getDoctrine() | 56 | $pager = $this->getDoctrine() |
54 | ->getRepository('WallabagCoreBundle:Entry') | 57 | ->getRepository('WallabagCoreBundle:Entry') |
55 | ->findEntries($this->getUser()->getId(), $isArchived, $isStarred, $sort, $order); | 58 | ->findEntries($this->getUser()->getId(), $isArchived, $isStarred, $sort, $order, $since, $tags); |
56 | 59 | ||
57 | $pager->setCurrentPage($page); | 60 | $pager->setCurrentPage($page); |
58 | $pager->setMaxPerPage($perPage); | 61 | $pager->setMaxPerPage($perPage); |
@@ -65,7 +68,7 @@ class WallabagRestController extends FOSRestController | |||
65 | 68 | ||
66 | $json = $this->get('serializer')->serialize($paginatedCollection, 'json'); | 69 | $json = $this->get('serializer')->serialize($paginatedCollection, 'json'); |
67 | 70 | ||
68 | return $this->renderJsonResponse($json); | 71 | return (new JsonResponse())->setJson($json); |
69 | } | 72 | } |
70 | 73 | ||
71 | /** | 74 | /** |
@@ -77,7 +80,7 @@ class WallabagRestController extends FOSRestController | |||
77 | * } | 80 | * } |
78 | * ) | 81 | * ) |
79 | * | 82 | * |
80 | * @return Response | 83 | * @return JsonResponse |
81 | */ | 84 | */ |
82 | public function getEntryAction(Entry $entry) | 85 | public function getEntryAction(Entry $entry) |
83 | { | 86 | { |
@@ -86,7 +89,7 @@ class WallabagRestController extends FOSRestController | |||
86 | 89 | ||
87 | $json = $this->get('serializer')->serialize($entry, 'json'); | 90 | $json = $this->get('serializer')->serialize($entry, 'json'); |
88 | 91 | ||
89 | return $this->renderJsonResponse($json); | 92 | return (new JsonResponse())->setJson($json); |
90 | } | 93 | } |
91 | 94 | ||
92 | /** | 95 | /** |
@@ -102,7 +105,7 @@ class WallabagRestController extends FOSRestController | |||
102 | * } | 105 | * } |
103 | * ) | 106 | * ) |
104 | * | 107 | * |
105 | * @return Response | 108 | * @return JsonResponse |
106 | */ | 109 | */ |
107 | public function postEntriesAction(Request $request) | 110 | public function postEntriesAction(Request $request) |
108 | { | 111 | { |
@@ -146,7 +149,7 @@ class WallabagRestController extends FOSRestController | |||
146 | 149 | ||
147 | $json = $this->get('serializer')->serialize($entry, 'json'); | 150 | $json = $this->get('serializer')->serialize($entry, 'json'); |
148 | 151 | ||
149 | return $this->renderJsonResponse($json); | 152 | return (new JsonResponse())->setJson($json); |
150 | } | 153 | } |
151 | 154 | ||
152 | /** | 155 | /** |
@@ -164,7 +167,7 @@ class WallabagRestController extends FOSRestController | |||
164 | * } | 167 | * } |
165 | * ) | 168 | * ) |
166 | * | 169 | * |
167 | * @return Response | 170 | * @return JsonResponse |
168 | */ | 171 | */ |
169 | public function patchEntriesAction(Entry $entry, Request $request) | 172 | public function patchEntriesAction(Entry $entry, Request $request) |
170 | { | 173 | { |
@@ -197,7 +200,7 @@ class WallabagRestController extends FOSRestController | |||
197 | 200 | ||
198 | $json = $this->get('serializer')->serialize($entry, 'json'); | 201 | $json = $this->get('serializer')->serialize($entry, 'json'); |
199 | 202 | ||
200 | return $this->renderJsonResponse($json); | 203 | return (new JsonResponse())->setJson($json); |
201 | } | 204 | } |
202 | 205 | ||
203 | /** | 206 | /** |
@@ -209,7 +212,7 @@ class WallabagRestController extends FOSRestController | |||
209 | * } | 212 | * } |
210 | * ) | 213 | * ) |
211 | * | 214 | * |
212 | * @return Response | 215 | * @return JsonResponse |
213 | */ | 216 | */ |
214 | public function deleteEntriesAction(Entry $entry) | 217 | public function deleteEntriesAction(Entry $entry) |
215 | { | 218 | { |
@@ -222,7 +225,7 @@ class WallabagRestController extends FOSRestController | |||
222 | 225 | ||
223 | $json = $this->get('serializer')->serialize($entry, 'json'); | 226 | $json = $this->get('serializer')->serialize($entry, 'json'); |
224 | 227 | ||
225 | return $this->renderJsonResponse($json); | 228 | return (new JsonResponse())->setJson($json); |
226 | } | 229 | } |
227 | 230 | ||
228 | /** | 231 | /** |
@@ -234,7 +237,7 @@ class WallabagRestController extends FOSRestController | |||
234 | * } | 237 | * } |
235 | * ) | 238 | * ) |
236 | * | 239 | * |
237 | * @return Response | 240 | * @return JsonResponse |
238 | */ | 241 | */ |
239 | public function getEntriesTagsAction(Entry $entry) | 242 | public function getEntriesTagsAction(Entry $entry) |
240 | { | 243 | { |
@@ -243,7 +246,7 @@ class WallabagRestController extends FOSRestController | |||
243 | 246 | ||
244 | $json = $this->get('serializer')->serialize($entry->getTags(), 'json'); | 247 | $json = $this->get('serializer')->serialize($entry->getTags(), 'json'); |
245 | 248 | ||
246 | return $this->renderJsonResponse($json); | 249 | return (new JsonResponse())->setJson($json); |
247 | } | 250 | } |
248 | 251 | ||
249 | /** | 252 | /** |
@@ -258,7 +261,7 @@ class WallabagRestController extends FOSRestController | |||
258 | * } | 261 | * } |
259 | * ) | 262 | * ) |
260 | * | 263 | * |
261 | * @return Response | 264 | * @return JsonResponse |
262 | */ | 265 | */ |
263 | public function postEntriesTagsAction(Request $request, Entry $entry) | 266 | public function postEntriesTagsAction(Request $request, Entry $entry) |
264 | { | 267 | { |
@@ -276,7 +279,7 @@ class WallabagRestController extends FOSRestController | |||
276 | 279 | ||
277 | $json = $this->get('serializer')->serialize($entry, 'json'); | 280 | $json = $this->get('serializer')->serialize($entry, 'json'); |
278 | 281 | ||
279 | return $this->renderJsonResponse($json); | 282 | return (new JsonResponse())->setJson($json); |
280 | } | 283 | } |
281 | 284 | ||
282 | /** | 285 | /** |
@@ -289,7 +292,7 @@ class WallabagRestController extends FOSRestController | |||
289 | * } | 292 | * } |
290 | * ) | 293 | * ) |
291 | * | 294 | * |
292 | * @return Response | 295 | * @return JsonResponse |
293 | */ | 296 | */ |
294 | public function deleteEntriesTagsAction(Entry $entry, Tag $tag) | 297 | public function deleteEntriesTagsAction(Entry $entry, Tag $tag) |
295 | { | 298 | { |
@@ -303,7 +306,7 @@ class WallabagRestController extends FOSRestController | |||
303 | 306 | ||
304 | $json = $this->get('serializer')->serialize($entry, 'json'); | 307 | $json = $this->get('serializer')->serialize($entry, 'json'); |
305 | 308 | ||
306 | return $this->renderJsonResponse($json); | 309 | return (new JsonResponse())->setJson($json); |
307 | } | 310 | } |
308 | 311 | ||
309 | /** | 312 | /** |
@@ -311,7 +314,7 @@ class WallabagRestController extends FOSRestController | |||
311 | * | 314 | * |
312 | * @ApiDoc() | 315 | * @ApiDoc() |
313 | * | 316 | * |
314 | * @return Response | 317 | * @return JsonResponse |
315 | */ | 318 | */ |
316 | public function getTagsAction() | 319 | public function getTagsAction() |
317 | { | 320 | { |
@@ -319,11 +322,82 @@ class WallabagRestController extends FOSRestController | |||
319 | 322 | ||
320 | $tags = $this->getDoctrine() | 323 | $tags = $this->getDoctrine() |
321 | ->getRepository('WallabagCoreBundle:Tag') | 324 | ->getRepository('WallabagCoreBundle:Tag') |
322 | ->findAllTags($this->getUser()->getId()); | 325 | ->findAllTagsWithEntries($this->getUser()->getId()); |
323 | 326 | ||
324 | $json = $this->get('serializer')->serialize($tags, 'json'); | 327 | $json = $this->get('serializer')->serialize($tags, 'json'); |
325 | 328 | ||
326 | return $this->renderJsonResponse($json); | 329 | return (new JsonResponse())->setJson($json); |
330 | } | ||
331 | |||
332 | /** | ||
333 | * Permanently remove one tag from **every** entry. | ||
334 | * | ||
335 | * @ApiDoc( | ||
336 | * requirements={ | ||
337 | * {"name"="tag", "dataType"="string", "required"=true, "requirement"="\w+", "description"="Tag as a string"} | ||
338 | * } | ||
339 | * ) | ||
340 | * | ||
341 | * @return JsonResponse | ||
342 | */ | ||
343 | public function deleteTagLabelAction(Request $request) | ||
344 | { | ||
345 | $this->validateAuthentication(); | ||
346 | $label = $request->request->get('tag', ''); | ||
347 | |||
348 | $tag = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findOneByLabel($label); | ||
349 | |||
350 | if (empty($tag)) { | ||
351 | throw $this->createNotFoundException('Tag not found'); | ||
352 | } | ||
353 | |||
354 | $this->getDoctrine() | ||
355 | ->getRepository('WallabagCoreBundle:Entry') | ||
356 | ->removeTag($this->getUser()->getId(), $tag); | ||
357 | |||
358 | $json = $this->get('serializer')->serialize($tag, 'json'); | ||
359 | |||
360 | return (new JsonResponse())->setJson($json); | ||
361 | } | ||
362 | |||
363 | /** | ||
364 | * Permanently remove some tags from **every** entry. | ||
365 | * | ||
366 | * @ApiDoc( | ||
367 | * requirements={ | ||
368 | * {"name"="tags", "dataType"="string", "required"=true, "format"="tag1,tag2", "description"="Tags as strings (comma splitted)"} | ||
369 | * } | ||
370 | * ) | ||
371 | * | ||
372 | * @return JsonResponse | ||
373 | */ | ||
374 | public function deleteTagsLabelAction(Request $request) | ||
375 | { | ||
376 | $this->validateAuthentication(); | ||
377 | |||
378 | $tagsLabels = $request->request->get('tags', ''); | ||
379 | |||
380 | $tags = []; | ||
381 | |||
382 | foreach (explode(',', $tagsLabels) as $tagLabel) { | ||
383 | $tagEntity = $this->getDoctrine()->getRepository('WallabagCoreBundle:Tag')->findOneByLabel($tagLabel); | ||
384 | |||
385 | if (!empty($tagEntity)) { | ||
386 | $tags[] = $tagEntity; | ||
387 | } | ||
388 | } | ||
389 | |||
390 | if (empty($tags)) { | ||
391 | throw $this->createNotFoundException('Tags not found'); | ||
392 | } | ||
393 | |||
394 | $this->getDoctrine() | ||
395 | ->getRepository('WallabagCoreBundle:Entry') | ||
396 | ->removeTags($this->getUser()->getId(), $tags); | ||
397 | |||
398 | $json = $this->get('serializer')->serialize($tags, 'json'); | ||
399 | |||
400 | return (new JsonResponse())->setJson($json); | ||
327 | } | 401 | } |
328 | 402 | ||
329 | /** | 403 | /** |
@@ -335,7 +409,7 @@ class WallabagRestController extends FOSRestController | |||
335 | * } | 409 | * } |
336 | * ) | 410 | * ) |
337 | * | 411 | * |
338 | * @return Response | 412 | * @return JsonResponse |
339 | */ | 413 | */ |
340 | public function deleteTagAction(Tag $tag) | 414 | public function deleteTagAction(Tag $tag) |
341 | { | 415 | { |
@@ -347,14 +421,15 @@ class WallabagRestController extends FOSRestController | |||
347 | 421 | ||
348 | $json = $this->get('serializer')->serialize($tag, 'json'); | 422 | $json = $this->get('serializer')->serialize($tag, 'json'); |
349 | 423 | ||
350 | return $this->renderJsonResponse($json); | 424 | return (new JsonResponse())->setJson($json); |
351 | } | 425 | } |
426 | |||
352 | /** | 427 | /** |
353 | * Retrieve version number. | 428 | * Retrieve version number. |
354 | * | 429 | * |
355 | * @ApiDoc() | 430 | * @ApiDoc() |
356 | * | 431 | * |
357 | * @return Response | 432 | * @return JsonResponse |
358 | */ | 433 | */ |
359 | public function getVersionAction() | 434 | public function getVersionAction() |
360 | { | 435 | { |
@@ -362,7 +437,7 @@ class WallabagRestController extends FOSRestController | |||
362 | 437 | ||
363 | $json = $this->get('serializer')->serialize($version, 'json'); | 438 | $json = $this->get('serializer')->serialize($version, 'json'); |
364 | 439 | ||
365 | return $this->renderJsonResponse($json); | 440 | return (new JsonResponse())->setJson($json); |
366 | } | 441 | } |
367 | 442 | ||
368 | /** | 443 | /** |
@@ -378,17 +453,4 @@ class WallabagRestController extends FOSRestController | |||
378 | throw $this->createAccessDeniedException('Access forbidden. Entry user id: '.$requestUserId.', logged user id: '.$user->getId()); | 453 | throw $this->createAccessDeniedException('Access forbidden. Entry user id: '.$requestUserId.', logged user id: '.$user->getId()); |
379 | } | 454 | } |
380 | } | 455 | } |
381 | |||
382 | /** | ||
383 | * Send a JSON Response. | ||
384 | * We don't use the Symfony JsonRespone, because it takes an array as parameter instead of a JSON string. | ||
385 | * | ||
386 | * @param string $json | ||
387 | * | ||
388 | * @return Response | ||
389 | */ | ||
390 | private function renderJsonResponse($json) | ||
391 | { | ||
392 | return new Response($json, 200, ['application/json']); | ||
393 | } | ||
394 | } | 456 | } |
diff --git a/src/Wallabag/ApiBundle/Entity/Client.php b/src/Wallabag/ApiBundle/Entity/Client.php index c04ed0f6..3e2f491c 100644 --- a/src/Wallabag/ApiBundle/Entity/Client.php +++ b/src/Wallabag/ApiBundle/Entity/Client.php | |||
@@ -18,8 +18,39 @@ class Client extends BaseClient | |||
18 | */ | 18 | */ |
19 | protected $id; | 19 | protected $id; |
20 | 20 | ||
21 | /** | ||
22 | * @var string | ||
23 | * | ||
24 | * @ORM\Column(name="name", type="text", nullable=true) | ||
25 | */ | ||
26 | protected $name; | ||
27 | |||
21 | public function __construct() | 28 | public function __construct() |
22 | { | 29 | { |
23 | parent::__construct(); | 30 | parent::__construct(); |
24 | } | 31 | } |
32 | |||
33 | /** | ||
34 | * Get name. | ||
35 | * | ||
36 | * @return string | ||
37 | */ | ||
38 | public function getName() | ||
39 | { | ||
40 | return $this->name; | ||
41 | } | ||
42 | |||
43 | /** | ||
44 | * Set name. | ||
45 | * | ||
46 | * @param string $name | ||
47 | * | ||
48 | * @return Client | ||
49 | */ | ||
50 | public function setName($name) | ||
51 | { | ||
52 | $this->name = $name; | ||
53 | |||
54 | return $this; | ||
55 | } | ||
25 | } | 56 | } |
diff --git a/src/Wallabag/CoreBundle/Command/InstallCommand.php b/src/Wallabag/CoreBundle/Command/InstallCommand.php index 035eb865..3873d2d3 100644 --- a/src/Wallabag/CoreBundle/Command/InstallCommand.php +++ b/src/Wallabag/CoreBundle/Command/InstallCommand.php | |||
@@ -61,7 +61,6 @@ class InstallCommand extends ContainerAwareCommand | |||
61 | ->setupDatabase() | 61 | ->setupDatabase() |
62 | ->setupAdmin() | 62 | ->setupAdmin() |
63 | ->setupConfig() | 63 | ->setupConfig() |
64 | ->setupAsset() | ||
65 | ; | 64 | ; |
66 | 65 | ||
67 | $output->writeln('<info>Wallabag has been successfully installed.</info>'); | 66 | $output->writeln('<info>Wallabag has been successfully installed.</info>'); |
@@ -70,7 +69,7 @@ class InstallCommand extends ContainerAwareCommand | |||
70 | 69 | ||
71 | protected function checkRequirements() | 70 | protected function checkRequirements() |
72 | { | 71 | { |
73 | $this->defaultOutput->writeln('<info><comment>Step 1 of 5.</comment> Checking system requirements.</info>'); | 72 | $this->defaultOutput->writeln('<info><comment>Step 1 of 4.</comment> Checking system requirements.</info>'); |
74 | 73 | ||
75 | $rows = []; | 74 | $rows = []; |
76 | 75 | ||
@@ -138,7 +137,7 @@ class InstallCommand extends ContainerAwareCommand | |||
138 | 137 | ||
139 | protected function setupDatabase() | 138 | protected function setupDatabase() |
140 | { | 139 | { |
141 | $this->defaultOutput->writeln('<info><comment>Step 2 of 5.</comment> Setting up database.</info>'); | 140 | $this->defaultOutput->writeln('<info><comment>Step 2 of 4.</comment> Setting up database.</info>'); |
142 | 141 | ||
143 | // user want to reset everything? Don't care about what is already here | 142 | // user want to reset everything? Don't care about what is already here |
144 | if (true === $this->defaultInput->getOption('reset')) { | 143 | if (true === $this->defaultInput->getOption('reset')) { |
@@ -209,7 +208,7 @@ class InstallCommand extends ContainerAwareCommand | |||
209 | 208 | ||
210 | protected function setupAdmin() | 209 | protected function setupAdmin() |
211 | { | 210 | { |
212 | $this->defaultOutput->writeln('<info><comment>Step 3 of 5.</comment> Administration setup.</info>'); | 211 | $this->defaultOutput->writeln('<info><comment>Step 3 of 4.</comment> Administration setup.</info>'); |
213 | 212 | ||
214 | $questionHelper = $this->getHelperSet()->get('question'); | 213 | $questionHelper = $this->getHelperSet()->get('question'); |
215 | $question = new ConfirmationQuestion('Would you like to create a new admin user (recommended) ? (Y/n)', true); | 214 | $question = new ConfirmationQuestion('Would you like to create a new admin user (recommended) ? (Y/n)', true); |
@@ -253,7 +252,7 @@ class InstallCommand extends ContainerAwareCommand | |||
253 | 252 | ||
254 | protected function setupConfig() | 253 | protected function setupConfig() |
255 | { | 254 | { |
256 | $this->defaultOutput->writeln('<info><comment>Step 4 of 5.</comment> Config setup.</info>'); | 255 | $this->defaultOutput->writeln('<info><comment>Step 4 of 4.</comment> Config setup.</info>'); |
257 | $em = $this->getContainer()->get('doctrine.orm.entity_manager'); | 256 | $em = $this->getContainer()->get('doctrine.orm.entity_manager'); |
258 | 257 | ||
259 | // cleanup before insert new stuff | 258 | // cleanup before insert new stuff |
@@ -261,6 +260,11 @@ class InstallCommand extends ContainerAwareCommand | |||
261 | 260 | ||
262 | $settings = [ | 261 | $settings = [ |
263 | [ | 262 | [ |
263 | 'name' => 'share_public', | ||
264 | 'value' => '1', | ||
265 | 'section' => 'entry', | ||
266 | ], | ||
267 | [ | ||
264 | 'name' => 'carrot', | 268 | 'name' => 'carrot', |
265 | 'value' => '1', | 269 | 'value' => '1', |
266 | 'section' => 'entry', | 270 | 'section' => 'entry', |
@@ -331,8 +335,13 @@ class InstallCommand extends ContainerAwareCommand | |||
331 | 'section' => 'export', | 335 | 'section' => 'export', |
332 | ], | 336 | ], |
333 | [ | 337 | [ |
334 | 'name' => 'pocket_consumer_key', | 338 | 'name' => 'import_with_redis', |
335 | 'value' => null, | 339 | 'value' => '0', |
340 | 'section' => 'import', | ||
341 | ], | ||
342 | [ | ||
343 | 'name' => 'import_with_rabbitmq', | ||
344 | 'value' => '0', | ||
336 | 'section' => 'import', | 345 | 'section' => 'import', |
337 | ], | 346 | ], |
338 | [ | 347 | [ |
@@ -392,20 +401,6 @@ class InstallCommand extends ContainerAwareCommand | |||
392 | return $this; | 401 | return $this; |
393 | } | 402 | } |
394 | 403 | ||
395 | protected function setupAsset() | ||
396 | { | ||
397 | $this->defaultOutput->writeln('<info><comment>Step 5 of 5.</comment> Installing assets.</info>'); | ||
398 | |||
399 | $this | ||
400 | ->runCommand('assets:install') | ||
401 | ->runCommand('assetic:dump') | ||
402 | ; | ||
403 | |||
404 | $this->defaultOutput->writeln(''); | ||
405 | |||
406 | return $this; | ||
407 | } | ||
408 | |||
409 | /** | 404 | /** |
410 | * Run a command. | 405 | * Run a command. |
411 | * | 406 | * |
diff --git a/src/Wallabag/CoreBundle/Controller/DeveloperController.php b/src/Wallabag/CoreBundle/Controller/DeveloperController.php index d85ba5ee..f3492b74 100644 --- a/src/Wallabag/CoreBundle/Controller/DeveloperController.php +++ b/src/Wallabag/CoreBundle/Controller/DeveloperController.php | |||
@@ -21,7 +21,7 @@ class DeveloperController extends Controller | |||
21 | { | 21 | { |
22 | $clients = $this->getDoctrine()->getRepository('WallabagApiBundle:Client')->findAll(); | 22 | $clients = $this->getDoctrine()->getRepository('WallabagApiBundle:Client')->findAll(); |
23 | 23 | ||
24 | return $this->render('WallabagCoreBundle:Developer:index.html.twig', [ | 24 | return $this->render('@WallabagCore/themes/common/Developer/index.html.twig', [ |
25 | 'clients' => $clients, | 25 | 'clients' => $clients, |
26 | ]); | 26 | ]); |
27 | } | 27 | } |
@@ -49,16 +49,17 @@ class DeveloperController extends Controller | |||
49 | 49 | ||
50 | $this->get('session')->getFlashBag()->add( | 50 | $this->get('session')->getFlashBag()->add( |
51 | 'notice', | 51 | 'notice', |
52 | 'flashes.developer.notice.client_created' | 52 | $this->get('translator')->trans('flashes.developer.notice.client_created', ['%name%' => $client->getName()]) |
53 | ); | 53 | ); |
54 | 54 | ||
55 | return $this->render('WallabagCoreBundle:Developer:client_parameters.html.twig', [ | 55 | return $this->render('@WallabagCore/themes/common/Developer/client_parameters.html.twig', [ |
56 | 'client_id' => $client->getPublicId(), | 56 | 'client_id' => $client->getPublicId(), |
57 | 'client_secret' => $client->getSecret(), | 57 | 'client_secret' => $client->getSecret(), |
58 | 'client_name' => $client->getName(), | ||
58 | ]); | 59 | ]); |
59 | } | 60 | } |
60 | 61 | ||
61 | return $this->render('WallabagCoreBundle:Developer:client.html.twig', [ | 62 | return $this->render('@WallabagCore/themes/common/Developer/client.html.twig', [ |
62 | 'form' => $clientForm->createView(), | 63 | 'form' => $clientForm->createView(), |
63 | ]); | 64 | ]); |
64 | } | 65 | } |
@@ -80,7 +81,7 @@ class DeveloperController extends Controller | |||
80 | 81 | ||
81 | $this->get('session')->getFlashBag()->add( | 82 | $this->get('session')->getFlashBag()->add( |
82 | 'notice', | 83 | 'notice', |
83 | 'flashes.developer.notice.client_deleted' | 84 | $this->get('translator')->trans('flashes.developer.notice.client_deleted', ['%name%' => $client->getName()]) |
84 | ); | 85 | ); |
85 | 86 | ||
86 | return $this->redirect($this->generateUrl('developer')); | 87 | return $this->redirect($this->generateUrl('developer')); |
@@ -95,6 +96,6 @@ class DeveloperController extends Controller | |||
95 | */ | 96 | */ |
96 | public function howtoFirstAppAction() | 97 | public function howtoFirstAppAction() |
97 | { | 98 | { |
98 | return $this->render('WallabagCoreBundle:Developer:howto_app.html.twig'); | 99 | return $this->render('@WallabagCore/themes/common/Developer/howto_app.html.twig'); |
99 | } | 100 | } |
100 | } | 101 | } |
diff --git a/src/Wallabag/CoreBundle/Controller/EntryController.php b/src/Wallabag/CoreBundle/Controller/EntryController.php index ccdf9406..3b28e635 100644 --- a/src/Wallabag/CoreBundle/Controller/EntryController.php +++ b/src/Wallabag/CoreBundle/Controller/EntryController.php | |||
@@ -4,7 +4,6 @@ namespace Wallabag\CoreBundle\Controller; | |||
4 | 4 | ||
5 | use Pagerfanta\Adapter\DoctrineORMAdapter; | 5 | use Pagerfanta\Adapter\DoctrineORMAdapter; |
6 | use Pagerfanta\Exception\OutOfRangeCurrentPageException; | 6 | use Pagerfanta\Exception\OutOfRangeCurrentPageException; |
7 | use Pagerfanta\Pagerfanta; | ||
8 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | 7 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; |
9 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; | 8 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; |
10 | use Symfony\Component\HttpFoundation\Request; | 9 | use Symfony\Component\HttpFoundation\Request; |
@@ -13,30 +12,40 @@ use Wallabag\CoreBundle\Entity\Entry; | |||
13 | use Wallabag\CoreBundle\Form\Type\EntryFilterType; | 12 | use Wallabag\CoreBundle\Form\Type\EntryFilterType; |
14 | use Wallabag\CoreBundle\Form\Type\EditEntryType; | 13 | use Wallabag\CoreBundle\Form\Type\EditEntryType; |
15 | use Wallabag\CoreBundle\Form\Type\NewEntryType; | 14 | use Wallabag\CoreBundle\Form\Type\NewEntryType; |
15 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Cache; | ||
16 | 16 | ||
17 | class EntryController extends Controller | 17 | class EntryController extends Controller |
18 | { | 18 | { |
19 | /** | 19 | /** |
20 | * @param Entry $entry | 20 | * Fetch content and update entry. |
21 | * In case it fails, entry will return to avod loosing the data. | ||
22 | * | ||
23 | * @param Entry $entry | ||
24 | * @param string $prefixMessage Should be the translation key: entry_saved or entry_reloaded | ||
25 | * | ||
26 | * @return Entry | ||
21 | */ | 27 | */ |
22 | private function updateEntry(Entry $entry) | 28 | private function updateEntry(Entry $entry, $prefixMessage = 'entry_saved') |
23 | { | 29 | { |
30 | // put default title in case of fetching content failed | ||
31 | $entry->setTitle('No title found'); | ||
32 | |||
33 | $message = 'flashes.entry.notice.'.$prefixMessage; | ||
34 | |||
24 | try { | 35 | try { |
25 | $entry = $this->get('wallabag_core.content_proxy')->updateEntry($entry, $entry->getUrl()); | 36 | $entry = $this->get('wallabag_core.content_proxy')->updateEntry($entry, $entry->getUrl()); |
26 | |||
27 | $em = $this->getDoctrine()->getManager(); | ||
28 | $em->persist($entry); | ||
29 | $em->flush(); | ||
30 | } catch (\Exception $e) { | 37 | } catch (\Exception $e) { |
31 | $this->get('logger')->error('Error while saving an entry', [ | 38 | $this->get('logger')->error('Error while saving an entry', [ |
32 | 'exception' => $e, | 39 | 'exception' => $e, |
33 | 'entry' => $entry, | 40 | 'entry' => $entry, |
34 | ]); | 41 | ]); |
35 | 42 | ||
36 | return false; | 43 | $message = 'flashes.entry.notice.'.$prefixMessage.'_failed'; |
37 | } | 44 | } |
38 | 45 | ||
39 | return true; | 46 | $this->get('session')->getFlashBag()->add('notice', $message); |
47 | |||
48 | return $entry; | ||
40 | } | 49 | } |
41 | 50 | ||
42 | /** | 51 | /** |
@@ -66,12 +75,11 @@ class EntryController extends Controller | |||
66 | return $this->redirect($this->generateUrl('view', ['id' => $existingEntry->getId()])); | 75 | return $this->redirect($this->generateUrl('view', ['id' => $existingEntry->getId()])); |
67 | } | 76 | } |
68 | 77 | ||
69 | $message = 'flashes.entry.notice.entry_saved'; | 78 | $this->updateEntry($entry); |
70 | if (false === $this->updateEntry($entry)) { | ||
71 | $message = 'flashes.entry.notice.entry_saved_failed'; | ||
72 | } | ||
73 | 79 | ||
74 | $this->get('session')->getFlashBag()->add('notice', $message); | 80 | $em = $this->getDoctrine()->getManager(); |
81 | $em->persist($entry); | ||
82 | $em->flush(); | ||
75 | 83 | ||
76 | return $this->redirect($this->generateUrl('homepage')); | 84 | return $this->redirect($this->generateUrl('homepage')); |
77 | } | 85 | } |
@@ -95,6 +103,10 @@ class EntryController extends Controller | |||
95 | 103 | ||
96 | if (false === $this->checkIfEntryAlreadyExists($entry)) { | 104 | if (false === $this->checkIfEntryAlreadyExists($entry)) { |
97 | $this->updateEntry($entry); | 105 | $this->updateEntry($entry); |
106 | |||
107 | $em = $this->getDoctrine()->getManager(); | ||
108 | $em->persist($entry); | ||
109 | $em->flush(); | ||
98 | } | 110 | } |
99 | 111 | ||
100 | return $this->redirect($this->generateUrl('homepage')); | 112 | return $this->redirect($this->generateUrl('homepage')); |
@@ -226,6 +238,10 @@ class EntryController extends Controller | |||
226 | $repository = $this->get('wallabag_core.entry_repository'); | 238 | $repository = $this->get('wallabag_core.entry_repository'); |
227 | 239 | ||
228 | switch ($type) { | 240 | switch ($type) { |
241 | case 'untagged': | ||
242 | $qb = $repository->getBuilderForUntaggedByUser($this->getUser()->getId()); | ||
243 | |||
244 | break; | ||
229 | case 'starred': | 245 | case 'starred': |
230 | $qb = $repository->getBuilderForStarredByUser($this->getUser()->getId()); | 246 | $qb = $repository->getBuilderForStarredByUser($this->getUser()->getId()); |
231 | break; | 247 | break; |
@@ -257,9 +273,10 @@ class EntryController extends Controller | |||
257 | } | 273 | } |
258 | 274 | ||
259 | $pagerAdapter = new DoctrineORMAdapter($qb->getQuery()); | 275 | $pagerAdapter = new DoctrineORMAdapter($qb->getQuery()); |
260 | $entries = new Pagerfanta($pagerAdapter); | ||
261 | 276 | ||
262 | $entries->setMaxPerPage($this->getUser()->getConfig()->getItemsPerPage()); | 277 | $entries = $this->get('wallabag_core.helper.prepare_pager_for_entries') |
278 | ->prepare($pagerAdapter, $page); | ||
279 | |||
263 | try { | 280 | try { |
264 | $entries->setCurrentPage($page); | 281 | $entries->setCurrentPage($page); |
265 | } catch (OutOfRangeCurrentPageException $e) { | 282 | } catch (OutOfRangeCurrentPageException $e) { |
@@ -311,15 +328,11 @@ class EntryController extends Controller | |||
311 | { | 328 | { |
312 | $this->checkUserAction($entry); | 329 | $this->checkUserAction($entry); |
313 | 330 | ||
314 | $message = 'flashes.entry.notice.entry_reloaded'; | 331 | $this->updateEntry($entry, 'entry_reloaded'); |
315 | if (false === $this->updateEntry($entry)) { | ||
316 | $message = 'flashes.entry.notice.entry_reload_failed'; | ||
317 | } | ||
318 | 332 | ||
319 | $this->get('session')->getFlashBag()->add( | 333 | $em = $this->getDoctrine()->getManager(); |
320 | 'notice', | 334 | $em->persist($entry); |
321 | $message | 335 | $em->flush(); |
322 | ); | ||
323 | 336 | ||
324 | return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()])); | 337 | return $this->redirect($this->generateUrl('view', ['id' => $entry->getId()])); |
325 | } | 338 | } |
@@ -434,7 +447,7 @@ class EntryController extends Controller | |||
434 | */ | 447 | */ |
435 | private function checkUserAction(Entry $entry) | 448 | private function checkUserAction(Entry $entry) |
436 | { | 449 | { |
437 | if ($this->getUser()->getId() != $entry->getUser()->getId()) { | 450 | if (null === $this->getUser() || $this->getUser()->getId() != $entry->getUser()->getId()) { |
438 | throw $this->createAccessDeniedException('You can not access this entry.'); | 451 | throw $this->createAccessDeniedException('You can not access this entry.'); |
439 | } | 452 | } |
440 | } | 453 | } |
@@ -450,4 +463,91 @@ class EntryController extends Controller | |||
450 | { | 463 | { |
451 | return $this->get('wallabag_core.entry_repository')->findByUrlAndUserId($entry->getUrl(), $this->getUser()->getId()); | 464 | return $this->get('wallabag_core.entry_repository')->findByUrlAndUserId($entry->getUrl(), $this->getUser()->getId()); |
452 | } | 465 | } |
466 | |||
467 | /** | ||
468 | * Get public URL for entry (and generate it if necessary). | ||
469 | * | ||
470 | * @param Entry $entry | ||
471 | * | ||
472 | * @Route("/share/{id}", requirements={"id" = "\d+"}, name="share") | ||
473 | * | ||
474 | * @return \Symfony\Component\HttpFoundation\Response | ||
475 | */ | ||
476 | public function shareAction(Entry $entry) | ||
477 | { | ||
478 | $this->checkUserAction($entry); | ||
479 | |||
480 | if (null === $entry->getUuid()) { | ||
481 | $entry->generateUuid(); | ||
482 | |||
483 | $em = $this->getDoctrine()->getManager(); | ||
484 | $em->persist($entry); | ||
485 | $em->flush(); | ||
486 | } | ||
487 | |||
488 | return $this->redirect($this->generateUrl('share_entry', [ | ||
489 | 'uuid' => $entry->getUuid(), | ||
490 | ])); | ||
491 | } | ||
492 | |||
493 | /** | ||
494 | * Disable public sharing for an entry. | ||
495 | * | ||
496 | * @param Entry $entry | ||
497 | * | ||
498 | * @Route("/share/delete/{id}", requirements={"id" = "\d+"}, name="delete_share") | ||
499 | * | ||
500 | * @return \Symfony\Component\HttpFoundation\Response | ||
501 | */ | ||
502 | public function deleteShareAction(Entry $entry) | ||
503 | { | ||
504 | $this->checkUserAction($entry); | ||
505 | |||
506 | $entry->cleanUuid(); | ||
507 | |||
508 | $em = $this->getDoctrine()->getManager(); | ||
509 | $em->persist($entry); | ||
510 | $em->flush(); | ||
511 | |||
512 | return $this->redirect($this->generateUrl('view', [ | ||
513 | 'id' => $entry->getId(), | ||
514 | ])); | ||
515 | } | ||
516 | |||
517 | /** | ||
518 | * Ability to view a content publicly. | ||
519 | * | ||
520 | * @param Entry $entry | ||
521 | * | ||
522 | * @Route("/share/{uuid}", requirements={"uuid" = ".+"}, name="share_entry") | ||
523 | * @Cache(maxage="25200", smaxage="25200", public=true) | ||
524 | * | ||
525 | * @return \Symfony\Component\HttpFoundation\Response | ||
526 | */ | ||
527 | public function shareEntryAction(Entry $entry) | ||
528 | { | ||
529 | if (!$this->get('craue_config')->get('share_public')) { | ||
530 | throw $this->createAccessDeniedException('Sharing an entry is disabled for this user.'); | ||
531 | } | ||
532 | |||
533 | return $this->render( | ||
534 | '@WallabagCore/themes/common/Entry/share.html.twig', | ||
535 | ['entry' => $entry] | ||
536 | ); | ||
537 | } | ||
538 | |||
539 | /** | ||
540 | * Shows untagged articles for current user. | ||
541 | * | ||
542 | * @param Request $request | ||
543 | * @param int $page | ||
544 | * | ||
545 | * @Route("/untagged/list/{page}", name="untagged", defaults={"page" = "1"}) | ||
546 | * | ||
547 | * @return \Symfony\Component\HttpFoundation\Response | ||
548 | */ | ||
549 | public function showUntaggedEntriesAction(Request $request, $page) | ||
550 | { | ||
551 | return $this->showEntries('untagged', $request, $page); | ||
552 | } | ||
453 | } | 553 | } |
diff --git a/src/Wallabag/CoreBundle/Controller/ExportController.php b/src/Wallabag/CoreBundle/Controller/ExportController.php index 944c755d..6191d5d7 100644 --- a/src/Wallabag/CoreBundle/Controller/ExportController.php +++ b/src/Wallabag/CoreBundle/Controller/ExportController.php | |||
@@ -46,7 +46,7 @@ class ExportController extends Controller | |||
46 | * | 46 | * |
47 | * @Route("/export/{category}.{format}", name="export_entries", requirements={ | 47 | * @Route("/export/{category}.{format}", name="export_entries", requirements={ |
48 | * "format": "epub|mobi|pdf|json|xml|txt|csv", | 48 | * "format": "epub|mobi|pdf|json|xml|txt|csv", |
49 | * "category": "all|unread|starred|archive" | 49 | * "category": "all|unread|starred|archive|tag_entries|untagged" |
50 | * }) | 50 | * }) |
51 | * | 51 | * |
52 | * @return \Symfony\Component\HttpFoundation\Response | 52 | * @return \Symfony\Component\HttpFoundation\Response |
diff --git a/src/Wallabag/CoreBundle/Controller/FooterController.php b/src/Wallabag/CoreBundle/Controller/FooterController.php deleted file mode 100644 index fd93c436..00000000 --- a/src/Wallabag/CoreBundle/Controller/FooterController.php +++ /dev/null | |||
@@ -1,27 +0,0 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\CoreBundle\Controller; | ||
4 | |||
5 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; | ||
6 | |||
7 | class FooterController extends Controller | ||
8 | { | ||
9 | /** | ||
10 | * Display the footer. | ||
11 | * | ||
12 | * @return \Symfony\Component\HttpFoundation\Response | ||
13 | */ | ||
14 | public function indexAction() | ||
15 | { | ||
16 | $addonsUrl = $this->container->getParameter('addons_url'); | ||
17 | $socialsUrl = $this->container->getParameter('socials_url'); | ||
18 | |||
19 | return $this->render( | ||
20 | 'WallabagCoreBundle::footer.html.twig', | ||
21 | [ | ||
22 | 'addonsUrl' => $addonsUrl, | ||
23 | 'socialsUrl' => $socialsUrl, | ||
24 | ] | ||
25 | ); | ||
26 | } | ||
27 | } | ||
diff --git a/src/Wallabag/CoreBundle/Controller/RssController.php b/src/Wallabag/CoreBundle/Controller/RssController.php index 2118885c..38e3b5a0 100644 --- a/src/Wallabag/CoreBundle/Controller/RssController.php +++ b/src/Wallabag/CoreBundle/Controller/RssController.php | |||
@@ -87,7 +87,7 @@ class RssController extends Controller | |||
87 | $perPage = $user->getConfig()->getRssLimit() ?: $this->getParameter('wallabag_core.rss_limit'); | 87 | $perPage = $user->getConfig()->getRssLimit() ?: $this->getParameter('wallabag_core.rss_limit'); |
88 | $entries->setMaxPerPage($perPage); | 88 | $entries->setMaxPerPage($perPage); |
89 | 89 | ||
90 | return $this->render('WallabagCoreBundle:Entry:entries.xml.twig', [ | 90 | return $this->render('@WallabagCore/themes/common/Entry/entries.xml.twig', [ |
91 | 'type' => $type, | 91 | 'type' => $type, |
92 | 'entries' => $entries, | 92 | 'entries' => $entries, |
93 | ]); | 93 | ]); |
diff --git a/src/Wallabag/CoreBundle/Controller/StaticController.php b/src/Wallabag/CoreBundle/Controller/StaticController.php index 2a57f06f..82714217 100644 --- a/src/Wallabag/CoreBundle/Controller/StaticController.php +++ b/src/Wallabag/CoreBundle/Controller/StaticController.php | |||
@@ -15,7 +15,7 @@ class StaticController extends Controller | |||
15 | $addonsUrl = $this->container->getParameter('addons_url'); | 15 | $addonsUrl = $this->container->getParameter('addons_url'); |
16 | 16 | ||
17 | return $this->render( | 17 | return $this->render( |
18 | 'WallabagCoreBundle:Static:howto.html.twig', | 18 | '@WallabagCore/themes/common/Static/howto.html.twig', |
19 | ['addonsUrl' => $addonsUrl] | 19 | ['addonsUrl' => $addonsUrl] |
20 | ); | 20 | ); |
21 | } | 21 | } |
@@ -26,7 +26,7 @@ class StaticController extends Controller | |||
26 | public function aboutAction() | 26 | public function aboutAction() |
27 | { | 27 | { |
28 | return $this->render( | 28 | return $this->render( |
29 | 'WallabagCoreBundle:Static:about.html.twig', | 29 | '@WallabagCore/themes/common/Static/about.html.twig', |
30 | [ | 30 | [ |
31 | 'version' => $this->getParameter('wallabag_core.version'), | 31 | 'version' => $this->getParameter('wallabag_core.version'), |
32 | 'paypal_url' => $this->getParameter('wallabag_core.paypal_url'), | 32 | 'paypal_url' => $this->getParameter('wallabag_core.paypal_url'), |
@@ -40,7 +40,7 @@ class StaticController extends Controller | |||
40 | public function quickstartAction() | 40 | public function quickstartAction() |
41 | { | 41 | { |
42 | return $this->render( | 42 | return $this->render( |
43 | 'WallabagCoreBundle:Static:quickstart.html.twig', | 43 | '@WallabagCore/themes/common/Static/quickstart.html.twig', |
44 | [] | 44 | [] |
45 | ); | 45 | ); |
46 | } | 46 | } |
diff --git a/src/Wallabag/CoreBundle/Controller/TagController.php b/src/Wallabag/CoreBundle/Controller/TagController.php index 8645fb44..623a6146 100644 --- a/src/Wallabag/CoreBundle/Controller/TagController.php +++ b/src/Wallabag/CoreBundle/Controller/TagController.php | |||
@@ -2,12 +2,15 @@ | |||
2 | 2 | ||
3 | namespace Wallabag\CoreBundle\Controller; | 3 | namespace Wallabag\CoreBundle\Controller; |
4 | 4 | ||
5 | use Pagerfanta\Adapter\ArrayAdapter; | ||
6 | use Pagerfanta\Exception\OutOfRangeCurrentPageException; | ||
5 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | 7 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; |
6 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; | 8 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; |
7 | use Symfony\Component\HttpFoundation\Request; | 9 | use Symfony\Component\HttpFoundation\Request; |
8 | use Wallabag\CoreBundle\Entity\Entry; | 10 | use Wallabag\CoreBundle\Entity\Entry; |
9 | use Wallabag\CoreBundle\Entity\Tag; | 11 | use Wallabag\CoreBundle\Entity\Tag; |
10 | use Wallabag\CoreBundle\Form\Type\NewTagType; | 12 | use Wallabag\CoreBundle\Form\Type\NewTagType; |
13 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; | ||
11 | 14 | ||
12 | class TagController extends Controller | 15 | class TagController extends Controller |
13 | { | 16 | { |
@@ -81,13 +84,48 @@ class TagController extends Controller | |||
81 | { | 84 | { |
82 | $tags = $this->getDoctrine() | 85 | $tags = $this->getDoctrine() |
83 | ->getRepository('WallabagCoreBundle:Tag') | 86 | ->getRepository('WallabagCoreBundle:Tag') |
84 | ->findAllTags($this->getUser()->getId()); | 87 | ->findAllTagsWithEntries($this->getUser()->getId()); |
85 | 88 | ||
86 | return $this->render( | 89 | return $this->render('WallabagCoreBundle:Tag:tags.html.twig', [ |
87 | 'WallabagCoreBundle:Tag:tags.html.twig', | 90 | 'tags' => $tags, |
88 | [ | 91 | ]); |
89 | 'tags' => $tags, | 92 | } |
90 | ] | 93 | |
91 | ); | 94 | /** |
95 | * @param Tag $tag | ||
96 | * @param int $page | ||
97 | * | ||
98 | * @Route("/tag/list/{slug}/{page}", name="tag_entries", defaults={"page" = "1"}) | ||
99 | * @ParamConverter("tag", options={"mapping": {"slug": "slug"}}) | ||
100 | * | ||
101 | * @return \Symfony\Component\HttpFoundation\Response | ||
102 | */ | ||
103 | public function showEntriesForTagAction(Tag $tag, $page, Request $request) | ||
104 | { | ||
105 | $entriesByTag = $this->getDoctrine() | ||
106 | ->getRepository('WallabagCoreBundle:Entry') | ||
107 | ->findAllByTagId($this->getUser()->getId(), $tag->getId()); | ||
108 | |||
109 | $pagerAdapter = new ArrayAdapter($entriesByTag); | ||
110 | |||
111 | $entries = $this->get('wallabag_core.helper.prepare_pager_for_entries') | ||
112 | ->prepare($pagerAdapter, $page); | ||
113 | |||
114 | try { | ||
115 | $entries->setCurrentPage($page); | ||
116 | } catch (OutOfRangeCurrentPageException $e) { | ||
117 | if ($page > 1) { | ||
118 | return $this->redirect($this->generateUrl($request->get('_route'), [ | ||
119 | 'slug' => $tag->getSlug(), | ||
120 | 'page' => $entries->getNbPages(), | ||
121 | ]), 302); | ||
122 | } | ||
123 | } | ||
124 | |||
125 | return $this->render('WallabagCoreBundle:Entry:entries.html.twig', [ | ||
126 | 'form' => null, | ||
127 | 'entries' => $entries, | ||
128 | 'currentPage' => $page, | ||
129 | ]); | ||
92 | } | 130 | } |
93 | } | 131 | } |
diff --git a/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadConfigData.php b/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadConfigData.php index 03be9667..921c739f 100644 --- a/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadConfigData.php +++ b/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadConfigData.php | |||
@@ -20,6 +20,7 @@ class LoadConfigData extends AbstractFixture implements OrderedFixtureInterface | |||
20 | $adminConfig->setItemsPerPage(30); | 20 | $adminConfig->setItemsPerPage(30); |
21 | $adminConfig->setReadingSpeed(1); | 21 | $adminConfig->setReadingSpeed(1); |
22 | $adminConfig->setLanguage('en'); | 22 | $adminConfig->setLanguage('en'); |
23 | $adminConfig->setPocketConsumerKey('xxxxx'); | ||
23 | 24 | ||
24 | $manager->persist($adminConfig); | 25 | $manager->persist($adminConfig); |
25 | 26 | ||
@@ -30,6 +31,7 @@ class LoadConfigData extends AbstractFixture implements OrderedFixtureInterface | |||
30 | $bobConfig->setItemsPerPage(10); | 31 | $bobConfig->setItemsPerPage(10); |
31 | $bobConfig->setReadingSpeed(1); | 32 | $bobConfig->setReadingSpeed(1); |
32 | $bobConfig->setLanguage('fr'); | 33 | $bobConfig->setLanguage('fr'); |
34 | $bobConfig->setPocketConsumerKey(null); | ||
33 | 35 | ||
34 | $manager->persist($bobConfig); | 36 | $manager->persist($bobConfig); |
35 | 37 | ||
@@ -40,6 +42,7 @@ class LoadConfigData extends AbstractFixture implements OrderedFixtureInterface | |||
40 | $emptyConfig->setItemsPerPage(10); | 42 | $emptyConfig->setItemsPerPage(10); |
41 | $emptyConfig->setReadingSpeed(1); | 43 | $emptyConfig->setReadingSpeed(1); |
42 | $emptyConfig->setLanguage('en'); | 44 | $emptyConfig->setLanguage('en'); |
45 | $emptyConfig->setPocketConsumerKey(null); | ||
43 | 46 | ||
44 | $manager->persist($emptyConfig); | 47 | $manager->persist($emptyConfig); |
45 | 48 | ||
diff --git a/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadSettingData.php b/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadSettingData.php index 09058796..9425f961 100644 --- a/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadSettingData.php +++ b/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadSettingData.php | |||
@@ -16,6 +16,11 @@ class LoadSettingData extends AbstractFixture implements OrderedFixtureInterface | |||
16 | { | 16 | { |
17 | $settings = [ | 17 | $settings = [ |
18 | [ | 18 | [ |
19 | 'name' => 'share_public', | ||
20 | 'value' => '1', | ||
21 | 'section' => 'entry', | ||
22 | ], | ||
23 | [ | ||
19 | 'name' => 'carrot', | 24 | 'name' => 'carrot', |
20 | 'value' => '1', | 25 | 'value' => '1', |
21 | 'section' => 'entry', | 26 | 'section' => 'entry', |
@@ -86,8 +91,13 @@ class LoadSettingData extends AbstractFixture implements OrderedFixtureInterface | |||
86 | 'section' => 'export', | 91 | 'section' => 'export', |
87 | ], | 92 | ], |
88 | [ | 93 | [ |
89 | 'name' => 'pocket_consumer_key', | 94 | 'name' => 'import_with_redis', |
90 | 'value' => null, | 95 | 'value' => '0', |
96 | 'section' => 'import', | ||
97 | ], | ||
98 | [ | ||
99 | 'name' => 'import_with_rabbitmq', | ||
100 | 'value' => '0', | ||
91 | 'section' => 'import', | 101 | 'section' => 'import', |
92 | ], | 102 | ], |
93 | [ | 103 | [ |
diff --git a/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadTagData.php b/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadTagData.php index 8553dced..09e99f36 100644 --- a/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadTagData.php +++ b/src/Wallabag/CoreBundle/DataFixtures/ORM/LoadTagData.php | |||
@@ -28,6 +28,13 @@ class LoadTagData extends AbstractFixture implements OrderedFixtureInterface | |||
28 | 28 | ||
29 | $this->addReference('bar-tag', $tag2); | 29 | $this->addReference('bar-tag', $tag2); |
30 | 30 | ||
31 | $tag3 = new Tag(); | ||
32 | $tag3->setLabel('baz'); | ||
33 | |||
34 | $manager->persist($tag3); | ||
35 | |||
36 | $this->addReference('baz-tag', $tag3); | ||
37 | |||
31 | $manager->flush(); | 38 | $manager->flush(); |
32 | } | 39 | } |
33 | 40 | ||
diff --git a/src/Wallabag/CoreBundle/DependencyInjection/Configuration.php b/src/Wallabag/CoreBundle/DependencyInjection/Configuration.php index d1bb9820..d8141eea 100644 --- a/src/Wallabag/CoreBundle/DependencyInjection/Configuration.php +++ b/src/Wallabag/CoreBundle/DependencyInjection/Configuration.php | |||
@@ -36,6 +36,9 @@ class Configuration implements ConfigurationInterface | |||
36 | ->end() | 36 | ->end() |
37 | ->scalarNode('paypal_url') | 37 | ->scalarNode('paypal_url') |
38 | ->end() | 38 | ->end() |
39 | ->integerNode('cache_lifetime') | ||
40 | ->defaultValue(10) | ||
41 | ->end() | ||
39 | ->end() | 42 | ->end() |
40 | ; | 43 | ; |
41 | 44 | ||
diff --git a/src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php b/src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php index 7d08b73b..0cbde908 100644 --- a/src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php +++ b/src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php | |||
@@ -22,6 +22,7 @@ class WallabagCoreExtension extends Extension | |||
22 | $container->setParameter('wallabag_core.reading_speed', $config['reading_speed']); | 22 | $container->setParameter('wallabag_core.reading_speed', $config['reading_speed']); |
23 | $container->setParameter('wallabag_core.version', $config['version']); | 23 | $container->setParameter('wallabag_core.version', $config['version']); |
24 | $container->setParameter('wallabag_core.paypal_url', $config['paypal_url']); | 24 | $container->setParameter('wallabag_core.paypal_url', $config['paypal_url']); |
25 | $container->setParameter('wallabag_core.cache_lifetime', $config['cache_lifetime']); | ||
25 | 26 | ||
26 | $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); | 27 | $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); |
27 | $loader->load('services.yml'); | 28 | $loader->load('services.yml'); |
diff --git a/src/Wallabag/CoreBundle/Entity/Config.php b/src/Wallabag/CoreBundle/Entity/Config.php index a25656d3..d0f0e3f3 100644 --- a/src/Wallabag/CoreBundle/Entity/Config.php +++ b/src/Wallabag/CoreBundle/Entity/Config.php | |||
@@ -81,6 +81,13 @@ class Config | |||
81 | private $readingSpeed; | 81 | private $readingSpeed; |
82 | 82 | ||
83 | /** | 83 | /** |
84 | * @var string | ||
85 | * | ||
86 | * @ORM\Column(name="pocket_consumer_key", type="string", nullable=true) | ||
87 | */ | ||
88 | private $pocketConsumerKey; | ||
89 | |||
90 | /** | ||
84 | * @ORM\OneToOne(targetEntity="Wallabag\UserBundle\Entity\User", inversedBy="config") | 91 | * @ORM\OneToOne(targetEntity="Wallabag\UserBundle\Entity\User", inversedBy="config") |
85 | */ | 92 | */ |
86 | private $user; | 93 | private $user; |
@@ -279,6 +286,30 @@ class Config | |||
279 | } | 286 | } |
280 | 287 | ||
281 | /** | 288 | /** |
289 | * Set pocketConsumerKey. | ||
290 | * | ||
291 | * @param string $pocketConsumerKey | ||
292 | * | ||
293 | * @return Config | ||
294 | */ | ||
295 | public function setPocketConsumerKey($pocketConsumerKey) | ||
296 | { | ||
297 | $this->pocketConsumerKey = $pocketConsumerKey; | ||
298 | |||
299 | return $this; | ||
300 | } | ||
301 | |||
302 | /** | ||
303 | * Get pocketConsumerKey. | ||
304 | * | ||
305 | * @return string | ||
306 | */ | ||
307 | public function getPocketConsumerKey() | ||
308 | { | ||
309 | return $this->pocketConsumerKey; | ||
310 | } | ||
311 | |||
312 | /** | ||
282 | * @param TaggingRule $rule | 313 | * @param TaggingRule $rule |
283 | * | 314 | * |
284 | * @return Config | 315 | * @return Config |
diff --git a/src/Wallabag/CoreBundle/Entity/Entry.php b/src/Wallabag/CoreBundle/Entity/Entry.php index ceae78b0..a4b0d7a8 100644 --- a/src/Wallabag/CoreBundle/Entity/Entry.php +++ b/src/Wallabag/CoreBundle/Entity/Entry.php | |||
@@ -40,6 +40,15 @@ class Entry | |||
40 | /** | 40 | /** |
41 | * @var string | 41 | * @var string |
42 | * | 42 | * |
43 | * @ORM\Column(name="uuid", type="text", nullable=true) | ||
44 | * | ||
45 | * @Groups({"entries_for_user", "export_all"}) | ||
46 | */ | ||
47 | private $uuid; | ||
48 | |||
49 | /** | ||
50 | * @var string | ||
51 | * | ||
43 | * @ORM\Column(name="title", type="text", nullable=true) | 52 | * @ORM\Column(name="title", type="text", nullable=true) |
44 | * | 53 | * |
45 | * @Groups({"entries_for_user", "export_all"}) | 54 | * @Groups({"entries_for_user", "export_all"}) |
@@ -88,20 +97,20 @@ class Entry | |||
88 | private $content; | 97 | private $content; |
89 | 98 | ||
90 | /** | 99 | /** |
91 | * @var date | 100 | * @var \DateTime |
92 | * | 101 | * |
93 | * @ORM\Column(name="created_at", type="datetime") | 102 | * @ORM\Column(name="created_at", type="datetime") |
94 | * | 103 | * |
95 | * @Groups({"export_all"}) | 104 | * @Groups({"entries_for_user", "export_all"}) |
96 | */ | 105 | */ |
97 | private $createdAt; | 106 | private $createdAt; |
98 | 107 | ||
99 | /** | 108 | /** |
100 | * @var date | 109 | * @var \DateTime |
101 | * | 110 | * |
102 | * @ORM\Column(name="updated_at", type="datetime") | 111 | * @ORM\Column(name="updated_at", type="datetime") |
103 | * | 112 | * |
104 | * @Groups({"export_all"}) | 113 | * @Groups({"entries_for_user", "export_all"}) |
105 | */ | 114 | */ |
106 | private $updatedAt; | 115 | private $updatedAt; |
107 | 116 | ||
@@ -401,7 +410,22 @@ class Entry | |||
401 | } | 410 | } |
402 | 411 | ||
403 | /** | 412 | /** |
404 | * @return string | 413 | * Set created_at. |
414 | * Only used when importing data from an other service. | ||
415 | * | ||
416 | * @param \DateTime $createdAt | ||
417 | * | ||
418 | * @return Entry | ||
419 | */ | ||
420 | public function setCreatedAt(\DateTime $createdAt) | ||
421 | { | ||
422 | $this->createdAt = $createdAt; | ||
423 | |||
424 | return $this; | ||
425 | } | ||
426 | |||
427 | /** | ||
428 | * @return \DateTime | ||
405 | */ | 429 | */ |
406 | public function getCreatedAt() | 430 | public function getCreatedAt() |
407 | { | 431 | { |
@@ -409,7 +433,7 @@ class Entry | |||
409 | } | 433 | } |
410 | 434 | ||
411 | /** | 435 | /** |
412 | * @return string | 436 | * @return \DateTime |
413 | */ | 437 | */ |
414 | public function getUpdatedAt() | 438 | public function getUpdatedAt() |
415 | { | 439 | { |
@@ -595,4 +619,37 @@ class Entry | |||
595 | { | 619 | { |
596 | return $this->language; | 620 | return $this->language; |
597 | } | 621 | } |
622 | |||
623 | /** | ||
624 | * @return string | ||
625 | */ | ||
626 | public function getUuid() | ||
627 | { | ||
628 | return $this->uuid; | ||
629 | } | ||
630 | |||
631 | /** | ||
632 | * @param string $uuid | ||
633 | * | ||
634 | * @return Entry | ||
635 | */ | ||
636 | public function setUuid($uuid) | ||
637 | { | ||
638 | $this->uuid = $uuid; | ||
639 | |||
640 | return $this; | ||
641 | } | ||
642 | |||
643 | public function generateUuid() | ||
644 | { | ||
645 | if (null === $this->uuid) { | ||
646 | // @see http://blog.kevingomez.fr/til/2015/07/26/why-is-uniqid-slow/ for true parameter | ||
647 | $this->uuid = uniqid('', true); | ||
648 | } | ||
649 | } | ||
650 | |||
651 | public function cleanUuid() | ||
652 | { | ||
653 | $this->uuid = null; | ||
654 | } | ||
598 | } | 655 | } |
diff --git a/src/Wallabag/CoreBundle/Form/Type/ClientType.php b/src/Wallabag/CoreBundle/Form/Type/ClientType.php index 8b351e60..d1fa94e6 100644 --- a/src/Wallabag/CoreBundle/Form/Type/ClientType.php +++ b/src/Wallabag/CoreBundle/Form/Type/ClientType.php | |||
@@ -6,6 +6,7 @@ use Symfony\Component\Form\AbstractType; | |||
6 | use Symfony\Component\Form\CallbackTransformer; | 6 | use Symfony\Component\Form\CallbackTransformer; |
7 | use Symfony\Component\Form\Extension\Core\Type\SubmitType; | 7 | use Symfony\Component\Form\Extension\Core\Type\SubmitType; |
8 | use Symfony\Component\Form\Extension\Core\Type\UrlType; | 8 | use Symfony\Component\Form\Extension\Core\Type\UrlType; |
9 | use Symfony\Component\Form\Extension\Core\Type\TextType; | ||
9 | use Symfony\Component\Form\FormBuilderInterface; | 10 | use Symfony\Component\Form\FormBuilderInterface; |
10 | use Symfony\Component\OptionsResolver\OptionsResolver; | 11 | use Symfony\Component\OptionsResolver\OptionsResolver; |
11 | 12 | ||
@@ -14,7 +15,8 @@ class ClientType extends AbstractType | |||
14 | public function buildForm(FormBuilderInterface $builder, array $options) | 15 | public function buildForm(FormBuilderInterface $builder, array $options) |
15 | { | 16 | { |
16 | $builder | 17 | $builder |
17 | ->add('redirect_uris', UrlType::class, ['required' => true, 'label' => 'developer.client.form.redirect_uris_label']) | 18 | ->add('name', TextType::class, ['label' => 'developer.client.form.name_label']) |
19 | ->add('redirect_uris', UrlType::class, ['required' => false, 'label' => 'developer.client.form.redirect_uris_label']) | ||
18 | ->add('save', SubmitType::class, ['label' => 'developer.client.form.save_label']) | 20 | ->add('save', SubmitType::class, ['label' => 'developer.client.form.save_label']) |
19 | ; | 21 | ; |
20 | 22 | ||
diff --git a/src/Wallabag/CoreBundle/Form/Type/ConfigType.php b/src/Wallabag/CoreBundle/Form/Type/ConfigType.php index 7d25cc80..0bac2874 100644 --- a/src/Wallabag/CoreBundle/Form/Type/ConfigType.php +++ b/src/Wallabag/CoreBundle/Form/Type/ConfigType.php | |||
@@ -52,6 +52,9 @@ class ConfigType extends AbstractType | |||
52 | 'choices' => array_flip($this->languages), | 52 | 'choices' => array_flip($this->languages), |
53 | 'label' => 'config.form_settings.language_label', | 53 | 'label' => 'config.form_settings.language_label', |
54 | ]) | 54 | ]) |
55 | ->add('pocket_consumer_key', null, [ | ||
56 | 'label' => 'config.form_settings.pocket_consumer_key_label', | ||
57 | ]) | ||
55 | ->add('save', SubmitType::class, [ | 58 | ->add('save', SubmitType::class, [ |
56 | 'label' => 'config.form.save', | 59 | 'label' => 'config.form.save', |
57 | ]) | 60 | ]) |
diff --git a/src/Wallabag/CoreBundle/Helper/ContentProxy.php b/src/Wallabag/CoreBundle/Helper/ContentProxy.php index 5dd684f2..8019df42 100644 --- a/src/Wallabag/CoreBundle/Helper/ContentProxy.php +++ b/src/Wallabag/CoreBundle/Helper/ContentProxy.php | |||
@@ -95,14 +95,24 @@ class ContentProxy | |||
95 | * Assign some tags to an entry. | 95 | * Assign some tags to an entry. |
96 | * | 96 | * |
97 | * @param Entry $entry | 97 | * @param Entry $entry |
98 | * @param array|string $tags An array of tag or a string coma separated of tag | 98 | * @param array|string $tags An array of tag or a string coma separated of tag |
99 | * @param array $entitiesReady Entities from the EntityManager which are persisted but not yet flushed | ||
100 | * It is mostly to fix duplicate tag on import @see http://stackoverflow.com/a/7879164/569101 | ||
99 | */ | 101 | */ |
100 | public function assignTagsToEntry(Entry $entry, $tags) | 102 | public function assignTagsToEntry(Entry $entry, $tags, array $entitiesReady = []) |
101 | { | 103 | { |
102 | if (!is_array($tags)) { | 104 | if (!is_array($tags)) { |
103 | $tags = explode(',', $tags); | 105 | $tags = explode(',', $tags); |
104 | } | 106 | } |
105 | 107 | ||
108 | // keeps only Tag entity from the "not yet flushed entities" | ||
109 | $tagsNotYetFlushed = []; | ||
110 | foreach ($entitiesReady as $entity) { | ||
111 | if ($entity instanceof Tag) { | ||
112 | $tagsNotYetFlushed[$entity->getLabel()] = $entity; | ||
113 | } | ||
114 | } | ||
115 | |||
106 | foreach ($tags as $label) { | 116 | foreach ($tags as $label) { |
107 | $label = trim($label); | 117 | $label = trim($label); |
108 | 118 | ||
@@ -111,11 +121,15 @@ class ContentProxy | |||
111 | continue; | 121 | continue; |
112 | } | 122 | } |
113 | 123 | ||
114 | $tagEntity = $this->tagRepository->findOneByLabel($label); | 124 | if (isset($tagsNotYetFlushed[$label])) { |
125 | $tagEntity = $tagsNotYetFlushed[$label]; | ||
126 | } else { | ||
127 | $tagEntity = $this->tagRepository->findOneByLabel($label); | ||
115 | 128 | ||
116 | if (is_null($tagEntity)) { | 129 | if (is_null($tagEntity)) { |
117 | $tagEntity = new Tag(); | 130 | $tagEntity = new Tag(); |
118 | $tagEntity->setLabel($label); | 131 | $tagEntity->setLabel($label); |
132 | } | ||
119 | } | 133 | } |
120 | 134 | ||
121 | // only add the tag on the entry if the relation doesn't exist | 135 | // only add the tag on the entry if the relation doesn't exist |
diff --git a/src/Wallabag/CoreBundle/Helper/EntriesExport.php b/src/Wallabag/CoreBundle/Helper/EntriesExport.php index e91007e1..1dfa12c8 100644 --- a/src/Wallabag/CoreBundle/Helper/EntriesExport.php +++ b/src/Wallabag/CoreBundle/Helper/EntriesExport.php | |||
@@ -302,7 +302,7 @@ class EntriesExport | |||
302 | $enclosure = '"'; | 302 | $enclosure = '"'; |
303 | $handle = fopen('php://memory', 'rb+'); | 303 | $handle = fopen('php://memory', 'rb+'); |
304 | 304 | ||
305 | fputcsv($handle, ['Title', 'URL', 'Content', 'Tags', 'MIME Type', 'Language'], $delimiter, $enclosure); | 305 | fputcsv($handle, ['Title', 'URL', 'Content', 'Tags', 'MIME Type', 'Language', 'Creation date'], $delimiter, $enclosure); |
306 | 306 | ||
307 | foreach ($this->entries as $entry) { | 307 | foreach ($this->entries as $entry) { |
308 | fputcsv( | 308 | fputcsv( |
@@ -315,6 +315,7 @@ class EntriesExport | |||
315 | implode(', ', $entry->getTags()->toArray()), | 315 | implode(', ', $entry->getTags()->toArray()), |
316 | $entry->getMimetype(), | 316 | $entry->getMimetype(), |
317 | $entry->getLanguage(), | 317 | $entry->getLanguage(), |
318 | $entry->getCreatedAt()->format('d/m/Y h:i:s'), | ||
318 | ], | 319 | ], |
319 | $delimiter, | 320 | $delimiter, |
320 | $enclosure | 321 | $enclosure |
diff --git a/src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php b/src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php new file mode 100644 index 00000000..f9066bee --- /dev/null +++ b/src/Wallabag/CoreBundle/Helper/PreparePagerForEntries.php | |||
@@ -0,0 +1,34 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\CoreBundle\Helper; | ||
4 | |||
5 | use Pagerfanta\Adapter\AdapterInterface; | ||
6 | use Pagerfanta\Pagerfanta; | ||
7 | use Symfony\Component\Routing\Router; | ||
8 | use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage; | ||
9 | |||
10 | class PreparePagerForEntries | ||
11 | { | ||
12 | private $user; | ||
13 | private $router; | ||
14 | |||
15 | public function __construct(TokenStorage $token, Router $router) | ||
16 | { | ||
17 | $this->user = $token->getToken()->getUser(); | ||
18 | $this->router = $router; | ||
19 | } | ||
20 | |||
21 | /** | ||
22 | * @param AdapterInterface $adapter | ||
23 | * @param int $page | ||
24 | * | ||
25 | * @return null|Pagerfanta | ||
26 | */ | ||
27 | public function prepare(AdapterInterface $adapter, $page = 1) | ||
28 | { | ||
29 | $entries = new Pagerfanta($adapter); | ||
30 | $entries->setMaxPerPage($this->user->getConfig()->getItemsPerPage()); | ||
31 | |||
32 | return $entries; | ||
33 | } | ||
34 | } | ||
diff --git a/src/Wallabag/CoreBundle/Repository/EntryRepository.php b/src/Wallabag/CoreBundle/Repository/EntryRepository.php index 4d45e5f5..302e5a53 100644 --- a/src/Wallabag/CoreBundle/Repository/EntryRepository.php +++ b/src/Wallabag/CoreBundle/Repository/EntryRepository.php | |||
@@ -3,6 +3,7 @@ | |||
3 | namespace Wallabag\CoreBundle\Repository; | 3 | namespace Wallabag\CoreBundle\Repository; |
4 | 4 | ||
5 | use Doctrine\ORM\EntityRepository; | 5 | use Doctrine\ORM\EntityRepository; |
6 | use Doctrine\ORM\Query; | ||
6 | use Pagerfanta\Adapter\DoctrineORMAdapter; | 7 | use Pagerfanta\Adapter\DoctrineORMAdapter; |
7 | use Pagerfanta\Pagerfanta; | 8 | use Pagerfanta\Pagerfanta; |
8 | use Wallabag\CoreBundle\Entity\Tag; | 9 | use Wallabag\CoreBundle\Entity\Tag; |
@@ -85,6 +86,22 @@ class EntryRepository extends EntityRepository | |||
85 | } | 86 | } |
86 | 87 | ||
87 | /** | 88 | /** |
89 | * Retrieves untagged entries for a user. | ||
90 | * | ||
91 | * @param int $userId | ||
92 | * | ||
93 | * @return QueryBuilder | ||
94 | */ | ||
95 | public function getBuilderForUntaggedByUser($userId) | ||
96 | { | ||
97 | return $this | ||
98 | ->getBuilderByUser($userId) | ||
99 | ->leftJoin('e.tags', 't') | ||
100 | ->groupBy('e.id') | ||
101 | ->having('count(t.id) = 0'); | ||
102 | } | ||
103 | |||
104 | /** | ||
88 | * Find Entries. | 105 | * Find Entries. |
89 | * | 106 | * |
90 | * @param int $userId | 107 | * @param int $userId |
@@ -92,12 +109,15 @@ class EntryRepository extends EntityRepository | |||
92 | * @param bool $isStarred | 109 | * @param bool $isStarred |
93 | * @param string $sort | 110 | * @param string $sort |
94 | * @param string $order | 111 | * @param string $order |
112 | * @param int $since | ||
113 | * @param string $tags | ||
95 | * | 114 | * |
96 | * @return array | 115 | * @return array |
97 | */ | 116 | */ |
98 | public function findEntries($userId, $isArchived = null, $isStarred = null, $sort = 'created', $order = 'ASC') | 117 | public function findEntries($userId, $isArchived = null, $isStarred = null, $sort = 'created', $order = 'ASC', $since = 0, $tags = '') |
99 | { | 118 | { |
100 | $qb = $this->createQueryBuilder('e') | 119 | $qb = $this->createQueryBuilder('e') |
120 | ->leftJoin('e.tags', 't') | ||
101 | ->where('e.user =:userId')->setParameter('userId', $userId); | 121 | ->where('e.user =:userId')->setParameter('userId', $userId); |
102 | 122 | ||
103 | if (null !== $isArchived) { | 123 | if (null !== $isArchived) { |
@@ -108,6 +128,16 @@ class EntryRepository extends EntityRepository | |||
108 | $qb->andWhere('e.isStarred =:isStarred')->setParameter('isStarred', (bool) $isStarred); | 128 | $qb->andWhere('e.isStarred =:isStarred')->setParameter('isStarred', (bool) $isStarred); |
109 | } | 129 | } |
110 | 130 | ||
131 | if ($since >= 0) { | ||
132 | $qb->andWhere('e.updatedAt > :since')->setParameter('since', new \DateTime(date('Y-m-d H:i:s', $since))); | ||
133 | } | ||
134 | |||
135 | if ('' !== $tags) { | ||
136 | foreach (explode(',', $tags) as $tag) { | ||
137 | $qb->andWhere('t.label = :label')->setParameter('label', $tag); | ||
138 | } | ||
139 | } | ||
140 | |||
111 | if ('created' === $sort) { | 141 | if ('created' === $sort) { |
112 | $qb->orderBy('e.id', $order); | 142 | $qb->orderBy('e.id', $order); |
113 | } elseif ('updated' === $sort) { | 143 | } elseif ('updated' === $sort) { |
@@ -210,6 +240,19 @@ class EntryRepository extends EntityRepository | |||
210 | } | 240 | } |
211 | 241 | ||
212 | /** | 242 | /** |
243 | * Remove tags from all user entries. | ||
244 | * | ||
245 | * @param int $userId | ||
246 | * @param Array<Tag> $tags | ||
247 | */ | ||
248 | public function removeTags($userId, $tags) | ||
249 | { | ||
250 | foreach ($tags as $tag) { | ||
251 | $this->removeTag($userId, $tag); | ||
252 | } | ||
253 | } | ||
254 | |||
255 | /** | ||
213 | * Find all entries that are attached to a give tag id. | 256 | * Find all entries that are attached to a give tag id. |
214 | * | 257 | * |
215 | * @param int $userId | 258 | * @param int $userId |
diff --git a/src/Wallabag/CoreBundle/Repository/TagRepository.php b/src/Wallabag/CoreBundle/Repository/TagRepository.php index abf915fe..9d127da7 100644 --- a/src/Wallabag/CoreBundle/Repository/TagRepository.php +++ b/src/Wallabag/CoreBundle/Repository/TagRepository.php | |||
@@ -7,13 +7,39 @@ use Doctrine\ORM\EntityRepository; | |||
7 | class TagRepository extends EntityRepository | 7 | class TagRepository extends EntityRepository |
8 | { | 8 | { |
9 | /** | 9 | /** |
10 | * Find Tags. | 10 | * Count all tags per user. |
11 | * | ||
12 | * @param int $userId | ||
13 | * @param int $cacheLifeTime Duration of the cache for this query | ||
14 | * | ||
15 | * @return int | ||
16 | */ | ||
17 | public function countAllTags($userId, $cacheLifeTime = null) | ||
18 | { | ||
19 | $query = $this->createQueryBuilder('t') | ||
20 | ->select('t.slug') | ||
21 | ->leftJoin('t.entries', 'e') | ||
22 | ->where('e.user = :userId')->setParameter('userId', $userId) | ||
23 | ->groupBy('t.slug') | ||
24 | ->getQuery(); | ||
25 | |||
26 | if (null !== $cacheLifeTime) { | ||
27 | $query->useQueryCache(true); | ||
28 | $query->useResultCache(true); | ||
29 | $query->setResultCacheLifetime($cacheLifeTime); | ||
30 | } | ||
31 | |||
32 | return count($query->getArrayResult()); | ||
33 | } | ||
34 | |||
35 | /** | ||
36 | * Find all tags with associated entries per user. | ||
11 | * | 37 | * |
12 | * @param int $userId | 38 | * @param int $userId |
13 | * | 39 | * |
14 | * @return array | 40 | * @return array |
15 | */ | 41 | */ |
16 | public function findAllTags($userId) | 42 | public function findAllTagsWithEntries($userId) |
17 | { | 43 | { |
18 | return $this->createQueryBuilder('t') | 44 | return $this->createQueryBuilder('t') |
19 | ->leftJoin('t.entries', 'e') | 45 | ->leftJoin('t.entries', 'e') |
diff --git a/src/Wallabag/CoreBundle/Resources/config/parameters.yml b/src/Wallabag/CoreBundle/Resources/config/parameters.yml index abd9ab68..6068e84c 100644 --- a/src/Wallabag/CoreBundle/Resources/config/parameters.yml +++ b/src/Wallabag/CoreBundle/Resources/config/parameters.yml | |||
@@ -6,7 +6,3 @@ parameters: | |||
6 | google_play: https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche | 6 | google_play: https://play.google.com/store/apps/details?id=fr.gaulupeau.apps.InThePoche |
7 | ios: https://itunes.apple.com/app/wallabag/id828331015?mt=8 | 7 | ios: https://itunes.apple.com/app/wallabag/id828331015?mt=8 |
8 | windows: https://www.microsoft.com/store/apps/wallabag/9nblggh11646 | 8 | windows: https://www.microsoft.com/store/apps/wallabag/9nblggh11646 |
9 | socials_url: | ||
10 | twitter: https://twitter.com/wallabagapp | ||
11 | google_plus: https://plus.google.com/+WallabagOrg/posts | ||
12 | facebook: https://facebook.com/Wallabag | ||
diff --git a/src/Wallabag/CoreBundle/Resources/config/services.yml b/src/Wallabag/CoreBundle/Resources/config/services.yml index f8835198..23e6d3ca 100644 --- a/src/Wallabag/CoreBundle/Resources/config/services.yml +++ b/src/Wallabag/CoreBundle/Resources/config/services.yml | |||
@@ -119,3 +119,17 @@ services: | |||
119 | class: Wallabag\CoreBundle\Helper\Redirect | 119 | class: Wallabag\CoreBundle\Helper\Redirect |
120 | arguments: | 120 | arguments: |
121 | - "@router" | 121 | - "@router" |
122 | |||
123 | wallabag_core.helper.prepare_pager_for_entries: | ||
124 | class: Wallabag\CoreBundle\Helper\PreparePagerForEntries | ||
125 | arguments: | ||
126 | - "@security.token_storage" | ||
127 | - "@router" | ||
128 | |||
129 | wallabag_core.redis.client: | ||
130 | class: Predis\Client | ||
131 | arguments: | ||
132 | - | ||
133 | host: '%redis_host%' | ||
134 | port: '%redis_port%' | ||
135 | schema: tcp | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/annotator.min.js b/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/annotator.min.js deleted file mode 100644 index fdc35c69..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/annotator.min.js +++ /dev/null | |||
@@ -1,23 +0,0 @@ | |||
1 | /* | ||
2 | ** Annotator v2.0.0-alpha.3-0f076c7 | ||
3 | ** https://github.com/okfn/annotator/ | ||
4 | ** | ||
5 | ** Copyright 2016, the Annotator project contributors. | ||
6 | ** Dual licensed under the MIT and GPLv3 licenses. | ||
7 | ** https://github.com/okfn/annotator/blob/master/LICENSE | ||
8 | ** | ||
9 | ** Built at: 2016-02-26 15:02:00Z | ||
10 | */ | ||
11 | (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.annotator=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(require,module,exports){(function(global){"use strict";var insertCss=require("insert-css");var css=require("./css/annotator.css");insertCss(css);var app=require("./src/app");var util=require("./src/util");exports.App=app.App;exports.authz=require("./src/authz");exports.identity=require("./src/identity");exports.notification=require("./src/notification");exports.storage=require("./src/storage");exports.ui=require("./src/ui");exports.util=util;exports.ext={};var wgxpath=global.wgxpath;if(typeof wgxpath!=="undefined"&&wgxpath!==null&&typeof wgxpath.install==="function"){wgxpath.install()}var _annotator=global.annotator;exports.noConflict=function noConflict(){global.annotator=_annotator;return this}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./css/annotator.css":2,"./src/app":13,"./src/authz":14,"./src/identity":15,"./src/notification":16,"./src/storage":18,"./src/ui":19,"./src/util":30,"insert-css":6}],2:[function(require,module,exports){module.exports='.annotator-filter *,.annotator-notice,.annotator-widget *{font-family:"Helvetica Neue",Arial,Helvetica,sans-serif;font-weight:400;text-align:left;margin:0;padding:0;background:0 0;-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none;-moz-box-shadow:none;-webkit-box-shadow:none;-o-box-shadow:none;box-shadow:none;color:#909090}.annotator-adder{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAAAwCAYAAAD+WvNWAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA2ZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDowMzgwMTE3NDA3MjA2ODExODRCQUU5RDY0RTkyQTJDNiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDowOUY5RUFERDYwOEIxMUUxOTQ1RDkyQzU2OTNEMDZENCIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDowOUY5RUFEQzYwOEIxMUUxOTQ1RDkyQzU2OTNEMDZENCIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjA1ODAxMTc0MDcyMDY4MTE5MTA5OUIyNDhFRUQ1QkM4IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjAzODAxMTc0MDcyMDY4MTE4NEJBRTlENjRFOTJBMkM2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+CtAI3wAAGEBJREFUeNrMnAd8FMe9x3+7d6cuEIgqhCQQ3cI0QQyIblPiENcQ20KiPPzBuLzkYSeOA6Q5zufl896L7cQxOMYRVWAgxjE2YDq2qAIZJJkiUYR6Be5O0p3ubnfezF7R6rS7VxBlkvEdd3s735n57b/M7IojhIDjOKgU9xfchnXrFtPjltE6Gne/CJQrj9bVmQsXrqf/JuzDTRs2EO8D52dmap3Hwz/9+X9K/PTtPeGnyBL/oS2LPfwzXljXjv9g9kK/+H8WNXsxB8aPe8SPPAKy+v3GvR7+n0fNacfPaQiIfch98vHHY/R6/bL+ycmLhg0bhq6xsXednjHdbGhAYWEhbpSUrHU4HKv/48UXz7GvNq5f36YTGQsWaA0+N3XeR2N4Xr8sKTF5Ub9+QxEZ1ZWe/673AM2NN3Hl6vcoKy9ZK4qO1Ue2LZX4Zzyf1ab1g1sWafK/GjVzjA78sjE/GLto8oxpiI/vA4h3EZ22KhIRFRUVOPT1AeTnnVsrQFz9QeM+id9bRHoteFaZeCakpS1KSkqCzWaDyWTCvSjhERFIm5SGuLi4JSeOH2cfveQWjLeItPg5TrcsdczERTFdk2G2AMY61+V0V+eAg8EQi8HDJqNnj95Lcs+28jPBTH/un37z6zh+2U8XpC8aO3QUSIMV4qVbd78DPNAnNAaZz83HqeFDl2zfsMXD/17jHvw8ulVEvBb8P9eulSwPU31jY6MkIFEU70llbZnNjeibkIDExMQljMXNRUUkWU6ibEo4mfVZlpiQvCiyUzLqjYC1hdpmevWKd7myNlhbDbeByM4DEd8ncQljcXMd2kq9kaQCbf7XomctG00tT2rScJByM9BsZ+YBkgm9m1UgUlukzIxx/Udg+KgRSxiLm+s98x5OS0DuTvC0LB0ydAgsFus9E453tVgsSHl4OINZKufVEJCHn+P4pX2TUmBsdgmH3NvqoG2aaNv9B4wEYwmUn7qupdPSJkNssECkkyqK97iyNustmDnjMTAWJb3o1a6AH86ZE0YnLSUsLAxWdjndxxISYmC+KGXkyJGGc+fOsVEXifroS/wJQ2aH8RyfwuliYLfffauvViSrFNaJubWUbnEjDPWV5yV++OBPDekfpjPoUnqEdAFpbrl/HaAiiuWjqZr5lP76HoZrjlonP+ck4tWi/oS+fSN0Oh0dfBsEQbjP1QEai+GRceOi3YwLFy/mFObAwx8VEx9BOw2b/d64LS135hB46PQ69EgY6+E/vO1FjrSPhj383XWdIgwGA4iFuhJ6EiLep0rb5h0EIaEhGGyI8/C/Z3K6MVULZLFaeTZBbldyPwtrn7EwJlmMQLRiIIfdIvELrknUSPnQaCxDk7kqYK4e8WNhs95GSFgMc1GqxzkEp8tiTP7y2+Dg2TspLBGJRr5HUG6uRVVjfcD8qb2GwtjSiM6hUdTf85pWiLFITDJ+9l/VLMxht3NuATEroFbs1D+sWfMRNm3aFHAHvv32Wxw7loNHHnkE4eHhGgLiXRNg52RXqWYMIQr0WJqOSvGIhoCs5nI8MyMUT82cGDD/whWlGJpowaUbTdCH91EVkTT/jEVoy88+U+WHyHkuHo0OlFvqEPHjAZg699mA+Ytf2gnb4EiYixsQZ+iiKiLO1b6LifNK2JSvALsgcCK7gn24l3/84x9BiefGjRJs3LgRK1asxOrVa6RgWasdxsKYZFeA9JkaPxGd/CwYFDTqE9OYePoEzL/490Y8Ng54Y8kgPEnPYWmsoJZGUGxDCkhZ0Cy25deyQAKI8xiRaNbIHw5AwtyRAfPXvrYP+mnxGPafjyLy8WRUWm7ScRZV23GuLpI2/FoWCILD4UmVtVzY7t17pNedOz/DuHHj/IvL6EAfPXpUEhB7/+mnn0qB8qJFi+hriOLCouSOKJP35+pWi/GLPl3Y9PHdpdd3PmlBcTnve4lQFKglNCIxrjOendMXOp7DE4/GweaowFfHacqli2rfX5GxihJTW351MHa1Ow2XtgXqOWWQ9Gr6v1zgutmPmFiEyd6Mzgnd0O3JUeBonNj38REotYtoPlCFSBKmmAmQVgskc5/tBcTJV6iJy31pubCWFmeGFh0djStXrvjsALM0Z86cxejRo/CHP/web7/9R2lx8rPPdkquLCUlRVFwRPQkLq2MYrvggGt9lYIHnwIKMThFc6OaaMdK7gl31GFIvAVXK5uwcXc8np+lR2Q4jx9N642L5QKKy6AoIKe7asuvENxwbV453y6MD3FOob3CBJ2onaoxK9hAzLAODEfj9Urot11GxDODwEcYED87BY1XHBCvGZVdGKfASHug17ASflkguZBY1qZVrFYrvvzyK8nlTZkyBa+/vhy/+tWbePfd95CZmYGHH34YDodD3QI5XZh/FsjFL/oKomWT7PM4Wx2mjgGef3wAvsmtxebd5eD5BDwzHdh/muBqhfI5RNHJKgbA73FhgjMT8mkZaaDr67gGwQw+rTeGPTsG1ceKUbK9EP2oBQ2bmwzb0TII143KHXB95mbyZyvD2WFpArQtkDxT8nXcnj17sGvXLixYkIkPP1xNU3Mdli9fjuTkZAwYMAC3b99WHFTGICosvImam1rE6TZ8BNHyeFbrOIu5ErPH6yRL8+XRevxkVk8a89Rg2yEzymujcfmGugVzLh6L7VaetVxY674U0czCWseIJkUax1U1NSB8eiL6zh6Oqq8voM+TI0AcIhq+uIqYqibYi2+5on0FDEK8QudWPrUgGm4X5lyVVF8plgtIq2ZnZ2P//gOSeE6ePCVZmiNHjiI3Nxfx8fG4efOmM1hW/D2Ru7BWRuUZ59yTI0/j1ao8U1U7pslUhSemGvBYWg98cZi6sKQQ6HUcpozrjv4JUSi4SlBbcU6zHacVFdsxauzAA7IYSK16RKlxTDVN8aNooBw3Yygq9hQifGA3KfbpNWkQovt1h+1iPfJriny0o8zIq1+/8Fz1WtXbzSjV7du34/jxE3j66aewb99+nD59GrGxsTRoXojhw4dL+2zp6fM1zyGxKPh0TQskiU97oU82/u0XAanIm6l45k7SYcrYbjhwvAGpw8IxalgMjI0C9p6gqXBJC+rLT2Hz/4zQbKfNZPtjgVy5DnNNoiCq1lb+9t/ZHHZpfSh8Vj/0nDAQ1UcuI3pkHGIf7guHyQrrgRtoLq5DbvUFjP94gWobxLUO1M4KcRoCgmfyxKAtkNlspsHxZzTj+gZPPfWkZHFOnTqFLl26UMGkY968eaiqqsKsWbOllWa1NtzWxPs+DK0YQmKH6HO/Su5m2uxjOWzgHJX40eQQzJjQHfuP12Hk4DCkpsTA1CTi65PAvw6LiIrkcHhjmuI55JUo7F74dGF+WSDl42yUv1q8jaiZyeg9dQgqD19EVEpPdBuVCMHcAuvhUjR/eQVcpAFzvnrdZ1tqRTsGoj9soYGvpbnZZ0dZgCyf4Pr6euz8/HNqXZowZ/ZsfL7zc1y8dAnstpDXXnuNZlw/QGVFRZugWa0dGip5VqO94y5Nfnr11Jpo8GjSWsl1lhp6TKOVuAbSjq5htUif2wU9YsPw9bEGTBnTGQ8NiEJZjQPrdhPsO0Ngp+gtQqsLrDIqt2Ojsad0JXsLyEdwxgRWe+EaBKNV9Ziu4mPSa92F60Cj3bnyTQSYYoGkF9MQ2SMGJbvOoMe0oYhN6QtL6U3UrT0N417qsuwUvmcE4thYOgTUFChn0brOYcpi11oHct9swG4207hjsa3FdR1369YtfPXVbjQ3NUuZ1cFDhyTxJCQk4KWXlmLUyBGoq61t5/DV2mGfK938QHy4MCkyVr1rQrnDRHSgU0gd5s+JQq9uYSgsNmHiyChJPBV1AtbvEbAvl6bN7iUdoqBGxXO3d2Hww4VxAtsW8OMeJHaMw7XO04Wgb+Z4RPXsgvqCUnSnsQ4Tj7X8Nmo/zoVp92WqatE59kIro1o7jCFgF+bLdKkVFs/s+vJLlNy4IYnn22+/ke4s7NOnjySeQYMG4ZZKtuWPKffXAkliCOLWwwjDbaTPMmBY/3DkF93EhBERGDE4GtUNIjbsJTh9kW2rcAGf1+mCA7kAPHsamtX7uKYIET0XpCImJR4150rQLW0AdVtJaKkyoeHjM7AeKwXv0D6HVjv+uzB3Bzn4Z4FcluokjXHYWk9cXG/s2LEDVdXVGDhwIN5++w/oS7Mto9Eo7Z+5B09+btV2OHdM4/8EEFcaH5gBIpg+miD98ThU1bXg6RndEdc9FNcrBfx5sw3fFet8nkN9LEUQBB4D+ZrA1lTbue3RaeZADF4wGU0Vt5A0bywi+3SF5WoDKn53AC1nKtunUV4CUmNQmxefMZBLQX70gJOyory87ySBlJdXSGk5i3lWrPg1uyEMdfX1bY5v8+r93os00BgIUuAtBGQlOGLDlNERMOg59OkRCh1N1ctqBLy7TURZnR53clOOxOIlGE0+uQvzoxvsGAc9f4/pg8EbdIiK7wpOz8N64xZq3zkC8bpJ+Tyil6sK0IXpfWVhfsdA9Bi2lsPclfvfDz30EJYv/y/JfTFRsaq17KEZAwWahYH4dYXLS2xUE0YN6e7hKioTseZzEXlFzoD5TkqwFogXtUMl+XH2biHolprkGVbrhVrUvXsc1hMVUsDMqyygus0kL6qfO+gsTEl4ahdMYUEhevXqheeeew5paRMl12W1WNDU1OQUo49VM07j3IFbIBJQDCTYTJgwPgb1Rg67jjtw5hLB5VKaEJi19sjYBi/bwIz0MwYKfCWaJ/4JqEmwonfacIg1zbi54wKaj5XB9n0thAYLtSCi4tgyQVscLZ4xVhUQgepKtM8YyJcFiomJkdZ7mOtiT1E8/czTUlvSExw03nGn6UrnYC7ufP556X337t19WqCAYiDXSrqvYmwiiIoAUgfcwjfHS3Ekh8DcJMBqE6jV0RYgc3EjU3rQd73QYPQjCQgkjWdxHxOQQPsuqI+/eIum+NFhcIzvgfzDuSAHTsFuskCw2CHatX0fc3GJ41Kdc1HXLLWlKCDGoGBJiIqASBsL5ENAmZmZeOedd/Dff/7zHZn4n86bpykgLwtENCwQke+F+So7jnD42U+A/31jyB3x//sYD60Htrz2woiGBSJtLBC7g0JUH/+mdQUI/c0k/OCjzDvit26+AJ1KOxIDp8DoTwwEHwJ64okfIzw8DCtXrgoYmu3es62M+fPTkTZxIhoaGjouBnKtRPsq2fsFKb5543ldwPxMvxdvEHz+rYAvckSt/CLolWieXeYah5k/yqPmXkDXP04NXDUCQUtBDRo3FaJpy/eqazq8xrKFqoAKCgsbJ0+Zwp6NkTIotcmqr6vDzMcek24GC2ZthN0fxITDnkRVEqr0Gf2/xWq1HTh40OjvXtjt2kuNvRIfgY46dl7KENU5th8WpHo3Cs+sCC/QGKvZVn09x+jvQmKRtapxnDAAOnbbjchpJoDNa/OleidFB/UlFFZaHDbbCXOR0VcM5MYkNTU1gt1mO2M0GVNDQyNosKg+wEwAatbD7xRaxcqxpxnY2pHDbv/Om1EhhvB8Z22qpyFWyxnOXpaq1ydIT2fcj6KnI8y1lFFrpcBP1Pkb7GbBQYQz1Tpzam9dGIhNuC/8XIgOFbwZAsR2/NqbqfQAk9mclZd3nrqoUPDU3XDUEt3LysQTFhaKgoILMJpMWd4LMdq78TRzbWnMaijZg+hwZkXv/eDraJus7VtlB2Gzmtvx+3BhpFlsyfrG+j30ESHQcbwUo9zTSttkbZ+0XUYTZWm3EKYiIPfiLXn//fe3FhUVbygs/B6RkWEwGPSSO3MH1nersjZYW0y4hYUFuHDh4oa//vWv2+VsGjGQ55hLp7O23qou2GCv34Ou0RxCDezc7pju7lQnP4ewEA5dogjsdV+hoTJvw+XcdQr8oiZ/VtWRrRcbSzccNRRB3ykMOjb+7H90cu9qZWKlbek6heKw/jIKzNc3rKs60p5fIwYirpRCzMnJ+RO7FbO8rCxjzJjR6BzTBexpVfcEOhyilKqLYnCrtGyw2Z2JrLrdGHuU2nj7JnLPnMX1ayXrjxw9+o6bp00qI4rwxV9XdvZP9ECuU31RRvd+M4GweBBdJ9c9RtS322gGYvPvtlc1KxMWAoSGOOMdqQ+CEZytAnUX98JYf3l9bekpRX6NPxPi4T9jvvYnGsNy10NrMqbEPoQ4eydECqHO37IO2GhwbnU4bwcIqgP05KFUBqG81AGOVhPfgmqDCUeshSg2V64/aSxS5tdI491VOHHiRD2tby7IzDxcUlKaodfrh1ML0c198JChgzFhwgTYaJARqIiYeEJDDcg9nYv8/EL5AmENFeWF2trajes3bNjLlpXg3DcOyAKx39RX5NXT+ma/4U8dNtVfzuB43XCOa+WP7TMWnfu+AGMTH7CImHg6RVIRVm5HWWmO3DXVEFG4YG1u2Hi9YKcGv+iTP890rZ7WN5/t9cjhq7aqDD3lpz7Awz8quj+e0o8CZ3Y4H8YPVDyRIdgVWYBTlstOQkF67rrGYREu0Dhs447qk6r8akE054Z3vWcrgbxrIg9KAbuzMvfHv/rqqyx/f2EiTcMDEZFbPKdOncaxYye2/u1vf/u9TOWCq115FWSdwFtvvUUUYiBVftdEtuMfOMa8qhchL3ROSA9IRG7xWCu3oap479ais5sC4h82fqlaEK3I75rIdvwL46etQiT3wjNigCJyieffEfk42JS/NavsUED8rybNIWouzG0+OVknIDt5mw588MEHv6WnY4/ppk+aNMkvETHxsOfATp48ycSzhZ7jNzJwUQbr3QE3m8bfVgiMv/jspt+yxzd6gqR3Tpjvl4g84qn4FFVX9m4pOrs5YH6NFD4g/nXlh3/LJXCEi+TSf+KviFzi2RlNxdNcsIWKJ3B+V7jhKwaC68dEdmJe1gGpM1QAq1555RV2zPzJkydrisgtHuoWmXiy6W9XymAFlY4I3j7Yxz5XQPxFeZtXsYioJxHnd07M1BRRq3i2orJ4b3ZxXnaQ/GKH8WeVHlqFRI4gGvN/SkaDM2mIiIknKgSfdTqPg5b87KzSg0Hxu2WtZoG4Nmpr3wFe1gF2DvHvf/87BXmFWYaMqVOmKIqIBWihVDzHqXhyco5n09+soB/bvVQuqlSP7/3lL3/pywIFzF+ct2WlcwsfGZ2TlEXkEU/5Fqd4vtsSFP/QcYsJOpg/6wYVQhIVUScu4zlxNHglEVHxgIrnX53PY39LQTb9TVD8ryQ/7qHXskDenZGbVvdfadDJG6WCWEXIy2xsMqZNYyJqzc5YdsJinmPHjkni+fDDD3/tgpd3QAm4DfwvfvEL4scue1D8VBDMEqEXCBXRgjYicovHUp5NxbMn+8p3nwbFP2TcQuLHFktQ/FklB1ZREYGLQcbzxEtETDzRIdjRJd8pnpIDQfG/kvwjv/5GohK8fFPf3Yl26qTCWEkI+2tohIpoGux2h3SxMfHk5OTIxWPz6oCgkCq2uaHwjTfeIAHcohEUPxXGShaf9IJIRbRIEhErTvFsRmURFc+5bUHxDxmbSeD/PUpB8WeV7F9J+nEgXbiMdLclYmNGLc+2rvnYZyvIXleyPyj+lwfMbTf6ej+vBO9/K5lYT2OrV69e6XwkCBmPPjpDsj7s0Z6cnGOb6Xdu5du84NunibS8/vrrxJ/N047kv3Juu8Tfi/J3TV4srdk33tjELM9m+l1A/INTM+45/7rr+1aiPz0olsuYz4+RNkM/7XoO++35m+l3AfG/PHCuJrQ+yM4QtL3JsV1H16xZs4IKh32eyf7ihks8b8lUr2Q6iVwwHVwC4r96fgfll1brMnX6MCqe3VQ8//LJPzg13etc4n3hX3dt3woumY5/F2SGwoB9joLNWdf2+eR/edCPAxp/fQd0SJ4ttFkMY4KxWCx5Op0u4pNPPlkvi/YV4ZcvX04IuWd/DNAnPxOMYG/J4zg+4lrhFz75B495geAB4s+6+vVbln72PB3l33ztgE/+ZYOfCJie8/GX6v06h8wnyzMDveu9/CqRp4vtxBNM43/5y1/ueMO5I/gl8QRRLp/NfiD4mXiC2oq6U3rXxBOFVUzmY1tcr/Lq6CjxdERxTfwd8Qcrno4orom/I/5gxdMhAlIQkXwF064CLzwI4lERUUD891M8KiIKiP9OxNNhAvISEVFZDpevaJIHRTwKIvKb/0EQj4KI/Oa/U/F0qIA03JnS+wdKPD7cmSL/gyQeH+5Mkb8jxHOnWZiWiOTBLVH6/kEtbmHIglui9P2DWtzCWH3534r8HSUcd/l/AQYA7PGYKl3+RK0AAAAASUVORK5CYII=);background-repeat:no-repeat}.annotator-editor a:after,.annotator-filter .annotator-filter-navigation button:after,.annotator-filter .annotator-filter-property .annotator-filter-clear,.annotator-resize,.annotator-viewer .annotator-controls a,.annotator-viewer .annotator-controls button,.annotator-widget:after{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABIAAAEiCAYAAAD0w4JOAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6RDY0MTMzNTM2QUQzMTFFMUE2REJERDgwQTM3Njg5NTUiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6RDY0MTMzNTQ2QUQzMTFFMUE2REJERDgwQTM3Njg5NTUiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDo2ODkwQjlFQzZBRDExMUUxQTZEQkREODBBMzc2ODk1NSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpENjQxMzM1MjZBRDMxMUUxQTZEQkREODBBMzc2ODk1NSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PkijPpwAABBRSURBVHja7JsJVBRXFoarq5tNQZZWo6BxTRQXNOooxhWQBLcYlwRkMirmOKMnmVFHUcYdDUp0Yo5OopM4cQM1TlyjUSFGwIUWFQUjatxNQEFEFtnX+W/7Sovqqt7w5EwMdc6ltldf3/fevffderxSZWVlZbi5uTXh6rAVFBTkqbVubl07eno2d3BwaGgtZNPGjYf5wsLCDRu/+ir20aNH2dZCcnNzN6uPHTv2S2xsbHZaWpqLJZqJIR9FRMTxdHFJeHiiJZrl5+fniiF0jRdumgsjyOZNm44AshHPxAnXeXEhUzAJJEF8j5cWVoIZg9CmqqiokK3CksWLX3d0dJwy+f3331Cr1RoliEajMQ4Sw2xsbHglTZ6CampquOex8dxz2l5gkEY4qKyslOu1Qa6urpPRs9VkW2RjFmskQCaFhASQLZEZkDlYBBJDnJ2dXSnwmYLxpiDCdVMw3hyIObCnlr1g/nwfQCYpQcQbOTM5tbgDeDEkZPLkoaYgSpqpKysqnkIaNWrkYq7dUEim0EwhmkI1bw1ETjNVTk7OA2sg0jarDyO/ZhiJjtpS4923L1dWVs5VV1vW8Dyv4uzsbLnkc+c4dceOnn1LS0vat23bhnvSgypOpTItajXP2dvbcefOneVSL146ys+dOzvgyuWrMadOJeKGrb6AeRBb7syZM1xqyo9HwfDncZ0L+0dowGXATpw4qVfVGEyAJCUBkvrjUTzrTwzUkirDcfOewk5w9oBp8AD9iljoGt07rTvNpaRcPDqPIOx5+mlOkPnz5wakpV2JiU84ztlRNTVqTsXzeuHValyz4xJ1Ou4CICjrL37WoPsXLAgD7HJMXFw8Z2ur4dT8E23s7Wy4UydPchcupB5FGX8ZOxKUeyYLF84LSLt0OebYsXi9ZvYOdtwJBsE9f7lnVAUFuYp2smxpxJFOnTu9aWtry6VcSDm6cNF8f6WyRkEMFg7rclq0aP7fjZWrDyNmeL9c8iDedu7YMRK7xoHjx28y2tjGcsivt29PaOTsPNAGeSIGidNBwcF9La6aAPH18+UG+QzmtFqtN67pLALt2LYtAUOUHoLMWO/1BMM45o17OgUQ2dEz2R4drYf4AMLzakTNahY5n8FQRid9rpZG26KiE5ypOkP89JqIjZWOVSqeG+zrw7lp3bxRVidbteitUQnOLtQmhhApzMfXFzCtN57R1QJFbdkKiMtAP0Ao7lB16CE5oXtUTYJRB+BZPUzd6uWXE1xcXQcO8R+iqIms3aADWrdpw2VmZrbQJeoCeBdoYinkWTVVHNVC21jrrSopKakh67Y2ChCMXmw0xizbXM2I8dyc9gUObBpTBTw8WqixGw45n5GRnl4XjaZD9kP+DaibVSA8OAu7SHZKWm3GtTYWgfDATOxWQGxElynsepkNAoSq808JhII7DZKHzWpsQGYwiPhHyPzD0NifmtVGrE1WUlSQaDIXkNVm2REgc1jDiqtTBQk1pkmtqgEyCLu/SqpKkFmArDHLsgGxw57euaiXIkSQOeZCBI1egtCs324IxVGy3s9NtYkcqCtkGBtXHkLeAyTBGl8rZPZxCfIAkNIXLB6h9/4A6a/gMv0hvUyCUKgLdlsoXODYXwJ5E7sDzPM7G7OjPtjvgnjSizNkqwDDPoD9AL08E2QXaa7Ua40gLUTXmkHW44Gd2I9ndiZsLVh52ar9AAlmNiRs7eg9ByIOYtkMHGe0+6HBW9ithbSSKXcH8iFs7DuTvYZC31KKpFAuyhhE2v3kJkEK5YJZwytbtru7B8GGQjZCmhopmwkJgcRCu2o5jXwh2yWQWyxS3pH05teQwUpVK4Jkia49YA07l/ast8T3ihR7DfXvhuP/Mq2CATksarsRrBPuQQJx76Kp7vfGzh4F42V8zQe7YtxL+u2EkVoDZJ8+fej8VQi9vPRmg8BpCKXAN5OSkqpNVg0QR7VaPR3n05FLN6k9mcJnYLcK178ErEQRBIgTMtMNyG4Djaqv0XyJMtMBM4jrPCC8vb19KEHatWtXMHbs2LtOTk7lQoHGjRuXjBs37q6Hh0cRyvwZr+5/kW1s3GhXVVWlfxXv27fvhTlz5iybNm1aCuBVeEsqnzFjRmJoaOjS7t27X2fVXIgfdzfQtnnz5sPv3r2r/3/Rvn37WkdHR/8I1UNdXV1X4kdK+vfvPxsPNm3YsKE++JWWlmpbtNBH0C21QDY2NgOEk8LCwlY4340HhwM2DZfKcaxFJ+wsKip6OlfZoEGDwVIQD/Vrzc1Ciyb+/v4UGS9A0nx8fDxRHSdxGbzTaQ2q1qpVq3vnz58XGrYUbZIM0FVo0gOXyqBZ8p49ey6tW7fO8/Hjx7ZUrm3btgbZLe/p6Xnczs6ODI8bMWJEGiDTAfGAFjGo5nc4rh4zZswMaKYPKdSjXl5e8XLdfzQgIEBf6ODBg2qcv47qRcH4GuNlpRWOd+Bap8TERH0CNnz48Gv9+vVLkDNINXrtg8jIyEWootaYQaIHs2AKc5s1a7aVZS8GLuJ0//798M2bN4+NiYlxxztcLR90dHSsGDlyZHpwcHBU06ZNKWUuNRZGnGAjwTdu3BifkpLS7PLly05oJ65r164FMMZ0WH0UXIRG5GJz4pGajaad2RBOnXCZSYa0OrVAMueOEFc23tODuUyKxSBpQBS3hcbd3b396NGj+/v6+np16NDhVfRcNar40/fff5+ya9euk/n5+XeYlsoRomfPnv3j4+O3oJ0e1Ug2uMeDQ4cOfdmlS5deQlSVzgfoqzNkyJDXrl+/Hl9jYrt48eIh/GBHWRCq4HTq1KmtVLC4uDgZu48QVrKFhxGD7mC3DCZxjc5jY2M/o9HGAAQfGlBeXv6YCqEtKLd2weFYNM9jALNwTJ7e5OzZs1Hsx7JXrlzZ3QCk0+nmCb+el5d3Jzw8/ANKpnDqC6FBQLt27dp5CDGZQrnjx49/aACCe2yRNOx9wPsJvQBN3iorK8sXl7l58+bnUpDGwcGh1lQEQqyNt7d3GYUdeqXo1atXKQraissgWlbIDAyaZOzfZ/8+TMd5iEqluhMWFvZHmEIpjncDNAHttR6RUsuC31kDA4LanihUxOq+ivLGNWvWzAYjF4Hs3qJFi6bgWuvU1NStrBepR1satBH+0ERLJBXKyMi4AMP7Ag2bJbRHbm7unQMHDqzPzs7+ic5RNgw7lZxB0oErfumgKYOE5tHYNVSybAHmBlkB+8mXAnDtISALcdhI7LRiUUnmgowmEWj4akXvF1+g4Zs6hYmGRUIyhXLKRIzlUuJshEYOyvZDUBUHaTaCax/jcINcAiHORlpi6NmJHulrIhtZi06ZDViF3HAE43aINAahZAIWD0bl3wD7E55RGYBcXFy84f3vKkFo9IWVJ82aNSsVY34lNF8Ky25pAELW8Ta6VnZCSqvV0hB+ys/Pb/qZM2d2oRxlI+4Y194wAKFLe9IBDduBgYG3e/TooX/dwg+UzZw5U4chnNKatgjDoXAnDc07oikGGrQf1G1AB+3bt8/FABgJ1duvWrXqvUGDBl0HZBYgbSgtRBu6irIRZwONkDTRywqH0UL7zjvvvILBMQLD9+qhQ4cS5GVAvkIju4pMoQY/+osBCDFbh8arIkdEo89euHDhAgC+ZZpsFEP0bzbNmhUhG/nBADRgwIADqEbG0ymaqqrZqN5+xJ5NgBhMzmHcO4cU57gBqGXLlmkTJ07c0K1bt0dPp68qKjoCaLAOibJbZL00o5Oj5CKu6enpS5CIvo3hpjnito2kOsVBQUE/jxo16hP0zUY2q6OYRDijjQJv3boViDzJHdGyCaUz6Lnszp07X0GnbGRv5JXmZCPk/ZRD08wE2UoBez2/xhIJztxshGfZiBsbRSgePWKQEuk8tlI2Yo8M1xOJZz9kI52QWL2CqpYg6F9FHE/duXMnrX24K9c+4s0B7jEKxngQXV6ikI18gQy4h7FsRD116tQ3MzMzL5kK/uiEfTDgNrIgdKv7lStXYk2MHlmIkAV0jKHpYyRkDQxAyOqDULDMCITSGh/kRpMoa8GWsXr16l5SEA8H7AdHtJVrOGjxC+5NQui4mpyc3Ap7Ncb95sgHDGe+7t279x0biovhGovx8H6mSQZpQoYdFRW1VEgJcb/q9u3b6wyq9vDhwz1suD6PzL4nUhZnnG6AUBRshiQ+HJA80WBZmZWV9YkBKCcnZxErUI3R4Ru4Ak1wksO6b9q0abEYwjQtR0IWaABCKvc6bhYLBRGbd+NV9D1UJ4IyEmnjI9ymYecul43YoTfWiwtTBoJrRXK9iLYMUkwicPASChwxIxtZRm9TprKRxpDlaKocmWzkKnYTITbmZiNqNuNH89tjWSSk6aBk2FCWMe9/kf+7vnz5ilp1k55b8q+/moiI5TWiHpCemyVKD1sM44w8bDXI6mrJgercRnWGGbPsGpkB1CqDVP3GXeR3CLI4CsgZFzPGOvmaVRADkLWQWiApxKp4pACxDPQ8IIL3S728xlKHFexIVRevr3faFwZkdQIhE0ZeoJFWLh5ZBTOlidkwc6plFkwpibA4tPAW/FOh3tfqQRaBrHrRMZWNmDvyPheIrPdbmwO8wBmbNB5ZldLI2ZGq3td+RRBNz0NWWr2ShRaguLi4LFOr1R9UVVXdx6U5FoP8/Pym2dvbr8jLy3O2em1NUFDQ4cLCwoA6t9G2bdscpk6des3BwaGyTiC0yachISHX9+zZk4Qq3qtrxuYEmQWJO3v2bEzv3r2/qWui1R6y5Hl4f72vWTgjY0n78UoDZp2rplKpHCCd6gIiB+44evTod1NSUhZb21Yvd+jQYZROp9tZWVlZVlxcnKU03aFo2di8du/evVa88MQqEP58IZ0Itxakhkyj1R51AkkWDui1QzXvWw0SAWmVyjeWguq9vx70XCIkxjD6T3E4ZGlSUlK+1Rrt3buXFpPSmtFbyEimQdRWgRo0aPA2O6b/X6+DXAQs4Hm0EYXZw4CF1Qnk5uZWGhgY+CnaK9KqjM3W1rZ62LBhVydMmDDdw8PjqMWNlJubewL5UWZiYmIo/WPTmgRCiJBLIc2tBdTHo/+3tMaS1IZnRknLX23qpNLBgwddk5OT93p5edG/nFtLtTTbIOPi4uif4TXl5eUFBw4cWOfo6EgfWTS1GiRa7vnzmjVrKD9qXyeQaAuzBCS37OxnyAykf3utCiPck9U8tEIzEpASa15qaHkHLfloY860UL3314Pk4pG7u4ex+7QYhT60bA6Jh2yAlGZkpBu1bOlGn6HtF52P4Z587duVk6xpM1a1cSLIEchJkYazzG0jWuxOCTstfKMv6OhLMlquF8vuDzcH1I5BaKO1o/tEk3jC0sUcUyD69RvckwWDHIuStIDSHjKE3actwlgYoRXj/2HH9GYkfGlInyreEZ3/jXuyoFlWIy8RRBgAxJ+WCRD6cPdfxgzyI3ZMHwPu4Z6sgKaPLO+z6ze5J0usPzMVIYWPKZ0YuJr1lPB91ihImjmhlj5bfI118SlIHkRIRqeYAxFchNZiX+EMP6ScImq7WpuSi5SwTHYyc4u7rFEvWuS09TH79wz6nwADANCoQA3w0fcjAAAAAElFTkSuQmCC);background-repeat:no-repeat}.annotator-hl{background:#FFFF0A;background:rgba(255,255,10,.3);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4DFFFF0A, endColorstr=#4DFFFF0A)"}.annotator-hl-temporary{background:#007CFF;background:rgba(0,124,255,.3);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#4D007CFF, endColorstr=#4D007CFF)"}.annotator-wrapper{position:relative}.annotator-adder,.annotator-notice,.annotator-outer{z-index:1020}.annotator-adder,.annotator-notice,.annotator-outer,.annotator-widget{position:absolute;font-size:10px;line-height:1}.annotator-hide{display:none;visibility:hidden}.annotator-adder{margin-top:-48px;margin-left:-24px;width:48px;height:48px;background-position:left top}.annotator-adder:hover{background-position:center top}.annotator-adder:active{background-position:center right}.annotator-adder button{display:block;width:36px;height:41px;margin:0 auto;border:none;background:0 0;text-indent:-999em;cursor:pointer}.annotator-outer{width:0;height:0}.annotator-widget{margin:0;padding:0;bottom:15px;left:-18px;min-width:265px;background-color:#FBFBFB;background-color:rgba(251,251,251,.98);border:1px solid #7A7A7A;border:1px solid rgba(122,122,122,.6);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-shadow:0 5px 15px rgba(0,0,0,.2);-moz-box-shadow:0 5px 15px rgba(0,0,0,.2);-o-box-shadow:0 5px 15px rgba(0,0,0,.2);box-shadow:0 5px 15px rgba(0,0,0,.2)}.annotator-invert-x .annotator-widget{left:auto;right:-18px}.annotator-invert-y .annotator-widget{bottom:auto;top:8px}.annotator-widget strong{font-weight:700}.annotator-widget .annotator-item,.annotator-widget .annotator-listing{padding:0;margin:0;list-style:none}.annotator-widget:after{content:"";display:block;width:18px;height:10px;background-position:0 0;position:absolute;bottom:-10px;left:8px}.annotator-invert-x .annotator-widget:after{left:auto;right:8px}.annotator-invert-y .annotator-widget:after{background-position:0 -15px;bottom:auto;top:-9px}.annotator-editor .annotator-item input,.annotator-editor .annotator-item textarea,.annotator-widget .annotator-item{position:relative;font-size:12px}.annotator-viewer .annotator-item{border-top:2px solid #7A7A7A;border-top:2px solid rgba(122,122,122,.2)}.annotator-widget .annotator-item:first-child{border-top:none}.annotator-editor .annotator-item,.annotator-viewer div{border-top:1px solid #858585;border-top:1px solid rgba(133,133,133,.11)}.annotator-viewer div{padding:6px}.annotator-viewer .annotator-item ol,.annotator-viewer .annotator-item ul{padding:4px 16px}.annotator-editor .annotator-item:first-child textarea,.annotator-viewer div:first-of-type{padding-top:12px;padding-bottom:12px;color:#3c3c3c;font-size:13px;font-style:italic;line-height:1.3;border-top:none}.annotator-viewer .annotator-controls{position:relative;top:5px;right:5px;padding-left:5px;opacity:0;-webkit-transition:opacity .2s ease-in;-moz-transition:opacity .2s ease-in;-o-transition:opacity .2s ease-in;transition:opacity .2s ease-in;float:right}.annotator-viewer li .annotator-controls.annotator-visible,.annotator-viewer li:hover .annotator-controls{opacity:1}.annotator-viewer .annotator-controls a,.annotator-viewer .annotator-controls button{cursor:pointer;display:inline-block;width:13px;height:13px;margin-left:2px;border:none;opacity:.2;text-indent:-900em;background-color:transparent;outline:0}.annotator-viewer .annotator-controls a:focus,.annotator-viewer .annotator-controls a:hover,.annotator-viewer .annotator-controls button:focus,.annotator-viewer .annotator-controls button:hover{opacity:.9}.annotator-viewer .annotator-controls a:active,.annotator-viewer .annotator-controls button:active{opacity:1}.annotator-viewer .annotator-controls button[disabled]{display:none}.annotator-viewer .annotator-controls .annotator-edit{background-position:0 -60px}.annotator-viewer .annotator-controls .annotator-delete{background-position:0 -75px}.annotator-viewer .annotator-controls .annotator-link{background-position:0 -270px}.annotator-editor .annotator-item{position:relative}.annotator-editor .annotator-item label{top:0;display:inline;cursor:pointer;font-size:12px}.annotator-editor .annotator-item input,.annotator-editor .annotator-item textarea{display:block;min-width:100%;padding:10px 8px;border:none;margin:0;color:#3c3c3c;background:0 0;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box;resize:none}.annotator-editor .annotator-item textarea::-webkit-scrollbar{height:8px;width:8px}.annotator-editor .annotator-item textarea::-webkit-scrollbar-track-piece{margin:13px 0 3px;background-color:#e5e5e5;-webkit-border-radius:4px}.annotator-editor .annotator-item textarea::-webkit-scrollbar-thumb:vertical{height:25px;background-color:#ccc;-webkit-border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.1)}.annotator-editor .annotator-item textarea::-webkit-scrollbar-thumb:horizontal{width:25px;background-color:#ccc;-webkit-border-radius:4px}.annotator-editor .annotator-item:first-child textarea{min-height:5.5em;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.annotator-editor .annotator-item input:focus,.annotator-editor .annotator-item textarea:focus{background-color:#f3f3f3;outline:0}.annotator-editor .annotator-item input[type=checkbox],.annotator-editor .annotator-item input[type=radio]{width:auto;min-width:0;padding:0;display:inline;margin:0 4px 0 0;cursor:pointer}.annotator-editor .annotator-checkbox{padding:8px 6px}.annotator-editor .annotator-controls,.annotator-filter,.annotator-filter .annotator-filter-navigation button{text-align:right;padding:3px;border-top:1px solid #d4d4d4;background-color:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),color-stop(.6,#dcdcdc),to(#d2d2d2));background-image:-moz-linear-gradient(to bottom,#f5f5f5,#dcdcdc 60%,#d2d2d2);background-image:-webkit-linear-gradient(to bottom,#f5f5f5,#dcdcdc 60%,#d2d2d2);background-image:linear-gradient(to bottom,#f5f5f5,#dcdcdc 60%,#d2d2d2);-webkit-box-shadow:inset 1px 0 0 rgba(255,255,255,.7),inset -1px 0 0 rgba(255,255,255,.7),inset 0 1px 0 rgba(255,255,255,.7);-moz-box-shadow:inset 1px 0 0 rgba(255,255,255,.7),inset -1px 0 0 rgba(255,255,255,.7),inset 0 1px 0 rgba(255,255,255,.7);-o-box-shadow:inset 1px 0 0 rgba(255,255,255,.7),inset -1px 0 0 rgba(255,255,255,.7),inset 0 1px 0 rgba(255,255,255,.7);box-shadow:inset 1px 0 0 rgba(255,255,255,.7),inset -1px 0 0 rgba(255,255,255,.7),inset 0 1px 0 rgba(255,255,255,.7);-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-o-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px}.annotator-editor.annotator-invert-y .annotator-controls{border-top:none;border-bottom:1px solid #b4b4b4;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;-o-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0}.annotator-editor a,.annotator-filter .annotator-filter-property label{position:relative;display:inline-block;padding:0 6px 0 22px;color:#363636;text-shadow:0 1px 0 rgba(255,255,255,.75);text-decoration:none;line-height:24px;font-size:12px;font-weight:700;border:1px solid #a2a2a2;background-color:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),color-stop(.5,#d2d2d2),color-stop(.5,#bebebe),to(#d2d2d2));background-image:-moz-linear-gradient(to bottom,#f5f5f5,#d2d2d2 50%,#bebebe 50%,#d2d2d2);background-image:-webkit-linear-gradient(to bottom,#f5f5f5,#d2d2d2 50%,#bebebe 50%,#d2d2d2);background-image:linear-gradient(to bottom,#f5f5f5,#d2d2d2 50%,#bebebe 50%,#d2d2d2);-webkit-box-shadow:inset 0 0 5px rgba(255,255,255,.2),inset 0 0 1px rgba(255,255,255,.8);-moz-box-shadow:inset 0 0 5px rgba(255,255,255,.2),inset 0 0 1px rgba(255,255,255,.8);-o-box-shadow:inset 0 0 5px rgba(255,255,255,.2),inset 0 0 1px rgba(255,255,255,.8);box-shadow:inset 0 0 5px rgba(255,255,255,.2),inset 0 0 1px rgba(255,255,255,.8);-webkit-border-radius:5px;-moz-border-radius:5px;-o-border-radius:5px;border-radius:5px}.annotator-editor a:after{position:absolute;top:50%;left:5px;display:block;content:"";width:15px;height:15px;margin-top:-7px;background-position:0 -90px}.annotator-editor a.annotator-focus,.annotator-editor a:focus,.annotator-editor a:hover,.annotator-filter .annotator-filter-active label,.annotator-filter .annotator-filter-navigation button:hover{outline:0;border-color:#435aa0;background-color:#3865f9;background-image:-webkit-gradient(linear,left top,left bottom,from(#7691fb),color-stop(.5,#5075fb),color-stop(.5,#3865f9),to(#3665fa));background-image:-moz-linear-gradient(to bottom,#7691fb,#5075fb 50%,#3865f9 50%,#3665fa);background-image:-webkit-linear-gradient(to bottom,#7691fb,#5075fb 50%,#3865f9 50%,#3665fa);background-image:linear-gradient(to bottom,#7691fb,#5075fb 50%,#3865f9 50%,#3665fa);color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.42)}.annotator-editor a:focus:after,.annotator-editor a:hover:after{margin-top:-8px;background-position:0 -105px}.annotator-editor a:active,.annotator-filter .annotator-filter-navigation button:active{border-color:#700c49;background-color:#d12e8e;background-image:-webkit-gradient(linear,left top,left bottom,from(#fc7cca),color-stop(.5,#e85db2),color-stop(.5,#d12e8e),to(#ff009c));background-image:-moz-linear-gradient(to bottom,#fc7cca,#e85db2 50%,#d12e8e 50%,#ff009c);background-image:-webkit-linear-gradient(to bottom,#fc7cca,#e85db2 50%,#d12e8e 50%,#ff009c);background-image:linear-gradient(to bottom,#fc7cca,#e85db2 50%,#d12e8e 50%,#ff009c)}.annotator-editor a.annotator-save:after{background-position:0 -120px}.annotator-editor a.annotator-save.annotator-focus:after,.annotator-editor a.annotator-save:focus:after,.annotator-editor a.annotator-save:hover:after{margin-top:-8px;background-position:0 -135px}.annotator-editor .annotator-widget:after{background-position:0 -30px}.annotator-editor.annotator-invert-y .annotator-widget .annotator-controls{background-color:#f2f2f2}.annotator-editor.annotator-invert-y .annotator-widget:after{background-position:0 -45px;height:11px}.annotator-resize{position:absolute;top:0;right:0;width:12px;height:12px;background-position:2px -150px}.annotator-invert-x .annotator-resize{right:auto;left:0;background-position:0 -195px}.annotator-invert-y .annotator-resize{top:auto;bottom:0;background-position:2px -165px}.annotator-invert-y.annotator-invert-x .annotator-resize{background-position:0 -180px}.annotator-notice{color:#fff;position:fixed;top:-54px;left:0;width:100%;font-size:14px;line-height:50px;text-align:center;background:#000;background:rgba(0,0,0,.9);border-bottom:4px solid #d4d4d4;-webkit-transition:top .4s ease-out;-moz-transition:top .4s ease-out;-o-transition:top .4s ease-out;transition:top .4s ease-out}.annotator-notice-success{border-color:#3665f9}.annotator-notice-error{border-color:#ff7e00}.annotator-notice p{margin:0}.annotator-notice a{color:#fff}.annotator-notice-show{top:0}.annotator-tags{margin-bottom:-2px}.annotator-tags .annotator-tag{display:inline-block;padding:0 8px;margin-bottom:2px;line-height:1.6;font-weight:700;background-color:#e6e6e6;-webkit-border-radius:8px;-moz-border-radius:8px;-o-border-radius:8px;border-radius:8px}.annotator-filter{z-index:1010;position:fixed;top:0;right:0;left:0;text-align:left;line-height:0;border:none;border-bottom:1px solid #878787;padding-left:10px;padding-right:10px;-webkit-border-radius:0;-moz-border-radius:0;-o-border-radius:0;border-radius:0;-webkit-box-shadow:inset 0 -1px 0 rgba(255,255,255,.3);-moz-box-shadow:inset 0 -1px 0 rgba(255,255,255,.3);-o-box-shadow:inset 0 -1px 0 rgba(255,255,255,.3);box-shadow:inset 0 -1px 0 rgba(255,255,255,.3)}.annotator-filter strong{font-size:12px;font-weight:700;color:#3c3c3c;text-shadow:0 1px 0 rgba(255,255,255,.7);position:relative;top:-9px}.annotator-filter .annotator-filter-navigation,.annotator-filter .annotator-filter-property{position:relative;display:inline-block;overflow:hidden;line-height:10px;padding:2px 0;margin-right:8px}.annotator-filter .annotator-filter-navigation button,.annotator-filter .annotator-filter-property label{text-align:left;display:block;float:left;line-height:20px;-webkit-border-radius:10px 0 0 10px;-moz-border-radius:10px 0 0 10px;-o-border-radius:10px 0 0 10px;border-radius:10px 0 0 10px}.annotator-filter .annotator-filter-property label{padding-left:8px}.annotator-filter .annotator-filter-property input{display:block;float:right;-webkit-appearance:none;border:1px solid #878787;border-left:none;padding:2px 4px;line-height:16px;min-height:16px;font-size:12px;width:150px;color:#333;background-color:#f8f8f8;-webkit-border-radius:0 10px 10px 0;-moz-border-radius:0 10px 10px 0;-o-border-radius:0 10px 10px 0;border-radius:0 10px 10px 0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.2);-moz-box-shadow:inset 0 1px 1px rgba(0,0,0,.2);-o-box-shadow:inset 0 1px 1px rgba(0,0,0,.2);box-shadow:inset 0 1px 1px rgba(0,0,0,.2)}.annotator-filter .annotator-filter-property input:focus{outline:0;background-color:#fff}.annotator-filter .annotator-filter-clear{position:absolute;right:3px;top:6px;border:none;text-indent:-900em;width:15px;height:15px;background-position:0 -90px;opacity:.4}.annotator-filter .annotator-filter-clear:focus,.annotator-filter .annotator-filter-clear:hover{opacity:.8}.annotator-filter .annotator-filter-clear:active{opacity:1}.annotator-filter .annotator-filter-navigation button{border:1px solid #a2a2a2;padding:0;text-indent:-900px;width:20px;min-height:22px;-webkit-box-shadow:inset 0 0 5px rgba(255,255,255,.2),inset 0 0 1px rgba(255,255,255,.8);-moz-box-shadow:inset 0 0 5px rgba(255,255,255,.2),inset 0 0 1px rgba(255,255,255,.8);-o-box-shadow:inset 0 0 5px rgba(255,255,255,.2),inset 0 0 1px rgba(255,255,255,.8);box-shadow:inset 0 0 5px rgba(255,255,255,.2),inset 0 0 1px rgba(255,255,255,.8)}.annotator-filter .annotator-filter-navigation button,.annotator-filter .annotator-filter-navigation button:focus,.annotator-filter .annotator-filter-navigation button:hover{color:transparent}.annotator-filter .annotator-filter-navigation button:after{position:absolute;top:8px;left:8px;content:"";display:block;width:9px;height:9px;background-position:0 -210px}.annotator-filter .annotator-filter-navigation button:hover:after{background-position:0 -225px}.annotator-filter .annotator-filter-navigation .annotator-filter-next{-webkit-border-radius:0 10px 10px 0;-moz-border-radius:0 10px 10px 0;-o-border-radius:0 10px 10px 0;border-radius:0 10px 10px 0;border-left:none}.annotator-filter .annotator-filter-navigation .annotator-filter-next:after{left:auto;right:7px;background-position:0 -240px}.annotator-filter .annotator-filter-navigation .annotator-filter-next:hover:after{background-position:0 -255px}.annotator-hl-active{background:#FFFF0A;background:rgba(255,255,10,.8);-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#CCFFFF0A, endColorstr=#CCFFFF0A)"}.annotator-hl-filtered{background-color:transparent}'; | ||
12 | },{}],3:[function(require,module,exports){(function(definition){if(typeof exports==="object"){module.exports=definition()}else if(typeof define==="function"&&define.amd){define(definition)}else{window.BackboneExtend=definition()}})(function(){"use strict";var _={has:function(obj,key){return Object.prototype.hasOwnProperty.call(obj,key)},extend:function(obj){for(var i=1;i<arguments.length;++i){var source=arguments[i];if(source){for(var prop in source){obj[prop]=source[prop]}}}return obj}};var extend=function(protoProps,staticProps){var parent=this;var child;if(protoProps&&_.has(protoProps,"constructor")){child=protoProps.constructor}else{child=function(){return parent.apply(this,arguments)}}_.extend(child,parent,staticProps);var Surrogate=function(){this.constructor=child};Surrogate.prototype=parent.prototype;child.prototype=new Surrogate;if(protoProps)_.extend(child.prototype,protoProps);child.__super__=parent.prototype;return child};return extend})},{}],4:[function(require,module,exports){var process=module.exports={};var queue=[];var draining=false;var currentQueue;var queueIndex=-1;function cleanUpNextTick(){draining=false;if(currentQueue.length){queue=currentQueue.concat(queue)}else{queueIndex=-1}if(queue.length){drainQueue()}}function drainQueue(){if(draining){return}var timeout=setTimeout(cleanUpNextTick);draining=true;var len=queue.length;while(len){currentQueue=queue;queue=[];while(++queueIndex<len){if(currentQueue){currentQueue[queueIndex].run()}}queueIndex=-1;len=queue.length}currentQueue=null;draining=false;clearTimeout(timeout)}process.nextTick=function(fun){var args=new Array(arguments.length-1);if(arguments.length>1){for(var i=1;i<arguments.length;i++){args[i-1]=arguments[i]}}queue.push(new Item(fun,args));if(queue.length===1&&!draining){setTimeout(drainQueue,0)}};function Item(fun,array){this.fun=fun;this.array=array}Item.prototype.run=function(){this.fun.apply(null,this.array)};process.title="browser";process.browser=true;process.env={};process.argv=[];process.version="";process.versions={};function noop(){}process.on=noop;process.addListener=noop;process.once=noop;process.off=noop;process.removeListener=noop;process.removeAllListeners=noop;process.emit=noop;process.binding=function(name){throw new Error("process.binding is not supported")};process.cwd=function(){return"/"};process.chdir=function(dir){throw new Error("process.chdir is not supported")};process.umask=function(){return 0}},{}],5:[function(require,module,exports){(function(process,global){(function(){"use strict";function lib$es6$promise$utils$$objectOrFunction(x){return typeof x==="function"||typeof x==="object"&&x!==null}function lib$es6$promise$utils$$isFunction(x){return typeof x==="function"}function lib$es6$promise$utils$$isMaybeThenable(x){return typeof x==="object"&&x!==null}var lib$es6$promise$utils$$_isArray;if(!Array.isArray){lib$es6$promise$utils$$_isArray=function(x){return Object.prototype.toString.call(x)==="[object Array]"}}else{lib$es6$promise$utils$$_isArray=Array.isArray}var lib$es6$promise$utils$$isArray=lib$es6$promise$utils$$_isArray;var lib$es6$promise$asap$$len=0;var lib$es6$promise$asap$$vertxNext;var lib$es6$promise$asap$$customSchedulerFn;var lib$es6$promise$asap$$asap=function asap(callback,arg){lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len]=callback;lib$es6$promise$asap$$queue[lib$es6$promise$asap$$len+1]=arg;lib$es6$promise$asap$$len+=2;if(lib$es6$promise$asap$$len===2){if(lib$es6$promise$asap$$customSchedulerFn){lib$es6$promise$asap$$customSchedulerFn(lib$es6$promise$asap$$flush)}else{lib$es6$promise$asap$$scheduleFlush()}}};function lib$es6$promise$asap$$setScheduler(scheduleFn){lib$es6$promise$asap$$customSchedulerFn=scheduleFn}function lib$es6$promise$asap$$setAsap(asapFn){lib$es6$promise$asap$$asap=asapFn}var lib$es6$promise$asap$$browserWindow=typeof window!=="undefined"?window:undefined;var lib$es6$promise$asap$$browserGlobal=lib$es6$promise$asap$$browserWindow||{};var lib$es6$promise$asap$$BrowserMutationObserver=lib$es6$promise$asap$$browserGlobal.MutationObserver||lib$es6$promise$asap$$browserGlobal.WebKitMutationObserver;var lib$es6$promise$asap$$isNode=typeof process!=="undefined"&&{}.toString.call(process)==="[object process]";var lib$es6$promise$asap$$isWorker=typeof Uint8ClampedArray!=="undefined"&&typeof importScripts!=="undefined"&&typeof MessageChannel!=="undefined";function lib$es6$promise$asap$$useNextTick(){return function(){process.nextTick(lib$es6$promise$asap$$flush)}}function lib$es6$promise$asap$$useVertxTimer(){return function(){lib$es6$promise$asap$$vertxNext(lib$es6$promise$asap$$flush)}}function lib$es6$promise$asap$$useMutationObserver(){var iterations=0;var observer=new lib$es6$promise$asap$$BrowserMutationObserver(lib$es6$promise$asap$$flush);var node=document.createTextNode("");observer.observe(node,{characterData:true});return function(){node.data=iterations=++iterations%2}}function lib$es6$promise$asap$$useMessageChannel(){var channel=new MessageChannel;channel.port1.onmessage=lib$es6$promise$asap$$flush;return function(){channel.port2.postMessage(0)}}function lib$es6$promise$asap$$useSetTimeout(){return function(){setTimeout(lib$es6$promise$asap$$flush,1)}}var lib$es6$promise$asap$$queue=new Array(1e3);function lib$es6$promise$asap$$flush(){for(var i=0;i<lib$es6$promise$asap$$len;i+=2){var callback=lib$es6$promise$asap$$queue[i];var arg=lib$es6$promise$asap$$queue[i+1];callback(arg);lib$es6$promise$asap$$queue[i]=undefined;lib$es6$promise$asap$$queue[i+1]=undefined}lib$es6$promise$asap$$len=0}function lib$es6$promise$asap$$attemptVertx(){try{var r=require;var vertx=r("vertx");lib$es6$promise$asap$$vertxNext=vertx.runOnLoop||vertx.runOnContext;return lib$es6$promise$asap$$useVertxTimer()}catch(e){return lib$es6$promise$asap$$useSetTimeout()}}var lib$es6$promise$asap$$scheduleFlush;if(lib$es6$promise$asap$$isNode){lib$es6$promise$asap$$scheduleFlush=lib$es6$promise$asap$$useNextTick()}else if(lib$es6$promise$asap$$BrowserMutationObserver){lib$es6$promise$asap$$scheduleFlush=lib$es6$promise$asap$$useMutationObserver()}else if(lib$es6$promise$asap$$isWorker){lib$es6$promise$asap$$scheduleFlush=lib$es6$promise$asap$$useMessageChannel()}else if(lib$es6$promise$asap$$browserWindow===undefined&&typeof require==="function"){lib$es6$promise$asap$$scheduleFlush=lib$es6$promise$asap$$attemptVertx()}else{lib$es6$promise$asap$$scheduleFlush=lib$es6$promise$asap$$useSetTimeout()}function lib$es6$promise$then$$then(onFulfillment,onRejection){var parent=this;var state=parent._state;if(state===lib$es6$promise$$internal$$FULFILLED&&!onFulfillment||state===lib$es6$promise$$internal$$REJECTED&&!onRejection){return this}var child=new this.constructor(lib$es6$promise$$internal$$noop);var result=parent._result;if(state){var callback=arguments[state-1];lib$es6$promise$asap$$asap(function(){lib$es6$promise$$internal$$invokeCallback(state,child,callback,result)})}else{lib$es6$promise$$internal$$subscribe(parent,child,onFulfillment,onRejection)}return child}var lib$es6$promise$then$$default=lib$es6$promise$then$$then;function lib$es6$promise$promise$resolve$$resolve(object){var Constructor=this;if(object&&typeof object==="object"&&object.constructor===Constructor){return object}var promise=new Constructor(lib$es6$promise$$internal$$noop);lib$es6$promise$$internal$$resolve(promise,object);return promise}var lib$es6$promise$promise$resolve$$default=lib$es6$promise$promise$resolve$$resolve;function lib$es6$promise$$internal$$noop(){}var lib$es6$promise$$internal$$PENDING=void 0;var lib$es6$promise$$internal$$FULFILLED=1;var lib$es6$promise$$internal$$REJECTED=2;var lib$es6$promise$$internal$$GET_THEN_ERROR=new lib$es6$promise$$internal$$ErrorObject;function lib$es6$promise$$internal$$selfFulfillment(){return new TypeError("You cannot resolve a promise with itself")}function lib$es6$promise$$internal$$cannotReturnOwn(){return new TypeError("A promises callback cannot return that same promise.")}function lib$es6$promise$$internal$$getThen(promise){try{return promise.then}catch(error){lib$es6$promise$$internal$$GET_THEN_ERROR.error=error;return lib$es6$promise$$internal$$GET_THEN_ERROR}}function lib$es6$promise$$internal$$tryThen(then,value,fulfillmentHandler,rejectionHandler){try{then.call(value,fulfillmentHandler,rejectionHandler)}catch(e){return e}}function lib$es6$promise$$internal$$handleForeignThenable(promise,thenable,then){lib$es6$promise$asap$$asap(function(promise){var sealed=false;var error=lib$es6$promise$$internal$$tryThen(then,thenable,function(value){if(sealed){return}sealed=true;if(thenable!==value){lib$es6$promise$$internal$$resolve(promise,value)}else{lib$es6$promise$$internal$$fulfill(promise,value)}},function(reason){if(sealed){return}sealed=true;lib$es6$promise$$internal$$reject(promise,reason)},"Settle: "+(promise._label||" unknown promise"));if(!sealed&&error){sealed=true;lib$es6$promise$$internal$$reject(promise,error)}},promise)}function lib$es6$promise$$internal$$handleOwnThenable(promise,thenable){if(thenable._state===lib$es6$promise$$internal$$FULFILLED){lib$es6$promise$$internal$$fulfill(promise,thenable._result)}else if(thenable._state===lib$es6$promise$$internal$$REJECTED){lib$es6$promise$$internal$$reject(promise,thenable._result)}else{lib$es6$promise$$internal$$subscribe(thenable,undefined,function(value){lib$es6$promise$$internal$$resolve(promise,value)},function(reason){lib$es6$promise$$internal$$reject(promise,reason)})}}function lib$es6$promise$$internal$$handleMaybeThenable(promise,maybeThenable,then){if(maybeThenable.constructor===promise.constructor&&then===lib$es6$promise$then$$default&&constructor.resolve===lib$es6$promise$promise$resolve$$default){lib$es6$promise$$internal$$handleOwnThenable(promise,maybeThenable)}else{if(then===lib$es6$promise$$internal$$GET_THEN_ERROR){lib$es6$promise$$internal$$reject(promise,lib$es6$promise$$internal$$GET_THEN_ERROR.error)}else if(then===undefined){lib$es6$promise$$internal$$fulfill(promise,maybeThenable)}else if(lib$es6$promise$utils$$isFunction(then)){lib$es6$promise$$internal$$handleForeignThenable(promise,maybeThenable,then)}else{lib$es6$promise$$internal$$fulfill(promise,maybeThenable)}}}function lib$es6$promise$$internal$$resolve(promise,value){if(promise===value){lib$es6$promise$$internal$$reject(promise,lib$es6$promise$$internal$$selfFulfillment())}else if(lib$es6$promise$utils$$objectOrFunction(value)){lib$es6$promise$$internal$$handleMaybeThenable(promise,value,lib$es6$promise$$internal$$getThen(value))}else{lib$es6$promise$$internal$$fulfill(promise,value)}}function lib$es6$promise$$internal$$publishRejection(promise){if(promise._onerror){promise._onerror(promise._result)}lib$es6$promise$$internal$$publish(promise)}function lib$es6$promise$$internal$$fulfill(promise,value){if(promise._state!==lib$es6$promise$$internal$$PENDING){return}promise._result=value;promise._state=lib$es6$promise$$internal$$FULFILLED;if(promise._subscribers.length!==0){lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish,promise)}}function lib$es6$promise$$internal$$reject(promise,reason){if(promise._state!==lib$es6$promise$$internal$$PENDING){return}promise._state=lib$es6$promise$$internal$$REJECTED;promise._result=reason;lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publishRejection,promise)}function lib$es6$promise$$internal$$subscribe(parent,child,onFulfillment,onRejection){var subscribers=parent._subscribers;var length=subscribers.length;parent._onerror=null;subscribers[length]=child;subscribers[length+lib$es6$promise$$internal$$FULFILLED]=onFulfillment;subscribers[length+lib$es6$promise$$internal$$REJECTED]=onRejection;if(length===0&&parent._state){lib$es6$promise$asap$$asap(lib$es6$promise$$internal$$publish,parent)}}function lib$es6$promise$$internal$$publish(promise){var subscribers=promise._subscribers;var settled=promise._state;if(subscribers.length===0){return}var child,callback,detail=promise._result;for(var i=0;i<subscribers.length;i+=3){child=subscribers[i];callback=subscribers[i+settled];if(child){lib$es6$promise$$internal$$invokeCallback(settled,child,callback,detail)}else{callback(detail)}}promise._subscribers.length=0}function lib$es6$promise$$internal$$ErrorObject(){this.error=null}var lib$es6$promise$$internal$$TRY_CATCH_ERROR=new lib$es6$promise$$internal$$ErrorObject;function lib$es6$promise$$internal$$tryCatch(callback,detail){try{return callback(detail)}catch(e){lib$es6$promise$$internal$$TRY_CATCH_ERROR.error=e;return lib$es6$promise$$internal$$TRY_CATCH_ERROR}}function lib$es6$promise$$internal$$invokeCallback(settled,promise,callback,detail){var hasCallback=lib$es6$promise$utils$$isFunction(callback),value,error,succeeded,failed;if(hasCallback){value=lib$es6$promise$$internal$$tryCatch(callback,detail);if(value===lib$es6$promise$$internal$$TRY_CATCH_ERROR){failed=true;error=value.error;value=null}else{succeeded=true}if(promise===value){lib$es6$promise$$internal$$reject(promise,lib$es6$promise$$internal$$cannotReturnOwn());return}}else{value=detail;succeeded=true}if(promise._state!==lib$es6$promise$$internal$$PENDING){}else if(hasCallback&&succeeded){lib$es6$promise$$internal$$resolve(promise,value)}else if(failed){lib$es6$promise$$internal$$reject(promise,error)}else if(settled===lib$es6$promise$$internal$$FULFILLED){lib$es6$promise$$internal$$fulfill(promise,value)}else if(settled===lib$es6$promise$$internal$$REJECTED){lib$es6$promise$$internal$$reject(promise,value)}}function lib$es6$promise$$internal$$initializePromise(promise,resolver){try{resolver(function resolvePromise(value){lib$es6$promise$$internal$$resolve(promise,value)},function rejectPromise(reason){lib$es6$promise$$internal$$reject(promise,reason)})}catch(e){lib$es6$promise$$internal$$reject(promise,e)}}function lib$es6$promise$promise$all$$all(entries){return new lib$es6$promise$enumerator$$default(this,entries).promise}var lib$es6$promise$promise$all$$default=lib$es6$promise$promise$all$$all;function lib$es6$promise$promise$race$$race(entries){var Constructor=this;var promise=new Constructor(lib$es6$promise$$internal$$noop);if(!lib$es6$promise$utils$$isArray(entries)){lib$es6$promise$$internal$$reject(promise,new TypeError("You must pass an array to race."));return promise}var length=entries.length;function onFulfillment(value){lib$es6$promise$$internal$$resolve(promise,value)}function onRejection(reason){lib$es6$promise$$internal$$reject(promise,reason)}for(var i=0;promise._state===lib$es6$promise$$internal$$PENDING&&i<length;i++){lib$es6$promise$$internal$$subscribe(Constructor.resolve(entries[i]),undefined,onFulfillment,onRejection)}return promise}var lib$es6$promise$promise$race$$default=lib$es6$promise$promise$race$$race;function lib$es6$promise$promise$reject$$reject(reason){var Constructor=this;var promise=new Constructor(lib$es6$promise$$internal$$noop);lib$es6$promise$$internal$$reject(promise,reason);return promise}var lib$es6$promise$promise$reject$$default=lib$es6$promise$promise$reject$$reject;var lib$es6$promise$promise$$counter=0;function lib$es6$promise$promise$$needsResolver(){throw new TypeError("You must pass a resolver function as the first argument to the promise constructor")}function lib$es6$promise$promise$$needsNew(){throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.")}var lib$es6$promise$promise$$default=lib$es6$promise$promise$$Promise;function lib$es6$promise$promise$$Promise(resolver){this._id=lib$es6$promise$promise$$counter++;this._state=undefined;this._result=undefined;this._subscribers=[];if(lib$es6$promise$$internal$$noop!==resolver){typeof resolver!=="function"&&lib$es6$promise$promise$$needsResolver();this instanceof lib$es6$promise$promise$$Promise?lib$es6$promise$$internal$$initializePromise(this,resolver):lib$es6$promise$promise$$needsNew()}}lib$es6$promise$promise$$Promise.all=lib$es6$promise$promise$all$$default;lib$es6$promise$promise$$Promise.race=lib$es6$promise$promise$race$$default;lib$es6$promise$promise$$Promise.resolve=lib$es6$promise$promise$resolve$$default;lib$es6$promise$promise$$Promise.reject=lib$es6$promise$promise$reject$$default;lib$es6$promise$promise$$Promise._setScheduler=lib$es6$promise$asap$$setScheduler;lib$es6$promise$promise$$Promise._setAsap=lib$es6$promise$asap$$setAsap;lib$es6$promise$promise$$Promise._asap=lib$es6$promise$asap$$asap;lib$es6$promise$promise$$Promise.prototype={constructor:lib$es6$promise$promise$$Promise,then:lib$es6$promise$then$$default,"catch":function(onRejection){return this.then(null,onRejection)}};var lib$es6$promise$enumerator$$default=lib$es6$promise$enumerator$$Enumerator;function lib$es6$promise$enumerator$$Enumerator(Constructor,input){this._instanceConstructor=Constructor;this.promise=new Constructor(lib$es6$promise$$internal$$noop);if(Array.isArray(input)){this._input=input;this.length=input.length;this._remaining=input.length;this._result=new Array(this.length);if(this.length===0){lib$es6$promise$$internal$$fulfill(this.promise,this._result)}else{this.length=this.length||0;this._enumerate();if(this._remaining===0){lib$es6$promise$$internal$$fulfill(this.promise,this._result)}}}else{lib$es6$promise$$internal$$reject(this.promise,this._validationError())}}lib$es6$promise$enumerator$$Enumerator.prototype._validationError=function(){return new Error("Array Methods must be provided an Array")};lib$es6$promise$enumerator$$Enumerator.prototype._enumerate=function(){var length=this.length;var input=this._input;for(var i=0;this._state===lib$es6$promise$$internal$$PENDING&&i<length;i++){this._eachEntry(input[i],i)}};lib$es6$promise$enumerator$$Enumerator.prototype._eachEntry=function(entry,i){var c=this._instanceConstructor;var resolve=c.resolve;if(resolve===lib$es6$promise$promise$resolve$$default){var then=lib$es6$promise$$internal$$getThen(entry);if(then===lib$es6$promise$then$$default&&entry._state!==lib$es6$promise$$internal$$PENDING){this._settledAt(entry._state,i,entry._result)}else if(typeof then!=="function"){this._remaining--;this._result[i]=entry}else if(c===lib$es6$promise$promise$$default){var promise=new c(lib$es6$promise$$internal$$noop);lib$es6$promise$$internal$$handleMaybeThenable(promise,entry,then);this._willSettleAt(promise,i)}else{this._willSettleAt(new c(function(resolve){resolve(entry)}),i)}}else{this._willSettleAt(resolve(entry),i)}};lib$es6$promise$enumerator$$Enumerator.prototype._settledAt=function(state,i,value){var promise=this.promise;if(promise._state===lib$es6$promise$$internal$$PENDING){this._remaining--;if(state===lib$es6$promise$$internal$$REJECTED){lib$es6$promise$$internal$$reject(promise,value)}else{this._result[i]=value}}if(this._remaining===0){lib$es6$promise$$internal$$fulfill(promise,this._result)}};lib$es6$promise$enumerator$$Enumerator.prototype._willSettleAt=function(promise,i){var enumerator=this;lib$es6$promise$$internal$$subscribe(promise,undefined,function(value){enumerator._settledAt(lib$es6$promise$$internal$$FULFILLED,i,value)},function(reason){enumerator._settledAt(lib$es6$promise$$internal$$REJECTED,i,reason)})};function lib$es6$promise$polyfill$$polyfill(){var local;if(typeof global!=="undefined"){local=global}else if(typeof self!=="undefined"){local=self}else{try{local=Function("return this")()}catch(e){throw new Error("polyfill failed because global object is unavailable in this environment")}}var P=local.Promise;if(P&&Object.prototype.toString.call(P.resolve())==="[object Promise]"&&!P.cast){return}local.Promise=lib$es6$promise$promise$$default}var lib$es6$promise$polyfill$$default=lib$es6$promise$polyfill$$polyfill;var lib$es6$promise$umd$$ES6Promise={Promise:lib$es6$promise$promise$$default,polyfill:lib$es6$promise$polyfill$$default};if(typeof define==="function"&&define["amd"]){define(function(){return lib$es6$promise$umd$$ES6Promise})}else if(typeof module!=="undefined"&&module["exports"]){module["exports"]=lib$es6$promise$umd$$ES6Promise}else if(typeof this!=="undefined"){this["ES6Promise"]=lib$es6$promise$umd$$ES6Promise}lib$es6$promise$polyfill$$default()}).call(this)}).call(this,require("_process"),typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{_process:4}],6:[function(require,module,exports){var inserted={};module.exports=function(css,options){if(inserted[css])return;inserted[css]=true;var elem=document.createElement("style");elem.setAttribute("type","text/css");if("textContent"in elem){elem.textContent=css}else{elem.styleSheet.cssText=css}var head=document.getElementsByTagName("head")[0];if(options&&options.prepend){head.insertBefore(elem,head.childNodes[0])}else{head.appendChild(elem)}}},{}],7:[function(require,module,exports){(function(global,factory){if(typeof module==="object"&&typeof module.exports==="object"){module.exports=global.document?factory(global,true):function(w){if(!w.document){throw new Error("jQuery requires a window with a document")}return factory(w)}}else{factory(global)}})(typeof window!=="undefined"?window:this,function(window,noGlobal){var deletedIds=[];var document=window.document;var slice=deletedIds.slice;var concat=deletedIds.concat;var push=deletedIds.push;var indexOf=deletedIds.indexOf;var class2type={};var toString=class2type.toString;var hasOwn=class2type.hasOwnProperty;var support={};var version="1.12.1",jQuery=function(selector,context){return new jQuery.fn.init(selector,context)},rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,rmsPrefix=/^-ms-/,rdashAlpha=/-([\da-z])/gi,fcamelCase=function(all,letter){return letter.toUpperCase()};jQuery.fn=jQuery.prototype={jquery:version,constructor:jQuery,selector:"",length:0,toArray:function(){return slice.call(this)},get:function(num){return num!=null?num<0?this[num+this.length]:this[num]:slice.call(this)},pushStack:function(elems){var ret=jQuery.merge(this.constructor(),elems);ret.prevObject=this;ret.context=this.context;return ret},each:function(callback){return jQuery.each(this,callback)},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem)}))},slice:function(){return this.pushStack(slice.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[])},end:function(){return this.prevObject||this.constructor()},push:push,sort:deletedIds.sort,splice:deletedIds.splice};jQuery.extend=jQuery.fn.extend=function(){var src,copyIsArray,copy,name,options,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=false;if(typeof target==="boolean"){deep=target;target=arguments[i]||{};i++}if(typeof target!=="object"&&!jQuery.isFunction(target)){target={}}if(i===length){target=this;i--}for(;i<length;i++){if((options=arguments[i])!=null){for(name in options){src=target[name];copy=options[name];if(target===copy){continue}if(deep&©&&(jQuery.isPlainObject(copy)||(copyIsArray=jQuery.isArray(copy)))){if(copyIsArray){copyIsArray=false;clone=src&&jQuery.isArray(src)?src:[]}else{clone=src&&jQuery.isPlainObject(src)?src:{}}target[name]=jQuery.extend(deep,clone,copy)}else if(copy!==undefined){target[name]=copy}}}}return target};jQuery.extend({expando:"jQuery"+(version+Math.random()).replace(/\D/g,""),isReady:true,error:function(msg){throw new Error(msg)},noop:function(){},isFunction:function(obj){return jQuery.type(obj)==="function"},isArray:Array.isArray||function(obj){return jQuery.type(obj)==="array"},isWindow:function(obj){return obj!=null&&obj==obj.window},isNumeric:function(obj){var realStringObj=obj&&obj.toString();return!jQuery.isArray(obj)&&realStringObj-parseFloat(realStringObj)+1>=0},isEmptyObject:function(obj){var name;for(name in obj){return false}return true},isPlainObject:function(obj){var key;if(!obj||jQuery.type(obj)!=="object"||obj.nodeType||jQuery.isWindow(obj)){return false}try{if(obj.constructor&&!hasOwn.call(obj,"constructor")&&!hasOwn.call(obj.constructor.prototype,"isPrototypeOf")){return false}}catch(e){return false}if(!support.ownFirst){for(key in obj){return hasOwn.call(obj,key)}}for(key in obj){}return key===undefined||hasOwn.call(obj,key)},type:function(obj){if(obj==null){return obj+""}return typeof obj==="object"||typeof obj==="function"?class2type[toString.call(obj)]||"object":typeof obj},globalEval:function(data){if(data&&jQuery.trim(data)){(window.execScript||function(data){window["eval"].call(window,data)})(data)}},camelCase:function(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()},each:function(obj,callback){var length,i=0;if(isArrayLike(obj)){length=obj.length;for(;i<length;i++){if(callback.call(obj[i],i,obj[i])===false){break}}}else{for(i in obj){if(callback.call(obj[i],i,obj[i])===false){break}}}return obj},trim:function(text){return text==null?"":(text+"").replace(rtrim,"")},makeArray:function(arr,results){var ret=results||[];if(arr!=null){if(isArrayLike(Object(arr))){jQuery.merge(ret,typeof arr==="string"?[arr]:arr)}else{push.call(ret,arr)}}return ret},inArray:function(elem,arr,i){var len;if(arr){if(indexOf){return indexOf.call(arr,elem,i)}len=arr.length;i=i?i<0?Math.max(0,len+i):i:0;for(;i<len;i++){if(i in arr&&arr[i]===elem){return i}}}return-1},merge:function(first,second){var len=+second.length,j=0,i=first.length;while(j<len){first[i++]=second[j++]}if(len!==len){while(second[j]!==undefined){first[i++]=second[j++]}}first.length=i;return first},grep:function(elems,callback,invert){var callbackInverse,matches=[],i=0,length=elems.length,callbackExpect=!invert;for(;i<length;i++){callbackInverse=!callback(elems[i],i);if(callbackInverse!==callbackExpect){matches.push(elems[i])}}return matches},map:function(elems,callback,arg){var length,value,i=0,ret=[];if(isArrayLike(elems)){length=elems.length;for(;i<length;i++){value=callback(elems[i],i,arg);if(value!=null){ret.push(value)}}}else{for(i in elems){value=callback(elems[i],i,arg);if(value!=null){ret.push(value)}}}return concat.apply([],ret)},guid:1,proxy:function(fn,context){var args,proxy,tmp;if(typeof context==="string"){tmp=fn[context];context=fn;fn=tmp}if(!jQuery.isFunction(fn)){return undefined}args=slice.call(arguments,2);proxy=function(){return fn.apply(context||this,args.concat(slice.call(arguments)))};proxy.guid=fn.guid=fn.guid||jQuery.guid++;return proxy},now:function(){return+new Date},support:support});if(typeof Symbol==="function"){jQuery.fn[Symbol.iterator]=deletedIds[Symbol.iterator]}jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});function isArrayLike(obj){var length=!!obj&&"length"in obj&&obj.length,type=jQuery.type(obj);if(type==="function"||jQuery.isWindow(obj)){return false}return type==="array"||length===0||typeof length==="number"&&length>0&&length-1 in obj}var Sizzle=function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date,preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){if(a===b){hasDuplicate=true}return 0},MAX_NEGATIVE=1<<31,hasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){var i=0,len=list.length;for(;i<len;i++){if(list[i]===elem){return i}}return-1},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",whitespace="[\\x20\\t\\r\\n\\f]",identifier="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",attributes="\\["+whitespace+"*("+identifier+")(?:"+whitespace+"*([*^$|!~]?=)"+whitespace+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+whitespace+"*\\]",pseudos=":("+identifier+")(?:\\(("+"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|"+"((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|"+".*"+")\\)|)",rwhitespace=new RegExp(whitespace+"+","g"),rtrim=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+whitespace+"+$","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rcombinators=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+identifier+")"),CLASS:new RegExp("^\\.("+identifier+")"),TAG:new RegExp("^("+identifier+"|[*])"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,rescape=/'|\\/g,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!==high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,high&1023|56320)},unloadHandler=function(){setDocument()};try{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes);arr[preferredDoc.childNodes.length].nodeType}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els))}:function(target,els){var j=target.length,i=0;while(target[j++]=els[i++]){}target.length=j-1}}}function Sizzle(selector,context,results,seed){var m,i,elem,nid,nidselect,match,groups,newSelector,newContext=context&&context.ownerDocument,nodeType=context?context.nodeType:9;results=results||[];if(typeof selector!=="string"||!selector||nodeType!==1&&nodeType!==9&&nodeType!==11){return results}if(!seed){if((context?context.ownerDocument||context:preferredDoc)!==document){setDocument(context)}context=context||document;if(documentIsHTML){if(nodeType!==11&&(match=rquickExpr.exec(selector))){if(m=match[1]){if(nodeType===9){if(elem=context.getElementById(m)){if(elem.id===m){results.push(elem);return results}}else{return results}}else{if(newContext&&(elem=newContext.getElementById(m))&&contains(context,elem)&&elem.id===m){results.push(elem);return results}}}else if(match[2]){push.apply(results,context.getElementsByTagName(selector));return results}else if((m=match[3])&&support.getElementsByClassName&&context.getElementsByClassName){push.apply(results,context.getElementsByClassName(m));return results}}if(support.qsa&&!compilerCache[selector+" "]&&(!rbuggyQSA||!rbuggyQSA.test(selector))){if(nodeType!==1){newContext=context;newSelector=selector}else if(context.nodeName.toLowerCase()!=="object"){if(nid=context.getAttribute("id")){nid=nid.replace(rescape,"\\$&")}else{context.setAttribute("id",nid=expando)}groups=tokenize(selector);i=groups.length;nidselect=ridentifier.test(nid)?"#"+nid:"[id='"+nid+"']";while(i--){groups[i]=nidselect+" "+toSelector(groups[i])}newSelector=groups.join(",");newContext=rsibling.test(selector)&&testContext(context.parentNode)||context}if(newSelector){try{push.apply(results,newContext.querySelectorAll(newSelector));return results}catch(qsaError){}finally{if(nid===expando){context.removeAttribute("id")}}}}}}return select(selector.replace(rtrim,"$1"),context,results,seed)}function createCache(){var keys=[];function cache(key,value){if(keys.push(key+" ")>Expr.cacheLength){delete cache[keys.shift()]}return cache[key+" "]=value}return cache}function markFunction(fn){fn[expando]=true; | ||
13 | return fn}function assert(fn){var div=document.createElement("div");try{return!!fn(div)}catch(e){return false}finally{if(div.parentNode){div.parentNode.removeChild(div)}div=null}}function addHandle(attrs,handler){var arr=attrs.split("|"),i=arr.length;while(i--){Expr.attrHandle[arr[i]]=handler}}function siblingCheck(a,b){var cur=b&&a,diff=cur&&a.nodeType===1&&b.nodeType===1&&(~b.sourceIndex||MAX_NEGATIVE)-(~a.sourceIndex||MAX_NEGATIVE);if(diff){return diff}if(cur){while(cur=cur.nextSibling){if(cur===b){return-1}}}return a?1:-1}function createInputPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return name==="input"&&elem.type===type}}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return(name==="input"||name==="button")&&elem.type===type}}function createPositionalPseudo(fn){return markFunction(function(argument){argument=+argument;return markFunction(function(seed,matches){var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;while(i--){if(seed[j=matchIndexes[i]]){seed[j]=!(matches[j]=seed[j])}}})})}function testContext(context){return context&&typeof context.getElementsByTagName!=="undefined"&&context}support=Sizzle.support={};isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return documentElement?documentElement.nodeName!=="HTML":false};setDocument=Sizzle.setDocument=function(node){var hasCompare,parent,doc=node?node.ownerDocument||node:preferredDoc;if(doc===document||doc.nodeType!==9||!doc.documentElement){return document}document=doc;docElem=document.documentElement;documentIsHTML=!isXML(document);if((parent=document.defaultView)&&parent.top!==parent){if(parent.addEventListener){parent.addEventListener("unload",unloadHandler,false)}else if(parent.attachEvent){parent.attachEvent("onunload",unloadHandler)}}support.attributes=assert(function(div){div.className="i";return!div.getAttribute("className")});support.getElementsByTagName=assert(function(div){div.appendChild(document.createComment(""));return!div.getElementsByTagName("*").length});support.getElementsByClassName=rnative.test(document.getElementsByClassName);support.getById=assert(function(div){docElem.appendChild(div).id=expando;return!document.getElementsByName||!document.getElementsByName(expando).length});if(support.getById){Expr.find["ID"]=function(id,context){if(typeof context.getElementById!=="undefined"&&documentIsHTML){var m=context.getElementById(id);return m?[m]:[]}};Expr.filter["ID"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId}}}else{delete Expr.find["ID"];Expr.filter["ID"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");return node&&node.value===attrId}}}Expr.find["TAG"]=support.getElementsByTagName?function(tag,context){if(typeof context.getElementsByTagName!=="undefined"){return context.getElementsByTagName(tag)}else if(support.qsa){return context.querySelectorAll(tag)}}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if(tag==="*"){while(elem=results[i++]){if(elem.nodeType===1){tmp.push(elem)}}return tmp}return results};Expr.find["CLASS"]=support.getElementsByClassName&&function(className,context){if(typeof context.getElementsByClassName!=="undefined"&&documentIsHTML){return context.getElementsByClassName(className)}};rbuggyMatches=[];rbuggyQSA=[];if(support.qsa=rnative.test(document.querySelectorAll)){assert(function(div){docElem.appendChild(div).innerHTML="<a id='"+expando+"'></a>"+"<select id='"+expando+"-\r\\' msallowcapture=''>"+"<option selected=''></option></select>";if(div.querySelectorAll("[msallowcapture^='']").length){rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")")}if(!div.querySelectorAll("[selected]").length){rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")")}if(!div.querySelectorAll("[id~="+expando+"-]").length){rbuggyQSA.push("~=")}if(!div.querySelectorAll(":checked").length){rbuggyQSA.push(":checked")}if(!div.querySelectorAll("a#"+expando+"+*").length){rbuggyQSA.push(".#.+[+~]")}});assert(function(div){var input=document.createElement("input");input.setAttribute("type","hidden");div.appendChild(input).setAttribute("name","D");if(div.querySelectorAll("[name=d]").length){rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?=")}if(!div.querySelectorAll(":enabled").length){rbuggyQSA.push(":enabled",":disabled")}div.querySelectorAll("*,:x");rbuggyQSA.push(",.*:")})}if(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector)){assert(function(div){support.disconnectedMatch=matches.call(div,"div");matches.call(div,"[s!='']:x");rbuggyMatches.push("!=",pseudos)})}rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|"));rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|"));hasCompare=rnative.test(docElem.compareDocumentPosition);contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=a.nodeType===9?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!!(bup&&bup.nodeType===1&&(adown.contains?adown.contains(bup):a.compareDocumentPosition&&a.compareDocumentPosition(bup)&16))}:function(a,b){if(b){while(b=b.parentNode){if(b===a){return true}}}return false};sortOrder=hasCompare?function(a,b){if(a===b){hasDuplicate=true;return 0}var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;if(compare){return compare}compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1;if(compare&1||!support.sortDetached&&b.compareDocumentPosition(a)===compare){if(a===document||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)){return-1}if(b===document||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)){return 1}return sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0}return compare&4?-1:1}:function(a,b){if(a===b){hasDuplicate=true;return 0}var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup){return a===document?-1:b===document?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0}else if(aup===bup){return siblingCheck(a,b)}cur=a;while(cur=cur.parentNode){ap.unshift(cur)}cur=b;while(cur=cur.parentNode){bp.unshift(cur)}while(ap[i]===bp[i]){i++}return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0};return document};Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements)};Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document){setDocument(elem)}expr=expr.replace(rattributeQuotes,"='$1']");if(support.matchesSelector&&documentIsHTML&&!compilerCache[expr+" "]&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr))){try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&elem.document.nodeType!==11){return ret}}catch(e){}}return Sizzle(expr,document,null,[elem]).length>0};Sizzle.contains=function(context,elem){if((context.ownerDocument||context)!==document){setDocument(context)}return contains(context,elem)};Sizzle.attr=function(elem,name){if((elem.ownerDocument||elem)!==document){setDocument(elem)}var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):undefined;return val!==undefined?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null};Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg)};Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;hasDuplicate=!support.detectDuplicates;sortInput=!support.sortStable&&results.slice(0);results.sort(sortOrder);if(hasDuplicate){while(elem=results[i++]){if(elem===results[i]){j=duplicates.push(i)}}while(j--){results.splice(duplicates[j],1)}}sortInput=null;return results};getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(!nodeType){while(node=elem[i++]){ret+=getText(node)}}else if(nodeType===1||nodeType===9||nodeType===11){if(typeof elem.textContent==="string"){return elem.textContent}else{for(elem=elem.firstChild;elem;elem=elem.nextSibling){ret+=getText(elem)}}}else if(nodeType===3||nodeType===4){return elem.nodeValue}return ret};Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(match){match[1]=match[1].replace(runescape,funescape);match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape);if(match[2]==="~="){match[3]=" "+match[3]+" "}return match.slice(0,4)},CHILD:function(match){match[1]=match[1].toLowerCase();if(match[1].slice(0,3)==="nth"){if(!match[3]){Sizzle.error(match[0])}match[4]=+(match[4]?match[5]+(match[6]||1):2*(match[3]==="even"||match[3]==="odd"));match[5]=+(match[7]+match[8]||match[3]==="odd")}else if(match[3]){Sizzle.error(match[0])}return match},PSEUDO:function(match){var excess,unquoted=!match[6]&&match[2];if(matchExpr["CHILD"].test(match[0])){return null}if(match[3]){match[2]=match[4]||match[5]||""}else if(unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,true))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)){match[0]=match[0].slice(0,excess);match[2]=unquoted.slice(0,excess)}return match.slice(0,3)}},filter:{TAG:function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return nodeNameSelector==="*"?function(){return true}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName}},CLASS:function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test(typeof elem.className==="string"&&elem.className||typeof elem.getAttribute!=="undefined"&&elem.getAttribute("class")||"")})},ATTR:function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);if(result==null){return operator==="!="}if(!operator){return true}result+="";return operator==="="?result===check:operator==="!="?result!==check:operator==="^="?check&&result.indexOf(check)===0:operator==="*="?check&&result.indexOf(check)>-1:operator==="$="?check&&result.slice(-check.length)===check:operator==="~="?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:operator==="|="?result===check||result.slice(0,check.length+1)===check+"-":false}},CHILD:function(type,what,argument,first,last){var simple=type.slice(0,3)!=="nth",forward=type.slice(-4)!=="last",ofType=what==="of-type";return first===1&&last===0?function(elem){return!!elem.parentNode}:function(elem,context,xml){var cache,uniqueCache,outerCache,node,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType,diff=false;if(parent){if(simple){while(dir){node=elem;while(node=node[dir]){if(ofType?node.nodeName.toLowerCase()===name:node.nodeType===1){return false}}start=dir=type==="only"&&!start&&"nextSibling"}return true}start=[forward?parent.firstChild:parent.lastChild];if(forward&&useCache){node=parent;outerCache=node[expando]||(node[expando]={});uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});cache=uniqueCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=nodeIndex&&cache[2];node=nodeIndex&&parent.childNodes[nodeIndex];while(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop()){if(node.nodeType===1&&++diff&&node===elem){uniqueCache[type]=[dirruns,nodeIndex,diff];break}}}else{if(useCache){node=elem;outerCache=node[expando]||(node[expando]={});uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});cache=uniqueCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=nodeIndex}if(diff===false){while(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop()){if((ofType?node.nodeName.toLowerCase()===name:node.nodeType===1)&&++diff){if(useCache){outerCache=node[expando]||(node[expando]={});uniqueCache=outerCache[node.uniqueID]||(outerCache[node.uniqueID]={});uniqueCache[type]=[dirruns,diff]}if(node===elem){break}}}}}diff-=last;return diff===first||diff%first===0&&diff/first>=0}}},PSEUDO:function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);if(fn[expando]){return fn(argument)}if(fn.length>1){args=[pseudo,pseudo,"",argument];return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){var idx,matched=fn(seed,argument),i=matched.length;while(i--){idx=indexOf(seed,matched[i]);seed[idx]=!(matches[idx]=matched[i])}}):function(elem){return fn(elem,0,args)}}return fn}},pseudos:{not:markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;while(i--){if(elem=unmatched[i]){seed[i]=!(matches[i]=elem)}}}):function(elem,context,xml){input[0]=elem;matcher(input,null,xml,results);input[0]=null;return!results.pop()}}),has:markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0}}),contains:markFunction(function(text){text=text.replace(runescape,funescape);return function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1}}),lang:markFunction(function(lang){if(!ridentifier.test(lang||"")){Sizzle.error("unsupported lang: "+lang)}lang=lang.replace(runescape,funescape).toLowerCase();return function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang")){elemLang=elemLang.toLowerCase();return elemLang===lang||elemLang.indexOf(lang+"-")===0}}while((elem=elem.parentNode)&&elem.nodeType===1);return false}}),target:function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id},root:function(elem){return elem===docElem},focus:function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex)},enabled:function(elem){return elem.disabled===false},disabled:function(elem){return elem.disabled===true},checked:function(elem){var nodeName=elem.nodeName.toLowerCase();return nodeName==="input"&&!!elem.checked||nodeName==="option"&&!!elem.selected},selected:function(elem){if(elem.parentNode){elem.parentNode.selectedIndex}return elem.selected===true},empty:function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling){if(elem.nodeType<6){return false}}return true},parent:function(elem){return!Expr.pseudos["empty"](elem)},header:function(elem){return rheader.test(elem.nodeName)},input:function(elem){return rinputs.test(elem.nodeName)},button:function(elem){var name=elem.nodeName.toLowerCase();return name==="input"&&elem.type==="button"||name==="button"},text:function(elem){var attr;return elem.nodeName.toLowerCase()==="input"&&elem.type==="text"&&((attr=elem.getAttribute("type"))==null||attr.toLowerCase()==="text")},first:createPositionalPseudo(function(){return[0]}),last:createPositionalPseudo(function(matchIndexes,length){return[length-1]}),eq:createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument]}),even:createPositionalPseudo(function(matchIndexes,length){var i=0;for(;i<length;i+=2){matchIndexes.push(i)}return matchIndexes}),odd:createPositionalPseudo(function(matchIndexes,length){var i=1;for(;i<length;i+=2){matchIndexes.push(i)}return matchIndexes}),lt:createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument;for(;--i>=0;){matchIndexes.push(i)}return matchIndexes}),gt:createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument;for(;++i<length;){matchIndexes.push(i)}return matchIndexes})}};Expr.pseudos["nth"]=Expr.pseudos["eq"];for(i in{radio:true,checkbox:true,file:true,password:true,image:true}){Expr.pseudos[i]=createInputPseudo(i)}for(i in{submit:true,reset:true}){Expr.pseudos[i]=createButtonPseudo(i)}function setFilters(){}setFilters.prototype=Expr.filters=Expr.pseudos;Expr.setFilters=new setFilters;tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+" "];if(cached){return parseOnly?0:cached.slice(0)}soFar=selector;groups=[];preFilters=Expr.preFilter;while(soFar){if(!matched||(match=rcomma.exec(soFar))){if(match){soFar=soFar.slice(match[0].length)||soFar}groups.push(tokens=[])}matched=false;if(match=rcombinators.exec(soFar)){matched=match.shift();tokens.push({value:matched,type:match[0].replace(rtrim," ")});soFar=soFar.slice(matched.length)}for(type in Expr.filter){if((match=matchExpr[type].exec(soFar))&&(!preFilters[type]||(match=preFilters[type](match)))){matched=match.shift();tokens.push({value:matched,type:type,matches:match});soFar=soFar.slice(matched.length)}}if(!matched){break}}return parseOnly?soFar.length:soFar?Sizzle.error(selector):tokenCache(selector,groups).slice(0)};function toSelector(tokens){var i=0,len=tokens.length,selector="";for(;i<len;i++){selector+=tokens[i].value}return selector}function addCombinator(matcher,combinator,base){var dir=combinator.dir,checkNonElements=base&&dir==="parentNode",doneName=done++;return combinator.first?function(elem,context,xml){while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){return matcher(elem,context,xml)}}}:function(elem,context,xml){var oldCache,uniqueCache,outerCache,newCache=[dirruns,doneName];if(xml){while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){if(matcher(elem,context,xml)){return true}}}}else{while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){outerCache=elem[expando]||(elem[expando]={});uniqueCache=outerCache[elem.uniqueID]||(outerCache[elem.uniqueID]={});if((oldCache=uniqueCache[dir])&&oldCache[0]===dirruns&&oldCache[1]===doneName){return newCache[2]=oldCache[2]}else{uniqueCache[dir]=newCache;if(newCache[2]=matcher(elem,context,xml)){return true}}}}}}}function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){var i=matchers.length;while(i--){if(!matchers[i](elem,context,xml)){return false}}return true}:matchers[0]}function multipleContexts(selector,contexts,results){var i=0,len=contexts.length;for(;i<len;i++){Sizzle(selector,contexts[i],results)}return results}function condense(unmatched,map,filter,context,xml){var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=map!=null;for(;i<len;i++){if(elem=unmatched[i]){if(!filter||filter(elem,context,xml)){newUnmatched.push(elem);if(mapped){map.push(i)}}}}return newUnmatched}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){if(postFilter&&!postFilter[expando]){postFilter=setMatcher(postFilter)}if(postFinder&&!postFinder[expando]){postFinder=setMatcher(postFinder,postSelector)}return markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,elems=seed||multipleContexts(selector||"*",context.nodeType?[context]:context,[]),matcherIn=preFilter&&(seed||!selector)?condense(elems,preMap,preFilter,context,xml):elems,matcherOut=matcher?postFinder||(seed?preFilter:preexisting||postFilter)?[]:results:matcherIn;if(matcher){matcher(matcherIn,matcherOut,context,xml)}if(postFilter){temp=condense(matcherOut,postMap);postFilter(temp,[],context,xml);i=temp.length;while(i--){if(elem=temp[i]){matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem)}}}if(seed){if(postFinder||preFilter){if(postFinder){temp=[];i=matcherOut.length;while(i--){if(elem=matcherOut[i]){temp.push(matcherIn[i]=elem)}}postFinder(null,matcherOut=[],temp,xml)}i=matcherOut.length;while(i--){if((elem=matcherOut[i])&&(temp=postFinder?indexOf(seed,elem):preMap[i])>-1){seed[temp]=!(results[temp]=elem)}}}}else{matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut);if(postFinder){postFinder(null,results,matcherOut,xml)}else{push.apply(results,matcherOut)}}})}function matcherFromTokens(tokens){var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext},implicitRelative,true),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1},implicitRelative,true),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));checkContext=null;return ret}];for(;i<len;i++){if(matcher=Expr.relative[tokens[i].type]){matchers=[addCombinator(elementMatcher(matchers),matcher)]}else{matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches);if(matcher[expando]){j=++i;for(;j<len;j++){if(Expr.relative[tokens[j].type]){break}}return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:tokens[i-2].type===" "?"*":""})).replace(rtrim,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens(tokens=tokens.slice(j)),j<len&&toSelector(tokens))}matchers.push(matcher)}}return elementMatcher(matchers)}function matcherFromGroupMatchers(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find["TAG"]("*",outermost),dirrunsUnique=dirruns+=contextBackup==null?1:Math.random()||.1,len=elems.length;if(outermost){outermostContext=context===document||context||outermost}for(;i!==len&&(elem=elems[i])!=null;i++){if(byElement&&elem){j=0;if(!context&&elem.ownerDocument!==document){setDocument(elem);xml=!documentIsHTML}while(matcher=elementMatchers[j++]){if(matcher(elem,context||document,xml)){results.push(elem);break}}if(outermost){dirruns=dirrunsUnique}}if(bySet){if(elem=!matcher&&elem){matchedCount--}if(seed){unmatched.push(elem)}}}matchedCount+=i;if(bySet&&i!==matchedCount){j=0;while(matcher=setMatchers[j++]){matcher(unmatched,setMatched,context,xml)}if(seed){if(matchedCount>0){while(i--){if(!(unmatched[i]||setMatched[i])){setMatched[i]=pop.call(results)}}}setMatched=condense(setMatched)}push.apply(results,setMatched);if(outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1){Sizzle.uniqueSort(results)}}if(outermost){dirruns=dirrunsUnique;outermostContext=contextBackup}return unmatched};return bySet?markFunction(superMatcher):superMatcher}compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){if(!match){match=tokenize(selector)}i=match.length;while(i--){cached=matcherFromTokens(match[i]);if(cached[expando]){setMatchers.push(cached)}else{elementMatchers.push(cached)}}cached=compilerCache(selector,matcherFromGroupMatchers(elementMatchers,setMatchers));cached.selector=selector}return cached};select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled=typeof selector==="function"&&selector,match=!seed&&tokenize(selector=compiled.selector||selector);results=results||[];if(match.length===1){tokens=match[0]=match[0].slice(0);if(tokens.length>2&&(token=tokens[0]).type==="ID"&&support.getById&&context.nodeType===9&&documentIsHTML&&Expr.relative[tokens[1].type]){context=(Expr.find["ID"](token.matches[0].replace(runescape,funescape),context)||[])[0];if(!context){return results}else if(compiled){context=context.parentNode}selector=selector.slice(tokens.shift().value.length)}i=matchExpr["needsContext"].test(selector)?0:tokens.length;while(i--){token=tokens[i];if(Expr.relative[type=token.type]){break}if(find=Expr.find[type]){if(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context)){tokens.splice(i,1);selector=seed.length&&toSelector(tokens);if(!selector){push.apply(results,seed);return results}break}}}}(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,!context||rsibling.test(selector)&&testContext(context.parentNode)||context);return results};support.sortStable=expando.split("").sort(sortOrder).join("")===expando;support.detectDuplicates=!!hasDuplicate;setDocument();support.sortDetached=assert(function(div1){return div1.compareDocumentPosition(document.createElement("div"))&1});if(!assert(function(div){div.innerHTML="<a href='#'></a>";return div.firstChild.getAttribute("href")==="#"})){addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML){return elem.getAttribute(name,name.toLowerCase()==="type"?1:2)}})}if(!support.attributes||!assert(function(div){div.innerHTML="<input/>";div.firstChild.setAttribute("value","");return div.firstChild.getAttribute("value")===""})){addHandle("value",function(elem,name,isXML){if(!isXML&&elem.nodeName.toLowerCase()==="input"){return elem.defaultValue}})}if(!assert(function(div){return div.getAttribute("disabled")==null})){addHandle(booleans,function(elem,name,isXML){var val;if(!isXML){return elem[name]===true?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null}})}return Sizzle}(window);jQuery.find=Sizzle;jQuery.expr=Sizzle.selectors;jQuery.expr[":"]=jQuery.expr.pseudos;jQuery.uniqueSort=jQuery.unique=Sizzle.uniqueSort;jQuery.text=Sizzle.getText;jQuery.isXMLDoc=Sizzle.isXML;jQuery.contains=Sizzle.contains;var dir=function(elem,dir,until){var matched=[],truncate=until!==undefined;while((elem=elem[dir])&&elem.nodeType!==9){if(elem.nodeType===1){if(truncate&&jQuery(elem).is(until)){break}matched.push(elem)}}return matched};var siblings=function(n,elem){var matched=[];for(;n;n=n.nextSibling){if(n.nodeType===1&&n!==elem){matched.push(n)}}return matched};var rneedsContext=jQuery.expr.match.needsContext;var rsingleTag=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/;var risSimple=/^.[^:#\[\.,]*$/;function winnow(elements,qualifier,not){if(jQuery.isFunction(qualifier)){return jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not})}if(qualifier.nodeType){return jQuery.grep(elements,function(elem){return elem===qualifier!==not})}if(typeof qualifier==="string"){if(risSimple.test(qualifier)){return jQuery.filter(qualifier,elements,not)}qualifier=jQuery.filter(qualifier,elements)}return jQuery.grep(elements,function(elem){return jQuery.inArray(elem,qualifier)>-1!==not})}jQuery.filter=function(expr,elems,not){var elem=elems[0];if(not){expr=":not("+expr+")"}return elems.length===1&&elem.nodeType===1?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return elem.nodeType===1}))};jQuery.fn.extend({find:function(selector){var i,ret=[],self=this,len=self.length;if(typeof selector!=="string"){return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++){if(jQuery.contains(self[i],this)){return true}}}))}for(i=0;i<len;i++){jQuery.find(selector,self[i],ret)}ret=this.pushStack(len>1?jQuery.unique(ret):ret);ret.selector=this.selector?this.selector+" "+selector:selector;return ret},filter:function(selector){return this.pushStack(winnow(this,selector||[],false))},not:function(selector){return this.pushStack(winnow(this,selector||[],true))},is:function(selector){return!!winnow(this,typeof selector==="string"&&rneedsContext.test(selector)?jQuery(selector):selector||[],false).length}});var rootjQuery,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,init=jQuery.fn.init=function(selector,context,root){var match,elem;if(!selector){return this}root=root||rootjQuery;if(typeof selector==="string"){if(selector.charAt(0)==="<"&&selector.charAt(selector.length-1)===">"&&selector.length>=3){match=[null,selector,null]}else{match=rquickExpr.exec(selector)}if(match&&(match[1]||!context)){if(match[1]){context=context instanceof jQuery?context[0]:context;jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,true));if(rsingleTag.test(match[1])&&jQuery.isPlainObject(context)){for(match in context){if(jQuery.isFunction(this[match])){this[match](context[match])}else{this.attr(match,context[match])}}}return this}else{elem=document.getElementById(match[2]);if(elem&&elem.parentNode){if(elem.id!==match[2]){return rootjQuery.find(selector)}this.length=1;this[0]=elem}this.context=document;this.selector=selector;return this}}else if(!context||context.jquery){return(context||root).find(selector)}else{return this.constructor(context).find(selector)}}else if(selector.nodeType){this.context=this[0]=selector;this.length=1;return this}else if(jQuery.isFunction(selector)){return typeof root.ready!=="undefined"?root.ready(selector):selector(jQuery)}if(selector.selector!==undefined){this.selector=selector.selector;this.context=selector.context}return jQuery.makeArray(selector,this)};init.prototype=jQuery.fn;rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:true,contents:true,next:true,prev:true};jQuery.fn.extend({has:function(target){var i,targets=jQuery(target,this),len=targets.length;return this.filter(function(){for(i=0;i<len;i++){if(jQuery.contains(this,targets[i])){return true}}})},closest:function(selectors,context){var cur,i=0,l=this.length,matched=[],pos=rneedsContext.test(selectors)||typeof selectors!=="string"?jQuery(selectors,context||this.context):0;for(;i<l;i++){for(cur=this[i];cur&&cur!==context;cur=cur.parentNode){if(cur.nodeType<11&&(pos?pos.index(cur)>-1:cur.nodeType===1&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break}}}return this.pushStack(matched.length>1?jQuery.uniqueSort(matched):matched)},index:function(elem){if(!elem){return this[0]&&this[0].parentNode?this.first().prevAll().length:-1}if(typeof elem==="string"){return jQuery.inArray(this[0],jQuery(elem))}return jQuery.inArray(elem.jquery?elem[0]:elem,this)},add:function(selector,context){return this.pushStack(jQuery.uniqueSort(jQuery.merge(this.get(),jQuery(selector,context))))},addBack:function(selector){return this.add(selector==null?this.prevObject:this.prevObject.filter(selector))}});function sibling(cur,dir){do{cur=cur[dir]}while(cur&&cur.nodeType!==1);return cur}jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&parent.nodeType!==11?parent:null},parents:function(elem){return dir(elem,"parentNode")},parentsUntil:function(elem,i,until){return dir(elem,"parentNode",until)},next:function(elem){return sibling(elem,"nextSibling")},prev:function(elem){return sibling(elem,"previousSibling")},nextAll:function(elem){return dir(elem,"nextSibling")},prevAll:function(elem){return dir(elem,"previousSibling")},nextUntil:function(elem,i,until){return dir(elem,"nextSibling",until)},prevUntil:function(elem,i,until){return dir(elem,"previousSibling",until)},siblings:function(elem){return siblings((elem.parentNode||{}).firstChild,elem)},children:function(elem){return siblings(elem.firstChild)},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.merge([],elem.childNodes)}},function(name,fn){jQuery.fn[name]=function(until,selector){var ret=jQuery.map(this,fn,until);if(name.slice(-5)!=="Until"){selector=until}if(selector&&typeof selector==="string"){ret=jQuery.filter(selector,ret)}if(this.length>1){if(!guaranteedUnique[name]){ret=jQuery.uniqueSort(ret)}if(rparentsprev.test(name)){ret=ret.reverse()}}return this.pushStack(ret)}});var rnotwhite=/\S+/g;function createOptions(options){ | ||
14 | var object={};jQuery.each(options.match(rnotwhite)||[],function(_,flag){object[flag]=true});return object}jQuery.Callbacks=function(options){options=typeof options==="string"?createOptions(options):jQuery.extend({},options);var firing,memory,fired,locked,list=[],queue=[],firingIndex=-1,fire=function(){locked=options.once;fired=firing=true;for(;queue.length;firingIndex=-1){memory=queue.shift();while(++firingIndex<list.length){if(list[firingIndex].apply(memory[0],memory[1])===false&&options.stopOnFalse){firingIndex=list.length;memory=false}}}if(!options.memory){memory=false}firing=false;if(locked){if(memory){list=[]}else{list=""}}},self={add:function(){if(list){if(memory&&!firing){firingIndex=list.length-1;queue.push(memory)}(function add(args){jQuery.each(args,function(_,arg){if(jQuery.isFunction(arg)){if(!options.unique||!self.has(arg)){list.push(arg)}}else if(arg&&arg.length&&jQuery.type(arg)!=="string"){add(arg)}})})(arguments);if(memory&&!firing){fire()}}return this},remove:function(){jQuery.each(arguments,function(_,arg){var index;while((index=jQuery.inArray(arg,list,index))>-1){list.splice(index,1);if(index<=firingIndex){firingIndex--}}});return this},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:list.length>0},empty:function(){if(list){list=[]}return this},disable:function(){locked=queue=[];list=memory="";return this},disabled:function(){return!list},lock:function(){locked=true;if(!memory){self.disable()}return this},locked:function(){return!!locked},fireWith:function(context,args){if(!locked){args=args||[];args=[context,args.slice?args.slice():args];queue.push(args);if(!firing){fire()}}return this},fire:function(){self.fireWith(this,arguments);return this},fired:function(){return!!fired}};return self};jQuery.extend({Deferred:function(func){var tuples=[["resolve","done",jQuery.Callbacks("once memory"),"resolved"],["reject","fail",jQuery.Callbacks("once memory"),"rejected"],["notify","progress",jQuery.Callbacks("memory")]],state="pending",promise={state:function(){return state},always:function(){deferred.done(arguments).fail(arguments);return this},then:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=jQuery.isFunction(fns[i])&&fns[i];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);if(returned&&jQuery.isFunction(returned.promise)){returned.promise().progress(newDefer.notify).done(newDefer.resolve).fail(newDefer.reject)}else{newDefer[tuple[0]+"With"](this===promise?newDefer.promise():this,fn?[returned]:arguments)}})});fns=null}).promise()},promise:function(obj){return obj!=null?jQuery.extend(obj,promise):promise}},deferred={};promise.pipe=promise.then;jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[3];promise[tuple[1]]=list.add;if(stateString){list.add(function(){state=stateString},tuples[i^1][2].disable,tuples[2][2].lock)}deferred[tuple[0]]=function(){deferred[tuple[0]+"With"](this===deferred?promise:this,arguments);return this};deferred[tuple[0]+"With"]=list.fireWith});promise.promise(deferred);if(func){func.call(deferred,deferred)}return deferred},when:function(subordinate){var i=0,resolveValues=slice.call(arguments),length=resolveValues.length,remaining=length!==1||subordinate&&jQuery.isFunction(subordinate.promise)?length:0,deferred=remaining===1?subordinate:jQuery.Deferred(),updateFunc=function(i,contexts,values){return function(value){contexts[i]=this;values[i]=arguments.length>1?slice.call(arguments):value;if(values===progressValues){deferred.notifyWith(contexts,values)}else if(!--remaining){deferred.resolveWith(contexts,values)}}},progressValues,progressContexts,resolveContexts;if(length>1){progressValues=new Array(length);progressContexts=new Array(length);resolveContexts=new Array(length);for(;i<length;i++){if(resolveValues[i]&&jQuery.isFunction(resolveValues[i].promise)){resolveValues[i].promise().progress(updateFunc(i,progressContexts,progressValues)).done(updateFunc(i,resolveContexts,resolveValues)).fail(deferred.reject)}else{--remaining}}}if(!remaining){deferred.resolveWith(resolveContexts,resolveValues)}return deferred.promise()}});var readyList;jQuery.fn.ready=function(fn){jQuery.ready.promise().done(fn);return this};jQuery.extend({isReady:false,readyWait:1,holdReady:function(hold){if(hold){jQuery.readyWait++}else{jQuery.ready(true)}},ready:function(wait){if(wait===true?--jQuery.readyWait:jQuery.isReady){return}jQuery.isReady=true;if(wait!==true&&--jQuery.readyWait>0){return}readyList.resolveWith(document,[jQuery]);if(jQuery.fn.triggerHandler){jQuery(document).triggerHandler("ready");jQuery(document).off("ready")}}});function detach(){if(document.addEventListener){document.removeEventListener("DOMContentLoaded",completed);window.removeEventListener("load",completed)}else{document.detachEvent("onreadystatechange",completed);window.detachEvent("onload",completed)}}function completed(){if(document.addEventListener||window.event.type==="load"||document.readyState==="complete"){detach();jQuery.ready()}}jQuery.ready.promise=function(obj){if(!readyList){readyList=jQuery.Deferred();if(document.readyState==="complete"||document.readyState!=="loading"&&!document.documentElement.doScroll){window.setTimeout(jQuery.ready)}else if(document.addEventListener){document.addEventListener("DOMContentLoaded",completed);window.addEventListener("load",completed)}else{document.attachEvent("onreadystatechange",completed);window.attachEvent("onload",completed);var top=false;try{top=window.frameElement==null&&document.documentElement}catch(e){}if(top&&top.doScroll){(function doScrollCheck(){if(!jQuery.isReady){try{top.doScroll("left")}catch(e){return window.setTimeout(doScrollCheck,50)}detach();jQuery.ready()}})()}}}return readyList.promise(obj)};jQuery.ready.promise();var i;for(i in jQuery(support)){break}support.ownFirst=i==="0";support.inlineBlockNeedsLayout=false;jQuery(function(){var val,div,body,container;body=document.getElementsByTagName("body")[0];if(!body||!body.style){return}div=document.createElement("div");container=document.createElement("div");container.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px";body.appendChild(container).appendChild(div);if(typeof div.style.zoom!=="undefined"){div.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1";support.inlineBlockNeedsLayout=val=div.offsetWidth===3;if(val){body.style.zoom=1}}body.removeChild(container)});(function(){var div=document.createElement("div");support.deleteExpando=true;try{delete div.test}catch(e){support.deleteExpando=false}div=null})();var acceptData=function(elem){var noData=jQuery.noData[(elem.nodeName+" ").toLowerCase()],nodeType=+elem.nodeType||1;return nodeType!==1&&nodeType!==9?false:!noData||noData!==true&&elem.getAttribute("classid")===noData};var rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/([A-Z])/g;function dataAttr(elem,key,data){if(data===undefined&&elem.nodeType===1){var name="data-"+key.replace(rmultiDash,"-$1").toLowerCase();data=elem.getAttribute(name);if(typeof data==="string"){try{data=data==="true"?true:data==="false"?false:data==="null"?null:+data+""===data?+data:rbrace.test(data)?jQuery.parseJSON(data):data}catch(e){}jQuery.data(elem,key,data)}else{data=undefined}}return data}function isEmptyDataObject(obj){var name;for(name in obj){if(name==="data"&&jQuery.isEmptyObject(obj[name])){continue}if(name!=="toJSON"){return false}}return true}function internalData(elem,name,data,pvt){if(!acceptData(elem)){return}var ret,thisCache,internalKey=jQuery.expando,isNode=elem.nodeType,cache=isNode?jQuery.cache:elem,id=isNode?elem[internalKey]:elem[internalKey]&&internalKey;if((!id||!cache[id]||!pvt&&!cache[id].data)&&data===undefined&&typeof name==="string"){return}if(!id){if(isNode){id=elem[internalKey]=deletedIds.pop()||jQuery.guid++}else{id=internalKey}}if(!cache[id]){cache[id]=isNode?{}:{toJSON:jQuery.noop}}if(typeof name==="object"||typeof name==="function"){if(pvt){cache[id]=jQuery.extend(cache[id],name)}else{cache[id].data=jQuery.extend(cache[id].data,name)}}thisCache=cache[id];if(!pvt){if(!thisCache.data){thisCache.data={}}thisCache=thisCache.data}if(data!==undefined){thisCache[jQuery.camelCase(name)]=data}if(typeof name==="string"){ret=thisCache[name];if(ret==null){ret=thisCache[jQuery.camelCase(name)]}}else{ret=thisCache}return ret}function internalRemoveData(elem,name,pvt){if(!acceptData(elem)){return}var thisCache,i,isNode=elem.nodeType,cache=isNode?jQuery.cache:elem,id=isNode?elem[jQuery.expando]:jQuery.expando;if(!cache[id]){return}if(name){thisCache=pvt?cache[id]:cache[id].data;if(thisCache){if(!jQuery.isArray(name)){if(name in thisCache){name=[name]}else{name=jQuery.camelCase(name);if(name in thisCache){name=[name]}else{name=name.split(" ")}}}else{name=name.concat(jQuery.map(name,jQuery.camelCase))}i=name.length;while(i--){delete thisCache[name[i]]}if(pvt?!isEmptyDataObject(thisCache):!jQuery.isEmptyObject(thisCache)){return}}}if(!pvt){delete cache[id].data;if(!isEmptyDataObject(cache[id])){return}}if(isNode){jQuery.cleanData([elem],true)}else if(support.deleteExpando||cache!=cache.window){delete cache[id]}else{cache[id]=undefined}}jQuery.extend({cache:{},noData:{"applet ":true,"embed ":true,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(elem){elem=elem.nodeType?jQuery.cache[elem[jQuery.expando]]:elem[jQuery.expando];return!!elem&&!isEmptyDataObject(elem)},data:function(elem,name,data){return internalData(elem,name,data)},removeData:function(elem,name){return internalRemoveData(elem,name)},_data:function(elem,name,data){return internalData(elem,name,data,true)},_removeData:function(elem,name){return internalRemoveData(elem,name,true)}});jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(key===undefined){if(this.length){data=jQuery.data(elem);if(elem.nodeType===1&&!jQuery._data(elem,"parsedAttrs")){i=attrs.length;while(i--){if(attrs[i]){name=attrs[i].name;if(name.indexOf("data-")===0){name=jQuery.camelCase(name.slice(5));dataAttr(elem,name,data[name])}}}jQuery._data(elem,"parsedAttrs",true)}}return data}if(typeof key==="object"){return this.each(function(){jQuery.data(this,key)})}return arguments.length>1?this.each(function(){jQuery.data(this,key,value)}):elem?dataAttr(elem,key,jQuery.data(elem,key)):undefined},removeData:function(key){return this.each(function(){jQuery.removeData(this,key)})}});jQuery.extend({queue:function(elem,type,data){var queue;if(elem){type=(type||"fx")+"queue";queue=jQuery._data(elem,type);if(data){if(!queue||jQuery.isArray(data)){queue=jQuery._data(elem,type,jQuery.makeArray(data))}else{queue.push(data)}}return queue||[]}},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type),next=function(){jQuery.dequeue(elem,type)};if(fn==="inprogress"){fn=queue.shift();startLength--}if(fn){if(type==="fx"){queue.unshift("inprogress")}delete hooks.stop;fn.call(elem,next,hooks)}if(!startLength&&hooks){hooks.empty.fire()}},_queueHooks:function(elem,type){var key=type+"queueHooks";return jQuery._data(elem,key)||jQuery._data(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){jQuery._removeData(elem,type+"queue");jQuery._removeData(elem,key)})})}});jQuery.fn.extend({queue:function(type,data){var setter=2;if(typeof type!=="string"){data=type;type="fx";setter--}if(arguments.length<setter){return jQuery.queue(this[0],type)}return data===undefined?this:this.each(function(){var queue=jQuery.queue(this,type,data);jQuery._queueHooks(this,type);if(type==="fx"&&queue[0]!=="inprogress"){jQuery.dequeue(this,type)}})},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type)})},clearQueue:function(type){return this.queue(type||"fx",[])},promise:function(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function(){if(!--count){defer.resolveWith(elements,[elements])}};if(typeof type!=="string"){obj=type;type=undefined}type=type||"fx";while(i--){tmp=jQuery._data(elements[i],type+"queueHooks");if(tmp&&tmp.empty){count++;tmp.empty.add(resolve)}}resolve();return defer.promise(obj)}});(function(){var shrinkWrapBlocksVal;support.shrinkWrapBlocks=function(){if(shrinkWrapBlocksVal!=null){return shrinkWrapBlocksVal}shrinkWrapBlocksVal=false;var div,body,container;body=document.getElementsByTagName("body")[0];if(!body||!body.style){return}div=document.createElement("div");container=document.createElement("div");container.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px";body.appendChild(container).appendChild(div);if(typeof div.style.zoom!=="undefined"){div.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;"+"box-sizing:content-box;display:block;margin:0;border:0;"+"padding:1px;width:1px;zoom:1";div.appendChild(document.createElement("div")).style.width="5px";shrinkWrapBlocksVal=div.offsetWidth!==3}body.removeChild(container);return shrinkWrapBlocksVal}})();var pnum=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;var rcssNum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i");var cssExpand=["Top","Right","Bottom","Left"];var isHidden=function(elem,el){elem=el||elem;return jQuery.css(elem,"display")==="none"||!jQuery.contains(elem.ownerDocument,elem)};function adjustCSS(elem,prop,valueParts,tween){var adjusted,scale=1,maxIterations=20,currentValue=tween?function(){return tween.cur()}:function(){return jQuery.css(elem,prop,"")},initial=currentValue(),unit=valueParts&&valueParts[3]||(jQuery.cssNumber[prop]?"":"px"),initialInUnit=(jQuery.cssNumber[prop]||unit!=="px"&&+initial)&&rcssNum.exec(jQuery.css(elem,prop));if(initialInUnit&&initialInUnit[3]!==unit){unit=unit||initialInUnit[3];valueParts=valueParts||[];initialInUnit=+initial||1;do{scale=scale||".5";initialInUnit=initialInUnit/scale;jQuery.style(elem,prop,initialInUnit+unit)}while(scale!==(scale=currentValue()/initial)&&scale!==1&&--maxIterations)}if(valueParts){initialInUnit=+initialInUnit||+initial||0;adjusted=valueParts[1]?initialInUnit+(valueParts[1]+1)*valueParts[2]:+valueParts[2];if(tween){tween.unit=unit;tween.start=initialInUnit;tween.end=adjusted}}return adjusted}var access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,length=elems.length,bulk=key==null;if(jQuery.type(key)==="object"){chainable=true;for(i in key){access(elems,fn,i,key[i],true,emptyGet,raw)}}else if(value!==undefined){chainable=true;if(!jQuery.isFunction(value)){raw=true}if(bulk){if(raw){fn.call(elems,value);fn=null}else{bulk=fn;fn=function(elem,key,value){return bulk.call(jQuery(elem),value)}}}if(fn){for(;i<length;i++){fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)))}}}return chainable?elems:bulk?fn.call(elems):length?fn(elems[0],key):emptyGet};var rcheckableType=/^(?:checkbox|radio)$/i;var rtagName=/<([\w:-]+)/;var rscriptType=/^$|\/(?:java|ecma)script/i;var rleadingWhitespace=/^\s+/;var nodeNames="abbr|article|aside|audio|bdi|canvas|data|datalist|"+"details|dialog|figcaption|figure|footer|header|hgroup|main|"+"mark|meter|nav|output|picture|progress|section|summary|template|time|video";function createSafeFragment(document){var list=nodeNames.split("|"),safeFrag=document.createDocumentFragment();if(safeFrag.createElement){while(list.length){safeFrag.createElement(list.pop())}}return safeFrag}(function(){var div=document.createElement("div"),fragment=document.createDocumentFragment(),input=document.createElement("input");div.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";support.leadingWhitespace=div.firstChild.nodeType===3;support.tbody=!div.getElementsByTagName("tbody").length;support.htmlSerialize=!!div.getElementsByTagName("link").length;support.html5Clone=document.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>";input.type="checkbox";input.checked=true;fragment.appendChild(input);support.appendChecked=input.checked;div.innerHTML="<textarea>x</textarea>";support.noCloneChecked=!!div.cloneNode(true).lastChild.defaultValue;fragment.appendChild(div);input=document.createElement("input");input.setAttribute("type","radio");input.setAttribute("checked","checked");input.setAttribute("name","t");div.appendChild(input);support.checkClone=div.cloneNode(true).cloneNode(true).lastChild.checked;support.noCloneEvent=!!div.addEventListener;div[jQuery.expando]=1;support.attributes=!div.getAttribute(jQuery.expando)})();var wrapMap={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};wrapMap.optgroup=wrapMap.option;wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead;wrapMap.th=wrapMap.td;function getAll(context,tag){var elems,elem,i=0,found=typeof context.getElementsByTagName!=="undefined"?context.getElementsByTagName(tag||"*"):typeof context.querySelectorAll!=="undefined"?context.querySelectorAll(tag||"*"):undefined;if(!found){for(found=[],elems=context.childNodes||context;(elem=elems[i])!=null;i++){if(!tag||jQuery.nodeName(elem,tag)){found.push(elem)}else{jQuery.merge(found,getAll(elem,tag))}}}return tag===undefined||tag&&jQuery.nodeName(context,tag)?jQuery.merge([context],found):found}function setGlobalEval(elems,refElements){var elem,i=0;for(;(elem=elems[i])!=null;i++){jQuery._data(elem,"globalEval",!refElements||jQuery._data(refElements[i],"globalEval"))}}var rhtml=/<|&#?\w+;/,rtbody=/<tbody/i;function fixDefaultChecked(elem){if(rcheckableType.test(elem.type)){elem.defaultChecked=elem.checked}}function buildFragment(elems,context,scripts,selection,ignored){var j,elem,contains,tmp,tag,tbody,wrap,l=elems.length,safe=createSafeFragment(context),nodes=[],i=0;for(;i<l;i++){elem=elems[i];if(elem||elem===0){if(jQuery.type(elem)==="object"){jQuery.merge(nodes,elem.nodeType?[elem]:elem)}else if(!rhtml.test(elem)){nodes.push(context.createTextNode(elem))}else{tmp=tmp||safe.appendChild(context.createElement("div"));tag=(rtagName.exec(elem)||["",""])[1].toLowerCase();wrap=wrapMap[tag]||wrapMap._default;tmp.innerHTML=wrap[1]+jQuery.htmlPrefilter(elem)+wrap[2];j=wrap[0];while(j--){tmp=tmp.lastChild}if(!support.leadingWhitespace&&rleadingWhitespace.test(elem)){nodes.push(context.createTextNode(rleadingWhitespace.exec(elem)[0]))}if(!support.tbody){elem=tag==="table"&&!rtbody.test(elem)?tmp.firstChild:wrap[1]==="<table>"&&!rtbody.test(elem)?tmp:0;j=elem&&elem.childNodes.length;while(j--){if(jQuery.nodeName(tbody=elem.childNodes[j],"tbody")&&!tbody.childNodes.length){elem.removeChild(tbody)}}}jQuery.merge(nodes,tmp.childNodes);tmp.textContent="";while(tmp.firstChild){tmp.removeChild(tmp.firstChild)}tmp=safe.lastChild}}}if(tmp){safe.removeChild(tmp)}if(!support.appendChecked){jQuery.grep(getAll(nodes,"input"),fixDefaultChecked)}i=0;while(elem=nodes[i++]){if(selection&&jQuery.inArray(elem,selection)>-1){if(ignored){ignored.push(elem)}continue}contains=jQuery.contains(elem.ownerDocument,elem);tmp=getAll(safe.appendChild(elem),"script");if(contains){setGlobalEval(tmp)}if(scripts){j=0;while(elem=tmp[j++]){if(rscriptType.test(elem.type||"")){scripts.push(elem)}}}}tmp=null;return safe}(function(){var i,eventName,div=document.createElement("div");for(i in{submit:true,change:true,focusin:true}){eventName="on"+i;if(!(support[i]=eventName in window)){div.setAttribute(eventName,"t");support[i]=div.attributes[eventName].expando===false}}div=null})();var rformElems=/^(?:input|select|textarea)$/i,rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,rtypenamespace=/^([^.]*)(?:\.(.+)|)/;function returnTrue(){return true}function returnFalse(){return false}function safeActiveElement(){try{return document.activeElement}catch(err){}}function on(elem,types,selector,data,fn,one){var origFn,type;if(typeof types==="object"){if(typeof selector!=="string"){data=data||selector;selector=undefined}for(type in types){on(elem,type,selector,data,types[type],one)}return elem}if(data==null&&fn==null){fn=selector;data=selector=undefined}else if(fn==null){if(typeof selector==="string"){fn=data;data=undefined}else{fn=data;data=selector;selector=undefined}}if(fn===false){fn=returnFalse}else if(!fn){return elem}if(one===1){origFn=fn;fn=function(event){jQuery().off(event);return origFn.apply(this,arguments)};fn.guid=origFn.guid||(origFn.guid=jQuery.guid++)}return elem.each(function(){jQuery.event.add(this,types,fn,data,selector)})}jQuery.event={global:{},add:function(elem,types,handler,data,selector){var tmp,events,t,handleObjIn,special,eventHandle,handleObj,handlers,type,namespaces,origType,elemData=jQuery._data(elem);if(!elemData){return}if(handler.handler){handleObjIn=handler;handler=handleObjIn.handler;selector=handleObjIn.selector}if(!handler.guid){handler.guid=jQuery.guid++}if(!(events=elemData.events)){events=elemData.events={}}if(!(eventHandle=elemData.handle)){eventHandle=elemData.handle=function(e){return typeof jQuery!=="undefined"&&(!e||jQuery.event.triggered!==e.type)?jQuery.event.dispatch.apply(eventHandle.elem,arguments):undefined};eventHandle.elem=elem}types=(types||"").match(rnotwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();if(!type){continue}special=jQuery.event.special[type]||{};type=(selector?special.delegateType:special.bindType)||type;special=jQuery.event.special[type]||{};handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn);if(!(handlers=events[type])){handlers=events[type]=[];handlers.delegateCount=0;if(!special.setup||special.setup.call(elem,data,namespaces,eventHandle)===false){if(elem.addEventListener){elem.addEventListener(type,eventHandle,false)}else if(elem.attachEvent){elem.attachEvent("on"+type,eventHandle)}}}if(special.add){special.add.call(elem,handleObj);if(!handleObj.handler.guid){handleObj.handler.guid=handler.guid}}if(selector){handlers.splice(handlers.delegateCount++,0,handleObj)}else{handlers.push(handleObj)}jQuery.event.global[type]=true}elem=null},remove:function(elem,types,handler,selector,mappedTypes){var j,handleObj,tmp,origCount,t,events,special,handlers,type,namespaces,origType,elemData=jQuery.hasData(elem)&&jQuery._data(elem);if(!elemData||!(events=elemData.events)){return}types=(types||"").match(rnotwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();if(!type){for(type in events){jQuery.event.remove(elem,type+types[t],handler,selector,true)}continue}special=jQuery.event.special[type]||{};type=(selector?special.delegateType:special.bindType)||type;handlers=events[type]||[];tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)");origCount=j=handlers.length;while(j--){handleObj=handlers[j];if((mappedTypes||origType===handleObj.origType)&&(!handler||handler.guid===handleObj.guid)&&(!tmp||tmp.test(handleObj.namespace))&&(!selector||selector===handleObj.selector||selector==="**"&&handleObj.selector)){handlers.splice(j,1);if(handleObj.selector){handlers.delegateCount--}if(special.remove){special.remove.call(elem,handleObj)}}}if(origCount&&!handlers.length){if(!special.teardown||special.teardown.call(elem,namespaces,elemData.handle)===false){jQuery.removeEvent(elem,type,elemData.handle)}delete events[type]}}if(jQuery.isEmptyObject(events)){delete elemData.handle;jQuery._removeData(elem,"events")}},trigger:function(event,data,elem,onlyHandlers){var handle,ontype,cur,bubbleType,special,tmp,i,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];cur=tmp=elem=elem||document;if(elem.nodeType===3||elem.nodeType===8){return}if(rfocusMorph.test(type+jQuery.event.triggered)){return}if(type.indexOf(".")>-1){namespaces=type.split(".");type=namespaces.shift();namespaces.sort()}ontype=type.indexOf(":")<0&&"on"+type;event=event[jQuery.expando]?event:new jQuery.Event(type,typeof event==="object"&&event);event.isTrigger=onlyHandlers?2:3;event.namespace=namespaces.join(".");event.rnamespace=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;event.result=undefined;if(!event.target){event.target=elem}data=data==null?[event]:jQuery.makeArray(data,[event]);special=jQuery.event.special[type]||{};if(!onlyHandlers&&special.trigger&&special.trigger.apply(elem,data)===false){return}if(!onlyHandlers&&!special.noBubble&&!jQuery.isWindow(elem)){bubbleType=special.delegateType||type;if(!rfocusMorph.test(bubbleType+type)){cur=cur.parentNode}for(;cur;cur=cur.parentNode){eventPath.push(cur);tmp=cur}if(tmp===(elem.ownerDocument||document)){eventPath.push(tmp.defaultView||tmp.parentWindow||window)}}i=0;while((cur=eventPath[i++])&&!event.isPropagationStopped()){event.type=i>1?bubbleType:special.bindType||type;handle=(jQuery._data(cur,"events")||{})[event.type]&&jQuery._data(cur,"handle");if(handle){handle.apply(cur,data)}handle=ontype&&cur[ontype];if(handle&&handle.apply&&acceptData(cur)){event.result=handle.apply(cur,data);if(event.result===false){event.preventDefault()}}}event.type=type;if(!onlyHandlers&&!event.isDefaultPrevented()){if((!special._default||special._default.apply(eventPath.pop(),data)===false)&&acceptData(elem)){if(ontype&&elem[type]&&!jQuery.isWindow(elem)){tmp=elem[ontype];if(tmp){elem[ontype]=null}jQuery.event.triggered=type;try{elem[type]()}catch(e){}jQuery.event.triggered=undefined;if(tmp){elem[ontype]=tmp}}}}return event.result},dispatch:function(event){event=jQuery.event.fix(event);var i,j,ret,matched,handleObj,handlerQueue=[],args=slice.call(arguments),handlers=(jQuery._data(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};args[0]=event;event.delegateTarget=this;if(special.preDispatch&&special.preDispatch.call(this,event)===false){return}handlerQueue=jQuery.event.handlers.call(this,event,handlers);i=0;while((matched=handlerQueue[i++])&&!event.isPropagationStopped()){event.currentTarget=matched.elem;j=0;while((handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped()){if(!event.rnamespace||event.rnamespace.test(handleObj.namespace)){event.handleObj=handleObj;event.data=handleObj.data;ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args);if(ret!==undefined){if((event.result=ret)===false){event.preventDefault();event.stopPropagation()}}}}}if(special.postDispatch){special.postDispatch.call(this,event)}return event.result},handlers:function(event,handlers){var i,matches,sel,handleObj,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&(event.type!=="click"||isNaN(event.button)||event.button<1)){for(;cur!=this;cur=cur.parentNode||this){if(cur.nodeType===1&&(cur.disabled!==true||event.type!=="click")){matches=[];for(i=0;i<delegateCount;i++){handleObj=handlers[i];sel=handleObj.selector+" ";if(matches[sel]===undefined){matches[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>-1:jQuery.find(sel,this,null,[cur]).length}if(matches[sel]){matches.push(handleObj)}}if(matches.length){handlerQueue.push({elem:cur,handlers:matches})}}}}if(delegateCount<handlers.length){handlerQueue.push({elem:this,handlers:handlers.slice(delegateCount)})}return handlerQueue},fix:function(event){if(event[jQuery.expando]){return event}var i,prop,copy,type=event.type,originalEvent=event,fixHook=this.fixHooks[type];if(!fixHook){this.fixHooks[type]=fixHook=rmouseEvent.test(type)?this.mouseHooks:rkeyEvent.test(type)?this.keyHooks:{}}copy=fixHook.props?this.props.concat(fixHook.props):this.props;event=new jQuery.Event(originalEvent);i=copy.length;while(i--){prop=copy[i];event[prop]=originalEvent[prop]}if(!event.target){event.target=originalEvent.srcElement||document}if(event.target.nodeType===3){event.target=event.target.parentNode}event.metaKey=!!event.metaKey;return fixHook.filter?fixHook.filter(event,originalEvent):event},props:("altKey bubbles cancelable ctrlKey currentTarget detail eventPhase "+"metaKey relatedTarget shiftKey target timeStamp view which").split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(event,original){if(event.which==null){event.which=original.charCode!=null?original.charCode:original.keyCode}return event}},mouseHooks:{props:("button buttons clientX clientY fromElement offsetX offsetY "+"pageX pageY screenX screenY toElement").split(" "),filter:function(event,original){var body,eventDoc,doc,button=original.button,fromElement=original.fromElement;if(event.pageX==null&&original.clientX!=null){eventDoc=event.target.ownerDocument||document;doc=eventDoc.documentElement;body=eventDoc.body;event.pageX=original.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc&&doc.clientLeft||body&&body.clientLeft||0);event.pageY=original.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc&&doc.clientTop||body&&body.clientTop||0)}if(!event.relatedTarget&&fromElement){event.relatedTarget=fromElement===event.target?original.toElement:fromElement}if(!event.which&&button!==undefined){event.which=button&1?1:button&2?3:button&4?2:0}return event}},special:{load:{noBubble:true},focus:{trigger:function(){if(this!==safeActiveElement()&&this.focus){try{this.focus();return false}catch(e){}}},delegateType:"focusin"},blur:{trigger:function(){if(this===safeActiveElement()&&this.blur){this.blur();return false}},delegateType:"focusout"},click:{trigger:function(){if(jQuery.nodeName(this,"input")&&this.type==="checkbox"&&this.click){this.click();return false}},_default:function(event){return jQuery.nodeName(event.target,"a")}},beforeunload:{postDispatch:function(event){if(event.result!==undefined&&event.originalEvent){event.originalEvent.returnValue=event.result}}}},simulate:function(type,elem,event){var e=jQuery.extend(new jQuery.Event,event,{type:type,isSimulated:true});jQuery.event.trigger(e,null,elem);if(e.isDefaultPrevented()){event.preventDefault()}}};jQuery.removeEvent=document.removeEventListener?function(elem,type,handle){if(elem.removeEventListener){elem.removeEventListener(type,handle)}}:function(elem,type,handle){var name="on"+type;if(elem.detachEvent){if(typeof elem[name]==="undefined"){elem[name]=null}elem.detachEvent(name,handle)}};jQuery.Event=function(src,props){if(!(this instanceof jQuery.Event)){return new jQuery.Event(src,props)}if(src&&src.type){this.originalEvent=src;this.type=src.type;this.isDefaultPrevented=src.defaultPrevented||src.defaultPrevented===undefined&&src.returnValue===false?returnTrue:returnFalse}else{this.type=src}if(props){jQuery.extend(this,props)}this.timeStamp=src&&src.timeStamp||jQuery.now();this[jQuery.expando]=true};jQuery.Event.prototype={constructor:jQuery.Event,isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue;if(!e){return}if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=returnTrue;if(!e||this.isSimulated){return}if(e.stopPropagation){e.stopPropagation()}e.cancelBubble=true},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue;if(e&&e.stopImmediatePropagation){e.stopImmediatePropagation()}this.stopPropagation()}};jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={ | ||
15 | delegateType:fix,bindType:fix,handle:function(event){var ret,target=this,related=event.relatedTarget,handleObj=event.handleObj;if(!related||related!==target&&!jQuery.contains(target,related)){event.type=handleObj.origType;ret=handleObj.handler.apply(this,arguments);event.type=fix}return ret}}});if(!support.submit){jQuery.event.special.submit={setup:function(){if(jQuery.nodeName(this,"form")){return false}jQuery.event.add(this,"click._submit keypress._submit",function(e){var elem=e.target,form=jQuery.nodeName(elem,"input")||jQuery.nodeName(elem,"button")?jQuery.prop(elem,"form"):undefined;if(form&&!jQuery._data(form,"submit")){jQuery.event.add(form,"submit._submit",function(event){event._submitBubble=true});jQuery._data(form,"submit",true)}})},postDispatch:function(event){if(event._submitBubble){delete event._submitBubble;if(this.parentNode&&!event.isTrigger){jQuery.event.simulate("submit",this.parentNode,event)}}},teardown:function(){if(jQuery.nodeName(this,"form")){return false}jQuery.event.remove(this,"._submit")}}}if(!support.change){jQuery.event.special.change={setup:function(){if(rformElems.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){jQuery.event.add(this,"propertychange._change",function(event){if(event.originalEvent.propertyName==="checked"){this._justChanged=true}});jQuery.event.add(this,"click._change",function(event){if(this._justChanged&&!event.isTrigger){this._justChanged=false}jQuery.event.simulate("change",this,event)})}return false}jQuery.event.add(this,"beforeactivate._change",function(e){var elem=e.target;if(rformElems.test(elem.nodeName)&&!jQuery._data(elem,"change")){jQuery.event.add(elem,"change._change",function(event){if(this.parentNode&&!event.isSimulated&&!event.isTrigger){jQuery.event.simulate("change",this.parentNode,event)}});jQuery._data(elem,"change",true)}})},handle:function(event){var elem=event.target;if(this!==elem||event.isSimulated||event.isTrigger||elem.type!=="radio"&&elem.type!=="checkbox"){return event.handleObj.handler.apply(this,arguments)}},teardown:function(){jQuery.event.remove(this,"._change");return!rformElems.test(this.nodeName)}}}if(!support.focusin){jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event))};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this,attaches=jQuery._data(doc,fix);if(!attaches){doc.addEventListener(orig,handler,true)}jQuery._data(doc,fix,(attaches||0)+1)},teardown:function(){var doc=this.ownerDocument||this,attaches=jQuery._data(doc,fix)-1;if(!attaches){doc.removeEventListener(orig,handler,true);jQuery._removeData(doc,fix)}else{jQuery._data(doc,fix,attaches)}}}})}jQuery.fn.extend({on:function(types,selector,data,fn){return on(this,types,selector,data,fn)},one:function(types,selector,data,fn){return on(this,types,selector,data,fn,1)},off:function(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj){handleObj=types.handleObj;jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler);return this}if(typeof types==="object"){for(type in types){this.off(type,selector,types[type])}return this}if(selector===false||typeof selector==="function"){fn=selector;selector=undefined}if(fn===false){fn=returnFalse}return this.each(function(){jQuery.event.remove(this,types,fn,selector)})},trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this)})},triggerHandler:function(type,data){var elem=this[0];if(elem){return jQuery.event.trigger(type,data,elem,true)}}});var rinlinejQuery=/ jQuery\d+="(?:null|\d+)"/g,rnoshimcache=new RegExp("<(?:"+nodeNames+")[\\s/>]","i"),rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,rnoInnerhtml=/<script|<style|<link/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rscriptTypeMasked=/^true\/(.*)/,rcleanScript=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,safeFragment=createSafeFragment(document),fragmentDiv=safeFragment.appendChild(document.createElement("div"));function manipulationTarget(elem,content){return jQuery.nodeName(elem,"table")&&jQuery.nodeName(content.nodeType!==11?content:content.firstChild,"tr")?elem.getElementsByTagName("tbody")[0]||elem.appendChild(elem.ownerDocument.createElement("tbody")):elem}function disableScript(elem){elem.type=(jQuery.find.attr(elem,"type")!==null)+"/"+elem.type;return elem}function restoreScript(elem){var match=rscriptTypeMasked.exec(elem.type);if(match){elem.type=match[1]}else{elem.removeAttribute("type")}return elem}function cloneCopyEvent(src,dest){if(dest.nodeType!==1||!jQuery.hasData(src)){return}var type,i,l,oldData=jQuery._data(src),curData=jQuery._data(dest,oldData),events=oldData.events;if(events){delete curData.handle;curData.events={};for(type in events){for(i=0,l=events[type].length;i<l;i++){jQuery.event.add(dest,type,events[type][i])}}}if(curData.data){curData.data=jQuery.extend({},curData.data)}}function fixCloneNodeIssues(src,dest){var nodeName,e,data;if(dest.nodeType!==1){return}nodeName=dest.nodeName.toLowerCase();if(!support.noCloneEvent&&dest[jQuery.expando]){data=jQuery._data(dest);for(e in data.events){jQuery.removeEvent(dest,e,data.handle)}dest.removeAttribute(jQuery.expando)}if(nodeName==="script"&&dest.text!==src.text){disableScript(dest).text=src.text;restoreScript(dest)}else if(nodeName==="object"){if(dest.parentNode){dest.outerHTML=src.outerHTML}if(support.html5Clone&&(src.innerHTML&&!jQuery.trim(dest.innerHTML))){dest.innerHTML=src.innerHTML}}else if(nodeName==="input"&&rcheckableType.test(src.type)){dest.defaultChecked=dest.checked=src.checked;if(dest.value!==src.value){dest.value=src.value}}else if(nodeName==="option"){dest.defaultSelected=dest.selected=src.defaultSelected}else if(nodeName==="input"||nodeName==="textarea"){dest.defaultValue=src.defaultValue}}function domManip(collection,args,callback,ignored){args=concat.apply([],args);var first,node,hasScripts,scripts,doc,fragment,i=0,l=collection.length,iNoClone=l-1,value=args[0],isFunction=jQuery.isFunction(value);if(isFunction||l>1&&typeof value==="string"&&!support.checkClone&&rchecked.test(value)){return collection.each(function(index){var self=collection.eq(index);if(isFunction){args[0]=value.call(this,index,self.html())}domManip(self,args,callback,ignored)})}if(l){fragment=buildFragment(args,collection[0].ownerDocument,false,collection,ignored);first=fragment.firstChild;if(fragment.childNodes.length===1){fragment=first}if(first||ignored){scripts=jQuery.map(getAll(fragment,"script"),disableScript);hasScripts=scripts.length;for(;i<l;i++){node=fragment;if(i!==iNoClone){node=jQuery.clone(node,true,true);if(hasScripts){jQuery.merge(scripts,getAll(node,"script"))}}callback.call(collection[i],node,i)}if(hasScripts){doc=scripts[scripts.length-1].ownerDocument;jQuery.map(scripts,restoreScript);for(i=0;i<hasScripts;i++){node=scripts[i];if(rscriptType.test(node.type||"")&&!jQuery._data(node,"globalEval")&&jQuery.contains(doc,node)){if(node.src){if(jQuery._evalUrl){jQuery._evalUrl(node.src)}}else{jQuery.globalEval((node.text||node.textContent||node.innerHTML||"").replace(rcleanScript,""))}}}}fragment=first=null}}return collection}function remove(elem,selector,keepData){var node,elems=selector?jQuery.filter(selector,elem):elem,i=0;for(;(node=elems[i])!=null;i++){if(!keepData&&node.nodeType===1){jQuery.cleanData(getAll(node))}if(node.parentNode){if(keepData&&jQuery.contains(node.ownerDocument,node)){setGlobalEval(getAll(node,"script"))}node.parentNode.removeChild(node)}}return elem}jQuery.extend({htmlPrefilter:function(html){return html.replace(rxhtmlTag,"<$1></$2>")},clone:function(elem,dataAndEvents,deepDataAndEvents){var destElements,node,clone,i,srcElements,inPage=jQuery.contains(elem.ownerDocument,elem);if(support.html5Clone||jQuery.isXMLDoc(elem)||!rnoshimcache.test("<"+elem.nodeName+">")){clone=elem.cloneNode(true)}else{fragmentDiv.innerHTML=elem.outerHTML;fragmentDiv.removeChild(clone=fragmentDiv.firstChild)}if((!support.noCloneEvent||!support.noCloneChecked)&&(elem.nodeType===1||elem.nodeType===11)&&!jQuery.isXMLDoc(elem)){destElements=getAll(clone);srcElements=getAll(elem);for(i=0;(node=srcElements[i])!=null;++i){if(destElements[i]){fixCloneNodeIssues(node,destElements[i])}}}if(dataAndEvents){if(deepDataAndEvents){srcElements=srcElements||getAll(elem);destElements=destElements||getAll(clone);for(i=0;(node=srcElements[i])!=null;i++){cloneCopyEvent(node,destElements[i])}}else{cloneCopyEvent(elem,clone)}}destElements=getAll(clone,"script");if(destElements.length>0){setGlobalEval(destElements,!inPage&&getAll(elem,"script"))}destElements=srcElements=node=null;return clone},cleanData:function(elems,forceAcceptData){var elem,type,id,data,i=0,internalKey=jQuery.expando,cache=jQuery.cache,attributes=support.attributes,special=jQuery.event.special;for(;(elem=elems[i])!=null;i++){if(forceAcceptData||acceptData(elem)){id=elem[internalKey];data=id&&cache[id];if(data){if(data.events){for(type in data.events){if(special[type]){jQuery.event.remove(elem,type)}else{jQuery.removeEvent(elem,type,data.handle)}}}if(cache[id]){delete cache[id];if(!attributes&&typeof elem.removeAttribute!=="undefined"){elem.removeAttribute(internalKey)}else{elem[internalKey]=undefined}deletedIds.push(id)}}}}}});jQuery.fn.extend({domManip:domManip,detach:function(selector){return remove(this,selector,true)},remove:function(selector){return remove(this,selector)},text:function(value){return access(this,function(value){return value===undefined?jQuery.text(this):this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(value))},null,value,arguments.length)},append:function(){return domManip(this,arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.appendChild(elem)}})},prepend:function(){return domManip(this,arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild)}})},before:function(){return domManip(this,arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this)}})},after:function(){return domManip(this,arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this.nextSibling)}})},empty:function(){var elem,i=0;for(;(elem=this[i])!=null;i++){if(elem.nodeType===1){jQuery.cleanData(getAll(elem,false))}while(elem.firstChild){elem.removeChild(elem.firstChild)}if(elem.options&&jQuery.nodeName(elem,"select")){elem.options.length=0}}return this},clone:function(dataAndEvents,deepDataAndEvents){dataAndEvents=dataAndEvents==null?false:dataAndEvents;deepDataAndEvents=deepDataAndEvents==null?dataAndEvents:deepDataAndEvents;return this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents)})},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(value===undefined){return elem.nodeType===1?elem.innerHTML.replace(rinlinejQuery,""):undefined}if(typeof value==="string"&&!rnoInnerhtml.test(value)&&(support.htmlSerialize||!rnoshimcache.test(value))&&(support.leadingWhitespace||!rleadingWhitespace.test(value))&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=jQuery.htmlPrefilter(value);try{for(;i<l;i++){elem=this[i]||{};if(elem.nodeType===1){jQuery.cleanData(getAll(elem,false));elem.innerHTML=value}}elem=0}catch(e){}}if(elem){this.empty().append(value)}},null,value,arguments.length)},replaceWith:function(){var ignored=[];return domManip(this,arguments,function(elem){var parent=this.parentNode;if(jQuery.inArray(this,ignored)<0){jQuery.cleanData(getAll(this));if(parent){parent.replaceChild(elem,this)}}},ignored)}});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){var elems,i=0,ret=[],insert=jQuery(selector),last=insert.length-1;for(;i<=last;i++){elems=i===last?this:this.clone(true);jQuery(insert[i])[original](elems);push.apply(ret,elems.get())}return this.pushStack(ret)}});var iframe,elemdisplay={HTML:"block",BODY:"block"};function actualDisplay(name,doc){var elem=jQuery(doc.createElement(name)).appendTo(doc.body),display=jQuery.css(elem[0],"display");elem.detach();return display}function defaultDisplay(nodeName){var doc=document,display=elemdisplay[nodeName];if(!display){display=actualDisplay(nodeName,doc);if(display==="none"||!display){iframe=(iframe||jQuery("<iframe frameborder='0' width='0' height='0'/>")).appendTo(doc.documentElement);doc=(iframe[0].contentWindow||iframe[0].contentDocument).document;doc.write();doc.close();display=actualDisplay(nodeName,doc);iframe.detach()}elemdisplay[nodeName]=display}return display}var rmargin=/^margin/;var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i");var swap=function(elem,options,callback,args){var ret,name,old={};for(name in options){old[name]=elem.style[name];elem.style[name]=options[name]}ret=callback.apply(elem,args||[]);for(name in options){elem.style[name]=old[name]}return ret};var documentElement=document.documentElement;(function(){var pixelPositionVal,pixelMarginRightVal,boxSizingReliableVal,reliableHiddenOffsetsVal,reliableMarginRightVal,reliableMarginLeftVal,container=document.createElement("div"),div=document.createElement("div");if(!div.style){return}div.style.cssText="float:left;opacity:.5";support.opacity=div.style.opacity==="0.5";support.cssFloat=!!div.style.cssFloat;div.style.backgroundClip="content-box";div.cloneNode(true).style.backgroundClip="";support.clearCloneStyle=div.style.backgroundClip==="content-box";container=document.createElement("div");container.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;"+"padding:0;margin-top:1px;position:absolute";div.innerHTML="";container.appendChild(div);support.boxSizing=div.style.boxSizing===""||div.style.MozBoxSizing===""||div.style.WebkitBoxSizing==="";jQuery.extend(support,{reliableHiddenOffsets:function(){if(pixelPositionVal==null){computeStyleTests()}return reliableHiddenOffsetsVal},boxSizingReliable:function(){if(pixelPositionVal==null){computeStyleTests()}return boxSizingReliableVal},pixelMarginRight:function(){if(pixelPositionVal==null){computeStyleTests()}return pixelMarginRightVal},pixelPosition:function(){if(pixelPositionVal==null){computeStyleTests()}return pixelPositionVal},reliableMarginRight:function(){if(pixelPositionVal==null){computeStyleTests()}return reliableMarginRightVal},reliableMarginLeft:function(){if(pixelPositionVal==null){computeStyleTests()}return reliableMarginLeftVal}});function computeStyleTests(){var contents,divStyle,documentElement=document.documentElement;documentElement.appendChild(container);div.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;"+"position:relative;display:block;"+"margin:auto;border:1px;padding:1px;"+"top:1%;width:50%";pixelPositionVal=boxSizingReliableVal=reliableMarginLeftVal=false;pixelMarginRightVal=reliableMarginRightVal=true;if(window.getComputedStyle){divStyle=window.getComputedStyle(div);pixelPositionVal=(divStyle||{}).top!=="1%";reliableMarginLeftVal=(divStyle||{}).marginLeft==="2px";boxSizingReliableVal=(divStyle||{width:"4px"}).width==="4px";div.style.marginRight="50%";pixelMarginRightVal=(divStyle||{marginRight:"4px"}).marginRight==="4px";contents=div.appendChild(document.createElement("div"));contents.style.cssText=div.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;"+"box-sizing:content-box;display:block;margin:0;border:0;padding:0";contents.style.marginRight=contents.style.width="0";div.style.width="1px";reliableMarginRightVal=!parseFloat((window.getComputedStyle(contents)||{}).marginRight);div.removeChild(contents)}div.style.display="none";reliableHiddenOffsetsVal=div.getClientRects().length===0;if(reliableHiddenOffsetsVal){div.style.display="";div.innerHTML="<table><tr><td></td><td>t</td></tr></table>";contents=div.getElementsByTagName("td");contents[0].style.cssText="margin:0;border:0;padding:0;display:none";reliableHiddenOffsetsVal=contents[0].offsetHeight===0;if(reliableHiddenOffsetsVal){contents[0].style.display="";contents[1].style.display="none";reliableHiddenOffsetsVal=contents[0].offsetHeight===0}}documentElement.removeChild(container)}})();var getStyles,curCSS,rposition=/^(top|right|bottom|left)$/;if(window.getComputedStyle){getStyles=function(elem){var view=elem.ownerDocument.defaultView;if(!view||!view.opener){view=window}return view.getComputedStyle(elem)};curCSS=function(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;computed=computed||getStyles(elem);ret=computed?computed.getPropertyValue(name)||computed[name]:undefined;if((ret===""||ret===undefined)&&!jQuery.contains(elem.ownerDocument,elem)){ret=jQuery.style(elem,name)}if(computed){if(!support.pixelMarginRight()&&rnumnonpx.test(ret)&&rmargin.test(name)){width=style.width;minWidth=style.minWidth;maxWidth=style.maxWidth;style.minWidth=style.maxWidth=style.width=ret;ret=computed.width;style.width=width;style.minWidth=minWidth;style.maxWidth=maxWidth}}return ret===undefined?ret:ret+""}}else if(documentElement.currentStyle){getStyles=function(elem){return elem.currentStyle};curCSS=function(elem,name,computed){var left,rs,rsLeft,ret,style=elem.style;computed=computed||getStyles(elem);ret=computed?computed[name]:undefined;if(ret==null&&style&&style[name]){ret=style[name]}if(rnumnonpx.test(ret)&&!rposition.test(name)){left=style.left;rs=elem.runtimeStyle;rsLeft=rs&&rs.left;if(rsLeft){rs.left=elem.currentStyle.left}style.left=name==="fontSize"?"1em":ret;ret=style.pixelLeft+"px";style.left=left;if(rsLeft){rs.left=rsLeft}}return ret===undefined?ret:ret+""||"auto"}}function addGetHookIf(conditionFn,hookFn){return{get:function(){if(conditionFn()){delete this.get;return}return(this.get=hookFn).apply(this,arguments)}}}var ralpha=/alpha\([^)]*\)/i,ropacity=/opacity\s*=\s*([^)]*)/i,rdisplayswap=/^(none|table(?!-c[ea]).+)/,rnumsplit=new RegExp("^("+pnum+")(.*)$","i"),cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","O","Moz","ms"],emptyStyle=document.createElement("div").style;function vendorPropName(name){if(name in emptyStyle){return name}var capName=name.charAt(0).toUpperCase()+name.slice(1),i=cssPrefixes.length;while(i--){name=cssPrefixes[i]+capName;if(name in emptyStyle){return name}}}function showHide(elements,show){var display,elem,hidden,values=[],index=0,length=elements.length;for(;index<length;index++){elem=elements[index];if(!elem.style){continue}values[index]=jQuery._data(elem,"olddisplay");display=elem.style.display;if(show){if(!values[index]&&display==="none"){elem.style.display=""}if(elem.style.display===""&&isHidden(elem)){values[index]=jQuery._data(elem,"olddisplay",defaultDisplay(elem.nodeName))}}else{hidden=isHidden(elem);if(display&&display!=="none"||!hidden){jQuery._data(elem,"olddisplay",hidden?display:jQuery.css(elem,"display"))}}}for(index=0;index<length;index++){elem=elements[index];if(!elem.style){continue}if(!show||elem.style.display==="none"||elem.style.display===""){elem.style.display=show?values[index]||"":"none"}}return elements}function setPositiveNumber(elem,value,subtract){var matches=rnumsplit.exec(value);return matches?Math.max(0,matches[1]-(subtract||0))+(matches[2]||"px"):value}function augmentWidthOrHeight(elem,name,extra,isBorderBox,styles){var i=extra===(isBorderBox?"border":"content")?4:name==="width"?1:0,val=0;for(;i<4;i+=2){if(extra==="margin"){val+=jQuery.css(elem,extra+cssExpand[i],true,styles)}if(isBorderBox){if(extra==="content"){val-=jQuery.css(elem,"padding"+cssExpand[i],true,styles)}if(extra!=="margin"){val-=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles)}}else{val+=jQuery.css(elem,"padding"+cssExpand[i],true,styles);if(extra!=="padding"){val+=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles)}}}return val}function getWidthOrHeight(elem,name,extra){var valueIsBorderBox=true,val=name==="width"?elem.offsetWidth:elem.offsetHeight,styles=getStyles(elem),isBorderBox=support.boxSizing&&jQuery.css(elem,"boxSizing",false,styles)==="border-box";if(document.msFullscreenElement&&window.top!==window){if(elem.getClientRects().length){val=Math.round(elem.getBoundingClientRect()[name]*100)}}if(val<=0||val==null){val=curCSS(elem,name,styles);if(val<0||val==null){val=elem.style[name]}if(rnumnonpx.test(val)){return val}valueIsBorderBox=isBorderBox&&(support.boxSizingReliable()||val===elem.style[name]);val=parseFloat(val)||0}return val+augmentWidthOrHeight(elem,name,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles)+"px"}jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return ret===""?"1":ret}}}},cssNumber:{animationIterationCount:true,columnCount:true,fillOpacity:true,flexGrow:true,flexShrink:true,fontWeight:true,lineHeight:true,opacity:true,order:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":support.cssFloat?"cssFloat":"styleFloat"},style:function(elem,name,value,extra){if(!elem||elem.nodeType===3||elem.nodeType===8||!elem.style){return}var ret,type,hooks,origName=jQuery.camelCase(name),style=elem.style;name=jQuery.cssProps[origName]||(jQuery.cssProps[origName]=vendorPropName(origName)||origName);hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];if(value!==undefined){type=typeof value;if(type==="string"&&(ret=rcssNum.exec(value))&&ret[1]){value=adjustCSS(elem,name,ret);type="number"}if(value==null||value!==value){return}if(type==="number"){value+=ret&&ret[3]||(jQuery.cssNumber[origName]?"":"px")}if(!support.clearCloneStyle&&value===""&&name.indexOf("background")===0){style[name]="inherit"}if(!hooks||!("set"in hooks)||(value=hooks.set(elem,value,extra))!==undefined){try{style[name]=value}catch(e){}}}else{if(hooks&&"get"in hooks&&(ret=hooks.get(elem,false,extra))!==undefined){return ret}return style[name]}},css:function(elem,name,extra,styles){var num,val,hooks,origName=jQuery.camelCase(name);name=jQuery.cssProps[origName]||(jQuery.cssProps[origName]=vendorPropName(origName)||origName);hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];if(hooks&&"get"in hooks){val=hooks.get(elem,true,extra)}if(val===undefined){val=curCSS(elem,name,styles)}if(val==="normal"&&name in cssNormalTransform){val=cssNormalTransform[name]}if(extra===""||extra){num=parseFloat(val);return extra===true||isFinite(num)?num||0:val}return val}});jQuery.each(["height","width"],function(i,name){jQuery.cssHooks[name]={get:function(elem,computed,extra){if(computed){return rdisplayswap.test(jQuery.css(elem,"display"))&&elem.offsetWidth===0?swap(elem,cssShow,function(){return getWidthOrHeight(elem,name,extra)}):getWidthOrHeight(elem,name,extra)}},set:function(elem,value,extra){var styles=extra&&getStyles(elem);return setPositiveNumber(elem,value,extra?augmentWidthOrHeight(elem,name,extra,support.boxSizing&&jQuery.css(elem,"boxSizing",false,styles)==="border-box",styles):0)}}});if(!support.opacity){jQuery.cssHooks.opacity={get:function(elem,computed){return ropacity.test((computed&&elem.currentStyle?elem.currentStyle.filter:elem.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":computed?"1":""},set:function(elem,value){var style=elem.style,currentStyle=elem.currentStyle,opacity=jQuery.isNumeric(value)?"alpha(opacity="+value*100+")":"",filter=currentStyle&¤tStyle.filter||style.filter||"";style.zoom=1;if((value>=1||value==="")&&jQuery.trim(filter.replace(ralpha,""))===""&&style.removeAttribute){style.removeAttribute("filter");if(value===""||currentStyle&&!currentStyle.filter){return}}style.filter=ralpha.test(filter)?filter.replace(ralpha,opacity):filter+" "+opacity}}}jQuery.cssHooks.marginRight=addGetHookIf(support.reliableMarginRight,function(elem,computed){if(computed){return swap(elem,{display:"inline-block"},curCSS,[elem,"marginRight"])}});jQuery.cssHooks.marginLeft=addGetHookIf(support.reliableMarginLeft,function(elem,computed){if(computed){return(parseFloat(curCSS(elem,"marginLeft"))||(jQuery.contains(elem.ownerDocument,elem)?elem.getBoundingClientRect().left-swap(elem,{marginLeft:0},function(){return elem.getBoundingClientRect().left}):0))+"px"}});jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){var i=0,expanded={},parts=typeof value==="string"?value.split(" "):[value];for(;i<4;i++){expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0]}return expanded}};if(!rmargin.test(prefix)){jQuery.cssHooks[prefix+suffix].set=setPositiveNumber}});jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(jQuery.isArray(name)){styles=getStyles(elem);len=name.length;for(;i<len;i++){map[name[i]]=jQuery.css(elem,name[i],false,styles)}return map}return value!==undefined?jQuery.style(elem,name,value):jQuery.css(elem,name)},name,value,arguments.length>1)},show:function(){return showHide(this,true)},hide:function(){return showHide(this)},toggle:function(state){if(typeof state==="boolean"){return state?this.show():this.hide()}return this.each(function(){if(isHidden(this)){jQuery(this).show()}else{jQuery(this).hide()}})}});function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing)}jQuery.Tween=Tween;Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem;this.prop=prop;this.easing=easing||jQuery.easing._default;this.options=options;this.start=this.now=this.cur();this.end=end;this.unit=unit||(jQuery.cssNumber[prop]?"":"px")},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this)},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];if(this.options.duration){this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration)}else{this.pos=eased=percent}this.now=(this.end-this.start)*eased+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this)}if(hooks&&hooks.set){hooks.set(this)}else{Tween.propHooks._default.set(this)}return this}};Tween.prototype.init.prototype=Tween.prototype;Tween.propHooks={_default:{get:function(tween){var result;if(tween.elem.nodeType!==1||tween.elem[tween.prop]!=null&&tween.elem.style[tween.prop]==null){return tween.elem[tween.prop]}result=jQuery.css(tween.elem,tween.prop,"");return!result||result==="auto"?0:result},set:function(tween){if(jQuery.fx.step[tween.prop]){jQuery.fx.step[tween.prop](tween)}else if(tween.elem.nodeType===1&&(tween.elem.style[jQuery.cssProps[tween.prop]]!=null||jQuery.cssHooks[tween.prop])){jQuery.style(tween.elem,tween.prop,tween.now+tween.unit)}else{tween.elem[tween.prop]=tween.now}}}};Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){if(tween.elem.nodeType&&tween.elem.parentNode){tween.elem[tween.prop]=tween.now}}};jQuery.easing={linear:function(p){return p},swing:function(p){return.5-Math.cos(p*Math.PI)/2},_default:"swing"};jQuery.fx=Tween.prototype.init;jQuery.fx.step={};var fxNow,timerId,rfxtypes=/^(?:toggle|show|hide)$/,rrun=/queueHooks$/;function createFxNow(){window.setTimeout(function(){fxNow=undefined});return fxNow=jQuery.now()}function genFx(type,includeWidth){var which,attrs={height:type},i=0;includeWidth=includeWidth?1:0;for(;i<4;i+=2-includeWidth){which=cssExpand[i];attrs["margin"+which]=attrs["padding"+which]=type}if(includeWidth){attrs.opacity=attrs.width=type}return attrs}function createTween(value,prop,animation){var tween,collection=(Animation.tweeners[prop]||[]).concat(Animation.tweeners["*"]),index=0,length=collection.length;for(;index<length;index++){if(tween=collection[index].call(animation,prop,value)){return tween}}}function defaultPrefilter(elem,props,opts){var prop,value,toggle,tween,hooks,oldfire,display,checkDisplay,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHidden(elem),dataShow=jQuery._data(elem,"fxshow");if(!opts.queue){hooks=jQuery._queueHooks(elem,"fx");if(hooks.unqueued==null){hooks.unqueued=0;oldfire=hooks.empty.fire;hooks.empty.fire=function(){if(!hooks.unqueued){oldfire()}}}hooks.unqueued++;anim.always(function(){anim.always(function(){hooks.unqueued--;if(!jQuery.queue(elem,"fx").length){hooks.empty.fire()}})})}if(elem.nodeType===1&&("height"in props||"width"in props)){opts.overflow=[style.overflow,style.overflowX,style.overflowY];display=jQuery.css(elem,"display");checkDisplay=display==="none"?jQuery._data(elem,"olddisplay")||defaultDisplay(elem.nodeName):display;if(checkDisplay==="inline"&&jQuery.css(elem,"float")==="none"){if(!support.inlineBlockNeedsLayout||defaultDisplay(elem.nodeName)==="inline"){style.display="inline-block"}else{style.zoom=1}}}if(opts.overflow){style.overflow="hidden";if(!support.shrinkWrapBlocks()){anim.always(function(){style.overflow=opts.overflow[0];style.overflowX=opts.overflow[1];style.overflowY=opts.overflow[2]})}}for(prop in props){value=props[prop];if(rfxtypes.exec(value)){delete props[prop];toggle=toggle||value==="toggle";if(value===(hidden?"hide":"show")){if(value==="show"&&dataShow&&dataShow[prop]!==undefined){hidden=true}else{continue}}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop)}else{display=undefined}}if(!jQuery.isEmptyObject(orig)){if(dataShow){if("hidden"in dataShow){hidden=dataShow.hidden}}else{dataShow=jQuery._data(elem,"fxshow",{})}if(toggle){dataShow.hidden=!hidden}if(hidden){jQuery(elem).show()}else{anim.done(function(){jQuery(elem).hide()})}anim.done(function(){var prop;jQuery._removeData(elem,"fxshow");for(prop in orig){jQuery.style(elem,prop,orig[prop])}});for(prop in orig){tween=createTween(hidden?dataShow[prop]:0,prop,anim);if(!(prop in dataShow)){dataShow[prop]=tween.start;if(hidden){tween.end=tween.start;tween.start=prop==="width"||prop==="height"?1:0}}}}else if((display==="none"?defaultDisplay(elem.nodeName):display)==="inline"){style.display=display}}function propFilter(props,specialEasing){var index,name,easing,value,hooks;for(index in props){name=jQuery.camelCase(index);easing=specialEasing[name];value=props[index];if(jQuery.isArray(value)){easing=value[1];value=props[index]=value[0]}if(index!==name){props[name]=value;delete props[index]}hooks=jQuery.cssHooks[name];if(hooks&&"expand"in hooks){value=hooks.expand(value);delete props[name];for(index in value){if(!(index in props)){props[index]=value[index];specialEasing[index]=easing}}}else{specialEasing[name]=easing}}}function Animation(elem,properties,options){var result,stopped,index=0,length=Animation.prefilters.length,deferred=jQuery.Deferred().always(function(){delete tick.elem}),tick=function(){if(stopped){return false}var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),temp=remaining/animation.duration||0,percent=1-temp,index=0,length=animation.tweens.length;for(;index<length;index++){animation.tweens[index].run(percent)}deferred.notifyWith(elem,[animation,percent,remaining]);if(percent<1&&length){return remaining}else{deferred.resolveWith(elem,[animation]);return false}},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(true,{specialEasing:{},easing:jQuery.easing._default},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);animation.tweens.push(tween);return tween},stop:function(gotoEnd){var index=0,length=gotoEnd?animation.tweens.length:0;if(stopped){return this}stopped=true;for(;index<length;index++){animation.tweens[index].run(1)}if(gotoEnd){deferred.notifyWith(elem,[animation,1,0]);deferred.resolveWith(elem,[animation,gotoEnd]); | ||
16 | }else{deferred.rejectWith(elem,[animation,gotoEnd])}return this}}),props=animation.props;propFilter(props,animation.opts.specialEasing);for(;index<length;index++){result=Animation.prefilters[index].call(animation,elem,props,animation.opts);if(result){if(jQuery.isFunction(result.stop)){jQuery._queueHooks(animation.elem,animation.opts.queue).stop=jQuery.proxy(result.stop,result)}return result}}jQuery.map(props,createTween,animation);if(jQuery.isFunction(animation.opts.start)){animation.opts.start.call(elem,animation)}jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue}));return animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always)}jQuery.Animation=jQuery.extend(Animation,{tweeners:{"*":[function(prop,value){var tween=this.createTween(prop,value);adjustCSS(tween.elem,prop,rcssNum.exec(value),tween);return tween}]},tweener:function(props,callback){if(jQuery.isFunction(props)){callback=props;props=["*"]}else{props=props.match(rnotwhite)}var prop,index=0,length=props.length;for(;index<length;index++){prop=props[index];Animation.tweeners[prop]=Animation.tweeners[prop]||[];Animation.tweeners[prop].unshift(callback)}},prefilters:[defaultPrefilter],prefilter:function(callback,prepend){if(prepend){Animation.prefilters.unshift(callback)}else{Animation.prefilters.push(callback)}}});jQuery.speed=function(speed,easing,fn){var opt=speed&&typeof speed==="object"?jQuery.extend({},speed):{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!jQuery.isFunction(easing)&&easing};opt.duration=jQuery.fx.off?0:typeof opt.duration==="number"?opt.duration:opt.duration in jQuery.fx.speeds?jQuery.fx.speeds[opt.duration]:jQuery.fx.speeds._default;if(opt.queue==null||opt.queue===true){opt.queue="fx"}opt.old=opt.complete;opt.complete=function(){if(jQuery.isFunction(opt.old)){opt.old.call(this)}if(opt.queue){jQuery.dequeue(this,opt.queue)}};return opt};jQuery.fn.extend({fadeTo:function(speed,to,easing,callback){return this.filter(isHidden).css("opacity",0).show().end().animate({opacity:to},speed,easing,callback)},animate:function(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function(){var anim=Animation(this,jQuery.extend({},prop),optall);if(empty||jQuery._data(this,"finish")){anim.stop(true)}};doAnimation.finish=doAnimation;return empty||optall.queue===false?this.each(doAnimation):this.queue(optall.queue,doAnimation)},stop:function(type,clearQueue,gotoEnd){var stopQueue=function(hooks){var stop=hooks.stop;delete hooks.stop;stop(gotoEnd)};if(typeof type!=="string"){gotoEnd=clearQueue;clearQueue=type;type=undefined}if(clearQueue&&type!==false){this.queue(type||"fx",[])}return this.each(function(){var dequeue=true,index=type!=null&&type+"queueHooks",timers=jQuery.timers,data=jQuery._data(this);if(index){if(data[index]&&data[index].stop){stopQueue(data[index])}}else{for(index in data){if(data[index]&&data[index].stop&&rrun.test(index)){stopQueue(data[index])}}}for(index=timers.length;index--;){if(timers[index].elem===this&&(type==null||timers[index].queue===type)){timers[index].anim.stop(gotoEnd);dequeue=false;timers.splice(index,1)}}if(dequeue||!gotoEnd){jQuery.dequeue(this,type)}})},finish:function(type){if(type!==false){type=type||"fx"}return this.each(function(){var index,data=jQuery._data(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;data.finish=true;jQuery.queue(this,type,[]);if(hooks&&hooks.stop){hooks.stop.call(this,true)}for(index=timers.length;index--;){if(timers[index].elem===this&&timers[index].queue===type){timers[index].anim.stop(true);timers.splice(index,1)}}for(index=0;index<length;index++){if(queue[index]&&queue[index].finish){queue[index].finish.call(this)}}delete data.finish})}});jQuery.each(["toggle","show","hide"],function(i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return speed==null||typeof speed==="boolean"?cssFn.apply(this,arguments):this.animate(genFx(name,true),speed,easing,callback)}});jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback)}});jQuery.timers=[];jQuery.fx.tick=function(){var timer,timers=jQuery.timers,i=0;fxNow=jQuery.now();for(;i<timers.length;i++){timer=timers[i];if(!timer()&&timers[i]===timer){timers.splice(i--,1)}}if(!timers.length){jQuery.fx.stop()}fxNow=undefined};jQuery.fx.timer=function(timer){jQuery.timers.push(timer);if(timer()){jQuery.fx.start()}else{jQuery.timers.pop()}};jQuery.fx.interval=13;jQuery.fx.start=function(){if(!timerId){timerId=window.setInterval(jQuery.fx.tick,jQuery.fx.interval)}};jQuery.fx.stop=function(){window.clearInterval(timerId);timerId=null};jQuery.fx.speeds={slow:600,fast:200,_default:400};jQuery.fn.delay=function(time,type){time=jQuery.fx?jQuery.fx.speeds[time]||time:time;type=type||"fx";return this.queue(type,function(next,hooks){var timeout=window.setTimeout(next,time);hooks.stop=function(){window.clearTimeout(timeout)}})};(function(){var a,input=document.createElement("input"),div=document.createElement("div"),select=document.createElement("select"),opt=select.appendChild(document.createElement("option"));div=document.createElement("div");div.setAttribute("className","t");div.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";a=div.getElementsByTagName("a")[0];input.setAttribute("type","checkbox");div.appendChild(input);a=div.getElementsByTagName("a")[0];a.style.cssText="top:1px";support.getSetAttribute=div.className!=="t";support.style=/top/.test(a.getAttribute("style"));support.hrefNormalized=a.getAttribute("href")==="/a";support.checkOn=!!input.value;support.optSelected=opt.selected;support.enctype=!!document.createElement("form").enctype;select.disabled=true;support.optDisabled=!opt.disabled;input=document.createElement("input");input.setAttribute("value","");support.input=input.getAttribute("value")==="";input.value="t";input.setAttribute("type","radio");support.radioValue=input.value==="t"})();var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,isFunction,elem=this[0];if(!arguments.length){if(elem){hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()];if(hooks&&"get"in hooks&&(ret=hooks.get(elem,"value"))!==undefined){return ret}ret=elem.value;return typeof ret==="string"?ret.replace(rreturn,""):ret==null?"":ret}return}isFunction=jQuery.isFunction(value);return this.each(function(i){var val;if(this.nodeType!==1){return}if(isFunction){val=value.call(this,i,jQuery(this).val())}else{val=value}if(val==null){val=""}else if(typeof val==="number"){val+=""}else if(jQuery.isArray(val)){val=jQuery.map(val,function(value){return value==null?"":value+""})}hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()];if(!hooks||!("set"in hooks)||hooks.set(this,val,"value")===undefined){this.value=val}})}});jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return val!=null?val:jQuery.trim(jQuery.text(elem))}},select:{get:function(elem){var value,option,options=elem.options,index=elem.selectedIndex,one=elem.type==="select-one"||index<0,values=one?null:[],max=one?index+1:options.length,i=index<0?max:one?index:0;for(;i<max;i++){option=options[i];if((option.selected||i===index)&&(support.optDisabled?!option.disabled:option.getAttribute("disabled")===null)&&(!option.parentNode.disabled||!jQuery.nodeName(option.parentNode,"optgroup"))){value=jQuery(option).val();if(one){return value}values.push(value)}}return values},set:function(elem,value){var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;while(i--){option=options[i];if(jQuery.inArray(jQuery.valHooks.option.get(option),values)>=0){try{option.selected=optionSet=true}catch(_){option.scrollHeight}}else{option.selected=false}}if(!optionSet){elem.selectedIndex=-1}return options}}}});jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(jQuery.isArray(value)){return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>-1}}};if(!support.checkOn){jQuery.valHooks[this].get=function(elem){return elem.getAttribute("value")===null?"on":elem.value}}});var nodeHook,boolHook,attrHandle=jQuery.expr.attrHandle,ruseDefault=/^(?:checked|selected)$/i,getSetAttribute=support.getSetAttribute,getSetInput=support.input;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1)},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name)})}});jQuery.extend({attr:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(nType===3||nType===8||nType===2){return}if(typeof elem.getAttribute==="undefined"){return jQuery.prop(elem,name,value)}if(nType!==1||!jQuery.isXMLDoc(elem)){name=name.toLowerCase();hooks=jQuery.attrHooks[name]||(jQuery.expr.match.bool.test(name)?boolHook:nodeHook)}if(value!==undefined){if(value===null){jQuery.removeAttr(elem,name);return}if(hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret}elem.setAttribute(name,value+"");return value}if(hooks&&"get"in hooks&&(ret=hooks.get(elem,name))!==null){return ret}ret=jQuery.find.attr(elem,name);return ret==null?undefined:ret},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&value==="radio"&&jQuery.nodeName(elem,"input")){var val=elem.value;elem.setAttribute("type",value);if(val){elem.value=val}return value}}}},removeAttr:function(elem,value){var name,propName,i=0,attrNames=value&&value.match(rnotwhite);if(attrNames&&elem.nodeType===1){while(name=attrNames[i++]){propName=jQuery.propFix[name]||name;if(jQuery.expr.match.bool.test(name)){if(getSetInput&&getSetAttribute||!ruseDefault.test(name)){elem[propName]=false}else{elem[jQuery.camelCase("default-"+name)]=elem[propName]=false}}else{jQuery.attr(elem,name,"")}elem.removeAttribute(getSetAttribute?name:propName)}}}});boolHook={set:function(elem,value,name){if(value===false){jQuery.removeAttr(elem,name)}else if(getSetInput&&getSetAttribute||!ruseDefault.test(name)){elem.setAttribute(!getSetAttribute&&jQuery.propFix[name]||name,name)}else{elem[jQuery.camelCase("default-"+name)]=elem[name]=true}return name}};jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;if(getSetInput&&getSetAttribute||!ruseDefault.test(name)){attrHandle[name]=function(elem,name,isXML){var ret,handle;if(!isXML){handle=attrHandle[name];attrHandle[name]=ret;ret=getter(elem,name,isXML)!=null?name.toLowerCase():null;attrHandle[name]=handle}return ret}}else{attrHandle[name]=function(elem,name,isXML){if(!isXML){return elem[jQuery.camelCase("default-"+name)]?name.toLowerCase():null}}}});if(!getSetInput||!getSetAttribute){jQuery.attrHooks.value={set:function(elem,value,name){if(jQuery.nodeName(elem,"input")){elem.defaultValue=value}else{return nodeHook&&nodeHook.set(elem,value,name)}}}}if(!getSetAttribute){nodeHook={set:function(elem,value,name){var ret=elem.getAttributeNode(name);if(!ret){elem.setAttributeNode(ret=elem.ownerDocument.createAttribute(name))}ret.value=value+="";if(name==="value"||value===elem.getAttribute(name)){return value}}};attrHandle.id=attrHandle.name=attrHandle.coords=function(elem,name,isXML){var ret;if(!isXML){return(ret=elem.getAttributeNode(name))&&ret.value!==""?ret.value:null}};jQuery.valHooks.button={get:function(elem,name){var ret=elem.getAttributeNode(name);if(ret&&ret.specified){return ret.value}},set:nodeHook.set};jQuery.attrHooks.contenteditable={set:function(elem,value,name){nodeHook.set(elem,value===""?false:value,name)}};jQuery.each(["width","height"],function(i,name){jQuery.attrHooks[name]={set:function(elem,value){if(value===""){elem.setAttribute(name,"auto");return value}}}})}if(!support.style){jQuery.attrHooks.style={get:function(elem){return elem.style.cssText||undefined},set:function(elem,value){return elem.style.cssText=value+""}}}var rfocusable=/^(?:input|select|textarea|button|object)$/i,rclickable=/^(?:a|area)$/i;jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1)},removeProp:function(name){name=jQuery.propFix[name]||name;return this.each(function(){try{this[name]=undefined;delete this[name]}catch(e){}})}});jQuery.extend({prop:function(elem,name,value){var ret,hooks,nType=elem.nodeType;if(nType===3||nType===8||nType===2){return}if(nType!==1||!jQuery.isXMLDoc(elem)){name=jQuery.propFix[name]||name;hooks=jQuery.propHooks[name]}if(value!==undefined){if(hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret}return elem[name]=value}if(hooks&&"get"in hooks&&(ret=hooks.get(elem,name))!==null){return ret}return elem[name]},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}});if(!support.hrefNormalized){jQuery.each(["href","src"],function(i,name){jQuery.propHooks[name]={get:function(elem){return elem.getAttribute(name,4)}}})}if(!support.optSelected){jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;if(parent){parent.selectedIndex;if(parent.parentNode){parent.parentNode.selectedIndex}}return null}}}jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this});if(!support.enctype){jQuery.propFix.enctype="encoding"}var rclass=/[\t\r\n\f]/g;function getClass(elem){return jQuery.attr(elem,"class")||""}jQuery.fn.extend({addClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(jQuery.isFunction(value)){return this.each(function(j){jQuery(this).addClass(value.call(this,j,getClass(this)))})}if(typeof value==="string"&&value){classes=value.match(rnotwhite)||[];while(elem=this[i++]){curValue=getClass(elem);cur=elem.nodeType===1&&(" "+curValue+" ").replace(rclass," ");if(cur){j=0;while(clazz=classes[j++]){if(cur.indexOf(" "+clazz+" ")<0){cur+=clazz+" "}}finalValue=jQuery.trim(cur);if(curValue!==finalValue){jQuery.attr(elem,"class",finalValue)}}}}return this},removeClass:function(value){var classes,elem,cur,curValue,clazz,j,finalValue,i=0;if(jQuery.isFunction(value)){return this.each(function(j){jQuery(this).removeClass(value.call(this,j,getClass(this)))})}if(!arguments.length){return this.attr("class","")}if(typeof value==="string"&&value){classes=value.match(rnotwhite)||[];while(elem=this[i++]){curValue=getClass(elem);cur=elem.nodeType===1&&(" "+curValue+" ").replace(rclass," ");if(cur){j=0;while(clazz=classes[j++]){while(cur.indexOf(" "+clazz+" ")>-1){cur=cur.replace(" "+clazz+" "," ")}}finalValue=jQuery.trim(cur);if(curValue!==finalValue){jQuery.attr(elem,"class",finalValue)}}}}return this},toggleClass:function(value,stateVal){var type=typeof value;if(typeof stateVal==="boolean"&&type==="string"){return stateVal?this.addClass(value):this.removeClass(value)}if(jQuery.isFunction(value)){return this.each(function(i){jQuery(this).toggleClass(value.call(this,i,getClass(this),stateVal),stateVal)})}return this.each(function(){var className,i,self,classNames;if(type==="string"){i=0;self=jQuery(this);classNames=value.match(rnotwhite)||[];while(className=classNames[i++]){if(self.hasClass(className)){self.removeClass(className)}else{self.addClass(className)}}}else if(value===undefined||type==="boolean"){className=getClass(this);if(className){jQuery._data(this,"__className__",className)}jQuery.attr(this,"class",className||value===false?"":jQuery._data(this,"__className__")||"")}})},hasClass:function(selector){var className,elem,i=0;className=" "+selector+" ";while(elem=this[i++]){if(elem.nodeType===1&&(" "+getClass(elem)+" ").replace(rclass," ").indexOf(className)>-1){return true}}return false}});jQuery.each(("blur focus focusin focusout load resize scroll unload click dblclick "+"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave "+"change select submit keydown keypress keyup error contextmenu").split(" "),function(i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name)}});jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver)}});var location=window.location;var nonce=jQuery.now();var rquery=/\?/;var rvalidtokens=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;jQuery.parseJSON=function(data){if(window.JSON&&window.JSON.parse){return window.JSON.parse(data+"")}var requireNonComma,depth=null,str=jQuery.trim(data+"");return str&&!jQuery.trim(str.replace(rvalidtokens,function(token,comma,open,close){if(requireNonComma&&comma){depth=0}if(depth===0){return token}requireNonComma=open||comma;depth+=!close-!open;return""}))?Function("return "+str)():jQuery.error("Invalid JSON: "+data)};jQuery.parseXML=function(data){var xml,tmp;if(!data||typeof data!=="string"){return null}try{if(window.DOMParser){tmp=new window.DOMParser;xml=tmp.parseFromString(data,"text/xml")}else{xml=new window.ActiveXObject("Microsoft.XMLDOM");xml.async="false";xml.loadXML(data)}}catch(e){xml=undefined}if(!xml||!xml.documentElement||xml.getElementsByTagName("parsererror").length){jQuery.error("Invalid XML: "+data)}return xml};var rhash=/#.*$/,rts=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,rlocalProtocol=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,rurl=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,prefilters={},transports={},allTypes="*/".concat("*"),ajaxLocation=location.href,ajaxLocParts=rurl.exec(ajaxLocation.toLowerCase())||[];function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){if(typeof dataTypeExpression!=="string"){func=dataTypeExpression;dataTypeExpression="*"}var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnotwhite)||[];if(jQuery.isFunction(func)){while(dataType=dataTypes[i++]){if(dataType.charAt(0)==="+"){dataType=dataType.slice(1)||"*";(structure[dataType]=structure[dataType]||[]).unshift(func)}else{(structure[dataType]=structure[dataType]||[]).push(func)}}}}}function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=structure===transports;function inspect(dataType){var selected;inspected[dataType]=true;jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);if(typeof dataTypeOrTransport==="string"&&!seekingTransport&&!inspected[dataTypeOrTransport]){options.dataTypes.unshift(dataTypeOrTransport);inspect(dataTypeOrTransport);return false}else if(seekingTransport){return!(selected=dataTypeOrTransport)}});return selected}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*")}function ajaxExtend(target,src){var deep,key,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src){if(src[key]!==undefined){(flatOptions[key]?target:deep||(deep={}))[key]=src[key]}}if(deep){jQuery.extend(true,target,deep)}return target}function ajaxHandleResponses(s,jqXHR,responses){var firstDataType,ct,finalDataType,type,contents=s.contents,dataTypes=s.dataTypes;while(dataTypes[0]==="*"){dataTypes.shift();if(ct===undefined){ct=s.mimeType||jqXHR.getResponseHeader("Content-Type")}}if(ct){for(type in contents){if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break}}}if(dataTypes[0]in responses){finalDataType=dataTypes[0]}else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break}if(!firstDataType){firstDataType=type}}finalDataType=finalDataType||firstDataType}if(finalDataType){if(finalDataType!==dataTypes[0]){dataTypes.unshift(finalDataType)}return responses[finalDataType]}}function ajaxConvert(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1]){for(conv in s.converters){converters[conv.toLowerCase()]=s.converters[conv]}}current=dataTypes.shift();while(current){if(s.responseFields[current]){jqXHR[s.responseFields[current]]=response}if(!prev&&isSuccess&&s.dataFilter){response=s.dataFilter(response,s.dataType)}prev=current;current=dataTypes.shift();if(current){if(current==="*"){current=prev}else if(prev!=="*"&&prev!==current){conv=converters[prev+" "+current]||converters["* "+current];if(!conv){for(conv2 in converters){tmp=conv2.split(" ");if(tmp[1]===current){conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]];if(conv){if(conv===true){conv=converters[conv2]}else if(converters[conv2]!==true){current=tmp[0];dataTypes.unshift(tmp[1])}break}}}}if(conv!==true){if(conv&&s["throws"]){response=conv(response)}else{try{response=conv(response)}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current}}}}}}}return{state:"success",data:response}}jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ajaxLocation,type:"GET",isLocal:rlocalProtocol.test(ajaxLocParts[1]),global:true,processData:true,async:true,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":true,"text json":jQuery.parseJSON,"text xml":jQuery.parseXML},flatOptions:{url:true,context:true}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){if(typeof url==="object"){options=url;url=undefined}options=options||{};var parts,i,cacheURL,responseHeadersString,timeoutTimer,fireGlobals,transport,responseHeaders,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},state=0,strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(state===2){if(!responseHeaders){responseHeaders={};while(match=rheaders.exec(responseHeadersString)){responseHeaders[match[1].toLowerCase()]=match[2]}}match=responseHeaders[key.toLowerCase()]}return match==null?null:match},getAllResponseHeaders:function(){return state===2?responseHeadersString:null},setRequestHeader:function(name,value){var lname=name.toLowerCase();if(!state){name=requestHeadersNames[lname]=requestHeadersNames[lname]||name;requestHeaders[name]=value}return this},overrideMimeType:function(type){if(!state){s.mimeType=type}return this},statusCode:function(map){var code;if(map){if(state<2){for(code in map){statusCode[code]=[statusCode[code],map[code]]}}else{jqXHR.always(map[jqXHR.status])}}return this},abort:function(statusText){var finalText=statusText||strAbort;if(transport){transport.abort(finalText)}done(0,finalText);return this}};deferred.promise(jqXHR).complete=completeDeferred.add;jqXHR.success=jqXHR.done;jqXHR.error=jqXHR.fail;s.url=((url||s.url||ajaxLocation)+"").replace(rhash,"").replace(rprotocol,ajaxLocParts[1]+"//");s.type=options.method||options.type||s.method||s.type;s.dataTypes=jQuery.trim(s.dataType||"*").toLowerCase().match(rnotwhite)||[""];if(s.crossDomain==null){parts=rurl.exec(s.url.toLowerCase());s.crossDomain=!!(parts&&(parts[1]!==ajaxLocParts[1]||parts[2]!==ajaxLocParts[2]||(parts[3]||(parts[1]==="http:"?"80":"443"))!==(ajaxLocParts[3]||(ajaxLocParts[1]==="http:"?"80":"443"))))}if(s.data&&s.processData&&typeof s.data!=="string"){s.data=jQuery.param(s.data,s.traditional)}inspectPrefiltersOrTransports(prefilters,s,options,jqXHR);if(state===2){return jqXHR}fireGlobals=jQuery.event&&s.global;if(fireGlobals&&jQuery.active++===0){jQuery.event.trigger("ajaxStart")}s.type=s.type.toUpperCase();s.hasContent=!rnoContent.test(s.type);cacheURL=s.url;if(!s.hasContent){if(s.data){cacheURL=s.url+=(rquery.test(cacheURL)?"&":"?")+s.data;delete s.data}if(s.cache===false){s.url=rts.test(cacheURL)?cacheURL.replace(rts,"$1_="+nonce++):cacheURL+(rquery.test(cacheURL)?"&":"?")+"_="+nonce++}}if(s.ifModified){if(jQuery.lastModified[cacheURL]){jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL])}if(jQuery.etag[cacheURL]){jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL])}}if(s.data&&s.hasContent&&s.contentType!==false||options.contentType){jqXHR.setRequestHeader("Content-Type",s.contentType)}jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+(s.dataTypes[0]!=="*"?", "+allTypes+"; q=0.01":""):s.accepts["*"]);for(i in s.headers){jqXHR.setRequestHeader(i,s.headers[i])}if(s.beforeSend&&(s.beforeSend.call(callbackContext,jqXHR,s)===false||state===2)){return jqXHR.abort()}strAbort="abort";for(i in{success:1,error:1,complete:1}){jqXHR[i](s[i])}transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR);if(!transport){done(-1,"No Transport")}else{jqXHR.readyState=1;if(fireGlobals){globalEventContext.trigger("ajaxSend",[jqXHR,s])}if(state===2){return jqXHR}if(s.async&&s.timeout>0){timeoutTimer=window.setTimeout(function(){jqXHR.abort("timeout")},s.timeout)}try{state=1;transport.send(requestHeaders,done)}catch(e){if(state<2){done(-1,e)}else{throw e}}}function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;if(state===2){return}state=2;if(timeoutTimer){window.clearTimeout(timeoutTimer)}transport=undefined;responseHeadersString=headers||"";jqXHR.readyState=status>0?4:0;isSuccess=status>=200&&status<300||status===304;if(responses){response=ajaxHandleResponses(s,jqXHR,responses)}response=ajaxConvert(s,response,jqXHR,isSuccess);if(isSuccess){if(s.ifModified){modified=jqXHR.getResponseHeader("Last-Modified");if(modified){jQuery.lastModified[cacheURL]=modified}modified=jqXHR.getResponseHeader("etag");if(modified){jQuery.etag[cacheURL]=modified}}if(status===204||s.type==="HEAD"){statusText="nocontent"}else if(status===304){statusText="notmodified"}else{statusText=response.state;success=response.data;error=response.error;isSuccess=!error}}else{error=statusText;if(status||!statusText){statusText="error";if(status<0){status=0}}}jqXHR.status=status;jqXHR.statusText=(nativeStatusText||statusText)+"";if(isSuccess){deferred.resolveWith(callbackContext,[success,statusText,jqXHR])}else{deferred.rejectWith(callbackContext,[jqXHR,statusText,error])}jqXHR.statusCode(statusCode);statusCode=undefined;if(fireGlobals){globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error])}completeDeferred.fireWith(callbackContext,[jqXHR,statusText]);if(fireGlobals){globalEventContext.trigger("ajaxComplete",[jqXHR,s]);if(!--jQuery.active){jQuery.event.trigger("ajaxStop")}}}return jqXHR},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},getScript:function(url,callback){return jQuery.get(url,undefined,callback,"script")}});jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){if(jQuery.isFunction(data)){type=type||callback;callback=data;data=undefined}return jQuery.ajax(jQuery.extend({url:url,type:method,dataType:type,data:data,success:callback},jQuery.isPlainObject(url)&&url))}});jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",cache:true,async:false,global:false,"throws":true})};jQuery.fn.extend({wrapAll:function(html){if(jQuery.isFunction(html)){return this.each(function(i){jQuery(this).wrapAll(html.call(this,i))})}if(this[0]){var wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){wrap.insertBefore(this[0])}wrap.map(function(){var elem=this;while(elem.firstChild&&elem.firstChild.nodeType===1){elem=elem.firstChild}return elem}).append(this)}return this},wrapInner:function(html){if(jQuery.isFunction(html)){return this.each(function(i){jQuery(this).wrapInner(html.call(this,i))})}return this.each(function(){var self=jQuery(this),contents=self.contents();if(contents.length){contents.wrapAll(html)}else{self.append(html)}})},wrap:function(html){var isFunction=jQuery.isFunction(html);return this.each(function(i){jQuery(this).wrapAll(isFunction?html.call(this,i):html)})},unwrap:function(){return this.parent().each(function(){if(!jQuery.nodeName(this,"body")){jQuery(this).replaceWith(this.childNodes)}}).end()}});function getDisplay(elem){return elem.style&&elem.style.display||jQuery.css(elem,"display")}function filterHidden(elem){while(elem&&elem.nodeType===1){if(getDisplay(elem)==="none"||elem.type==="hidden"){return true}elem=elem.parentNode}return false}jQuery.expr.filters.hidden=function(elem){return support.reliableHiddenOffsets()?elem.offsetWidth<=0&&elem.offsetHeight<=0&&!elem.getClientRects().length:filterHidden(elem)};jQuery.expr.filters.visible=function(elem){return!jQuery.expr.filters.hidden(elem)};var r20=/%20/g,rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(jQuery.isArray(obj)){jQuery.each(obj,function(i,v){if(traditional||rbracket.test(prefix)){add(prefix,v)}else{buildParams(prefix+"["+(typeof v==="object"&&v!=null?i:"")+"]",v,traditional,add)}})}else if(!traditional&&jQuery.type(obj)==="object"){for(name in obj){buildParams(prefix+"["+name+"]",obj[name],traditional,add)}}else{add(prefix,obj)}}jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,value){value=jQuery.isFunction(value)?value():value==null?"":value;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(value)};if(traditional===undefined){traditional=jQuery.ajaxSettings&&jQuery.ajaxSettings.traditional}if(jQuery.isArray(a)||a.jquery&&!jQuery.isPlainObject(a)){jQuery.each(a,function(){add(this.name,this.value)})}else{for(prefix in a){buildParams(prefix,a[prefix],traditional,add)}}return s.join("&").replace(r20,"+")};jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type))}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:jQuery.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")}}):{name:elem.name,value:val.replace(rCRLF,"\r\n")}}).get()}});jQuery.ajaxSettings.xhr=window.ActiveXObject!==undefined?function(){if(this.isLocal){return createActiveXHR()}if(document.documentMode>8){return createStandardXHR()}return/^(get|post|head|put|delete|options)$/i.test(this.type)&&createStandardXHR()||createActiveXHR()}:createStandardXHR;var xhrId=0,xhrCallbacks={},xhrSupported=jQuery.ajaxSettings.xhr();if(window.attachEvent){window.attachEvent("onunload",function(){for(var key in xhrCallbacks){xhrCallbacks[key](undefined,true)}})}support.cors=!!xhrSupported&&"withCredentials"in xhrSupported; | ||
17 | xhrSupported=support.ajax=!!xhrSupported;if(xhrSupported){jQuery.ajaxTransport(function(options){if(!options.crossDomain||support.cors){var callback;return{send:function(headers,complete){var i,xhr=options.xhr(),id=++xhrId;xhr.open(options.type,options.url,options.async,options.username,options.password);if(options.xhrFields){for(i in options.xhrFields){xhr[i]=options.xhrFields[i]}}if(options.mimeType&&xhr.overrideMimeType){xhr.overrideMimeType(options.mimeType)}if(!options.crossDomain&&!headers["X-Requested-With"]){headers["X-Requested-With"]="XMLHttpRequest"}for(i in headers){if(headers[i]!==undefined){xhr.setRequestHeader(i,headers[i]+"")}}xhr.send(options.hasContent&&options.data||null);callback=function(_,isAbort){var status,statusText,responses;if(callback&&(isAbort||xhr.readyState===4)){delete xhrCallbacks[id];callback=undefined;xhr.onreadystatechange=jQuery.noop;if(isAbort){if(xhr.readyState!==4){xhr.abort()}}else{responses={};status=xhr.status;if(typeof xhr.responseText==="string"){responses.text=xhr.responseText}try{statusText=xhr.statusText}catch(e){statusText=""}if(!status&&options.isLocal&&!options.crossDomain){status=responses.text?200:404}else if(status===1223){status=204}}}if(responses){complete(status,statusText,responses,xhr.getAllResponseHeaders())}};if(!options.async){callback()}else if(xhr.readyState===4){window.setTimeout(callback)}else{xhr.onreadystatechange=xhrCallbacks[id]=callback}},abort:function(){if(callback){callback(undefined,true)}}}}})}function createStandardXHR(){try{return new window.XMLHttpRequest}catch(e){}}function createActiveXHR(){try{return new window.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}jQuery.ajaxPrefilter(function(s){if(s.crossDomain){s.contents.script=false}});jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, "+"application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(text){jQuery.globalEval(text);return text}}});jQuery.ajaxPrefilter("script",function(s){if(s.cache===undefined){s.cache=false}if(s.crossDomain){s.type="GET";s.global=false}});jQuery.ajaxTransport("script",function(s){if(s.crossDomain){var script,head=document.head||jQuery("head")[0]||document.documentElement;return{send:function(_,callback){script=document.createElement("script");script.async=true;if(s.scriptCharset){script.charset=s.scriptCharset}script.src=s.url;script.onload=script.onreadystatechange=function(_,isAbort){if(isAbort||!script.readyState||/loaded|complete/.test(script.readyState)){script.onload=script.onreadystatechange=null;if(script.parentNode){script.parentNode.removeChild(script)}script=null;if(!isAbort){callback(200,"success")}}};head.insertBefore(script,head.firstChild)},abort:function(){if(script){script.onload(undefined,true)}}}}});var oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce++;this[callback]=true;return callback}});jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=s.jsonp!==false&&(rjsonp.test(s.url)?"url":typeof s.data==="string"&&(s.contentType||"").indexOf("application/x-www-form-urlencoded")===0&&rjsonp.test(s.data)&&"data");if(jsonProp||s.dataTypes[0]==="jsonp"){callbackName=s.jsonpCallback=jQuery.isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback;if(jsonProp){s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName)}else if(s.jsonp!==false){s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName}s.converters["script json"]=function(){if(!responseContainer){jQuery.error(callbackName+" was not called")}return responseContainer[0]};s.dataTypes[0]="json";overwritten=window[callbackName];window[callbackName]=function(){responseContainer=arguments};jqXHR.always(function(){if(overwritten===undefined){jQuery(window).removeProp(callbackName)}else{window[callbackName]=overwritten}if(s[callbackName]){s.jsonpCallback=originalSettings.jsonpCallback;oldCallbacks.push(callbackName)}if(responseContainer&&jQuery.isFunction(overwritten)){overwritten(responseContainer[0])}responseContainer=overwritten=undefined});return"script"}});support.createHTMLDocument=function(){if(!document.implementation.createHTMLDocument){return false}var doc=document.implementation.createHTMLDocument("");doc.body.innerHTML="<form></form><form></form>";return doc.body.childNodes.length===2}();jQuery.parseHTML=function(data,context,keepScripts){if(!data||typeof data!=="string"){return null}if(typeof context==="boolean"){keepScripts=context;context=false}context=context||(support.createHTMLDocument?document.implementation.createHTMLDocument(""):document);var parsed=rsingleTag.exec(data),scripts=!keepScripts&&[];if(parsed){return[context.createElement(parsed[1])]}parsed=buildFragment([data],context,scripts);if(scripts&&scripts.length){jQuery(scripts).remove()}return jQuery.merge([],parsed.childNodes)};var _load=jQuery.fn.load;jQuery.fn.load=function(url,params,callback){if(typeof url!=="string"&&_load){return _load.apply(this,arguments)}var selector,type,response,self=this,off=url.indexOf(" ");if(off>-1){selector=jQuery.trim(url.slice(off,url.length));url=url.slice(0,off)}if(jQuery.isFunction(params)){callback=params;params=undefined}else if(params&&typeof params==="object"){type="POST"}if(self.length>0){jQuery.ajax({url:url,type:type||"GET",dataType:"html",data:params}).done(function(responseText){response=arguments;self.html(selector?jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):responseText)}).always(callback&&function(jqXHR,status){self.each(function(){callback.apply(self,response||[jqXHR.responseText,status,jqXHR])})})}return this};jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn)}});jQuery.expr.filters.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem}).length};function getWindow(elem){return jQuery.isWindow(elem)?elem:elem.nodeType===9?elem.defaultView||elem.parentWindow:false}jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,calculatePosition,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};if(position==="static"){elem.style.position="relative"}curOffset=curElem.offset();curCSSTop=jQuery.css(elem,"top");curCSSLeft=jQuery.css(elem,"left");calculatePosition=(position==="absolute"||position==="fixed")&&jQuery.inArray("auto",[curCSSTop,curCSSLeft])>-1;if(calculatePosition){curPosition=curElem.position();curTop=curPosition.top;curLeft=curPosition.left}else{curTop=parseFloat(curCSSTop)||0;curLeft=parseFloat(curCSSLeft)||0}if(jQuery.isFunction(options)){options=options.call(elem,i,jQuery.extend({},curOffset))}if(options.top!=null){props.top=options.top-curOffset.top+curTop}if(options.left!=null){props.left=options.left-curOffset.left+curLeft}if("using"in options){options.using.call(elem,props)}else{curElem.css(props)}}};jQuery.fn.extend({offset:function(options){if(arguments.length){return options===undefined?this:this.each(function(i){jQuery.offset.setOffset(this,options,i)})}var docElem,win,box={top:0,left:0},elem=this[0],doc=elem&&elem.ownerDocument;if(!doc){return}docElem=doc.documentElement;if(!jQuery.contains(docElem,elem)){return box}if(typeof elem.getBoundingClientRect!=="undefined"){box=elem.getBoundingClientRect()}win=getWindow(doc);return{top:box.top+(win.pageYOffset||docElem.scrollTop)-(docElem.clientTop||0),left:box.left+(win.pageXOffset||docElem.scrollLeft)-(docElem.clientLeft||0)}},position:function(){if(!this[0]){return}var offsetParent,offset,parentOffset={top:0,left:0},elem=this[0];if(jQuery.css(elem,"position")==="fixed"){offset=elem.getBoundingClientRect()}else{offsetParent=this.offsetParent();offset=this.offset();if(!jQuery.nodeName(offsetParent[0],"html")){parentOffset=offsetParent.offset()}parentOffset.top+=jQuery.css(offsetParent[0],"borderTopWidth",true);parentOffset.left+=jQuery.css(offsetParent[0],"borderLeftWidth",true)}return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",true),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",true)}},offsetParent:function(){return this.map(function(){var offsetParent=this.offsetParent;while(offsetParent&&(!jQuery.nodeName(offsetParent,"html")&&jQuery.css(offsetParent,"position")==="static")){offsetParent=offsetParent.offsetParent}return offsetParent||documentElement})}});jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top=/Y/.test(prop);jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win=getWindow(elem);if(val===undefined){return win?prop in win?win[prop]:win.document.documentElement[method]:elem[method]}if(win){win.scrollTo(!top?val:jQuery(win).scrollLeft(),top?val:jQuery(win).scrollTop())}else{elem[method]=val}},method,val,arguments.length,null)}});jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed){computed=curCSS(elem,prop);return rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed}})});jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||typeof margin!=="boolean"),extra=defaultExtra||(margin===true||value===true?"margin":"border");return access(this,function(elem,type,value){var doc;if(jQuery.isWindow(elem)){return elem.document.documentElement["client"+name]}if(elem.nodeType===9){doc=elem.documentElement;return Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name])}return value===undefined?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra)},type,chainable?margin:undefined,chainable,null)}})});jQuery.fn.extend({bind:function(types,data,fn){return this.on(types,null,data,fn)},unbind:function(types,fn){return this.off(types,null,fn)},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn)},undelegate:function(selector,types,fn){return arguments.length===1?this.off(selector,"**"):this.off(types,selector||"**",fn)}});jQuery.fn.size=function(){return this.length};jQuery.fn.andSelf=jQuery.fn.addBack;if(typeof define==="function"&&define.amd){define("jquery",[],function(){return jQuery})}var _jQuery=window.jQuery,_$=window.$;jQuery.noConflict=function(deep){if(window.$===jQuery){window.$=_$}if(deep&&window.jQuery===jQuery){window.jQuery=_jQuery}return jQuery};if(!noGlobal){window.jQuery=window.$=jQuery}return jQuery})},{}],8:[function(require,module,exports){(function(){module.exports={xpath:require("./xpath"),Range:require("./range")}}).call(this)},{"./range":9,"./xpath":11}],9:[function(require,module,exports){(function(){var $,Range,Util,xpath,__hasProp={}.hasOwnProperty,__extends=function(child,parent){for(var key in parent){if(__hasProp.call(parent,key))child[key]=parent[key]}function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor;child.__super__=parent.prototype;return child};xpath=require("./xpath");Util=require("./util");$=require("jquery");Range={};Range.sniff=function(r){if(r.commonAncestorContainer!=null){return new Range.BrowserRange(r)}else if(typeof r.start==="string"){return new Range.SerializedRange(r)}else if(r.start&&typeof r.start==="object"){return new Range.NormalizedRange(r)}else{console.error("Could not sniff range type");return false}};Range.RangeError=function(_super){__extends(RangeError,_super);function RangeError(type,message,parent){this.type=type;this.message=message;this.parent=parent!=null?parent:null;RangeError.__super__.constructor.call(this,this.message)}return RangeError}(Error);Range.BrowserRange=function(){function BrowserRange(obj){this.commonAncestorContainer=obj.commonAncestorContainer;this.startContainer=obj.startContainer;this.startOffset=obj.startOffset;this.endContainer=obj.endContainer;this.endOffset=obj.endOffset}BrowserRange.prototype.normalize=function(root){var nr,r;if(this.tainted){console.error("You may only call normalize() once on a BrowserRange!");return false}else{this.tainted=true}r={};this._normalizeStart(r);this._normalizeEnd(r);nr={};if(r.startOffset>0){if(r.start.nodeValue.length>r.startOffset){nr.start=r.start.splitText(r.startOffset)}else{nr.start=r.start.nextSibling}}else{nr.start=r.start}if(r.start===r.end){if(nr.start.nodeValue.length>r.endOffset-r.startOffset){nr.start.splitText(r.endOffset-r.startOffset)}nr.end=nr.start}else{if(r.end.nodeValue.length>r.endOffset){r.end.splitText(r.endOffset)}nr.end=r.end}nr.commonAncestor=this.commonAncestorContainer;while(nr.commonAncestor.nodeType!==Util.NodeTypes.ELEMENT_NODE){nr.commonAncestor=nr.commonAncestor.parentNode}return new Range.NormalizedRange(nr)};BrowserRange.prototype._normalizeStart=function(r){if(this.startContainer.nodeType===Util.NodeTypes.ELEMENT_NODE){r.start=Util.getFirstTextNodeNotBefore(this.startContainer.childNodes[this.startOffset]);return r.startOffset=0}else{r.start=this.startContainer;return r.startOffset=this.startOffset}};BrowserRange.prototype._normalizeEnd=function(r){var n,node;if(this.endContainer.nodeType===Util.NodeTypes.ELEMENT_NODE){node=this.endContainer.childNodes[this.endOffset];if(node!=null){n=node;while(n!=null&&n.nodeType!==Util.NodeTypes.TEXT_NODE){n=n.firstChild}if(n!=null){r.end=n;r.endOffset=0}}if(r.end==null){if(this.endOffset){node=this.endContainer.childNodes[this.endOffset-1]}else{node=this.endContainer.previousSibling}r.end=Util.getLastTextNodeUpTo(node);return r.endOffset=r.end.nodeValue.length}}else{r.end=this.endContainer;return r.endOffset=this.endOffset}};BrowserRange.prototype.serialize=function(root,ignoreSelector){return this.normalize(root).serialize(root,ignoreSelector)};return BrowserRange}();Range.NormalizedRange=function(){function NormalizedRange(obj){this.commonAncestor=obj.commonAncestor;this.start=obj.start;this.end=obj.end}NormalizedRange.prototype.normalize=function(root){return this};NormalizedRange.prototype.limit=function(bounds){var nodes,parent,startParents,_i,_len,_ref;nodes=$.grep(this.textNodes(),function(node){return node.parentNode===bounds||$.contains(bounds,node.parentNode)});if(!nodes.length){return null}this.start=nodes[0];this.end=nodes[nodes.length-1];startParents=$(this.start).parents();_ref=$(this.end).parents();for(_i=0,_len=_ref.length;_i<_len;_i++){parent=_ref[_i];if(startParents.index(parent)!==-1){this.commonAncestor=parent;break}}return this};NormalizedRange.prototype.serialize=function(root,ignoreSelector){var end,serialization,start;serialization=function(node,isEnd){var n,nodes,offset,origParent,path,textNodes,_i,_len;if(ignoreSelector){origParent=$(node).parents(":not("+ignoreSelector+")").eq(0)}else{origParent=$(node).parent()}path=xpath.fromNode(origParent,root)[0];textNodes=Util.getTextNodes(origParent);nodes=textNodes.slice(0,textNodes.index(node));offset=0;for(_i=0,_len=nodes.length;_i<_len;_i++){n=nodes[_i];offset+=n.nodeValue.length}if(isEnd){return[path,offset+node.nodeValue.length]}else{return[path,offset]}};start=serialization(this.start);end=serialization(this.end,true);return new Range.SerializedRange({start:start[0],end:end[0],startOffset:start[1],endOffset:end[1]})};NormalizedRange.prototype.text=function(){var node;return function(){var _i,_len,_ref,_results;_ref=this.textNodes();_results=[];for(_i=0,_len=_ref.length;_i<_len;_i++){node=_ref[_i];_results.push(node.nodeValue)}return _results}.call(this).join("")};NormalizedRange.prototype.textNodes=function(){var end,start,textNodes,_ref;textNodes=Util.getTextNodes($(this.commonAncestor));_ref=[textNodes.index(this.start),textNodes.index(this.end)],start=_ref[0],end=_ref[1];return $.makeArray(textNodes.slice(start,+end+1||9e9))};return NormalizedRange}();Range.SerializedRange=function(){function SerializedRange(obj){this.start=obj.start;this.startOffset=obj.startOffset;this.end=obj.end;this.endOffset=obj.endOffset}SerializedRange.prototype.normalize=function(root){var contains,e,length,node,p,range,targetOffset,tn,_i,_j,_len,_len1,_ref,_ref1;range={};_ref=["start","end"];for(_i=0,_len=_ref.length;_i<_len;_i++){p=_ref[_i];try{node=xpath.toNode(this[p],root)}catch(_error){e=_error;throw new Range.RangeError(p,"Error while finding "+p+" node: "+this[p]+": "+e,e)}if(!node){throw new Range.RangeError(p,"Couldn't find "+p+" node: "+this[p])}length=0;targetOffset=this[p+"Offset"];if(p==="end"){targetOffset-=1}_ref1=Util.getTextNodes($(node));for(_j=0,_len1=_ref1.length;_j<_len1;_j++){tn=_ref1[_j];if(length+tn.nodeValue.length>targetOffset){range[p+"Container"]=tn;range[p+"Offset"]=this[p+"Offset"]-length;break}else{length+=tn.nodeValue.length}}if(range[p+"Offset"]==null){throw new Range.RangeError(""+p+"offset","Couldn't find offset "+this[p+"Offset"]+" in element "+this[p])}}contains=document.compareDocumentPosition!=null?function(a,b){return a.compareDocumentPosition(b)&Node.DOCUMENT_POSITION_CONTAINED_BY}:function(a,b){return a.contains(b)};$(range.startContainer).parents().each(function(){var endContainer;if(range.endContainer.nodeType===Util.NodeTypes.TEXT_NODE){endContainer=range.endContainer.parentNode}else{endContainer=range.endContainer}if(contains(this,endContainer)){range.commonAncestorContainer=this;return false}});return new Range.BrowserRange(range).normalize(root)};SerializedRange.prototype.serialize=function(root,ignoreSelector){return this.normalize(root).serialize(root,ignoreSelector)};SerializedRange.prototype.toObject=function(){return{start:this.start,startOffset:this.startOffset,end:this.end,endOffset:this.endOffset}};return SerializedRange}();module.exports=Range}).call(this)},{"./util":10,"./xpath":11,jquery:12}],10:[function(require,module,exports){(function(){var $,Util;$=require("jquery");Util={};Util.NodeTypes={ELEMENT_NODE:1,ATTRIBUTE_NODE:2,TEXT_NODE:3,CDATA_SECTION_NODE:4,ENTITY_REFERENCE_NODE:5,ENTITY_NODE:6,PROCESSING_INSTRUCTION_NODE:7,COMMENT_NODE:8,DOCUMENT_NODE:9,DOCUMENT_TYPE_NODE:10,DOCUMENT_FRAGMENT_NODE:11,NOTATION_NODE:12};Util.getFirstTextNodeNotBefore=function(n){var result;switch(n.nodeType){case Util.NodeTypes.TEXT_NODE:return n;case Util.NodeTypes.ELEMENT_NODE:if(n.firstChild!=null){result=Util.getFirstTextNodeNotBefore(n.firstChild);if(result!=null){return result}}break}n=n.nextSibling;if(n!=null){return Util.getFirstTextNodeNotBefore(n)}else{return null}};Util.getLastTextNodeUpTo=function(n){var result;switch(n.nodeType){case Util.NodeTypes.TEXT_NODE:return n;case Util.NodeTypes.ELEMENT_NODE:if(n.lastChild!=null){result=Util.getLastTextNodeUpTo(n.lastChild);if(result!=null){return result}}break}n=n.previousSibling;if(n!=null){return Util.getLastTextNodeUpTo(n)}else{return null}};Util.getTextNodes=function(jq){var getTextNodes;getTextNodes=function(node){var nodes;if(node&&node.nodeType!==Util.NodeTypes.TEXT_NODE){nodes=[];if(node.nodeType!==Util.NodeTypes.COMMENT_NODE){node=node.lastChild;while(node){nodes.push(getTextNodes(node));node=node.previousSibling}}return nodes.reverse()}else{return node}};return jq.map(function(){return Util.flatten(getTextNodes(this))})};Util.getGlobal=function(){return function(){return this}()};Util.contains=function(parent,child){var node;node=child;while(node!=null){if(node===parent){return true}node=node.parentNode}return false};Util.flatten=function(array){var flatten;flatten=function(ary){var el,flat,_i,_len;flat=[];for(_i=0,_len=ary.length;_i<_len;_i++){el=ary[_i];flat=flat.concat(el&&$.isArray(el)?flatten(el):el)}return flat};return flatten(array)};module.exports=Util}).call(this)},{jquery:12}],11:[function(require,module,exports){(function(){var $,Util,evaluateXPath,findChild,fromNode,getNodeName,getNodePosition,simpleXPathJQuery,simpleXPathPure,toNode;$=require("jquery");Util=require("./util");evaluateXPath=function(xp,root,nsResolver){var exception,idx,name,node,step,steps,_i,_len,_ref;if(root==null){root=document}if(nsResolver==null){nsResolver=null}try{return document.evaluate("."+xp,root,nsResolver,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue}catch(_error){exception=_error;console.log("XPath evaluation failed.");console.log("Trying fallback...");steps=xp.substring(1).split("/");node=root;for(_i=0,_len=steps.length;_i<_len;_i++){step=steps[_i];_ref=step.split("["),name=_ref[0],idx=_ref[1];idx=idx!=null?parseInt((idx!=null?idx.split("]"):void 0)[0]):1;node=findChild(node,name.toLowerCase(),idx)}return node}};simpleXPathJQuery=function($el,relativeRoot){var jq;jq=$el.map(function(){var elem,idx,path,tagName;path="";elem=this;while((elem!=null?elem.nodeType:void 0)===Util.NodeTypes.ELEMENT_NODE&&elem!==relativeRoot){tagName=elem.tagName.replace(":","\\:");idx=$(elem.parentNode).children(tagName).index(elem)+1;idx="["+idx+"]";path="/"+elem.tagName.toLowerCase()+idx+path;elem=elem.parentNode}return path});return jq.get()};simpleXPathPure=function($el,relativeRoot){var getPathSegment,getPathTo,jq,rootNode;getPathSegment=function(node){var name,pos;name=getNodeName(node);pos=getNodePosition(node);return""+name+"["+pos+"]"};rootNode=relativeRoot;getPathTo=function(node){var xpath;xpath="";while(node!==rootNode){if(node==null){throw new Error("Called getPathTo on a node which was not a descendant of @rootNode. "+rootNode)}xpath=getPathSegment(node)+"/"+xpath;node=node.parentNode}xpath="/"+xpath;xpath=xpath.replace(/\/$/,"");return xpath};jq=$el.map(function(){var path;path=getPathTo(this);return path});return jq.get()};findChild=function(node,type,index){var child,children,found,name,_i,_len;if(!node.hasChildNodes()){throw new Error("XPath error: node has no children!")}children=node.childNodes;found=0;for(_i=0,_len=children.length;_i<_len;_i++){child=children[_i];name=getNodeName(child);if(name===type){found+=1;if(found===index){return child}}}throw new Error("XPath error: wanted child not found.")};getNodeName=function(node){var nodeName;nodeName=node.nodeName.toLowerCase();switch(nodeName){case"#text":return"text()";case"#comment":return"comment()";case"#cdata-section":return"cdata-section()";default:return nodeName}};getNodePosition=function(node){var pos,tmp;pos=0;tmp=node;while(tmp){if(tmp.nodeName===node.nodeName){pos+=1}tmp=tmp.previousSibling}return pos};fromNode=function($el,relativeRoot){var exception,result;try{result=simpleXPathJQuery($el,relativeRoot)}catch(_error){exception=_error;console.log("jQuery-based XPath construction failed! Falling back to manual.");result=simpleXPathPure($el,relativeRoot)}return result};toNode=function(path,root){var customResolver,namespace,node,segment;if(root==null){root=document}if(!$.isXMLDoc(document.documentElement)){return evaluateXPath(path,root)}else{customResolver=document.createNSResolver(document.ownerDocument===null?document.documentElement:document.ownerDocument.documentElement);node=evaluateXPath(path,root,customResolver);if(!node){path=function(){var _i,_len,_ref,_results;_ref=path.split("/");_results=[];for(_i=0,_len=_ref.length;_i<_len;_i++){segment=_ref[_i];if(segment&&segment.indexOf(":")===-1){_results.push(segment.replace(/^([a-z]+)/,"xhtml:$1"))}else{_results.push(segment)}}return _results}().join("/");namespace=document.lookupNamespaceURI(null);customResolver=function(ns){if(ns==="xhtml"){return namespace}else{return document.documentElement.getAttribute("xmlns:"+ns)}};node=evaluateXPath(path,root,customResolver)}return node}};module.exports={fromNode:fromNode,toNode:toNode}}).call(this)},{"./util":10,jquery:12}],12:[function(require,module,exports){(function(global,factory){if(typeof module==="object"&&typeof module.exports==="object"){module.exports=global.document?factory(global,true):function(w){if(!w.document){throw new Error("jQuery requires a window with a document")}return factory(w)}}else{factory(global)}})(typeof window!=="undefined"?window:this,function(window,noGlobal){var deletedIds=[];var slice=deletedIds.slice;var concat=deletedIds.concat;var push=deletedIds.push;var indexOf=deletedIds.indexOf;var class2type={};var toString=class2type.toString;var hasOwn=class2type.hasOwnProperty;var support={};var version="1.11.3",jQuery=function(selector,context){return new jQuery.fn.init(selector,context)},rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,rmsPrefix=/^-ms-/,rdashAlpha=/-([\da-z])/gi,fcamelCase=function(all,letter){return letter.toUpperCase()};jQuery.fn=jQuery.prototype={jquery:version,constructor:jQuery,selector:"",length:0,toArray:function(){return slice.call(this)},get:function(num){return num!=null?num<0?this[num+this.length]:this[num]:slice.call(this)},pushStack:function(elems){var ret=jQuery.merge(this.constructor(),elems);ret.prevObject=this;ret.context=this.context;return ret},each:function(callback,args){return jQuery.each(this,callback,args)},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem)}))},slice:function(){return this.pushStack(slice.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(i){var len=this.length,j=+i+(i<0?len:0);return this.pushStack(j>=0&&j<len?[this[j]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:push,sort:deletedIds.sort,splice:deletedIds.splice};jQuery.extend=jQuery.fn.extend=function(){var src,copyIsArray,copy,name,options,clone,target=arguments[0]||{},i=1,length=arguments.length,deep=false;if(typeof target==="boolean"){deep=target;target=arguments[i]||{};i++}if(typeof target!=="object"&&!jQuery.isFunction(target)){target={}}if(i===length){target=this;i--}for(;i<length;i++){if((options=arguments[i])!=null){for(name in options){src=target[name];copy=options[name];if(target===copy){continue}if(deep&©&&(jQuery.isPlainObject(copy)||(copyIsArray=jQuery.isArray(copy)))){if(copyIsArray){copyIsArray=false;clone=src&&jQuery.isArray(src)?src:[]}else{clone=src&&jQuery.isPlainObject(src)?src:{}}target[name]=jQuery.extend(deep,clone,copy)}else if(copy!==undefined){target[name]=copy}}}}return target};jQuery.extend({expando:"jQuery"+(version+Math.random()).replace(/\D/g,""),isReady:true,error:function(msg){throw new Error(msg)},noop:function(){},isFunction:function(obj){return jQuery.type(obj)==="function"},isArray:Array.isArray||function(obj){return jQuery.type(obj)==="array"},isWindow:function(obj){return obj!=null&&obj==obj.window},isNumeric:function(obj){return!jQuery.isArray(obj)&&obj-parseFloat(obj)+1>=0},isEmptyObject:function(obj){var name;for(name in obj){return false}return true},isPlainObject:function(obj){var key;if(!obj||jQuery.type(obj)!=="object"||obj.nodeType||jQuery.isWindow(obj)){return false}try{if(obj.constructor&&!hasOwn.call(obj,"constructor")&&!hasOwn.call(obj.constructor.prototype,"isPrototypeOf")){return false}}catch(e){return false}if(support.ownLast){for(key in obj){return hasOwn.call(obj,key)}}for(key in obj){}return key===undefined||hasOwn.call(obj,key)},type:function(obj){if(obj==null){return obj+""}return typeof obj==="object"||typeof obj==="function"?class2type[toString.call(obj)]||"object":typeof obj},globalEval:function(data){if(data&&jQuery.trim(data)){(window.execScript||function(data){window["eval"].call(window,data)})(data)}},camelCase:function(string){return string.replace(rmsPrefix,"ms-").replace(rdashAlpha,fcamelCase)},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toLowerCase()===name.toLowerCase()},each:function(obj,callback,args){var value,i=0,length=obj.length,isArray=isArraylike(obj);if(args){if(isArray){for(;i<length;i++){value=callback.apply(obj[i],args);if(value===false){break}}}else{for(i in obj){value=callback.apply(obj[i],args);if(value===false){break}}}}else{if(isArray){for(;i<length;i++){value=callback.call(obj[i],i,obj[i]);if(value===false){break}}}else{for(i in obj){value=callback.call(obj[i],i,obj[i]);if(value===false){break}}}}return obj},trim:function(text){return text==null?"":(text+"").replace(rtrim,"")},makeArray:function(arr,results){var ret=results||[];if(arr!=null){if(isArraylike(Object(arr))){jQuery.merge(ret,typeof arr==="string"?[arr]:arr)}else{push.call(ret,arr)}}return ret},inArray:function(elem,arr,i){var len;if(arr){if(indexOf){return indexOf.call(arr,elem,i)}len=arr.length;i=i?i<0?Math.max(0,len+i):i:0;for(;i<len;i++){if(i in arr&&arr[i]===elem){return i}}}return-1},merge:function(first,second){var len=+second.length,j=0,i=first.length;while(j<len){first[i++]=second[j++]}if(len!==len){while(second[j]!==undefined){first[i++]=second[j++]}}first.length=i;return first},grep:function(elems,callback,invert){var callbackInverse,matches=[],i=0,length=elems.length,callbackExpect=!invert;for(;i<length;i++){callbackInverse=!callback(elems[i],i);if(callbackInverse!==callbackExpect){matches.push(elems[i])}}return matches},map:function(elems,callback,arg){var value,i=0,length=elems.length,isArray=isArraylike(elems),ret=[];if(isArray){for(;i<length;i++){value=callback(elems[i],i,arg);if(value!=null){ret.push(value)}}}else{for(i in elems){value=callback(elems[i],i,arg);if(value!=null){ret.push(value)}}}return concat.apply([],ret)},guid:1,proxy:function(fn,context){var args,proxy,tmp;if(typeof context==="string"){tmp=fn[context];context=fn;fn=tmp}if(!jQuery.isFunction(fn)){return undefined}args=slice.call(arguments,2);proxy=function(){return fn.apply(context||this,args.concat(slice.call(arguments)))};proxy.guid=fn.guid=fn.guid||jQuery.guid++;return proxy},now:function(){return+new Date},support:support});jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(i,name){class2type["[object "+name+"]"]=name.toLowerCase()});function isArraylike(obj){var length="length"in obj&&obj.length,type=jQuery.type(obj);if(type==="function"||jQuery.isWindow(obj)){return false}if(obj.nodeType===1&&length){return true}return type==="array"||length===0||typeof length==="number"&&length>0&&length-1 in obj}var Sizzle=function(window){var i,support,Expr,getText,isXML,tokenize,compile,select,outermostContext,sortInput,hasDuplicate,setDocument,document,docElem,documentIsHTML,rbuggyQSA,rbuggyMatches,matches,contains,expando="sizzle"+1*new Date,preferredDoc=window.document,dirruns=0,done=0,classCache=createCache(),tokenCache=createCache(),compilerCache=createCache(),sortOrder=function(a,b){if(a===b){hasDuplicate=true}return 0},MAX_NEGATIVE=1<<31,hasOwn={}.hasOwnProperty,arr=[],pop=arr.pop,push_native=arr.push,push=arr.push,slice=arr.slice,indexOf=function(list,elem){var i=0,len=list.length;for(;i<len;i++){if(list[i]===elem){return i}}return-1},booleans="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",whitespace="[\\x20\\t\\r\\n\\f]",characterEncoding="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",identifier=characterEncoding.replace("w","w#"),attributes="\\["+whitespace+"*("+characterEncoding+")(?:"+whitespace+"*([*^$|!~]?=)"+whitespace+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+identifier+"))|)"+whitespace+"*\\]",pseudos=":("+characterEncoding+")(?:\\(("+"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|"+"((?:\\\\.|[^\\\\()[\\]]|"+attributes+")*)|"+".*"+")\\)|)",rwhitespace=new RegExp(whitespace+"+","g"),rtrim=new RegExp("^"+whitespace+"+|((?:^|[^\\\\])(?:\\\\.)*)"+whitespace+"+$","g"),rcomma=new RegExp("^"+whitespace+"*,"+whitespace+"*"),rcombinators=new RegExp("^"+whitespace+"*([>+~]|"+whitespace+")"+whitespace+"*"),rattributeQuotes=new RegExp("="+whitespace+"*([^\\]'\"]*?)"+whitespace+"*\\]","g"),rpseudo=new RegExp(pseudos),ridentifier=new RegExp("^"+identifier+"$"),matchExpr={ID:new RegExp("^#("+characterEncoding+")"),CLASS:new RegExp("^\\.("+characterEncoding+")"),TAG:new RegExp("^("+characterEncoding.replace("w","w*")+")"),ATTR:new RegExp("^"+attributes),PSEUDO:new RegExp("^"+pseudos), | ||
18 | CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+whitespace+"*(even|odd|(([+-]|)(\\d*)n|)"+whitespace+"*(?:([+-]|)"+whitespace+"*(\\d+)|))"+whitespace+"*\\)|)","i"),bool:new RegExp("^(?:"+booleans+")$","i"),needsContext:new RegExp("^"+whitespace+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+whitespace+"*((?:-\\d)?\\d*)"+whitespace+"*\\)|)(?=[^-]|$)","i")},rinputs=/^(?:input|select|textarea|button)$/i,rheader=/^h\d$/i,rnative=/^[^{]+\{\s*\[native \w/,rquickExpr=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,rsibling=/[+~]/,rescape=/'|\\/g,runescape=new RegExp("\\\\([\\da-f]{1,6}"+whitespace+"?|("+whitespace+")|.)","ig"),funescape=function(_,escaped,escapedWhitespace){var high="0x"+escaped-65536;return high!==high||escapedWhitespace?escaped:high<0?String.fromCharCode(high+65536):String.fromCharCode(high>>10|55296,high&1023|56320)},unloadHandler=function(){setDocument()};try{push.apply(arr=slice.call(preferredDoc.childNodes),preferredDoc.childNodes);arr[preferredDoc.childNodes.length].nodeType}catch(e){push={apply:arr.length?function(target,els){push_native.apply(target,slice.call(els))}:function(target,els){var j=target.length,i=0;while(target[j++]=els[i++]){}target.length=j-1}}}function Sizzle(selector,context,results,seed){var match,elem,m,nodeType,i,groups,old,nid,newContext,newSelector;if((context?context.ownerDocument||context:preferredDoc)!==document){setDocument(context)}context=context||document;results=results||[];nodeType=context.nodeType;if(typeof selector!=="string"||!selector||nodeType!==1&&nodeType!==9&&nodeType!==11){return results}if(!seed&&documentIsHTML){if(nodeType!==11&&(match=rquickExpr.exec(selector))){if(m=match[1]){if(nodeType===9){elem=context.getElementById(m);if(elem&&elem.parentNode){if(elem.id===m){results.push(elem);return results}}else{return results}}else{if(context.ownerDocument&&(elem=context.ownerDocument.getElementById(m))&&contains(context,elem)&&elem.id===m){results.push(elem);return results}}}else if(match[2]){push.apply(results,context.getElementsByTagName(selector));return results}else if((m=match[3])&&support.getElementsByClassName){push.apply(results,context.getElementsByClassName(m));return results}}if(support.qsa&&(!rbuggyQSA||!rbuggyQSA.test(selector))){nid=old=expando;newContext=context;newSelector=nodeType!==1&&selector;if(nodeType===1&&context.nodeName.toLowerCase()!=="object"){groups=tokenize(selector);if(old=context.getAttribute("id")){nid=old.replace(rescape,"\\$&")}else{context.setAttribute("id",nid)}nid="[id='"+nid+"'] ";i=groups.length;while(i--){groups[i]=nid+toSelector(groups[i])}newContext=rsibling.test(selector)&&testContext(context.parentNode)||context;newSelector=groups.join(",")}if(newSelector){try{push.apply(results,newContext.querySelectorAll(newSelector));return results}catch(qsaError){}finally{if(!old){context.removeAttribute("id")}}}}}return select(selector.replace(rtrim,"$1"),context,results,seed)}function createCache(){var keys=[];function cache(key,value){if(keys.push(key+" ")>Expr.cacheLength){delete cache[keys.shift()]}return cache[key+" "]=value}return cache}function markFunction(fn){fn[expando]=true;return fn}function assert(fn){var div=document.createElement("div");try{return!!fn(div)}catch(e){return false}finally{if(div.parentNode){div.parentNode.removeChild(div)}div=null}}function addHandle(attrs,handler){var arr=attrs.split("|"),i=attrs.length;while(i--){Expr.attrHandle[arr[i]]=handler}}function siblingCheck(a,b){var cur=b&&a,diff=cur&&a.nodeType===1&&b.nodeType===1&&(~b.sourceIndex||MAX_NEGATIVE)-(~a.sourceIndex||MAX_NEGATIVE);if(diff){return diff}if(cur){while(cur=cur.nextSibling){if(cur===b){return-1}}}return a?1:-1}function createInputPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return name==="input"&&elem.type===type}}function createButtonPseudo(type){return function(elem){var name=elem.nodeName.toLowerCase();return(name==="input"||name==="button")&&elem.type===type}}function createPositionalPseudo(fn){return markFunction(function(argument){argument=+argument;return markFunction(function(seed,matches){var j,matchIndexes=fn([],seed.length,argument),i=matchIndexes.length;while(i--){if(seed[j=matchIndexes[i]]){seed[j]=!(matches[j]=seed[j])}}})})}function testContext(context){return context&&typeof context.getElementsByTagName!=="undefined"&&context}support=Sizzle.support={};isXML=Sizzle.isXML=function(elem){var documentElement=elem&&(elem.ownerDocument||elem).documentElement;return documentElement?documentElement.nodeName!=="HTML":false};setDocument=Sizzle.setDocument=function(node){var hasCompare,parent,doc=node?node.ownerDocument||node:preferredDoc;if(doc===document||doc.nodeType!==9||!doc.documentElement){return document}document=doc;docElem=doc.documentElement;parent=doc.defaultView;if(parent&&parent!==parent.top){if(parent.addEventListener){parent.addEventListener("unload",unloadHandler,false)}else if(parent.attachEvent){parent.attachEvent("onunload",unloadHandler)}}documentIsHTML=!isXML(doc);support.attributes=assert(function(div){div.className="i";return!div.getAttribute("className")});support.getElementsByTagName=assert(function(div){div.appendChild(doc.createComment(""));return!div.getElementsByTagName("*").length});support.getElementsByClassName=rnative.test(doc.getElementsByClassName);support.getById=assert(function(div){docElem.appendChild(div).id=expando;return!doc.getElementsByName||!doc.getElementsByName(expando).length});if(support.getById){Expr.find["ID"]=function(id,context){if(typeof context.getElementById!=="undefined"&&documentIsHTML){var m=context.getElementById(id);return m&&m.parentNode?[m]:[]}};Expr.filter["ID"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){return elem.getAttribute("id")===attrId}}}else{delete Expr.find["ID"];Expr.filter["ID"]=function(id){var attrId=id.replace(runescape,funescape);return function(elem){var node=typeof elem.getAttributeNode!=="undefined"&&elem.getAttributeNode("id");return node&&node.value===attrId}}}Expr.find["TAG"]=support.getElementsByTagName?function(tag,context){if(typeof context.getElementsByTagName!=="undefined"){return context.getElementsByTagName(tag)}else if(support.qsa){return context.querySelectorAll(tag)}}:function(tag,context){var elem,tmp=[],i=0,results=context.getElementsByTagName(tag);if(tag==="*"){while(elem=results[i++]){if(elem.nodeType===1){tmp.push(elem)}}return tmp}return results};Expr.find["CLASS"]=support.getElementsByClassName&&function(className,context){if(documentIsHTML){return context.getElementsByClassName(className)}};rbuggyMatches=[];rbuggyQSA=[];if(support.qsa=rnative.test(doc.querySelectorAll)){assert(function(div){docElem.appendChild(div).innerHTML="<a id='"+expando+"'></a>"+"<select id='"+expando+"-\f]' msallowcapture=''>"+"<option selected=''></option></select>";if(div.querySelectorAll("[msallowcapture^='']").length){rbuggyQSA.push("[*^$]="+whitespace+"*(?:''|\"\")")}if(!div.querySelectorAll("[selected]").length){rbuggyQSA.push("\\["+whitespace+"*(?:value|"+booleans+")")}if(!div.querySelectorAll("[id~="+expando+"-]").length){rbuggyQSA.push("~=")}if(!div.querySelectorAll(":checked").length){rbuggyQSA.push(":checked")}if(!div.querySelectorAll("a#"+expando+"+*").length){rbuggyQSA.push(".#.+[+~]")}});assert(function(div){var input=doc.createElement("input");input.setAttribute("type","hidden");div.appendChild(input).setAttribute("name","D");if(div.querySelectorAll("[name=d]").length){rbuggyQSA.push("name"+whitespace+"*[*^$|!~]?=")}if(!div.querySelectorAll(":enabled").length){rbuggyQSA.push(":enabled",":disabled")}div.querySelectorAll("*,:x");rbuggyQSA.push(",.*:")})}if(support.matchesSelector=rnative.test(matches=docElem.matches||docElem.webkitMatchesSelector||docElem.mozMatchesSelector||docElem.oMatchesSelector||docElem.msMatchesSelector)){assert(function(div){support.disconnectedMatch=matches.call(div,"div");matches.call(div,"[s!='']:x");rbuggyMatches.push("!=",pseudos)})}rbuggyQSA=rbuggyQSA.length&&new RegExp(rbuggyQSA.join("|"));rbuggyMatches=rbuggyMatches.length&&new RegExp(rbuggyMatches.join("|"));hasCompare=rnative.test(docElem.compareDocumentPosition);contains=hasCompare||rnative.test(docElem.contains)?function(a,b){var adown=a.nodeType===9?a.documentElement:a,bup=b&&b.parentNode;return a===bup||!!(bup&&bup.nodeType===1&&(adown.contains?adown.contains(bup):a.compareDocumentPosition&&a.compareDocumentPosition(bup)&16))}:function(a,b){if(b){while(b=b.parentNode){if(b===a){return true}}}return false};sortOrder=hasCompare?function(a,b){if(a===b){hasDuplicate=true;return 0}var compare=!a.compareDocumentPosition-!b.compareDocumentPosition;if(compare){return compare}compare=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1;if(compare&1||!support.sortDetached&&b.compareDocumentPosition(a)===compare){if(a===doc||a.ownerDocument===preferredDoc&&contains(preferredDoc,a)){return-1}if(b===doc||b.ownerDocument===preferredDoc&&contains(preferredDoc,b)){return 1}return sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0}return compare&4?-1:1}:function(a,b){if(a===b){hasDuplicate=true;return 0}var cur,i=0,aup=a.parentNode,bup=b.parentNode,ap=[a],bp=[b];if(!aup||!bup){return a===doc?-1:b===doc?1:aup?-1:bup?1:sortInput?indexOf(sortInput,a)-indexOf(sortInput,b):0}else if(aup===bup){return siblingCheck(a,b)}cur=a;while(cur=cur.parentNode){ap.unshift(cur)}cur=b;while(cur=cur.parentNode){bp.unshift(cur)}while(ap[i]===bp[i]){i++}return i?siblingCheck(ap[i],bp[i]):ap[i]===preferredDoc?-1:bp[i]===preferredDoc?1:0};return doc};Sizzle.matches=function(expr,elements){return Sizzle(expr,null,null,elements)};Sizzle.matchesSelector=function(elem,expr){if((elem.ownerDocument||elem)!==document){setDocument(elem)}expr=expr.replace(rattributeQuotes,"='$1']");if(support.matchesSelector&&documentIsHTML&&(!rbuggyMatches||!rbuggyMatches.test(expr))&&(!rbuggyQSA||!rbuggyQSA.test(expr))){try{var ret=matches.call(elem,expr);if(ret||support.disconnectedMatch||elem.document&&elem.document.nodeType!==11){return ret}}catch(e){}}return Sizzle(expr,document,null,[elem]).length>0};Sizzle.contains=function(context,elem){if((context.ownerDocument||context)!==document){setDocument(context)}return contains(context,elem)};Sizzle.attr=function(elem,name){if((elem.ownerDocument||elem)!==document){setDocument(elem)}var fn=Expr.attrHandle[name.toLowerCase()],val=fn&&hasOwn.call(Expr.attrHandle,name.toLowerCase())?fn(elem,name,!documentIsHTML):undefined;return val!==undefined?val:support.attributes||!documentIsHTML?elem.getAttribute(name):(val=elem.getAttributeNode(name))&&val.specified?val.value:null};Sizzle.error=function(msg){throw new Error("Syntax error, unrecognized expression: "+msg)};Sizzle.uniqueSort=function(results){var elem,duplicates=[],j=0,i=0;hasDuplicate=!support.detectDuplicates;sortInput=!support.sortStable&&results.slice(0);results.sort(sortOrder);if(hasDuplicate){while(elem=results[i++]){if(elem===results[i]){j=duplicates.push(i)}}while(j--){results.splice(duplicates[j],1)}}sortInput=null;return results};getText=Sizzle.getText=function(elem){var node,ret="",i=0,nodeType=elem.nodeType;if(!nodeType){while(node=elem[i++]){ret+=getText(node)}}else if(nodeType===1||nodeType===9||nodeType===11){if(typeof elem.textContent==="string"){return elem.textContent}else{for(elem=elem.firstChild;elem;elem=elem.nextSibling){ret+=getText(elem)}}}else if(nodeType===3||nodeType===4){return elem.nodeValue}return ret};Expr=Sizzle.selectors={cacheLength:50,createPseudo:markFunction,match:matchExpr,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:true}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:true},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(match){match[1]=match[1].replace(runescape,funescape);match[3]=(match[3]||match[4]||match[5]||"").replace(runescape,funescape);if(match[2]==="~="){match[3]=" "+match[3]+" "}return match.slice(0,4)},CHILD:function(match){match[1]=match[1].toLowerCase();if(match[1].slice(0,3)==="nth"){if(!match[3]){Sizzle.error(match[0])}match[4]=+(match[4]?match[5]+(match[6]||1):2*(match[3]==="even"||match[3]==="odd"));match[5]=+(match[7]+match[8]||match[3]==="odd")}else if(match[3]){Sizzle.error(match[0])}return match},PSEUDO:function(match){var excess,unquoted=!match[6]&&match[2];if(matchExpr["CHILD"].test(match[0])){return null}if(match[3]){match[2]=match[4]||match[5]||""}else if(unquoted&&rpseudo.test(unquoted)&&(excess=tokenize(unquoted,true))&&(excess=unquoted.indexOf(")",unquoted.length-excess)-unquoted.length)){match[0]=match[0].slice(0,excess);match[2]=unquoted.slice(0,excess)}return match.slice(0,3)}},filter:{TAG:function(nodeNameSelector){var nodeName=nodeNameSelector.replace(runescape,funescape).toLowerCase();return nodeNameSelector==="*"?function(){return true}:function(elem){return elem.nodeName&&elem.nodeName.toLowerCase()===nodeName}},CLASS:function(className){var pattern=classCache[className+" "];return pattern||(pattern=new RegExp("(^|"+whitespace+")"+className+"("+whitespace+"|$)"))&&classCache(className,function(elem){return pattern.test(typeof elem.className==="string"&&elem.className||typeof elem.getAttribute!=="undefined"&&elem.getAttribute("class")||"")})},ATTR:function(name,operator,check){return function(elem){var result=Sizzle.attr(elem,name);if(result==null){return operator==="!="}if(!operator){return true}result+="";return operator==="="?result===check:operator==="!="?result!==check:operator==="^="?check&&result.indexOf(check)===0:operator==="*="?check&&result.indexOf(check)>-1:operator==="$="?check&&result.slice(-check.length)===check:operator==="~="?(" "+result.replace(rwhitespace," ")+" ").indexOf(check)>-1:operator==="|="?result===check||result.slice(0,check.length+1)===check+"-":false}},CHILD:function(type,what,argument,first,last){var simple=type.slice(0,3)!=="nth",forward=type.slice(-4)!=="last",ofType=what==="of-type";return first===1&&last===0?function(elem){return!!elem.parentNode}:function(elem,context,xml){var cache,outerCache,node,diff,nodeIndex,start,dir=simple!==forward?"nextSibling":"previousSibling",parent=elem.parentNode,name=ofType&&elem.nodeName.toLowerCase(),useCache=!xml&&!ofType;if(parent){if(simple){while(dir){node=elem;while(node=node[dir]){if(ofType?node.nodeName.toLowerCase()===name:node.nodeType===1){return false}}start=dir=type==="only"&&!start&&"nextSibling"}return true}start=[forward?parent.firstChild:parent.lastChild];if(forward&&useCache){outerCache=parent[expando]||(parent[expando]={});cache=outerCache[type]||[];nodeIndex=cache[0]===dirruns&&cache[1];diff=cache[0]===dirruns&&cache[2];node=nodeIndex&&parent.childNodes[nodeIndex];while(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop()){if(node.nodeType===1&&++diff&&node===elem){outerCache[type]=[dirruns,nodeIndex,diff];break}}}else if(useCache&&(cache=(elem[expando]||(elem[expando]={}))[type])&&cache[0]===dirruns){diff=cache[1]}else{while(node=++nodeIndex&&node&&node[dir]||(diff=nodeIndex=0)||start.pop()){if((ofType?node.nodeName.toLowerCase()===name:node.nodeType===1)&&++diff){if(useCache){(node[expando]||(node[expando]={}))[type]=[dirruns,diff]}if(node===elem){break}}}}diff-=last;return diff===first||diff%first===0&&diff/first>=0}}},PSEUDO:function(pseudo,argument){var args,fn=Expr.pseudos[pseudo]||Expr.setFilters[pseudo.toLowerCase()]||Sizzle.error("unsupported pseudo: "+pseudo);if(fn[expando]){return fn(argument)}if(fn.length>1){args=[pseudo,pseudo,"",argument];return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase())?markFunction(function(seed,matches){var idx,matched=fn(seed,argument),i=matched.length;while(i--){idx=indexOf(seed,matched[i]);seed[idx]=!(matches[idx]=matched[i])}}):function(elem){return fn(elem,0,args)}}return fn}},pseudos:{not:markFunction(function(selector){var input=[],results=[],matcher=compile(selector.replace(rtrim,"$1"));return matcher[expando]?markFunction(function(seed,matches,context,xml){var elem,unmatched=matcher(seed,null,xml,[]),i=seed.length;while(i--){if(elem=unmatched[i]){seed[i]=!(matches[i]=elem)}}}):function(elem,context,xml){input[0]=elem;matcher(input,null,xml,results);input[0]=null;return!results.pop()}}),has:markFunction(function(selector){return function(elem){return Sizzle(selector,elem).length>0}}),contains:markFunction(function(text){text=text.replace(runescape,funescape);return function(elem){return(elem.textContent||elem.innerText||getText(elem)).indexOf(text)>-1}}),lang:markFunction(function(lang){if(!ridentifier.test(lang||"")){Sizzle.error("unsupported lang: "+lang)}lang=lang.replace(runescape,funescape).toLowerCase();return function(elem){var elemLang;do{if(elemLang=documentIsHTML?elem.lang:elem.getAttribute("xml:lang")||elem.getAttribute("lang")){elemLang=elemLang.toLowerCase();return elemLang===lang||elemLang.indexOf(lang+"-")===0}}while((elem=elem.parentNode)&&elem.nodeType===1);return false}}),target:function(elem){var hash=window.location&&window.location.hash;return hash&&hash.slice(1)===elem.id},root:function(elem){return elem===docElem},focus:function(elem){return elem===document.activeElement&&(!document.hasFocus||document.hasFocus())&&!!(elem.type||elem.href||~elem.tabIndex)},enabled:function(elem){return elem.disabled===false},disabled:function(elem){return elem.disabled===true},checked:function(elem){var nodeName=elem.nodeName.toLowerCase();return nodeName==="input"&&!!elem.checked||nodeName==="option"&&!!elem.selected},selected:function(elem){if(elem.parentNode){elem.parentNode.selectedIndex}return elem.selected===true},empty:function(elem){for(elem=elem.firstChild;elem;elem=elem.nextSibling){if(elem.nodeType<6){return false}}return true},parent:function(elem){return!Expr.pseudos["empty"](elem)},header:function(elem){return rheader.test(elem.nodeName)},input:function(elem){return rinputs.test(elem.nodeName)},button:function(elem){var name=elem.nodeName.toLowerCase();return name==="input"&&elem.type==="button"||name==="button"},text:function(elem){var attr;return elem.nodeName.toLowerCase()==="input"&&elem.type==="text"&&((attr=elem.getAttribute("type"))==null||attr.toLowerCase()==="text")},first:createPositionalPseudo(function(){return[0]}),last:createPositionalPseudo(function(matchIndexes,length){return[length-1]}),eq:createPositionalPseudo(function(matchIndexes,length,argument){return[argument<0?argument+length:argument]}),even:createPositionalPseudo(function(matchIndexes,length){var i=0;for(;i<length;i+=2){matchIndexes.push(i)}return matchIndexes}),odd:createPositionalPseudo(function(matchIndexes,length){var i=1;for(;i<length;i+=2){matchIndexes.push(i)}return matchIndexes}),lt:createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument;for(;--i>=0;){matchIndexes.push(i)}return matchIndexes}),gt:createPositionalPseudo(function(matchIndexes,length,argument){var i=argument<0?argument+length:argument;for(;++i<length;){matchIndexes.push(i)}return matchIndexes})}};Expr.pseudos["nth"]=Expr.pseudos["eq"];for(i in{radio:true,checkbox:true,file:true,password:true,image:true}){Expr.pseudos[i]=createInputPseudo(i)}for(i in{submit:true,reset:true}){Expr.pseudos[i]=createButtonPseudo(i)}function setFilters(){}setFilters.prototype=Expr.filters=Expr.pseudos;Expr.setFilters=new setFilters;tokenize=Sizzle.tokenize=function(selector,parseOnly){var matched,match,tokens,type,soFar,groups,preFilters,cached=tokenCache[selector+" "];if(cached){return parseOnly?0:cached.slice(0)}soFar=selector;groups=[];preFilters=Expr.preFilter;while(soFar){if(!matched||(match=rcomma.exec(soFar))){if(match){soFar=soFar.slice(match[0].length)||soFar}groups.push(tokens=[])}matched=false;if(match=rcombinators.exec(soFar)){matched=match.shift();tokens.push({value:matched,type:match[0].replace(rtrim," ")});soFar=soFar.slice(matched.length)}for(type in Expr.filter){if((match=matchExpr[type].exec(soFar))&&(!preFilters[type]||(match=preFilters[type](match)))){matched=match.shift();tokens.push({value:matched,type:type,matches:match});soFar=soFar.slice(matched.length)}}if(!matched){break}}return parseOnly?soFar.length:soFar?Sizzle.error(selector):tokenCache(selector,groups).slice(0)};function toSelector(tokens){var i=0,len=tokens.length,selector="";for(;i<len;i++){selector+=tokens[i].value}return selector}function addCombinator(matcher,combinator,base){var dir=combinator.dir,checkNonElements=base&&dir==="parentNode",doneName=done++;return combinator.first?function(elem,context,xml){while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){return matcher(elem,context,xml)}}}:function(elem,context,xml){var oldCache,outerCache,newCache=[dirruns,doneName];if(xml){while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){if(matcher(elem,context,xml)){return true}}}}else{while(elem=elem[dir]){if(elem.nodeType===1||checkNonElements){outerCache=elem[expando]||(elem[expando]={});if((oldCache=outerCache[dir])&&oldCache[0]===dirruns&&oldCache[1]===doneName){return newCache[2]=oldCache[2]}else{outerCache[dir]=newCache;if(newCache[2]=matcher(elem,context,xml)){return true}}}}}}}function elementMatcher(matchers){return matchers.length>1?function(elem,context,xml){var i=matchers.length;while(i--){if(!matchers[i](elem,context,xml)){return false}}return true}:matchers[0]}function multipleContexts(selector,contexts,results){var i=0,len=contexts.length;for(;i<len;i++){Sizzle(selector,contexts[i],results)}return results}function condense(unmatched,map,filter,context,xml){var elem,newUnmatched=[],i=0,len=unmatched.length,mapped=map!=null;for(;i<len;i++){if(elem=unmatched[i]){if(!filter||filter(elem,context,xml)){newUnmatched.push(elem);if(mapped){map.push(i)}}}}return newUnmatched}function setMatcher(preFilter,selector,matcher,postFilter,postFinder,postSelector){if(postFilter&&!postFilter[expando]){postFilter=setMatcher(postFilter)}if(postFinder&&!postFinder[expando]){postFinder=setMatcher(postFinder,postSelector)}return markFunction(function(seed,results,context,xml){var temp,i,elem,preMap=[],postMap=[],preexisting=results.length,elems=seed||multipleContexts(selector||"*",context.nodeType?[context]:context,[]),matcherIn=preFilter&&(seed||!selector)?condense(elems,preMap,preFilter,context,xml):elems,matcherOut=matcher?postFinder||(seed?preFilter:preexisting||postFilter)?[]:results:matcherIn;if(matcher){matcher(matcherIn,matcherOut,context,xml)}if(postFilter){temp=condense(matcherOut,postMap);postFilter(temp,[],context,xml);i=temp.length;while(i--){if(elem=temp[i]){matcherOut[postMap[i]]=!(matcherIn[postMap[i]]=elem)}}}if(seed){if(postFinder||preFilter){if(postFinder){temp=[];i=matcherOut.length;while(i--){if(elem=matcherOut[i]){temp.push(matcherIn[i]=elem)}}postFinder(null,matcherOut=[],temp,xml)}i=matcherOut.length;while(i--){if((elem=matcherOut[i])&&(temp=postFinder?indexOf(seed,elem):preMap[i])>-1){seed[temp]=!(results[temp]=elem)}}}}else{matcherOut=condense(matcherOut===results?matcherOut.splice(preexisting,matcherOut.length):matcherOut);if(postFinder){postFinder(null,results,matcherOut,xml)}else{push.apply(results,matcherOut)}}})}function matcherFromTokens(tokens){var checkContext,matcher,j,len=tokens.length,leadingRelative=Expr.relative[tokens[0].type],implicitRelative=leadingRelative||Expr.relative[" "],i=leadingRelative?1:0,matchContext=addCombinator(function(elem){return elem===checkContext},implicitRelative,true),matchAnyContext=addCombinator(function(elem){return indexOf(checkContext,elem)>-1},implicitRelative,true),matchers=[function(elem,context,xml){var ret=!leadingRelative&&(xml||context!==outermostContext)||((checkContext=context).nodeType?matchContext(elem,context,xml):matchAnyContext(elem,context,xml));checkContext=null;return ret}];for(;i<len;i++){if(matcher=Expr.relative[tokens[i].type]){matchers=[addCombinator(elementMatcher(matchers),matcher)]}else{matcher=Expr.filter[tokens[i].type].apply(null,tokens[i].matches);if(matcher[expando]){j=++i;for(;j<len;j++){if(Expr.relative[tokens[j].type]){break}}return setMatcher(i>1&&elementMatcher(matchers),i>1&&toSelector(tokens.slice(0,i-1).concat({value:tokens[i-2].type===" "?"*":""})).replace(rtrim,"$1"),matcher,i<j&&matcherFromTokens(tokens.slice(i,j)),j<len&&matcherFromTokens(tokens=tokens.slice(j)),j<len&&toSelector(tokens))}matchers.push(matcher)}}return elementMatcher(matchers)}function matcherFromGroupMatchers(elementMatchers,setMatchers){var bySet=setMatchers.length>0,byElement=elementMatchers.length>0,superMatcher=function(seed,context,xml,results,outermost){var elem,j,matcher,matchedCount=0,i="0",unmatched=seed&&[],setMatched=[],contextBackup=outermostContext,elems=seed||byElement&&Expr.find["TAG"]("*",outermost),dirrunsUnique=dirruns+=contextBackup==null?1:Math.random()||.1,len=elems.length;if(outermost){outermostContext=context!==document&&context}for(;i!==len&&(elem=elems[i])!=null;i++){if(byElement&&elem){j=0;while(matcher=elementMatchers[j++]){if(matcher(elem,context,xml)){results.push(elem);break}}if(outermost){dirruns=dirrunsUnique}}if(bySet){if(elem=!matcher&&elem){matchedCount--}if(seed){unmatched.push(elem)}}}matchedCount+=i;if(bySet&&i!==matchedCount){j=0;while(matcher=setMatchers[j++]){matcher(unmatched,setMatched,context,xml)}if(seed){if(matchedCount>0){while(i--){if(!(unmatched[i]||setMatched[i])){setMatched[i]=pop.call(results)}}}setMatched=condense(setMatched)}push.apply(results,setMatched);if(outermost&&!seed&&setMatched.length>0&&matchedCount+setMatchers.length>1){Sizzle.uniqueSort(results)}}if(outermost){dirruns=dirrunsUnique;outermostContext=contextBackup}return unmatched};return bySet?markFunction(superMatcher):superMatcher}compile=Sizzle.compile=function(selector,match){var i,setMatchers=[],elementMatchers=[],cached=compilerCache[selector+" "];if(!cached){if(!match){match=tokenize(selector)}i=match.length;while(i--){cached=matcherFromTokens(match[i]);if(cached[expando]){setMatchers.push(cached)}else{elementMatchers.push(cached)}}cached=compilerCache(selector,matcherFromGroupMatchers(elementMatchers,setMatchers));cached.selector=selector}return cached};select=Sizzle.select=function(selector,context,results,seed){var i,tokens,token,type,find,compiled=typeof selector==="function"&&selector,match=!seed&&tokenize(selector=compiled.selector||selector);results=results||[];if(match.length===1){tokens=match[0]=match[0].slice(0);if(tokens.length>2&&(token=tokens[0]).type==="ID"&&support.getById&&context.nodeType===9&&documentIsHTML&&Expr.relative[tokens[1].type]){context=(Expr.find["ID"](token.matches[0].replace(runescape,funescape),context)||[])[0];if(!context){return results}else if(compiled){context=context.parentNode}selector=selector.slice(tokens.shift().value.length)}i=matchExpr["needsContext"].test(selector)?0:tokens.length;while(i--){token=tokens[i];if(Expr.relative[type=token.type]){break}if(find=Expr.find[type]){if(seed=find(token.matches[0].replace(runescape,funescape),rsibling.test(tokens[0].type)&&testContext(context.parentNode)||context)){tokens.splice(i,1);selector=seed.length&&toSelector(tokens);if(!selector){push.apply(results,seed);return results}break}}}}(compiled||compile(selector,match))(seed,context,!documentIsHTML,results,rsibling.test(selector)&&testContext(context.parentNode)||context);return results};support.sortStable=expando.split("").sort(sortOrder).join("")===expando;support.detectDuplicates=!!hasDuplicate;setDocument();support.sortDetached=assert(function(div1){return div1.compareDocumentPosition(document.createElement("div"))&1});if(!assert(function(div){div.innerHTML="<a href='#'></a>";return div.firstChild.getAttribute("href")==="#"})){addHandle("type|href|height|width",function(elem,name,isXML){if(!isXML){return elem.getAttribute(name,name.toLowerCase()==="type"?1:2)}})}if(!support.attributes||!assert(function(div){div.innerHTML="<input/>";div.firstChild.setAttribute("value","");return div.firstChild.getAttribute("value")===""})){addHandle("value",function(elem,name,isXML){if(!isXML&&elem.nodeName.toLowerCase()==="input"){return elem.defaultValue}})}if(!assert(function(div){return div.getAttribute("disabled")==null})){addHandle(booleans,function(elem,name,isXML){var val;if(!isXML){return elem[name]===true?name.toLowerCase():(val=elem.getAttributeNode(name))&&val.specified?val.value:null}})}return Sizzle}(window);jQuery.find=Sizzle;jQuery.expr=Sizzle.selectors;jQuery.expr[":"]=jQuery.expr.pseudos;jQuery.unique=Sizzle.uniqueSort;jQuery.text=Sizzle.getText;jQuery.isXMLDoc=Sizzle.isXML;jQuery.contains=Sizzle.contains;var rneedsContext=jQuery.expr.match.needsContext;var rsingleTag=/^<(\w+)\s*\/?>(?:<\/\1>|)$/;var risSimple=/^.[^:#\[\.,]*$/;function winnow(elements,qualifier,not){if(jQuery.isFunction(qualifier)){return jQuery.grep(elements,function(elem,i){return!!qualifier.call(elem,i,elem)!==not})}if(qualifier.nodeType){return jQuery.grep(elements,function(elem){return elem===qualifier!==not})}if(typeof qualifier==="string"){if(risSimple.test(qualifier)){return jQuery.filter(qualifier,elements,not)}qualifier=jQuery.filter(qualifier,elements)}return jQuery.grep(elements,function(elem){return jQuery.inArray(elem,qualifier)>=0!==not})}jQuery.filter=function(expr,elems,not){var elem=elems[0];if(not){expr=":not("+expr+")"}return elems.length===1&&elem.nodeType===1?jQuery.find.matchesSelector(elem,expr)?[elem]:[]:jQuery.find.matches(expr,jQuery.grep(elems,function(elem){return elem.nodeType===1}))};jQuery.fn.extend({find:function(selector){var i,ret=[],self=this,len=self.length;if(typeof selector!=="string"){return this.pushStack(jQuery(selector).filter(function(){for(i=0;i<len;i++){if(jQuery.contains(self[i],this)){return true}}}))}for(i=0;i<len;i++){jQuery.find(selector,self[i],ret)}ret=this.pushStack(len>1?jQuery.unique(ret):ret);ret.selector=this.selector?this.selector+" "+selector:selector;return ret},filter:function(selector){return this.pushStack(winnow(this,selector||[],false))},not:function(selector){return this.pushStack(winnow(this,selector||[],true))},is:function(selector){return!!winnow(this,typeof selector==="string"&&rneedsContext.test(selector)?jQuery(selector):selector||[],false).length}});var rootjQuery,document=window.document,rquickExpr=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,init=jQuery.fn.init=function(selector,context){var match,elem;if(!selector){return this}if(typeof selector==="string"){if(selector.charAt(0)==="<"&&selector.charAt(selector.length-1)===">"&&selector.length>=3){match=[null,selector,null]}else{match=rquickExpr.exec(selector)}if(match&&(match[1]||!context)){if(match[1]){context=context instanceof jQuery?context[0]:context;jQuery.merge(this,jQuery.parseHTML(match[1],context&&context.nodeType?context.ownerDocument||context:document,true));if(rsingleTag.test(match[1])&&jQuery.isPlainObject(context)){for(match in context){if(jQuery.isFunction(this[match])){this[match](context[match])}else{this.attr(match,context[match])}}}return this}else{elem=document.getElementById(match[2]);if(elem&&elem.parentNode){if(elem.id!==match[2]){return rootjQuery.find(selector)}this.length=1;this[0]=elem}this.context=document;this.selector=selector;return this}}else if(!context||context.jquery){return(context||rootjQuery).find(selector)}else{return this.constructor(context).find(selector)}}else if(selector.nodeType){this.context=this[0]=selector;this.length=1;return this}else if(jQuery.isFunction(selector)){return typeof rootjQuery.ready!=="undefined"?rootjQuery.ready(selector):selector(jQuery)}if(selector.selector!==undefined){this.selector=selector.selector;this.context=selector.context}return jQuery.makeArray(selector,this)};init.prototype=jQuery.fn;rootjQuery=jQuery(document);var rparentsprev=/^(?:parents|prev(?:Until|All))/,guaranteedUnique={children:true,contents:true,next:true,prev:true};jQuery.extend({dir:function(elem,dir,until){var matched=[],cur=elem[dir];while(cur&&cur.nodeType!==9&&(until===undefined||cur.nodeType!==1||!jQuery(cur).is(until))){if(cur.nodeType===1){matched.push(cur)}cur=cur[dir]}return matched},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType===1&&n!==elem){r.push(n); | ||
19 | }}return r}});jQuery.fn.extend({has:function(target){var i,targets=jQuery(target,this),len=targets.length;return this.filter(function(){for(i=0;i<len;i++){if(jQuery.contains(this,targets[i])){return true}}})},closest:function(selectors,context){var cur,i=0,l=this.length,matched=[],pos=rneedsContext.test(selectors)||typeof selectors!=="string"?jQuery(selectors,context||this.context):0;for(;i<l;i++){for(cur=this[i];cur&&cur!==context;cur=cur.parentNode){if(cur.nodeType<11&&(pos?pos.index(cur)>-1:cur.nodeType===1&&jQuery.find.matchesSelector(cur,selectors))){matched.push(cur);break}}}return this.pushStack(matched.length>1?jQuery.unique(matched):matched)},index:function(elem){if(!elem){return this[0]&&this[0].parentNode?this.first().prevAll().length:-1}if(typeof elem==="string"){return jQuery.inArray(this[0],jQuery(elem))}return jQuery.inArray(elem.jquery?elem[0]:elem,this)},add:function(selector,context){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),jQuery(selector,context))))},addBack:function(selector){return this.add(selector==null?this.prevObject:this.prevObject.filter(selector))}});function sibling(cur,dir){do{cur=cur[dir]}while(cur&&cur.nodeType!==1);return cur}jQuery.each({parent:function(elem){var parent=elem.parentNode;return parent&&parent.nodeType!==11?parent:null},parents:function(elem){return jQuery.dir(elem,"parentNode")},parentsUntil:function(elem,i,until){return jQuery.dir(elem,"parentNode",until)},next:function(elem){return sibling(elem,"nextSibling")},prev:function(elem){return sibling(elem,"previousSibling")},nextAll:function(elem){return jQuery.dir(elem,"nextSibling")},prevAll:function(elem){return jQuery.dir(elem,"previousSibling")},nextUntil:function(elem,i,until){return jQuery.dir(elem,"nextSibling",until)},prevUntil:function(elem,i,until){return jQuery.dir(elem,"previousSibling",until)},siblings:function(elem){return jQuery.sibling((elem.parentNode||{}).firstChild,elem)},children:function(elem){return jQuery.sibling(elem.firstChild)},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.merge([],elem.childNodes)}},function(name,fn){jQuery.fn[name]=function(until,selector){var ret=jQuery.map(this,fn,until);if(name.slice(-5)!=="Until"){selector=until}if(selector&&typeof selector==="string"){ret=jQuery.filter(selector,ret)}if(this.length>1){if(!guaranteedUnique[name]){ret=jQuery.unique(ret)}if(rparentsprev.test(name)){ret=ret.reverse()}}return this.pushStack(ret)}});var rnotwhite=/\S+/g;var optionsCache={};function createOptions(options){var object=optionsCache[options]={};jQuery.each(options.match(rnotwhite)||[],function(_,flag){object[flag]=true});return object}jQuery.Callbacks=function(options){options=typeof options==="string"?optionsCache[options]||createOptions(options):jQuery.extend({},options);var firing,memory,fired,firingLength,firingIndex,firingStart,list=[],stack=!options.once&&[],fire=function(data){memory=options.memory&&data;fired=true;firingIndex=firingStart||0;firingStart=0;firingLength=list.length;firing=true;for(;list&&firingIndex<firingLength;firingIndex++){if(list[firingIndex].apply(data[0],data[1])===false&&options.stopOnFalse){memory=false;break}}firing=false;if(list){if(stack){if(stack.length){fire(stack.shift())}}else if(memory){list=[]}else{self.disable()}}},self={add:function(){if(list){var start=list.length;(function add(args){jQuery.each(args,function(_,arg){var type=jQuery.type(arg);if(type==="function"){if(!options.unique||!self.has(arg)){list.push(arg)}}else if(arg&&arg.length&&type!=="string"){add(arg)}})})(arguments);if(firing){firingLength=list.length}else if(memory){firingStart=start;fire(memory)}}return this},remove:function(){if(list){jQuery.each(arguments,function(_,arg){var index;while((index=jQuery.inArray(arg,list,index))>-1){list.splice(index,1);if(firing){if(index<=firingLength){firingLength--}if(index<=firingIndex){firingIndex--}}}})}return this},has:function(fn){return fn?jQuery.inArray(fn,list)>-1:!!(list&&list.length)},empty:function(){list=[];firingLength=0;return this},disable:function(){list=stack=memory=undefined;return this},disabled:function(){return!list},lock:function(){stack=undefined;if(!memory){self.disable()}return this},locked:function(){return!stack},fireWith:function(context,args){if(list&&(!fired||stack)){args=args||[];args=[context,args.slice?args.slice():args];if(firing){stack.push(args)}else{fire(args)}}return this},fire:function(){self.fireWith(this,arguments);return this},fired:function(){return!!fired}};return self};jQuery.extend({Deferred:function(func){var tuples=[["resolve","done",jQuery.Callbacks("once memory"),"resolved"],["reject","fail",jQuery.Callbacks("once memory"),"rejected"],["notify","progress",jQuery.Callbacks("memory")]],state="pending",promise={state:function(){return state},always:function(){deferred.done(arguments).fail(arguments);return this},then:function(){var fns=arguments;return jQuery.Deferred(function(newDefer){jQuery.each(tuples,function(i,tuple){var fn=jQuery.isFunction(fns[i])&&fns[i];deferred[tuple[1]](function(){var returned=fn&&fn.apply(this,arguments);if(returned&&jQuery.isFunction(returned.promise)){returned.promise().done(newDefer.resolve).fail(newDefer.reject).progress(newDefer.notify)}else{newDefer[tuple[0]+"With"](this===promise?newDefer.promise():this,fn?[returned]:arguments)}})});fns=null}).promise()},promise:function(obj){return obj!=null?jQuery.extend(obj,promise):promise}},deferred={};promise.pipe=promise.then;jQuery.each(tuples,function(i,tuple){var list=tuple[2],stateString=tuple[3];promise[tuple[1]]=list.add;if(stateString){list.add(function(){state=stateString},tuples[i^1][2].disable,tuples[2][2].lock)}deferred[tuple[0]]=function(){deferred[tuple[0]+"With"](this===deferred?promise:this,arguments);return this};deferred[tuple[0]+"With"]=list.fireWith});promise.promise(deferred);if(func){func.call(deferred,deferred)}return deferred},when:function(subordinate){var i=0,resolveValues=slice.call(arguments),length=resolveValues.length,remaining=length!==1||subordinate&&jQuery.isFunction(subordinate.promise)?length:0,deferred=remaining===1?subordinate:jQuery.Deferred(),updateFunc=function(i,contexts,values){return function(value){contexts[i]=this;values[i]=arguments.length>1?slice.call(arguments):value;if(values===progressValues){deferred.notifyWith(contexts,values)}else if(!--remaining){deferred.resolveWith(contexts,values)}}},progressValues,progressContexts,resolveContexts;if(length>1){progressValues=new Array(length);progressContexts=new Array(length);resolveContexts=new Array(length);for(;i<length;i++){if(resolveValues[i]&&jQuery.isFunction(resolveValues[i].promise)){resolveValues[i].promise().done(updateFunc(i,resolveContexts,resolveValues)).fail(deferred.reject).progress(updateFunc(i,progressContexts,progressValues))}else{--remaining}}}if(!remaining){deferred.resolveWith(resolveContexts,resolveValues)}return deferred.promise()}});var readyList;jQuery.fn.ready=function(fn){jQuery.ready.promise().done(fn);return this};jQuery.extend({isReady:false,readyWait:1,holdReady:function(hold){if(hold){jQuery.readyWait++}else{jQuery.ready(true)}},ready:function(wait){if(wait===true?--jQuery.readyWait:jQuery.isReady){return}if(!document.body){return setTimeout(jQuery.ready)}jQuery.isReady=true;if(wait!==true&&--jQuery.readyWait>0){return}readyList.resolveWith(document,[jQuery]);if(jQuery.fn.triggerHandler){jQuery(document).triggerHandler("ready");jQuery(document).off("ready")}}});function detach(){if(document.addEventListener){document.removeEventListener("DOMContentLoaded",completed,false);window.removeEventListener("load",completed,false)}else{document.detachEvent("onreadystatechange",completed);window.detachEvent("onload",completed)}}function completed(){if(document.addEventListener||event.type==="load"||document.readyState==="complete"){detach();jQuery.ready()}}jQuery.ready.promise=function(obj){if(!readyList){readyList=jQuery.Deferred();if(document.readyState==="complete"){setTimeout(jQuery.ready)}else if(document.addEventListener){document.addEventListener("DOMContentLoaded",completed,false);window.addEventListener("load",completed,false)}else{document.attachEvent("onreadystatechange",completed);window.attachEvent("onload",completed);var top=false;try{top=window.frameElement==null&&document.documentElement}catch(e){}if(top&&top.doScroll){(function doScrollCheck(){if(!jQuery.isReady){try{top.doScroll("left")}catch(e){return setTimeout(doScrollCheck,50)}detach();jQuery.ready()}})()}}}return readyList.promise(obj)};var strundefined=typeof undefined;var i;for(i in jQuery(support)){break}support.ownLast=i!=="0";support.inlineBlockNeedsLayout=false;jQuery(function(){var val,div,body,container;body=document.getElementsByTagName("body")[0];if(!body||!body.style){return}div=document.createElement("div");container=document.createElement("div");container.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px";body.appendChild(container).appendChild(div);if(typeof div.style.zoom!==strundefined){div.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1";support.inlineBlockNeedsLayout=val=div.offsetWidth===3;if(val){body.style.zoom=1}}body.removeChild(container)});(function(){var div=document.createElement("div");if(support.deleteExpando==null){support.deleteExpando=true;try{delete div.test}catch(e){support.deleteExpando=false}}div=null})();jQuery.acceptData=function(elem){var noData=jQuery.noData[(elem.nodeName+" ").toLowerCase()],nodeType=+elem.nodeType||1;return nodeType!==1&&nodeType!==9?false:!noData||noData!==true&&elem.getAttribute("classid")===noData};var rbrace=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,rmultiDash=/([A-Z])/g;function dataAttr(elem,key,data){if(data===undefined&&elem.nodeType===1){var name="data-"+key.replace(rmultiDash,"-$1").toLowerCase();data=elem.getAttribute(name);if(typeof data==="string"){try{data=data==="true"?true:data==="false"?false:data==="null"?null:+data+""===data?+data:rbrace.test(data)?jQuery.parseJSON(data):data}catch(e){}jQuery.data(elem,key,data)}else{data=undefined}}return data}function isEmptyDataObject(obj){var name;for(name in obj){if(name==="data"&&jQuery.isEmptyObject(obj[name])){continue}if(name!=="toJSON"){return false}}return true}function internalData(elem,name,data,pvt){if(!jQuery.acceptData(elem)){return}var ret,thisCache,internalKey=jQuery.expando,isNode=elem.nodeType,cache=isNode?jQuery.cache:elem,id=isNode?elem[internalKey]:elem[internalKey]&&internalKey;if((!id||!cache[id]||!pvt&&!cache[id].data)&&data===undefined&&typeof name==="string"){return}if(!id){if(isNode){id=elem[internalKey]=deletedIds.pop()||jQuery.guid++}else{id=internalKey}}if(!cache[id]){cache[id]=isNode?{}:{toJSON:jQuery.noop}}if(typeof name==="object"||typeof name==="function"){if(pvt){cache[id]=jQuery.extend(cache[id],name)}else{cache[id].data=jQuery.extend(cache[id].data,name)}}thisCache=cache[id];if(!pvt){if(!thisCache.data){thisCache.data={}}thisCache=thisCache.data}if(data!==undefined){thisCache[jQuery.camelCase(name)]=data}if(typeof name==="string"){ret=thisCache[name];if(ret==null){ret=thisCache[jQuery.camelCase(name)]}}else{ret=thisCache}return ret}function internalRemoveData(elem,name,pvt){if(!jQuery.acceptData(elem)){return}var thisCache,i,isNode=elem.nodeType,cache=isNode?jQuery.cache:elem,id=isNode?elem[jQuery.expando]:jQuery.expando;if(!cache[id]){return}if(name){thisCache=pvt?cache[id]:cache[id].data;if(thisCache){if(!jQuery.isArray(name)){if(name in thisCache){name=[name]}else{name=jQuery.camelCase(name);if(name in thisCache){name=[name]}else{name=name.split(" ")}}}else{name=name.concat(jQuery.map(name,jQuery.camelCase))}i=name.length;while(i--){delete thisCache[name[i]]}if(pvt?!isEmptyDataObject(thisCache):!jQuery.isEmptyObject(thisCache)){return}}}if(!pvt){delete cache[id].data;if(!isEmptyDataObject(cache[id])){return}}if(isNode){jQuery.cleanData([elem],true)}else if(support.deleteExpando||cache!=cache.window){delete cache[id]}else{cache[id]=null}}jQuery.extend({cache:{},noData:{"applet ":true,"embed ":true,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(elem){elem=elem.nodeType?jQuery.cache[elem[jQuery.expando]]:elem[jQuery.expando];return!!elem&&!isEmptyDataObject(elem)},data:function(elem,name,data){return internalData(elem,name,data)},removeData:function(elem,name){return internalRemoveData(elem,name)},_data:function(elem,name,data){return internalData(elem,name,data,true)},_removeData:function(elem,name){return internalRemoveData(elem,name,true)}});jQuery.fn.extend({data:function(key,value){var i,name,data,elem=this[0],attrs=elem&&elem.attributes;if(key===undefined){if(this.length){data=jQuery.data(elem);if(elem.nodeType===1&&!jQuery._data(elem,"parsedAttrs")){i=attrs.length;while(i--){if(attrs[i]){name=attrs[i].name;if(name.indexOf("data-")===0){name=jQuery.camelCase(name.slice(5));dataAttr(elem,name,data[name])}}}jQuery._data(elem,"parsedAttrs",true)}}return data}if(typeof key==="object"){return this.each(function(){jQuery.data(this,key)})}return arguments.length>1?this.each(function(){jQuery.data(this,key,value)}):elem?dataAttr(elem,key,jQuery.data(elem,key)):undefined},removeData:function(key){return this.each(function(){jQuery.removeData(this,key)})}});jQuery.extend({queue:function(elem,type,data){var queue;if(elem){type=(type||"fx")+"queue";queue=jQuery._data(elem,type);if(data){if(!queue||jQuery.isArray(data)){queue=jQuery._data(elem,type,jQuery.makeArray(data))}else{queue.push(data)}}return queue||[]}},dequeue:function(elem,type){type=type||"fx";var queue=jQuery.queue(elem,type),startLength=queue.length,fn=queue.shift(),hooks=jQuery._queueHooks(elem,type),next=function(){jQuery.dequeue(elem,type)};if(fn==="inprogress"){fn=queue.shift();startLength--}if(fn){if(type==="fx"){queue.unshift("inprogress")}delete hooks.stop;fn.call(elem,next,hooks)}if(!startLength&&hooks){hooks.empty.fire()}},_queueHooks:function(elem,type){var key=type+"queueHooks";return jQuery._data(elem,key)||jQuery._data(elem,key,{empty:jQuery.Callbacks("once memory").add(function(){jQuery._removeData(elem,type+"queue");jQuery._removeData(elem,key)})})}});jQuery.fn.extend({queue:function(type,data){var setter=2;if(typeof type!=="string"){data=type;type="fx";setter--}if(arguments.length<setter){return jQuery.queue(this[0],type)}return data===undefined?this:this.each(function(){var queue=jQuery.queue(this,type,data);jQuery._queueHooks(this,type);if(type==="fx"&&queue[0]!=="inprogress"){jQuery.dequeue(this,type)}})},dequeue:function(type){return this.each(function(){jQuery.dequeue(this,type)})},clearQueue:function(type){return this.queue(type||"fx",[])},promise:function(type,obj){var tmp,count=1,defer=jQuery.Deferred(),elements=this,i=this.length,resolve=function(){if(!--count){defer.resolveWith(elements,[elements])}};if(typeof type!=="string"){obj=type;type=undefined}type=type||"fx";while(i--){tmp=jQuery._data(elements[i],type+"queueHooks");if(tmp&&tmp.empty){count++;tmp.empty.add(resolve)}}resolve();return defer.promise(obj)}});var pnum=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source;var cssExpand=["Top","Right","Bottom","Left"];var isHidden=function(elem,el){elem=el||elem;return jQuery.css(elem,"display")==="none"||!jQuery.contains(elem.ownerDocument,elem)};var access=jQuery.access=function(elems,fn,key,value,chainable,emptyGet,raw){var i=0,length=elems.length,bulk=key==null;if(jQuery.type(key)==="object"){chainable=true;for(i in key){jQuery.access(elems,fn,i,key[i],true,emptyGet,raw)}}else if(value!==undefined){chainable=true;if(!jQuery.isFunction(value)){raw=true}if(bulk){if(raw){fn.call(elems,value);fn=null}else{bulk=fn;fn=function(elem,key,value){return bulk.call(jQuery(elem),value)}}}if(fn){for(;i<length;i++){fn(elems[i],key,raw?value:value.call(elems[i],i,fn(elems[i],key)))}}}return chainable?elems:bulk?fn.call(elems):length?fn(elems[0],key):emptyGet};var rcheckableType=/^(?:checkbox|radio)$/i;(function(){var input=document.createElement("input"),div=document.createElement("div"),fragment=document.createDocumentFragment();div.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";support.leadingWhitespace=div.firstChild.nodeType===3;support.tbody=!div.getElementsByTagName("tbody").length;support.htmlSerialize=!!div.getElementsByTagName("link").length;support.html5Clone=document.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>";input.type="checkbox";input.checked=true;fragment.appendChild(input);support.appendChecked=input.checked;div.innerHTML="<textarea>x</textarea>";support.noCloneChecked=!!div.cloneNode(true).lastChild.defaultValue;fragment.appendChild(div);div.innerHTML="<input type='radio' checked='checked' name='t'/>";support.checkClone=div.cloneNode(true).cloneNode(true).lastChild.checked;support.noCloneEvent=true;if(div.attachEvent){div.attachEvent("onclick",function(){support.noCloneEvent=false});div.cloneNode(true).click()}if(support.deleteExpando==null){support.deleteExpando=true;try{delete div.test}catch(e){support.deleteExpando=false}}})();(function(){var i,eventName,div=document.createElement("div");for(i in{submit:true,change:true,focusin:true}){eventName="on"+i;if(!(support[i+"Bubbles"]=eventName in window)){div.setAttribute(eventName,"t");support[i+"Bubbles"]=div.attributes[eventName].expando===false}}div=null})();var rformElems=/^(?:input|select|textarea)$/i,rkeyEvent=/^key/,rmouseEvent=/^(?:mouse|pointer|contextmenu)|click/,rfocusMorph=/^(?:focusinfocus|focusoutblur)$/,rtypenamespace=/^([^.]*)(?:\.(.+)|)$/;function returnTrue(){return true}function returnFalse(){return false}function safeActiveElement(){try{return document.activeElement}catch(err){}}jQuery.event={global:{},add:function(elem,types,handler,data,selector){var tmp,events,t,handleObjIn,special,eventHandle,handleObj,handlers,type,namespaces,origType,elemData=jQuery._data(elem);if(!elemData){return}if(handler.handler){handleObjIn=handler;handler=handleObjIn.handler;selector=handleObjIn.selector}if(!handler.guid){handler.guid=jQuery.guid++}if(!(events=elemData.events)){events=elemData.events={}}if(!(eventHandle=elemData.handle)){eventHandle=elemData.handle=function(e){return typeof jQuery!==strundefined&&(!e||jQuery.event.triggered!==e.type)?jQuery.event.dispatch.apply(eventHandle.elem,arguments):undefined};eventHandle.elem=elem}types=(types||"").match(rnotwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();if(!type){continue}special=jQuery.event.special[type]||{};type=(selector?special.delegateType:special.bindType)||type;special=jQuery.event.special[type]||{};handleObj=jQuery.extend({type:type,origType:origType,data:data,handler:handler,guid:handler.guid,selector:selector,needsContext:selector&&jQuery.expr.match.needsContext.test(selector),namespace:namespaces.join(".")},handleObjIn);if(!(handlers=events[type])){handlers=events[type]=[];handlers.delegateCount=0;if(!special.setup||special.setup.call(elem,data,namespaces,eventHandle)===false){if(elem.addEventListener){elem.addEventListener(type,eventHandle,false)}else if(elem.attachEvent){elem.attachEvent("on"+type,eventHandle)}}}if(special.add){special.add.call(elem,handleObj);if(!handleObj.handler.guid){handleObj.handler.guid=handler.guid}}if(selector){handlers.splice(handlers.delegateCount++,0,handleObj)}else{handlers.push(handleObj)}jQuery.event.global[type]=true}elem=null},remove:function(elem,types,handler,selector,mappedTypes){var j,handleObj,tmp,origCount,t,events,special,handlers,type,namespaces,origType,elemData=jQuery.hasData(elem)&&jQuery._data(elem);if(!elemData||!(events=elemData.events)){return}types=(types||"").match(rnotwhite)||[""];t=types.length;while(t--){tmp=rtypenamespace.exec(types[t])||[];type=origType=tmp[1];namespaces=(tmp[2]||"").split(".").sort();if(!type){for(type in events){jQuery.event.remove(elem,type+types[t],handler,selector,true)}continue}special=jQuery.event.special[type]||{};type=(selector?special.delegateType:special.bindType)||type;handlers=events[type]||[];tmp=tmp[2]&&new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)");origCount=j=handlers.length;while(j--){handleObj=handlers[j];if((mappedTypes||origType===handleObj.origType)&&(!handler||handler.guid===handleObj.guid)&&(!tmp||tmp.test(handleObj.namespace))&&(!selector||selector===handleObj.selector||selector==="**"&&handleObj.selector)){handlers.splice(j,1);if(handleObj.selector){handlers.delegateCount--}if(special.remove){special.remove.call(elem,handleObj)}}}if(origCount&&!handlers.length){if(!special.teardown||special.teardown.call(elem,namespaces,elemData.handle)===false){jQuery.removeEvent(elem,type,elemData.handle)}delete events[type]}}if(jQuery.isEmptyObject(events)){delete elemData.handle;jQuery._removeData(elem,"events")}},trigger:function(event,data,elem,onlyHandlers){var handle,ontype,cur,bubbleType,special,tmp,i,eventPath=[elem||document],type=hasOwn.call(event,"type")?event.type:event,namespaces=hasOwn.call(event,"namespace")?event.namespace.split("."):[];cur=tmp=elem=elem||document;if(elem.nodeType===3||elem.nodeType===8){return}if(rfocusMorph.test(type+jQuery.event.triggered)){return}if(type.indexOf(".")>=0){namespaces=type.split(".");type=namespaces.shift();namespaces.sort()}ontype=type.indexOf(":")<0&&"on"+type;event=event[jQuery.expando]?event:new jQuery.Event(type,typeof event==="object"&&event);event.isTrigger=onlyHandlers?2:3;event.namespace=namespaces.join(".");event.namespace_re=event.namespace?new RegExp("(^|\\.)"+namespaces.join("\\.(?:.*\\.|)")+"(\\.|$)"):null;event.result=undefined;if(!event.target){event.target=elem}data=data==null?[event]:jQuery.makeArray(data,[event]);special=jQuery.event.special[type]||{};if(!onlyHandlers&&special.trigger&&special.trigger.apply(elem,data)===false){return}if(!onlyHandlers&&!special.noBubble&&!jQuery.isWindow(elem)){bubbleType=special.delegateType||type;if(!rfocusMorph.test(bubbleType+type)){cur=cur.parentNode}for(;cur;cur=cur.parentNode){eventPath.push(cur);tmp=cur}if(tmp===(elem.ownerDocument||document)){eventPath.push(tmp.defaultView||tmp.parentWindow||window)}}i=0;while((cur=eventPath[i++])&&!event.isPropagationStopped()){event.type=i>1?bubbleType:special.bindType||type;handle=(jQuery._data(cur,"events")||{})[event.type]&&jQuery._data(cur,"handle");if(handle){handle.apply(cur,data)}handle=ontype&&cur[ontype];if(handle&&handle.apply&&jQuery.acceptData(cur)){event.result=handle.apply(cur,data);if(event.result===false){event.preventDefault()}}}event.type=type;if(!onlyHandlers&&!event.isDefaultPrevented()){if((!special._default||special._default.apply(eventPath.pop(),data)===false)&&jQuery.acceptData(elem)){if(ontype&&elem[type]&&!jQuery.isWindow(elem)){tmp=elem[ontype];if(tmp){elem[ontype]=null}jQuery.event.triggered=type;try{elem[type]()}catch(e){}jQuery.event.triggered=undefined;if(tmp){elem[ontype]=tmp}}}}return event.result},dispatch:function(event){event=jQuery.event.fix(event);var i,ret,handleObj,matched,j,handlerQueue=[],args=slice.call(arguments),handlers=(jQuery._data(this,"events")||{})[event.type]||[],special=jQuery.event.special[event.type]||{};args[0]=event;event.delegateTarget=this;if(special.preDispatch&&special.preDispatch.call(this,event)===false){return}handlerQueue=jQuery.event.handlers.call(this,event,handlers);i=0;while((matched=handlerQueue[i++])&&!event.isPropagationStopped()){event.currentTarget=matched.elem;j=0;while((handleObj=matched.handlers[j++])&&!event.isImmediatePropagationStopped()){if(!event.namespace_re||event.namespace_re.test(handleObj.namespace)){event.handleObj=handleObj;event.data=handleObj.data;ret=((jQuery.event.special[handleObj.origType]||{}).handle||handleObj.handler).apply(matched.elem,args);if(ret!==undefined){if((event.result=ret)===false){event.preventDefault();event.stopPropagation()}}}}}if(special.postDispatch){special.postDispatch.call(this,event)}return event.result},handlers:function(event,handlers){var sel,handleObj,matches,i,handlerQueue=[],delegateCount=handlers.delegateCount,cur=event.target;if(delegateCount&&cur.nodeType&&(!event.button||event.type!=="click")){for(;cur!=this;cur=cur.parentNode||this){if(cur.nodeType===1&&(cur.disabled!==true||event.type!=="click")){matches=[];for(i=0;i<delegateCount;i++){handleObj=handlers[i];sel=handleObj.selector+" ";if(matches[sel]===undefined){matches[sel]=handleObj.needsContext?jQuery(sel,this).index(cur)>=0:jQuery.find(sel,this,null,[cur]).length}if(matches[sel]){matches.push(handleObj)}}if(matches.length){handlerQueue.push({elem:cur,handlers:matches})}}}}if(delegateCount<handlers.length){handlerQueue.push({elem:this,handlers:handlers.slice(delegateCount)})}return handlerQueue},fix:function(event){if(event[jQuery.expando]){return event}var i,prop,copy,type=event.type,originalEvent=event,fixHook=this.fixHooks[type];if(!fixHook){this.fixHooks[type]=fixHook=rmouseEvent.test(type)?this.mouseHooks:rkeyEvent.test(type)?this.keyHooks:{}}copy=fixHook.props?this.props.concat(fixHook.props):this.props;event=new jQuery.Event(originalEvent);i=copy.length;while(i--){prop=copy[i];event[prop]=originalEvent[prop]}if(!event.target){event.target=originalEvent.srcElement||document}if(event.target.nodeType===3){event.target=event.target.parentNode}event.metaKey=!!event.metaKey;return fixHook.filter?fixHook.filter(event,originalEvent):event},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(event,original){if(event.which==null){event.which=original.charCode!=null?original.charCode:original.keyCode}return event}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(event,original){var body,eventDoc,doc,button=original.button,fromElement=original.fromElement;if(event.pageX==null&&original.clientX!=null){eventDoc=event.target.ownerDocument||document;doc=eventDoc.documentElement;body=eventDoc.body;event.pageX=original.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc&&doc.clientLeft||body&&body.clientLeft||0);event.pageY=original.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc&&doc.clientTop||body&&body.clientTop||0)}if(!event.relatedTarget&&fromElement){event.relatedTarget=fromElement===event.target?original.toElement:fromElement}if(!event.which&&button!==undefined){event.which=button&1?1:button&2?3:button&4?2:0}return event}},special:{load:{noBubble:true},focus:{trigger:function(){if(this!==safeActiveElement()&&this.focus){try{this.focus();return false}catch(e){}}},delegateType:"focusin"},blur:{trigger:function(){if(this===safeActiveElement()&&this.blur){this.blur();return false}},delegateType:"focusout"},click:{trigger:function(){if(jQuery.nodeName(this,"input")&&this.type==="checkbox"&&this.click){this.click();return false}},_default:function(event){return jQuery.nodeName(event.target,"a")}},beforeunload:{postDispatch:function(event){if(event.result!==undefined&&event.originalEvent){event.originalEvent.returnValue=event.result}}}},simulate:function(type,elem,event,bubble){var e=jQuery.extend(new jQuery.Event,event,{type:type,isSimulated:true,originalEvent:{}});if(bubble){jQuery.event.trigger(e,null,elem)}else{jQuery.event.dispatch.call(elem,e)}if(e.isDefaultPrevented()){event.preventDefault()}}};jQuery.removeEvent=document.removeEventListener?function(elem,type,handle){if(elem.removeEventListener){elem.removeEventListener(type,handle,false)}}:function(elem,type,handle){var name="on"+type;if(elem.detachEvent){if(typeof elem[name]===strundefined){elem[name]=null}elem.detachEvent(name,handle)}};jQuery.Event=function(src,props){if(!(this instanceof jQuery.Event)){return new jQuery.Event(src,props)}if(src&&src.type){this.originalEvent=src;this.type=src.type;this.isDefaultPrevented=src.defaultPrevented||src.defaultPrevented===undefined&&src.returnValue===false?returnTrue:returnFalse}else{this.type=src}if(props){jQuery.extend(this,props)}this.timeStamp=src&&src.timeStamp||jQuery.now();this[jQuery.expando]=true};jQuery.Event.prototype={isDefaultPrevented:returnFalse,isPropagationStopped:returnFalse,isImmediatePropagationStopped:returnFalse,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=returnTrue;if(!e){return}if(e.preventDefault){e.preventDefault()}else{e.returnValue=false}},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=returnTrue;if(!e){return}if(e.stopPropagation){e.stopPropagation()}e.cancelBubble=true},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=returnTrue;if(e&&e.stopImmediatePropagation){e.stopImmediatePropagation()}this.stopPropagation()}};jQuery.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(orig,fix){jQuery.event.special[orig]={delegateType:fix,bindType:fix,handle:function(event){var ret,target=this,related=event.relatedTarget,handleObj=event.handleObj;if(!related||related!==target&&!jQuery.contains(target,related)){event.type=handleObj.origType;ret=handleObj.handler.apply(this,arguments);event.type=fix}return ret}}});if(!support.submitBubbles){jQuery.event.special.submit={setup:function(){if(jQuery.nodeName(this,"form")){return false}jQuery.event.add(this,"click._submit keypress._submit",function(e){var elem=e.target,form=jQuery.nodeName(elem,"input")||jQuery.nodeName(elem,"button")?elem.form:undefined;if(form&&!jQuery._data(form,"submitBubbles")){jQuery.event.add(form,"submit._submit",function(event){event._submit_bubble=true});jQuery._data(form,"submitBubbles",true)}})},postDispatch:function(event){if(event._submit_bubble){delete event._submit_bubble;if(this.parentNode&&!event.isTrigger){jQuery.event.simulate("submit",this.parentNode,event,true)}}},teardown:function(){if(jQuery.nodeName(this,"form")){return false}jQuery.event.remove(this,"._submit")}}}if(!support.changeBubbles){jQuery.event.special.change={setup:function(){if(rformElems.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){jQuery.event.add(this,"propertychange._change",function(event){if(event.originalEvent.propertyName==="checked"){this._just_changed=true}});jQuery.event.add(this,"click._change",function(event){if(this._just_changed&&!event.isTrigger){this._just_changed=false}jQuery.event.simulate("change",this,event,true)})}return false}jQuery.event.add(this,"beforeactivate._change",function(e){var elem=e.target;if(rformElems.test(elem.nodeName)&&!jQuery._data(elem,"changeBubbles")){jQuery.event.add(elem,"change._change",function(event){if(this.parentNode&&!event.isSimulated&&!event.isTrigger){jQuery.event.simulate("change",this.parentNode,event,true)}});jQuery._data(elem,"changeBubbles",true)}})},handle:function(event){var elem=event.target;if(this!==elem||event.isSimulated||event.isTrigger||elem.type!=="radio"&&elem.type!=="checkbox"){return event.handleObj.handler.apply(this,arguments)}},teardown:function(){jQuery.event.remove(this,"._change");return!rformElems.test(this.nodeName)}}}if(!support.focusinBubbles){jQuery.each({focus:"focusin",blur:"focusout"},function(orig,fix){var handler=function(event){jQuery.event.simulate(fix,event.target,jQuery.event.fix(event),true)};jQuery.event.special[fix]={setup:function(){var doc=this.ownerDocument||this,attaches=jQuery._data(doc,fix);if(!attaches){doc.addEventListener(orig,handler,true)}jQuery._data(doc,fix,(attaches||0)+1)},teardown:function(){var doc=this.ownerDocument||this,attaches=jQuery._data(doc,fix)-1;if(!attaches){doc.removeEventListener(orig,handler,true);jQuery._removeData(doc,fix)}else{jQuery._data(doc,fix,attaches)}}}})}jQuery.fn.extend({on:function(types,selector,data,fn,one){var type,origFn;if(typeof types==="object"){if(typeof selector!=="string"){data=data||selector;selector=undefined}for(type in types){this.on(type,selector,data,types[type],one); | ||
20 | }return this}if(data==null&&fn==null){fn=selector;data=selector=undefined}else if(fn==null){if(typeof selector==="string"){fn=data;data=undefined}else{fn=data;data=selector;selector=undefined}}if(fn===false){fn=returnFalse}else if(!fn){return this}if(one===1){origFn=fn;fn=function(event){jQuery().off(event);return origFn.apply(this,arguments)};fn.guid=origFn.guid||(origFn.guid=jQuery.guid++)}return this.each(function(){jQuery.event.add(this,types,fn,data,selector)})},one:function(types,selector,data,fn){return this.on(types,selector,data,fn,1)},off:function(types,selector,fn){var handleObj,type;if(types&&types.preventDefault&&types.handleObj){handleObj=types.handleObj;jQuery(types.delegateTarget).off(handleObj.namespace?handleObj.origType+"."+handleObj.namespace:handleObj.origType,handleObj.selector,handleObj.handler);return this}if(typeof types==="object"){for(type in types){this.off(type,selector,types[type])}return this}if(selector===false||typeof selector==="function"){fn=selector;selector=undefined}if(fn===false){fn=returnFalse}return this.each(function(){jQuery.event.remove(this,types,fn,selector)})},trigger:function(type,data){return this.each(function(){jQuery.event.trigger(type,data,this)})},triggerHandler:function(type,data){var elem=this[0];if(elem){return jQuery.event.trigger(type,data,elem,true)}}});function createSafeFragment(document){var list=nodeNames.split("|"),safeFrag=document.createDocumentFragment();if(safeFrag.createElement){while(list.length){safeFrag.createElement(list.pop())}}return safeFrag}var nodeNames="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|"+"header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",rinlinejQuery=/ jQuery\d+="(?:null|\d+)"/g,rnoshimcache=new RegExp("<(?:"+nodeNames+")[\\s/>]","i"),rleadingWhitespace=/^\s+/,rxhtmlTag=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,rtagName=/<([\w:]+)/,rtbody=/<tbody/i,rhtml=/<|&#?\w+;/,rnoInnerhtml=/<(?:script|style|link)/i,rchecked=/checked\s*(?:[^=]|=\s*.checked.)/i,rscriptType=/^$|\/(?:java|ecma)script/i,rscriptTypeMasked=/^true\/(.*)/,rcleanScript=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,wrapMap={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:support.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]},safeFragment=createSafeFragment(document),fragmentDiv=safeFragment.appendChild(document.createElement("div"));wrapMap.optgroup=wrapMap.option;wrapMap.tbody=wrapMap.tfoot=wrapMap.colgroup=wrapMap.caption=wrapMap.thead;wrapMap.th=wrapMap.td;function getAll(context,tag){var elems,elem,i=0,found=typeof context.getElementsByTagName!==strundefined?context.getElementsByTagName(tag||"*"):typeof context.querySelectorAll!==strundefined?context.querySelectorAll(tag||"*"):undefined;if(!found){for(found=[],elems=context.childNodes||context;(elem=elems[i])!=null;i++){if(!tag||jQuery.nodeName(elem,tag)){found.push(elem)}else{jQuery.merge(found,getAll(elem,tag))}}}return tag===undefined||tag&&jQuery.nodeName(context,tag)?jQuery.merge([context],found):found}function fixDefaultChecked(elem){if(rcheckableType.test(elem.type)){elem.defaultChecked=elem.checked}}function manipulationTarget(elem,content){return jQuery.nodeName(elem,"table")&&jQuery.nodeName(content.nodeType!==11?content:content.firstChild,"tr")?elem.getElementsByTagName("tbody")[0]||elem.appendChild(elem.ownerDocument.createElement("tbody")):elem}function disableScript(elem){elem.type=(jQuery.find.attr(elem,"type")!==null)+"/"+elem.type;return elem}function restoreScript(elem){var match=rscriptTypeMasked.exec(elem.type);if(match){elem.type=match[1]}else{elem.removeAttribute("type")}return elem}function setGlobalEval(elems,refElements){var elem,i=0;for(;(elem=elems[i])!=null;i++){jQuery._data(elem,"globalEval",!refElements||jQuery._data(refElements[i],"globalEval"))}}function cloneCopyEvent(src,dest){if(dest.nodeType!==1||!jQuery.hasData(src)){return}var type,i,l,oldData=jQuery._data(src),curData=jQuery._data(dest,oldData),events=oldData.events;if(events){delete curData.handle;curData.events={};for(type in events){for(i=0,l=events[type].length;i<l;i++){jQuery.event.add(dest,type,events[type][i])}}}if(curData.data){curData.data=jQuery.extend({},curData.data)}}function fixCloneNodeIssues(src,dest){var nodeName,e,data;if(dest.nodeType!==1){return}nodeName=dest.nodeName.toLowerCase();if(!support.noCloneEvent&&dest[jQuery.expando]){data=jQuery._data(dest);for(e in data.events){jQuery.removeEvent(dest,e,data.handle)}dest.removeAttribute(jQuery.expando)}if(nodeName==="script"&&dest.text!==src.text){disableScript(dest).text=src.text;restoreScript(dest)}else if(nodeName==="object"){if(dest.parentNode){dest.outerHTML=src.outerHTML}if(support.html5Clone&&(src.innerHTML&&!jQuery.trim(dest.innerHTML))){dest.innerHTML=src.innerHTML}}else if(nodeName==="input"&&rcheckableType.test(src.type)){dest.defaultChecked=dest.checked=src.checked;if(dest.value!==src.value){dest.value=src.value}}else if(nodeName==="option"){dest.defaultSelected=dest.selected=src.defaultSelected}else if(nodeName==="input"||nodeName==="textarea"){dest.defaultValue=src.defaultValue}}jQuery.extend({clone:function(elem,dataAndEvents,deepDataAndEvents){var destElements,node,clone,i,srcElements,inPage=jQuery.contains(elem.ownerDocument,elem);if(support.html5Clone||jQuery.isXMLDoc(elem)||!rnoshimcache.test("<"+elem.nodeName+">")){clone=elem.cloneNode(true)}else{fragmentDiv.innerHTML=elem.outerHTML;fragmentDiv.removeChild(clone=fragmentDiv.firstChild)}if((!support.noCloneEvent||!support.noCloneChecked)&&(elem.nodeType===1||elem.nodeType===11)&&!jQuery.isXMLDoc(elem)){destElements=getAll(clone);srcElements=getAll(elem);for(i=0;(node=srcElements[i])!=null;++i){if(destElements[i]){fixCloneNodeIssues(node,destElements[i])}}}if(dataAndEvents){if(deepDataAndEvents){srcElements=srcElements||getAll(elem);destElements=destElements||getAll(clone);for(i=0;(node=srcElements[i])!=null;i++){cloneCopyEvent(node,destElements[i])}}else{cloneCopyEvent(elem,clone)}}destElements=getAll(clone,"script");if(destElements.length>0){setGlobalEval(destElements,!inPage&&getAll(elem,"script"))}destElements=srcElements=node=null;return clone},buildFragment:function(elems,context,scripts,selection){var j,elem,contains,tmp,tag,tbody,wrap,l=elems.length,safe=createSafeFragment(context),nodes=[],i=0;for(;i<l;i++){elem=elems[i];if(elem||elem===0){if(jQuery.type(elem)==="object"){jQuery.merge(nodes,elem.nodeType?[elem]:elem)}else if(!rhtml.test(elem)){nodes.push(context.createTextNode(elem))}else{tmp=tmp||safe.appendChild(context.createElement("div"));tag=(rtagName.exec(elem)||["",""])[1].toLowerCase();wrap=wrapMap[tag]||wrapMap._default;tmp.innerHTML=wrap[1]+elem.replace(rxhtmlTag,"<$1></$2>")+wrap[2];j=wrap[0];while(j--){tmp=tmp.lastChild}if(!support.leadingWhitespace&&rleadingWhitespace.test(elem)){nodes.push(context.createTextNode(rleadingWhitespace.exec(elem)[0]))}if(!support.tbody){elem=tag==="table"&&!rtbody.test(elem)?tmp.firstChild:wrap[1]==="<table>"&&!rtbody.test(elem)?tmp:0;j=elem&&elem.childNodes.length;while(j--){if(jQuery.nodeName(tbody=elem.childNodes[j],"tbody")&&!tbody.childNodes.length){elem.removeChild(tbody)}}}jQuery.merge(nodes,tmp.childNodes);tmp.textContent="";while(tmp.firstChild){tmp.removeChild(tmp.firstChild)}tmp=safe.lastChild}}}if(tmp){safe.removeChild(tmp)}if(!support.appendChecked){jQuery.grep(getAll(nodes,"input"),fixDefaultChecked)}i=0;while(elem=nodes[i++]){if(selection&&jQuery.inArray(elem,selection)!==-1){continue}contains=jQuery.contains(elem.ownerDocument,elem);tmp=getAll(safe.appendChild(elem),"script");if(contains){setGlobalEval(tmp)}if(scripts){j=0;while(elem=tmp[j++]){if(rscriptType.test(elem.type||"")){scripts.push(elem)}}}}tmp=null;return safe},cleanData:function(elems,acceptData){var elem,type,id,data,i=0,internalKey=jQuery.expando,cache=jQuery.cache,deleteExpando=support.deleteExpando,special=jQuery.event.special;for(;(elem=elems[i])!=null;i++){if(acceptData||jQuery.acceptData(elem)){id=elem[internalKey];data=id&&cache[id];if(data){if(data.events){for(type in data.events){if(special[type]){jQuery.event.remove(elem,type)}else{jQuery.removeEvent(elem,type,data.handle)}}}if(cache[id]){delete cache[id];if(deleteExpando){delete elem[internalKey]}else if(typeof elem.removeAttribute!==strundefined){elem.removeAttribute(internalKey)}else{elem[internalKey]=null}deletedIds.push(id)}}}}}});jQuery.fn.extend({text:function(value){return access(this,function(value){return value===undefined?jQuery.text(this):this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(value))},null,value,arguments.length)},append:function(){return this.domManip(arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.appendChild(elem)}})},prepend:function(){return this.domManip(arguments,function(elem){if(this.nodeType===1||this.nodeType===11||this.nodeType===9){var target=manipulationTarget(this,elem);target.insertBefore(elem,target.firstChild)}})},before:function(){return this.domManip(arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this)}})},after:function(){return this.domManip(arguments,function(elem){if(this.parentNode){this.parentNode.insertBefore(elem,this.nextSibling)}})},remove:function(selector,keepData){var elem,elems=selector?jQuery.filter(selector,this):this,i=0;for(;(elem=elems[i])!=null;i++){if(!keepData&&elem.nodeType===1){jQuery.cleanData(getAll(elem))}if(elem.parentNode){if(keepData&&jQuery.contains(elem.ownerDocument,elem)){setGlobalEval(getAll(elem,"script"))}elem.parentNode.removeChild(elem)}}return this},empty:function(){var elem,i=0;for(;(elem=this[i])!=null;i++){if(elem.nodeType===1){jQuery.cleanData(getAll(elem,false))}while(elem.firstChild){elem.removeChild(elem.firstChild)}if(elem.options&&jQuery.nodeName(elem,"select")){elem.options.length=0}}return this},clone:function(dataAndEvents,deepDataAndEvents){dataAndEvents=dataAndEvents==null?false:dataAndEvents;deepDataAndEvents=deepDataAndEvents==null?dataAndEvents:deepDataAndEvents;return this.map(function(){return jQuery.clone(this,dataAndEvents,deepDataAndEvents)})},html:function(value){return access(this,function(value){var elem=this[0]||{},i=0,l=this.length;if(value===undefined){return elem.nodeType===1?elem.innerHTML.replace(rinlinejQuery,""):undefined}if(typeof value==="string"&&!rnoInnerhtml.test(value)&&(support.htmlSerialize||!rnoshimcache.test(value))&&(support.leadingWhitespace||!rleadingWhitespace.test(value))&&!wrapMap[(rtagName.exec(value)||["",""])[1].toLowerCase()]){value=value.replace(rxhtmlTag,"<$1></$2>");try{for(;i<l;i++){elem=this[i]||{};if(elem.nodeType===1){jQuery.cleanData(getAll(elem,false));elem.innerHTML=value}}elem=0}catch(e){}}if(elem){this.empty().append(value)}},null,value,arguments.length)},replaceWith:function(){var arg=arguments[0];this.domManip(arguments,function(elem){arg=this.parentNode;jQuery.cleanData(getAll(this));if(arg){arg.replaceChild(elem,this)}});return arg&&(arg.length||arg.nodeType)?this:this.remove()},detach:function(selector){return this.remove(selector,true)},domManip:function(args,callback){args=concat.apply([],args);var first,node,hasScripts,scripts,doc,fragment,i=0,l=this.length,set=this,iNoClone=l-1,value=args[0],isFunction=jQuery.isFunction(value);if(isFunction||l>1&&typeof value==="string"&&!support.checkClone&&rchecked.test(value)){return this.each(function(index){var self=set.eq(index);if(isFunction){args[0]=value.call(this,index,self.html())}self.domManip(args,callback)})}if(l){fragment=jQuery.buildFragment(args,this[0].ownerDocument,false,this);first=fragment.firstChild;if(fragment.childNodes.length===1){fragment=first}if(first){scripts=jQuery.map(getAll(fragment,"script"),disableScript);hasScripts=scripts.length;for(;i<l;i++){node=fragment;if(i!==iNoClone){node=jQuery.clone(node,true,true);if(hasScripts){jQuery.merge(scripts,getAll(node,"script"))}}callback.call(this[i],node,i)}if(hasScripts){doc=scripts[scripts.length-1].ownerDocument;jQuery.map(scripts,restoreScript);for(i=0;i<hasScripts;i++){node=scripts[i];if(rscriptType.test(node.type||"")&&!jQuery._data(node,"globalEval")&&jQuery.contains(doc,node)){if(node.src){if(jQuery._evalUrl){jQuery._evalUrl(node.src)}}else{jQuery.globalEval((node.text||node.textContent||node.innerHTML||"").replace(rcleanScript,""))}}}}fragment=first=null}}return this}});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(selector){var elems,i=0,ret=[],insert=jQuery(selector),last=insert.length-1;for(;i<=last;i++){elems=i===last?this:this.clone(true);jQuery(insert[i])[original](elems);push.apply(ret,elems.get())}return this.pushStack(ret)}});var iframe,elemdisplay={};function actualDisplay(name,doc){var style,elem=jQuery(doc.createElement(name)).appendTo(doc.body),display=window.getDefaultComputedStyle&&(style=window.getDefaultComputedStyle(elem[0]))?style.display:jQuery.css(elem[0],"display");elem.detach();return display}function defaultDisplay(nodeName){var doc=document,display=elemdisplay[nodeName];if(!display){display=actualDisplay(nodeName,doc);if(display==="none"||!display){iframe=(iframe||jQuery("<iframe frameborder='0' width='0' height='0'/>")).appendTo(doc.documentElement);doc=(iframe[0].contentWindow||iframe[0].contentDocument).document;doc.write();doc.close();display=actualDisplay(nodeName,doc);iframe.detach()}elemdisplay[nodeName]=display}return display}(function(){var shrinkWrapBlocksVal;support.shrinkWrapBlocks=function(){if(shrinkWrapBlocksVal!=null){return shrinkWrapBlocksVal}shrinkWrapBlocksVal=false;var div,body,container;body=document.getElementsByTagName("body")[0];if(!body||!body.style){return}div=document.createElement("div");container=document.createElement("div");container.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px";body.appendChild(container).appendChild(div);if(typeof div.style.zoom!==strundefined){div.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;"+"box-sizing:content-box;display:block;margin:0;border:0;"+"padding:1px;width:1px;zoom:1";div.appendChild(document.createElement("div")).style.width="5px";shrinkWrapBlocksVal=div.offsetWidth!==3}body.removeChild(container);return shrinkWrapBlocksVal}})();var rmargin=/^margin/;var rnumnonpx=new RegExp("^("+pnum+")(?!px)[a-z%]+$","i");var getStyles,curCSS,rposition=/^(top|right|bottom|left)$/;if(window.getComputedStyle){getStyles=function(elem){if(elem.ownerDocument.defaultView.opener){return elem.ownerDocument.defaultView.getComputedStyle(elem,null)}return window.getComputedStyle(elem,null)};curCSS=function(elem,name,computed){var width,minWidth,maxWidth,ret,style=elem.style;computed=computed||getStyles(elem);ret=computed?computed.getPropertyValue(name)||computed[name]:undefined;if(computed){if(ret===""&&!jQuery.contains(elem.ownerDocument,elem)){ret=jQuery.style(elem,name)}if(rnumnonpx.test(ret)&&rmargin.test(name)){width=style.width;minWidth=style.minWidth;maxWidth=style.maxWidth;style.minWidth=style.maxWidth=style.width=ret;ret=computed.width;style.width=width;style.minWidth=minWidth;style.maxWidth=maxWidth}}return ret===undefined?ret:ret+""}}else if(document.documentElement.currentStyle){getStyles=function(elem){return elem.currentStyle};curCSS=function(elem,name,computed){var left,rs,rsLeft,ret,style=elem.style;computed=computed||getStyles(elem);ret=computed?computed[name]:undefined;if(ret==null&&style&&style[name]){ret=style[name]}if(rnumnonpx.test(ret)&&!rposition.test(name)){left=style.left;rs=elem.runtimeStyle;rsLeft=rs&&rs.left;if(rsLeft){rs.left=elem.currentStyle.left}style.left=name==="fontSize"?"1em":ret;ret=style.pixelLeft+"px";style.left=left;if(rsLeft){rs.left=rsLeft}}return ret===undefined?ret:ret+""||"auto"}}function addGetHookIf(conditionFn,hookFn){return{get:function(){var condition=conditionFn();if(condition==null){return}if(condition){delete this.get;return}return(this.get=hookFn).apply(this,arguments)}}}(function(){var div,style,a,pixelPositionVal,boxSizingReliableVal,reliableHiddenOffsetsVal,reliableMarginRightVal;div=document.createElement("div");div.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";a=div.getElementsByTagName("a")[0];style=a&&a.style;if(!style){return}style.cssText="float:left;opacity:.5";support.opacity=style.opacity==="0.5";support.cssFloat=!!style.cssFloat;div.style.backgroundClip="content-box";div.cloneNode(true).style.backgroundClip="";support.clearCloneStyle=div.style.backgroundClip==="content-box";support.boxSizing=style.boxSizing===""||style.MozBoxSizing===""||style.WebkitBoxSizing==="";jQuery.extend(support,{reliableHiddenOffsets:function(){if(reliableHiddenOffsetsVal==null){computeStyleTests()}return reliableHiddenOffsetsVal},boxSizingReliable:function(){if(boxSizingReliableVal==null){computeStyleTests()}return boxSizingReliableVal},pixelPosition:function(){if(pixelPositionVal==null){computeStyleTests()}return pixelPositionVal},reliableMarginRight:function(){if(reliableMarginRightVal==null){computeStyleTests()}return reliableMarginRightVal}});function computeStyleTests(){var div,body,container,contents;body=document.getElementsByTagName("body")[0];if(!body||!body.style){return}div=document.createElement("div");container=document.createElement("div");container.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px";body.appendChild(container).appendChild(div);div.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;"+"box-sizing:border-box;display:block;margin-top:1%;top:1%;"+"border:1px;padding:1px;width:4px;position:absolute";pixelPositionVal=boxSizingReliableVal=false;reliableMarginRightVal=true;if(window.getComputedStyle){pixelPositionVal=(window.getComputedStyle(div,null)||{}).top!=="1%";boxSizingReliableVal=(window.getComputedStyle(div,null)||{width:"4px"}).width==="4px";contents=div.appendChild(document.createElement("div"));contents.style.cssText=div.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;"+"box-sizing:content-box;display:block;margin:0;border:0;padding:0";contents.style.marginRight=contents.style.width="0";div.style.width="1px";reliableMarginRightVal=!parseFloat((window.getComputedStyle(contents,null)||{}).marginRight);div.removeChild(contents)}div.innerHTML="<table><tr><td></td><td>t</td></tr></table>";contents=div.getElementsByTagName("td");contents[0].style.cssText="margin:0;border:0;padding:0;display:none";reliableHiddenOffsetsVal=contents[0].offsetHeight===0;if(reliableHiddenOffsetsVal){contents[0].style.display="";contents[1].style.display="none";reliableHiddenOffsetsVal=contents[0].offsetHeight===0}body.removeChild(container)}})();jQuery.swap=function(elem,options,callback,args){var ret,name,old={};for(name in options){old[name]=elem.style[name];elem.style[name]=options[name]}ret=callback.apply(elem,args||[]);for(name in options){elem.style[name]=old[name]}return ret};var ralpha=/alpha\([^)]*\)/i,ropacity=/opacity\s*=\s*([^)]*)/,rdisplayswap=/^(none|table(?!-c[ea]).+)/,rnumsplit=new RegExp("^("+pnum+")(.*)$","i"),rrelNum=new RegExp("^([+-])=("+pnum+")","i"),cssShow={position:"absolute",visibility:"hidden",display:"block"},cssNormalTransform={letterSpacing:"0",fontWeight:"400"},cssPrefixes=["Webkit","O","Moz","ms"];function vendorPropName(style,name){if(name in style){return name}var capName=name.charAt(0).toUpperCase()+name.slice(1),origName=name,i=cssPrefixes.length;while(i--){name=cssPrefixes[i]+capName;if(name in style){return name}}return origName}function showHide(elements,show){var display,elem,hidden,values=[],index=0,length=elements.length;for(;index<length;index++){elem=elements[index];if(!elem.style){continue}values[index]=jQuery._data(elem,"olddisplay");display=elem.style.display;if(show){if(!values[index]&&display==="none"){elem.style.display=""}if(elem.style.display===""&&isHidden(elem)){values[index]=jQuery._data(elem,"olddisplay",defaultDisplay(elem.nodeName))}}else{hidden=isHidden(elem);if(display&&display!=="none"||!hidden){jQuery._data(elem,"olddisplay",hidden?display:jQuery.css(elem,"display"))}}}for(index=0;index<length;index++){elem=elements[index];if(!elem.style){continue}if(!show||elem.style.display==="none"||elem.style.display===""){elem.style.display=show?values[index]||"":"none"}}return elements}function setPositiveNumber(elem,value,subtract){var matches=rnumsplit.exec(value);return matches?Math.max(0,matches[1]-(subtract||0))+(matches[2]||"px"):value}function augmentWidthOrHeight(elem,name,extra,isBorderBox,styles){var i=extra===(isBorderBox?"border":"content")?4:name==="width"?1:0,val=0;for(;i<4;i+=2){if(extra==="margin"){val+=jQuery.css(elem,extra+cssExpand[i],true,styles)}if(isBorderBox){if(extra==="content"){val-=jQuery.css(elem,"padding"+cssExpand[i],true,styles)}if(extra!=="margin"){val-=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles)}}else{val+=jQuery.css(elem,"padding"+cssExpand[i],true,styles);if(extra!=="padding"){val+=jQuery.css(elem,"border"+cssExpand[i]+"Width",true,styles)}}}return val}function getWidthOrHeight(elem,name,extra){var valueIsBorderBox=true,val=name==="width"?elem.offsetWidth:elem.offsetHeight,styles=getStyles(elem),isBorderBox=support.boxSizing&&jQuery.css(elem,"boxSizing",false,styles)==="border-box";if(val<=0||val==null){val=curCSS(elem,name,styles);if(val<0||val==null){val=elem.style[name]}if(rnumnonpx.test(val)){return val}valueIsBorderBox=isBorderBox&&(support.boxSizingReliable()||val===elem.style[name]);val=parseFloat(val)||0}return val+augmentWidthOrHeight(elem,name,extra||(isBorderBox?"border":"content"),valueIsBorderBox,styles)+"px"}jQuery.extend({cssHooks:{opacity:{get:function(elem,computed){if(computed){var ret=curCSS(elem,"opacity");return ret===""?"1":ret}}}},cssNumber:{columnCount:true,fillOpacity:true,flexGrow:true,flexShrink:true,fontWeight:true,lineHeight:true,opacity:true,order:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":support.cssFloat?"cssFloat":"styleFloat"},style:function(elem,name,value,extra){if(!elem||elem.nodeType===3||elem.nodeType===8||!elem.style){return}var ret,type,hooks,origName=jQuery.camelCase(name),style=elem.style;name=jQuery.cssProps[origName]||(jQuery.cssProps[origName]=vendorPropName(style,origName));hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];if(value!==undefined){type=typeof value;if(type==="string"&&(ret=rrelNum.exec(value))){value=(ret[1]+1)*ret[2]+parseFloat(jQuery.css(elem,name));type="number"}if(value==null||value!==value){return}if(type==="number"&&!jQuery.cssNumber[origName]){value+="px"}if(!support.clearCloneStyle&&value===""&&name.indexOf("background")===0){style[name]="inherit"}if(!hooks||!("set"in hooks)||(value=hooks.set(elem,value,extra))!==undefined){try{style[name]=value}catch(e){}}}else{if(hooks&&"get"in hooks&&(ret=hooks.get(elem,false,extra))!==undefined){return ret}return style[name]}},css:function(elem,name,extra,styles){var num,val,hooks,origName=jQuery.camelCase(name);name=jQuery.cssProps[origName]||(jQuery.cssProps[origName]=vendorPropName(elem.style,origName));hooks=jQuery.cssHooks[name]||jQuery.cssHooks[origName];if(hooks&&"get"in hooks){val=hooks.get(elem,true,extra)}if(val===undefined){val=curCSS(elem,name,styles)}if(val==="normal"&&name in cssNormalTransform){val=cssNormalTransform[name]}if(extra===""||extra){num=parseFloat(val);return extra===true||jQuery.isNumeric(num)?num||0:val}return val}});jQuery.each(["height","width"],function(i,name){jQuery.cssHooks[name]={get:function(elem,computed,extra){if(computed){return rdisplayswap.test(jQuery.css(elem,"display"))&&elem.offsetWidth===0?jQuery.swap(elem,cssShow,function(){return getWidthOrHeight(elem,name,extra)}):getWidthOrHeight(elem,name,extra)}},set:function(elem,value,extra){var styles=extra&&getStyles(elem);return setPositiveNumber(elem,value,extra?augmentWidthOrHeight(elem,name,extra,support.boxSizing&&jQuery.css(elem,"boxSizing",false,styles)==="border-box",styles):0)}}});if(!support.opacity){jQuery.cssHooks.opacity={get:function(elem,computed){return ropacity.test((computed&&elem.currentStyle?elem.currentStyle.filter:elem.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":computed?"1":""},set:function(elem,value){var style=elem.style,currentStyle=elem.currentStyle,opacity=jQuery.isNumeric(value)?"alpha(opacity="+value*100+")":"",filter=currentStyle&¤tStyle.filter||style.filter||"";style.zoom=1;if((value>=1||value==="")&&jQuery.trim(filter.replace(ralpha,""))===""&&style.removeAttribute){style.removeAttribute("filter");if(value===""||currentStyle&&!currentStyle.filter){return}}style.filter=ralpha.test(filter)?filter.replace(ralpha,opacity):filter+" "+opacity}}}jQuery.cssHooks.marginRight=addGetHookIf(support.reliableMarginRight,function(elem,computed){if(computed){return jQuery.swap(elem,{display:"inline-block"},curCSS,[elem,"marginRight"])}});jQuery.each({margin:"",padding:"",border:"Width"},function(prefix,suffix){jQuery.cssHooks[prefix+suffix]={expand:function(value){var i=0,expanded={},parts=typeof value==="string"?value.split(" "):[value];for(;i<4;i++){expanded[prefix+cssExpand[i]+suffix]=parts[i]||parts[i-2]||parts[0]}return expanded}};if(!rmargin.test(prefix)){jQuery.cssHooks[prefix+suffix].set=setPositiveNumber}});jQuery.fn.extend({css:function(name,value){return access(this,function(elem,name,value){var styles,len,map={},i=0;if(jQuery.isArray(name)){styles=getStyles(elem);len=name.length;for(;i<len;i++){map[name[i]]=jQuery.css(elem,name[i],false,styles)}return map}return value!==undefined?jQuery.style(elem,name,value):jQuery.css(elem,name)},name,value,arguments.length>1)},show:function(){return showHide(this,true)},hide:function(){return showHide(this)},toggle:function(state){if(typeof state==="boolean"){return state?this.show():this.hide()}return this.each(function(){if(isHidden(this)){jQuery(this).show()}else{jQuery(this).hide()}})}});function Tween(elem,options,prop,end,easing){return new Tween.prototype.init(elem,options,prop,end,easing)}jQuery.Tween=Tween;Tween.prototype={constructor:Tween,init:function(elem,options,prop,end,easing,unit){this.elem=elem;this.prop=prop;this.easing=easing||"swing";this.options=options;this.start=this.now=this.cur();this.end=end;this.unit=unit||(jQuery.cssNumber[prop]?"":"px")},cur:function(){var hooks=Tween.propHooks[this.prop];return hooks&&hooks.get?hooks.get(this):Tween.propHooks._default.get(this)},run:function(percent){var eased,hooks=Tween.propHooks[this.prop];if(this.options.duration){this.pos=eased=jQuery.easing[this.easing](percent,this.options.duration*percent,0,1,this.options.duration)}else{this.pos=eased=percent}this.now=(this.end-this.start)*eased+this.start;if(this.options.step){this.options.step.call(this.elem,this.now,this)}if(hooks&&hooks.set){hooks.set(this)}else{Tween.propHooks._default.set(this)}return this}};Tween.prototype.init.prototype=Tween.prototype;Tween.propHooks={_default:{get:function(tween){var result;if(tween.elem[tween.prop]!=null&&(!tween.elem.style||tween.elem.style[tween.prop]==null)){return tween.elem[tween.prop]}result=jQuery.css(tween.elem,tween.prop,"");return!result||result==="auto"?0:result},set:function(tween){if(jQuery.fx.step[tween.prop]){jQuery.fx.step[tween.prop](tween)}else if(tween.elem.style&&(tween.elem.style[jQuery.cssProps[tween.prop]]!=null||jQuery.cssHooks[tween.prop])){jQuery.style(tween.elem,tween.prop,tween.now+tween.unit)}else{tween.elem[tween.prop]=tween.now}}}};Tween.propHooks.scrollTop=Tween.propHooks.scrollLeft={set:function(tween){if(tween.elem.nodeType&&tween.elem.parentNode){tween.elem[tween.prop]=tween.now}}};jQuery.easing={linear:function(p){return p},swing:function(p){return.5-Math.cos(p*Math.PI)/2}};jQuery.fx=Tween.prototype.init;jQuery.fx.step={};var fxNow,timerId,rfxtypes=/^(?:toggle|show|hide)$/,rfxnum=new RegExp("^(?:([+-])=|)("+pnum+")([a-z%]*)$","i"),rrun=/queueHooks$/,animationPrefilters=[defaultPrefilter],tweeners={"*":[function(prop,value){var tween=this.createTween(prop,value),target=tween.cur(),parts=rfxnum.exec(value),unit=parts&&parts[3]||(jQuery.cssNumber[prop]?"":"px"),start=(jQuery.cssNumber[prop]||unit!=="px"&&+target)&&rfxnum.exec(jQuery.css(tween.elem,prop)),scale=1,maxIterations=20;if(start&&start[3]!==unit){unit=unit||start[3];parts=parts||[];start=+target||1;do{scale=scale||".5";start=start/scale;jQuery.style(tween.elem,prop,start+unit)}while(scale!==(scale=tween.cur()/target)&&scale!==1&&--maxIterations)}if(parts){start=tween.start=+start||+target||0;tween.unit=unit;tween.end=parts[1]?start+(parts[1]+1)*parts[2]:+parts[2]}return tween}]};function createFxNow(){setTimeout(function(){fxNow=undefined});return fxNow=jQuery.now()}function genFx(type,includeWidth){var which,attrs={height:type},i=0;includeWidth=includeWidth?1:0;for(;i<4;i+=2-includeWidth){which=cssExpand[i];attrs["margin"+which]=attrs["padding"+which]=type}if(includeWidth){attrs.opacity=attrs.width=type}return attrs}function createTween(value,prop,animation){var tween,collection=(tweeners[prop]||[]).concat(tweeners["*"]),index=0,length=collection.length;for(;index<length;index++){if(tween=collection[index].call(animation,prop,value)){return tween}}}function defaultPrefilter(elem,props,opts){var prop,value,toggle,tween,hooks,oldfire,display,checkDisplay,anim=this,orig={},style=elem.style,hidden=elem.nodeType&&isHidden(elem),dataShow=jQuery._data(elem,"fxshow");if(!opts.queue){hooks=jQuery._queueHooks(elem,"fx");if(hooks.unqueued==null){hooks.unqueued=0;oldfire=hooks.empty.fire;hooks.empty.fire=function(){if(!hooks.unqueued){oldfire()}}}hooks.unqueued++;anim.always(function(){anim.always(function(){hooks.unqueued--;if(!jQuery.queue(elem,"fx").length){hooks.empty.fire()}})})}if(elem.nodeType===1&&("height"in props||"width"in props)){opts.overflow=[style.overflow,style.overflowX,style.overflowY];display=jQuery.css(elem,"display");checkDisplay=display==="none"?jQuery._data(elem,"olddisplay")||defaultDisplay(elem.nodeName):display;if(checkDisplay==="inline"&&jQuery.css(elem,"float")==="none"){if(!support.inlineBlockNeedsLayout||defaultDisplay(elem.nodeName)==="inline"){style.display="inline-block"}else{style.zoom=1}}}if(opts.overflow){style.overflow="hidden";if(!support.shrinkWrapBlocks()){anim.always(function(){style.overflow=opts.overflow[0];style.overflowX=opts.overflow[1];style.overflowY=opts.overflow[2]})}}for(prop in props){value=props[prop];if(rfxtypes.exec(value)){delete props[prop];toggle=toggle||value==="toggle";if(value===(hidden?"hide":"show")){if(value==="show"&&dataShow&&dataShow[prop]!==undefined){hidden=true}else{continue}}orig[prop]=dataShow&&dataShow[prop]||jQuery.style(elem,prop)}else{display=undefined}}if(!jQuery.isEmptyObject(orig)){if(dataShow){if("hidden"in dataShow){hidden=dataShow.hidden}}else{dataShow=jQuery._data(elem,"fxshow",{})}if(toggle){dataShow.hidden=!hidden}if(hidden){jQuery(elem).show()}else{anim.done(function(){jQuery(elem).hide()})}anim.done(function(){var prop;jQuery._removeData(elem,"fxshow");for(prop in orig){jQuery.style(elem,prop,orig[prop])}});for(prop in orig){tween=createTween(hidden?dataShow[prop]:0,prop,anim);if(!(prop in dataShow)){dataShow[prop]=tween.start;if(hidden){tween.end=tween.start;tween.start=prop==="width"||prop==="height"?1:0}}}}else if((display==="none"?defaultDisplay(elem.nodeName):display)==="inline"){style.display=display}}function propFilter(props,specialEasing){var index,name,easing,value,hooks;for(index in props){name=jQuery.camelCase(index);easing=specialEasing[name];value=props[index];if(jQuery.isArray(value)){easing=value[1];value=props[index]=value[0]}if(index!==name){ | ||
21 | props[name]=value;delete props[index]}hooks=jQuery.cssHooks[name];if(hooks&&"expand"in hooks){value=hooks.expand(value);delete props[name];for(index in value){if(!(index in props)){props[index]=value[index];specialEasing[index]=easing}}}else{specialEasing[name]=easing}}}function Animation(elem,properties,options){var result,stopped,index=0,length=animationPrefilters.length,deferred=jQuery.Deferred().always(function(){delete tick.elem}),tick=function(){if(stopped){return false}var currentTime=fxNow||createFxNow(),remaining=Math.max(0,animation.startTime+animation.duration-currentTime),temp=remaining/animation.duration||0,percent=1-temp,index=0,length=animation.tweens.length;for(;index<length;index++){animation.tweens[index].run(percent)}deferred.notifyWith(elem,[animation,percent,remaining]);if(percent<1&&length){return remaining}else{deferred.resolveWith(elem,[animation]);return false}},animation=deferred.promise({elem:elem,props:jQuery.extend({},properties),opts:jQuery.extend(true,{specialEasing:{}},options),originalProperties:properties,originalOptions:options,startTime:fxNow||createFxNow(),duration:options.duration,tweens:[],createTween:function(prop,end){var tween=jQuery.Tween(elem,animation.opts,prop,end,animation.opts.specialEasing[prop]||animation.opts.easing);animation.tweens.push(tween);return tween},stop:function(gotoEnd){var index=0,length=gotoEnd?animation.tweens.length:0;if(stopped){return this}stopped=true;for(;index<length;index++){animation.tweens[index].run(1)}if(gotoEnd){deferred.resolveWith(elem,[animation,gotoEnd])}else{deferred.rejectWith(elem,[animation,gotoEnd])}return this}}),props=animation.props;propFilter(props,animation.opts.specialEasing);for(;index<length;index++){result=animationPrefilters[index].call(animation,elem,props,animation.opts);if(result){return result}}jQuery.map(props,createTween,animation);if(jQuery.isFunction(animation.opts.start)){animation.opts.start.call(elem,animation)}jQuery.fx.timer(jQuery.extend(tick,{elem:elem,anim:animation,queue:animation.opts.queue}));return animation.progress(animation.opts.progress).done(animation.opts.done,animation.opts.complete).fail(animation.opts.fail).always(animation.opts.always)}jQuery.Animation=jQuery.extend(Animation,{tweener:function(props,callback){if(jQuery.isFunction(props)){callback=props;props=["*"]}else{props=props.split(" ")}var prop,index=0,length=props.length;for(;index<length;index++){prop=props[index];tweeners[prop]=tweeners[prop]||[];tweeners[prop].unshift(callback)}},prefilter:function(callback,prepend){if(prepend){animationPrefilters.unshift(callback)}else{animationPrefilters.push(callback)}}});jQuery.speed=function(speed,easing,fn){var opt=speed&&typeof speed==="object"?jQuery.extend({},speed):{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&!jQuery.isFunction(easing)&&easing};opt.duration=jQuery.fx.off?0:typeof opt.duration==="number"?opt.duration:opt.duration in jQuery.fx.speeds?jQuery.fx.speeds[opt.duration]:jQuery.fx.speeds._default;if(opt.queue==null||opt.queue===true){opt.queue="fx"}opt.old=opt.complete;opt.complete=function(){if(jQuery.isFunction(opt.old)){opt.old.call(this)}if(opt.queue){jQuery.dequeue(this,opt.queue)}};return opt};jQuery.fn.extend({fadeTo:function(speed,to,easing,callback){return this.filter(isHidden).css("opacity",0).show().end().animate({opacity:to},speed,easing,callback)},animate:function(prop,speed,easing,callback){var empty=jQuery.isEmptyObject(prop),optall=jQuery.speed(speed,easing,callback),doAnimation=function(){var anim=Animation(this,jQuery.extend({},prop),optall);if(empty||jQuery._data(this,"finish")){anim.stop(true)}};doAnimation.finish=doAnimation;return empty||optall.queue===false?this.each(doAnimation):this.queue(optall.queue,doAnimation)},stop:function(type,clearQueue,gotoEnd){var stopQueue=function(hooks){var stop=hooks.stop;delete hooks.stop;stop(gotoEnd)};if(typeof type!=="string"){gotoEnd=clearQueue;clearQueue=type;type=undefined}if(clearQueue&&type!==false){this.queue(type||"fx",[])}return this.each(function(){var dequeue=true,index=type!=null&&type+"queueHooks",timers=jQuery.timers,data=jQuery._data(this);if(index){if(data[index]&&data[index].stop){stopQueue(data[index])}}else{for(index in data){if(data[index]&&data[index].stop&&rrun.test(index)){stopQueue(data[index])}}}for(index=timers.length;index--;){if(timers[index].elem===this&&(type==null||timers[index].queue===type)){timers[index].anim.stop(gotoEnd);dequeue=false;timers.splice(index,1)}}if(dequeue||!gotoEnd){jQuery.dequeue(this,type)}})},finish:function(type){if(type!==false){type=type||"fx"}return this.each(function(){var index,data=jQuery._data(this),queue=data[type+"queue"],hooks=data[type+"queueHooks"],timers=jQuery.timers,length=queue?queue.length:0;data.finish=true;jQuery.queue(this,type,[]);if(hooks&&hooks.stop){hooks.stop.call(this,true)}for(index=timers.length;index--;){if(timers[index].elem===this&&timers[index].queue===type){timers[index].anim.stop(true);timers.splice(index,1)}}for(index=0;index<length;index++){if(queue[index]&&queue[index].finish){queue[index].finish.call(this)}}delete data.finish})}});jQuery.each(["toggle","show","hide"],function(i,name){var cssFn=jQuery.fn[name];jQuery.fn[name]=function(speed,easing,callback){return speed==null||typeof speed==="boolean"?cssFn.apply(this,arguments):this.animate(genFx(name,true),speed,easing,callback)}});jQuery.each({slideDown:genFx("show"),slideUp:genFx("hide"),slideToggle:genFx("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(name,props){jQuery.fn[name]=function(speed,easing,callback){return this.animate(props,speed,easing,callback)}});jQuery.timers=[];jQuery.fx.tick=function(){var timer,timers=jQuery.timers,i=0;fxNow=jQuery.now();for(;i<timers.length;i++){timer=timers[i];if(!timer()&&timers[i]===timer){timers.splice(i--,1)}}if(!timers.length){jQuery.fx.stop()}fxNow=undefined};jQuery.fx.timer=function(timer){jQuery.timers.push(timer);if(timer()){jQuery.fx.start()}else{jQuery.timers.pop()}};jQuery.fx.interval=13;jQuery.fx.start=function(){if(!timerId){timerId=setInterval(jQuery.fx.tick,jQuery.fx.interval)}};jQuery.fx.stop=function(){clearInterval(timerId);timerId=null};jQuery.fx.speeds={slow:600,fast:200,_default:400};jQuery.fn.delay=function(time,type){time=jQuery.fx?jQuery.fx.speeds[time]||time:time;type=type||"fx";return this.queue(type,function(next,hooks){var timeout=setTimeout(next,time);hooks.stop=function(){clearTimeout(timeout)}})};(function(){var input,div,select,a,opt;div=document.createElement("div");div.setAttribute("className","t");div.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>";a=div.getElementsByTagName("a")[0];select=document.createElement("select");opt=select.appendChild(document.createElement("option"));input=div.getElementsByTagName("input")[0];a.style.cssText="top:1px";support.getSetAttribute=div.className!=="t";support.style=/top/.test(a.getAttribute("style"));support.hrefNormalized=a.getAttribute("href")==="/a";support.checkOn=!!input.value;support.optSelected=opt.selected;support.enctype=!!document.createElement("form").enctype;select.disabled=true;support.optDisabled=!opt.disabled;input=document.createElement("input");input.setAttribute("value","");support.input=input.getAttribute("value")==="";input.value="t";input.setAttribute("type","radio");support.radioValue=input.value==="t"})();var rreturn=/\r/g;jQuery.fn.extend({val:function(value){var hooks,ret,isFunction,elem=this[0];if(!arguments.length){if(elem){hooks=jQuery.valHooks[elem.type]||jQuery.valHooks[elem.nodeName.toLowerCase()];if(hooks&&"get"in hooks&&(ret=hooks.get(elem,"value"))!==undefined){return ret}ret=elem.value;return typeof ret==="string"?ret.replace(rreturn,""):ret==null?"":ret}return}isFunction=jQuery.isFunction(value);return this.each(function(i){var val;if(this.nodeType!==1){return}if(isFunction){val=value.call(this,i,jQuery(this).val())}else{val=value}if(val==null){val=""}else if(typeof val==="number"){val+=""}else if(jQuery.isArray(val)){val=jQuery.map(val,function(value){return value==null?"":value+""})}hooks=jQuery.valHooks[this.type]||jQuery.valHooks[this.nodeName.toLowerCase()];if(!hooks||!("set"in hooks)||hooks.set(this,val,"value")===undefined){this.value=val}})}});jQuery.extend({valHooks:{option:{get:function(elem){var val=jQuery.find.attr(elem,"value");return val!=null?val:jQuery.trim(jQuery.text(elem))}},select:{get:function(elem){var value,option,options=elem.options,index=elem.selectedIndex,one=elem.type==="select-one"||index<0,values=one?null:[],max=one?index+1:options.length,i=index<0?max:one?index:0;for(;i<max;i++){option=options[i];if((option.selected||i===index)&&(support.optDisabled?!option.disabled:option.getAttribute("disabled")===null)&&(!option.parentNode.disabled||!jQuery.nodeName(option.parentNode,"optgroup"))){value=jQuery(option).val();if(one){return value}values.push(value)}}return values},set:function(elem,value){var optionSet,option,options=elem.options,values=jQuery.makeArray(value),i=options.length;while(i--){option=options[i];if(jQuery.inArray(jQuery.valHooks.option.get(option),values)>=0){try{option.selected=optionSet=true}catch(_){option.scrollHeight}}else{option.selected=false}}if(!optionSet){elem.selectedIndex=-1}return options}}}});jQuery.each(["radio","checkbox"],function(){jQuery.valHooks[this]={set:function(elem,value){if(jQuery.isArray(value)){return elem.checked=jQuery.inArray(jQuery(elem).val(),value)>=0}}};if(!support.checkOn){jQuery.valHooks[this].get=function(elem){return elem.getAttribute("value")===null?"on":elem.value}}});var nodeHook,boolHook,attrHandle=jQuery.expr.attrHandle,ruseDefault=/^(?:checked|selected)$/i,getSetAttribute=support.getSetAttribute,getSetInput=support.input;jQuery.fn.extend({attr:function(name,value){return access(this,jQuery.attr,name,value,arguments.length>1)},removeAttr:function(name){return this.each(function(){jQuery.removeAttr(this,name)})}});jQuery.extend({attr:function(elem,name,value){var hooks,ret,nType=elem.nodeType;if(!elem||nType===3||nType===8||nType===2){return}if(typeof elem.getAttribute===strundefined){return jQuery.prop(elem,name,value)}if(nType!==1||!jQuery.isXMLDoc(elem)){name=name.toLowerCase();hooks=jQuery.attrHooks[name]||(jQuery.expr.match.bool.test(name)?boolHook:nodeHook)}if(value!==undefined){if(value===null){jQuery.removeAttr(elem,name)}else if(hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined){return ret}else{elem.setAttribute(name,value+"");return value}}else if(hooks&&"get"in hooks&&(ret=hooks.get(elem,name))!==null){return ret}else{ret=jQuery.find.attr(elem,name);return ret==null?undefined:ret}},removeAttr:function(elem,value){var name,propName,i=0,attrNames=value&&value.match(rnotwhite);if(attrNames&&elem.nodeType===1){while(name=attrNames[i++]){propName=jQuery.propFix[name]||name;if(jQuery.expr.match.bool.test(name)){if(getSetInput&&getSetAttribute||!ruseDefault.test(name)){elem[propName]=false}else{elem[jQuery.camelCase("default-"+name)]=elem[propName]=false}}else{jQuery.attr(elem,name,"")}elem.removeAttribute(getSetAttribute?name:propName)}}},attrHooks:{type:{set:function(elem,value){if(!support.radioValue&&value==="radio"&&jQuery.nodeName(elem,"input")){var val=elem.value;elem.setAttribute("type",value);if(val){elem.value=val}return value}}}}});boolHook={set:function(elem,value,name){if(value===false){jQuery.removeAttr(elem,name)}else if(getSetInput&&getSetAttribute||!ruseDefault.test(name)){elem.setAttribute(!getSetAttribute&&jQuery.propFix[name]||name,name)}else{elem[jQuery.camelCase("default-"+name)]=elem[name]=true}return name}};jQuery.each(jQuery.expr.match.bool.source.match(/\w+/g),function(i,name){var getter=attrHandle[name]||jQuery.find.attr;attrHandle[name]=getSetInput&&getSetAttribute||!ruseDefault.test(name)?function(elem,name,isXML){var ret,handle;if(!isXML){handle=attrHandle[name];attrHandle[name]=ret;ret=getter(elem,name,isXML)!=null?name.toLowerCase():null;attrHandle[name]=handle}return ret}:function(elem,name,isXML){if(!isXML){return elem[jQuery.camelCase("default-"+name)]?name.toLowerCase():null}}});if(!getSetInput||!getSetAttribute){jQuery.attrHooks.value={set:function(elem,value,name){if(jQuery.nodeName(elem,"input")){elem.defaultValue=value}else{return nodeHook&&nodeHook.set(elem,value,name)}}}}if(!getSetAttribute){nodeHook={set:function(elem,value,name){var ret=elem.getAttributeNode(name);if(!ret){elem.setAttributeNode(ret=elem.ownerDocument.createAttribute(name))}ret.value=value+="";if(name==="value"||value===elem.getAttribute(name)){return value}}};attrHandle.id=attrHandle.name=attrHandle.coords=function(elem,name,isXML){var ret;if(!isXML){return(ret=elem.getAttributeNode(name))&&ret.value!==""?ret.value:null}};jQuery.valHooks.button={get:function(elem,name){var ret=elem.getAttributeNode(name);if(ret&&ret.specified){return ret.value}},set:nodeHook.set};jQuery.attrHooks.contenteditable={set:function(elem,value,name){nodeHook.set(elem,value===""?false:value,name)}};jQuery.each(["width","height"],function(i,name){jQuery.attrHooks[name]={set:function(elem,value){if(value===""){elem.setAttribute(name,"auto");return value}}}})}if(!support.style){jQuery.attrHooks.style={get:function(elem){return elem.style.cssText||undefined},set:function(elem,value){return elem.style.cssText=value+""}}}var rfocusable=/^(?:input|select|textarea|button|object)$/i,rclickable=/^(?:a|area)$/i;jQuery.fn.extend({prop:function(name,value){return access(this,jQuery.prop,name,value,arguments.length>1)},removeProp:function(name){name=jQuery.propFix[name]||name;return this.each(function(){try{this[name]=undefined;delete this[name]}catch(e){}})}});jQuery.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(elem,name,value){var ret,hooks,notxml,nType=elem.nodeType;if(!elem||nType===3||nType===8||nType===2){return}notxml=nType!==1||!jQuery.isXMLDoc(elem);if(notxml){name=jQuery.propFix[name]||name;hooks=jQuery.propHooks[name]}if(value!==undefined){return hooks&&"set"in hooks&&(ret=hooks.set(elem,value,name))!==undefined?ret:elem[name]=value}else{return hooks&&"get"in hooks&&(ret=hooks.get(elem,name))!==null?ret:elem[name]}},propHooks:{tabIndex:{get:function(elem){var tabindex=jQuery.find.attr(elem,"tabindex");return tabindex?parseInt(tabindex,10):rfocusable.test(elem.nodeName)||rclickable.test(elem.nodeName)&&elem.href?0:-1}}}});if(!support.hrefNormalized){jQuery.each(["href","src"],function(i,name){jQuery.propHooks[name]={get:function(elem){return elem.getAttribute(name,4)}}})}if(!support.optSelected){jQuery.propHooks.selected={get:function(elem){var parent=elem.parentNode;if(parent){parent.selectedIndex;if(parent.parentNode){parent.parentNode.selectedIndex}}return null}}}jQuery.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){jQuery.propFix[this.toLowerCase()]=this});if(!support.enctype){jQuery.propFix.enctype="encoding"}var rclass=/[\t\r\n\f]/g;jQuery.fn.extend({addClass:function(value){var classes,elem,cur,clazz,j,finalValue,i=0,len=this.length,proceed=typeof value==="string"&&value;if(jQuery.isFunction(value)){return this.each(function(j){jQuery(this).addClass(value.call(this,j,this.className))})}if(proceed){classes=(value||"").match(rnotwhite)||[];for(;i<len;i++){elem=this[i];cur=elem.nodeType===1&&(elem.className?(" "+elem.className+" ").replace(rclass," "):" ");if(cur){j=0;while(clazz=classes[j++]){if(cur.indexOf(" "+clazz+" ")<0){cur+=clazz+" "}}finalValue=jQuery.trim(cur);if(elem.className!==finalValue){elem.className=finalValue}}}}return this},removeClass:function(value){var classes,elem,cur,clazz,j,finalValue,i=0,len=this.length,proceed=arguments.length===0||typeof value==="string"&&value;if(jQuery.isFunction(value)){return this.each(function(j){jQuery(this).removeClass(value.call(this,j,this.className))})}if(proceed){classes=(value||"").match(rnotwhite)||[];for(;i<len;i++){elem=this[i];cur=elem.nodeType===1&&(elem.className?(" "+elem.className+" ").replace(rclass," "):"");if(cur){j=0;while(clazz=classes[j++]){while(cur.indexOf(" "+clazz+" ")>=0){cur=cur.replace(" "+clazz+" "," ")}}finalValue=value?jQuery.trim(cur):"";if(elem.className!==finalValue){elem.className=finalValue}}}}return this},toggleClass:function(value,stateVal){var type=typeof value;if(typeof stateVal==="boolean"&&type==="string"){return stateVal?this.addClass(value):this.removeClass(value)}if(jQuery.isFunction(value)){return this.each(function(i){jQuery(this).toggleClass(value.call(this,i,this.className,stateVal),stateVal)})}return this.each(function(){if(type==="string"){var className,i=0,self=jQuery(this),classNames=value.match(rnotwhite)||[];while(className=classNames[i++]){if(self.hasClass(className)){self.removeClass(className)}else{self.addClass(className)}}}else if(type===strundefined||type==="boolean"){if(this.className){jQuery._data(this,"__className__",this.className)}this.className=this.className||value===false?"":jQuery._data(this,"__className__")||""}})},hasClass:function(selector){var className=" "+selector+" ",i=0,l=this.length;for(;i<l;i++){if(this[i].nodeType===1&&(" "+this[i].className+" ").replace(rclass," ").indexOf(className)>=0){return true}}return false}});jQuery.each(("blur focus focusin focusout load resize scroll unload click dblclick "+"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave "+"change select submit keydown keypress keyup error contextmenu").split(" "),function(i,name){jQuery.fn[name]=function(data,fn){return arguments.length>0?this.on(name,null,data,fn):this.trigger(name)}});jQuery.fn.extend({hover:function(fnOver,fnOut){return this.mouseenter(fnOver).mouseleave(fnOut||fnOver)},bind:function(types,data,fn){return this.on(types,null,data,fn)},unbind:function(types,fn){return this.off(types,null,fn)},delegate:function(selector,types,data,fn){return this.on(types,selector,data,fn)},undelegate:function(selector,types,fn){return arguments.length===1?this.off(selector,"**"):this.off(types,selector||"**",fn)}});var nonce=jQuery.now();var rquery=/\?/;var rvalidtokens=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;jQuery.parseJSON=function(data){if(window.JSON&&window.JSON.parse){return window.JSON.parse(data+"")}var requireNonComma,depth=null,str=jQuery.trim(data+"");return str&&!jQuery.trim(str.replace(rvalidtokens,function(token,comma,open,close){if(requireNonComma&&comma){depth=0}if(depth===0){return token}requireNonComma=open||comma;depth+=!close-!open;return""}))?Function("return "+str)():jQuery.error("Invalid JSON: "+data)};jQuery.parseXML=function(data){var xml,tmp;if(!data||typeof data!=="string"){return null}try{if(window.DOMParser){tmp=new DOMParser;xml=tmp.parseFromString(data,"text/xml")}else{xml=new ActiveXObject("Microsoft.XMLDOM");xml.async="false";xml.loadXML(data)}}catch(e){xml=undefined}if(!xml||!xml.documentElement||xml.getElementsByTagName("parsererror").length){jQuery.error("Invalid XML: "+data)}return xml};var ajaxLocParts,ajaxLocation,rhash=/#.*$/,rts=/([?&])_=[^&]*/,rheaders=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,rlocalProtocol=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,rnoContent=/^(?:GET|HEAD)$/,rprotocol=/^\/\//,rurl=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,prefilters={},transports={},allTypes="*/".concat("*");try{ajaxLocation=location.href}catch(e){ajaxLocation=document.createElement("a");ajaxLocation.href="";ajaxLocation=ajaxLocation.href}ajaxLocParts=rurl.exec(ajaxLocation.toLowerCase())||[];function addToPrefiltersOrTransports(structure){return function(dataTypeExpression,func){if(typeof dataTypeExpression!=="string"){func=dataTypeExpression;dataTypeExpression="*"}var dataType,i=0,dataTypes=dataTypeExpression.toLowerCase().match(rnotwhite)||[];if(jQuery.isFunction(func)){while(dataType=dataTypes[i++]){if(dataType.charAt(0)==="+"){dataType=dataType.slice(1)||"*";(structure[dataType]=structure[dataType]||[]).unshift(func)}else{(structure[dataType]=structure[dataType]||[]).push(func)}}}}}function inspectPrefiltersOrTransports(structure,options,originalOptions,jqXHR){var inspected={},seekingTransport=structure===transports;function inspect(dataType){var selected;inspected[dataType]=true;jQuery.each(structure[dataType]||[],function(_,prefilterOrFactory){var dataTypeOrTransport=prefilterOrFactory(options,originalOptions,jqXHR);if(typeof dataTypeOrTransport==="string"&&!seekingTransport&&!inspected[dataTypeOrTransport]){options.dataTypes.unshift(dataTypeOrTransport);inspect(dataTypeOrTransport);return false}else if(seekingTransport){return!(selected=dataTypeOrTransport)}});return selected}return inspect(options.dataTypes[0])||!inspected["*"]&&inspect("*")}function ajaxExtend(target,src){var deep,key,flatOptions=jQuery.ajaxSettings.flatOptions||{};for(key in src){if(src[key]!==undefined){(flatOptions[key]?target:deep||(deep={}))[key]=src[key]}}if(deep){jQuery.extend(true,target,deep)}return target}function ajaxHandleResponses(s,jqXHR,responses){var firstDataType,ct,finalDataType,type,contents=s.contents,dataTypes=s.dataTypes;while(dataTypes[0]==="*"){dataTypes.shift();if(ct===undefined){ct=s.mimeType||jqXHR.getResponseHeader("Content-Type")}}if(ct){for(type in contents){if(contents[type]&&contents[type].test(ct)){dataTypes.unshift(type);break}}}if(dataTypes[0]in responses){finalDataType=dataTypes[0]}else{for(type in responses){if(!dataTypes[0]||s.converters[type+" "+dataTypes[0]]){finalDataType=type;break}if(!firstDataType){firstDataType=type}}finalDataType=finalDataType||firstDataType}if(finalDataType){if(finalDataType!==dataTypes[0]){dataTypes.unshift(finalDataType)}return responses[finalDataType]}}function ajaxConvert(s,response,jqXHR,isSuccess){var conv2,current,conv,tmp,prev,converters={},dataTypes=s.dataTypes.slice();if(dataTypes[1]){for(conv in s.converters){converters[conv.toLowerCase()]=s.converters[conv]}}current=dataTypes.shift();while(current){if(s.responseFields[current]){jqXHR[s.responseFields[current]]=response}if(!prev&&isSuccess&&s.dataFilter){response=s.dataFilter(response,s.dataType)}prev=current;current=dataTypes.shift();if(current){if(current==="*"){current=prev}else if(prev!=="*"&&prev!==current){conv=converters[prev+" "+current]||converters["* "+current];if(!conv){for(conv2 in converters){tmp=conv2.split(" ");if(tmp[1]===current){conv=converters[prev+" "+tmp[0]]||converters["* "+tmp[0]];if(conv){if(conv===true){conv=converters[conv2]}else if(converters[conv2]!==true){current=tmp[0];dataTypes.unshift(tmp[1])}break}}}}if(conv!==true){if(conv&&s["throws"]){response=conv(response)}else{try{response=conv(response)}catch(e){return{state:"parsererror",error:conv?e:"No conversion from "+prev+" to "+current}}}}}}}return{state:"success",data:response}}jQuery.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ajaxLocation,type:"GET",isLocal:rlocalProtocol.test(ajaxLocParts[1]),global:true,processData:true,async:true,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":allTypes,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":true,"text json":jQuery.parseJSON,"text xml":jQuery.parseXML},flatOptions:{url:true,context:true}},ajaxSetup:function(target,settings){return settings?ajaxExtend(ajaxExtend(target,jQuery.ajaxSettings),settings):ajaxExtend(jQuery.ajaxSettings,target)},ajaxPrefilter:addToPrefiltersOrTransports(prefilters),ajaxTransport:addToPrefiltersOrTransports(transports),ajax:function(url,options){if(typeof url==="object"){options=url;url=undefined}options=options||{};var parts,i,cacheURL,responseHeadersString,timeoutTimer,fireGlobals,transport,responseHeaders,s=jQuery.ajaxSetup({},options),callbackContext=s.context||s,globalEventContext=s.context&&(callbackContext.nodeType||callbackContext.jquery)?jQuery(callbackContext):jQuery.event,deferred=jQuery.Deferred(),completeDeferred=jQuery.Callbacks("once memory"),statusCode=s.statusCode||{},requestHeaders={},requestHeadersNames={},state=0,strAbort="canceled",jqXHR={readyState:0,getResponseHeader:function(key){var match;if(state===2){if(!responseHeaders){responseHeaders={};while(match=rheaders.exec(responseHeadersString)){responseHeaders[match[1].toLowerCase()]=match[2]}}match=responseHeaders[key.toLowerCase()]}return match==null?null:match},getAllResponseHeaders:function(){return state===2?responseHeadersString:null},setRequestHeader:function(name,value){var lname=name.toLowerCase();if(!state){name=requestHeadersNames[lname]=requestHeadersNames[lname]||name;requestHeaders[name]=value}return this},overrideMimeType:function(type){if(!state){s.mimeType=type}return this},statusCode:function(map){var code;if(map){if(state<2){for(code in map){statusCode[code]=[statusCode[code],map[code]]}}else{jqXHR.always(map[jqXHR.status])}}return this},abort:function(statusText){var finalText=statusText||strAbort;if(transport){transport.abort(finalText)}done(0,finalText);return this}};deferred.promise(jqXHR).complete=completeDeferred.add;jqXHR.success=jqXHR.done;jqXHR.error=jqXHR.fail;s.url=((url||s.url||ajaxLocation)+"").replace(rhash,"").replace(rprotocol,ajaxLocParts[1]+"//");s.type=options.method||options.type||s.method||s.type;s.dataTypes=jQuery.trim(s.dataType||"*").toLowerCase().match(rnotwhite)||[""];if(s.crossDomain==null){parts=rurl.exec(s.url.toLowerCase());s.crossDomain=!!(parts&&(parts[1]!==ajaxLocParts[1]||parts[2]!==ajaxLocParts[2]||(parts[3]||(parts[1]==="http:"?"80":"443"))!==(ajaxLocParts[3]||(ajaxLocParts[1]==="http:"?"80":"443"))))}if(s.data&&s.processData&&typeof s.data!=="string"){s.data=jQuery.param(s.data,s.traditional)}inspectPrefiltersOrTransports(prefilters,s,options,jqXHR);if(state===2){return jqXHR}fireGlobals=jQuery.event&&s.global;if(fireGlobals&&jQuery.active++===0){jQuery.event.trigger("ajaxStart")}s.type=s.type.toUpperCase();s.hasContent=!rnoContent.test(s.type);cacheURL=s.url;if(!s.hasContent){if(s.data){cacheURL=s.url+=(rquery.test(cacheURL)?"&":"?")+s.data;delete s.data}if(s.cache===false){s.url=rts.test(cacheURL)?cacheURL.replace(rts,"$1_="+nonce++):cacheURL+(rquery.test(cacheURL)?"&":"?")+"_="+nonce++}}if(s.ifModified){if(jQuery.lastModified[cacheURL]){jqXHR.setRequestHeader("If-Modified-Since",jQuery.lastModified[cacheURL])}if(jQuery.etag[cacheURL]){jqXHR.setRequestHeader("If-None-Match",jQuery.etag[cacheURL])}}if(s.data&&s.hasContent&&s.contentType!==false||options.contentType){jqXHR.setRequestHeader("Content-Type",s.contentType)}jqXHR.setRequestHeader("Accept",s.dataTypes[0]&&s.accepts[s.dataTypes[0]]?s.accepts[s.dataTypes[0]]+(s.dataTypes[0]!=="*"?", "+allTypes+"; q=0.01":""):s.accepts["*"]);for(i in s.headers){jqXHR.setRequestHeader(i,s.headers[i])}if(s.beforeSend&&(s.beforeSend.call(callbackContext,jqXHR,s)===false||state===2)){return jqXHR.abort()}strAbort="abort";for(i in{success:1,error:1,complete:1}){jqXHR[i](s[i])}transport=inspectPrefiltersOrTransports(transports,s,options,jqXHR);if(!transport){done(-1,"No Transport")}else{jqXHR.readyState=1;if(fireGlobals){globalEventContext.trigger("ajaxSend",[jqXHR,s])}if(s.async&&s.timeout>0){timeoutTimer=setTimeout(function(){jqXHR.abort("timeout")},s.timeout)}try{state=1;transport.send(requestHeaders,done)}catch(e){if(state<2){done(-1,e)}else{throw e}}}function done(status,nativeStatusText,responses,headers){var isSuccess,success,error,response,modified,statusText=nativeStatusText;if(state===2){return}state=2;if(timeoutTimer){clearTimeout(timeoutTimer)}transport=undefined;responseHeadersString=headers||"";jqXHR.readyState=status>0?4:0;isSuccess=status>=200&&status<300||status===304;if(responses){response=ajaxHandleResponses(s,jqXHR,responses)}response=ajaxConvert(s,response,jqXHR,isSuccess);if(isSuccess){if(s.ifModified){modified=jqXHR.getResponseHeader("Last-Modified");if(modified){jQuery.lastModified[cacheURL]=modified}modified=jqXHR.getResponseHeader("etag");if(modified){jQuery.etag[cacheURL]=modified}}if(status===204||s.type==="HEAD"){statusText="nocontent"}else if(status===304){statusText="notmodified"}else{statusText=response.state;success=response.data;error=response.error;isSuccess=!error}}else{error=statusText;if(status||!statusText){statusText="error";if(status<0){status=0}}}jqXHR.status=status;jqXHR.statusText=(nativeStatusText||statusText)+"";if(isSuccess){deferred.resolveWith(callbackContext,[success,statusText,jqXHR])}else{deferred.rejectWith(callbackContext,[jqXHR,statusText,error])}jqXHR.statusCode(statusCode);statusCode=undefined;if(fireGlobals){globalEventContext.trigger(isSuccess?"ajaxSuccess":"ajaxError",[jqXHR,s,isSuccess?success:error])}completeDeferred.fireWith(callbackContext,[jqXHR,statusText]);if(fireGlobals){globalEventContext.trigger("ajaxComplete",[jqXHR,s]);if(!--jQuery.active){jQuery.event.trigger("ajaxStop")}}}return jqXHR},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json")},getScript:function(url,callback){return jQuery.get(url,undefined,callback,"script")}});jQuery.each(["get","post"],function(i,method){jQuery[method]=function(url,data,callback,type){if(jQuery.isFunction(data)){type=type||callback;callback=data;data=undefined}return jQuery.ajax({url:url,type:method,dataType:type,data:data,success:callback})}});jQuery._evalUrl=function(url){return jQuery.ajax({url:url,type:"GET",dataType:"script",async:false,global:false,"throws":true})};jQuery.fn.extend({wrapAll:function(html){if(jQuery.isFunction(html)){return this.each(function(i){jQuery(this).wrapAll(html.call(this,i))})}if(this[0]){var wrap=jQuery(html,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){wrap.insertBefore(this[0])}wrap.map(function(){var elem=this;while(elem.firstChild&&elem.firstChild.nodeType===1){elem=elem.firstChild}return elem}).append(this)}return this},wrapInner:function(html){if(jQuery.isFunction(html)){return this.each(function(i){jQuery(this).wrapInner(html.call(this,i))})}return this.each(function(){var self=jQuery(this),contents=self.contents();if(contents.length){contents.wrapAll(html)}else{self.append(html)}})},wrap:function(html){var isFunction=jQuery.isFunction(html);return this.each(function(i){jQuery(this).wrapAll(isFunction?html.call(this,i):html)})},unwrap:function(){return this.parent().each(function(){if(!jQuery.nodeName(this,"body")){jQuery(this).replaceWith(this.childNodes)}}).end()}});jQuery.expr.filters.hidden=function(elem){return elem.offsetWidth<=0&&elem.offsetHeight<=0||!support.reliableHiddenOffsets()&&(elem.style&&elem.style.display||jQuery.css(elem,"display"))==="none"};jQuery.expr.filters.visible=function(elem){return!jQuery.expr.filters.hidden(elem)};var r20=/%20/g,rbracket=/\[\]$/,rCRLF=/\r?\n/g,rsubmitterTypes=/^(?:submit|button|image|reset|file)$/i,rsubmittable=/^(?:input|select|textarea|keygen)/i;function buildParams(prefix,obj,traditional,add){var name;if(jQuery.isArray(obj)){jQuery.each(obj,function(i,v){if(traditional||rbracket.test(prefix)){add(prefix,v)}else{buildParams(prefix+"["+(typeof v==="object"?i:"")+"]",v,traditional,add)}})}else if(!traditional&&jQuery.type(obj)==="object"){for(name in obj){buildParams(prefix+"["+name+"]",obj[name],traditional,add)}}else{add(prefix,obj)}}jQuery.param=function(a,traditional){var prefix,s=[],add=function(key,value){value=jQuery.isFunction(value)?value():value==null?"":value;s[s.length]=encodeURIComponent(key)+"="+encodeURIComponent(value)};if(traditional===undefined){traditional=jQuery.ajaxSettings&&jQuery.ajaxSettings.traditional}if(jQuery.isArray(a)||a.jquery&&!jQuery.isPlainObject(a)){jQuery.each(a,function(){add(this.name,this.value)})}else{for(prefix in a){buildParams(prefix,a[prefix],traditional,add)}}return s.join("&").replace(r20,"+")};jQuery.fn.extend({serialize:function(){return jQuery.param(this.serializeArray()); | ||
22 | },serializeArray:function(){return this.map(function(){var elements=jQuery.prop(this,"elements");return elements?jQuery.makeArray(elements):this}).filter(function(){var type=this.type;return this.name&&!jQuery(this).is(":disabled")&&rsubmittable.test(this.nodeName)&&!rsubmitterTypes.test(type)&&(this.checked||!rcheckableType.test(type))}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:jQuery.isArray(val)?jQuery.map(val,function(val){return{name:elem.name,value:val.replace(rCRLF,"\r\n")}}):{name:elem.name,value:val.replace(rCRLF,"\r\n")}}).get()}});jQuery.ajaxSettings.xhr=window.ActiveXObject!==undefined?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&createStandardXHR()||createActiveXHR()}:createStandardXHR;var xhrId=0,xhrCallbacks={},xhrSupported=jQuery.ajaxSettings.xhr();if(window.attachEvent){window.attachEvent("onunload",function(){for(var key in xhrCallbacks){xhrCallbacks[key](undefined,true)}})}support.cors=!!xhrSupported&&"withCredentials"in xhrSupported;xhrSupported=support.ajax=!!xhrSupported;if(xhrSupported){jQuery.ajaxTransport(function(options){if(!options.crossDomain||support.cors){var callback;return{send:function(headers,complete){var i,xhr=options.xhr(),id=++xhrId;xhr.open(options.type,options.url,options.async,options.username,options.password);if(options.xhrFields){for(i in options.xhrFields){xhr[i]=options.xhrFields[i]}}if(options.mimeType&&xhr.overrideMimeType){xhr.overrideMimeType(options.mimeType)}if(!options.crossDomain&&!headers["X-Requested-With"]){headers["X-Requested-With"]="XMLHttpRequest"}for(i in headers){if(headers[i]!==undefined){xhr.setRequestHeader(i,headers[i]+"")}}xhr.send(options.hasContent&&options.data||null);callback=function(_,isAbort){var status,statusText,responses;if(callback&&(isAbort||xhr.readyState===4)){delete xhrCallbacks[id];callback=undefined;xhr.onreadystatechange=jQuery.noop;if(isAbort){if(xhr.readyState!==4){xhr.abort()}}else{responses={};status=xhr.status;if(typeof xhr.responseText==="string"){responses.text=xhr.responseText}try{statusText=xhr.statusText}catch(e){statusText=""}if(!status&&options.isLocal&&!options.crossDomain){status=responses.text?200:404}else if(status===1223){status=204}}}if(responses){complete(status,statusText,responses,xhr.getAllResponseHeaders())}};if(!options.async){callback()}else if(xhr.readyState===4){setTimeout(callback)}else{xhr.onreadystatechange=xhrCallbacks[id]=callback}},abort:function(){if(callback){callback(undefined,true)}}}}})}function createStandardXHR(){try{return new window.XMLHttpRequest}catch(e){}}function createActiveXHR(){try{return new window.ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}jQuery.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(text){jQuery.globalEval(text);return text}}});jQuery.ajaxPrefilter("script",function(s){if(s.cache===undefined){s.cache=false}if(s.crossDomain){s.type="GET";s.global=false}});jQuery.ajaxTransport("script",function(s){if(s.crossDomain){var script,head=document.head||jQuery("head")[0]||document.documentElement;return{send:function(_,callback){script=document.createElement("script");script.async=true;if(s.scriptCharset){script.charset=s.scriptCharset}script.src=s.url;script.onload=script.onreadystatechange=function(_,isAbort){if(isAbort||!script.readyState||/loaded|complete/.test(script.readyState)){script.onload=script.onreadystatechange=null;if(script.parentNode){script.parentNode.removeChild(script)}script=null;if(!isAbort){callback(200,"success")}}};head.insertBefore(script,head.firstChild)},abort:function(){if(script){script.onload(undefined,true)}}}}});var oldCallbacks=[],rjsonp=/(=)\?(?=&|$)|\?\?/;jQuery.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var callback=oldCallbacks.pop()||jQuery.expando+"_"+nonce++;this[callback]=true;return callback}});jQuery.ajaxPrefilter("json jsonp",function(s,originalSettings,jqXHR){var callbackName,overwritten,responseContainer,jsonProp=s.jsonp!==false&&(rjsonp.test(s.url)?"url":typeof s.data==="string"&&!(s.contentType||"").indexOf("application/x-www-form-urlencoded")&&rjsonp.test(s.data)&&"data");if(jsonProp||s.dataTypes[0]==="jsonp"){callbackName=s.jsonpCallback=jQuery.isFunction(s.jsonpCallback)?s.jsonpCallback():s.jsonpCallback;if(jsonProp){s[jsonProp]=s[jsonProp].replace(rjsonp,"$1"+callbackName)}else if(s.jsonp!==false){s.url+=(rquery.test(s.url)?"&":"?")+s.jsonp+"="+callbackName}s.converters["script json"]=function(){if(!responseContainer){jQuery.error(callbackName+" was not called")}return responseContainer[0]};s.dataTypes[0]="json";overwritten=window[callbackName];window[callbackName]=function(){responseContainer=arguments};jqXHR.always(function(){window[callbackName]=overwritten;if(s[callbackName]){s.jsonpCallback=originalSettings.jsonpCallback;oldCallbacks.push(callbackName)}if(responseContainer&&jQuery.isFunction(overwritten)){overwritten(responseContainer[0])}responseContainer=overwritten=undefined});return"script"}});jQuery.parseHTML=function(data,context,keepScripts){if(!data||typeof data!=="string"){return null}if(typeof context==="boolean"){keepScripts=context;context=false}context=context||document;var parsed=rsingleTag.exec(data),scripts=!keepScripts&&[];if(parsed){return[context.createElement(parsed[1])]}parsed=jQuery.buildFragment([data],context,scripts);if(scripts&&scripts.length){jQuery(scripts).remove()}return jQuery.merge([],parsed.childNodes)};var _load=jQuery.fn.load;jQuery.fn.load=function(url,params,callback){if(typeof url!=="string"&&_load){return _load.apply(this,arguments)}var selector,response,type,self=this,off=url.indexOf(" ");if(off>=0){selector=jQuery.trim(url.slice(off,url.length));url=url.slice(0,off)}if(jQuery.isFunction(params)){callback=params;params=undefined}else if(params&&typeof params==="object"){type="POST"}if(self.length>0){jQuery.ajax({url:url,type:type,dataType:"html",data:params}).done(function(responseText){response=arguments;self.html(selector?jQuery("<div>").append(jQuery.parseHTML(responseText)).find(selector):responseText)}).complete(callback&&function(jqXHR,status){self.each(callback,response||[jqXHR.responseText,status,jqXHR])})}return this};jQuery.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(i,type){jQuery.fn[type]=function(fn){return this.on(type,fn)}});jQuery.expr.filters.animated=function(elem){return jQuery.grep(jQuery.timers,function(fn){return elem===fn.elem}).length};var docElem=window.document.documentElement;function getWindow(elem){return jQuery.isWindow(elem)?elem:elem.nodeType===9?elem.defaultView||elem.parentWindow:false}jQuery.offset={setOffset:function(elem,options,i){var curPosition,curLeft,curCSSTop,curTop,curOffset,curCSSLeft,calculatePosition,position=jQuery.css(elem,"position"),curElem=jQuery(elem),props={};if(position==="static"){elem.style.position="relative"}curOffset=curElem.offset();curCSSTop=jQuery.css(elem,"top");curCSSLeft=jQuery.css(elem,"left");calculatePosition=(position==="absolute"||position==="fixed")&&jQuery.inArray("auto",[curCSSTop,curCSSLeft])>-1;if(calculatePosition){curPosition=curElem.position();curTop=curPosition.top;curLeft=curPosition.left}else{curTop=parseFloat(curCSSTop)||0;curLeft=parseFloat(curCSSLeft)||0}if(jQuery.isFunction(options)){options=options.call(elem,i,curOffset)}if(options.top!=null){props.top=options.top-curOffset.top+curTop}if(options.left!=null){props.left=options.left-curOffset.left+curLeft}if("using"in options){options.using.call(elem,props)}else{curElem.css(props)}}};jQuery.fn.extend({offset:function(options){if(arguments.length){return options===undefined?this:this.each(function(i){jQuery.offset.setOffset(this,options,i)})}var docElem,win,box={top:0,left:0},elem=this[0],doc=elem&&elem.ownerDocument;if(!doc){return}docElem=doc.documentElement;if(!jQuery.contains(docElem,elem)){return box}if(typeof elem.getBoundingClientRect!==strundefined){box=elem.getBoundingClientRect()}win=getWindow(doc);return{top:box.top+(win.pageYOffset||docElem.scrollTop)-(docElem.clientTop||0),left:box.left+(win.pageXOffset||docElem.scrollLeft)-(docElem.clientLeft||0)}},position:function(){if(!this[0]){return}var offsetParent,offset,parentOffset={top:0,left:0},elem=this[0];if(jQuery.css(elem,"position")==="fixed"){offset=elem.getBoundingClientRect()}else{offsetParent=this.offsetParent();offset=this.offset();if(!jQuery.nodeName(offsetParent[0],"html")){parentOffset=offsetParent.offset()}parentOffset.top+=jQuery.css(offsetParent[0],"borderTopWidth",true);parentOffset.left+=jQuery.css(offsetParent[0],"borderLeftWidth",true)}return{top:offset.top-parentOffset.top-jQuery.css(elem,"marginTop",true),left:offset.left-parentOffset.left-jQuery.css(elem,"marginLeft",true)}},offsetParent:function(){return this.map(function(){var offsetParent=this.offsetParent||docElem;while(offsetParent&&(!jQuery.nodeName(offsetParent,"html")&&jQuery.css(offsetParent,"position")==="static")){offsetParent=offsetParent.offsetParent}return offsetParent||docElem})}});jQuery.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(method,prop){var top=/Y/.test(prop);jQuery.fn[method]=function(val){return access(this,function(elem,method,val){var win=getWindow(elem);if(val===undefined){return win?prop in win?win[prop]:win.document.documentElement[method]:elem[method]}if(win){win.scrollTo(!top?val:jQuery(win).scrollLeft(),top?val:jQuery(win).scrollTop())}else{elem[method]=val}},method,val,arguments.length,null)}});jQuery.each(["top","left"],function(i,prop){jQuery.cssHooks[prop]=addGetHookIf(support.pixelPosition,function(elem,computed){if(computed){computed=curCSS(elem,prop);return rnumnonpx.test(computed)?jQuery(elem).position()[prop]+"px":computed}})});jQuery.each({Height:"height",Width:"width"},function(name,type){jQuery.each({padding:"inner"+name,content:type,"":"outer"+name},function(defaultExtra,funcName){jQuery.fn[funcName]=function(margin,value){var chainable=arguments.length&&(defaultExtra||typeof margin!=="boolean"),extra=defaultExtra||(margin===true||value===true?"margin":"border");return access(this,function(elem,type,value){var doc;if(jQuery.isWindow(elem)){return elem.document.documentElement["client"+name]}if(elem.nodeType===9){doc=elem.documentElement;return Math.max(elem.body["scroll"+name],doc["scroll"+name],elem.body["offset"+name],doc["offset"+name],doc["client"+name])}return value===undefined?jQuery.css(elem,type,extra):jQuery.style(elem,type,value,extra)},type,chainable?margin:undefined,chainable,null)}})});jQuery.fn.size=function(){return this.length};jQuery.fn.andSelf=jQuery.fn.addBack;if(typeof define==="function"&&define.amd){define("jquery",[],function(){return jQuery})}var _jQuery=window.jQuery,_$=window.$;jQuery.noConflict=function(deep){if(window.$===jQuery){window.$=_$}if(deep&&window.jQuery===jQuery){window.jQuery=_jQuery}return jQuery};if(typeof noGlobal===strundefined){window.jQuery=window.$=jQuery}return jQuery})},{}],13:[function(require,module,exports){"use strict";var extend=require("backbone-extend-standalone");var Promise=require("es6-promise").Promise;var authz=require("./authz");var identity=require("./identity");var notification=require("./notification");var registry=require("./registry");var storage=require("./storage");function App(){this.modules=[];this.registry=new registry.Registry;this._started=false;this.registry.registerUtility(notification.defaultNotifier,"notifier");this.include(authz.acl);this.include(identity.simple);this.include(storage.noop)}App.prototype.include=function(module,options){var mod=module(options);if(typeof mod.configure==="function"){mod.configure(this.registry)}this.modules.push(mod);return this};App.prototype.start=function(){if(this._started){return}this._started=true;var self=this;var reg=this.registry;this.authz=reg.getUtility("authorizationPolicy");this.ident=reg.getUtility("identityPolicy");this.notify=reg.getUtility("notifier");this.annotations=new storage.StorageAdapter(reg.getUtility("storage"),function(){return self.runHook.apply(self,arguments)});return this.runHook("start",[this])};App.prototype.destroy=function(){return this.runHook("destroy")};App.prototype.runHook=function(name,args){var results=[];for(var i=0,len=this.modules.length;i<len;i++){var mod=this.modules[i];if(typeof mod[name]==="function"){results.push(mod[name].apply(mod,args))}}return Promise.all(results)};App.extend=extend;exports.App=App},{"./authz":14,"./identity":15,"./notification":16,"./registry":17,"./storage":18,"backbone-extend-standalone":3,"es6-promise":5}],14:[function(require,module,exports){"use strict";var AclAuthzPolicy;exports.acl=function acl(){var authorization=new AclAuthzPolicy;return{configure:function(registry){registry.registerUtility(authorization,"authorizationPolicy")}}};AclAuthzPolicy=exports.AclAuthzPolicy=function AclAuthzPolicy(){};AclAuthzPolicy.prototype.permits=function(action,context,identity){var userid=this.authorizedUserId(identity);var permissions=context.permissions;if(permissions){var tokens=permissions[action];if(typeof tokens==="undefined"||tokens===null){return true}for(var i=0,len=tokens.length;i<len;i++){if(userid===tokens[i]){return true}}return false}else if(context.user){return userid===context.user}return true};AclAuthzPolicy.prototype.authorizedUserId=function(identity){return identity}},{}],15:[function(require,module,exports){"use strict";var SimpleIdentityPolicy;exports.simple=function simple(){var identity=new SimpleIdentityPolicy;return{configure:function(registry){registry.registerUtility(identity,"identityPolicy")},beforeAnnotationCreated:function(annotation){annotation.user=identity.who()}}};SimpleIdentityPolicy=function SimpleIdentityPolicy(){this.identity=null};exports.SimpleIdentityPolicy=SimpleIdentityPolicy;SimpleIdentityPolicy.prototype.who=function(){return this.identity}},{}],16:[function(require,module,exports){(function(global){"use strict";var util=require("./util");var $=util.$;var INFO="info",SUCCESS="success",ERROR="error";var bannerTemplate="<div class='annotator-notice'></div>";var bannerClasses={show:"annotator-notice-show",info:"annotator-notice-info",success:"annotator-notice-success",error:"annotator-notice-error"};function banner(message,severity){if(typeof severity==="undefined"||severity===null){severity=INFO}var element=$(bannerTemplate)[0];var closed=false;var close=function(){if(closed){return}closed=true;$(element).removeClass(bannerClasses.show).removeClass(bannerClasses[severity]);setTimeout(function(){$(element).remove()},500)};$(element).addClass(bannerClasses.show).addClass(bannerClasses[severity]).html(util.escapeHtml(message||"")).appendTo(global.document.body);$(element).on("click",close);setTimeout(close,5e3);return{close:close}}exports.banner=banner;exports.defaultNotifier=banner;exports.INFO=INFO;exports.SUCCESS=SUCCESS;exports.ERROR=ERROR}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"./util":30}],17:[function(require,module,exports){"use strict";function Registry(){this.utilities={}}Registry.prototype.registerUtility=function(component,iface){this.utilities[iface]=component};Registry.prototype.getUtility=function(iface){var component=this.queryUtility(iface);if(component===null){throw new LookupError(iface)}return component};Registry.prototype.queryUtility=function(iface){var component=this.utilities[iface];if(typeof component==="undefined"||component===null){return null}return component};function LookupError(iface){this.name="LookupError";this.message='No utility registered for interface "'+iface+'".'}LookupError.prototype=Object.create(Error.prototype);LookupError.prototype.constructor=LookupError;exports.LookupError=LookupError;exports.Registry=Registry},{}],18:[function(require,module,exports){"use strict";var util=require("./util");var $=util.$;var _t=util.gettext;var Promise=util.Promise;var id=function(){var counter;counter=-1;return function(){return counter+=1}}();exports.debug=function(){function trace(action,annotation){var copyAnno=JSON.parse(JSON.stringify(annotation));console.debug("annotator.storage.debug: "+action,copyAnno)}return{create:function(annotation){annotation.id=id();trace("create",annotation);return annotation},update:function(annotation){trace("update",annotation);return annotation},"delete":function(annotation){trace("destroy",annotation);return annotation},query:function(queryObj){trace("query",queryObj);return{results:[],meta:{total:0}}},configure:function(registry){registry.registerUtility(this,"storage")}}};exports.noop=function(){return{create:function(annotation){if(typeof annotation.id==="undefined"||annotation.id===null){annotation.id=id()}return annotation},update:function(annotation){return annotation},"delete":function(annotation){return annotation},query:function(){return{results:[]}},configure:function(registry){registry.registerUtility(this,"storage")}}};var HttpStorage;exports.http=function http(options){var notify=function(){};if(typeof options==="undefined"||options===null){options={}}options.onError=options.onError||function(msg,xhr){console.error(msg,xhr);notify(msg,"error")};var storage=new HttpStorage(options);return{configure:function(registry){registry.registerUtility(storage,"storage")},start:function(app){notify=app.notify}}};HttpStorage=exports.HttpStorage=function HttpStorage(options){this.options=$.extend(true,{},HttpStorage.options,options);this.onError=this.options.onError};HttpStorage.prototype.create=function(annotation){return this._apiRequest("create",annotation)};HttpStorage.prototype.update=function(annotation){return this._apiRequest("update",annotation)};HttpStorage.prototype["delete"]=function(annotation){return this._apiRequest("destroy",annotation)};HttpStorage.prototype.query=function(queryObj){return this._apiRequest("search",queryObj).then(function(obj){var rows=obj.rows;delete obj.rows;return{results:rows,meta:obj}})};HttpStorage.prototype.setHeader=function(key,value){this.options.headers[key]=value};HttpStorage.prototype._apiRequest=function(action,obj){var id=obj&&obj.id;var url=this._urlFor(action,id);var options=this._apiRequestOptions(action,obj);var request=$.ajax(url,options);request._id=id;request._action=action;return request};HttpStorage.prototype._apiRequestOptions=function(action,obj){var method=this._methodFor(action);var self=this;var opts={type:method,dataType:"json",error:function(){self._onError.apply(self,arguments)},headers:this.options.headers};if(this.options.emulateHTTP&&(method==="PUT"||method==="DELETE")){opts.headers=$.extend(opts.headers,{"X-HTTP-Method-Override":method});opts.type="POST"}if(action==="search"){opts=$.extend(opts,{data:obj});return opts}var data=obj&&JSON.stringify(obj);if(this.options.emulateJSON){opts.data={json:data};if(this.options.emulateHTTP){opts.data._method=method}return opts}opts=$.extend(opts,{data:data,contentType:"application/json; charset=utf-8"});return opts};HttpStorage.prototype._urlFor=function(action,id){if(typeof id==="undefined"||id===null){id=""}var url="";if(typeof this.options.prefix!=="undefined"&&this.options.prefix!==null){url=this.options.prefix}url+=this.options.urls[action];url=url.replace(/idAnnotation/,id);return url};HttpStorage.prototype._methodFor=function(action){var table={create:"POST",update:"PUT",destroy:"DELETE",search:"GET"};return table[action]};HttpStorage.prototype._onError=function(xhr){if(typeof this.onError!=="function"){return}var message;if(xhr.status===400){message=_t("The annotation store did not understand the request! "+"(Error 400)")}else if(xhr.status===401){message=_t("You must be logged in to perform this operation! "+"(Error 401)")}else if(xhr.status===403){message=_t("You don't have permission to perform this operation! "+"(Error 403)")}else if(xhr.status===404){message=_t("Could not connect to the annotation store! "+"(Error 404)")}else if(xhr.status===500){message=_t("Internal error in annotation store! "+"(Error 500)")}else{message=_t("Unknown error while speaking to annotation store!")}this.onError(message,xhr)};HttpStorage.options={emulateHTTP:false,emulateJSON:false,headers:{},onError:function(message){console.error("API request failed: "+message)},prefix:"/store",urls:{create:"/annotations",update:"/annotations/idAnnotation",destroy:"/annotations/idAnnotation",search:"/search"}};function StorageAdapter(store,runHook){this.store=store;this.runHook=runHook}StorageAdapter.prototype.create=function(obj){if(typeof obj==="undefined"||obj===null){obj={}}return this._cycle(obj,"create","beforeAnnotationCreated","annotationCreated")};StorageAdapter.prototype.update=function(obj){if(typeof obj.id==="undefined"||obj.id===null){throw new TypeError("annotation must have an id for update()")}return this._cycle(obj,"update","beforeAnnotationUpdated","annotationUpdated")};StorageAdapter.prototype["delete"]=function(obj){if(typeof obj.id==="undefined"||obj.id===null){throw new TypeError("annotation must have an id for delete()")}return this._cycle(obj,"delete","beforeAnnotationDeleted","annotationDeleted")};StorageAdapter.prototype.query=function(query){return Promise.resolve(this.store.query(query))};StorageAdapter.prototype.load=function(query){var self=this;return this.query(query).then(function(data){self.runHook("annotationsLoaded",[data.results])})};StorageAdapter.prototype._cycle=function(obj,storeFunc,beforeEvent,afterEvent){var self=this;return this.runHook(beforeEvent,[obj]).then(function(){var safeCopy=$.extend(true,{},obj);delete safeCopy._local;var result=self.store[storeFunc](safeCopy);return Promise.resolve(result)}).then(function(ret){for(var k in obj){if(obj.hasOwnProperty(k)){if(k!=="_local"){delete obj[k]}}}$.extend(obj,ret);self.runHook(afterEvent,[obj]);return obj})};exports.StorageAdapter=StorageAdapter},{"./util":30}],19:[function(require,module,exports){exports.main=require("./ui/main").main;exports.adder=require("./ui/adder");exports.editor=require("./ui/editor");exports.filter=require("./ui/filter");exports.highlighter=require("./ui/highlighter");exports.markdown=require("./ui/markdown");exports.tags=require("./ui/tags");exports.textselector=require("./ui/textselector");exports.viewer=require("./ui/viewer");exports.widget=require("./ui/widget")},{"./ui/adder":20,"./ui/editor":21,"./ui/filter":22,"./ui/highlighter":23,"./ui/main":24,"./ui/markdown":25,"./ui/tags":26,"./ui/textselector":27,"./ui/viewer":28,"./ui/widget":29}],20:[function(require,module,exports){"use strict";var Widget=require("./widget").Widget,util=require("../util");var $=util.$;var _t=util.gettext;var NS="annotator-adder";var Adder=Widget.extend({constructor:function(options){Widget.call(this,options);this.ignoreMouseup=false;this.annotation=null;this.onCreate=this.options.onCreate;var self=this;this.element.on("click."+NS,"button",function(e){self._onClick(e)}).on("mousedown."+NS,"button",function(e){self._onMousedown(e)});this.document=this.element[0].ownerDocument;$(this.document.body).on("mouseup."+NS,function(e){self._onMouseup(e)})},destroy:function(){this.element.off("."+NS);$(this.document.body).off("."+NS);Widget.prototype.destroy.call(this)},load:function(annotation,position){this.annotation=annotation;this.show(position)},show:function(position){if(typeof position!=="undefined"&&position!==null){this.element.css({top:position.top,left:position.left})}Widget.prototype.show.call(this)},_onMousedown:function(event){if(event.which>1){return}event.preventDefault();this.ignoreMouseup=true},_onMouseup:function(event){if(event.which>1){return}if(this.ignoreMouseup){event.stopImmediatePropagation()}},_onClick:function(event){if(event.which>1){return}event.preventDefault();this.hide();this.ignoreMouseup=false;if(this.annotation!==null&&typeof this.onCreate==="function"){this.onCreate(this.annotation,event)}}});Adder.template=['<div class="annotator-adder annotator-hide">',' <button type="button">'+_t("Annotate")+"</button>","</div>"].join("\n");Adder.options={onCreate:null};exports.Adder=Adder},{"../util":30,"./widget":29}],21:[function(require,module,exports){"use strict";var Widget=require("./widget").Widget,util=require("../util");var $=util.$;var _t=util.gettext;var Promise=util.Promise;var NS="annotator-editor";var id=function(){var counter;counter=-1;return function(){return counter+=1}}();function preventEventDefault(event){if(typeof event!=="undefined"&&event!==null&&typeof event.preventDefault==="function"){event.preventDefault()}}var dragTracker=exports.dragTracker=function dragTracker(handle,callback){var lastPos=null,throttled=false;function mouseMove(e){if(throttled||lastPos===null){return}var delta={y:e.pageY-lastPos.top,x:e.pageX-lastPos.left};var trackLastMove=true;if(typeof callback==="function"){trackLastMove=callback(delta)}if(trackLastMove!==false){lastPos={top:e.pageY,left:e.pageX}}throttled=true;setTimeout(function(){throttled=false},1e3/60)}function mouseUp(){lastPos=null;$(handle.ownerDocument).off("mouseup",mouseUp).off("mousemove",mouseMove)}function mouseDown(e){if(e.target!==handle){return}lastPos={top:e.pageY,left:e.pageX};$(handle.ownerDocument).on("mouseup",mouseUp).on("mousemove",mouseMove);e.preventDefault()}function destroy(){$(handle).off("mousedown",mouseDown)}$(handle).on("mousedown",mouseDown);return{destroy:destroy}};var resizer=exports.resizer=function resizer(element,handle,options){var $el=$(element);if(typeof options==="undefined"||options===null){options={}}function translate(delta){var directionX=1,directionY=-1;if(typeof options.invertedX==="function"&&options.invertedX()){directionX=-1}if(typeof options.invertedY==="function"&&options.invertedY()){directionY=1}return{x:delta.x*directionX,y:delta.y*directionY}}function resize(delta){var height=$el.height(),width=$el.width(),translated=translate(delta);if(Math.abs(translated.x)>0){$el.width(width+translated.x)}if(Math.abs(translated.y)>0){$el.height(height+translated.y)}var didChange=$el.height()!==height||$el.width()!==width;return didChange}return dragTracker(handle,resize)};var mover=exports.mover=function mover(element,handle){function move(delta){$(element).css({top:parseInt($(element).css("top"),10)+delta.y,left:parseInt($(element).css("left"),10)+delta.x})}return dragTracker(handle,move)};var Editor=exports.Editor=Widget.extend({constructor:function(options){Widget.call(this,options);this.fields=[];this.annotation={};if(this.options.defaultFields){this.addField({type:"textarea",label:_t("Comments")+"…",load:function(field,annotation){$(field).find("textarea").val(annotation.text||"")},submit:function(field,annotation){annotation.text=$(field).find("textarea").val()}})}var self=this;this.element.on("submit."+NS,"form",function(e){self._onFormSubmit(e)}).on("click."+NS,".annotator-save",function(e){self._onSaveClick(e)}).on("click."+NS,".annotator-cancel",function(e){self._onCancelClick(e)}).on("mouseover."+NS,".annotator-cancel",function(e){self._onCancelMouseover(e)}).on("keydown."+NS,"textarea",function(e){self._onTextareaKeydown(e)})},destroy:function(){this.element.off("."+NS);Widget.prototype.destroy.call(this)},show:function(position){if(typeof position!=="undefined"&&position!==null){this.element.css({top:position.top,left:position.left})}this.element.find(".annotator-save").addClass(this.classes.focus);Widget.prototype.show.call(this);this.element.find(":input:first").focus();this._setupDraggables()},load:function(annotation,position){this.annotation=annotation;for(var i=0,len=this.fields.length;i<len;i++){var field=this.fields[i];field.load(field.element,this.annotation)}var self=this;return new Promise(function(resolve,reject){self.dfd={resolve:resolve,reject:reject};self.show(position)})},submit:function(){for(var i=0,len=this.fields.length;i<len;i++){var field=this.fields[i];field.submit(field.element,this.annotation)}if(typeof this.dfd!=="undefined"&&this.dfd!==null){this.dfd.resolve()}this.hide()},cancel:function(){if(typeof this.dfd!=="undefined"&&this.dfd!==null){this.dfd.reject("editing cancelled")}this.hide()},addField:function(options){var field=$.extend({id:"annotator-field-"+id(),type:"input",label:"",load:function(){},submit:function(){}},options);var input=null,element=$('<li class="annotator-item" />');field.element=element[0];if(field.type==="textarea"){input=$("<textarea />")}else if(field.type==="checkbox"){input=$('<input type="checkbox" />')}else if(field.type==="input"){input=$("<input />")}else if(field.type==="select"){input=$("<select />")}element.append(input);input.attr({id:field.id,placeholder:field.label});if(field.type==="checkbox"){element.addClass("annotator-checkbox");element.append($("<label />",{"for":field.id,html:field.label}))}this.element.find("ul:first").append(element);this.fields.push(field);return field.element},checkOrientation:function(){Widget.prototype.checkOrientation.call(this);var list=this.element.find("ul").first(),controls=this.element.find(".annotator-controls");if(this.element.hasClass(this.classes.invert.y)){controls.insertBefore(list)}else if(controls.is(":first-child")){controls.insertAfter(list)}return this},_onFormSubmit:function(event){preventEventDefault(event);this.submit()},_onSaveClick:function(event){preventEventDefault(event);this.submit()},_onCancelClick:function(event){preventEventDefault(event);this.cancel()},_onCancelMouseover:function(){this.element.find("."+this.classes.focus).removeClass(this.classes.focus)},_onTextareaKeydown:function(event){if(event.which===27){this.cancel()}else if(event.which===13&&!event.shiftKey){this.submit()}},_setupDraggables:function(){if(typeof this._resizer!=="undefined"&&this._resizer!==null){this._resizer.destroy()}if(typeof this._mover!=="undefined"&&this._mover!==null){this._mover.destroy()}this.element.find(".annotator-resize").remove();var cornerItem;if(this.element.hasClass(this.classes.invert.y)){cornerItem=this.element.find(".annotator-item:last")}else{cornerItem=this.element.find(".annotator-item:first")}if(cornerItem){$('<span class="annotator-resize"></span>').appendTo(cornerItem)}var controls=this.element.find(".annotator-controls")[0],textarea=this.element.find("textarea:first")[0],resizeHandle=this.element.find(".annotator-resize")[0],self=this;this._resizer=resizer(textarea,resizeHandle,{invertedX:function(){return self.element.hasClass(self.classes.invert.x)},invertedY:function(){return self.element.hasClass(self.classes.invert.y)}});this._mover=mover(this.element[0],controls)}});Editor.classes={hide:"annotator-hide",focus:"annotator-focus"};Editor.template=['<div class="annotator-outer annotator-editor annotator-hide">',' <form class="annotator-widget">',' <ul class="annotator-listing"></ul>',' <div class="annotator-controls">',' <a href="#cancel" class="annotator-cancel">'+_t("Cancel")+"</a>",' <a href="#save"',' class="annotator-save annotator-focus">'+_t("Save")+"</a>"," </div>"," </form>","</div>"].join("\n");Editor.options={defaultFields:true};exports.standalone=function standalone(options){var widget=new exports.Editor(options);return{destroy:function(){widget.destroy()},beforeAnnotationCreated:function(annotation){return widget.load(annotation)},beforeAnnotationUpdated:function(annotation){return widget.load(annotation)}}}},{"../util":30,"./widget":29}],22:[function(require,module,exports){"use strict";var util=require("../util");var $=util.$;var _t=util.gettext;var NS="annotator-filter";var Filter=exports.Filter=function Filter(options){this.options=$.extend(true,{},Filter.options,options);this.classes=$.extend(true,{},Filter.classes);this.element=$(Filter.html.element).appendTo(this.options.appendTo);this.filter=$(Filter.html.filter);this.filters=[];this.current=0;for(var i=0,len=this.options.filters.length;i<len;i++){var filter=this.options.filters[i];this.addFilter(filter)}this.updateHighlights();var filterInput=".annotator-filter-property input",self=this; | ||
23 | this.element.on("focus."+NS,filterInput,function(e){self._onFilterFocus(e)}).on("blur."+NS,filterInput,function(e){self._onFilterBlur(e)}).on("keyup."+NS,filterInput,function(e){self._onFilterKeyup(e)}).on("click."+NS,".annotator-filter-previous",function(e){self._onPreviousClick(e)}).on("click."+NS,".annotator-filter-next",function(e){self._onNextClick(e)}).on("click."+NS,".annotator-filter-clear",function(e){self._onClearClick(e)});this._insertSpacer();if(this.options.addAnnotationFilter){this.addFilter({label:_t("Annotation"),property:"text"})}};Filter.prototype.destroy=function(){var html=$("html"),currentMargin=parseInt(html.css("padding-top"),10)||0;html.css("padding-top",currentMargin-this.element.outerHeight());this.element.off("."+NS);this.element.remove()};Filter.prototype._insertSpacer=function(){var html=$("html"),currentMargin=parseInt(html.css("padding-top"),10)||0;html.css("padding-top",currentMargin+this.element.outerHeight());return this};Filter.prototype.addFilter=function(options){var filter=$.extend({label:"",property:"",isFiltered:this.options.isFiltered},options);var hasFilterForProp=false;for(var i=0,len=this.filters.length;i<len;i++){var f=this.filters[i];if(f.property===filter.property){hasFilterForProp=true;break}}if(!hasFilterForProp){filter.id="annotator-filter-"+filter.property;filter.annotations=[];filter.element=this.filter.clone().appendTo(this.element);filter.element.find("label").html(filter.label).attr("for",filter.id);filter.element.find("input").attr({id:filter.id,placeholder:_t("Filter by ")+filter.label+"…"});filter.element.find("button").hide();filter.element.data("filter",filter);this.filters.push(filter)}return this};Filter.prototype.updateFilter=function(filter){filter.annotations=[];this.updateHighlights();this.resetHighlights();var input=$.trim(filter.element.find("input").val());if(!input){return}var annotations=this.highlights.map(function(){return $(this).data("annotation")});annotations=$.makeArray(annotations);for(var i=0,len=annotations.length;i<len;i++){var annotation=annotations[i],property=annotation[filter.property];if(filter.isFiltered(input,property)){filter.annotations.push(annotation)}}this.filterHighlights()};Filter.prototype.updateHighlights=function(){this.highlights=$(this.options.filterElement).find(".annotator-hl:visible");this.filtered=this.highlights.not(this.classes.hl.hide)};Filter.prototype.filterHighlights=function(){var activeFilters=$.grep(this.filters,function(filter){return Boolean(filter.annotations.length)});var filtered=[];if(activeFilters.length>0){filtered=activeFilters[0].annotations}if(activeFilters.length>1){var annotations=[];$.each(activeFilters,function(){$.merge(annotations,this.annotations)});var uniques=[];filtered=[];$.each(annotations,function(){if($.inArray(this,uniques)===-1){uniques.push(this)}else{filtered.push(this)}})}var highlights=this.highlights;for(var i=0,len=filtered.length;i<len;i++){highlights=highlights.not(filtered[i]._local.highlights)}highlights.addClass(this.classes.hl.hide);this.filtered=this.highlights.not(this.classes.hl.hide);return this};Filter.prototype.resetHighlights=function(){this.highlights.removeClass(this.classes.hl.hide);this.filtered=this.highlights;return this};Filter.prototype._onFilterFocus=function(event){var input=$(event.target);input.parent().addClass(this.classes.active);input.next("button").show()};Filter.prototype._onFilterBlur=function(event){if(!event.target.value){var input=$(event.target);input.parent().removeClass(this.classes.active);input.next("button").hide()}};Filter.prototype._onFilterKeyup=function(event){var filter=$(event.target).parent().data("filter");if(filter){this.updateFilter(filter)}};Filter.prototype._findNextHighlight=function(previous){if(this.highlights.length===0){return this}var offset=-1,resetOffset=0,operator="gt";if(previous){offset=0;resetOffset=-1;operator="lt"}var active=this.highlights.not("."+this.classes.hl.hide),current=active.filter("."+this.classes.hl.active);if(current.length===0){current=active.eq(offset)}var annotation=current.data("annotation");var index=active.index(current[0]),next=active.filter(":"+operator+"("+index+")").not(annotation._local.highlights).eq(resetOffset);if(next.length===0){next=active.eq(resetOffset)}this._scrollToHighlight(next.data("annotation")._local.highlights)};Filter.prototype._onNextClick=function(){this._findNextHighlight()};Filter.prototype._onPreviousClick=function(){this._findNextHighlight(true)};Filter.prototype._scrollToHighlight=function(highlight){highlight=$(highlight);this.highlights.removeClass(this.classes.hl.active);highlight.addClass(this.classes.hl.active);$("html, body").animate({scrollTop:highlight.offset().top-(this.element.height()+20)},150)};Filter.prototype._onClearClick=function(event){$(event.target).prev("input").val("").keyup().blur()};Filter.classes={active:"annotator-filter-active",hl:{hide:"annotator-hl-filtered",active:"annotator-hl-active"}};Filter.html={element:['<div class="annotator-filter">'," <strong>"+_t("Navigate:")+"</strong>",' <span class="annotator-filter-navigation">',' <button type="button"',' class="annotator-filter-previous">'+_t("Previous")+"</button>",' <button type="button"',' class="annotator-filter-next">'+_t("Next")+"</button>"," </span>"," <strong>"+_t("Filter by:")+"</strong>","</div>"].join("\n"),filter:['<span class="annotator-filter-property">'," <label></label>"," <input/>",' <button type="button"',' class="annotator-filter-clear">'+_t("Clear")+"</button>","</span>"].join("\n")};Filter.options={appendTo:"body",filterElement:"body",filters:[],addAnnotationFilter:true,isFiltered:function(input,property){if(!(input&&property)){return false}var keywords=input.split(/\s+/);for(var i=0,len=keywords.length;i<len;i++){if(property.indexOf(keywords[i])===-1){return false}}return true}};exports.standalone=function(options){var widget=new exports.Filter(options);return{destroy:function(){widget.destroy()},annotationsLoaded:function(){widget.updateHighlights()},annotationCreated:function(){widget.updateHighlights()},annotationUpdated:function(){widget.updateHighlights()},annotationDeleted:function(){widget.updateHighlights()}}}},{"../util":30}],23:[function(require,module,exports){(function(global){"use strict";var xpathRange=require("xpath-range");var util=require("../util");var $=util.$;var Promise=util.Promise;function highlightRange(normedRange,cssClass){if(typeof cssClass==="undefined"||cssClass===null){cssClass="annotator-hl"}var white=/^\s*$/;var nodes=normedRange.textNodes(),results=[];for(var i=0,len=nodes.length;i<len;i++){var node=nodes[i];if(!white.test(node.nodeValue)){var hl=global.document.createElement("span");hl.className=cssClass;node.parentNode.replaceChild(hl,node);hl.appendChild(node);results.push(hl)}}return results}function reanchorRange(range,rootElement){try{return xpathRange.Range.sniff(range).normalize(rootElement)}catch(e){if(!(e instanceof xpathRange.Range.RangeError)){throw e}}return null}var Highlighter=exports.Highlighter=function Highlighter(element,options){this.element=element;this.options=$.extend(true,{},Highlighter.options,options)};Highlighter.prototype.destroy=function(){$(this.element).find("."+this.options.highlightClass).each(function(_,el){$(el).contents().insertBefore(el);$(el).remove()})};Highlighter.prototype.drawAll=function(annotations){var self=this;var p=new Promise(function(resolve){var highlights=[];function loader(annList){if(typeof annList==="undefined"||annList===null){annList=[]}var now=annList.splice(0,self.options.chunkSize);for(var i=0,len=now.length;i<len;i++){highlights=highlights.concat(self.draw(now[i]))}if(annList.length>0){setTimeout(function(){loader(annList)},self.options.chunkDelay)}else{resolve(highlights)}}var clone=annotations.slice();loader(clone)});return p};Highlighter.prototype.draw=function(annotation){var normedRanges=[];for(var i=0,ilen=annotation.ranges.length;i<ilen;i++){var r=reanchorRange(annotation.ranges[i],this.element);if(r!==null){normedRanges.push(r)}}var hasLocal=typeof annotation._local!=="undefined"&&annotation._local!==null;if(!hasLocal){annotation._local={}}var hasHighlights=typeof annotation._local.highlights!=="undefined"&&annotation._local.highlights===null;if(!hasHighlights){annotation._local.highlights=[]}for(var j=0,jlen=normedRanges.length;j<jlen;j++){var normed=normedRanges[j];$.merge(annotation._local.highlights,highlightRange(normed,this.options.highlightClass))}$(annotation._local.highlights).data("annotation",annotation);if(typeof annotation.id!=="undefined"&&annotation.id!==null){$(annotation._local.highlights).attr("data-annotation-id",annotation.id)}return annotation._local.highlights};Highlighter.prototype.undraw=function(annotation){var hasHighlights=typeof annotation._local!=="undefined"&&annotation._local!==null&&typeof annotation._local.highlights!=="undefined"&&annotation._local.highlights!==null;if(!hasHighlights){return}for(var i=0,len=annotation._local.highlights.length;i<len;i++){var h=annotation._local.highlights[i];if(h.parentNode!==null){$(h).replaceWith(h.childNodes)}}delete annotation._local.highlights};Highlighter.prototype.redraw=function(annotation){this.undraw(annotation);return this.draw(annotation)};Highlighter.options={highlightClass:"annotator-hl",chunkSize:10,chunkDelay:10};exports.standalone=function standalone(element,options){var widget=exports.Highlighter(element,options);return{destroy:function(){widget.destroy()},annotationsLoaded:function(anns){widget.drawAll(anns)},annotationCreated:function(ann){widget.draw(ann)},annotationDeleted:function(ann){widget.undraw(ann)},annotationUpdated:function(ann){widget.redraw(ann)}}}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"../util":30,"xpath-range":8}],24:[function(require,module,exports){(function(global){"use strict";var util=require("../util");var adder=require("./adder");var editor=require("./editor");var highlighter=require("./highlighter");var textselector=require("./textselector");var viewer=require("./viewer");var _t=util.gettext;function trim(s){if(typeof String.prototype.trim==="function"){return String.prototype.trim.call(s)}else{return s.replace(/^[\s\xA0]+|[\s\xA0]+$/g,"")}}function annotationFactory(contextEl,ignoreSelector){return function(ranges){var text=[],serializedRanges=[];for(var i=0,len=ranges.length;i<len;i++){var r=ranges[i];text.push(trim(r.text()));serializedRanges.push(r.serialize(contextEl,ignoreSelector))}return{quote:text.join(" / "),ranges:serializedRanges}}}function maxZIndex(elements){var max=-1;for(var i=0,len=elements.length;i<len;i++){var $el=util.$(elements[i]);if($el.css("position")!=="static"){var zIndex=parseFloat($el.css("z-index"));if(zIndex>max){max=zIndex}}}return max}function injectDynamicStyle(){util.$("#annotator-dynamic-style").remove();var sel="*"+":not(annotator-adder)"+":not(annotator-outer)"+":not(annotator-notice)"+":not(annotator-filter)";var max=maxZIndex(util.$(global.document.body).find(sel).get());max=Math.max(max,1e3);var rules=[".annotator-adder, .annotator-outer, .annotator-notice {"," z-index: "+(max+20)+";","}",".annotator-filter {"," z-index: "+(max+10)+";","}"].join("\n");util.$("<style>"+rules+"</style>").attr("id","annotator-dynamic-style").attr("type","text/css").appendTo("head")}function removeDynamicStyle(){util.$("#annotator-dynamic-style").remove()}function addPermissionsCheckboxes(editor,ident,authz){function createLoadCallback(action){return function loadCallback(field,annotation){field=util.$(field).show();var u=ident.who();var input=field.find("input");if(typeof u==="undefined"||u===null){field.hide()}if(!authz.permits("admin",annotation,u)){field.hide()}if(authz.permits(action,annotation,null)){input.attr("checked","checked")}else{input.removeAttr("checked")}}}function createSubmitCallback(action){return function submitCallback(field,annotation){var u=ident.who();if(typeof u==="undefined"||u===null){return}if(!annotation.permissions){annotation.permissions={}}if(util.$(field).find("input").is(":checked")){delete annotation.permissions[action]}else{annotation.permissions[action]=[authz.authorizedUserId(u)]}}}editor.addField({type:"checkbox",label:_t("Allow anyone to <strong>view</strong> this annotation"),load:createLoadCallback("read"),submit:createSubmitCallback("read")});editor.addField({type:"checkbox",label:_t("Allow anyone to <strong>edit</strong> this annotation"),load:createLoadCallback("update"),submit:createSubmitCallback("update")})}function main(options){if(typeof options==="undefined"||options===null){options={}}options.element=options.element||global.document.body;options.editorExtensions=options.editorExtensions||[];options.viewerExtensions=options.viewerExtensions||[];var makeAnnotation=annotationFactory(options.element,".annotator-hl");var s={interactionPoint:null};function start(app){var ident=app.registry.getUtility("identityPolicy");var authz=app.registry.getUtility("authorizationPolicy");s.adder=new adder.Adder({onCreate:function(ann){app.annotations.create(ann)}});s.adder.attach();s.editor=new editor.Editor({extensions:options.editorExtensions});s.editor.attach();addPermissionsCheckboxes(s.editor,ident,authz);s.highlighter=new highlighter.Highlighter(options.element);s.textselector=new textselector.TextSelector(options.element,{onSelection:function(ranges,event){if(ranges.length>0){var annotation=makeAnnotation(ranges);s.interactionPoint=util.mousePosition(event);s.adder.load(annotation,s.interactionPoint)}else{s.adder.hide()}}});s.viewer=new viewer.Viewer({onEdit:function(ann){s.interactionPoint=util.$(s.viewer.element).css(["top","left"]);app.annotations.update(ann)},onDelete:function(ann){app.annotations["delete"](ann)},permitEdit:function(ann){return authz.permits("update",ann,ident.who())},permitDelete:function(ann){return authz.permits("delete",ann,ident.who())},autoViewHighlights:options.element,extensions:options.viewerExtensions});s.viewer.attach();injectDynamicStyle()}return{start:start,destroy:function(){s.adder.destroy();s.editor.destroy();s.highlighter.destroy();s.textselector.destroy();s.viewer.destroy();removeDynamicStyle()},annotationsLoaded:function(anns){s.highlighter.drawAll(anns)},annotationCreated:function(ann){s.highlighter.draw(ann)},annotationDeleted:function(ann){s.highlighter.undraw(ann)},annotationUpdated:function(ann){s.highlighter.redraw(ann)},beforeAnnotationCreated:function(annotation){return s.editor.load(annotation,s.interactionPoint)},beforeAnnotationUpdated:function(annotation){return s.editor.load(annotation,s.interactionPoint)}}}exports.main=main}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"../util":30,"./adder":20,"./editor":21,"./highlighter":23,"./textselector":27,"./viewer":28}],25:[function(require,module,exports){(function(global){"use strict";var util=require("../util");var _t=util.gettext;var render=exports.render=function render(annotation){var convert=util.escapeHtml;if(global.showdown&&typeof global.showdown.Converter==="function"){convert=(new global.showdown.Converter).makeHtml}if(annotation.text){return convert(annotation.text)}else{return"<i>"+_t("No comment")+"</i>"}};exports.viewerExtension=function viewerExtension(viewer){if(!global.showdown||typeof global.showdown.Converter!=="function"){console.warn(_t("To use the Markdown plugin, you must "+"include Showdown into the page first."))}viewer.setRenderer(render)}}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"../util":30}],26:[function(require,module,exports){"use strict";var util=require("../util");var $=util.$;var _t=util.gettext;function stringifyTags(array){return array.join(" ")}function parseTags(string){string=$.trim(string);var tags=[];if(string){tags=string.split(/\s+/)}return tags}exports.viewerExtension=function viewerExtension(v){function updateViewer(field,annotation){field=$(field);if(annotation.tags&&$.isArray(annotation.tags)&&annotation.tags.length){field.addClass("annotator-tags").html(function(){return $.map(annotation.tags,function(tag){return'<span class="annotator-tag">'+util.escapeHtml(tag)+"</span>"}).join(" ")})}else{field.remove()}}v.addField({load:updateViewer})};exports.editorExtension=function editorExtension(e){var field=null;var input=null;function updateField(field,annotation){var value="";if(annotation.tags){value=stringifyTags(annotation.tags)}input.val(value)}function setAnnotationTags(field,annotation){annotation.tags=parseTags(input.val())}field=e.addField({label:_t("Add some tags here")+"…",load:updateField,submit:setAnnotationTags});input=$(field).find(":input")}},{"../util":30}],27:[function(require,module,exports){(function(global){"use strict";var xpathRange=require("xpath-range");var util=require("../util");var $=util.$;var TEXTSELECTOR_NS="annotator-textselector";function isAnnotator(element){var elAndParents=$(element).parents().addBack();return elAndParents.filter("[class^=annotator-]").length!==0}function TextSelector(element,options){this.element=element;this.options=$.extend(true,{},TextSelector.options,options);this.onSelection=this.options.onSelection;if(typeof this.element.ownerDocument!=="undefined"&&this.element.ownerDocument!==null){var self=this;this.document=this.element.ownerDocument;$(this.document.body).on("mouseup."+TEXTSELECTOR_NS,function(e){self._checkForEndSelection(e)})}else{console.warn("You created an instance of the TextSelector on an "+"element that doesn't have an ownerDocument. This won't "+"work! Please ensure the element is added to the DOM "+"before the plugin is configured:",this.element)}}TextSelector.prototype.destroy=function(){if(this.document){$(this.document.body).off("."+TEXTSELECTOR_NS)}};TextSelector.prototype.captureDocumentSelection=function(){var i,len,ranges=[],rangesToIgnore=[],selection=global.getSelection();if(selection.isCollapsed){return[]}for(i=0;i<selection.rangeCount;i++){var r=selection.getRangeAt(i),browserRange=new xpathRange.Range.BrowserRange(r),normedRange=browserRange.normalize().limit(this.element);if(normedRange===null){rangesToIgnore.push(r)}else{ranges.push(normedRange)}}selection.removeAllRanges();for(i=0,len=rangesToIgnore.length;i<len;i++){selection.addRange(rangesToIgnore[i])}for(i=0,len=ranges.length;i<len;i++){var range=ranges[i],drange=this.document.createRange();drange.setStartBefore(range.start);drange.setEndAfter(range.end);selection.addRange(drange)}return ranges};TextSelector.prototype._checkForEndSelection=function(event){var self=this;var _nullSelection=function(){if(typeof self.onSelection==="function"){self.onSelection([],event)}};var selectedRanges=this.captureDocumentSelection();if(selectedRanges.length===0){_nullSelection();return}for(var i=0,len=selectedRanges.length;i<len;i++){var container=selectedRanges[i].commonAncestor;if($(container).hasClass("annotator-hl")){container=$(container).parents("[class!=annotator-hl]")[0]}if(isAnnotator(container)){_nullSelection();return}}if(typeof this.onSelection==="function"){this.onSelection(selectedRanges,event)}};TextSelector.options={onSelection:null};exports.TextSelector=TextSelector}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"../util":30,"xpath-range":8}],28:[function(require,module,exports){"use strict";var Widget=require("./widget").Widget,util=require("../util");var $=util.$,_t=util.gettext;var NS="annotator-viewer";function parseLinks(data,rel,cond){cond=$.extend({},cond,{rel:rel});var results=[];for(var i=0,len=data.length;i<len;i++){var d=data[i],match=true;for(var k in cond){if(cond.hasOwnProperty(k)&&d[k]!==cond[k]){match=false;break}}if(match){results.push(d)}}return results}var Viewer=exports.Viewer=Widget.extend({constructor:function(options){Widget.call(this,options);this.itemTemplate=Viewer.itemTemplate;this.fields=[];this.annotations=[];this.hideTimer=null;this.hideTimerDfd=null;this.hideTimerActivity=null;this.mouseDown=false;this.render=function(annotation){if(annotation.text){return util.escapeHtml(annotation.text)}else{return"<i>"+_t("No comment")+"</i>"}};var self=this;if(this.options.defaultFields){this.addField({load:function(field,annotation){$(field).html(self.render(annotation))}})}if(typeof this.options.onEdit!=="function"){throw new TypeError("onEdit callback must be a function")}if(typeof this.options.onDelete!=="function"){throw new TypeError("onDelete callback must be a function")}if(typeof this.options.permitEdit!=="function"){throw new TypeError("permitEdit callback must be a function")}if(typeof this.options.permitDelete!=="function"){throw new TypeError("permitDelete callback must be a function")}if(this.options.autoViewHighlights){this.document=this.options.autoViewHighlights.ownerDocument;$(this.options.autoViewHighlights).on("mouseover."+NS,".annotator-hl",function(event){if(event.target===this){self._onHighlightMouseover(event)}}).on("mouseleave."+NS,".annotator-hl",function(){self._startHideTimer()});$(this.document.body).on("mousedown."+NS,function(e){if(e.which===1){self.mouseDown=true}}).on("mouseup."+NS,function(e){if(e.which===1){self.mouseDown=false}})}this.element.on("click."+NS,".annotator-edit",function(e){self._onEditClick(e)}).on("click."+NS,".annotator-delete",function(e){self._onDeleteClick(e)}).on("mouseenter."+NS,function(){self._clearHideTimer()}).on("mouseleave."+NS,function(){self._startHideTimer()})},destroy:function(){if(this.options.autoViewHighlights){$(this.options.autoViewHighlights).off("."+NS);$(this.document.body).off("."+NS)}this.element.off("."+NS);Widget.prototype.destroy.call(this)},show:function(position){if(typeof position!=="undefined"&&position!==null){this.element.css({top:position.top,left:position.left})}var controls=this.element.find(".annotator-controls").addClass(this.classes.showControls);var self=this;setTimeout(function(){controls.removeClass(self.classes.showControls)},500);Widget.prototype.show.call(this)},load:function(annotations,position){this.annotations=annotations||[];var list=this.element.find("ul:first").empty();for(var i=0,len=this.annotations.length;i<len;i++){var annotation=this.annotations[i];this._annotationItem(annotation).appendTo(list).data("annotation",annotation)}this.show(position)},setRenderer:function(renderer){this.render=renderer},_annotationItem:function(annotation){var item=$(this.itemTemplate).clone();var controls=item.find(".annotator-controls"),link=controls.find(".annotator-link"),edit=controls.find(".annotator-edit"),del=controls.find(".annotator-delete");var links=parseLinks(annotation.links||[],"alternate",{type:"text/html"});var hasValidLink=links.length>0&&typeof links[0].href!=="undefined"&&links[0].href!==null;if(hasValidLink){link.attr("href",links[0].href)}else{link.remove()}var controller={};if(this.options.permitEdit(annotation)){controller.showEdit=function(){edit.removeAttr("disabled")};controller.hideEdit=function(){edit.attr("disabled","disabled")}}else{edit.remove()}if(this.options.permitDelete(annotation)){controller.showDelete=function(){del.removeAttr("disabled")};controller.hideDelete=function(){del.attr("disabled","disabled")}}else{del.remove()}for(var i=0,len=this.fields.length;i<len;i++){var field=this.fields[i];var element=$(field.element).clone().appendTo(item)[0];field.load(element,annotation,controller)}return item},addField:function(options){var field=$.extend({load:function(){}},options);field.element=$("<div />")[0];this.fields.push(field);return this},_onEditClick:function(event){var item=$(event.target).parents(".annotator-annotation").data("annotation");this.hide();this.options.onEdit(item)},_onDeleteClick:function(event){if(window.confirm(_t("Delete this annotation?"))){var item=$(event.target).parents(".annotator-annotation").data("annotation");this.hide();this.options.onDelete(item)}},_onHighlightMouseover:function(event){if(this.mouseDown){return}var self=this;this._startHideTimer(true).done(function(){var annotations=$(event.target).parents(".annotator-hl").addBack().map(function(_,elem){return $(elem).data("annotation")}).toArray();self.load(annotations,util.mousePosition(event))})},_startHideTimer:function(activity){if(typeof activity==="undefined"||activity===null){activity=false}if(this.hideTimer){if(activity===false||this.hideTimerActivity===activity){return this.hideTimerDfd}else{this._clearHideTimer()}}var timeout;if(activity){timeout=this.options.activityDelay}else{timeout=this.options.inactivityDelay}this.hideTimerDfd=$.Deferred();if(!this.isShown()){this.hideTimer=null;this.hideTimerDfd.resolve();this.hideTimerActivity=null}else{var self=this;this.hideTimer=setTimeout(function(){self.hide();self.hideTimerDfd.resolve();self.hideTimer=null},timeout);this.hideTimerActivity=Boolean(activity)}return this.hideTimerDfd.promise()},_clearHideTimer:function(){clearTimeout(this.hideTimer);this.hideTimer=null;this.hideTimerDfd.reject();this.hideTimerActivity=null}});Viewer.classes={showControls:"annotator-visible"};Viewer.template=['<div class="annotator-outer annotator-viewer annotator-hide">',' <ul class="annotator-widget annotator-listing"></ul>',"</div>"].join("\n");Viewer.itemTemplate=['<li class="annotator-annotation annotator-item">',' <span class="annotator-controls">',' <a href="#"',' title="'+_t("View as webpage")+'"',' class="annotator-link">'+_t("View as webpage")+"</a>",' <button type="button"',' title="'+_t("Edit")+'"',' class="annotator-edit">'+_t("Edit")+"</button>",' <button type="button"',' title="'+_t("Delete")+'"',' class="annotator-delete">'+_t("Delete")+"</button>"," </span>","</li>"].join("\n");Viewer.options={defaultFields:true,inactivityDelay:500,activityDelay:100,permitEdit:function(){return false},permitDelete:function(){return false},autoViewHighlights:null,onEdit:function(){},onDelete:function(){}};exports.standalone=function standalone(options){var widget;if(typeof options==="undefined"||options===null){options={}}return{start:function(app){var ident=app.registry.getUtility("identityPolicy");var authz=app.registry.getUtility("authorizationPolicy");if(typeof options.onEdit==="undefined"){options.onEdit=function(annotation){app.annotations.update(annotation)}}if(typeof options.onDelete==="undefined"){options.onDelete=function(annotation){app.annotations["delete"](annotation)}}if(typeof options.permitEdit==="undefined"){options.permitEdit=function(annotation){return authz.permits("update",annotation,ident.who())}}if(typeof options.permitDelete==="undefined"){options.permitDelete=function(annotation){return authz.permits("delete",annotation,ident.who())}}widget=new exports.Viewer(options)},destroy:function(){widget.destroy()}}}},{"../util":30,"./widget":29}],29:[function(require,module,exports){(function(global){"use strict";var extend=require("backbone-extend-standalone");var util=require("../util");var $=util.$;function Widget(options){this.element=$(this.constructor.template);this.classes=$.extend({},Widget.classes,this.constructor.classes);this.options=$.extend({},Widget.options,this.constructor.options,options);this.extensionsInstalled=false}Widget.prototype.destroy=function(){this.element.remove()};Widget.prototype.installExtensions=function(){if(this.options.extensions){for(var i=0,len=this.options.extensions.length;i<len;i++){var extension=this.options.extensions[i];extension(this)}}};Widget.prototype._maybeInstallExtensions=function(){if(!this.extensionsInstalled){this.extensionsInstalled=true;this.installExtensions()}};Widget.prototype.attach=function(){this.element.appendTo(this.options.appendTo);this._maybeInstallExtensions()};Widget.prototype.show=function(){this.element.removeClass(this.classes.hide);this.checkOrientation()};Widget.prototype.hide=function(){$(this.element).addClass(this.classes.hide)};Widget.prototype.isShown=function(){return!$(this.element).hasClass(this.classes.hide)};Widget.prototype.checkOrientation=function(){this.resetOrientation();var $win=$(global),$widget=this.element.children(":first"),offset=$widget.offset(),viewport={top:$win.scrollTop(),right:$win.width()+$win.scrollLeft()},current={top:offset.top,right:offset.left+$widget.width()};if(current.top-viewport.top<0){this.invertY()}if(current.right-viewport.right>0){this.invertX()}return this};Widget.prototype.resetOrientation=function(){this.element.removeClass(this.classes.invert.x).removeClass(this.classes.invert.y);return this};Widget.prototype.invertX=function(){this.element.addClass(this.classes.invert.x);return this};Widget.prototype.invertY=function(){this.element.addClass(this.classes.invert.y);return this};Widget.prototype.isInvertedY=function(){return this.element.hasClass(this.classes.invert.y)};Widget.prototype.isInvertedX=function(){return this.element.hasClass(this.classes.invert.x)};Widget.classes={hide:"annotator-hide",invert:{x:"annotator-invert-x",y:"annotator-invert-y"}};Widget.template="<div></div>";Widget.options={appendTo:"body"};Widget.extend=extend;exports.Widget=Widget}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"../util":30,"backbone-extend-standalone":3}],30:[function(require,module,exports){(function(global){"use strict";var $=require("jquery");var Promise=require("es6-promise").Promise;var ESCAPE_MAP={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"};function escapeHtml(string){return String(string).replace(/[&<>"'\/]/g,function(c){return ESCAPE_MAP[c]})}var gettext=function(){if(typeof global.Gettext==="function"){var _gettext=new global.Gettext({domain:"annotator"});return function(msgid){return _gettext.gettext(msgid)}}return function(msgid){return msgid}}();function mousePosition(event){var body=global.document.body;var offset={top:0,left:0};if($(body).css("position")!=="static"){offset=$(body).offset()}return{top:event.pageY-offset.top,left:event.pageX-offset.left}}exports.$=$;exports.Promise=Promise;exports.gettext=gettext;exports.escapeHtml=escapeHtml;exports.mousePosition=mousePosition}).call(this,typeof global!=="undefined"?global:typeof self!=="undefined"?self:typeof window!=="undefined"?window:{})},{"es6-promise":5,jquery:7}]},{},[1])(1)}); | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/jquery-2.0.3.min.js b/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/jquery-2.0.3.min.js deleted file mode 100644 index a4dd0a2f..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/jquery-2.0.3.min.js +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | (function(e,undefined){var t,n,r=typeof undefined,i=e.location,o=e.document,s=o.documentElement,a=e.jQuery,u=e.$,l={},c=[],p="2.0.3",f=c.concat,h=c.push,d=c.slice,g=c.indexOf,m=l.toString,y=l.hasOwnProperty,v=p.trim,x=function(e,n){return new x.fn.init(e,n,t)},b=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,w=/\S+/g,T=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,k=/^-ms-/,N=/-([\da-z])/gi,E=function(e,t){return t.toUpperCase()},S=function(){o.removeEventListener("DOMContentLoaded",S,!1),e.removeEventListener("load",S,!1),x.ready()};x.fn=x.prototype={jquery:p,constructor:x,init:function(e,t,n){var r,i;if(!e)return this;if("string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:T.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof x?t[0]:t,x.merge(this,x.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:o,!0)),C.test(r[1])&&x.isPlainObject(t))for(r in t)x.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return i=o.getElementById(r[2]),i&&i.parentNode&&(this.length=1,this[0]=i),this.context=o,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?n.ready(e):(e.selector!==undefined&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return d.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,t,n,r,i,o,s=arguments[0]||{},a=1,u=arguments.length,l=!1;for("boolean"==typeof s&&(l=s,s=arguments[1]||{},a=2),"object"==typeof s||x.isFunction(s)||(s={}),u===a&&(s=this,--a);u>a;a++)if(null!=(e=arguments[a]))for(t in e)n=s[t],r=e[t],s!==r&&(l&&r&&(x.isPlainObject(r)||(i=x.isArray(r)))?(i?(i=!1,o=n&&x.isArray(n)?n:[]):o=n&&x.isPlainObject(n)?n:{},s[t]=x.extend(l,o,r)):r!==undefined&&(s[t]=r));return s},x.extend({expando:"jQuery"+(p+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=a),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){(e===!0?--x.readyWait:x.isReady)||(x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(o,[x]),x.fn.trigger&&x(o).trigger("ready").off("ready")))},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray,isWindow:function(e){return null!=e&&e===e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[m.call(e)]||"object":typeof e},isPlainObject:function(e){if("object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!y.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(t){return!1}return!0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||o;var r=C.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:JSON.parse,parseXML:function(e){var t,n;if(!e||"string"!=typeof e)return null;try{n=new DOMParser,t=n.parseFromString(e,"text/xml")}catch(r){t=undefined}return(!t||t.getElementsByTagName("parsererror").length)&&x.error("Invalid XML: "+e),t},noop:function(){},globalEval:function(e){var t,n=eval;e=x.trim(e),e&&(1===e.indexOf("use strict")?(t=o.createElement("script"),t.text=e,o.head.appendChild(t).parentNode.removeChild(t)):n(e))},camelCase:function(e){return e.replace(k,"ms-").replace(N,E)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,s=j(e);if(n){if(s){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(s){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:function(e){return null==e?"":v.call(e)},makeArray:function(e,t){var n=t||[];return null!=e&&(j(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:g.call(t,e,n)},merge:function(e,t){var n=t.length,r=e.length,i=0;if("number"==typeof n)for(;n>i;i++)e[r++]=t[i];else while(t[i]!==undefined)e[r++]=t[i++];return e.length=r,e},grep:function(e,t,n){var r,i=[],o=0,s=e.length;for(n=!!n;s>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,s=j(e),a=[];if(s)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(a[a.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(a[a.length]=r);return f.apply([],a)},guid:1,proxy:function(e,t){var n,r,i;return"string"==typeof t&&(n=e[t],t=e,e=n),x.isFunction(e)?(r=d.call(arguments,2),i=function(){return e.apply(t||this,r.concat(d.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):undefined},access:function(e,t,n,r,i,o,s){var a=0,u=e.length,l=null==n;if("object"===x.type(n)){i=!0;for(a in n)x.access(e,t,a,n[a],!0,o,s)}else if(r!==undefined&&(i=!0,x.isFunction(r)||(s=!0),l&&(s?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(x(e),n)})),t))for(;u>a;a++)t(e[a],n,s?r:r.call(e[a],a,t(e[a],n)));return i?e:l?t.call(e):u?t(e[0],n):o},now:Date.now,swap:function(e,t,n,r){var i,o,s={};for(o in t)s[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=s[o];return i}}),x.ready.promise=function(t){return n||(n=x.Deferred(),"complete"===o.readyState?setTimeout(x.ready):(o.addEventListener("DOMContentLoaded",S,!1),e.addEventListener("load",S,!1))),n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function j(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}t=x(o),function(e,undefined){var t,n,r,i,o,s,a,u,l,c,p,f,h,d,g,m,y,v="sizzle"+-new Date,b=e.document,w=0,T=0,C=st(),k=st(),N=st(),E=!1,S=function(e,t){return e===t?(E=!0,0):0},j=typeof undefined,D=1<<31,A={}.hasOwnProperty,L=[],q=L.pop,H=L.push,O=L.push,F=L.slice,P=L.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},R="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",W="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",$=W.replace("w","w#"),B="\\["+M+"*("+W+")"+M+"*(?:([*^$|!~]?=)"+M+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+$+")|)|)"+M+"*\\]",I=":("+W+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+B.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),_=RegExp("^"+M+"*,"+M+"*"),X=RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),U=RegExp(M+"*[+~]"),Y=RegExp("="+M+"*([^\\]'\"]*)"+M+"*\\]","g"),V=RegExp(I),G=RegExp("^"+$+"$"),J={ID:RegExp("^#("+W+")"),CLASS:RegExp("^\\.("+W+")"),TAG:RegExp("^("+W.replace("w","w*")+")"),ATTR:RegExp("^"+B),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:RegExp("^(?:"+R+")$","i"),needsContext:RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Q=/^[^{]+\{\s*\[native \w/,K=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,Z=/^(?:input|select|textarea|button)$/i,et=/^h\d$/i,tt=/'|\\/g,nt=RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),rt=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{O.apply(L=F.call(b.childNodes),b.childNodes),L[b.childNodes.length].nodeType}catch(it){O={apply:L.length?function(e,t){H.apply(e,F.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function ot(e,t,r,i){var o,s,a,u,l,f,g,m,x,w;if((t?t.ownerDocument||t:b)!==p&&c(t),t=t||p,r=r||[],!e||"string"!=typeof e)return r;if(1!==(u=t.nodeType)&&9!==u)return[];if(h&&!i){if(o=K.exec(e))if(a=o[1]){if(9===u){if(s=t.getElementById(a),!s||!s.parentNode)return r;if(s.id===a)return r.push(s),r}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(a))&&y(t,s)&&s.id===a)return r.push(s),r}else{if(o[2])return O.apply(r,t.getElementsByTagName(e)),r;if((a=o[3])&&n.getElementsByClassName&&t.getElementsByClassName)return O.apply(r,t.getElementsByClassName(a)),r}if(n.qsa&&(!d||!d.test(e))){if(m=g=v,x=t,w=9===u&&e,1===u&&"object"!==t.nodeName.toLowerCase()){f=gt(e),(g=t.getAttribute("id"))?m=g.replace(tt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",l=f.length;while(l--)f[l]=m+mt(f[l]);x=U.test(e)&&t.parentNode||t,w=f.join(",")}if(w)try{return O.apply(r,x.querySelectorAll(w)),r}catch(T){}finally{g||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,r,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>i.cacheLength&&delete t[e.shift()],t[n]=r}return t}function at(e){return e[v]=!0,e}function ut(e){var t=p.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function lt(e,t){var n=e.split("|"),r=e.length;while(r--)i.attrHandle[n[r]]=t}function ct(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function pt(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return at(function(t){return t=+t,at(function(n,r){var i,o=e([],n.length,t),s=o.length;while(s--)n[i=o[s]]&&(n[i]=!(r[i]=n[i]))})})}s=ot.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},n=ot.support={},c=ot.setDocument=function(e){var t=e?e.ownerDocument||e:b,r=t.defaultView;return t!==p&&9===t.nodeType&&t.documentElement?(p=t,f=t.documentElement,h=!s(t),r&&r.attachEvent&&r!==r.top&&r.attachEvent("onbeforeunload",function(){c()}),n.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ut(function(e){return e.appendChild(t.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=ut(function(e){return e.innerHTML="<div class='a'></div><div class='a i'></div>",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),n.getById=ut(function(e){return f.appendChild(e).id=v,!t.getElementsByName||!t.getElementsByName(v).length}),n.getById?(i.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){return e.getAttribute("id")===t}}):(delete i.find.ID,i.filter.ID=function(e){var t=e.replace(nt,rt);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),i.find.TAG=n.getElementsByTagName?function(e,t){return typeof t.getElementsByTagName!==j?t.getElementsByTagName(e):undefined}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},i.find.CLASS=n.getElementsByClassName&&function(e,t){return typeof t.getElementsByClassName!==j&&h?t.getElementsByClassName(e):undefined},g=[],d=[],(n.qsa=Q.test(t.querySelectorAll))&&(ut(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||d.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll(":checked").length||d.push(":checked")}),ut(function(e){var n=t.createElement("input");n.setAttribute("type","hidden"),e.appendChild(n).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&d.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||d.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),d.push(",.*:")})),(n.matchesSelector=Q.test(m=f.webkitMatchesSelector||f.mozMatchesSelector||f.oMatchesSelector||f.msMatchesSelector))&&ut(function(e){n.disconnectedMatch=m.call(e,"div"),m.call(e,"[s!='']:x"),g.push("!=",I)}),d=d.length&&RegExp(d.join("|")),g=g.length&&RegExp(g.join("|")),y=Q.test(f.contains)||f.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},S=f.compareDocumentPosition?function(e,r){if(e===r)return E=!0,0;var i=r.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(r);return i?1&i||!n.sortDetached&&r.compareDocumentPosition(e)===i?e===t||y(b,e)?-1:r===t||y(b,r)?1:l?P.call(l,e)-P.call(l,r):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,n){var r,i=0,o=e.parentNode,s=n.parentNode,a=[e],u=[n];if(e===n)return E=!0,0;if(!o||!s)return e===t?-1:n===t?1:o?-1:s?1:l?P.call(l,e)-P.call(l,n):0;if(o===s)return ct(e,n);r=e;while(r=r.parentNode)a.unshift(r);r=n;while(r=r.parentNode)u.unshift(r);while(a[i]===u[i])i++;return i?ct(a[i],u[i]):a[i]===b?-1:u[i]===b?1:0},t):p},ot.matches=function(e,t){return ot(e,null,null,t)},ot.matchesSelector=function(e,t){if((e.ownerDocument||e)!==p&&c(e),t=t.replace(Y,"='$1']"),!(!n.matchesSelector||!h||g&&g.test(t)||d&&d.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return ot(t,p,null,[e]).length>0},ot.contains=function(e,t){return(e.ownerDocument||e)!==p&&c(e),y(e,t)},ot.attr=function(e,t){(e.ownerDocument||e)!==p&&c(e);var r=i.attrHandle[t.toLowerCase()],o=r&&A.call(i.attrHandle,t.toLowerCase())?r(e,t,!h):undefined;return o===undefined?n.attributes||!h?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null:o},ot.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},ot.uniqueSort=function(e){var t,r=[],i=0,o=0;if(E=!n.detectDuplicates,l=!n.sortStable&&e.slice(0),e.sort(S),E){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return e},o=ot.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=o(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=o(t);return n},i=ot.selectors={cacheLength:50,createPseudo:at,match:J,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(nt,rt),e[3]=(e[4]||e[5]||"").replace(nt,rt),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||ot.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&ot.error(e[0]),e},PSEUDO:function(e){var t,n=!e[5]&&e[2];return J.CHILD.test(e[0])?null:(e[3]&&e[4]!==undefined?e[2]=e[4]:n&&V.test(n)&&(t=gt(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(nt,rt).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=C[e+" "];return t||(t=RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&C(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=ot.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),s="last"!==e.slice(-4),a="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,p,f,h,d,g=o!==s?"nextSibling":"previousSibling",m=t.parentNode,y=a&&t.nodeName.toLowerCase(),x=!u&&!a;if(m){if(o){while(g){p=t;while(p=p[g])if(a?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;d=g="only"===e&&!d&&"nextSibling"}return!0}if(d=[s?m.firstChild:m.lastChild],s&&x){c=m[v]||(m[v]={}),l=c[e]||[],h=l[0]===w&&l[1],f=l[0]===w&&l[2],p=h&&m.childNodes[h];while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[w,h,f];break}}else if(x&&(l=(t[v]||(t[v]={}))[e])&&l[0]===w)f=l[1];else while(p=++h&&p&&p[g]||(f=h=0)||d.pop())if((a?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(x&&((p[v]||(p[v]={}))[e]=[w,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||ot.error("unsupported pseudo: "+e);return r[v]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?at(function(e,n){var i,o=r(e,t),s=o.length;while(s--)i=P.call(e,o[s]),e[i]=!(n[i]=o[s])}):function(e){return r(e,0,n)}):r}},pseudos:{not:at(function(e){var t=[],n=[],r=a(e.replace(z,"$1"));return r[v]?at(function(e,t,n,i){var o,s=r(e,null,i,[]),a=e.length;while(a--)(o=s[a])&&(e[a]=!(t[a]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:at(function(e){return function(t){return ot(e,t).length>0}}),contains:at(function(e){return function(t){return(t.textContent||t.innerText||o(t)).indexOf(e)>-1}}),lang:at(function(e){return G.test(e||"")||ot.error("unsupported lang: "+e),e=e.replace(nt,rt).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===f},focus:function(e){return e===p.activeElement&&(!p.hasFocus||p.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!i.pseudos.empty(e)},header:function(e){return et.test(e.nodeName)},input:function(e){return Z.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},i.pseudos.nth=i.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})i.pseudos[t]=pt(t);for(t in{submit:!0,reset:!0})i.pseudos[t]=ft(t);function dt(){}dt.prototype=i.filters=i.pseudos,i.setFilters=new dt;function gt(e,t){var n,r,o,s,a,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);a=e,u=[],l=i.preFilter;while(a){(!n||(r=_.exec(a)))&&(r&&(a=a.slice(r[0].length)||a),u.push(o=[])),n=!1,(r=X.exec(a))&&(n=r.shift(),o.push({value:n,type:r[0].replace(z," ")}),a=a.slice(n.length));for(s in i.filter)!(r=J[s].exec(a))||l[s]&&!(r=l[s](r))||(n=r.shift(),o.push({value:n,type:s,matches:r}),a=a.slice(n.length));if(!n)break}return t?a.length:a?ot.error(e):k(e,u).slice(0)}function mt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function yt(e,t,n){var i=t.dir,o=n&&"parentNode"===i,s=T++;return t.first?function(t,n,r){while(t=t[i])if(1===t.nodeType||o)return e(t,n,r)}:function(t,n,a){var u,l,c,p=w+" "+s;if(a){while(t=t[i])if((1===t.nodeType||o)&&e(t,n,a))return!0}else while(t=t[i])if(1===t.nodeType||o)if(c=t[v]||(t[v]={}),(l=c[i])&&l[0]===p){if((u=l[1])===!0||u===r)return u===!0}else if(l=c[i]=[p],l[1]=e(t,n,a)||r,l[1]===!0)return!0}}function vt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,s=[],a=0,u=e.length,l=null!=t;for(;u>a;a++)(o=e[a])&&(!n||n(o,r,i))&&(s.push(o),l&&t.push(a));return s}function bt(e,t,n,r,i,o){return r&&!r[v]&&(r=bt(r)),i&&!i[v]&&(i=bt(i,o)),at(function(o,s,a,u){var l,c,p,f=[],h=[],d=s.length,g=o||Ct(t||"*",a.nodeType?[a]:a,[]),m=!e||!o&&t?g:xt(g,f,e,a,u),y=n?i||(o?e:d||r)?[]:s:m;if(n&&n(m,y,a,u),r){l=xt(y,h),r(l,[],a,u),c=l.length;while(c--)(p=l[c])&&(y[h[c]]=!(m[h[c]]=p))}if(o){if(i||e){if(i){l=[],c=y.length;while(c--)(p=y[c])&&l.push(m[c]=p);i(null,y=[],l,u)}c=y.length;while(c--)(p=y[c])&&(l=i?P.call(o,p):f[c])>-1&&(o[l]=!(s[l]=p))}}else y=xt(y===s?y.splice(d,y.length):y),i?i(null,s,y,u):O.apply(s,y)})}function wt(e){var t,n,r,o=e.length,s=i.relative[e[0].type],a=s||i.relative[" "],l=s?1:0,c=yt(function(e){return e===t},a,!0),p=yt(function(e){return P.call(t,e)>-1},a,!0),f=[function(e,n,r){return!s&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;o>l;l++)if(n=i.relative[e[l].type])f=[yt(vt(f),n)];else{if(n=i.filter[e[l].type].apply(null,e[l].matches),n[v]){for(r=++l;o>r;r++)if(i.relative[e[r].type])break;return bt(l>1&&vt(f),l>1&&mt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&wt(e.slice(l,r)),o>r&&wt(e=e.slice(r)),o>r&&mt(e))}f.push(n)}return vt(f)}function Tt(e,t){var n=0,o=t.length>0,s=e.length>0,a=function(a,l,c,f,h){var d,g,m,y=[],v=0,x="0",b=a&&[],T=null!=h,C=u,k=a||s&&i.find.TAG("*",h&&l.parentNode||l),N=w+=null==C?1:Math.random()||.1;for(T&&(u=l!==p&&l,r=n);null!=(d=k[x]);x++){if(s&&d){g=0;while(m=e[g++])if(m(d,l,c)){f.push(d);break}T&&(w=N,r=++n)}o&&((d=!m&&d)&&v--,a&&b.push(d))}if(v+=x,o&&x!==v){g=0;while(m=t[g++])m(b,y,l,c);if(a){if(v>0)while(x--)b[x]||y[x]||(y[x]=q.call(f));y=xt(y)}O.apply(f,y),T&&!a&&y.length>0&&v+t.length>1&&ot.uniqueSort(f)}return T&&(w=N,u=C),b};return o?at(a):a}a=ot.compile=function(e,t){var n,r=[],i=[],o=N[e+" "];if(!o){t||(t=gt(e)),n=t.length;while(n--)o=wt(t[n]),o[v]?r.push(o):i.push(o);o=N(e,Tt(i,r))}return o};function Ct(e,t,n){var r=0,i=t.length;for(;i>r;r++)ot(e,t[r],n);return n}function kt(e,t,r,o){var s,u,l,c,p,f=gt(e);if(!o&&1===f.length){if(u=f[0]=f[0].slice(0),u.length>2&&"ID"===(l=u[0]).type&&n.getById&&9===t.nodeType&&h&&i.relative[u[1].type]){if(t=(i.find.ID(l.matches[0].replace(nt,rt),t)||[])[0],!t)return r;e=e.slice(u.shift().value.length)}s=J.needsContext.test(e)?0:u.length;while(s--){if(l=u[s],i.relative[c=l.type])break;if((p=i.find[c])&&(o=p(l.matches[0].replace(nt,rt),U.test(u[0].type)&&t.parentNode||t))){if(u.splice(s,1),e=o.length&&mt(u),!e)return O.apply(r,o),r;break}}}return a(e,f)(o,t,!h,r,U.test(e)),r}n.sortStable=v.split("").sort(S).join("")===v,n.detectDuplicates=E,c(),n.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(p.createElement("div"))}),ut(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||lt("type|href|height|width",function(e,t,n){return n?undefined:e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ut(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||lt("value",function(e,t,n){return n||"input"!==e.nodeName.toLowerCase()?undefined:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||lt(R,function(e,t,n){var r;return n?undefined:(r=e.getAttributeNode(t))&&r.specified?r.value:e[t]===!0?t.toLowerCase():null}),x.find=ot,x.expr=ot.selectors,x.expr[":"]=x.expr.pseudos,x.unique=ot.uniqueSort,x.text=ot.getText,x.isXMLDoc=ot.isXML,x.contains=ot.contains}(e);var D={};function A(e){var t=D[e]={};return x.each(e.match(w)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?D[e]||A(e):x.extend({},e);var t,n,r,i,o,s,a=[],u=!e.once&&[],l=function(p){for(t=e.memory&&p,n=!0,s=i||0,i=0,o=a.length,r=!0;a&&o>s;s++)if(a[s].apply(p[0],p[1])===!1&&e.stopOnFalse){t=!1;break}r=!1,a&&(u?u.length&&l(u.shift()):t?a=[]:c.disable())},c={add:function(){if(a){var n=a.length;(function s(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==r&&s(n)})})(arguments),r?o=a.length:t&&(i=n,l(t))}return this},remove:function(){return a&&x.each(arguments,function(e,t){var n;while((n=x.inArray(t,a,n))>-1)a.splice(n,1),r&&(o>=n&&o--,s>=n&&s--)}),this},has:function(e){return e?x.inArray(e,a)>-1:!(!a||!a.length)},empty:function(){return a=[],o=0,this},disable:function(){return a=u=t=undefined,this},disabled:function(){return!a},lock:function(){return u=undefined,t||c.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!a||n&&!u||(t=t||[],t=[e,t.slice?t.slice():t],r?u.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!n}};return c},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var s=o[0],a=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var s=o[2],a=o[3];r[o[1]]=s.add,a&&s.add(function(){n=a},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=s.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=d.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),s=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?d.call(arguments):r,n===a?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},a,u,l;if(r>1)for(a=Array(r),u=Array(r),l=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(s(t,l,n)).fail(o.reject).progress(s(t,u,a)):--i;return i||o.resolveWith(l,n),o.promise()}}),x.support=function(t){var n=o.createElement("input"),r=o.createDocumentFragment(),i=o.createElement("div"),s=o.createElement("select"),a=s.appendChild(o.createElement("option"));return n.type?(n.type="checkbox",t.checkOn=""!==n.value,t.optSelected=a.selected,t.reliableMarginRight=!0,t.boxSizingReliable=!0,t.pixelPosition=!1,n.checked=!0,t.noCloneChecked=n.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!a.disabled,n=o.createElement("input"),n.value="t",n.type="radio",t.radioValue="t"===n.value,n.setAttribute("checked","t"),n.setAttribute("name","t"),r.appendChild(n),t.checkClone=r.cloneNode(!0).cloneNode(!0).lastChild.checked,t.focusinBubbles="onfocusin"in e,i.style.backgroundClip="content-box",i.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===i.style.backgroundClip,x(function(){var n,r,s="padding:0;margin:0;border:0;display:block;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box",a=o.getElementsByTagName("body")[0];a&&(n=o.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",a.appendChild(n).appendChild(i),i.innerHTML="",i.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%",x.swap(a,null!=a.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===i.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(i,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(i,null)||{width:"4px"}).width,r=i.appendChild(o.createElement("div")),r.style.cssText=i.style.cssText=s,r.style.marginRight=r.style.width="0",i.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),a.removeChild(n))}),t):t}({});var L,q,H=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,O=/([A-Z])/g;function F(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=x.expando+Math.random()}F.uid=1,F.accepts=function(e){return e.nodeType?1===e.nodeType||9===e.nodeType:!0},F.prototype={key:function(e){if(!F.accepts(e))return 0;var t={},n=e[this.expando];if(!n){n=F.uid++;try{t[this.expando]={value:n},Object.defineProperties(e,t)}catch(r){t[this.expando]=n,x.extend(e,t)}}return this.cache[n]||(this.cache[n]={}),n},set:function(e,t,n){var r,i=this.key(e),o=this.cache[i];if("string"==typeof t)o[t]=n;else if(x.isEmptyObject(o))x.extend(this.cache[i],t);else for(r in t)o[r]=t[r];return o},get:function(e,t){var n=this.cache[this.key(e)];return t===undefined?n:n[t]},access:function(e,t,n){var r;return t===undefined||t&&"string"==typeof t&&n===undefined?(r=this.get(e,t),r!==undefined?r:this.get(e,x.camelCase(t))):(this.set(e,t,n),n!==undefined?n:t)},remove:function(e,t){var n,r,i,o=this.key(e),s=this.cache[o];if(t===undefined)this.cache[o]={};else{x.isArray(t)?r=t.concat(t.map(x.camelCase)):(i=x.camelCase(t),t in s?r=[t,i]:(r=i,r=r in s?[r]:r.match(w)||[])),n=r.length;while(n--)delete s[r[n]]}},hasData:function(e){return!x.isEmptyObject(this.cache[e[this.expando]]||{})},discard:function(e){e[this.expando]&&delete this.cache[e[this.expando]]}},L=new F,q=new F,x.extend({acceptData:F.accepts,hasData:function(e){return L.hasData(e)||q.hasData(e)},data:function(e,t,n){return L.access(e,t,n)},removeData:function(e,t){L.remove(e,t)},_data:function(e,t,n){return q.access(e,t,n)},_removeData:function(e,t){q.remove(e,t)}}),x.fn.extend({data:function(e,t){var n,r,i=this[0],o=0,s=null;if(e===undefined){if(this.length&&(s=L.get(i),1===i.nodeType&&!q.get(i,"hasDataAttrs"))){for(n=i.attributes;n.length>o;o++)r=n[o].name,0===r.indexOf("data-")&&(r=x.camelCase(r.slice(5)),P(i,r,s[r]));q.set(i,"hasDataAttrs",!0)}return s}return"object"==typeof e?this.each(function(){L.set(this,e)}):x.access(this,function(t){var n,r=x.camelCase(e);if(i&&t===undefined){if(n=L.get(i,e),n!==undefined)return n;if(n=L.get(i,r),n!==undefined)return n;if(n=P(i,r,undefined),n!==undefined)return n}else this.each(function(){var n=L.get(this,r);L.set(this,r,t),-1!==e.indexOf("-")&&n!==undefined&&L.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){L.remove(this,e)})}});function P(e,t,n){var r;if(n===undefined&&1===e.nodeType)if(r="data-"+t.replace(O,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:H.test(n)?JSON.parse(n):n}catch(i){}L.set(e,t,n)}else n=undefined;return n}x.extend({queue:function(e,t,n){var r;return e?(t=(t||"fx")+"queue",r=q.get(e,t),n&&(!r||x.isArray(n)?r=q.access(e,t,x.makeArray(n)):r.push(n)),r||[]):undefined},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),s=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,s,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return q.get(e,n)||q.access(e,n,{empty:x.Callbacks("once memory").add(function(){q.remove(e,[t+"queue",n])})})}}),x.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),n>arguments.length?x.queue(this[0],e):t===undefined?this:this.each(function(){var n=x.queue(this,e,t);x._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=x.Deferred(),o=this,s=this.length,a=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=undefined),e=e||"fx";while(s--)n=q.get(o[s],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(a));return a(),i.promise(t)}});var R,M,W=/[\t\r\n\f]/g,$=/\r/g,B=/^(?:input|select|textarea|button)$/i;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[x.propFix[e]||e]})},addClass:function(e){var t,n,r,i,o,s=0,a=this.length,u="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,s=0,a=this.length,u=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(u)for(t=(e||"").match(w)||[];a>s;s++)if(n=this[s],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(W," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,i=0,o=x(this),s=e.match(w)||[];while(t=s[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===r||"boolean"===n)&&(this.className&&q.set(this,"__className__",this.className),this.className=this.className||e===!1?"":q.get(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(W," ").indexOf(t)>=0)return!0;return!1},val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=x.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,x(this).val()):e,null==i?i="":"number"==typeof i?i+="":x.isArray(i)&&(i=x.map(i,function(e){return null==e?"":e+""})),t=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&t.set(this,i,"value")!==undefined||(this.value=i))});if(i)return t=x.valHooks[i.type]||x.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&(n=t.get(i,"value"))!==undefined?n:(n=i.value,"string"==typeof n?n.replace($,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,s=o?null:[],a=o?i+1:r.length,u=0>i?a:o?i:0;for(;a>u;u++)if(n=r[u],!(!n.selected&&u!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),s=i.length;while(s--)r=i[s],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,t,n){var i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===r?x.prop(e,t,n):(1===s&&x.isXMLDoc(e)||(t=t.toLowerCase(),i=x.attrHooks[t]||(x.expr.match.bool.test(t)?M:R)),n===undefined?i&&"get"in i&&null!==(o=i.get(e,t))?o:(o=x.find.attr(e,t),null==o?undefined:o):null!==n?i&&"set"in i&&(o=i.set(e,n,t))!==undefined?o:(e.setAttribute(t,n+""),n):(x.removeAttr(e,t),undefined))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(w);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)&&(e[r]=!1),e.removeAttribute(n)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,t,n){var r,i,o,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return o=1!==s||!x.isXMLDoc(e),o&&(t=x.propFix[t]||t,i=x.propHooks[t]),n!==undefined?i&&"set"in i&&(r=i.set(e,n,t))!==undefined?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){return e.hasAttribute("tabindex")||B.test(e.nodeName)||e.href?e.tabIndex:-1}}}}),M={set:function(e,t,n){return t===!1?x.removeAttr(e,n):e.setAttribute(n,n),n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,t){var n=x.expr.attrHandle[t]||x.find.attr;x.expr.attrHandle[t]=function(e,t,r){var i=x.expr.attrHandle[t],o=r?undefined:(x.expr.attrHandle[t]=undefined)!=n(e,t,r)?t.toLowerCase():null;return x.expr.attrHandle[t]=i,o}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,t){return x.isArray(t)?e.checked=x.inArray(x(e).val(),t)>=0:undefined}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var I=/^key/,z=/^(?:mouse|contextmenu)|click/,_=/^(?:focusinfocus|focusoutblur)$/,X=/^([^.]*)(?:\.(.+)|)$/;function U(){return!0}function Y(){return!1}function V(){try{return o.activeElement}catch(e){}}x.event={global:{},add:function(e,t,n,i,o){var s,a,u,l,c,p,f,h,d,g,m,y=q.get(e);if(y){n.handler&&(s=n,n=s.handler,o=s.selector),n.guid||(n.guid=x.guid++),(l=y.events)||(l=y.events={}),(a=y.handle)||(a=y.handle=function(e){return typeof x===r||e&&x.event.triggered===e.type?undefined:x.event.dispatch.apply(a.elem,arguments)},a.elem=e),t=(t||"").match(w)||[""],c=t.length;while(c--)u=X.exec(t[c])||[],d=m=u[1],g=(u[2]||"").split(".").sort(),d&&(f=x.event.special[d]||{},d=(o?f.delegateType:f.bindType)||d,f=x.event.special[d]||{},p=x.extend({type:d,origType:m,data:i,handler:n,guid:n.guid,selector:o,needsContext:o&&x.expr.match.needsContext.test(o),namespace:g.join(".")},s),(h=l[d])||(h=l[d]=[],h.delegateCount=0,f.setup&&f.setup.call(e,i,g,a)!==!1||e.addEventListener&&e.addEventListener(d,a,!1)),f.add&&(f.add.call(e,p),p.handler.guid||(p.handler.guid=n.guid)),o?h.splice(h.delegateCount++,0,p):h.push(p),x.event.global[d]=!0);e=null}},remove:function(e,t,n,r,i){var o,s,a,u,l,c,p,f,h,d,g,m=q.hasData(e)&&q.get(e);if(m&&(u=m.events)){t=(t||"").match(w)||[""],l=t.length;while(l--)if(a=X.exec(t[l])||[],h=g=a[1],d=(a[2]||"").split(".").sort(),h){p=x.event.special[h]||{},h=(r?p.delegateType:p.bindType)||h,f=u[h]||[],a=a[2]&&RegExp("(^|\\.)"+d.join("\\.(?:.*\\.|)")+"(\\.|$)"),s=o=f.length;while(o--)c=f[o],!i&&g!==c.origType||n&&n.guid!==c.guid||a&&!a.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(f.splice(o,1),c.selector&&f.delegateCount--,p.remove&&p.remove.call(e,c));s&&!f.length&&(p.teardown&&p.teardown.call(e,d,m.handle)!==!1||x.removeEvent(e,h,m.handle),delete u[h])}else for(h in u)x.event.remove(e,h+t[l],n,r,!0);x.isEmptyObject(u)&&(delete m.handle,q.remove(e,"events"))}},trigger:function(t,n,r,i){var s,a,u,l,c,p,f,h=[r||o],d=y.call(t,"type")?t.type:t,g=y.call(t,"namespace")?t.namespace.split("."):[];if(a=u=r=r||o,3!==r.nodeType&&8!==r.nodeType&&!_.test(d+x.event.triggered)&&(d.indexOf(".")>=0&&(g=d.split("."),d=g.shift(),g.sort()),c=0>d.indexOf(":")&&"on"+d,t=t[x.expando]?t:new x.Event(d,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=g.join("."),t.namespace_re=t.namespace?RegExp("(^|\\.)"+g.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=undefined,t.target||(t.target=r),n=null==n?[t]:x.makeArray(n,[t]),f=x.event.special[d]||{},i||!f.trigger||f.trigger.apply(r,n)!==!1)){if(!i&&!f.noBubble&&!x.isWindow(r)){for(l=f.delegateType||d,_.test(l+d)||(a=a.parentNode);a;a=a.parentNode)h.push(a),u=a;u===(r.ownerDocument||o)&&h.push(u.defaultView||u.parentWindow||e)}s=0;while((a=h[s++])&&!t.isPropagationStopped())t.type=s>1?l:f.bindType||d,p=(q.get(a,"events")||{})[t.type]&&q.get(a,"handle"),p&&p.apply(a,n),p=c&&a[c],p&&x.acceptData(a)&&p.apply&&p.apply(a,n)===!1&&t.preventDefault();return t.type=d,i||t.isDefaultPrevented()||f._default&&f._default.apply(h.pop(),n)!==!1||!x.acceptData(r)||c&&x.isFunction(r[d])&&!x.isWindow(r)&&(u=r[c],u&&(r[c]=null),x.event.triggered=d,r[d](),x.event.triggered=undefined,u&&(r[c]=u)),t.result}},dispatch:function(e){e=x.event.fix(e);var t,n,r,i,o,s=[],a=d.call(arguments),u=(q.get(this,"events")||{})[e.type]||[],l=x.event.special[e.type]||{};if(a[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),t=0;while((i=s[t++])&&!e.isPropagationStopped()){e.currentTarget=i.elem,n=0;while((o=i.handlers[n++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(o.namespace))&&(e.handleObj=o,e.data=o.data,r=((x.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,a),r!==undefined&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,s=[],a=t.delegateCount,u=e.target;if(a&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!==this;u=u.parentNode||this)if(u.disabled!==!0||"click"!==e.type){for(r=[],n=0;a>n;n++)o=t[n],i=o.selector+" ",r[i]===undefined&&(r[i]=o.needsContext?x(i,this).index(u)>=0:x.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&s.push({elem:u,handlers:r})}return t.length>a&&s.push({elem:this,handlers:t.slice(a)}),s},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,s=t.button;return null==e.pageX&&null!=t.clientX&&(n=e.target.ownerDocument||o,r=n.documentElement,i=n.body,e.pageX=t.clientX+(r&&r.scrollLeft||i&&i.scrollLeft||0)-(r&&r.clientLeft||i&&i.clientLeft||0),e.pageY=t.clientY+(r&&r.scrollTop||i&&i.scrollTop||0)-(r&&r.clientTop||i&&i.clientTop||0)),e.which||s===undefined||(e.which=1&s?1:2&s?3:4&s?2:0),e}},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,s=e,a=this.fixHooks[i];a||(this.fixHooks[i]=a=z.test(i)?this.mouseHooks:I.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new x.Event(s),t=r.length;while(t--)n=r[t],e[n]=s[n];return e.target||(e.target=o),3===e.target.nodeType&&(e.target=e.target.parentNode),a.filter?a.filter(e,s):e},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==V()&&this.focus?(this.focus(),!1):undefined},delegateType:"focusin"},blur:{trigger:function(){return this===V()&&this.blur?(this.blur(),!1):undefined},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&x.nodeName(this,"input")?(this.click(),!1):undefined},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==undefined&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)},x.Event=function(e,t){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.getPreventDefault&&e.getPreventDefault()?U:Y):this.type=e,t&&x.extend(this,t),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,undefined):new x.Event(e,t)},x.Event.prototype={isDefaultPrevented:Y,isPropagationStopped:Y,isImmediatePropagationStopped:Y,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=U,e&&e.preventDefault&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=U,e&&e.stopPropagation&&e.stopPropagation()},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=U,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&o.addEventListener(e,r,!0)},teardown:function(){0===--n&&o.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,t,n,r,i){var o,s;if("object"==typeof e){"string"!=typeof t&&(n=n||t,t=undefined);for(s in e)this.on(s,t,n,e[s],i);return this}if(null==n&&null==r?(r=t,n=t=undefined):null==r&&("string"==typeof t?(r=n,n=undefined):(r=n,n=t,t=undefined)),r===!1)r=Y;else if(!r)return this;return 1===i&&(o=r,r=function(e){return x().off(e),o.apply(this,arguments)},r.guid=o.guid||(o.guid=x.guid++)),this.each(function(){x.event.add(this,e,r,n,t)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,x(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return(t===!1||"function"==typeof t)&&(n=t,t=undefined),n===!1&&(n=Y),this.each(function(){x.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];return n?x.event.trigger(e,t,n,!0):undefined}});var G=/^.[^:#\[\.,]*$/,J=/^(?:parents|prev(?:Until|All))/,Q=x.expr.match.needsContext,K={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t=x(e,this),n=t.length;return this.filter(function(){var e=0;for(;n>e;e++)if(x.contains(this,t[e]))return!0})},not:function(e){return this.pushStack(et(this,e||[],!0))},filter:function(e){return this.pushStack(et(this,e||[],!1))},is:function(e){return!!et(this,"string"==typeof e&&Q.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],s=Q.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(s?s.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?g.call(x(e),this[0]):g.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function Z(e,t){while((e=e[t])&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return Z(e,"nextSibling")},prev:function(e){return Z(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return e.contentDocument||x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(K[e]||x.unique(i),J.test(e)&&i.reverse()),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,t,n){var r=[],i=n!==undefined;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&x(e).is(n))break;r.push(e)}return r},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function et(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(G.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return g.call(t,e)>=0!==n})}var tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,nt=/<([\w:]+)/,rt=/<|&#?\w+;/,it=/<(?:script|style|link)/i,ot=/^(?:checkbox|radio)$/i,st=/checked\s*(?:[^=]|=\s*.checked.)/i,at=/^$|\/(?:java|ecma)script/i,ut=/^true\/(.*)/,lt=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ct={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ct.optgroup=ct.option,ct.tbody=ct.tfoot=ct.colgroup=ct.caption=ct.thead,ct.th=ct.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===undefined?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||o).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=pt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(mt(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&dt(mt(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++)1===e.nodeType&&(x.cleanData(mt(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var t=this[0]||{},n=0,r=this.length;if(e===undefined&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!it.test(e)&&!ct[(nt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(tt,"<$1></$2>");try{for(;r>n;n++)t=this[n]||{},1===t.nodeType&&(x.cleanData(mt(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=f.apply([],e);var r,i,o,s,a,u,l=0,c=this.length,p=this,h=c-1,d=e[0],g=x.isFunction(d);if(g||!(1>=c||"string"!=typeof d||x.support.checkClone)&&st.test(d))return this.each(function(r){var i=p.eq(r);g&&(e[0]=d.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(r=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),i=r.firstChild,1===r.childNodes.length&&(r=i),i)){for(o=x.map(mt(r,"script"),ft),s=o.length;c>l;l++)a=r,l!==h&&(a=x.clone(a,!0,!0),s&&x.merge(o,mt(a,"script"))),t.call(this[l],a,l);if(s)for(u=o[o.length-1].ownerDocument,x.map(o,ht),l=0;s>l;l++)a=o[l],at.test(a.type||"")&&!q.access(a,"globalEval")&&x.contains(u,a)&&(a.src?x._evalUrl(a.src):x.globalEval(a.textContent.replace(lt,"")))}return this}}),x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=[],i=x(e),o=i.length-1,s=0;for(;o>=s;s++)n=s===o?this:this.clone(!0),x(i[s])[t](n),h.apply(r,n.get());return this.pushStack(r)}}),x.extend({clone:function(e,t,n){var r,i,o,s,a=e.cloneNode(!0),u=x.contains(e.ownerDocument,e);if(!(x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(s=mt(a),o=mt(e),r=0,i=o.length;i>r;r++)yt(o[r],s[r]);if(t)if(n)for(o=o||mt(e),s=s||mt(a),r=0,i=o.length;i>r;r++)gt(o[r],s[r]);else gt(e,a);return s=mt(a,"script"),s.length>0&&dt(s,!u&&mt(e,"script")),a},buildFragment:function(e,t,n,r){var i,o,s,a,u,l,c=0,p=e.length,f=t.createDocumentFragment(),h=[];for(;p>c;c++)if(i=e[c],i||0===i)if("object"===x.type(i))x.merge(h,i.nodeType?[i]:i);else if(rt.test(i)){o=o||f.appendChild(t.createElement("div")),s=(nt.exec(i)||["",""])[1].toLowerCase(),a=ct[s]||ct._default,o.innerHTML=a[1]+i.replace(tt,"<$1></$2>")+a[2],l=a[0];while(l--)o=o.lastChild;x.merge(h,o.childNodes),o=f.firstChild,o.textContent=""}else h.push(t.createTextNode(i));f.textContent="",c=0;while(i=h[c++])if((!r||-1===x.inArray(i,r))&&(u=x.contains(i.ownerDocument,i),o=mt(f.appendChild(i),"script"),u&&dt(o),n)){l=0;while(i=o[l++])at.test(i.type||"")&&n.push(i)}return f},cleanData:function(e){var t,n,r,i,o,s,a=x.event.special,u=0;for(;(n=e[u])!==undefined;u++){if(F.accepts(n)&&(o=n[q.expando],o&&(t=q.cache[o]))){if(r=Object.keys(t.events||{}),r.length)for(s=0;(i=r[s])!==undefined;s++)a[i]?x.event.remove(n,i):x.removeEvent(n,i,t.handle);q.cache[o]&&delete q.cache[o]}delete L.cache[n[L.expando]]}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}});function pt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function ft(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function ht(e){var t=ut.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function dt(e,t){var n=e.length,r=0;for(;n>r;r++)q.set(e[r],"globalEval",!t||q.get(t[r],"globalEval"))}function gt(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(q.hasData(e)&&(o=q.access(e),s=q.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)x.event.add(t,i,l[i][n])}L.hasData(e)&&(a=L.access(e),u=x.extend({},a),L.set(t,u))}}function mt(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return t===undefined||t&&x.nodeName(e,t)?x.merge([e],n):n}function yt(e,t){var n=t.nodeName.toLowerCase();"input"===n&&ot.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}x.fn.extend({wrapAll:function(e){var t;return x.isFunction(e)?this.each(function(t){x(this).wrapAll(e.call(this,t))}):(this[0]&&(t=x(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this)},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var vt,xt,bt=/^(none|table(?!-c[ea]).+)/,wt=/^margin/,Tt=RegExp("^("+b+")(.*)$","i"),Ct=RegExp("^("+b+")(?!px)[a-z%]+$","i"),kt=RegExp("^([+-])=("+b+")","i"),Nt={BODY:"block"},Et={position:"absolute",visibility:"hidden",display:"block"},St={letterSpacing:0,fontWeight:400},jt=["Top","Right","Bottom","Left"],Dt=["Webkit","O","Moz","ms"];function At(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Dt.length;while(i--)if(t=Dt[i]+n,t in e)return t;return r}function Lt(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function qt(t){return e.getComputedStyle(t,null)}function Ht(e,t){var n,r,i,o=[],s=0,a=e.length;for(;a>s;s++)r=e[s],r.style&&(o[s]=q.get(r,"olddisplay"),n=r.style.display,t?(o[s]||"none"!==n||(r.style.display=""),""===r.style.display&&Lt(r)&&(o[s]=q.access(r,"olddisplay",Rt(r.nodeName)))):o[s]||(i=Lt(r),(n&&"none"!==n||!i)&&q.set(r,"olddisplay",i?n:x.css(r,"display"))));for(s=0;a>s;s++)r=e[s],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[s]||"":"none"));return e}x.fn.extend({css:function(e,t){return x.access(this,function(e,t,n){var r,i,o={},s=0;if(x.isArray(t)){for(r=qt(e),i=t.length;i>s;s++)o[t[s]]=x.css(e,t[s],!1,r);return o}return n!==undefined?x.style(e,t,n):x.css(e,t)},e,t,arguments.length>1)},show:function(){return Ht(this,!0)},hide:function(){return Ht(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Lt(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=vt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,s,a=x.camelCase(t),u=e.style;return t=x.cssProps[a]||(x.cssProps[a]=At(u,a)),s=x.cssHooks[t]||x.cssHooks[a],n===undefined?s&&"get"in s&&(i=s.get(e,!1,r))!==undefined?i:u[t]:(o=typeof n,"string"===o&&(i=kt.exec(n))&&(n=(i[1]+1)*i[2]+parseFloat(x.css(e,t)),o="number"),null==n||"number"===o&&isNaN(n)||("number"!==o||x.cssNumber[a]||(n+="px"),x.support.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),s&&"set"in s&&(n=s.set(e,n,r))===undefined||(u[t]=n)),undefined)}},css:function(e,t,n,r){var i,o,s,a=x.camelCase(t);return t=x.cssProps[a]||(x.cssProps[a]=At(e.style,a)),s=x.cssHooks[t]||x.cssHooks[a],s&&"get"in s&&(i=s.get(e,!0,n)),i===undefined&&(i=vt(e,t,r)),"normal"===i&&t in St&&(i=St[t]),""===n||n?(o=parseFloat(i),n===!0||x.isNumeric(o)?o||0:i):i}}),vt=function(e,t,n){var r,i,o,s=n||qt(e),a=s?s.getPropertyValue(t)||s[t]:undefined,u=e.style;return s&&(""!==a||x.contains(e.ownerDocument,e)||(a=x.style(e,t)),Ct.test(a)&&wt.test(t)&&(r=u.width,i=u.minWidth,o=u.maxWidth,u.minWidth=u.maxWidth=u.width=a,a=s.width,u.width=r,u.minWidth=i,u.maxWidth=o)),a};function Ot(e,t,n){var r=Tt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function Ft(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,s=0;for(;4>o;o+=2)"margin"===n&&(s+=x.css(e,n+jt[o],!0,i)),r?("content"===n&&(s-=x.css(e,"padding"+jt[o],!0,i)),"margin"!==n&&(s-=x.css(e,"border"+jt[o]+"Width",!0,i))):(s+=x.css(e,"padding"+jt[o],!0,i),"padding"!==n&&(s+=x.css(e,"border"+jt[o]+"Width",!0,i)));return s}function Pt(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=qt(e),s=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=vt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Ct.test(i))return i;r=s&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+Ft(e,t,n||(s?"border":"content"),r,o)+"px"}function Rt(e){var t=o,n=Nt[e];return n||(n=Mt(e,t),"none"!==n&&n||(xt=(xt||x("<iframe frameborder='0' width='0' height='0'/>").css("cssText","display:block !important")).appendTo(t.documentElement),t=(xt[0].contentWindow||xt[0].contentDocument).document,t.write("<!doctype html><html><body>"),t.close(),n=Mt(e,t),xt.detach()),Nt[e]=n),n}function Mt(e,t){var n=x(t.createElement(e)).appendTo(t.body),r=x.css(n[0],"display");return n.remove(),r}x.each(["height","width"],function(e,t){x.cssHooks[t]={get:function(e,n,r){return n?0===e.offsetWidth&&bt.test(x.css(e,"display"))?x.swap(e,Et,function(){return Pt(e,t,r)}):Pt(e,t,r):undefined},set:function(e,n,r){var i=r&&qt(e);return Ot(e,n,r?Ft(e,t,r,x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,i),i):0)}}}),x(function(){x.support.reliableMarginRight||(x.cssHooks.marginRight={get:function(e,t){return t?x.swap(e,{display:"inline-block"},vt,[e,"marginRight"]):undefined}}),!x.support.pixelPosition&&x.fn.position&&x.each(["top","left"],function(e,t){x.cssHooks[t]={get:function(e,n){return n?(n=vt(e,t),Ct.test(n)?x(e).position()[t]+"px":n):undefined}}})}),x.expr&&x.expr.filters&&(x.expr.filters.hidden=function(e){return 0>=e.offsetWidth&&0>=e.offsetHeight},x.expr.filters.visible=function(e){return!x.expr.filters.hidden(e)}),x.each({margin:"",padding:"",border:"Width"},function(e,t){x.cssHooks[e+t]={expand:function(n){var r=0,i={},o="string"==typeof n?n.split(" "):[n];for(;4>r;r++)i[e+jt[r]+t]=o[r]||o[r-2]||o[0];return i}},wt.test(e)||(x.cssHooks[e+t].set=Ot)});var Wt=/%20/g,$t=/\[\]$/,Bt=/\r?\n/g,It=/^(?:submit|button|image|reset|file)$/i,zt=/^(?:input|select|textarea|keygen)/i;x.fn.extend({serialize:function(){return x.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=x.prop(this,"elements");return e?x.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!x(this).is(":disabled")&&zt.test(this.nodeName)&&!It.test(e)&&(this.checked||!ot.test(e))}).map(function(e,t){var n=x(this).val();return null==n?null:x.isArray(n)?x.map(n,function(e){return{name:t.name,value:e.replace(Bt,"\r\n")}}):{name:t.name,value:n.replace(Bt,"\r\n")}}).get()}}),x.param=function(e,t){var n,r=[],i=function(e,t){t=x.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(t===undefined&&(t=x.ajaxSettings&&x.ajaxSettings.traditional),x.isArray(e)||e.jquery&&!x.isPlainObject(e))x.each(e,function(){i(this.name,this.value)});else for(n in e)_t(n,e[n],t,i);return r.join("&").replace(Wt,"+")};function _t(e,t,n,r){var i;if(x.isArray(t))x.each(t,function(t,i){n||$t.test(e)?r(e,i):_t(e+"["+("object"==typeof i?t:"")+"]",i,n,r)});else if(n||"object"!==x.type(t))r(e,t);else for(i in t)_t(e+"["+i+"]",t[i],n,r)}x.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){x.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),x.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}});var Xt,Ut,Yt=x.now(),Vt=/\?/,Gt=/#.*$/,Jt=/([?&])_=[^&]*/,Qt=/^(.*?):[ \t]*([^\r\n]*)$/gm,Kt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Zt=/^(?:GET|HEAD)$/,en=/^\/\//,tn=/^([\w.+-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,nn=x.fn.load,rn={},on={},sn="*/".concat("*");try{Ut=i.href}catch(an){Ut=o.createElement("a"),Ut.href="",Ut=Ut.href}Xt=tn.exec(Ut.toLowerCase())||[];function un(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(w)||[];if(x.isFunction(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function ln(e,t,n,r){var i={},o=e===on;function s(a){var u;return i[a]=!0,x.each(e[a]||[],function(e,a){var l=a(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):undefined:(t.dataTypes.unshift(l),s(l),!1)}),u}return s(t.dataTypes[0])||!i["*"]&&s("*")}function cn(e,t){var n,r,i=x.ajaxSettings.flatOptions||{};for(n in t)t[n]!==undefined&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&x.extend(!0,e,r),e}x.fn.load=function(e,t,n){if("string"!=typeof e&&nn)return nn.apply(this,arguments);var r,i,o,s=this,a=e.indexOf(" ");return a>=0&&(r=e.slice(a),e=e.slice(0,a)),x.isFunction(t)?(n=t,t=undefined):t&&"object"==typeof t&&(i="POST"),s.length>0&&x.ajax({url:e,type:i,dataType:"html",data:t}).done(function(e){o=arguments,s.html(r?x("<div>").append(x.parseHTML(e)).find(r):e)}).complete(n&&function(e,t){s.each(n,o||[e.responseText,t,e])}),this},x.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){x.fn[t]=function(e){return this.on(t,e)}}),x.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ut,type:"GET",isLocal:Kt.test(Xt[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":sn,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":x.parseJSON,"text xml":x.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?cn(cn(e,x.ajaxSettings),t):cn(x.ajaxSettings,e)},ajaxPrefilter:un(rn),ajaxTransport:un(on),ajax:function(e,t){"object"==typeof e&&(t=e,e=undefined),t=t||{};var n,r,i,o,s,a,u,l,c=x.ajaxSetup({},t),p=c.context||c,f=c.context&&(p.nodeType||p.jquery)?x(p):x.event,h=x.Deferred(),d=x.Callbacks("once memory"),g=c.statusCode||{},m={},y={},v=0,b="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===v){if(!o){o={};while(t=Qt.exec(i))o[t[1].toLowerCase()]=t[2]}t=o[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===v?i:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return v||(e=y[n]=y[n]||e,m[e]=t),this},overrideMimeType:function(e){return v||(c.mimeType=e),this},statusCode:function(e){var t;if(e)if(2>v)for(t in e)g[t]=[g[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||b;return n&&n.abort(t),k(0,t),this}};if(h.promise(T).complete=d.add,T.success=T.done,T.error=T.fail,c.url=((e||c.url||Ut)+"").replace(Gt,"").replace(en,Xt[1]+"//"),c.type=t.method||t.type||c.method||c.type,c.dataTypes=x.trim(c.dataType||"*").toLowerCase().match(w)||[""],null==c.crossDomain&&(a=tn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===Xt[1]&&a[2]===Xt[2]&&(a[3]||("http:"===a[1]?"80":"443"))===(Xt[3]||("http:"===Xt[1]?"80":"443")))),c.data&&c.processData&&"string"!=typeof c.data&&(c.data=x.param(c.data,c.traditional)),ln(rn,c,t,T),2===v)return T;u=c.global,u&&0===x.active++&&x.event.trigger("ajaxStart"),c.type=c.type.toUpperCase(),c.hasContent=!Zt.test(c.type),r=c.url,c.hasContent||(c.data&&(r=c.url+=(Vt.test(r)?"&":"?")+c.data,delete c.data),c.cache===!1&&(c.url=Jt.test(r)?r.replace(Jt,"$1_="+Yt++):r+(Vt.test(r)?"&":"?")+"_="+Yt++)),c.ifModified&&(x.lastModified[r]&&T.setRequestHeader("If-Modified-Since",x.lastModified[r]),x.etag[r]&&T.setRequestHeader("If-None-Match",x.etag[r])),(c.data&&c.hasContent&&c.contentType!==!1||t.contentType)&&T.setRequestHeader("Content-Type",c.contentType),T.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+("*"!==c.dataTypes[0]?", "+sn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)T.setRequestHeader(l,c.headers[l]);if(c.beforeSend&&(c.beforeSend.call(p,T,c)===!1||2===v))return T.abort();b="abort";for(l in{success:1,error:1,complete:1})T[l](c[l]);if(n=ln(on,c,t,T)){T.readyState=1,u&&f.trigger("ajaxSend",[T,c]),c.async&&c.timeout>0&&(s=setTimeout(function(){T.abort("timeout")},c.timeout));try{v=1,n.send(m,k)}catch(C){if(!(2>v))throw C;k(-1,C)}}else k(-1,"No Transport");function k(e,t,o,a){var l,m,y,b,w,C=t;2!==v&&(v=2,s&&clearTimeout(s),n=undefined,i=a||"",T.readyState=e>0?4:0,l=e>=200&&300>e||304===e,o&&(b=pn(c,T,o)),b=fn(c,b,T,l),l?(c.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(x.lastModified[r]=w),w=T.getResponseHeader("etag"),w&&(x.etag[r]=w)),204===e||"HEAD"===c.type?C="nocontent":304===e?C="notmodified":(C=b.state,m=b.data,y=b.error,l=!y)):(y=C,(e||!C)&&(C="error",0>e&&(e=0))),T.status=e,T.statusText=(t||C)+"",l?h.resolveWith(p,[m,C,T]):h.rejectWith(p,[T,C,y]),T.statusCode(g),g=undefined,u&&f.trigger(l?"ajaxSuccess":"ajaxError",[T,c,l?m:y]),d.fireWith(p,[T,C]),u&&(f.trigger("ajaxComplete",[T,c]),--x.active||x.event.trigger("ajaxStop")))}return T},getJSON:function(e,t,n){return x.get(e,t,n,"json")},getScript:function(e,t){return x.get(e,undefined,t,"script")}}),x.each(["get","post"],function(e,t){x[t]=function(e,n,r,i){return x.isFunction(n)&&(i=i||r,r=n,n=undefined),x.ajax({url:e,type:t,dataType:i,data:n,success:r})}});function pn(e,t,n){var r,i,o,s,a=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),r===undefined&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in a)if(a[i]&&a[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}s||(s=i)}o=o||s}return o?(o!==u[0]&&u.unshift(o),n[o]):undefined}function fn(e,t,n,r){var i,o,s,a,u,l={},c=e.dataTypes.slice();if(c[1])for(s in e.converters)l[s.toLowerCase()]=e.converters[s];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(s=l[u+" "+o]||l["* "+o],!s)for(i in l)if(a=i.split(" "),a[1]===o&&(s=l[u+" "+a[0]]||l["* "+a[0]])){s===!0?s=l[i]:l[i]!==!0&&(o=a[0],c.unshift(a[1]));break}if(s!==!0)if(s&&e["throws"])t=s(t);else try{t=s(t)}catch(p){return{state:"parsererror",error:s?p:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}x.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(e){return x.globalEval(e),e}}}),x.ajaxPrefilter("script",function(e){e.cache===undefined&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),x.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(r,i){t=x("<script>").prop({async:!0,charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&i("error"===e.type?404:200,e.type)}),o.head.appendChild(t[0])},abort:function(){n&&n()}}}});var hn=[],dn=/(=)\?(?=&|$)|\?\?/;x.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=hn.pop()||x.expando+"_"+Yt++;return this[e]=!0,e}}),x.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,s,a=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&!(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");return a||"jsonp"===t.dataTypes[0]?(i=t.jsonpCallback=x.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,a?t[a]=t[a].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(Vt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return s||x.error(i+" was not called"),s[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){s=arguments},r.always(function(){e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,hn.push(i)),s&&x.isFunction(o)&&o(s[0]),s=o=undefined}),"script"):undefined}),x.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(e){}};var gn=x.ajaxSettings.xhr(),mn={0:200,1223:204},yn=0,vn={};e.ActiveXObject&&x(e).on("unload",function(){for(var e in vn)vn[e]();vn=undefined}),x.support.cors=!!gn&&"withCredentials"in gn,x.support.ajax=gn=!!gn,x.ajaxTransport(function(e){var t;return x.support.cors||gn&&!e.crossDomain?{send:function(n,r){var i,o,s=e.xhr();if(s.open(e.type,e.url,e.async,e.username,e.password),e.xhrFields)for(i in e.xhrFields)s[i]=e.xhrFields[i];e.mimeType&&s.overrideMimeType&&s.overrideMimeType(e.mimeType),e.crossDomain||n["X-Requested-With"]||(n["X-Requested-With"]="XMLHttpRequest");for(i in n)s.setRequestHeader(i,n[i]);t=function(e){return function(){t&&(delete vn[o],t=s.onload=s.onerror=null,"abort"===e?s.abort():"error"===e?r(s.status||404,s.statusText):r(mn[s.status]||s.status,s.statusText,"string"==typeof s.responseText?{text:s.responseText}:undefined,s.getAllResponseHeaders()))}},s.onload=t(),s.onerror=t("error"),t=vn[o=yn++]=t("abort"),s.send(e.hasContent&&e.data||null)},abort:function(){t&&t()}}:undefined});var xn,bn,wn=/^(?:toggle|show|hide)$/,Tn=RegExp("^(?:([+-])=|)("+b+")([a-z%]*)$","i"),Cn=/queueHooks$/,kn=[An],Nn={"*":[function(e,t){var n=this.createTween(e,t),r=n.cur(),i=Tn.exec(t),o=i&&i[3]||(x.cssNumber[e]?"":"px"),s=(x.cssNumber[e]||"px"!==o&&+r)&&Tn.exec(x.css(n.elem,e)),a=1,u=20;if(s&&s[3]!==o){o=o||s[3],i=i||[],s=+r||1;do a=a||".5",s/=a,x.style(n.elem,e,s+o);while(a!==(a=n.cur()/r)&&1!==a&&--u)}return i&&(s=n.start=+s||+r||0,n.unit=o,n.end=i[1]?s+(i[1]+1)*i[2]:+i[2]),n}]};function En(){return setTimeout(function(){xn=undefined}),xn=x.now()}function Sn(e,t,n){var r,i=(Nn[t]||[]).concat(Nn["*"]),o=0,s=i.length;for(;s>o;o++)if(r=i[o].call(n,t,e))return r}function jn(e,t,n){var r,i,o=0,s=kn.length,a=x.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;var t=xn||En(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,s=0,u=l.tweens.length;for(;u>s;s++)l.tweens[s].run(o);return a.notifyWith(e,[l,o,n]),1>o&&u?n:(a.resolveWith(e,[l]),!1)},l=a.promise({elem:e,props:x.extend({},t),opts:x.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:xn||En(),duration:n.duration,tweens:[],createTween:function(t,n){var r=x.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;r>n;n++)l.tweens[n].run(1);return t?a.resolveWith(e,[l,t]):a.rejectWith(e,[l,t]),this}}),c=l.props;for(Dn(c,l.opts.specialEasing);s>o;o++)if(r=kn[o].call(l,e,c,l.opts))return r;return x.map(c,Sn,l),x.isFunction(l.opts.start)&&l.opts.start.call(e,l),x.fx.timer(x.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function Dn(e,t){var n,r,i,o,s;for(n in e)if(r=x.camelCase(n),i=t[r],o=e[n],x.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),s=x.cssHooks[r],s&&"expand"in s){o=s.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}x.Animation=x.extend(jn,{tweener:function(e,t){x.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;i>r;r++)n=e[r],Nn[n]=Nn[n]||[],Nn[n].unshift(t)},prefilter:function(e,t){t?kn.unshift(e):kn.push(e)}});function An(e,t,n){var r,i,o,s,a,u,l=this,c={},p=e.style,f=e.nodeType&&Lt(e),h=q.get(e,"fxshow");n.queue||(a=x._queueHooks(e,"fx"),null==a.unqueued&&(a.unqueued=0,u=a.empty.fire,a.empty.fire=function(){a.unqueued||u()}),a.unqueued++,l.always(function(){l.always(function(){a.unqueued--,x.queue(e,"fx").length||a.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],"inline"===x.css(e,"display")&&"none"===x.css(e,"float")&&(p.display="inline-block")),n.overflow&&(p.overflow="hidden",l.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],wn.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(f?"hide":"show")){if("show"!==i||!h||h[r]===undefined)continue;f=!0}c[r]=h&&h[r]||x.style(e,r)}if(!x.isEmptyObject(c)){h?"hidden"in h&&(f=h.hidden):h=q.access(e,"fxshow",{}),o&&(h.hidden=!f),f?x(e).show():l.done(function(){x(e).hide()}),l.done(function(){var t;q.remove(e,"fxshow");for(t in c)x.style(e,t,c[t])});for(r in c)s=Sn(f?h[r]:0,r,l),r in h||(h[r]=s.start,f&&(s.end=s.start,s.start="width"===r||"height"===r?1:0))}}function Ln(e,t,n,r,i){return new Ln.prototype.init(e,t,n,r,i)}x.Tween=Ln,Ln.prototype={constructor:Ln,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(x.cssNumber[n]?"":"px")},cur:function(){var e=Ln.propHooks[this.prop];return e&&e.get?e.get(this):Ln.propHooks._default.get(this)},run:function(e){var t,n=Ln.propHooks[this.prop];return this.pos=t=this.options.duration?x.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Ln.propHooks._default.set(this),this}},Ln.prototype.init.prototype=Ln.prototype,Ln.propHooks={_default:{get:function(e){var t;return null==e.elem[e.prop]||e.elem.style&&null!=e.elem.style[e.prop]?(t=x.css(e.elem,e.prop,""),t&&"auto"!==t?t:0):e.elem[e.prop]},set:function(e){x.fx.step[e.prop]?x.fx.step[e.prop](e):e.elem.style&&(null!=e.elem.style[x.cssProps[e.prop]]||x.cssHooks[e.prop])?x.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Ln.propHooks.scrollTop=Ln.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},x.each(["toggle","show","hide"],function(e,t){var n=x.fn[t];x.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(qn(t,!0),e,r,i)}}),x.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Lt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=x.isEmptyObject(e),o=x.speed(t,n,r),s=function(){var t=jn(this,x.extend({},e),o);(i||q.get(this,"finish"))&&t.stop(!0)};return s.finish=s,i||o.queue===!1?this.each(s):this.queue(o.queue,s)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=undefined),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=x.timers,s=q.get(this);if(i)s[i]&&s[i].stop&&r(s[i]);else for(i in s)s[i]&&s[i].stop&&Cn.test(i)&&r(s[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));(t||!n)&&x.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=q.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=x.timers,s=r?r.length:0;for(n.finish=!0,x.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;s>t;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}});function qn(e,t){var n,r={height:e},i=0;for(t=t?1:0;4>i;i+=2-t)n=jt[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}x.each({slideDown:qn("show"),slideUp:qn("hide"),slideToggle:qn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){x.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),x.speed=function(e,t,n){var r=e&&"object"==typeof e?x.extend({},e):{complete:n||!n&&t||x.isFunction(e)&&e,duration:e,easing:n&&t||t&&!x.isFunction(t)&&t};return r.duration=x.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in x.fx.speeds?x.fx.speeds[r.duration]:x.fx.speeds._default,(null==r.queue||r.queue===!0)&&(r.queue="fx"),r.old=r.complete,r.complete=function(){x.isFunction(r.old)&&r.old.call(this),r.queue&&x.dequeue(this,r.queue)},r},x.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},x.timers=[],x.fx=Ln.prototype.init,x.fx.tick=function(){var e,t=x.timers,n=0;for(xn=x.now();t.length>n;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||x.fx.stop(),xn=undefined},x.fx.timer=function(e){e()&&x.timers.push(e)&&x.fx.start()},x.fx.interval=13,x.fx.start=function(){bn||(bn=setInterval(x.fx.tick,x.fx.interval))},x.fx.stop=function(){clearInterval(bn),bn=null},x.fx.speeds={slow:600,fast:200,_default:400},x.fx.step={},x.expr&&x.expr.filters&&(x.expr.filters.animated=function(e){return x.grep(x.timers,function(t){return e===t.elem}).length}),x.fn.offset=function(e){if(arguments.length)return e===undefined?this:this.each(function(t){x.offset.setOffset(this,e,t)});var t,n,i=this[0],o={top:0,left:0},s=i&&i.ownerDocument;if(s)return t=s.documentElement,x.contains(t,i)?(typeof i.getBoundingClientRect!==r&&(o=i.getBoundingClientRect()),n=Hn(s),{top:o.top+n.pageYOffset-t.clientTop,left:o.left+n.pageXOffset-t.clientLeft}):o},x.offset={setOffset:function(e,t,n){var r,i,o,s,a,u,l,c=x.css(e,"position"),p=x(e),f={};"static"===c&&(e.style.position="relative"),a=p.offset(),o=x.css(e,"top"),u=x.css(e,"left"),l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1,l?(r=p.position(),s=r.top,i=r.left):(s=parseFloat(o)||0,i=parseFloat(u)||0),x.isFunction(t)&&(t=t.call(e,n,a)),null!=t.top&&(f.top=t.top-a.top+s),null!=t.left&&(f.left=t.left-a.left+i),"using"in t?t.using.call(e,f):p.css(f)}},x.fn.extend({position:function(){if(this[0]){var e,t,n=this[0],r={top:0,left:0};return"fixed"===x.css(n,"position")?t=n.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),x.nodeName(e[0],"html")||(r=e.offset()),r.top+=x.css(e[0],"borderTopWidth",!0),r.left+=x.css(e[0],"borderLeftWidth",!0)),{top:t.top-r.top-x.css(n,"marginTop",!0),left:t.left-r.left-x.css(n,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||s;while(e&&!x.nodeName(e,"html")&&"static"===x.css(e,"position"))e=e.offsetParent;return e||s})}}),x.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,n){var r="pageYOffset"===n;x.fn[t]=function(i){return x.access(this,function(t,i,o){var s=Hn(t);return o===undefined?s?s[n]:t[i]:(s?s.scrollTo(r?e.pageXOffset:o,r?o:e.pageYOffset):t[i]=o,undefined)},t,i,arguments.length,null)}});function Hn(e){return x.isWindow(e)?e:9===e.nodeType&&e.defaultView}x.each({Height:"height",Width:"width"},function(e,t){x.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){x.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),s=n||(r===!0||i===!0?"margin":"border");return x.access(this,function(t,n,r){var i;return x.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):r===undefined?x.css(t,n,s):x.style(t,n,r,s)},t,o?r:undefined,o,null)}})}),x.fn.size=function(){return this.length},x.fn.andSelf=x.fn.addBack,"object"==typeof module&&module&&"object"==typeof module.exports?module.exports=x:"function"==typeof define&&define.amd&&define("jquery",[],function(){return x}),"object"==typeof e&&"object"==typeof e.document&&(e.jQuery=e.$=x)})(window); \ No newline at end of file | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/jquery.cookie.js b/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/jquery.cookie.js deleted file mode 100755 index 92719000..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/jquery.cookie.js +++ /dev/null | |||
@@ -1,117 +0,0 @@ | |||
1 | /*! | ||
2 | * jQuery Cookie Plugin v1.4.0 | ||
3 | * https://github.com/carhartl/jquery-cookie | ||
4 | * | ||
5 | * Copyright 2013 Klaus Hartl | ||
6 | * Released under the MIT license | ||
7 | */ | ||
8 | (function (factory) { | ||
9 | if (typeof define === 'function' && define.amd) { | ||
10 | // AMD. Register as anonymous module. | ||
11 | define(['jquery'], factory); | ||
12 | } else { | ||
13 | // Browser globals. | ||
14 | factory(jQuery); | ||
15 | } | ||
16 | }(function ($) { | ||
17 | |||
18 | var pluses = /\+/g; | ||
19 | |||
20 | function encode(s) { | ||
21 | return config.raw ? s : encodeURIComponent(s); | ||
22 | } | ||
23 | |||
24 | function decode(s) { | ||
25 | return config.raw ? s : decodeURIComponent(s); | ||
26 | } | ||
27 | |||
28 | function stringifyCookieValue(value) { | ||
29 | return encode(config.json ? JSON.stringify(value) : String(value)); | ||
30 | } | ||
31 | |||
32 | function parseCookieValue(s) { | ||
33 | if (s.indexOf('"') === 0) { | ||
34 | // This is a quoted cookie as according to RFC2068, unescape... | ||
35 | s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); | ||
36 | } | ||
37 | |||
38 | try { | ||
39 | // Replace server-side written pluses with spaces. | ||
40 | // If we can't decode the cookie, ignore it, it's unusable. | ||
41 | s = decodeURIComponent(s.replace(pluses, ' ')); | ||
42 | } catch(e) { | ||
43 | return; | ||
44 | } | ||
45 | |||
46 | try { | ||
47 | // If we can't parse the cookie, ignore it, it's unusable. | ||
48 | return config.json ? JSON.parse(s) : s; | ||
49 | } catch(e) {} | ||
50 | } | ||
51 | |||
52 | function read(s, converter) { | ||
53 | var value = config.raw ? s : parseCookieValue(s); | ||
54 | return $.isFunction(converter) ? converter(value) : value; | ||
55 | } | ||
56 | |||
57 | var config = $.cookie = function (key, value, options) { | ||
58 | |||
59 | // Write | ||
60 | if (value !== undefined && !$.isFunction(value)) { | ||
61 | options = $.extend({}, config.defaults, options); | ||
62 | |||
63 | if (typeof options.expires === 'number') { | ||
64 | var days = options.expires, t = options.expires = new Date(); | ||
65 | t.setDate(t.getDate() + days); | ||
66 | } | ||
67 | |||
68 | return (document.cookie = [ | ||
69 | encode(key), '=', stringifyCookieValue(value), | ||
70 | options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE | ||
71 | options.path ? '; path=' + options.path : '', | ||
72 | options.domain ? '; domain=' + options.domain : '', | ||
73 | options.secure ? '; secure' : '' | ||
74 | ].join('')); | ||
75 | } | ||
76 | |||
77 | // Read | ||
78 | |||
79 | var result = key ? undefined : {}; | ||
80 | |||
81 | // To prevent the for loop in the first place assign an empty array | ||
82 | // in case there are no cookies at all. Also prevents odd result when | ||
83 | // calling $.cookie(). | ||
84 | var cookies = document.cookie ? document.cookie.split('; ') : []; | ||
85 | |||
86 | for (var i = 0, l = cookies.length; i < l; i++) { | ||
87 | var parts = cookies[i].split('='); | ||
88 | var name = decode(parts.shift()); | ||
89 | var cookie = parts.join('='); | ||
90 | |||
91 | if (key && key === name) { | ||
92 | // If second argument (value) is a function it's a converter... | ||
93 | result = read(cookie, value); | ||
94 | break; | ||
95 | } | ||
96 | |||
97 | // Prevent storing a cookie that we couldn't decode. | ||
98 | if (!key && (cookie = read(cookie)) !== undefined) { | ||
99 | result[name] = cookie; | ||
100 | } | ||
101 | } | ||
102 | |||
103 | return result; | ||
104 | }; | ||
105 | |||
106 | config.defaults = {}; | ||
107 | |||
108 | $.removeCookie = function (key, options) { | ||
109 | if ($.cookie(key) !== undefined) { | ||
110 | // Must not alter options, thus extending a fresh object... | ||
111 | $.cookie(key, '', $.extend({}, options, { expires: -1 })); | ||
112 | return true; | ||
113 | } | ||
114 | return false; | ||
115 | }; | ||
116 | |||
117 | })); | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/restoreScroll.js b/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/restoreScroll.js deleted file mode 100644 index 331c9e19..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/_global/js/restoreScroll.js +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | function supportsLocalStorage() { | ||
2 | try { | ||
3 | return 'localStorage' in window && window['localStorage'] !== null; | ||
4 | } catch (e) { | ||
5 | return false; | ||
6 | } | ||
7 | } | ||
8 | |||
9 | function savePercent(id, percent) { | ||
10 | if (!supportsLocalStorage()) { return false; } | ||
11 | localStorage["poche.article." + id + ".percent"] = percent; | ||
12 | return true; | ||
13 | } | ||
14 | |||
15 | function retrievePercent(id) { | ||
16 | if (!supportsLocalStorage()) { return false; } | ||
17 | |||
18 | var bheight = $(document).height(); | ||
19 | var percent = localStorage["poche.article." + id + ".percent"]; | ||
20 | var scroll = bheight * percent; | ||
21 | |||
22 | $('html,body').animate({scrollTop: scroll}, 'fast'); | ||
23 | |||
24 | return true; | ||
25 | } \ No newline at end of file | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/css/font.css b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/css/font.css deleted file mode 100755 index 7c02a16f..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/css/font.css +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | @font-face { | ||
2 | font-family: 'PT Sans'; | ||
3 | font-style: normal; | ||
4 | font-weight: 700; | ||
5 | src: local('PT Sans Bold'), local('PTSans-Bold'), url(../fonts/ptsans.woff) format('woff'); | ||
6 | } | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/css/messages.css b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/css/messages.css deleted file mode 100755 index 42da70b3..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/css/messages.css +++ /dev/null | |||
@@ -1,19 +0,0 @@ | |||
1 | .messages.error.install { | ||
2 | border: 1px solid #c42608; | ||
3 | color: #c00 !important; | ||
4 | background: #fff0ef; | ||
5 | text-align: left; | ||
6 | } | ||
7 | |||
8 | .messages.notice.install { | ||
9 | border: 1px solid #ebcd41; | ||
10 | color: #000; | ||
11 | background: #fffcd3; | ||
12 | text-align: left; | ||
13 | } | ||
14 | |||
15 | .messages.success.install { | ||
16 | border: 1px solid #6dc70c; | ||
17 | background: #e0fbcc !important; | ||
18 | text-align: left; | ||
19 | } \ No newline at end of file | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/css/print.css b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/css/print.css deleted file mode 100755 index 9dd6d295..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/css/print.css +++ /dev/null | |||
@@ -1,62 +0,0 @@ | |||
1 | /* ### Layout ### */ | ||
2 | |||
3 | body { | ||
4 | font-family: Serif; | ||
5 | background-color: #fff; | ||
6 | } | ||
7 | |||
8 | @page { | ||
9 | margin: 1cm; | ||
10 | } | ||
11 | |||
12 | img { | ||
13 | max-width: 100% !important; | ||
14 | } | ||
15 | |||
16 | /* ### Content ### */ | ||
17 | |||
18 | /* Hide useless blocks */ | ||
19 | body > header, | ||
20 | #article_toolbar, | ||
21 | #links, | ||
22 | #sort, | ||
23 | body > footer, | ||
24 | .top_link, | ||
25 | div.tools, | ||
26 | header div, | ||
27 | .messages, | ||
28 | .entrie + .results { | ||
29 | display: none !important; | ||
30 | } | ||
31 | |||
32 | article { | ||
33 | border: none !important; | ||
34 | } | ||
35 | |||
36 | /* Add URL after links */ | ||
37 | .vieworiginal a:after { | ||
38 | content: " (" attr(href) ")"; | ||
39 | } | ||
40 | |||
41 | /* Add explanation after abbr */ | ||
42 | abbr[title]:after { | ||
43 | content: " (" attr(title) ")"; | ||
44 | } | ||
45 | |||
46 | /* Change border on current pager item */ | ||
47 | .pagination span.current { | ||
48 | border-style: dashed; | ||
49 | } | ||
50 | |||
51 | #main { | ||
52 | width: 100%; | ||
53 | padding: 0; | ||
54 | margin: 0; | ||
55 | margin-left: 0; | ||
56 | padding-right: 0; | ||
57 | padding-bottom: 0; | ||
58 | } | ||
59 | |||
60 | #article { | ||
61 | width: 100%; | ||
62 | } | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/icomoon.eot b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/icomoon.eot deleted file mode 100644 index 057c7bc4..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/icomoon.eot +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/icomoon.svg b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/icomoon.svg deleted file mode 100644 index f4086b53..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/icomoon.svg +++ /dev/null | |||
@@ -1,43 +0,0 @@ | |||
1 | <?xml version="1.0" standalone="no"?> | ||
2 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > | ||
3 | <svg xmlns="http://www.w3.org/2000/svg"> | ||
4 | <metadata>Generated by IcoMoon</metadata> | ||
5 | <defs> | ||
6 | <font id="icomoon" horiz-adv-x="1024"> | ||
7 | <font-face units-per-em="1024" ascent="960" descent="-64" /> | ||
8 | <missing-glyph horiz-adv-x="1024" /> | ||
9 | <glyph unicode=" " d="" horiz-adv-x="512" /> | ||
10 | <glyph unicode="" d="M512 778.666c-188.544 0-341.334-152.832-341.334-341.332s152.788-341.334 341.334-341.334 341.334 152.832 341.334 341.334-152.788 341.332-341.334 341.332zM670.164 339.498c16.682-16.682 16.682-43.648 0-60.332-8.32-8.32-19.244-12.5-30.164-12.5s-21.846 4.182-30.164 12.5l-97.836 97.836-97.834-97.836c-8.32-8.32-19.242-12.5-30.166-12.5s-21.846 4.182-30.166 12.5c-16.682 16.682-16.682 43.648 0 60.332l97.834 97.836-97.834 97.834c-16.682 16.682-16.682 43.648 0 60.332s43.648 16.682 60.332 0l97.834-97.834 97.836 97.834c16.682 16.682 43.648 16.682 60.332 0s16.682-43.648 0-60.332l-97.836-97.834 97.836-97.836z" /> | ||
11 | <glyph unicode="" d="M490.666 146.218c-74.070 0-143.7 28.842-196.096 81.196-52.352 52.394-81.236 122.028-81.236 196.14s28.884 143.744 81.236 196.14c16.682 16.682 43.648 16.682 60.332 0s16.682-43.648 0-60.332c-36.266-36.308-56.236-84.522-56.236-135.808s19.968-99.542 56.236-135.808c36.266-36.268 84.438-56.192 135.764-56.192s99.498 19.968 135.766 56.192c36.308 36.268 56.236 84.48 56.236 135.808s-19.968 99.542-56.236 135.808c-16.682 16.682-16.682 43.648 0 60.332s43.648 16.682 60.332 0c52.352-52.438 81.236-122.070 81.236-196.14s-28.884-143.744-81.236-196.14c-52.394-52.352-122.028-81.194-196.096-81.194zM490.666 469.334c-23.594 0-42.666 19.116-42.666 42.666v213.334c0 23.552 19.072 42.666 42.668 42.666s42.668-19.116 42.668-42.666v-213.334c0-23.552-19.072-42.666-42.668-42.666z" /> | ||
12 | <glyph unicode="" d="M512 803.328l-273.664-273.664c-33.324-33.322-33.324-87.34 0-120.662s87.338-33.322 120.662 0l67.668 67.67v-308.992c0-47.104 38.188-85.332 85.334-85.332 47.104 0 85.332 38.23 85.332 85.332v308.992l67.668-67.67c16.682-16.682 38.486-25.004 60.332-25.004s43.648 8.32 60.332 25.004c33.322 33.322 33.322 87.34 0 120.662l-273.664 273.664z" /> | ||
13 | <glyph unicode="" d="M887.757 752.282c0 58.88-88.678 65.382-88.678 65.382l-208.333 13.107c0 0-4.454 56.678-46.541 76.39-42.086 19.61-88.371 13.619-121.651 13.312-33.28-0.358-41.114-42.752-41.114-82.79 0-39.987 0.717-86.221 0.717-115.2 0-52.122-22.886-74.189-80.179-74.189h-118.118c-33.024 2.099-58.726-3.277-58.726-30.003 0-26.778 38.861-254.618 92.211-307.2 30.976-30.515 220.416-51.917 260.301-51.917s26.573 117.811 37.683 117.811c11.11 0 23.245-66.509 86.118-82.074 62.771-15.718 146.637-12.8 151.091-57.498 5.786-58.982 11.11-135.27-27.699-140.698l-87.859-3.482c-60.211 4.301-44.032 70.093-17.459 70.093s39.885 0.973 39.885 0.973l3.328 71.987c0 0-137.882 16.282-143.718-76.698-5.376-84.992 9.216-125.082 19.917-133.786 10.701-8.806 29.235-25.805 198.093-25.805 237.926 0 150.733 693.402 150.733 752.282zM790.528 444.416c-9.318-10.035-43.11 16.384-75.366 16.384-32.307 0-67.123-17.101-75.315-5.786-8.192 11.213 7.475 101.888 68.301 101.888s91.802-102.605 82.381-112.486zM297.165 759.501c0 11.725 2.97 152.781 2.97 152.781l-179.456-176.128c0 0 124.006 0 148.378 0 24.371 0.051 28.109 11.725 28.109 23.347z" /> | ||
14 | <glyph unicode="" d="M1024 369.556l-512 397.426-512-397.428v162.038l512 397.426 512-397.428zM896 384v-384h-256v256h-256v-256h-256v384l384 288z" /> | ||
15 | <glyph unicode="" d="M621.254 82.746l320 320c24.994 24.992 24.994 65.516 0 90.51l-320 320c-24.994 24.992-65.516 24.992-90.51 0-24.994-24.994-24.994-65.516 0-90.51l210.746-210.746h-613.49c-35.346 0-64-28.654-64-64s28.654-64 64-64h613.49l-210.746-210.746c-12.496-12.496-18.744-28.876-18.744-45.254s6.248-32.758 18.744-45.254c24.994-24.994 65.516-24.994 90.51 0z" /> | ||
16 | <glyph unicode="" d="M402.746 82.746l-320 320c-24.994 24.992-24.994 65.516 0 90.51l320 320c24.994 24.992 65.516 24.992 90.51 0 24.994-24.994 24.994-65.516 0-90.51l-210.746-210.746h613.49c35.346 0 64-28.654 64-64s-28.654-64-64-64h-613.49l210.746-210.746c12.496-12.496 18.744-28.876 18.744-45.254s-6.248-32.758-18.744-45.254c-24.994-24.994-65.516-24.994-90.51 0z" /> | ||
17 | <glyph unicode="" d="M262.14 960c-113.728-206.032-132.89-520.304 313.86-509.824v253.824l384-384-384-384v248.372c-534.96-13.942-594.572 472.214-313.86 775.628z" /> | ||
18 | <glyph unicode="" d="M0 51.712v526.336q0 183.296 87.040 284.672t265.216 101.376h561.152q-5.12-5.12-53.248-54.272t-102.4-103.424-111.616-111.616-97.28-95.232-43.008-37.888q-15.36 0-15.36 16.384v159.744h-49.152q-60.416 0-96.256-6.144t-64.512-26.624-39.936-58.368-12.288-98.304v-268.288zM68.608-68.096q5.12 5.12 54.272 54.272t102.4 103.424 111.616 112.64 97.28 95.232 41.984 36.864q15.36 0 15.36-16.384v-159.744h49.152q118.784 0 165.888 36.864t46.080 152.576v268.288l229.376 228.352v-526.336q0-183.296-86.016-284.672t-266.24-101.376h-561.152z" horiz-adv-x="982" /> | ||
19 | <glyph unicode="" d="M301.056 208.384q14.336 14.336 34.816 14.336t36.864-14.336q32.768-34.816 0-71.68l-43.008-40.96q-57.344-57.344-135.168-57.344-79.872 0-137.216 57.344t-57.344 135.168q0 79.872 57.344 137.216l151.552 151.552q71.68 69.632 147.456 78.848t131.072-44.032q16.384-16.384 16.384-36.864t-16.384-36.864q-36.864-32.768-71.68 0-51.2 49.152-135.168-34.816l-151.552-149.504q-26.624-26.624-26.624-65.536t26.624-63.488q26.624-26.624 64.512-26.624t64.512 26.624zM761.856 796.16q57.344-57.344 57.344-135.168 0-79.872-57.344-137.216l-161.792-161.792q-75.776-73.728-153.6-73.728-63.488 0-114.688 51.2-14.336 14.336-14.336 34.816t14.336 36.864q14.336 14.336 35.84 14.336t35.84-14.336q51.2-49.152 124.928 24.576l161.792 159.744q28.672 28.672 28.672 65.536 0 38.912-28.672 63.488-24.576 26.624-57.344 31.744t-61.44-21.504l-51.2-51.2q-16.384-14.336-36.864-14.336t-34.816 14.336q-34.816 34.816 0 71.68l51.2 51.2q55.296 55.296 130.048 52.224t132.096-62.464z" horiz-adv-x="820" /> | ||
20 | <glyph unicode="" d="M877.568 192v-72.704q0-15.36-10.24-25.6t-26.624-11.264h-803.84q-15.36 0-25.6 11.264t-11.264 25.6v72.704q0 15.36 11.264 25.6t25.6 11.264h803.84q15.36 0 26.624-11.264t10.24-25.6zM877.568 484.864v-73.728q0-14.336-10.24-25.6t-26.624-10.24h-803.84q-15.36 0-25.6 10.24t-11.264 25.6v73.728q0 14.336 11.264 25.6t25.6 10.24h803.84q15.36 0 26.624-10.24t10.24-25.6zM877.568 776.704v-72.704q0-15.36-10.24-25.6t-26.624-11.264h-803.84q-15.36 0-25.6 11.264t-11.264 25.6v72.704q0 15.36 11.264 26.624t25.6 10.24h803.84q15.36 0 26.624-10.24t10.24-26.624z" horiz-adv-x="878" /> | ||
21 | <glyph unicode="" d="M471.040 919.040q194.56 0 332.8-138.24t138.24-332.8-138.24-332.8-332.8-138.24-332.8 138.24-138.24 332.8 138.24 332.8 332.8 138.24zM471.040 79.36q153.6 0 261.12 108.544t107.52 260.096q0 153.6-107.52 261.12t-261.12 107.52q-151.552 0-260.096-107.52t-108.544-261.12q0-151.552 108.544-260.096t260.096-108.544zM507.904 714.24v-249.856l153.6-153.6-51.2-51.2-174.080 174.080v280.576h71.68z" horiz-adv-x="942" /> | ||
22 | <glyph unicode="" d="M254.976 89.6q-34.816 0-57.344 28.672l-184.32 241.664q-16.384 24.576-12.288 53.248t26.624 47.104 52.224 14.336 48.128-28.672l120.832-157.696 303.104 485.376q16.384 24.576 44.032 30.72t54.272-8.192q24.576-16.384 30.72-44.032t-8.192-54.272l-358.4-573.44q-20.48-32.768-57.344-32.768z" horiz-adv-x="684" /> | ||
23 | <glyph unicode="" d="M450.56 898.56l122.88-344.064h327.68l-268.288-200.704 96.256-356.352-278.528 212.992-278.528-212.992 96.256 356.352-268.288 200.704h327.68z" horiz-adv-x="902" /> | ||
24 | <glyph unicode="" d="M921.6 99.84q-88.064 155.648-212.992 201.728t-337.92 46.080v-223.232l-370.688 342.016 370.688 329.728v-196.608q92.16 0 172.032-27.648t134.144-71.68 98.304-97.28 70.656-106.496 45.056-97.28 24.576-70.656z" horiz-adv-x="922" /> | ||
25 | <glyph unicode="" d="M942.080 740.864q-36.864-55.296-96.256-100.352v-24.576q0-133.12-61.44-256t-190.464-207.872-296.96-84.992q-163.84 0-296.96 86.016 14.336-2.048 47.104-2.048 135.168 0 239.616 81.92-63.488 2.048-112.64 38.912t-67.584 96.256q10.24-4.096 34.816-4.096 26.624 0 51.2 6.144-67.584 14.336-110.592 67.584t-43.008 122.88v2.048q36.864-20.48 86.016-24.576-86.016 59.392-86.016 161.792 0 49.152 26.624 96.256 157.696-192.512 399.36-200.704-6.144 18.432-6.144 43.008 0 79.872 56.32 136.192t138.24 56.32q83.968 0 139.264-59.392 61.44 12.288 122.88 45.056-20.48-67.584-83.968-106.496 57.344 8.192 110.592 30.72z" horiz-adv-x="942" /> | ||
26 | <glyph unicode="" d="M219.136 192q0-46.080-31.744-77.824t-77.824-31.744-77.824 31.744-31.744 77.824 31.744 77.824 77.824 31.744 77.824-31.744 31.744-77.824zM512 121.344q1.024-15.36-9.216-26.624-11.264-12.288-27.648-12.288h-76.8q-14.336 0-24.576 9.216t-11.264 23.552q-12.288 131.072-105.472 224.256t-224.256 105.472q-14.336 1.024-23.552 11.264t-9.216 24.576v76.8q0 16.384 12.288 26.624 9.216 10.24 24.576 10.24h3.072q91.136-7.168 174.080-46.080t148.48-103.424q64.512-64.512 103.424-148.48t46.080-175.104zM804.864 120.32q1.024-15.36-10.24-26.624-10.24-11.264-26.624-11.264h-81.92q-14.336 0-25.6 10.24t-11.264 23.552q-6.144 122.88-57.344 233.472t-132.096 192.512-192.512 132.096-232.448 58.368q-14.336 0-24.576 11.264t-10.24 24.576v81.92q0 15.36 11.264 26.624 10.24 10.24 25.6 10.24h1.024q150.528-8.192 286.72-68.608t243.712-167.936q106.496-106.496 167.936-243.712t68.608-286.72z" horiz-adv-x="804" /> | ||
27 | <glyph unicode="" d="M0 628.224l151.552 151.552 360.448-359.424 360.448 359.424 151.552-151.552-512-512-151.552 151.552z" /> | ||
28 | <glyph unicode="" d="M951.296 100.864v438.272q-18.432-20.48-39.936-37.888-152.576-116.736-243.712-192.512-28.672-24.576-47.104-38.912t-49.152-27.648-58.368-13.312h-2.048q-26.624 0-58.368 13.312t-49.152 27.648-47.104 38.912q-90.112 75.776-243.712 192.512-21.504 17.408-39.936 37.888v-438.272q0-8.192 6.144-13.312t12.288-5.12h841.728q7.168 0 12.288 5.12t6.144 13.312zM951.296 700.928v14.336t-1.024 7.168-1.024 7.168-3.072 5.12-5.12 4.096-8.192 2.048h-841.728q-7.168 0-12.288-6.144t-6.144-12.288q0-96.256 83.968-162.816 110.592-87.040 229.376-181.248 4.096-2.048 20.48-16.384t25.6-21.504 25.6-18.432 28.672-15.36 24.576-5.12h2.048q11.264 0 24.576 5.12t28.672 15.36 25.6 18.432 25.6 21.504 20.48 16.384q118.784 94.208 229.376 181.248 30.72 24.576 57.344 66.56t26.624 74.752zM1024 722.432v-621.568q0-37.888-26.624-64.512t-64.512-27.648h-841.728q-36.864 0-64.512 27.648t-26.624 64.512v621.568q0 37.888 26.624 64.512t64.512 26.624h841.728q37.888 0 64.512-26.624t26.624-64.512z" /> | ||
29 | <glyph unicode="" d="M0 267.776l512 512 512-512-151.552-151.552-360.448 359.424-360.448-359.424z" /> | ||
30 | <glyph unicode="" d="M51.2 558.592q124.928-71.68 337.92-71.68t337.92 71.68l-55.296-497.664q-2.048-14.336-35.84-36.864t-102.4-44.032-144.384-21.504-143.36 21.504-102.4 44.032-36.864 36.864zM550.912 865.792q96.256-18.432 161.792-56.32t65.536-72.704v-10.24q0-59.392-114.688-101.376t-274.432-41.984-274.432 41.984-114.688 101.376v10.24q0 34.816 65.536 72.704t161.792 56.32l43.008 49.152q22.528 26.624 71.68 26.624h94.208q53.248 0 71.68-26.624zM495.616 751.104h86.016q-94.208 112.64-106.496 129.024-14.336 16.384-32.768 16.384h-104.448q-22.528 0-32.768-16.384l-108.544-129.024h86.016l65.536 67.584h83.968z" horiz-adv-x="778" /> | ||
31 | <glyph unicode="" d="M256 896h512v-128h-512zM960 704h-896c-35.2 0-64-28.8-64-64v-320c0-35.2 28.796-64 64-64h192v-256h512v256h192c35.2 0 64 28.8 64 64v320c0 35.2-28.8 64-64 64zM704 64h-384v320h384v-320zM974.4 608c0-25.626-20.774-46.4-46.398-46.4-25.626 0-46.402 20.774-46.402 46.4s20.776 46.4 46.402 46.4c25.626 0 46.398-20.774 46.398-46.4z" /> | ||
32 | <glyph unicode="" d="M896 704v128h-896v-704c0-35.346 28.654-64 64-64h864c53.022 0 96 42.978 96 96v544h-128zM832 128h-768v640h768v-640zM128 640h640v-64h-640zM512 512h256v-64h-256zM512 384h256v-64h-256zM512 256h192v-64h-192zM128 512h320v-320h-320z" /> | ||
33 | <glyph unicode="" d="M959.884 832c0.040-0.034 0.082-0.076 0.116-0.116v-767.77c-0.034-0.040-0.076-0.082-0.116-0.116h-895.77c-0.040 0.034-0.082 0.076-0.114 0.116v767.772c0.034 0.040 0.076 0.082 0.114 0.114h895.77zM960 896h-896c-35.2 0-64-28.8-64-64v-768c0-35.2 28.8-64 64-64h896c35.2 0 64 28.8 64 64v768c0 35.2-28.8 64-64 64v0zM832 672c0-53.020-42.98-96-96-96s-96 42.98-96 96 42.98 96 96 96 96-42.98 96-96zM896 128h-768v128l224 384 256-320h64l224 192z" /> | ||
34 | <glyph unicode="" d="M960 960h64v-736c0-88.366-100.29-160-224-160s-224 71.634-224 160c0 88.368 100.29 160 224 160 62.684 0 119.342-18.4 160-48.040v368.040l-512-113.778v-494.222c0-88.366-100.288-160-224-160s-224 71.634-224 160c0 88.368 100.288 160 224 160 62.684 0 119.342-18.4 160-48.040v624.040l576 128z" /> | ||
35 | <glyph unicode="" d="M0 832v-768h1024v768h-1024zM192 128h-128v128h128v-128zM192 384h-128v128h128v-128zM192 640h-128v128h128v-128zM768 128h-512v640h512v-640zM960 128h-128v128h128v-128zM960 384h-128v128h128v-128zM960 640h-128v128h128v-128zM384 640v-384l256 192z" /> | ||
36 | <glyph unicode="" d="M864 768h-512c-88 0-160-72-160-160v-512c0-88 72-160 160-160h512c88 0 160 72 160 160v512c0 88-72 160-160 160zM416 64c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM416 448c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM608 256c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM800 64c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM800 448c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM828.76 832c-14.93 72.804-79.71 128-156.76 128h-512c-88 0-160-72-160-160v-512c0-77.046 55.196-141.83 128-156.76v636.76c0 35.2 28.8 64 64 64h636.76z" /> | ||
37 | <glyph unicode="" d="M1232 960h-384c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l476.118 476.118c18.666 18.666 33.94 55.54 33.94 81.94v384c0 26.4-21.6 48-48 48zM992 576c-53.020 0-96 42.98-96 96s42.98 96 96 96 96-42.98 96-96-42.98-96-96-96zM128 416l544 544h-80c-26.4 0-63.274-15.274-81.942-33.942l-476.116-476.116c-18.668-18.668-18.668-49.214 0-67.882l412.118-412.118c18.668-18.668 49.214-18.668 67.882 0l30.058 30.058-416 416z" horiz-adv-x="1280" /> | ||
38 | <glyph unicode="" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM320 448c0 106.040 85.96 192 192 192s192-85.96 192-192-85.96-192-192-192-192 85.96-192 192zM925.98 276.524v0l-177.42 73.49c12.518 30.184 19.44 63.276 19.44 97.986s-6.922 67.802-19.44 97.986l177.42 73.49c21.908-52.822 34.020-110.73 34.020-171.476s-12.114-118.654-34.020-171.476v0zM683.478 861.98v0 0l-73.49-177.42c-30.184 12.518-63.276 19.44-97.988 19.44s-67.802-6.922-97.986-19.44l-73.49 177.422c52.822 21.904 110.732 34.018 171.476 34.018 60.746 0 118.654-12.114 171.478-34.020zM98.020 619.476l177.422-73.49c-12.518-30.184-19.442-63.276-19.442-97.986s6.922-67.802 19.44-97.986l-177.42-73.49c-21.906 52.822-34.020 110.73-34.020 171.476s12.114 118.654 34.020 171.476zM340.524 34.020l73.49 177.42c30.184-12.518 63.276-19.44 97.986-19.44s67.802 6.922 97.986 19.44l73.49-177.42c-52.822-21.904-110.73-34.020-171.476-34.020-60.744 0-118.654 12.114-171.476 34.020z" /> | ||
39 | <glyph unicode="" d="M480 960v0c265.096 0 480-173.914 480-388.448s-214.904-388.448-480-388.448c-25.458 0-50.446 1.62-74.834 4.71-103.106-102.694-222.172-121.108-341.166-123.814v25.134c64.252 31.354 116 88.466 116 153.734 0 9.106-0.712 18.048-2.030 26.794-108.558 71.214-177.97 179.988-177.97 301.89 0 214.534 214.904 388.448 480 388.448zM996 89.314c0-55.942 36.314-104.898 92-131.772v-21.542c-103.126 2.318-197.786 18.102-287.142 106.126-21.14-2.65-42.794-4.040-64.858-4.040-95.47 0-183.408 25.758-253.614 69.040 144.674 0.506 281.26 46.854 384.834 130.672 52.208 42.252 93.394 91.826 122.414 147.348 30.766 58.866 46.366 121.582 46.366 186.406 0 10.448-0.45 20.836-1.258 31.168 72.57-59.934 117.258-141.622 117.258-231.676 0-104.488-60.158-197.722-154.24-258.764-1.142-7.496-1.76-15.16-1.76-22.966z" horiz-adv-x="1152" /> | ||
40 | <glyph unicode="" d="M933.79 349.75c-53.726 93.054-21.416 212.304 72.152 266.488l-100.626 174.292c-28.75-16.854-62.176-26.518-97.846-26.518-107.536 0-194.708 87.746-194.708 195.99h-201.258c0.266-33.41-8.074-67.282-25.958-98.252-53.724-93.056-173.156-124.702-266.862-70.758l-100.624-174.292c28.97-16.472 54.050-40.588 71.886-71.478 53.638-92.908 21.512-211.92-71.708-266.224l100.626-174.292c28.65 16.696 61.916 26.254 97.4 26.254 107.196 0 194.144-87.192 194.7-194.958h201.254c-0.086 33.074 8.272 66.57 25.966 97.218 53.636 92.906 172.776 124.594 266.414 71.012l100.626 174.29c-28.78 16.466-53.692 40.498-71.434 71.228zM512 240.668c-114.508 0-207.336 92.824-207.336 207.334 0 114.508 92.826 207.334 207.336 207.334 114.508 0 207.332-92.826 207.332-207.334-0.002-114.51-92.824-207.334-207.332-207.334z" /> | ||
41 | <glyph unicode="" d="M512 960c-282.77 0-512-229.23-512-512s229.23-512 512-512 512 229.23 512 512-229.23 512-512 512zM512-0.002c-62.958 0-122.872 13.012-177.23 36.452l233.148 262.29c5.206 5.858 8.082 13.422 8.082 21.26v96c0 17.674-14.326 32-32 32-112.99 0-232.204 117.462-233.374 118.626-6 6.002-14.14 9.374-22.626 9.374h-128c-17.672 0-32-14.328-32-32v-192c0-12.122 6.848-23.202 17.69-28.622l110.31-55.156v-187.886c-116.052 80.956-192 215.432-192 367.664 0 68.714 15.49 133.806 43.138 192h116.862c8.488 0 16.626 3.372 22.628 9.372l128 128c6 6.002 9.372 14.14 9.372 22.628v77.412c40.562 12.074 83.518 18.588 128 18.588 70.406 0 137.004-16.26 196.282-45.2-4.144-3.502-8.176-7.164-12.046-11.036-36.266-36.264-56.236-84.478-56.236-135.764s19.97-99.5 56.236-135.764c36.434-36.432 85.218-56.264 135.634-56.26 3.166 0 6.342 0.080 9.518 0.236 13.814-51.802 38.752-186.656-8.404-372.334-0.444-1.744-0.696-3.488-0.842-5.224-81.324-83.080-194.7-134.656-320.142-134.656z" /> | ||
42 | <glyph unicode="" d="M889.68 793.68c-93.608 102.216-228.154 166.32-377.68 166.32-282.77 0-512-229.23-512-512h96c0 229.75 186.25 416 416 416 123.020 0 233.542-53.418 309.696-138.306l-149.696-149.694h352v352l-134.32-134.32zM928 448c0-229.75-186.25-416-416-416-123.020 0-233.542 53.418-309.694 138.306l149.694 149.694h-352v-352l134.32 134.32c93.608-102.216 228.154-166.32 377.68-166.32 282.77 0 512 229.23 512 512h-96z" /> | ||
43 | </font></defs></svg> \ No newline at end of file | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/icomoon.ttf b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/icomoon.ttf deleted file mode 100644 index f53c9590..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/icomoon.ttf +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/icomoon.woff b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/icomoon.woff deleted file mode 100644 index 2a12440c..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/icomoon.woff +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/ptsans.woff b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/ptsans.woff deleted file mode 100644 index cf7c62e1..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/fonts/ptsans.woff +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/logo-other_themes.png b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/logo-other_themes.png deleted file mode 100755 index 32543a44..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/logo-other_themes.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/logo.png b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/logo.png deleted file mode 100755 index 5305c77d..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/logo.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/logo.svg b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/logo.svg deleted file mode 100644 index 865da440..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/img/logo.svg +++ /dev/null | |||
@@ -1,8 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="64" height="64"> | ||
3 | <circle cx="32" cy="32" r="29.5" style="fill:#000" /> | ||
4 | <path d="m 16,18 33,0 0,26 -16.5,6 -16.5,-6 z" fill="#fff" /> | ||
5 | <rect width="9" height="2.5" x="17.5" y="24.5" fill="#000" /> | ||
6 | <rect width="9" height="2.5" x="28" y="24.5" fill="#000" /> | ||
7 | <rect width="9" height="2.5" x="38.5" y="24.5" fill="#000" /> | ||
8 | </svg> | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/autoClose.js b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/autoClose.js deleted file mode 100644 index e9145b7e..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/autoClose.js +++ /dev/null | |||
@@ -1,6 +0,0 @@ | |||
1 | $(document).ready(function() { | ||
2 | current_url = window.location.href | ||
3 | if (current_url.match("&closewin=true")) { | ||
4 | window.close(); | ||
5 | } | ||
6 | }); | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/autoCompleteTags.js b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/autoCompleteTags.js deleted file mode 100755 index 90bc982c..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/autoCompleteTags.js +++ /dev/null | |||
@@ -1,47 +0,0 @@ | |||
1 | jQuery(function($) { | ||
2 | |||
3 | function split( val ) { | ||
4 | return val.split( /,\s*/ ); | ||
5 | } | ||
6 | function extractLast( term ) { | ||
7 | return split( term ).pop(); | ||
8 | } | ||
9 | |||
10 | |||
11 | $("#value").bind("keydown", function(event) { | ||
12 | if (event.keyCode === $.ui.keyCode.TAB && $(this).data("ui-autocomplete").menu.active) { | ||
13 | event.preventDefault(); | ||
14 | } | ||
15 | }).autocomplete({ | ||
16 | source : function(request, response) { | ||
17 | $.getJSON("./?view=tags", { | ||
18 | term : extractLast(request.term), | ||
19 | //id: $(':hidden#entry_id').val() | ||
20 | }, response); | ||
21 | }, | ||
22 | search : function() { | ||
23 | // custom minLength | ||
24 | var term = extractLast(this.value); | ||
25 | if (term.length < 1) { | ||
26 | return false; | ||
27 | } | ||
28 | }, | ||
29 | focus : function() { | ||
30 | // prevent value inserted on focus | ||
31 | return false; | ||
32 | }, | ||
33 | select : function(event, ui) { | ||
34 | var terms = split(this.value); | ||
35 | // remove the current input | ||
36 | terms.pop(); | ||
37 | // add the selected item | ||
38 | terms.push(ui.item.value); | ||
39 | // add placeholder to get the comma-and-space at the end | ||
40 | terms.push(""); | ||
41 | this.value = terms.join(", "); | ||
42 | return false; | ||
43 | } | ||
44 | }); | ||
45 | |||
46 | |||
47 | }); | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/closeMessage.js b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/closeMessage.js deleted file mode 100644 index 527719d5..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/closeMessage.js +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | $(function(){ | ||
2 | //--------------------------------------------------------------------------- | ||
3 | // Show the close icon when the user hover over a message | ||
4 | //--------------------------------------------------------------------------- | ||
5 | // $('.messages').on('mouseenter', function(){ | ||
6 | // $(this).find('a.closeMessage').stop(true, true).show(); | ||
7 | // }).on('mouseleave', function(){ | ||
8 | // $(this).find('a.closeMessage').stop(true, true).hide(); | ||
9 | // }); | ||
10 | //--------------------------------------------------------------------------- | ||
11 | // Close the message box when the user clicks the close icon | ||
12 | //--------------------------------------------------------------------------- | ||
13 | $('a.closeMessage').on('click', function(){ | ||
14 | $(this).parents('div.messages').slideUp(300, function(){ $(this).remove(); }); | ||
15 | return false; | ||
16 | }); | ||
17 | }); \ No newline at end of file | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/init.js b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/init.js deleted file mode 100755 index 9bdc6f21..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/init.js +++ /dev/null | |||
@@ -1,63 +0,0 @@ | |||
1 | $.fn.ready(function() { | ||
2 | |||
3 | var $listmode = $('#listmode'), | ||
4 | $listentries = $("#list-entries"); | ||
5 | |||
6 | /* ========================================================================== | ||
7 | Menu | ||
8 | ========================================================================== */ | ||
9 | |||
10 | $("#menu").click(function(){ | ||
11 | $("#links").toggleClass('menu--open'); | ||
12 | if ($('#content').hasClass('opacity03')) { | ||
13 | $('#content').removeClass('opacity03'); | ||
14 | } | ||
15 | }); | ||
16 | |||
17 | /* ========================================================================== | ||
18 | List mode or Table Mode | ||
19 | ========================================================================== */ | ||
20 | |||
21 | $listmode.click(function(){ | ||
22 | if ( $.cookie("listmode") == 1 ) { | ||
23 | // Cookie | ||
24 | $.removeCookie("listmode"); | ||
25 | |||
26 | $listentries.removeClass("listmode"); | ||
27 | $listmode.removeClass("tablemode"); | ||
28 | $listmode.addClass("listmode"); | ||
29 | } | ||
30 | else { | ||
31 | // Cookie | ||
32 | $.cookie("listmode", 1, {expires: 365}); | ||
33 | |||
34 | $listentries.addClass("listmode"); | ||
35 | $listmode.removeClass("listmode"); | ||
36 | $listmode.addClass("tablemode"); | ||
37 | } | ||
38 | |||
39 | }); | ||
40 | |||
41 | /* ========================================================================== | ||
42 | Cookie listmode | ||
43 | ========================================================================== */ | ||
44 | |||
45 | if ( $.cookie("listmode") == 1 ) { | ||
46 | $listentries.addClass("listmode"); | ||
47 | $listmode.removeClass("listmode"); | ||
48 | $listmode.addClass("tablemode"); | ||
49 | } | ||
50 | |||
51 | /* ========================================================================== | ||
52 | Add tag panel | ||
53 | ========================================================================== */ | ||
54 | |||
55 | |||
56 | $('#nav-btn-add-tag').on('click', function(){ | ||
57 | $(".nav-panel-add-tag").toggle(100); | ||
58 | $(".nav-panel-menu").addClass('hidden'); | ||
59 | $("#tag_label").focus(); | ||
60 | return false; | ||
61 | }); | ||
62 | |||
63 | }); | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/popupForm.js b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/popupForm.js deleted file mode 100644 index b933acd1..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/popupForm.js +++ /dev/null | |||
@@ -1,83 +0,0 @@ | |||
1 | $(document).ready(function() { | ||
2 | |||
3 | $("#search-form").hide(); | ||
4 | $("#bagit-form").hide(); | ||
5 | $("#filter-form").hide(); | ||
6 | |||
7 | //--------------------------------------------------------------------------- | ||
8 | // Toggle the "Search" popup in the sidebar | ||
9 | //--------------------------------------------------------------------------- | ||
10 | function toggleSearch() { | ||
11 | $("#search-form").toggle(); | ||
12 | $("#search").toggleClass("current"); | ||
13 | $("#search").toggleClass("active-current"); | ||
14 | $("#search-arrow").toggleClass("arrow-down"); | ||
15 | if ($("#search").hasClass("current")) { | ||
16 | $("#content").addClass("opacity03"); | ||
17 | } else { | ||
18 | $("#content").removeClass("opacity03"); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | //--------------------------------------------------------------------------- | ||
23 | // Toggle the "Filter" popup on entries list | ||
24 | //--------------------------------------------------------------------------- | ||
25 | function toggleFilter() { | ||
26 | $("#filter-form").toggle(); | ||
27 | } | ||
28 | |||
29 | //--------------------------------------------------------------------------- | ||
30 | // Toggle the "Save a Link" popup in the sidebar | ||
31 | //--------------------------------------------------------------------------- | ||
32 | function toggleBagit() { | ||
33 | $("#bagit-form").toggle(); | ||
34 | $("#bagit").toggleClass("current"); | ||
35 | $("#bagit").toggleClass("active-current"); | ||
36 | $("#bagit-arrow").toggleClass("arrow-down"); | ||
37 | if ($("#bagit").hasClass("current")) { | ||
38 | $("#content").addClass("opacity03"); | ||
39 | } else { | ||
40 | $("#content").removeClass("opacity03"); | ||
41 | } | ||
42 | } | ||
43 | |||
44 | //--------------------------------------------------------------------------- | ||
45 | // Close all #links popups in the sidebar | ||
46 | //--------------------------------------------------------------------------- | ||
47 | function closePopups() { | ||
48 | $("#links .messages").hide(); | ||
49 | $("#links > li > a").removeClass("active-current"); | ||
50 | $("#links > li > a").removeClass("current"); | ||
51 | $("[id$=-arrow]").removeClass("arrow-down"); | ||
52 | $("#content").removeClass("opacity03"); | ||
53 | } | ||
54 | |||
55 | $("#search").click(function(){ | ||
56 | closePopups(); | ||
57 | toggleSearch(); | ||
58 | $("#searchfield").focus(); | ||
59 | }); | ||
60 | |||
61 | $("#filter").click(function(){ | ||
62 | closePopups(); | ||
63 | toggleFilter(); | ||
64 | }); | ||
65 | |||
66 | $("#bagit").click(function(){ | ||
67 | closePopups(); | ||
68 | toggleBagit(); | ||
69 | $("#plainurl").focus(); | ||
70 | }); | ||
71 | |||
72 | $("#search-form-close").click(function(){ | ||
73 | toggleSearch(); | ||
74 | }); | ||
75 | |||
76 | $("#filter-form-close").click(function(){ | ||
77 | toggleFilter(); | ||
78 | }); | ||
79 | |||
80 | $("#bagit-form-close").click(function(){ | ||
81 | toggleBagit(); | ||
82 | }); | ||
83 | }); | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/restoreScroll.js b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/restoreScroll.js deleted file mode 100644 index 331c9e19..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/restoreScroll.js +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | function supportsLocalStorage() { | ||
2 | try { | ||
3 | return 'localStorage' in window && window['localStorage'] !== null; | ||
4 | } catch (e) { | ||
5 | return false; | ||
6 | } | ||
7 | } | ||
8 | |||
9 | function savePercent(id, percent) { | ||
10 | if (!supportsLocalStorage()) { return false; } | ||
11 | localStorage["poche.article." + id + ".percent"] = percent; | ||
12 | return true; | ||
13 | } | ||
14 | |||
15 | function retrievePercent(id) { | ||
16 | if (!supportsLocalStorage()) { return false; } | ||
17 | |||
18 | var bheight = $(document).height(); | ||
19 | var percent = localStorage["poche.article." + id + ".percent"]; | ||
20 | var scroll = bheight * percent; | ||
21 | |||
22 | $('html,body').animate({scrollTop: scroll}, 'fast'); | ||
23 | |||
24 | return true; | ||
25 | } \ No newline at end of file | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/saveLink.js b/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/saveLink.js deleted file mode 100755 index 34e934cc..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/baggy/js/saveLink.js +++ /dev/null | |||
@@ -1,96 +0,0 @@ | |||
1 | $.fn.ready(function() { | ||
2 | |||
3 | var $bagit = $('#bagit'), | ||
4 | $bagitForm = $('#bagit-form'), | ||
5 | $bagitFormForm = $('#bagit-form-form'); | ||
6 | |||
7 | /* ========================================================================== | ||
8 | bag it link and close button | ||
9 | ========================================================================== */ | ||
10 | |||
11 | function toggleSaveLinkForm(url, event) { | ||
12 | $("#add-link-result").empty(); | ||
13 | |||
14 | $bagit.toggleClass("active-current"); | ||
15 | |||
16 | //only if bag-it link is not presented on page | ||
17 | if ( $bagit.length === 0 ) { | ||
18 | if ( event !== 'undefined' && event ) { | ||
19 | $bagitForm.css( {position:"absolute", top:event.pageY, left:event.pageX-200}); | ||
20 | } | ||
21 | else { | ||
22 | $bagitForm.css( {position:"relative", top:"auto", left:"auto"}); | ||
23 | } | ||
24 | } | ||
25 | |||
26 | if ($("#search-form").length != 0) { | ||
27 | $("#search").removeClass("current"); | ||
28 | $("#search-arrow").removeClass("arrow-down"); | ||
29 | $("#search-form").hide(); | ||
30 | } | ||
31 | $bagitForm.toggle(); | ||
32 | $('#content').toggleClass("opacity03"); | ||
33 | if (url !== 'undefined' && url) { | ||
34 | $('#plainurl').val(url); | ||
35 | } | ||
36 | $('#plainurl').focus(); | ||
37 | } | ||
38 | |||
39 | //--------------------------------------------------------------------------- | ||
40 | // These two functions are now taken care of in popupForm.js | ||
41 | //--------------------------------------------------------------------------- | ||
42 | |||
43 | // $bagit.click(function(){ | ||
44 | // $bagit.toggleClass("current"); | ||
45 | // $("#bagit-arrow").toggleClass("arrow-down"); | ||
46 | // toggleSaveLinkForm(); | ||
47 | // }); | ||
48 | |||
49 | // $("#bagit-form-close").click(function(){ | ||
50 | // $bagit.removeClass("current"); | ||
51 | // $("#bagit-arrow").removeClass("arrow-down"); | ||
52 | // toggleSaveLinkForm(); | ||
53 | // }); | ||
54 | |||
55 | |||
56 | //send "bag it link" form request via ajax | ||
57 | $bagitFormForm.submit( function(event) { | ||
58 | $("body").css("cursor", "wait"); | ||
59 | $("#add-link-result").empty(); | ||
60 | |||
61 | $.ajax({ | ||
62 | type: $bagitFormForm.attr('method'), | ||
63 | url: $bagitFormForm.attr('action'), | ||
64 | data: $bagitFormForm.serialize(), | ||
65 | success: function(data) { | ||
66 | $('#add-link-result').html("Done!"); | ||
67 | $('#plainurl').val(''); | ||
68 | $('#plainurl').blur(''); | ||
69 | $("body").css("cursor", "auto"); | ||
70 | //setTimeout( function() { toggleSaveLinkForm(); }, 1000); //close form after 1000 delay | ||
71 | }, | ||
72 | error: function(data) { | ||
73 | $('#add-link-result').html("Failed!"); | ||
74 | $("body").css("cursor", "auto"); | ||
75 | } | ||
76 | }); | ||
77 | |||
78 | event.preventDefault(); | ||
79 | }); | ||
80 | |||
81 | /* ========================================================================== | ||
82 | Process all links inside an article | ||
83 | ========================================================================== */ | ||
84 | |||
85 | $("article a[href^='http']").after(function() { | ||
86 | return " <a href=\"" + $(this).attr('href') + "\" class=\"add-to-wallabag-link-after\" alt=\"add to wallabag\" title=\"add to wallabag\"></a> "; | ||
87 | }); | ||
88 | |||
89 | $(".add-to-wallabag-link-after").click(function(event){ | ||
90 | toggleSaveLinkForm($(this).attr('href'), event); | ||
91 | event.preventDefault(); | ||
92 | }); | ||
93 | |||
94 | }); | ||
95 | |||
96 | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/css/main.css b/src/Wallabag/CoreBundle/Resources/public/themes/material/css/main.css deleted file mode 100755 index 9d9ebe12..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/css/main.css +++ /dev/null | |||
@@ -1,550 +0,0 @@ | |||
1 | /* ========================================================================== | ||
2 | Sommaire | ||
3 | |||
4 | 0 = Common | ||
5 | 1 = Nav | ||
6 | 2 = Side-nav | ||
7 | 3 = Filters slider | ||
8 | 4 = Cards | ||
9 | 5 = Article | ||
10 | 6 = Media queries | ||
11 | 7 = Font | ||
12 | 8 = Others | ||
13 | |||
14 | ========================================================================== */ | ||
15 | |||
16 | |||
17 | /* ========================================================================== | ||
18 | 0 = Common | ||
19 | ========================================================================== */ | ||
20 | |||
21 | @font-face { | ||
22 | font-family: 'icomoon'; | ||
23 | src:url('../font/icomoon/icomoon.eot?yw303w'); | ||
24 | src:url('../font/icomoon/icomoon.eot?yw303w#iefix') format('embedded-opentype'), | ||
25 | url('../font/icomoon/icomoon.ttf?yw303w') format('truetype'), | ||
26 | url('../font/icomoon/icomoon.woff?yw303w') format('woff'), | ||
27 | url('../font/icomoon/icomoon.svg?yw303w#icomoon') format('svg'); | ||
28 | font-weight: normal; | ||
29 | font-style: normal; | ||
30 | } | ||
31 | |||
32 | [class^="icon-"], [class*=" icon-"] { | ||
33 | font-family: 'icomoon'; | ||
34 | speak: none; | ||
35 | font-style: normal; | ||
36 | font-weight: normal; | ||
37 | font-variant: normal; | ||
38 | text-transform: none; | ||
39 | line-height: 1; | ||
40 | |||
41 | /* Better Font Rendering =========== */ | ||
42 | -webkit-font-smoothing: antialiased; | ||
43 | -moz-osx-font-smoothing: grayscale; | ||
44 | } | ||
45 | |||
46 | body { | ||
47 | display: flex; | ||
48 | min-height: 100vh; | ||
49 | flex-direction: column; | ||
50 | background: #f0f0f0; | ||
51 | } | ||
52 | |||
53 | body.login main { | ||
54 | padding: 0; | ||
55 | min-height: 100vh; | ||
56 | } | ||
57 | |||
58 | .border-bottom { | ||
59 | border-bottom: 1px solid #DDD; | ||
60 | } | ||
61 | |||
62 | nav, main, footer { | ||
63 | padding-left: 240px; | ||
64 | } | ||
65 | |||
66 | main, #content, .valign-wrapper { | ||
67 | height: 100%; | ||
68 | } | ||
69 | |||
70 | #main { | ||
71 | flex: 1 0 auto; | ||
72 | } | ||
73 | |||
74 | .results { | ||
75 | height: 1em; | ||
76 | line-height: 30px; | ||
77 | } | ||
78 | |||
79 | .results .nb-results, .results .pagination { | ||
80 | margin: 15px; | ||
81 | margin-bottom: 0; | ||
82 | } | ||
83 | |||
84 | .pagination { | ||
85 | float: right; | ||
86 | } | ||
87 | |||
88 | .pagination ul { | ||
89 | margin: 0 !important; | ||
90 | } | ||
91 | |||
92 | .pagination li { | ||
93 | padding: 0; | ||
94 | } | ||
95 | |||
96 | .pagination a { | ||
97 | padding: 0px 10px; | ||
98 | height: 30px; | ||
99 | display: block; | ||
100 | } | ||
101 | |||
102 | .pagination li.active span { | ||
103 | padding: 0px 10px; | ||
104 | height: 30px; | ||
105 | display: block; | ||
106 | color: #fff; | ||
107 | } | ||
108 | |||
109 | .pagination .disabled { | ||
110 | margin-right: 10px; | ||
111 | margin-left: 10px; | ||
112 | } | ||
113 | |||
114 | .page-footer .footer-copyright p { | ||
115 | display: inline; | ||
116 | } | ||
117 | |||
118 | .hidden { | ||
119 | display: none; | ||
120 | } | ||
121 | |||
122 | .picker__date-display { | ||
123 | display: none; | ||
124 | } | ||
125 | |||
126 | footer.page-footer { | ||
127 | margin-top: 10px; | ||
128 | padding-top: 10px; | ||
129 | } | ||
130 | |||
131 | footer .row { | ||
132 | margin-bottom: 10px; | ||
133 | } | ||
134 | |||
135 | /* ========================================================================== | ||
136 | 1 = Nav | ||
137 | ========================================================================== */ | ||
138 | |||
139 | nav input { | ||
140 | color: #aaa; | ||
141 | } | ||
142 | |||
143 | .nav-wrapper .button-collapse { | ||
144 | padding: 0px 15px; | ||
145 | } | ||
146 | |||
147 | .nav-input { | ||
148 | display: none; | ||
149 | } | ||
150 | |||
151 | .nav-panels { | ||
152 | overflow: hidden; | ||
153 | } | ||
154 | |||
155 | .nav-panel-buttom li { | ||
156 | max-height: 64px; | ||
157 | } | ||
158 | |||
159 | .nav-panels { | ||
160 | transition: background 0.2s ease; | ||
161 | } | ||
162 | |||
163 | .nav-panel-add .mdi-content-add, | ||
164 | .nav-panel-search .mdi-action-search, | ||
165 | .nav-panels .mdi-navigation-close { | ||
166 | color: #444 !important; | ||
167 | } | ||
168 | |||
169 | .nav-panels .action { | ||
170 | padding-left: 0.75rem; | ||
171 | font-size: 2.1rem; | ||
172 | white-space: nowrap; | ||
173 | } | ||
174 | |||
175 | .nav-panels .input-field input { | ||
176 | display: block; | ||
177 | line-height: inherit; | ||
178 | padding-left: 4rem !important; | ||
179 | width: calc(100% - 8rem); | ||
180 | } | ||
181 | |||
182 | .nav-panels .input-field input:focus { | ||
183 | background-color: #fff; | ||
184 | border: 0; | ||
185 | box-shadow: none; | ||
186 | color: #444; | ||
187 | } | ||
188 | |||
189 | .input-field.nav-panel-add label { | ||
190 | left: 1rem; | ||
191 | } | ||
192 | |||
193 | .input-field.nav-panel-add .mdi-navigation-close { | ||
194 | position: absolute; | ||
195 | top: 0; | ||
196 | right: 1rem; | ||
197 | color: transparent; | ||
198 | cursor: pointer; | ||
199 | font-size: 2rem; | ||
200 | transition: .3s color; | ||
201 | } | ||
202 | |||
203 | #button_filters { | ||
204 | display: none; | ||
205 | } | ||
206 | #button_export { | ||
207 | display: none; | ||
208 | } | ||
209 | |||
210 | .input-field.nav-panel-add, .input-field.nav-panel-add form { | ||
211 | height: 100%; | ||
212 | } | ||
213 | |||
214 | /* ========================================================================== | ||
215 | 2 = Side-nav | ||
216 | ========================================================================== */ | ||
217 | |||
218 | .side-nav.fixed a { | ||
219 | font-size: 13px; | ||
220 | line-height: 44px; | ||
221 | height: 44px; | ||
222 | } | ||
223 | |||
224 | .bold > a { | ||
225 | font-weight: bold; | ||
226 | } | ||
227 | |||
228 | .side-nav > li.logo { | ||
229 | line-height: 0; | ||
230 | text-align: center; | ||
231 | } | ||
232 | |||
233 | #main .logo a { | ||
234 | height: 100pt; | ||
235 | } | ||
236 | |||
237 | #main .logo img { | ||
238 | height: 100pt; | ||
239 | width: 100pt; | ||
240 | } | ||
241 | |||
242 | #main .logo:hover { | ||
243 | background: transparent; | ||
244 | } | ||
245 | |||
246 | .side-nav li { | ||
247 | padding: 0px; | ||
248 | } | ||
249 | |||
250 | .side-nav a { | ||
251 | margin: 0px 1rem; | ||
252 | } | ||
253 | |||
254 | /* ========================================================================== | ||
255 | * 3 = Filters slider | ||
256 | * ========================================================================== */ | ||
257 | |||
258 | #filters button { | ||
259 | padding: 0px; | ||
260 | width: 100%; | ||
261 | } | ||
262 | |||
263 | .side-nav.fixed.right-aligned { | ||
264 | right: -250px; | ||
265 | left: auto !important; | ||
266 | overflow-y: visible; | ||
267 | } | ||
268 | |||
269 | #filters div.with-checkbox { | ||
270 | height: 3rem; | ||
271 | margin-top: 0px; | ||
272 | } | ||
273 | |||
274 | /* ========================================================================== | ||
275 | 4 = Cards | ||
276 | ========================================================================== */ | ||
277 | |||
278 | main #content { | ||
279 | padding: 0px 0.5rem; | ||
280 | } | ||
281 | |||
282 | main ul.row { | ||
283 | padding: 0px 0.75rem; | ||
284 | } | ||
285 | |||
286 | .data .card .card-body { | ||
287 | height: 22em; | ||
288 | overflow: hidden; | ||
289 | } | ||
290 | |||
291 | .card .card-content .card-title { | ||
292 | line-height: 32px; | ||
293 | max-height: 64px; | ||
294 | display: block; | ||
295 | } | ||
296 | |||
297 | .card .card-content i.right, .card .card-reveal i.right { | ||
298 | margin-left: 0; | ||
299 | } | ||
300 | |||
301 | .card .card-content .estimatedTime { | ||
302 | margin-bottom: 10px; | ||
303 | } | ||
304 | |||
305 | .card .card-action .original { | ||
306 | line-height: 24px; | ||
307 | } | ||
308 | |||
309 | .card .card-action ul.links { | ||
310 | margin: 0; | ||
311 | font-size: 24px; | ||
312 | line-height: 24px; | ||
313 | } | ||
314 | |||
315 | .card .card-action a { | ||
316 | color: #ffffff; | ||
317 | margin: 0; | ||
318 | } | ||
319 | |||
320 | .card .card-action a:hover { | ||
321 | color: #ffffff; | ||
322 | } | ||
323 | |||
324 | .settings .div_tabs { | ||
325 | padding-bottom: 15px; | ||
326 | } | ||
327 | |||
328 | .card.sw { | ||
329 | max-width: 370px; | ||
330 | margin-left: auto; | ||
331 | margin-right: auto; | ||
332 | } | ||
333 | |||
334 | .mdi-card-close:before { | ||
335 | content: "\e8aa"; | ||
336 | } | ||
337 | |||
338 | .card .card-image { | ||
339 | height: 14em; | ||
340 | } | ||
341 | |||
342 | .card .card-image .preview { | ||
343 | height: 14em; | ||
344 | background-size: cover; | ||
345 | background-repeat: no-repeat; | ||
346 | background-position: 50%; | ||
347 | } | ||
348 | |||
349 | /* ========================================================================== | ||
350 | 5 = Article | ||
351 | ========================================================================== */ | ||
352 | |||
353 | #article { | ||
354 | font-size: 20px; | ||
355 | margin: 0px auto; | ||
356 | max-width: 40em; | ||
357 | } | ||
358 | |||
359 | #article img, | ||
360 | #article figure { | ||
361 | max-width: 100%; | ||
362 | height: auto; | ||
363 | } | ||
364 | |||
365 | .reader-mode { | ||
366 | width: 95px !important; | ||
367 | transition: width 0.2s ease; | ||
368 | } | ||
369 | |||
370 | .reader-mode:hover { | ||
371 | width: 240px !important; | ||
372 | } | ||
373 | |||
374 | .reader-mode .collapsible-body { | ||
375 | height: 0; | ||
376 | overflow: hidden; | ||
377 | } | ||
378 | |||
379 | .reader-mode:hover .collapsible-body { | ||
380 | height: auto; | ||
381 | } | ||
382 | |||
383 | .reader-mode span { | ||
384 | opacity: 0; | ||
385 | transition: opacity 0.2s ease; | ||
386 | } | ||
387 | |||
388 | .reader-mode:hover span { | ||
389 | opacity: 1; | ||
390 | } | ||
391 | |||
392 | .progress { | ||
393 | position:fixed; | ||
394 | top:0px; | ||
395 | width: 100%; | ||
396 | height: 3px; | ||
397 | margin: 0; | ||
398 | z-index: 9999; | ||
399 | } | ||
400 | |||
401 | #article aside .link { | ||
402 | color: #000; | ||
403 | font-size: 0.6em; | ||
404 | text-decoration: none; | ||
405 | } | ||
406 | |||
407 | #article aside #list { | ||
408 | float: right; | ||
409 | margin-right: 15px; | ||
410 | } | ||
411 | |||
412 | #article aside .chip { | ||
413 | background-color: #039be5; | ||
414 | color: #ffffff; | ||
415 | } | ||
416 | |||
417 | #article aside .chip i { | ||
418 | color: #ffffff; | ||
419 | } | ||
420 | |||
421 | /* ========================================================================== | ||
422 | 6 = Media queries | ||
423 | ========================================================================== */ | ||
424 | |||
425 | @media only screen and (max-width : 992px) { | ||
426 | header, main, footer { | ||
427 | padding-left: 0; | ||
428 | } | ||
429 | nav, main, footer { | ||
430 | padding-left: 0; | ||
431 | } | ||
432 | .pagination { | ||
433 | width: auto; | ||
434 | } | ||
435 | .reader-mode { | ||
436 | width: 240px !important; | ||
437 | } | ||
438 | .reader-mode span { | ||
439 | opacity: 1; | ||
440 | } | ||
441 | |||
442 | .tabs { | ||
443 | display: inline-block; | ||
444 | height: auto; | ||
445 | } | ||
446 | .tab { | ||
447 | min-width: 100%; | ||
448 | } | ||
449 | .indicator { | ||
450 | display: none; | ||
451 | } | ||
452 | .pagination li.prev, .pagination li.next { | ||
453 | width: auto; | ||
454 | } | ||
455 | } | ||
456 | |||
457 | @media only screen and (min-width : 400px) { | ||
458 | .nav-panel-buttom { | ||
459 | float: right; | ||
460 | } | ||
461 | } | ||
462 | |||
463 | @media only screen and (min-width : 993px) and (max-width : 1180px) { | ||
464 | .row .col.l1 { | ||
465 | width: 25%; | ||
466 | margin-left: 0; } | ||
467 | .row .col.l2 { | ||
468 | width: 33.33333%; | ||
469 | margin-left: 0; } | ||
470 | .row .col.l3 { | ||
471 | width: 41.66667%; | ||
472 | margin-left: 0; } | ||
473 | .row .col.l4 { | ||
474 | width: 50%; | ||
475 | margin-left: 0; } | ||
476 | .row .col.l5 { | ||
477 | width: 58.33333%; | ||
478 | margin-left: 0; } | ||
479 | .row .col.l6 { | ||
480 | width: 66.66667%; | ||
481 | margin-left: 0; } | ||
482 | .row .col.l7 { | ||
483 | width: 75%; | ||
484 | margin-left: 0; } | ||
485 | .row .col.l8 { | ||
486 | width: 83.33333%; | ||
487 | margin-left: 0; } | ||
488 | .row .col.l9 { | ||
489 | width: 91.66667%; | ||
490 | margin-left: 0; } | ||
491 | .row .col.l10 { | ||
492 | width: 100%; | ||
493 | margin-left: 0; } | ||
494 | } | ||
495 | |||
496 | @media only screen and (max-width : 350px) { | ||
497 | .nb-results { | ||
498 | display: none; | ||
499 | } | ||
500 | } | ||
501 | |||
502 | /* ========================================================================== | ||
503 | 7 = Font | ||
504 | ========================================================================== */ | ||
505 | |||
506 | .icon-google-plus2:before { | ||
507 | content: "\e800"; | ||
508 | } | ||
509 | .icon-facebook2:before { | ||
510 | content: "\e801"; | ||
511 | } | ||
512 | .icon-twitter:before { | ||
513 | content: "\e802"; | ||
514 | } | ||
515 | .icon-apple:before { | ||
516 | content: "\e803"; | ||
517 | } | ||
518 | .icon-android:before { | ||
519 | content: "\e804"; | ||
520 | } | ||
521 | .icon-chrome:before { | ||
522 | content: "\e805"; | ||
523 | } | ||
524 | .icon-firefox:before { | ||
525 | content: "\e806"; | ||
526 | } | ||
527 | |||
528 | footer [class^="icon-"], footer [class*=" icon-"] { | ||
529 | font-size: 2em; | ||
530 | transition: text-shadow 0.2s ease; | ||
531 | padding-right: 10px; | ||
532 | } | ||
533 | |||
534 | footer [class^="icon-"]:hover, footer [class*=" icon-"]:hover { | ||
535 | text-shadow: 0 0 10px rgba(0,0,0,0.3); | ||
536 | } | ||
537 | |||
538 | |||
539 | /* ========================================================================== | ||
540 | 8 = Others | ||
541 | ========================================================================== */ | ||
542 | |||
543 | /* force height on non-input field in the settings page */ | ||
544 | div.settings div.input-field div, div.settings div.input-field ul { | ||
545 | margin-top: 40px; | ||
546 | } | ||
547 | /* but avoid to kill all file input */ | ||
548 | div.settings div.file-field div { | ||
549 | margin-top: inherit; | ||
550 | } | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/css/materialize.css b/src/Wallabag/CoreBundle/Resources/public/themes/material/css/materialize.css deleted file mode 100644 index 544014c2..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/css/materialize.css +++ /dev/null | |||
@@ -1,8198 +0,0 @@ | |||
1 | /*! | ||
2 | * Materialize v0.97.1 (http://materializecss.com) | ||
3 | * Copyright 2014-2015 Materialize | ||
4 | * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) | ||
5 | */ | ||
6 | .materialize-red.lighten-5 { | ||
7 | background-color: #fdeaeb !important; } | ||
8 | |||
9 | .materialize-red-text.text-lighten-5 { | ||
10 | color: #fdeaeb !important; } | ||
11 | |||
12 | .materialize-red.lighten-4 { | ||
13 | background-color: #f8c1c3 !important; } | ||
14 | |||
15 | .materialize-red-text.text-lighten-4 { | ||
16 | color: #f8c1c3 !important; } | ||
17 | |||
18 | .materialize-red.lighten-3 { | ||
19 | background-color: #f3989b !important; } | ||
20 | |||
21 | .materialize-red-text.text-lighten-3 { | ||
22 | color: #f3989b !important; } | ||
23 | |||
24 | .materialize-red.lighten-2 { | ||
25 | background-color: #ee6e73 !important; } | ||
26 | |||
27 | .materialize-red-text.text-lighten-2 { | ||
28 | color: #ee6e73 !important; } | ||
29 | |||
30 | .materialize-red.lighten-1 { | ||
31 | background-color: #ea454b !important; } | ||
32 | |||
33 | .materialize-red-text.text-lighten-1 { | ||
34 | color: #ea454b !important; } | ||
35 | |||
36 | .materialize-red { | ||
37 | background-color: #e51c23 !important; } | ||
38 | |||
39 | .materialize-red-text { | ||
40 | color: #e51c23 !important; } | ||
41 | |||
42 | .materialize-red.darken-1 { | ||
43 | background-color: #d0181e !important; } | ||
44 | |||
45 | .materialize-red-text.text-darken-1 { | ||
46 | color: #d0181e !important; } | ||
47 | |||
48 | .materialize-red.darken-2 { | ||
49 | background-color: #b9151b !important; } | ||
50 | |||
51 | .materialize-red-text.text-darken-2 { | ||
52 | color: #b9151b !important; } | ||
53 | |||
54 | .materialize-red.darken-3 { | ||
55 | background-color: #a21318 !important; } | ||
56 | |||
57 | .materialize-red-text.text-darken-3 { | ||
58 | color: #a21318 !important; } | ||
59 | |||
60 | .materialize-red.darken-4 { | ||
61 | background-color: #8b1014 !important; } | ||
62 | |||
63 | .materialize-red-text.text-darken-4 { | ||
64 | color: #8b1014 !important; } | ||
65 | |||
66 | .red.lighten-5 { | ||
67 | background-color: #FFEBEE !important; } | ||
68 | |||
69 | .red-text.text-lighten-5 { | ||
70 | color: #FFEBEE !important; } | ||
71 | |||
72 | .red.lighten-4 { | ||
73 | background-color: #FFCDD2 !important; } | ||
74 | |||
75 | .red-text.text-lighten-4 { | ||
76 | color: #FFCDD2 !important; } | ||
77 | |||
78 | .red.lighten-3 { | ||
79 | background-color: #EF9A9A !important; } | ||
80 | |||
81 | .red-text.text-lighten-3 { | ||
82 | color: #EF9A9A !important; } | ||
83 | |||
84 | .red.lighten-2 { | ||
85 | background-color: #E57373 !important; } | ||
86 | |||
87 | .red-text.text-lighten-2 { | ||
88 | color: #E57373 !important; } | ||
89 | |||
90 | .red.lighten-1 { | ||
91 | background-color: #EF5350 !important; } | ||
92 | |||
93 | .red-text.text-lighten-1 { | ||
94 | color: #EF5350 !important; } | ||
95 | |||
96 | .red { | ||
97 | background-color: #F44336 !important; } | ||
98 | |||
99 | .red-text { | ||
100 | color: #F44336 !important; } | ||
101 | |||
102 | .red.darken-1 { | ||
103 | background-color: #E53935 !important; } | ||
104 | |||
105 | .red-text.text-darken-1 { | ||
106 | color: #E53935 !important; } | ||
107 | |||
108 | .red.darken-2 { | ||
109 | background-color: #D32F2F !important; } | ||
110 | |||
111 | .red-text.text-darken-2 { | ||
112 | color: #D32F2F !important; } | ||
113 | |||
114 | .red.darken-3 { | ||
115 | background-color: #C62828 !important; } | ||
116 | |||
117 | .red-text.text-darken-3 { | ||
118 | color: #C62828 !important; } | ||
119 | |||
120 | .red.darken-4 { | ||
121 | background-color: #B71C1C !important; } | ||
122 | |||
123 | .red-text.text-darken-4 { | ||
124 | color: #B71C1C !important; } | ||
125 | |||
126 | .red.accent-1 { | ||
127 | background-color: #FF8A80 !important; } | ||
128 | |||
129 | .red-text.text-accent-1 { | ||
130 | color: #FF8A80 !important; } | ||
131 | |||
132 | .red.accent-2 { | ||
133 | background-color: #FF5252 !important; } | ||
134 | |||
135 | .red-text.text-accent-2 { | ||
136 | color: #FF5252 !important; } | ||
137 | |||
138 | .red.accent-3 { | ||
139 | background-color: #FF1744 !important; } | ||
140 | |||
141 | .red-text.text-accent-3 { | ||
142 | color: #FF1744 !important; } | ||
143 | |||
144 | .red.accent-4 { | ||
145 | background-color: #D50000 !important; } | ||
146 | |||
147 | .red-text.text-accent-4 { | ||
148 | color: #D50000 !important; } | ||
149 | |||
150 | .pink.lighten-5 { | ||
151 | background-color: #fce4ec !important; } | ||
152 | |||
153 | .pink-text.text-lighten-5 { | ||
154 | color: #fce4ec !important; } | ||
155 | |||
156 | .pink.lighten-4 { | ||
157 | background-color: #f8bbd0 !important; } | ||
158 | |||
159 | .pink-text.text-lighten-4 { | ||
160 | color: #f8bbd0 !important; } | ||
161 | |||
162 | .pink.lighten-3 { | ||
163 | background-color: #f48fb1 !important; } | ||
164 | |||
165 | .pink-text.text-lighten-3 { | ||
166 | color: #f48fb1 !important; } | ||
167 | |||
168 | .pink.lighten-2 { | ||
169 | background-color: #f06292 !important; } | ||
170 | |||
171 | .pink-text.text-lighten-2 { | ||
172 | color: #f06292 !important; } | ||
173 | |||
174 | .pink.lighten-1 { | ||
175 | background-color: #ec407a !important; } | ||
176 | |||
177 | .pink-text.text-lighten-1 { | ||
178 | color: #ec407a !important; } | ||
179 | |||
180 | .pink { | ||
181 | background-color: #e91e63 !important; } | ||
182 | |||
183 | .pink-text { | ||
184 | color: #e91e63 !important; } | ||
185 | |||
186 | .pink.darken-1 { | ||
187 | background-color: #d81b60 !important; } | ||
188 | |||
189 | .pink-text.text-darken-1 { | ||
190 | color: #d81b60 !important; } | ||
191 | |||
192 | .pink.darken-2 { | ||
193 | background-color: #c2185b !important; } | ||
194 | |||
195 | .pink-text.text-darken-2 { | ||
196 | color: #c2185b !important; } | ||
197 | |||
198 | .pink.darken-3 { | ||
199 | background-color: #ad1457 !important; } | ||
200 | |||
201 | .pink-text.text-darken-3 { | ||
202 | color: #ad1457 !important; } | ||
203 | |||
204 | .pink.darken-4 { | ||
205 | background-color: #880e4f !important; } | ||
206 | |||
207 | .pink-text.text-darken-4 { | ||
208 | color: #880e4f !important; } | ||
209 | |||
210 | .pink.accent-1 { | ||
211 | background-color: #ff80ab !important; } | ||
212 | |||
213 | .pink-text.text-accent-1 { | ||
214 | color: #ff80ab !important; } | ||
215 | |||
216 | .pink.accent-2 { | ||
217 | background-color: #ff4081 !important; } | ||
218 | |||
219 | .pink-text.text-accent-2 { | ||
220 | color: #ff4081 !important; } | ||
221 | |||
222 | .pink.accent-3 { | ||
223 | background-color: #f50057 !important; } | ||
224 | |||
225 | .pink-text.text-accent-3 { | ||
226 | color: #f50057 !important; } | ||
227 | |||
228 | .pink.accent-4 { | ||
229 | background-color: #c51162 !important; } | ||
230 | |||
231 | .pink-text.text-accent-4 { | ||
232 | color: #c51162 !important; } | ||
233 | |||
234 | .purple.lighten-5 { | ||
235 | background-color: #f3e5f5 !important; } | ||
236 | |||
237 | .purple-text.text-lighten-5 { | ||
238 | color: #f3e5f5 !important; } | ||
239 | |||
240 | .purple.lighten-4 { | ||
241 | background-color: #e1bee7 !important; } | ||
242 | |||
243 | .purple-text.text-lighten-4 { | ||
244 | color: #e1bee7 !important; } | ||
245 | |||
246 | .purple.lighten-3 { | ||
247 | background-color: #ce93d8 !important; } | ||
248 | |||
249 | .purple-text.text-lighten-3 { | ||
250 | color: #ce93d8 !important; } | ||
251 | |||
252 | .purple.lighten-2 { | ||
253 | background-color: #ba68c8 !important; } | ||
254 | |||
255 | .purple-text.text-lighten-2 { | ||
256 | color: #ba68c8 !important; } | ||
257 | |||
258 | .purple.lighten-1 { | ||
259 | background-color: #ab47bc !important; } | ||
260 | |||
261 | .purple-text.text-lighten-1 { | ||
262 | color: #ab47bc !important; } | ||
263 | |||
264 | .purple { | ||
265 | background-color: #9c27b0 !important; } | ||
266 | |||
267 | .purple-text { | ||
268 | color: #9c27b0 !important; } | ||
269 | |||
270 | .purple.darken-1 { | ||
271 | background-color: #8e24aa !important; } | ||
272 | |||
273 | .purple-text.text-darken-1 { | ||
274 | color: #8e24aa !important; } | ||
275 | |||
276 | .purple.darken-2 { | ||
277 | background-color: #7b1fa2 !important; } | ||
278 | |||
279 | .purple-text.text-darken-2 { | ||
280 | color: #7b1fa2 !important; } | ||
281 | |||
282 | .purple.darken-3 { | ||
283 | background-color: #6a1b9a !important; } | ||
284 | |||
285 | .purple-text.text-darken-3 { | ||
286 | color: #6a1b9a !important; } | ||
287 | |||
288 | .purple.darken-4 { | ||
289 | background-color: #4a148c !important; } | ||
290 | |||
291 | .purple-text.text-darken-4 { | ||
292 | color: #4a148c !important; } | ||
293 | |||
294 | .purple.accent-1 { | ||
295 | background-color: #ea80fc !important; } | ||
296 | |||
297 | .purple-text.text-accent-1 { | ||
298 | color: #ea80fc !important; } | ||
299 | |||
300 | .purple.accent-2 { | ||
301 | background-color: #e040fb !important; } | ||
302 | |||
303 | .purple-text.text-accent-2 { | ||
304 | color: #e040fb !important; } | ||
305 | |||
306 | .purple.accent-3 { | ||
307 | background-color: #d500f9 !important; } | ||
308 | |||
309 | .purple-text.text-accent-3 { | ||
310 | color: #d500f9 !important; } | ||
311 | |||
312 | .purple.accent-4 { | ||
313 | background-color: #aa00ff !important; } | ||
314 | |||
315 | .purple-text.text-accent-4 { | ||
316 | color: #aa00ff !important; } | ||
317 | |||
318 | .deep-purple.lighten-5 { | ||
319 | background-color: #ede7f6 !important; } | ||
320 | |||
321 | .deep-purple-text.text-lighten-5 { | ||
322 | color: #ede7f6 !important; } | ||
323 | |||
324 | .deep-purple.lighten-4 { | ||
325 | background-color: #d1c4e9 !important; } | ||
326 | |||
327 | .deep-purple-text.text-lighten-4 { | ||
328 | color: #d1c4e9 !important; } | ||
329 | |||
330 | .deep-purple.lighten-3 { | ||
331 | background-color: #b39ddb !important; } | ||
332 | |||
333 | .deep-purple-text.text-lighten-3 { | ||
334 | color: #b39ddb !important; } | ||
335 | |||
336 | .deep-purple.lighten-2 { | ||
337 | background-color: #9575cd !important; } | ||
338 | |||
339 | .deep-purple-text.text-lighten-2 { | ||
340 | color: #9575cd !important; } | ||
341 | |||
342 | .deep-purple.lighten-1 { | ||
343 | background-color: #7e57c2 !important; } | ||
344 | |||
345 | .deep-purple-text.text-lighten-1 { | ||
346 | color: #7e57c2 !important; } | ||
347 | |||
348 | .deep-purple { | ||
349 | background-color: #673ab7 !important; } | ||
350 | |||
351 | .deep-purple-text { | ||
352 | color: #673ab7 !important; } | ||
353 | |||
354 | .deep-purple.darken-1 { | ||
355 | background-color: #5e35b1 !important; } | ||
356 | |||
357 | .deep-purple-text.text-darken-1 { | ||
358 | color: #5e35b1 !important; } | ||
359 | |||
360 | .deep-purple.darken-2 { | ||
361 | background-color: #512da8 !important; } | ||
362 | |||
363 | .deep-purple-text.text-darken-2 { | ||
364 | color: #512da8 !important; } | ||
365 | |||
366 | .deep-purple.darken-3 { | ||
367 | background-color: #4527a0 !important; } | ||
368 | |||
369 | .deep-purple-text.text-darken-3 { | ||
370 | color: #4527a0 !important; } | ||
371 | |||
372 | .deep-purple.darken-4 { | ||
373 | background-color: #311b92 !important; } | ||
374 | |||
375 | .deep-purple-text.text-darken-4 { | ||
376 | color: #311b92 !important; } | ||
377 | |||
378 | .deep-purple.accent-1 { | ||
379 | background-color: #b388ff !important; } | ||
380 | |||
381 | .deep-purple-text.text-accent-1 { | ||
382 | color: #b388ff !important; } | ||
383 | |||
384 | .deep-purple.accent-2 { | ||
385 | background-color: #7c4dff !important; } | ||
386 | |||
387 | .deep-purple-text.text-accent-2 { | ||
388 | color: #7c4dff !important; } | ||
389 | |||
390 | .deep-purple.accent-3 { | ||
391 | background-color: #651fff !important; } | ||
392 | |||
393 | .deep-purple-text.text-accent-3 { | ||
394 | color: #651fff !important; } | ||
395 | |||
396 | .deep-purple.accent-4 { | ||
397 | background-color: #6200ea !important; } | ||
398 | |||
399 | .deep-purple-text.text-accent-4 { | ||
400 | color: #6200ea !important; } | ||
401 | |||
402 | .indigo.lighten-5 { | ||
403 | background-color: #e8eaf6 !important; } | ||
404 | |||
405 | .indigo-text.text-lighten-5 { | ||
406 | color: #e8eaf6 !important; } | ||
407 | |||
408 | .indigo.lighten-4 { | ||
409 | background-color: #c5cae9 !important; } | ||
410 | |||
411 | .indigo-text.text-lighten-4 { | ||
412 | color: #c5cae9 !important; } | ||
413 | |||
414 | .indigo.lighten-3 { | ||
415 | background-color: #9fa8da !important; } | ||
416 | |||
417 | .indigo-text.text-lighten-3 { | ||
418 | color: #9fa8da !important; } | ||
419 | |||
420 | .indigo.lighten-2 { | ||
421 | background-color: #7986cb !important; } | ||
422 | |||
423 | .indigo-text.text-lighten-2 { | ||
424 | color: #7986cb !important; } | ||
425 | |||
426 | .indigo.lighten-1 { | ||
427 | background-color: #5c6bc0 !important; } | ||
428 | |||
429 | .indigo-text.text-lighten-1 { | ||
430 | color: #5c6bc0 !important; } | ||
431 | |||
432 | .indigo { | ||
433 | background-color: #3f51b5 !important; } | ||
434 | |||
435 | .indigo-text { | ||
436 | color: #3f51b5 !important; } | ||
437 | |||
438 | .indigo.darken-1 { | ||
439 | background-color: #3949ab !important; } | ||
440 | |||
441 | .indigo-text.text-darken-1 { | ||
442 | color: #3949ab !important; } | ||
443 | |||
444 | .indigo.darken-2 { | ||
445 | background-color: #303f9f !important; } | ||
446 | |||
447 | .indigo-text.text-darken-2 { | ||
448 | color: #303f9f !important; } | ||
449 | |||
450 | .indigo.darken-3 { | ||
451 | background-color: #283593 !important; } | ||
452 | |||
453 | .indigo-text.text-darken-3 { | ||
454 | color: #283593 !important; } | ||
455 | |||
456 | .indigo.darken-4 { | ||
457 | background-color: #1a237e !important; } | ||
458 | |||
459 | .indigo-text.text-darken-4 { | ||
460 | color: #1a237e !important; } | ||
461 | |||
462 | .indigo.accent-1 { | ||
463 | background-color: #8c9eff !important; } | ||
464 | |||
465 | .indigo-text.text-accent-1 { | ||
466 | color: #8c9eff !important; } | ||
467 | |||
468 | .indigo.accent-2 { | ||
469 | background-color: #536dfe !important; } | ||
470 | |||
471 | .indigo-text.text-accent-2 { | ||
472 | color: #536dfe !important; } | ||
473 | |||
474 | .indigo.accent-3 { | ||
475 | background-color: #3d5afe !important; } | ||
476 | |||
477 | .indigo-text.text-accent-3 { | ||
478 | color: #3d5afe !important; } | ||
479 | |||
480 | .indigo.accent-4 { | ||
481 | background-color: #304ffe !important; } | ||
482 | |||
483 | .indigo-text.text-accent-4 { | ||
484 | color: #304ffe !important; } | ||
485 | |||
486 | .blue.lighten-5 { | ||
487 | background-color: #E3F2FD !important; } | ||
488 | |||
489 | .blue-text.text-lighten-5 { | ||
490 | color: #E3F2FD !important; } | ||
491 | |||
492 | .blue.lighten-4 { | ||
493 | background-color: #BBDEFB !important; } | ||
494 | |||
495 | .blue-text.text-lighten-4 { | ||
496 | color: #BBDEFB !important; } | ||
497 | |||
498 | .blue.lighten-3 { | ||
499 | background-color: #90CAF9 !important; } | ||
500 | |||
501 | .blue-text.text-lighten-3 { | ||
502 | color: #90CAF9 !important; } | ||
503 | |||
504 | .blue.lighten-2 { | ||
505 | background-color: #64B5F6 !important; } | ||
506 | |||
507 | .blue-text.text-lighten-2 { | ||
508 | color: #64B5F6 !important; } | ||
509 | |||
510 | .blue.lighten-1 { | ||
511 | background-color: #42A5F5 !important; } | ||
512 | |||
513 | .blue-text.text-lighten-1 { | ||
514 | color: #42A5F5 !important; } | ||
515 | |||
516 | .blue { | ||
517 | background-color: #2196F3 !important; } | ||
518 | |||
519 | .blue-text { | ||
520 | color: #2196F3 !important; } | ||
521 | |||
522 | .blue.darken-1 { | ||
523 | background-color: #1E88E5 !important; } | ||
524 | |||
525 | .blue-text.text-darken-1 { | ||
526 | color: #1E88E5 !important; } | ||
527 | |||
528 | .blue.darken-2 { | ||
529 | background-color: #1976D2 !important; } | ||
530 | |||
531 | .blue-text.text-darken-2 { | ||
532 | color: #1976D2 !important; } | ||
533 | |||
534 | .blue.darken-3 { | ||
535 | background-color: #1565C0 !important; } | ||
536 | |||
537 | .blue-text.text-darken-3 { | ||
538 | color: #1565C0 !important; } | ||
539 | |||
540 | .blue.darken-4 { | ||
541 | background-color: #0D47A1 !important; } | ||
542 | |||
543 | .blue-text.text-darken-4 { | ||
544 | color: #0D47A1 !important; } | ||
545 | |||
546 | .blue.accent-1 { | ||
547 | background-color: #82B1FF !important; } | ||
548 | |||
549 | .blue-text.text-accent-1 { | ||
550 | color: #82B1FF !important; } | ||
551 | |||
552 | .blue.accent-2 { | ||
553 | background-color: #448AFF !important; } | ||
554 | |||
555 | .blue-text.text-accent-2 { | ||
556 | color: #448AFF !important; } | ||
557 | |||
558 | .blue.accent-3 { | ||
559 | background-color: #2979FF !important; } | ||
560 | |||
561 | .blue-text.text-accent-3 { | ||
562 | color: #2979FF !important; } | ||
563 | |||
564 | .blue.accent-4 { | ||
565 | background-color: #2962FF !important; } | ||
566 | |||
567 | .blue-text.text-accent-4 { | ||
568 | color: #2962FF !important; } | ||
569 | |||
570 | .light-blue.lighten-5 { | ||
571 | background-color: #e1f5fe !important; } | ||
572 | |||
573 | .light-blue-text.text-lighten-5 { | ||
574 | color: #e1f5fe !important; } | ||
575 | |||
576 | .light-blue.lighten-4 { | ||
577 | background-color: #b3e5fc !important; } | ||
578 | |||
579 | .light-blue-text.text-lighten-4 { | ||
580 | color: #b3e5fc !important; } | ||
581 | |||
582 | .light-blue.lighten-3 { | ||
583 | background-color: #81d4fa !important; } | ||
584 | |||
585 | .light-blue-text.text-lighten-3 { | ||
586 | color: #81d4fa !important; } | ||
587 | |||
588 | .light-blue.lighten-2 { | ||
589 | background-color: #4fc3f7 !important; } | ||
590 | |||
591 | .light-blue-text.text-lighten-2 { | ||
592 | color: #4fc3f7 !important; } | ||
593 | |||
594 | .light-blue.lighten-1 { | ||
595 | background-color: #29b6f6 !important; } | ||
596 | |||
597 | .light-blue-text.text-lighten-1 { | ||
598 | color: #29b6f6 !important; } | ||
599 | |||
600 | .light-blue { | ||
601 | background-color: #03a9f4 !important; } | ||
602 | |||
603 | .light-blue-text { | ||
604 | color: #03a9f4 !important; } | ||
605 | |||
606 | .light-blue.darken-1 { | ||
607 | background-color: #039be5 !important; } | ||
608 | |||
609 | .light-blue-text.text-darken-1 { | ||
610 | color: #039be5 !important; } | ||
611 | |||
612 | .light-blue.darken-2 { | ||
613 | background-color: #0288d1 !important; } | ||
614 | |||
615 | .light-blue-text.text-darken-2 { | ||
616 | color: #0288d1 !important; } | ||
617 | |||
618 | .light-blue.darken-3 { | ||
619 | background-color: #0277bd !important; } | ||
620 | |||
621 | .light-blue-text.text-darken-3 { | ||
622 | color: #0277bd !important; } | ||
623 | |||
624 | .light-blue.darken-4 { | ||
625 | background-color: #01579b !important; } | ||
626 | |||
627 | .light-blue-text.text-darken-4 { | ||
628 | color: #01579b !important; } | ||
629 | |||
630 | .light-blue.accent-1 { | ||
631 | background-color: #80d8ff !important; } | ||
632 | |||
633 | .light-blue-text.text-accent-1 { | ||
634 | color: #80d8ff !important; } | ||
635 | |||
636 | .light-blue.accent-2 { | ||
637 | background-color: #40c4ff !important; } | ||
638 | |||
639 | .light-blue-text.text-accent-2 { | ||
640 | color: #40c4ff !important; } | ||
641 | |||
642 | .light-blue.accent-3 { | ||
643 | background-color: #00b0ff !important; } | ||
644 | |||
645 | .light-blue-text.text-accent-3 { | ||
646 | color: #00b0ff !important; } | ||
647 | |||
648 | .light-blue.accent-4 { | ||
649 | background-color: #0091ea !important; } | ||
650 | |||
651 | .light-blue-text.text-accent-4 { | ||
652 | color: #0091ea !important; } | ||
653 | |||
654 | .cyan.lighten-5 { | ||
655 | background-color: #e0f7fa !important; } | ||
656 | |||
657 | .cyan-text.text-lighten-5 { | ||
658 | color: #e0f7fa !important; } | ||
659 | |||
660 | .cyan.lighten-4 { | ||
661 | background-color: #b2ebf2 !important; } | ||
662 | |||
663 | .cyan-text.text-lighten-4 { | ||
664 | color: #b2ebf2 !important; } | ||
665 | |||
666 | .cyan.lighten-3 { | ||
667 | background-color: #80deea !important; } | ||
668 | |||
669 | .cyan-text.text-lighten-3 { | ||
670 | color: #80deea !important; } | ||
671 | |||
672 | .cyan.lighten-2 { | ||
673 | background-color: #4dd0e1 !important; } | ||
674 | |||
675 | .cyan-text.text-lighten-2 { | ||
676 | color: #4dd0e1 !important; } | ||
677 | |||
678 | .cyan.lighten-1 { | ||
679 | background-color: #26c6da !important; } | ||
680 | |||
681 | .cyan-text.text-lighten-1 { | ||
682 | color: #26c6da !important; } | ||
683 | |||
684 | .cyan { | ||
685 | background-color: #00bcd4 !important; } | ||
686 | |||
687 | .cyan-text { | ||
688 | color: #00bcd4 !important; } | ||
689 | |||
690 | .cyan.darken-1 { | ||
691 | background-color: #00acc1 !important; } | ||
692 | |||
693 | .cyan-text.text-darken-1 { | ||
694 | color: #00acc1 !important; } | ||
695 | |||
696 | .cyan.darken-2 { | ||
697 | background-color: #0097a7 !important; } | ||
698 | |||
699 | .cyan-text.text-darken-2 { | ||
700 | color: #0097a7 !important; } | ||
701 | |||
702 | .cyan.darken-3 { | ||
703 | background-color: #00838f !important; } | ||
704 | |||
705 | .cyan-text.text-darken-3 { | ||
706 | color: #00838f !important; } | ||
707 | |||
708 | .cyan.darken-4 { | ||
709 | background-color: #006064 !important; } | ||
710 | |||
711 | .cyan-text.text-darken-4 { | ||
712 | color: #006064 !important; } | ||
713 | |||
714 | .cyan.accent-1 { | ||
715 | background-color: #84ffff !important; } | ||
716 | |||
717 | .cyan-text.text-accent-1 { | ||
718 | color: #84ffff !important; } | ||
719 | |||
720 | .cyan.accent-2 { | ||
721 | background-color: #18ffff !important; } | ||
722 | |||
723 | .cyan-text.text-accent-2 { | ||
724 | color: #18ffff !important; } | ||
725 | |||
726 | .cyan.accent-3 { | ||
727 | background-color: #00e5ff !important; } | ||
728 | |||
729 | .cyan-text.text-accent-3 { | ||
730 | color: #00e5ff !important; } | ||
731 | |||
732 | .cyan.accent-4 { | ||
733 | background-color: #00b8d4 !important; } | ||
734 | |||
735 | .cyan-text.text-accent-4 { | ||
736 | color: #00b8d4 !important; } | ||
737 | |||
738 | .teal.lighten-5 { | ||
739 | background-color: #e0f2f1 !important; } | ||
740 | |||
741 | .teal-text.text-lighten-5 { | ||
742 | color: #e0f2f1 !important; } | ||
743 | |||
744 | .teal.lighten-4 { | ||
745 | background-color: #b2dfdb !important; } | ||
746 | |||
747 | .teal-text.text-lighten-4 { | ||
748 | color: #b2dfdb !important; } | ||
749 | |||
750 | .teal.lighten-3 { | ||
751 | background-color: #80cbc4 !important; } | ||
752 | |||
753 | .teal-text.text-lighten-3 { | ||
754 | color: #80cbc4 !important; } | ||
755 | |||
756 | .teal.lighten-2 { | ||
757 | background-color: #4db6ac !important; } | ||
758 | |||
759 | .teal-text.text-lighten-2 { | ||
760 | color: #4db6ac !important; } | ||
761 | |||
762 | .teal.lighten-1 { | ||
763 | background-color: #26a69a !important; } | ||
764 | |||
765 | .teal-text.text-lighten-1 { | ||
766 | color: #26a69a !important; } | ||
767 | |||
768 | .teal { | ||
769 | background-color: #009688 !important; } | ||
770 | |||
771 | .teal-text { | ||
772 | color: #009688 !important; } | ||
773 | |||
774 | .teal.darken-1 { | ||
775 | background-color: #00897b !important; } | ||
776 | |||
777 | .teal-text.text-darken-1 { | ||
778 | color: #00897b !important; } | ||
779 | |||
780 | .teal.darken-2 { | ||
781 | background-color: #00796b !important; } | ||
782 | |||
783 | .teal-text.text-darken-2 { | ||
784 | color: #00796b !important; } | ||
785 | |||
786 | .teal.darken-3 { | ||
787 | background-color: #00695c !important; } | ||
788 | |||
789 | .teal-text.text-darken-3 { | ||
790 | color: #00695c !important; } | ||
791 | |||
792 | .teal.darken-4 { | ||
793 | background-color: #004d40 !important; } | ||
794 | |||
795 | .teal-text.text-darken-4 { | ||
796 | color: #004d40 !important; } | ||
797 | |||
798 | .teal.accent-1 { | ||
799 | background-color: #a7ffeb !important; } | ||
800 | |||
801 | .teal-text.text-accent-1 { | ||
802 | color: #a7ffeb !important; } | ||
803 | |||
804 | .teal.accent-2 { | ||
805 | background-color: #64ffda !important; } | ||
806 | |||
807 | .teal-text.text-accent-2 { | ||
808 | color: #64ffda !important; } | ||
809 | |||
810 | .teal.accent-3 { | ||
811 | background-color: #1de9b6 !important; } | ||
812 | |||
813 | .teal-text.text-accent-3 { | ||
814 | color: #1de9b6 !important; } | ||
815 | |||
816 | .teal.accent-4 { | ||
817 | background-color: #00bfa5 !important; } | ||
818 | |||
819 | .teal-text.text-accent-4 { | ||
820 | color: #00bfa5 !important; } | ||
821 | |||
822 | .green.lighten-5 { | ||
823 | background-color: #E8F5E9 !important; } | ||
824 | |||
825 | .green-text.text-lighten-5 { | ||
826 | color: #E8F5E9 !important; } | ||
827 | |||
828 | .green.lighten-4 { | ||
829 | background-color: #C8E6C9 !important; } | ||
830 | |||
831 | .green-text.text-lighten-4 { | ||
832 | color: #C8E6C9 !important; } | ||
833 | |||
834 | .green.lighten-3 { | ||
835 | background-color: #A5D6A7 !important; } | ||
836 | |||
837 | .green-text.text-lighten-3 { | ||
838 | color: #A5D6A7 !important; } | ||
839 | |||
840 | .green.lighten-2 { | ||
841 | background-color: #81C784 !important; } | ||
842 | |||
843 | .green-text.text-lighten-2 { | ||
844 | color: #81C784 !important; } | ||
845 | |||
846 | .green.lighten-1 { | ||
847 | background-color: #66BB6A !important; } | ||
848 | |||
849 | .green-text.text-lighten-1 { | ||
850 | color: #66BB6A !important; } | ||
851 | |||
852 | .green { | ||
853 | background-color: #4CAF50 !important; } | ||
854 | |||
855 | .green-text { | ||
856 | color: #4CAF50 !important; } | ||
857 | |||
858 | .green.darken-1 { | ||
859 | background-color: #43A047 !important; } | ||
860 | |||
861 | .green-text.text-darken-1 { | ||
862 | color: #43A047 !important; } | ||
863 | |||
864 | .green.darken-2 { | ||
865 | background-color: #388E3C !important; } | ||
866 | |||
867 | .green-text.text-darken-2 { | ||
868 | color: #388E3C !important; } | ||
869 | |||
870 | .green.darken-3 { | ||
871 | background-color: #2E7D32 !important; } | ||
872 | |||
873 | .green-text.text-darken-3 { | ||
874 | color: #2E7D32 !important; } | ||
875 | |||
876 | .green.darken-4 { | ||
877 | background-color: #1B5E20 !important; } | ||
878 | |||
879 | .green-text.text-darken-4 { | ||
880 | color: #1B5E20 !important; } | ||
881 | |||
882 | .green.accent-1 { | ||
883 | background-color: #B9F6CA !important; } | ||
884 | |||
885 | .green-text.text-accent-1 { | ||
886 | color: #B9F6CA !important; } | ||
887 | |||
888 | .green.accent-2 { | ||
889 | background-color: #69F0AE !important; } | ||
890 | |||
891 | .green-text.text-accent-2 { | ||
892 | color: #69F0AE !important; } | ||
893 | |||
894 | .green.accent-3 { | ||
895 | background-color: #00E676 !important; } | ||
896 | |||
897 | .green-text.text-accent-3 { | ||
898 | color: #00E676 !important; } | ||
899 | |||
900 | .green.accent-4 { | ||
901 | background-color: #00C853 !important; } | ||
902 | |||
903 | .green-text.text-accent-4 { | ||
904 | color: #00C853 !important; } | ||
905 | |||
906 | .light-green.lighten-5 { | ||
907 | background-color: #f1f8e9 !important; } | ||
908 | |||
909 | .light-green-text.text-lighten-5 { | ||
910 | color: #f1f8e9 !important; } | ||
911 | |||
912 | .light-green.lighten-4 { | ||
913 | background-color: #dcedc8 !important; } | ||
914 | |||
915 | .light-green-text.text-lighten-4 { | ||
916 | color: #dcedc8 !important; } | ||
917 | |||
918 | .light-green.lighten-3 { | ||
919 | background-color: #c5e1a5 !important; } | ||
920 | |||
921 | .light-green-text.text-lighten-3 { | ||
922 | color: #c5e1a5 !important; } | ||
923 | |||
924 | .light-green.lighten-2 { | ||
925 | background-color: #aed581 !important; } | ||
926 | |||
927 | .light-green-text.text-lighten-2 { | ||
928 | color: #aed581 !important; } | ||
929 | |||
930 | .light-green.lighten-1 { | ||
931 | background-color: #9ccc65 !important; } | ||
932 | |||
933 | .light-green-text.text-lighten-1 { | ||
934 | color: #9ccc65 !important; } | ||
935 | |||
936 | .light-green { | ||
937 | background-color: #8bc34a !important; } | ||
938 | |||
939 | .light-green-text { | ||
940 | color: #8bc34a !important; } | ||
941 | |||
942 | .light-green.darken-1 { | ||
943 | background-color: #7cb342 !important; } | ||
944 | |||
945 | .light-green-text.text-darken-1 { | ||
946 | color: #7cb342 !important; } | ||
947 | |||
948 | .light-green.darken-2 { | ||
949 | background-color: #689f38 !important; } | ||
950 | |||
951 | .light-green-text.text-darken-2 { | ||
952 | color: #689f38 !important; } | ||
953 | |||
954 | .light-green.darken-3 { | ||
955 | background-color: #558b2f !important; } | ||
956 | |||
957 | .light-green-text.text-darken-3 { | ||
958 | color: #558b2f !important; } | ||
959 | |||
960 | .light-green.darken-4 { | ||
961 | background-color: #33691e !important; } | ||
962 | |||
963 | .light-green-text.text-darken-4 { | ||
964 | color: #33691e !important; } | ||
965 | |||
966 | .light-green.accent-1 { | ||
967 | background-color: #ccff90 !important; } | ||
968 | |||
969 | .light-green-text.text-accent-1 { | ||
970 | color: #ccff90 !important; } | ||
971 | |||
972 | .light-green.accent-2 { | ||
973 | background-color: #b2ff59 !important; } | ||
974 | |||
975 | .light-green-text.text-accent-2 { | ||
976 | color: #b2ff59 !important; } | ||
977 | |||
978 | .light-green.accent-3 { | ||
979 | background-color: #76ff03 !important; } | ||
980 | |||
981 | .light-green-text.text-accent-3 { | ||
982 | color: #76ff03 !important; } | ||
983 | |||
984 | .light-green.accent-4 { | ||
985 | background-color: #64dd17 !important; } | ||
986 | |||
987 | .light-green-text.text-accent-4 { | ||
988 | color: #64dd17 !important; } | ||
989 | |||
990 | .lime.lighten-5 { | ||
991 | background-color: #f9fbe7 !important; } | ||
992 | |||
993 | .lime-text.text-lighten-5 { | ||
994 | color: #f9fbe7 !important; } | ||
995 | |||
996 | .lime.lighten-4 { | ||
997 | background-color: #f0f4c3 !important; } | ||
998 | |||
999 | .lime-text.text-lighten-4 { | ||
1000 | color: #f0f4c3 !important; } | ||
1001 | |||
1002 | .lime.lighten-3 { | ||
1003 | background-color: #e6ee9c !important; } | ||
1004 | |||
1005 | .lime-text.text-lighten-3 { | ||
1006 | color: #e6ee9c !important; } | ||
1007 | |||
1008 | .lime.lighten-2 { | ||
1009 | background-color: #dce775 !important; } | ||
1010 | |||
1011 | .lime-text.text-lighten-2 { | ||
1012 | color: #dce775 !important; } | ||
1013 | |||
1014 | .lime.lighten-1 { | ||
1015 | background-color: #d4e157 !important; } | ||
1016 | |||
1017 | .lime-text.text-lighten-1 { | ||
1018 | color: #d4e157 !important; } | ||
1019 | |||
1020 | .lime { | ||
1021 | background-color: #cddc39 !important; } | ||
1022 | |||
1023 | .lime-text { | ||
1024 | color: #cddc39 !important; } | ||
1025 | |||
1026 | .lime.darken-1 { | ||
1027 | background-color: #c0ca33 !important; } | ||
1028 | |||
1029 | .lime-text.text-darken-1 { | ||
1030 | color: #c0ca33 !important; } | ||
1031 | |||
1032 | .lime.darken-2 { | ||
1033 | background-color: #afb42b !important; } | ||
1034 | |||
1035 | .lime-text.text-darken-2 { | ||
1036 | color: #afb42b !important; } | ||
1037 | |||
1038 | .lime.darken-3 { | ||
1039 | background-color: #9e9d24 !important; } | ||
1040 | |||
1041 | .lime-text.text-darken-3 { | ||
1042 | color: #9e9d24 !important; } | ||
1043 | |||
1044 | .lime.darken-4 { | ||
1045 | background-color: #827717 !important; } | ||
1046 | |||
1047 | .lime-text.text-darken-4 { | ||
1048 | color: #827717 !important; } | ||
1049 | |||
1050 | .lime.accent-1 { | ||
1051 | background-color: #f4ff81 !important; } | ||
1052 | |||
1053 | .lime-text.text-accent-1 { | ||
1054 | color: #f4ff81 !important; } | ||
1055 | |||
1056 | .lime.accent-2 { | ||
1057 | background-color: #eeff41 !important; } | ||
1058 | |||
1059 | .lime-text.text-accent-2 { | ||
1060 | color: #eeff41 !important; } | ||
1061 | |||
1062 | .lime.accent-3 { | ||
1063 | background-color: #c6ff00 !important; } | ||
1064 | |||
1065 | .lime-text.text-accent-3 { | ||
1066 | color: #c6ff00 !important; } | ||
1067 | |||
1068 | .lime.accent-4 { | ||
1069 | background-color: #aeea00 !important; } | ||
1070 | |||
1071 | .lime-text.text-accent-4 { | ||
1072 | color: #aeea00 !important; } | ||
1073 | |||
1074 | .yellow.lighten-5 { | ||
1075 | background-color: #fffde7 !important; } | ||
1076 | |||
1077 | .yellow-text.text-lighten-5 { | ||
1078 | color: #fffde7 !important; } | ||
1079 | |||
1080 | .yellow.lighten-4 { | ||
1081 | background-color: #fff9c4 !important; } | ||
1082 | |||
1083 | .yellow-text.text-lighten-4 { | ||
1084 | color: #fff9c4 !important; } | ||
1085 | |||
1086 | .yellow.lighten-3 { | ||
1087 | background-color: #fff59d !important; } | ||
1088 | |||
1089 | .yellow-text.text-lighten-3 { | ||
1090 | color: #fff59d !important; } | ||
1091 | |||
1092 | .yellow.lighten-2 { | ||
1093 | background-color: #fff176 !important; } | ||
1094 | |||
1095 | .yellow-text.text-lighten-2 { | ||
1096 | color: #fff176 !important; } | ||
1097 | |||
1098 | .yellow.lighten-1 { | ||
1099 | background-color: #ffee58 !important; } | ||
1100 | |||
1101 | .yellow-text.text-lighten-1 { | ||
1102 | color: #ffee58 !important; } | ||
1103 | |||
1104 | .yellow { | ||
1105 | background-color: #ffeb3b !important; } | ||
1106 | |||
1107 | .yellow-text { | ||
1108 | color: #ffeb3b !important; } | ||
1109 | |||
1110 | .yellow.darken-1 { | ||
1111 | background-color: #fdd835 !important; } | ||
1112 | |||
1113 | .yellow-text.text-darken-1 { | ||
1114 | color: #fdd835 !important; } | ||
1115 | |||
1116 | .yellow.darken-2 { | ||
1117 | background-color: #fbc02d !important; } | ||
1118 | |||
1119 | .yellow-text.text-darken-2 { | ||
1120 | color: #fbc02d !important; } | ||
1121 | |||
1122 | .yellow.darken-3 { | ||
1123 | background-color: #f9a825 !important; } | ||
1124 | |||
1125 | .yellow-text.text-darken-3 { | ||
1126 | color: #f9a825 !important; } | ||
1127 | |||
1128 | .yellow.darken-4 { | ||
1129 | background-color: #f57f17 !important; } | ||
1130 | |||
1131 | .yellow-text.text-darken-4 { | ||
1132 | color: #f57f17 !important; } | ||
1133 | |||
1134 | .yellow.accent-1 { | ||
1135 | background-color: #ffff8d !important; } | ||
1136 | |||
1137 | .yellow-text.text-accent-1 { | ||
1138 | color: #ffff8d !important; } | ||
1139 | |||
1140 | .yellow.accent-2 { | ||
1141 | background-color: #ffff00 !important; } | ||
1142 | |||
1143 | .yellow-text.text-accent-2 { | ||
1144 | color: #ffff00 !important; } | ||
1145 | |||
1146 | .yellow.accent-3 { | ||
1147 | background-color: #ffea00 !important; } | ||
1148 | |||
1149 | .yellow-text.text-accent-3 { | ||
1150 | color: #ffea00 !important; } | ||
1151 | |||
1152 | .yellow.accent-4 { | ||
1153 | background-color: #ffd600 !important; } | ||
1154 | |||
1155 | .yellow-text.text-accent-4 { | ||
1156 | color: #ffd600 !important; } | ||
1157 | |||
1158 | .amber.lighten-5 { | ||
1159 | background-color: #fff8e1 !important; } | ||
1160 | |||
1161 | .amber-text.text-lighten-5 { | ||
1162 | color: #fff8e1 !important; } | ||
1163 | |||
1164 | .amber.lighten-4 { | ||
1165 | background-color: #ffecb3 !important; } | ||
1166 | |||
1167 | .amber-text.text-lighten-4 { | ||
1168 | color: #ffecb3 !important; } | ||
1169 | |||
1170 | .amber.lighten-3 { | ||
1171 | background-color: #ffe082 !important; } | ||
1172 | |||
1173 | .amber-text.text-lighten-3 { | ||
1174 | color: #ffe082 !important; } | ||
1175 | |||
1176 | .amber.lighten-2 { | ||
1177 | background-color: #ffd54f !important; } | ||
1178 | |||
1179 | .amber-text.text-lighten-2 { | ||
1180 | color: #ffd54f !important; } | ||
1181 | |||
1182 | .amber.lighten-1 { | ||
1183 | background-color: #ffca28 !important; } | ||
1184 | |||
1185 | .amber-text.text-lighten-1 { | ||
1186 | color: #ffca28 !important; } | ||
1187 | |||
1188 | .amber { | ||
1189 | background-color: #ffc107 !important; } | ||
1190 | |||
1191 | .amber-text { | ||
1192 | color: #ffc107 !important; } | ||
1193 | |||
1194 | .amber.darken-1 { | ||
1195 | background-color: #ffb300 !important; } | ||
1196 | |||
1197 | .amber-text.text-darken-1 { | ||
1198 | color: #ffb300 !important; } | ||
1199 | |||
1200 | .amber.darken-2 { | ||
1201 | background-color: #ffa000 !important; } | ||
1202 | |||
1203 | .amber-text.text-darken-2 { | ||
1204 | color: #ffa000 !important; } | ||
1205 | |||
1206 | .amber.darken-3 { | ||
1207 | background-color: #ff8f00 !important; } | ||
1208 | |||
1209 | .amber-text.text-darken-3 { | ||
1210 | color: #ff8f00 !important; } | ||
1211 | |||
1212 | .amber.darken-4 { | ||
1213 | background-color: #ff6f00 !important; } | ||
1214 | |||
1215 | .amber-text.text-darken-4 { | ||
1216 | color: #ff6f00 !important; } | ||
1217 | |||
1218 | .amber.accent-1 { | ||
1219 | background-color: #ffe57f !important; } | ||
1220 | |||
1221 | .amber-text.text-accent-1 { | ||
1222 | color: #ffe57f !important; } | ||
1223 | |||
1224 | .amber.accent-2 { | ||
1225 | background-color: #ffd740 !important; } | ||
1226 | |||
1227 | .amber-text.text-accent-2 { | ||
1228 | color: #ffd740 !important; } | ||
1229 | |||
1230 | .amber.accent-3 { | ||
1231 | background-color: #ffc400 !important; } | ||
1232 | |||
1233 | .amber-text.text-accent-3 { | ||
1234 | color: #ffc400 !important; } | ||
1235 | |||
1236 | .amber.accent-4 { | ||
1237 | background-color: #ffab00 !important; } | ||
1238 | |||
1239 | .amber-text.text-accent-4 { | ||
1240 | color: #ffab00 !important; } | ||
1241 | |||
1242 | .orange.lighten-5 { | ||
1243 | background-color: #fff3e0 !important; } | ||
1244 | |||
1245 | .orange-text.text-lighten-5 { | ||
1246 | color: #fff3e0 !important; } | ||
1247 | |||
1248 | .orange.lighten-4 { | ||
1249 | background-color: #ffe0b2 !important; } | ||
1250 | |||
1251 | .orange-text.text-lighten-4 { | ||
1252 | color: #ffe0b2 !important; } | ||
1253 | |||
1254 | .orange.lighten-3 { | ||
1255 | background-color: #ffcc80 !important; } | ||
1256 | |||
1257 | .orange-text.text-lighten-3 { | ||
1258 | color: #ffcc80 !important; } | ||
1259 | |||
1260 | .orange.lighten-2 { | ||
1261 | background-color: #ffb74d !important; } | ||
1262 | |||
1263 | .orange-text.text-lighten-2 { | ||
1264 | color: #ffb74d !important; } | ||
1265 | |||
1266 | .orange.lighten-1 { | ||
1267 | background-color: #ffa726 !important; } | ||
1268 | |||
1269 | .orange-text.text-lighten-1 { | ||
1270 | color: #ffa726 !important; } | ||
1271 | |||
1272 | .orange { | ||
1273 | background-color: #ff9800 !important; } | ||
1274 | |||
1275 | .orange-text { | ||
1276 | color: #ff9800 !important; } | ||
1277 | |||
1278 | .orange.darken-1 { | ||
1279 | background-color: #fb8c00 !important; } | ||
1280 | |||
1281 | .orange-text.text-darken-1 { | ||
1282 | color: #fb8c00 !important; } | ||
1283 | |||
1284 | .orange.darken-2 { | ||
1285 | background-color: #f57c00 !important; } | ||
1286 | |||
1287 | .orange-text.text-darken-2 { | ||
1288 | color: #f57c00 !important; } | ||
1289 | |||
1290 | .orange.darken-3 { | ||
1291 | background-color: #ef6c00 !important; } | ||
1292 | |||
1293 | .orange-text.text-darken-3 { | ||
1294 | color: #ef6c00 !important; } | ||
1295 | |||
1296 | .orange.darken-4 { | ||
1297 | background-color: #e65100 !important; } | ||
1298 | |||
1299 | .orange-text.text-darken-4 { | ||
1300 | color: #e65100 !important; } | ||
1301 | |||
1302 | .orange.accent-1 { | ||
1303 | background-color: #ffd180 !important; } | ||
1304 | |||
1305 | .orange-text.text-accent-1 { | ||
1306 | color: #ffd180 !important; } | ||
1307 | |||
1308 | .orange.accent-2 { | ||
1309 | background-color: #ffab40 !important; } | ||
1310 | |||
1311 | .orange-text.text-accent-2 { | ||
1312 | color: #ffab40 !important; } | ||
1313 | |||
1314 | .orange.accent-3 { | ||
1315 | background-color: #ff9100 !important; } | ||
1316 | |||
1317 | .orange-text.text-accent-3 { | ||
1318 | color: #ff9100 !important; } | ||
1319 | |||
1320 | .orange.accent-4 { | ||
1321 | background-color: #ff6d00 !important; } | ||
1322 | |||
1323 | .orange-text.text-accent-4 { | ||
1324 | color: #ff6d00 !important; } | ||
1325 | |||
1326 | .deep-orange.lighten-5 { | ||
1327 | background-color: #fbe9e7 !important; } | ||
1328 | |||
1329 | .deep-orange-text.text-lighten-5 { | ||
1330 | color: #fbe9e7 !important; } | ||
1331 | |||
1332 | .deep-orange.lighten-4 { | ||
1333 | background-color: #ffccbc !important; } | ||
1334 | |||
1335 | .deep-orange-text.text-lighten-4 { | ||
1336 | color: #ffccbc !important; } | ||
1337 | |||
1338 | .deep-orange.lighten-3 { | ||
1339 | background-color: #ffab91 !important; } | ||
1340 | |||
1341 | .deep-orange-text.text-lighten-3 { | ||
1342 | color: #ffab91 !important; } | ||
1343 | |||
1344 | .deep-orange.lighten-2 { | ||
1345 | background-color: #ff8a65 !important; } | ||
1346 | |||
1347 | .deep-orange-text.text-lighten-2 { | ||
1348 | color: #ff8a65 !important; } | ||
1349 | |||
1350 | .deep-orange.lighten-1 { | ||
1351 | background-color: #ff7043 !important; } | ||
1352 | |||
1353 | .deep-orange-text.text-lighten-1 { | ||
1354 | color: #ff7043 !important; } | ||
1355 | |||
1356 | .deep-orange { | ||
1357 | background-color: #ff5722 !important; } | ||
1358 | |||
1359 | .deep-orange-text { | ||
1360 | color: #ff5722 !important; } | ||
1361 | |||
1362 | .deep-orange.darken-1 { | ||
1363 | background-color: #f4511e !important; } | ||
1364 | |||
1365 | .deep-orange-text.text-darken-1 { | ||
1366 | color: #f4511e !important; } | ||
1367 | |||
1368 | .deep-orange.darken-2 { | ||
1369 | background-color: #e64a19 !important; } | ||
1370 | |||
1371 | .deep-orange-text.text-darken-2 { | ||
1372 | color: #e64a19 !important; } | ||
1373 | |||
1374 | .deep-orange.darken-3 { | ||
1375 | background-color: #d84315 !important; } | ||
1376 | |||
1377 | .deep-orange-text.text-darken-3 { | ||
1378 | color: #d84315 !important; } | ||
1379 | |||
1380 | .deep-orange.darken-4 { | ||
1381 | background-color: #bf360c !important; } | ||
1382 | |||
1383 | .deep-orange-text.text-darken-4 { | ||
1384 | color: #bf360c !important; } | ||
1385 | |||
1386 | .deep-orange.accent-1 { | ||
1387 | background-color: #ff9e80 !important; } | ||
1388 | |||
1389 | .deep-orange-text.text-accent-1 { | ||
1390 | color: #ff9e80 !important; } | ||
1391 | |||
1392 | .deep-orange.accent-2 { | ||
1393 | background-color: #ff6e40 !important; } | ||
1394 | |||
1395 | .deep-orange-text.text-accent-2 { | ||
1396 | color: #ff6e40 !important; } | ||
1397 | |||
1398 | .deep-orange.accent-3 { | ||
1399 | background-color: #ff3d00 !important; } | ||
1400 | |||
1401 | .deep-orange-text.text-accent-3 { | ||
1402 | color: #ff3d00 !important; } | ||
1403 | |||
1404 | .deep-orange.accent-4 { | ||
1405 | background-color: #dd2c00 !important; } | ||
1406 | |||
1407 | .deep-orange-text.text-accent-4 { | ||
1408 | color: #dd2c00 !important; } | ||
1409 | |||
1410 | .brown.lighten-5 { | ||
1411 | background-color: #efebe9 !important; } | ||
1412 | |||
1413 | .brown-text.text-lighten-5 { | ||
1414 | color: #efebe9 !important; } | ||
1415 | |||
1416 | .brown.lighten-4 { | ||
1417 | background-color: #d7ccc8 !important; } | ||
1418 | |||
1419 | .brown-text.text-lighten-4 { | ||
1420 | color: #d7ccc8 !important; } | ||
1421 | |||
1422 | .brown.lighten-3 { | ||
1423 | background-color: #bcaaa4 !important; } | ||
1424 | |||
1425 | .brown-text.text-lighten-3 { | ||
1426 | color: #bcaaa4 !important; } | ||
1427 | |||
1428 | .brown.lighten-2 { | ||
1429 | background-color: #a1887f !important; } | ||
1430 | |||
1431 | .brown-text.text-lighten-2 { | ||
1432 | color: #a1887f !important; } | ||
1433 | |||
1434 | .brown.lighten-1 { | ||
1435 | background-color: #8d6e63 !important; } | ||
1436 | |||
1437 | .brown-text.text-lighten-1 { | ||
1438 | color: #8d6e63 !important; } | ||
1439 | |||
1440 | .brown { | ||
1441 | background-color: #795548 !important; } | ||
1442 | |||
1443 | .brown-text { | ||
1444 | color: #795548 !important; } | ||
1445 | |||
1446 | .brown.darken-1 { | ||
1447 | background-color: #6d4c41 !important; } | ||
1448 | |||
1449 | .brown-text.text-darken-1 { | ||
1450 | color: #6d4c41 !important; } | ||
1451 | |||
1452 | .brown.darken-2 { | ||
1453 | background-color: #5d4037 !important; } | ||
1454 | |||
1455 | .brown-text.text-darken-2 { | ||
1456 | color: #5d4037 !important; } | ||
1457 | |||
1458 | .brown.darken-3 { | ||
1459 | background-color: #4e342e !important; } | ||
1460 | |||
1461 | .brown-text.text-darken-3 { | ||
1462 | color: #4e342e !important; } | ||
1463 | |||
1464 | .brown.darken-4 { | ||
1465 | background-color: #3e2723 !important; } | ||
1466 | |||
1467 | .brown-text.text-darken-4 { | ||
1468 | color: #3e2723 !important; } | ||
1469 | |||
1470 | .blue-grey.lighten-5 { | ||
1471 | background-color: #eceff1 !important; } | ||
1472 | |||
1473 | .blue-grey-text.text-lighten-5 { | ||
1474 | color: #eceff1 !important; } | ||
1475 | |||
1476 | .blue-grey.lighten-4 { | ||
1477 | background-color: #cfd8dc !important; } | ||
1478 | |||
1479 | .blue-grey-text.text-lighten-4 { | ||
1480 | color: #cfd8dc !important; } | ||
1481 | |||
1482 | .blue-grey.lighten-3 { | ||
1483 | background-color: #b0bec5 !important; } | ||
1484 | |||
1485 | .blue-grey-text.text-lighten-3 { | ||
1486 | color: #b0bec5 !important; } | ||
1487 | |||
1488 | .blue-grey.lighten-2 { | ||
1489 | background-color: #90a4ae !important; } | ||
1490 | |||
1491 | .blue-grey-text.text-lighten-2 { | ||
1492 | color: #90a4ae !important; } | ||
1493 | |||
1494 | .blue-grey.lighten-1 { | ||
1495 | background-color: #78909c !important; } | ||
1496 | |||
1497 | .blue-grey-text.text-lighten-1 { | ||
1498 | color: #78909c !important; } | ||
1499 | |||
1500 | .blue-grey { | ||
1501 | background-color: #607d8b !important; } | ||
1502 | |||
1503 | .blue-grey-text { | ||
1504 | color: #607d8b !important; } | ||
1505 | |||
1506 | .blue-grey.darken-1 { | ||
1507 | background-color: #546e7a !important; } | ||
1508 | |||
1509 | .blue-grey-text.text-darken-1 { | ||
1510 | color: #546e7a !important; } | ||
1511 | |||
1512 | .blue-grey.darken-2 { | ||
1513 | background-color: #455a64 !important; } | ||
1514 | |||
1515 | .blue-grey-text.text-darken-2 { | ||
1516 | color: #455a64 !important; } | ||
1517 | |||
1518 | .blue-grey.darken-3 { | ||
1519 | background-color: #37474f !important; } | ||
1520 | |||
1521 | .blue-grey-text.text-darken-3 { | ||
1522 | color: #37474f !important; } | ||
1523 | |||
1524 | .blue-grey.darken-4 { | ||
1525 | background-color: #263238 !important; } | ||
1526 | |||
1527 | .blue-grey-text.text-darken-4 { | ||
1528 | color: #263238 !important; } | ||
1529 | |||
1530 | .grey.lighten-5 { | ||
1531 | background-color: #fafafa !important; } | ||
1532 | |||
1533 | .grey-text.text-lighten-5 { | ||
1534 | color: #fafafa !important; } | ||
1535 | |||
1536 | .grey.lighten-4 { | ||
1537 | background-color: #f5f5f5 !important; } | ||
1538 | |||
1539 | .grey-text.text-lighten-4 { | ||
1540 | color: #f5f5f5 !important; } | ||
1541 | |||
1542 | .grey.lighten-3 { | ||
1543 | background-color: #eeeeee !important; } | ||
1544 | |||
1545 | .grey-text.text-lighten-3 { | ||
1546 | color: #eeeeee !important; } | ||
1547 | |||
1548 | .grey.lighten-2 { | ||
1549 | background-color: #e0e0e0 !important; } | ||
1550 | |||
1551 | .grey-text.text-lighten-2 { | ||
1552 | color: #e0e0e0 !important; } | ||
1553 | |||
1554 | .grey.lighten-1 { | ||
1555 | background-color: #bdbdbd !important; } | ||
1556 | |||
1557 | .grey-text.text-lighten-1 { | ||
1558 | color: #bdbdbd !important; } | ||
1559 | |||
1560 | .grey { | ||
1561 | background-color: #9e9e9e !important; } | ||
1562 | |||
1563 | .grey-text { | ||
1564 | color: #9e9e9e !important; } | ||
1565 | |||
1566 | .grey.darken-1 { | ||
1567 | background-color: #757575 !important; } | ||
1568 | |||
1569 | .grey-text.text-darken-1 { | ||
1570 | color: #757575 !important; } | ||
1571 | |||
1572 | .grey.darken-2 { | ||
1573 | background-color: #616161 !important; } | ||
1574 | |||
1575 | .grey-text.text-darken-2 { | ||
1576 | color: #616161 !important; } | ||
1577 | |||
1578 | .grey.darken-3 { | ||
1579 | background-color: #424242 !important; } | ||
1580 | |||
1581 | .grey-text.text-darken-3 { | ||
1582 | color: #424242 !important; } | ||
1583 | |||
1584 | .grey.darken-4 { | ||
1585 | background-color: #212121 !important; } | ||
1586 | |||
1587 | .grey-text.text-darken-4 { | ||
1588 | color: #212121 !important; } | ||
1589 | |||
1590 | .shades.black { | ||
1591 | background-color: #000000 !important; } | ||
1592 | |||
1593 | .shades-text.text-black { | ||
1594 | color: #000000 !important; } | ||
1595 | |||
1596 | .shades.white { | ||
1597 | background-color: #FFFFFF !important; } | ||
1598 | |||
1599 | .shades-text.text-white { | ||
1600 | color: #FFFFFF !important; } | ||
1601 | |||
1602 | .shades.transparent { | ||
1603 | background-color: transparent !important; } | ||
1604 | |||
1605 | .shades-text.text-transparent { | ||
1606 | color: transparent !important; } | ||
1607 | |||
1608 | .black { | ||
1609 | background-color: #000000 !important; } | ||
1610 | |||
1611 | .black-text { | ||
1612 | color: #000000 !important; } | ||
1613 | |||
1614 | .white { | ||
1615 | background-color: #FFFFFF !important; } | ||
1616 | |||
1617 | .white-text { | ||
1618 | color: #FFFFFF !important; } | ||
1619 | |||
1620 | .transparent { | ||
1621 | background-color: transparent !important; } | ||
1622 | |||
1623 | .transparent-text { | ||
1624 | color: transparent !important; } | ||
1625 | |||
1626 | /*** Colors ***/ | ||
1627 | /*** Badges ***/ | ||
1628 | /*** Buttons ***/ | ||
1629 | /*** Cards ***/ | ||
1630 | /*** Collapsible ***/ | ||
1631 | /*** Dropdown ***/ | ||
1632 | /*** Fonts ***/ | ||
1633 | /*** Forms ***/ | ||
1634 | /*** Global ***/ | ||
1635 | /*** Navbar ***/ | ||
1636 | /*** SideNav ***/ | ||
1637 | /*** Photo Slider ***/ | ||
1638 | /*** Spinners | Loaders ***/ | ||
1639 | /*** Tabs ***/ | ||
1640 | /*** Tables ***/ | ||
1641 | /*** Toasts ***/ | ||
1642 | /*** Typography ***/ | ||
1643 | /*** Collections ***/ | ||
1644 | /* Progress Bar */ | ||
1645 | /*! normalize.css v3.0.2 | MIT License | git.io/normalize */ | ||
1646 | /** | ||
1647 | * 1. Set default font family to sans-serif. | ||
1648 | * 2. Prevent iOS text size adjust after orientation change, without disabling | ||
1649 | * user zoom. | ||
1650 | */ | ||
1651 | html { | ||
1652 | font-family: sans-serif; | ||
1653 | /* 1 */ | ||
1654 | -ms-text-size-adjust: 100%; | ||
1655 | /* 2 */ | ||
1656 | -webkit-text-size-adjust: 100%; | ||
1657 | /* 2 */ } | ||
1658 | |||
1659 | /** | ||
1660 | * Remove default margin. | ||
1661 | */ | ||
1662 | body { | ||
1663 | margin: 0; } | ||
1664 | |||
1665 | /* HTML5 display definitions | ||
1666 | ========================================================================== */ | ||
1667 | /** | ||
1668 | * Correct `block` display not defined for any HTML5 element in IE 8/9. | ||
1669 | * Correct `block` display not defined for `details` or `summary` in IE 10/11 | ||
1670 | * and Firefox. | ||
1671 | * Correct `block` display not defined for `main` in IE 11. | ||
1672 | */ | ||
1673 | article, aside, details, figcaption, figure, footer, header, hgroup, main, menu, nav, section, summary { | ||
1674 | display: block; } | ||
1675 | |||
1676 | /** | ||
1677 | * 1. Correct `inline-block` display not defined in IE 8/9. | ||
1678 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera. | ||
1679 | */ | ||
1680 | audio, canvas, progress, video { | ||
1681 | display: inline-block; | ||
1682 | /* 1 */ | ||
1683 | vertical-align: baseline; | ||
1684 | /* 2 */ } | ||
1685 | |||
1686 | /** | ||
1687 | * Prevent modern browsers from displaying `audio` without controls. | ||
1688 | * Remove excess height in iOS 5 devices. | ||
1689 | */ | ||
1690 | audio:not([controls]) { | ||
1691 | display: none; | ||
1692 | height: 0; } | ||
1693 | |||
1694 | /** | ||
1695 | * Address `[hidden]` styling not present in IE 8/9/10. | ||
1696 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. | ||
1697 | */ | ||
1698 | [hidden], template { | ||
1699 | display: none; } | ||
1700 | |||
1701 | /* Links | ||
1702 | ========================================================================== */ | ||
1703 | /** | ||
1704 | * Remove the gray background color from active links in IE 10. | ||
1705 | */ | ||
1706 | a { | ||
1707 | background-color: transparent; } | ||
1708 | |||
1709 | /** | ||
1710 | * Improve readability when focused and also mouse hovered in all browsers. | ||
1711 | */ | ||
1712 | a:active, a:hover { | ||
1713 | outline: 0; } | ||
1714 | |||
1715 | /* Text-level semantics | ||
1716 | ========================================================================== */ | ||
1717 | /** | ||
1718 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome. | ||
1719 | */ | ||
1720 | abbr[title] { | ||
1721 | border-bottom: 1px dotted; } | ||
1722 | |||
1723 | /** | ||
1724 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome. | ||
1725 | */ | ||
1726 | b, strong { | ||
1727 | font-weight: bold; } | ||
1728 | |||
1729 | /** | ||
1730 | * Address styling not present in Safari and Chrome. | ||
1731 | */ | ||
1732 | dfn { | ||
1733 | font-style: italic; } | ||
1734 | |||
1735 | /** | ||
1736 | * Address variable `h1` font-size and margin within `section` and `article` | ||
1737 | * contexts in Firefox 4+, Safari, and Chrome. | ||
1738 | */ | ||
1739 | h1 { | ||
1740 | font-size: 2em; | ||
1741 | margin: 0.67em 0; } | ||
1742 | |||
1743 | /** | ||
1744 | * Address styling not present in IE 8/9. | ||
1745 | */ | ||
1746 | mark { | ||
1747 | background: #ff0; | ||
1748 | color: #000; } | ||
1749 | |||
1750 | /** | ||
1751 | * Address inconsistent and variable font size in all browsers. | ||
1752 | */ | ||
1753 | small { | ||
1754 | font-size: 80%; } | ||
1755 | |||
1756 | /** | ||
1757 | * Prevent `sub` and `sup` affecting `line-height` in all browsers. | ||
1758 | */ | ||
1759 | sub, sup { | ||
1760 | font-size: 75%; | ||
1761 | line-height: 0; | ||
1762 | position: relative; | ||
1763 | vertical-align: baseline; } | ||
1764 | |||
1765 | sup { | ||
1766 | top: -0.5em; } | ||
1767 | |||
1768 | sub { | ||
1769 | bottom: -0.25em; } | ||
1770 | |||
1771 | /* Embedded content | ||
1772 | ========================================================================== */ | ||
1773 | /** | ||
1774 | * Remove border when inside `a` element in IE 8/9/10. | ||
1775 | */ | ||
1776 | img { | ||
1777 | border: 0; } | ||
1778 | |||
1779 | /** | ||
1780 | * Correct overflow not hidden in IE 9/10/11. | ||
1781 | */ | ||
1782 | svg:not(:root) { | ||
1783 | overflow: hidden; } | ||
1784 | |||
1785 | /* Grouping content | ||
1786 | ========================================================================== */ | ||
1787 | /** | ||
1788 | * Address margin not present in IE 8/9 and Safari. | ||
1789 | */ | ||
1790 | figure { | ||
1791 | margin: 1em 40px; } | ||
1792 | |||
1793 | /** | ||
1794 | * Address differences between Firefox and other browsers. | ||
1795 | */ | ||
1796 | hr { | ||
1797 | -moz-box-sizing: content-box; | ||
1798 | box-sizing: content-box; | ||
1799 | height: 0; } | ||
1800 | |||
1801 | /** | ||
1802 | * Contain overflow in all browsers. | ||
1803 | */ | ||
1804 | pre { | ||
1805 | overflow: auto; } | ||
1806 | |||
1807 | /** | ||
1808 | * Address odd `em`-unit font size rendering in all browsers. | ||
1809 | */ | ||
1810 | code, kbd, pre, samp { | ||
1811 | font-family: monospace, monospace; | ||
1812 | font-size: 1em; } | ||
1813 | |||
1814 | /* Forms | ||
1815 | ========================================================================== */ | ||
1816 | /** | ||
1817 | * Known limitation: by default, Chrome and Safari on OS X allow very limited | ||
1818 | * styling of `select`, unless a `border` property is set. | ||
1819 | */ | ||
1820 | /** | ||
1821 | * 1. Correct color not being inherited. | ||
1822 | * Known issue: affects color of disabled elements. | ||
1823 | * 2. Correct font properties not being inherited. | ||
1824 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome. | ||
1825 | */ | ||
1826 | button, input, optgroup, select, textarea { | ||
1827 | color: inherit; | ||
1828 | /* 1 */ | ||
1829 | font: inherit; | ||
1830 | /* 2 */ | ||
1831 | margin: 0; | ||
1832 | /* 3 */ } | ||
1833 | |||
1834 | /** | ||
1835 | * Address `overflow` set to `hidden` in IE 8/9/10/11. | ||
1836 | */ | ||
1837 | button { | ||
1838 | overflow: visible; } | ||
1839 | |||
1840 | /** | ||
1841 | * Address inconsistent `text-transform` inheritance for `button` and `select`. | ||
1842 | * All other form control elements do not inherit `text-transform` values. | ||
1843 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera. | ||
1844 | * Correct `select` style inheritance in Firefox. | ||
1845 | */ | ||
1846 | button, select { | ||
1847 | text-transform: none; } | ||
1848 | |||
1849 | /** | ||
1850 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio` | ||
1851 | * and `video` controls. | ||
1852 | * 2. Correct inability to style clickable `input` types in iOS. | ||
1853 | * 3. Improve usability and consistency of cursor style between image-type | ||
1854 | * `input` and others. | ||
1855 | */ | ||
1856 | /* 1 */ | ||
1857 | html input[type="button"], button, input[type="reset"], input[type="submit"] { | ||
1858 | -webkit-appearance: button; | ||
1859 | /* 2 */ | ||
1860 | cursor: pointer; | ||
1861 | /* 3 */ } | ||
1862 | |||
1863 | /** | ||
1864 | * Re-set default cursor for disabled elements. | ||
1865 | */ | ||
1866 | button[disabled], html input[disabled] { | ||
1867 | cursor: default; } | ||
1868 | |||
1869 | /** | ||
1870 | * Remove inner padding and border in Firefox 4+. | ||
1871 | */ | ||
1872 | button::-moz-focus-inner, input::-moz-focus-inner { | ||
1873 | border: 0; | ||
1874 | padding: 0; } | ||
1875 | |||
1876 | /** | ||
1877 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in | ||
1878 | * the UA stylesheet. | ||
1879 | */ | ||
1880 | input { | ||
1881 | line-height: normal; } | ||
1882 | |||
1883 | /** | ||
1884 | * It's recommended that you don't attempt to style these elements. | ||
1885 | * Firefox's implementation doesn't respect box-sizing, padding, or width. | ||
1886 | * | ||
1887 | * 1. Address box sizing set to `content-box` in IE 8/9/10. | ||
1888 | * 2. Remove excess padding in IE 8/9/10. | ||
1889 | */ | ||
1890 | input[type="checkbox"], input[type="radio"] { | ||
1891 | box-sizing: border-box; | ||
1892 | /* 1 */ | ||
1893 | padding: 0; | ||
1894 | /* 2 */ } | ||
1895 | |||
1896 | /** | ||
1897 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain | ||
1898 | * `font-size` values of the `input`, it causes the cursor style of the | ||
1899 | * decrement button to change from `default` to `text`. | ||
1900 | */ | ||
1901 | input[type="number"]::-webkit-inner-spin-button, input[type="number"]::-webkit-outer-spin-button { | ||
1902 | height: auto; } | ||
1903 | |||
1904 | /** | ||
1905 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome. | ||
1906 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome | ||
1907 | * (include `-moz` to future-proof). | ||
1908 | */ | ||
1909 | input[type="search"] { | ||
1910 | -webkit-appearance: textfield; | ||
1911 | /* 1 */ | ||
1912 | -moz-box-sizing: content-box; | ||
1913 | -webkit-box-sizing: content-box; | ||
1914 | /* 2 */ | ||
1915 | box-sizing: content-box; } | ||
1916 | |||
1917 | /** | ||
1918 | * Remove inner padding and search cancel button in Safari and Chrome on OS X. | ||
1919 | * Safari (but not Chrome) clips the cancel button when the search input has | ||
1920 | * padding (and `textfield` appearance). | ||
1921 | */ | ||
1922 | input[type="search"]::-webkit-search-cancel-button, input[type="search"]::-webkit-search-decoration { | ||
1923 | -webkit-appearance: none; } | ||
1924 | |||
1925 | /** | ||
1926 | * Define consistent border, margin, and padding. | ||
1927 | */ | ||
1928 | fieldset { | ||
1929 | border: 1px solid #c0c0c0; | ||
1930 | margin: 0 2px; | ||
1931 | padding: 0.35em 0.625em 0.75em; } | ||
1932 | |||
1933 | /** | ||
1934 | * 1. Correct `color` not being inherited in IE 8/9/10/11. | ||
1935 | * 2. Remove padding so people aren't caught out if they zero out fieldsets. | ||
1936 | */ | ||
1937 | legend { | ||
1938 | border: 0; | ||
1939 | /* 1 */ | ||
1940 | padding: 0; | ||
1941 | /* 2 */ } | ||
1942 | |||
1943 | /** | ||
1944 | * Remove default vertical scrollbar in IE 8/9/10/11. | ||
1945 | */ | ||
1946 | textarea { | ||
1947 | overflow: auto; } | ||
1948 | |||
1949 | /** | ||
1950 | * Don't inherit the `font-weight` (applied by a rule above). | ||
1951 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X. | ||
1952 | */ | ||
1953 | optgroup { | ||
1954 | font-weight: bold; } | ||
1955 | |||
1956 | /* Tables | ||
1957 | ========================================================================== */ | ||
1958 | /** | ||
1959 | * Remove most spacing between table cells. | ||
1960 | */ | ||
1961 | table { | ||
1962 | border-collapse: collapse; | ||
1963 | border-spacing: 0; } | ||
1964 | |||
1965 | td, th { | ||
1966 | padding: 0; } | ||
1967 | |||
1968 | html { | ||
1969 | box-sizing: border-box; } | ||
1970 | |||
1971 | *, *:before, *:after { | ||
1972 | box-sizing: inherit; } | ||
1973 | |||
1974 | ul { | ||
1975 | list-style-type: none; } | ||
1976 | |||
1977 | a { | ||
1978 | color: #039be5; | ||
1979 | text-decoration: none; | ||
1980 | -webkit-tap-highlight-color: transparent; } | ||
1981 | |||
1982 | .valign-wrapper { | ||
1983 | display: -webkit-box; | ||
1984 | display: -moz-box; | ||
1985 | display: -ms-flexbox; | ||
1986 | display: -webkit-flex; | ||
1987 | display: flex; | ||
1988 | -webkit-flex-align: center; | ||
1989 | -ms-flex-align: center; | ||
1990 | -webkit-align-items: center; | ||
1991 | align-items: center; } | ||
1992 | .valign-wrapper .valign { | ||
1993 | display: block; } | ||
1994 | |||
1995 | ul { | ||
1996 | padding: 0; } | ||
1997 | ul li { | ||
1998 | list-style-type: none; } | ||
1999 | |||
2000 | .clearfix { | ||
2001 | clear: both; } | ||
2002 | |||
2003 | .z-depth-0 { | ||
2004 | box-shadow: none !important; } | ||
2005 | |||
2006 | .z-depth-1, nav, .card-panel, .card, .toast, .btn, .btn-large, .btn-floating, .dropdown-content, .collapsible, .side-nav { | ||
2007 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); } | ||
2008 | |||
2009 | .z-depth-1-half, .btn:hover, .btn-large:hover, .btn-floating:hover { | ||
2010 | box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); } | ||
2011 | |||
2012 | .z-depth-2 { | ||
2013 | box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } | ||
2014 | |||
2015 | .z-depth-3 { | ||
2016 | box-shadow: 0 12px 15px 0 rgba(0, 0, 0, 0.24), 0 17px 50px 0 rgba(0, 0, 0, 0.19); } | ||
2017 | |||
2018 | .z-depth-4, .modal { | ||
2019 | box-shadow: 0 16px 28px 0 rgba(0, 0, 0, 0.22), 0 25px 55px 0 rgba(0, 0, 0, 0.21); } | ||
2020 | |||
2021 | .z-depth-5 { | ||
2022 | box-shadow: 0 27px 24px 0 rgba(0, 0, 0, 0.2), 0 40px 77px 0 rgba(0, 0, 0, 0.22); } | ||
2023 | |||
2024 | .hoverable:hover { | ||
2025 | transition: box-shadow .25s; | ||
2026 | box-shadow: 0 8px 17px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19); } | ||
2027 | |||
2028 | .divider { | ||
2029 | height: 1px; | ||
2030 | overflow: hidden; | ||
2031 | background-color: #e0e0e0; } | ||
2032 | |||
2033 | blockquote { | ||
2034 | margin: 20px 0; | ||
2035 | padding-left: 1.5rem; | ||
2036 | border-left: 5px solid #ee6e73; } | ||
2037 | |||
2038 | i { | ||
2039 | line-height: inherit; } | ||
2040 | i.left { | ||
2041 | float: left; | ||
2042 | margin-right: 15px; } | ||
2043 | i.right { | ||
2044 | float: right; | ||
2045 | margin-left: 15px; } | ||
2046 | i.tiny { | ||
2047 | font-size: 1rem; } | ||
2048 | i.small { | ||
2049 | font-size: 2rem; } | ||
2050 | i.medium { | ||
2051 | font-size: 4rem; } | ||
2052 | i.large { | ||
2053 | font-size: 6rem; } | ||
2054 | |||
2055 | img.responsive-img, video.responsive-video { | ||
2056 | max-width: 100%; | ||
2057 | height: auto; } | ||
2058 | |||
2059 | .pagination li { | ||
2060 | display: inline-block; | ||
2061 | font-size: 1.2rem; | ||
2062 | padding: 0 10px; | ||
2063 | line-height: 30px; | ||
2064 | border-radius: 2px; | ||
2065 | text-align: center; } | ||
2066 | .pagination li a { | ||
2067 | color: #444; } | ||
2068 | .pagination li.active a { | ||
2069 | color: #fff; } | ||
2070 | .pagination li.active { | ||
2071 | background-color: #ee6e73; } | ||
2072 | .pagination li.disabled a { | ||
2073 | cursor: default; | ||
2074 | color: #999; } | ||
2075 | .pagination li i { | ||
2076 | font-size: 2rem; } | ||
2077 | .pagination li.pages ul li { | ||
2078 | display: inline-block; | ||
2079 | float: none; } | ||
2080 | |||
2081 | @media only screen and (max-width : 992px) { | ||
2082 | .pagination { | ||
2083 | width: 100%; } | ||
2084 | .pagination li.prev, .pagination li.next { | ||
2085 | width: 10%; } | ||
2086 | .pagination li.pages { | ||
2087 | width: 80%; | ||
2088 | overflow: hidden; | ||
2089 | white-space: nowrap; } } | ||
2090 | |||
2091 | .parallax-container { | ||
2092 | position: relative; | ||
2093 | overflow: hidden; | ||
2094 | height: 500px; } | ||
2095 | |||
2096 | .parallax { | ||
2097 | position: absolute; | ||
2098 | top: 0; | ||
2099 | left: 0; | ||
2100 | right: 0; | ||
2101 | bottom: 0; | ||
2102 | z-index: -1; } | ||
2103 | .parallax img { | ||
2104 | display: none; | ||
2105 | position: absolute; | ||
2106 | left: 50%; | ||
2107 | bottom: 0; | ||
2108 | min-width: 100%; | ||
2109 | min-height: 100%; | ||
2110 | -webkit-transform: translate3d(0, 0, 0); | ||
2111 | transform: translate3d(0, 0, 0); | ||
2112 | transform: translateX(-50%); } | ||
2113 | |||
2114 | .pin-top, .pin-bottom { | ||
2115 | position: relative; } | ||
2116 | |||
2117 | .pinned { | ||
2118 | position: fixed !important; } | ||
2119 | |||
2120 | /********************* | ||
2121 | Transition Classes | ||
2122 | **********************/ | ||
2123 | ul.staggered-list li { | ||
2124 | opacity: 0; } | ||
2125 | |||
2126 | .fade-in { | ||
2127 | opacity: 0; | ||
2128 | transform-origin: 0 50%; } | ||
2129 | |||
2130 | /********************* | ||
2131 | Media Query Classes | ||
2132 | **********************/ | ||
2133 | @media only screen and (max-width : 600px) { | ||
2134 | .hide-on-small-only, .hide-on-small-and-down { | ||
2135 | display: none !important; } } | ||
2136 | |||
2137 | @media only screen and (max-width : 992px) { | ||
2138 | .hide-on-med-and-down { | ||
2139 | display: none !important; } } | ||
2140 | |||
2141 | @media only screen and (min-width : 601px) { | ||
2142 | .hide-on-med-and-up { | ||
2143 | display: none !important; } } | ||
2144 | |||
2145 | @media only screen and (min-width: 600px) and (max-width: 992px) { | ||
2146 | .hide-on-med-only { | ||
2147 | display: none !important; } } | ||
2148 | |||
2149 | @media only screen and (min-width : 993px) { | ||
2150 | .hide-on-large-only { | ||
2151 | display: none !important; } } | ||
2152 | |||
2153 | @media only screen and (min-width : 993px) { | ||
2154 | .show-on-large { | ||
2155 | display: initial !important; } } | ||
2156 | |||
2157 | @media only screen and (min-width: 600px) and (max-width: 992px) { | ||
2158 | .show-on-medium { | ||
2159 | display: initial !important; } } | ||
2160 | |||
2161 | @media only screen and (max-width : 600px) { | ||
2162 | .show-on-small { | ||
2163 | display: initial !important; } } | ||
2164 | |||
2165 | @media only screen and (min-width : 601px) { | ||
2166 | .show-on-medium-and-up { | ||
2167 | display: initial !important; } } | ||
2168 | |||
2169 | @media only screen and (max-width : 992px) { | ||
2170 | .show-on-medium-and-down { | ||
2171 | display: initial !important; } } | ||
2172 | |||
2173 | @media only screen and (max-width : 600px) { | ||
2174 | .center-on-small-only { | ||
2175 | text-align: center; } } | ||
2176 | |||
2177 | footer.page-footer { | ||
2178 | margin-top: 20px; | ||
2179 | padding-top: 20px; | ||
2180 | background-color: #ee6e73; } | ||
2181 | footer.page-footer .footer-copyright { | ||
2182 | overflow: hidden; | ||
2183 | height: 50px; | ||
2184 | line-height: 50px; | ||
2185 | color: rgba(255, 255, 255, 0.8); | ||
2186 | background-color: rgba(51, 51, 51, 0.08); } | ||
2187 | |||
2188 | table, th, td { | ||
2189 | border: none; } | ||
2190 | |||
2191 | table { | ||
2192 | width: 100%; | ||
2193 | display: table; } | ||
2194 | table.bordered > thead > tr, table.bordered > tbody > tr { | ||
2195 | border-bottom: 1px solid #d0d0d0; } | ||
2196 | table.striped > tbody > tr:nth-child(odd) { | ||
2197 | background-color: #f2f2f2; } | ||
2198 | table.striped > tbody > tr > td { | ||
2199 | border-radius: 0px; } | ||
2200 | table.highlight > tbody > tr { | ||
2201 | -webkit-transition: background-color .25s ease; | ||
2202 | -moz-transition: background-color .25s ease; | ||
2203 | -o-transition: background-color .25s ease; | ||
2204 | -ms-transition: background-color .25s ease; | ||
2205 | transition: background-color .25s ease; } | ||
2206 | table.highlight > tbody > tr:hover { | ||
2207 | background-color: #f2f2f2; } | ||
2208 | table.centered thead tr th, table.centered tbody tr td { | ||
2209 | text-align: center; } | ||
2210 | |||
2211 | thead { | ||
2212 | border-bottom: 1px solid #d0d0d0; } | ||
2213 | |||
2214 | td, th { | ||
2215 | padding: 15px 5px; | ||
2216 | display: table-cell; | ||
2217 | text-align: left; | ||
2218 | vertical-align: middle; | ||
2219 | border-radius: 2px; } | ||
2220 | |||
2221 | @media only screen and (max-width : 992px) { | ||
2222 | table.responsive-table { | ||
2223 | width: 100%; | ||
2224 | border-collapse: collapse; | ||
2225 | border-spacing: 0; | ||
2226 | display: block; | ||
2227 | position: relative; | ||
2228 | /* sort out borders */ } | ||
2229 | table.responsive-table th, table.responsive-table td { | ||
2230 | margin: 0; | ||
2231 | vertical-align: top; } | ||
2232 | table.responsive-table th { | ||
2233 | text-align: left; } | ||
2234 | table.responsive-table thead { | ||
2235 | display: block; | ||
2236 | float: left; } | ||
2237 | table.responsive-table thead tr { | ||
2238 | display: block; | ||
2239 | padding: 0 10px 0 0; } | ||
2240 | table.responsive-table thead tr th::before { | ||
2241 | content: "\00a0"; } | ||
2242 | table.responsive-table tbody { | ||
2243 | display: block; | ||
2244 | width: auto; | ||
2245 | position: relative; | ||
2246 | overflow-x: auto; | ||
2247 | white-space: nowrap; } | ||
2248 | table.responsive-table tbody tr { | ||
2249 | display: inline-block; | ||
2250 | vertical-align: top; } | ||
2251 | table.responsive-table th { | ||
2252 | display: block; | ||
2253 | text-align: right; } | ||
2254 | table.responsive-table td { | ||
2255 | display: block; | ||
2256 | min-height: 1.25em; | ||
2257 | text-align: left; } | ||
2258 | table.responsive-table tr { | ||
2259 | padding: 0 10px; } | ||
2260 | table.responsive-table thead { | ||
2261 | border: 0; | ||
2262 | border-right: 1px solid #d0d0d0; } | ||
2263 | table.responsive-table.bordered th { | ||
2264 | border-bottom: 0; | ||
2265 | border-left: 0; } | ||
2266 | table.responsive-table.bordered td { | ||
2267 | border-left: 0; | ||
2268 | border-right: 0; | ||
2269 | border-bottom: 0; } | ||
2270 | table.responsive-table.bordered tr { | ||
2271 | border: 0; } | ||
2272 | table.responsive-table.bordered tbody tr { | ||
2273 | border-right: 1px solid #d0d0d0; } } | ||
2274 | |||
2275 | .collection { | ||
2276 | margin: 0.5rem 0 1rem 0; | ||
2277 | border: 1px solid #e0e0e0; | ||
2278 | border-radius: 2px; | ||
2279 | overflow: hidden; | ||
2280 | position: relative; } | ||
2281 | .collection .collection-item { | ||
2282 | background-color: #fff; | ||
2283 | line-height: 1.5rem; | ||
2284 | padding: 10px 20px; | ||
2285 | margin: 0; | ||
2286 | border-bottom: 1px solid #e0e0e0; } | ||
2287 | .collection .collection-item.avatar { | ||
2288 | min-height: 84px; | ||
2289 | padding-left: 72px; | ||
2290 | position: relative; } | ||
2291 | .collection .collection-item.avatar .circle { | ||
2292 | position: absolute; | ||
2293 | width: 42px; | ||
2294 | height: 42px; | ||
2295 | overflow: hidden; | ||
2296 | left: 15px; | ||
2297 | display: inline-block; | ||
2298 | vertical-align: middle; } | ||
2299 | .collection .collection-item.avatar i.circle { | ||
2300 | font-size: 18px; | ||
2301 | line-height: 42px; | ||
2302 | color: #fff; | ||
2303 | background-color: #999; | ||
2304 | text-align: center; } | ||
2305 | .collection .collection-item.avatar .title { | ||
2306 | font-size: 16px; } | ||
2307 | .collection .collection-item.avatar p { | ||
2308 | margin: 0; } | ||
2309 | .collection .collection-item.avatar .secondary-content { | ||
2310 | position: absolute; | ||
2311 | top: 16px; | ||
2312 | right: 16px; } | ||
2313 | .collection .collection-item:last-child { | ||
2314 | border-bottom: none; } | ||
2315 | .collection .collection-item.active { | ||
2316 | background-color: #26a69a; | ||
2317 | color: #eafaf9; } | ||
2318 | .collection .collection-item.active .secondary-content { | ||
2319 | color: #fff; } | ||
2320 | .collection a.collection-item { | ||
2321 | display: block; | ||
2322 | -webkit-transition: 0.25s; | ||
2323 | -moz-transition: 0.25s; | ||
2324 | -o-transition: 0.25s; | ||
2325 | -ms-transition: 0.25s; | ||
2326 | transition: 0.25s; | ||
2327 | color: #26a69a; } | ||
2328 | .collection a.collection-item:not(.active):hover { | ||
2329 | background-color: #ddd; } | ||
2330 | .collection.with-header .collection-header { | ||
2331 | background-color: #fff; | ||
2332 | border-bottom: 1px solid #e0e0e0; | ||
2333 | padding: 10px 20px; } | ||
2334 | .collection.with-header .collection-item { | ||
2335 | padding-left: 30px; } | ||
2336 | .collection.with-header .collection-item.avatar { | ||
2337 | padding-left: 72px; } | ||
2338 | |||
2339 | .secondary-content { | ||
2340 | float: right; | ||
2341 | color: #26a69a; } | ||
2342 | |||
2343 | .collapsible .collection { | ||
2344 | margin: 0; | ||
2345 | border: none; } | ||
2346 | |||
2347 | span.badge { | ||
2348 | min-width: 3rem; | ||
2349 | padding: 0 6px; | ||
2350 | text-align: center; | ||
2351 | font-size: 1rem; | ||
2352 | line-height: inherit; | ||
2353 | color: #757575; | ||
2354 | position: absolute; | ||
2355 | right: 15px; | ||
2356 | -webkit-box-sizing: border-box; | ||
2357 | -moz-box-sizing: border-box; | ||
2358 | box-sizing: border-box; } | ||
2359 | span.badge.new { | ||
2360 | font-weight: 300; | ||
2361 | font-size: 0.8rem; | ||
2362 | color: #fff; | ||
2363 | background-color: #26a69a; | ||
2364 | border-radius: 2px; } | ||
2365 | span.badge.new:after { | ||
2366 | content: " new"; } | ||
2367 | |||
2368 | nav ul a span.badge { | ||
2369 | position: static; | ||
2370 | margin-left: 4px; | ||
2371 | line-height: 0; } | ||
2372 | |||
2373 | .video-container { | ||
2374 | position: relative; | ||
2375 | padding-bottom: 56.25%; | ||
2376 | padding-top: 30px; | ||
2377 | height: 0; | ||
2378 | overflow: hidden; } | ||
2379 | .video-container.no-controls { | ||
2380 | padding-top: 0; } | ||
2381 | .video-container iframe, .video-container object, .video-container embed { | ||
2382 | position: absolute; | ||
2383 | top: 0; | ||
2384 | left: 0; | ||
2385 | width: 100%; | ||
2386 | height: 100%; } | ||
2387 | |||
2388 | .progress { | ||
2389 | position: relative; | ||
2390 | height: 4px; | ||
2391 | display: block; | ||
2392 | width: 100%; | ||
2393 | background-color: #acece6; | ||
2394 | border-radius: 2px; | ||
2395 | margin: 0.5rem 0 1rem 0; | ||
2396 | overflow: hidden; } | ||
2397 | .progress .determinate { | ||
2398 | position: absolute; | ||
2399 | background-color: inherit; | ||
2400 | top: 0; | ||
2401 | left: 0; | ||
2402 | bottom: 0; | ||
2403 | background-color: #26a69a; | ||
2404 | -webkit-transition: width .3s linear; | ||
2405 | -moz-transition: width .3s linear; | ||
2406 | -o-transition: width .3s linear; | ||
2407 | -ms-transition: width .3s linear; | ||
2408 | transition: width .3s linear; } | ||
2409 | .progress .indeterminate { | ||
2410 | background-color: #26a69a; } | ||
2411 | .progress .indeterminate:before { | ||
2412 | content: ''; | ||
2413 | position: absolute; | ||
2414 | background-color: inherit; | ||
2415 | top: 0; | ||
2416 | left: 0; | ||
2417 | bottom: 0; | ||
2418 | will-change: left, right; | ||
2419 | -webkit-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; | ||
2420 | -moz-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; | ||
2421 | -ms-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; | ||
2422 | -o-animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; | ||
2423 | animation: indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite; } | ||
2424 | .progress .indeterminate:after { | ||
2425 | content: ''; | ||
2426 | position: absolute; | ||
2427 | background-color: inherit; | ||
2428 | top: 0; | ||
2429 | left: 0; | ||
2430 | bottom: 0; | ||
2431 | will-change: left, right; | ||
2432 | -webkit-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; | ||
2433 | -moz-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; | ||
2434 | -ms-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; | ||
2435 | -o-animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; | ||
2436 | animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite; | ||
2437 | -webkit-animation-delay: 1.15s; | ||
2438 | -moz-animation-delay: 1.15s; | ||
2439 | -ms-animation-delay: 1.15s; | ||
2440 | -o-animation-delay: 1.15s; | ||
2441 | animation-delay: 1.15s; } | ||
2442 | |||
2443 | @-webkit-keyframes indeterminate { | ||
2444 | 0% { | ||
2445 | left: -35%; | ||
2446 | right: 100%; } | ||
2447 | |||
2448 | 60% { | ||
2449 | left: 100%; | ||
2450 | right: -90%; } | ||
2451 | |||
2452 | 100% { | ||
2453 | left: 100%; | ||
2454 | right: -90%; } } | ||
2455 | |||
2456 | @-moz-keyframes indeterminate { | ||
2457 | 0% { | ||
2458 | left: -35%; | ||
2459 | right: 100%; } | ||
2460 | |||
2461 | 60% { | ||
2462 | left: 100%; | ||
2463 | right: -90%; } | ||
2464 | |||
2465 | 100% { | ||
2466 | left: 100%; | ||
2467 | right: -90%; } } | ||
2468 | |||
2469 | @keyframes indeterminate { | ||
2470 | 0% { | ||
2471 | left: -35%; | ||
2472 | right: 100%; } | ||
2473 | |||
2474 | 60% { | ||
2475 | left: 100%; | ||
2476 | right: -90%; } | ||
2477 | |||
2478 | 100% { | ||
2479 | left: 100%; | ||
2480 | right: -90%; } } | ||
2481 | |||
2482 | @-webkit-keyframes indeterminate-short { | ||
2483 | 0% { | ||
2484 | left: -200%; | ||
2485 | right: 100%; } | ||
2486 | |||
2487 | 60% { | ||
2488 | left: 107%; | ||
2489 | right: -8%; } | ||
2490 | |||
2491 | 100% { | ||
2492 | left: 107%; | ||
2493 | right: -8%; } } | ||
2494 | |||
2495 | @-moz-keyframes indeterminate-short { | ||
2496 | 0% { | ||
2497 | left: -200%; | ||
2498 | right: 100%; } | ||
2499 | |||
2500 | 60% { | ||
2501 | left: 107%; | ||
2502 | right: -8%; } | ||
2503 | |||
2504 | 100% { | ||
2505 | left: 107%; | ||
2506 | right: -8%; } } | ||
2507 | |||
2508 | @keyframes indeterminate-short { | ||
2509 | 0% { | ||
2510 | left: -200%; | ||
2511 | right: 100%; } | ||
2512 | |||
2513 | 60% { | ||
2514 | left: 107%; | ||
2515 | right: -8%; } | ||
2516 | |||
2517 | 100% { | ||
2518 | left: 107%; | ||
2519 | right: -8%; } } | ||
2520 | |||
2521 | /******************* | ||
2522 | Utility Classes | ||
2523 | *******************/ | ||
2524 | .hide { | ||
2525 | display: none !important; } | ||
2526 | |||
2527 | .left-align { | ||
2528 | text-align: left; } | ||
2529 | |||
2530 | .right-align { | ||
2531 | text-align: right; } | ||
2532 | |||
2533 | .center, .center-align { | ||
2534 | text-align: center; } | ||
2535 | |||
2536 | .left { | ||
2537 | float: left !important; } | ||
2538 | |||
2539 | .right { | ||
2540 | float: right !important; } | ||
2541 | |||
2542 | .no-select, input[type=range], input[type=range] + .thumb { | ||
2543 | -webkit-touch-callout: none; | ||
2544 | -webkit-user-select: none; | ||
2545 | -khtml-user-select: none; | ||
2546 | -moz-user-select: none; | ||
2547 | -ms-user-select: none; | ||
2548 | user-select: none; } | ||
2549 | |||
2550 | .circle { | ||
2551 | border-radius: 50%; } | ||
2552 | |||
2553 | .center-block { | ||
2554 | display: block; | ||
2555 | margin-left: auto; | ||
2556 | margin-right: auto; } | ||
2557 | |||
2558 | .truncate { | ||
2559 | display: block; | ||
2560 | white-space: nowrap; | ||
2561 | overflow: hidden; | ||
2562 | text-overflow: ellipsis; } | ||
2563 | |||
2564 | .no-padding { | ||
2565 | padding: 0 !important; } | ||
2566 | |||
2567 | @font-face { | ||
2568 | font-family: "Material-Design-Icons"; | ||
2569 | src: url("../font/material-design-icons/Material-Design-Icons.eot?#iefix") format("embedded-opentype"), url("../font/material-design-icons/Material-Design-Icons.woff2") format("woff2"), url("../font/material-design-icons/Material-Design-Icons.woff") format("woff"), url("../font/material-design-icons/Material-Design-Icons.ttf") format("truetype"), url("../font/material-design-icons/Material-Design-Icons.svg#Material-Design-Icons") format("svg"); | ||
2570 | font-weight: normal; | ||
2571 | font-style: normal; } | ||
2572 | |||
2573 | [class^="mdi-"], [class*="mdi-"] { | ||
2574 | speak: none; | ||
2575 | display: inline-block; | ||
2576 | font-family: "Material-Design-Icons"; | ||
2577 | font-style: normal; | ||
2578 | font-weight: normal; | ||
2579 | font-variant: normal; | ||
2580 | text-rendering: auto; | ||
2581 | /* Better Font Rendering =========== */ | ||
2582 | -webkit-font-smoothing: antialiased; | ||
2583 | -moz-osx-font-smoothing: grayscale; | ||
2584 | transform: translate(0, 0); } | ||
2585 | [class^="mdi-"]:before, [class*="mdi-"]:before { | ||
2586 | display: inline-block; | ||
2587 | speak: none; | ||
2588 | text-decoration: inherit; } | ||
2589 | [class^="mdi-"].pull-left, [class*="mdi-"].pull-left { | ||
2590 | margin-right: .3em; } | ||
2591 | [class^="mdi-"].pull-right, [class*="mdi-"].pull-right { | ||
2592 | margin-left: .3em; } | ||
2593 | [class^="mdi-"].mdi-lg:before, [class^="mdi-"].mdi-lg:after, [class*="mdi-"].mdi-lg:before, [class*="mdi-"].mdi-lg:after { | ||
2594 | font-size: 1.33333333em; | ||
2595 | line-height: 0.75em; | ||
2596 | vertical-align: -15%; } | ||
2597 | [class^="mdi-"].mdi-2x:before, [class^="mdi-"].mdi-2x:after, [class*="mdi-"].mdi-2x:before, [class*="mdi-"].mdi-2x:after { | ||
2598 | font-size: 2em; } | ||
2599 | [class^="mdi-"].mdi-3x:before, [class^="mdi-"].mdi-3x:after, [class*="mdi-"].mdi-3x:before, [class*="mdi-"].mdi-3x:after { | ||
2600 | font-size: 3em; } | ||
2601 | [class^="mdi-"].mdi-4x:before, [class^="mdi-"].mdi-4x:after, [class*="mdi-"].mdi-4x:before, [class*="mdi-"].mdi-4x:after { | ||
2602 | font-size: 4em; } | ||
2603 | [class^="mdi-"].mdi-5x:before, [class^="mdi-"].mdi-5x:after, [class*="mdi-"].mdi-5x:before, [class*="mdi-"].mdi-5x:after { | ||
2604 | font-size: 5em; } | ||
2605 | |||
2606 | [class^="mdi-device-signal-cellular-"]:after, [class^="mdi-device-battery-"]:after, [class^="mdi-device-battery-charging-"]:after, [class^="mdi-device-signal-cellular-connected-no-internet-"]:after, [class^="mdi-device-signal-wifi-"]:after, [class^="mdi-device-signal-wifi-statusbar-not-connected"]:after, .mdi-device-network-wifi:after { | ||
2607 | opacity: .3; | ||
2608 | position: absolute; | ||
2609 | left: 0; | ||
2610 | top: 0; | ||
2611 | z-index: 1; | ||
2612 | display: inline-block; | ||
2613 | speak: none; | ||
2614 | text-decoration: inherit; } | ||
2615 | |||
2616 | [class^="mdi-device-signal-cellular-"]:after { | ||
2617 | content: "\e758"; } | ||
2618 | |||
2619 | [class^="mdi-device-battery-"]:after { | ||
2620 | content: "\e735"; } | ||
2621 | |||
2622 | [class^="mdi-device-battery-charging-"]:after { | ||
2623 | content: "\e733"; } | ||
2624 | |||
2625 | [class^="mdi-device-signal-cellular-connected-no-internet-"]:after { | ||
2626 | content: "\e75d"; } | ||
2627 | |||
2628 | [class^="mdi-device-signal-wifi-"]:after, .mdi-device-network-wifi:after { | ||
2629 | content: "\e765"; } | ||
2630 | |||
2631 | [class^="mdi-device-signal-wifi-statusbasr-not-connected"]:after { | ||
2632 | content: "\e8f7"; } | ||
2633 | |||
2634 | .mdi-device-signal-cellular-off:after, .mdi-device-signal-cellular-null:after, .mdi-device-signal-cellular-no-sim:after, .mdi-device-signal-wifi-off:after, .mdi-device-signal-wifi-4-bar:after, .mdi-device-signal-cellular-4-bar:after, .mdi-device-battery-alert:after, .mdi-device-signal-cellular-connected-no-internet-4-bar:after, .mdi-device-battery-std:after, .mdi-device-battery-full .mdi-device-battery-unknown:after { | ||
2635 | content: ""; } | ||
2636 | |||
2637 | .mdi-fw { | ||
2638 | width: 1.28571429em; | ||
2639 | text-align: center; } | ||
2640 | |||
2641 | .mdi-ul { | ||
2642 | padding-left: 0; | ||
2643 | margin-left: 2.14285714em; | ||
2644 | list-style-type: none; } | ||
2645 | |||
2646 | .mdi-ul > li { | ||
2647 | position: relative; } | ||
2648 | |||
2649 | .mdi-li { | ||
2650 | position: absolute; | ||
2651 | left: -2.14285714em; | ||
2652 | width: 2.14285714em; | ||
2653 | top: 0.14285714em; | ||
2654 | text-align: center; } | ||
2655 | |||
2656 | .mdi-li.mdi-lg { | ||
2657 | left: -1.85714286em; } | ||
2658 | |||
2659 | .mdi-border { | ||
2660 | padding: .2em .25em .15em; | ||
2661 | border: solid 0.08em #eeeeee; | ||
2662 | border-radius: .1em; } | ||
2663 | |||
2664 | .mdi-spin { | ||
2665 | -webkit-animation: mdi-spin 2s infinite linear; | ||
2666 | animation: mdi-spin 2s infinite linear; | ||
2667 | -webkit-transform-origin: 50% 50%; | ||
2668 | -moz-transform-origin: 50% 50%; | ||
2669 | -o-transform-origin: 50% 50%; | ||
2670 | transform-origin: 50% 50%; } | ||
2671 | |||
2672 | .mdi-pulse { | ||
2673 | -webkit-animation: mdi-spin 1s steps(8) infinite; | ||
2674 | animation: mdi-spin 1s steps(8) infinite; | ||
2675 | -webkit-transform-origin: 50% 50%; | ||
2676 | -moz-transform-origin: 50% 50%; | ||
2677 | -o-transform-origin: 50% 50%; | ||
2678 | transform-origin: 50% 50%; } | ||
2679 | |||
2680 | @-webkit-keyframes mdi-spin { | ||
2681 | 0% { | ||
2682 | -webkit-transform: rotate(0deg); | ||
2683 | transform: rotate(0deg); } | ||
2684 | |||
2685 | 100% { | ||
2686 | -webkit-transform: rotate(359deg); | ||
2687 | transform: rotate(359deg); } } | ||
2688 | |||
2689 | @keyframes mdi-spin { | ||
2690 | 0% { | ||
2691 | -webkit-transform: rotate(0deg); | ||
2692 | transform: rotate(0deg); } | ||
2693 | |||
2694 | 100% { | ||
2695 | -webkit-transform: rotate(359deg); | ||
2696 | transform: rotate(359deg); } } | ||
2697 | |||
2698 | .mdi-rotate-90 { | ||
2699 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=1); | ||
2700 | -webkit-transform: rotate(90deg); | ||
2701 | -ms-transform: rotate(90deg); | ||
2702 | transform: rotate(90deg); } | ||
2703 | |||
2704 | .mdi-rotate-180 { | ||
2705 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2); | ||
2706 | -webkit-transform: rotate(180deg); | ||
2707 | -ms-transform: rotate(180deg); | ||
2708 | transform: rotate(180deg); } | ||
2709 | |||
2710 | .mdi-rotate-270 { | ||
2711 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=3); | ||
2712 | -webkit-transform: rotate(270deg); | ||
2713 | -ms-transform: rotate(270deg); | ||
2714 | transform: rotate(270deg); } | ||
2715 | |||
2716 | .mdi-flip-horizontal { | ||
2717 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1); | ||
2718 | -webkit-transform: scale(-1, 1); | ||
2719 | -ms-transform: scale(-1, 1); | ||
2720 | transform: scale(-1, 1); } | ||
2721 | |||
2722 | .mdi-flip-vertical { | ||
2723 | filter: progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1); | ||
2724 | -webkit-transform: scale(1, -1); | ||
2725 | -ms-transform: scale(1, -1); | ||
2726 | transform: scale(1, -1); } | ||
2727 | |||
2728 | :root .mdi-rotate-90, :root .mdi-rotate-180, :root .mdi-rotate-270, :root .mdi-flip-horizontal, :root .mdi-flip-vertical { | ||
2729 | filter: none; } | ||
2730 | |||
2731 | .mdi-stack { | ||
2732 | position: relative; | ||
2733 | display: inline-block; | ||
2734 | width: 2em; | ||
2735 | height: 2em; | ||
2736 | line-height: 2em; | ||
2737 | vertical-align: middle; } | ||
2738 | |||
2739 | .mdi-stack-1x, .mdi-stack-2x { | ||
2740 | position: absolute; | ||
2741 | left: 0; | ||
2742 | width: 100%; | ||
2743 | text-align: center; } | ||
2744 | |||
2745 | .mdi-stack-1x { | ||
2746 | line-height: inherit; } | ||
2747 | |||
2748 | .mdi-stack-2x { | ||
2749 | font-size: 2em; } | ||
2750 | |||
2751 | .mdi-inverse { | ||
2752 | color: #ffffff; } | ||
2753 | |||
2754 | /* Start Icons */ | ||
2755 | .mdi-action-3d-rotation:before { | ||
2756 | content: "\e600"; } | ||
2757 | |||
2758 | .mdi-action-accessibility:before { | ||
2759 | content: "\e601"; } | ||
2760 | |||
2761 | .mdi-action-account-balance-wallet:before { | ||
2762 | content: "\e602"; } | ||
2763 | |||
2764 | .mdi-action-account-balance:before { | ||
2765 | content: "\e603"; } | ||
2766 | |||
2767 | .mdi-action-account-box:before { | ||
2768 | content: "\e604"; } | ||
2769 | |||
2770 | .mdi-action-account-child:before { | ||
2771 | content: "\e605"; } | ||
2772 | |||
2773 | .mdi-action-account-circle:before { | ||
2774 | content: "\e606"; } | ||
2775 | |||
2776 | .mdi-action-add-shopping-cart:before { | ||
2777 | content: "\e607"; } | ||
2778 | |||
2779 | .mdi-action-alarm-add:before { | ||
2780 | content: "\e608"; } | ||
2781 | |||
2782 | .mdi-action-alarm-off:before { | ||
2783 | content: "\e609"; } | ||
2784 | |||
2785 | .mdi-action-alarm-on:before { | ||
2786 | content: "\e60a"; } | ||
2787 | |||
2788 | .mdi-action-alarm:before { | ||
2789 | content: "\e60b"; } | ||
2790 | |||
2791 | .mdi-action-android:before { | ||
2792 | content: "\e60c"; } | ||
2793 | |||
2794 | .mdi-action-announcement:before { | ||
2795 | content: "\e60d"; } | ||
2796 | |||
2797 | .mdi-action-aspect-ratio:before { | ||
2798 | content: "\e60e"; } | ||
2799 | |||
2800 | .mdi-action-assessment:before { | ||
2801 | content: "\e60f"; } | ||
2802 | |||
2803 | .mdi-action-assignment-ind:before { | ||
2804 | content: "\e610"; } | ||
2805 | |||
2806 | .mdi-action-assignment-late:before { | ||
2807 | content: "\e611"; } | ||
2808 | |||
2809 | .mdi-action-assignment-return:before { | ||
2810 | content: "\e612"; } | ||
2811 | |||
2812 | .mdi-action-assignment-returned:before { | ||
2813 | content: "\e613"; } | ||
2814 | |||
2815 | .mdi-action-assignment-turned-in:before { | ||
2816 | content: "\e614"; } | ||
2817 | |||
2818 | .mdi-action-assignment:before { | ||
2819 | content: "\e615"; } | ||
2820 | |||
2821 | .mdi-action-autorenew:before { | ||
2822 | content: "\e616"; } | ||
2823 | |||
2824 | .mdi-action-backup:before { | ||
2825 | content: "\e617"; } | ||
2826 | |||
2827 | .mdi-action-book:before { | ||
2828 | content: "\e618"; } | ||
2829 | |||
2830 | .mdi-action-bookmark-outline:before { | ||
2831 | content: "\e619"; } | ||
2832 | |||
2833 | .mdi-action-bookmark:before { | ||
2834 | content: "\e61a"; } | ||
2835 | |||
2836 | .mdi-action-bug-report:before { | ||
2837 | content: "\e61b"; } | ||
2838 | |||
2839 | .mdi-action-cached:before { | ||
2840 | content: "\e61c"; } | ||
2841 | |||
2842 | .mdi-action-check-circle:before { | ||
2843 | content: "\e61d"; } | ||
2844 | |||
2845 | .mdi-action-class:before { | ||
2846 | content: "\e61e"; } | ||
2847 | |||
2848 | .mdi-action-credit-card:before { | ||
2849 | content: "\e61f"; } | ||
2850 | |||
2851 | .mdi-action-dashboard:before { | ||
2852 | content: "\e620"; } | ||
2853 | |||
2854 | .mdi-action-delete:before { | ||
2855 | content: "\e621"; } | ||
2856 | |||
2857 | .mdi-action-description:before { | ||
2858 | content: "\e622"; } | ||
2859 | |||
2860 | .mdi-action-dns:before { | ||
2861 | content: "\e623"; } | ||
2862 | |||
2863 | .mdi-action-done-all:before { | ||
2864 | content: "\e624"; } | ||
2865 | |||
2866 | .mdi-action-done:before { | ||
2867 | content: "\e625"; } | ||
2868 | |||
2869 | .mdi-action-event:before { | ||
2870 | content: "\e626"; } | ||
2871 | |||
2872 | .mdi-action-exit-to-app:before { | ||
2873 | content: "\e627"; } | ||
2874 | |||
2875 | .mdi-action-explore:before { | ||
2876 | content: "\e628"; } | ||
2877 | |||
2878 | .mdi-action-extension:before { | ||
2879 | content: "\e629"; } | ||
2880 | |||
2881 | .mdi-action-face-unlock:before { | ||
2882 | content: "\e62a"; } | ||
2883 | |||
2884 | .mdi-action-favorite-outline:before { | ||
2885 | content: "\e62b"; } | ||
2886 | |||
2887 | .mdi-action-favorite:before { | ||
2888 | content: "\e62c"; } | ||
2889 | |||
2890 | .mdi-action-find-in-page:before { | ||
2891 | content: "\e62d"; } | ||
2892 | |||
2893 | .mdi-action-find-replace:before { | ||
2894 | content: "\e62e"; } | ||
2895 | |||
2896 | .mdi-action-flip-to-back:before { | ||
2897 | content: "\e62f"; } | ||
2898 | |||
2899 | .mdi-action-flip-to-front:before { | ||
2900 | content: "\e630"; } | ||
2901 | |||
2902 | .mdi-action-get-app:before { | ||
2903 | content: "\e631"; } | ||
2904 | |||
2905 | .mdi-action-grade:before { | ||
2906 | content: "\e632"; } | ||
2907 | |||
2908 | .mdi-action-group-work:before { | ||
2909 | content: "\e633"; } | ||
2910 | |||
2911 | .mdi-action-help:before { | ||
2912 | content: "\e634"; } | ||
2913 | |||
2914 | .mdi-action-highlight-remove:before { | ||
2915 | content: "\e635"; } | ||
2916 | |||
2917 | .mdi-action-history:before { | ||
2918 | content: "\e636"; } | ||
2919 | |||
2920 | .mdi-action-home:before { | ||
2921 | content: "\e637"; } | ||
2922 | |||
2923 | .mdi-action-https:before { | ||
2924 | content: "\e638"; } | ||
2925 | |||
2926 | .mdi-action-info-outline:before { | ||
2927 | content: "\e639"; } | ||
2928 | |||
2929 | .mdi-action-info:before { | ||
2930 | content: "\e63a"; } | ||
2931 | |||
2932 | .mdi-action-input:before { | ||
2933 | content: "\e63b"; } | ||
2934 | |||
2935 | .mdi-action-invert-colors:before { | ||
2936 | content: "\e63c"; } | ||
2937 | |||
2938 | .mdi-action-label-outline:before { | ||
2939 | content: "\e63d"; } | ||
2940 | |||
2941 | .mdi-action-label:before { | ||
2942 | content: "\e63e"; } | ||
2943 | |||
2944 | .mdi-action-language:before { | ||
2945 | content: "\e63f"; } | ||
2946 | |||
2947 | .mdi-action-launch:before { | ||
2948 | content: "\e640"; } | ||
2949 | |||
2950 | .mdi-action-list:before { | ||
2951 | content: "\e641"; } | ||
2952 | |||
2953 | .mdi-action-lock-open:before { | ||
2954 | content: "\e642"; } | ||
2955 | |||
2956 | .mdi-action-lock-outline:before { | ||
2957 | content: "\e643"; } | ||
2958 | |||
2959 | .mdi-action-lock:before { | ||
2960 | content: "\e644"; } | ||
2961 | |||
2962 | .mdi-action-loyalty:before { | ||
2963 | content: "\e645"; } | ||
2964 | |||
2965 | .mdi-action-markunread-mailbox:before { | ||
2966 | content: "\e646"; } | ||
2967 | |||
2968 | .mdi-action-note-add:before { | ||
2969 | content: "\e647"; } | ||
2970 | |||
2971 | .mdi-action-open-in-browser:before { | ||
2972 | content: "\e648"; } | ||
2973 | |||
2974 | .mdi-action-open-in-new:before { | ||
2975 | content: "\e649"; } | ||
2976 | |||
2977 | .mdi-action-open-with:before { | ||
2978 | content: "\e64a"; } | ||
2979 | |||
2980 | .mdi-action-pageview:before { | ||
2981 | content: "\e64b"; } | ||
2982 | |||
2983 | .mdi-action-payment:before { | ||
2984 | content: "\e64c"; } | ||
2985 | |||
2986 | .mdi-action-perm-camera-mic:before { | ||
2987 | content: "\e64d"; } | ||
2988 | |||
2989 | .mdi-action-perm-contact-cal:before { | ||
2990 | content: "\e64e"; } | ||
2991 | |||
2992 | .mdi-action-perm-data-setting:before { | ||
2993 | content: "\e64f"; } | ||
2994 | |||
2995 | .mdi-action-perm-device-info:before { | ||
2996 | content: "\e650"; } | ||
2997 | |||
2998 | .mdi-action-perm-identity:before { | ||
2999 | content: "\e651"; } | ||
3000 | |||
3001 | .mdi-action-perm-media:before { | ||
3002 | content: "\e652"; } | ||
3003 | |||
3004 | .mdi-action-perm-phone-msg:before { | ||
3005 | content: "\e653"; } | ||
3006 | |||
3007 | .mdi-action-perm-scan-wifi:before { | ||
3008 | content: "\e654"; } | ||
3009 | |||
3010 | .mdi-action-picture-in-picture:before { | ||
3011 | content: "\e655"; } | ||
3012 | |||
3013 | .mdi-action-polymer:before { | ||
3014 | content: "\e656"; } | ||
3015 | |||
3016 | .mdi-action-print:before { | ||
3017 | content: "\e657"; } | ||
3018 | |||
3019 | .mdi-action-query-builder:before { | ||
3020 | content: "\e658"; } | ||
3021 | |||
3022 | .mdi-action-question-answer:before { | ||
3023 | content: "\e659"; } | ||
3024 | |||
3025 | .mdi-action-receipt:before { | ||
3026 | content: "\e65a"; } | ||
3027 | |||
3028 | .mdi-action-redeem:before { | ||
3029 | content: "\e65b"; } | ||
3030 | |||
3031 | .mdi-action-reorder:before { | ||
3032 | content: "\e65c"; } | ||
3033 | |||
3034 | .mdi-action-report-problem:before { | ||
3035 | content: "\e65d"; } | ||
3036 | |||
3037 | .mdi-action-restore:before { | ||
3038 | content: "\e65e"; } | ||
3039 | |||
3040 | .mdi-action-room:before { | ||
3041 | content: "\e65f"; } | ||
3042 | |||
3043 | .mdi-action-schedule:before { | ||
3044 | content: "\e660"; } | ||
3045 | |||
3046 | .mdi-action-search:before { | ||
3047 | content: "\e661"; } | ||
3048 | |||
3049 | .mdi-action-settings-applications:before { | ||
3050 | content: "\e662"; } | ||
3051 | |||
3052 | .mdi-action-settings-backup-restore:before { | ||
3053 | content: "\e663"; } | ||
3054 | |||
3055 | .mdi-action-settings-bluetooth:before { | ||
3056 | content: "\e664"; } | ||
3057 | |||
3058 | .mdi-action-settings-cell:before { | ||
3059 | content: "\e665"; } | ||
3060 | |||
3061 | .mdi-action-settings-display:before { | ||
3062 | content: "\e666"; } | ||
3063 | |||
3064 | .mdi-action-settings-ethernet:before { | ||
3065 | content: "\e667"; } | ||
3066 | |||
3067 | .mdi-action-settings-input-antenna:before { | ||
3068 | content: "\e668"; } | ||
3069 | |||
3070 | .mdi-action-settings-input-component:before { | ||
3071 | content: "\e669"; } | ||
3072 | |||
3073 | .mdi-action-settings-input-composite:before { | ||
3074 | content: "\e66a"; } | ||
3075 | |||
3076 | .mdi-action-settings-input-hdmi:before { | ||
3077 | content: "\e66b"; } | ||
3078 | |||
3079 | .mdi-action-settings-input-svideo:before { | ||
3080 | content: "\e66c"; } | ||
3081 | |||
3082 | .mdi-action-settings-overscan:before { | ||
3083 | content: "\e66d"; } | ||
3084 | |||
3085 | .mdi-action-settings-phone:before { | ||
3086 | content: "\e66e"; } | ||
3087 | |||
3088 | .mdi-action-settings-power:before { | ||
3089 | content: "\e66f"; } | ||
3090 | |||
3091 | .mdi-action-settings-remote:before { | ||
3092 | content: "\e670"; } | ||
3093 | |||
3094 | .mdi-action-settings-voice:before { | ||
3095 | content: "\e671"; } | ||
3096 | |||
3097 | .mdi-action-settings:before { | ||
3098 | content: "\e672"; } | ||
3099 | |||
3100 | .mdi-action-shop-two:before { | ||
3101 | content: "\e673"; } | ||
3102 | |||
3103 | .mdi-action-shop:before { | ||
3104 | content: "\e674"; } | ||
3105 | |||
3106 | .mdi-action-shopping-basket:before { | ||
3107 | content: "\e675"; } | ||
3108 | |||
3109 | .mdi-action-shopping-cart:before { | ||
3110 | content: "\e676"; } | ||
3111 | |||
3112 | .mdi-action-speaker-notes:before { | ||
3113 | content: "\e677"; } | ||
3114 | |||
3115 | .mdi-action-spellcheck:before { | ||
3116 | content: "\e678"; } | ||
3117 | |||
3118 | .mdi-action-star-rate:before { | ||
3119 | content: "\e679"; } | ||
3120 | |||
3121 | .mdi-action-stars:before { | ||
3122 | content: "\e67a"; } | ||
3123 | |||
3124 | .mdi-action-store:before { | ||
3125 | content: "\e67b"; } | ||
3126 | |||
3127 | .mdi-action-subject:before { | ||
3128 | content: "\e67c"; } | ||
3129 | |||
3130 | .mdi-action-supervisor-account:before { | ||
3131 | content: "\e67d"; } | ||
3132 | |||
3133 | .mdi-action-swap-horiz:before { | ||
3134 | content: "\e67e"; } | ||
3135 | |||
3136 | .mdi-action-swap-vert-circle:before { | ||
3137 | content: "\e67f"; } | ||
3138 | |||
3139 | .mdi-action-swap-vert:before { | ||
3140 | content: "\e680"; } | ||
3141 | |||
3142 | .mdi-action-system-update-tv:before { | ||
3143 | content: "\e681"; } | ||
3144 | |||
3145 | .mdi-action-tab-unselected:before { | ||
3146 | content: "\e682"; } | ||
3147 | |||
3148 | .mdi-action-tab:before { | ||
3149 | content: "\e683"; } | ||
3150 | |||
3151 | .mdi-action-theaters:before { | ||
3152 | content: "\e684"; } | ||
3153 | |||
3154 | .mdi-action-thumb-down:before { | ||
3155 | content: "\e685"; } | ||
3156 | |||
3157 | .mdi-action-thumb-up:before { | ||
3158 | content: "\e686"; } | ||
3159 | |||
3160 | .mdi-action-thumbs-up-down:before { | ||
3161 | content: "\e687"; } | ||
3162 | |||
3163 | .mdi-action-toc:before { | ||
3164 | content: "\e688"; } | ||
3165 | |||
3166 | .mdi-action-today:before { | ||
3167 | content: "\e689"; } | ||
3168 | |||
3169 | .mdi-action-track-changes:before { | ||
3170 | content: "\e68a"; } | ||
3171 | |||
3172 | .mdi-action-translate:before { | ||
3173 | content: "\e68b"; } | ||
3174 | |||
3175 | .mdi-action-trending-down:before { | ||
3176 | content: "\e68c"; } | ||
3177 | |||
3178 | .mdi-action-trending-neutral:before { | ||
3179 | content: "\e68d"; } | ||
3180 | |||
3181 | .mdi-action-trending-up:before { | ||
3182 | content: "\e68e"; } | ||
3183 | |||
3184 | .mdi-action-turned-in-not:before { | ||
3185 | content: "\e68f"; } | ||
3186 | |||
3187 | .mdi-action-turned-in:before { | ||
3188 | content: "\e690"; } | ||
3189 | |||
3190 | .mdi-action-verified-user:before { | ||
3191 | content: "\e691"; } | ||
3192 | |||
3193 | .mdi-action-view-agenda:before { | ||
3194 | content: "\e692"; } | ||
3195 | |||
3196 | .mdi-action-view-array:before { | ||
3197 | content: "\e693"; } | ||
3198 | |||
3199 | .mdi-action-view-carousel:before { | ||
3200 | content: "\e694"; } | ||
3201 | |||
3202 | .mdi-action-view-column:before { | ||
3203 | content: "\e695"; } | ||
3204 | |||
3205 | .mdi-action-view-day:before { | ||
3206 | content: "\e696"; } | ||
3207 | |||
3208 | .mdi-action-view-headline:before { | ||
3209 | content: "\e697"; } | ||
3210 | |||
3211 | .mdi-action-view-list:before { | ||
3212 | content: "\e698"; } | ||
3213 | |||
3214 | .mdi-action-view-module:before { | ||
3215 | content: "\e699"; } | ||
3216 | |||
3217 | .mdi-action-view-quilt:before { | ||
3218 | content: "\e69a"; } | ||
3219 | |||
3220 | .mdi-action-view-stream:before { | ||
3221 | content: "\e69b"; } | ||
3222 | |||
3223 | .mdi-action-view-week:before { | ||
3224 | content: "\e69c"; } | ||
3225 | |||
3226 | .mdi-action-visibility-off:before { | ||
3227 | content: "\e69d"; } | ||
3228 | |||
3229 | .mdi-action-visibility:before { | ||
3230 | content: "\e69e"; } | ||
3231 | |||
3232 | .mdi-action-wallet-giftcard:before { | ||
3233 | content: "\e69f"; } | ||
3234 | |||
3235 | .mdi-action-wallet-membership:before { | ||
3236 | content: "\e6a0"; } | ||
3237 | |||
3238 | .mdi-action-wallet-travel:before { | ||
3239 | content: "\e6a1"; } | ||
3240 | |||
3241 | .mdi-action-work:before { | ||
3242 | content: "\e6a2"; } | ||
3243 | |||
3244 | .mdi-alert-error:before { | ||
3245 | content: "\e6a3"; } | ||
3246 | |||
3247 | .mdi-alert-warning:before { | ||
3248 | content: "\e6a4"; } | ||
3249 | |||
3250 | .mdi-av-album:before { | ||
3251 | content: "\e6a5"; } | ||
3252 | |||
3253 | .mdi-av-closed-caption:before { | ||
3254 | content: "\e6a6"; } | ||
3255 | |||
3256 | .mdi-av-equalizer:before { | ||
3257 | content: "\e6a7"; } | ||
3258 | |||
3259 | .mdi-av-explicit:before { | ||
3260 | content: "\e6a8"; } | ||
3261 | |||
3262 | .mdi-av-fast-forward:before { | ||
3263 | content: "\e6a9"; } | ||
3264 | |||
3265 | .mdi-av-fast-rewind:before { | ||
3266 | content: "\e6aa"; } | ||
3267 | |||
3268 | .mdi-av-games:before { | ||
3269 | content: "\e6ab"; } | ||
3270 | |||
3271 | .mdi-av-hearing:before { | ||
3272 | content: "\e6ac"; } | ||
3273 | |||
3274 | .mdi-av-high-quality:before { | ||
3275 | content: "\e6ad"; } | ||
3276 | |||
3277 | .mdi-av-loop:before { | ||
3278 | content: "\e6ae"; } | ||
3279 | |||
3280 | .mdi-av-mic-none:before { | ||
3281 | content: "\e6af"; } | ||
3282 | |||
3283 | .mdi-av-mic-off:before { | ||
3284 | content: "\e6b0"; } | ||
3285 | |||
3286 | .mdi-av-mic:before { | ||
3287 | content: "\e6b1"; } | ||
3288 | |||
3289 | .mdi-av-movie:before { | ||
3290 | content: "\e6b2"; } | ||
3291 | |||
3292 | .mdi-av-my-library-add:before { | ||
3293 | content: "\e6b3"; } | ||
3294 | |||
3295 | .mdi-av-my-library-books:before { | ||
3296 | content: "\e6b4"; } | ||
3297 | |||
3298 | .mdi-av-my-library-music:before { | ||
3299 | content: "\e6b5"; } | ||
3300 | |||
3301 | .mdi-av-new-releases:before { | ||
3302 | content: "\e6b6"; } | ||
3303 | |||
3304 | .mdi-av-not-interested:before { | ||
3305 | content: "\e6b7"; } | ||
3306 | |||
3307 | .mdi-av-pause-circle-fill:before { | ||
3308 | content: "\e6b8"; } | ||
3309 | |||
3310 | .mdi-av-pause-circle-outline:before { | ||
3311 | content: "\e6b9"; } | ||
3312 | |||
3313 | .mdi-av-pause:before { | ||
3314 | content: "\e6ba"; } | ||
3315 | |||
3316 | .mdi-av-play-arrow:before { | ||
3317 | content: "\e6bb"; } | ||
3318 | |||
3319 | .mdi-av-play-circle-fill:before { | ||
3320 | content: "\e6bc"; } | ||
3321 | |||
3322 | .mdi-av-play-circle-outline:before { | ||
3323 | content: "\e6bd"; } | ||
3324 | |||
3325 | .mdi-av-play-shopping-bag:before { | ||
3326 | content: "\e6be"; } | ||
3327 | |||
3328 | .mdi-av-playlist-add:before { | ||
3329 | content: "\e6bf"; } | ||
3330 | |||
3331 | .mdi-av-queue-music:before { | ||
3332 | content: "\e6c0"; } | ||
3333 | |||
3334 | .mdi-av-queue:before { | ||
3335 | content: "\e6c1"; } | ||
3336 | |||
3337 | .mdi-av-radio:before { | ||
3338 | content: "\e6c2"; } | ||
3339 | |||
3340 | .mdi-av-recent-actors:before { | ||
3341 | content: "\e6c3"; } | ||
3342 | |||
3343 | .mdi-av-repeat-one:before { | ||
3344 | content: "\e6c4"; } | ||
3345 | |||
3346 | .mdi-av-repeat:before { | ||
3347 | content: "\e6c5"; } | ||
3348 | |||
3349 | .mdi-av-replay:before { | ||
3350 | content: "\e6c6"; } | ||
3351 | |||
3352 | .mdi-av-shuffle:before { | ||
3353 | content: "\e6c7"; } | ||
3354 | |||
3355 | .mdi-av-skip-next:before { | ||
3356 | content: "\e6c8"; } | ||
3357 | |||
3358 | .mdi-av-skip-previous:before { | ||
3359 | content: "\e6c9"; } | ||
3360 | |||
3361 | .mdi-av-snooze:before { | ||
3362 | content: "\e6ca"; } | ||
3363 | |||
3364 | .mdi-av-stop:before { | ||
3365 | content: "\e6cb"; } | ||
3366 | |||
3367 | .mdi-av-subtitles:before { | ||
3368 | content: "\e6cc"; } | ||
3369 | |||
3370 | .mdi-av-surround-sound:before { | ||
3371 | content: "\e6cd"; } | ||
3372 | |||
3373 | .mdi-av-timer:before { | ||
3374 | content: "\e6ce"; } | ||
3375 | |||
3376 | .mdi-av-video-collection:before { | ||
3377 | content: "\e6cf"; } | ||
3378 | |||
3379 | .mdi-av-videocam-off:before { | ||
3380 | content: "\e6d0"; } | ||
3381 | |||
3382 | .mdi-av-videocam:before { | ||
3383 | content: "\e6d1"; } | ||
3384 | |||
3385 | .mdi-av-volume-down:before { | ||
3386 | content: "\e6d2"; } | ||
3387 | |||
3388 | .mdi-av-volume-mute:before { | ||
3389 | content: "\e6d3"; } | ||
3390 | |||
3391 | .mdi-av-volume-off:before { | ||
3392 | content: "\e6d4"; } | ||
3393 | |||
3394 | .mdi-av-volume-up:before { | ||
3395 | content: "\e6d5"; } | ||
3396 | |||
3397 | .mdi-av-web:before { | ||
3398 | content: "\e6d6"; } | ||
3399 | |||
3400 | .mdi-communication-business:before { | ||
3401 | content: "\e6d7"; } | ||
3402 | |||
3403 | .mdi-communication-call-end:before { | ||
3404 | content: "\e6d8"; } | ||
3405 | |||
3406 | .mdi-communication-call-made:before { | ||
3407 | content: "\e6d9"; } | ||
3408 | |||
3409 | .mdi-communication-call-merge:before { | ||
3410 | content: "\e6da"; } | ||
3411 | |||
3412 | .mdi-communication-call-missed:before { | ||
3413 | content: "\e6db"; } | ||
3414 | |||
3415 | .mdi-communication-call-received:before { | ||
3416 | content: "\e6dc"; } | ||
3417 | |||
3418 | .mdi-communication-call-split:before { | ||
3419 | content: "\e6dd"; } | ||
3420 | |||
3421 | .mdi-communication-call:before { | ||
3422 | content: "\e6de"; } | ||
3423 | |||
3424 | .mdi-communication-chat:before { | ||
3425 | content: "\e6df"; } | ||
3426 | |||
3427 | .mdi-communication-clear-all:before { | ||
3428 | content: "\e6e0"; } | ||
3429 | |||
3430 | .mdi-communication-comment:before { | ||
3431 | content: "\e6e1"; } | ||
3432 | |||
3433 | .mdi-communication-contacts:before { | ||
3434 | content: "\e6e2"; } | ||
3435 | |||
3436 | .mdi-communication-dialer-sip:before { | ||
3437 | content: "\e6e3"; } | ||
3438 | |||
3439 | .mdi-communication-dialpad:before { | ||
3440 | content: "\e6e4"; } | ||
3441 | |||
3442 | .mdi-communication-dnd-on:before { | ||
3443 | content: "\e6e5"; } | ||
3444 | |||
3445 | .mdi-communication-email:before { | ||
3446 | content: "\e6e6"; } | ||
3447 | |||
3448 | .mdi-communication-forum:before { | ||
3449 | content: "\e6e7"; } | ||
3450 | |||
3451 | .mdi-communication-import-export:before { | ||
3452 | content: "\e6e8"; } | ||
3453 | |||
3454 | .mdi-communication-invert-colors-off:before { | ||
3455 | content: "\e6e9"; } | ||
3456 | |||
3457 | .mdi-communication-invert-colors-on:before { | ||
3458 | content: "\e6ea"; } | ||
3459 | |||
3460 | .mdi-communication-live-help:before { | ||
3461 | content: "\e6eb"; } | ||
3462 | |||
3463 | .mdi-communication-location-off:before { | ||
3464 | content: "\e6ec"; } | ||
3465 | |||
3466 | .mdi-communication-location-on:before { | ||
3467 | content: "\e6ed"; } | ||
3468 | |||
3469 | .mdi-communication-message:before { | ||
3470 | content: "\e6ee"; } | ||
3471 | |||
3472 | .mdi-communication-messenger:before { | ||
3473 | content: "\e6ef"; } | ||
3474 | |||
3475 | .mdi-communication-no-sim:before { | ||
3476 | content: "\e6f0"; } | ||
3477 | |||
3478 | .mdi-communication-phone:before { | ||
3479 | content: "\e6f1"; } | ||
3480 | |||
3481 | .mdi-communication-portable-wifi-off:before { | ||
3482 | content: "\e6f2"; } | ||
3483 | |||
3484 | .mdi-communication-quick-contacts-dialer:before { | ||
3485 | content: "\e6f3"; } | ||
3486 | |||
3487 | .mdi-communication-quick-contacts-mail:before { | ||
3488 | content: "\e6f4"; } | ||
3489 | |||
3490 | .mdi-communication-ring-volume:before { | ||
3491 | content: "\e6f5"; } | ||
3492 | |||
3493 | .mdi-communication-stay-current-landscape:before { | ||
3494 | content: "\e6f6"; } | ||
3495 | |||
3496 | .mdi-communication-stay-current-portrait:before { | ||
3497 | content: "\e6f7"; } | ||
3498 | |||
3499 | .mdi-communication-stay-primary-landscape:before { | ||
3500 | content: "\e6f8"; } | ||
3501 | |||
3502 | .mdi-communication-stay-primary-portrait:before { | ||
3503 | content: "\e6f9"; } | ||
3504 | |||
3505 | .mdi-communication-swap-calls:before { | ||
3506 | content: "\e6fa"; } | ||
3507 | |||
3508 | .mdi-communication-textsms:before { | ||
3509 | content: "\e6fb"; } | ||
3510 | |||
3511 | .mdi-communication-voicemail:before { | ||
3512 | content: "\e6fc"; } | ||
3513 | |||
3514 | .mdi-communication-vpn-key:before { | ||
3515 | content: "\e6fd"; } | ||
3516 | |||
3517 | .mdi-content-add-box:before { | ||
3518 | content: "\e6fe"; } | ||
3519 | |||
3520 | .mdi-content-add-circle-outline:before { | ||
3521 | content: "\e6ff"; } | ||
3522 | |||
3523 | .mdi-content-add-circle:before { | ||
3524 | content: "\e700"; } | ||
3525 | |||
3526 | .mdi-content-add:before { | ||
3527 | content: "\e701"; } | ||
3528 | |||
3529 | .mdi-content-archive:before { | ||
3530 | content: "\e702"; } | ||
3531 | |||
3532 | .mdi-content-backspace:before { | ||
3533 | content: "\e703"; } | ||
3534 | |||
3535 | .mdi-content-block:before { | ||
3536 | content: "\e704"; } | ||
3537 | |||
3538 | .mdi-content-clear:before { | ||
3539 | content: "\e705"; } | ||
3540 | |||
3541 | .mdi-content-content-copy:before { | ||
3542 | content: "\e706"; } | ||
3543 | |||
3544 | .mdi-content-content-cut:before { | ||
3545 | content: "\e707"; } | ||
3546 | |||
3547 | .mdi-content-content-paste:before { | ||
3548 | content: "\e708"; } | ||
3549 | |||
3550 | .mdi-content-create:before { | ||
3551 | content: "\e709"; } | ||
3552 | |||
3553 | .mdi-content-drafts:before { | ||
3554 | content: "\e70a"; } | ||
3555 | |||
3556 | .mdi-content-filter-list:before { | ||
3557 | content: "\e70b"; } | ||
3558 | |||
3559 | .mdi-content-flag:before { | ||
3560 | content: "\e70c"; } | ||
3561 | |||
3562 | .mdi-content-forward:before { | ||
3563 | content: "\e70d"; } | ||
3564 | |||
3565 | .mdi-content-gesture:before { | ||
3566 | content: "\e70e"; } | ||
3567 | |||
3568 | .mdi-content-inbox:before { | ||
3569 | content: "\e70f"; } | ||
3570 | |||
3571 | .mdi-content-link:before { | ||
3572 | content: "\e710"; } | ||
3573 | |||
3574 | .mdi-content-mail:before { | ||
3575 | content: "\e711"; } | ||
3576 | |||
3577 | .mdi-content-markunread:before { | ||
3578 | content: "\e712"; } | ||
3579 | |||
3580 | .mdi-content-redo:before { | ||
3581 | content: "\e713"; } | ||
3582 | |||
3583 | .mdi-content-remove-circle-outline:before { | ||
3584 | content: "\e714"; } | ||
3585 | |||
3586 | .mdi-content-remove-circle:before { | ||
3587 | content: "\e715"; } | ||
3588 | |||
3589 | .mdi-content-remove:before { | ||
3590 | content: "\e716"; } | ||
3591 | |||
3592 | .mdi-content-reply-all:before { | ||
3593 | content: "\e717"; } | ||
3594 | |||
3595 | .mdi-content-reply:before { | ||
3596 | content: "\e718"; } | ||
3597 | |||
3598 | .mdi-content-report:before { | ||
3599 | content: "\e719"; } | ||
3600 | |||
3601 | .mdi-content-save:before { | ||
3602 | content: "\e71a"; } | ||
3603 | |||
3604 | .mdi-content-select-all:before { | ||
3605 | content: "\e71b"; } | ||
3606 | |||
3607 | .mdi-content-send:before { | ||
3608 | content: "\e71c"; } | ||
3609 | |||
3610 | .mdi-content-sort:before { | ||
3611 | content: "\e71d"; } | ||
3612 | |||
3613 | .mdi-content-text-format:before { | ||
3614 | content: "\e71e"; } | ||
3615 | |||
3616 | .mdi-content-undo:before { | ||
3617 | content: "\e71f"; } | ||
3618 | |||
3619 | .mdi-editor-attach-file:before { | ||
3620 | content: "\e776"; } | ||
3621 | |||
3622 | .mdi-editor-attach-money:before { | ||
3623 | content: "\e777"; } | ||
3624 | |||
3625 | .mdi-editor-border-all:before { | ||
3626 | content: "\e778"; } | ||
3627 | |||
3628 | .mdi-editor-border-bottom:before { | ||
3629 | content: "\e779"; } | ||
3630 | |||
3631 | .mdi-editor-border-clear:before { | ||
3632 | content: "\e77a"; } | ||
3633 | |||
3634 | .mdi-editor-border-color:before { | ||
3635 | content: "\e77b"; } | ||
3636 | |||
3637 | .mdi-editor-border-horizontal:before { | ||
3638 | content: "\e77c"; } | ||
3639 | |||
3640 | .mdi-editor-border-inner:before { | ||
3641 | content: "\e77d"; } | ||
3642 | |||
3643 | .mdi-editor-border-left:before { | ||
3644 | content: "\e77e"; } | ||
3645 | |||
3646 | .mdi-editor-border-outer:before { | ||
3647 | content: "\e77f"; } | ||
3648 | |||
3649 | .mdi-editor-border-right:before { | ||
3650 | content: "\e780"; } | ||
3651 | |||
3652 | .mdi-editor-border-style:before { | ||
3653 | content: "\e781"; } | ||
3654 | |||
3655 | .mdi-editor-border-top:before { | ||
3656 | content: "\e782"; } | ||
3657 | |||
3658 | .mdi-editor-border-vertical:before { | ||
3659 | content: "\e783"; } | ||
3660 | |||
3661 | .mdi-editor-format-align-center:before { | ||
3662 | content: "\e784"; } | ||
3663 | |||
3664 | .mdi-editor-format-align-justify:before { | ||
3665 | content: "\e785"; } | ||
3666 | |||
3667 | .mdi-editor-format-align-left:before { | ||
3668 | content: "\e786"; } | ||
3669 | |||
3670 | .mdi-editor-format-align-right:before { | ||
3671 | content: "\e787"; } | ||
3672 | |||
3673 | .mdi-editor-format-bold:before { | ||
3674 | content: "\e788"; } | ||
3675 | |||
3676 | .mdi-editor-format-clear:before { | ||
3677 | content: "\e789"; } | ||
3678 | |||
3679 | .mdi-editor-format-color-fill:before { | ||
3680 | content: "\e78a"; } | ||
3681 | |||
3682 | .mdi-editor-format-color-reset:before { | ||
3683 | content: "\e78b"; } | ||
3684 | |||
3685 | .mdi-editor-format-color-text:before { | ||
3686 | content: "\e78c"; } | ||
3687 | |||
3688 | .mdi-editor-format-indent-decrease:before { | ||
3689 | content: "\e78d"; } | ||
3690 | |||
3691 | .mdi-editor-format-indent-increase:before { | ||
3692 | content: "\e78e"; } | ||
3693 | |||
3694 | .mdi-editor-format-italic:before { | ||
3695 | content: "\e78f"; } | ||
3696 | |||
3697 | .mdi-editor-format-line-spacing:before { | ||
3698 | content: "\e790"; } | ||
3699 | |||
3700 | .mdi-editor-format-list-bulleted:before { | ||
3701 | content: "\e791"; } | ||
3702 | |||
3703 | .mdi-editor-format-list-numbered:before { | ||
3704 | content: "\e792"; } | ||
3705 | |||
3706 | .mdi-editor-format-paint:before { | ||
3707 | content: "\e793"; } | ||
3708 | |||
3709 | .mdi-editor-format-quote:before { | ||
3710 | content: "\e794"; } | ||
3711 | |||
3712 | .mdi-editor-format-size:before { | ||
3713 | content: "\e795"; } | ||
3714 | |||
3715 | .mdi-editor-format-strikethrough:before { | ||
3716 | content: "\e796"; } | ||
3717 | |||
3718 | .mdi-editor-format-textdirection-l-to-r:before { | ||
3719 | content: "\e797"; } | ||
3720 | |||
3721 | .mdi-editor-format-textdirection-r-to-l:before { | ||
3722 | content: "\e798"; } | ||
3723 | |||
3724 | .mdi-editor-format-underline:before { | ||
3725 | content: "\e799"; } | ||
3726 | |||
3727 | .mdi-editor-functions:before { | ||
3728 | content: "\e79a"; } | ||
3729 | |||
3730 | .mdi-editor-insert-chart:before { | ||
3731 | content: "\e79b"; } | ||
3732 | |||
3733 | .mdi-editor-insert-comment:before { | ||
3734 | content: "\e79c"; } | ||
3735 | |||
3736 | .mdi-editor-insert-drive-file:before { | ||
3737 | content: "\e79d"; } | ||
3738 | |||
3739 | .mdi-editor-insert-emoticon:before { | ||
3740 | content: "\e79e"; } | ||
3741 | |||
3742 | .mdi-editor-insert-invitation:before { | ||
3743 | content: "\e79f"; } | ||
3744 | |||
3745 | .mdi-editor-insert-link:before { | ||
3746 | content: "\e7a0"; } | ||
3747 | |||
3748 | .mdi-editor-insert-photo:before { | ||
3749 | content: "\e7a1"; } | ||
3750 | |||
3751 | .mdi-editor-merge-type:before { | ||
3752 | content: "\e7a2"; } | ||
3753 | |||
3754 | .mdi-editor-mode-comment:before { | ||
3755 | content: "\e7a3"; } | ||
3756 | |||
3757 | .mdi-editor-mode-edit:before { | ||
3758 | content: "\e7a4"; } | ||
3759 | |||
3760 | .mdi-editor-publish:before { | ||
3761 | content: "\e7a5"; } | ||
3762 | |||
3763 | .mdi-editor-vertical-align-bottom:before { | ||
3764 | content: "\e7a6"; } | ||
3765 | |||
3766 | .mdi-editor-vertical-align-center:before { | ||
3767 | content: "\e7a7"; } | ||
3768 | |||
3769 | .mdi-editor-vertical-align-top:before { | ||
3770 | content: "\e7a8"; } | ||
3771 | |||
3772 | .mdi-editor-wrap-text:before { | ||
3773 | content: "\e7a9"; } | ||
3774 | |||
3775 | .mdi-file-attachment:before { | ||
3776 | content: "\e7aa"; } | ||
3777 | |||
3778 | .mdi-file-cloud-circle:before { | ||
3779 | content: "\e7ab"; } | ||
3780 | |||
3781 | .mdi-file-cloud-done:before { | ||
3782 | content: "\e7ac"; } | ||
3783 | |||
3784 | .mdi-file-cloud-download:before { | ||
3785 | content: "\e7ad"; } | ||
3786 | |||
3787 | .mdi-file-cloud-off:before { | ||
3788 | content: "\e7ae"; } | ||
3789 | |||
3790 | .mdi-file-cloud-queue:before { | ||
3791 | content: "\e7af"; } | ||
3792 | |||
3793 | .mdi-file-cloud-upload:before { | ||
3794 | content: "\e7b0"; } | ||
3795 | |||
3796 | .mdi-file-cloud:before { | ||
3797 | content: "\e7b1"; } | ||
3798 | |||
3799 | .mdi-file-file-download:before { | ||
3800 | content: "\e7b2"; } | ||
3801 | |||
3802 | .mdi-file-file-upload:before { | ||
3803 | content: "\e7b3"; } | ||
3804 | |||
3805 | .mdi-file-folder-open:before { | ||
3806 | content: "\e7b4"; } | ||
3807 | |||
3808 | .mdi-file-folder-shared:before { | ||
3809 | content: "\e7b5"; } | ||
3810 | |||
3811 | .mdi-file-folder:before { | ||
3812 | content: "\e7b6"; } | ||
3813 | |||
3814 | .mdi-device-access-alarm:before { | ||
3815 | content: "\e720"; } | ||
3816 | |||
3817 | .mdi-device-access-alarms:before { | ||
3818 | content: "\e721"; } | ||
3819 | |||
3820 | .mdi-device-access-time:before { | ||
3821 | content: "\e722"; } | ||
3822 | |||
3823 | .mdi-device-add-alarm:before { | ||
3824 | content: "\e723"; } | ||
3825 | |||
3826 | .mdi-device-airplanemode-off:before { | ||
3827 | content: "\e724"; } | ||
3828 | |||
3829 | .mdi-device-airplanemode-on:before { | ||
3830 | content: "\e725"; } | ||
3831 | |||
3832 | .mdi-device-battery-20:before { | ||
3833 | content: "\e726"; } | ||
3834 | |||
3835 | .mdi-device-battery-30:before { | ||
3836 | content: "\e727"; } | ||
3837 | |||
3838 | .mdi-device-battery-50:before { | ||
3839 | content: "\e728"; } | ||
3840 | |||
3841 | .mdi-device-battery-60:before { | ||
3842 | content: "\e729"; } | ||
3843 | |||
3844 | .mdi-device-battery-80:before { | ||
3845 | content: "\e72a"; } | ||
3846 | |||
3847 | .mdi-device-battery-90:before { | ||
3848 | content: "\e72b"; } | ||
3849 | |||
3850 | .mdi-device-battery-alert:before { | ||
3851 | content: "\e72c"; } | ||
3852 | |||
3853 | .mdi-device-battery-charging-20:before { | ||
3854 | content: "\e72d"; } | ||
3855 | |||
3856 | .mdi-device-battery-charging-30:before { | ||
3857 | content: "\e72e"; } | ||
3858 | |||
3859 | .mdi-device-battery-charging-50:before { | ||
3860 | content: "\e72f"; } | ||
3861 | |||
3862 | .mdi-device-battery-charging-60:before { | ||
3863 | content: "\e730"; } | ||
3864 | |||
3865 | .mdi-device-battery-charging-80:before { | ||
3866 | content: "\e731"; } | ||
3867 | |||
3868 | .mdi-device-battery-charging-90:before { | ||
3869 | content: "\e732"; } | ||
3870 | |||
3871 | .mdi-device-battery-charging-full:before { | ||
3872 | content: "\e733"; } | ||
3873 | |||
3874 | .mdi-device-battery-full:before { | ||
3875 | content: "\e734"; } | ||
3876 | |||
3877 | .mdi-device-battery-std:before { | ||
3878 | content: "\e735"; } | ||
3879 | |||
3880 | .mdi-device-battery-unknown:before { | ||
3881 | content: "\e736"; } | ||
3882 | |||
3883 | .mdi-device-bluetooth-connected:before { | ||
3884 | content: "\e737"; } | ||
3885 | |||
3886 | .mdi-device-bluetooth-disabled:before { | ||
3887 | content: "\e738"; } | ||
3888 | |||
3889 | .mdi-device-bluetooth-searching:before { | ||
3890 | content: "\e739"; } | ||
3891 | |||
3892 | .mdi-device-bluetooth:before { | ||
3893 | content: "\e73a"; } | ||
3894 | |||
3895 | .mdi-device-brightness-auto:before { | ||
3896 | content: "\e73b"; } | ||
3897 | |||
3898 | .mdi-device-brightness-high:before { | ||
3899 | content: "\e73c"; } | ||
3900 | |||
3901 | .mdi-device-brightness-low:before { | ||
3902 | content: "\e73d"; } | ||
3903 | |||
3904 | .mdi-device-brightness-medium:before { | ||
3905 | content: "\e73e"; } | ||
3906 | |||
3907 | .mdi-device-data-usage:before { | ||
3908 | content: "\e73f"; } | ||
3909 | |||
3910 | .mdi-device-developer-mode:before { | ||
3911 | content: "\e740"; } | ||
3912 | |||
3913 | .mdi-device-devices:before { | ||
3914 | content: "\e741"; } | ||
3915 | |||
3916 | .mdi-device-dvr:before { | ||
3917 | content: "\e742"; } | ||
3918 | |||
3919 | .mdi-device-gps-fixed:before { | ||
3920 | content: "\e743"; } | ||
3921 | |||
3922 | .mdi-device-gps-not-fixed:before { | ||
3923 | content: "\e744"; } | ||
3924 | |||
3925 | .mdi-device-gps-off:before { | ||
3926 | content: "\e745"; } | ||
3927 | |||
3928 | .mdi-device-location-disabled:before { | ||
3929 | content: "\e746"; } | ||
3930 | |||
3931 | .mdi-device-location-searching:before { | ||
3932 | content: "\e747"; } | ||
3933 | |||
3934 | .mdi-device-multitrack-audio:before { | ||
3935 | content: "\e748"; } | ||
3936 | |||
3937 | .mdi-device-network-cell:before { | ||
3938 | content: "\e749"; } | ||
3939 | |||
3940 | .mdi-device-network-wifi:before { | ||
3941 | content: "\e74a"; } | ||
3942 | |||
3943 | .mdi-device-nfc:before { | ||
3944 | content: "\e74b"; } | ||
3945 | |||
3946 | .mdi-device-now-wallpaper:before { | ||
3947 | content: "\e74c"; } | ||
3948 | |||
3949 | .mdi-device-now-widgets:before { | ||
3950 | content: "\e74d"; } | ||
3951 | |||
3952 | .mdi-device-screen-lock-landscape:before { | ||
3953 | content: "\e74e"; } | ||
3954 | |||
3955 | .mdi-device-screen-lock-portrait:before { | ||
3956 | content: "\e74f"; } | ||
3957 | |||
3958 | .mdi-device-screen-lock-rotation:before { | ||
3959 | content: "\e750"; } | ||
3960 | |||
3961 | .mdi-device-screen-rotation:before { | ||
3962 | content: "\e751"; } | ||
3963 | |||
3964 | .mdi-device-sd-storage:before { | ||
3965 | content: "\e752"; } | ||
3966 | |||
3967 | .mdi-device-settings-system-daydream:before { | ||
3968 | content: "\e753"; } | ||
3969 | |||
3970 | .mdi-device-signal-cellular-0-bar:before { | ||
3971 | content: "\e754"; } | ||
3972 | |||
3973 | .mdi-device-signal-cellular-1-bar:before { | ||
3974 | content: "\e755"; } | ||
3975 | |||
3976 | .mdi-device-signal-cellular-2-bar:before { | ||
3977 | content: "\e756"; } | ||
3978 | |||
3979 | .mdi-device-signal-cellular-3-bar:before { | ||
3980 | content: "\e757"; } | ||
3981 | |||
3982 | .mdi-device-signal-cellular-4-bar:before { | ||
3983 | content: "\e758"; } | ||
3984 | |||
3985 | .mdi-signal-wifi-statusbar-connected-no-internet-after:before { | ||
3986 | content: "\e8f6"; } | ||
3987 | |||
3988 | .mdi-device-signal-cellular-connected-no-internet-0-bar:before { | ||
3989 | content: "\e759"; } | ||
3990 | |||
3991 | .mdi-device-signal-cellular-connected-no-internet-1-bar:before { | ||
3992 | content: "\e75a"; } | ||
3993 | |||
3994 | .mdi-device-signal-cellular-connected-no-internet-2-bar:before { | ||
3995 | content: "\e75b"; } | ||
3996 | |||
3997 | .mdi-device-signal-cellular-connected-no-internet-3-bar:before { | ||
3998 | content: "\e75c"; } | ||
3999 | |||
4000 | .mdi-device-signal-cellular-connected-no-internet-4-bar:before { | ||
4001 | content: "\e75d"; } | ||
4002 | |||
4003 | .mdi-device-signal-cellular-no-sim:before { | ||
4004 | content: "\e75e"; } | ||
4005 | |||
4006 | .mdi-device-signal-cellular-null:before { | ||
4007 | content: "\e75f"; } | ||
4008 | |||
4009 | .mdi-device-signal-cellular-off:before { | ||
4010 | content: "\e760"; } | ||
4011 | |||
4012 | .mdi-device-signal-wifi-0-bar:before { | ||
4013 | content: "\e761"; } | ||
4014 | |||
4015 | .mdi-device-signal-wifi-1-bar:before { | ||
4016 | content: "\e762"; } | ||
4017 | |||
4018 | .mdi-device-signal-wifi-2-bar:before { | ||
4019 | content: "\e763"; } | ||
4020 | |||
4021 | .mdi-device-signal-wifi-3-bar:before { | ||
4022 | content: "\e764"; } | ||
4023 | |||
4024 | .mdi-device-signal-wifi-4-bar:before { | ||
4025 | content: "\e765"; } | ||
4026 | |||
4027 | .mdi-device-signal-wifi-off:before { | ||
4028 | content: "\e766"; } | ||
4029 | |||
4030 | .mdi-device-signal-wifi-statusbar-1-bar:before { | ||
4031 | content: "\e767"; } | ||
4032 | |||
4033 | .mdi-device-signal-wifi-statusbar-2-bar:before { | ||
4034 | content: "\e768"; } | ||
4035 | |||
4036 | .mdi-device-signal-wifi-statusbar-3-bar:before { | ||
4037 | content: "\e769"; } | ||
4038 | |||
4039 | .mdi-device-signal-wifi-statusbar-4-bar:before { | ||
4040 | content: "\e76a"; } | ||
4041 | |||
4042 | .mdi-device-signal-wifi-statusbar-connected-no-internet-:before { | ||
4043 | content: "\e76b"; } | ||
4044 | |||
4045 | .mdi-device-signal-wifi-statusbar-connected-no-internet:before { | ||
4046 | content: "\e76f"; } | ||
4047 | |||
4048 | .mdi-device-signal-wifi-statusbar-connected-no-internet-2:before { | ||
4049 | content: "\e76c"; } | ||
4050 | |||
4051 | .mdi-device-signal-wifi-statusbar-connected-no-internet-3:before { | ||
4052 | content: "\e76d"; } | ||
4053 | |||
4054 | .mdi-device-signal-wifi-statusbar-connected-no-internet-4:before { | ||
4055 | content: "\e76e"; } | ||
4056 | |||
4057 | .mdi-signal-wifi-statusbar-not-connected-after:before { | ||
4058 | content: "\e8f7"; } | ||
4059 | |||
4060 | .mdi-device-signal-wifi-statusbar-not-connected:before { | ||
4061 | content: "\e770"; } | ||
4062 | |||
4063 | .mdi-device-signal-wifi-statusbar-null:before { | ||
4064 | content: "\e771"; } | ||
4065 | |||
4066 | .mdi-device-storage:before { | ||
4067 | content: "\e772"; } | ||
4068 | |||
4069 | .mdi-device-usb:before { | ||
4070 | content: "\e773"; } | ||
4071 | |||
4072 | .mdi-device-wifi-lock:before { | ||
4073 | content: "\e774"; } | ||
4074 | |||
4075 | .mdi-device-wifi-tethering:before { | ||
4076 | content: "\e775"; } | ||
4077 | |||
4078 | .mdi-hardware-cast-connected:before { | ||
4079 | content: "\e7b7"; } | ||
4080 | |||
4081 | .mdi-hardware-cast:before { | ||
4082 | content: "\e7b8"; } | ||
4083 | |||
4084 | .mdi-hardware-computer:before { | ||
4085 | content: "\e7b9"; } | ||
4086 | |||
4087 | .mdi-hardware-desktop-mac:before { | ||
4088 | content: "\e7ba"; } | ||
4089 | |||
4090 | .mdi-hardware-desktop-windows:before { | ||
4091 | content: "\e7bb"; } | ||
4092 | |||
4093 | .mdi-hardware-dock:before { | ||
4094 | content: "\e7bc"; } | ||
4095 | |||
4096 | .mdi-hardware-gamepad:before { | ||
4097 | content: "\e7bd"; } | ||
4098 | |||
4099 | .mdi-hardware-headset-mic:before { | ||
4100 | content: "\e7be"; } | ||
4101 | |||
4102 | .mdi-hardware-headset:before { | ||
4103 | content: "\e7bf"; } | ||
4104 | |||
4105 | .mdi-hardware-keyboard-alt:before { | ||
4106 | content: "\e7c0"; } | ||
4107 | |||
4108 | .mdi-hardware-keyboard-arrow-down:before { | ||
4109 | content: "\e7c1"; } | ||
4110 | |||
4111 | .mdi-hardware-keyboard-arrow-left:before { | ||
4112 | content: "\e7c2"; } | ||
4113 | |||
4114 | .mdi-hardware-keyboard-arrow-right:before { | ||
4115 | content: "\e7c3"; } | ||
4116 | |||
4117 | .mdi-hardware-keyboard-arrow-up:before { | ||
4118 | content: "\e7c4"; } | ||
4119 | |||
4120 | .mdi-hardware-keyboard-backspace:before { | ||
4121 | content: "\e7c5"; } | ||
4122 | |||
4123 | .mdi-hardware-keyboard-capslock:before { | ||
4124 | content: "\e7c6"; } | ||
4125 | |||
4126 | .mdi-hardware-keyboard-control:before { | ||
4127 | content: "\e7c7"; } | ||
4128 | |||
4129 | .mdi-hardware-keyboard-hide:before { | ||
4130 | content: "\e7c8"; } | ||
4131 | |||
4132 | .mdi-hardware-keyboard-return:before { | ||
4133 | content: "\e7c9"; } | ||
4134 | |||
4135 | .mdi-hardware-keyboard-tab:before { | ||
4136 | content: "\e7ca"; } | ||
4137 | |||
4138 | .mdi-hardware-keyboard-voice:before { | ||
4139 | content: "\e7cb"; } | ||
4140 | |||
4141 | .mdi-hardware-keyboard:before { | ||
4142 | content: "\e7cc"; } | ||
4143 | |||
4144 | .mdi-hardware-laptop-chromebook:before { | ||
4145 | content: "\e7cd"; } | ||
4146 | |||
4147 | .mdi-hardware-laptop-mac:before { | ||
4148 | content: "\e7ce"; } | ||
4149 | |||
4150 | .mdi-hardware-laptop-windows:before { | ||
4151 | content: "\e7cf"; } | ||
4152 | |||
4153 | .mdi-hardware-laptop:before { | ||
4154 | content: "\e7d0"; } | ||
4155 | |||
4156 | .mdi-hardware-memory:before { | ||
4157 | content: "\e7d1"; } | ||
4158 | |||
4159 | .mdi-hardware-mouse:before { | ||
4160 | content: "\e7d2"; } | ||
4161 | |||
4162 | .mdi-hardware-phone-android:before { | ||
4163 | content: "\e7d3"; } | ||
4164 | |||
4165 | .mdi-hardware-phone-iphone:before { | ||
4166 | content: "\e7d4"; } | ||
4167 | |||
4168 | .mdi-hardware-phonelink-off:before { | ||
4169 | content: "\e7d5"; } | ||
4170 | |||
4171 | .mdi-hardware-phonelink:before { | ||
4172 | content: "\e7d6"; } | ||
4173 | |||
4174 | .mdi-hardware-security:before { | ||
4175 | content: "\e7d7"; } | ||
4176 | |||
4177 | .mdi-hardware-sim-card:before { | ||
4178 | content: "\e7d8"; } | ||
4179 | |||
4180 | .mdi-hardware-smartphone:before { | ||
4181 | content: "\e7d9"; } | ||
4182 | |||
4183 | .mdi-hardware-speaker:before { | ||
4184 | content: "\e7da"; } | ||
4185 | |||
4186 | .mdi-hardware-tablet-android:before { | ||
4187 | content: "\e7db"; } | ||
4188 | |||
4189 | .mdi-hardware-tablet-mac:before { | ||
4190 | content: "\e7dc"; } | ||
4191 | |||
4192 | .mdi-hardware-tablet:before { | ||
4193 | content: "\e7dd"; } | ||
4194 | |||
4195 | .mdi-hardware-tv:before { | ||
4196 | content: "\e7de"; } | ||
4197 | |||
4198 | .mdi-hardware-watch:before { | ||
4199 | content: "\e7df"; } | ||
4200 | |||
4201 | .mdi-image-add-to-photos:before { | ||
4202 | content: "\e7e0"; } | ||
4203 | |||
4204 | .mdi-image-adjust:before { | ||
4205 | content: "\e7e1"; } | ||
4206 | |||
4207 | .mdi-image-assistant-photo:before { | ||
4208 | content: "\e7e2"; } | ||
4209 | |||
4210 | .mdi-image-audiotrack:before { | ||
4211 | content: "\e7e3"; } | ||
4212 | |||
4213 | .mdi-image-blur-circular:before { | ||
4214 | content: "\e7e4"; } | ||
4215 | |||
4216 | .mdi-image-blur-linear:before { | ||
4217 | content: "\e7e5"; } | ||
4218 | |||
4219 | .mdi-image-blur-off:before { | ||
4220 | content: "\e7e6"; } | ||
4221 | |||
4222 | .mdi-image-blur-on:before { | ||
4223 | content: "\e7e7"; } | ||
4224 | |||
4225 | .mdi-image-brightness-1:before { | ||
4226 | content: "\e7e8"; } | ||
4227 | |||
4228 | .mdi-image-brightness-2:before { | ||
4229 | content: "\e7e9"; } | ||
4230 | |||
4231 | .mdi-image-brightness-3:before { | ||
4232 | content: "\e7ea"; } | ||
4233 | |||
4234 | .mdi-image-brightness-4:before { | ||
4235 | content: "\e7eb"; } | ||
4236 | |||
4237 | .mdi-image-brightness-5:before { | ||
4238 | content: "\e7ec"; } | ||
4239 | |||
4240 | .mdi-image-brightness-6:before { | ||
4241 | content: "\e7ed"; } | ||
4242 | |||
4243 | .mdi-image-brightness-7:before { | ||
4244 | content: "\e7ee"; } | ||
4245 | |||
4246 | .mdi-image-brush:before { | ||
4247 | content: "\e7ef"; } | ||
4248 | |||
4249 | .mdi-image-camera-alt:before { | ||
4250 | content: "\e7f0"; } | ||
4251 | |||
4252 | .mdi-image-camera-front:before { | ||
4253 | content: "\e7f1"; } | ||
4254 | |||
4255 | .mdi-image-camera-rear:before { | ||
4256 | content: "\e7f2"; } | ||
4257 | |||
4258 | .mdi-image-camera-roll:before { | ||
4259 | content: "\e7f3"; } | ||
4260 | |||
4261 | .mdi-image-camera:before { | ||
4262 | content: "\e7f4"; } | ||
4263 | |||
4264 | .mdi-image-center-focus-strong:before { | ||
4265 | content: "\e7f5"; } | ||
4266 | |||
4267 | .mdi-image-center-focus-weak:before { | ||
4268 | content: "\e7f6"; } | ||
4269 | |||
4270 | .mdi-image-collections:before { | ||
4271 | content: "\e7f7"; } | ||
4272 | |||
4273 | .mdi-image-color-lens:before { | ||
4274 | content: "\e7f8"; } | ||
4275 | |||
4276 | .mdi-image-colorize:before { | ||
4277 | content: "\e7f9"; } | ||
4278 | |||
4279 | .mdi-image-compare:before { | ||
4280 | content: "\e7fa"; } | ||
4281 | |||
4282 | .mdi-image-control-point-duplicate:before { | ||
4283 | content: "\e7fb"; } | ||
4284 | |||
4285 | .mdi-image-control-point:before { | ||
4286 | content: "\e7fc"; } | ||
4287 | |||
4288 | .mdi-image-crop-3-2:before { | ||
4289 | content: "\e7fd"; } | ||
4290 | |||
4291 | .mdi-image-crop-5-4:before { | ||
4292 | content: "\e7fe"; } | ||
4293 | |||
4294 | .mdi-image-crop-7-5:before { | ||
4295 | content: "\e7ff"; } | ||
4296 | |||
4297 | .mdi-image-crop-16-9:before { | ||
4298 | content: "\e800"; } | ||
4299 | |||
4300 | .mdi-image-crop-din:before { | ||
4301 | content: "\e801"; } | ||
4302 | |||
4303 | .mdi-image-crop-free:before { | ||
4304 | content: "\e802"; } | ||
4305 | |||
4306 | .mdi-image-crop-landscape:before { | ||
4307 | content: "\e803"; } | ||
4308 | |||
4309 | .mdi-image-crop-original:before { | ||
4310 | content: "\e804"; } | ||
4311 | |||
4312 | .mdi-image-crop-portrait:before { | ||
4313 | content: "\e805"; } | ||
4314 | |||
4315 | .mdi-image-crop-square:before { | ||
4316 | content: "\e806"; } | ||
4317 | |||
4318 | .mdi-image-crop:before { | ||
4319 | content: "\e807"; } | ||
4320 | |||
4321 | .mdi-image-dehaze:before { | ||
4322 | content: "\e808"; } | ||
4323 | |||
4324 | .mdi-image-details:before { | ||
4325 | content: "\e809"; } | ||
4326 | |||
4327 | .mdi-image-edit:before { | ||
4328 | content: "\e80a"; } | ||
4329 | |||
4330 | .mdi-image-exposure-minus-1:before { | ||
4331 | content: "\e80b"; } | ||
4332 | |||
4333 | .mdi-image-exposure-minus-2:before { | ||
4334 | content: "\e80c"; } | ||
4335 | |||
4336 | .mdi-image-exposure-plus-1:before { | ||
4337 | content: "\e80d"; } | ||
4338 | |||
4339 | .mdi-image-exposure-plus-2:before { | ||
4340 | content: "\e80e"; } | ||
4341 | |||
4342 | .mdi-image-exposure-zero:before { | ||
4343 | content: "\e80f"; } | ||
4344 | |||
4345 | .mdi-image-exposure:before { | ||
4346 | content: "\e810"; } | ||
4347 | |||
4348 | .mdi-image-filter-1:before { | ||
4349 | content: "\e811"; } | ||
4350 | |||
4351 | .mdi-image-filter-2:before { | ||
4352 | content: "\e812"; } | ||
4353 | |||
4354 | .mdi-image-filter-3:before { | ||
4355 | content: "\e813"; } | ||
4356 | |||
4357 | .mdi-image-filter-4:before { | ||
4358 | content: "\e814"; } | ||
4359 | |||
4360 | .mdi-image-filter-5:before { | ||
4361 | content: "\e815"; } | ||
4362 | |||
4363 | .mdi-image-filter-6:before { | ||
4364 | content: "\e816"; } | ||
4365 | |||
4366 | .mdi-image-filter-7:before { | ||
4367 | content: "\e817"; } | ||
4368 | |||
4369 | .mdi-image-filter-8:before { | ||
4370 | content: "\e818"; } | ||
4371 | |||
4372 | .mdi-image-filter-9-plus:before { | ||
4373 | content: "\e819"; } | ||
4374 | |||
4375 | .mdi-image-filter-9:before { | ||
4376 | content: "\e81a"; } | ||
4377 | |||
4378 | .mdi-image-filter-b-and-w:before { | ||
4379 | content: "\e81b"; } | ||
4380 | |||
4381 | .mdi-image-filter-center-focus:before { | ||
4382 | content: "\e81c"; } | ||
4383 | |||
4384 | .mdi-image-filter-drama:before { | ||
4385 | content: "\e81d"; } | ||
4386 | |||
4387 | .mdi-image-filter-frames:before { | ||
4388 | content: "\e81e"; } | ||
4389 | |||
4390 | .mdi-image-filter-hdr:before { | ||
4391 | content: "\e81f"; } | ||
4392 | |||
4393 | .mdi-image-filter-none:before { | ||
4394 | content: "\e820"; } | ||
4395 | |||
4396 | .mdi-image-filter-tilt-shift:before { | ||
4397 | content: "\e821"; } | ||
4398 | |||
4399 | .mdi-image-filter-vintage:before { | ||
4400 | content: "\e822"; } | ||
4401 | |||
4402 | .mdi-image-filter:before { | ||
4403 | content: "\e823"; } | ||
4404 | |||
4405 | .mdi-image-flare:before { | ||
4406 | content: "\e824"; } | ||
4407 | |||
4408 | .mdi-image-flash-auto:before { | ||
4409 | content: "\e825"; } | ||
4410 | |||
4411 | .mdi-image-flash-off:before { | ||
4412 | content: "\e826"; } | ||
4413 | |||
4414 | .mdi-image-flash-on:before { | ||
4415 | content: "\e827"; } | ||
4416 | |||
4417 | .mdi-image-flip:before { | ||
4418 | content: "\e828"; } | ||
4419 | |||
4420 | .mdi-image-gradient:before { | ||
4421 | content: "\e829"; } | ||
4422 | |||
4423 | .mdi-image-grain:before { | ||
4424 | content: "\e82a"; } | ||
4425 | |||
4426 | .mdi-image-grid-off:before { | ||
4427 | content: "\e82b"; } | ||
4428 | |||
4429 | .mdi-image-grid-on:before { | ||
4430 | content: "\e82c"; } | ||
4431 | |||
4432 | .mdi-image-hdr-off:before { | ||
4433 | content: "\e82d"; } | ||
4434 | |||
4435 | .mdi-image-hdr-on:before { | ||
4436 | content: "\e82e"; } | ||
4437 | |||
4438 | .mdi-image-hdr-strong:before { | ||
4439 | content: "\e82f"; } | ||
4440 | |||
4441 | .mdi-image-hdr-weak:before { | ||
4442 | content: "\e830"; } | ||
4443 | |||
4444 | .mdi-image-healing:before { | ||
4445 | content: "\e831"; } | ||
4446 | |||
4447 | .mdi-image-image-aspect-ratio:before { | ||
4448 | content: "\e832"; } | ||
4449 | |||
4450 | .mdi-image-image:before { | ||
4451 | content: "\e833"; } | ||
4452 | |||
4453 | .mdi-image-iso:before { | ||
4454 | content: "\e834"; } | ||
4455 | |||
4456 | .mdi-image-landscape:before { | ||
4457 | content: "\e835"; } | ||
4458 | |||
4459 | .mdi-image-leak-add:before { | ||
4460 | content: "\e836"; } | ||
4461 | |||
4462 | .mdi-image-leak-remove:before { | ||
4463 | content: "\e837"; } | ||
4464 | |||
4465 | .mdi-image-lens:before { | ||
4466 | content: "\e838"; } | ||
4467 | |||
4468 | .mdi-image-looks-3:before { | ||
4469 | content: "\e839"; } | ||
4470 | |||
4471 | .mdi-image-looks-4:before { | ||
4472 | content: "\e83a"; } | ||
4473 | |||
4474 | .mdi-image-looks-5:before { | ||
4475 | content: "\e83b"; } | ||
4476 | |||
4477 | .mdi-image-looks-6:before { | ||
4478 | content: "\e83c"; } | ||
4479 | |||
4480 | .mdi-image-looks-one:before { | ||
4481 | content: "\e83d"; } | ||
4482 | |||
4483 | .mdi-image-looks-two:before { | ||
4484 | content: "\e83e"; } | ||
4485 | |||
4486 | .mdi-image-looks:before { | ||
4487 | content: "\e83f"; } | ||
4488 | |||
4489 | .mdi-image-loupe:before { | ||
4490 | content: "\e840"; } | ||
4491 | |||
4492 | .mdi-image-movie-creation:before { | ||
4493 | content: "\e841"; } | ||
4494 | |||
4495 | .mdi-image-nature-people:before { | ||
4496 | content: "\e842"; } | ||
4497 | |||
4498 | .mdi-image-nature:before { | ||
4499 | content: "\e843"; } | ||
4500 | |||
4501 | .mdi-image-navigate-before:before { | ||
4502 | content: "\e844"; } | ||
4503 | |||
4504 | .mdi-image-navigate-next:before { | ||
4505 | content: "\e845"; } | ||
4506 | |||
4507 | .mdi-image-palette:before { | ||
4508 | content: "\e846"; } | ||
4509 | |||
4510 | .mdi-image-panorama-fisheye:before { | ||
4511 | content: "\e847"; } | ||
4512 | |||
4513 | .mdi-image-panorama-horizontal:before { | ||
4514 | content: "\e848"; } | ||
4515 | |||
4516 | .mdi-image-panorama-vertical:before { | ||
4517 | content: "\e849"; } | ||
4518 | |||
4519 | .mdi-image-panorama-wide-angle:before { | ||
4520 | content: "\e84a"; } | ||
4521 | |||
4522 | .mdi-image-panorama:before { | ||
4523 | content: "\e84b"; } | ||
4524 | |||
4525 | .mdi-image-photo-album:before { | ||
4526 | content: "\e84c"; } | ||
4527 | |||
4528 | .mdi-image-photo-camera:before { | ||
4529 | content: "\e84d"; } | ||
4530 | |||
4531 | .mdi-image-photo-library:before { | ||
4532 | content: "\e84e"; } | ||
4533 | |||
4534 | .mdi-image-photo:before { | ||
4535 | content: "\e84f"; } | ||
4536 | |||
4537 | .mdi-image-portrait:before { | ||
4538 | content: "\e850"; } | ||
4539 | |||
4540 | .mdi-image-remove-red-eye:before { | ||
4541 | content: "\e851"; } | ||
4542 | |||
4543 | .mdi-image-rotate-left:before { | ||
4544 | content: "\e852"; } | ||
4545 | |||
4546 | .mdi-image-rotate-right:before { | ||
4547 | content: "\e853"; } | ||
4548 | |||
4549 | .mdi-image-slideshow:before { | ||
4550 | content: "\e854"; } | ||
4551 | |||
4552 | .mdi-image-straighten:before { | ||
4553 | content: "\e855"; } | ||
4554 | |||
4555 | .mdi-image-style:before { | ||
4556 | content: "\e856"; } | ||
4557 | |||
4558 | .mdi-image-switch-camera:before { | ||
4559 | content: "\e857"; } | ||
4560 | |||
4561 | .mdi-image-switch-video:before { | ||
4562 | content: "\e858"; } | ||
4563 | |||
4564 | .mdi-image-tag-faces:before { | ||
4565 | content: "\e859"; } | ||
4566 | |||
4567 | .mdi-image-texture:before { | ||
4568 | content: "\e85a"; } | ||
4569 | |||
4570 | .mdi-image-timelapse:before { | ||
4571 | content: "\e85b"; } | ||
4572 | |||
4573 | .mdi-image-timer-3:before { | ||
4574 | content: "\e85c"; } | ||
4575 | |||
4576 | .mdi-image-timer-10:before { | ||
4577 | content: "\e85d"; } | ||
4578 | |||
4579 | .mdi-image-timer-auto:before { | ||
4580 | content: "\e85e"; } | ||
4581 | |||
4582 | .mdi-image-timer-off:before { | ||
4583 | content: "\e85f"; } | ||
4584 | |||
4585 | .mdi-image-timer:before { | ||
4586 | content: "\e860"; } | ||
4587 | |||
4588 | .mdi-image-tonality:before { | ||
4589 | content: "\e861"; } | ||
4590 | |||
4591 | .mdi-image-transform:before { | ||
4592 | content: "\e862"; } | ||
4593 | |||
4594 | .mdi-image-tune:before { | ||
4595 | content: "\e863"; } | ||
4596 | |||
4597 | .mdi-image-wb-auto:before { | ||
4598 | content: "\e864"; } | ||
4599 | |||
4600 | .mdi-image-wb-cloudy:before { | ||
4601 | content: "\e865"; } | ||
4602 | |||
4603 | .mdi-image-wb-incandescent:before { | ||
4604 | content: "\e866"; } | ||
4605 | |||
4606 | .mdi-image-wb-irradescent:before { | ||
4607 | content: "\e867"; } | ||
4608 | |||
4609 | .mdi-image-wb-sunny:before { | ||
4610 | content: "\e868"; } | ||
4611 | |||
4612 | .mdi-maps-beenhere:before { | ||
4613 | content: "\e869"; } | ||
4614 | |||
4615 | .mdi-maps-directions-bike:before { | ||
4616 | content: "\e86a"; } | ||
4617 | |||
4618 | .mdi-maps-directions-bus:before { | ||
4619 | content: "\e86b"; } | ||
4620 | |||
4621 | .mdi-maps-directions-car:before { | ||
4622 | content: "\e86c"; } | ||
4623 | |||
4624 | .mdi-maps-directions-ferry:before { | ||
4625 | content: "\e86d"; } | ||
4626 | |||
4627 | .mdi-maps-directions-subway:before { | ||
4628 | content: "\e86e"; } | ||
4629 | |||
4630 | .mdi-maps-directions-train:before { | ||
4631 | content: "\e86f"; } | ||
4632 | |||
4633 | .mdi-maps-directions-transit:before { | ||
4634 | content: "\e870"; } | ||
4635 | |||
4636 | .mdi-maps-directions-walk:before { | ||
4637 | content: "\e871"; } | ||
4638 | |||
4639 | .mdi-maps-directions:before { | ||
4640 | content: "\e872"; } | ||
4641 | |||
4642 | .mdi-maps-flight:before { | ||
4643 | content: "\e873"; } | ||
4644 | |||
4645 | .mdi-maps-hotel:before { | ||
4646 | content: "\e874"; } | ||
4647 | |||
4648 | .mdi-maps-layers-clear:before { | ||
4649 | content: "\e875"; } | ||
4650 | |||
4651 | .mdi-maps-layers:before { | ||
4652 | content: "\e876"; } | ||
4653 | |||
4654 | .mdi-maps-local-airport:before { | ||
4655 | content: "\e877"; } | ||
4656 | |||
4657 | .mdi-maps-local-atm:before { | ||
4658 | content: "\e878"; } | ||
4659 | |||
4660 | .mdi-maps-local-attraction:before { | ||
4661 | content: "\e879"; } | ||
4662 | |||
4663 | .mdi-maps-local-bar:before { | ||
4664 | content: "\e87a"; } | ||
4665 | |||
4666 | .mdi-maps-local-cafe:before { | ||
4667 | content: "\e87b"; } | ||
4668 | |||
4669 | .mdi-maps-local-car-wash:before { | ||
4670 | content: "\e87c"; } | ||
4671 | |||
4672 | .mdi-maps-local-convenience-store:before { | ||
4673 | content: "\e87d"; } | ||
4674 | |||
4675 | .mdi-maps-local-drink:before { | ||
4676 | content: "\e87e"; } | ||
4677 | |||
4678 | .mdi-maps-local-florist:before { | ||
4679 | content: "\e87f"; } | ||
4680 | |||
4681 | .mdi-maps-local-gas-station:before { | ||
4682 | content: "\e880"; } | ||
4683 | |||
4684 | .mdi-maps-local-grocery-store:before { | ||
4685 | content: "\e881"; } | ||
4686 | |||
4687 | .mdi-maps-local-hospital:before { | ||
4688 | content: "\e882"; } | ||
4689 | |||
4690 | .mdi-maps-local-hotel:before { | ||
4691 | content: "\e883"; } | ||
4692 | |||
4693 | .mdi-maps-local-laundry-service:before { | ||
4694 | content: "\e884"; } | ||
4695 | |||
4696 | .mdi-maps-local-library:before { | ||
4697 | content: "\e885"; } | ||
4698 | |||
4699 | .mdi-maps-local-mall:before { | ||
4700 | content: "\e886"; } | ||
4701 | |||
4702 | .mdi-maps-local-movies:before { | ||
4703 | content: "\e887"; } | ||
4704 | |||
4705 | .mdi-maps-local-offer:before { | ||
4706 | content: "\e888"; } | ||
4707 | |||
4708 | .mdi-maps-local-parking:before { | ||
4709 | content: "\e889"; } | ||
4710 | |||
4711 | .mdi-maps-local-pharmacy:before { | ||
4712 | content: "\e88a"; } | ||
4713 | |||
4714 | .mdi-maps-local-phone:before { | ||
4715 | content: "\e88b"; } | ||
4716 | |||
4717 | .mdi-maps-local-pizza:before { | ||
4718 | content: "\e88c"; } | ||
4719 | |||
4720 | .mdi-maps-local-play:before { | ||
4721 | content: "\e88d"; } | ||
4722 | |||
4723 | .mdi-maps-local-post-office:before { | ||
4724 | content: "\e88e"; } | ||
4725 | |||
4726 | .mdi-maps-local-print-shop:before { | ||
4727 | content: "\e88f"; } | ||
4728 | |||
4729 | .mdi-maps-local-restaurant:before { | ||
4730 | content: "\e890"; } | ||
4731 | |||
4732 | .mdi-maps-local-see:before { | ||
4733 | content: "\e891"; } | ||
4734 | |||
4735 | .mdi-maps-local-shipping:before { | ||
4736 | content: "\e892"; } | ||
4737 | |||
4738 | .mdi-maps-local-taxi:before { | ||
4739 | content: "\e893"; } | ||
4740 | |||
4741 | .mdi-maps-location-history:before { | ||
4742 | content: "\e894"; } | ||
4743 | |||
4744 | .mdi-maps-map:before { | ||
4745 | content: "\e895"; } | ||
4746 | |||
4747 | .mdi-maps-my-location:before { | ||
4748 | content: "\e896"; } | ||
4749 | |||
4750 | .mdi-maps-navigation:before { | ||
4751 | content: "\e897"; } | ||
4752 | |||
4753 | .mdi-maps-pin-drop:before { | ||
4754 | content: "\e898"; } | ||
4755 | |||
4756 | .mdi-maps-place:before { | ||
4757 | content: "\e899"; } | ||
4758 | |||
4759 | .mdi-maps-rate-review:before { | ||
4760 | content: "\e89a"; } | ||
4761 | |||
4762 | .mdi-maps-restaurant-menu:before { | ||
4763 | content: "\e89b"; } | ||
4764 | |||
4765 | .mdi-maps-satellite:before { | ||
4766 | content: "\e89c"; } | ||
4767 | |||
4768 | .mdi-maps-store-mall-directory:before { | ||
4769 | content: "\e89d"; } | ||
4770 | |||
4771 | .mdi-maps-terrain:before { | ||
4772 | content: "\e89e"; } | ||
4773 | |||
4774 | .mdi-maps-traffic:before { | ||
4775 | content: "\e89f"; } | ||
4776 | |||
4777 | .mdi-navigation-apps:before { | ||
4778 | content: "\e8a0"; } | ||
4779 | |||
4780 | .mdi-navigation-arrow-back:before { | ||
4781 | content: "\e8a1"; } | ||
4782 | |||
4783 | .mdi-navigation-arrow-drop-down-circle:before { | ||
4784 | content: "\e8a2"; } | ||
4785 | |||
4786 | .mdi-navigation-arrow-drop-down:before { | ||
4787 | content: "\e8a3"; } | ||
4788 | |||
4789 | .mdi-navigation-arrow-drop-up:before { | ||
4790 | content: "\e8a4"; } | ||
4791 | |||
4792 | .mdi-navigation-arrow-forward:before { | ||
4793 | content: "\e8a5"; } | ||
4794 | |||
4795 | .mdi-navigation-cancel:before { | ||
4796 | content: "\e8a6"; } | ||
4797 | |||
4798 | .mdi-navigation-check:before { | ||
4799 | content: "\e8a7"; } | ||
4800 | |||
4801 | .mdi-navigation-chevron-left:before { | ||
4802 | content: "\e8a8"; } | ||
4803 | |||
4804 | .mdi-navigation-chevron-right:before { | ||
4805 | content: "\e8a9"; } | ||
4806 | |||
4807 | .mdi-navigation-close:before { | ||
4808 | content: "\e8aa"; } | ||
4809 | |||
4810 | .mdi-navigation-expand-less:before { | ||
4811 | content: "\e8ab"; } | ||
4812 | |||
4813 | .mdi-navigation-expand-more:before { | ||
4814 | content: "\e8ac"; } | ||
4815 | |||
4816 | .mdi-navigation-fullscreen-exit:before { | ||
4817 | content: "\e8ad"; } | ||
4818 | |||
4819 | .mdi-navigation-fullscreen:before { | ||
4820 | content: "\e8ae"; } | ||
4821 | |||
4822 | .mdi-navigation-menu:before { | ||
4823 | content: "\e8af"; } | ||
4824 | |||
4825 | .mdi-navigation-more-horiz:before { | ||
4826 | content: "\e8b0"; } | ||
4827 | |||
4828 | .mdi-navigation-more-vert:before { | ||
4829 | content: "\e8b1"; } | ||
4830 | |||
4831 | .mdi-navigation-refresh:before { | ||
4832 | content: "\e8b2"; } | ||
4833 | |||
4834 | .mdi-navigation-unfold-less:before { | ||
4835 | content: "\e8b3"; } | ||
4836 | |||
4837 | .mdi-navigation-unfold-more:before { | ||
4838 | content: "\e8b4"; } | ||
4839 | |||
4840 | .mdi-notification-adb:before { | ||
4841 | content: "\e8b5"; } | ||
4842 | |||
4843 | .mdi-notification-bluetooth-audio:before { | ||
4844 | content: "\e8b6"; } | ||
4845 | |||
4846 | .mdi-notification-disc-full:before { | ||
4847 | content: "\e8b7"; } | ||
4848 | |||
4849 | .mdi-notification-dnd-forwardslash:before { | ||
4850 | content: "\e8b8"; } | ||
4851 | |||
4852 | .mdi-notification-do-not-disturb:before { | ||
4853 | content: "\e8b9"; } | ||
4854 | |||
4855 | .mdi-notification-drive-eta:before { | ||
4856 | content: "\e8ba"; } | ||
4857 | |||
4858 | .mdi-notification-event-available:before { | ||
4859 | content: "\e8bb"; } | ||
4860 | |||
4861 | .mdi-notification-event-busy:before { | ||
4862 | content: "\e8bc"; } | ||
4863 | |||
4864 | .mdi-notification-event-note:before { | ||
4865 | content: "\e8bd"; } | ||
4866 | |||
4867 | .mdi-notification-folder-special:before { | ||
4868 | content: "\e8be"; } | ||
4869 | |||
4870 | .mdi-notification-mms:before { | ||
4871 | content: "\e8bf"; } | ||
4872 | |||
4873 | .mdi-notification-more:before { | ||
4874 | content: "\e8c0"; } | ||
4875 | |||
4876 | .mdi-notification-network-locked:before { | ||
4877 | content: "\e8c1"; } | ||
4878 | |||
4879 | .mdi-notification-phone-bluetooth-speaker:before { | ||
4880 | content: "\e8c2"; } | ||
4881 | |||
4882 | .mdi-notification-phone-forwarded:before { | ||
4883 | content: "\e8c3"; } | ||
4884 | |||
4885 | .mdi-notification-phone-in-talk:before { | ||
4886 | content: "\e8c4"; } | ||
4887 | |||
4888 | .mdi-notification-phone-locked:before { | ||
4889 | content: "\e8c5"; } | ||
4890 | |||
4891 | .mdi-notification-phone-missed:before { | ||
4892 | content: "\e8c6"; } | ||
4893 | |||
4894 | .mdi-notification-phone-paused:before { | ||
4895 | content: "\e8c7"; } | ||
4896 | |||
4897 | .mdi-notification-play-download:before { | ||
4898 | content: "\e8c8"; } | ||
4899 | |||
4900 | .mdi-notification-play-install:before { | ||
4901 | content: "\e8c9"; } | ||
4902 | |||
4903 | .mdi-notification-sd-card:before { | ||
4904 | content: "\e8ca"; } | ||
4905 | |||
4906 | .mdi-notification-sim-card-alert:before { | ||
4907 | content: "\e8cb"; } | ||
4908 | |||
4909 | .mdi-notification-sms-failed:before { | ||
4910 | content: "\e8cc"; } | ||
4911 | |||
4912 | .mdi-notification-sms:before { | ||
4913 | content: "\e8cd"; } | ||
4914 | |||
4915 | .mdi-notification-sync-disabled:before { | ||
4916 | content: "\e8ce"; } | ||
4917 | |||
4918 | .mdi-notification-sync-problem:before { | ||
4919 | content: "\e8cf"; } | ||
4920 | |||
4921 | .mdi-notification-sync:before { | ||
4922 | content: "\e8d0"; } | ||
4923 | |||
4924 | .mdi-notification-system-update:before { | ||
4925 | content: "\e8d1"; } | ||
4926 | |||
4927 | .mdi-notification-tap-and-play:before { | ||
4928 | content: "\e8d2"; } | ||
4929 | |||
4930 | .mdi-notification-time-to-leave:before { | ||
4931 | content: "\e8d3"; } | ||
4932 | |||
4933 | .mdi-notification-vibration:before { | ||
4934 | content: "\e8d4"; } | ||
4935 | |||
4936 | .mdi-notification-voice-chat:before { | ||
4937 | content: "\e8d5"; } | ||
4938 | |||
4939 | .mdi-notification-vpn-lock:before { | ||
4940 | content: "\e8d6"; } | ||
4941 | |||
4942 | .mdi-social-cake:before { | ||
4943 | content: "\e8d7"; } | ||
4944 | |||
4945 | .mdi-social-domain:before { | ||
4946 | content: "\e8d8"; } | ||
4947 | |||
4948 | .mdi-social-group-add:before { | ||
4949 | content: "\e8d9"; } | ||
4950 | |||
4951 | .mdi-social-group:before { | ||
4952 | content: "\e8da"; } | ||
4953 | |||
4954 | .mdi-social-location-city:before { | ||
4955 | content: "\e8db"; } | ||
4956 | |||
4957 | .mdi-social-mood:before { | ||
4958 | content: "\e8dc"; } | ||
4959 | |||
4960 | .mdi-social-notifications-none:before { | ||
4961 | content: "\e8dd"; } | ||
4962 | |||
4963 | .mdi-social-notifications-off:before { | ||
4964 | content: "\e8de"; } | ||
4965 | |||
4966 | .mdi-social-notifications-on:before { | ||
4967 | content: "\e8df"; } | ||
4968 | |||
4969 | .mdi-social-notifications-paused:before { | ||
4970 | content: "\e8e0"; } | ||
4971 | |||
4972 | .mdi-social-notifications:before { | ||
4973 | content: "\e8e1"; } | ||
4974 | |||
4975 | .mdi-social-pages:before { | ||
4976 | content: "\e8e2"; } | ||
4977 | |||
4978 | .mdi-social-party-mode:before { | ||
4979 | content: "\e8e3"; } | ||
4980 | |||
4981 | .mdi-social-people-outline:before { | ||
4982 | content: "\e8e4"; } | ||
4983 | |||
4984 | .mdi-social-people:before { | ||
4985 | content: "\e8e5"; } | ||
4986 | |||
4987 | .mdi-social-person-add:before { | ||
4988 | content: "\e8e6"; } | ||
4989 | |||
4990 | .mdi-social-person-outline:before { | ||
4991 | content: "\e8e7"; } | ||
4992 | |||
4993 | .mdi-social-person:before { | ||
4994 | content: "\e8e8"; } | ||
4995 | |||
4996 | .mdi-social-plus-one:before { | ||
4997 | content: "\e8e9"; } | ||
4998 | |||
4999 | .mdi-social-poll:before { | ||
5000 | content: "\e8ea"; } | ||
5001 | |||
5002 | .mdi-social-public:before { | ||
5003 | content: "\e8eb"; } | ||
5004 | |||
5005 | .mdi-social-school:before { | ||
5006 | content: "\e8ec"; } | ||
5007 | |||
5008 | .mdi-social-share:before { | ||
5009 | content: "\e8ed"; } | ||
5010 | |||
5011 | .mdi-social-whatshot:before { | ||
5012 | content: "\e8ee"; } | ||
5013 | |||
5014 | .mdi-toggle-check-box-outline-blank:before { | ||
5015 | content: "\e8ef"; } | ||
5016 | |||
5017 | .mdi-toggle-check-box:before { | ||
5018 | content: "\e8f0"; } | ||
5019 | |||
5020 | .mdi-toggle-radio-button-off:before { | ||
5021 | content: "\e8f1"; } | ||
5022 | |||
5023 | .mdi-toggle-radio-button-on:before { | ||
5024 | content: "\e8f2"; } | ||
5025 | |||
5026 | .mdi-toggle-star-half:before { | ||
5027 | content: "\e8f3"; } | ||
5028 | |||
5029 | .mdi-toggle-star-outline:before { | ||
5030 | content: "\e8f4"; } | ||
5031 | |||
5032 | .mdi-toggle-star:before { | ||
5033 | content: "\e8f5"; } | ||
5034 | |||
5035 | .container { | ||
5036 | margin: 0 auto; | ||
5037 | max-width: 1280px; | ||
5038 | width: 90%; } | ||
5039 | |||
5040 | @media only screen and (min-width : 601px) { | ||
5041 | .container { | ||
5042 | width: 85%; } } | ||
5043 | |||
5044 | @media only screen and (min-width : 993px) { | ||
5045 | .container { | ||
5046 | width: 70%; } } | ||
5047 | |||
5048 | .container .row { | ||
5049 | margin-left: -0.75rem; | ||
5050 | margin-right: -0.75rem; } | ||
5051 | |||
5052 | .section { | ||
5053 | padding-top: 1rem; | ||
5054 | padding-bottom: 1rem; } | ||
5055 | .section.no-pad { | ||
5056 | padding: 0; } | ||
5057 | .section.no-pad-bot { | ||
5058 | padding-bottom: 0; } | ||
5059 | .section.no-pad-top { | ||
5060 | padding-top: 0; } | ||
5061 | |||
5062 | .row { | ||
5063 | margin-left: auto; | ||
5064 | margin-right: auto; | ||
5065 | margin-bottom: 20px; } | ||
5066 | .row:after { | ||
5067 | content: ""; | ||
5068 | display: table; | ||
5069 | clear: both; } | ||
5070 | .row .col { | ||
5071 | float: left; | ||
5072 | -webkit-box-sizing: border-box; | ||
5073 | -moz-box-sizing: border-box; | ||
5074 | box-sizing: border-box; | ||
5075 | padding: 0 0.75rem; } | ||
5076 | .row .col.s1 { | ||
5077 | width: 8.33333%; | ||
5078 | margin-left: 0; } | ||
5079 | .row .col.s2 { | ||
5080 | width: 16.66667%; | ||
5081 | margin-left: 0; } | ||
5082 | .row .col.s3 { | ||
5083 | width: 25%; | ||
5084 | margin-left: 0; } | ||
5085 | .row .col.s4 { | ||
5086 | width: 33.33333%; | ||
5087 | margin-left: 0; } | ||
5088 | .row .col.s5 { | ||
5089 | width: 41.66667%; | ||
5090 | margin-left: 0; } | ||
5091 | .row .col.s6 { | ||
5092 | width: 50%; | ||
5093 | margin-left: 0; } | ||
5094 | .row .col.s7 { | ||
5095 | width: 58.33333%; | ||
5096 | margin-left: 0; } | ||
5097 | .row .col.s8 { | ||
5098 | width: 66.66667%; | ||
5099 | margin-left: 0; } | ||
5100 | .row .col.s9 { | ||
5101 | width: 75%; | ||
5102 | margin-left: 0; } | ||
5103 | .row .col.s10 { | ||
5104 | width: 83.33333%; | ||
5105 | margin-left: 0; } | ||
5106 | .row .col.s11 { | ||
5107 | width: 91.66667%; | ||
5108 | margin-left: 0; } | ||
5109 | .row .col.s12 { | ||
5110 | width: 100%; | ||
5111 | margin-left: 0; } | ||
5112 | .row .col.offset-s1 { | ||
5113 | margin-left: 8.33333%; } | ||
5114 | .row .col.offset-s2 { | ||
5115 | margin-left: 16.66667%; } | ||
5116 | .row .col.offset-s3 { | ||
5117 | margin-left: 25%; } | ||
5118 | .row .col.offset-s4 { | ||
5119 | margin-left: 33.33333%; } | ||
5120 | .row .col.offset-s5 { | ||
5121 | margin-left: 41.66667%; } | ||
5122 | .row .col.offset-s6 { | ||
5123 | margin-left: 50%; } | ||
5124 | .row .col.offset-s7 { | ||
5125 | margin-left: 58.33333%; } | ||
5126 | .row .col.offset-s8 { | ||
5127 | margin-left: 66.66667%; } | ||
5128 | .row .col.offset-s9 { | ||
5129 | margin-left: 75%; } | ||
5130 | .row .col.offset-s10 { | ||
5131 | margin-left: 83.33333%; } | ||
5132 | .row .col.offset-s11 { | ||
5133 | margin-left: 91.66667%; } | ||
5134 | .row .col.offset-s12 { | ||
5135 | margin-left: 100%; } | ||
5136 | @media only screen and (min-width : 601px) { | ||
5137 | .row .col.m1 { | ||
5138 | width: 8.33333%; | ||
5139 | margin-left: 0; } | ||
5140 | .row .col.m2 { | ||
5141 | width: 16.66667%; | ||
5142 | margin-left: 0; } | ||
5143 | .row .col.m3 { | ||
5144 | width: 25%; | ||
5145 | margin-left: 0; } | ||
5146 | .row .col.m4 { | ||
5147 | width: 33.33333%; | ||
5148 | margin-left: 0; } | ||
5149 | .row .col.m5 { | ||
5150 | width: 41.66667%; | ||
5151 | margin-left: 0; } | ||
5152 | .row .col.m6 { | ||
5153 | width: 50%; | ||
5154 | margin-left: 0; } | ||
5155 | .row .col.m7 { | ||
5156 | width: 58.33333%; | ||
5157 | margin-left: 0; } | ||
5158 | .row .col.m8 { | ||
5159 | width: 66.66667%; | ||
5160 | margin-left: 0; } | ||
5161 | .row .col.m9 { | ||
5162 | width: 75%; | ||
5163 | margin-left: 0; } | ||
5164 | .row .col.m10 { | ||
5165 | width: 83.33333%; | ||
5166 | margin-left: 0; } | ||
5167 | .row .col.m11 { | ||
5168 | width: 91.66667%; | ||
5169 | margin-left: 0; } | ||
5170 | .row .col.m12 { | ||
5171 | width: 100%; | ||
5172 | margin-left: 0; } | ||
5173 | .row .col.offset-m1 { | ||
5174 | margin-left: 8.33333%; } | ||
5175 | .row .col.offset-m2 { | ||
5176 | margin-left: 16.66667%; } | ||
5177 | .row .col.offset-m3 { | ||
5178 | margin-left: 25%; } | ||
5179 | .row .col.offset-m4 { | ||
5180 | margin-left: 33.33333%; } | ||
5181 | .row .col.offset-m5 { | ||
5182 | margin-left: 41.66667%; } | ||
5183 | .row .col.offset-m6 { | ||
5184 | margin-left: 50%; } | ||
5185 | .row .col.offset-m7 { | ||
5186 | margin-left: 58.33333%; } | ||
5187 | .row .col.offset-m8 { | ||
5188 | margin-left: 66.66667%; } | ||
5189 | .row .col.offset-m9 { | ||
5190 | margin-left: 75%; } | ||
5191 | .row .col.offset-m10 { | ||
5192 | margin-left: 83.33333%; } | ||
5193 | .row .col.offset-m11 { | ||
5194 | margin-left: 91.66667%; } | ||
5195 | .row .col.offset-m12 { | ||
5196 | margin-left: 100%; } } | ||
5197 | @media only screen and (min-width : 993px) { | ||
5198 | .row .col.l1 { | ||
5199 | width: 8.33333%; | ||
5200 | margin-left: 0; } | ||
5201 | .row .col.l2 { | ||
5202 | width: 16.66667%; | ||
5203 | margin-left: 0; } | ||
5204 | .row .col.l3 { | ||
5205 | width: 25%; | ||
5206 | margin-left: 0; } | ||
5207 | .row .col.l4 { | ||
5208 | width: 33.33333%; | ||
5209 | margin-left: 0; } | ||
5210 | .row .col.l5 { | ||
5211 | width: 41.66667%; | ||
5212 | margin-left: 0; } | ||
5213 | .row .col.l6 { | ||
5214 | width: 50%; | ||
5215 | margin-left: 0; } | ||
5216 | .row .col.l7 { | ||
5217 | width: 58.33333%; | ||
5218 | margin-left: 0; } | ||
5219 | .row .col.l8 { | ||
5220 | width: 66.66667%; | ||
5221 | margin-left: 0; } | ||
5222 | .row .col.l9 { | ||
5223 | width: 75%; | ||
5224 | margin-left: 0; } | ||
5225 | .row .col.l10 { | ||
5226 | width: 83.33333%; | ||
5227 | margin-left: 0; } | ||
5228 | .row .col.l11 { | ||
5229 | width: 91.66667%; | ||
5230 | margin-left: 0; } | ||
5231 | .row .col.l12 { | ||
5232 | width: 100%; | ||
5233 | margin-left: 0; } | ||
5234 | .row .col.offset-l1 { | ||
5235 | margin-left: 8.33333%; } | ||
5236 | .row .col.offset-l2 { | ||
5237 | margin-left: 16.66667%; } | ||
5238 | .row .col.offset-l3 { | ||
5239 | margin-left: 25%; } | ||
5240 | .row .col.offset-l4 { | ||
5241 | margin-left: 33.33333%; } | ||
5242 | .row .col.offset-l5 { | ||
5243 | margin-left: 41.66667%; } | ||
5244 | .row .col.offset-l6 { | ||
5245 | margin-left: 50%; } | ||
5246 | .row .col.offset-l7 { | ||
5247 | margin-left: 58.33333%; } | ||
5248 | .row .col.offset-l8 { | ||
5249 | margin-left: 66.66667%; } | ||
5250 | .row .col.offset-l9 { | ||
5251 | margin-left: 75%; } | ||
5252 | .row .col.offset-l10 { | ||
5253 | margin-left: 83.33333%; } | ||
5254 | .row .col.offset-l11 { | ||
5255 | margin-left: 91.66667%; } | ||
5256 | .row .col.offset-l12 { | ||
5257 | margin-left: 100%; } } | ||
5258 | |||
5259 | nav { | ||
5260 | color: #fff; | ||
5261 | background-color: #ee6e73; | ||
5262 | width: 100%; | ||
5263 | height: 56px; | ||
5264 | line-height: 56px; } | ||
5265 | nav a { | ||
5266 | color: #fff; } | ||
5267 | nav .nav-wrapper { | ||
5268 | position: relative; | ||
5269 | height: 100%; } | ||
5270 | nav .nav-wrapper i { | ||
5271 | display: block; | ||
5272 | font-size: 2rem; } | ||
5273 | @media only screen and (min-width : 993px) { | ||
5274 | nav a.button-collapse { | ||
5275 | display: none; } } | ||
5276 | nav .button-collapse { | ||
5277 | float: left; | ||
5278 | position: relative; | ||
5279 | z-index: 1; | ||
5280 | height: 56px; } | ||
5281 | nav .button-collapse i { | ||
5282 | font-size: 2.7rem; | ||
5283 | height: 56px; | ||
5284 | line-height: 56px; } | ||
5285 | nav .brand-logo { | ||
5286 | position: absolute; | ||
5287 | color: #fff; | ||
5288 | display: inline-block; | ||
5289 | font-size: 2.1rem; | ||
5290 | padding: 0; | ||
5291 | white-space: nowrap; } | ||
5292 | nav .brand-logo.center { | ||
5293 | left: 50%; | ||
5294 | -webkit-transform: translateX(-50%); | ||
5295 | -moz-transform: translateX(-50%); | ||
5296 | -ms-transform: translateX(-50%); | ||
5297 | -o-transform: translateX(-50%); | ||
5298 | transform: translateX(-50%); } | ||
5299 | @media only screen and (max-width : 992px) { | ||
5300 | nav .brand-logo { | ||
5301 | left: 50%; | ||
5302 | -webkit-transform: translateX(-50%); | ||
5303 | -moz-transform: translateX(-50%); | ||
5304 | -ms-transform: translateX(-50%); | ||
5305 | -o-transform: translateX(-50%); | ||
5306 | transform: translateX(-50%); } | ||
5307 | nav .brand-logo.left, nav .brand-logo.right { | ||
5308 | padding: 0; | ||
5309 | -webkit-transform: none; | ||
5310 | -moz-transform: none; | ||
5311 | -ms-transform: none; | ||
5312 | -o-transform: none; | ||
5313 | transform: none; } | ||
5314 | nav .brand-logo.left { | ||
5315 | left: 0.5rem; } | ||
5316 | nav .brand-logo.right { | ||
5317 | right: 0.5rem; | ||
5318 | left: auto; } } | ||
5319 | nav .brand-logo.right { | ||
5320 | right: 0.5rem; | ||
5321 | padding: 0; } | ||
5322 | nav ul { | ||
5323 | margin: 0; } | ||
5324 | nav ul li { | ||
5325 | -webkit-transition: background-color .3s; | ||
5326 | -moz-transition: background-color .3s; | ||
5327 | -o-transition: background-color .3s; | ||
5328 | -ms-transition: background-color .3s; | ||
5329 | transition: background-color .3s; | ||
5330 | float: left; | ||
5331 | padding: 0; } | ||
5332 | nav ul li:hover, nav ul li.active { | ||
5333 | background-color: rgba(0, 0, 0, 0.1); } | ||
5334 | nav ul a { | ||
5335 | font-size: 1rem; | ||
5336 | color: #fff; | ||
5337 | display: block; | ||
5338 | padding: 0 15px; } | ||
5339 | nav ul.left { | ||
5340 | float: left; } | ||
5341 | nav .input-field { | ||
5342 | margin: 0; } | ||
5343 | nav .input-field input { | ||
5344 | height: 100%; | ||
5345 | font-size: 1.2rem; | ||
5346 | border: none; | ||
5347 | padding-left: 2rem; } | ||
5348 | nav .input-field input:focus, nav .input-field input[type=text]:valid, nav .input-field input[type=password]:valid, nav .input-field input[type=email]:valid, nav .input-field input[type=url]:valid, nav .input-field input[type=date]:valid { | ||
5349 | border: none; | ||
5350 | box-shadow: none; } | ||
5351 | nav .input-field label { | ||
5352 | top: 0; | ||
5353 | left: 0; } | ||
5354 | nav .input-field label i { | ||
5355 | color: rgba(255, 255, 255, 0.7); | ||
5356 | -webkit-transition: color .3s; | ||
5357 | -moz-transition: color .3s; | ||
5358 | -o-transition: color .3s; | ||
5359 | -ms-transition: color .3s; | ||
5360 | transition: color .3s; } | ||
5361 | nav .input-field label.active i { | ||
5362 | color: #fff; } | ||
5363 | nav .input-field label.active { | ||
5364 | -webkit-transform: translateY(0); | ||
5365 | -moz-transform: translateY(0); | ||
5366 | -ms-transform: translateY(0); | ||
5367 | -o-transform: translateY(0); | ||
5368 | transform: translateY(0); } | ||
5369 | |||
5370 | .navbar-fixed { | ||
5371 | position: relative; | ||
5372 | height: 56px; | ||
5373 | z-index: 998; } | ||
5374 | .navbar-fixed nav { | ||
5375 | position: fixed; } | ||
5376 | |||
5377 | @media only screen and (min-width : 601px) { | ||
5378 | nav, nav .nav-wrapper i, nav a.button-collapse, nav a.button-collapse i { | ||
5379 | height: 64px; | ||
5380 | line-height: 64px; } | ||
5381 | .navbar-fixed { | ||
5382 | height: 64px; } } | ||
5383 | |||
5384 | @font-face { | ||
5385 | font-family: "Roboto"; | ||
5386 | src: local(Roboto Thin), url("../font/roboto/Roboto-Thin.woff2") format("woff2"), url("../font/roboto/Roboto-Thin.woff") format("woff"), url("../font/roboto/Roboto-Thin.ttf") format("truetype"); | ||
5387 | font-weight: 200; } | ||
5388 | |||
5389 | @font-face { | ||
5390 | font-family: "Roboto"; | ||
5391 | src: local(Roboto Light), url("../font/roboto/Roboto-Light.woff2") format("woff2"), url("../font/roboto/Roboto-Light.woff") format("woff"), url("../font/roboto/Roboto-Light.ttf") format("truetype"); | ||
5392 | font-weight: 300; } | ||
5393 | |||
5394 | @font-face { | ||
5395 | font-family: "Roboto"; | ||
5396 | src: local(Roboto Regular), url("../font/roboto/Roboto-Regular.woff2") format("woff2"), url("../font/roboto/Roboto-Regular.woff") format("woff"), url("../font/roboto/Roboto-Regular.ttf") format("truetype"); | ||
5397 | font-weight: 400; } | ||
5398 | |||
5399 | @font-face { | ||
5400 | font-family: "Roboto"; | ||
5401 | src: url("../font/roboto/Roboto-Medium.woff2") format("woff2"), url("../font/roboto/Roboto-Medium.woff") format("woff"), url("../font/roboto/Roboto-Medium.ttf") format("truetype"); | ||
5402 | font-weight: 500; } | ||
5403 | |||
5404 | @font-face { | ||
5405 | font-family: "Roboto"; | ||
5406 | src: url("../font/roboto/Roboto-Bold.woff2") format("woff2"), url("../font/roboto/Roboto-Bold.woff") format("woff"), url("../font/roboto/Roboto-Bold.ttf") format("truetype"); | ||
5407 | font-weight: 700; } | ||
5408 | |||
5409 | a { | ||
5410 | text-decoration: none; } | ||
5411 | |||
5412 | html { | ||
5413 | line-height: 1.5; | ||
5414 | font-family: "Roboto", sans-serif; | ||
5415 | font-weight: normal; | ||
5416 | color: rgba(0, 0, 0, 0.87); } | ||
5417 | @media only screen and (min-width: 0) { | ||
5418 | html { | ||
5419 | font-size: 14px; } } | ||
5420 | @media only screen and (min-width: 992px) { | ||
5421 | html { | ||
5422 | font-size: 14.5px; } } | ||
5423 | @media only screen and (min-width: 1200px) { | ||
5424 | html { | ||
5425 | font-size: 15px; } } | ||
5426 | |||
5427 | h1, h2, h3, h4, h5, h6 { | ||
5428 | font-weight: 400; | ||
5429 | line-height: 1.1; } | ||
5430 | |||
5431 | h1 a, h2 a, h3 a, h4 a, h5 a, h6 a { | ||
5432 | font-weight: inherit; } | ||
5433 | |||
5434 | h1 { | ||
5435 | font-size: 4.2rem; | ||
5436 | line-height: 110%; | ||
5437 | margin: 2.1rem 0 1.68rem 0; } | ||
5438 | |||
5439 | h2 { | ||
5440 | font-size: 3.56rem; | ||
5441 | line-height: 110%; | ||
5442 | margin: 1.78rem 0 1.424rem 0; } | ||
5443 | |||
5444 | h3 { | ||
5445 | font-size: 2.92rem; | ||
5446 | line-height: 110%; | ||
5447 | margin: 1.46rem 0 1.168rem 0; } | ||
5448 | |||
5449 | h4 { | ||
5450 | font-size: 2.28rem; | ||
5451 | line-height: 110%; | ||
5452 | margin: 1.14rem 0 0.912rem 0; } | ||
5453 | |||
5454 | h5 { | ||
5455 | font-size: 1.64rem; | ||
5456 | line-height: 110%; | ||
5457 | margin: 0.82rem 0 0.656rem 0; } | ||
5458 | |||
5459 | h6 { | ||
5460 | font-size: 1rem; | ||
5461 | line-height: 110%; | ||
5462 | margin: 0.5rem 0 0.4rem 0; } | ||
5463 | |||
5464 | em { | ||
5465 | font-style: italic; } | ||
5466 | |||
5467 | strong { | ||
5468 | font-weight: 500; } | ||
5469 | |||
5470 | small { | ||
5471 | font-size: 75%; } | ||
5472 | |||
5473 | .light, footer.page-footer .footer-copyright { | ||
5474 | font-weight: 300; } | ||
5475 | |||
5476 | .thin { | ||
5477 | font-weight: 200; } | ||
5478 | |||
5479 | .flow-text { | ||
5480 | font-weight: 300; } | ||
5481 | @media only screen and (min-width: 360px) { | ||
5482 | .flow-text { | ||
5483 | font-size: 1.2rem; } } | ||
5484 | @media only screen and (min-width: 390px) { | ||
5485 | .flow-text { | ||
5486 | font-size: 1.224rem; } } | ||
5487 | @media only screen and (min-width: 420px) { | ||
5488 | .flow-text { | ||
5489 | font-size: 1.248rem; } } | ||
5490 | @media only screen and (min-width: 450px) { | ||
5491 | .flow-text { | ||
5492 | font-size: 1.272rem; } } | ||
5493 | @media only screen and (min-width: 480px) { | ||
5494 | .flow-text { | ||
5495 | font-size: 1.296rem; } } | ||
5496 | @media only screen and (min-width: 510px) { | ||
5497 | .flow-text { | ||
5498 | font-size: 1.32rem; } } | ||
5499 | @media only screen and (min-width: 540px) { | ||
5500 | .flow-text { | ||
5501 | font-size: 1.344rem; } } | ||
5502 | @media only screen and (min-width: 570px) { | ||
5503 | .flow-text { | ||
5504 | font-size: 1.368rem; } } | ||
5505 | @media only screen and (min-width: 600px) { | ||
5506 | .flow-text { | ||
5507 | font-size: 1.392rem; } } | ||
5508 | @media only screen and (min-width: 630px) { | ||
5509 | .flow-text { | ||
5510 | font-size: 1.416rem; } } | ||
5511 | @media only screen and (min-width: 660px) { | ||
5512 | .flow-text { | ||
5513 | font-size: 1.44rem; } } | ||
5514 | @media only screen and (min-width: 690px) { | ||
5515 | .flow-text { | ||
5516 | font-size: 1.464rem; } } | ||
5517 | @media only screen and (min-width: 720px) { | ||
5518 | .flow-text { | ||
5519 | font-size: 1.488rem; } } | ||
5520 | @media only screen and (min-width: 750px) { | ||
5521 | .flow-text { | ||
5522 | font-size: 1.512rem; } } | ||
5523 | @media only screen and (min-width: 780px) { | ||
5524 | .flow-text { | ||
5525 | font-size: 1.536rem; } } | ||
5526 | @media only screen and (min-width: 810px) { | ||
5527 | .flow-text { | ||
5528 | font-size: 1.56rem; } } | ||
5529 | @media only screen and (min-width: 840px) { | ||
5530 | .flow-text { | ||
5531 | font-size: 1.584rem; } } | ||
5532 | @media only screen and (min-width: 870px) { | ||
5533 | .flow-text { | ||
5534 | font-size: 1.608rem; } } | ||
5535 | @media only screen and (min-width: 900px) { | ||
5536 | .flow-text { | ||
5537 | font-size: 1.632rem; } } | ||
5538 | @media only screen and (min-width: 930px) { | ||
5539 | .flow-text { | ||
5540 | font-size: 1.656rem; } } | ||
5541 | @media only screen and (min-width: 960px) { | ||
5542 | .flow-text { | ||
5543 | font-size: 1.68rem; } } | ||
5544 | @media only screen and (max-width: 360px) { | ||
5545 | .flow-text { | ||
5546 | font-size: 1.2rem; } } | ||
5547 | |||
5548 | .card-panel { | ||
5549 | transition: box-shadow .25s; | ||
5550 | padding: 20px; | ||
5551 | margin: 0.5rem 0 1rem 0; | ||
5552 | border-radius: 2px; | ||
5553 | background-color: #fff; } | ||
5554 | |||
5555 | .card { | ||
5556 | position: relative; | ||
5557 | overflow: hidden; | ||
5558 | margin: 0.5rem 0 1rem 0; | ||
5559 | background-color: #fff; | ||
5560 | transition: box-shadow .25s; | ||
5561 | border-radius: 2px; } | ||
5562 | .card .card-title { | ||
5563 | color: #fff; | ||
5564 | font-size: 24px; | ||
5565 | font-weight: 300; } | ||
5566 | .card .card-title.activator { | ||
5567 | cursor: pointer; } | ||
5568 | .card.small, .card.medium, .card.large { | ||
5569 | position: relative; } | ||
5570 | .card.small .card-image, .card.medium .card-image, .card.large .card-image { | ||
5571 | overflow: hidden; } | ||
5572 | .card.small .card-content, .card.medium .card-content, .card.large .card-content { | ||
5573 | overflow: hidden; } | ||
5574 | .card.small .card-action, .card.medium .card-action, .card.large .card-action { | ||
5575 | position: absolute; | ||
5576 | bottom: 0; | ||
5577 | left: 0; | ||
5578 | right: 0; } | ||
5579 | .card.small { | ||
5580 | height: 300px; } | ||
5581 | .card.small .card-image { | ||
5582 | height: 150px; } | ||
5583 | .card.small .card-content { | ||
5584 | height: 150px; } | ||
5585 | .card.medium { | ||
5586 | height: 400px; } | ||
5587 | .card.medium .card-image { | ||
5588 | height: 250px; } | ||
5589 | .card.medium .card-content { | ||
5590 | height: 150px; } | ||
5591 | .card.large { | ||
5592 | height: 500px; } | ||
5593 | .card.large .card-image { | ||
5594 | height: 330px; } | ||
5595 | .card.large .card-content { | ||
5596 | height: 170px; } | ||
5597 | .card .card-image { | ||
5598 | position: relative; } | ||
5599 | .card .card-image img { | ||
5600 | display: block; | ||
5601 | border-radius: 2px 2px 0 0; | ||
5602 | position: relative; | ||
5603 | left: 0; | ||
5604 | right: 0; | ||
5605 | top: 0; | ||
5606 | bottom: 0; | ||
5607 | width: 100%; } | ||
5608 | .card .card-image .card-title { | ||
5609 | position: absolute; | ||
5610 | bottom: 0; | ||
5611 | left: 0; | ||
5612 | padding: 20px; } | ||
5613 | .card .card-content { | ||
5614 | padding: 20px; | ||
5615 | border-radius: 0 0 2px 2px; } | ||
5616 | .card .card-content p { | ||
5617 | margin: 0; | ||
5618 | color: inherit; } | ||
5619 | .card .card-content .card-title { | ||
5620 | line-height: 48px; } | ||
5621 | .card .card-action { | ||
5622 | border-top: 1px solid rgba(160, 160, 160, 0.2); | ||
5623 | padding: 20px; } | ||
5624 | .card .card-action a { | ||
5625 | color: #ffab40; | ||
5626 | margin-right: 20px; | ||
5627 | -webkit-transition: color .3s ease; | ||
5628 | -moz-transition: color .3s ease; | ||
5629 | -o-transition: color .3s ease; | ||
5630 | -ms-transition: color .3s ease; | ||
5631 | transition: color .3s ease; | ||
5632 | text-transform: uppercase; } | ||
5633 | .card .card-action a:hover { | ||
5634 | color: #ffd8a6; } | ||
5635 | .card .card-reveal { | ||
5636 | padding: 20px; | ||
5637 | position: absolute; | ||
5638 | background-color: #fff; | ||
5639 | width: 100%; | ||
5640 | overflow-y: auto; | ||
5641 | top: 100%; | ||
5642 | height: 100%; | ||
5643 | z-index: 1; | ||
5644 | display: none; } | ||
5645 | .card .card-reveal .card-title { | ||
5646 | cursor: pointer; | ||
5647 | display: block; } | ||
5648 | |||
5649 | #toast-container { | ||
5650 | display: block; | ||
5651 | position: fixed; | ||
5652 | z-index: 10000; } | ||
5653 | @media only screen and (max-width : 600px) { | ||
5654 | #toast-container { | ||
5655 | min-width: 100%; | ||
5656 | bottom: 0%; } } | ||
5657 | @media only screen and (min-width : 601px) and (max-width : 992px) { | ||
5658 | #toast-container { | ||
5659 | min-width: 30%; | ||
5660 | left: 5%; | ||
5661 | bottom: 7%; } } | ||
5662 | @media only screen and (min-width : 993px) { | ||
5663 | #toast-container { | ||
5664 | min-width: 8%; | ||
5665 | top: 10%; | ||
5666 | right: 7%; } } | ||
5667 | |||
5668 | .toast { | ||
5669 | border-radius: 2px; | ||
5670 | top: 0; | ||
5671 | width: auto; | ||
5672 | clear: both; | ||
5673 | margin-top: 10px; | ||
5674 | position: relative; | ||
5675 | max-width: 100%; | ||
5676 | height: 48px; | ||
5677 | line-height: 48px; | ||
5678 | background-color: #323232; | ||
5679 | padding: 0 25px; | ||
5680 | font-size: 1.1rem; | ||
5681 | font-weight: 300; | ||
5682 | color: #fff; | ||
5683 | display: -webkit-box; | ||
5684 | display: -moz-box; | ||
5685 | display: -ms-flexbox; | ||
5686 | display: -webkit-flex; | ||
5687 | display: flex; | ||
5688 | -webkit-flex-align: center; | ||
5689 | -ms-flex-align: center; | ||
5690 | -webkit-align-items: center; | ||
5691 | align-items: center; | ||
5692 | -webkit-justify-content: space-between; | ||
5693 | justify-content: space-between; } | ||
5694 | .toast .btn, .toast .btn-large, .toast .btn-flat { | ||
5695 | margin: 0; | ||
5696 | margin-left: 3rem; } | ||
5697 | .toast.rounded { | ||
5698 | border-radius: 24px; } | ||
5699 | @media only screen and (max-width : 600px) { | ||
5700 | .toast { | ||
5701 | width: 100%; | ||
5702 | border-radius: 0; } } | ||
5703 | @media only screen and (min-width : 601px) and (max-width : 992px) { | ||
5704 | .toast { | ||
5705 | float: left; } } | ||
5706 | @media only screen and (min-width : 993px) { | ||
5707 | .toast { | ||
5708 | float: right; } } | ||
5709 | |||
5710 | .tabs { | ||
5711 | display: -webkit-box; | ||
5712 | display: -moz-box; | ||
5713 | display: -ms-flexbox; | ||
5714 | display: -webkit-flex; | ||
5715 | display: flex; | ||
5716 | position: relative; | ||
5717 | height: 48px; | ||
5718 | background-color: #fff; | ||
5719 | margin: 0 auto; | ||
5720 | width: 100%; | ||
5721 | white-space: nowrap; } | ||
5722 | .tabs .tab { | ||
5723 | -webkit-box-flex: 1; | ||
5724 | -webkit-flex-grow: 1; | ||
5725 | -ms-flex-positive: 1; | ||
5726 | flex-grow: 1; | ||
5727 | display: block; | ||
5728 | float: left; | ||
5729 | text-align: center; | ||
5730 | line-height: 48px; | ||
5731 | height: 48px; | ||
5732 | padding: 0 20px; | ||
5733 | margin: 0; | ||
5734 | text-transform: uppercase; | ||
5735 | letter-spacing: .8px; | ||
5736 | width: 15%; } | ||
5737 | .tabs .tab a { | ||
5738 | color: #ee6e73; | ||
5739 | display: block; | ||
5740 | width: 100%; | ||
5741 | height: 100%; | ||
5742 | -webkit-transition: color .28s ease; | ||
5743 | -moz-transition: color .28s ease; | ||
5744 | -o-transition: color .28s ease; | ||
5745 | -ms-transition: color .28s ease; | ||
5746 | transition: color .28s ease; } | ||
5747 | .tabs .tab a:hover { | ||
5748 | color: #f9c9cb; } | ||
5749 | .tabs .tab.disabled a { | ||
5750 | color: #f9c9cb; | ||
5751 | cursor: default; } | ||
5752 | .tabs .indicator { | ||
5753 | position: absolute; | ||
5754 | bottom: 0; | ||
5755 | height: 2px; | ||
5756 | background-color: #f6b2b5; | ||
5757 | will-change: left, right; } | ||
5758 | |||
5759 | .tabs .tab { | ||
5760 | padding: 0; } | ||
5761 | |||
5762 | .material-tooltip { | ||
5763 | padding: 10px 8px; | ||
5764 | font-size: 1rem; | ||
5765 | z-index: 2000; | ||
5766 | background-color: transparent; | ||
5767 | border-radius: 2px; | ||
5768 | color: #fff; | ||
5769 | min-height: 36px; | ||
5770 | line-height: 1rem; | ||
5771 | opacity: 0; | ||
5772 | display: none; | ||
5773 | position: absolute; | ||
5774 | text-align: center; | ||
5775 | overflow: hidden; | ||
5776 | left: 0; | ||
5777 | top: 0; | ||
5778 | will-change: top, left; } | ||
5779 | |||
5780 | .backdrop { | ||
5781 | position: absolute; | ||
5782 | opacity: 0; | ||
5783 | display: none; | ||
5784 | height: 7px; | ||
5785 | width: 14px; | ||
5786 | border-radius: 0 0 14px 14px; | ||
5787 | background-color: #323232; | ||
5788 | z-index: -1; | ||
5789 | -webkit-transform-origin: 50% 10%; | ||
5790 | -moz-transform-origin: 50% 10%; | ||
5791 | -ms-transform-origin: 50% 10%; | ||
5792 | -o-transform-origin: 50% 10%; | ||
5793 | transform-origin: 50% 10%; | ||
5794 | will-change: transform, opacity; } | ||
5795 | |||
5796 | .btn, .btn-large, .btn-flat { | ||
5797 | border: none; | ||
5798 | border-radius: 2px; | ||
5799 | display: inline-block; | ||
5800 | height: 36px; | ||
5801 | line-height: 36px; | ||
5802 | outline: 0; | ||
5803 | padding: 0 2rem; | ||
5804 | text-transform: uppercase; | ||
5805 | vertical-align: middle; | ||
5806 | -webkit-tap-highlight-color: transparent; } | ||
5807 | |||
5808 | .btn.disabled, .disabled.btn-large, .btn-floating.disabled, .btn-large.disabled, .btn:disabled, .btn-large:disabled, .btn-large:disabled, .btn-floating:disabled { | ||
5809 | background-color: #DFDFDF !important; | ||
5810 | box-shadow: none; | ||
5811 | color: #9F9F9F !important; | ||
5812 | cursor: default; } | ||
5813 | .btn.disabled *, .disabled.btn-large *, .btn-floating.disabled *, .btn-large.disabled *, .btn:disabled *, .btn-large:disabled *, .btn-large:disabled *, .btn-floating:disabled * { | ||
5814 | pointer-events: none; } | ||
5815 | .btn.disabled:hover, .disabled.btn-large:hover, .btn-floating.disabled:hover, .btn-large.disabled:hover, .btn:disabled:hover, .btn-large:disabled:hover, .btn-large:disabled:hover, .btn-floating:disabled:hover { | ||
5816 | background-color: #DFDFDF; | ||
5817 | color: #9F9F9F; } | ||
5818 | |||
5819 | .btn i, .btn-large i, .btn-floating i, .btn-large i, .btn-flat i { | ||
5820 | font-size: 1.3rem; | ||
5821 | line-height: inherit; } | ||
5822 | |||
5823 | .btn, .btn-large { | ||
5824 | text-decoration: none; | ||
5825 | color: #fff; | ||
5826 | background-color: #26a69a; | ||
5827 | text-align: center; | ||
5828 | letter-spacing: .5px; | ||
5829 | -webkit-transition: .2s ease-out; | ||
5830 | -moz-transition: .2s ease-out; | ||
5831 | -o-transition: .2s ease-out; | ||
5832 | -ms-transition: .2s ease-out; | ||
5833 | transition: .2s ease-out; | ||
5834 | cursor: pointer; } | ||
5835 | .btn:hover, .btn-large:hover { | ||
5836 | background-color: #2bbbad; } | ||
5837 | |||
5838 | .btn-floating { | ||
5839 | display: inline-block; | ||
5840 | color: #fff; | ||
5841 | position: relative; | ||
5842 | overflow: hidden; | ||
5843 | z-index: 1; | ||
5844 | width: 37px; | ||
5845 | height: 37px; | ||
5846 | line-height: 37px; | ||
5847 | padding: 0; | ||
5848 | background-color: #26a69a; | ||
5849 | border-radius: 50%; | ||
5850 | transition: .3s; | ||
5851 | cursor: pointer; | ||
5852 | vertical-align: middle; } | ||
5853 | .btn-floating i { | ||
5854 | width: inherit; | ||
5855 | display: inline-block; | ||
5856 | text-align: center; | ||
5857 | color: #fff; | ||
5858 | font-size: 1.6rem; | ||
5859 | line-height: 37px; } | ||
5860 | .btn-floating:before { | ||
5861 | border-radius: 0; } | ||
5862 | .btn-floating.btn-large { | ||
5863 | width: 55.5px; | ||
5864 | height: 55.5px; } | ||
5865 | .btn-floating.btn-large i { | ||
5866 | line-height: 55.5px; } | ||
5867 | |||
5868 | button.btn-floating { | ||
5869 | border: none; } | ||
5870 | |||
5871 | .fixed-action-btn { | ||
5872 | position: fixed; | ||
5873 | right: 23px; | ||
5874 | bottom: 23px; | ||
5875 | padding-top: 15px; | ||
5876 | margin-bottom: 0; | ||
5877 | z-index: 998; } | ||
5878 | .fixed-action-btn ul { | ||
5879 | left: 0; | ||
5880 | right: 0; | ||
5881 | text-align: center; | ||
5882 | position: absolute; | ||
5883 | bottom: 64px; | ||
5884 | margin: 0; } | ||
5885 | .fixed-action-btn ul li { | ||
5886 | margin-bottom: 15px; } | ||
5887 | .fixed-action-btn ul a.btn-floating { | ||
5888 | opacity: 0; } | ||
5889 | |||
5890 | .btn-flat { | ||
5891 | box-shadow: none; | ||
5892 | background-color: transparent; | ||
5893 | color: #343434; | ||
5894 | cursor: pointer; } | ||
5895 | .btn-flat.disabled { | ||
5896 | color: #b3b3b3; | ||
5897 | cursor: default; } | ||
5898 | |||
5899 | .btn-large { | ||
5900 | height: 54px; | ||
5901 | line-height: 56px; } | ||
5902 | .btn-large i { | ||
5903 | font-size: 1.6rem; } | ||
5904 | |||
5905 | .btn-block { | ||
5906 | display: block; } | ||
5907 | |||
5908 | .dropdown-content { | ||
5909 | background-color: #fff; | ||
5910 | margin: 0; | ||
5911 | display: none; | ||
5912 | min-width: 100px; | ||
5913 | max-height: 650px; | ||
5914 | overflow-y: auto; | ||
5915 | opacity: 0; | ||
5916 | position: absolute; | ||
5917 | z-index: 999; | ||
5918 | will-change: width, height; } | ||
5919 | .dropdown-content li { | ||
5920 | clear: both; | ||
5921 | color: rgba(0, 0, 0, 0.87); | ||
5922 | cursor: pointer; | ||
5923 | line-height: 1.5rem; | ||
5924 | width: 100%; | ||
5925 | text-align: left; | ||
5926 | text-transform: none; } | ||
5927 | .dropdown-content li:hover, .dropdown-content li.active { | ||
5928 | background-color: #eee; } | ||
5929 | .dropdown-content li > a, .dropdown-content li > span { | ||
5930 | font-size: 1.2rem; | ||
5931 | color: #26a69a; | ||
5932 | display: block; | ||
5933 | padding: 1rem 1rem; } | ||
5934 | .dropdown-content li > a > i { | ||
5935 | height: inherit; | ||
5936 | line-height: inherit; } | ||
5937 | |||
5938 | /*! | ||
5939 | * Waves v0.6.0 | ||
5940 | * http://fian.my.id/Waves | ||
5941 | * | ||
5942 | * Copyright 2014 Alfiana E. Sibuea and other contributors | ||
5943 | * Released under the MIT license | ||
5944 | * https://github.com/fians/Waves/blob/master/LICENSE | ||
5945 | */ | ||
5946 | .waves-effect { | ||
5947 | position: relative; | ||
5948 | cursor: pointer; | ||
5949 | display: inline-block; | ||
5950 | overflow: hidden; | ||
5951 | -webkit-user-select: none; | ||
5952 | -moz-user-select: none; | ||
5953 | -ms-user-select: none; | ||
5954 | user-select: none; | ||
5955 | -webkit-tap-highlight-color: transparent; | ||
5956 | vertical-align: middle; | ||
5957 | z-index: 1; | ||
5958 | will-change: opacity, transform; | ||
5959 | -webkit-transition: all .3s ease-out; | ||
5960 | -moz-transition: all .3s ease-out; | ||
5961 | -o-transition: all .3s ease-out; | ||
5962 | -ms-transition: all .3s ease-out; | ||
5963 | transition: all .3s ease-out; } | ||
5964 | .waves-effect .waves-ripple { | ||
5965 | position: absolute; | ||
5966 | border-radius: 50%; | ||
5967 | width: 20px; | ||
5968 | height: 20px; | ||
5969 | margin-top: -10px; | ||
5970 | margin-left: -10px; | ||
5971 | opacity: 0; | ||
5972 | background: rgba(0, 0, 0, 0.2); | ||
5973 | -webkit-transition: all 0.7s ease-out; | ||
5974 | -moz-transition: all 0.7s ease-out; | ||
5975 | -o-transition: all 0.7s ease-out; | ||
5976 | -ms-transition: all 0.7s ease-out; | ||
5977 | transition: all 0.7s ease-out; | ||
5978 | -webkit-transition-property: -webkit-transform, opacity; | ||
5979 | -moz-transition-property: -moz-transform, opacity; | ||
5980 | -o-transition-property: -o-transform, opacity; | ||
5981 | transition-property: transform, opacity; | ||
5982 | -webkit-transform: scale(0); | ||
5983 | -moz-transform: scale(0); | ||
5984 | -ms-transform: scale(0); | ||
5985 | -o-transform: scale(0); | ||
5986 | transform: scale(0); | ||
5987 | pointer-events: none; } | ||
5988 | .waves-effect.waves-light .waves-ripple { | ||
5989 | background-color: rgba(255, 255, 255, 0.45); } | ||
5990 | .waves-effect.waves-red .waves-ripple { | ||
5991 | background-color: rgba(244, 67, 54, 0.7); } | ||
5992 | .waves-effect.waves-yellow .waves-ripple { | ||
5993 | background-color: rgba(255, 235, 59, 0.7); } | ||
5994 | .waves-effect.waves-orange .waves-ripple { | ||
5995 | background-color: rgba(255, 152, 0, 0.7); } | ||
5996 | .waves-effect.waves-purple .waves-ripple { | ||
5997 | background-color: rgba(156, 39, 176, 0.7); } | ||
5998 | .waves-effect.waves-green .waves-ripple { | ||
5999 | background-color: rgba(76, 175, 80, 0.7); } | ||
6000 | .waves-effect.waves-teal .waves-ripple { | ||
6001 | background-color: rgba(0, 150, 136, 0.7); } | ||
6002 | |||
6003 | .waves-notransition { | ||
6004 | -webkit-transition: none !important; | ||
6005 | -moz-transition: none !important; | ||
6006 | -o-transition: none !important; | ||
6007 | -ms-transition: none !important; | ||
6008 | transition: none !important; } | ||
6009 | |||
6010 | .waves-circle { | ||
6011 | -webkit-transform: translateZ(0); | ||
6012 | -moz-transform: translateZ(0); | ||
6013 | -ms-transform: translateZ(0); | ||
6014 | -o-transform: translateZ(0); | ||
6015 | transform: translateZ(0); | ||
6016 | -webkit-mask-image: -webkit-radial-gradient(circle, white 100%, black 100%); } | ||
6017 | |||
6018 | .waves-input-wrapper { | ||
6019 | border-radius: 0.2em; | ||
6020 | vertical-align: bottom; } | ||
6021 | .waves-input-wrapper .waves-button-input { | ||
6022 | position: relative; | ||
6023 | top: 0; | ||
6024 | left: 0; | ||
6025 | z-index: 1; } | ||
6026 | |||
6027 | .waves-circle { | ||
6028 | text-align: center; | ||
6029 | width: 2.5em; | ||
6030 | height: 2.5em; | ||
6031 | line-height: 2.5em; | ||
6032 | border-radius: 50%; | ||
6033 | -webkit-mask-image: none; } | ||
6034 | |||
6035 | .waves-block { | ||
6036 | display: block; } | ||
6037 | |||
6038 | /* Firefox Bug: link not triggered */ | ||
6039 | a.waves-effect .waves-ripple { | ||
6040 | z-index: -1; } | ||
6041 | |||
6042 | .modal { | ||
6043 | display: none; | ||
6044 | position: fixed; | ||
6045 | left: 0; | ||
6046 | right: 0; | ||
6047 | background-color: #fafafa; | ||
6048 | padding: 0; | ||
6049 | max-height: 70%; | ||
6050 | width: 55%; | ||
6051 | margin: auto; | ||
6052 | overflow-y: auto; | ||
6053 | border-radius: 2px; | ||
6054 | will-change: top, opacity; } | ||
6055 | @media only screen and (max-width : 992px) { | ||
6056 | .modal { | ||
6057 | width: 80%; } } | ||
6058 | .modal h1, .modal h2, .modal h3, .modal h4 { | ||
6059 | margin-top: 0; } | ||
6060 | .modal .modal-content { | ||
6061 | padding: 24px; } | ||
6062 | .modal .modal-close { | ||
6063 | cursor: pointer; } | ||
6064 | .modal .modal-footer { | ||
6065 | border-radius: 0 0 2px 2px; | ||
6066 | background-color: #fafafa; | ||
6067 | padding: 4px 6px; | ||
6068 | height: 56px; | ||
6069 | width: 100%; } | ||
6070 | .modal .modal-footer .btn, .modal .modal-footer .btn-large, .modal .modal-footer .btn-flat { | ||
6071 | float: right; | ||
6072 | margin: 6px 0; } | ||
6073 | |||
6074 | .lean-overlay { | ||
6075 | position: fixed; | ||
6076 | z-index: 999; | ||
6077 | top: -100px; | ||
6078 | left: 0; | ||
6079 | bottom: 0; | ||
6080 | right: 0; | ||
6081 | height: 125%; | ||
6082 | width: 100%; | ||
6083 | background: #000; | ||
6084 | display: none; | ||
6085 | will-change: opacity; } | ||
6086 | |||
6087 | .modal.modal-fixed-footer { | ||
6088 | padding: 0; | ||
6089 | height: 70%; } | ||
6090 | .modal.modal-fixed-footer .modal-content { | ||
6091 | position: absolute; | ||
6092 | height: calc(100% - 56px); | ||
6093 | max-height: 100%; | ||
6094 | width: 100%; | ||
6095 | overflow-y: auto; } | ||
6096 | .modal.modal-fixed-footer .modal-footer { | ||
6097 | border-top: 1px solid rgba(0, 0, 0, 0.1); | ||
6098 | position: absolute; | ||
6099 | bottom: 0; } | ||
6100 | |||
6101 | .modal.bottom-sheet { | ||
6102 | top: auto; | ||
6103 | bottom: -100%; | ||
6104 | margin: 0; | ||
6105 | width: 100%; | ||
6106 | max-height: 45%; | ||
6107 | border-radius: 0; | ||
6108 | will-change: bottom, opacity; } | ||
6109 | |||
6110 | .collapsible { | ||
6111 | border-top: 1px solid #ddd; | ||
6112 | border-right: 1px solid #ddd; | ||
6113 | border-left: 1px solid #ddd; | ||
6114 | margin: 0.5rem 0 1rem 0; } | ||
6115 | |||
6116 | .collapsible-header { | ||
6117 | display: block; | ||
6118 | cursor: pointer; | ||
6119 | min-height: 3rem; | ||
6120 | line-height: 3rem; | ||
6121 | padding: 0 1rem; | ||
6122 | background-color: #fff; | ||
6123 | border-bottom: 1px solid #ddd; } | ||
6124 | .collapsible-header i { | ||
6125 | width: 2rem; | ||
6126 | font-size: 1.6rem; | ||
6127 | line-height: 3rem; | ||
6128 | display: block; | ||
6129 | float: left; | ||
6130 | text-align: center; | ||
6131 | margin-right: 1rem; } | ||
6132 | |||
6133 | .collapsible-body { | ||
6134 | display: none; | ||
6135 | border-bottom: 1px solid #ddd; | ||
6136 | -webkit-box-sizing: border-box; | ||
6137 | -moz-box-sizing: border-box; | ||
6138 | box-sizing: border-box; } | ||
6139 | .collapsible-body p { | ||
6140 | margin: 0; | ||
6141 | padding: 2rem; } | ||
6142 | |||
6143 | .side-nav .collapsible { | ||
6144 | border: none; | ||
6145 | box-shadow: none; } | ||
6146 | .side-nav .collapsible li { | ||
6147 | padding: 0; } | ||
6148 | .side-nav .collapsible-header { | ||
6149 | background-color: transparent; | ||
6150 | border: none; | ||
6151 | line-height: inherit; | ||
6152 | height: inherit; | ||
6153 | margin: 0 1rem; } | ||
6154 | .side-nav .collapsible-header i { | ||
6155 | line-height: inherit; } | ||
6156 | .side-nav .collapsible-body { | ||
6157 | border: 0; | ||
6158 | background-color: #fff; } | ||
6159 | .side-nav .collapsible-body li a { | ||
6160 | margin: 0 1rem 0 2rem; } | ||
6161 | |||
6162 | .collapsible.popout { | ||
6163 | border: none; | ||
6164 | box-shadow: none; } | ||
6165 | .collapsible.popout > li { | ||
6166 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12); | ||
6167 | margin: 0 24px; | ||
6168 | transition: margin .35s cubic-bezier(0.25, 0.46, 0.45, 0.94); } | ||
6169 | .collapsible.popout > li.active { | ||
6170 | box-shadow: 0 5px 11px 0 rgba(0, 0, 0, 0.18), 0 4px 15px 0 rgba(0, 0, 0, 0.15); | ||
6171 | margin: 16px 0; } | ||
6172 | |||
6173 | .chip { | ||
6174 | display: inline-block; | ||
6175 | height: 32px; | ||
6176 | font-size: 13px; | ||
6177 | font-weight: 500; | ||
6178 | color: rgba(0, 0, 0, 0.6); | ||
6179 | line-height: 32px; | ||
6180 | padding: 0 12px; | ||
6181 | border-radius: 16px; | ||
6182 | background-color: #E4E4E4; } | ||
6183 | .chip img { | ||
6184 | float: left; | ||
6185 | margin: 0 8px 0 -12px; | ||
6186 | height: 32px; | ||
6187 | width: 32px; | ||
6188 | border-radius: 50%; } | ||
6189 | .chip i.material-icons { | ||
6190 | cursor: pointer; | ||
6191 | float: right; | ||
6192 | font-size: 16px; | ||
6193 | line-height: 32px; | ||
6194 | padding-left: 8px; } | ||
6195 | |||
6196 | .materialboxed { | ||
6197 | display: block; | ||
6198 | cursor: zoom-in; | ||
6199 | position: relative; | ||
6200 | -webkit-transition: opacity .4s; | ||
6201 | -moz-transition: opacity .4s; | ||
6202 | -o-transition: opacity .4s; | ||
6203 | -ms-transition: opacity .4s; | ||
6204 | transition: opacity .4s; } | ||
6205 | .materialboxed:hover { | ||
6206 | will-change: left, top, width, height; } | ||
6207 | .materialboxed:hover:not(.active) { | ||
6208 | opacity: .8; } | ||
6209 | |||
6210 | .materialboxed.active { | ||
6211 | cursor: zoom-out; } | ||
6212 | |||
6213 | #materialbox-overlay { | ||
6214 | position: fixed; | ||
6215 | top: 0; | ||
6216 | left: 0; | ||
6217 | right: 0; | ||
6218 | bottom: 0; | ||
6219 | background-color: #292929; | ||
6220 | z-index: 999; | ||
6221 | will-change: opacity; } | ||
6222 | |||
6223 | .materialbox-caption { | ||
6224 | position: fixed; | ||
6225 | display: none; | ||
6226 | color: #fff; | ||
6227 | line-height: 50px; | ||
6228 | bottom: 0; | ||
6229 | width: 100%; | ||
6230 | text-align: center; | ||
6231 | padding: 0% 15%; | ||
6232 | height: 50px; | ||
6233 | z-index: 1000; | ||
6234 | -webkit-font-smoothing: antialiased; } | ||
6235 | |||
6236 | /* Remove Focus Boxes */ | ||
6237 | select:focus { | ||
6238 | outline: 1px solid #c9f3ef; } | ||
6239 | |||
6240 | button:focus { | ||
6241 | outline: none; | ||
6242 | background-color: #2ab7a9; } | ||
6243 | |||
6244 | label { | ||
6245 | font-size: 0.8rem; | ||
6246 | color: #9e9e9e; } | ||
6247 | |||
6248 | /*************************** | ||
6249 | Text Inputs + Textarea | ||
6250 | ****************************/ | ||
6251 | ::-webkit-input-placeholder { | ||
6252 | color: #d1d1d1; } | ||
6253 | |||
6254 | :-moz-placeholder { | ||
6255 | /* Firefox 18- */ | ||
6256 | color: #d1d1d1; } | ||
6257 | |||
6258 | ::-moz-placeholder { | ||
6259 | /* Firefox 19+ */ | ||
6260 | color: #d1d1d1; } | ||
6261 | |||
6262 | :-ms-input-placeholder { | ||
6263 | color: #d1d1d1; } | ||
6264 | |||
6265 | input[type=text], input[type=password], input[type=email], input[type=url], input[type=time], input[type=date], input[type=datetime-local], input[type=tel], input[type=number], input[type=search], textarea.materialize-textarea { | ||
6266 | background-color: transparent; | ||
6267 | border: none; | ||
6268 | border-bottom: 1px solid #9e9e9e; | ||
6269 | border-radius: 0; | ||
6270 | outline: none; | ||
6271 | height: 3rem; | ||
6272 | width: 100%; | ||
6273 | font-size: 1rem; | ||
6274 | margin: 0 0 15px 0; | ||
6275 | padding: 0; | ||
6276 | box-shadow: none; | ||
6277 | -webkit-box-sizing: content-box; | ||
6278 | -moz-box-sizing: content-box; | ||
6279 | box-sizing: content-box; | ||
6280 | transition: all .3s; } | ||
6281 | input[type=text]:disabled, input[type=text][readonly="readonly"], input[type=password]:disabled, input[type=password][readonly="readonly"], input[type=email]:disabled, input[type=email][readonly="readonly"], input[type=url]:disabled, input[type=url][readonly="readonly"], input[type=time]:disabled, input[type=time][readonly="readonly"], input[type=date]:disabled, input[type=date][readonly="readonly"], input[type=datetime-local]:disabled, input[type=datetime-local][readonly="readonly"], input[type=tel]:disabled, input[type=tel][readonly="readonly"], input[type=number]:disabled, input[type=number][readonly="readonly"], input[type=search]:disabled, input[type=search][readonly="readonly"], textarea.materialize-textarea:disabled, textarea.materialize-textarea[readonly="readonly"] { | ||
6282 | color: rgba(0, 0, 0, 0.26); | ||
6283 | border-bottom: 1px dotted rgba(0, 0, 0, 0.26); } | ||
6284 | input[type=text]:disabled + label, input[type=text][readonly="readonly"] + label, input[type=password]:disabled + label, input[type=password][readonly="readonly"] + label, input[type=email]:disabled + label, input[type=email][readonly="readonly"] + label, input[type=url]:disabled + label, input[type=url][readonly="readonly"] + label, input[type=time]:disabled + label, input[type=time][readonly="readonly"] + label, input[type=date]:disabled + label, input[type=date][readonly="readonly"] + label, input[type=datetime-local]:disabled + label, input[type=datetime-local][readonly="readonly"] + label, input[type=tel]:disabled + label, input[type=tel][readonly="readonly"] + label, input[type=number]:disabled + label, input[type=number][readonly="readonly"] + label, input[type=search]:disabled + label, input[type=search][readonly="readonly"] + label, textarea.materialize-textarea:disabled + label, textarea.materialize-textarea[readonly="readonly"] + label { | ||
6285 | color: rgba(0, 0, 0, 0.26); } | ||
6286 | input[type=text]:focus:not([readonly]), input[type=password]:focus:not([readonly]), input[type=email]:focus:not([readonly]), input[type=url]:focus:not([readonly]), input[type=time]:focus:not([readonly]), input[type=date]:focus:not([readonly]), input[type=datetime-local]:focus:not([readonly]), input[type=tel]:focus:not([readonly]), input[type=number]:focus:not([readonly]), input[type=search]:focus:not([readonly]), textarea.materialize-textarea:focus:not([readonly]) { | ||
6287 | border-bottom: 1px solid #26a69a; | ||
6288 | box-shadow: 0 1px 0 0 #26a69a; } | ||
6289 | input[type=text]:focus:not([readonly]) + label, input[type=password]:focus:not([readonly]) + label, input[type=email]:focus:not([readonly]) + label, input[type=url]:focus:not([readonly]) + label, input[type=time]:focus:not([readonly]) + label, input[type=date]:focus:not([readonly]) + label, input[type=datetime-local]:focus:not([readonly]) + label, input[type=tel]:focus:not([readonly]) + label, input[type=number]:focus:not([readonly]) + label, input[type=search]:focus:not([readonly]) + label, textarea.materialize-textarea:focus:not([readonly]) + label { | ||
6290 | color: #26a69a; } | ||
6291 | input[type=text].valid, input[type=text]:focus.valid, input[type=password].valid, input[type=password]:focus.valid, input[type=email].valid, input[type=email]:focus.valid, input[type=url].valid, input[type=url]:focus.valid, input[type=time].valid, input[type=time]:focus.valid, input[type=date].valid, input[type=date]:focus.valid, input[type=datetime-local].valid, input[type=datetime-local]:focus.valid, input[type=tel].valid, input[type=tel]:focus.valid, input[type=number].valid, input[type=number]:focus.valid, input[type=search].valid, input[type=search]:focus.valid, textarea.materialize-textarea.valid, textarea.materialize-textarea:focus.valid { | ||
6292 | border-bottom: 1px solid #4CAF50; | ||
6293 | box-shadow: 0 1px 0 0 #4CAF50; } | ||
6294 | input[type=text].valid + label:after, input[type=text]:focus.valid + label:after, input[type=password].valid + label:after, input[type=password]:focus.valid + label:after, input[type=email].valid + label:after, input[type=email]:focus.valid + label:after, input[type=url].valid + label:after, input[type=url]:focus.valid + label:after, input[type=time].valid + label:after, input[type=time]:focus.valid + label:after, input[type=date].valid + label:after, input[type=date]:focus.valid + label:after, input[type=datetime-local].valid + label:after, input[type=datetime-local]:focus.valid + label:after, input[type=tel].valid + label:after, input[type=tel]:focus.valid + label:after, input[type=number].valid + label:after, input[type=number]:focus.valid + label:after, input[type=search].valid + label:after, input[type=search]:focus.valid + label:after, textarea.materialize-textarea.valid + label:after, textarea.materialize-textarea:focus.valid + label:after { | ||
6295 | content: attr(data-success); | ||
6296 | color: #4CAF50; | ||
6297 | opacity: 1; } | ||
6298 | input[type=text].invalid, input[type=text]:focus.invalid, input[type=password].invalid, input[type=password]:focus.invalid, input[type=email].invalid, input[type=email]:focus.invalid, input[type=url].invalid, input[type=url]:focus.invalid, input[type=time].invalid, input[type=time]:focus.invalid, input[type=date].invalid, input[type=date]:focus.invalid, input[type=datetime-local].invalid, input[type=datetime-local]:focus.invalid, input[type=tel].invalid, input[type=tel]:focus.invalid, input[type=number].invalid, input[type=number]:focus.invalid, input[type=search].invalid, input[type=search]:focus.invalid, textarea.materialize-textarea.invalid, textarea.materialize-textarea:focus.invalid { | ||
6299 | border-bottom: 1px solid #F44336; | ||
6300 | box-shadow: 0 1px 0 0 #F44336; } | ||
6301 | input[type=text].invalid + label:after, input[type=text]:focus.invalid + label:after, input[type=password].invalid + label:after, input[type=password]:focus.invalid + label:after, input[type=email].invalid + label:after, input[type=email]:focus.invalid + label:after, input[type=url].invalid + label:after, input[type=url]:focus.invalid + label:after, input[type=time].invalid + label:after, input[type=time]:focus.invalid + label:after, input[type=date].invalid + label:after, input[type=date]:focus.invalid + label:after, input[type=datetime-local].invalid + label:after, input[type=datetime-local]:focus.invalid + label:after, input[type=tel].invalid + label:after, input[type=tel]:focus.invalid + label:after, input[type=number].invalid + label:after, input[type=number]:focus.invalid + label:after, input[type=search].invalid + label:after, input[type=search]:focus.invalid + label:after, textarea.materialize-textarea.invalid + label:after, textarea.materialize-textarea:focus.invalid + label:after { | ||
6302 | content: attr(data-error); | ||
6303 | color: #F44336; | ||
6304 | opacity: 1; } | ||
6305 | input[type=text] + label:after, input[type=password] + label:after, input[type=email] + label:after, input[type=url] + label:after, input[type=time] + label:after, input[type=date] + label:after, input[type=datetime-local] + label:after, input[type=tel] + label:after, input[type=number] + label:after, input[type=search] + label:after, textarea.materialize-textarea + label:after { | ||
6306 | display: block; | ||
6307 | content: ""; | ||
6308 | position: absolute; | ||
6309 | top: 65px; | ||
6310 | opacity: 0; | ||
6311 | transition: .2s opacity ease-out, .2s color ease-out; } | ||
6312 | |||
6313 | .input-field { | ||
6314 | position: relative; | ||
6315 | margin-top: 1rem; } | ||
6316 | .input-field label { | ||
6317 | color: #9e9e9e; | ||
6318 | position: absolute; | ||
6319 | top: 0.8rem; | ||
6320 | left: 0.75rem; | ||
6321 | font-size: 1rem; | ||
6322 | cursor: text; | ||
6323 | -webkit-transition: .2s ease-out; | ||
6324 | -moz-transition: .2s ease-out; | ||
6325 | -o-transition: .2s ease-out; | ||
6326 | -ms-transition: .2s ease-out; | ||
6327 | transition: .2s ease-out; } | ||
6328 | .input-field label.active { | ||
6329 | font-size: 0.8rem; | ||
6330 | -webkit-transform: translateY(-140%); | ||
6331 | -moz-transform: translateY(-140%); | ||
6332 | -ms-transform: translateY(-140%); | ||
6333 | -o-transform: translateY(-140%); | ||
6334 | transform: translateY(-140%); } | ||
6335 | .input-field .prefix { | ||
6336 | position: absolute; | ||
6337 | width: 3rem; | ||
6338 | font-size: 2rem; | ||
6339 | -webkit-transition: color .2s; | ||
6340 | -moz-transition: color .2s; | ||
6341 | -o-transition: color .2s; | ||
6342 | -ms-transition: color .2s; | ||
6343 | transition: color .2s; } | ||
6344 | .input-field .prefix.active { | ||
6345 | color: #26a69a; } | ||
6346 | .input-field .prefix ~ input, .input-field .prefix ~ textarea { | ||
6347 | margin-left: 3rem; | ||
6348 | width: 92%; | ||
6349 | width: calc(100% - 3rem); } | ||
6350 | .input-field .prefix ~ textarea { | ||
6351 | padding-top: .8rem; } | ||
6352 | .input-field .prefix ~ label { | ||
6353 | margin-left: 3rem; } | ||
6354 | @media only screen and (max-width : 992px) { | ||
6355 | .input-field .prefix ~ input { | ||
6356 | width: 86%; | ||
6357 | width: calc(100% - 3rem); } } | ||
6358 | @media only screen and (max-width : 600px) { | ||
6359 | .input-field .prefix ~ input { | ||
6360 | width: 80%; | ||
6361 | width: calc(100% - 3rem); } } | ||
6362 | |||
6363 | .input-field input[type=search] { | ||
6364 | display: block; | ||
6365 | line-height: inherit; | ||
6366 | padding-left: 4rem; | ||
6367 | width: calc(100% - 4rem); } | ||
6368 | .input-field input[type=search]:focus { | ||
6369 | background-color: #fff; | ||
6370 | border: 0; | ||
6371 | box-shadow: none; | ||
6372 | color: #444; } | ||
6373 | .input-field input[type=search]:focus + label i, .input-field input[type=search]:focus ~ .mdi-navigation-close, .input-field input[type=search]:focus ~ .material-icons { | ||
6374 | color: #444; } | ||
6375 | .input-field input[type=search] + label { | ||
6376 | left: 1rem; } | ||
6377 | .input-field input[type=search] ~ .mdi-navigation-close, .input-field input[type=search] ~ .material-icons { | ||
6378 | position: absolute; | ||
6379 | top: 0; | ||
6380 | right: 1rem; | ||
6381 | color: transparent; | ||
6382 | cursor: pointer; | ||
6383 | font-size: 2rem; | ||
6384 | transition: .3s color; } | ||
6385 | |||
6386 | textarea { | ||
6387 | width: 100%; | ||
6388 | height: 3rem; | ||
6389 | background-color: transparent; } | ||
6390 | textarea.materialize-textarea { | ||
6391 | overflow-y: hidden; | ||
6392 | /* prevents scroll bar flash */ | ||
6393 | padding: 1.6rem 0; | ||
6394 | /* prevents text jump on Enter keypress */ | ||
6395 | resize: none; | ||
6396 | min-height: 3rem; } | ||
6397 | |||
6398 | .hiddendiv { | ||
6399 | display: none; | ||
6400 | white-space: pre-wrap; | ||
6401 | word-wrap: break-word; | ||
6402 | overflow-wrap: break-word; | ||
6403 | /* future version of deprecated 'word-wrap' */ | ||
6404 | padding-top: 1.2rem; | ||
6405 | /* prevents text jump on Enter keypress */ } | ||
6406 | |||
6407 | /*************** | ||
6408 | Radio Buttons | ||
6409 | ***************/ | ||
6410 | /* Remove default Radio Buttons */ | ||
6411 | [type="radio"]:not(:checked), [type="radio"]:checked { | ||
6412 | position: absolute; | ||
6413 | left: -9999px; | ||
6414 | visibility: hidden; } | ||
6415 | |||
6416 | [type="radio"]:not(:checked) + label, [type="radio"]:checked + label { | ||
6417 | position: relative; | ||
6418 | padding-left: 35px; | ||
6419 | cursor: pointer; | ||
6420 | display: inline-block; | ||
6421 | height: 25px; | ||
6422 | line-height: 25px; | ||
6423 | font-size: 1rem; | ||
6424 | -webkit-transition: .28s ease; | ||
6425 | -moz-transition: .28s ease; | ||
6426 | -o-transition: .28s ease; | ||
6427 | -ms-transition: .28s ease; | ||
6428 | transition: .28s ease; | ||
6429 | -webkit-user-select: none; | ||
6430 | /* webkit (safari, chrome) browsers */ | ||
6431 | -moz-user-select: none; | ||
6432 | /* mozilla browsers */ | ||
6433 | -khtml-user-select: none; | ||
6434 | /* webkit (konqueror) browsers */ | ||
6435 | -ms-user-select: none; | ||
6436 | /* IE10+ */ } | ||
6437 | |||
6438 | [type="radio"] + label:before, [type="radio"] + label:after { | ||
6439 | content: ''; | ||
6440 | position: absolute; | ||
6441 | left: 0; | ||
6442 | top: 0; | ||
6443 | margin: 4px; | ||
6444 | width: 16px; | ||
6445 | height: 16px; | ||
6446 | z-index: 0; | ||
6447 | -webkit-transition: .28s ease; | ||
6448 | -moz-transition: .28s ease; | ||
6449 | -o-transition: .28s ease; | ||
6450 | -ms-transition: .28s ease; | ||
6451 | transition: .28s ease; } | ||
6452 | |||
6453 | /* Unchecked styles */ | ||
6454 | [type="radio"]:not(:checked) + label:before { | ||
6455 | border-radius: 50%; | ||
6456 | border: 2px solid #5a5a5a; } | ||
6457 | |||
6458 | [type="radio"]:not(:checked) + label:after { | ||
6459 | border-radius: 50%; | ||
6460 | border: 2px solid #5a5a5a; | ||
6461 | z-index: -1; | ||
6462 | -webkit-transform: scale(0); | ||
6463 | -moz-transform: scale(0); | ||
6464 | -ms-transform: scale(0); | ||
6465 | -o-transform: scale(0); | ||
6466 | transform: scale(0); } | ||
6467 | |||
6468 | /* Checked styles */ | ||
6469 | [type="radio"]:checked + label:before { | ||
6470 | border-radius: 50%; | ||
6471 | border: 2px solid transparent; } | ||
6472 | |||
6473 | [type="radio"]:checked + label:after { | ||
6474 | border-radius: 50%; | ||
6475 | border: 2px solid #26a69a; | ||
6476 | background-color: #26a69a; | ||
6477 | z-index: 0; | ||
6478 | -webkit-transform: scale(1.02); | ||
6479 | -moz-transform: scale(1.02); | ||
6480 | -ms-transform: scale(1.02); | ||
6481 | -o-transform: scale(1.02); | ||
6482 | transform: scale(1.02); } | ||
6483 | |||
6484 | /* Radio With gap */ | ||
6485 | [type="radio"].with-gap:checked + label:before { | ||
6486 | border-radius: 50%; | ||
6487 | border: 2px solid #26a69a; } | ||
6488 | |||
6489 | [type="radio"].with-gap:checked + label:after { | ||
6490 | border-radius: 50%; | ||
6491 | border: 2px solid #26a69a; | ||
6492 | background-color: #26a69a; | ||
6493 | z-index: 0; | ||
6494 | -webkit-transform: scale(.5); | ||
6495 | -moz-transform: scale(.5); | ||
6496 | -ms-transform: scale(.5); | ||
6497 | -o-transform: scale(.5); | ||
6498 | transform: scale(.5); } | ||
6499 | |||
6500 | /* Disabled Radio With gap */ | ||
6501 | [type="radio"].with-gap:disabled:checked + label:before { | ||
6502 | border: 2px solid rgba(0, 0, 0, 0.26); } | ||
6503 | |||
6504 | [type="radio"].with-gap:disabled:checked + label:after { | ||
6505 | border: none; | ||
6506 | background-color: rgba(0, 0, 0, 0.26); } | ||
6507 | |||
6508 | /* Disabled style */ | ||
6509 | [type="radio"]:disabled:not(:checked) + label:before, [type="radio"]:disabled:checked + label:before { | ||
6510 | background-color: transparent; | ||
6511 | border-color: rgba(0, 0, 0, 0.26); } | ||
6512 | |||
6513 | [type="radio"]:disabled + label { | ||
6514 | color: rgba(0, 0, 0, 0.26); } | ||
6515 | |||
6516 | [type="radio"]:disabled:not(:checked) + label:before { | ||
6517 | border-color: rgba(0, 0, 0, 0.26); } | ||
6518 | |||
6519 | [type="radio"]:disabled:checked + label:after { | ||
6520 | background-color: rgba(0, 0, 0, 0.26); | ||
6521 | border-color: #BDBDBD; } | ||
6522 | |||
6523 | /*************** | ||
6524 | Checkboxes | ||
6525 | ***************/ | ||
6526 | /* CUSTOM CSS CHECKBOXES */ | ||
6527 | form p { | ||
6528 | margin-bottom: 10px; | ||
6529 | text-align: left; } | ||
6530 | |||
6531 | form p:last-child { | ||
6532 | margin-bottom: 0; } | ||
6533 | |||
6534 | /* Remove default checkbox */ | ||
6535 | [type="checkbox"]:not(:checked), [type="checkbox"]:checked { | ||
6536 | position: absolute; | ||
6537 | left: -9999px; | ||
6538 | visibility: hidden; } | ||
6539 | |||
6540 | [type="checkbox"] { | ||
6541 | /* checkbox aspect */ } | ||
6542 | [type="checkbox"] + label { | ||
6543 | position: relative; | ||
6544 | padding-left: 35px; | ||
6545 | cursor: pointer; | ||
6546 | display: inline-block; | ||
6547 | height: 25px; | ||
6548 | line-height: 25px; | ||
6549 | font-size: 1rem; | ||
6550 | -webkit-user-select: none; | ||
6551 | /* webkit (safari, chrome) browsers */ | ||
6552 | -moz-user-select: none; | ||
6553 | /* mozilla browsers */ | ||
6554 | -khtml-user-select: none; | ||
6555 | /* webkit (konqueror) browsers */ | ||
6556 | -ms-user-select: none; | ||
6557 | /* IE10+ */ } | ||
6558 | [type="checkbox"] + label:before { | ||
6559 | content: ''; | ||
6560 | position: absolute; | ||
6561 | top: 0; | ||
6562 | left: 0; | ||
6563 | width: 18px; | ||
6564 | height: 18px; | ||
6565 | z-index: 0; | ||
6566 | border: 2px solid #5a5a5a; | ||
6567 | border-radius: 1px; | ||
6568 | margin-top: 2px; | ||
6569 | -webkit-transition: 0.2s; | ||
6570 | -moz-transition: 0.2s; | ||
6571 | -o-transition: 0.2s; | ||
6572 | -ms-transition: 0.2s; | ||
6573 | transition: 0.2s; } | ||
6574 | [type="checkbox"]:not(:checked):disabled + label:before { | ||
6575 | border: none; | ||
6576 | background-color: rgba(0, 0, 0, 0.26); } | ||
6577 | |||
6578 | [type="checkbox"]:checked + label:before { | ||
6579 | top: -4px; | ||
6580 | left: -3px; | ||
6581 | width: 12px; | ||
6582 | height: 22px; | ||
6583 | border-top: 2px solid transparent; | ||
6584 | border-left: 2px solid transparent; | ||
6585 | border-right: 2px solid #26a69a; | ||
6586 | border-bottom: 2px solid #26a69a; | ||
6587 | -webkit-transform: rotate(40deg); | ||
6588 | -moz-transform: rotate(40deg); | ||
6589 | -ms-transform: rotate(40deg); | ||
6590 | -o-transform: rotate(40deg); | ||
6591 | transform: rotate(40deg); | ||
6592 | -webkit-backface-visibility: hidden; | ||
6593 | -webkit-transform-origin: 100% 100%; | ||
6594 | -moz-transform-origin: 100% 100%; | ||
6595 | -ms-transform-origin: 100% 100%; | ||
6596 | -o-transform-origin: 100% 100%; | ||
6597 | transform-origin: 100% 100%; } | ||
6598 | [type="checkbox"]:checked:disabled + label:before { | ||
6599 | border-right: 2px solid rgba(0, 0, 0, 0.26); | ||
6600 | border-bottom: 2px solid rgba(0, 0, 0, 0.26); } | ||
6601 | |||
6602 | /* Indeterminate checkbox */ | ||
6603 | [type="checkbox"]:indeterminate + label:before { | ||
6604 | left: -10px; | ||
6605 | top: -11px; | ||
6606 | width: 10px; | ||
6607 | height: 22px; | ||
6608 | border-top: none; | ||
6609 | border-left: none; | ||
6610 | border-right: 2px solid #26a69a; | ||
6611 | border-bottom: none; | ||
6612 | -webkit-transform: rotate(90deg); | ||
6613 | -moz-transform: rotate(90deg); | ||
6614 | -ms-transform: rotate(90deg); | ||
6615 | -o-transform: rotate(90deg); | ||
6616 | transform: rotate(90deg); | ||
6617 | -webkit-backface-visibility: hidden; | ||
6618 | -webkit-transform-origin: 100% 100%; | ||
6619 | -moz-transform-origin: 100% 100%; | ||
6620 | -ms-transform-origin: 100% 100%; | ||
6621 | -o-transform-origin: 100% 100%; | ||
6622 | transform-origin: 100% 100%; } | ||
6623 | [type="checkbox"]:indeterminate:disabled + label:before { | ||
6624 | border-right: 2px solid rgba(0, 0, 0, 0.26); | ||
6625 | background-color: transparent; } | ||
6626 | |||
6627 | [type="checkbox"].filled-in + label:after { | ||
6628 | border-radius: 2px; } | ||
6629 | [type="checkbox"].filled-in + label:before, [type="checkbox"].filled-in + label:after { | ||
6630 | content: ''; | ||
6631 | left: 0; | ||
6632 | position: absolute; | ||
6633 | /* .1s delay is for check animation */ | ||
6634 | transition: border .25s, background-color .25s, width .2s .1s, height .2s .1s, top .2s .1s, left .2s .1s; | ||
6635 | z-index: 1; } | ||
6636 | [type="checkbox"].filled-in:not(:checked) + label:before { | ||
6637 | width: 0; | ||
6638 | height: 0; | ||
6639 | border: 3px solid transparent; | ||
6640 | left: 6px; | ||
6641 | top: 10px; | ||
6642 | -webkit-transform: rotateZ(37deg); | ||
6643 | transform: rotateZ(37deg); | ||
6644 | -webkit-transform-origin: 20% 40%; | ||
6645 | transform-origin: 100% 100%; } | ||
6646 | [type="checkbox"].filled-in:not(:checked) + label:after { | ||
6647 | height: 20px; | ||
6648 | width: 20px; | ||
6649 | background-color: transparent; | ||
6650 | border: 2px solid #5a5a5a; | ||
6651 | top: 0px; | ||
6652 | z-index: 0; } | ||
6653 | [type="checkbox"].filled-in:checked + label:before { | ||
6654 | top: 0; | ||
6655 | left: 1px; | ||
6656 | width: 8px; | ||
6657 | height: 13px; | ||
6658 | border-top: 2px solid transparent; | ||
6659 | border-left: 2px solid transparent; | ||
6660 | border-right: 2px solid #fff; | ||
6661 | border-bottom: 2px solid #fff; | ||
6662 | -webkit-transform: rotateZ(37deg); | ||
6663 | transform: rotateZ(37deg); | ||
6664 | -webkit-transform-origin: 100% 100%; | ||
6665 | transform-origin: 100% 100%; } | ||
6666 | [type="checkbox"].filled-in:checked + label:after { | ||
6667 | top: 0px; | ||
6668 | width: 20px; | ||
6669 | height: 20px; | ||
6670 | border: 2px solid #26a69a; | ||
6671 | background-color: #26a69a; | ||
6672 | z-index: 0; } | ||
6673 | [type="checkbox"].filled-in:disabled:not(:checked) + label:before { | ||
6674 | background-color: transparent; | ||
6675 | border: 2px solid transparent; } | ||
6676 | [type="checkbox"].filled-in:disabled:not(:checked) + label:after { | ||
6677 | border-color: transparent; | ||
6678 | background-color: #BDBDBD; } | ||
6679 | [type="checkbox"].filled-in:disabled:checked + label:before { | ||
6680 | background-color: transparent; } | ||
6681 | [type="checkbox"].filled-in:disabled:checked + label:after { | ||
6682 | background-color: #BDBDBD; | ||
6683 | border-color: #BDBDBD; } | ||
6684 | |||
6685 | /*************** | ||
6686 | Switch | ||
6687 | ***************/ | ||
6688 | .switch, .switch * { | ||
6689 | -webkit-user-select: none; | ||
6690 | -moz-user-select: none; | ||
6691 | -khtml-user-select: none; | ||
6692 | -ms-user-select: none; } | ||
6693 | |||
6694 | .switch label { | ||
6695 | cursor: pointer; } | ||
6696 | |||
6697 | .switch label input[type=checkbox] { | ||
6698 | opacity: 0; | ||
6699 | width: 0; | ||
6700 | height: 0; } | ||
6701 | |||
6702 | .switch label input[type=checkbox]:checked + .lever { | ||
6703 | background-color: #84c7c1; } | ||
6704 | |||
6705 | .switch label input[type=checkbox]:checked + .lever:after { | ||
6706 | background-color: #26a69a; } | ||
6707 | |||
6708 | .switch label .lever { | ||
6709 | content: ""; | ||
6710 | display: inline-block; | ||
6711 | position: relative; | ||
6712 | width: 40px; | ||
6713 | height: 15px; | ||
6714 | background-color: #818181; | ||
6715 | border-radius: 15px; | ||
6716 | margin-right: 10px; | ||
6717 | transition: background 0.3s ease; | ||
6718 | vertical-align: middle; | ||
6719 | margin: 0 16px; } | ||
6720 | |||
6721 | .switch label .lever:after { | ||
6722 | content: ""; | ||
6723 | position: absolute; | ||
6724 | display: inline-block; | ||
6725 | width: 21px; | ||
6726 | height: 21px; | ||
6727 | background-color: #F1F1F1; | ||
6728 | border-radius: 21px; | ||
6729 | box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4); | ||
6730 | left: -5px; | ||
6731 | top: -3px; | ||
6732 | transition: left 0.3s ease, background .3s ease, box-shadow 0.1s ease; } | ||
6733 | |||
6734 | input[type=checkbox]:checked:not(:disabled) ~ .lever:active:after { | ||
6735 | box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(38, 166, 154, 0.1); } | ||
6736 | |||
6737 | input[type=checkbox]:not(:disabled) ~ .lever:active:after { | ||
6738 | box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.08); } | ||
6739 | |||
6740 | .switch label input[type=checkbox]:checked + .lever:after { | ||
6741 | left: 24px; } | ||
6742 | |||
6743 | .switch input[type=checkbox][disabled] + .lever { | ||
6744 | cursor: default; } | ||
6745 | |||
6746 | .switch label input[type=checkbox][disabled] + .lever:after, .switch label input[type=checkbox][disabled]:checked + .lever:after { | ||
6747 | background-color: #BDBDBD; } | ||
6748 | |||
6749 | /*************** | ||
6750 | Select Field | ||
6751 | ***************/ | ||
6752 | .select-label { | ||
6753 | position: absolute; } | ||
6754 | |||
6755 | .select-wrapper { | ||
6756 | position: relative; } | ||
6757 | .select-wrapper input.select-dropdown { | ||
6758 | position: relative; | ||
6759 | cursor: pointer; | ||
6760 | background-color: transparent; | ||
6761 | border: none; | ||
6762 | border-bottom: 1px solid #9e9e9e; | ||
6763 | outline: none; | ||
6764 | height: 3rem; | ||
6765 | line-height: 3rem; | ||
6766 | width: 100%; | ||
6767 | font-size: 1rem; | ||
6768 | margin: 0 0 15px 0; | ||
6769 | padding: 0; | ||
6770 | display: block; } | ||
6771 | .select-wrapper span.caret { | ||
6772 | color: initial; | ||
6773 | position: absolute; | ||
6774 | right: 0; | ||
6775 | top: 16px; | ||
6776 | font-size: 10px; } | ||
6777 | .select-wrapper span.caret.disabled { | ||
6778 | color: rgba(0, 0, 0, 0.26); } | ||
6779 | .select-wrapper + label { | ||
6780 | position: absolute; | ||
6781 | top: -14px; | ||
6782 | font-size: 0.8rem; } | ||
6783 | |||
6784 | select { | ||
6785 | display: none; } | ||
6786 | |||
6787 | select.browser-default { | ||
6788 | display: block; } | ||
6789 | |||
6790 | select:disabled { | ||
6791 | color: rgba(0, 0, 0, 0.3); } | ||
6792 | |||
6793 | .select-wrapper input.select-dropdown:disabled { | ||
6794 | color: rgba(0, 0, 0, 0.3); | ||
6795 | cursor: default; | ||
6796 | -webkit-user-select: none; | ||
6797 | /* webkit (safari, chrome) browsers */ | ||
6798 | -moz-user-select: none; | ||
6799 | /* mozilla browsers */ | ||
6800 | -ms-user-select: none; | ||
6801 | /* IE10+ */ | ||
6802 | border-bottom: 1px solid rgba(0, 0, 0, 0.3); } | ||
6803 | |||
6804 | .select-wrapper i { | ||
6805 | color: rgba(0, 0, 0, 0.3); } | ||
6806 | |||
6807 | .select-dropdown li.disabled { | ||
6808 | color: rgba(0, 0, 0, 0.3); | ||
6809 | background-color: transparent; } | ||
6810 | |||
6811 | /********************* | ||
6812 | File Input | ||
6813 | **********************/ | ||
6814 | .file-field { | ||
6815 | position: relative; } | ||
6816 | .file-field .file-path-wrapper { | ||
6817 | overflow: hidden; | ||
6818 | padding-left: 10px; } | ||
6819 | .file-field input.file-path { | ||
6820 | width: 100%; } | ||
6821 | .file-field .btn, .file-field .btn-large { | ||
6822 | float: left; | ||
6823 | height: 3rem; | ||
6824 | line-height: 3rem; } | ||
6825 | .file-field span { | ||
6826 | cursor: pointer; } | ||
6827 | .file-field input[type=file] { | ||
6828 | position: absolute; | ||
6829 | top: 0; | ||
6830 | right: 0; | ||
6831 | left: 0; | ||
6832 | bottom: 0; | ||
6833 | width: 100%; | ||
6834 | margin: 0; | ||
6835 | padding: 0; | ||
6836 | font-size: 20px; | ||
6837 | cursor: pointer; | ||
6838 | opacity: 0; | ||
6839 | filter: alpha(opacity=0); } | ||
6840 | |||
6841 | /*************** | ||
6842 | Range | ||
6843 | ***************/ | ||
6844 | .range-field { | ||
6845 | position: relative; } | ||
6846 | |||
6847 | input[type=range], input[type=range] + .thumb { | ||
6848 | cursor: pointer; } | ||
6849 | |||
6850 | input[type=range] { | ||
6851 | position: relative; | ||
6852 | background-color: transparent; | ||
6853 | border: none; | ||
6854 | outline: none; | ||
6855 | width: 100%; | ||
6856 | margin: 15px 0px; | ||
6857 | padding: 0; } | ||
6858 | |||
6859 | input[type=range] + .thumb { | ||
6860 | position: absolute; | ||
6861 | border: none; | ||
6862 | height: 0; | ||
6863 | width: 0; | ||
6864 | border-radius: 50%; | ||
6865 | background-color: #26a69a; | ||
6866 | top: 10px; | ||
6867 | margin-left: -6px; | ||
6868 | -webkit-transform-origin: 50% 50%; | ||
6869 | -moz-transform-origin: 50% 50%; | ||
6870 | -ms-transform-origin: 50% 50%; | ||
6871 | -o-transform-origin: 50% 50%; | ||
6872 | transform-origin: 50% 50%; | ||
6873 | -webkit-transform: rotate(-45deg); | ||
6874 | -moz-transform: rotate(-45deg); | ||
6875 | -ms-transform: rotate(-45deg); | ||
6876 | -o-transform: rotate(-45deg); | ||
6877 | transform: rotate(-45deg); } | ||
6878 | input[type=range] + .thumb .value { | ||
6879 | display: block; | ||
6880 | width: 30px; | ||
6881 | text-align: center; | ||
6882 | color: #26a69a; | ||
6883 | font-size: 0; | ||
6884 | -webkit-transform: rotate(45deg); | ||
6885 | -moz-transform: rotate(45deg); | ||
6886 | -ms-transform: rotate(45deg); | ||
6887 | -o-transform: rotate(45deg); | ||
6888 | transform: rotate(45deg); } | ||
6889 | input[type=range] + .thumb.active { | ||
6890 | border-radius: 50% 50% 50% 0; } | ||
6891 | input[type=range] + .thumb.active .value { | ||
6892 | color: #fff; | ||
6893 | margin-left: -1px; | ||
6894 | margin-top: 8px; | ||
6895 | font-size: 10px; } | ||
6896 | |||
6897 | input[type=range]:focus { | ||
6898 | outline: none; } | ||
6899 | |||
6900 | input[type=range] { | ||
6901 | -webkit-appearance: none; } | ||
6902 | |||
6903 | input[type=range]::-webkit-slider-runnable-track { | ||
6904 | height: 3px; | ||
6905 | background: #c2c0c2; | ||
6906 | border: none; } | ||
6907 | |||
6908 | input[type=range]::-webkit-slider-thumb { | ||
6909 | -webkit-appearance: none; | ||
6910 | border: none; | ||
6911 | height: 14px; | ||
6912 | width: 14px; | ||
6913 | border-radius: 50%; | ||
6914 | background-color: #26a69a; | ||
6915 | transform-origin: 50% 50%; | ||
6916 | margin: -5px 0 0 0; | ||
6917 | -webkit-transition: 0.3s; | ||
6918 | -moz-transition: 0.3s; | ||
6919 | -o-transition: 0.3s; | ||
6920 | -ms-transition: 0.3s; | ||
6921 | transition: 0.3s; } | ||
6922 | |||
6923 | input[type=range]:focus::-webkit-slider-runnable-track { | ||
6924 | background: #ccc; } | ||
6925 | |||
6926 | input[type=range] { | ||
6927 | /* fix for FF unable to apply focus style bug */ | ||
6928 | border: 1px solid white; | ||
6929 | /*required for proper track sizing in FF*/ } | ||
6930 | |||
6931 | input[type=range]::-moz-range-track { | ||
6932 | height: 3px; | ||
6933 | background: #ddd; | ||
6934 | border: none; } | ||
6935 | |||
6936 | input[type=range]::-moz-range-thumb { | ||
6937 | border: none; | ||
6938 | height: 14px; | ||
6939 | width: 14px; | ||
6940 | border-radius: 50%; | ||
6941 | background: #26a69a; | ||
6942 | margin-top: -5px; } | ||
6943 | |||
6944 | /*hide the outline behind the border*/ | ||
6945 | input[type=range]:-moz-focusring { | ||
6946 | outline: 1px solid white; | ||
6947 | outline-offset: -1px; } | ||
6948 | |||
6949 | input[type=range]:focus::-moz-range-track { | ||
6950 | background: #ccc; } | ||
6951 | |||
6952 | input[type=range]::-ms-track { | ||
6953 | height: 3px; | ||
6954 | /*remove bg colour from the track, we'll use ms-fill-lower and ms-fill-upper instead */ | ||
6955 | background: transparent; | ||
6956 | /*leave room for the larger thumb to overflow with a transparent border */ | ||
6957 | border-color: transparent; | ||
6958 | border-width: 6px 0; | ||
6959 | /*remove default tick marks*/ | ||
6960 | color: transparent; } | ||
6961 | |||
6962 | input[type=range]::-ms-fill-lower { | ||
6963 | background: #777; } | ||
6964 | |||
6965 | input[type=range]::-ms-fill-upper { | ||
6966 | background: #ddd; } | ||
6967 | |||
6968 | input[type=range]::-ms-thumb { | ||
6969 | border: none; | ||
6970 | height: 14px; | ||
6971 | width: 14px; | ||
6972 | border-radius: 50%; | ||
6973 | background: #26a69a; } | ||
6974 | |||
6975 | input[type=range]:focus::-ms-fill-lower { | ||
6976 | background: #888; } | ||
6977 | |||
6978 | input[type=range]:focus::-ms-fill-upper { | ||
6979 | background: #ccc; } | ||
6980 | |||
6981 | /*************************** | ||
6982 | Text Inputs + Textarea | ||
6983 | ****************************/ | ||
6984 | select { | ||
6985 | background-color: rgba(255, 255, 255, 0.9); | ||
6986 | width: 100%; | ||
6987 | padding: 5px; | ||
6988 | border: 1px solid #f2f2f2; | ||
6989 | border-radius: 2px; | ||
6990 | height: 3rem; } | ||
6991 | |||
6992 | /*************** | ||
6993 | Nav List | ||
6994 | ***************/ | ||
6995 | .table-of-contents.fixed { | ||
6996 | position: fixed; } | ||
6997 | .table-of-contents li { | ||
6998 | padding: 2px 0; } | ||
6999 | .table-of-contents a { | ||
7000 | display: inline-block; | ||
7001 | font-weight: 300; | ||
7002 | color: #757575; | ||
7003 | padding-left: 20px; | ||
7004 | height: 1.5rem; | ||
7005 | line-height: 1.5rem; | ||
7006 | letter-spacing: .4; | ||
7007 | display: inline-block; } | ||
7008 | .table-of-contents a:hover { | ||
7009 | color: #a8a8a8; | ||
7010 | padding-left: 19px; | ||
7011 | border-left: 1px solid #ea4a4f; } | ||
7012 | .table-of-contents a.active { | ||
7013 | font-weight: 500; | ||
7014 | padding-left: 18px; | ||
7015 | border-left: 2px solid #ea4a4f; } | ||
7016 | |||
7017 | .side-nav { | ||
7018 | position: fixed; | ||
7019 | width: 240px; | ||
7020 | left: -105%; | ||
7021 | top: 0; | ||
7022 | margin: 0; | ||
7023 | height: 100%; | ||
7024 | height: calc(100% + 60px); | ||
7025 | height: -moz-calc(100%); | ||
7026 | padding-bottom: 60px; | ||
7027 | background-color: #fff; | ||
7028 | z-index: 999; | ||
7029 | overflow-y: auto; | ||
7030 | will-change: left; } | ||
7031 | .side-nav.right-aligned { | ||
7032 | will-change: right; | ||
7033 | right: -105%; | ||
7034 | left: auto; } | ||
7035 | .side-nav .collapsible { | ||
7036 | margin: 0; } | ||
7037 | .side-nav li { | ||
7038 | float: none; | ||
7039 | padding: 0 15px; } | ||
7040 | .side-nav li:hover, .side-nav li.active { | ||
7041 | background-color: #ddd; } | ||
7042 | .side-nav a { | ||
7043 | color: #444; | ||
7044 | display: block; | ||
7045 | font-size: 1rem; | ||
7046 | height: 64px; | ||
7047 | line-height: 64px; | ||
7048 | padding: 0 15px; } | ||
7049 | |||
7050 | .drag-target { | ||
7051 | height: 100%; | ||
7052 | width: 10px; | ||
7053 | position: fixed; | ||
7054 | top: 0; | ||
7055 | z-index: 998; } | ||
7056 | |||
7057 | .side-nav.fixed a { | ||
7058 | display: block; | ||
7059 | padding: 0 15px; | ||
7060 | color: #444; } | ||
7061 | |||
7062 | .side-nav.fixed { | ||
7063 | left: 0; | ||
7064 | position: fixed; } | ||
7065 | .side-nav.fixed.right-aligned { | ||
7066 | right: 0; | ||
7067 | left: auto; } | ||
7068 | |||
7069 | @media only screen and (max-width : 992px) { | ||
7070 | .side-nav.fixed { | ||
7071 | left: -105%; } | ||
7072 | .side-nav.fixed.right-aligned { | ||
7073 | right: -105%; | ||
7074 | left: auto; } } | ||
7075 | |||
7076 | .side-nav .collapsible-body li.active, .side-nav.fixed .collapsible-body li.active { | ||
7077 | background-color: #ee6e73; } | ||
7078 | .side-nav .collapsible-body li.active a, .side-nav.fixed .collapsible-body li.active a { | ||
7079 | color: #fff; } | ||
7080 | |||
7081 | #sidenav-overlay { | ||
7082 | position: fixed; | ||
7083 | top: 0; | ||
7084 | left: 0; | ||
7085 | right: 0; | ||
7086 | height: 120vh; | ||
7087 | background-color: rgba(0, 0, 0, 0.5); | ||
7088 | z-index: 997; | ||
7089 | will-change: opacity; } | ||
7090 | |||
7091 | /* | ||
7092 | @license | ||
7093 | Copyright (c) 2014 The Polymer Project Authors. All rights reserved. | ||
7094 | This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt | ||
7095 | The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt | ||
7096 | The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt | ||
7097 | Code distributed by Google as part of the polymer project is also | ||
7098 | subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt | ||
7099 | */ | ||
7100 | /**************************/ | ||
7101 | /* STYLES FOR THE SPINNER */ | ||
7102 | /**************************/ | ||
7103 | /* | ||
7104 | * Constants: | ||
7105 | * STROKEWIDTH = 3px | ||
7106 | * ARCSIZE = 270 degrees (amount of circle the arc takes up) | ||
7107 | * ARCTIME = 1333ms (time it takes to expand and contract arc) | ||
7108 | * ARCSTARTROT = 216 degrees (how much the start location of the arc | ||
7109 | * should rotate each time, 216 gives us a | ||
7110 | * 5 pointed star shape (it's 360/5 * 3). | ||
7111 | * For a 7 pointed star, we might do | ||
7112 | * 360/7 * 3 = 154.286) | ||
7113 | * CONTAINERWIDTH = 28px | ||
7114 | * SHRINK_TIME = 400ms | ||
7115 | */ | ||
7116 | .preloader-wrapper { | ||
7117 | display: inline-block; | ||
7118 | position: relative; | ||
7119 | width: 48px; | ||
7120 | height: 48px; } | ||
7121 | .preloader-wrapper.small { | ||
7122 | width: 36px; | ||
7123 | height: 36px; } | ||
7124 | .preloader-wrapper.big { | ||
7125 | width: 64px; | ||
7126 | height: 64px; } | ||
7127 | .preloader-wrapper.active { | ||
7128 | /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */ | ||
7129 | -webkit-animation: container-rotate 1568ms linear infinite; | ||
7130 | animation: container-rotate 1568ms linear infinite; } | ||
7131 | |||
7132 | @-webkit-keyframes container-rotate { | ||
7133 | to { | ||
7134 | -webkit-transform: rotate(360deg); } } | ||
7135 | |||
7136 | @keyframes container-rotate { | ||
7137 | to { | ||
7138 | transform: rotate(360deg); } } | ||
7139 | |||
7140 | .spinner-layer { | ||
7141 | position: absolute; | ||
7142 | width: 100%; | ||
7143 | height: 100%; | ||
7144 | opacity: 0; | ||
7145 | border-color: #26a69a; } | ||
7146 | |||
7147 | .spinner-blue, .spinner-blue-only { | ||
7148 | border-color: #4285f4; } | ||
7149 | |||
7150 | .spinner-red, .spinner-red-only { | ||
7151 | border-color: #db4437; } | ||
7152 | |||
7153 | .spinner-yellow, .spinner-yellow-only { | ||
7154 | border-color: #f4b400; } | ||
7155 | |||
7156 | .spinner-green, .spinner-green-only { | ||
7157 | border-color: #0f9d58; } | ||
7158 | |||
7159 | /** | ||
7160 | * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee): | ||
7161 | * | ||
7162 | * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't | ||
7163 | * guarantee that the animation will start _exactly_ after that value. So we avoid using | ||
7164 | * animation-delay and instead set custom keyframes for each color (as redundant as it | ||
7165 | * seems). | ||
7166 | * | ||
7167 | * We write out each animation in full (instead of separating animation-name, | ||
7168 | * animation-duration, etc.) because under the polyfill, Safari does not recognize those | ||
7169 | * specific properties properly, treats them as -webkit-animation, and overrides the | ||
7170 | * other animation rules. See https://github.com/Polymer/platform/issues/53. | ||
7171 | */ | ||
7172 | .active .spinner-layer.spinner-blue { | ||
7173 | /* durations: 4 * ARCTIME */ | ||
7174 | -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; | ||
7175 | animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } | ||
7176 | |||
7177 | .active .spinner-layer.spinner-red { | ||
7178 | /* durations: 4 * ARCTIME */ | ||
7179 | -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; | ||
7180 | animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } | ||
7181 | |||
7182 | .active .spinner-layer.spinner-yellow { | ||
7183 | /* durations: 4 * ARCTIME */ | ||
7184 | -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; | ||
7185 | animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } | ||
7186 | |||
7187 | .active .spinner-layer.spinner-green { | ||
7188 | /* durations: 4 * ARCTIME */ | ||
7189 | -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; | ||
7190 | animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both, green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } | ||
7191 | |||
7192 | .active .spinner-layer, .active .spinner-layer.spinner-blue-only, .active .spinner-layer.spinner-red-only, .active .spinner-layer.spinner-yellow-only, .active .spinner-layer.spinner-green-only { | ||
7193 | /* durations: 4 * ARCTIME */ | ||
7194 | opacity: 1; | ||
7195 | -webkit-animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; | ||
7196 | animation: fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } | ||
7197 | |||
7198 | @-webkit-keyframes fill-unfill-rotate { | ||
7199 | /* 0.5 * ARCSIZE */ | ||
7200 | /* 1 * ARCSIZE */ | ||
7201 | /* 1.5 * ARCSIZE */ | ||
7202 | /* 2 * ARCSIZE */ | ||
7203 | /* 2.5 * ARCSIZE */ | ||
7204 | /* 3 * ARCSIZE */ | ||
7205 | /* 3.5 * ARCSIZE */ | ||
7206 | /* 4 * ARCSIZE */ | ||
7207 | 12.5% { | ||
7208 | -webkit-transform: rotate(135deg); } | ||
7209 | |||
7210 | 25% { | ||
7211 | -webkit-transform: rotate(270deg); } | ||
7212 | |||
7213 | 37.5% { | ||
7214 | -webkit-transform: rotate(405deg); } | ||
7215 | |||
7216 | 50% { | ||
7217 | -webkit-transform: rotate(540deg); } | ||
7218 | |||
7219 | 62.5% { | ||
7220 | -webkit-transform: rotate(675deg); } | ||
7221 | |||
7222 | 75% { | ||
7223 | -webkit-transform: rotate(810deg); } | ||
7224 | |||
7225 | 87.5% { | ||
7226 | -webkit-transform: rotate(945deg); } | ||
7227 | |||
7228 | to { | ||
7229 | -webkit-transform: rotate(1080deg); } } | ||
7230 | |||
7231 | @keyframes fill-unfill-rotate { | ||
7232 | /* 0.5 * ARCSIZE */ | ||
7233 | /* 1 * ARCSIZE */ | ||
7234 | /* 1.5 * ARCSIZE */ | ||
7235 | /* 2 * ARCSIZE */ | ||
7236 | /* 2.5 * ARCSIZE */ | ||
7237 | /* 3 * ARCSIZE */ | ||
7238 | /* 3.5 * ARCSIZE */ | ||
7239 | /* 4 * ARCSIZE */ | ||
7240 | 12.5% { | ||
7241 | transform: rotate(135deg); } | ||
7242 | |||
7243 | 25% { | ||
7244 | transform: rotate(270deg); } | ||
7245 | |||
7246 | 37.5% { | ||
7247 | transform: rotate(405deg); } | ||
7248 | |||
7249 | 50% { | ||
7250 | transform: rotate(540deg); } | ||
7251 | |||
7252 | 62.5% { | ||
7253 | transform: rotate(675deg); } | ||
7254 | |||
7255 | 75% { | ||
7256 | transform: rotate(810deg); } | ||
7257 | |||
7258 | 87.5% { | ||
7259 | transform: rotate(945deg); } | ||
7260 | |||
7261 | to { | ||
7262 | transform: rotate(1080deg); } } | ||
7263 | |||
7264 | @-webkit-keyframes blue-fade-in-out { | ||
7265 | from { | ||
7266 | opacity: 1; } | ||
7267 | |||
7268 | 25% { | ||
7269 | opacity: 1; } | ||
7270 | |||
7271 | 26% { | ||
7272 | opacity: 0; } | ||
7273 | |||
7274 | 89% { | ||
7275 | opacity: 0; } | ||
7276 | |||
7277 | 90% { | ||
7278 | opacity: 1; } | ||
7279 | |||
7280 | 100% { | ||
7281 | opacity: 1; } } | ||
7282 | |||
7283 | @keyframes blue-fade-in-out { | ||
7284 | from { | ||
7285 | opacity: 1; } | ||
7286 | |||
7287 | 25% { | ||
7288 | opacity: 1; } | ||
7289 | |||
7290 | 26% { | ||
7291 | opacity: 0; } | ||
7292 | |||
7293 | 89% { | ||
7294 | opacity: 0; } | ||
7295 | |||
7296 | 90% { | ||
7297 | opacity: 1; } | ||
7298 | |||
7299 | 100% { | ||
7300 | opacity: 1; } } | ||
7301 | |||
7302 | @-webkit-keyframes red-fade-in-out { | ||
7303 | from { | ||
7304 | opacity: 0; } | ||
7305 | |||
7306 | 15% { | ||
7307 | opacity: 0; } | ||
7308 | |||
7309 | 25% { | ||
7310 | opacity: 1; } | ||
7311 | |||
7312 | 50% { | ||
7313 | opacity: 1; } | ||
7314 | |||
7315 | 51% { | ||
7316 | opacity: 0; } } | ||
7317 | |||
7318 | @keyframes red-fade-in-out { | ||
7319 | from { | ||
7320 | opacity: 0; } | ||
7321 | |||
7322 | 15% { | ||
7323 | opacity: 0; } | ||
7324 | |||
7325 | 25% { | ||
7326 | opacity: 1; } | ||
7327 | |||
7328 | 50% { | ||
7329 | opacity: 1; } | ||
7330 | |||
7331 | 51% { | ||
7332 | opacity: 0; } } | ||
7333 | |||
7334 | @-webkit-keyframes yellow-fade-in-out { | ||
7335 | from { | ||
7336 | opacity: 0; } | ||
7337 | |||
7338 | 40% { | ||
7339 | opacity: 0; } | ||
7340 | |||
7341 | 50% { | ||
7342 | opacity: 1; } | ||
7343 | |||
7344 | 75% { | ||
7345 | opacity: 1; } | ||
7346 | |||
7347 | 76% { | ||
7348 | opacity: 0; } } | ||
7349 | |||
7350 | @keyframes yellow-fade-in-out { | ||
7351 | from { | ||
7352 | opacity: 0; } | ||
7353 | |||
7354 | 40% { | ||
7355 | opacity: 0; } | ||
7356 | |||
7357 | 50% { | ||
7358 | opacity: 1; } | ||
7359 | |||
7360 | 75% { | ||
7361 | opacity: 1; } | ||
7362 | |||
7363 | 76% { | ||
7364 | opacity: 0; } } | ||
7365 | |||
7366 | @-webkit-keyframes green-fade-in-out { | ||
7367 | from { | ||
7368 | opacity: 0; } | ||
7369 | |||
7370 | 65% { | ||
7371 | opacity: 0; } | ||
7372 | |||
7373 | 75% { | ||
7374 | opacity: 1; } | ||
7375 | |||
7376 | 90% { | ||
7377 | opacity: 1; } | ||
7378 | |||
7379 | 100% { | ||
7380 | opacity: 0; } } | ||
7381 | |||
7382 | @keyframes green-fade-in-out { | ||
7383 | from { | ||
7384 | opacity: 0; } | ||
7385 | |||
7386 | 65% { | ||
7387 | opacity: 0; } | ||
7388 | |||
7389 | 75% { | ||
7390 | opacity: 1; } | ||
7391 | |||
7392 | 90% { | ||
7393 | opacity: 1; } | ||
7394 | |||
7395 | 100% { | ||
7396 | opacity: 0; } } | ||
7397 | |||
7398 | /** | ||
7399 | * Patch the gap that appear between the two adjacent div.circle-clipper while the | ||
7400 | * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11). | ||
7401 | */ | ||
7402 | .gap-patch { | ||
7403 | position: absolute; | ||
7404 | top: 0; | ||
7405 | left: 45%; | ||
7406 | width: 10%; | ||
7407 | height: 100%; | ||
7408 | overflow: hidden; | ||
7409 | border-color: inherit; } | ||
7410 | |||
7411 | .gap-patch .circle { | ||
7412 | width: 1000%; | ||
7413 | left: -450%; } | ||
7414 | |||
7415 | .circle-clipper { | ||
7416 | display: inline-block; | ||
7417 | position: relative; | ||
7418 | width: 50%; | ||
7419 | height: 100%; | ||
7420 | overflow: hidden; | ||
7421 | border-color: inherit; } | ||
7422 | .circle-clipper .circle { | ||
7423 | width: 200%; | ||
7424 | height: 100%; | ||
7425 | border-width: 3px; | ||
7426 | /* STROKEWIDTH */ | ||
7427 | border-style: solid; | ||
7428 | border-color: inherit; | ||
7429 | border-bottom-color: transparent !important; | ||
7430 | border-radius: 50%; | ||
7431 | -webkit-animation: none; | ||
7432 | animation: none; | ||
7433 | position: absolute; | ||
7434 | top: 0; | ||
7435 | right: 0; | ||
7436 | bottom: 0; } | ||
7437 | .circle-clipper.left .circle { | ||
7438 | left: 0; | ||
7439 | border-right-color: transparent !important; | ||
7440 | -webkit-transform: rotate(129deg); | ||
7441 | transform: rotate(129deg); } | ||
7442 | .circle-clipper.right .circle { | ||
7443 | left: -100%; | ||
7444 | border-left-color: transparent !important; | ||
7445 | -webkit-transform: rotate(-129deg); | ||
7446 | transform: rotate(-129deg); } | ||
7447 | |||
7448 | .active .circle-clipper.left .circle { | ||
7449 | /* duration: ARCTIME */ | ||
7450 | -webkit-animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; | ||
7451 | animation: left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } | ||
7452 | |||
7453 | .active .circle-clipper.right .circle { | ||
7454 | /* duration: ARCTIME */ | ||
7455 | -webkit-animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; | ||
7456 | animation: right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both; } | ||
7457 | |||
7458 | @-webkit-keyframes left-spin { | ||
7459 | from { | ||
7460 | -webkit-transform: rotate(130deg); } | ||
7461 | |||
7462 | 50% { | ||
7463 | -webkit-transform: rotate(-5deg); } | ||
7464 | |||
7465 | to { | ||
7466 | -webkit-transform: rotate(130deg); } } | ||
7467 | |||
7468 | @keyframes left-spin { | ||
7469 | from { | ||
7470 | transform: rotate(130deg); } | ||
7471 | |||
7472 | 50% { | ||
7473 | transform: rotate(-5deg); } | ||
7474 | |||
7475 | to { | ||
7476 | transform: rotate(130deg); } } | ||
7477 | |||
7478 | @-webkit-keyframes right-spin { | ||
7479 | from { | ||
7480 | -webkit-transform: rotate(-130deg); } | ||
7481 | |||
7482 | 50% { | ||
7483 | -webkit-transform: rotate(5deg); } | ||
7484 | |||
7485 | to { | ||
7486 | -webkit-transform: rotate(-130deg); } } | ||
7487 | |||
7488 | @keyframes right-spin { | ||
7489 | from { | ||
7490 | transform: rotate(-130deg); } | ||
7491 | |||
7492 | 50% { | ||
7493 | transform: rotate(5deg); } | ||
7494 | |||
7495 | to { | ||
7496 | transform: rotate(-130deg); } } | ||
7497 | |||
7498 | #spinnerContainer.cooldown { | ||
7499 | /* duration: SHRINK_TIME */ | ||
7500 | -webkit-animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); | ||
7501 | animation: container-rotate 1568ms linear infinite, fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1); } | ||
7502 | |||
7503 | @-webkit-keyframes fade-out { | ||
7504 | from { | ||
7505 | opacity: 1; } | ||
7506 | |||
7507 | to { | ||
7508 | opacity: 0; } } | ||
7509 | |||
7510 | @keyframes fade-out { | ||
7511 | from { | ||
7512 | opacity: 1; } | ||
7513 | |||
7514 | to { | ||
7515 | opacity: 0; } } | ||
7516 | |||
7517 | .slider { | ||
7518 | position: relative; | ||
7519 | height: 400px; | ||
7520 | width: 100%; } | ||
7521 | .slider.fullscreen { | ||
7522 | height: 100%; | ||
7523 | width: 100%; | ||
7524 | position: absolute; | ||
7525 | top: 0; | ||
7526 | left: 0; | ||
7527 | right: 0; | ||
7528 | bottom: 0; } | ||
7529 | .slider.fullscreen ul.slides { | ||
7530 | height: 100%; } | ||
7531 | .slider.fullscreen ul.indicators { | ||
7532 | z-index: 2; | ||
7533 | bottom: 30px; } | ||
7534 | .slider .slides { | ||
7535 | background-color: #9e9e9e; | ||
7536 | margin: 0; | ||
7537 | height: 400px; } | ||
7538 | .slider .slides li { | ||
7539 | opacity: 0; | ||
7540 | position: absolute; | ||
7541 | top: 0; | ||
7542 | left: 0; | ||
7543 | z-index: 1; | ||
7544 | width: 100%; | ||
7545 | height: inherit; | ||
7546 | overflow: hidden; } | ||
7547 | .slider .slides li img { | ||
7548 | height: 100%; | ||
7549 | width: 100%; | ||
7550 | background-size: cover; | ||
7551 | background-position: center; } | ||
7552 | .slider .slides li .caption { | ||
7553 | color: #fff; | ||
7554 | position: absolute; | ||
7555 | top: 15%; | ||
7556 | left: 15%; | ||
7557 | width: 70%; | ||
7558 | opacity: 0; } | ||
7559 | .slider .slides li .caption p { | ||
7560 | color: #e0e0e0; } | ||
7561 | .slider .slides li.active { | ||
7562 | z-index: 2; } | ||
7563 | .slider .indicators { | ||
7564 | position: absolute; | ||
7565 | text-align: center; | ||
7566 | left: 0; | ||
7567 | right: 0; | ||
7568 | bottom: 0; | ||
7569 | margin: 0; } | ||
7570 | .slider .indicators .indicator-item { | ||
7571 | display: inline-block; | ||
7572 | position: relative; | ||
7573 | cursor: pointer; | ||
7574 | height: 16px; | ||
7575 | width: 16px; | ||
7576 | margin: 0 12px; | ||
7577 | background-color: #e0e0e0; | ||
7578 | -webkit-transition: background-color .3s; | ||
7579 | -moz-transition: background-color .3s; | ||
7580 | -o-transition: background-color .3s; | ||
7581 | -ms-transition: background-color .3s; | ||
7582 | transition: background-color .3s; | ||
7583 | border-radius: 50%; } | ||
7584 | .slider .indicators .indicator-item.active { | ||
7585 | background-color: #4CAF50; } | ||
7586 | |||
7587 | /* ========================================================================== | ||
7588 | $BASE-PICKER | ||
7589 | ========================================================================== */ | ||
7590 | /** | ||
7591 | * Note: the root picker element should *NOT* be styled more than what's here. | ||
7592 | */ | ||
7593 | .picker { | ||
7594 | font-size: 16px; | ||
7595 | text-align: left; | ||
7596 | line-height: 1.2; | ||
7597 | color: #000000; | ||
7598 | position: absolute; | ||
7599 | z-index: 10000; | ||
7600 | -webkit-user-select: none; | ||
7601 | -moz-user-select: none; | ||
7602 | -ms-user-select: none; | ||
7603 | user-select: none; } | ||
7604 | |||
7605 | /** | ||
7606 | * The picker input element. | ||
7607 | */ | ||
7608 | .picker__input { | ||
7609 | cursor: default; } | ||
7610 | |||
7611 | /** | ||
7612 | * When the picker is opened, the input element is "activated". | ||
7613 | */ | ||
7614 | .picker__input.picker__input--active { | ||
7615 | border-color: #0089ec; } | ||
7616 | |||
7617 | /** | ||
7618 | * The holder is the only "scrollable" top-level container element. | ||
7619 | */ | ||
7620 | .picker__holder { | ||
7621 | width: 100%; | ||
7622 | overflow-y: auto; | ||
7623 | -webkit-overflow-scrolling: touch; } | ||
7624 | |||
7625 | /*! | ||
7626 | * Default mobile-first, responsive styling for pickadate.js | ||
7627 | * Demo: http://amsul.github.io/pickadate.js | ||
7628 | */ | ||
7629 | /** | ||
7630 | * Note: the root picker element should *NOT* be styled more than what's here. | ||
7631 | */ | ||
7632 | /** | ||
7633 | * Make the holder and frame fullscreen. | ||
7634 | */ | ||
7635 | .picker__holder, .picker__frame { | ||
7636 | bottom: 0; | ||
7637 | left: 0; | ||
7638 | right: 0; | ||
7639 | top: 100%; } | ||
7640 | |||
7641 | /** | ||
7642 | * The holder should overlay the entire screen. | ||
7643 | */ | ||
7644 | .picker__holder { | ||
7645 | position: fixed; | ||
7646 | -webkit-transition: background 0.15s ease-out, top 0s 0.15s; | ||
7647 | -moz-transition: background 0.15s ease-out, top 0s 0.15s; | ||
7648 | transition: background 0.15s ease-out, top 0s 0.15s; | ||
7649 | -webkit-backface-visibility: hidden; } | ||
7650 | |||
7651 | /** | ||
7652 | * The frame that bounds the box contents of the picker. | ||
7653 | */ | ||
7654 | .picker__frame { | ||
7655 | position: absolute; | ||
7656 | margin: 0 auto; | ||
7657 | min-width: 256px; | ||
7658 | width: 300px; | ||
7659 | max-height: 350px; | ||
7660 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"; | ||
7661 | filter: alpha(opacity=0); | ||
7662 | -moz-opacity: 0; | ||
7663 | opacity: 0; | ||
7664 | -webkit-transition: all 0.15s ease-out; | ||
7665 | -moz-transition: all 0.15s ease-out; | ||
7666 | transition: all 0.15s ease-out; } | ||
7667 | |||
7668 | @media (min-height: 28.875em) { | ||
7669 | .picker__frame { | ||
7670 | overflow: visible; | ||
7671 | top: auto; | ||
7672 | bottom: -100%; | ||
7673 | max-height: 80%; } } | ||
7674 | |||
7675 | @media (min-height: 40.125em) { | ||
7676 | .picker__frame { | ||
7677 | margin-bottom: 7.5%; } } | ||
7678 | |||
7679 | /** | ||
7680 | * The wrapper sets the stage to vertically align the box contents. | ||
7681 | */ | ||
7682 | .picker__wrap { | ||
7683 | display: table; | ||
7684 | width: 100%; | ||
7685 | height: 100%; } | ||
7686 | |||
7687 | @media (min-height: 28.875em) { | ||
7688 | .picker__wrap { | ||
7689 | display: block; } } | ||
7690 | |||
7691 | /** | ||
7692 | * The box contains all the picker contents. | ||
7693 | */ | ||
7694 | .picker__box { | ||
7695 | background: #ffffff; | ||
7696 | display: table-cell; | ||
7697 | vertical-align: middle; } | ||
7698 | |||
7699 | @media (min-height: 28.875em) { | ||
7700 | .picker__box { | ||
7701 | display: block; | ||
7702 | border: 1px solid #777777; | ||
7703 | border-top-color: #898989; | ||
7704 | border-bottom-width: 0; | ||
7705 | -webkit-border-radius: 5px 5px 0 0; | ||
7706 | -moz-border-radius: 5px 5px 0 0; | ||
7707 | border-radius: 5px 5px 0 0; | ||
7708 | -webkit-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); | ||
7709 | -moz-box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); | ||
7710 | box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24); } } | ||
7711 | |||
7712 | /** | ||
7713 | * When the picker opens... | ||
7714 | */ | ||
7715 | .picker--opened .picker__holder { | ||
7716 | top: 0; | ||
7717 | background: transparent; | ||
7718 | -ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)"; | ||
7719 | zoom: 1; | ||
7720 | background: rgba(0, 0, 0, 0.32); | ||
7721 | -webkit-transition: background 0.15s ease-out; | ||
7722 | -moz-transition: background 0.15s ease-out; | ||
7723 | transition: background 0.15s ease-out; } | ||
7724 | |||
7725 | .picker--opened .picker__frame { | ||
7726 | top: 0; | ||
7727 | -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"; | ||
7728 | filter: alpha(opacity=100); | ||
7729 | -moz-opacity: 1; | ||
7730 | opacity: 1; } | ||
7731 | |||
7732 | @media (min-height: 35.875em) { | ||
7733 | .picker--opened .picker__frame { | ||
7734 | top: 10%; | ||
7735 | bottom: 20% auto; } } | ||
7736 | |||
7737 | /** | ||
7738 | * For `large` screens, transform into an inline picker. | ||
7739 | */ | ||
7740 | /* ========================================================================== | ||
7741 | CUSTOM MATERIALIZE STYLES | ||
7742 | ========================================================================== */ | ||
7743 | .picker__input.picker__input--active { | ||
7744 | border-color: #E3F2FD; } | ||
7745 | |||
7746 | .picker__frame { | ||
7747 | margin: 0 auto; | ||
7748 | max-width: 325px; } | ||
7749 | |||
7750 | @media (min-height: 38.875em) { | ||
7751 | .picker--opened .picker__frame { | ||
7752 | top: 10%; | ||
7753 | bottom: auto; } } | ||
7754 | |||
7755 | /* ========================================================================== | ||
7756 | $BASE-DATE-PICKER | ||
7757 | ========================================================================== */ | ||
7758 | /** | ||
7759 | * The picker box. | ||
7760 | */ | ||
7761 | .picker__box { | ||
7762 | padding: 0 1em; } | ||
7763 | |||
7764 | /** | ||
7765 | * The header containing the month and year stuff. | ||
7766 | */ | ||
7767 | .picker__header { | ||
7768 | text-align: center; | ||
7769 | position: relative; | ||
7770 | margin-top: .75em; } | ||
7771 | |||
7772 | /** | ||
7773 | * The month and year labels. | ||
7774 | */ | ||
7775 | .picker__month, .picker__year { | ||
7776 | display: inline-block; | ||
7777 | margin-left: .25em; | ||
7778 | margin-right: .25em; } | ||
7779 | |||
7780 | /** | ||
7781 | * The month and year selectors. | ||
7782 | */ | ||
7783 | .picker__select--month, .picker__select--year { | ||
7784 | height: 2em; | ||
7785 | padding: 0; | ||
7786 | margin-left: .25em; | ||
7787 | margin-right: .25em; } | ||
7788 | |||
7789 | .picker__select--month.browser-default { | ||
7790 | display: inline; | ||
7791 | background-color: #FFFFFF; | ||
7792 | width: 40%; } | ||
7793 | |||
7794 | .picker__select--year.browser-default { | ||
7795 | display: inline; | ||
7796 | background-color: #FFFFFF; | ||
7797 | width: 25%; } | ||
7798 | |||
7799 | .picker__select--month:focus, .picker__select--year:focus { | ||
7800 | border-color: rgba(0, 0, 0, 0.05); } | ||
7801 | |||
7802 | /** | ||
7803 | * The month navigation buttons. | ||
7804 | */ | ||
7805 | .picker__nav--prev, .picker__nav--next { | ||
7806 | position: absolute; | ||
7807 | padding: .5em 1.25em; | ||
7808 | width: 1em; | ||
7809 | height: 1em; | ||
7810 | box-sizing: content-box; | ||
7811 | top: -0.25em; } | ||
7812 | |||
7813 | .picker__nav--prev { | ||
7814 | left: -1em; | ||
7815 | padding-right: 1.25em; } | ||
7816 | |||
7817 | .picker__nav--next { | ||
7818 | right: -1em; | ||
7819 | padding-left: 1.25em; } | ||
7820 | |||
7821 | .picker__nav--disabled, .picker__nav--disabled:hover, .picker__nav--disabled:before, .picker__nav--disabled:before:hover { | ||
7822 | cursor: default; | ||
7823 | background: none; | ||
7824 | border-right-color: #f5f5f5; | ||
7825 | border-left-color: #f5f5f5; } | ||
7826 | |||
7827 | /** | ||
7828 | * The calendar table of dates | ||
7829 | */ | ||
7830 | .picker__table { | ||
7831 | text-align: center; | ||
7832 | border-collapse: collapse; | ||
7833 | border-spacing: 0; | ||
7834 | table-layout: fixed; | ||
7835 | font-size: 1rem; | ||
7836 | width: 100%; | ||
7837 | margin-top: .75em; | ||
7838 | margin-bottom: .5em; } | ||
7839 | |||
7840 | .picker__table th, .picker__table td { | ||
7841 | text-align: center; } | ||
7842 | |||
7843 | .picker__table td { | ||
7844 | margin: 0; | ||
7845 | padding: 0; } | ||
7846 | |||
7847 | /** | ||
7848 | * The weekday labels | ||
7849 | */ | ||
7850 | .picker__weekday { | ||
7851 | width: 14.285714286%; | ||
7852 | font-size: .75em; | ||
7853 | padding-bottom: .25em; | ||
7854 | color: #999999; | ||
7855 | font-weight: 500; | ||
7856 | /* Increase the spacing a tad */ } | ||
7857 | |||
7858 | @media (min-height: 33.875em) { | ||
7859 | .picker__weekday { | ||
7860 | padding-bottom: .5em; } } | ||
7861 | |||
7862 | /** | ||
7863 | * The days on the calendar | ||
7864 | */ | ||
7865 | .picker__day--today { | ||
7866 | position: relative; | ||
7867 | color: #595959; | ||
7868 | letter-spacing: -.3; | ||
7869 | padding: .75rem 0; | ||
7870 | font-weight: 400; | ||
7871 | border: 1px solid transparent; } | ||
7872 | |||
7873 | .picker__day--disabled:before { | ||
7874 | border-top-color: #aaaaaa; } | ||
7875 | |||
7876 | .picker__day--infocus:hover { | ||
7877 | cursor: pointer; | ||
7878 | color: #000; | ||
7879 | font-weight: 500; } | ||
7880 | |||
7881 | .picker__day--outfocus { | ||
7882 | display: none; | ||
7883 | padding: .75rem 0; | ||
7884 | color: #fff; } | ||
7885 | |||
7886 | .picker__day--outfocus:hover { | ||
7887 | cursor: pointer; | ||
7888 | color: #dddddd; | ||
7889 | font-weight: 500; } | ||
7890 | |||
7891 | .picker__day--highlighted:hover, .picker--focused .picker__day--highlighted { | ||
7892 | cursor: pointer; } | ||
7893 | |||
7894 | .picker__day--selected, .picker__day--selected:hover, .picker--focused .picker__day--selected { | ||
7895 | border-radius: 50%; | ||
7896 | -webkit-transform: scale(.75); | ||
7897 | -moz-transform: scale(.75); | ||
7898 | -ms-transform: scale(.75); | ||
7899 | -o-transform: scale(.75); | ||
7900 | transform: scale(.75); | ||
7901 | background: #0089ec; | ||
7902 | color: #ffffff; } | ||
7903 | |||
7904 | .picker__day--disabled, .picker__day--disabled:hover, .picker--focused .picker__day--disabled { | ||
7905 | background: #f5f5f5; | ||
7906 | border-color: #f5f5f5; | ||
7907 | color: #dddddd; | ||
7908 | cursor: default; } | ||
7909 | |||
7910 | .picker__day--highlighted.picker__day--disabled, .picker__day--highlighted.picker__day--disabled:hover { | ||
7911 | background: #bbbbbb; } | ||
7912 | |||
7913 | /** | ||
7914 | * The footer containing the "today", "clear", and "close" buttons. | ||
7915 | */ | ||
7916 | .picker__footer { | ||
7917 | text-align: center; | ||
7918 | display: flex; | ||
7919 | align-items: center; | ||
7920 | justify-content: space-between; } | ||
7921 | |||
7922 | .picker__button--today, .picker__button--clear, .picker__button--close { | ||
7923 | border: 1px solid #ffffff; | ||
7924 | background: #ffffff; | ||
7925 | font-size: .8em; | ||
7926 | padding: .66em 0; | ||
7927 | font-weight: bold; | ||
7928 | width: 33%; | ||
7929 | display: inline-block; | ||
7930 | vertical-align: bottom; } | ||
7931 | |||
7932 | .picker__button--today:hover, .picker__button--clear:hover, .picker__button--close:hover { | ||
7933 | cursor: pointer; | ||
7934 | color: #000000; | ||
7935 | background: #b1dcfb; | ||
7936 | border-bottom-color: #b1dcfb; } | ||
7937 | |||
7938 | .picker__button--today:focus, .picker__button--clear:focus, .picker__button--close:focus { | ||
7939 | background: #b1dcfb; | ||
7940 | border-color: rgba(0, 0, 0, 0.05); | ||
7941 | outline: none; } | ||
7942 | |||
7943 | .picker__button--today:before, .picker__button--clear:before, .picker__button--close:before { | ||
7944 | position: relative; | ||
7945 | display: inline-block; | ||
7946 | height: 0; } | ||
7947 | |||
7948 | .picker__button--today:before, .picker__button--clear:before { | ||
7949 | content: " "; | ||
7950 | margin-right: .45em; } | ||
7951 | |||
7952 | .picker__button--today:before { | ||
7953 | top: -0.05em; | ||
7954 | width: 0; | ||
7955 | border-top: 0.66em solid #0059bc; | ||
7956 | border-left: .66em solid transparent; } | ||
7957 | |||
7958 | .picker__button--clear:before { | ||
7959 | top: -0.25em; | ||
7960 | width: .66em; | ||
7961 | border-top: 3px solid #ee2200; } | ||
7962 | |||
7963 | .picker__button--close:before { | ||
7964 | content: "\D7"; | ||
7965 | top: -0.1em; | ||
7966 | vertical-align: top; | ||
7967 | font-size: 1.1em; | ||
7968 | margin-right: .35em; | ||
7969 | color: #777777; } | ||
7970 | |||
7971 | .picker__button--today[disabled], .picker__button--today[disabled]:hover { | ||
7972 | background: #f5f5f5; | ||
7973 | border-color: #f5f5f5; | ||
7974 | color: #dddddd; | ||
7975 | cursor: default; } | ||
7976 | |||
7977 | .picker__button--today[disabled]:before { | ||
7978 | border-top-color: #aaaaaa; } | ||
7979 | |||
7980 | /* ========================================================================== | ||
7981 | CUSTOM MATERIALIZE STYLES | ||
7982 | ========================================================================== */ | ||
7983 | .picker__box { | ||
7984 | border-radius: 2px; | ||
7985 | overflow: hidden; } | ||
7986 | |||
7987 | .picker__date-display { | ||
7988 | text-align: center; | ||
7989 | background-color: #26a69a; | ||
7990 | color: #fff; | ||
7991 | padding-bottom: 15px; | ||
7992 | font-weight: 300; } | ||
7993 | |||
7994 | .picker__nav--prev:hover, .picker__nav--next:hover { | ||
7995 | cursor: pointer; | ||
7996 | color: #000000; | ||
7997 | background: #a1ded8; } | ||
7998 | |||
7999 | .picker__weekday-display { | ||
8000 | background-color: #1f897f; | ||
8001 | padding: 10px; | ||
8002 | font-weight: 200; | ||
8003 | letter-spacing: .5; | ||
8004 | font-size: 1rem; | ||
8005 | margin-bottom: 15px; } | ||
8006 | |||
8007 | .picker__month-display { | ||
8008 | text-transform: uppercase; | ||
8009 | font-size: 2rem; } | ||
8010 | |||
8011 | .picker__day-display { | ||
8012 | font-size: 4.5rem; | ||
8013 | font-weight: 400; } | ||
8014 | |||
8015 | .picker__year-display { | ||
8016 | font-size: 1.8rem; | ||
8017 | color: rgba(255, 255, 255, 0.4); } | ||
8018 | |||
8019 | .picker__box { | ||
8020 | padding: 0; } | ||
8021 | |||
8022 | .picker__calendar-container { | ||
8023 | padding: 0 1rem; } | ||
8024 | .picker__calendar-container thead { | ||
8025 | border: none; } | ||
8026 | |||
8027 | .picker__table { | ||
8028 | margin-top: 0; | ||
8029 | margin-bottom: .5em; } | ||
8030 | |||
8031 | .picker__day--infocus { | ||
8032 | color: #595959; | ||
8033 | letter-spacing: -.3; | ||
8034 | padding: .75rem 0; | ||
8035 | font-weight: 400; | ||
8036 | border: 1px solid transparent; } | ||
8037 | |||
8038 | .picker__day.picker__day--today { | ||
8039 | color: #26a69a; } | ||
8040 | |||
8041 | .picker__day.picker__day--today.picker__day--selected { | ||
8042 | color: #fff; } | ||
8043 | |||
8044 | .picker__weekday { | ||
8045 | font-size: .9rem; } | ||
8046 | |||
8047 | .picker__day--selected, .picker__day--selected:hover, .picker--focused .picker__day--selected { | ||
8048 | border-radius: 50%; | ||
8049 | -webkit-transform: scale(.9); | ||
8050 | -moz-transform: scale(.9); | ||
8051 | -ms-transform: scale(.9); | ||
8052 | -o-transform: scale(.9); | ||
8053 | transform: scale(.9); | ||
8054 | background-color: #26a69a; | ||
8055 | color: #ffffff; } | ||
8056 | .picker__day--selected.picker__day--outfocus, .picker__day--selected:hover.picker__day--outfocus, .picker--focused .picker__day--selected.picker__day--outfocus { | ||
8057 | background-color: #a1ded8; } | ||
8058 | |||
8059 | .picker__footer { | ||
8060 | text-align: right; | ||
8061 | padding: 5px 10px; } | ||
8062 | |||
8063 | .picker__close, .picker__today { | ||
8064 | font-size: 1.1rem; | ||
8065 | padding: 0 1rem; | ||
8066 | color: #26a69a; } | ||
8067 | |||
8068 | .picker__nav--prev:before, .picker__nav--next:before { | ||
8069 | content: " "; | ||
8070 | border-top: .5em solid transparent; | ||
8071 | border-bottom: .5em solid transparent; | ||
8072 | border-right: 0.75em solid #676767; | ||
8073 | width: 0; | ||
8074 | height: 0; | ||
8075 | display: block; | ||
8076 | margin: 0 auto; } | ||
8077 | |||
8078 | .picker__nav--next:before { | ||
8079 | border-right: 0; | ||
8080 | border-left: 0.75em solid #676767; } | ||
8081 | |||
8082 | button.picker__today:focus, button.picker__clear:focus, button.picker__close:focus { | ||
8083 | background-color: #a1ded8; } | ||
8084 | |||
8085 | /* ========================================================================== | ||
8086 | $BASE-TIME-PICKER | ||
8087 | ========================================================================== */ | ||
8088 | /** | ||
8089 | * The list of times. | ||
8090 | */ | ||
8091 | .picker__list { | ||
8092 | list-style: none; | ||
8093 | padding: 0.75em 0 4.2em; | ||
8094 | margin: 0; } | ||
8095 | |||
8096 | /** | ||
8097 | * The times on the clock. | ||
8098 | */ | ||
8099 | .picker__list-item { | ||
8100 | border-bottom: 1px solid #dddddd; | ||
8101 | border-top: 1px solid #dddddd; | ||
8102 | margin-bottom: -1px; | ||
8103 | position: relative; | ||
8104 | background: #ffffff; | ||
8105 | padding: .75em 1.25em; } | ||
8106 | |||
8107 | @media (min-height: 46.75em) { | ||
8108 | .picker__list-item { | ||
8109 | padding: .5em 1em; } } | ||
8110 | |||
8111 | /* Hovered time */ | ||
8112 | .picker__list-item:hover { | ||
8113 | cursor: pointer; | ||
8114 | color: #000000; | ||
8115 | background: #b1dcfb; | ||
8116 | border-color: #0089ec; | ||
8117 | z-index: 10; } | ||
8118 | |||
8119 | /* Highlighted and hovered/focused time */ | ||
8120 | .picker__list-item--highlighted { | ||
8121 | border-color: #0089ec; | ||
8122 | z-index: 10; } | ||
8123 | |||
8124 | .picker__list-item--highlighted:hover, .picker--focused .picker__list-item--highlighted { | ||
8125 | cursor: pointer; | ||
8126 | color: #000000; | ||
8127 | background: #b1dcfb; } | ||
8128 | |||
8129 | /* Selected and hovered/focused time */ | ||
8130 | .picker__list-item--selected, .picker__list-item--selected:hover, .picker--focused .picker__list-item--selected { | ||
8131 | background: #0089ec; | ||
8132 | color: #ffffff; | ||
8133 | z-index: 10; } | ||
8134 | |||
8135 | /* Disabled time */ | ||
8136 | .picker__list-item--disabled, .picker__list-item--disabled:hover, .picker--focused .picker__list-item--disabled { | ||
8137 | background: #f5f5f5; | ||
8138 | border-color: #f5f5f5; | ||
8139 | color: #dddddd; | ||
8140 | cursor: default; | ||
8141 | border-color: #dddddd; | ||
8142 | z-index: auto; } | ||
8143 | |||
8144 | /** | ||
8145 | * The clear button | ||
8146 | */ | ||
8147 | .picker--time .picker__button--clear { | ||
8148 | display: block; | ||
8149 | width: 80%; | ||
8150 | margin: 1em auto 0; | ||
8151 | padding: 1em 1.25em; | ||
8152 | background: none; | ||
8153 | border: 0; | ||
8154 | font-weight: 500; | ||
8155 | font-size: .67em; | ||
8156 | text-align: center; | ||
8157 | text-transform: uppercase; | ||
8158 | color: #666; } | ||
8159 | |||
8160 | .picker--time .picker__button--clear:hover, .picker--time .picker__button--clear:focus { | ||
8161 | color: #000000; | ||
8162 | background: #b1dcfb; | ||
8163 | background: #ee2200; | ||
8164 | border-color: #ee2200; | ||
8165 | cursor: pointer; | ||
8166 | color: #ffffff; | ||
8167 | outline: none; } | ||
8168 | |||
8169 | .picker--time .picker__button--clear:before { | ||
8170 | top: -0.25em; | ||
8171 | color: #666; | ||
8172 | font-size: 1.25em; | ||
8173 | font-weight: bold; } | ||
8174 | |||
8175 | .picker--time .picker__button--clear:hover:before, .picker--time .picker__button--clear:focus:before { | ||
8176 | color: #ffffff; } | ||
8177 | |||
8178 | /* ========================================================================== | ||
8179 | $DEFAULT-TIME-PICKER | ||
8180 | ========================================================================== */ | ||
8181 | /** | ||
8182 | * The frame the bounds the time picker. | ||
8183 | */ | ||
8184 | .picker--time .picker__frame { | ||
8185 | min-width: 256px; | ||
8186 | max-width: 320px; } | ||
8187 | |||
8188 | /** | ||
8189 | * The picker box. | ||
8190 | */ | ||
8191 | .picker--time .picker__box { | ||
8192 | font-size: 1em; | ||
8193 | background: #f2f2f2; | ||
8194 | padding: 0; } | ||
8195 | |||
8196 | @media (min-height: 40.125em) { | ||
8197 | .picker--time .picker__box { | ||
8198 | margin-bottom: 5em; } } | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/css/materialize.min.css b/src/Wallabag/CoreBundle/Resources/public/themes/material/css/materialize.min.css deleted file mode 100644 index f49bb0e1..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/css/materialize.min.css +++ /dev/null | |||
@@ -1,16 +0,0 @@ | |||
1 | /*! | ||
2 | * Materialize v0.97.1 (http://materializecss.com) | ||
3 | * Copyright 2014-2015 Materialize | ||
4 | * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) | ||
5 | */ | ||
6 | .materialize-red.lighten-5{background-color:#fdeaeb !important}.materialize-red-text.text-lighten-5{color:#fdeaeb !important}.materialize-red.lighten-4{background-color:#f8c1c3 !important}.materialize-red-text.text-lighten-4{color:#f8c1c3 !important}.materialize-red.lighten-3{background-color:#f3989b !important}.materialize-red-text.text-lighten-3{color:#f3989b !important}.materialize-red.lighten-2{background-color:#ee6e73 !important}.materialize-red-text.text-lighten-2{color:#ee6e73 !important}.materialize-red.lighten-1{background-color:#ea454b !important}.materialize-red-text.text-lighten-1{color:#ea454b !important}.materialize-red{background-color:#e51c23 !important}.materialize-red-text{color:#e51c23 !important}.materialize-red.darken-1{background-color:#d0181e !important}.materialize-red-text.text-darken-1{color:#d0181e !important}.materialize-red.darken-2{background-color:#b9151b !important}.materialize-red-text.text-darken-2{color:#b9151b !important}.materialize-red.darken-3{background-color:#a21318 !important}.materialize-red-text.text-darken-3{color:#a21318 !important}.materialize-red.darken-4{background-color:#8b1014 !important}.materialize-red-text.text-darken-4{color:#8b1014 !important}.red.lighten-5{background-color:#FFEBEE !important}.red-text.text-lighten-5{color:#FFEBEE !important}.red.lighten-4{background-color:#FFCDD2 !important}.red-text.text-lighten-4{color:#FFCDD2 !important}.red.lighten-3{background-color:#EF9A9A !important}.red-text.text-lighten-3{color:#EF9A9A !important}.red.lighten-2{background-color:#E57373 !important}.red-text.text-lighten-2{color:#E57373 !important}.red.lighten-1{background-color:#EF5350 !important}.red-text.text-lighten-1{color:#EF5350 !important}.red{background-color:#F44336 !important}.red-text{color:#F44336 !important}.red.darken-1{background-color:#E53935 !important}.red-text.text-darken-1{color:#E53935 !important}.red.darken-2{background-color:#D32F2F !important}.red-text.text-darken-2{color:#D32F2F !important}.red.darken-3{background-color:#C62828 !important}.red-text.text-darken-3{color:#C62828 !important}.red.darken-4{background-color:#B71C1C !important}.red-text.text-darken-4{color:#B71C1C !important}.red.accent-1{background-color:#FF8A80 !important}.red-text.text-accent-1{color:#FF8A80 !important}.red.accent-2{background-color:#FF5252 !important}.red-text.text-accent-2{color:#FF5252 !important}.red.accent-3{background-color:#FF1744 !important}.red-text.text-accent-3{color:#FF1744 !important}.red.accent-4{background-color:#D50000 !important}.red-text.text-accent-4{color:#D50000 !important}.pink.lighten-5{background-color:#fce4ec !important}.pink-text.text-lighten-5{color:#fce4ec !important}.pink.lighten-4{background-color:#f8bbd0 !important}.pink-text.text-lighten-4{color:#f8bbd0 !important}.pink.lighten-3{background-color:#f48fb1 !important}.pink-text.text-lighten-3{color:#f48fb1 !important}.pink.lighten-2{background-color:#f06292 !important}.pink-text.text-lighten-2{color:#f06292 !important}.pink.lighten-1{background-color:#ec407a !important}.pink-text.text-lighten-1{color:#ec407a !important}.pink{background-color:#e91e63 !important}.pink-text{color:#e91e63 !important}.pink.darken-1{background-color:#d81b60 !important}.pink-text.text-darken-1{color:#d81b60 !important}.pink.darken-2{background-color:#c2185b !important}.pink-text.text-darken-2{color:#c2185b !important}.pink.darken-3{background-color:#ad1457 !important}.pink-text.text-darken-3{color:#ad1457 !important}.pink.darken-4{background-color:#880e4f !important}.pink-text.text-darken-4{color:#880e4f !important}.pink.accent-1{background-color:#ff80ab !important}.pink-text.text-accent-1{color:#ff80ab !important}.pink.accent-2{background-color:#ff4081 !important}.pink-text.text-accent-2{color:#ff4081 !important}.pink.accent-3{background-color:#f50057 !important}.pink-text.text-accent-3{color:#f50057 !important}.pink.accent-4{background-color:#c51162 !important}.pink-text.text-accent-4{color:#c51162 !important}.purple.lighten-5{background-color:#f3e5f5 !important}.purple-text.text-lighten-5{color:#f3e5f5 !important}.purple.lighten-4{background-color:#e1bee7 !important}.purple-text.text-lighten-4{color:#e1bee7 !important}.purple.lighten-3{background-color:#ce93d8 !important}.purple-text.text-lighten-3{color:#ce93d8 !important}.purple.lighten-2{background-color:#ba68c8 !important}.purple-text.text-lighten-2{color:#ba68c8 !important}.purple.lighten-1{background-color:#ab47bc !important}.purple-text.text-lighten-1{color:#ab47bc !important}.purple{background-color:#9c27b0 !important}.purple-text{color:#9c27b0 !important}.purple.darken-1{background-color:#8e24aa !important}.purple-text.text-darken-1{color:#8e24aa !important}.purple.darken-2{background-color:#7b1fa2 !important}.purple-text.text-darken-2{color:#7b1fa2 !important}.purple.darken-3{background-color:#6a1b9a !important}.purple-text.text-darken-3{color:#6a1b9a !important}.purple.darken-4{background-color:#4a148c !important}.purple-text.text-darken-4{color:#4a148c !important}.purple.accent-1{background-color:#ea80fc !important}.purple-text.text-accent-1{color:#ea80fc !important}.purple.accent-2{background-color:#e040fb !important}.purple-text.text-accent-2{color:#e040fb !important}.purple.accent-3{background-color:#d500f9 !important}.purple-text.text-accent-3{color:#d500f9 !important}.purple.accent-4{background-color:#aa00ff !important}.purple-text.text-accent-4{color:#aa00ff !important}.deep-purple.lighten-5{background-color:#ede7f6 !important}.deep-purple-text.text-lighten-5{color:#ede7f6 !important}.deep-purple.lighten-4{background-color:#d1c4e9 !important}.deep-purple-text.text-lighten-4{color:#d1c4e9 !important}.deep-purple.lighten-3{background-color:#b39ddb !important}.deep-purple-text.text-lighten-3{color:#b39ddb !important}.deep-purple.lighten-2{background-color:#9575cd !important}.deep-purple-text.text-lighten-2{color:#9575cd !important}.deep-purple.lighten-1{background-color:#7e57c2 !important}.deep-purple-text.text-lighten-1{color:#7e57c2 !important}.deep-purple{background-color:#673ab7 !important}.deep-purple-text{color:#673ab7 !important}.deep-purple.darken-1{background-color:#5e35b1 !important}.deep-purple-text.text-darken-1{color:#5e35b1 !important}.deep-purple.darken-2{background-color:#512da8 !important}.deep-purple-text.text-darken-2{color:#512da8 !important}.deep-purple.darken-3{background-color:#4527a0 !important}.deep-purple-text.text-darken-3{color:#4527a0 !important}.deep-purple.darken-4{background-color:#311b92 !important}.deep-purple-text.text-darken-4{color:#311b92 !important}.deep-purple.accent-1{background-color:#b388ff !important}.deep-purple-text.text-accent-1{color:#b388ff !important}.deep-purple.accent-2{background-color:#7c4dff !important}.deep-purple-text.text-accent-2{color:#7c4dff !important}.deep-purple.accent-3{background-color:#651fff !important}.deep-purple-text.text-accent-3{color:#651fff !important}.deep-purple.accent-4{background-color:#6200ea !important}.deep-purple-text.text-accent-4{color:#6200ea !important}.indigo.lighten-5{background-color:#e8eaf6 !important}.indigo-text.text-lighten-5{color:#e8eaf6 !important}.indigo.lighten-4{background-color:#c5cae9 !important}.indigo-text.text-lighten-4{color:#c5cae9 !important}.indigo.lighten-3{background-color:#9fa8da !important}.indigo-text.text-lighten-3{color:#9fa8da !important}.indigo.lighten-2{background-color:#7986cb !important}.indigo-text.text-lighten-2{color:#7986cb !important}.indigo.lighten-1{background-color:#5c6bc0 !important}.indigo-text.text-lighten-1{color:#5c6bc0 !important}.indigo{background-color:#3f51b5 !important}.indigo-text{color:#3f51b5 !important}.indigo.darken-1{background-color:#3949ab !important}.indigo-text.text-darken-1{color:#3949ab !important}.indigo.darken-2{background-color:#303f9f !important}.indigo-text.text-darken-2{color:#303f9f !important}.indigo.darken-3{background-color:#283593 !important}.indigo-text.text-darken-3{color:#283593 !important}.indigo.darken-4{background-color:#1a237e !important}.indigo-text.text-darken-4{color:#1a237e !important}.indigo.accent-1{background-color:#8c9eff !important}.indigo-text.text-accent-1{color:#8c9eff !important}.indigo.accent-2{background-color:#536dfe !important}.indigo-text.text-accent-2{color:#536dfe !important}.indigo.accent-3{background-color:#3d5afe !important}.indigo-text.text-accent-3{color:#3d5afe !important}.indigo.accent-4{background-color:#304ffe !important}.indigo-text.text-accent-4{color:#304ffe !important}.blue.lighten-5{background-color:#E3F2FD !important}.blue-text.text-lighten-5{color:#E3F2FD !important}.blue.lighten-4{background-color:#BBDEFB !important}.blue-text.text-lighten-4{color:#BBDEFB !important}.blue.lighten-3{background-color:#90CAF9 !important}.blue-text.text-lighten-3{color:#90CAF9 !important}.blue.lighten-2{background-color:#64B5F6 !important}.blue-text.text-lighten-2{color:#64B5F6 !important}.blue.lighten-1{background-color:#42A5F5 !important}.blue-text.text-lighten-1{color:#42A5F5 !important}.blue{background-color:#2196F3 !important}.blue-text{color:#2196F3 !important}.blue.darken-1{background-color:#1E88E5 !important}.blue-text.text-darken-1{color:#1E88E5 !important}.blue.darken-2{background-color:#1976D2 !important}.blue-text.text-darken-2{color:#1976D2 !important}.blue.darken-3{background-color:#1565C0 !important}.blue-text.text-darken-3{color:#1565C0 !important}.blue.darken-4{background-color:#0D47A1 !important}.blue-text.text-darken-4{color:#0D47A1 !important}.blue.accent-1{background-color:#82B1FF !important}.blue-text.text-accent-1{color:#82B1FF !important}.blue.accent-2{background-color:#448AFF !important}.blue-text.text-accent-2{color:#448AFF !important}.blue.accent-3{background-color:#2979FF !important}.blue-text.text-accent-3{color:#2979FF !important}.blue.accent-4{background-color:#2962FF !important}.blue-text.text-accent-4{color:#2962FF !important}.light-blue.lighten-5{background-color:#e1f5fe !important}.light-blue-text.text-lighten-5{color:#e1f5fe !important}.light-blue.lighten-4{background-color:#b3e5fc !important}.light-blue-text.text-lighten-4{color:#b3e5fc !important}.light-blue.lighten-3{background-color:#81d4fa !important}.light-blue-text.text-lighten-3{color:#81d4fa !important}.light-blue.lighten-2{background-color:#4fc3f7 !important}.light-blue-text.text-lighten-2{color:#4fc3f7 !important}.light-blue.lighten-1{background-color:#29b6f6 !important}.light-blue-text.text-lighten-1{color:#29b6f6 !important}.light-blue{background-color:#03a9f4 !important}.light-blue-text{color:#03a9f4 !important}.light-blue.darken-1{background-color:#039be5 !important}.light-blue-text.text-darken-1{color:#039be5 !important}.light-blue.darken-2{background-color:#0288d1 !important}.light-blue-text.text-darken-2{color:#0288d1 !important}.light-blue.darken-3{background-color:#0277bd !important}.light-blue-text.text-darken-3{color:#0277bd !important}.light-blue.darken-4{background-color:#01579b !important}.light-blue-text.text-darken-4{color:#01579b !important}.light-blue.accent-1{background-color:#80d8ff !important}.light-blue-text.text-accent-1{color:#80d8ff !important}.light-blue.accent-2{background-color:#40c4ff !important}.light-blue-text.text-accent-2{color:#40c4ff !important}.light-blue.accent-3{background-color:#00b0ff !important}.light-blue-text.text-accent-3{color:#00b0ff !important}.light-blue.accent-4{background-color:#0091ea !important}.light-blue-text.text-accent-4{color:#0091ea !important}.cyan.lighten-5{background-color:#e0f7fa !important}.cyan-text.text-lighten-5{color:#e0f7fa !important}.cyan.lighten-4{background-color:#b2ebf2 !important}.cyan-text.text-lighten-4{color:#b2ebf2 !important}.cyan.lighten-3{background-color:#80deea !important}.cyan-text.text-lighten-3{color:#80deea !important}.cyan.lighten-2{background-color:#4dd0e1 !important}.cyan-text.text-lighten-2{color:#4dd0e1 !important}.cyan.lighten-1{background-color:#26c6da !important}.cyan-text.text-lighten-1{color:#26c6da !important}.cyan{background-color:#00bcd4 !important}.cyan-text{color:#00bcd4 !important}.cyan.darken-1{background-color:#00acc1 !important}.cyan-text.text-darken-1{color:#00acc1 !important}.cyan.darken-2{background-color:#0097a7 !important}.cyan-text.text-darken-2{color:#0097a7 !important}.cyan.darken-3{background-color:#00838f !important}.cyan-text.text-darken-3{color:#00838f !important}.cyan.darken-4{background-color:#006064 !important}.cyan-text.text-darken-4{color:#006064 !important}.cyan.accent-1{background-color:#84ffff !important}.cyan-text.text-accent-1{color:#84ffff !important}.cyan.accent-2{background-color:#18ffff !important}.cyan-text.text-accent-2{color:#18ffff !important}.cyan.accent-3{background-color:#00e5ff !important}.cyan-text.text-accent-3{color:#00e5ff !important}.cyan.accent-4{background-color:#00b8d4 !important}.cyan-text.text-accent-4{color:#00b8d4 !important}.teal.lighten-5{background-color:#e0f2f1 !important}.teal-text.text-lighten-5{color:#e0f2f1 !important}.teal.lighten-4{background-color:#b2dfdb !important}.teal-text.text-lighten-4{color:#b2dfdb !important}.teal.lighten-3{background-color:#80cbc4 !important}.teal-text.text-lighten-3{color:#80cbc4 !important}.teal.lighten-2{background-color:#4db6ac !important}.teal-text.text-lighten-2{color:#4db6ac !important}.teal.lighten-1{background-color:#26a69a !important}.teal-text.text-lighten-1{color:#26a69a !important}.teal{background-color:#009688 !important}.teal-text{color:#009688 !important}.teal.darken-1{background-color:#00897b !important}.teal-text.text-darken-1{color:#00897b !important}.teal.darken-2{background-color:#00796b !important}.teal-text.text-darken-2{color:#00796b !important}.teal.darken-3{background-color:#00695c !important}.teal-text.text-darken-3{color:#00695c !important}.teal.darken-4{background-color:#004d40 !important}.teal-text.text-darken-4{color:#004d40 !important}.teal.accent-1{background-color:#a7ffeb !important}.teal-text.text-accent-1{color:#a7ffeb !important}.teal.accent-2{background-color:#64ffda !important}.teal-text.text-accent-2{color:#64ffda !important}.teal.accent-3{background-color:#1de9b6 !important}.teal-text.text-accent-3{color:#1de9b6 !important}.teal.accent-4{background-color:#00bfa5 !important}.teal-text.text-accent-4{color:#00bfa5 !important}.green.lighten-5{background-color:#E8F5E9 !important}.green-text.text-lighten-5{color:#E8F5E9 !important}.green.lighten-4{background-color:#C8E6C9 !important}.green-text.text-lighten-4{color:#C8E6C9 !important}.green.lighten-3{background-color:#A5D6A7 !important}.green-text.text-lighten-3{color:#A5D6A7 !important}.green.lighten-2{background-color:#81C784 !important}.green-text.text-lighten-2{color:#81C784 !important}.green.lighten-1{background-color:#66BB6A !important}.green-text.text-lighten-1{color:#66BB6A !important}.green{background-color:#4CAF50 !important}.green-text{color:#4CAF50 !important}.green.darken-1{background-color:#43A047 !important}.green-text.text-darken-1{color:#43A047 !important}.green.darken-2{background-color:#388E3C !important}.green-text.text-darken-2{color:#388E3C !important}.green.darken-3{background-color:#2E7D32 !important}.green-text.text-darken-3{color:#2E7D32 !important}.green.darken-4{background-color:#1B5E20 !important}.green-text.text-darken-4{color:#1B5E20 !important}.green.accent-1{background-color:#B9F6CA !important}.green-text.text-accent-1{color:#B9F6CA !important}.green.accent-2{background-color:#69F0AE !important}.green-text.text-accent-2{color:#69F0AE !important}.green.accent-3{background-color:#00E676 !important}.green-text.text-accent-3{color:#00E676 !important}.green.accent-4{background-color:#00C853 !important}.green-text.text-accent-4{color:#00C853 !important}.light-green.lighten-5{background-color:#f1f8e9 !important}.light-green-text.text-lighten-5{color:#f1f8e9 !important}.light-green.lighten-4{background-color:#dcedc8 !important}.light-green-text.text-lighten-4{color:#dcedc8 !important}.light-green.lighten-3{background-color:#c5e1a5 !important}.light-green-text.text-lighten-3{color:#c5e1a5 !important}.light-green.lighten-2{background-color:#aed581 !important}.light-green-text.text-lighten-2{color:#aed581 !important}.light-green.lighten-1{background-color:#9ccc65 !important}.light-green-text.text-lighten-1{color:#9ccc65 !important}.light-green{background-color:#8bc34a !important}.light-green-text{color:#8bc34a !important}.light-green.darken-1{background-color:#7cb342 !important}.light-green-text.text-darken-1{color:#7cb342 !important}.light-green.darken-2{background-color:#689f38 !important}.light-green-text.text-darken-2{color:#689f38 !important}.light-green.darken-3{background-color:#558b2f !important}.light-green-text.text-darken-3{color:#558b2f !important}.light-green.darken-4{background-color:#33691e !important}.light-green-text.text-darken-4{color:#33691e !important}.light-green.accent-1{background-color:#ccff90 !important}.light-green-text.text-accent-1{color:#ccff90 !important}.light-green.accent-2{background-color:#b2ff59 !important}.light-green-text.text-accent-2{color:#b2ff59 !important}.light-green.accent-3{background-color:#76ff03 !important}.light-green-text.text-accent-3{color:#76ff03 !important}.light-green.accent-4{background-color:#64dd17 !important}.light-green-text.text-accent-4{color:#64dd17 !important}.lime.lighten-5{background-color:#f9fbe7 !important}.lime-text.text-lighten-5{color:#f9fbe7 !important}.lime.lighten-4{background-color:#f0f4c3 !important}.lime-text.text-lighten-4{color:#f0f4c3 !important}.lime.lighten-3{background-color:#e6ee9c !important}.lime-text.text-lighten-3{color:#e6ee9c !important}.lime.lighten-2{background-color:#dce775 !important}.lime-text.text-lighten-2{color:#dce775 !important}.lime.lighten-1{background-color:#d4e157 !important}.lime-text.text-lighten-1{color:#d4e157 !important}.lime{background-color:#cddc39 !important}.lime-text{color:#cddc39 !important}.lime.darken-1{background-color:#c0ca33 !important}.lime-text.text-darken-1{color:#c0ca33 !important}.lime.darken-2{background-color:#afb42b !important}.lime-text.text-darken-2{color:#afb42b !important}.lime.darken-3{background-color:#9e9d24 !important}.lime-text.text-darken-3{color:#9e9d24 !important}.lime.darken-4{background-color:#827717 !important}.lime-text.text-darken-4{color:#827717 !important}.lime.accent-1{background-color:#f4ff81 !important}.lime-text.text-accent-1{color:#f4ff81 !important}.lime.accent-2{background-color:#eeff41 !important}.lime-text.text-accent-2{color:#eeff41 !important}.lime.accent-3{background-color:#c6ff00 !important}.lime-text.text-accent-3{color:#c6ff00 !important}.lime.accent-4{background-color:#aeea00 !important}.lime-text.text-accent-4{color:#aeea00 !important}.yellow.lighten-5{background-color:#fffde7 !important}.yellow-text.text-lighten-5{color:#fffde7 !important}.yellow.lighten-4{background-color:#fff9c4 !important}.yellow-text.text-lighten-4{color:#fff9c4 !important}.yellow.lighten-3{background-color:#fff59d !important}.yellow-text.text-lighten-3{color:#fff59d !important}.yellow.lighten-2{background-color:#fff176 !important}.yellow-text.text-lighten-2{color:#fff176 !important}.yellow.lighten-1{background-color:#ffee58 !important}.yellow-text.text-lighten-1{color:#ffee58 !important}.yellow{background-color:#ffeb3b !important}.yellow-text{color:#ffeb3b !important}.yellow.darken-1{background-color:#fdd835 !important}.yellow-text.text-darken-1{color:#fdd835 !important}.yellow.darken-2{background-color:#fbc02d !important}.yellow-text.text-darken-2{color:#fbc02d !important}.yellow.darken-3{background-color:#f9a825 !important}.yellow-text.text-darken-3{color:#f9a825 !important}.yellow.darken-4{background-color:#f57f17 !important}.yellow-text.text-darken-4{color:#f57f17 !important}.yellow.accent-1{background-color:#ffff8d !important}.yellow-text.text-accent-1{color:#ffff8d !important}.yellow.accent-2{background-color:#ffff00 !important}.yellow-text.text-accent-2{color:#ffff00 !important}.yellow.accent-3{background-color:#ffea00 !important}.yellow-text.text-accent-3{color:#ffea00 !important}.yellow.accent-4{background-color:#ffd600 !important}.yellow-text.text-accent-4{color:#ffd600 !important}.amber.lighten-5{background-color:#fff8e1 !important}.amber-text.text-lighten-5{color:#fff8e1 !important}.amber.lighten-4{background-color:#ffecb3 !important}.amber-text.text-lighten-4{color:#ffecb3 !important}.amber.lighten-3{background-color:#ffe082 !important}.amber-text.text-lighten-3{color:#ffe082 !important}.amber.lighten-2{background-color:#ffd54f !important}.amber-text.text-lighten-2{color:#ffd54f !important}.amber.lighten-1{background-color:#ffca28 !important}.amber-text.text-lighten-1{color:#ffca28 !important}.amber{background-color:#ffc107 !important}.amber-text{color:#ffc107 !important}.amber.darken-1{background-color:#ffb300 !important}.amber-text.text-darken-1{color:#ffb300 !important}.amber.darken-2{background-color:#ffa000 !important}.amber-text.text-darken-2{color:#ffa000 !important}.amber.darken-3{background-color:#ff8f00 !important}.amber-text.text-darken-3{color:#ff8f00 !important}.amber.darken-4{background-color:#ff6f00 !important}.amber-text.text-darken-4{color:#ff6f00 !important}.amber.accent-1{background-color:#ffe57f !important}.amber-text.text-accent-1{color:#ffe57f !important}.amber.accent-2{background-color:#ffd740 !important}.amber-text.text-accent-2{color:#ffd740 !important}.amber.accent-3{background-color:#ffc400 !important}.amber-text.text-accent-3{color:#ffc400 !important}.amber.accent-4{background-color:#ffab00 !important}.amber-text.text-accent-4{color:#ffab00 !important}.orange.lighten-5{background-color:#fff3e0 !important}.orange-text.text-lighten-5{color:#fff3e0 !important}.orange.lighten-4{background-color:#ffe0b2 !important}.orange-text.text-lighten-4{color:#ffe0b2 !important}.orange.lighten-3{background-color:#ffcc80 !important}.orange-text.text-lighten-3{color:#ffcc80 !important}.orange.lighten-2{background-color:#ffb74d !important}.orange-text.text-lighten-2{color:#ffb74d !important}.orange.lighten-1{background-color:#ffa726 !important}.orange-text.text-lighten-1{color:#ffa726 !important}.orange{background-color:#ff9800 !important}.orange-text{color:#ff9800 !important}.orange.darken-1{background-color:#fb8c00 !important}.orange-text.text-darken-1{color:#fb8c00 !important}.orange.darken-2{background-color:#f57c00 !important}.orange-text.text-darken-2{color:#f57c00 !important}.orange.darken-3{background-color:#ef6c00 !important}.orange-text.text-darken-3{color:#ef6c00 !important}.orange.darken-4{background-color:#e65100 !important}.orange-text.text-darken-4{color:#e65100 !important}.orange.accent-1{background-color:#ffd180 !important}.orange-text.text-accent-1{color:#ffd180 !important}.orange.accent-2{background-color:#ffab40 !important}.orange-text.text-accent-2{color:#ffab40 !important}.orange.accent-3{background-color:#ff9100 !important}.orange-text.text-accent-3{color:#ff9100 !important}.orange.accent-4{background-color:#ff6d00 !important}.orange-text.text-accent-4{color:#ff6d00 !important}.deep-orange.lighten-5{background-color:#fbe9e7 !important}.deep-orange-text.text-lighten-5{color:#fbe9e7 !important}.deep-orange.lighten-4{background-color:#ffccbc !important}.deep-orange-text.text-lighten-4{color:#ffccbc !important}.deep-orange.lighten-3{background-color:#ffab91 !important}.deep-orange-text.text-lighten-3{color:#ffab91 !important}.deep-orange.lighten-2{background-color:#ff8a65 !important}.deep-orange-text.text-lighten-2{color:#ff8a65 !important}.deep-orange.lighten-1{background-color:#ff7043 !important}.deep-orange-text.text-lighten-1{color:#ff7043 !important}.deep-orange{background-color:#ff5722 !important}.deep-orange-text{color:#ff5722 !important}.deep-orange.darken-1{background-color:#f4511e !important}.deep-orange-text.text-darken-1{color:#f4511e !important}.deep-orange.darken-2{background-color:#e64a19 !important}.deep-orange-text.text-darken-2{color:#e64a19 !important}.deep-orange.darken-3{background-color:#d84315 !important}.deep-orange-text.text-darken-3{color:#d84315 !important}.deep-orange.darken-4{background-color:#bf360c !important}.deep-orange-text.text-darken-4{color:#bf360c !important}.deep-orange.accent-1{background-color:#ff9e80 !important}.deep-orange-text.text-accent-1{color:#ff9e80 !important}.deep-orange.accent-2{background-color:#ff6e40 !important}.deep-orange-text.text-accent-2{color:#ff6e40 !important}.deep-orange.accent-3{background-color:#ff3d00 !important}.deep-orange-text.text-accent-3{color:#ff3d00 !important}.deep-orange.accent-4{background-color:#dd2c00 !important}.deep-orange-text.text-accent-4{color:#dd2c00 !important}.brown.lighten-5{background-color:#efebe9 !important}.brown-text.text-lighten-5{color:#efebe9 !important}.brown.lighten-4{background-color:#d7ccc8 !important}.brown-text.text-lighten-4{color:#d7ccc8 !important}.brown.lighten-3{background-color:#bcaaa4 !important}.brown-text.text-lighten-3{color:#bcaaa4 !important}.brown.lighten-2{background-color:#a1887f !important}.brown-text.text-lighten-2{color:#a1887f !important}.brown.lighten-1{background-color:#8d6e63 !important}.brown-text.text-lighten-1{color:#8d6e63 !important}.brown{background-color:#795548 !important}.brown-text{color:#795548 !important}.brown.darken-1{background-color:#6d4c41 !important}.brown-text.text-darken-1{color:#6d4c41 !important}.brown.darken-2{background-color:#5d4037 !important}.brown-text.text-darken-2{color:#5d4037 !important}.brown.darken-3{background-color:#4e342e !important}.brown-text.text-darken-3{color:#4e342e !important}.brown.darken-4{background-color:#3e2723 !important}.brown-text.text-darken-4{color:#3e2723 !important}.blue-grey.lighten-5{background-color:#eceff1 !important}.blue-grey-text.text-lighten-5{color:#eceff1 !important}.blue-grey.lighten-4{background-color:#cfd8dc !important}.blue-grey-text.text-lighten-4{color:#cfd8dc !important}.blue-grey.lighten-3{background-color:#b0bec5 !important}.blue-grey-text.text-lighten-3{color:#b0bec5 !important}.blue-grey.lighten-2{background-color:#90a4ae !important}.blue-grey-text.text-lighten-2{color:#90a4ae !important}.blue-grey.lighten-1{background-color:#78909c !important}.blue-grey-text.text-lighten-1{color:#78909c !important}.blue-grey{background-color:#607d8b !important}.blue-grey-text{color:#607d8b !important}.blue-grey.darken-1{background-color:#546e7a !important}.blue-grey-text.text-darken-1{color:#546e7a !important}.blue-grey.darken-2{background-color:#455a64 !important}.blue-grey-text.text-darken-2{color:#455a64 !important}.blue-grey.darken-3{background-color:#37474f !important}.blue-grey-text.text-darken-3{color:#37474f !important}.blue-grey.darken-4{background-color:#263238 !important}.blue-grey-text.text-darken-4{color:#263238 !important}.grey.lighten-5{background-color:#fafafa !important}.grey-text.text-lighten-5{color:#fafafa !important}.grey.lighten-4{background-color:#f5f5f5 !important}.grey-text.text-lighten-4{color:#f5f5f5 !important}.grey.lighten-3{background-color:#eeeeee !important}.grey-text.text-lighten-3{color:#eeeeee !important}.grey.lighten-2{background-color:#e0e0e0 !important}.grey-text.text-lighten-2{color:#e0e0e0 !important}.grey.lighten-1{background-color:#bdbdbd !important}.grey-text.text-lighten-1{color:#bdbdbd !important}.grey{background-color:#9e9e9e !important}.grey-text{color:#9e9e9e !important}.grey.darken-1{background-color:#757575 !important}.grey-text.text-darken-1{color:#757575 !important}.grey.darken-2{background-color:#616161 !important}.grey-text.text-darken-2{color:#616161 !important}.grey.darken-3{background-color:#424242 !important}.grey-text.text-darken-3{color:#424242 !important}.grey.darken-4{background-color:#212121 !important}.grey-text.text-darken-4{color:#212121 !important}.shades.black{background-color:#000000 !important}.shades-text.text-black{color:#000000 !important}.shades.white{background-color:#FFFFFF !important}.shades-text.text-white{color:#FFFFFF !important}.shades.transparent{background-color:transparent !important}.shades-text.text-transparent{color:transparent !important}.black{background-color:#000000 !important}.black-text{color:#000000 !important}.white{background-color:#FFFFFF !important}.white-text{color:#FFFFFF !important}.transparent{background-color:transparent !important}.transparent-text{color:transparent !important}/*! 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}html input[type="button"],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}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}ul{list-style-type:none}a{color:#039be5;text-decoration:none;-webkit-tap-highlight-color:transparent}.valign-wrapper{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}.valign-wrapper .valign{display:block}ul{padding:0}ul li{list-style-type:none}.clearfix{clear:both}.z-depth-0{box-shadow:none !important}.z-depth-1,nav,.card-panel,.card,.toast,.btn,.btn-large,.btn-floating,.dropdown-content,.collapsible,.side-nav{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)}.z-depth-1-half,.btn:hover,.btn-large:hover,.btn-floating:hover{box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15)}.z-depth-2{box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.z-depth-3{box-shadow:0 12px 15px 0 rgba(0,0,0,0.24),0 17px 50px 0 rgba(0,0,0,0.19)}.z-depth-4,.modal{box-shadow:0 16px 28px 0 rgba(0,0,0,0.22),0 25px 55px 0 rgba(0,0,0,0.21)}.z-depth-5{box-shadow:0 27px 24px 0 rgba(0,0,0,0.2),0 40px 77px 0 rgba(0,0,0,0.22)}.hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}.divider{height:1px;overflow:hidden;background-color:#e0e0e0}blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #ee6e73}i{line-height:inherit}i.left{float:left;margin-right:15px}i.right{float:right;margin-left:15px}i.tiny{font-size:1rem}i.small{font-size:2rem}i.medium{font-size:4rem}i.large{font-size:6rem}img.responsive-img,video.responsive-video{max-width:100%;height:auto}.pagination li{display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px;border-radius:2px;text-align:center}.pagination li a{color:#444}.pagination li.active a{color:#fff}.pagination li.active{background-color:#ee6e73}.pagination li.disabled a{cursor:default;color:#999}.pagination li i{font-size:2rem}.pagination li.pages ul li{display:inline-block;float:none}@media only screen and (max-width : 992px){.pagination{width:100%}.pagination li.prev,.pagination li.next{width:10%}.pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}}.parallax-container{position:relative;overflow:hidden;height:500px}.parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.parallax img{display:none;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);transform:translateX(-50%)}.pin-top,.pin-bottom{position:relative}.pinned{position:fixed !important}ul.staggered-list li{opacity:0}.fade-in{opacity:0;transform-origin:0 50%}@media only screen and (max-width : 600px){.hide-on-small-only,.hide-on-small-and-down{display:none !important;}}@media only screen and (max-width : 992px){.hide-on-med-and-down{display:none !important;}}@media only screen and (min-width : 601px){.hide-on-med-and-up{display:none !important;}}@media only screen and (min-width: 600px) and (max-width: 992px){.hide-on-med-only{display:none !important;}}@media only screen and (min-width : 993px){.hide-on-large-only{display:none !important;}}@media only screen and (min-width : 993px){.show-on-large{display:initial !important;}}@media only screen and (min-width: 600px) and (max-width: 992px){.show-on-medium{display:initial !important;}}@media only screen and (max-width : 600px){.show-on-small{display:initial !important;}}@media only screen and (min-width : 601px){.show-on-medium-and-up{display:initial !important;}}@media only screen and (max-width : 992px){.show-on-medium-and-down{display:initial !important;}}@media only screen and (max-width : 600px){.center-on-small-only{text-align:center;}}footer.page-footer{margin-top:20px;padding-top:20px;background-color:#ee6e73}footer.page-footer .footer-copyright{overflow:hidden;height:50px;line-height:50px;color:rgba(255,255,255,0.8);background-color:rgba(51,51,51,0.08)}table,th,td{border:none}table{width:100%;display:table}table.bordered>thead>tr,table.bordered>tbody>tr{border-bottom:1px solid #d0d0d0}table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}table.striped>tbody>tr>td{border-radius:0px}table.highlight>tbody>tr{-webkit-transition:background-color .25s ease;-moz-transition:background-color .25s ease;-o-transition:background-color .25s ease;-ms-transition:background-color .25s ease;transition:background-color .25s ease}table.highlight>tbody>tr:hover{background-color:#f2f2f2}table.centered thead tr th,table.centered tbody tr td{text-align:center}thead{border-bottom:1px solid #d0d0d0}td,th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width : 992px){table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}table.responsive-table th,table.responsive-table td{margin:0;vertical-align:top}table.responsive-table th{text-align:left}table.responsive-table thead{display:block;float:left}table.responsive-table thead tr{display:block;padding:0 10px 0 0}table.responsive-table thead tr th::before{content:"\00a0"}table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}table.responsive-table tbody tr{display:inline-block;vertical-align:top}table.responsive-table th{display:block;text-align:right}table.responsive-table td{display:block;min-height:1.25em;text-align:left}table.responsive-table tr{padding:0 10px}table.responsive-table thead{border:0;border-right:1px solid #d0d0d0}table.responsive-table.bordered th{border-bottom:0;border-left:0}table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}table.responsive-table.bordered tr{border:0}table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.collection{margin:0.5rem 0 1rem 0;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.collection .collection-item.avatar .title{font-size:16px}.collection .collection-item.avatar p{margin:0}.collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.collection .collection-item:last-child{border-bottom:none}.collection .collection-item.active{background-color:#26a69a;color:#eafaf9}.collection .collection-item.active .secondary-content{color:#fff}.collection a.collection-item{display:block;-webkit-transition:0.25s;-moz-transition:0.25s;-o-transition:0.25s;-ms-transition:0.25s;transition:0.25s;color:#26a69a}.collection a.collection-item:not(.active):hover{background-color:#ddd}.collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.collection.with-header .collection-item{padding-left:30px}.collection.with-header .collection-item.avatar{padding-left:72px}.secondary-content{float:right;color:#26a69a}.collapsible .collection{margin:0;border:none}span.badge{min-width:3rem;padding:0 6px;text-align:center;font-size:1rem;line-height:inherit;color:#757575;position:absolute;right:15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}span.badge.new{font-weight:300;font-size:0.8rem;color:#fff;background-color:#26a69a;border-radius:2px}span.badge.new:after{content:" new"}nav ul a span.badge{position:static;margin-left:4px;line-height:0}.video-container{position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}.video-container.no-controls{padding-top:0}.video-container iframe,.video-container object,.video-container embed{position:absolute;top:0;left:0;width:100%;height:100%}.progress{position:relative;height:4px;display:block;width:100%;background-color:#acece6;border-radius:2px;margin:0.5rem 0 1rem 0;overflow:hidden}.progress .determinate{position:absolute;background-color:inherit;top:0;left:0;bottom:0;background-color:#26a69a;-webkit-transition:width .3s linear;-moz-transition:width .3s linear;-o-transition:width .3s linear;-ms-transition:width .3s linear;transition:width .3s linear}.progress .indeterminate{background-color:#26a69a}.progress .indeterminate:before{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;-moz-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;-ms-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;-o-animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite;animation:indeterminate 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) infinite}.progress .indeterminate:after{content:'';position:absolute;background-color:inherit;top:0;left:0;bottom:0;will-change:left, right;-webkit-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-moz-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-ms-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-o-animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;animation:indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;-webkit-animation-delay:1.15s;-moz-animation-delay:1.15s;-ms-animation-delay:1.15s;-o-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-moz-keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}60%{left:100%;right:-90%}100%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@-moz-keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}60%{left:107%;right:-8%}100%{left:107%;right:-8%}}.hide{display:none !important}.left-align{text-align:left}.right-align{text-align:right}.center,.center-align{text-align:center}.left{float:left !important}.right{float:right !important}.no-select,input[type=range],input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.circle{border-radius:50%}.center-block{display:block;margin-left:auto;margin-right:auto}.truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.no-padding{padding:0 !important}@font-face{font-family:"Material-Design-Icons";src:url("../font/material-design-icons/Material-Design-Icons.eot?#iefix") format("embedded-opentype"),url("../font/material-design-icons/Material-Design-Icons.woff2") format("woff2"),url("../font/material-design-icons/Material-Design-Icons.woff") format("woff"),url("../font/material-design-icons/Material-Design-Icons.ttf") format("truetype"),url("../font/material-design-icons/Material-Design-Icons.svg#Material-Design-Icons") format("svg");font-weight:normal;font-style:normal;}[class^="mdi-"],[class*="mdi-"]{speak:none;display:inline-block;font-family:"Material-Design-Icons";font-style:normal;font-weight:normal;font-variant:normal;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transform:translate(0, 0)}[class^="mdi-"]:before,[class*="mdi-"]:before{display:inline-block;speak:none;text-decoration:inherit}[class^="mdi-"].pull-left,[class*="mdi-"].pull-left{margin-right:.3em}[class^="mdi-"].pull-right,[class*="mdi-"].pull-right{margin-left:.3em}[class^="mdi-"].mdi-lg:before,[class^="mdi-"].mdi-lg:after,[class*="mdi-"].mdi-lg:before,[class*="mdi-"].mdi-lg:after{font-size:1.33333333em;line-height:0.75em;vertical-align:-15%}[class^="mdi-"].mdi-2x:before,[class^="mdi-"].mdi-2x:after,[class*="mdi-"].mdi-2x:before,[class*="mdi-"].mdi-2x:after{font-size:2em}[class^="mdi-"].mdi-3x:before,[class^="mdi-"].mdi-3x:after,[class*="mdi-"].mdi-3x:before,[class*="mdi-"].mdi-3x:after{font-size:3em}[class^="mdi-"].mdi-4x:before,[class^="mdi-"].mdi-4x:after,[class*="mdi-"].mdi-4x:before,[class*="mdi-"].mdi-4x:after{font-size:4em}[class^="mdi-"].mdi-5x:before,[class^="mdi-"].mdi-5x:after,[class*="mdi-"].mdi-5x:before,[class*="mdi-"].mdi-5x:after{font-size:5em}[class^="mdi-device-signal-cellular-"]:after,[class^="mdi-device-battery-"]:after,[class^="mdi-device-battery-charging-"]:after,[class^="mdi-device-signal-cellular-connected-no-internet-"]:after,[class^="mdi-device-signal-wifi-"]:after,[class^="mdi-device-signal-wifi-statusbar-not-connected"]:after,.mdi-device-network-wifi:after{opacity:.3;position:absolute;left:0;top:0;z-index:1;display:inline-block;speak:none;text-decoration:inherit}[class^="mdi-device-signal-cellular-"]:after{content:"\e758"}[class^="mdi-device-battery-"]:after{content:"\e735"}[class^="mdi-device-battery-charging-"]:after{content:"\e733"}[class^="mdi-device-signal-cellular-connected-no-internet-"]:after{content:"\e75d"}[class^="mdi-device-signal-wifi-"]:after,.mdi-device-network-wifi:after{content:"\e765"}[class^="mdi-device-signal-wifi-statusbasr-not-connected"]:after{content:"\e8f7"}.mdi-device-signal-cellular-off:after,.mdi-device-signal-cellular-null:after,.mdi-device-signal-cellular-no-sim:after,.mdi-device-signal-wifi-off:after,.mdi-device-signal-wifi-4-bar:after,.mdi-device-signal-cellular-4-bar:after,.mdi-device-battery-alert:after,.mdi-device-signal-cellular-connected-no-internet-4-bar:after,.mdi-device-battery-std:after,.mdi-device-battery-full .mdi-device-battery-unknown:after{content:""}.mdi-fw{width:1.28571429em;text-align:center}.mdi-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.mdi-ul>li{position:relative}.mdi-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:0.14285714em;text-align:center}.mdi-li.mdi-lg{left:-1.85714286em}.mdi-border{padding:.2em .25em .15em;border:solid 0.08em #eeeeee;border-radius:.1em}.mdi-spin{-webkit-animation:mdi-spin 2s infinite linear;animation:mdi-spin 2s infinite linear;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%}.mdi-pulse{-webkit-animation:mdi-spin 1s steps(8) infinite;animation:mdi-spin 1s steps(8) infinite;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%}@-webkit-keyframes mdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes mdi-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.mdi-rotate-90{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.mdi-rotate-180{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2);-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.mdi-rotate-270{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.mdi-flip-horizontal{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1);-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.mdi-flip-vertical{filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1);-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .mdi-rotate-90,:root .mdi-rotate-180,:root .mdi-rotate-270,:root .mdi-flip-horizontal,:root .mdi-flip-vertical{filter:none}.mdi-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.mdi-stack-1x,.mdi-stack-2x{position:absolute;left:0;width:100%;text-align:center}.mdi-stack-1x{line-height:inherit}.mdi-stack-2x{font-size:2em}.mdi-inverse{color:#ffffff}.mdi-action-3d-rotation:before{content:"\e600"}.mdi-action-accessibility:before{content:"\e601"}.mdi-action-account-balance-wallet:before{content:"\e602"}.mdi-action-account-balance:before{content:"\e603"}.mdi-action-account-box:before{content:"\e604"}.mdi-action-account-child:before{content:"\e605"}.mdi-action-account-circle:before{content:"\e606"}.mdi-action-add-shopping-cart:before{content:"\e607"}.mdi-action-alarm-add:before{content:"\e608"}.mdi-action-alarm-off:before{content:"\e609"}.mdi-action-alarm-on:before{content:"\e60a"}.mdi-action-alarm:before{content:"\e60b"}.mdi-action-android:before{content:"\e60c"}.mdi-action-announcement:before{content:"\e60d"}.mdi-action-aspect-ratio:before{content:"\e60e"}.mdi-action-assessment:before{content:"\e60f"}.mdi-action-assignment-ind:before{content:"\e610"}.mdi-action-assignment-late:before{content:"\e611"}.mdi-action-assignment-return:before{content:"\e612"}.mdi-action-assignment-returned:before{content:"\e613"}.mdi-action-assignment-turned-in:before{content:"\e614"}.mdi-action-assignment:before{content:"\e615"}.mdi-action-autorenew:before{content:"\e616"}.mdi-action-backup:before{content:"\e617"}.mdi-action-book:before{content:"\e618"}.mdi-action-bookmark-outline:before{content:"\e619"}.mdi-action-bookmark:before{content:"\e61a"}.mdi-action-bug-report:before{content:"\e61b"}.mdi-action-cached:before{content:"\e61c"}.mdi-action-check-circle:before{content:"\e61d"}.mdi-action-class:before{content:"\e61e"}.mdi-action-credit-card:before{content:"\e61f"}.mdi-action-dashboard:before{content:"\e620"}.mdi-action-delete:before{content:"\e621"}.mdi-action-description:before{content:"\e622"}.mdi-action-dns:before{content:"\e623"}.mdi-action-done-all:before{content:"\e624"}.mdi-action-done:before{content:"\e625"}.mdi-action-event:before{content:"\e626"}.mdi-action-exit-to-app:before{content:"\e627"}.mdi-action-explore:before{content:"\e628"}.mdi-action-extension:before{content:"\e629"}.mdi-action-face-unlock:before{content:"\e62a"}.mdi-action-favorite-outline:before{content:"\e62b"}.mdi-action-favorite:before{content:"\e62c"}.mdi-action-find-in-page:before{content:"\e62d"}.mdi-action-find-replace:before{content:"\e62e"}.mdi-action-flip-to-back:before{content:"\e62f"}.mdi-action-flip-to-front:before{content:"\e630"}.mdi-action-get-app:before{content:"\e631"}.mdi-action-grade:before{content:"\e632"}.mdi-action-group-work:before{content:"\e633"}.mdi-action-help:before{content:"\e634"}.mdi-action-highlight-remove:before{content:"\e635"}.mdi-action-history:before{content:"\e636"}.mdi-action-home:before{content:"\e637"}.mdi-action-https:before{content:"\e638"}.mdi-action-info-outline:before{content:"\e639"}.mdi-action-info:before{content:"\e63a"}.mdi-action-input:before{content:"\e63b"}.mdi-action-invert-colors:before{content:"\e63c"}.mdi-action-label-outline:before{content:"\e63d"}.mdi-action-label:before{content:"\e63e"}.mdi-action-language:before{content:"\e63f"}.mdi-action-launch:before{content:"\e640"}.mdi-action-list:before{content:"\e641"}.mdi-action-lock-open:before{content:"\e642"}.mdi-action-lock-outline:before{content:"\e643"}.mdi-action-lock:before{content:"\e644"}.mdi-action-loyalty:before{content:"\e645"}.mdi-action-markunread-mailbox:before{content:"\e646"}.mdi-action-note-add:before{content:"\e647"}.mdi-action-open-in-browser:before{content:"\e648"}.mdi-action-open-in-new:before{content:"\e649"}.mdi-action-open-with:before{content:"\e64a"}.mdi-action-pageview:before{content:"\e64b"}.mdi-action-payment:before{content:"\e64c"}.mdi-action-perm-camera-mic:before{content:"\e64d"}.mdi-action-perm-contact-cal:before{content:"\e64e"}.mdi-action-perm-data-setting:before{content:"\e64f"}.mdi-action-perm-device-info:before{content:"\e650"}.mdi-action-perm-identity:before{content:"\e651"}.mdi-action-perm-media:before{content:"\e652"}.mdi-action-perm-phone-msg:before{content:"\e653"}.mdi-action-perm-scan-wifi:before{content:"\e654"}.mdi-action-picture-in-picture:before{content:"\e655"}.mdi-action-polymer:before{content:"\e656"}.mdi-action-print:before{content:"\e657"}.mdi-action-query-builder:before{content:"\e658"}.mdi-action-question-answer:before{content:"\e659"}.mdi-action-receipt:before{content:"\e65a"}.mdi-action-redeem:before{content:"\e65b"}.mdi-action-reorder:before{content:"\e65c"}.mdi-action-report-problem:before{content:"\e65d"}.mdi-action-restore:before{content:"\e65e"}.mdi-action-room:before{content:"\e65f"}.mdi-action-schedule:before{content:"\e660"}.mdi-action-search:before{content:"\e661"}.mdi-action-settings-applications:before{content:"\e662"}.mdi-action-settings-backup-restore:before{content:"\e663"}.mdi-action-settings-bluetooth:before{content:"\e664"}.mdi-action-settings-cell:before{content:"\e665"}.mdi-action-settings-display:before{content:"\e666"}.mdi-action-settings-ethernet:before{content:"\e667"}.mdi-action-settings-input-antenna:before{content:"\e668"}.mdi-action-settings-input-component:before{content:"\e669"}.mdi-action-settings-input-composite:before{content:"\e66a"}.mdi-action-settings-input-hdmi:before{content:"\e66b"}.mdi-action-settings-input-svideo:before{content:"\e66c"}.mdi-action-settings-overscan:before{content:"\e66d"}.mdi-action-settings-phone:before{content:"\e66e"}.mdi-action-settings-power:before{content:"\e66f"}.mdi-action-settings-remote:before{content:"\e670"}.mdi-action-settings-voice:before{content:"\e671"}.mdi-action-settings:before{content:"\e672"}.mdi-action-shop-two:before{content:"\e673"}.mdi-action-shop:before{content:"\e674"}.mdi-action-shopping-basket:before{content:"\e675"}.mdi-action-shopping-cart:before{content:"\e676"}.mdi-action-speaker-notes:before{content:"\e677"}.mdi-action-spellcheck:before{content:"\e678"}.mdi-action-star-rate:before{content:"\e679"}.mdi-action-stars:before{content:"\e67a"}.mdi-action-store:before{content:"\e67b"}.mdi-action-subject:before{content:"\e67c"}.mdi-action-supervisor-account:before{content:"\e67d"}.mdi-action-swap-horiz:before{content:"\e67e"}.mdi-action-swap-vert-circle:before{content:"\e67f"}.mdi-action-swap-vert:before{content:"\e680"}.mdi-action-system-update-tv:before{content:"\e681"}.mdi-action-tab-unselected:before{content:"\e682"}.mdi-action-tab:before{content:"\e683"}.mdi-action-theaters:before{content:"\e684"}.mdi-action-thumb-down:before{content:"\e685"}.mdi-action-thumb-up:before{content:"\e686"}.mdi-action-thumbs-up-down:before{content:"\e687"}.mdi-action-toc:before{content:"\e688"}.mdi-action-today:before{content:"\e689"}.mdi-action-track-changes:before{content:"\e68a"}.mdi-action-translate:before{content:"\e68b"}.mdi-action-trending-down:before{content:"\e68c"}.mdi-action-trending-neutral:before{content:"\e68d"}.mdi-action-trending-up:before{content:"\e68e"}.mdi-action-turned-in-not:before{content:"\e68f"}.mdi-action-turned-in:before{content:"\e690"}.mdi-action-verified-user:before{content:"\e691"}.mdi-action-view-agenda:before{content:"\e692"}.mdi-action-view-array:before{content:"\e693"}.mdi-action-view-carousel:before{content:"\e694"}.mdi-action-view-column:before{content:"\e695"}.mdi-action-view-day:before{content:"\e696"}.mdi-action-view-headline:before{content:"\e697"}.mdi-action-view-list:before{content:"\e698"}.mdi-action-view-module:before{content:"\e699"}.mdi-action-view-quilt:before{content:"\e69a"}.mdi-action-view-stream:before{content:"\e69b"}.mdi-action-view-week:before{content:"\e69c"}.mdi-action-visibility-off:before{content:"\e69d"}.mdi-action-visibility:before{content:"\e69e"}.mdi-action-wallet-giftcard:before{content:"\e69f"}.mdi-action-wallet-membership:before{content:"\e6a0"}.mdi-action-wallet-travel:before{content:"\e6a1"}.mdi-action-work:before{content:"\e6a2"}.mdi-alert-error:before{content:"\e6a3"}.mdi-alert-warning:before{content:"\e6a4"}.mdi-av-album:before{content:"\e6a5"}.mdi-av-closed-caption:before{content:"\e6a6"}.mdi-av-equalizer:before{content:"\e6a7"}.mdi-av-explicit:before{content:"\e6a8"}.mdi-av-fast-forward:before{content:"\e6a9"}.mdi-av-fast-rewind:before{content:"\e6aa"}.mdi-av-games:before{content:"\e6ab"}.mdi-av-hearing:before{content:"\e6ac"}.mdi-av-high-quality:before{content:"\e6ad"}.mdi-av-loop:before{content:"\e6ae"}.mdi-av-mic-none:before{content:"\e6af"}.mdi-av-mic-off:before{content:"\e6b0"}.mdi-av-mic:before{content:"\e6b1"}.mdi-av-movie:before{content:"\e6b2"}.mdi-av-my-library-add:before{content:"\e6b3"}.mdi-av-my-library-books:before{content:"\e6b4"}.mdi-av-my-library-music:before{content:"\e6b5"}.mdi-av-new-releases:before{content:"\e6b6"}.mdi-av-not-interested:before{content:"\e6b7"}.mdi-av-pause-circle-fill:before{content:"\e6b8"}.mdi-av-pause-circle-outline:before{content:"\e6b9"}.mdi-av-pause:before{content:"\e6ba"}.mdi-av-play-arrow:before{content:"\e6bb"}.mdi-av-play-circle-fill:before{content:"\e6bc"}.mdi-av-play-circle-outline:before{content:"\e6bd"}.mdi-av-play-shopping-bag:before{content:"\e6be"}.mdi-av-playlist-add:before{content:"\e6bf"}.mdi-av-queue-music:before{content:"\e6c0"}.mdi-av-queue:before{content:"\e6c1"}.mdi-av-radio:before{content:"\e6c2"}.mdi-av-recent-actors:before{content:"\e6c3"}.mdi-av-repeat-one:before{content:"\e6c4"}.mdi-av-repeat:before{content:"\e6c5"}.mdi-av-replay:before{content:"\e6c6"}.mdi-av-shuffle:before{content:"\e6c7"}.mdi-av-skip-next:before{content:"\e6c8"}.mdi-av-skip-previous:before{content:"\e6c9"}.mdi-av-snooze:before{content:"\e6ca"}.mdi-av-stop:before{content:"\e6cb"}.mdi-av-subtitles:before{content:"\e6cc"}.mdi-av-surround-sound:before{content:"\e6cd"}.mdi-av-timer:before{content:"\e6ce"}.mdi-av-video-collection:before{content:"\e6cf"}.mdi-av-videocam-off:before{content:"\e6d0"}.mdi-av-videocam:before{content:"\e6d1"}.mdi-av-volume-down:before{content:"\e6d2"}.mdi-av-volume-mute:before{content:"\e6d3"}.mdi-av-volume-off:before{content:"\e6d4"}.mdi-av-volume-up:before{content:"\e6d5"}.mdi-av-web:before{content:"\e6d6"}.mdi-communication-business:before{content:"\e6d7"}.mdi-communication-call-end:before{content:"\e6d8"}.mdi-communication-call-made:before{content:"\e6d9"}.mdi-communication-call-merge:before{content:"\e6da"}.mdi-communication-call-missed:before{content:"\e6db"}.mdi-communication-call-received:before{content:"\e6dc"}.mdi-communication-call-split:before{content:"\e6dd"}.mdi-communication-call:before{content:"\e6de"}.mdi-communication-chat:before{content:"\e6df"}.mdi-communication-clear-all:before{content:"\e6e0"}.mdi-communication-comment:before{content:"\e6e1"}.mdi-communication-contacts:before{content:"\e6e2"}.mdi-communication-dialer-sip:before{content:"\e6e3"}.mdi-communication-dialpad:before{content:"\e6e4"}.mdi-communication-dnd-on:before{content:"\e6e5"}.mdi-communication-email:before{content:"\e6e6"}.mdi-communication-forum:before{content:"\e6e7"}.mdi-communication-import-export:before{content:"\e6e8"}.mdi-communication-invert-colors-off:before{content:"\e6e9"}.mdi-communication-invert-colors-on:before{content:"\e6ea"}.mdi-communication-live-help:before{content:"\e6eb"}.mdi-communication-location-off:before{content:"\e6ec"}.mdi-communication-location-on:before{content:"\e6ed"}.mdi-communication-message:before{content:"\e6ee"}.mdi-communication-messenger:before{content:"\e6ef"}.mdi-communication-no-sim:before{content:"\e6f0"}.mdi-communication-phone:before{content:"\e6f1"}.mdi-communication-portable-wifi-off:before{content:"\e6f2"}.mdi-communication-quick-contacts-dialer:before{content:"\e6f3"}.mdi-communication-quick-contacts-mail:before{content:"\e6f4"}.mdi-communication-ring-volume:before{content:"\e6f5"}.mdi-communication-stay-current-landscape:before{content:"\e6f6"}.mdi-communication-stay-current-portrait:before{content:"\e6f7"}.mdi-communication-stay-primary-landscape:before{content:"\e6f8"}.mdi-communication-stay-primary-portrait:before{content:"\e6f9"}.mdi-communication-swap-calls:before{content:"\e6fa"}.mdi-communication-textsms:before{content:"\e6fb"}.mdi-communication-voicemail:before{content:"\e6fc"}.mdi-communication-vpn-key:before{content:"\e6fd"}.mdi-content-add-box:before{content:"\e6fe"}.mdi-content-add-circle-outline:before{content:"\e6ff"}.mdi-content-add-circle:before{content:"\e700"}.mdi-content-add:before{content:"\e701"}.mdi-content-archive:before{content:"\e702"}.mdi-content-backspace:before{content:"\e703"}.mdi-content-block:before{content:"\e704"}.mdi-content-clear:before{content:"\e705"}.mdi-content-content-copy:before{content:"\e706"}.mdi-content-content-cut:before{content:"\e707"}.mdi-content-content-paste:before{content:"\e708"}.mdi-content-create:before{content:"\e709"}.mdi-content-drafts:before{content:"\e70a"}.mdi-content-filter-list:before{content:"\e70b"}.mdi-content-flag:before{content:"\e70c"}.mdi-content-forward:before{content:"\e70d"}.mdi-content-gesture:before{content:"\e70e"}.mdi-content-inbox:before{content:"\e70f"}.mdi-content-link:before{content:"\e710"}.mdi-content-mail:before{content:"\e711"}.mdi-content-markunread:before{content:"\e712"}.mdi-content-redo:before{content:"\e713"}.mdi-content-remove-circle-outline:before{content:"\e714"}.mdi-content-remove-circle:before{content:"\e715"}.mdi-content-remove:before{content:"\e716"}.mdi-content-reply-all:before{content:"\e717"}.mdi-content-reply:before{content:"\e718"}.mdi-content-report:before{content:"\e719"}.mdi-content-save:before{content:"\e71a"}.mdi-content-select-all:before{content:"\e71b"}.mdi-content-send:before{content:"\e71c"}.mdi-content-sort:before{content:"\e71d"}.mdi-content-text-format:before{content:"\e71e"}.mdi-content-undo:before{content:"\e71f"}.mdi-editor-attach-file:before{content:"\e776"}.mdi-editor-attach-money:before{content:"\e777"}.mdi-editor-border-all:before{content:"\e778"}.mdi-editor-border-bottom:before{content:"\e779"}.mdi-editor-border-clear:before{content:"\e77a"}.mdi-editor-border-color:before{content:"\e77b"}.mdi-editor-border-horizontal:before{content:"\e77c"}.mdi-editor-border-inner:before{content:"\e77d"}.mdi-editor-border-left:before{content:"\e77e"}.mdi-editor-border-outer:before{content:"\e77f"}.mdi-editor-border-right:before{content:"\e780"}.mdi-editor-border-style:before{content:"\e781"}.mdi-editor-border-top:before{content:"\e782"}.mdi-editor-border-vertical:before{content:"\e783"}.mdi-editor-format-align-center:before{content:"\e784"}.mdi-editor-format-align-justify:before{content:"\e785"}.mdi-editor-format-align-left:before{content:"\e786"}.mdi-editor-format-align-right:before{content:"\e787"}.mdi-editor-format-bold:before{content:"\e788"}.mdi-editor-format-clear:before{content:"\e789"}.mdi-editor-format-color-fill:before{content:"\e78a"}.mdi-editor-format-color-reset:before{content:"\e78b"}.mdi-editor-format-color-text:before{content:"\e78c"}.mdi-editor-format-indent-decrease:before{content:"\e78d"}.mdi-editor-format-indent-increase:before{content:"\e78e"}.mdi-editor-format-italic:before{content:"\e78f"}.mdi-editor-format-line-spacing:before{content:"\e790"}.mdi-editor-format-list-bulleted:before{content:"\e791"}.mdi-editor-format-list-numbered:before{content:"\e792"}.mdi-editor-format-paint:before{content:"\e793"}.mdi-editor-format-quote:before{content:"\e794"}.mdi-editor-format-size:before{content:"\e795"}.mdi-editor-format-strikethrough:before{content:"\e796"}.mdi-editor-format-textdirection-l-to-r:before{content:"\e797"}.mdi-editor-format-textdirection-r-to-l:before{content:"\e798"}.mdi-editor-format-underline:before{content:"\e799"}.mdi-editor-functions:before{content:"\e79a"}.mdi-editor-insert-chart:before{content:"\e79b"}.mdi-editor-insert-comment:before{content:"\e79c"}.mdi-editor-insert-drive-file:before{content:"\e79d"}.mdi-editor-insert-emoticon:before{content:"\e79e"}.mdi-editor-insert-invitation:before{content:"\e79f"}.mdi-editor-insert-link:before{content:"\e7a0"}.mdi-editor-insert-photo:before{content:"\e7a1"}.mdi-editor-merge-type:before{content:"\e7a2"}.mdi-editor-mode-comment:before{content:"\e7a3"}.mdi-editor-mode-edit:before{content:"\e7a4"}.mdi-editor-publish:before{content:"\e7a5"}.mdi-editor-vertical-align-bottom:before{content:"\e7a6"}.mdi-editor-vertical-align-center:before{content:"\e7a7"}.mdi-editor-vertical-align-top:before{content:"\e7a8"}.mdi-editor-wrap-text:before{content:"\e7a9"}.mdi-file-attachment:before{content:"\e7aa"}.mdi-file-cloud-circle:before{content:"\e7ab"}.mdi-file-cloud-done:before{content:"\e7ac"}.mdi-file-cloud-download:before{content:"\e7ad"}.mdi-file-cloud-off:before{content:"\e7ae"}.mdi-file-cloud-queue:before{content:"\e7af"}.mdi-file-cloud-upload:before{content:"\e7b0"}.mdi-file-cloud:before{content:"\e7b1"}.mdi-file-file-download:before{content:"\e7b2"}.mdi-file-file-upload:before{content:"\e7b3"}.mdi-file-folder-open:before{content:"\e7b4"}.mdi-file-folder-shared:before{content:"\e7b5"}.mdi-file-folder:before{content:"\e7b6"}.mdi-device-access-alarm:before{content:"\e720"}.mdi-device-access-alarms:before{content:"\e721"}.mdi-device-access-time:before{content:"\e722"}.mdi-device-add-alarm:before{content:"\e723"}.mdi-device-airplanemode-off:before{content:"\e724"}.mdi-device-airplanemode-on:before{content:"\e725"}.mdi-device-battery-20:before{content:"\e726"}.mdi-device-battery-30:before{content:"\e727"}.mdi-device-battery-50:before{content:"\e728"}.mdi-device-battery-60:before{content:"\e729"}.mdi-device-battery-80:before{content:"\e72a"}.mdi-device-battery-90:before{content:"\e72b"}.mdi-device-battery-alert:before{content:"\e72c"}.mdi-device-battery-charging-20:before{content:"\e72d"}.mdi-device-battery-charging-30:before{content:"\e72e"}.mdi-device-battery-charging-50:before{content:"\e72f"}.mdi-device-battery-charging-60:before{content:"\e730"}.mdi-device-battery-charging-80:before{content:"\e731"}.mdi-device-battery-charging-90:before{content:"\e732"}.mdi-device-battery-charging-full:before{content:"\e733"}.mdi-device-battery-full:before{content:"\e734"}.mdi-device-battery-std:before{content:"\e735"}.mdi-device-battery-unknown:before{content:"\e736"}.mdi-device-bluetooth-connected:before{content:"\e737"}.mdi-device-bluetooth-disabled:before{content:"\e738"}.mdi-device-bluetooth-searching:before{content:"\e739"}.mdi-device-bluetooth:before{content:"\e73a"}.mdi-device-brightness-auto:before{content:"\e73b"}.mdi-device-brightness-high:before{content:"\e73c"}.mdi-device-brightness-low:before{content:"\e73d"}.mdi-device-brightness-medium:before{content:"\e73e"}.mdi-device-data-usage:before{content:"\e73f"}.mdi-device-developer-mode:before{content:"\e740"}.mdi-device-devices:before{content:"\e741"}.mdi-device-dvr:before{content:"\e742"}.mdi-device-gps-fixed:before{content:"\e743"}.mdi-device-gps-not-fixed:before{content:"\e744"}.mdi-device-gps-off:before{content:"\e745"}.mdi-device-location-disabled:before{content:"\e746"}.mdi-device-location-searching:before{content:"\e747"}.mdi-device-multitrack-audio:before{content:"\e748"}.mdi-device-network-cell:before{content:"\e749"}.mdi-device-network-wifi:before{content:"\e74a"}.mdi-device-nfc:before{content:"\e74b"}.mdi-device-now-wallpaper:before{content:"\e74c"}.mdi-device-now-widgets:before{content:"\e74d"}.mdi-device-screen-lock-landscape:before{content:"\e74e"}.mdi-device-screen-lock-portrait:before{content:"\e74f"}.mdi-device-screen-lock-rotation:before{content:"\e750"}.mdi-device-screen-rotation:before{content:"\e751"}.mdi-device-sd-storage:before{content:"\e752"}.mdi-device-settings-system-daydream:before{content:"\e753"}.mdi-device-signal-cellular-0-bar:before{content:"\e754"}.mdi-device-signal-cellular-1-bar:before{content:"\e755"}.mdi-device-signal-cellular-2-bar:before{content:"\e756"}.mdi-device-signal-cellular-3-bar:before{content:"\e757"}.mdi-device-signal-cellular-4-bar:before{content:"\e758"}.mdi-signal-wifi-statusbar-connected-no-internet-after:before{content:"\e8f6"}.mdi-device-signal-cellular-connected-no-internet-0-bar:before{content:"\e759"}.mdi-device-signal-cellular-connected-no-internet-1-bar:before{content:"\e75a"}.mdi-device-signal-cellular-connected-no-internet-2-bar:before{content:"\e75b"}.mdi-device-signal-cellular-connected-no-internet-3-bar:before{content:"\e75c"}.mdi-device-signal-cellular-connected-no-internet-4-bar:before{content:"\e75d"}.mdi-device-signal-cellular-no-sim:before{content:"\e75e"}.mdi-device-signal-cellular-null:before{content:"\e75f"}.mdi-device-signal-cellular-off:before{content:"\e760"}.mdi-device-signal-wifi-0-bar:before{content:"\e761"}.mdi-device-signal-wifi-1-bar:before{content:"\e762"}.mdi-device-signal-wifi-2-bar:before{content:"\e763"}.mdi-device-signal-wifi-3-bar:before{content:"\e764"}.mdi-device-signal-wifi-4-bar:before{content:"\e765"}.mdi-device-signal-wifi-off:before{content:"\e766"}.mdi-device-signal-wifi-statusbar-1-bar:before{content:"\e767"}.mdi-device-signal-wifi-statusbar-2-bar:before{content:"\e768"}.mdi-device-signal-wifi-statusbar-3-bar:before{content:"\e769"}.mdi-device-signal-wifi-statusbar-4-bar:before{content:"\e76a"}.mdi-device-signal-wifi-statusbar-connected-no-internet-:before{content:"\e76b"}.mdi-device-signal-wifi-statusbar-connected-no-internet:before{content:"\e76f"}.mdi-device-signal-wifi-statusbar-connected-no-internet-2:before{content:"\e76c"}.mdi-device-signal-wifi-statusbar-connected-no-internet-3:before{content:"\e76d"}.mdi-device-signal-wifi-statusbar-connected-no-internet-4:before{content:"\e76e"}.mdi-signal-wifi-statusbar-not-connected-after:before{content:"\e8f7"}.mdi-device-signal-wifi-statusbar-not-connected:before{content:"\e770"}.mdi-device-signal-wifi-statusbar-null:before{content:"\e771"}.mdi-device-storage:before{content:"\e772"}.mdi-device-usb:before{content:"\e773"}.mdi-device-wifi-lock:before{content:"\e774"}.mdi-device-wifi-tethering:before{content:"\e775"}.mdi-hardware-cast-connected:before{content:"\e7b7"}.mdi-hardware-cast:before{content:"\e7b8"}.mdi-hardware-computer:before{content:"\e7b9"}.mdi-hardware-desktop-mac:before{content:"\e7ba"}.mdi-hardware-desktop-windows:before{content:"\e7bb"}.mdi-hardware-dock:before{content:"\e7bc"}.mdi-hardware-gamepad:before{content:"\e7bd"}.mdi-hardware-headset-mic:before{content:"\e7be"}.mdi-hardware-headset:before{content:"\e7bf"}.mdi-hardware-keyboard-alt:before{content:"\e7c0"}.mdi-hardware-keyboard-arrow-down:before{content:"\e7c1"}.mdi-hardware-keyboard-arrow-left:before{content:"\e7c2"}.mdi-hardware-keyboard-arrow-right:before{content:"\e7c3"}.mdi-hardware-keyboard-arrow-up:before{content:"\e7c4"}.mdi-hardware-keyboard-backspace:before{content:"\e7c5"}.mdi-hardware-keyboard-capslock:before{content:"\e7c6"}.mdi-hardware-keyboard-control:before{content:"\e7c7"}.mdi-hardware-keyboard-hide:before{content:"\e7c8"}.mdi-hardware-keyboard-return:before{content:"\e7c9"}.mdi-hardware-keyboard-tab:before{content:"\e7ca"}.mdi-hardware-keyboard-voice:before{content:"\e7cb"}.mdi-hardware-keyboard:before{content:"\e7cc"}.mdi-hardware-laptop-chromebook:before{content:"\e7cd"}.mdi-hardware-laptop-mac:before{content:"\e7ce"}.mdi-hardware-laptop-windows:before{content:"\e7cf"}.mdi-hardware-laptop:before{content:"\e7d0"}.mdi-hardware-memory:before{content:"\e7d1"}.mdi-hardware-mouse:before{content:"\e7d2"}.mdi-hardware-phone-android:before{content:"\e7d3"}.mdi-hardware-phone-iphone:before{content:"\e7d4"}.mdi-hardware-phonelink-off:before{content:"\e7d5"}.mdi-hardware-phonelink:before{content:"\e7d6"}.mdi-hardware-security:before{content:"\e7d7"}.mdi-hardware-sim-card:before{content:"\e7d8"}.mdi-hardware-smartphone:before{content:"\e7d9"}.mdi-hardware-speaker:before{content:"\e7da"}.mdi-hardware-tablet-android:before{content:"\e7db"}.mdi-hardware-tablet-mac:before{content:"\e7dc"}.mdi-hardware-tablet:before{content:"\e7dd"}.mdi-hardware-tv:before{content:"\e7de"}.mdi-hardware-watch:before{content:"\e7df"}.mdi-image-add-to-photos:before{content:"\e7e0"}.mdi-image-adjust:before{content:"\e7e1"}.mdi-image-assistant-photo:before{content:"\e7e2"}.mdi-image-audiotrack:before{content:"\e7e3"}.mdi-image-blur-circular:before{content:"\e7e4"}.mdi-image-blur-linear:before{content:"\e7e5"}.mdi-image-blur-off:before{content:"\e7e6"}.mdi-image-blur-on:before{content:"\e7e7"}.mdi-image-brightness-1:before{content:"\e7e8"}.mdi-image-brightness-2:before{content:"\e7e9"}.mdi-image-brightness-3:before{content:"\e7ea"}.mdi-image-brightness-4:before{content:"\e7eb"}.mdi-image-brightness-5:before{content:"\e7ec"}.mdi-image-brightness-6:before{content:"\e7ed"}.mdi-image-brightness-7:before{content:"\e7ee"}.mdi-image-brush:before{content:"\e7ef"}.mdi-image-camera-alt:before{content:"\e7f0"}.mdi-image-camera-front:before{content:"\e7f1"}.mdi-image-camera-rear:before{content:"\e7f2"}.mdi-image-camera-roll:before{content:"\e7f3"}.mdi-image-camera:before{content:"\e7f4"}.mdi-image-center-focus-strong:before{content:"\e7f5"}.mdi-image-center-focus-weak:before{content:"\e7f6"}.mdi-image-collections:before{content:"\e7f7"}.mdi-image-color-lens:before{content:"\e7f8"}.mdi-image-colorize:before{content:"\e7f9"}.mdi-image-compare:before{content:"\e7fa"}.mdi-image-control-point-duplicate:before{content:"\e7fb"}.mdi-image-control-point:before{content:"\e7fc"}.mdi-image-crop-3-2:before{content:"\e7fd"}.mdi-image-crop-5-4:before{content:"\e7fe"}.mdi-image-crop-7-5:before{content:"\e7ff"}.mdi-image-crop-16-9:before{content:"\e800"}.mdi-image-crop-din:before{content:"\e801"}.mdi-image-crop-free:before{content:"\e802"}.mdi-image-crop-landscape:before{content:"\e803"}.mdi-image-crop-original:before{content:"\e804"}.mdi-image-crop-portrait:before{content:"\e805"}.mdi-image-crop-square:before{content:"\e806"}.mdi-image-crop:before{content:"\e807"}.mdi-image-dehaze:before{content:"\e808"}.mdi-image-details:before{content:"\e809"}.mdi-image-edit:before{content:"\e80a"}.mdi-image-exposure-minus-1:before{content:"\e80b"}.mdi-image-exposure-minus-2:before{content:"\e80c"}.mdi-image-exposure-plus-1:before{content:"\e80d"}.mdi-image-exposure-plus-2:before{content:"\e80e"}.mdi-image-exposure-zero:before{content:"\e80f"}.mdi-image-exposure:before{content:"\e810"}.mdi-image-filter-1:before{content:"\e811"}.mdi-image-filter-2:before{content:"\e812"}.mdi-image-filter-3:before{content:"\e813"}.mdi-image-filter-4:before{content:"\e814"}.mdi-image-filter-5:before{content:"\e815"}.mdi-image-filter-6:before{content:"\e816"}.mdi-image-filter-7:before{content:"\e817"}.mdi-image-filter-8:before{content:"\e818"}.mdi-image-filter-9-plus:before{content:"\e819"}.mdi-image-filter-9:before{content:"\e81a"}.mdi-image-filter-b-and-w:before{content:"\e81b"}.mdi-image-filter-center-focus:before{content:"\e81c"}.mdi-image-filter-drama:before{content:"\e81d"}.mdi-image-filter-frames:before{content:"\e81e"}.mdi-image-filter-hdr:before{content:"\e81f"}.mdi-image-filter-none:before{content:"\e820"}.mdi-image-filter-tilt-shift:before{content:"\e821"}.mdi-image-filter-vintage:before{content:"\e822"}.mdi-image-filter:before{content:"\e823"}.mdi-image-flare:before{content:"\e824"}.mdi-image-flash-auto:before{content:"\e825"}.mdi-image-flash-off:before{content:"\e826"}.mdi-image-flash-on:before{content:"\e827"}.mdi-image-flip:before{content:"\e828"}.mdi-image-gradient:before{content:"\e829"}.mdi-image-grain:before{content:"\e82a"}.mdi-image-grid-off:before{content:"\e82b"}.mdi-image-grid-on:before{content:"\e82c"}.mdi-image-hdr-off:before{content:"\e82d"}.mdi-image-hdr-on:before{content:"\e82e"}.mdi-image-hdr-strong:before{content:"\e82f"}.mdi-image-hdr-weak:before{content:"\e830"}.mdi-image-healing:before{content:"\e831"}.mdi-image-image-aspect-ratio:before{content:"\e832"}.mdi-image-image:before{content:"\e833"}.mdi-image-iso:before{content:"\e834"}.mdi-image-landscape:before{content:"\e835"}.mdi-image-leak-add:before{content:"\e836"}.mdi-image-leak-remove:before{content:"\e837"}.mdi-image-lens:before{content:"\e838"}.mdi-image-looks-3:before{content:"\e839"}.mdi-image-looks-4:before{content:"\e83a"}.mdi-image-looks-5:before{content:"\e83b"}.mdi-image-looks-6:before{content:"\e83c"}.mdi-image-looks-one:before{content:"\e83d"}.mdi-image-looks-two:before{content:"\e83e"}.mdi-image-looks:before{content:"\e83f"}.mdi-image-loupe:before{content:"\e840"}.mdi-image-movie-creation:before{content:"\e841"}.mdi-image-nature-people:before{content:"\e842"}.mdi-image-nature:before{content:"\e843"}.mdi-image-navigate-before:before{content:"\e844"}.mdi-image-navigate-next:before{content:"\e845"}.mdi-image-palette:before{content:"\e846"}.mdi-image-panorama-fisheye:before{content:"\e847"}.mdi-image-panorama-horizontal:before{content:"\e848"}.mdi-image-panorama-vertical:before{content:"\e849"}.mdi-image-panorama-wide-angle:before{content:"\e84a"}.mdi-image-panorama:before{content:"\e84b"}.mdi-image-photo-album:before{content:"\e84c"}.mdi-image-photo-camera:before{content:"\e84d"}.mdi-image-photo-library:before{content:"\e84e"}.mdi-image-photo:before{content:"\e84f"}.mdi-image-portrait:before{content:"\e850"}.mdi-image-remove-red-eye:before{content:"\e851"}.mdi-image-rotate-left:before{content:"\e852"}.mdi-image-rotate-right:before{content:"\e853"}.mdi-image-slideshow:before{content:"\e854"}.mdi-image-straighten:before{content:"\e855"}.mdi-image-style:before{content:"\e856"}.mdi-image-switch-camera:before{content:"\e857"}.mdi-image-switch-video:before{content:"\e858"}.mdi-image-tag-faces:before{content:"\e859"}.mdi-image-texture:before{content:"\e85a"}.mdi-image-timelapse:before{content:"\e85b"}.mdi-image-timer-3:before{content:"\e85c"}.mdi-image-timer-10:before{content:"\e85d"}.mdi-image-timer-auto:before{content:"\e85e"}.mdi-image-timer-off:before{content:"\e85f"}.mdi-image-timer:before{content:"\e860"}.mdi-image-tonality:before{content:"\e861"}.mdi-image-transform:before{content:"\e862"}.mdi-image-tune:before{content:"\e863"}.mdi-image-wb-auto:before{content:"\e864"}.mdi-image-wb-cloudy:before{content:"\e865"}.mdi-image-wb-incandescent:before{content:"\e866"}.mdi-image-wb-irradescent:before{content:"\e867"}.mdi-image-wb-sunny:before{content:"\e868"}.mdi-maps-beenhere:before{content:"\e869"}.mdi-maps-directions-bike:before{content:"\e86a"}.mdi-maps-directions-bus:before{content:"\e86b"}.mdi-maps-directions-car:before{content:"\e86c"}.mdi-maps-directions-ferry:before{content:"\e86d"}.mdi-maps-directions-subway:before{content:"\e86e"}.mdi-maps-directions-train:before{content:"\e86f"}.mdi-maps-directions-transit:before{content:"\e870"}.mdi-maps-directions-walk:before{content:"\e871"}.mdi-maps-directions:before{content:"\e872"}.mdi-maps-flight:before{content:"\e873"}.mdi-maps-hotel:before{content:"\e874"}.mdi-maps-layers-clear:before{content:"\e875"}.mdi-maps-layers:before{content:"\e876"}.mdi-maps-local-airport:before{content:"\e877"}.mdi-maps-local-atm:before{content:"\e878"}.mdi-maps-local-attraction:before{content:"\e879"}.mdi-maps-local-bar:before{content:"\e87a"}.mdi-maps-local-cafe:before{content:"\e87b"}.mdi-maps-local-car-wash:before{content:"\e87c"}.mdi-maps-local-convenience-store:before{content:"\e87d"}.mdi-maps-local-drink:before{content:"\e87e"}.mdi-maps-local-florist:before{content:"\e87f"}.mdi-maps-local-gas-station:before{content:"\e880"}.mdi-maps-local-grocery-store:before{content:"\e881"}.mdi-maps-local-hospital:before{content:"\e882"}.mdi-maps-local-hotel:before{content:"\e883"}.mdi-maps-local-laundry-service:before{content:"\e884"}.mdi-maps-local-library:before{content:"\e885"}.mdi-maps-local-mall:before{content:"\e886"}.mdi-maps-local-movies:before{content:"\e887"}.mdi-maps-local-offer:before{content:"\e888"}.mdi-maps-local-parking:before{content:"\e889"}.mdi-maps-local-pharmacy:before{content:"\e88a"}.mdi-maps-local-phone:before{content:"\e88b"}.mdi-maps-local-pizza:before{content:"\e88c"}.mdi-maps-local-play:before{content:"\e88d"}.mdi-maps-local-post-office:before{content:"\e88e"}.mdi-maps-local-print-shop:before{content:"\e88f"}.mdi-maps-local-restaurant:before{content:"\e890"}.mdi-maps-local-see:before{content:"\e891"}.mdi-maps-local-shipping:before{content:"\e892"}.mdi-maps-local-taxi:before{content:"\e893"}.mdi-maps-location-history:before{content:"\e894"}.mdi-maps-map:before{content:"\e895"}.mdi-maps-my-location:before{content:"\e896"}.mdi-maps-navigation:before{content:"\e897"}.mdi-maps-pin-drop:before{content:"\e898"}.mdi-maps-place:before{content:"\e899"}.mdi-maps-rate-review:before{content:"\e89a"}.mdi-maps-restaurant-menu:before{content:"\e89b"}.mdi-maps-satellite:before{content:"\e89c"}.mdi-maps-store-mall-directory:before{content:"\e89d"}.mdi-maps-terrain:before{content:"\e89e"}.mdi-maps-traffic:before{content:"\e89f"}.mdi-navigation-apps:before{content:"\e8a0"}.mdi-navigation-arrow-back:before{content:"\e8a1"}.mdi-navigation-arrow-drop-down-circle:before{content:"\e8a2"}.mdi-navigation-arrow-drop-down:before{content:"\e8a3"}.mdi-navigation-arrow-drop-up:before{content:"\e8a4"}.mdi-navigation-arrow-forward:before{content:"\e8a5"}.mdi-navigation-cancel:before{content:"\e8a6"}.mdi-navigation-check:before{content:"\e8a7"}.mdi-navigation-chevron-left:before{content:"\e8a8"}.mdi-navigation-chevron-right:before{content:"\e8a9"}.mdi-navigation-close:before{content:"\e8aa"}.mdi-navigation-expand-less:before{content:"\e8ab"}.mdi-navigation-expand-more:before{content:"\e8ac"}.mdi-navigation-fullscreen-exit:before{content:"\e8ad"}.mdi-navigation-fullscreen:before{content:"\e8ae"}.mdi-navigation-menu:before{content:"\e8af"}.mdi-navigation-more-horiz:before{content:"\e8b0"}.mdi-navigation-more-vert:before{content:"\e8b1"}.mdi-navigation-refresh:before{content:"\e8b2"}.mdi-navigation-unfold-less:before{content:"\e8b3"}.mdi-navigation-unfold-more:before{content:"\e8b4"}.mdi-notification-adb:before{content:"\e8b5"}.mdi-notification-bluetooth-audio:before{content:"\e8b6"}.mdi-notification-disc-full:before{content:"\e8b7"}.mdi-notification-dnd-forwardslash:before{content:"\e8b8"}.mdi-notification-do-not-disturb:before{content:"\e8b9"}.mdi-notification-drive-eta:before{content:"\e8ba"}.mdi-notification-event-available:before{content:"\e8bb"}.mdi-notification-event-busy:before{content:"\e8bc"}.mdi-notification-event-note:before{content:"\e8bd"}.mdi-notification-folder-special:before{content:"\e8be"}.mdi-notification-mms:before{content:"\e8bf"}.mdi-notification-more:before{content:"\e8c0"}.mdi-notification-network-locked:before{content:"\e8c1"}.mdi-notification-phone-bluetooth-speaker:before{content:"\e8c2"}.mdi-notification-phone-forwarded:before{content:"\e8c3"}.mdi-notification-phone-in-talk:before{content:"\e8c4"}.mdi-notification-phone-locked:before{content:"\e8c5"}.mdi-notification-phone-missed:before{content:"\e8c6"}.mdi-notification-phone-paused:before{content:"\e8c7"}.mdi-notification-play-download:before{content:"\e8c8"}.mdi-notification-play-install:before{content:"\e8c9"}.mdi-notification-sd-card:before{content:"\e8ca"}.mdi-notification-sim-card-alert:before{content:"\e8cb"}.mdi-notification-sms-failed:before{content:"\e8cc"}.mdi-notification-sms:before{content:"\e8cd"}.mdi-notification-sync-disabled:before{content:"\e8ce"}.mdi-notification-sync-problem:before{content:"\e8cf"}.mdi-notification-sync:before{content:"\e8d0"}.mdi-notification-system-update:before{content:"\e8d1"}.mdi-notification-tap-and-play:before{content:"\e8d2"}.mdi-notification-time-to-leave:before{content:"\e8d3"}.mdi-notification-vibration:before{content:"\e8d4"}.mdi-notification-voice-chat:before{content:"\e8d5"}.mdi-notification-vpn-lock:before{content:"\e8d6"}.mdi-social-cake:before{content:"\e8d7"}.mdi-social-domain:before{content:"\e8d8"}.mdi-social-group-add:before{content:"\e8d9"}.mdi-social-group:before{content:"\e8da"}.mdi-social-location-city:before{content:"\e8db"}.mdi-social-mood:before{content:"\e8dc"}.mdi-social-notifications-none:before{content:"\e8dd"}.mdi-social-notifications-off:before{content:"\e8de"}.mdi-social-notifications-on:before{content:"\e8df"}.mdi-social-notifications-paused:before{content:"\e8e0"}.mdi-social-notifications:before{content:"\e8e1"}.mdi-social-pages:before{content:"\e8e2"}.mdi-social-party-mode:before{content:"\e8e3"}.mdi-social-people-outline:before{content:"\e8e4"}.mdi-social-people:before{content:"\e8e5"}.mdi-social-person-add:before{content:"\e8e6"}.mdi-social-person-outline:before{content:"\e8e7"}.mdi-social-person:before{content:"\e8e8"}.mdi-social-plus-one:before{content:"\e8e9"}.mdi-social-poll:before{content:"\e8ea"}.mdi-social-public:before{content:"\e8eb"}.mdi-social-school:before{content:"\e8ec"}.mdi-social-share:before{content:"\e8ed"}.mdi-social-whatshot:before{content:"\e8ee"}.mdi-toggle-check-box-outline-blank:before{content:"\e8ef"}.mdi-toggle-check-box:before{content:"\e8f0"}.mdi-toggle-radio-button-off:before{content:"\e8f1"}.mdi-toggle-radio-button-on:before{content:"\e8f2"}.mdi-toggle-star-half:before{content:"\e8f3"}.mdi-toggle-star-outline:before{content:"\e8f4"}.mdi-toggle-star:before{content:"\e8f5"}.container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width : 601px){.container{width:85%}}@media only screen and (min-width : 993px){.container{width:70%}}.container .row{margin-left:-0.75rem;margin-right:-0.75rem}.section{padding-top:1rem;padding-bottom:1rem}.section.no-pad{padding:0}.section.no-pad-bot{padding-bottom:0}.section.no-pad-top{padding-top:0}.row{margin-left:auto;margin-right:auto;margin-bottom:20px}.row:after{content:"";display:table;clear:both}.row .col{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 0.75rem}.row .col.s1{width:8.33333%;margin-left:0}.row .col.s2{width:16.66667%;margin-left:0}.row .col.s3{width:25%;margin-left:0}.row .col.s4{width:33.33333%;margin-left:0}.row .col.s5{width:41.66667%;margin-left:0}.row .col.s6{width:50%;margin-left:0}.row .col.s7{width:58.33333%;margin-left:0}.row .col.s8{width:66.66667%;margin-left:0}.row .col.s9{width:75%;margin-left:0}.row .col.s10{width:83.33333%;margin-left:0}.row .col.s11{width:91.66667%;margin-left:0}.row .col.s12{width:100%;margin-left:0}.row .col.offset-s1{margin-left:8.33333%}.row .col.offset-s2{margin-left:16.66667%}.row .col.offset-s3{margin-left:25%}.row .col.offset-s4{margin-left:33.33333%}.row .col.offset-s5{margin-left:41.66667%}.row .col.offset-s6{margin-left:50%}.row .col.offset-s7{margin-left:58.33333%}.row .col.offset-s8{margin-left:66.66667%}.row .col.offset-s9{margin-left:75%}.row .col.offset-s10{margin-left:83.33333%}.row .col.offset-s11{margin-left:91.66667%}.row .col.offset-s12{margin-left:100%}@media only screen and (min-width : 601px){.row .col.m1{width:8.33333%;margin-left:0}.row .col.m2{width:16.66667%;margin-left:0}.row .col.m3{width:25%;margin-left:0}.row .col.m4{width:33.33333%;margin-left:0}.row .col.m5{width:41.66667%;margin-left:0}.row .col.m6{width:50%;margin-left:0}.row .col.m7{width:58.33333%;margin-left:0}.row .col.m8{width:66.66667%;margin-left:0}.row .col.m9{width:75%;margin-left:0}.row .col.m10{width:83.33333%;margin-left:0}.row .col.m11{width:91.66667%;margin-left:0}.row .col.m12{width:100%;margin-left:0}.row .col.offset-m1{margin-left:8.33333%}.row .col.offset-m2{margin-left:16.66667%}.row .col.offset-m3{margin-left:25%}.row .col.offset-m4{margin-left:33.33333%}.row .col.offset-m5{margin-left:41.66667%}.row .col.offset-m6{margin-left:50%}.row .col.offset-m7{margin-left:58.33333%}.row .col.offset-m8{margin-left:66.66667%}.row .col.offset-m9{margin-left:75%}.row .col.offset-m10{margin-left:83.33333%}.row .col.offset-m11{margin-left:91.66667%}.row .col.offset-m12{margin-left:100%}}@media only screen and (min-width : 993px){.row .col.l1{width:8.33333%;margin-left:0}.row .col.l2{width:16.66667%;margin-left:0}.row .col.l3{width:25%;margin-left:0}.row .col.l4{width:33.33333%;margin-left:0}.row .col.l5{width:41.66667%;margin-left:0}.row .col.l6{width:50%;margin-left:0}.row .col.l7{width:58.33333%;margin-left:0}.row .col.l8{width:66.66667%;margin-left:0}.row .col.l9{width:75%;margin-left:0}.row .col.l10{width:83.33333%;margin-left:0}.row .col.l11{width:91.66667%;margin-left:0}.row .col.l12{width:100%;margin-left:0}.row .col.offset-l1{margin-left:8.33333%}.row .col.offset-l2{margin-left:16.66667%}.row .col.offset-l3{margin-left:25%}.row .col.offset-l4{margin-left:33.33333%}.row .col.offset-l5{margin-left:41.66667%}.row .col.offset-l6{margin-left:50%}.row .col.offset-l7{margin-left:58.33333%}.row .col.offset-l8{margin-left:66.66667%}.row .col.offset-l9{margin-left:75%}.row .col.offset-l10{margin-left:83.33333%}.row .col.offset-l11{margin-left:91.66667%}.row .col.offset-l12{margin-left:100%}}nav{color:#fff;background-color:#ee6e73;width:100%;height:56px;line-height:56px}nav a{color:#fff}nav .nav-wrapper{position:relative;height:100%}nav .nav-wrapper i{display:block;font-size:2rem}@media only screen and (min-width : 993px){nav a.button-collapse{display:none}}nav .button-collapse{float:left;position:relative;z-index:1;height:56px}nav .button-collapse i{font-size:2.7rem;height:56px;line-height:56px}nav .brand-logo{position:absolute;color:#fff;display:inline-block;font-size:2.1rem;padding:0;white-space:nowrap}nav .brand-logo.center{left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%)}@media only screen and (max-width : 992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);-moz-transform:translateX(-50%);-ms-transform:translateX(-50%);-o-transform:translateX(-50%);transform:translateX(-50%);}nav .brand-logo.left,nav .brand-logo.right{padding:0;-webkit-transform:none;-moz-transform:none;-ms-transform:none;-o-transform:none;transform:none}nav .brand-logo.left{left:0.5rem}nav .brand-logo.right{right:0.5rem;left:auto}}nav .brand-logo.right{right:0.5rem;padding:0}nav ul{margin:0}nav ul li{-webkit-transition:background-color .3s;-moz-transition:background-color .3s;-o-transition:background-color .3s;-ms-transition:background-color .3s;transition:background-color .3s;float:left;padding:0}nav ul li:hover,nav ul li.active{background-color:rgba(0,0,0,0.1)}nav ul a{font-size:1rem;color:#fff;display:block;padding:0 15px}nav ul.left{float:left}nav .input-field{margin:0}nav .input-field input{height:100%;font-size:1.2rem;border:none;padding-left:2rem}nav .input-field input:focus,nav .input-field input[type=text]:valid,nav .input-field input[type=password]:valid,nav .input-field input[type=email]:valid,nav .input-field input[type=url]:valid,nav .input-field input[type=date]:valid{border:none;box-shadow:none}nav .input-field label{top:0;left:0}nav .input-field label i{color:rgba(255,255,255,0.7);-webkit-transition:color .3s;-moz-transition:color .3s;-o-transition:color .3s;-ms-transition:color .3s;transition:color .3s}nav .input-field label.active i{color:#fff}nav .input-field label.active{-webkit-transform:translateY(0);-moz-transform:translateY(0);-ms-transform:translateY(0);-o-transform:translateY(0);transform:translateY(0)}.navbar-fixed{position:relative;height:56px;z-index:998}.navbar-fixed nav{position:fixed}@media only screen and (min-width : 601px){nav,nav .nav-wrapper i,nav a.button-collapse,nav a.button-collapse i{height:64px;line-height:64px}.navbar-fixed{height:64px}}@font-face{font-family:"Roboto";src:local(Roboto Thin),url("../font/roboto/Roboto-Thin.woff2") format("woff2"),url("../font/roboto/Roboto-Thin.woff") format("woff"),url("../font/roboto/Roboto-Thin.ttf") format("truetype");font-weight:200;}@font-face{font-family:"Roboto";src:local(Roboto Light),url("../font/roboto/Roboto-Light.woff2") format("woff2"),url("../font/roboto/Roboto-Light.woff") format("woff"),url("../font/roboto/Roboto-Light.ttf") format("truetype");font-weight:300;}@font-face{font-family:"Roboto";src:local(Roboto Regular),url("../font/roboto/Roboto-Regular.woff2") format("woff2"),url("../font/roboto/Roboto-Regular.woff") format("woff"),url("../font/roboto/Roboto-Regular.ttf") format("truetype");font-weight:400;}@font-face{font-family:"Roboto";src:url("../font/roboto/Roboto-Medium.woff2") format("woff2"),url("../font/roboto/Roboto-Medium.woff") format("woff"),url("../font/roboto/Roboto-Medium.ttf") format("truetype");font-weight:500;}@font-face{font-family:"Roboto";src:url("../font/roboto/Roboto-Bold.woff2") format("woff2"),url("../font/roboto/Roboto-Bold.woff") format("woff"),url("../font/roboto/Roboto-Bold.ttf") format("truetype");font-weight:700;}a{text-decoration:none}html{line-height:1.5;font-family:"Roboto", sans-serif;font-weight:normal;color:rgba(0,0,0,0.87)}@media only screen and (min-width: 0){html{font-size:14px;}}@media only screen and (min-width: 992px){html{font-size:14.5px;}}@media only screen and (min-width: 1200px){html{font-size:15px;}}h1,h2,h3,h4,h5,h6{font-weight:400;line-height:1.1}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{font-weight:inherit}h1{font-size:4.2rem;line-height:110%;margin:2.1rem 0 1.68rem 0}h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem 0}h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem 0}h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 0.912rem 0}h5{font-size:1.64rem;line-height:110%;margin:0.82rem 0 0.656rem 0}h6{font-size:1rem;line-height:110%;margin:0.5rem 0 0.4rem 0}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light,footer.page-footer .footer-copyright{font-weight:300}.thin{font-weight:200}.flow-text{font-weight:300}@media only screen and (min-width: 360px){.flow-text{font-size:1.2rem;}}@media only screen and (min-width: 390px){.flow-text{font-size:1.224rem;}}@media only screen and (min-width: 420px){.flow-text{font-size:1.248rem;}}@media only screen and (min-width: 450px){.flow-text{font-size:1.272rem;}}@media only screen and (min-width: 480px){.flow-text{font-size:1.296rem;}}@media only screen and (min-width: 510px){.flow-text{font-size:1.32rem;}}@media only screen and (min-width: 540px){.flow-text{font-size:1.344rem;}}@media only screen and (min-width: 570px){.flow-text{font-size:1.368rem;}}@media only screen and (min-width: 600px){.flow-text{font-size:1.392rem;}}@media only screen and (min-width: 630px){.flow-text{font-size:1.416rem;}}@media only screen and (min-width: 660px){.flow-text{font-size:1.44rem;}}@media only screen and (min-width: 690px){.flow-text{font-size:1.464rem;}}@media only screen and (min-width: 720px){.flow-text{font-size:1.488rem;}}@media only screen and (min-width: 750px){.flow-text{font-size:1.512rem;}}@media only screen and (min-width: 780px){.flow-text{font-size:1.536rem;}}@media only screen and (min-width: 810px){.flow-text{font-size:1.56rem;}}@media only screen and (min-width: 840px){.flow-text{font-size:1.584rem;}}@media only screen and (min-width: 870px){.flow-text{font-size:1.608rem;}}@media only screen and (min-width: 900px){.flow-text{font-size:1.632rem;}}@media only screen and (min-width: 930px){.flow-text{font-size:1.656rem;}}@media only screen and (min-width: 960px){.flow-text{font-size:1.68rem;}}@media only screen and (max-width: 360px){.flow-text{font-size:1.2rem;}}.card-panel{transition:box-shadow .25s;padding:20px;margin:0.5rem 0 1rem 0;border-radius:2px;background-color:#fff}.card{position:relative;overflow:hidden;margin:0.5rem 0 1rem 0;background-color:#fff;transition:box-shadow .25s;border-radius:2px}.card .card-title{color:#fff;font-size:24px;font-weight:300}.card .card-title.activator{cursor:pointer}.card.small,.card.medium,.card.large{position:relative}.card.small .card-image,.card.medium .card-image,.card.large .card-image{overflow:hidden}.card.small .card-content,.card.medium .card-content,.card.large .card-content{overflow:hidden}.card.small .card-action,.card.medium .card-action,.card.large .card-action{position:absolute;bottom:0;left:0;right:0}.card.small{height:300px}.card.small .card-image{height:150px}.card.small .card-content{height:150px}.card.medium{height:400px}.card.medium .card-image{height:250px}.card.medium .card-content{height:150px}.card.large{height:500px}.card.large .card-image{height:330px}.card.large .card-content{height:170px}.card .card-image{position:relative}.card .card-image img{display:block;border-radius:2px 2px 0 0;position:relative;left:0;right:0;top:0;bottom:0;width:100%}.card .card-image .card-title{position:absolute;bottom:0;left:0;padding:20px}.card .card-content{padding:20px;border-radius:0 0 2px 2px}.card .card-content p{margin:0;color:inherit}.card .card-content .card-title{line-height:48px}.card .card-action{border-top:1px solid rgba(160,160,160,0.2);padding:20px}.card .card-action a{color:#ffab40;margin-right:20px;-webkit-transition:color .3s ease;-moz-transition:color .3s ease;-o-transition:color .3s ease;-ms-transition:color .3s ease;transition:color .3s ease;text-transform:uppercase}.card .card-action a:hover{color:#ffd8a6}.card .card-reveal{padding:20px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;top:100%;height:100%;z-index:1;display:none}.card .card-reveal .card-title{cursor:pointer;display:block}#toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width : 600px){#toast-container{min-width:100%;bottom:0%;}}@media only screen and (min-width : 601px) and (max-width : 992px){#toast-container{min-width:30%;left:5%;bottom:7%;}}@media only screen and (min-width : 993px){#toast-container{min-width:8%;top:10%;right:7%;}}.toast{border-radius:2px;top:0;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:48px;line-height:48px;background-color:#323232;padding:0 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.toast .btn,.toast .btn-large,.toast .btn-flat{margin:0;margin-left:3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width : 600px){.toast{width:100%;border-radius:0;}}@media only screen and (min-width : 601px) and (max-width : 992px){.toast{float:left;}}@media only screen and (min-width : 993px){.toast{float:right;}}.tabs{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;position:relative;height:48px;background-color:#fff;margin:0 auto;width:100%;white-space:nowrap}.tabs .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;display:block;float:left;text-align:center;line-height:48px;height:48px;padding:0 20px;margin:0;text-transform:uppercase;letter-spacing:.8px;width:15%}.tabs .tab a{color:#ee6e73;display:block;width:100%;height:100%;-webkit-transition:color .28s ease;-moz-transition:color .28s ease;-o-transition:color .28s ease;-ms-transition:color .28s ease;transition:color .28s ease}.tabs .tab a:hover{color:#f9c9cb}.tabs .tab.disabled a{color:#f9c9cb;cursor:default}.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left, right}.tabs .tab{padding:0}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:1rem;opacity:0;display:none;position:absolute;text-align:center;overflow:hidden;left:0;top:0;will-change:top, left}.backdrop{position:absolute;opacity:0;display:none;height:7px;width:14px;border-radius:0 0 14px 14px;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 10%;-moz-transform-origin:50% 10%;-ms-transform-origin:50% 10%;-o-transform-origin:50% 10%;transform-origin:50% 10%;will-change:transform, opacity}.btn,.btn-large,.btn-flat{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;outline:0;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.btn.disabled,.disabled.btn-large,.btn-floating.disabled,.btn-large.disabled,.btn:disabled,.btn-large:disabled,.btn-large:disabled,.btn-floating:disabled{background-color:#DFDFDF !important;box-shadow:none;color:#9F9F9F !important;cursor:default}.btn.disabled *,.disabled.btn-large *,.btn-floating.disabled *,.btn-large.disabled *,.btn:disabled *,.btn-large:disabled *,.btn-large:disabled *,.btn-floating:disabled *{pointer-events:none}.btn.disabled:hover,.disabled.btn-large:hover,.btn-floating.disabled:hover,.btn-large.disabled:hover,.btn:disabled:hover,.btn-large:disabled:hover,.btn-large:disabled:hover,.btn-floating:disabled:hover{background-color:#DFDFDF;color:#9F9F9F}.btn i,.btn-large i,.btn-floating i,.btn-large i,.btn-flat i{font-size:1.3rem;line-height:inherit}.btn,.btn-large{text-decoration:none;color:#fff;background-color:#26a69a;text-align:center;letter-spacing:.5px;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out;cursor:pointer}.btn:hover,.btn-large:hover{background-color:#2bbbad}.btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:37px;height:37px;line-height:37px;padding:0;background-color:#26a69a;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:37px}.btn-floating:before{border-radius:0}.btn-floating.btn-large{width:55.5px;height:55.5px}.btn-floating.btn-large i{line-height:55.5px}button.btn-floating{border:none}.fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998}.fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0}.fixed-action-btn ul li{margin-bottom:15px}.fixed-action-btn ul a.btn-floating{opacity:0}.btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer}.btn-flat.disabled{color:#b3b3b3;cursor:default}.btn-large{height:54px;line-height:56px}.btn-large i{font-size:1.6rem}.btn-block{display:block}.dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width, height}.dropdown-content li{clear:both;color:rgba(0,0,0,0.87);cursor:pointer;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.dropdown-content li:hover,.dropdown-content li.active{background-color:#eee}.dropdown-content li>a,.dropdown-content li>span{font-size:1.2rem;color:#26a69a;display:block;padding:1rem 1rem}.dropdown-content li>a>i{height:inherit;line-height:inherit}/*! | ||
7 | * Waves v0.6.0 | ||
8 | * http://fian.my.id/Waves | ||
9 | * | ||
10 | * Copyright 2014 Alfiana E. Sibuea and other contributors | ||
11 | * Released under the MIT license | ||
12 | * https://github.com/fians/Waves/blob/master/LICENSE | ||
13 | */.waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;will-change:opacity, transform;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out}.waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,0.2);-webkit-transition:all 0.7s ease-out;-moz-transition:all 0.7s ease-out;-o-transition:all 0.7s ease-out;-ms-transition:all 0.7s ease-out;transition:all 0.7s ease-out;-webkit-transition-property:-webkit-transform, opacity;-moz-transition-property:-moz-transform, opacity;-o-transition-property:-o-transform, opacity;transition-property:transform, opacity;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,0.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,0.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,0.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,0.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,0.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,0.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,0.7)}.waves-notransition{-webkit-transition:none !important;-moz-transition:none !important;-o-transition:none !important;-ms-transition:none !important;transition:none !important}.waves-circle{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle, white 100%, black 100%)}.waves-input-wrapper{border-radius:0.2em;vertical-align:bottom}.waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.waves-circle{text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.waves-block{display:block}a.waves-effect .waves-ripple{z-index:-1}.modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top, opacity}@media only screen and (max-width : 992px){.modal{width:80%;}}.modal h1,.modal h2,.modal h3,.modal h4{margin-top:0}.modal .modal-content{padding:24px}.modal .modal-close{cursor:pointer}.modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.modal .modal-footer .btn,.modal .modal-footer .btn-large,.modal .modal-footer .btn-flat{float:right;margin:6px 0}.lean-overlay{position:fixed;z-index:999;top:-100px;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none;will-change:opacity}.modal.modal-fixed-footer{padding:0;height:70%}.modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 56px);max-height:100%;width:100%;overflow-y:auto}.modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,0.1);position:absolute;bottom:0}.modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom, opacity}.collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:0.5rem 0 1rem 0}.collapsible-header{display:block;cursor:pointer;min-height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:1rem}.collapsible-body{display:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.collapsible-body p{margin:0;padding:2rem}.side-nav .collapsible{border:none;box-shadow:none}.side-nav .collapsible li{padding:0}.side-nav .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;margin:0 1rem}.side-nav .collapsible-header i{line-height:inherit}.side-nav .collapsible-body{border:0;background-color:#fff}.side-nav .collapsible-body li a{margin:0 1rem 0 2rem}.collapsible.popout{border:none;box-shadow:none}.collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12);margin:0 24px;transition:margin .35s cubic-bezier(0.25, 0.46, 0.45, 0.94)}.collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,0.18),0 4px 15px 0 rgba(0,0,0,0.15);margin:16px 0}.chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,0.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#E4E4E4}.chip img{float:left;margin:0 8px 0 -12px;height:32px;width:32px;border-radius:50%}.chip i.material-icons{cursor:pointer;float:right;font-size:16px;line-height:32px;padding-left:8px}.materialboxed{display:block;cursor:zoom-in;position:relative;-webkit-transition:opacity .4s;-moz-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s;transition:opacity .4s}.materialboxed:hover{will-change:left, top, width, height}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:zoom-out}#materialbox-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#292929;z-index:999;will-change:opacity}.materialbox-caption{position:fixed;display:none;color:#fff;line-height:50px;bottom:0;width:100%;text-align:center;padding:0% 15%;height:50px;z-index:1000;-webkit-font-smoothing:antialiased}select:focus{outline:1px solid #c9f3ef}button:focus{outline:none;background-color:#2ab7a9}label{font-size:0.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}:-moz-placeholder{color:#d1d1d1}::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}input[type=text],input[type=password],input[type=email],input[type=url],input[type=time],input[type=date],input[type=datetime-local],input[type=tel],input[type=number],input[type=search],textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;border-radius:0;outline:none;height:3rem;width:100%;font-size:1rem;margin:0 0 15px 0;padding:0;box-shadow:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;transition:all .3s}input[type=text]:disabled,input[type=text][readonly="readonly"],input[type=password]:disabled,input[type=password][readonly="readonly"],input[type=email]:disabled,input[type=email][readonly="readonly"],input[type=url]:disabled,input[type=url][readonly="readonly"],input[type=time]:disabled,input[type=time][readonly="readonly"],input[type=date]:disabled,input[type=date][readonly="readonly"],input[type=datetime-local]:disabled,input[type=datetime-local][readonly="readonly"],input[type=tel]:disabled,input[type=tel][readonly="readonly"],input[type=number]:disabled,input[type=number][readonly="readonly"],input[type=search]:disabled,input[type=search][readonly="readonly"],textarea.materialize-textarea:disabled,textarea.materialize-textarea[readonly="readonly"]{color:rgba(0,0,0,0.26);border-bottom:1px dotted rgba(0,0,0,0.26)}input[type=text]:disabled+label,input[type=text][readonly="readonly"]+label,input[type=password]:disabled+label,input[type=password][readonly="readonly"]+label,input[type=email]:disabled+label,input[type=email][readonly="readonly"]+label,input[type=url]:disabled+label,input[type=url][readonly="readonly"]+label,input[type=time]:disabled+label,input[type=time][readonly="readonly"]+label,input[type=date]:disabled+label,input[type=date][readonly="readonly"]+label,input[type=datetime-local]:disabled+label,input[type=datetime-local][readonly="readonly"]+label,input[type=tel]:disabled+label,input[type=tel][readonly="readonly"]+label,input[type=number]:disabled+label,input[type=number][readonly="readonly"]+label,input[type=search]:disabled+label,input[type=search][readonly="readonly"]+label,textarea.materialize-textarea:disabled+label,textarea.materialize-textarea[readonly="readonly"]+label{color:rgba(0,0,0,0.26)}input[type=text]:focus:not([readonly]),input[type=password]:focus:not([readonly]),input[type=email]:focus:not([readonly]),input[type=url]:focus:not([readonly]),input[type=time]:focus:not([readonly]),input[type=date]:focus:not([readonly]),input[type=datetime-local]:focus:not([readonly]),input[type=tel]:focus:not([readonly]),input[type=number]:focus:not([readonly]),input[type=search]:focus:not([readonly]),textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}input[type=text]:focus:not([readonly])+label,input[type=password]:focus:not([readonly])+label,input[type=email]:focus:not([readonly])+label,input[type=url]:focus:not([readonly])+label,input[type=time]:focus:not([readonly])+label,input[type=date]:focus:not([readonly])+label,input[type=datetime-local]:focus:not([readonly])+label,input[type=tel]:focus:not([readonly])+label,input[type=number]:focus:not([readonly])+label,input[type=search]:focus:not([readonly])+label,textarea.materialize-textarea:focus:not([readonly])+label{color:#26a69a}input[type=text].valid,input[type=text]:focus.valid,input[type=password].valid,input[type=password]:focus.valid,input[type=email].valid,input[type=email]:focus.valid,input[type=url].valid,input[type=url]:focus.valid,input[type=time].valid,input[type=time]:focus.valid,input[type=date].valid,input[type=date]:focus.valid,input[type=datetime-local].valid,input[type=datetime-local]:focus.valid,input[type=tel].valid,input[type=tel]:focus.valid,input[type=number].valid,input[type=number]:focus.valid,input[type=search].valid,input[type=search]:focus.valid,textarea.materialize-textarea.valid,textarea.materialize-textarea:focus.valid{border-bottom:1px solid #4CAF50;box-shadow:0 1px 0 0 #4CAF50}input[type=text].valid+label:after,input[type=text]:focus.valid+label:after,input[type=password].valid+label:after,input[type=password]:focus.valid+label:after,input[type=email].valid+label:after,input[type=email]:focus.valid+label:after,input[type=url].valid+label:after,input[type=url]:focus.valid+label:after,input[type=time].valid+label:after,input[type=time]:focus.valid+label:after,input[type=date].valid+label:after,input[type=date]:focus.valid+label:after,input[type=datetime-local].valid+label:after,input[type=datetime-local]:focus.valid+label:after,input[type=tel].valid+label:after,input[type=tel]:focus.valid+label:after,input[type=number].valid+label:after,input[type=number]:focus.valid+label:after,input[type=search].valid+label:after,input[type=search]:focus.valid+label:after,textarea.materialize-textarea.valid+label:after,textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#4CAF50;opacity:1}input[type=text].invalid,input[type=text]:focus.invalid,input[type=password].invalid,input[type=password]:focus.invalid,input[type=email].invalid,input[type=email]:focus.invalid,input[type=url].invalid,input[type=url]:focus.invalid,input[type=time].invalid,input[type=time]:focus.invalid,input[type=date].invalid,input[type=date]:focus.invalid,input[type=datetime-local].invalid,input[type=datetime-local]:focus.invalid,input[type=tel].invalid,input[type=tel]:focus.invalid,input[type=number].invalid,input[type=number]:focus.invalid,input[type=search].invalid,input[type=search]:focus.invalid,textarea.materialize-textarea.invalid,textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #F44336;box-shadow:0 1px 0 0 #F44336}input[type=text].invalid+label:after,input[type=text]:focus.invalid+label:after,input[type=password].invalid+label:after,input[type=password]:focus.invalid+label:after,input[type=email].invalid+label:after,input[type=email]:focus.invalid+label:after,input[type=url].invalid+label:after,input[type=url]:focus.invalid+label:after,input[type=time].invalid+label:after,input[type=time]:focus.invalid+label:after,input[type=date].invalid+label:after,input[type=date]:focus.invalid+label:after,input[type=datetime-local].invalid+label:after,input[type=datetime-local]:focus.invalid+label:after,input[type=tel].invalid+label:after,input[type=tel]:focus.invalid+label:after,input[type=number].invalid+label:after,input[type=number]:focus.invalid+label:after,input[type=search].invalid+label:after,input[type=search]:focus.invalid+label:after,textarea.materialize-textarea.invalid+label:after,textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#F44336;opacity:1}input[type=text]+label:after,input[type=password]+label:after,input[type=email]+label:after,input[type=url]+label:after,input[type=time]+label:after,input[type=date]+label:after,input[type=datetime-local]+label:after,input[type=tel]+label:after,input[type=number]+label:after,input[type=search]+label:after,textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:65px;opacity:0;transition:.2s opacity ease-out,.2s color ease-out}.input-field{position:relative;margin-top:1rem}.input-field label{color:#9e9e9e;position:absolute;top:0.8rem;left:0.75rem;font-size:1rem;cursor:text;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out}.input-field label.active{font-size:0.8rem;-webkit-transform:translateY(-140%);-moz-transform:translateY(-140%);-ms-transform:translateY(-140%);-o-transform:translateY(-140%);transform:translateY(-140%)}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;-webkit-transition:color .2s;-moz-transition:color .2s;-o-transition:color .2s;-ms-transition:color .2s;transition:color .2s}.input-field .prefix.active{color:#26a69a}.input-field .prefix ~ input,.input-field .prefix ~ textarea{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.input-field .prefix ~ textarea{padding-top:.8rem}.input-field .prefix ~ label{margin-left:3rem}@media only screen and (max-width : 992px){.input-field .prefix ~ input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width : 600px){.input-field .prefix ~ input{width:80%;width:calc(100% - 3rem)}}.input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.input-field input[type=search]:focus+label i,.input-field input[type=search]:focus ~ .mdi-navigation-close,.input-field input[type=search]:focus ~ .material-icons{color:#444}.input-field input[type=search]+label{left:1rem}.input-field input[type=search] ~ .mdi-navigation-close,.input-field input[type=search] ~ .material-icons{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:.3s color}textarea{width:100%;height:3rem;background-color:transparent}textarea.materialize-textarea{overflow-y:hidden;padding:1.6rem 0;resize:none;min-height:3rem}.hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem}[type="radio"]:not(:checked),[type="radio"]:checked{position:absolute;left:-9999px;visibility:hidden}[type="radio"]:not(:checked)+label,[type="radio"]:checked+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type="radio"]+label:before,[type="radio"]+label:after{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease}[type="radio"]:not(:checked)+label:before{border-radius:50%;border:2px solid #5a5a5a}[type="radio"]:not(:checked)+label:after{border-radius:50%;border:2px solid #5a5a5a;z-index:-1;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}[type="radio"]:checked+label:before{border-radius:50%;border:2px solid transparent}[type="radio"]:checked+label:after{border-radius:50%;border:2px solid #26a69a;background-color:#26a69a;z-index:0;-webkit-transform:scale(1.02);-moz-transform:scale(1.02);-ms-transform:scale(1.02);-o-transform:scale(1.02);transform:scale(1.02)}[type="radio"].with-gap:checked+label:before{border-radius:50%;border:2px solid #26a69a}[type="radio"].with-gap:checked+label:after{border-radius:50%;border:2px solid #26a69a;background-color:#26a69a;z-index:0;-webkit-transform:scale(.5);-moz-transform:scale(.5);-ms-transform:scale(.5);-o-transform:scale(.5);transform:scale(.5)}[type="radio"].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,0.26)}[type="radio"].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before,[type="radio"]:disabled:checked+label:before{background-color:transparent;border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled+label{color:rgba(0,0,0,0.26)}[type="radio"]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,0.26)}[type="radio"]:disabled:checked+label:after{background-color:rgba(0,0,0,0.26);border-color:#BDBDBD}form p{margin-bottom:10px;text-align:left}form p:last-child{margin-bottom:0}[type="checkbox"]:not(:checked),[type="checkbox"]:checked{position:absolute;left:-9999px;visibility:hidden}[type="checkbox"]{}[type="checkbox"]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}[type="checkbox"]+label:before{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;-webkit-transition:0.2s;-moz-transition:0.2s;-o-transition:0.2s;-ms-transition:0.2s;transition:0.2s}[type="checkbox"]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,0.26)}[type="checkbox"]:checked+label:before{top:-4px;left:-3px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #26a69a;border-bottom:2px solid #26a69a;-webkit-transform:rotate(40deg);-moz-transform:rotate(40deg);-ms-transform:rotate(40deg);-o-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);border-bottom:2px solid rgba(0,0,0,0.26)}[type="checkbox"]:indeterminate+label:before{left:-10px;top:-11px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #26a69a;border-bottom:none;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,0.26);background-color:transparent}[type="checkbox"].filled-in+label:after{border-radius:2px}[type="checkbox"].filled-in+label:before,[type="checkbox"].filled-in+label:after{content:'';left:0;position:absolute;transition:border .25s,background-color .25s,width .2s .1s,height .2s .1s,top .2s .1s,left .2s .1s;z-index:1}[type="checkbox"].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}[type="checkbox"].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0px;z-index:0}[type="checkbox"].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type="checkbox"].filled-in:checked+label:after{top:0px;width:20px;height:20px;border:2px solid #26a69a;background-color:#26a69a;z-index:0}[type="checkbox"].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}[type="checkbox"].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#BDBDBD}[type="checkbox"].filled-in:disabled:checked+label:before{background-color:transparent}[type="checkbox"].filled-in:disabled:checked+label:after{background-color:#BDBDBD;border-color:#BDBDBD}.switch,.switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.switch label{cursor:pointer}.switch label input[type=checkbox]{opacity:0;width:0;height:0}.switch label input[type=checkbox]:checked+.lever{background-color:#84c7c1}.switch label input[type=checkbox]:checked+.lever:after{background-color:#26a69a}.switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;margin-right:10px;transition:background 0.3s ease;vertical-align:middle;margin:0 16px}.switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#F1F1F1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,0.4);left:-5px;top:-3px;transition:left 0.3s ease,background .3s ease,box-shadow 0.1s ease}input[type=checkbox]:checked:not(:disabled) ~ .lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(38,166,154,0.1)}input[type=checkbox]:not(:disabled) ~ .lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,0.4),0 0 0 15px rgba(0,0,0,0.08)}.switch label input[type=checkbox]:checked+.lever:after{left:24px}.switch input[type=checkbox][disabled]+.lever{cursor:default}.switch label input[type=checkbox][disabled]+.lever:after,.switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#BDBDBD}.select-label{position:absolute}.select-wrapper{position:relative}.select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #9e9e9e;outline:none;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 15px 0;padding:0;display:block}.select-wrapper span.caret{color:initial;position:absolute;right:0;top:16px;font-size:10px}.select-wrapper span.caret.disabled{color:rgba(0,0,0,0.26)}.select-wrapper+label{position:absolute;top:-14px;font-size:0.8rem}select{display:none}select.browser-default{display:block}select:disabled{color:rgba(0,0,0,0.3)}.select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,0.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,0.3)}.select-wrapper i{color:rgba(0,0,0,0.3)}.select-dropdown li.disabled{color:rgba(0,0,0,0.3);background-color:transparent}.file-field{position:relative}.file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.file-field input.file-path{width:100%}.file-field .btn,.file-field .btn-large{float:left;height:3rem;line-height:3rem}.file-field span{cursor:pointer}.file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.range-field{position:relative}input[type=range],input[type=range]+.thumb{cursor:pointer}input[type=range]{position:relative;background-color:transparent;border:none;outline:none;width:100%;margin:15px 0px;padding:0}input[type=range]+.thumb{position:absolute;border:none;height:0;width:0;border-radius:50%;background-color:#26a69a;top:10px;margin-left:-6px;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-ms-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#26a69a;font-size:0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}input[type=range]:focus{outline:none}input[type=range]{-webkit-appearance:none}input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#26a69a;transform-origin:50% 50%;margin:-5px 0 0 0;-webkit-transition:0.3s;-moz-transition:0.3s;-o-transition:0.3s;-ms-transition:0.3s;transition:0.3s}input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}input[type=range]{border:1px solid white}input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a;margin-top:-5px}input[type=range]:-moz-focusring{outline:1px solid white;outline-offset:-1px}input[type=range]:focus::-moz-range-track{background:#ccc}input[type=range]::-ms-track{height:3px;background:transparent;border-color:transparent;border-width:6px 0;color:transparent}input[type=range]::-ms-fill-lower{background:#777}input[type=range]::-ms-fill-upper{background:#ddd}input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#26a69a}input[type=range]:focus::-ms-fill-lower{background:#888}input[type=range]:focus::-ms-fill-upper{background:#ccc}select{background-color:rgba(255,255,255,0.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.table-of-contents.fixed{position:fixed}.table-of-contents li{padding:2px 0}.table-of-contents a{display:inline-block;font-weight:300;color:#757575;padding-left:20px;height:1.5rem;line-height:1.5rem;letter-spacing:.4;display:inline-block}.table-of-contents a:hover{color:#a8a8a8;padding-left:19px;border-left:1px solid #ea4a4f}.table-of-contents a.active{font-weight:500;padding-left:18px;border-left:2px solid #ea4a4f}.side-nav{position:fixed;width:240px;left:-105%;top:0;margin:0;height:100%;height:calc(100% + 60px);height:-moz-calc(100%);padding-bottom:60px;background-color:#fff;z-index:999;overflow-y:auto;will-change:left}.side-nav.right-aligned{will-change:right;right:-105%;left:auto}.side-nav .collapsible{margin:0}.side-nav li{float:none;padding:0 15px}.side-nav li:hover,.side-nav li.active{background-color:#ddd}.side-nav a{color:#444;display:block;font-size:1rem;height:64px;line-height:64px;padding:0 15px}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.side-nav.fixed a{display:block;padding:0 15px;color:#444}.side-nav.fixed{left:0;position:fixed}.side-nav.fixed.right-aligned{right:0;left:auto}@media only screen and (max-width : 992px){.side-nav.fixed{left:-105%}.side-nav.fixed.right-aligned{right:-105%;left:auto}}.side-nav .collapsible-body li.active,.side-nav.fixed .collapsible-body li.active{background-color:#ee6e73}.side-nav .collapsible-body li.active a,.side-nav.fixed .collapsible-body li.active a{color:#fff}#sidenav-overlay{position:fixed;top:0;left:0;right:0;height:120vh;background-color:rgba(0,0,0,0.5);z-index:997;will-change:opacity}.preloader-wrapper{display:inline-block;position:relative;width:48px;height:48px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#26a69a}.spinner-blue,.spinner-blue-only{border-color:#4285f4}.spinner-red,.spinner-red-only{border-color:#db4437}.spinner-yellow,.spinner-yellow-only{border-color:#f4b400}.spinner-green,.spinner-green-only{border-color:#0f9d58}.active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,blue-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,red-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,green-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .spinner-layer,.active .spinner-layer.spinner-blue-only,.active .spinner-layer.spinner-red-only,.active .spinner-layer.spinner-yellow-only,.active .spinner-layer.spinner-green-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@keyframes blue-fade-in-out{from{opacity:1}25%{opacity:1}26%{opacity:0}89%{opacity:0}90%{opacity:1}100%{opacity:1}}@-webkit-keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@keyframes red-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:1}50%{opacity:1}51%{opacity:0}}@-webkit-keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@keyframes yellow-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:1}75%{opacity:1}76%{opacity:0}}@-webkit-keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}@keyframes green-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:1}90%{opacity:1}100%{opacity:0}}.gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gap-patch .circle{width:1000%;left:-450%}.circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent !important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.circle-clipper.left .circle{left:0;border-right-color:transparent !important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.circle-clipper.right .circle{left:-100%;border-left-color:transparent !important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both;animation:right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}@-webkit-keyframes left-spin{from{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg)}}@keyframes left-spin{from{transform:rotate(130deg)}50%{transform:rotate(-5deg)}to{transform:rotate(130deg)}}@-webkit-keyframes right-spin{from{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg)}}@keyframes right-spin{from{transform:rotate(-130deg)}50%{transform:rotate(5deg)}to{transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1);animation:container-rotate 1568ms linear infinite,fade-out 400ms cubic-bezier(0.4, 0, 0.2, 1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.slider{position:relative;height:400px;width:100%}.slider.fullscreen{height:100%;width:100%;position:absolute;top:0;left:0;right:0;bottom:0}.slider.fullscreen ul.slides{height:100%}.slider.fullscreen ul.indicators{z-index:2;bottom:30px}.slider .slides{background-color:#9e9e9e;margin:0;height:400px}.slider .slides li{opacity:0;position:absolute;top:0;left:0;z-index:1;width:100%;height:inherit;overflow:hidden}.slider .slides li img{height:100%;width:100%;background-size:cover;background-position:center}.slider .slides li .caption{color:#fff;position:absolute;top:15%;left:15%;width:70%;opacity:0}.slider .slides li .caption p{color:#e0e0e0}.slider .slides li.active{z-index:2}.slider .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.slider .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:16px;width:16px;margin:0 12px;background-color:#e0e0e0;-webkit-transition:background-color .3s;-moz-transition:background-color .3s;-o-transition:background-color .3s;-ms-transition:background-color .3s;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#4CAF50}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000000;position:absolute;z-index:10000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.picker__input{cursor:default}.picker__input.picker__input--active{border-color:#0089ec}.picker__holder{width:100%;overflow-y:auto;-webkit-overflow-scrolling:touch}/*! | ||
14 | * Default mobile-first, responsive styling for pickadate.js | ||
15 | * Demo: http://amsul.github.io/pickadate.js | ||
16 | */.picker__holder,.picker__frame{bottom:0;left:0;right:0;top:100%}.picker__holder{position:fixed;-webkit-transition:background 0.15s ease-out,top 0s 0.15s;-moz-transition:background 0.15s ease-out,top 0s 0.15s;transition:background 0.15s ease-out,top 0s 0.15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;margin:0 auto;min-width:256px;width:300px;max-height:350px;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;-webkit-transition:all 0.15s ease-out;-moz-transition:all 0.15s ease-out;transition:all 0.15s ease-out}@media (min-height: 28.875em){.picker__frame{overflow:visible;top:auto;bottom:-100%;max-height:80%}}@media (min-height: 40.125em){.picker__frame{margin-bottom:7.5%}}.picker__wrap{display:table;width:100%;height:100%}@media (min-height: 28.875em){.picker__wrap{display:block}}.picker__box{background:#ffffff;display:table-cell;vertical-align:middle}@media (min-height: 28.875em){.picker__box{display:block;border:1px solid #777777;border-top-color:#898989;border-bottom-width:0;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;-webkit-box-shadow:0 12px 36px 16px rgba(0,0,0,0.24);-moz-box-shadow:0 12px 36px 16px rgba(0,0,0,0.24);box-shadow:0 12px 36px 16px rgba(0,0,0,0.24)}}.picker--opened .picker__holder{top:0;background:transparent;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";zoom:1;background:rgba(0,0,0,0.32);-webkit-transition:background 0.15s ease-out;-moz-transition:background 0.15s ease-out;transition:background 0.15s ease-out}.picker--opened .picker__frame{top:0;-ms-filter:"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}@media (min-height: 35.875em){.picker--opened .picker__frame{top:10%;bottom:20% auto}}.picker__input.picker__input--active{border-color:#E3F2FD}.picker__frame{margin:0 auto;max-width:325px}@media (min-height: 38.875em){.picker--opened .picker__frame{top:10%;bottom:auto}}.picker__box{padding:0 1em}.picker__header{text-align:center;position:relative;margin-top:.75em}.picker__month,.picker__year{display:inline-block;margin-left:.25em;margin-right:.25em}.picker__select--month,.picker__select--year{height:2em;padding:0;margin-left:.25em;margin-right:.25em}.picker__select--month.browser-default{display:inline;background-color:#FFFFFF;width:40%}.picker__select--year.browser-default{display:inline;background-color:#FFFFFF;width:25%}.picker__select--month:focus,.picker__select--year:focus{border-color:rgba(0,0,0,0.05)}.picker__nav--prev,.picker__nav--next{position:absolute;padding:.5em 1.25em;width:1em;height:1em;box-sizing:content-box;top:-0.25em}.picker__nav--prev{left:-1em;padding-right:1.25em}.picker__nav--next{right:-1em;padding-left:1.25em}.picker__nav--disabled,.picker__nav--disabled:hover,.picker__nav--disabled:before,.picker__nav--disabled:before:hover{cursor:default;background:none;border-right-color:#f5f5f5;border-left-color:#f5f5f5}.picker__table{text-align:center;border-collapse:collapse;border-spacing:0;table-layout:fixed;font-size:1rem;width:100%;margin-top:.75em;margin-bottom:.5em}.picker__table th,.picker__table td{text-align:center}.picker__table td{margin:0;padding:0}.picker__weekday{width:14.285714286%;font-size:.75em;padding-bottom:.25em;color:#999999;font-weight:500}@media (min-height: 33.875em){.picker__weekday{padding-bottom:.5em}}.picker__day--today{position:relative;color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day--disabled:before{border-top-color:#aaaaaa}.picker__day--infocus:hover{cursor:pointer;color:#000;font-weight:500}.picker__day--outfocus{display:none;padding:.75rem 0;color:#fff}.picker__day--outfocus:hover{cursor:pointer;color:#dddddd;font-weight:500}.picker__day--highlighted:hover,.picker--focused .picker__day--highlighted{cursor:pointer}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(.75);-moz-transform:scale(.75);-ms-transform:scale(.75);-o-transform:scale(.75);transform:scale(.75);background:#0089ec;color:#ffffff}.picker__day--disabled,.picker__day--disabled:hover,.picker--focused .picker__day--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbbbbb}.picker__footer{text-align:center;display:flex;align-items:center;justify-content:space-between}.picker__button--today,.picker__button--clear,.picker__button--close{border:1px solid #ffffff;background:#ffffff;font-size:.8em;padding:.66em 0;font-weight:bold;width:33%;display:inline-block;vertical-align:bottom}.picker__button--today:hover,.picker__button--clear:hover,.picker__button--close:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-bottom-color:#b1dcfb}.picker__button--today:focus,.picker__button--clear:focus,.picker__button--close:focus{background:#b1dcfb;border-color:rgba(0,0,0,0.05);outline:none}.picker__button--today:before,.picker__button--clear:before,.picker__button--close:before{position:relative;display:inline-block;height:0}.picker__button--today:before,.picker__button--clear:before{content:" ";margin-right:.45em}.picker__button--today:before{top:-0.05em;width:0;border-top:0.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-0.25em;width:.66em;border-top:3px solid #ee2200}.picker__button--close:before{content:"\D7";top:-0.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaaaaa}.picker__box{border-radius:2px;overflow:hidden}.picker__date-display{text-align:center;background-color:#26a69a;color:#fff;padding-bottom:15px;font-weight:300}.picker__nav--prev:hover,.picker__nav--next:hover{cursor:pointer;color:#000000;background:#a1ded8}.picker__weekday-display{background-color:#1f897f;padding:10px;font-weight:200;letter-spacing:.5;font-size:1rem;margin-bottom:15px}.picker__month-display{text-transform:uppercase;font-size:2rem}.picker__day-display{font-size:4.5rem;font-weight:400}.picker__year-display{font-size:1.8rem;color:rgba(255,255,255,0.4)}.picker__box{padding:0}.picker__calendar-container{padding:0 1rem}.picker__calendar-container thead{border:none}.picker__table{margin-top:0;margin-bottom:.5em}.picker__day--infocus{color:#595959;letter-spacing:-.3;padding:.75rem 0;font-weight:400;border:1px solid transparent}.picker__day.picker__day--today{color:#26a69a}.picker__day.picker__day--today.picker__day--selected{color:#fff}.picker__weekday{font-size:.9rem}.picker__day--selected,.picker__day--selected:hover,.picker--focused .picker__day--selected{border-radius:50%;-webkit-transform:scale(.9);-moz-transform:scale(.9);-ms-transform:scale(.9);-o-transform:scale(.9);transform:scale(.9);background-color:#26a69a;color:#ffffff}.picker__day--selected.picker__day--outfocus,.picker__day--selected:hover.picker__day--outfocus,.picker--focused .picker__day--selected.picker__day--outfocus{background-color:#a1ded8}.picker__footer{text-align:right;padding:5px 10px}.picker__close,.picker__today{font-size:1.1rem;padding:0 1rem;color:#26a69a}.picker__nav--prev:before,.picker__nav--next:before{content:" ";border-top:.5em solid transparent;border-bottom:.5em solid transparent;border-right:0.75em solid #676767;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:0.75em solid #676767}button.picker__today:focus,button.picker__clear:focus,button.picker__close:focus{background-color:#a1ded8}.picker__list{list-style:none;padding:0.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #dddddd;border-top:1px solid #dddddd;margin-bottom:-1px;position:relative;background:#ffffff;padding:.75em 1.25em}@media (min-height: 46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000000;background:#b1dcfb;border-color:#0089ec;z-index:10}.picker__list-item--highlighted{border-color:#0089ec;z-index:10}.picker__list-item--highlighted:hover,.picker--focused .picker__list-item--highlighted{cursor:pointer;color:#000000;background:#b1dcfb}.picker__list-item--selected,.picker__list-item--selected:hover,.picker--focused .picker__list-item--selected{background:#0089ec;color:#ffffff;z-index:10}.picker__list-item--disabled,.picker__list-item--disabled:hover,.picker--focused .picker__list-item--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#dddddd;cursor:default;border-color:#dddddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:none;border:0;font-weight:500;font-size:.67em;text-align:center;text-transform:uppercase;color:#666}.picker--time .picker__button--clear:hover,.picker--time .picker__button--clear:focus{color:#000000;background:#b1dcfb;background:#ee2200;border-color:#ee2200;cursor:pointer;color:#ffffff;outline:none}.picker--time .picker__button--clear:before{top:-0.25em;color:#666;font-size:1.25em;font-weight:bold}.picker--time .picker__button--clear:hover:before,.picker--time .picker__button--clear:focus:before{color:#ffffff}.picker--time .picker__frame{min-width:256px;max-width:320px}.picker--time .picker__box{font-size:1em;background:#f2f2f2;padding:0}@media (min-height: 40.125em){.picker--time .picker__box{margin-bottom:5em}} \ No newline at end of file | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/css/print.css b/src/Wallabag/CoreBundle/Resources/public/themes/material/css/print.css deleted file mode 100755 index 2a799c44..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/css/print.css +++ /dev/null | |||
@@ -1,62 +0,0 @@ | |||
1 | /* ### Layout ### */ | ||
2 | |||
3 | body { | ||
4 | font-family: Serif; | ||
5 | background-color: #fff; | ||
6 | } | ||
7 | |||
8 | @page { | ||
9 | margin: 1cm; | ||
10 | } | ||
11 | |||
12 | img { | ||
13 | max-width: 100% !important; | ||
14 | } | ||
15 | |||
16 | /* ### Content ### */ | ||
17 | |||
18 | /* Hide useless blocks */ | ||
19 | body > header, | ||
20 | #article_toolbar, | ||
21 | #links, | ||
22 | #sort, | ||
23 | body > footer, | ||
24 | .top_link, | ||
25 | div.tools, | ||
26 | header div, | ||
27 | .messages, | ||
28 | .entry + .results { | ||
29 | display: none !important; | ||
30 | } | ||
31 | |||
32 | article { | ||
33 | border: none !important; | ||
34 | } | ||
35 | |||
36 | /* Add URL after links */ | ||
37 | .vieworiginal a:after { | ||
38 | content: " (" attr(href) ")"; | ||
39 | } | ||
40 | |||
41 | /* Add explanation after abbr */ | ||
42 | abbr[title]:after { | ||
43 | content: " (" attr(title) ")"; | ||
44 | } | ||
45 | |||
46 | /* Change border on current pager item */ | ||
47 | .pagination span.current { | ||
48 | border-style: dashed; | ||
49 | } | ||
50 | |||
51 | #main { | ||
52 | width: 100%; | ||
53 | padding: 0; | ||
54 | margin: 0; | ||
55 | margin-left: 0; | ||
56 | padding-right: 0; | ||
57 | padding-bottom: 0; | ||
58 | } | ||
59 | |||
60 | #article { | ||
61 | width: 100%; | ||
62 | } | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/icomoon/icomoon.eot b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/icomoon/icomoon.eot deleted file mode 100644 index 7318414e..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/icomoon/icomoon.eot +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/icomoon/icomoon.svg b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/icomoon/icomoon.svg deleted file mode 100644 index 365c0c42..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/icomoon/icomoon.svg +++ /dev/null | |||
@@ -1,17 +0,0 @@ | |||
1 | <?xml version="1.0" standalone="no"?> | ||
2 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > | ||
3 | <svg xmlns="http://www.w3.org/2000/svg"> | ||
4 | <metadata>Generated by IcoMoon</metadata> | ||
5 | <defs> | ||
6 | <font id="icomoon" horiz-adv-x="1024"> | ||
7 | <font-face units-per-em="1024" ascent="960" descent="-64" /> | ||
8 | <missing-glyph horiz-adv-x="1024" /> | ||
9 | <glyph unicode=" " horiz-adv-x="512" d="" /> | ||
10 | <glyph unicode="" glyph-name="google-plus2" d="M0.806 90.336c-0.244 2.532-0.452 5.070-0.584 7.63 0.13-2.56 0.34-5.098 0.584-7.63zM235.908 394.852c92.010-2.738 153.734 92.698 137.862 213.198-15.894 120.48-103.396 217.168-195.408 219.922-92.026 2.73-153.74-89.482-137.852-210 15.882-120.468 103.352-220.374 195.398-223.12zM1024 704v85.31c0 93.88-76.782 170.69-170.658 170.69h-682.656c-92.276 0-168.012-74.232-170.564-165.926 58.362 51.386 139.324 94.316 222.874 94.316 89.304 0 357.244 0 357.244 0l-79.948-67.618h-113.268c75.13-28.804 115.156-116.124 115.156-205.722 0-75.248-41.81-139.954-100.888-185.968-57.644-44.902-68.572-63.708-68.572-101.878 0-32.578 61.746-88 94.032-110.788 94.382-66.538 124.916-128.312 124.916-231.456 0-16.428-2.042-32.83-6.066-48.96h307.742c93.874 0 170.656 76.75 170.656 170.69v533.308h-192v-191.998h-64v192h-191.998v64h191.998v192h64v-192h192zM185.886 194.064c21.614 0 41.422 0.59 61.936 0.59-27.146 26.334-48.626 58.6-48.626 98.38 0 23.608 7.564 46.336 18.134 66.52-10.782-0.77-21.79-0.994-33.126-0.994-74.356 0-137.506 24.076-184.204 63.854v-67.242l0.006-201.73c53.44 25.374 116.888 40.622 185.88 40.622zM3.42 72.742c-1.112 5.458-1.966 11.006-2.542 16.634 0.574-5.628 1.43-11.176 2.542-16.634zM455.45 7.154c-15.058 58.806-68.454 87.964-142.888 139.568-27.072 8.732-56.894 13.874-88.894 14.208-89.618 0.964-173.108-34.942-220.216-88.372 15.92-77.706 85.034-136.558 167.234-136.558h286.444c1.816 11.128 2.696 22.632 2.696 34.432 0 12.534-1.534 24.792-4.376 36.722z" /> | ||
11 | <glyph unicode="" glyph-name="facebook2" d="M853.35 960h-682.702c-94.25 0-170.648-76.42-170.648-170.686v-682.63c0-94.266 76.398-170.684 170.648-170.684h341.352v448h-128v128h128v96c0 88.366 71.634 160 160 160h160v-128h-160c-17.674 0-32-14.328-32-32v-96h176l-32-128h-144v-448h213.35c94.25 0 170.65 76.418 170.65 170.684v682.63c0 94.266-76.4 170.686-170.65 170.686z" /> | ||
12 | <glyph unicode="" glyph-name="twitter" d="M1024 765.582c-37.676-16.708-78.164-28.002-120.66-33.080 43.372 26 76.686 67.17 92.372 116.23-40.596-24.078-85.556-41.56-133.41-50.98-38.32 40.83-92.922 66.34-153.346 66.34-116.022 0-210.088-94.058-210.088-210.078 0-16.466 1.858-32.5 5.44-47.878-174.6 8.764-329.402 92.4-433.018 219.506-18.084-31.028-28.446-67.116-28.446-105.618 0-72.888 37.088-137.192 93.46-174.866-34.438 1.092-66.832 10.542-95.154 26.278-0.020-0.876-0.020-1.756-0.020-2.642 0-101.788 72.418-186.696 168.522-206-17.626-4.8-36.188-7.372-55.348-7.372-13.538 0-26.698 1.32-39.528 3.772 26.736-83.46 104.32-144.206 196.252-145.896-71.9-56.35-162.486-89.934-260.916-89.934-16.958 0-33.68 0.994-50.116 2.94 92.972-59.61 203.402-94.394 322.042-94.394 386.422 0 597.736 320.124 597.736 597.744 0 9.108-0.206 18.168-0.61 27.18 41.056 29.62 76.672 66.62 104.836 108.748z" /> | ||
13 | <glyph unicode="" glyph-name="apple" d="M791.498 415.908c-1.294 129.682 105.758 191.876 110.542 194.966-60.152 88.020-153.85 100.078-187.242 101.472-79.742 8.074-155.596-46.948-196.066-46.948-40.368 0-102.818 45.754-168.952 44.552-86.916-1.292-167.058-50.538-211.812-128.38-90.304-156.698-23.126-388.84 64.89-515.926 43.008-62.204 94.292-132.076 161.626-129.58 64.842 2.588 89.362 41.958 167.756 41.958s100.428-41.958 169.050-40.67c69.774 1.296 113.982 63.398 156.692 125.796 49.39 72.168 69.726 142.038 70.924 145.626-1.548 0.706-136.060 52.236-137.408 207.134zM662.562 796.478c35.738 43.358 59.86 103.512 53.28 163.522-51.478-2.096-113.878-34.29-150.81-77.55-33.142-38.376-62.148-99.626-54.374-158.436 57.466-4.484 116.128 29.204 151.904 72.464z" /> | ||
14 | <glyph unicode="" glyph-name="android" d="M896 576c-35.2 0-64-28.8-64-64v-256c0-35.2 28.8-64 64-64s64 28.8 64 64v256c0 35.2-28.8 64-64 64zM128 576c-35.2 0-64-28.8-64-64v-256c0-35.2 28.8-64 64-64s64 28.8 64 64v256c0 35.2-28.802 64-64 64zM224 224c0-53.020 42.98-96 96-96v0-128c0-35.2 28.8-64 64-64s64 28.8 64 64v128h128v-128c0-35.2 28.8-64 64-64s64 28.8 64 64v128c53.020 0 96 42.98 96 96v352h-576v-352zM798.216 639.998c-9.716 87.884-59.004 163.792-129.62 209.646l32.024 64.046c7.904 15.806 1.496 35.028-14.31 42.932s-35.030 1.496-42.932-14.312l-32.142-64.286-8.35 3.316c-28.568 9.502-59.122 14.66-90.886 14.66-31.762 0-62.316-5.158-90.888-14.656l-8.348-3.316-32.142 64.282c-7.904 15.808-27.128 22.212-42.932 14.312-15.808-7.904-22.214-27.126-14.312-42.932l32.022-64.046c-70.616-45.852-119.904-121.762-129.622-209.644v-32h574.222v31.998h-1.784zM416 704c-17.674 0-32 14.328-32 32 0 17.648 14.288 31.958 31.93 31.996 0.032 0 0.062-0.002 0.094-0.002 0.018 0 0.036 0.002 0.052 0.002 17.638-0.042 31.924-14.35 31.924-31.996 0-17.672-14.326-32-32-32zM608 704c-17.674 0-32 14.328-32 32 0 17.646 14.286 31.954 31.924 31.996 0.016 0 0.034-0.002 0.050-0.002 0.032 0 0.064 0.002 0.096 0.002 17.64-0.038 31.93-14.348 31.93-31.996 0-17.672-14.326-32-32-32z" /> | ||
15 | <glyph unicode="" glyph-name="chrome" d="M258.278 513.458l-146.532 253.802c93.818 117.464 238.234 192.74 400.254 192.74 187.432 0 351.31-100.736 440.532-251h-417.77c-7.504 0.65-15.092 1-22.762 1-121.874 0-224.578-83.644-253.722-196.542zM695.306 635h293.46c22.74-57.93 35.234-121.004 35.234-187 0-280.826-226.1-508.804-506.186-511.926l209.394 362.678c29.48 42.378 46.792 93.826 46.792 149.248 0 73.17-30.164 139.42-78.694 187zM326 448c0 102.56 83.44 186 186 186s186-83.44 186-186c0-102.56-83.44-186-186-186s-186 83.44-186 186zM582.182 195.558l-146.578-253.878c-246.532 36.884-435.604 249.516-435.604 506.32 0 91.218 23.884 176.846 65.696 251.024l209.030-362.054c41.868-89.112 132.476-150.97 237.274-150.97 24.3 0 47.836 3.34 70.182 9.558z" /> | ||
16 | <glyph unicode="" glyph-name="firefox" d="M1022.526 625.86l-11.86-76.080c0 0-16.954 140.856-37.732 193.514-31.846 80.688-46.014 80.040-46.108 79.922 21.33-54.204 17.462-83.324 17.462-83.324s-37.792 102.998-137.712 135.768c-110.686 36.282-170.57 26.364-177.488 24.486-1.050 0.008-2.064 0.010-3.030 0.010 0.818-0.062 1.612-0.146 2.426-0.212-0.034-0.020-0.090-0.042-0.082-0.052 0.45-0.548 122.306-21.302 143.916-50.996 0 0-51.76 0-103.272-14.842-2.328-0.666 189.524-23.964 228.746-215.674 0 0-21.030 43.876-47.040 51.328 17.106-52.036 12.714-150.776-3.576-199.85-2.096-6.312-4.24 27.282-36.328 41.75 10.28-73.646-0.616-190.456-51.708-222.632-3.982-2.504 32.030 115.31 7.242 69.762-142.708-218.802-311.404-100.972-387.248-49.11 38.866-8.462 112.654 1.318 145.314 25.612 0.042 0.030 0.078 0.056 0.118 0.086 35.468 24.252 56.472 41.964 75.334 37.772 18.874-4.214 31.438 14.726 16.78 31.53-14.676 16.838-50.314 39.978-98.524 27.366-34-8.904-76.134-46.522-140.448-8.432-49.364 29.25-54.012 53.546-54.45 70.376 1.218 5.966 2.754 11.536 4.576 16.624 5.682 15.87 22.912 20.658 32.494 24.438 16.256-2.792 30.262-7.862 44.968-15.406 0.19 4.894 0.252 11.39-0.018 18.76 1.41 2.802 0.538 11.252-1.722 21.58-1.302 10.308-3.42 20.974-6.752 30.692 0.012 0.002 0.020 0.010 0.030 0.014 0.056 0.018 0.108 0.040 0.156 0.070 0.078 0.044 0.146 0.112 0.208 0.19 0.012 0.020 0.030 0.034 0.044 0.052 0.082 0.124 0.154 0.272 0.198 0.466 1.020 4.618 12.022 13.524 25.718 23.1 12.272 8.58 26.702 17.696 38.068 24.752 10.060 6.248 17.72 10.882 19.346 12.098 0.618 0.466 1.358 1.012 2.164 1.636 0.15 0.116 0.3 0.232 0.454 0.354 0.094 0.074 0.19 0.148 0.286 0.226 5.41 4.308 13.484 12.448 15.178 29.578 0.004 0.042 0.010 0.080 0.012 0.122 0.050 0.504 0.092 1.014 0.13 1.534 0.028 0.362 0.050 0.726 0.072 1.096 0.014 0.284 0.032 0.566 0.044 0.856 0.030 0.674 0.050 1.364 0.060 2.064 0 0.040 0.002 0.076 0.004 0.116 0.022 1.658-0.006 3.386-0.104 5.202-0.054 1.014-0.126 1.93-0.298 2.762-0.008 0.044-0.018 0.092-0.028 0.136-0.018 0.082-0.036 0.164-0.058 0.244-0.036 0.146-0.076 0.292-0.122 0.43-0.006 0.018-0.010 0.032-0.016 0.046-0.052 0.16-0.112 0.314-0.174 0.464-0.004 0.006-0.004 0.010-0.006 0.016-1.754 4.108-8.32 5.658-35.442 6.118-0.026 0.002-0.050 0.002-0.076 0.002v0c-11.066 0.188-25.538 0.194-44.502 0.118-33.25-0.134-51.628 32.504-57.494 45.132 8.040 44.46 31.276 76.142 69.45 97.626 0.722 0.406 0.58 0.742-0.274 0.978 7.464 4.514-90.246 0.124-135.186-57.036-39.888 9.914-74.654 9.246-104.616 2.214-5.754 0.162-12.924 0.88-21.434 2.652-19.924 18.056-48.448 51.402-49.976 91.208 0 0-0.092-0.072-0.252-0.204-0.020 0.382-0.056 0.76-0.072 1.142 0 0-60.716-46.664-51.628-173.882-0.022-2.036-0.064-3.986-0.12-5.874-16.432-22.288-24.586-41.020-25.192-45.156-14.56-29.644-29.334-74.254-41.356-141.98 0 0 8.408 26.666 25.284 56.866-12.412-38.022-22.164-97.156-16.436-185.856 0 0 1.514 19.666 6.874 47.994 4.186-55.010 22.518-122.924 68.858-202.788 88.948-153.32 225.67-230.74 376.792-242.616 26.836-2.212 54.050-2.264 81.424-0.186 2.516 0.178 5.032 0.364 7.55 0.574 30.964 2.174 62.134 6.852 93.238 14.366 425.172 102.798 378.942 616.198 378.942 616.198z" /> | ||
17 | </font></defs></svg> \ No newline at end of file | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/icomoon/icomoon.ttf b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/icomoon/icomoon.ttf deleted file mode 100644 index fff65bca..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/icomoon/icomoon.ttf +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/icomoon/icomoon.woff b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/icomoon/icomoon.woff deleted file mode 100644 index f3fe2a46..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/icomoon/icomoon.woff +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/LICENSE.txt b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/LICENSE.txt deleted file mode 100644 index 542f6537..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/LICENSE.txt +++ /dev/null | |||
@@ -1,428 +0,0 @@ | |||
1 | https://github.com/google/material-design-icons/blob/master/LICENSE | ||
2 | https://github.com/FezVrasta/bootstrap-material-design/blob/master/fonts/LICENSE.txt | ||
3 | |||
4 | Attribution-ShareAlike 4.0 International | ||
5 | |||
6 | ======================================================================= | ||
7 | |||
8 | Creative Commons Corporation ("Creative Commons") is not a law firm and | ||
9 | does not provide legal services or legal advice. Distribution of | ||
10 | Creative Commons public licenses does not create a lawyer-client or | ||
11 | other relationship. Creative Commons makes its licenses and related | ||
12 | information available on an "as-is" basis. Creative Commons gives no | ||
13 | warranties regarding its licenses, any material licensed under their | ||
14 | terms and conditions, or any related information. Creative Commons | ||
15 | disclaims all liability for damages resulting from their use to the | ||
16 | fullest extent possible. | ||
17 | |||
18 | Using Creative Commons Public Licenses | ||
19 | |||
20 | Creative Commons public licenses provide a standard set of terms and | ||
21 | conditions that creators and other rights holders may use to share | ||
22 | original works of authorship and other material subject to copyright | ||
23 | and certain other rights specified in the public license below. The | ||
24 | following considerations are for informational purposes only, are not | ||
25 | exhaustive, and do not form part of our licenses. | ||
26 | |||
27 | Considerations for licensors: Our public licenses are | ||
28 | intended for use by those authorized to give the public | ||
29 | permission to use material in ways otherwise restricted by | ||
30 | copyright and certain other rights. Our licenses are | ||
31 | irrevocable. Licensors should read and understand the terms | ||
32 | and conditions of the license they choose before applying it. | ||
33 | Licensors should also secure all rights necessary before | ||
34 | applying our licenses so that the public can reuse the | ||
35 | material as expected. Licensors should clearly mark any | ||
36 | material not subject to the license. This includes other CC- | ||
37 | licensed material, or material used under an exception or | ||
38 | limitation to copyright. More considerations for licensors: | ||
39 | wiki.creativecommons.org/Considerations_for_licensors | ||
40 | |||
41 | Considerations for the public: By using one of our public | ||
42 | licenses, a licensor grants the public permission to use the | ||
43 | licensed material under specified terms and conditions. If | ||
44 | the licensor's permission is not necessary for any reason--for | ||
45 | example, because of any applicable exception or limitation to | ||
46 | copyright--then that use is not regulated by the license. Our | ||
47 | licenses grant only permissions under copyright and certain | ||
48 | other rights that a licensor has authority to grant. Use of | ||
49 | the licensed material may still be restricted for other | ||
50 | reasons, including because others have copyright or other | ||
51 | rights in the material. A licensor may make special requests, | ||
52 | such as asking that all changes be marked or described. | ||
53 | Although not required by our licenses, you are encouraged to | ||
54 | respect those requests where reasonable. More_considerations | ||
55 | for the public: | ||
56 | wiki.creativecommons.org/Considerations_for_licensees | ||
57 | |||
58 | ======================================================================= | ||
59 | |||
60 | Creative Commons Attribution-ShareAlike 4.0 International Public | ||
61 | License | ||
62 | |||
63 | By exercising the Licensed Rights (defined below), You accept and agree | ||
64 | to be bound by the terms and conditions of this Creative Commons | ||
65 | Attribution-ShareAlike 4.0 International Public License ("Public | ||
66 | License"). To the extent this Public License may be interpreted as a | ||
67 | contract, You are granted the Licensed Rights in consideration of Your | ||
68 | acceptance of these terms and conditions, and the Licensor grants You | ||
69 | such rights in consideration of benefits the Licensor receives from | ||
70 | making the Licensed Material available under these terms and | ||
71 | conditions. | ||
72 | |||
73 | |||
74 | Section 1 -- Definitions. | ||
75 | |||
76 | a. Adapted Material means material subject to Copyright and Similar | ||
77 | Rights that is derived from or based upon the Licensed Material | ||
78 | and in which the Licensed Material is translated, altered, | ||
79 | arranged, transformed, or otherwise modified in a manner requiring | ||
80 | permission under the Copyright and Similar Rights held by the | ||
81 | Licensor. For purposes of this Public License, where the Licensed | ||
82 | Material is a musical work, performance, or sound recording, | ||
83 | Adapted Material is always produced where the Licensed Material is | ||
84 | synched in timed relation with a moving image. | ||
85 | |||
86 | b. Adapter's License means the license You apply to Your Copyright | ||
87 | and Similar Rights in Your contributions to Adapted Material in | ||
88 | accordance with the terms and conditions of this Public License. | ||
89 | |||
90 | c. BY-SA Compatible License means a license listed at | ||
91 | creativecommons.org/compatiblelicenses, approved by Creative | ||
92 | Commons as essentially the equivalent of this Public License. | ||
93 | |||
94 | d. Copyright and Similar Rights means copyright and/or similar rights | ||
95 | closely related to copyright including, without limitation, | ||
96 | performance, broadcast, sound recording, and Sui Generis Database | ||
97 | Rights, without regard to how the rights are labeled or | ||
98 | categorized. For purposes of this Public License, the rights | ||
99 | specified in Section 2(b)(1)-(2) are not Copyright and Similar | ||
100 | Rights. | ||
101 | |||
102 | e. Effective Technological Measures means those measures that, in the | ||
103 | absence of proper authority, may not be circumvented under laws | ||
104 | fulfilling obligations under Article 11 of the WIPO Copyright | ||
105 | Treaty adopted on December 20, 1996, and/or similar international | ||
106 | agreements. | ||
107 | |||
108 | f. Exceptions and Limitations means fair use, fair dealing, and/or | ||
109 | any other exception or limitation to Copyright and Similar Rights | ||
110 | that applies to Your use of the Licensed Material. | ||
111 | |||
112 | g. License Elements means the license attributes listed in the name | ||
113 | of a Creative Commons Public License. The License Elements of this | ||
114 | Public License are Attribution and ShareAlike. | ||
115 | |||
116 | h. Licensed Material means the artistic or literary work, database, | ||
117 | or other material to which the Licensor applied this Public | ||
118 | License. | ||
119 | |||
120 | i. Licensed Rights means the rights granted to You subject to the | ||
121 | terms and conditions of this Public License, which are limited to | ||
122 | all Copyright and Similar Rights that apply to Your use of the | ||
123 | Licensed Material and that the Licensor has authority to license. | ||
124 | |||
125 | j. Licensor means the individual(s) or entity(ies) granting rights | ||
126 | under this Public License. | ||
127 | |||
128 | k. Share means to provide material to the public by any means or | ||
129 | process that requires permission under the Licensed Rights, such | ||
130 | as reproduction, public display, public performance, distribution, | ||
131 | dissemination, communication, or importation, and to make material | ||
132 | available to the public including in ways that members of the | ||
133 | public may access the material from a place and at a time | ||
134 | individually chosen by them. | ||
135 | |||
136 | l. Sui Generis Database Rights means rights other than copyright | ||
137 | resulting from Directive 96/9/EC of the European Parliament and of | ||
138 | the Council of 11 March 1996 on the legal protection of databases, | ||
139 | as amended and/or succeeded, as well as other essentially | ||
140 | equivalent rights anywhere in the world. | ||
141 | |||
142 | m. You means the individual or entity exercising the Licensed Rights | ||
143 | under this Public License. Your has a corresponding meaning. | ||
144 | |||
145 | |||
146 | Section 2 -- Scope. | ||
147 | |||
148 | a. License grant. | ||
149 | |||
150 | 1. Subject to the terms and conditions of this Public License, | ||
151 | the Licensor hereby grants You a worldwide, royalty-free, | ||
152 | non-sublicensable, non-exclusive, irrevocable license to | ||
153 | exercise the Licensed Rights in the Licensed Material to: | ||
154 | |||
155 | a. reproduce and Share the Licensed Material, in whole or | ||
156 | in part; and | ||
157 | |||
158 | b. produce, reproduce, and Share Adapted Material. | ||
159 | |||
160 | 2. Exceptions and Limitations. For the avoidance of doubt, where | ||
161 | Exceptions and Limitations apply to Your use, this Public | ||
162 | License does not apply, and You do not need to comply with | ||
163 | its terms and conditions. | ||
164 | |||
165 | 3. Term. The term of this Public License is specified in Section | ||
166 | 6(a). | ||
167 | |||
168 | 4. Media and formats; technical modifications allowed. The | ||
169 | Licensor authorizes You to exercise the Licensed Rights in | ||
170 | all media and formats whether now known or hereafter created, | ||
171 | and to make technical modifications necessary to do so. The | ||
172 | Licensor waives and/or agrees not to assert any right or | ||
173 | authority to forbid You from making technical modifications | ||
174 | necessary to exercise the Licensed Rights, including | ||
175 | technical modifications necessary to circumvent Effective | ||
176 | Technological Measures. For purposes of this Public License, | ||
177 | simply making modifications authorized by this Section 2(a) | ||
178 | (4) never produces Adapted Material. | ||
179 | |||
180 | 5. Downstream recipients. | ||
181 | |||
182 | a. Offer from the Licensor -- Licensed Material. Every | ||
183 | recipient of the Licensed Material automatically | ||
184 | receives an offer from the Licensor to exercise the | ||
185 | Licensed Rights under the terms and conditions of this | ||
186 | Public License. | ||
187 | |||
188 | b. Additional offer from the Licensor -- Adapted Material. | ||
189 | Every recipient of Adapted Material from You | ||
190 | automatically receives an offer from the Licensor to | ||
191 | exercise the Licensed Rights in the Adapted Material | ||
192 | under the conditions of the Adapter's License You apply. | ||
193 | |||
194 | c. No downstream restrictions. You may not offer or impose | ||
195 | any additional or different terms or conditions on, or | ||
196 | apply any Effective Technological Measures to, the | ||
197 | Licensed Material if doing so restricts exercise of the | ||
198 | Licensed Rights by any recipient of the Licensed | ||
199 | Material. | ||
200 | |||
201 | 6. No endorsement. Nothing in this Public License constitutes or | ||
202 | may be construed as permission to assert or imply that You | ||
203 | are, or that Your use of the Licensed Material is, connected | ||
204 | with, or sponsored, endorsed, or granted official status by, | ||
205 | the Licensor or others designated to receive attribution as | ||
206 | provided in Section 3(a)(1)(A)(i). | ||
207 | |||
208 | b. Other rights. | ||
209 | |||
210 | 1. Moral rights, such as the right of integrity, are not | ||
211 | licensed under this Public License, nor are publicity, | ||
212 | privacy, and/or other similar personality rights; however, to | ||
213 | the extent possible, the Licensor waives and/or agrees not to | ||
214 | assert any such rights held by the Licensor to the limited | ||
215 | extent necessary to allow You to exercise the Licensed | ||
216 | Rights, but not otherwise. | ||
217 | |||
218 | 2. Patent and trademark rights are not licensed under this | ||
219 | Public License. | ||
220 | |||
221 | 3. To the extent possible, the Licensor waives any right to | ||
222 | collect royalties from You for the exercise of the Licensed | ||
223 | Rights, whether directly or through a collecting society | ||
224 | under any voluntary or waivable statutory or compulsory | ||
225 | licensing scheme. In all other cases the Licensor expressly | ||
226 | reserves any right to collect such royalties. | ||
227 | |||
228 | |||
229 | Section 3 -- License Conditions. | ||
230 | |||
231 | Your exercise of the Licensed Rights is expressly made subject to the | ||
232 | following conditions. | ||
233 | |||
234 | a. Attribution. | ||
235 | |||
236 | 1. If You Share the Licensed Material (including in modified | ||
237 | form), You must: | ||
238 | |||
239 | a. retain the following if it is supplied by the Licensor | ||
240 | with the Licensed Material: | ||
241 | |||
242 | i. identification of the creator(s) of the Licensed | ||
243 | Material and any others designated to receive | ||
244 | attribution, in any reasonable manner requested by | ||
245 | the Licensor (including by pseudonym if | ||
246 | designated); | ||
247 | |||
248 | ii. a copyright notice; | ||
249 | |||
250 | iii. a notice that refers to this Public License; | ||
251 | |||
252 | iv. a notice that refers to the disclaimer of | ||
253 | warranties; | ||
254 | |||
255 | v. a URI or hyperlink to the Licensed Material to the | ||
256 | extent reasonably practicable; | ||
257 | |||
258 | b. indicate if You modified the Licensed Material and | ||
259 | retain an indication of any previous modifications; and | ||
260 | |||
261 | c. indicate the Licensed Material is licensed under this | ||
262 | Public License, and include the text of, or the URI or | ||
263 | hyperlink to, this Public License. | ||
264 | |||
265 | 2. You may satisfy the conditions in Section 3(a)(1) in any | ||
266 | reasonable manner based on the medium, means, and context in | ||
267 | which You Share the Licensed Material. For example, it may be | ||
268 | reasonable to satisfy the conditions by providing a URI or | ||
269 | hyperlink to a resource that includes the required | ||
270 | information. | ||
271 | |||
272 | 3. If requested by the Licensor, You must remove any of the | ||
273 | information required by Section 3(a)(1)(A) to the extent | ||
274 | reasonably practicable. | ||
275 | |||
276 | b. ShareAlike. | ||
277 | |||
278 | In addition to the conditions in Section 3(a), if You Share | ||
279 | Adapted Material You produce, the following conditions also apply. | ||
280 | |||
281 | 1. The Adapter's License You apply must be a Creative Commons | ||
282 | license with the same License Elements, this version or | ||
283 | later, or a BY-SA Compatible License. | ||
284 | |||
285 | 2. You must include the text of, or the URI or hyperlink to, the | ||
286 | Adapter's License You apply. You may satisfy this condition | ||
287 | in any reasonable manner based on the medium, means, and | ||
288 | context in which You Share Adapted Material. | ||
289 | |||
290 | 3. You may not offer or impose any additional or different terms | ||
291 | or conditions on, or apply any Effective Technological | ||
292 | Measures to, Adapted Material that restrict exercise of the | ||
293 | rights granted under the Adapter's License You apply. | ||
294 | |||
295 | |||
296 | Section 4 -- Sui Generis Database Rights. | ||
297 | |||
298 | Where the Licensed Rights include Sui Generis Database Rights that | ||
299 | apply to Your use of the Licensed Material: | ||
300 | |||
301 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right | ||
302 | to extract, reuse, reproduce, and Share all or a substantial | ||
303 | portion of the contents of the database; | ||
304 | |||
305 | b. if You include all or a substantial portion of the database | ||
306 | contents in a database in which You have Sui Generis Database | ||
307 | Rights, then the database in which You have Sui Generis Database | ||
308 | Rights (but not its individual contents) is Adapted Material, | ||
309 | |||
310 | including for purposes of Section 3(b); and | ||
311 | c. You must comply with the conditions in Section 3(a) if You Share | ||
312 | all or a substantial portion of the contents of the database. | ||
313 | |||
314 | For the avoidance of doubt, this Section 4 supplements and does not | ||
315 | replace Your obligations under this Public License where the Licensed | ||
316 | Rights include other Copyright and Similar Rights. | ||
317 | |||
318 | |||
319 | Section 5 -- Disclaimer of Warranties and Limitation of Liability. | ||
320 | |||
321 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE | ||
322 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS | ||
323 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF | ||
324 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, | ||
325 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, | ||
326 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR | ||
327 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, | ||
328 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT | ||
329 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT | ||
330 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. | ||
331 | |||
332 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE | ||
333 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, | ||
334 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, | ||
335 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, | ||
336 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR | ||
337 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN | ||
338 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR | ||
339 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR | ||
340 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. | ||
341 | |||
342 | c. The disclaimer of warranties and limitation of liability provided | ||
343 | above shall be interpreted in a manner that, to the extent | ||
344 | possible, most closely approximates an absolute disclaimer and | ||
345 | waiver of all liability. | ||
346 | |||
347 | |||
348 | Section 6 -- Term and Termination. | ||
349 | |||
350 | a. This Public License applies for the term of the Copyright and | ||
351 | Similar Rights licensed here. However, if You fail to comply with | ||
352 | this Public License, then Your rights under this Public License | ||
353 | terminate automatically. | ||
354 | |||
355 | b. Where Your right to use the Licensed Material has terminated under | ||
356 | Section 6(a), it reinstates: | ||
357 | |||
358 | 1. automatically as of the date the violation is cured, provided | ||
359 | it is cured within 30 days of Your discovery of the | ||
360 | violation; or | ||
361 | |||
362 | 2. upon express reinstatement by the Licensor. | ||
363 | |||
364 | For the avoidance of doubt, this Section 6(b) does not affect any | ||
365 | right the Licensor may have to seek remedies for Your violations | ||
366 | of this Public License. | ||
367 | |||
368 | c. For the avoidance of doubt, the Licensor may also offer the | ||
369 | Licensed Material under separate terms or conditions or stop | ||
370 | distributing the Licensed Material at any time; however, doing so | ||
371 | will not terminate this Public License. | ||
372 | |||
373 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public | ||
374 | License. | ||
375 | |||
376 | |||
377 | Section 7 -- Other Terms and Conditions. | ||
378 | |||
379 | a. The Licensor shall not be bound by any additional or different | ||
380 | terms or conditions communicated by You unless expressly agreed. | ||
381 | |||
382 | b. Any arrangements, understandings, or agreements regarding the | ||
383 | Licensed Material not stated herein are separate from and | ||
384 | independent of the terms and conditions of this Public License. | ||
385 | |||
386 | |||
387 | Section 8 -- Interpretation. | ||
388 | |||
389 | a. For the avoidance of doubt, this Public License does not, and | ||
390 | shall not be interpreted to, reduce, limit, restrict, or impose | ||
391 | conditions on any use of the Licensed Material that could lawfully | ||
392 | be made without permission under this Public License. | ||
393 | |||
394 | b. To the extent possible, if any provision of this Public License is | ||
395 | deemed unenforceable, it shall be automatically reformed to the | ||
396 | minimum extent necessary to make it enforceable. If the provision | ||
397 | cannot be reformed, it shall be severed from this Public License | ||
398 | without affecting the enforceability of the remaining terms and | ||
399 | conditions. | ||
400 | |||
401 | c. No term or condition of this Public License will be waived and no | ||
402 | failure to comply consented to unless expressly agreed to by the | ||
403 | Licensor. | ||
404 | |||
405 | d. Nothing in this Public License constitutes or may be interpreted | ||
406 | as a limitation upon, or waiver of, any privileges and immunities | ||
407 | that apply to the Licensor or You, including from the legal | ||
408 | processes of any jurisdiction or authority. | ||
409 | |||
410 | |||
411 | ======================================================================= | ||
412 | |||
413 | Creative Commons is not a party to its public licenses. | ||
414 | Notwithstanding, Creative Commons may elect to apply one of its public | ||
415 | licenses to material it publishes and in those instances will be | ||
416 | considered the "Licensor." Except for the limited purpose of indicating | ||
417 | that material is shared under a Creative Commons public license or as | ||
418 | otherwise permitted by the Creative Commons policies published at | ||
419 | creativecommons.org/policies, Creative Commons does not authorize the | ||
420 | use of the trademark "Creative Commons" or any other trademark or logo | ||
421 | of Creative Commons without its prior written consent including, | ||
422 | without limitation, in connection with any unauthorized modifications | ||
423 | to any of its public licenses or any other arrangements, | ||
424 | understandings, or agreements concerning use of licensed material. For | ||
425 | the avoidance of doubt, this paragraph does not form part of the public | ||
426 | licenses. | ||
427 | |||
428 | Creative Commons may be contacted at creativecommons.org. | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.eot b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.eot deleted file mode 100644 index d9c296e4..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.eot +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.svg b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.svg deleted file mode 100644 index def1e9b5..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.svg +++ /dev/null | |||
@@ -1,769 +0,0 @@ | |||
1 | <?xml version="1.0" standalone="no"?> | ||
2 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > | ||
3 | <svg xmlns="http://www.w3.org/2000/svg"> | ||
4 | <metadata>Generated by IcoMoon</metadata> | ||
5 | <defs> | ||
6 | <font id="Material-Design-Icons" horiz-adv-x="1024"> | ||
7 | <font-face units-per-em="1024" ascent="960" descent="-64" /> | ||
8 | <missing-glyph horiz-adv-x="1024" /> | ||
9 | <glyph unicode=" " d="" horiz-adv-x="512" /> | ||
10 | <glyph unicode="" d="M320.853 22.187c-139.52 65.707-239.36 201.387-254.72 361.813h-64c21.76-262.827 241.493-469.333 509.867-469.333l28.16 1.28-162.56 162.56-56.747-56.32zM358.827 300.374c-8.107 0-15.787 1.28-22.187 3.413-6.827 2.56-12.373 5.547-17.067 10.24-4.693 4.267-8.533 9.387-11.093 15.787-2.56 5.973-3.84 12.8-3.84 20.053h-55.467c0-15.36 2.987-29.013 8.96-40.533s14.080-21.333 23.893-29.44c10.24-7.68 21.76-13.653 34.987-17.493 12.8-4.267 26.453-6.4 40.96-6.4 15.787 0 30.72 2.133 43.947 6.4 13.653 4.267 25.6 10.667 35.413 18.773s17.92 18.347 23.467 30.72c5.547 12.373 8.533 26.027 8.533 41.387 0 8.107-0.853 16.213-2.987 23.893s-5.12 14.933-9.813 21.76c-4.267 6.827-10.24 12.8-17.067 18.347-7.253 5.547-15.787 9.813-26.027 13.227 8.533 3.84 15.787 8.533 22.187 14.080s11.52 11.52 15.787 17.92c4.267 6.4 7.253 12.8 9.387 19.627s2.987 13.653 2.987 20.48c0 15.36-2.56 29.013-7.68 40.96s-12.373 21.76-21.76 29.44c-8.533 8.107-20.053 14.080-32.853 18.347-13.227 3.84-27.733 5.973-43.52 5.973-15.36 0-29.44-2.133-42.667-6.827-12.8-4.693-24.32-11.093-33.707-19.2-8.96-8.107-16.213-17.493-21.76-28.587-5.12-11.093-7.68-23.040-7.68-36.267h55.467c0 7.253 1.28 13.653 3.84 19.2s5.973 10.667 10.667 14.507c4.693 3.84 9.813 7.253 16.213 9.387s12.8 3.413 20.48 3.413c17.067 0 29.867-4.267 37.973-13.227 8.107-8.533 12.373-20.907 12.373-36.693 0-7.68-1.28-14.507-3.413-20.907s-5.973-11.52-10.667-15.787c-4.693-4.267-10.667-7.68-17.493-10.24s-15.36-3.84-24.747-3.84h-32.853v-43.947h32.853c9.387 0 17.92-0.853 25.6-2.987s14.080-5.547 19.2-9.813c5.12-4.693 9.387-10.24 12.373-17.067s4.267-14.933 4.267-24.32c0-17.493-5.12-30.72-14.933-39.68-9.813-9.813-23.467-14.080-40.533-14.080zM723.627 552.96c-13.653 14.080-29.867 25.173-48.64 32.853-18.347 7.68-39.253 11.52-62.293 11.52h-100.693v-341.333h98.133c23.467 0 45.227 3.84 64.427 11.52s35.84 18.347 49.493 32.427c13.653 14.080 24.32 31.147 31.573 50.773 7.253 20.053 11.093 42.24 11.093 66.987v17.067c0 24.747-3.84 46.933-11.093 66.987-7.68 20.053-18.347 37.12-32 51.2zM706.987 418.134c0-17.92-2.133-33.707-5.973-48.213-4.267-14.080-10.24-26.453-18.347-36.267s-18.347-17.493-30.293-22.613c-12.373-5.12-26.453-7.68-42.24-7.68h-38.827v246.187h41.387c30.72 0 54.187-9.813 69.973-29.44 16.213-19.627 24.32-47.787 24.32-84.907v-17.067zM512 938.667l-28.16-1.28 162.56-162.56 56.747 56.747c139.52-66.133 239.36-201.387 254.293-361.813h64c-21.333 262.4-241.067 468.907-509.44 468.907z" /> | ||
11 | <glyph unicode="" d="M512 853.334c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333-85.333 38.4-85.333 85.333 38.4 85.333 85.333 85.333zM896 554.667h-256v-554.667h-85.333v256h-85.333v-256h-85.333v554.667h-256v85.333h768v-85.333z" /> | ||
12 | <glyph unicode="" d="M896 170.667v-42.667c0-46.933-38.4-85.333-85.333-85.333h-597.333c-47.36 0-85.333 38.4-85.333 85.333v597.333c0 46.933 37.973 85.333 85.333 85.333h597.333c46.933 0 85.333-38.4 85.333-85.333v-42.667h-384c-47.36 0-85.333-38.4-85.333-85.333v-341.333c0-46.933 37.973-85.333 85.333-85.333h384zM512 256h426.667v341.333h-426.667v-341.333zM682.667 362.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> | ||
13 | <glyph unicode="" d="M170.667 512v-298.667h128v298.667h-128zM426.667 512v-298.667h128v298.667h-128zM85.333-0h810.667v128h-810.667v-128zM682.667 512v-298.667h128v298.667h-128zM490.667 896l-405.333-213.333v-85.333h810.667v85.333l-405.333 213.333z" /> | ||
14 | <glyph unicode="" d="M128 725.334v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333h-597.333c-47.36 0-85.333-38.4-85.333-85.333zM640 554.667c0-70.827-57.173-128-128-128s-128 57.173-128 128 57.173 128 128 128 128-57.173 128-128zM256 213.334c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-42.667h-512v42.667z" /> | ||
15 | <glyph unicode="" d="M576 363.094c0-35.346-28.654-64-64-64s-64 28.654-64 64c0 35.346 28.654 64 64 64s64-28.654 64-64zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 746.667c52.907 0 96-43.093 96-96s-43.093-96-96-96-96 43.093-96 96 43.093 96 96 96zM725.333 296.107v-106.667c-19.2-17.493-40.96-32.853-64-44.8v29.013c0 14.507-7.253 27.733-19.627 39.253-27.733 26.453-80.64 43.52-129.707 43.52-40.96 0-83.627-11.947-113.067-31.147l-7.253-5.12-8.96-7.253c33.28-20.053 69.547-30.72 108.373-34.987l56.747-6.4c15.787-1.707 28.16-15.36 28.16-32 0-12.373-6.827-22.613-17.067-28.16-11.947-6.4-27.307-3.84-40.533-3.84-14.933 0-29.44 0.427-43.947 2.133-21.333 2.56-42.24 7.253-62.293 14.080-20.907 6.827-41.387 16.213-60.587 27.307-9.387 5.547-18.773 11.52-27.733 18.347l-13.227 10.24c-1.707 0.853-11.947 7.68-11.947 9.813v182.613c0 67.413 112.213 118.613 213.333 118.613s213.333-51.2 213.333-118.613v-75.947z" /> | ||
16 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 725.334c70.827 0 128-57.173 128-128s-57.173-128-128-128-128 57.173-128 128 57.173 128 128 128zM512 119.467c-106.667 0-200.96 54.613-256 137.387 1.28 84.907 170.667 131.413 256 131.413 84.907 0 254.72-46.507 256-131.413-55.040-82.773-149.333-137.387-256-137.387z" /> | ||
17 | <glyph unicode="" d="M469.333 554.667h85.333v128h128v85.333h-128v128h-85.333v-128h-128v-85.333h128v-128zM298.667 170.667c-46.933 0-84.907-38.4-84.907-85.333s37.973-85.333 84.907-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM725.333 170.667c-46.933 0-84.907-38.4-84.907-85.333s37.973-85.333 84.907-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM305.92 309.334l1.28 5.12 38.4 69.547h317.867c32 0 60.16 17.493 74.667 43.947l164.693 299.093-74.24 40.96h-0.427l-46.933-85.333-117.76-213.333h-299.52l-5.547 11.52-95.573 201.813-40.533 85.333-40.107 85.333h-139.52v-85.333h85.333l153.6-323.84-57.6-104.533c-6.827-11.947-10.667-26.027-10.667-40.96 0-46.933 38.4-85.333 85.333-85.333h512v85.333h-494.080c-5.547 0-10.667 4.693-10.667 10.667z" /> | ||
18 | <glyph unicode="" d="M336.213 794.027l-54.613 65.28-196.267-164.267 55.040-65.28 195.84 164.267zM938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM512 768c-212.053 0-384-171.947-384-384s171.52-384 384-384c212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667zM554.667 554.667h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333h-128v128z" /> | ||
19 | <glyph unicode="" d="M512 682.667c165.12 0 298.667-133.547 298.667-298.667 0-35.84-6.827-70.4-18.347-102.4l64.853-64.853c24.747 50.773 38.827 107.093 38.827 167.253 0 212.053-171.947 384-384 384-60.16 0-116.48-14.080-167.253-38.827l64.853-64.853c32 11.52 66.56 18.347 102.4 18.347zM938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM124.587 840.96l-54.187-54.613 56.747-56.747-47.36-39.68 60.587-60.587 47.36 40.107 34.133-34.133c-58.453-67.413-93.867-155.307-93.867-251.307 0-212.053 171.52-384 384-384 96 0 183.893 35.413 251.307 93.867l93.867-93.867 54.187 54.187-786.773 786.773zM702.72 154.027c-51.627-42.667-118.187-68.693-190.72-68.693-165.12 0-298.667 133.547-298.667 298.667 0 72.533 26.027 139.093 68.693 190.72l420.693-420.693zM342.187 798.72l-60.587 60.587-36.693-30.293 60.587-60.587 36.693 30.293z" /> | ||
20 | <glyph unicode="" d="M938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM336.213 794.027l-54.613 65.28-196.267-164.267 55.040-65.28 195.84 164.267zM512 768c-212.053 0-384-171.947-384-384s171.52-384 384-384c212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667zM449.707 318.72l-90.88 90.88-45.227-45.227 135.68-135.68 256 256-45.227 45.227-210.347-211.2z" /> | ||
21 | <glyph unicode="" d="M938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM336.213 794.027l-54.613 65.28-196.267-164.267 55.040-65.28 195.84 164.267zM533.333 597.334h-64v-256l202.667-121.6 32 52.48-170.667 101.12v224zM512 768c-212.053 0-384-171.947-384-384s171.52-384 384-384c212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> | ||
22 | <glyph unicode="" d="M256 170.667c0-23.467 19.2-42.667 42.667-42.667h42.667v-149.333c0-35.413 28.587-64 64-64s64 28.587 64 64v149.333h85.333v-149.333c0-35.413 28.587-64 64-64s64 28.587 64 64v149.333h42.667c23.467 0 42.667 19.2 42.667 42.667v426.667h-512v-426.667zM149.333 597.334c-35.413 0-64-28.587-64-64v-298.667c0-35.413 28.587-64 64-64s64 28.587 64 64v298.667c0 35.413-28.587 64-64 64zM874.667 597.334c-35.413 0-64-28.587-64-64v-298.667c0-35.413 28.587-64 64-64s64 28.587 64 64v298.667c0 35.413-28.587 64-64 64zM662.613 846.507l55.467 55.467c8.533 8.533 8.533 21.76 0 30.293s-21.76 8.533-30.293 0l-63.147-63.147c-33.707 17.067-72.107 26.88-112.64 26.88-40.96 0-79.36-9.813-113.493-26.88l-63.573 63.147c-8.533 8.533-21.76 8.533-30.293 0s-8.533-21.76 0-30.293l55.893-55.893c-63.147-46.507-104.533-121.173-104.533-206.080h512c0 84.907-41.387 160-105.387 206.507zM426.667 725.334h-42.667v42.667h42.667v-42.667zM640 725.334h-42.667v42.667h42.667v-42.667z" /> | ||
23 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM554.667 469.334h-85.333v256h85.333v-256zM554.667 298.667h-85.333v85.333h85.333v-85.333z" /> | ||
24 | <glyph unicode="" d="M810.667 426.667h-85.333v-128h-128v-85.333h213.333v213.333zM298.667 554.667h128v85.333h-213.333v-213.333h85.333v128zM896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 127.574h-768v598.187h768v-598.187z" /> | ||
25 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM384 213.334h-85.333v298.667h85.333v-298.667zM554.667 213.334h-85.333v426.667h85.333v-426.667zM725.333 213.334h-85.333v170.667h85.333v-170.667z" /> | ||
26 | <glyph unicode="" d="M810.667 810.667h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 810.667c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM512 640c70.827 0 128-57.173 128-128s-57.173-128-128-128-128 57.173-128 128 57.173 128 128 128zM768 128h-512v59.733c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-59.733z" /> | ||
27 | <glyph unicode="" d="M810.667 810.667h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM554.667 170.667h-85.333v85.333h85.333v-85.333zM554.667 341.334h-85.333v256h85.333v-256zM512 725.334c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667z" /> | ||
28 | <glyph unicode="" d="M810.667 810.667h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 810.667c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM682.667 298.667h-170.667v-128l-213.333 213.333 213.333 213.333v-128h170.667v-170.667z" /> | ||
29 | <glyph unicode="" d="M810.667 810.667h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 810.667c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM512 170.667l-213.333 213.333h128v170.667h170.667v-170.667h128l-213.333-213.333z" /> | ||
30 | <glyph unicode="" d="M810.667 810.667h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 810.667c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM426.667 213.334l-170.667 170.667 60.16 60.16 110.507-110.080 281.173 281.173 60.16-60.587-341.333-341.333z" /> | ||
31 | <glyph unicode="" d="M810.667 810.667h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 810.667c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM597.333 213.334h-298.667v85.333h298.667v-85.333zM725.333 384h-426.667v85.333h426.667v-85.333zM725.333 554.667h-426.667v85.333h426.667v-85.333z" /> | ||
32 | <glyph unicode="" d="M512 682.667v-128l170.667 170.667-170.667 170.667v-128c-188.587 0-341.333-152.747-341.333-341.333 0-66.987 19.627-129.28 52.907-181.76l62.293 62.293c-19.2 35.413-29.867 76.373-29.867 119.467 0 141.227 114.773 256 256 256zM800.427 608.427l-62.293-62.293c18.773-35.84 29.867-76.373 29.867-119.467 0-141.227-114.773-256-256-256v128l-170.667-170.667 170.667-170.667v128c188.587 0 341.333 152.747 341.333 341.333 0 66.987-19.627 129.28-52.907 181.76z" /> | ||
33 | <glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627zM597.333 384v-170.667h-170.667v170.667h-128l213.333 213.333 213.333-213.333h-128z" /> | ||
34 | <glyph unicode="" d="M768 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM256 768h213.333v-341.333l-106.667 64-106.667-64v341.333z" /> | ||
35 | <glyph unicode="" d="M725.333 810.667h-426.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667 298.667 128 298.667-128v682.667c0 46.933-38.4 85.333-85.333 85.333zM725.333 170.667l-213.333 93.013-213.333-93.013v554.667h426.667v-554.667z" /> | ||
36 | <glyph unicode="" d="M725.333 810.667h-426.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667 298.667 128 298.667-128v682.667c0 46.933-38.4 85.333-85.333 85.333z" /> | ||
37 | <glyph unicode="" d="M853.333 597.334h-119.893c-19.2 33.28-45.653 61.867-77.653 83.627l69.547 69.547-60.16 60.16-92.587-92.587c-19.627 4.693-39.68 7.253-60.587 7.253s-40.96-2.56-60.16-7.253l-93.013 92.587-60.16-60.16 69.12-69.547c-31.573-21.76-58.027-50.347-77.227-83.627h-119.893v-85.333h89.173c-2.133-14.080-3.84-28.16-3.84-42.667v-42.667h-85.333v-85.333h85.333v-42.667c0-14.507 1.707-28.587 3.84-42.667h-89.173v-85.333h119.893c44.373-76.373 126.72-128 221.44-128s177.067 51.627 221.44 128h119.893v85.333h-89.173c2.133 14.080 3.84 28.16 3.84 42.667v42.667h85.333v85.333h-85.333v42.667c0 14.507-1.707 28.587-3.84 42.667h89.173v85.333zM597.333 256h-170.667v85.333h170.667v-85.333zM597.333 426.667h-170.667v85.333h170.667v-85.333z" /> | ||
38 | <glyph unicode="" d="M810.667 597.334l-170.667-170.667h128c0-141.227-114.773-256-256-256-43.093 0-84.053 10.667-119.467 29.867l-62.293-62.293c52.48-33.28 114.773-52.907 181.76-52.907 188.587 0 341.333 152.747 341.333 341.333h128l-170.667 170.667zM256 426.667c0 141.227 114.773 256 256 256 43.093 0 84.053-10.667 119.467-29.867l62.293 62.293c-52.48 33.28-114.773 52.907-181.76 52.907-188.587 0-341.333-152.747-341.333-341.333h-128l170.667-170.667 170.667 170.667h-128z" /> | ||
39 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM426.667 213.334l-213.333 213.333 60.16 60.16 153.173-152.747 323.84 323.84 60.16-60.587-384-384z" /> | ||
40 | <glyph unicode="" d="M768 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM256 768h213.333v-341.333l-106.667 64-106.667-64v341.333z" /> | ||
41 | <glyph unicode="" d="M853.333 768h-682.667c-47.36 0-84.907-37.973-84.907-85.333l-0.427-512c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v512c0 47.36-37.973 85.333-85.333 85.333zM853.333 170.667h-682.667v256h682.667v-256zM853.333 597.334h-682.667v85.333h682.667v-85.333z" /> | ||
42 | <glyph unicode="" d="M128 384h341.333v426.667h-341.333v-426.667zM128 42.667h341.333v256h-341.333v-256zM554.667 42.667h341.333v426.667h-341.333v-426.667zM554.667 810.667v-256h341.333v256h-341.333z" /> | ||
43 | <glyph unicode="" d="M256 128c0-46.933 38.4-85.333 85.333-85.333h341.333c46.933 0 85.333 38.4 85.333 85.333v512h-512v-512zM810.667 768h-149.333l-42.667 42.667h-213.333l-42.667-42.667h-149.333v-85.333h597.333v85.333z" /> | ||
44 | <glyph unicode="" d="M597.333 853.334h-341.333c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667c0-46.933 37.973-85.333 84.907-85.333h512.427c46.933 0 85.333 38.4 85.333 85.333v512l-256 256zM682.667 170.667h-341.333v85.333h341.333v-85.333zM682.667 341.334h-341.333v85.333h341.333v-85.333zM554.667 554.667v234.667l234.667-234.667h-234.667z" /> | ||
45 | <glyph unicode="" d="M853.333 384h-682.667c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h682.667c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667zM298.667 128c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333zM853.333 810.667h-682.667c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h682.667c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667zM298.667 554.667c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> | ||
46 | <glyph unicode="" d="M768 640l-60.16 60.16-270.507-270.507 60.16-60.16 270.507 270.507zM948.907 700.16l-451.413-451.413-178.347 177.92-60.16-60.16 238.507-238.507 512 512-60.587 60.16zM17.493 366.507l238.507-238.507 60.16 60.16-238.080 238.507-60.587-60.16z" /> | ||
47 | <glyph unicode="" d="M384 248.747l-177.92 177.92-60.587-60.16 238.507-238.507 512 512-60.16 60.16z" /> | ||
48 | <glyph unicode="" d="M725.333 426.667h-213.333v-213.333h213.333v213.333zM682.667 896v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333h-42.667v85.333h-85.333zM810.667 128h-597.333v469.333h597.333v-469.333z" /> | ||
49 | <glyph unicode="" d="M430.507 273.494l60.16-60.16 213.333 213.333-213.333 213.333-60.16-60.16 110.080-110.507h-412.587v-85.333h412.587l-110.080-110.507zM810.667 810.667h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-170.667h85.333v170.667h597.333v-597.333h-597.333v170.667h-85.333v-170.667c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333z" /> | ||
50 | <glyph unicode="" d="M512 473.6c-26.027 0-46.933-20.907-46.933-46.933s20.907-46.933 46.933-46.933c26.027 0 46.933 20.907 46.933 46.933s-20.907 46.933-46.933 46.933zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM605.44 333.227l-349.44-162.56 162.56 349.44 349.44 162.56-162.56-349.44z" /> | ||
51 | <glyph unicode="" d="M874.667 469.334h-64v170.667c0 46.933-38.4 85.333-85.333 85.333h-170.667v64c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-64h-170.667c-46.933 0-84.907-38.4-84.907-85.333v-162.133h63.573c63.573 0 115.2-51.627 115.2-115.2s-51.627-115.2-115.2-115.2h-64v-162.133c0-46.933 38.4-85.333 85.333-85.333h162.133v64c0 63.573 51.627 115.2 115.2 115.2s115.2-51.627 115.2-115.2v-64h162.133c46.933 0 85.333 38.4 85.333 85.333v170.667h64c58.88 0 106.667 47.787 106.667 106.667s-47.787 106.667-106.667 106.667z" /> | ||
52 | <glyph unicode="" d="M626.773 209.067c-31.573-24.747-72.533-38.4-114.773-38.4s-83.2 13.653-114.773 38.4c-9.387 7.253-22.613 5.547-29.867-3.84s-5.547-22.613 3.84-29.867c38.827-30.72 89.173-47.36 140.8-47.36s101.973 16.64 141.227 46.933c9.387 7.253 11.093 20.48 3.84 29.867-7.253 9.813-20.907 11.093-30.293 4.267zM405.333 405.334c0-23.564-19.103-42.667-42.667-42.667s-42.667 19.103-42.667 42.667c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667zM512 938.667c-282.88 0-512-229.12-512-512s229.12-512 512-512 512 229.12 512 512-229.12 512-512 512zM851.627 306.347c-46.507-159.573-182.187-275.627-343.040-275.627-161.28 0-296.96 116.053-343.040 276.053-50.773 4.693-90.88 50.347-90.88 107.52 0 54.187 36.267 98.56 84.053 106.667 89.173 62.293 162.133 148.907 174.507 215.467v0.427c57.6-112.213 268.8-221.44 504.747-215.893l12.8 1.28c54.613 0 98.56-48.64 98.56-108.373 0-58.88-43.52-107.093-97.707-107.52zM704 405.334c0-23.564-19.103-42.667-42.667-42.667s-42.667 19.103-42.667 42.667c0 23.564 19.103 42.667 42.667 42.667s42.667-19.103 42.667-42.667z" /> | ||
53 | <glyph unicode="" d="M704 810.667c-74.24 0-145.493-34.56-192-89.173-46.507 54.613-117.76 89.173-192 89.173-131.413 0-234.667-103.253-234.667-234.667 0-161.28 145.067-292.693 364.8-492.373l61.867-55.893 61.867 56.32c219.733 199.253 364.8 330.667 364.8 491.947 0 131.413-103.253 234.667-234.667 234.667zM516.267 147.2l-4.267-4.267-4.267 4.267c-203.093 183.893-337.067 305.493-337.067 428.8 0 85.333 64 149.333 149.333 149.333 65.707 0 129.707-42.24 152.32-100.693h79.787c22.187 58.453 86.187 100.693 151.893 100.693 85.333 0 149.333-64 149.333-149.333 0-123.307-133.973-244.907-337.067-428.8z" /> | ||
54 | <glyph unicode="" d="M512 27.734l-61.867 56.32c-219.733 199.253-364.8 330.667-364.8 491.947 0 131.413 103.253 234.667 234.667 234.667 74.24 0 145.493-34.56 192-89.173 46.507 54.613 117.76 89.173 192 89.173 131.413 0 234.667-103.253 234.667-234.667 0-161.28-145.067-292.693-364.8-492.373l-61.867-55.893z" /> | ||
55 | <glyph unicode="" d="M853.333 102.827v494.507l-256 256h-341.333c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667c0-46.933 37.973-85.333 84.907-85.333h512.427c19.2 0 36.267 6.4 50.773 17.067l-189.013 189.013c-34.133-22.187-74.24-35.413-117.76-35.413-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333c0-43.52-13.227-83.627-35.413-117.333l163.413-163.84zM384 384c0-70.827 57.173-128 128-128s128 57.173 128 128-57.173 128-128 128-128-57.173-128-128z" /> | ||
56 | <glyph unicode="" d="M469.333 682.667c58.88 0 112.213-23.893 151.040-62.293l-108.373-108.373h256v256l-87.467-87.467c-54.187 54.187-128.853 87.467-211.2 87.467-150.613 0-274.347-111.36-295.253-256h86.187c19.627 97.28 105.813 170.667 209.067 170.667zM709.973 292.694c28.16 38.4 47.787 84.053 54.613 133.973h-86.187c-19.627-97.28-105.813-170.667-209.067-170.667-58.88 0-112.213 23.893-151.040 62.293l108.373 108.373h-256v-256l87.467 87.467c54.187-54.187 128.853-87.467 211.2-87.467 66.133 0 127.147 21.76 176.64 58.027l207.36-206.933 63.573 63.573-206.933 207.36z" /> | ||
57 | <glyph unicode="" d="M384 640h-85.333v-85.333h85.333v85.333zM384 469.334h-85.333v-85.333h85.333v85.333zM384 810.667c-47.36 0-85.333-38.4-85.333-85.333h85.333v85.333zM554.667 298.667h-85.333v-85.333h85.333v85.333zM810.667 810.667v-85.333h85.333c0 46.933-38.4 85.333-85.333 85.333zM554.667 810.667h-85.333v-85.333h85.333v85.333zM384 213.334v85.333h-85.333c0-46.933 37.973-85.333 85.333-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM810.667 213.334c46.933 0 85.333 38.4 85.333 85.333h-85.333v-85.333zM213.333 640h-85.333v-512c0-46.933 37.973-85.333 85.333-85.333h512v85.333h-512v512zM640 725.334h85.333v85.333h-85.333v-85.333zM640 213.334h85.333v85.333h-85.333v-85.333z" /> | ||
58 | <glyph unicode="" d="M128 384h85.333v85.333h-85.333v-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM213.333 42.667v85.333h-85.333c0-46.933 37.973-85.333 85.333-85.333zM128 554.667h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM810.667 810.667h-426.667c-47.36 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 37.973-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 298.667h-426.667v426.667h426.667v-426.667zM469.333 42.667h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333z" /> | ||
59 | <glyph unicode="" d="M810.667 554.667h-170.667v256h-256v-256h-170.667l298.667-298.667 298.667 298.667zM213.333 170.667v-85.333h597.333v85.333h-597.333z" /> | ||
60 | <glyph unicode="" d="M512 201.814l263.68-159.147-69.973 299.947 232.96 201.813-306.773 26.027-119.893 282.88-119.893-282.88-306.773-26.027 232.96-201.813-69.973-299.947z" /> | ||
61 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM341.333 192c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667zM405.333 597.334c0 58.88 47.787 106.667 106.667 106.667s106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667-106.667 47.787-106.667 106.667zM682.667 192c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667z" /> | ||
62 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM554.667 128h-85.333v85.333h85.333v-85.333zM642.987 458.667l-38.4-39.253c-30.72-31.147-49.92-56.747-49.92-120.747h-85.333v21.333c0 46.933 19.2 89.6 49.92 120.747l52.907 53.76c15.787 15.36 25.173 36.693 25.173 60.16 0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333h-85.333c0 94.293 76.373 170.667 170.667 170.667s170.667-76.373 170.667-170.667c0-37.547-15.36-71.68-39.68-96z" /> | ||
63 | <glyph unicode="" d="M622.507 597.334l-110.507-110.507-110.507 110.507-60.16-60.16 110.507-110.507-110.507-110.507 60.16-60.16 110.507 110.507 110.507-110.507 60.16 60.16-110.507 110.507 110.507 110.507-60.16 60.16zM512 853.334c-235.947 0-426.667-190.72-426.667-426.667s190.72-426.667 426.667-426.667 426.667 190.72 426.667 426.667-190.72 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> | ||
64 | <glyph unicode="" d="M554.667 810.667c-212.053 0-384-171.947-384-384h-128l165.973-165.973 2.987-5.973 172.373 171.947h-128c0 165.12 133.547 298.667 298.667 298.667s298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667c-82.347 0-157.013 33.707-210.773 87.893l-60.587-60.587c69.547-69.547 165.12-112.64 271.36-112.64 212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 597.334v-213.333l182.613-108.373 30.72 51.627-149.333 88.747v181.333h-64z" /> | ||
65 | <glyph unicode="" d="M426.667 85.334v256h170.667v-256h213.333v341.333h128l-426.667 384-426.667-384h128v-341.333z" /> | ||
66 | <glyph unicode="" d="M768 597.334h-42.667v85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333v-85.333h-42.667c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM512 213.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333zM644.267 597.334h-264.533v85.333c0 72.96 59.307 132.267 132.267 132.267s132.267-59.307 132.267-132.267v-85.333z" /> | ||
67 | <glyph unicode="" d="M469.333 213.334h85.333v256h-85.333v-256zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333zM469.333 554.667h85.333v85.333h-85.333v-85.333z" /> | ||
68 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM554.667 213.334h-85.333v256h85.333v-256zM554.667 554.667h-85.333v85.333h85.333v-85.333z" /> | ||
69 | <glyph unicode="" d="M896 810.24h-768c-46.933 0-85.333-38.4-85.333-85.333v-170.24h85.333v171.093h768v-598.613h-768v171.52h-85.333v-171.093c0-46.933 38.4-84.48 85.333-84.48h768c46.933 0 85.333 37.547 85.333 84.48v597.333c0 47.36-38.4 85.333-85.333 85.333zM469.333 256l170.667 170.667-170.667 170.667v-128h-426.667v-85.333h426.667v-128z" /> | ||
70 | <glyph unicode="" d="M753.493 600.32l-241.493 241.493-241.493-241.493c-133.12-133.12-133.12-349.44 0-482.56 66.56-66.56 154.027-99.84 241.493-99.84s174.933 33.28 241.493 99.84c133.12 133.12 133.12 349.44 0 482.56zM512 102.827c-68.267 0-132.693 26.453-180.907 75.093-48.64 48.64-75.093 112.64-75.093 180.907s26.453 132.693 75.093 180.907l180.907 181.333v-618.24z" /> | ||
71 | <glyph unicode="" d="M752.213 689.494c-15.36 21.76-40.96 35.84-69.547 35.84l-469.333-0.427c-46.933 0-85.333-37.973-85.333-84.907v-426.667c0-46.933 38.4-84.907 85.333-84.907l469.333-0.427c28.587 0 54.187 14.080 69.547 35.84l186.453 262.827-186.453 262.827zM682.667 213.334h-469.333v426.667h469.333l151.467-213.333-151.467-213.333z" /> | ||
72 | <glyph unicode="" d="M752.213 689.494c-15.36 21.76-40.96 35.84-69.547 35.84l-469.333-0.427c-46.933 0-85.333-37.973-85.333-84.907v-426.667c0-46.933 38.4-84.907 85.333-84.907l469.333-0.427c28.587 0 54.187 14.080 69.547 35.84l186.453 262.827-186.453 262.827z" /> | ||
73 | <glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM807.253 597.334h-125.867c-13.653 53.333-33.28 104.533-58.88 151.893 78.507-26.88 143.787-81.493 184.747-151.893zM512 766.294c35.413-51.2 63.147-107.947 81.493-168.96h-162.987c18.347 61.013 46.080 117.76 81.493 168.96zM181.76 341.334c-6.827 27.307-11.093 55.893-11.093 85.333s4.267 58.027 11.093 85.333h144.213c-3.413-28.16-5.973-56.32-5.973-85.333s2.56-57.173 5.973-85.333h-144.213zM216.747 256h125.867c13.653-53.333 33.28-104.533 58.88-151.893-78.507 26.88-143.787 81.067-184.747 151.893zM342.613 597.334h-125.867c40.96 70.827 106.24 125.013 184.747 151.893-25.6-47.36-45.227-98.56-58.88-151.893zM512 87.040c-35.413 51.2-63.147 107.947-81.493 168.96h162.987c-18.347-61.013-46.080-117.76-81.493-168.96zM611.84 341.334h-199.68c-3.84 28.16-6.827 56.32-6.827 85.333s2.987 57.6 6.827 85.333h199.68c3.84-27.733 6.827-56.32 6.827-85.333s-2.987-57.173-6.827-85.333zM622.507 104.107c25.6 47.36 45.227 98.56 58.88 151.893h125.867c-40.96-70.4-106.24-125.013-184.747-151.893zM698.027 341.334c3.413 28.16 5.973 56.32 5.973 85.333s-2.56 57.173-5.973 85.333h144.213c6.827-27.307 11.093-55.893 11.093-85.333s-4.267-58.027-11.093-85.333h-144.213z" /> | ||
74 | <glyph unicode="" d="M810.667 128h-597.333v597.333h298.667v85.333h-298.667c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v298.667h-85.333v-298.667zM597.333 810.667v-85.333h153.173l-419.413-419.413 60.16-60.16 419.413 419.413v-153.173h85.333v298.667h-298.667z" /> | ||
75 | <glyph unicode="" d="M128 384h85.333v85.333h-85.333v-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM128 554.667h85.333v85.333h-85.333v-85.333zM298.667 384h597.333v85.333h-597.333v-85.333zM298.667 213.334h597.333v85.333h-597.333v-85.333zM298.667 640v-85.333h597.333v85.333h-597.333z" /> | ||
76 | <glyph unicode="" d="M512 213.334c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333zM768 597.334h-42.667v85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333h81.067c0 72.96 59.307 132.267 132.267 132.267s132.267-59.307 132.267-132.267v-85.333h-388.267c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM768 85.334h-512v426.667h512v-426.667z" /> | ||
77 | <glyph unicode="" d="M768 597.334h-42.667v85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333v-85.333h-42.667c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM512 814.934c72.96 0 132.267-59.307 132.267-132.267v-85.333h-260.267v85.333h-4.267c0 72.96 59.307 132.267 132.267 132.267zM768 85.334h-512v426.667h512v-426.667zM512 213.334c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333z" /> | ||
78 | <glyph unicode="" d="M768 597.334h-42.667v85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333v-85.333h-42.667c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM512 213.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333zM644.267 597.334h-264.533v85.333c0 72.96 59.307 132.267 132.267 132.267s132.267-59.307 132.267-132.267v-85.333z" /> | ||
79 | <glyph unicode="" d="M913.493 444.587l-384 384c-15.36 15.36-36.693 24.747-60.16 24.747h-298.667c-46.933 0-85.333-38.4-85.333-85.333v-298.667c0-23.467 9.387-44.8 25.173-60.587l384-384c15.36-15.36 36.693-24.747 60.16-24.747s44.8 9.387 60.16 25.173l298.667 298.667c15.787 15.36 25.173 36.693 25.173 60.16s-9.813 45.227-25.173 60.587zM234.667 640c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM736.853 287.147l-182.187-182.187-182.187 182.187c-19.2 19.627-31.147 46.080-31.147 75.52 0 58.88 47.787 106.667 106.667 106.667 29.44 0 56.32-11.947 75.52-31.573l31.147-30.72 31.147 31.147c19.2 19.2 46.080 31.147 75.52 31.147 58.88 0 106.667-47.787 106.667-106.667 0-29.44-11.947-56.32-31.147-75.52z" /> | ||
80 | <glyph unicode="" d="M853.333 682.667h-426.667v-256h-85.333v341.333h256v170.667h-341.333v-256h-85.333c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333z" /> | ||
81 | <glyph unicode="" d="M597.333 853.334h-341.333c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667c0-46.933 37.973-85.333 84.907-85.333h512.427c46.933 0 85.333 38.4 85.333 85.333v512l-256 256zM682.667 256h-128v-128h-85.333v128h-128v85.333h128v128h85.333v-128h128v-85.333zM554.667 554.667v234.667l234.667-234.667h-234.667z" /> | ||
82 | <glyph unicode="" d="M810.667 768h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-512c0-46.933 37.973-85.333 85.333-85.333h170.667v85.333h-170.667v426.667h597.333v-426.667h-170.667v-85.333h170.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-37.973 85.333-85.333 85.333zM512 512l-170.667-170.667h128v-256h85.333v256h128l-170.667 170.667z" /> | ||
83 | <glyph unicode="" d="M810.667 128h-597.333v597.333h298.667v85.333h-298.667c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v298.667h-85.333v-298.667zM597.333 810.667v-85.333h153.173l-419.413-419.413 60.16-60.16 419.413 419.413v-153.173h85.333v298.667h-298.667z" /> | ||
84 | <glyph unicode="" d="M426.667 554.667h170.667v128h128l-213.333 213.333-213.333-213.333h128v-128zM384 512h-128v128l-213.333-213.333 213.333-213.333v128h128v170.667zM981.333 426.667l-213.333 213.333v-128h-128v-170.667h128v-128l213.333 213.333zM597.333 298.667h-170.667v-128h-128l213.333-213.333 213.333 213.333h-128v128z" /> | ||
85 | <glyph unicode="" d="M469.333 597.334c-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128-57.173 128-128 128zM810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM750.507 128l-163.413 163.413c-34.133-22.187-74.24-35.413-117.76-35.413-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333c0-43.52-13.227-83.627-35.413-117.333l163.413-163.84-60.16-60.16z" /> | ||
86 | <glyph unicode="" d="M853.333 768h-682.667c-47.36 0-84.907-37.973-84.907-85.333l-0.427-512c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v512c0 47.36-37.973 85.333-85.333 85.333zM853.333 170.667h-682.667v256h682.667v-256zM853.333 597.334h-682.667v85.333h682.667v-85.333z" /> | ||
87 | <glyph unicode="" d="M853.333 725.334h-135.253l-78.080 85.333h-256l-78.080-85.333h-135.253c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h298.667v89.173c-120.747 20.48-213.333 125.44-213.333 252.16h85.333c0-94.293 76.373-170.667 170.667-170.667s170.667 76.373 170.667 170.667h85.333c0-126.72-92.587-231.68-213.333-252.16v-89.173h298.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM597.333 384c0-46.933-38.4-85.333-85.333-85.333s-85.333 38.4-85.333 85.333v170.667c0 46.933 38.4 85.333 85.333 85.333s85.333-38.4 85.333-85.333v-170.667z" /> | ||
88 | <glyph unicode="" d="M810.667 810.667h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 682.667c70.827 0 128-57.173 128-128s-57.173-128-128-128-128 57.173-128 128 57.173 128 128 128zM768 170.667h-512v42.667c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-42.667z" /> | ||
89 | <glyph unicode="" d="M810.24 448c14.507 0 28.587-1.28 42.667-2.987l0.427 493.653-853.333-853.333h493.227c-1.707 14.080-2.987 28.16-2.987 42.667 0 176.64 143.36 320 320 320zM968.533 107.094c0.853 6.827 1.707 13.653 1.707 20.907s-0.427 14.080-1.707 20.907l45.227 35.413c3.84 3.413 5.12 8.96 2.56 13.653l-42.667 73.813c-2.56 4.693-8.107 6.4-13.227 4.693l-52.907-21.333c-11.093 8.533-23.040 15.787-36.267 20.907l-8.107 56.32c-0.427 5.12-5.12 8.96-10.24 8.96h-85.333c-5.12 0-9.813-3.84-10.667-8.96l-8.107-56.32c-12.8-5.547-25.173-12.373-36.267-20.907l-52.907 21.333c-4.693 1.707-10.24 0-13.227-4.693l-42.667-73.813c-2.56-4.693-1.707-10.24 2.56-13.653l45.227-35.413c-0.853-6.827-1.28-13.653-1.28-20.907s0.427-14.080 1.28-20.907l-45.227-35.413c-3.84-3.413-5.12-8.96-2.56-13.653l42.667-73.813c2.56-4.693 8.107-6.4 13.227-4.693l52.907 21.333c11.093-8.533 23.040-15.787 36.267-20.907l8.107-56.32c0.853-5.12 5.12-8.96 10.667-8.96h85.333c5.12 0 9.813 3.84 10.667 8.96l8.107 56.32c12.8 5.547 25.173 12.373 35.84 20.907l53.333-21.333c4.693-1.707 10.24 0 13.227 4.693l42.667 73.813c2.56 4.693 1.28 10.24-2.56 13.653l-45.653 35.413zM810.24 64c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> | ||
90 | <glyph unicode="" d="M554.667 640h-85.333v-85.333h85.333v85.333zM554.667 469.334h-85.333v-256h85.333v256zM725.333 895.574l-426.667 0.427c-46.933 0-85.333-38.4-85.333-85.333v-768c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v768c0 46.933-38.4 84.907-85.333 84.907zM725.333 128h-426.667v597.333h426.667v-597.333z" /> | ||
91 | <glyph unicode="" d="M512 686.934c49.493 0 89.6-40.107 89.6-89.6s-40.107-89.6-89.6-89.6-89.6 40.107-89.6 89.6 40.107 89.6 89.6 89.6zM512 302.934c126.72 0 260.267-62.293 260.267-89.6v-46.933h-520.533v46.933c0 27.307 133.547 89.6 260.267 89.6zM512 768c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM512 384c-113.92 0-341.333-57.173-341.333-170.667v-128h682.667v128c0 113.493-227.413 170.667-341.333 170.667z" /> | ||
92 | <glyph unicode="" d="M85.333 682.667h-85.333v-213.333h0.427l-0.427-384c0-46.933 38.4-85.333 85.333-85.333h768v85.333h-768v597.333zM938.667 768h-341.333l-85.333 85.333h-256c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM298.667 298.667l192 256 149.333-192.427 106.667 128.427 149.333-192h-597.333z" /> | ||
93 | <glyph unicode="" d="M853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 280.747l93.867 94.293c11.947 11.52 15.36 28.16 10.667 43.093-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667zM512 810.667v-426.667l128 128h256v298.667h-384z" /> | ||
94 | <glyph unicode="" d="M512 810.667c-215.467 0-377.6-78.933-512-180.48l512-630.187 512 629.333c-134.4 101.547-296.533 181.333-512 181.333zM554.667 256h-85.333v256h85.333v-256zM469.333 597.334v85.333h85.333v-85.333h-85.333z" /> | ||
95 | <glyph unicode="" d="M810.667 640h-341.333v-256h341.333v256zM896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-84.48 85.333-84.48h768c46.933 0 85.333 37.547 85.333 84.48v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 127.574h-768v598.613h768v-598.613z" /> | ||
96 | <glyph unicode="" d="M810.667 768h-170.667l-336.64-538.88-111.36 197.547 192 341.333h-170.667l-192-341.333 192-341.333h170.667l336.64 538.88 111.36-197.547-192-341.333h170.667l192 341.333z" /> | ||
97 | <glyph unicode="" d="M810.667 597.334h-597.333c-70.827 0-128-57.173-128-128v-256h170.667v-170.667h512v170.667h170.667v256c0 70.827-57.173 128-128 128zM682.667 128h-341.333v213.333h341.333v-213.333zM810.667 426.667c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM768 810.667h-512v-170.667h512v170.667z" /> | ||
98 | <glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM533.333 640h-64v-256l224-134.4 32 52.48-192 113.92z" /> | ||
99 | <glyph unicode="" d="M896 682.667h-85.333v-384h-554.667v-85.333c0-23.467 19.2-42.667 42.667-42.667h469.333l170.667-170.667v640c0 23.467-19.2 42.667-42.667 42.667zM725.333 426.667v384c0 23.467-19.2 42.667-42.667 42.667h-554.667c-23.467 0-42.667-19.2-42.667-42.667v-597.333l170.667 170.667h426.667c23.467 0 42.667 19.2 42.667 42.667z" /> | ||
100 | <glyph unicode="" d="M768 213.334h-512v85.333h512v-85.333zM768 384h-512v85.333h512v-85.333zM768 554.667h-512v85.333h512v-85.333zM128-0l64 64 64-64 64 64 64-64 64 64 64-64 64 64 64-64 64 64 64-64 64 64 64-64v853.333l-64-64-64 64-64-64-64 64-64-64-64 64-64-64-64 64-64-64-64 64-64-64-64 64v-853.333z" /> | ||
101 | <glyph unicode="" d="M853.333 682.667h-93.013c4.693 13.227 7.68 27.733 7.68 42.667 0 70.827-57.173 128-128 128-44.8 0-83.627-23.040-106.667-57.6l-21.333-28.587-21.333 29.013c-23.040 34.133-61.867 57.173-106.667 57.173-70.827 0-128-57.173-128-128 0-14.933 2.987-29.44 7.68-42.667h-93.013c-47.36 0-84.907-37.973-84.907-85.333l-0.427-469.333c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM640 768c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM384 768c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM853.333 128h-682.667v85.333h682.667v-85.333zM853.333 341.334h-682.667v256h216.747l-88.747-120.747 69.12-49.92 144.213 196.267 144.213-196.267 69.12 49.92-88.747 120.747h216.747v-256z" /> | ||
102 | <glyph unicode="" d="M128 298.667h768v85.333h-768v-85.333zM128 128h768v85.333h-768v-85.333zM128 469.334h768v85.333h-768v-85.333zM128 725.334v-85.333h768v85.333h-768z" /> | ||
103 | <glyph unicode="" d="M42.667 42.667h938.667l-469.333 810.667-469.333-810.667zM554.667 170.667h-85.333v85.333h85.333v-85.333zM554.667 341.334h-85.333v170.667h85.333v-170.667z" /> | ||
104 | <glyph unicode="" d="M554.667 810.667c-212.053 0-384-171.947-384-384h-128l165.973-165.973 2.987-5.973 172.373 171.947h-128c0 165.12 133.547 298.667 298.667 298.667s298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667c-82.347 0-157.013 33.707-210.773 87.893l-60.587-60.587c69.547-69.547 165.12-112.64 271.36-112.64 212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 597.334v-213.333l182.613-108.373 30.72 51.627-149.333 88.747v181.333h-64z" /> | ||
105 | <glyph unicode="" d="M512 853.334c-165.12 0-298.667-133.547-298.667-298.667 0-224 298.667-554.667 298.667-554.667s298.667 330.667 298.667 554.667c0 165.12-133.547 298.667-298.667 298.667zM512 448c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667z" /> | ||
106 | <glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM533.333 640h-64v-256l224-134.4 32 52.48-192 113.92z" /> | ||
107 | <glyph unicode="" d="M661.333 341.334h-33.707l-11.947 11.52c41.813 48.64 66.987 111.787 66.987 180.48 0 153.173-124.16 277.333-277.333 277.333s-277.333-124.16-277.333-277.333 124.16-277.333 277.333-277.333c68.693 0 131.84 25.173 180.48 66.987l11.52-11.947v-33.707l213.333-212.907 63.573 63.573-212.907 213.333zM405.333 341.334c-106.24 0-192 85.76-192 192s85.76 192 192 192 192-85.76 192-192-85.76-192-192-192z" /> | ||
108 | <glyph unicode="" d="M512 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM810.667 810.667h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c47.36 0 85.333 38.4 85.333 85.333v597.333c0 46.933-37.973 85.333-85.333 85.333zM736 426.667c0-9.813-0.853-19.627-2.133-29.013l63.147-49.493c5.547-4.693 7.253-12.8 3.413-19.2l-59.733-103.253c-3.84-6.4-11.52-8.96-18.347-6.4l-74.24 29.867c-15.36-11.947-32.427-21.76-50.347-29.44l-11.093-78.933c-1.28-7.253-7.68-12.8-14.933-12.8h-119.467c-7.253 0-13.653 5.547-14.933 12.373l-11.093 78.933c-18.347 7.68-34.987 17.493-50.347 29.44l-74.24-29.867c-6.827-2.56-14.507 0-18.347 6.4l-59.733 103.253c-3.84 6.4-2.133 14.507 3.413 19.2l63.147 49.493c-1.28 9.813-2.133 19.627-2.133 29.44s0.853 19.627 2.133 29.013l-63.147 49.493c-5.547 4.693-7.253 12.8-3.413 19.2l59.733 103.253c3.84 6.4 11.52 8.96 18.347 6.4l74.24-29.867c15.36 11.947 32.427 21.76 50.347 29.44l11.093 78.933c1.28 7.253 7.68 12.8 14.933 12.8h119.467c7.253 0 13.653-5.547 14.933-12.373l11.093-78.933c18.347-7.68 34.987-17.493 50.347-29.44l74.24 29.867c6.827 2.56 14.507 0 18.347-6.4l59.733-103.253c3.84-6.4 2.133-14.507-3.413-19.2l-63.147-49.493c1.28-9.813 2.133-19.627 2.133-29.44z" /> | ||
109 | <glyph unicode="" d="M597.333 426.667c0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333zM512 810.667c-212.053 0-384-171.947-384-384h-128l170.667-170.667 170.667 170.667h-128c0 165.12 133.547 298.667 298.667 298.667s298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667c-64.427 0-124.16 20.907-173.227 55.467l-60.587-61.44c64.853-49.493 145.92-79.36 233.813-79.36 212.053 0 384 171.947 384 384s-171.947 384-384 384z" /> | ||
110 | <glyph unicode="" d="M469.333-85.333h85.333v85.333h-85.333v-85.333zM298.667-85.333h85.333v85.333h-85.333v-85.333zM640-85.333h85.333v85.333h-85.333v-85.333zM755.627 695.040l-243.627 243.627h-42.667v-323.84l-195.84 195.84-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 195.84 195.84v-323.84h42.667l243.627 243.627-183.467 183.040 183.467 183.040zM554.667 775.254l80.213-80.213-80.213-80.213v160.427zM634.88 328.96l-80.213-80.213v160.427l80.213-80.213z" /> | ||
111 | <glyph unicode="" d="M298.667-85.333h85.333v85.333h-85.333v-85.333zM469.333-85.333h85.333v85.333h-85.333v-85.333zM640-85.333h85.333v85.333h-85.333v-85.333zM682.667 938.24l-341.333 0.427c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h341.333c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 84.907-85.333 84.907zM682.667 256h-341.333v512h341.333v-512z" /> | ||
112 | <glyph unicode="" d="M896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 127.574h-768v598.187h768v-598.187zM341.333 256h106.667l64-64 64 64h106.667v106.667l64 64-64 64v106.667h-106.667l-64 64-64-64h-106.667v-106.667l-64-64 64-64v-106.667zM512 554.667c70.827 0 128-57.173 128-128s-57.173-128-128-128v256z" /> | ||
113 | <glyph unicode="" d="M331.52 650.24l-65.707 54.613-230.827-278.187 230.827-278.187 65.707 54.613-185.6 223.573 185.6 223.573zM298.667 384h85.333v85.333h-85.333v-85.333zM725.333 469.334h-85.333v-85.333h85.333v85.333zM469.333 384h85.333v85.333h-85.333v-85.333zM758.187 704.854l-65.707-54.613 185.6-223.573-185.6-223.573 65.707-54.613 230.827 278.187-230.827 278.187z" /> | ||
114 | <glyph unicode="" d="M512 725.334c-165.12 0-298.667-133.547-298.667-298.667h85.333c0 117.76 95.573 213.333 213.333 213.333s213.333-95.573 213.333-213.333h85.333c0 165.12-133.547 298.667-298.667 298.667zM554.667 328.96c37.547 16.64 64 53.76 64 97.707 0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667c0-43.52 26.453-81.067 64-97.707v-140.8l-145.493-145.493 60.16-60.16 128 128 128-128 60.16 60.16-145.493 145.493v140.8zM512 896c-258.987 0-469.333-210.347-469.333-469.333h85.333c0 212.053 171.947 384 384 384s384-171.947 384-384h85.333c0 258.987-210.347 469.333-469.333 469.333z" /> | ||
115 | <glyph unicode="" d="M213.333 853.334c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333v170.667zM384 256c0-55.467 35.84-102.4 85.333-120.32v-178.347h85.333v178.347c49.493 17.493 85.333 64.427 85.333 120.32v85.333h-256v-85.333zM42.667 256c0-55.467 35.84-102.4 85.333-120.32v-178.347h85.333v178.347c49.493 17.92 85.333 64.853 85.333 120.32v85.333h-256v-85.333zM896 682.667v170.667c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333zM554.667 853.334c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333v170.667zM725.333 256c0-55.467 35.84-102.4 85.333-120.32v-178.347h85.333v178.347c49.493 17.493 85.333 64.427 85.333 120.32v85.333h-256v-85.333z" /> | ||
116 | <glyph unicode="" d="M213.333 853.334c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333v170.667zM384 256c0-55.467 35.84-102.4 85.333-120.32v-178.347h85.333v178.347c49.493 17.493 85.333 64.427 85.333 120.32v85.333h-256v-85.333zM42.667 256c0-55.467 35.84-102.4 85.333-120.32v-178.347h85.333v178.347c49.493 17.92 85.333 64.853 85.333 120.32v85.333h-256v-85.333zM896 682.667v170.667c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333zM554.667 853.334c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667v-170.667h-85.333v-256h256v256h-85.333v170.667zM725.333 256c0-55.467 35.84-102.4 85.333-120.32v-178.347h85.333v178.347c49.493 17.493 85.333 64.427 85.333 120.32v85.333h-256v-85.333z" /> | ||
117 | <glyph unicode="" d="M768 640v128c0 46.933-38.4 85.333-85.333 85.333h-341.333c-46.933 0-85.333-38.4-85.333-85.333v-128h-42.667v-256l128-256v-128h341.333v128l128 256v256h-42.667zM341.333 768h341.333v-128h-85.333v85.333h-42.667v-85.333h-85.333v85.333h-42.667v-85.333h-85.333v128z" /> | ||
118 | <glyph unicode="" d="M341.333 448c0 35.413-28.587 64-64 64s-64-28.587-64-64 28.587-64 64-64 64 28.587 64 64zM640 661.334c0 35.413-28.587 64-64 64h-128c-35.413 0-64-28.587-64-64s28.587-64 64-64h128c35.413 0 64 28.587 64 64zM362.667 298.667c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM512 896c-258.987 0-469.333-210.347-469.333-469.333s210.347-469.333 469.333-469.333 469.333 210.347 469.333 469.333-210.347 469.333-469.333 469.333zM512 42.667c-211.627 0-384 172.373-384 384s172.373 384 384 384 384-172.373 384-384-172.373-384-384-384zM746.667 512c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM661.333 298.667c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64z" /> | ||
119 | <glyph unicode="" d="M512.427 704l-85.76-106.667h170.667l-84.907 106.667zM768 512v-170.667l106.667 84.907-106.667 85.76zM256 512l-106.667-85.76 106.667-84.907v170.667zM597.333 256h-170.667l85.76-106.667 84.907 106.667zM896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 127.574h-768v598.187h768v-598.187z" /> | ||
120 | <glyph unicode="" d="M554.667 554.667h-85.333v-85.333h85.333v85.333zM725.333 554.667h-85.333v-85.333h85.333v85.333zM853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 280.747l93.867 94.293c11.947 11.52 15.36 28.16 10.667 43.093-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667zM810.667 554.667v-85.333h85.333v85.333h-85.333z" /> | ||
121 | <glyph unicode="" d="M298.667-85.333h85.333v85.333h-85.333v-85.333zM469.333-85.333h85.333v85.333h-85.333v-85.333zM554.667 853.334h-85.333v-426.667h85.333v426.667zM706.56 749.227l-61.867-61.867c73.813-44.8 123.307-125.44 123.307-218.027 0-141.227-114.773-256-256-256s-256 114.773-256 256c0 92.587 49.493 173.227 122.88 218.453l-61.44 61.44c-88.747-61.44-146.773-163.84-146.773-279.893 0-188.587 152.747-341.333 341.333-341.333s341.333 152.747 341.333 341.333c0 116.053-58.027 218.453-146.773 279.893zM640-85.333h85.333v85.333h-85.333v-85.333z" /> | ||
122 | <glyph unicode="" d="M640 554.667h-256c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h256c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667zM512 298.667c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333zM300.8 680.534l60.16-60.16c38.827 38.4 92.16 62.293 151.040 62.293s112.213-23.893 151.040-62.293l60.16 60.16c-54.187 54.187-128.853 87.467-211.2 87.467s-157.013-33.28-211.2-87.467zM512 938.667c-129.707 0-247.040-52.48-331.947-137.387l60.16-60.16c69.547 69.12 165.547 112.213 271.787 112.213s202.24-43.093 271.36-112.64l60.16 60.16c-84.48 85.333-201.813 137.813-331.52 137.813z" /> | ||
123 | <glyph unicode="" d="M298.667-85.333h85.333v85.333h-85.333v-85.333zM512 384c70.827 0 127.573 57.173 127.573 128l0.427 256c0 70.827-57.173 128-128 128s-128-57.173-128-128v-256c0-70.827 57.173-128 128-128zM469.333-85.333h85.333v85.333h-85.333v-85.333zM640-85.333h85.333v85.333h-85.333v-85.333zM810.667 512h-72.533c0-128-108.373-217.6-226.133-217.6s-226.133 89.6-226.133 217.6h-72.533c0-145.493 116.053-265.813 256-286.72v-139.947h85.333v139.947c139.947 20.907 256 141.227 256 286.72z" /> | ||
124 | <glyph unicode="" d="M829.013 384.854c1.707 13.653 2.987 27.307 2.987 41.813s-1.28 28.16-2.987 41.813l90.027 70.4c8.107 6.4 10.24 17.92 5.12 27.307l-85.333 147.627c-5.12 9.387-16.64 12.8-26.027 9.387l-106.24-42.667c-22.187 17.067-46.080 31.147-72.107 41.813l-16.213 113.067c-1.28 10.24-10.24 17.92-20.907 17.92h-170.667c-10.667 0-19.627-7.68-20.907-17.92l-16.213-113.067c-26.027-10.667-49.92-25.173-72.107-41.813l-106.24 42.667c-9.813 3.84-20.907 0-26.027-9.387l-85.333-147.627c-5.547-9.387-2.987-20.907 5.12-27.307l90.027-70.4c-1.707-13.653-2.987-27.733-2.987-41.813s1.28-28.16 2.987-41.813l-90.027-70.4c-8.107-6.4-10.24-17.92-5.12-27.307l85.333-147.627c5.12-9.387 16.64-12.8 26.027-9.387l106.24 42.667c22.187-17.067 46.080-31.147 72.107-41.813l16.213-113.067c1.28-10.24 10.24-17.92 20.907-17.92h170.667c10.667 0 19.627 7.68 20.907 17.92l16.213 113.067c26.027 10.667 49.92 25.173 72.107 41.813l106.24-42.667c9.813-3.84 20.907 0 26.027 9.387l85.333 147.627c5.12 9.387 2.987 20.907-5.12 27.307l-90.027 70.4zM512 277.334c-82.347 0-149.333 66.987-149.333 149.333s66.987 149.333 149.333 149.333 149.333-66.987 149.333-149.333-66.987-149.333-149.333-149.333z" /> | ||
125 | <glyph unicode="" d="M128 554.667h-85.333v-469.333c0-47.36 37.973-85.333 85.333-85.333h597.333c47.36 0 85.333 37.973 85.333 85.333h-682.667v469.333zM768 725.334v85.333c0 47.36-37.973 85.333-85.333 85.333h-170.667c-47.36 0-85.333-37.973-85.333-85.333v-85.333h-213.333v-469.333c0-47.36 37.973-85.333 85.333-85.333h597.333c47.36 0 85.333 37.973 85.333 85.333v469.333h-213.333zM512 810.667h170.667v-85.333h-170.667v85.333zM512 298.667v298.667l234.667-128-234.667-170.667z" /> | ||
126 | <glyph unicode="" d="M682.667 682.667v85.333c0 47.36-37.973 85.333-85.333 85.333h-170.667c-47.36 0-85.333-37.973-85.333-85.333v-85.333h-256v-554.667c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v554.667h-256zM426.667 768h170.667v-85.333h-170.667v85.333zM384 170.667v384l320-170.667-320-213.333z" /> | ||
127 | <glyph unicode="" d="M734.293 554.667l-186.88 279.893c-8.107 11.947-21.76 17.92-35.413 17.92s-27.307-5.973-35.413-18.347l-186.88-279.467h-204.373c-23.467 0-42.667-19.2-42.667-42.667 0-3.84 0.427-7.68 1.707-11.52l108.373-395.52c9.813-35.84 42.667-62.293 81.92-62.293h554.667c39.253 0 72.107 26.453 82.347 62.293l108.373 395.52 1.28 11.52c0 23.467-19.2 42.667-42.667 42.667h-204.373zM384 554.667l128 187.733 128-187.733h-256zM512 213.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> | ||
128 | <glyph unicode="" d="M298.667 170.667c-46.933 0-84.907-38.4-84.907-85.333s37.973-85.333 84.907-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM42.667 853.334v-85.333h85.333l153.6-323.84-57.6-104.533c-6.827-11.947-10.667-26.027-10.667-40.96 0-46.933 38.4-85.333 85.333-85.333h512v85.333h-494.080c-5.973 0-10.667 4.693-10.667 10.667l1.28 5.12 38.4 69.547h317.867c32 0 60.16 17.493 74.667 43.947l152.747 276.907c3.413 5.973 5.12 13.227 5.12 20.48 0 23.467-19.2 42.667-42.667 42.667h-631.040l-40.107 85.333h-139.52zM725.333 170.667c-46.933 0-84.907-38.4-84.907-85.333s37.973-85.333 84.907-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> | ||
129 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM341.333 341.334h-85.333v85.333h85.333v-85.333zM341.333 469.334h-85.333v85.333h85.333v-85.333zM341.333 597.334h-85.333v85.333h85.333v-85.333zM640 341.334h-213.333v85.333h213.333v-85.333zM768 469.334h-341.333v85.333h341.333v-85.333zM768 597.334h-341.333v85.333h341.333v-85.333z" /> | ||
130 | <glyph unicode="" d="M531.2 256h89.173l-218.027 554.667h-79.36l-218.027-554.667h89.173l47.787 128h240.64l48.64-128zM274.347 469.334l88.32 235.52 88.32-235.52h-176.64zM921.173 444.16l-345.173-345.173-156.587 157.013-60.16-60.16 217.173-217.173 404.907 405.333-60.16 60.16z" /> | ||
131 | <glyph unicode="" d="M512 328.534l158.293-115.2-60.587 186.027 158.293 112.64h-194.133l-61.867 192-61.867-192h-194.133l158.293-112.64-60.587-186.027z" /> | ||
132 | <glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM692.48 170.667l-180.48 108.8-180.48-108.8 47.787 205.227-159.147 137.813 209.92 17.92 81.92 193.707 81.92-193.28 209.92-17.92-159.147-137.813 47.787-205.653z" /> | ||
133 | <glyph unicode="" d="M853.333 768h-682.667v-85.333h682.667v85.333zM896 341.334v85.333l-42.667 213.333h-682.667l-42.667-213.333v-85.333h42.667v-256h426.667v256h170.667v-256h85.333v256h42.667zM512 170.667h-256v170.667h256v-170.667z" /> | ||
134 | <glyph unicode="" d="M597.333 213.334h-426.667v-85.333h426.667v85.333zM853.333 554.667h-682.667v-85.333h682.667v85.333zM170.667 298.667h682.667v85.333h-682.667v-85.333zM170.667 725.334v-85.333h682.667v85.333h-682.667z" /> | ||
135 | <glyph unicode="" d="M704 426.667c58.88 0 106.24 47.787 106.24 106.667s-47.36 106.667-106.24 106.667c-58.88 0-106.667-47.787-106.667-106.667s47.787-106.667 106.667-106.667zM384 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-70.827 0-128-57.173-128-128s57.173-128 128-128zM704 341.334c-78.080 0-234.667-39.253-234.667-117.333v-96h469.333v96c0 78.080-156.587 117.333-234.667 117.333zM384 384c-99.413 0-298.667-49.92-298.667-149.333v-106.667h298.667v96c0 36.267 14.080 99.84 101.12 148.053-37.12 7.68-72.96 11.947-101.12 11.947z" /> | ||
136 | <glyph unicode="" d="M298.24 469.334l-170.24-170.667 170.24-170.667v128h299.093v85.333h-299.093v128zM896 554.667l-170.24 170.667v-128h-299.093v-85.333h299.093v-128l170.24 170.667z" /> | ||
137 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM277.333 554.667l149.333 149.333 149.333-149.333h-106.667v-170.667h-85.333v170.667h-106.667zM746.667 298.667l-149.333-149.333-149.333 149.333h106.667v170.667h85.333v-170.667h106.667z" /> | ||
138 | <glyph unicode="" d="M682.667 212.907v299.093h-85.333v-299.093h-128l170.667-170.24 170.667 170.24h-128zM384 810.667l-170.667-170.24h128v-299.093h85.333v299.093h128l-170.667 170.24z" /> | ||
139 | <glyph unicode="" d="M512 234.667l170.667 170.667h-128v384h-85.333v-384h-128l170.667-170.667zM896 789.334h-256v-84.907h256v-598.613h-768v598.613h256v84.907h-256c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333z" /> | ||
140 | <glyph unicode="" d="M42.667 554.667h85.333v85.333h-85.333v-85.333zM42.667 384h85.333v85.333h-85.333v-85.333zM42.667 725.334h85.333v85.333c-46.933 0-85.333-38.4-85.333-85.333zM384 42.667h85.333v85.333h-85.333v-85.333zM42.667 213.334h85.333v85.333h-85.333v-85.333zM128 42.667v85.333h-85.333c0-46.933 38.4-85.333 85.333-85.333zM896 810.667h-341.333v-256h426.667v170.667c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h85.333v85.333h-85.333v-85.333zM384 725.334h85.333v85.333h-85.333v-85.333zM213.333 42.667h85.333v85.333h-85.333v-85.333zM213.333 725.334h85.333v85.333h-85.333v-85.333zM896 42.667c46.933 0 85.333 38.4 85.333 85.333h-85.333v-85.333zM896 384h85.333v85.333h-85.333v-85.333zM554.667 42.667h85.333v85.333h-85.333v-85.333zM725.333 42.667h85.333v85.333h-85.333v-85.333z" /> | ||
141 | <glyph unicode="" d="M896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 128h-768v597.333h426.667v-170.667h341.333v-426.667z" /> | ||
142 | <glyph unicode="" d="M768 810.667v-85.333h-85.333v85.333h-341.333v-85.333h-85.333v85.333h-85.333v-768h85.333v85.333h85.333v-85.333h341.333v85.333h85.333v-85.333h85.333v768h-85.333zM341.333 213.334h-85.333v85.333h85.333v-85.333zM341.333 384h-85.333v85.333h85.333v-85.333zM341.333 554.667h-85.333v85.333h85.333v-85.333zM768 213.334h-85.333v85.333h85.333v-85.333zM768 384h-85.333v85.333h85.333v-85.333zM768 554.667h-85.333v85.333h85.333v-85.333z" /> | ||
143 | <glyph unicode="" d="M640 810.667h-384c-35.413 0-65.707-21.333-78.507-52.053l-128.853-300.8c-3.84-9.813-5.973-20.053-5.973-31.147v-81.493l0.427-0.427-0.427-3.413c0-46.933 38.4-85.333 85.333-85.333h269.227l-40.533-194.987-1.28-13.653c0-17.493 7.253-33.707 18.773-45.227l45.227-44.8 281.173 281.173c15.36 15.36 24.747 36.693 24.747 60.16v426.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 810.667v-512h170.667v512h-170.667z" /> | ||
144 | <glyph unicode="" d="M42.667 42.667h170.667v512h-170.667v-512zM981.333 512c0 46.933-38.4 85.333-85.333 85.333h-269.227l40.533 194.987 1.28 13.653c0 17.493-7.253 33.707-18.773 45.227l-45.227 44.8-280.747-281.173c-15.787-15.36-25.173-36.693-25.173-60.16v-426.667c0-46.933 38.4-85.333 85.333-85.333h384c35.413 0 65.707 21.333 78.507 52.053l128.853 300.8c3.84 9.813 5.973 20.053 5.973 31.147v81.493l-0.427 0.427 0.427 3.413z" /> | ||
145 | <glyph unicode="" d="M512 682.667c0 23.467-19.2 42.667-42.667 42.667h-221.013l28.16 135.68 0.853 9.813c0 13.227-5.547 25.173-14.080 34.133l-33.707 33.707-210.773-210.773c-11.52-11.52-18.773-27.733-18.773-45.227v-277.333c0-35.413 28.587-64 64-64h288c26.453 0 49.067 16.213 58.88 38.827l96.427 225.707c2.987 7.253 4.693 15.36 4.693 23.467v53.333zM960 512h-288c-26.453 0-49.067-16.213-58.88-38.827l-96.427-225.707c-2.987-7.253-4.693-15.36-4.693-23.467v-53.333c0-23.467 19.2-42.667 42.667-42.667h221.013l-28.16-135.68-0.853-10.24c0-13.227 5.547-25.173 14.080-34.133l33.707-33.28 210.773 210.773c11.52 11.52 18.773 27.733 18.773 45.227v277.333c0 35.413-28.587 64-64 64z" /> | ||
146 | <glyph unicode="" d="M128 554.667h597.333v85.333h-597.333v-85.333zM128 384h597.333v85.333h-597.333v-85.333zM128 213.334h597.333v85.333h-597.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM810.667 640v-85.333h85.333v85.333h-85.333zM810.667 384h85.333v85.333h-85.333v-85.333z" /> | ||
147 | <glyph unicode="" d="M810.667 810.667h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v469.333h597.333v-469.333zM298.667 512h213.333v-213.333h-213.333z" /> | ||
148 | <glyph unicode="" d="M813.653 728.32l-60.16-60.16c61.44-61.867 99.84-147.2 99.84-241.493 0-188.587-152.747-341.333-341.333-341.333s-341.333 152.747-341.333 341.333c0 174.080 130.133 317.44 298.667 338.347v-86.187c-121.173-20.48-213.333-125.44-213.333-252.16 0-141.227 114.773-256 256-256s256 114.773 256 256c0 70.827-28.587 134.827-75.093 180.907l-60.16-60.16c30.72-31.147 49.92-73.813 49.92-120.747 0-94.293-76.373-170.667-170.667-170.667s-170.667 76.373-170.667 170.667c0 79.36 54.613 145.493 128 164.693v-91.307c-25.6-14.933-42.667-41.813-42.667-73.387 0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333c0 31.573-17.067 58.88-42.667 73.387v353.28h-42.667c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667c0 117.76-47.787 224.427-125.013 301.653z" /> | ||
149 | <glyph unicode="" d="M549.12 295.68l-108.373 107.093 1.28 1.28c74.24 82.773 127.147 177.92 158.293 278.613h125.013v85.333h-298.667v85.333h-85.333v-85.333h-298.667v-84.907h476.587c-28.587-82.347-73.813-160.427-135.253-228.693-39.68 43.947-72.533 92.16-98.56 142.933h-85.333c31.147-69.547 73.813-135.253 127.147-194.56l-217.173-214.187 60.587-60.587 213.333 213.333 132.693-132.693 32.427 87.040zM789.333 512h-85.333l-192-512h85.333l47.787 128h202.667l48.213-128h85.333l-192 512zM677.547 213.334l69.12 184.747 69.12-184.747h-138.24z" /> | ||
150 | <glyph unicode="" d="M682.667 170.667l97.707 97.707-208.213 208.213-170.667-170.667-316.16 316.587 60.16 60.16 256-256 170.667 170.667 268.8-268.373 97.707 97.707v-256z" /> | ||
151 | <glyph unicode="" d="M938.667 426.667l-170.667 170.667v-128h-640v-85.333h640v-128z" /> | ||
152 | <glyph unicode="" d="M682.667 682.667l97.707-97.707-208.213-208.213-170.667 170.667-316.16-316.587 60.16-60.16 256 256 170.667-170.667 268.8 268.373 97.707-97.707v256z" /> | ||
153 | <glyph unicode="" d="M725.333 810.667h-426.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667 298.667 128 298.667-128v682.667c0 46.933-38.4 85.333-85.333 85.333zM725.333 170.667l-213.333 93.013-213.333-93.013v554.667h426.667v-554.667z" /> | ||
154 | <glyph unicode="" d="M725.333 810.667h-426.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667 298.667 128 298.667-128v682.667c0 46.933-38.4 85.333-85.333 85.333z" /> | ||
155 | <glyph unicode="" d="M512 896l-384-170.667v-256c0-236.8 163.84-458.24 384-512 220.16 53.76 384 275.2 384 512v256l-384 170.667zM426.667 213.334l-170.667 170.667 60.16 60.16 110.507-110.080 281.173 281.173 60.16-60.587-341.333-341.333z" /> | ||
156 | <glyph unicode="" d="M853.333 384h-725.333c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h725.333c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667zM853.333 810.667h-725.333c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h725.333c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667z" /> | ||
157 | <glyph unicode="" d="M170.667 170.667h128v554.667h-128v-554.667zM768 725.334v-554.667h128v554.667h-128zM341.333 170.667h384v554.667h-384v-554.667z" /> | ||
158 | <glyph unicode="" d="M298.667 128h426.667v640h-426.667v-640zM85.333 213.334h170.667v469.333h-170.667v-469.333zM768 682.667v-469.333h170.667v469.333h-170.667z" /> | ||
159 | <glyph unicode="" d="M426.667 170.667h213.333v554.667h-213.333v-554.667zM170.667 170.667h213.333v554.667h-213.333v-554.667zM682.667 725.334v-554.667h213.333v554.667h-213.333z" /> | ||
160 | <glyph unicode="" d="M85.333 42.667h810.667v128h-810.667v-128zM853.333 597.334h-725.333c-23.467 0-42.667-19.2-42.667-42.667v-256c0-23.467 19.2-42.667 42.667-42.667h725.333c23.467 0 42.667 19.2 42.667 42.667v256c0 23.467-19.2 42.667-42.667 42.667zM85.333 810.667v-128h810.667v128h-810.667z" /> | ||
161 | <glyph unicode="" d="M170.667 298.667h725.333v85.333h-725.333v-85.333zM170.667 128h725.333v85.333h-725.333v-85.333zM170.667 469.334h725.333v85.333h-725.333v-85.333zM170.667 725.334v-85.333h725.333v85.333h-725.333z" /> | ||
162 | <glyph unicode="" d="M170.667 341.334h170.667v170.667h-170.667v-170.667zM170.667 128h170.667v170.667h-170.667v-170.667zM170.667 554.667h170.667v170.667h-170.667v-170.667zM384 341.334h512v170.667h-512v-170.667zM384 128h512v170.667h-512v-170.667zM384 725.334v-170.667h512v170.667h-512z" /> | ||
163 | <glyph unicode="" d="M170.667 469.334h213.333v256h-213.333v-256zM170.667 170.667h213.333v256h-213.333v-256zM426.667 170.667h213.333v256h-213.333v-256zM682.667 170.667h213.333v256h-213.333v-256zM426.667 469.334h213.333v256h-213.333v-256zM682.667 725.334v-256h213.333v256h-213.333z" /> | ||
164 | <glyph unicode="" d="M426.667 170.667h213.333v256h-213.333v-256zM170.667 170.667h213.333v554.667h-213.333v-554.667zM682.667 170.667h213.333v256h-213.333v-256zM426.667 725.334v-256h469.333v256h-469.333z" /> | ||
165 | <glyph unicode="" d="M170.667 170.667h725.333v256h-725.333v-256zM170.667 725.334v-256h725.333v256h-725.333z" /> | ||
166 | <glyph unicode="" d="M256 725.334h-128c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h128c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667zM853.333 725.334h-128c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h128c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667zM554.667 725.334h-128c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h128c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667z" /> | ||
167 | <glyph unicode="" d="M512 640c117.76 0 213.333-95.573 213.333-213.333 0-27.733-5.547-53.76-15.36-78.080l124.587-124.587c64.427 53.76 115.2 123.307 146.347 202.667-73.813 187.307-256 320-469.333 320-59.733 0-116.907-10.667-169.813-29.867l92.16-92.16c24.32 9.813 50.347 15.36 78.080 15.36zM85.333 756.48l116.907-116.907c-70.827-55.040-126.293-128.427-159.573-212.907 73.813-187.307 256-320 469.333-320 66.133 0 129.28 12.8 186.88 35.84l17.92-17.92 125.013-124.587 54.187 54.187-756.48 756.48-54.187-54.187zM321.28 520.534l66.133-66.133c-2.133-8.96-3.413-18.347-3.413-27.733 0-70.827 57.173-128 128-128 9.387 0 18.773 1.28 27.733 3.413l66.133-66.133c-28.587-14.080-60.16-22.613-93.867-22.613-117.76 0-213.333 95.573-213.333 213.333 0 33.707 8.533 65.28 22.613 93.867zM505.173 553.814l134.4-134.4 0.853 6.827c0 70.827-57.173 128-128 128l-7.253-0.427z" /> | ||
168 | <glyph unicode="" d="M512 746.667c-213.333 0-395.52-132.693-469.333-320 73.813-187.307 256-320 469.333-320s395.52 132.693 469.333 320c-73.813 187.307-256 320-469.333 320zM512 213.334c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333zM512 554.667c-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128-57.173 128-128 128z" /> | ||
169 | <glyph unicode="" d="M853.333 682.667h-93.013c4.693 13.227 7.68 27.733 7.68 42.667 0 70.827-57.173 128-128 128-44.8 0-83.627-23.040-106.667-57.6l-21.333-28.587-21.333 29.013c-23.040 34.133-61.867 57.173-106.667 57.173-70.827 0-128-57.173-128-128 0-14.933 2.987-29.44 7.68-42.667h-93.013c-47.36 0-84.907-37.973-84.907-85.333l-0.427-469.333c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM640 768c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM384 768c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM853.333 128h-682.667v85.333h682.667v-85.333zM853.333 341.334h-682.667v256h216.747l-88.747-120.747 69.12-49.92 144.213 196.267 144.213-196.267 69.12 49.92-88.747 120.747h216.747v-256z" /> | ||
170 | <glyph unicode="" d="M853.333 853.334h-682.667c-47.36 0-85.333-37.973-85.333-85.333v-469.333c0-47.36 37.973-85.333 85.333-85.333h170.667v-213.333l170.667 85.333 170.667-85.333v213.333h170.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM853.333 298.667h-682.667v85.333h682.667v-85.333zM853.333 512h-682.667v256h682.667v-256z" /> | ||
171 | <glyph unicode="" d="M853.333 682.667h-128v85.333c0 47.36-37.973 85.333-85.333 85.333h-256c-47.36 0-85.333-37.973-85.333-85.333v-85.333h-128c-47.36 0-85.333-37.973-85.333-85.333v-469.333c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM384 768h256v-85.333h-256v85.333zM853.333 128h-682.667v85.333h682.667v-85.333zM853.333 341.334h-682.667v256h128v-85.333h85.333v85.333h256v-85.333h85.333v85.333h128v-256z" /> | ||
172 | <glyph unicode="" d="M853.333 682.667h-170.667v85.333c0 47.36-37.973 85.333-85.333 85.333h-170.667c-47.36 0-85.333-37.973-85.333-85.333v-85.333h-170.667c-47.36 0-84.907-37.973-84.907-85.333l-0.427-469.333c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM597.333 682.667h-170.667v85.333h170.667v-85.333z" /> | ||
173 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM554.667 213.334h-85.333v85.333h85.333v-85.333zM554.667 384h-85.333v256h85.333v-256z" /> | ||
174 | <glyph unicode="" d="M42.667 42.667h938.667l-469.333 810.667-469.333-810.667zM554.667 170.667h-85.333v85.333h85.333v-85.333zM554.667 341.334h-85.333v170.667h85.333v-170.667z" /> | ||
175 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 234.667c-106.24 0-192 85.76-192 192s85.76 192 192 192 192-85.76 192-192-85.76-192-192-192zM512 469.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667z" /> | ||
176 | <glyph unicode="" d="M810.667 768h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-512c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM469.333 469.334h-64v21.333h-85.333v-128h85.333v21.333h64v-42.667c0-23.467-19.2-42.667-42.667-42.667h-128c-23.467 0-42.667 19.2-42.667 42.667v170.667c0 23.467 19.2 42.667 42.667 42.667h128c23.467 0 42.667-19.2 42.667-42.667v-42.667zM768 469.334h-64v21.333h-85.333v-128h85.333v21.333h64v-42.667c0-23.467-19.2-42.667-42.667-42.667h-128c-23.467 0-42.667 19.2-42.667 42.667v170.667c0 23.467 19.2 42.667 42.667 42.667h128c23.467 0 42.667-19.2 42.667-42.667v-42.667z" /> | ||
177 | <glyph unicode="" d="M426.667 85.334h170.667v682.667h-170.667v-682.667zM170.667 85.334h170.667v341.333h-170.667v-341.333zM682.667 554.667v-469.333h170.667v469.333h-170.667z" /> | ||
178 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM640 554.667h-170.667v-85.333h170.667v-85.333h-170.667v-85.333h170.667v-85.333h-256v426.667h256v-85.333z" /> | ||
179 | <glyph unicode="" d="M170.667 170.667l362.667 256-362.667 256v-512zM554.667 682.667v-512l362.667 256-362.667 256z" /> | ||
180 | <glyph unicode="" d="M469.333 170.667v512l-362.667-256 362.667-256zM490.667 426.667l362.667-256v512l-362.667-256z" /> | ||
181 | <glyph unicode="" d="M640 618.667v234.667h-256v-234.667l128-128 128 128zM320 554.667h-234.667v-256h234.667l128 128-128 128zM384 234.667v-234.667h256v234.667l-128 128-128-128zM704 554.667l-128-128 128-128h234.667v256h-234.667z" /> | ||
182 | <glyph unicode="" d="M725.333 85.334c-12.373 0-23.893 2.56-32.427 6.4-30.293 15.787-51.627 37.547-72.96 101.547-21.76 66.56-62.72 97.707-101.973 128-33.707 26.027-68.693 52.907-98.987 107.947-22.613 40.96-34.987 85.76-34.987 125.44 0 119.467 93.867 213.333 213.333 213.333s213.333-93.867 213.333-213.333h85.333c0 167.68-130.987 298.667-298.667 298.667s-298.667-130.987-298.667-298.667c0-53.76 16.213-113.067 45.653-166.4 38.827-70.4 84.48-105.813 121.6-134.4 34.56-26.453 59.307-45.653 72.96-87.467 25.6-77.653 58.453-121.173 116.48-151.467 21.76-9.813 45.653-14.933 69.973-14.933 94.293 0 170.667 76.373 170.667 170.667h-85.333c0-46.933-38.4-85.333-85.333-85.333zM325.973 826.027l-60.587 60.587c-84.907-84.907-137.387-202.24-137.387-331.947s52.48-247.040 137.387-331.947l60.16 60.16c-69.12 69.547-112.213 165.547-112.213 271.787s43.093 202.24 112.64 271.36zM490.667 554.667c0-58.88 47.787-106.667 106.667-106.667s106.667 47.787 106.667 106.667-47.787 106.667-106.667 106.667-106.667-47.787-106.667-106.667z" /> | ||
183 | <glyph unicode="" d="M810.667 768h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-512c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM469.333 298.667h-64v85.333h-85.333v-85.333h-64v256h64v-106.667h85.333v106.667h64v-256zM768 341.334c0-23.467-19.2-42.667-42.667-42.667h-32v-64h-64v64h-32c-23.467 0-42.667 19.2-42.667 42.667v170.667c0 23.467 19.2 42.667 42.667 42.667h128c23.467 0 42.667-19.2 42.667-42.667v-170.667zM618.667 362.667h85.333v128h-85.333v-128z" /> | ||
184 | <glyph unicode="" d="M512 768v128l-170.667-170.667 170.667-170.667v128c141.227 0 256-114.773 256-256 0-43.093-10.667-84.053-29.867-119.467l62.293-62.293c33.28 52.48 52.907 114.773 52.907 181.76 0 188.587-152.747 341.333-341.333 341.333zM512 170.667c-141.227 0-256 114.773-256 256 0 43.093 10.667 84.053 29.867 119.467l-62.293 62.293c-33.28-52.48-52.907-114.773-52.907-181.76 0-188.587 152.747-341.333 341.333-341.333v-128l170.667 170.667-170.667 170.667v-128z" /> | ||
185 | <glyph unicode="" d="M512 341.334c70.827 0 127.573 57.173 127.573 128l0.427 256c0 70.827-57.173 128-128 128s-128-57.173-128-128v-256c0-70.827 57.173-128 128-128zM460.8 729.6c0 28.16 23.040 51.2 51.2 51.2s51.2-23.040 51.2-51.2l-0.427-264.533c0-28.16-22.613-51.2-50.773-51.2s-51.2 23.040-51.2 51.2v264.533zM738.133 469.334c0-128-108.373-217.6-226.133-217.6s-226.133 89.6-226.133 217.6h-72.533c0-145.493 116.053-265.813 256-286.72v-139.947h85.333v139.947c139.947 20.48 256 140.8 256 286.72h-72.533z" /> | ||
186 | <glyph unicode="" d="M810.667 469.334h-72.533c0-31.573-6.827-61.013-18.347-87.467l52.48-52.48c23.893 41.813 38.4 89.173 38.4 139.947zM639.147 462.080c0 2.56 0.853 4.693 0.853 7.253v256c0 70.827-57.173 128-128 128s-128-57.173-128-128v-7.68l255.147-255.573zM182.187 810.667l-54.187-54.187 256.427-256.427v-30.72c0-70.827 56.747-128 127.573-128 9.387 0 18.773 1.28 27.733 3.413l70.827-70.827c-30.293-14.080-64-22.187-98.56-22.187-117.76 0-226.133 89.6-226.133 217.6h-72.533c0-145.493 116.053-265.813 256-286.72v-139.947h85.333v139.947c38.827 5.547 75.52 19.2 108.373 38.4l178.773-178.347 54.187 54.187-713.813 713.813z" /> | ||
187 | <glyph unicode="" d="M512 341.334c70.827 0 127.573 57.173 127.573 128l0.427 256c0 70.827-57.173 128-128 128s-128-57.173-128-128v-256c0-70.827 57.173-128 128-128zM738.133 469.334c0-128-108.373-217.6-226.133-217.6s-226.133 89.6-226.133 217.6h-72.533c0-145.493 116.053-265.813 256-286.72v-139.947h85.333v139.947c139.947 20.48 256 140.8 256 286.72h-72.533z" /> | ||
188 | <glyph unicode="" d="M768 768l85.333-170.667h-128l-85.333 170.667h-85.333l85.333-170.667h-128l-85.333 170.667h-85.333l85.333-170.667h-128l-85.333 170.667h-42.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v597.333h-170.667z" /> | ||
189 | <glyph unicode="" d="M170.667 682.667h-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM810.667 469.334h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" /> | ||
190 | <glyph unicode="" d="M170.667 682.667h-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM810.667 469.334h-426.667v85.333h426.667v-85.333zM640 298.667h-256v85.333h256v-85.333zM810.667 640h-426.667v85.333h426.667v-85.333z" /> | ||
191 | <glyph unicode="" d="M853.333 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM768 640h-128v-234.667c0-58.88-47.787-106.667-106.667-106.667s-106.667 47.787-106.667 106.667 47.787 106.667 106.667 106.667c24.32 0 46.080-8.107 64-21.76v235.093h170.667v-85.333zM170.667 682.667h-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333z" /> | ||
192 | <glyph unicode="" d="M981.333 426.667l-104.107 118.613 14.507 157.013-154.027 34.987-80.64 135.68-145.067-62.293-145.067 62.293-80.64-135.68-154.027-34.56 14.507-157.013-104.107-119.040 104.107-118.613-14.507-157.44 154.027-34.987 80.64-135.68 145.067 62.72 145.067-62.293 80.64 135.68 154.027 34.987-14.507 157.013 104.107 118.613zM554.667 213.334h-85.333v85.333h85.333v-85.333zM554.667 384h-85.333v256h85.333v-256z" /> | ||
193 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333 0 78.933 26.88 151.467 72.107 209.067l478.293-478.293c-57.6-45.227-130.133-72.107-209.067-72.107zM781.227 217.6l-478.293 478.293c57.6 45.227 130.133 72.107 209.067 72.107 188.587 0 341.333-152.747 341.333-341.333 0-78.933-26.88-151.467-72.107-209.067z" /> | ||
194 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM469.333 256h-85.333v341.333h85.333v-341.333zM640 256h-85.333v341.333h85.333v-341.333z" /> | ||
195 | <glyph unicode="" d="M384 256h85.333v341.333h-85.333v-341.333zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333zM554.667 256h85.333v341.333h-85.333v-341.333z" /> | ||
196 | <glyph unicode="" d="M256 128h170.667v597.333h-170.667v-597.333zM597.333 725.334v-597.333h170.667v597.333h-170.667z" /> | ||
197 | <glyph unicode="" d="M341.333 725.334v-597.333l469.333 298.667z" /> | ||
198 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM426.667 234.667v384l256-192-256-192z" /> | ||
199 | <glyph unicode="" d="M426.667 234.667l256 192-256 192v-384zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> | ||
200 | <glyph unicode="" d="M682.667 682.667v85.333c0 47.36-37.973 85.333-85.333 85.333h-170.667c-47.36 0-85.333-37.973-85.333-85.333v-85.333h-256v-554.667c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v554.667h-256zM426.667 768h170.667v-85.333h-170.667v85.333zM384 170.667v384l320-170.667-320-213.333z" /> | ||
201 | <glyph unicode="" d="M597.333 512h-512v-85.333h512v85.333zM597.333 682.667h-512v-85.333h512v85.333zM768 341.334v170.667h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667zM85.333 256h341.333v85.333h-341.333v-85.333z" /> | ||
202 | <glyph unicode="" d="M640 682.667h-512v-85.333h512v85.333zM640 512h-512v-85.333h512v85.333zM128 256h341.333v85.333h-341.333v-85.333zM725.333 682.667v-349.013c-13.227 4.693-27.733 7.68-42.667 7.68-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128v384h128v85.333h-213.333z" /> | ||
203 | <glyph unicode="" d="M170.667 682.667h-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM810.667 469.334h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" /> | ||
204 | <glyph unicode="" d="M138.24 676.267c-31.147-11.947-52.907-43.52-52.907-78.933v-512c0-46.933 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 38.4 85.333 85.333v512c0 47.36-37.973 85.333-85.333 85.333h-499.2l352.427 142.507-29.013 70.827-539.307-219.733zM298.667 85.334c-70.827 0-128 57.173-128 128s57.173 128 128 128 128-57.173 128-128-57.173-128-128-128zM853.333 426.667h-85.333v85.333h-85.333v-85.333h-512v170.667h682.667v-170.667z" /> | ||
205 | <glyph unicode="" d="M896 725.334v-597.333h85.333v597.333h-85.333zM725.333 128h85.333v597.333h-85.333v-597.333zM597.333 725.334h-512c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h512c23.467 0 42.667 19.2 42.667 42.667v512c0 23.467-19.2 42.667-42.667 42.667zM341.333 608c52.907 0 96-43.093 96-96s-43.093-96-96-96-96 43.093-96 96 43.093 96 96 96zM533.333 213.334h-384v32c0 64 128 96 192 96s192-32 192-96v-32z" /> | ||
206 | <glyph unicode="" d="M298.667 640h426.667v-128l170.667 170.667-170.667 170.667v-128h-512v-256h85.333v170.667zM725.333 213.334h-426.667v128l-170.667-170.667 170.667-170.667v128h512v256h-85.333v-170.667zM554.667 298.667v256h-42.667l-85.333-42.667v-42.667h64v-170.667h64z" /> | ||
207 | <glyph unicode="" d="M298.667 640h426.667v-128l170.667 170.667-170.667 170.667v-128h-512v-256h85.333v170.667zM725.333 213.334h-426.667v128l-170.667-170.667 170.667-170.667v128h512v256h-85.333v-170.667z" /> | ||
208 | <glyph unicode="" d="M512 725.334v170.667l-213.333-213.333 213.333-213.333v170.667c141.227 0 256-114.773 256-256s-114.773-256-256-256-256 114.773-256 256h-85.333c0-188.587 152.747-341.333 341.333-341.333s341.333 152.747 341.333 341.333-152.747 341.333-341.333 341.333z" /> | ||
209 | <glyph unicode="" d="M451.84 547.414l-221.013 220.587-60.16-60.16 220.587-220.587 60.587 60.16zM618.667 768l87.040-87.040-535.040-535.467 60.16-60.16 535.467 535.040 87.040-87.040v234.667h-234.667zM632.747 366.507l-60.16-60.16 133.547-133.547-87.467-87.467h234.667v234.667l-87.040-87.040-133.547 133.547z" /> | ||
210 | <glyph unicode="" d="M256 170.667l362.667 256-362.667 256v-512zM682.667 682.667v-512h85.333v512h-85.333z" /> | ||
211 | <glyph unicode="" d="M256 682.667h85.333v-512h-85.333zM405.333 426.667l362.667-256v512z" /> | ||
212 | <glyph unicode="" d="M336.213 794.027l-54.613 65.28-196.267-164.267 55.040-65.28 195.84 164.267zM938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM512 768c-212.053 0-384-171.947-384-384s171.52-384 384-384c212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667zM384 469.334h154.88l-154.88-179.2v-76.8h256v85.333h-154.88l154.88 179.2v76.8h-256v-85.333z" /> | ||
213 | <glyph unicode="" d="M256 682.667h512v-512h-512z" /> | ||
214 | <glyph unicode="" d="M853.333 768h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM170.667 426.667h170.667v-85.333h-170.667v85.333zM597.333 170.667h-426.667v85.333h426.667v-85.333zM853.333 170.667h-170.667v85.333h170.667v-85.333zM853.333 341.334h-426.667v85.333h426.667v-85.333z" /> | ||
215 | <glyph unicode="" d="M853.333 768h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM331.093 245.76l-60.16-60.16c-66.987 66.133-100.267 153.6-100.267 241.067s33.28 174.933 99.84 241.493l60.16-60.16c-49.493-50.347-74.667-115.627-74.667-181.333s25.173-130.987 75.093-180.907zM512 256c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667 170.667-76.373 170.667-170.667-76.373-170.667-170.667-170.667zM753.493 185.174l-60.16 60.16c49.493 50.347 74.667 115.627 74.667 181.333s-25.173 130.987-75.093 180.907l60.16 60.16c66.987-66.133 100.267-153.6 100.267-241.067s-33.28-174.933-99.84-241.493zM512 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> | ||
216 | <glyph unicode="" d="M469.333 213.334c0-23.467 19.2-42.667 42.667-42.667s42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667zM469.333 810.667v-170.667h85.333v81.92c144.64-20.907 256-144.64 256-295.253 0-165.12-133.547-298.667-298.667-298.667s-298.667 133.547-298.667 298.667c0 71.68 25.173 137.387 67.413 188.587l231.253-231.253 60.16 60.16-290.133 290.133v-0.853c-93.44-69.973-154.027-180.907-154.027-306.773 0-212.053 171.52-384 384-384 212.053 0 384 171.947 384 384s-171.947 384-384 384h-42.667zM768 426.667c0 23.467-19.2 42.667-42.667 42.667s-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667zM256 426.667c0-23.467 19.2-42.667 42.667-42.667s42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667z" /> | ||
217 | <glyph unicode="" d="M170.667 682.667h-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM512 320v384l256-192-256-192z" /> | ||
218 | <glyph unicode="" d="M896 661.334l-170.667-170.667v149.333c0 23.467-19.2 42.667-42.667 42.667h-263.68l477.013-477.013v455.68zM139.52 853.334l-54.187-54.187 116.48-116.48h-31.147c-23.467 0-42.667-19.2-42.667-42.667v-426.667c0-23.467 19.2-42.667 42.667-42.667h512c8.96 0 16.64 3.413 23.040 7.68l136.107-135.68 54.187 54.187-756.48 756.48z" /> | ||
219 | <glyph unicode="" d="M725.333 490.667v149.333c0 23.467-19.2 42.667-42.667 42.667h-512c-23.467 0-42.667-19.2-42.667-42.667v-426.667c0-23.467 19.2-42.667 42.667-42.667h512c23.467 0 42.667 19.2 42.667 42.667v149.333l170.667-170.667v469.333l-170.667-170.667z" /> | ||
220 | <glyph unicode="" d="M789.333 426.667c0 75.52-43.52 140.373-106.667 171.947v-343.467c63.147 31.147 106.667 96 106.667 171.52zM213.333 554.667v-256h170.667l213.333-213.333v682.667l-213.333-213.333h-170.667z" /> | ||
221 | <glyph unicode="" d="M298.667 554.667v-256h170.667l213.333-213.333v682.667l-213.333-213.333h-170.667z" /> | ||
222 | <glyph unicode="" d="M704 426.667c0 75.52-43.52 140.373-106.667 171.947v-94.293l104.533-104.533c1.28 8.533 2.133 17.493 2.133 26.88zM810.667 426.667c0-40.107-8.533-77.653-23.040-112.64l64.427-64.427c28.16 52.907 43.947 113.067 43.947 177.067 0 182.613-127.573 335.36-298.667 374.187v-87.893c123.307-36.693 213.333-151.040 213.333-286.293zM182.187 810.667l-54.187-54.187 201.813-201.813h-201.813v-256h170.667l213.333-213.333v287.147l181.333-181.333c-28.587-22.187-60.587-39.68-96-50.347v-87.893c58.88 13.227 112.213 40.533 157.44 77.227l87.040-87.467 54.187 54.187-713.813 713.813zM512 768l-89.173-89.173 89.173-89.173v178.347z" /> | ||
223 | <glyph unicode="" d="M128 554.667v-256h170.667l213.333-213.333v682.667l-213.333-213.333h-170.667zM704 426.667c0 75.52-43.52 140.373-106.667 171.947v-343.467c63.147 31.147 106.667 96 106.667 171.52zM597.333 800.854v-87.893c123.307-36.693 213.333-151.040 213.333-286.293s-90.027-249.6-213.333-286.293v-87.893c171.093 38.827 298.667 191.573 298.667 374.187s-127.573 335.36-298.667 374.187z" /> | ||
224 | <glyph unicode="" d="M853.333 768h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM640 170.667h-469.333v170.667h469.333v-170.667zM640 384h-469.333v170.667h469.333v-170.667zM853.333 170.667h-170.667v384h170.667v-384z" /> | ||
225 | <glyph unicode="" d="M512 640v170.667h-426.667v-768h853.333v597.333h-426.667zM256 128h-85.333v85.333h85.333v-85.333zM256 298.667h-85.333v85.333h85.333v-85.333zM256 469.334h-85.333v85.333h85.333v-85.333zM256 640h-85.333v85.333h85.333v-85.333zM426.667 128h-85.333v85.333h85.333v-85.333zM426.667 298.667h-85.333v85.333h85.333v-85.333zM426.667 469.334h-85.333v85.333h85.333v-85.333zM426.667 640h-85.333v85.333h85.333v-85.333zM853.333 128h-341.333v85.333h85.333v85.333h-85.333v85.333h85.333v85.333h-85.333v85.333h341.333v-426.667zM768 469.334h-85.333v-85.333h85.333v85.333zM768 298.667h-85.333v-85.333h85.333v85.333z" /> | ||
226 | <glyph unicode="" d="M512 554.667c-68.267 0-134.4-10.667-196.267-30.72v-132.267c0-16.64-9.813-31.573-23.893-38.4-41.813-20.907-79.787-47.787-113.493-78.933-7.68-7.68-18.347-11.947-29.867-11.947-11.947 0-22.613 4.693-30.293 12.373l-105.813 105.813c-7.68 7.253-12.373 17.92-12.373 29.867s4.693 22.613 12.373 30.293c130.133 123.307 305.92 199.253 499.627 199.253s369.493-75.947 499.627-199.253c7.68-7.68 12.373-18.347 12.373-30.293s-4.693-22.613-12.373-30.293l-105.813-105.813c-7.68-7.68-18.347-12.373-30.293-12.373-11.52 0-22.187 4.693-29.867 11.947-33.707 31.573-72.107 58.027-113.92 78.933-14.080 6.827-23.893 21.333-23.893 38.4v132.267c-61.44 20.48-127.573 31.147-195.84 31.147z" /> | ||
227 | <glyph unicode="" d="M384 725.334v-85.333h281.173l-494.507-494.507 60.16-60.16 494.507 494.507v-281.173h85.333v426.667z" /> | ||
228 | <glyph unicode="" d="M725.333 67.84l60.16 60.16-145.493 145.493-60.16-60.16 145.493-145.493zM320 597.334h149.333v-238.507l-230.827-230.827 60.16-60.16 256 256v273.493h149.333l-192 192-192-192z" /> | ||
229 | <glyph unicode="" d="M835.84 640l-323.84-323.84-238.507 238.507h195.84v85.333h-341.333v-341.333h85.333v195.84l298.667-298.667 384 384z" /> | ||
230 | <glyph unicode="" d="M853.333 707.84l-60.16 60.16-494.507-494.507v281.173h-85.333v-426.667h426.667v85.333h-281.173z" /> | ||
231 | <glyph unicode="" d="M597.333 768l97.707-97.707-122.88-122.88 60.587-60.587 122.88 122.88 97.707-97.707v256zM426.667 768h-256v-256l97.707 97.707 200.96-200.533v-323.84h85.333v358.827l-225.707 226.133z" /> | ||
232 | <glyph unicode="" d="M282.453 478.294c61.44-120.747 160.427-219.307 281.173-281.173l93.867 93.867c11.52 11.52 28.587 15.36 43.52 10.24 47.787-15.787 99.413-24.32 152.32-24.32 23.467 0 42.667-19.2 42.667-42.667v-148.907c0-23.467-19.2-42.667-42.667-42.667-400.64 0-725.333 324.693-725.333 725.333 0 23.467 19.2 42.667 42.667 42.667h149.333c23.467 0 42.667-19.2 42.667-42.667 0-53.333 8.533-104.533 24.32-152.32 4.693-14.933 1.28-31.573-10.667-43.52l-93.867-93.867z" /> | ||
233 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM256 554.667h512v-85.333h-512v85.333zM597.333 341.334h-341.333v85.333h341.333v-85.333zM768 597.334h-512v85.333h512v-85.333z" /> | ||
234 | <glyph unicode="" d="M213.333 384h597.333v85.333h-597.333v-85.333zM128 213.334h597.333v85.333h-597.333v-85.333zM298.667 640v-85.333h597.333v85.333h-597.333z" /> | ||
235 | <glyph unicode="" d="M938.24 768c0 46.933-37.973 85.333-84.907 85.333h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h597.333l170.667-170.667-0.427 768zM768 341.334h-512v85.333h512v-85.333zM768 469.334h-512v85.333h512v-85.333zM768 597.334h-512v85.333h512v-85.333z" /> | ||
236 | <glyph unicode="" d="M853.333 938.667h-682.667v-85.333h682.667v85.333zM170.667-85.333h682.667v85.333h-682.667v-85.333zM853.333 768h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM512 650.667c52.907 0 96-43.093 96-96s-43.093-96-96-96-96 43.093-96 96 43.093 96 96 96zM725.333 213.334h-426.667v64c0 71.253 142.080 106.667 213.333 106.667s213.333-35.413 213.333-106.667v-64z" /> | ||
237 | <glyph unicode="" d="M725.333 810.667h-42.667v-213.333h42.667v213.333zM640 725.334h-85.333v42.667h85.333v42.667h-128v-128h85.333v-42.667h-85.333v-42.667h128v128zM768 810.667v-213.333h42.667v85.333h85.333v128h-128zM853.333 725.334h-42.667v42.667h42.667v-42.667zM853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.093-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 281.173l93.867 94.293c11.52 11.093 14.933 27.733 10.24 42.667-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667z" /> | ||
238 | <glyph unicode="" d="M512 128c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM256 896c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM256 640c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM256 384c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 725.334c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333zM512 384c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 384c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 640c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM512 640c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM512 896c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> | ||
239 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333 0 78.933 26.88 151.467 72.107 209.067l478.293-478.293c-57.6-45.227-130.133-72.107-209.067-72.107zM781.227 217.6l-478.293 478.293c57.6 45.227 130.133 72.107 209.067 72.107 188.587 0 341.333-152.747 341.333-341.333 0-78.933-26.88-151.467-72.107-209.067z" /> | ||
240 | <glyph unicode="" d="M853.333 768h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM853.333 597.334l-341.333-213.333-341.333 213.333v85.333l341.333-213.333 341.333 213.333v-85.333z" /> | ||
241 | <glyph unicode="" d="M896 682.667h-85.333v-384h-554.667v-85.333c0-23.467 19.2-42.667 42.667-42.667h469.333l170.667-170.667v640c0 23.467-19.2 42.667-42.667 42.667zM725.333 426.667v384c0 23.467-19.2 42.667-42.667 42.667h-554.667c-23.467 0-42.667-19.2-42.667-42.667v-597.333l170.667 170.667h426.667c23.467 0 42.667 19.2 42.667 42.667z" /> | ||
242 | <glyph unicode="" d="M384 810.667l-170.667-170.24h128v-299.093h85.333v299.093h128l-170.667 170.24zM682.667 212.907v299.093h-85.333v-299.093h-128l170.667-170.24 170.667 170.24h-128z" /> | ||
243 | <glyph unicode="" d="M881.067 48.214l-100.267 100.267-268.8 268.373-151.893 152.32-60.587 60.16-117.333 117.333-54.187-54.187 118.613-118.613c-108.8-133.973-100.693-331.093 23.893-456.107 66.56-66.56 154.027-99.84 241.493-99.84 76.373 0 152.32 25.173 214.613 75.947l115.2-115.2 54.187 54.187-14.933 15.36zM512 102.827c-68.267 0-132.693 26.453-180.907 75.093-48.64 48.64-75.093 112.64-75.093 180.907 0 56.32 18.347 109.653 51.627 153.6l204.373-203.947v-205.653zM512 721.067v-195.413l309.333-309.76c58.453 126.293 35.84 280.32-68.267 384.427l-241.067 241.493-157.867-157.867 60.16-60.16 97.707 97.28z" /> | ||
244 | <glyph unicode="" d="M753.493 600.32l-241.493 241.493-241.493-241.493c-133.12-133.12-133.12-349.44 0-482.56 66.56-66.56 154.027-99.84 241.493-99.84s174.933 33.28 241.493 99.84c133.12 133.12 133.12 349.44 0 482.56zM512 102.827c-68.267 0-132.693 26.453-180.907 75.093-48.64 48.64-75.093 112.64-75.093 180.907s26.453 132.693 75.093 180.907l180.907 181.333v-618.24z" /> | ||
245 | <glyph unicode="" d="M810.667 853.334h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h170.667l128-128 128 128h170.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM554.667 170.667h-85.333v85.333h85.333v-85.333zM642.987 501.334l-38.4-39.253c-30.72-31.147-49.92-56.747-49.92-120.747h-85.333v21.333c0 46.933 19.2 89.6 49.92 120.747l52.907 53.76c15.787 15.36 25.173 36.693 25.173 60.16 0 46.933-38.4 85.333-85.333 85.333s-85.333-38.4-85.333-85.333h-85.333c0 94.293 76.373 170.667 170.667 170.667s170.667-76.373 170.667-170.667c0-37.547-15.36-71.68-39.68-96z" /> | ||
246 | <glyph unicode="" d="M512 661.334c58.88 0 106.667-47.787 106.667-106.667 0-31.573-14.080-59.307-35.413-78.933l154.88-154.88c41.813 79.36 72.533 162.133 72.533 233.813 0 165.12-133.547 298.667-298.667 298.667-84.48 0-160.427-35.413-215.040-91.733l136.107-136.107c19.627 22.187 47.36 35.84 78.933 35.84zM698.453 251.734l-558.933 558.933-54.187-54.187 135.68-135.68c-4.693-21.333-7.68-43.52-7.68-66.133 0-224 298.667-554.667 298.667-554.667s71.253 78.933 144.213 185.6l142.933-142.933 54.187 54.187-154.88 154.88z" /> | ||
247 | <glyph unicode="" d="M512 853.334c-165.12 0-298.667-133.547-298.667-298.667 0-224 298.667-554.667 298.667-554.667s298.667 330.667 298.667 554.667c0 165.12-133.547 298.667-298.667 298.667zM512 448c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667z" /> | ||
248 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM768 341.334h-512v85.333h512v-85.333zM768 469.334h-512v85.333h512v-85.333zM768 597.334h-512v85.333h512v-85.333z" /> | ||
249 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-768l170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333z" /> | ||
250 | <glyph unicode="" d="M810.24 725.334c0 46.933-37.973 85.333-84.907 85.333h-298.667l-99.84-99.84 483.84-483.84-0.427 498.347zM155.733 773.12l-54.187-54.187 111.787-111.787v-479.147c0-46.933 38.4-85.333 85.333-85.333h427.093c14.933 0 28.587 4.267 40.96 11.093l80.213-80.213 54.187 54.187-745.387 745.387z" /> | ||
251 | <glyph unicode="" d="M282.453 478.294c61.44-120.747 160.427-219.307 281.173-281.173l93.867 93.867c11.52 11.52 28.587 15.36 43.52 10.24 47.787-15.787 99.413-24.32 152.32-24.32 23.467 0 42.667-19.2 42.667-42.667v-148.907c0-23.467-19.2-42.667-42.667-42.667-400.64 0-725.333 324.693-725.333 725.333 0 23.467 19.2 42.667 42.667 42.667h149.333c23.467 0 42.667-19.2 42.667-42.667 0-53.333 8.533-104.533 24.32-152.32 4.693-14.933 1.28-31.573-10.667-43.52l-93.867-93.867z" /> | ||
252 | <glyph unicode="" d="M749.227 331.094c11.947 29.44 18.773 61.867 18.773 95.573 0 141.227-114.773 256-256 256-33.707 0-66.133-6.827-95.573-18.773l69.12-69.12c8.533 1.28 17.493 2.56 26.453 2.56 94.293 0 170.667-76.373 170.667-170.667 0-8.96-0.853-17.92-2.133-26.88l68.693-68.693zM512 768c188.587 0 341.333-152.747 341.333-341.333 0-57.6-14.933-111.787-40.533-159.573l62.72-62.72c40.107 64.853 63.147 140.8 63.147 222.293 0 235.52-191.147 426.667-426.667 426.667-81.493 0-157.44-23.467-222.293-62.72l62.293-62.293c47.787 25.173 102.4 39.68 160 39.68zM139.52 832l-54.187-54.187 89.6-89.6c-55.893-72.533-89.6-162.987-89.6-261.547 0-157.867 85.76-295.253 212.907-369.067l42.667 73.813c-101.547 59.307-170.24 168.96-170.24 295.253 0 75.093 24.32 144.213 65.28 200.107l61.013-61.44c-25.6-39.68-40.96-87.467-40.96-138.667 0-94.72 51.627-177.067 128-221.44l42.667 74.24c-50.773 29.867-85.333 84.053-85.333 147.2 0 27.733 7.253 53.333 18.773 76.373l67.413-67.413-0.853-8.96c0-46.933 38.4-85.333 85.333-85.333l8.96 0.853 320.853-320.853 54.187 54.187-756.48 756.48z" /> | ||
253 | <glyph unicode="" d="M938.667 810.667h-853.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h853.333c46.933 0 84.907 38.4 84.907 85.333l0.427 597.333c0 46.933-38.4 85.333-85.333 85.333zM341.333 682.667c70.827 0 128-57.173 128-128s-57.173-128-128-128-128 57.173-128 128 57.173 128 128 128zM597.333 170.667h-512v42.667c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-42.667zM761.6 341.334h69.973l64.427-85.333-84.907-84.907c-55.893 41.813-97.28 101.547-116.48 170.24-7.68 27.307-11.947 55.893-11.947 85.333s4.267 58.027 11.947 85.333c19.2 69.12 60.587 128.427 116.48 170.24l84.907-84.907-64.427-85.333h-69.973c-9.387-26.88-14.933-55.467-14.933-85.333s5.547-58.453 14.933-85.333z" /> | ||
254 | <glyph unicode="" d="M896 597.334v42.667l-128-85.333-128 85.333v-42.667l128-85.333 128 85.333zM938.667 810.667h-853.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h853.333c46.933 0 84.907 38.4 84.907 85.333l0.427 597.333c0 46.933-38.4 85.333-85.333 85.333zM341.333 682.667c70.827 0 128-57.173 128-128s-57.173-128-128-128-128 57.173-128 128 57.173 128 128 128zM597.333 170.667h-512v42.667c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-42.667zM938.667 426.667h-341.333v256h341.333v-256z" /> | ||
255 | <glyph unicode="" d="M1011.627 227.414c-130.133 123.307-305.92 199.253-499.627 199.253s-369.493-75.947-499.627-199.253c-7.68-7.68-12.373-18.347-12.373-30.293s4.693-22.613 12.373-30.293l105.813-105.813c7.68-7.68 18.347-12.373 30.293-12.373 11.52 0 22.187 4.693 29.867 11.947 33.707 31.573 72.107 58.027 113.493 78.933 14.080 6.827 23.893 21.333 23.893 38.4v132.267c61.867 20.48 128 31.147 196.267 31.147s134.4-10.667 196.267-30.72v-132.267c0-16.64 9.813-31.573 23.893-38.4 41.813-20.907 79.787-47.787 113.493-78.933 7.68-7.68 18.347-11.947 29.867-11.947 11.947 0 22.613 4.693 30.293 12.373l105.813 105.813c7.68 7.68 12.373 18.347 12.373 30.293 0 11.52-4.693 22.187-12.373 29.867zM902.827 671.574l-60.16 60.16-151.893-151.467 60.16-60.16s147.2 150.187 151.893 151.467zM554.667 853.334h-85.333v-213.333h85.333v213.333zM273.067 520.107l60.16 60.16-151.467 151.893-60.587-60.587c4.693-1.28 151.893-151.467 151.893-151.467z" /> | ||
256 | <glyph unicode="" d="M43.093 640l-0.427-426.667c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333h-768c-46.933 0-84.907-38.4-84.907-85.333zM810.667 640v-426.667h-597.333v426.667h597.333z" /> | ||
257 | <glyph unicode="" d="M725.333 895.574l-426.667 0.427c-46.933 0-84.907-38.4-84.907-85.333v-768c0-46.933 37.973-85.333 84.907-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v768c0 46.933-38.4 84.907-85.333 84.907zM725.333 128h-426.667v597.333h426.667v-597.333z" /> | ||
258 | <glyph unicode="" d="M43.093 640l-0.427-426.667c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333h-768c-46.933 0-84.907-38.4-84.907-85.333zM810.667 640v-426.667h-597.333v426.667h597.333z" /> | ||
259 | <glyph unicode="" d="M725.333 895.574l-426.667 0.427c-46.933 0-84.907-38.4-84.907-85.333v-768c0-46.933 37.973-85.333 84.907-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v768c0 46.933-38.4 84.907-85.333 84.907zM725.333 128h-426.667v597.333h426.667v-597.333z" /> | ||
260 | <glyph unicode="" d="M768 768l-170.667-170.667h128v-298.667c0-46.933-38.4-85.333-85.333-85.333s-85.333 38.4-85.333 85.333v298.667c0 94.293-76.373 170.667-170.667 170.667s-170.667-76.373-170.667-170.667v-298.667h-128l170.667-170.667 170.667 170.667h-128v298.667c0 46.933 38.4 85.333 85.333 85.333s85.333-38.4 85.333-85.333v-298.667c0-94.293 76.373-170.667 170.667-170.667s170.667 76.373 170.667 170.667v298.667h128l-170.667 170.667z" /> | ||
261 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM384 469.334h-85.333v85.333h85.333v-85.333zM554.667 469.334h-85.333v85.333h85.333v-85.333zM725.333 469.334h-85.333v85.333h85.333v-85.333z" /> | ||
262 | <glyph unicode="" d="M789.333 682.667c-129.707 0-234.667-104.96-234.667-234.667 0-56.747 20.053-108.8 53.76-149.333h-192.853c33.707 40.533 53.76 92.587 53.76 149.333 0 129.707-104.96 234.667-234.667 234.667s-234.667-104.96-234.667-234.667 104.96-234.667 234.667-234.667h554.667c129.707 0 234.667 104.96 234.667 234.667s-104.96 234.667-234.667 234.667zM234.667 298.667c-82.347 0-149.333 66.987-149.333 149.333s66.987 149.333 149.333 149.333 149.333-66.987 149.333-149.333-66.987-149.333-149.333-149.333zM789.333 298.667c-82.347 0-149.333 66.987-149.333 149.333s66.987 149.333 149.333 149.333 149.333-66.987 149.333-149.333-66.987-149.333-149.333-149.333z" /> | ||
263 | <glyph unicode="" d="M539.733 512c-34.987 99.413-129.707 170.667-241.067 170.667-141.227 0-256-114.773-256-256s114.773-256 256-256c111.36 0 206.080 71.253 241.067 170.667h185.6v-170.667h170.667v170.667h85.333v170.667h-441.6zM298.667 341.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> | ||
264 | <glyph unicode="" d="M810.667 810.667h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM725.333 384h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" /> | ||
265 | <glyph unicode="" d="M554.667 640h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> | ||
266 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM725.333 384h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" /> | ||
267 | <glyph unicode="" d="M810.667 384h-256v-256h-85.333v256h-256v85.333h256v256h85.333v-256h256v-85.333z" /> | ||
268 | <glyph unicode="" d="M876.373 715.52l-59.307 71.68c-11.52 14.507-29.013 23.467-49.067 23.467h-512c-20.053 0-37.547-8.96-49.493-23.467l-58.88-71.68c-12.373-14.507-19.627-33.707-19.627-54.187v-533.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v533.333c0 20.48-7.253 39.68-19.627 54.187zM512 192l-234.667 234.667h149.333v85.333h170.667v-85.333h149.333l-234.667-234.667zM218.453 725.334l34.56 42.667h512l40.107-42.667h-586.667z" /> | ||
269 | <glyph unicode="" d="M938.667 810.667h-640c-29.44 0-52.48-14.933-67.84-37.547l-230.827-346.453 230.827-346.027c15.36-22.613 38.4-37.973 67.84-37.973h640c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 273.494l-60.16-60.16-153.173 153.173-153.173-153.173-60.16 60.16 153.173 153.173-153.173 153.173 60.16 60.16 153.173-153.173 153.173 153.173 60.16-60.16-153.173-153.173 153.173-153.173z" /> | ||
270 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM170.667 426.667c0 188.587 152.747 341.333 341.333 341.333 78.933 0 151.467-26.88 209.067-72.107l-478.293-478.293c-45.227 57.6-72.107 130.133-72.107 209.067zM512 85.334c-78.933 0-151.467 26.88-209.067 72.107l478.293 478.293c45.227-57.6 72.107-130.133 72.107-209.067 0-188.587-152.747-341.333-341.333-341.333z" /> | ||
271 | <glyph unicode="" d="M810.667 665.174l-60.16 60.16-238.507-238.507-238.507 238.507-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 238.507 238.507 238.507-238.507 60.16 60.16-238.507 238.507z" /> | ||
272 | <glyph unicode="" d="M682.667 896h-512c-46.933 0-85.333-38.4-85.333-85.333v-597.333h85.333v597.333h512v85.333zM810.667 725.334h-469.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h469.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 42.667h-469.333v597.333h469.333v-597.333z" /> | ||
273 | <glyph unicode="" d="M411.307 612.694c9.813 21.333 15.36 44.8 15.36 69.973 0 94.293-76.373 170.667-170.667 170.667s-170.667-76.373-170.667-170.667 76.373-170.667 170.667-170.667c25.173 0 48.64 5.547 69.973 15.36l100.693-100.693-100.693-100.693c-21.333 9.813-44.8 15.36-69.973 15.36-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667c0 25.173-5.547 48.64-15.36 69.973l100.693 100.693 298.667-298.667h128v42.667l-527.36 527.36zM256 597.334c-46.933 0-85.333 37.973-85.333 85.333s38.4 85.333 85.333 85.333 85.333-37.973 85.333-85.333-38.4-85.333-85.333-85.333zM256 85.334c-46.933 0-85.333 37.973-85.333 85.333s38.4 85.333 85.333 85.333 85.333-37.973 85.333-85.333-38.4-85.333-85.333-85.333zM512 405.334c-11.947 0-21.333 9.387-21.333 21.333s9.387 21.333 21.333 21.333 21.333-9.387 21.333-21.333-9.387-21.333-21.333-21.333zM810.667 810.667l-256-256 85.333-85.333 298.667 298.667v42.667z" /> | ||
274 | <glyph unicode="" d="M810.667 853.334h-178.347c-17.92 49.493-64.853 85.333-120.32 85.333s-102.4-35.84-120.32-85.333h-178.347c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM512 853.334c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM810.667 85.334h-597.333v682.667h85.333v-128h426.667v128h85.333v-682.667z" /> | ||
275 | <glyph unicode="" d="M128 202.667v-160h160l471.893 471.893-160 160-471.893-471.893zM883.627 638.294c16.64 16.64 16.64 43.52 0 60.16l-99.84 99.84c-16.64 16.64-43.52 16.64-60.16 0l-78.080-78.080 160-160 78.080 78.080z" /> | ||
276 | <glyph unicode="" d="M938.24 597.334c0 30.72-15.787 57.6-40.107 72.533l-386.133 226.133-386.133-226.133c-24.32-14.933-40.533-41.813-40.533-72.533v-426.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333l-0.427 426.667zM512 384l-352.427 220.16 352.427 206.507 352.427-206.507-352.427-220.16z" /> | ||
277 | <glyph unicode="" d="M426.667 170.667h170.667v85.333h-170.667v-85.333zM128 682.667v-85.333h768v85.333h-768zM256 384h512v85.333h-512v-85.333z" /> | ||
278 | <glyph unicode="" d="M614.4 682.667l-17.067 85.333h-384v-725.333h85.333v298.667h238.933l17.067-85.333h298.667v426.667z" /> | ||
279 | <glyph unicode="" d="M512 597.334v170.667l341.333-341.333-341.333-341.333v170.667h-341.333v341.333z" /> | ||
280 | <glyph unicode="" d="M195.84 644.694c29.867 30.293 59.733 57.6 72.96 52.053 21.333-8.533 0-43.947-12.8-64.853-10.667-17.92-122.027-165.973-122.027-269.227 0-54.613 20.48-99.84 57.173-127.147 32-23.893 74.24-31.147 112.64-19.627 45.653 13.227 83.2 59.733 130.56 118.187 51.627 63.573 120.747 146.773 174.080 146.773 69.547 0 70.4-43.093 75.093-76.373-161.28-27.307-229.547-156.587-229.547-229.12s61.44-131.84 136.96-131.84c69.547 0 183.040 56.747 200.107 260.267h104.96v106.667h-105.387c-6.4 70.4-46.507 179.2-171.947 179.2-96 0-178.347-81.493-210.773-121.173-24.747-31.147-87.893-105.813-97.707-116.053-10.667-12.8-29.013-35.84-47.36-35.84-19.2 0-30.72 35.413-15.36 81.92 14.933 46.507 59.733 122.027 78.933 150.187 33.28 48.64 55.467 81.92 55.467 139.947 0 92.587-69.973 122.027-107.093 122.027-56.32 0-105.387-42.667-116.053-53.333-15.36-15.36-28.16-28.16-37.547-39.68l74.667-72.96zM592.213 147.2c-13.227 0-31.573 11.093-31.573 30.72 0 25.6 31.147 93.867 122.453 117.76-12.8-114.773-61.013-148.48-90.88-148.48z" /> | ||
281 | <glyph unicode="" d="M810.667 810.667h-597.76c-46.933 0-84.48-38.4-84.48-85.333l-0.427-597.333c0-46.933 37.973-85.333 84.907-85.333h597.76c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 298.667h-170.667c0-70.827-57.173-128-128-128s-128 57.173-128 128h-171.093v426.667h597.76v-426.667zM682.667 512h-85.333v128h-170.667v-128h-85.333l170.667-170.667 170.667 170.667z" /> | ||
282 | <glyph unicode="" d="M166.4 426.667c0 72.96 59.307 132.267 132.267 132.267h170.667v81.067h-170.667c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333h170.667v81.067h-170.667c-72.96 0-132.267 59.307-132.267 132.267zM341.333 384h341.333v85.333h-341.333v-85.333zM725.333 640h-170.667v-81.067h170.667c72.96 0 132.267-59.307 132.267-132.267s-59.307-132.267-132.267-132.267h-170.667v-81.067h170.667c117.76 0 213.333 95.573 213.333 213.333s-95.573 213.333-213.333 213.333z" /> | ||
283 | <glyph unicode="" d="M853.333 768h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM853.333 597.334l-341.333-213.333-341.333 213.333v85.333l341.333-213.333 341.333 213.333v-85.333z" /> | ||
284 | <glyph unicode="" d="M853.333 768h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM853.333 597.334l-341.333-213.333-341.333 213.333v85.333l341.333-213.333 341.333 213.333v-85.333z" /> | ||
285 | <glyph unicode="" d="M785.067 486.4c-78.933 68.693-181.333 110.933-294.4 110.933-198.4 0-366.080-129.28-424.96-308.053l100.693-33.28c44.8 136.107 172.8 234.667 324.267 234.667 83.2 0 159.147-30.72 218.453-80.213l-154.453-154.453h384v384l-153.6-153.6z" /> | ||
286 | <glyph unicode="" d="M298.667 469.334v-85.333h426.667v85.333h-426.667zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> | ||
287 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM725.333 384h-426.667v85.333h426.667v-85.333z" /> | ||
288 | <glyph unicode="" d="M810.667 384h-597.333v85.333h597.333v-85.333z" /> | ||
289 | <glyph unicode="" d="M298.667 597.334v128l-298.667-298.667 298.667-298.667v128l-170.667 170.667 170.667 170.667zM554.667 554.667v170.667l-298.667-298.667 298.667-298.667v174.933c213.333 0 362.667-68.267 469.333-217.6-42.667 213.333-170.667 426.667-469.333 469.333z" /> | ||
290 | <glyph unicode="" d="M426.667 554.667v170.667l-298.667-298.667 298.667-298.667v174.933c213.333 0 362.667-68.267 469.333-217.6-42.667 213.333-170.667 426.667-469.333 469.333z" /> | ||
291 | <glyph unicode="" d="M671.147 810.667h-318.293l-224.853-224.853v-318.293l224.853-224.853h318.293l224.853 224.853v318.293l-224.853 224.853zM512 200.534c-30.72 0-55.467 24.747-55.467 55.467s24.747 55.467 55.467 55.467c30.72 0 55.467-24.747 55.467-55.467s-24.747-55.467-55.467-55.467zM554.667 384h-85.333v256h85.333v-256z" /> | ||
292 | <glyph unicode="" d="M725.333 810.667h-512c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v512l-170.667 170.667zM512 128c-70.827 0-128 57.173-128 128s57.173 128 128 128 128-57.173 128-128-57.173-128-128-128zM640 554.667h-426.667v170.667h426.667v-170.667z" /> | ||
293 | <glyph unicode="" d="M128 725.334h85.333v85.333c-46.933 0-85.333-38.4-85.333-85.333zM128 384h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM128 554.667h85.333v85.333h-85.333v-85.333zM554.667 810.667h-85.333v-85.333h85.333v85.333zM810.667 810.667v-85.333h85.333c0 46.933-38.4 85.333-85.333 85.333zM213.333 42.667v85.333h-85.333c0-46.933 38.4-85.333 85.333-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM384 810.667h-85.333v-85.333h85.333v85.333zM469.333 42.667h85.333v85.333h-85.333v-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 42.667c46.933 0 85.333 38.4 85.333 85.333h-85.333v-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM640 725.334h85.333v85.333h-85.333v-85.333zM298.667 213.334h426.667v426.667h-426.667v-426.667zM384 554.667h256v-256h-256v256z" /> | ||
294 | <glyph unicode="" d="M85.76 42.667l895.573 384-895.573 384-0.427-298.667 640-85.333-640-85.333z" /> | ||
295 | <glyph unicode="" d="M128 170.667h256v85.333h-256v-85.333zM128 682.667v-85.333h768v85.333h-768zM128 384h512v85.333h-512v-85.333z" /> | ||
296 | <glyph unicode="" d="M213.333 213.334v-85.333h597.333v85.333h-597.333zM405.333 392.534h213.333l38.4-93.867h89.6l-202.667 469.333h-64l-202.667-469.333h89.6l38.4 93.867zM512 683.52l79.787-214.187h-159.573l79.787 214.187z" /> | ||
297 | <glyph unicode="" d="M533.333 597.334c-113.067 0-215.467-42.24-294.4-110.933l-153.6 153.6v-384h384l-154.453 154.453c59.307 49.493 134.827 80.213 218.453 80.213 151.040 0 279.467-98.56 324.267-234.667l101.12 33.28c-59.307 178.773-226.987 308.053-425.387 308.053z" /> | ||
298 | <glyph unicode="" d="M938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM336.213 794.027l-54.613 65.28-196.267-164.267 55.040-65.28 195.84 164.267zM533.333 597.334h-64v-256l202.667-121.6 32 52.48-170.667 101.12v224zM512 768c-212.053 0-384-171.947-384-384s171.52-384 384-384c212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> | ||
299 | <glyph unicode="" d="M938.667 695.467l-196.267 166.4-55.467-64 196.267-166.4 55.467 64zM337.067 793.6l-55.467 64-196.267-162.133 55.467-64 196.267 162.133zM533.333 597.334h-64v-256l200.533-123.733 34.133 51.2-170.667 102.4v226.133zM512 768c-213.333 0-384-170.667-384-384s170.667-384 384-384 384 170.667 384 384-170.667 384-384 384zM512 85.334c-166.4 0-298.667 132.267-298.667 298.667s132.267 298.667 298.667 298.667 298.667-132.267 298.667-298.667-132.267-298.667-298.667-298.667z" /> | ||
300 | <glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM533.333 640h-64v-256l224-134.4 32 52.48-192 113.92z" /> | ||
301 | <glyph unicode="" d="M336.213 794.027l-54.613 65.28-196.267-164.267 55.040-65.28 195.84 164.267zM938.667 694.614l-196.267 164.693-55.040-65.28 196.267-164.693 55.040 65.28zM512 768c-212.053 0-384-171.947-384-384s171.52-384 384-384c212.053 0 384 171.947 384 384s-171.947 384-384 384zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667zM554.667 554.667h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333h-128v128z" /> | ||
302 | <glyph unicode="" d="M554.667 554.667v234.667c0 35.413-28.587 64-64 64s-64-28.587-64-64v-157.013l334.080-334.080 135.253-42.24v85.333l-341.333 213.333zM128 713.814l212.907-212.907-255.573-159.573v-85.333l341.333 106.667v-234.667l-85.333-64v-64l149.333 42.667 149.333-42.667v64l-85.333 64v159.147l244.48-244.48 54.187 54.187-671.147 671.147-54.187-54.187z" /> | ||
303 | <glyph unicode="" d="M896 256v85.333l-341.333 213.333v234.667c0 35.413-28.587 64-64 64s-64-28.587-64-64v-234.667l-341.333-213.333v-85.333l341.333 106.667v-234.667l-85.333-64v-64l149.333 42.667 149.333-42.667v64l-85.333 64v234.667l341.333-106.667z" /> | ||
304 | <glyph unicode="" d="M298.667 213.334v-157.867c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v157.867h-426.667z" /> | ||
305 | <glyph unicode="" d="M298.667 298.667v-243.2c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v243.2h-426.667z" /> | ||
306 | <glyph unicode="" d="M298.667 384v-328.533c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v328.533h-426.667z" /> | ||
307 | <glyph unicode="" d="M298.667 469.334v-413.867c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v413.867h-426.667z" /> | ||
308 | <glyph unicode="" d="M298.667 554.667v-499.2c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v499.2h-426.667z" /> | ||
309 | <glyph unicode="" d="M298.667 597.334v-541.867c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v541.867h-426.667z" /> | ||
310 | <glyph unicode="" d="M668.587 768h-71.253v85.333h-170.667v-85.333h-71.253c-31.147 0-56.747-25.6-56.747-56.747v-654.080c0-31.573 25.6-57.173 56.747-57.173h312.747c31.573 0 57.173 25.6 57.173 56.747v654.507c0 31.147-25.6 56.747-56.747 56.747zM554.667 170.667h-85.333v85.333h85.333v-85.333zM554.667 341.334h-85.333v213.333h85.333v-213.333z" /> | ||
311 | <glyph unicode="" d="M469.333 85.334v128h-170.667v-157.867c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v157.867h-192l-64-128z" /> | ||
312 | <glyph unicode="" d="M469.333 85.334v234.667h-170.667v-264.533c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v264.533h-136.533l-119.467-234.667z" /> | ||
313 | <glyph unicode="" d="M618.667 362.667l-149.333-277.333v234.667h-85.333l21.333 42.667h-106.667v-307.2c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v307.2h-106.667z" /> | ||
314 | <glyph unicode="" d="M554.667 405.334h85.333l-170.667-320v234.667h-85.333l81.067 149.333h-166.4v-413.867c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v413.867h-170.667v-64z" /> | ||
315 | <glyph unicode="" d="M558.933 405.334h81.067l-170.667-320v234.667h-85.333l123.733 234.667h-209.067v-499.2c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v499.2h-170.667v-149.333h4.267z" /> | ||
316 | <glyph unicode="" d="M640 405.334l-170.667-320v234.667h-85.333l149.333 277.333h-234.667v-541.867c0-29.867 25.6-55.467 55.467-55.467h315.733c29.867 0 55.467 25.6 55.467 55.467v541.867h-170.667v-192h85.333z" /> | ||
317 | <glyph unicode="" d="M668.587 768h-71.253v85.333h-170.667v-85.333h-71.253c-31.147 0-56.747-25.6-56.747-56.747v-654.080c0-31.573 25.6-57.173 56.747-57.173h312.747c31.573 0 57.173 25.6 57.173 56.747v654.507c0 31.147-25.6 56.747-56.747 56.747zM469.333 85.334v234.667h-85.333l170.667 320v-234.667h85.333l-170.667-320z" /> | ||
318 | <glyph unicode="" d="M668.587 768h-71.253v85.333h-170.667v-85.333h-71.253c-31.147 0-56.747-25.6-56.747-56.747v-654.080c0-31.573 25.6-57.173 56.747-57.173h312.747c31.573 0 57.173 25.6 57.173 56.747v654.507c0 31.147-25.6 56.747-56.747 56.747z" /> | ||
319 | <glyph unicode="" d="M668.587 768h-71.253v85.333h-170.667v-85.333h-71.253c-31.147 0-56.747-25.6-56.747-56.747v-654.080c0-31.573 25.6-57.173 56.747-57.173h312.747c31.573 0 57.173 25.6 57.173 56.747v654.507c0 31.147-25.6 56.747-56.747 56.747z" /> | ||
320 | <glyph unicode="" d="M668.587 768h-71.253v85.333h-170.667v-85.333h-71.253c-31.147 0-56.747-25.6-56.747-56.747v-654.080c0-31.573 25.6-57.173 56.747-57.173h312.747c31.573 0 57.173 25.6 57.173 56.747v654.507c0 31.147-25.6 56.747-56.747 56.747zM552.533 172.8h-81.067v81.067h81.067v-81.067zM610.133 397.227s-16.213-17.92-28.587-30.293c-20.48-20.48-35.413-49.067-35.413-68.267h-68.267c0 35.413 19.627 64.853 39.68 85.333l39.68 40.107c11.52 11.52 18.773 27.733 18.773 45.227 0 35.413-28.587 64-64 64s-64-28.587-64-64h-64c0 70.827 57.173 128 128 128s128-57.173 128-128c0-28.16-11.52-53.76-29.867-72.107z" /> | ||
321 | <glyph unicode="" d="M298.667 426.667l-85.333 85.333-85.333-85.333 85.333-85.333 85.333 85.333zM755.627 609.707l-243.627 243.627h-42.667v-323.84l-195.84 195.84-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 195.84 195.84v-323.84h42.667l243.627 243.627-183.467 183.040 183.467 183.040zM554.667 689.92l80.213-80.213-80.213-80.213v160.427zM634.88 243.627l-80.213-80.213v160.427l80.213-80.213zM810.667 512l-85.333-85.333 85.333-85.333 85.333 85.333-85.333 85.333z" /> | ||
322 | <glyph unicode="" d="M554.667 689.92l80.213-80.213-68.267-68.267 60.16-60.16 128.853 128.853-243.627 243.2h-42.667v-214.613l85.333-85.333v136.533zM230.827 768l-60.16-60.16 281.173-281.173-238.507-238.507 60.16-60.16 195.84 195.84v-323.84h42.667l183.040 183.040 98.133-97.707 60.16 60.16-622.507 622.507zM554.667 163.414v160.427l80.213-80.213-80.213-80.213z" /> | ||
323 | <glyph unicode="" d="M607.573 426.24l98.987-98.987c11.947 30.72 18.773 64.427 18.773 99.413s-6.827 67.84-18.347 98.56l-99.413-98.987zM833.28 652.374l-53.76-53.76c26.88-51.627 41.813-109.653 41.813-171.52s-15.36-120.32-41.813-171.52l51.2-51.2c41.387 65.707 65.707 143.36 65.707 226.56-0.427 80.64-23.467 156.587-63.147 221.44zM670.293 609.707l-243.627 243.627h-42.667v-323.84l-195.84 195.84-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 195.84 195.84v-323.84h42.667l243.627 243.627-183.467 183.040 183.467 183.040zM469.333 689.92l80.213-80.213-80.213-80.213v160.427zM549.547 243.627l-80.213-80.213v160.427l80.213-80.213z" /> | ||
324 | <glyph unicode="" d="M755.627 609.707l-243.627 243.627h-42.667v-323.84l-195.84 195.84-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 195.84 195.84v-323.84h42.667l243.627 243.627-183.467 183.040 183.467 183.040zM554.667 689.92l80.213-80.213-80.213-80.213v160.427zM634.88 243.627l-80.213-80.213v160.427l80.213-80.213z" /> | ||
325 | <glyph unicode="" d="M462.933 398.934h98.133l-49.067 155.733-49.067-155.733zM853.333 567.894v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107l141.227 141.227-141.227 141.227zM610.133 256l-29.867 85.333h-136.533l-29.867-85.333h-81.067l136.533 384h85.333l136.533-384h-81.067z" /> | ||
326 | <glyph unicode="" d="M853.333 567.894v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107l141.227 141.227-141.227 141.227zM512 170.667c-141.227 0-256 114.773-256 256s114.773 256 256 256 256-114.773 256-256-114.773-256-256-256zM512 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667z" /> | ||
327 | <glyph unicode="" d="M853.333 285.44l141.227 141.227-141.227 141.227v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107zM512 170.667c-141.227 0-256 114.773-256 256s114.773 256 256 256 256-114.773 256-256-114.773-256-256-256z" /> | ||
328 | <glyph unicode="" d="M853.333 285.44l141.227 141.227-141.227 141.227v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107zM512 170.667v512c141.227 0 256-114.773 256-256s-114.773-256-256-256z" /> | ||
329 | <glyph unicode="" d="M554.667 851.2v-129.28c144.64-20.907 256-144.64 256-295.253 0-38.4-7.68-74.667-20.48-108.373l110.933-65.28c23.893 52.907 37.547 111.787 37.547 173.653 0 221.013-168.533 403.2-384 424.533zM512 128c-165.12 0-298.667 133.547-298.667 298.667 0 150.613 111.36 274.347 256 295.253v129.28c-215.893-21.333-384-203.093-384-424.533 0-235.52 190.72-426.667 426.24-426.667 141.227 0 266.24 68.693 343.893 174.507l-110.933 65.28c-54.613-68.267-138.24-111.787-232.533-111.787z" /> | ||
330 | <glyph unicode="" d="M298.667 725.334h426.667v-85.333h85.333v170.667c0 46.933-38.4 84.907-85.333 84.907l-426.667 0.427c-46.933 0-85.333-38.4-85.333-85.333v-170.667h85.333v85.333zM657.493 230.827l195.84 195.84-195.84 195.84-60.16-60.587 135.253-135.253-135.253-135.253 60.16-60.587zM426.667 291.414l-135.253 135.253 135.253 135.253-60.16 60.587-195.84-195.84 195.84-195.84 60.16 60.587zM725.333 128h-426.667v85.333h-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v170.667h-85.333v-85.333z" /> | ||
331 | <glyph unicode="" d="M170.667 682.667h768v85.333h-768c-46.933 0-85.333-38.4-85.333-85.333v-469.333h-85.333v-128h597.333v128h-426.667v469.333zM981.333 597.334h-256c-23.467 0-42.667-19.2-42.667-42.667v-426.667c0-23.467 19.2-42.667 42.667-42.667h256c23.467 0 42.667 19.2 42.667 42.667v426.667c0 23.467-19.2 42.667-42.667 42.667zM938.667 213.334h-170.667v298.667h170.667v-298.667z" /> | ||
332 | <glyph unicode="" d="M896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h213.333v-85.333h341.333v85.333h213.333c46.933 0 84.907 38.4 84.907 85.333l0.427 512c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-768v512h768v-512zM810.667 597.334h-469.333v-85.333h469.333v85.333zM810.667 426.667h-469.333v-85.333h469.333v85.333zM298.667 597.334h-85.333v-85.333h85.333v85.333zM298.667 426.667h-85.333v-85.333h85.333v85.333z" /> | ||
333 | <glyph unicode="" d="M512 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM893.44 469.334c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-177.92-19.627-319.147-160.853-338.773-338.773h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c177.92 19.627 319.147 160.853 338.773 338.773h87.893v85.333h-87.893zM512 128c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> | ||
334 | <glyph unicode="" d="M893.44 469.334c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-177.92-19.627-319.147-160.853-338.773-338.773h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c177.92 19.627 319.147 160.853 338.773 338.773h87.893v85.333h-87.893zM512 128c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> | ||
335 | <glyph unicode="" d="M893.44 469.334c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-48.213-5.12-93.44-19.627-134.827-41.387l64-64c34.987 14.507 73.387 22.613 113.493 22.613 165.12 0 298.667-133.547 298.667-298.667 0-40.107-8.107-78.507-22.187-113.067l64-64c21.333 40.96 35.84 86.187 41.387 134.4h87.467v85.333h-87.893zM128 756.48l87.040-87.040c-45.653-55.893-76.373-124.587-84.48-200.107h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c75.52 8.533 144.213 38.827 200.107 84.48l87.040-87.040 54.187 54.187-713.813 713.813-54.187-54.187zM694.187 190.294c-50.347-38.827-113.493-62.293-182.187-62.293-165.12 0-298.667 133.547-298.667 298.667 0 68.693 23.467 131.84 62.293 182.187l418.56-418.56z" /> | ||
336 | <glyph unicode="" d="M893.44 469.334c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-48.213-5.12-93.44-19.627-134.827-41.387l64-64c34.987 14.507 73.387 22.613 113.493 22.613 165.12 0 298.667-133.547 298.667-298.667 0-40.107-8.107-78.507-22.187-113.067l64-64c21.333 40.96 35.84 86.187 41.387 134.4h87.467v85.333h-87.893zM128 756.48l87.040-87.040c-45.653-55.893-76.373-124.587-84.48-200.107h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c75.52 8.533 144.213 38.827 200.107 84.48l87.040-87.040 54.187 54.187-713.813 713.813-54.187-54.187zM694.187 190.294c-50.347-38.827-113.493-62.293-182.187-62.293-165.12 0-298.667 133.547-298.667 298.667 0 68.693 23.467 131.84 62.293 182.187l418.56-418.56z" /> | ||
337 | <glyph unicode="" d="M893.44 469.334c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-177.92-19.627-319.147-160.853-338.773-338.773h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c177.92 19.627 319.147 160.853 338.773 338.773h87.893v85.333h-87.893zM512 128c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> | ||
338 | <glyph unicode="" d="M298.667 170.667h85.333v512h-85.333v-512zM469.333-0h85.333v853.333h-85.333v-853.333zM128 341.334h85.333v170.667h-85.333v-170.667zM640 170.667h85.333v512h-85.333v-512zM810.667 512v-170.667h85.333v170.667h-85.333z" /> | ||
339 | <glyph unicode="" d="M85.333-0h853.333v853.333zM725.333 640l-640-640h640z" /> | ||
340 | <glyph unicode="" d="M149.333 473.6l362.667-452.267 362.667 448c-21.333 17.067-157.867 128-362.667 128s-341.333-110.933-362.667-123.733z" /> | ||
341 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM853.333 85.334h-682.667v682.667h682.667v-682.667zM768 682.667h-213.333c-46.933 0-85.333-38.4-85.333-85.333v-97.28c-25.6-14.933-42.667-41.813-42.667-73.387 0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333c0 31.573-17.067 58.88-42.667 73.387v97.28h128v-341.333h-341.333v341.333h85.333v85.333h-170.667v-512h512v512z" /> | ||
342 | <glyph unicode="" d="M170.667 768h298.667v85.333h-298.667c-46.933 0-85.333-38.4-85.333-85.333v-298.667h85.333v298.667zM426.667 384l-170.667-213.333h512l-128 170.667-86.613-115.627-126.72 158.293zM725.333 576c0 35.413-28.587 64-64 64s-64-28.587-64-64 28.587-64 64-64 64 28.587 64 64zM853.333 853.334h-298.667v-85.333h298.667v-298.667h85.333v298.667c0 46.933-38.4 85.333-85.333 85.333zM853.333 85.334h-298.667v-85.333h298.667c46.933 0 85.333 38.4 85.333 85.333v298.667h-85.333v-298.667zM170.667 384h-85.333v-298.667c0-46.933 38.4-85.333 85.333-85.333h298.667v85.333h-298.667v298.667z" /> | ||
343 | <glyph unicode="" d="M554.667 384v-341.333h341.333v341.333h-341.333zM128 42.667h341.333v341.333h-341.333v-341.333zM128 810.667v-341.333h341.333v341.333h-341.333zM710.827 866.56l-241.493-241.067 241.493-241.493 241.493 241.493-241.493 241.067z" /> | ||
344 | <glyph unicode="" d="M896 725.334h-768c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 213.334h-597.333v426.667h597.333v-426.667zM426.667 256h170.667c23.467 0 42.667 19.2 42.667 42.667v128c0 23.467-19.2 42.667-42.667 42.667v42.667c0 47.36-38.4 85.333-85.333 85.333-47.36 0-85.333-38.4-85.333-85.333v-42.667c-23.467 0-42.667-19.2-42.667-42.667v-128c0-23.467 19.2-42.667 42.667-42.667zM460.8 512c0 28.16 23.040 51.2 51.2 51.2s51.2-23.040 51.2-51.2v-42.667h-102.4v42.667z" /> | ||
345 | <glyph unicode="" d="M426.667 256h170.667c23.467 0 42.667 19.2 42.667 42.667v128c0 23.467-19.2 42.667-42.667 42.667v42.667c0 47.36-38.4 85.333-85.333 85.333-47.36 0-85.333-38.4-85.333-85.333v-42.667c-23.467 0-42.667-19.2-42.667-42.667v-128c0-23.467 19.2-42.667 42.667-42.667zM460.8 512c0 28.16 23.040 51.2 51.2 51.2s51.2-23.040 51.2-51.2v-42.667h-102.4v42.667zM725.333 896h-426.667c-46.933 0-85.333-38.4-85.333-85.333v-768c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v768c0 46.933-38.4 85.333-85.333 85.333zM725.333 128h-426.667v597.333h426.667v-597.333z" /> | ||
346 | <glyph unicode="" d="M992 393.814l-109.653 109.653-60.16-60.16 94.72-94.72-241.493-241.493-482.987 482.987 241.493 241.493 89.6-89.6 60.16 60.16-104.533 104.533c-25.173 25.173-65.707 25.173-90.453 0l-271.36-271.36c-25.173-25.173-25.173-65.707 0-90.453l512.853-512.853c25.173-25.173 65.707-25.173 90.453 0l271.36 271.36c25.173 25.173 25.173 65.707 0 90.453zM361.387 64.854c-139.52 65.707-239.36 201.387-254.72 361.813h-64c21.76-262.827 241.493-469.333 509.867-469.333l28.16 1.28-162.56 162.987-56.747-56.747zM682.667 554.667h213.333c23.467 0 42.667 19.2 42.667 42.667v170.667c0 23.467-19.2 42.667-42.667 42.667v21.333c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-21.333c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667zM716.8 832c0 40.107 32.427 72.533 72.533 72.533s72.533-32.427 72.533-72.533v-21.333h-145.067v21.333z" /> | ||
347 | <glyph unicode="" d="M703.147 831.147c139.52-66.133 239.36-201.387 254.72-361.813h64c-21.76 262.827-241.493 469.333-509.867 469.333l-28.16-1.28 162.56-162.56 56.747 56.32zM436.48 864c-25.173 25.173-65.707 25.173-90.453 0l-271.36-271.36c-25.173-25.173-25.173-65.707 0-90.453l512.853-512.853c25.173-25.173 65.707-25.173 90.453 0l271.36 271.36c25.173 25.173 25.173 65.707 0 90.453l-512.853 512.853zM632.747 34.56l-512.853 512.853 271.36 271.36 512.853-512.853-271.36-271.36zM320.853 22.187c-139.52 65.707-239.36 201.387-254.72 361.813h-64c21.76-262.827 241.493-469.333 509.867-469.333l28.16 1.28-162.56 162.56-56.747-56.32z" /> | ||
348 | <glyph unicode="" d="M768 853.334h-341.333l-255.147-256-0.853-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM512 597.334h-85.333v170.667h85.333v-170.667zM640 597.334h-85.333v170.667h85.333v-170.667zM768 597.334h-85.333v170.667h85.333v-170.667z" /> | ||
349 | <glyph unicode="" d="M384 256h277.333c58.88 0 106.667 47.787 106.667 106.667s-47.787 106.667-106.667 106.667h-2.133c-10.24 72.107-72.107 128-147.2 128-59.733 0-110.933-35.413-134.827-86.187h-6.827c-64.427-6.827-114.347-61.013-114.347-127.147 0-70.827 57.173-128 128-128zM896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 127.574h-768v598.187h768v-598.187z" /> | ||
350 | <glyph unicode="" d="M512 426.667l-426.667-426.667h426.667v426.667z" /> | ||
351 | <glyph unicode="" d="M597.333 512l-512-512h512v512z" /> | ||
352 | <glyph unicode="" d="M725.333 640l-640-640h640v640z" /> | ||
353 | <glyph unicode="" d="M85.333-0h853.333v853.333z" /> | ||
354 | <glyph unicode="" d="M853.333-0h85.333v85.333h-85.333v-85.333zM853.333 512v-341.333h85.333v341.333h-85.333z" /> | ||
355 | <glyph unicode="" d="M853.333 512v-341.333h85.333v341.333h-85.333zM512-0v426.667l-426.667-426.667h426.667zM853.333-0h85.333v85.333h-85.333v-85.333z" /> | ||
356 | <glyph unicode="" d="M597.333-0v512l-512-512h512zM853.333 512v-341.333h85.333v341.333h-85.333zM853.333-0h85.333v85.333h-85.333v-85.333z" /> | ||
357 | <glyph unicode="" d="M725.333-0v640l-640-640h640zM853.333 512v-341.333h85.333v341.333h-85.333zM853.333-0h85.333v85.333h-85.333v-85.333z" /> | ||
358 | <glyph unicode="" d="M853.333 170.667h85.333v341.333h-85.333v-341.333zM853.333-0h85.333v85.333h-85.333v-85.333zM85.333-0h682.667v597.333h170.667v256l-853.333-853.333z" /> | ||
359 | <glyph unicode="" d="M810.24 725.334c0 46.933-37.973 85.333-84.907 85.333h-298.667l-99.84-99.84 483.84-483.84-0.427 498.347zM155.733 773.12l-54.187-54.187 111.787-111.787v-479.147c0-46.933 38.4-85.333 85.333-85.333h427.093c14.933 0 28.587 4.267 40.96 11.093l80.213-80.213 54.187 54.187-745.387 745.387z" /> | ||
360 | <glyph unicode="" d="M853.333 647.254v-561.92h-561.92l561.92 561.92zM938.667 853.334l-853.333-853.333h853.333v853.333z" /> | ||
361 | <glyph unicode="" d="M896 896l-366.507-366.507 366.507-366.507v733.013zM203.52 746.667l-54.187-54.187 271.36-271.36-378.027-378.453h756.48l85.333-85.333 54.187 54.187-735.147 735.147z" /> | ||
362 | <glyph unicode="" d="M285.867 302.934l226.133-281.6 226.133 281.6c-8.533 12.8-98.133 81.067-226.133 81.067s-217.6-68.267-226.133-81.067z" /> | ||
363 | <glyph unicode="" d="M204.8 405.334l307.2-384 307.2 384c-17.067 12.8-132.267 106.667-307.2 106.667s-294.4-93.867-307.2-106.667z" /> | ||
364 | <glyph unicode="" d="M149.333 473.6l362.667-452.267 362.667 448c-21.333 17.067-157.867 128-362.667 128s-341.333-110.933-362.667-123.733z" /> | ||
365 | <glyph unicode="" d="M512 21.334l494.933 618.667c-17.067 12.8-209.067 170.667-494.933 170.667s-477.867-157.867-494.933-170.667l494.933-618.667c0 0 0 0 0 0z" /> | ||
366 | <glyph unicode="" d="M1008.64 640c-19.2 14.507-210.347 170.667-496.64 170.667-64 0-123.307-8.107-177.067-20.48l440.747-440.32 232.96 290.133zM727.040 289.28l-587.52 587.947-54.187-54.613 87.467-87.893c-91.307-41.813-147.627-87.040-157.44-94.72l496.64-618.667 0.427 0.427 166.4 207.36 141.653-141.653 54.187 54.187-147.627 147.627z" /> | ||
367 | <glyph unicode="" d="M554.667-0l243.2 302.933c-12.8 4.267-102.4 81.067-243.2 81.067s-230.4-76.8-243.2-81.067l243.2-302.933z" horiz-adv-x="1109" /> | ||
368 | <glyph unicode="" d="M554.667-0l320 401.067c-8.533 8.533-132.267 110.933-320 110.933s-311.467-102.4-324.267-110.933l324.267-401.067c0 0 0 0 0 0z" horiz-adv-x="1109" /> | ||
369 | <glyph unicode="" d="M554.667-0l401.067 503.467c-12.8 8.533-170.667 136.533-401.067 136.533s-388.267-128-401.067-136.533l401.067-503.467c0 0 0 0 0 0z" horiz-adv-x="1109" /> | ||
370 | <glyph unicode="" d="M554.667-0l537.6 669.867c-21.333 12.8-226.133 183.467-537.6 183.467s-516.267-170.667-537.6-183.467l537.6-669.867z" horiz-adv-x="1109" /> | ||
371 | <glyph unicode="" d="M938.667-0h85.333v85.333h-85.333v-85.333zM938.667 512v-341.333h85.333v341.333h-85.333z" horiz-adv-x="1109" /> | ||
372 | <glyph unicode="" d="M230.4 401.067l324.267-401.067 298.667 371.2v46.933c-46.933 29.867-153.6 93.867-298.667 93.867-187.733 0-311.467-102.4-324.267-110.933zM938.667 512v-341.333h85.333v341.333h-85.333zM938.667-0h85.333v85.333h-85.333v-85.333z" horiz-adv-x="1109" /> | ||
373 | <glyph unicode="" d="M853.333 371.2v196.267c-68.267 34.133-174.933 72.533-298.667 72.533-230.4 0-388.267-128-401.067-136.533l401.067-503.467c0 0 298.667 371.2 298.667 371.2zM938.667-0h85.333v85.333h-85.333v-85.333zM938.667 512v-341.333h85.333v341.333h-85.333z" horiz-adv-x="1109" /> | ||
374 | <glyph unicode="" d="M938.667-0h85.333v85.333h-85.333v-85.333zM554.667 853.334c-311.467 0-516.267-170.667-537.6-183.467l537.6-669.867 298.667 371.2v226.133h179.2l59.733 72.533c-21.333 12.8-226.133 183.467-537.6 183.467zM938.667 170.667h85.333v341.333h-85.333v-341.333z" horiz-adv-x="1109" /> | ||
375 | <glyph unicode="" d="M311.467 302.934l243.2-298.667 243.2 302.933c-12.8 0-102.4 76.8-243.2 76.8s-230.4-76.8-243.2-81.067zM938.667-0h85.333v85.333h-85.333v-85.333zM938.667 512v-341.333h85.333v341.333h-85.333z" horiz-adv-x="1109" /> | ||
376 | <glyph unicode="" d="M891.733 499.2c-81.067 0-149.333-68.267-149.333-149.333h76.8c0 42.667 34.133 76.8 76.8 76.8s76.8-34.133 76.8-76.8c0-21.333-8.533-38.4-21.333-51.2l-46.933-46.933c-25.6-25.6-42.667-64-42.667-106.667v-17.067h76.8c0 55.467 17.067 76.8 42.667 106.667l34.133 34.133c21.333 21.333 34.133 51.2 34.133 85.333-8.533 76.8-76.8 145.067-157.867 145.067zM853.333-0h85.333v85.333h-85.333v-85.333z" horiz-adv-x="1109" /> | ||
377 | <glyph unicode="" d="M554.667 768c181.333 0 325.12-64.427 413.013-117.333l-413.013-514.133-412.587 514.133c87.467 52.907 231.253 117.333 412.587 117.333zM554.667 853.334c-309.76 0-516.267-168.96-536.747-184.32l536.747-669.013 0.427 0.427 536.32 668.587c-20.48 15.36-226.987 184.32-536.747 184.32z" horiz-adv-x="1109" /> | ||
378 | <glyph unicode="" d="M85.333 85.334h853.333v170.667h-853.333v-170.667zM170.667 213.334h85.333v-85.333h-85.333v85.333zM85.333 768v-170.667h853.333v170.667h-853.333zM256 640h-85.333v85.333h85.333v-85.333zM85.333 341.334h853.333v170.667h-853.333v-170.667zM170.667 469.334h85.333v-85.333h-85.333v85.333z" /> | ||
379 | <glyph unicode="" d="M640 640v-170.667h42.667v-85.333h-128v341.333h85.333l-128 170.667-128-170.667h85.333v-341.333h-128v88.32c29.867 15.787 51.2 46.080 51.2 82.347 0 51.627-42.24 93.867-93.867 93.867s-93.867-42.24-93.867-93.867c0-36.267 21.333-66.56 51.2-82.347v-88.32c0-47.36 37.973-85.333 85.333-85.333h128v-130.133c-30.293-15.787-51.2-46.933-51.2-83.2 0-52.053 42.24-93.867 93.867-93.867s93.867 41.813 93.867 93.867c0 36.267-20.907 67.413-51.2 83.2v130.133h128c47.36 0 85.333 37.973 85.333 85.333v85.333h42.667v170.667h-170.667z" /> | ||
380 | <glyph unicode="" d="M874.667 533.334c11.947 0 23.467-1.707 34.56-3.413l114.773 152.747c-142.507 107.093-320 170.667-512 170.667s-369.493-63.573-512-170.667l512-682.667 149.333 199.253v120.747c0 117.76 95.573 213.333 213.333 213.333zM981.333 256v64c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-64c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h213.333c23.467 0 42.667 19.2 42.667 42.667v170.667c0 23.467-19.2 42.667-42.667 42.667zM938.667 256h-128v64c0 35.413 28.587 64 64 64s64-28.587 64-64v-64z" /> | ||
381 | <glyph unicode="" d="M512 469.334c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 384c0 141.227-114.773 256-256 256s-256-114.773-256-256c0-94.72 51.627-177.067 128-221.44l42.667 74.24c-50.773 29.867-85.333 84.053-85.333 147.2 0 94.293 76.373 170.667 170.667 170.667s170.667-76.373 170.667-170.667c0-63.147-34.56-117.333-85.333-147.2l42.667-74.24c76.373 44.373 128 126.72 128 221.44zM512 810.667c-235.52 0-426.667-191.147-426.667-426.667 0-157.867 85.76-295.253 212.907-369.067l42.667 73.813c-101.547 59.307-170.24 168.96-170.24 295.253 0 188.587 152.747 341.333 341.333 341.333s341.333-152.747 341.333-341.333c0-126.293-68.693-235.947-170.667-295.253l42.667-73.813c127.573 73.813 213.333 211.2 213.333 369.067 0 235.52-191.147 426.667-426.667 426.667z" /> | ||
382 | <glyph unicode="" d="M704 682.667v-490.667c0-94.293-76.373-170.667-170.667-170.667s-170.667 76.373-170.667 170.667v533.333c0 58.88 47.787 106.667 106.667 106.667s106.667-47.787 106.667-106.667v-448c0-23.467-19.2-42.667-42.667-42.667s-42.667 19.2-42.667 42.667v405.333h-64v-405.333c0-58.88 47.787-106.667 106.667-106.667s106.667 47.787 106.667 106.667v448c0 94.293-76.373 170.667-170.667 170.667s-170.667-76.373-170.667-170.667v-533.333c0-129.707 104.96-234.667 234.667-234.667s234.667 104.96 234.667 234.667v490.667h-64z" /> | ||
383 | <glyph unicode="" d="M503.467 473.6c-96.853 25.173-128 51.2-128 91.733 0 46.507 43.093 78.933 115.2 78.933 75.947 0 104.107-36.267 106.667-89.6h94.293c-2.987 73.387-47.787 140.8-136.96 162.56v93.44h-128v-92.16c-82.773-17.92-149.333-71.68-149.333-154.027 0-98.56 81.493-147.627 200.533-176.213 106.667-25.6 128-63.147 128-102.827 0-29.44-20.907-76.373-115.2-76.373-87.893 0-122.453 39.253-127.147 89.6h-93.867c5.12-93.44 75.093-145.92 157.013-163.413v-92.587h128v91.733c83.2 15.787 149.333 64 149.333 151.467 0 121.173-103.68 162.56-200.533 187.733z" /> | ||
384 | <glyph unicode="" d="M128 810.667v-768h768v768h-768zM469.333 128h-256v256h256v-256zM469.333 469.334h-256v256h256v-256zM810.667 128h-256v256h256v-256zM810.667 469.334h-256v256h256v-256z" /> | ||
385 | <glyph unicode="" d="M384 469.334h-85.333v-85.333h85.333v85.333zM554.667 298.667h-85.333v-85.333h85.333v85.333zM384 810.667h-85.333v-85.333h85.333v85.333zM554.667 469.334h-85.333v-85.333h85.333v85.333zM213.333 810.667h-85.333v-85.333h85.333v85.333zM554.667 640h-85.333v-85.333h85.333v85.333zM725.333 469.334h-85.333v-85.333h85.333v85.333zM554.667 810.667h-85.333v-85.333h85.333v85.333zM725.333 810.667h-85.333v-85.333h85.333v85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM213.333 640h-85.333v-85.333h85.333v85.333zM810.667 810.667v-85.333h85.333v85.333h-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM213.333 469.334h-85.333v-85.333h85.333v85.333zM128 42.667h768v85.333h-768v-85.333zM213.333 298.667h-85.333v-85.333h85.333v85.333z" /> | ||
386 | <glyph unicode="" d="M298.667 725.334h85.333v85.333h-85.333v-85.333zM298.667 384h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM469.333 213.334h85.333v85.333h-85.333v-85.333zM469.333 42.667h85.333v85.333h-85.333v-85.333zM128 42.667h85.333v85.333h-85.333v-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM128 384h85.333v85.333h-85.333v-85.333zM128 554.667h85.333v85.333h-85.333v-85.333zM128 725.334h85.333v85.333h-85.333v-85.333zM469.333 384h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 42.667h85.333v85.333h-85.333v-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM469.333 554.667h85.333v85.333h-85.333v-85.333zM810.667 810.667v-85.333h85.333v85.333h-85.333zM469.333 725.334h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM640 384h85.333v85.333h-85.333v-85.333zM640 725.334h85.333v85.333h-85.333v-85.333z" /> | ||
387 | <glyph unicode="" d="M757.333 640l-160 160-426.667-426.667v-160h160l426.667 426.667zM883.627 766.294c16.64 16.64 16.64 43.52 0 60.16l-99.84 99.84c-16.64 16.64-43.52 16.64-60.16 0l-83.627-83.627 160-160 83.627 83.627zM0 85.334h1024v-170.667h-1024z" /> | ||
388 | <glyph unicode="" d="M128 42.667h85.333v85.333h-85.333v-85.333zM213.333 640h-85.333v-85.333h85.333v85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM213.333 810.667h-85.333v-85.333h85.333v85.333zM384 810.667h-85.333v-85.333h85.333v85.333zM725.333 810.667h-85.333v-85.333h85.333v85.333zM554.667 640h-85.333v-85.333h85.333v85.333zM554.667 810.667h-85.333v-85.333h85.333v85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM469.333 42.667h85.333v85.333h-85.333v-85.333zM128 384h768v85.333h-768v-85.333zM810.667 810.667v-85.333h85.333v85.333h-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM469.333 213.334h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM810.667 42.667h85.333v85.333h-85.333v-85.333z" /> | ||
389 | <glyph unicode="" d="M128 42.667h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM213.333 640h-85.333v-85.333h85.333v85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM384 810.667h-85.333v-85.333h85.333v85.333zM213.333 810.667h-85.333v-85.333h85.333v85.333zM725.333 810.667h-85.333v-85.333h85.333v85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM810.667 810.667v-85.333h85.333v85.333h-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM554.667 810.667h-85.333v-341.333h-341.333v-85.333h341.333v-341.333h85.333v341.333h341.333v85.333h-341.333v341.333zM810.667 42.667h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333z" /> | ||
390 | <glyph unicode="" d="M469.333 42.667h85.333v85.333h-85.333v-85.333zM469.333 213.334h85.333v85.333h-85.333v-85.333zM469.333 725.334h85.333v85.333h-85.333v-85.333zM469.333 554.667h85.333v85.333h-85.333v-85.333zM469.333 384h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM298.667 725.334h85.333v85.333h-85.333v-85.333zM298.667 384h85.333v85.333h-85.333v-85.333zM128 42.667h85.333v768h-85.333v-768zM810.667 554.667h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM810.667 810.667v-85.333h85.333v85.333h-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 42.667h85.333v85.333h-85.333v-85.333zM640 384h85.333v85.333h-85.333v-85.333zM640 725.334h85.333v85.333h-85.333v-85.333z" /> | ||
391 | <glyph unicode="" d="M554.667 640h-85.333v-85.333h85.333v85.333zM554.667 469.334h-85.333v-85.333h85.333v85.333zM725.333 469.334h-85.333v-85.333h85.333v85.333zM128 810.667v-768h768v768h-768zM810.667 128h-597.333v597.333h597.333v-597.333zM554.667 298.667h-85.333v-85.333h85.333v85.333zM384 469.334h-85.333v-85.333h85.333v85.333z" /> | ||
392 | <glyph unicode="" d="M298.667 42.667h85.333v85.333h-85.333v-85.333zM128 725.334h85.333v85.333h-85.333v-85.333zM298.667 725.334h85.333v85.333h-85.333v-85.333zM298.667 384h85.333v85.333h-85.333v-85.333zM128 42.667h85.333v85.333h-85.333v-85.333zM469.333 42.667h85.333v85.333h-85.333v-85.333zM128 384h85.333v85.333h-85.333v-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM128 554.667h85.333v85.333h-85.333v-85.333zM469.333 213.334h85.333v85.333h-85.333v-85.333zM640 384h85.333v85.333h-85.333v-85.333zM810.667 810.667v-768h85.333v768h-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM640 725.334h85.333v85.333h-85.333v-85.333zM469.333 384h85.333v85.333h-85.333v-85.333zM469.333 725.334h85.333v85.333h-85.333v-85.333zM469.333 554.667h85.333v85.333h-85.333v-85.333z" /> | ||
393 | <glyph unicode="" d="M640 42.667h85.333v85.333h-85.333v-85.333zM810.667 42.667h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM469.333 42.667h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM128 810.667v-768h85.333v682.667h682.667v85.333h-768zM810.667 554.667h85.333v85.333h-85.333v-85.333z" /> | ||
394 | <glyph unicode="" d="M298.667 42.667h85.333v85.333h-85.333v-85.333zM298.667 384h85.333v85.333h-85.333v-85.333zM469.333 384h85.333v85.333h-85.333v-85.333zM469.333 42.667h85.333v85.333h-85.333v-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM128 42.667h85.333v85.333h-85.333v-85.333zM128 384h85.333v85.333h-85.333v-85.333zM128 554.667h85.333v85.333h-85.333v-85.333zM469.333 213.334h85.333v85.333h-85.333v-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM128 810.667v-85.333h768v85.333h-768zM810.667 213.334h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM469.333 554.667h85.333v85.333h-85.333v-85.333zM810.667 42.667h85.333v85.333h-85.333v-85.333zM640 384h85.333v85.333h-85.333v-85.333z" /> | ||
395 | <glyph unicode="" d="M128 554.667h85.333v85.333h-85.333v-85.333zM128 725.334h85.333v85.333h-85.333v-85.333zM298.667 42.667h85.333v85.333h-85.333v-85.333zM298.667 384h85.333v85.333h-85.333v-85.333zM128 384h85.333v85.333h-85.333v-85.333zM128 42.667h85.333v85.333h-85.333v-85.333zM128 213.334h85.333v85.333h-85.333v-85.333zM298.667 725.334h85.333v85.333h-85.333v-85.333zM810.667 213.334h85.333v85.333h-85.333v-85.333zM469.333 42.667h85.333v768h-85.333v-768zM810.667 42.667h85.333v85.333h-85.333v-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 810.667v-85.333h85.333v85.333h-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM640 725.334h85.333v85.333h-85.333v-85.333zM640 42.667h85.333v85.333h-85.333v-85.333zM640 384h85.333v85.333h-85.333v-85.333z" /> | ||
396 | <glyph unicode="" d="M298.667 298.667v-85.333h426.667v85.333h-426.667zM128 42.667h768v85.333h-768v-85.333zM128 384h768v85.333h-768v-85.333zM298.667 640v-85.333h426.667v85.333h-426.667zM128 810.667v-85.333h768v85.333h-768z" /> | ||
397 | <glyph unicode="" d="M128 42.667h768v85.333h-768v-85.333zM128 213.334h768v85.333h-768v-85.333zM128 384h768v85.333h-768v-85.333zM128 554.667h768v85.333h-768v-85.333zM128 810.667v-85.333h768v85.333h-768z" /> | ||
398 | <glyph unicode="" d="M640 298.667h-512v-85.333h512v85.333zM640 640h-512v-85.333h512v85.333zM128 384h768v85.333h-768v-85.333zM128 42.667h768v85.333h-768v-85.333zM128 810.667v-85.333h768v85.333h-768z" /> | ||
399 | <glyph unicode="" d="M128 42.667h768v85.333h-768v-85.333zM384 213.334h512v85.333h-512v-85.333zM128 384h768v85.333h-768v-85.333zM384 554.667h512v85.333h-512v-85.333zM128 810.667v-85.333h768v85.333h-768z" /> | ||
400 | <glyph unicode="" d="M665.6 478.294c41.387 28.587 70.4 75.52 70.4 119.040 0 96.427-74.667 170.667-170.667 170.667h-266.667v-597.333h300.373c89.173 0 158.293 72.533 158.293 161.707 0 64.853-36.693 120.32-91.733 145.92zM426.667 661.334h128c35.413 0 64-28.587 64-64s-28.587-64-64-64h-128v128zM576 277.334h-149.333v128h149.333c35.413 0 64-28.587 64-64s-28.587-64-64-64z" /> | ||
401 | <glyph unicode="" d="M139.52 725.334l-54.187-54.187 297.387-297.387-105.387-245.76h128l66.987 156.16 241.493-241.493 54.187 54.187-628.48 628.48zM256 725.334v-7.68l120.32-120.32h102.4l-30.72-71.68 89.6-89.6 68.693 161.28h247.040v128h-597.333z" /> | ||
402 | <glyph unicode="" d="M706.56 557.227l-381.44 381.44-60.16-60.16 101.547-101.547-219.733-219.733c-25.173-25.173-25.173-65.707 0-90.453l234.667-234.667c12.373-12.373 29.013-18.773 45.227-18.773s32.853 6.4 45.227 18.773l234.667 234.667c25.173 24.747 25.173 65.28 0 90.453zM222.293 512l204.373 204.373 204.373-204.373h-408.747zM810.667 448s-85.333-92.587-85.333-149.333c0-46.933 38.4-85.333 85.333-85.333s85.333 38.4 85.333 85.333c0 56.747-85.333 149.333-85.333 149.333zM0 85.334h1024v-170.667h-1024z" /> | ||
403 | <glyph unicode="" d="M768 341.334c0 170.667-256 460.8-256 460.8s-56.747-64.427-116.48-150.187l366.507-366.507c3.84 17.92 5.973 36.693 5.973 55.893zM730.453 208.214l-505.6 505.6-54.187-54.613 141.653-141.653c-32.853-61.867-56.32-124.587-56.32-176.213 0-141.227 114.773-256 256-256 64.853 0 123.733 24.32 168.96 64l112.213-112.213 54.187 54.187-116.907 116.907z" /> | ||
404 | <glyph unicode="" d="M0 85.334h1024v-170.667h-1024zM469.333 810.667l-234.667-597.333h96l47.787 128h266.667l47.787-128h96l-234.24 597.333h-85.333zM410.453 426.667l101.547 270.080 101.547-270.080h-203.093z" /> | ||
405 | <glyph unicode="" d="M469.333 213.334h426.667v85.333h-426.667v-85.333zM128 426.667l170.667-170.667v341.333l-170.667-170.667zM128 42.667h768v85.333h-768v-85.333zM128 810.667v-85.333h768v85.333h-768zM469.333 554.667h426.667v85.333h-426.667v-85.333zM469.333 384h426.667v85.333h-426.667v-85.333z" /> | ||
406 | <glyph unicode="" d="M128 42.667h768v85.333h-768v-85.333zM128 597.334v-341.333l170.667 170.667-170.667 170.667zM469.333 213.334h426.667v85.333h-426.667v-85.333zM128 810.667v-85.333h768v85.333h-768zM469.333 554.667h426.667v85.333h-426.667v-85.333zM469.333 384h426.667v85.333h-426.667v-85.333z" /> | ||
407 | <glyph unicode="" d="M426.667 768v-128h94.293l-145.92-341.333h-119.040v-128h341.333v128h-94.293l145.92 341.333h119.040v128z" /> | ||
408 | <glyph unicode="" d="M256 640h106.667l-149.333 149.333-149.333-149.333h106.667v-426.667h-106.667l149.333-149.333 149.333 149.333h-106.667v426.667zM426.667 725.334v-85.333h512v85.333h-512zM426.667 128h512v85.333h-512v-85.333zM426.667 384h512v85.333h-512v-85.333z" /> | ||
409 | <glyph unicode="" d="M170.667 490.667c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM170.667 746.667c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM170.667 227.414c-31.573 0-56.747-25.6-56.747-56.747s25.6-56.747 56.747-56.747 56.747 25.6 56.747 56.747-25.173 56.747-56.747 56.747zM298.667 128h597.333v85.333h-597.333v-85.333zM298.667 384h597.333v85.333h-597.333v-85.333zM298.667 725.334v-85.333h597.333v85.333h-597.333z" /> | ||
410 | <glyph unicode="" d="M85.333 213.334h85.333v-21.333h-42.667v-42.667h42.667v-21.333h-85.333v-42.667h128v170.667h-128v-42.667zM128 597.334h42.667v170.667h-85.333v-42.667h42.667v-128zM85.333 469.334h76.8l-76.8-89.6v-38.4h128v42.667h-76.8l76.8 89.6v38.4h-128v-42.667zM298.667 725.334v-85.333h597.333v85.333h-597.333zM298.667 128h597.333v85.333h-597.333v-85.333zM298.667 384h597.333v85.333h-597.333v-85.333z" /> | ||
411 | <glyph unicode="" d="M768 768v42.667c0 23.467-19.2 42.667-42.667 42.667h-512c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h512c23.467 0 42.667 19.2 42.667 42.667v42.667h42.667v-170.667h-426.667v-469.333c0-23.467 19.2-42.667 42.667-42.667h85.333c23.467 0 42.667 19.2 42.667 42.667v384h341.333v341.333h-128z" /> | ||
412 | <glyph unicode="" d="M256 213.334h128l85.333 170.667v256h-256v-256h128zM597.333 213.334h128l85.333 170.667v256h-256v-256h128z" /> | ||
413 | <glyph unicode="" d="M384 768v-128h213.333v-512h128v512h213.333v128h-554.667zM128 426.667h128v-298.667h128v298.667h128v128h-384v-128z" /> | ||
414 | <glyph unicode="" d="M426.667 128h170.667v128h-170.667v-128zM213.333 768v-128h213.333v-128h170.667v128h213.333v128h-597.333zM128 341.334h768v85.333h-768v-85.333z" /> | ||
415 | <glyph unicode="" d="M384 512v-213.333h85.333v469.333h85.333v-469.333h85.333v469.333h85.333v85.333h-341.333c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667zM896 170.667l-170.667 170.667v-128h-512v-85.333h512v-128l170.667 170.667z" /> | ||
416 | <glyph unicode="" d="M426.667 512v-213.333h85.333v469.333h85.333v-469.333h85.333v469.333h85.333v85.333h-341.333c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667zM341.333 213.334v128l-170.667-170.667 170.667-170.667v128h512v85.333h-512z" /> | ||
417 | <glyph unicode="" d="M512 213.334c141.227 0 256 114.773 256 256v341.333h-106.667v-341.333c0-82.347-66.987-149.333-149.333-149.333s-149.333 66.987-149.333 149.333v341.333h-106.667v-341.333c0-141.227 114.773-256 256-256zM213.333 128v-85.333h597.333v85.333h-597.333z" /> | ||
418 | <glyph unicode="" d="M768 768h-512v-85.333l277.333-256-277.333-256v-85.333h512v128h-298.667l213.333 213.333-213.333 213.333h298.667z" /> | ||
419 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM384 213.334h-85.333v298.667h85.333v-298.667zM554.667 213.334h-85.333v426.667h85.333v-426.667zM725.333 213.334h-85.333v170.667h85.333v-170.667z" /> | ||
420 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h597.333l170.667-170.667v768c0 46.933-38.4 85.333-85.333 85.333zM768 341.334h-512v85.333h512v-85.333zM768 469.334h-512v85.333h512v-85.333zM768 597.334h-512v85.333h512v-85.333z" /> | ||
421 | <glyph unicode="" d="M256 853.334c-46.933 0-84.907-38.4-84.907-85.333l-0.427-682.667c0-46.933 37.973-85.333 84.907-85.333h512.427c46.933 0 85.333 38.4 85.333 85.333v512l-256 256h-341.333zM554.667 554.667v234.667l234.667-234.667h-234.667z" /> | ||
422 | <glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM661.333 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM362.667 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM512 192c99.413 0 183.893 62.293 218.027 149.333h-436.053c34.133-87.040 118.613-149.333 218.027-149.333z" /> | ||
423 | <glyph unicode="" d="M725.333 426.667h-213.333v-213.333h213.333v213.333zM682.667 896v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333h-42.667v85.333h-85.333zM810.667 128h-597.333v469.333h597.333v-469.333z" /> | ||
424 | <glyph unicode="" d="M166.4 426.667c0 72.96 59.307 132.267 132.267 132.267h170.667v81.067h-170.667c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333h170.667v81.067h-170.667c-72.96 0-132.267 59.307-132.267 132.267zM341.333 384h341.333v85.333h-341.333v-85.333zM725.333 640h-170.667v-81.067h170.667c72.96 0 132.267-59.307 132.267-132.267s-59.307-132.267-132.267-132.267h-170.667v-81.067h170.667c117.76 0 213.333 95.573 213.333 213.333s-95.573 213.333-213.333 213.333z" /> | ||
425 | <glyph unicode="" d="M896 128v597.333c0 46.933-38.4 85.333-85.333 85.333h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333zM362.667 362.667l106.667-128.427 149.333 192.427 192-256h-597.333l149.333 192z" /> | ||
426 | <glyph unicode="" d="M725.333 67.84l60.16 60.16-145.493 145.493-60.16-60.16 145.493-145.493zM320 597.334h149.333v-238.507l-230.827-230.827 60.16-60.16 256 256v273.493h149.333l-192 192-192-192z" /> | ||
427 | <glyph unicode="" d="M938.24 768c0 46.933-37.973 85.333-84.907 85.333h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h597.333l170.667-170.667-0.427 768z" /> | ||
428 | <glyph unicode="" d="M128 202.667v-160h160l471.893 471.893-160 160-471.893-471.893zM883.627 638.294c16.64 16.64 16.64 43.52 0 60.16l-99.84 99.84c-16.64 16.64-43.52 16.64-60.16 0l-78.080-78.080 160-160 78.080 78.080z" /> | ||
429 | <glyph unicode="" d="M213.333 768v-85.333h597.333v85.333h-597.333zM213.333 341.334h170.667v-256h256v256h170.667l-298.667 298.667-298.667-298.667z" /> | ||
430 | <glyph unicode="" d="M682.667 384h-128v426.667h-85.333v-426.667h-128l170.667-170.667 170.667 170.667zM170.667 128v-85.333h682.667v85.333h-682.667z" /> | ||
431 | <glyph unicode="" d="M341.333 128h128v-170.667h85.333v170.667h128l-170.667 170.667-170.667-170.667zM682.667 725.334h-128v170.667h-85.333v-170.667h-128l170.667-170.667 170.667 170.667zM170.667 469.334v-85.333h682.667v85.333h-682.667z" /> | ||
432 | <glyph unicode="" d="M341.333 469.334h128v-426.667h85.333v426.667h128l-170.667 170.667-170.667-170.667zM170.667 810.667v-85.333h682.667v85.333h-682.667z" /> | ||
433 | <glyph unicode="" d="M170.667 128h256v85.333h-256v-85.333zM853.333 725.334h-682.667v-85.333h682.667v85.333zM725.333 469.334h-554.667v-85.333h565.333c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333h-96v85.333l-128-128 128-128v85.333h85.333c94.293 0 170.667 76.373 170.667 170.667s-76.373 170.667-170.667 170.667z" /> | ||
434 | <glyph unicode="" d="M320 170.667c-129.707 0-234.667 104.96-234.667 234.667s104.96 234.667 234.667 234.667h448c94.293 0 170.667-76.373 170.667-170.667s-76.373-170.667-170.667-170.667h-362.667c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667h320v-64h-320c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667h362.667c58.88 0 106.667 47.787 106.667 106.667s-47.787 106.667-106.667 106.667h-448c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667h405.333v-64h-405.333z" /> | ||
435 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM704 256h-362.667c-70.827 0-128 57.173-128 128s57.173 128 128 128l5.973-0.427c18.773 73.813 84.907 128.427 164.693 128.427 94.293 0 170.667-76.373 170.667-170.667h21.333c58.88 0 106.667-47.787 106.667-106.667s-47.787-106.667-106.667-106.667z" /> | ||
436 | <glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627zM426.667 213.334l-149.333 149.333 60.16 60.16 89.173-88.747 221.013 220.587 60.16-60.16-281.173-281.173z" /> | ||
437 | <glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627zM725.333 384l-213.333-213.333-213.333 213.333h128v170.667h170.667v-170.667h128z" /> | ||
438 | <glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-63.147 0-121.6-18.347-171.093-49.92l62.293-62.293c32.427 17.067 69.547 26.88 108.8 26.88 129.707 0 234.667-104.96 234.667-234.667v-21.333h64c70.827 0 128-57.173 128-128 0-48.213-27.307-90.027-66.56-111.787l61.867-61.867c54.187 38.827 90.027 101.973 90.027 173.653 0 112.64-87.467 203.947-198.4 211.627zM128 713.814l117.333-116.907c-136.107-5.973-245.333-117.76-245.333-255.573 0-141.227 114.773-256 256-256h500.48l85.333-85.333 54.187 54.187-713.813 713.813-54.187-54.187zM329.813 512l341.333-341.333h-415.147c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667h73.813z" /> | ||
439 | <glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627zM810.667 170.667h-554.667c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667h30.293c28.16 98.56 118.187 170.667 225.707 170.667 129.707 0 234.667-104.96 234.667-234.667v-21.333h64c70.827 0 128-57.173 128-128s-57.173-128-128-128z" /> | ||
440 | <glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627zM597.333 384v-170.667h-170.667v170.667h-128l213.333 213.333 213.333-213.333h-128z" /> | ||
441 | <glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627z" /> | ||
442 | <glyph unicode="" d="M810.667 554.667h-170.667v256h-256v-256h-170.667l298.667-298.667 298.667 298.667zM213.333 170.667v-85.333h597.333v85.333h-597.333z" /> | ||
443 | <glyph unicode="" d="M384 256h256v256h170.667l-298.667 298.667-298.667-298.667h170.667zM213.333 170.667h597.333v-85.333h-597.333z" /> | ||
444 | <glyph unicode="" d="M853.333 682.667h-341.333l-85.333 85.333h-256c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM853.333 170.667h-682.667v426.667h682.667v-426.667z" /> | ||
445 | <glyph unicode="" d="M853.333 682.667h-341.333l-85.333 85.333h-256c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM640 554.667c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333-85.333 38.4-85.333 85.333 38.4 85.333 85.333 85.333zM810.667 213.334h-341.333v42.667c0 56.747 113.92 85.333 170.667 85.333s170.667-28.587 170.667-85.333v-42.667z" /> | ||
446 | <glyph unicode="" d="M426.667 768h-256c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333h-341.333l-85.333 85.333z" /> | ||
447 | <glyph unicode="" d="M42.667 170.667v-128h128c0 70.827-57.173 128-128 128zM42.667 341.334v-85.333c117.76 0 213.333-95.573 213.333-213.333h85.333c0 165.12-133.547 298.667-298.667 298.667zM810.667 640h-597.333v-69.547c168.96-54.613 302.507-188.16 357.12-357.12h240.213v426.667zM42.667 512v-85.333c212.053 0 384-171.947 384-384h85.333c0 259.413-210.347 469.333-469.333 469.333zM896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-128h85.333v128h768v-597.333h-298.667v-85.333h298.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333z" /> | ||
448 | <glyph unicode="" d="M896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-128h85.333v128h768v-597.333h-298.667v-85.333h298.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM42.667 170.667v-128h128c0 70.827-57.173 128-128 128zM42.667 341.334v-85.333c117.76 0 213.333-95.573 213.333-213.333h85.333c0 165.12-133.547 298.667-298.667 298.667zM42.667 512v-85.333c212.053 0 384-171.947 384-384h85.333c0 259.413-210.347 469.333-469.333 469.333z" /> | ||
449 | <glyph unicode="" d="M853.333 170.667c46.933 0 84.907 38.4 84.907 85.333l0.427 426.667c0 46.933-38.4 85.333-85.333 85.333h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h-170.667v-85.333h1024v85.333h-170.667zM170.667 682.667h682.667v-426.667h-682.667v426.667z" /> | ||
450 | <glyph unicode="" d="M896 853.334h-768c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h298.667l-85.333-128v-42.667h341.333v42.667l-85.333 128h298.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM896 341.334h-768v426.667h768v-426.667z" /> | ||
451 | <glyph unicode="" d="M896 853.334h-768c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h298.667v-85.333h-85.333v-85.333h341.333v85.333h-85.333v85.333h298.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM896 256h-768v512h768v-512z" /> | ||
452 | <glyph unicode="" d="M341.333-42.666h341.333v85.333h-341.333v-85.333zM682.667 895.574l-341.333 0.427c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h341.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 84.907-85.333 84.907zM682.667 298.667h-341.333v426.667h341.333v-426.667z" /> | ||
453 | <glyph unicode="" d="M640 618.667v234.667h-256v-234.667l128-128 128 128zM320 554.667h-234.667v-256h234.667l128 128-128 128zM384 234.667v-234.667h256v234.667l-128 128-128-128zM704 554.667l-128-128 128-128h234.667v256h-234.667z" /> | ||
454 | <glyph unicode="" d="M512 896c-212.053 0-384-171.947-384-384v-298.667c0-70.827 57.173-128 128-128h128v341.333h-170.667v85.333c0 165.12 133.547 298.667 298.667 298.667s298.667-133.547 298.667-298.667v-85.333h-170.667v-341.333h170.667v-42.667h-298.667v-85.333h256c70.827 0 128 57.173 128 128v426.667c0 212.053-171.947 384-384 384z" /> | ||
455 | <glyph unicode="" d="M512 896c-212.053 0-384-171.947-384-384v-298.667c0-70.827 57.173-128 128-128h128v341.333h-170.667v85.333c0 165.12 133.547 298.667 298.667 298.667s298.667-133.547 298.667-298.667v-85.333h-170.667v-341.333h128c70.827 0 128 57.173 128 128v298.667c0 212.053-171.947 384-384 384z" /> | ||
456 | <glyph unicode="" d="M661.333 512c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM362.667 512c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM512 213.334c111.36 0 206.080 71.253 241.067 170.667h-482.133c34.987-99.413 129.707-170.667 241.067-170.667zM511.573 896c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 128c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333z" /> | ||
457 | <glyph unicode="" d="M316.16 604.16l195.84-195.413 195.84 195.413 60.16-60.16-256-256-256 256z" /> | ||
458 | <glyph unicode="" d="M657.493 252.16l-195.413 195.84 195.413 195.84-60.16 60.16-256-256 256-256z" /> | ||
459 | <glyph unicode="" d="M366.507 241.494l195.413 195.84-195.413 195.84 60.16 60.16 256-256-256-256z" /> | ||
460 | <glyph unicode="" d="M316.16 281.174l195.84 195.413 195.84-195.413 60.16 60.16-256 256-256-256z" /> | ||
461 | <glyph unicode="" d="M896 469.334h-604.587l152.747 153.173-60.16 60.16-256-256 256-256 60.16 60.16-152.747 153.173h604.587z" /> | ||
462 | <glyph unicode="" d="M512 579.84l195.84-195.84 60.16 60.16-256 256-256-256 60.16-60.16 195.84 195.84zM256 170.667h512v85.333h-512v-85.333z" /> | ||
463 | <glyph unicode="" d="M256 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM512 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> | ||
464 | <glyph unicode="" d="M853.333 810.667h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-426.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM469.333 682.667h85.333v-85.333h-85.333v85.333zM469.333 554.667h85.333v-85.333h-85.333v85.333zM341.333 682.667h85.333v-85.333h-85.333v85.333zM341.333 554.667h85.333v-85.333h-85.333v85.333zM298.667 469.334h-85.333v85.333h85.333v-85.333zM298.667 597.334h-85.333v85.333h85.333v-85.333zM682.667 298.667h-341.333v85.333h341.333v-85.333zM682.667 469.334h-85.333v85.333h85.333v-85.333zM682.667 597.334h-85.333v85.333h85.333v-85.333zM810.667 469.334h-85.333v85.333h85.333v-85.333zM810.667 597.334h-85.333v85.333h85.333v-85.333zM512-42.666l170.667 170.667h-341.333l170.667-170.667z" /> | ||
465 | <glyph unicode="" d="M810.667 640v-170.667h-561.92l152.747 153.173-60.16 60.16-256-256 256-256 60.16 60.16-152.747 153.173h647.253v256z" /> | ||
466 | <glyph unicode="" d="M494.507 622.507l152.747-153.173h-604.587v-85.333h604.587l-153.173-153.173 60.587-60.16 256 256-256 256-60.16-60.16zM853.333 682.667v-512h85.333v512h-85.333z" /> | ||
467 | <glyph unicode="" d="M512 298.667c70.827 0 127.573 57.173 127.573 128l0.427 256c0 70.827-57.173 128-128 128s-128-57.173-128-128v-256c0-70.827 57.173-128 128-128zM738.133 426.667c0-128-108.373-217.6-226.133-217.6s-226.133 89.6-226.133 217.6h-72.533c0-145.92 116.053-265.813 256-286.72v-139.947h85.333v139.947c139.947 20.48 256 140.8 256 286.72h-72.533z" /> | ||
468 | <glyph unicode="" d="M853.333 725.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-426.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM469.333 597.334h85.333v-85.333h-85.333v85.333zM469.333 469.334h85.333v-85.333h-85.333v85.333zM341.333 597.334h85.333v-85.333h-85.333v85.333zM341.333 469.334h85.333v-85.333h-85.333v85.333zM298.667 384h-85.333v85.333h85.333v-85.333zM298.667 512h-85.333v85.333h85.333v-85.333zM682.667 213.334h-341.333v85.333h341.333v-85.333zM682.667 384h-85.333v85.333h85.333v-85.333zM682.667 512h-85.333v85.333h85.333v-85.333zM810.667 384h-85.333v85.333h85.333v-85.333zM810.667 512h-85.333v85.333h85.333v-85.333z" /> | ||
469 | <glyph unicode="" d="M938.667 170.667v640h-853.333v-640h-85.333v-85.333h1024v85.333h-85.333zM597.333 170.667h-170.667v42.667h170.667v-42.667zM853.333 298.667h-682.667v426.667h682.667v-426.667z" /> | ||
470 | <glyph unicode="" d="M853.333 170.667c46.933 0 84.907 38.4 84.907 85.333l0.427 469.333c0 46.933-38.4 85.333-85.333 85.333h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-469.333c0-46.933 38.4-85.333 85.333-85.333h-170.667c0-46.933 38.4-85.333 85.333-85.333h853.333c46.933 0 85.333 38.4 85.333 85.333h-170.667zM170.667 725.334h682.667v-469.333h-682.667v469.333zM512 128c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667z" /> | ||
471 | <glyph unicode="" d="M853.333 170.667v42.667c46.933 0 84.907 38.4 84.907 85.333l0.427 426.667c0 46.933-38.4 85.333-85.333 85.333h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333v-42.667h-170.667v-85.333h1024v85.333h-170.667zM170.667 725.334h682.667v-426.667h-682.667v426.667z" /> | ||
472 | <glyph unicode="" d="M853.333 170.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h-170.667v-85.333h1024v85.333h-170.667zM170.667 682.667h682.667v-426.667h-682.667v426.667z" /> | ||
473 | <glyph unicode="" d="M640 554.667h-256v-256h256v256zM554.667 384h-85.333v85.333h85.333v-85.333zM896 469.334v85.333h-85.333v85.333c0 46.933-38.4 85.333-85.333 85.333h-85.333v85.333h-85.333v-85.333h-85.333v85.333h-85.333v-85.333h-85.333c-46.933 0-85.333-38.4-85.333-85.333v-85.333h-85.333v-85.333h85.333v-85.333h-85.333v-85.333h85.333v-85.333c0-46.933 38.4-85.333 85.333-85.333h85.333v-85.333h85.333v85.333h85.333v-85.333h85.333v85.333h85.333c46.933 0 85.333 38.4 85.333 85.333v85.333h85.333v85.333h-85.333v85.333h85.333zM725.333 213.334h-426.667v426.667h426.667v-426.667z" /> | ||
474 | <glyph unicode="" d="M554.667 893.014v-338.347h298.667c0 174.080-130.133 317.44-298.667 338.347zM170.667 298.667c0-188.587 152.747-341.333 341.333-341.333s341.333 152.747 341.333 341.333v170.667h-682.667v-170.667zM469.333 893.014c-168.533-20.907-298.667-164.267-298.667-338.347h298.667v338.347z" /> | ||
475 | <glyph unicode="" d="M682.667 896h-341.333c-70.827 0-128-57.173-128-128v-682.667c0-70.827 57.173-128 128-128h341.333c70.827 0 128 57.173 128 128v682.667c0 70.827-57.173 128-128 128zM597.333 42.667h-170.667v42.667h170.667v-42.667zM736 170.667h-448v597.333h448v-597.333z" /> | ||
476 | <glyph unicode="" d="M661.333 896h-341.333c-58.88 0-106.667-47.787-106.667-106.667v-725.333c0-58.88 47.787-106.667 106.667-106.667h341.333c58.88 0 106.667 47.787 106.667 106.667v725.333c0 58.88-47.787 106.667-106.667 106.667zM490.667-0c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM682.667 170.667h-384v597.333h384v-597.333z" /> | ||
477 | <glyph unicode="" d="M938.667 682.667v85.333h-647.68l85.333-85.333h562.347zM81.92 868.267l-54.187-54.187 77.653-77.653c-12.373-14.507-20.053-33.28-20.053-53.76v-469.333h-85.333v-128h756.48l100.267-100.267 54.187 54.187-829.013 829.013zM170.667 671.147l457.813-457.813h-457.813v457.813zM981.333 597.334h-256c-23.467 0-42.667-19.2-42.667-42.667v-178.347l85.333-85.333v221.013h170.667v-298.667h-93.013l128-128h7.68c23.467 0 42.667 19.2 42.667 42.667v426.667c0 23.467-19.2 42.667-42.667 42.667z" /> | ||
478 | <glyph unicode="" d="M170.667 682.667h768v85.333h-768c-46.933 0-85.333-38.4-85.333-85.333v-469.333h-85.333v-128h597.333v128h-426.667v469.333zM981.333 597.334h-256c-23.467 0-42.667-19.2-42.667-42.667v-426.667c0-23.467 19.2-42.667 42.667-42.667h256c23.467 0 42.667 19.2 42.667 42.667v426.667c0 23.467-19.2 42.667-42.667 42.667zM938.667 213.334h-170.667v298.667h170.667v-298.667z" /> | ||
479 | <glyph unicode="" d="M512 896l-384-170.667v-256c0-236.8 163.84-458.24 384-512 220.16 53.76 384 275.2 384 512v256l-384 170.667zM512 427.094h298.667c-22.613-175.787-139.947-332.373-298.667-381.44v381.013h-298.667v243.2l298.667 132.693v-375.467z" /> | ||
480 | <glyph unicode="" d="M852.907 768c0 46.933-37.973 85.333-84.907 85.333h-341.333l-256-256v-512c0-46.933 38.4-85.333 85.333-85.333h512.427c46.933 0 84.907 38.4 84.907 85.333l-0.427 682.667zM384 128h-85.333v85.333h85.333v-85.333zM725.333 128h-85.333v85.333h85.333v-85.333zM384 298.667h-85.333v170.667h85.333v-170.667zM554.667 128h-85.333v170.667h85.333v-170.667zM554.667 384h-85.333v85.333h85.333v-85.333zM725.333 298.667h-85.333v170.667h85.333v-170.667z" /> | ||
481 | <glyph unicode="" d="M725.333 895.574l-426.667 0.427c-46.933 0-85.333-38.4-85.333-85.333v-768c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v768c0 46.933-38.4 84.907-85.333 84.907zM725.333 128h-426.667v597.333h426.667v-597.333z" /> | ||
482 | <glyph unicode="" d="M725.333 853.334h-426.667c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-84.907 85.333-84.907l426.667-0.427c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM512 768c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333c-47.36 0-85.333 38.4-85.333 85.333s37.973 85.333 85.333 85.333zM512 85.334c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333zM512 426.667c-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128-57.173 128-128 128z" /> | ||
483 | <glyph unicode="" d="M768 938.667h-512c-70.827 0-128-57.173-128-128v-768c0-70.827 57.173-128 128-128h512c70.827 0 128 57.173 128 128v768c0 70.827-57.173 128-128 128zM597.333-0h-170.667v42.667h170.667v-42.667zM821.333 128h-618.667v682.667h618.667v-682.667z" /> | ||
484 | <glyph unicode="" d="M789.333 938.667h-597.333c-58.88 0-106.667-47.787-106.667-106.667v-810.667c0-58.88 47.787-106.667 106.667-106.667h597.333c58.88 0 106.667 47.787 106.667 106.667v810.667c0 58.88-47.787 106.667-106.667 106.667zM490.667-42.666c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM810.667 128h-640v682.667h640v-682.667z" /> | ||
485 | <glyph unicode="" d="M896 768h-768c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 84.907 38.4 84.907 85.333l0.427 512c0 46.933-38.4 85.333-85.333 85.333zM810.667 170.667h-597.333v512h597.333v-512z" /> | ||
486 | <glyph unicode="" d="M896 810.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h213.333v-85.333h341.333v85.333h213.333c46.933 0 84.907 38.4 84.907 85.333l0.427 512c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-768v512h768v-512z" /> | ||
487 | <glyph unicode="" d="M853.333 426.667c0 108.373-50.773 205.227-129.707 267.52l-40.96 244.48h-341.333l-40.533-244.48c-79.36-62.293-130.133-158.72-130.133-267.52s50.773-205.227 130.133-267.52l40.533-244.48h341.333l40.96 244.48c78.933 62.293 129.707 159.147 129.707 267.52zM256 426.667c0 141.227 114.773 256 256 256s256-114.773 256-256-114.773-256-256-256-256 114.773-256 256z" /> | ||
488 | <glyph unicode="" d="M170.667 682.667h-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333zM853.333 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM810.667 469.334h-170.667v-170.667h-85.333v170.667h-170.667v85.333h170.667v170.667h85.333v-170.667h170.667v-85.333z" /> | ||
489 | <glyph unicode="" d="M512 853.334c-235.093 0-426.667-191.573-426.667-426.667s191.573-426.667 426.667-426.667 426.667 191.573 426.667 426.667-191.573 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333zM640 426.667c0-70.827-57.173-128-128-128s-128 57.173-128 128 57.173 128 128 128 128-57.173 128-128z" /> | ||
490 | <glyph unicode="" d="M614.4 682.667l-17.067 85.333h-384v-725.333h85.333v298.667h238.933l17.067-85.333h298.667v426.667z" /> | ||
491 | <glyph unicode="" d="M512 810.667v-395.947c-20.053 7.253-41.387 11.947-64 11.947-106.24 0-192-85.76-192-192s85.76-192 192-192c98.56 0 179.2 74.667 189.867 170.667h2.133v469.333h170.667v128h-298.667z" /> | ||
492 | <glyph unicode="" d="M426.667 554.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM426.667 384c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM298.667 533.334c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM426.667 234.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM298.667 362.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM426.667 618.667c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM597.333 554.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM597.333 618.667c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM725.333 362.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM725.333 533.334c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM597.333 234.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM597.333 384c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667z" /> | ||
493 | <glyph unicode="" d="M213.333 192c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM384 384c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM384 554.667c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM128 42.667h768v85.333h-768v-85.333zM213.333 533.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM213.333 362.667c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM384 213.334c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM725.333 234.667c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM128 810.667v-85.333h768v85.333h-768zM725.333 576c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM725.333 405.334c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM554.667 554.667c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM554.667 384c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM554.667 213.334c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667z" /> | ||
494 | <glyph unicode="" d="M597.333 640c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM588.8 448.854l8.533-0.853c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64l0.853-8.533c3.84-28.587 26.027-50.773 54.613-54.613zM597.333 789.334c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM426.667 789.334c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM896 490.667c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM426.667 640c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM768 298.667c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM768 469.334c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM768 640c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM597.333 64c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM106.667 713.814l161.28-161.28-11.947 2.133c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667c0 4.267-1.28 8.107-2.56 11.947l119.893-119.893c-30.293-4.693-53.333-31.147-53.333-62.72 0-35.413 28.587-64 64-64 31.573 0 58.027 23.040 62.72 53.333l119.893-119.893c-3.84 1.28-7.68 2.56-11.947 2.56-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667c0 4.267-1.28 8.107-2.56 11.947l161.28-161.28 54.613 54.187-692.48 692.48-54.187-54.187zM426.667 213.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM896 362.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM256 384c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM128 533.334c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM426.667 64c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM256 213.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM128 362.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333z" /> | ||
495 | <glyph unicode="" d="M256 384c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM256 213.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM256 554.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM128 533.334c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM256 725.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM896 490.667c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM597.333 640c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM597.333 789.334c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM128 362.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM426.667 64c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM426.667 789.334c11.947 0 21.333 9.387 21.333 21.333s-9.387 21.333-21.333 21.333-21.333-9.387-21.333-21.333 9.387-21.333 21.333-21.333zM426.667 640c23.467 0 42.667 19.2 42.667 42.667s-19.2 42.667-42.667 42.667-42.667-19.2-42.667-42.667 19.2-42.667 42.667-42.667zM426.667 405.334c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM768 384c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM768 213.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM768 554.667c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM768 725.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM896 362.667c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM597.333 213.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM597.333 64c-11.947 0-21.333-9.387-21.333-21.333s9.387-21.333 21.333-21.333 21.333 9.387 21.333 21.333-9.387 21.333-21.333 21.333zM426.667 576c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM426.667 213.334c-23.467 0-42.667-19.2-42.667-42.667s19.2-42.667 42.667-42.667 42.667 19.2 42.667 42.667-19.2 42.667-42.667 42.667zM597.333 405.334c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64zM597.333 576c-35.413 0-64-28.587-64-64s28.587-64 64-64 64 28.587 64 64-28.587 64-64 64z" /> | ||
496 | <glyph unicode="" d="M938.667 426.667c0-235.641-191.025-426.667-426.667-426.667s-426.667 191.025-426.667 426.667c0 235.641 191.025 426.667 426.667 426.667s426.667-191.025 426.667-426.667z" /> | ||
497 | <glyph unicode="" d="M426.667 853.334c-77.653 0-150.613-21.333-213.333-57.6 127.573-73.813 213.333-211.2 213.333-369.067s-85.76-295.253-213.333-369.067c62.72-36.267 135.68-57.6 213.333-57.6 235.52 0 426.667 191.147 426.667 426.667s-191.147 426.667-426.667 426.667z" /> | ||
498 | <glyph unicode="" d="M384 853.334c-44.8 0-87.467-6.827-128-19.627 173.227-54.187 298.667-215.893 298.667-407.040s-125.44-352.853-298.667-407.040c40.533-12.8 83.2-19.627 128-19.627 235.52 0 426.667 191.147 426.667 426.667s-191.147 426.667-426.667 426.667z" /> | ||
499 | <glyph unicode="" d="M853.333 567.894v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107l141.227 141.227-141.227 141.227zM512 170.667c-37.973 0-74.24 8.533-106.667 23.467 87.893 40.533 149.333 129.28 149.333 232.533s-61.44 192-149.333 232.533c32.427 14.933 68.693 23.467 106.667 23.467 141.227 0 256-114.773 256-256s-114.773-256-256-256z" /> | ||
500 | <glyph unicode="" d="M853.333 285.44l141.227 141.227-141.227 141.227v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107zM512 170.667c-141.227 0-256 114.773-256 256s114.773 256 256 256 256-114.773 256-256-114.773-256-256-256z" /> | ||
501 | <glyph unicode="" d="M853.333 285.44l141.227 141.227-141.227 141.227v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107zM512 170.667v512c141.227 0 256-114.773 256-256s-114.773-256-256-256z" /> | ||
502 | <glyph unicode="" d="M853.333 567.894v200.107h-200.107l-141.227 141.227-141.227-141.227h-200.107v-200.107l-141.227-141.227 141.227-141.227v-200.107h200.107l141.227-141.227 141.227 141.227h200.107v200.107l141.227 141.227-141.227 141.227zM512 170.667c-141.227 0-256 114.773-256 256s114.773 256 256 256 256-114.773 256-256-114.773-256-256-256zM512 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667z" /> | ||
503 | <glyph unicode="" d="M298.667 341.334c-70.827 0-128-57.173-128-128 0-55.893-49.493-85.333-85.333-85.333 39.253-52.053 106.24-85.333 170.667-85.333 94.293 0 170.667 76.373 170.667 170.667 0 70.827-57.173 128-128 128zM883.627 741.12l-57.173 57.173c-16.64 16.64-43.52 16.64-60.16 0l-382.293-382.293 117.333-117.333 382.293 382.293c16.64 16.64 16.64 43.52 0 60.16z" /> | ||
504 | <glyph unicode="" d="M648.533 426.667c0-75.405-61.128-136.533-136.533-136.533s-136.533 61.128-136.533 136.533c0 75.405 61.128 136.533 136.533 136.533s136.533-61.128 136.533-136.533zM384 853.334l-78.080-85.333h-135.253c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333h-135.253l-78.080 85.333h-256zM512 213.334c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333z" /> | ||
505 | <glyph unicode="" d="M426.667 85.334h-213.333v-85.333h213.333v-85.333l128 128-128 128v-85.333zM597.333 85.334v-85.333h213.333v85.333h-213.333zM512 597.334c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-84.907-38.4-84.907-85.333 37.973-85.333 84.907-85.333zM725.333 938.667h-426.667c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM298.667 853.334h426.667v-448c0 71.253-142.080 106.667-213.333 106.667s-213.333-35.413-213.333-106.667v448z" /> | ||
506 | <glyph unicode="" d="M426.667 85.334h-213.333v-85.333h213.333v-85.333l128 128-128 128v-85.333zM597.333 85.334v-85.333h213.333v85.333h-213.333zM725.333 938.667h-426.667c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 682.667c-47.36 0-85.333 38.4-85.333 85.333s37.973 85.333 84.907 85.333 85.333-38.4 85.333-85.333c0.427-46.933-37.973-85.333-84.907-85.333z" /> | ||
507 | <glyph unicode="" d="M597.333 725.334c0 46.933-38.4 85.333-85.333 85.333h-42.667v42.667c0 23.467-19.2 42.667-42.667 42.667h-170.667c-23.467 0-42.667-19.2-42.667-42.667v-42.667h-42.667c-46.933 0-85.333-38.4-85.333-85.333v-640c0-46.933 38.4-85.333 85.333-85.333h341.333c46.933 0 85.333 38.4 85.333 85.333h341.333v640h-341.333zM512 170.667h-85.333v85.333h85.333v-85.333zM512 554.667h-85.333v85.333h85.333v-85.333zM682.667 170.667h-85.333v85.333h85.333v-85.333zM682.667 554.667h-85.333v85.333h85.333v-85.333zM853.333 170.667h-85.333v85.333h85.333v-85.333zM853.333 554.667h-85.333v85.333h85.333v-85.333z" /> | ||
508 | <glyph unicode="" d="M401.067 490.667l203.52 352.427c-29.867 6.4-60.587 10.24-92.587 10.24-102.4 0-196.267-36.267-269.653-96l156.16-270.933 2.56 4.267zM919.040 554.667c-39.253 124.587-134.4 224.427-256 270.507l-156.16-270.507h412.16zM930.133 512h-319.573l12.373-21.333 203.093-352c69.973 75.947 112.64 176.64 112.64 288 0 29.44-2.987 57.6-8.533 85.333zM364.373 426.667l-166.4 288c-69.547-75.947-112.64-176.64-112.64-288 0-29.44 2.987-57.6 8.533-85.333h319.573l-49.067 85.333zM104.96 298.667c39.253-124.587 134.4-224.427 256-270.507l156.16 270.507h-412.16zM585.813 298.667l-166.4-288.427c29.867-6.4 60.587-10.24 92.587-10.24 102.4 0 196.267 36.267 269.653 96l-156.16 270.933-39.68-68.267z" /> | ||
509 | <glyph unicode="" d="M512 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM213.333 298.667h-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h170.667v85.333h-170.667v170.667zM213.333 725.334h170.667v85.333h-170.667c-46.933 0-85.333-38.4-85.333-85.333v-170.667h85.333v170.667zM810.667 810.667h-170.667v-85.333h170.667v-170.667h85.333v170.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-170.667v-85.333h170.667c46.933 0 85.333 38.4 85.333 85.333v170.667h-85.333v-170.667z" /> | ||
510 | <glyph unicode="" d="M213.333 298.667h-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h170.667v85.333h-170.667v170.667zM213.333 725.334h170.667v85.333h-170.667c-46.933 0-85.333-38.4-85.333-85.333v-170.667h85.333v170.667zM810.667 810.667h-170.667v-85.333h170.667v-170.667h85.333v170.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-170.667v-85.333h170.667c46.933 0 85.333 38.4 85.333 85.333v170.667h-85.333v-170.667zM512 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM512 341.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> | ||
511 | <glyph unicode="" d="M938.667 256v512c0 46.933-38.4 85.333-85.333 85.333h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333zM469.333 426.667l86.613-115.627 126.72 158.293 170.667-213.333h-512l128 170.667zM85.333 682.667v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333h-85.333z" /> | ||
512 | <glyph unicode="" d="M512 810.667c-212.053 0-384-171.947-384-384s171.947-384 384-384c35.413 0 64 28.587 64 64 0 16.64-6.4 31.573-16.64 43.093-9.813 11.093-16.213 26.027-16.213 42.24 0 35.413 28.587 64 64 64h75.52c117.76 0 213.333 95.573 213.333 213.333 0 188.587-171.947 341.333-384 341.333zM277.333 426.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM405.333 597.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM618.667 597.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 426.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> | ||
513 | <glyph unicode="" d="M883.627 698.454l-99.84 99.84c-16.64 16.64-43.52 16.64-60.16 0l-133.12-133.12-82.347 81.493-60.16-60.16 60.587-60.587-380.587-380.587v-202.667h202.667l380.587 380.587 60.587-60.587 60.16 60.16-81.92 81.92 133.12 133.12c17.067 17.067 17.067 43.947 0.427 60.587zM295.253 128l-81.92 81.92 343.893 343.893 81.92-81.92-343.893-343.893z" /> | ||
514 | <glyph unicode="" d="M426.667 810.667h-213.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h213.333v-85.333h85.333v938.667h-85.333v-85.333zM426.667 170.667h-213.333l213.333 256v-256zM810.667 810.667h-213.333v-85.333h213.333v-554.667l-213.333 256v-384h213.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333z" /> | ||
515 | <glyph unicode="" d="M682.667 597.334h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333h-128zM85.333 426.667c0 119.040 69.973 221.867 171.093 269.653v92.16c-148.907-52.907-256.427-194.987-256.427-361.813s107.52-308.907 256.427-361.813v92.16c-101.12 47.787-171.093 150.613-171.093 269.653zM640 810.667c-211.627 0-384-172.373-384-384s172.373-384 384-384 384 172.373 384 384-172.373 384-384 384zM640 128c-164.693 0-298.667 133.973-298.667 298.667s133.973 298.667 298.667 298.667 298.667-133.973 298.667-298.667-133.973-298.667-298.667-298.667z" /> | ||
516 | <glyph unicode="" d="M554.667 640h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667zM512 853.334c-235.093 0-426.667-191.573-426.667-426.667s191.573-426.667 426.667-426.667 426.667 191.573 426.667 426.667-191.573 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> | ||
517 | <glyph unicode="" d="M810.667 768h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM810.667 170.667h-597.333v512h597.333v-512z" /> | ||
518 | <glyph unicode="" d="M810.667 725.334h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 213.334h-597.333v426.667h597.333v-426.667z" /> | ||
519 | <glyph unicode="" d="M810.667 640h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-256c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v256c0 46.933-38.4 85.333-85.333 85.333zM810.667 298.667h-597.333v256h597.333v-256z" /> | ||
520 | <glyph unicode="" d="M810.667 682.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-341.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v341.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 256h-597.333v341.333h597.333v-341.333z" /> | ||
521 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v597.333h597.333v-597.333z" /> | ||
522 | <glyph unicode="" d="M128 725.334v-170.667h85.333v170.667h170.667v85.333h-170.667c-46.933 0-85.333-38.4-85.333-85.333zM213.333 298.667h-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h170.667v85.333h-170.667v170.667zM810.667 128h-170.667v-85.333h170.667c46.933 0 85.333 38.4 85.333 85.333v170.667h-85.333v-170.667zM810.667 810.667h-170.667v-85.333h170.667v-170.667h85.333v170.667c0 46.933-38.4 85.333-85.333 85.333z" /> | ||
523 | <glyph unicode="" d="M810.667 725.334h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-426.667c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 213.334h-597.333v426.667h597.333v-426.667z" /> | ||
524 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v597.333h597.333v-597.333zM595.627 414.294l-117.333-151.040-83.627 100.693-117.333-150.613h469.333l-151.040 200.96z" /> | ||
525 | <glyph unicode="" d="M725.333 810.667h-426.667c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM725.333 128h-426.667v597.333h426.667v-597.333z" /> | ||
526 | <glyph unicode="" d="M768 768h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM768 170.667h-512v512h512v-512z" /> | ||
527 | <glyph unicode="" d="M725.333 298.667h85.333v341.333c0 46.933-38.4 85.333-85.333 85.333h-341.333v-85.333h341.333v-341.333zM298.667 213.334v682.667h-85.333v-170.667h-170.667v-85.333h170.667v-426.667c0-46.933 38.4-85.333 85.333-85.333h426.667v-170.667h85.333v170.667h170.667v85.333h-682.667z" /> | ||
528 | <glyph unicode="" d="M85.333 277.334v-85.333h853.333v85.333h-853.333zM85.333 490.667v-85.333h853.333v85.333h-853.333zM85.333 704v-85.333h853.333v85.333h-853.333z" /> | ||
529 | <glyph unicode="" d="M128 768l384-682.667 384 682.667h-768zM272.213 682.667h480l-240.213-426.667-239.787 426.667z" /> | ||
530 | <glyph unicode="" d="M128 202.667v-160h160l471.893 471.893-160 160-471.893-471.893zM883.627 638.294c16.64 16.64 16.64 43.52 0 60.16l-99.84 99.84c-16.64 16.64-43.52 16.64-60.16 0l-78.080-78.080 160-160 78.080 78.080z" /> | ||
531 | <glyph unicode="" d="M170.667 469.334v-85.333h341.333v85.333h-341.333zM810.667 170.667h-85.333v453.12l-128-43.52v72.533l200.533 72.533h12.8v-554.667z" /> | ||
532 | <glyph unicode="" d="M642.133 243.627l122.027 130.987c16.213 16.64 30.72 33.707 44.373 50.347s25.173 33.28 34.987 49.92c9.813 16.64 17.493 33.28 23.040 49.92s8.107 33.707 8.107 50.347c0 22.613-3.84 43.52-11.52 62.293s-18.773 34.56-33.28 47.36c-14.507 13.227-32.853 23.040-53.76 30.293-21.76 6.827-46.080 10.24-73.387 10.24-29.44 0-55.893-4.693-78.933-13.653s-42.667-21.76-58.027-37.547c-15.787-15.787-27.733-34.133-35.84-55.467-7.68-20.053-11.52-41.387-11.947-64h91.307c0.427 13.227 2.133 25.6 5.547 37.12 3.84 12.373 9.813 23.040 17.067 32 7.68 8.96 17.493 15.787 29.013 20.907s25.6 7.68 40.96 7.68c13.227 0 24.747-2.133 34.56-6.4s18.347-10.667 25.173-18.347c6.827-7.68 11.947-17.067 15.787-27.733 3.413-10.667 5.547-22.187 5.547-34.56 0-9.387-1.28-18.347-3.413-27.733-2.56-9.387-6.4-19.2-12.373-29.867s-13.653-22.613-23.893-35.413c-9.813-12.8-22.187-27.733-37.547-43.947l-177.92-194.133v-63.573h368.213v72.96h-253.867zM85.333 469.334v-85.333h341.333v85.333h-341.333z" /> | ||
533 | <glyph unicode="" d="M426.667 640h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667zM853.333 170.667h-85.333v453.12l-128-43.52v72.533l200.533 72.533h12.8v-554.667z" /> | ||
534 | <glyph unicode="" d="M684.8 243.627l122.027 130.987c16.213 16.64 30.72 33.707 44.373 50.347s25.173 33.28 34.987 49.92c9.813 16.64 17.493 33.28 23.040 49.92s8.107 33.707 8.107 50.347c0 22.613-3.84 43.52-11.52 62.293s-18.773 34.56-33.28 47.36c-14.507 13.227-32.853 23.040-53.76 30.293-21.76 6.827-46.080 10.24-73.387 10.24-29.44 0-55.893-4.693-78.933-13.653s-42.667-21.76-58.027-37.547c-15.787-15.787-27.733-34.133-35.84-55.467-7.68-20.053-11.52-41.387-11.947-64h91.307c0.427 13.227 2.133 25.6 5.547 37.12 3.84 12.373 9.813 23.040 17.067 32 7.68 8.96 17.493 15.787 29.013 20.907s25.6 7.68 40.96 7.68c13.227 0 24.747-2.133 34.56-6.4s18.347-10.667 25.173-18.347c6.827-7.68 11.947-17.067 15.787-27.733 3.413-10.667 5.547-22.187 5.547-34.56 0-9.387-1.28-18.347-3.413-27.733-2.56-9.387-6.4-19.2-12.373-29.867s-13.653-22.613-23.893-35.413c-9.813-12.8-22.187-27.733-37.547-43.947l-177.92-194.133v-63.573h368.213v72.96h-253.867zM341.333 640h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667z" /> | ||
535 | <glyph unicode="" d="M688.64 405.334c0-42.667-4.267-78.933-12.8-108.8s-20.48-54.187-35.413-72.533c-15.36-18.773-33.707-32-55.467-40.533s-45.653-12.8-72.533-12.8c-26.453 0-50.347 4.267-72.107 12.8s-40.533 21.76-55.893 40.533c-15.36 18.773-27.733 43.093-36.267 72.533-8.533 29.867-12.8 66.133-12.8 108.8v87.040c0 42.667 4.267 78.933 12.8 108.8s20.48 53.76 35.84 72.107c15.36 18.347 34.133 31.573 55.893 39.68 21.333 8.107 45.653 12.373 72.107 12.373 26.88 0 50.773-4.267 72.533-12.373s40.533-21.333 55.893-39.68c15.36-18.347 27.307-42.24 35.84-72.107s12.8-65.707 12.8-108.8v-87.040zM598.613 506.027c0 27.307-2.133 50.347-5.547 69.12-3.84 18.773-9.387 33.707-17.067 45.227-7.253 11.52-16.64 19.627-27.307 24.747-10.667 5.547-23.040 8.107-36.693 8.107s-26.027-2.56-36.693-7.68-20.053-13.227-27.307-24.747c-7.253-11.52-13.227-26.453-17.067-45.227s-5.547-41.813-5.547-69.12v-113.92c0-27.307 2.133-50.347 5.973-69.12 3.84-19.2 9.813-34.56 17.067-46.507s16.64-20.48 27.307-26.027 23.040-8.107 37.12-8.107c14.080 0 26.453 2.56 37.12 8.107s19.627 14.080 26.88 26.027c7.253 11.947 12.8 27.307 16.64 46.507s5.547 42.24 5.547 69.12v113.493z" /> | ||
536 | <glyph unicode="" d="M640 213.334v-85.333h85.333v85.333h85.333v85.333h-85.333v85.333h-85.333v-85.333h-85.333v-85.333h85.333zM853.333 853.334h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM213.333 725.334h256v-85.333h-256v85.333zM853.333 85.334h-682.667l682.667 682.667v-682.667z" /> | ||
537 | <glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM597.333 298.667h85.333v426.667h-170.667v-85.333h85.333v-341.333zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333z" /> | ||
538 | <glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM725.333 384h-170.667v85.333h85.333c46.933 0 85.333 37.973 85.333 85.333v85.333c0 47.36-38.4 85.333-85.333 85.333h-170.667v-85.333h170.667v-85.333h-85.333c-46.933 0-85.333-37.973-85.333-85.333v-170.667h256v85.333z" /> | ||
539 | <glyph unicode="" d="M896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM725.333 384v64c0 35.413-28.587 64-64 64 35.413 0 64 28.587 64 64v64c0 47.36-38.4 85.333-85.333 85.333h-170.667v-85.333h170.667v-85.333h-85.333v-85.333h85.333v-85.333h-170.667v-85.333h170.667c46.933 0 85.333 37.973 85.333 85.333z" /> | ||
540 | <glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM640 298.667h85.333v426.667h-85.333v-170.667h-85.333v170.667h-85.333v-256h170.667v-170.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333z" /> | ||
541 | <glyph unicode="" d="M896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM725.333 384v85.333c0 47.36-38.4 85.333-85.333 85.333h-85.333v85.333h170.667v85.333h-256v-256h170.667v-85.333h-170.667v-85.333h170.667c46.933 0 85.333 37.973 85.333 85.333z" /> | ||
542 | <glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM554.667 298.667h85.333c46.933 0 85.333 37.973 85.333 85.333v85.333c0 47.36-38.4 85.333-85.333 85.333h-85.333v85.333h170.667v85.333h-170.667c-46.933 0-85.333-37.973-85.333-85.333v-256c0-47.36 38.4-85.333 85.333-85.333zM554.667 469.334h85.333v-85.333h-85.333v85.333z" /> | ||
543 | <glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM554.667 298.667l170.667 341.333v85.333h-256v-85.333h170.667l-170.667-341.333h85.333z" /> | ||
544 | <glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM554.667 298.667h85.333c46.933 0 85.333 37.973 85.333 85.333v64c0 35.413-28.587 64-64 64 35.413 0 64 28.587 64 64v64c0 47.36-38.4 85.333-85.333 85.333h-85.333c-46.933 0-85.333-37.973-85.333-85.333v-64c0-35.413 28.587-64 64-64-35.413 0-64-28.587-64-64v-64c0-47.36 38.4-85.333 85.333-85.333zM554.667 640h85.333v-85.333h-85.333v85.333zM554.667 469.334h85.333v-85.333h-85.333v85.333z" /> | ||
545 | <glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM597.333 426.667v170.667c0 47.36-38.4 85.333-85.333 85.333h-42.667c-46.933 0-85.333-37.973-85.333-85.333v-42.667c0-47.36 38.4-85.333 85.333-85.333h42.667v-42.667h-128v-85.333h128c46.933 0 85.333 37.973 85.333 85.333zM469.333 554.667v42.667h42.667v-42.667h-42.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 554.667h-85.333v85.333h-85.333v-85.333h-85.333v-85.333h85.333v-85.333h85.333v85.333h85.333v-256h-597.333v597.333h597.333v-256z" /> | ||
546 | <glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333zM640 725.334h-85.333c-46.933 0-85.333-37.973-85.333-85.333v-85.333c0-47.36 38.4-85.333 85.333-85.333h85.333v-85.333h-170.667v-85.333h170.667c46.933 0 85.333 37.973 85.333 85.333v256c0 47.36-38.4 85.333-85.333 85.333zM640 554.667h-85.333v85.333h85.333v-85.333z" /> | ||
547 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128l-298.667 341.333v-341.333h-298.667l298.667 341.333v256h298.667v-597.333z" /> | ||
548 | <glyph unicode="" d="M213.333 298.667h-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h170.667v85.333h-170.667v170.667zM213.333 725.334h170.667v85.333h-170.667c-46.933 0-85.333-38.4-85.333-85.333v-170.667h85.333v170.667zM810.667 810.667h-170.667v-85.333h170.667v-170.667h85.333v170.667c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-170.667v-85.333h170.667c46.933 0 85.333 38.4 85.333 85.333v170.667h-85.333v-170.667zM512 554.667c-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128-57.173 128-128 128z" /> | ||
549 | <glyph unicode="" d="M825.6 510.294c-29.013 147.2-158.293 257.707-313.6 257.707-123.307 0-229.973-69.973-283.307-172.373-128.427-13.653-228.693-122.027-228.693-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-198.4 211.627zM810.667 170.667h-554.667c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667 170.667-76.373 170.667-170.667h85.333c0 117.76-79.36 216.747-187.733 246.613 43.093 57.173 110.933 94.72 187.733 94.72 129.28 0 234.667-105.387 234.667-234.667v-21.333h64c70.4 0 128-57.6 128-128s-57.6-128-128-128z" /> | ||
550 | <glyph unicode="" d="M853.333 768h-170.667l-170.667 170.667-170.667-170.667h-170.667c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM853.333 85.334h-682.667v597.333h192.853l150.187 149.333 148.48-149.333h191.147v-597.333zM768 597.334h-512v-426.667h512z" /> | ||
551 | <glyph unicode="" d="M597.333 682.667l-160-213.333 121.6-162.133-68.267-51.2c-72.107 96-192 256-192 256l-256-341.333h938.667l-384 512z" /> | ||
552 | <glyph unicode="" d="M128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333z" /> | ||
553 | <glyph unicode="" d="M469.333 765.014v86.187c-85.76-8.533-163.84-42.667-226.987-94.293l60.587-61.013c47.36 36.693 104.107 61.44 166.4 69.12zM781.653 756.907c-63.147 51.627-141.227 85.76-226.987 94.293v-86.187c62.293-7.68 119.040-32.427 166.4-69.12l60.587 61.013zM850.347 469.334h86.187c-8.533 85.76-42.667 163.84-94.293 226.987l-61.013-60.587c36.693-47.36 61.44-104.107 69.12-166.4zM242.773 635.734l-61.013 60.587c-51.627-63.147-85.76-141.227-94.293-226.987h86.187c7.68 62.293 32.427 119.040 69.12 166.4zM173.653 384h-86.187c8.533-85.76 42.667-163.84 94.293-226.987l61.013 61.013c-36.693 46.933-61.44 103.68-69.12 165.973zM640 426.667c0 70.827-57.173 128-128 128s-128-57.173-128-128 57.173-128 128-128 128 57.173 128 128zM781.227 217.6l61.013-61.013c51.627 63.147 85.76 141.653 94.293 226.987h-86.187c-7.68-61.867-32.427-118.613-69.12-165.973zM554.667 88.32v-86.187c85.76 8.533 163.84 42.667 226.987 94.293l-61.013 61.013c-46.933-36.693-103.68-61.44-165.973-69.12zM242.347 96.427c63.147-51.627 141.653-85.76 226.987-94.293v86.187c-62.293 7.68-119.040 32.427-166.4 69.12l-60.587-61.013z" /> | ||
554 | <glyph unicode="" d="M797.867 409.6c-11.947 6.827-24.32 12.373-36.693 17.067 12.373 4.693 24.747 10.24 36.693 17.067 81.92 47.36 127.573 133.12 128 221.44-76.373 43.947-173.653 47.36-256 0-11.947-6.827-23.040-14.933-33.28-23.040 2.133 13.227 3.413 26.88 3.413 40.533 0 94.72-51.627 177.067-128 221.44-76.373-44.373-128-126.72-128-221.44 0-13.653 1.28-27.307 3.413-40.533-10.24 8.533-21.333 16.64-33.28 23.467-81.92 47.36-179.2 43.947-256 0 0-88.32 45.653-174.080 128-221.44 11.947-6.827 24.32-12.373 36.693-17.067-12.373-4.693-24.747-10.24-36.693-17.067-81.92-47.36-127.573-133.12-128-221.44 76.373-43.947 173.653-47.36 256 0 11.947 6.827 23.040 14.933 33.28 23.040-2.133-13.653-3.413-27.307-3.413-40.96 0-94.72 51.627-177.067 128-221.44 76.373 44.373 128 126.72 128 221.44 0 13.653-1.28 27.307-3.413 40.533 10.24-8.533 21.333-16.213 33.28-23.040 81.92-47.36 179.2-43.947 256 0-0.427 88.32-46.080 174.080-128 221.44zM512 256c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667 170.667-76.373 170.667-170.667-76.373-170.667-170.667-170.667z" /> | ||
555 | <glyph unicode="" d="M680.96 499.627l-117.333-151.040-83.627 100.693-117.333-150.613h469.333l-151.040 200.96zM128 725.334h-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667v85.333h-682.667v682.667zM896 896h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM896 213.334h-597.333v597.333h597.333v-597.333z" /> | ||
556 | <glyph unicode="" d="M298.667 469.334h-256v-85.333h256v85.333zM391.253 607.574l-90.453 90.453-60.16-60.16 90.453-90.453 60.16 60.16zM554.667 896h-85.333v-256h85.333v256zM783.36 637.867l-60.16 60.16-90.453-90.453 60.16-60.16 90.453 90.453zM725.333 469.334v-85.333h256v85.333h-256zM512 554.667c-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128-57.173 128-128 128zM632.747 245.76l90.453-90.453 60.16 60.16-90.453 90.453-60.16-60.16zM240.64 215.467l60.16-60.16 90.453 90.453-60.16 60.16-90.453-90.453zM469.333-42.666h85.333v256h-85.333v-256z" /> | ||
557 | <glyph unicode="" d="M128 853.334v-512h128v-384l298.667 512h-170.667l170.667 384h-426.667zM810.667 853.334h-85.333l-136.533-384h81.067l29.867 85.333h136.533l29.867-85.333h81.067l-136.533 384zM718.933 612.267l49.067 155.733 49.067-155.733h-98.133z" /> | ||
558 | <glyph unicode="" d="M139.52 810.667l-54.187-54.187 213.333-213.333v-159.147h128v-384l152.747 261.973 177.067-176.64 54.187 54.187-671.147 671.147zM725.333 512h-170.667l170.667 341.333h-426.667v-93.013l360.96-360.96 65.707 112.64z" /> | ||
559 | <glyph unicode="" d="M298.667 853.334v-469.333h128v-384l298.667 512h-170.667l170.667 341.333z" /> | ||
560 | <glyph unicode="" d="M640 42.667h85.333v85.333h-85.333v-85.333zM810.667 554.667h85.333v85.333h-85.333v-85.333zM128 725.334v-597.333c0-46.933 38.4-85.333 85.333-85.333h170.667v85.333h-170.667v597.333h170.667v85.333h-170.667c-46.933 0-85.333-38.4-85.333-85.333zM810.667 810.667v-85.333h85.333c0 46.933-38.4 85.333-85.333 85.333zM469.333-42.666h85.333v938.667h-85.333v-938.667zM810.667 213.334h85.333v85.333h-85.333v-85.333zM640 725.334h85.333v85.333h-85.333v-85.333zM810.667 384h85.333v85.333h-85.333v-85.333zM810.667 42.667c46.933 0 85.333 38.4 85.333 85.333h-85.333v-85.333z" /> | ||
561 | <glyph unicode="" d="M469.333 554.667h85.333v-85.333h-85.333zM384 469.334h85.333v-85.333h-85.333zM554.667 469.334h85.333v-85.333h-85.333zM640 554.667h85.333v-85.333h-85.333zM298.667 554.667h85.333v-85.333h-85.333zM810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM384 170.667h-85.333v85.333h85.333v-85.333zM554.667 170.667h-85.333v85.333h85.333v-85.333zM725.333 170.667h-85.333v85.333h85.333v-85.333zM810.667 469.334h-85.333v-85.333h85.333v-85.333h-85.333v85.333h-85.333v-85.333h-85.333v85.333h-85.333v-85.333h-85.333v85.333h-85.333v-85.333h-85.333v85.333h85.333v85.333h-85.333v256h597.333v-256z" /> | ||
562 | <glyph unicode="" d="M426.667 426.667c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM256 597.334c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM256 256c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 597.334c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333zM597.333 256c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 426.667c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM597.333 597.334c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM426.667 768c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> | ||
563 | <glyph unicode="" d="M341.333 768v-61.867l85.333-85.333v147.2h170.667v-170.667h-147.2l85.333-85.333h61.867v-61.867l85.333-85.333v147.2h170.667v-170.667h-147.2l85.333-85.333h61.867v-61.867l85.333-85.333v659.2c0 46.933-38.4 85.333-85.333 85.333h-659.2l85.333-85.333h61.867zM682.667 768h170.667v-170.667h-170.667v170.667zM54.187 884.48l-54.187-54.613 85.333-85.333v-659.2c0-46.933 38.4-85.333 85.333-85.333h659.627l85.333-85.333 54.187 54.187-915.627 915.627zM426.667 403.2l61.867-61.867h-61.867v61.867zM170.667 659.2l61.867-61.867h-61.867v61.867zM341.333 85.334h-170.667v170.667h170.667v-170.667zM341.333 341.334h-170.667v170.667h147.2l23.467-23.467v-147.2zM597.333 85.334h-170.667v170.667h147.2l23.467-23.040v-147.627zM682.667 85.334v62.293l62.293-62.293h-62.293z" /> | ||
564 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM341.333 85.334h-170.667v170.667h170.667v-170.667zM341.333 341.334h-170.667v170.667h170.667v-170.667zM341.333 597.334h-170.667v170.667h170.667v-170.667zM597.333 85.334h-170.667v170.667h170.667v-170.667zM597.333 341.334h-170.667v170.667h170.667v-170.667zM597.333 597.334h-170.667v170.667h170.667v-170.667zM853.333 85.334h-170.667v170.667h170.667v-170.667zM853.333 341.334h-170.667v170.667h170.667v-170.667zM853.333 597.334h-170.667v170.667h170.667v-170.667z" /> | ||
565 | <glyph unicode="" d="M768 213.334l-628.48 628.48-54.187-54.613 170.667-170.667v-147.2h-85.333v170.667h-85.333v-426.667h85.333v170.667h85.333v-170.667h85.333v317.867l42.667-42.667v-275.2h170.667c28.587 0 53.76 14.080 69.12 35.84l270.507-270.507 54.187 54.187-180.48 180.48zM554.667 298.667h-85.333v104.533l85.333-85.333v-19.2zM768 384h42.667l34.987-139.52 31.147-31.147h61.867l-50.773 177.92c29.867 13.227 50.773 43.093 50.773 78.080v85.333c0 46.933-38.4 85.333-85.333 85.333h-170.667v-232.533l85.333-85.333v61.867zM768 554.667h85.333v-85.333h-85.333v85.333zM640 450.134v104.533c0 46.933-38.4 85.333-85.333 85.333h-104.533l189.867-189.867z" /> | ||
566 | <glyph unicode="" d="M256 469.334h-85.333v170.667h-85.333v-426.667h85.333v170.667h85.333v-170.667h85.333v426.667h-85.333v-170.667zM554.667 640h-170.667v-426.667h170.667c46.933 0 85.333 38.4 85.333 85.333v256c0 46.933-38.4 85.333-85.333 85.333zM554.667 298.667h-85.333v256h85.333v-256zM938.667 469.334v85.333c0 46.933-38.4 85.333-85.333 85.333h-170.667v-426.667h85.333v170.667h42.667l42.667-170.667h85.333l-50.773 177.92c29.867 13.227 50.773 43.093 50.773 78.080zM853.333 469.334h-85.333v85.333h85.333v-85.333z" /> | ||
567 | <glyph unicode="" d="M725.333 682.667c-141.227 0-256-114.773-256-256s114.773-256 256-256 256 114.773 256 256-114.773 256-256 256zM213.333 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM213.333 341.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> | ||
568 | <glyph unicode="" d="M213.333 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM725.333 682.667c-141.227 0-256-114.773-256-256s114.773-256 256-256 256 114.773 256 256-114.773 256-256 256zM725.333 256c-94.293 0-170.667 76.373-170.667 170.667s76.373 170.667 170.667 170.667 170.667-76.373 170.667-170.667-76.373-170.667-170.667-170.667z" /> | ||
569 | <glyph unicode="" d="M756.48 425.814l169.813 169.813c16.64 16.64 16.64 43.52 0 60.16l-185.173 185.173c-16.64 16.64-43.52 16.64-60.16 0l-169.813-169.813-169.813 169.813c-8.533 8.107-19.2 12.373-30.293 12.373-10.667 0-21.76-4.267-29.867-12.373l-185.173-185.173c-16.64-16.64-16.64-43.52 0-60.16l169.813-169.813-169.813-169.813c-16.64-16.64-16.64-43.52 0-60.16l185.173-185.173c16.64-16.64 43.52-16.64 60.16 0l169.813 169.813 169.813-169.813c8.533-8.533 19.2-12.373 30.293-12.373s21.76 4.267 30.293 12.373l185.173 185.173c16.64 16.64 16.64 43.52 0 60.16l-170.24 169.813zM512 554.667c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM311.040 471.040l-154.88 154.453 154.88 154.88 154.453-154.453-154.453-154.88zM426.667 384c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM512 298.667c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM597.333 469.334c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM710.827 70.827l-154.88 154.453 154.88 154.88 154.453-154.453-154.453-154.88z" /> | ||
570 | <glyph unicode="" d="M682.667 512h-85.333v-85.333h85.333v85.333zM682.667 341.334h-85.333v-85.333h85.333v85.333zM341.333 512h-85.333v-85.333h85.333v85.333zM512 512h-85.333v-85.333h85.333v85.333zM853.333 768h-682.667c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM853.333 170.667h-682.667v512h682.667v-512z" /> | ||
571 | <glyph unicode="" d="M896 128v597.333c0 46.933-38.4 85.333-85.333 85.333h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333zM362.667 362.667l106.667-128.427 149.333 192.427 192-256h-597.333l149.333 192z" /> | ||
572 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM234.667 618.667h85.333v85.333h64v-85.333h85.333v-64h-85.333v-85.333h-64v85.333h-85.333v64zM810.667 128h-597.333l597.333 597.333v-597.333zM725.333 213.334v64h-213.333v-64h213.333z" /> | ||
573 | <glyph unicode="" d="M597.333 682.667l-160-213.333 121.6-162.133-68.267-51.2c-72.107 96-192 256-192 256l-256-341.333h938.667l-384 512z" /> | ||
574 | <glyph unicode="" d="M256 810.667h-128v-128c70.827 0 128 57.173 128 128zM597.333 810.667h-85.333c0-212.053-171.947-384-384-384v-85.333c259.413 0 469.333 210.347 469.333 469.333zM426.667 810.667h-85.333c0-117.76-95.573-213.333-213.333-213.333v-85.333c165.12 0 298.667 133.547 298.667 298.667zM426.667 42.667h85.333c0 212.053 171.947 384 384 384v85.333c-258.987 0-469.333-210.347-469.333-469.333zM768 42.667h128v128c-70.827 0-128-57.173-128-128zM597.333 42.667h85.333c0 117.76 95.573 213.333 213.333 213.333v85.333c-165.12 0-298.667-133.547-298.667-298.667z" /> | ||
575 | <glyph unicode="" d="M426.667 810.667h-85.333c0-15.787-1.707-30.72-5.12-45.227l67.84-67.84c14.507 34.56 22.613 72.96 22.613 113.067zM128 756.48l121.173-121.173c-34.56-23.893-75.947-37.973-121.173-37.973v-85.333c68.693 0 131.84 23.467 182.187 62.293l61.013-61.013c-66.56-54.187-151.040-86.613-243.2-86.613v-85.333c115.627 0 221.44 42.24 303.36 111.787l106.667-106.667c-69.12-82.347-111.36-188.16-111.36-303.787h85.333c0 92.16 32.427 176.64 86.613 242.773l61.013-61.013c-38.827-49.92-62.293-113.067-62.293-181.76h85.333c0 45.227 14.080 86.613 37.973 121.173l121.173-121.173 54.187 54.187-713.813 713.813-54.187-54.187zM597.333 810.667h-85.333c0-64-15.787-124.16-43.52-177.493l62.293-62.293c41.813 69.973 66.56 151.893 66.56 239.787zM850.773 250.88c14.507 3.413 29.44 5.12 45.227 5.12v85.333c-40.107 0-78.507-8.107-113.493-22.187l68.267-68.267zM656.213 445.44l62.293-62.293c53.333 27.733 113.493 43.52 177.493 43.52v85.333c-87.893 0-169.813-24.747-239.787-66.56z" /> | ||
576 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667z" /> | ||
577 | <glyph unicode="" d="M811.093 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM640.427 490.667c0-35.413-28.587-64-64-64 35.413 0 64-28.587 64-64v-64c0-47.36-38.4-85.333-85.333-85.333h-170.667v85.333h170.667v85.333h-85.333v85.333h85.333v85.333h-170.667v85.333h170.667c46.933 0 85.333-37.973 85.333-85.333v-64z" /> | ||
578 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM640 213.334h-85.333v170.667h-170.667v256h85.333v-170.667h85.333v170.667h85.333v-426.667z" /> | ||
579 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM640 554.667h-170.667v-85.333h85.333c46.933 0 85.333-37.973 85.333-85.333v-85.333c0-47.36-38.4-85.333-85.333-85.333h-170.667v85.333h170.667v85.333h-170.667v256h256v-85.333z" /> | ||
580 | <glyph unicode="" d="M469.333 298.667h85.333v85.333h-85.333v-85.333zM810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM640 554.667h-170.667v-85.333h85.333c46.933 0 85.333-37.973 85.333-85.333v-85.333c0-47.36-38.4-85.333-85.333-85.333h-85.333c-46.933 0-85.333 37.973-85.333 85.333v256c0 47.36 38.4 85.333 85.333 85.333h170.667v-85.333z" /> | ||
581 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM597.333 213.334h-85.333v341.333h-85.333v85.333h170.667v-426.667z" /> | ||
582 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM640 469.334c0-47.36-38.4-85.333-85.333-85.333h-85.333v-85.333h170.667v-85.333h-256v170.667c0 47.36 38.4 85.333 85.333 85.333h85.333v85.333h-170.667v85.333h170.667c46.933 0 85.333-37.973 85.333-85.333v-85.333z" /> | ||
583 | <glyph unicode="" d="M512 512c-164.693 0-298.667-133.973-298.667-298.667h85.333c0 117.76 95.573 213.333 213.333 213.333s213.333-95.573 213.333-213.333h85.333c0 164.693-133.973 298.667-298.667 298.667zM512 682.667c-258.987 0-469.333-210.347-469.333-469.333h85.333c0 211.627 172.373 384 384 384s384-172.373 384-384h85.333c0 258.987-210.347 469.333-469.333 469.333z" /> | ||
584 | <glyph unicode="" d="M554.667 640h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667v170.667zM512 853.334c-235.093 0-426.667-191.573-426.667-426.667s191.573-426.667 426.667-426.667h341.333c46.933 0 85.333 38.4 85.333 85.333v341.333c0 235.093-191.573 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> | ||
585 | <glyph unicode="" d="M768 768l85.333-170.667h-128l-85.333 170.667h-85.333l85.333-170.667h-128l-85.333 170.667h-85.333l85.333-170.667h-128l-85.333 170.667h-42.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v597.333h-170.667z" /> | ||
586 | <glyph unicode="" d="M945.92 547.414c0 165.12-133.547 298.667-298.667 298.667s-298.667-133.547-298.667-298.667c0-148.053 107.52-270.507 248.747-293.973v-168.107h-341.333v128h42.667v170.667c0 23.467-19.2 42.667-42.667 42.667h-128c-23.467 0-42.667-19.2-42.667-42.667v-170.667h42.667v-213.333h682.667v85.333h-128v165.547c148.053 17.493 263.253 143.36 263.253 296.533zM192 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64z" /> | ||
587 | <glyph unicode="" d="M554.667 250.88c148.053 17.493 263.253 143.36 263.253 296.533 0 165.12-133.547 298.667-298.667 298.667s-298.667-133.547-298.667-298.667c0-148.053 107.52-270.507 248.747-293.973v-168.107h-256v-85.333h597.333v85.333h-256v165.547z" /> | ||
588 | <glyph unicode="" d="M657.493 622.507l-60.16 60.16-256-256 256-256 60.16 60.16-195.413 195.84z" /> | ||
589 | <glyph unicode="" d="M426.667 682.667l-60.16-60.16 195.413-195.84-195.413-195.84 60.16-60.16 256 256z" /> | ||
590 | <glyph unicode="" d="M512 810.667c-212.053 0-384-171.947-384-384s171.947-384 384-384c35.413 0 64 28.587 64 64 0 16.64-6.4 31.573-16.64 43.093-9.813 11.093-16.213 26.027-16.213 42.24 0 35.413 28.587 64 64 64h75.52c117.76 0 213.333 95.573 213.333 213.333 0 188.587-171.947 341.333-384 341.333zM277.333 426.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM405.333 597.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM618.667 597.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 426.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> | ||
591 | <glyph unicode="" d="M512 853.334c-235.947 0-426.667-190.72-426.667-426.667s190.72-426.667 426.667-426.667 426.667 190.72 426.667 426.667-190.72 426.667-426.667 426.667zM512 85.334c-188.16 0-341.333 153.173-341.333 341.333s153.173 341.333 341.333 341.333 341.333-153.173 341.333-341.333-153.173-341.333-341.333-341.333z" /> | ||
592 | <glyph unicode="" d="M853.333 659.627v-465.493c-110.933 32.853-225.28 49.493-341.333 49.493s-230.4-16.64-341.333-49.493v465.493c110.933-32.853 225.28-49.493 341.333-49.493 116.053-0.427 230.4 16.213 341.333 49.493zM914.347 768c-4.267 0-8.533-0.853-13.227-2.56-125.44-46.933-257.28-69.973-389.12-69.973s-263.68 23.467-389.12 69.973c-4.693 1.707-9.387 2.56-13.227 2.56-14.507 0-24.32-9.813-24.32-26.88v-629.333c0-16.64 9.813-26.453 24.32-26.453 4.267 0 8.533 0.853 13.227 2.56 125.44 46.933 257.28 69.973 389.12 69.973s263.68-23.467 389.12-69.973c4.693-1.707 8.96-2.56 13.227-2.56 14.080 0 24.32 9.813 24.32 26.88v628.907c0 17.067-10.24 26.88-24.32 26.88z" /> | ||
593 | <glyph unicode="" d="M850.773 37.547c-46.933 125.44-69.973 257.28-69.973 389.12s23.467 263.68 69.973 389.12c1.707 4.693 2.56 9.387 2.56 13.227 0 14.507-9.813 24.32-26.88 24.32h-628.907c-17.067 0-26.88-9.813-26.88-24.32 0-4.267 0.853-8.533 2.56-13.227 46.933-125.44 70.4-257.28 70.4-389.12s-23.467-263.68-69.973-389.12c-2.133-4.693-2.987-9.387-2.987-13.227 0-14.080 9.813-24.32 26.88-24.32h629.333c16.64 0 26.88 10.24 26.88 24.32-0.427 4.267-1.28 8.533-2.987 13.227zM279.040 85.334c32.853 110.933 49.493 225.28 49.493 341.333s-16.64 230.4-49.493 341.333h465.493c-32.853-110.933-49.493-225.28-49.493-341.333s16.64-230.4 49.493-341.333h-465.493z" /> | ||
594 | <glyph unicode="" d="M512 682.667c104.533 0 200.96-8.533 311.040-27.307 20.053-75.947 30.293-152.747 30.293-228.693s-10.24-152.747-30.293-228.693c-110.080-18.773-206.507-27.307-311.040-27.307s-200.96 8.533-311.040 27.307c-20.053 75.947-30.293 152.747-30.293 228.693s10.24 152.747 30.293 228.693c110.080 18.773 206.507 27.307 311.040 27.307zM512 768c-116.48 0-222.72-10.24-339.2-30.72l-39.68-6.827-10.667-38.4c-24.747-88.32-37.12-177.067-37.12-265.387s12.373-177.067 37.12-265.387l10.667-37.973 39.68-6.827c116.48-20.907 222.72-31.147 339.2-31.147s222.72 10.24 339.2 30.72l39.68 6.827 10.667 37.973c24.747 88.747 37.12 177.493 37.12 265.813s-12.373 177.067-37.12 265.387l-10.667 37.973-39.68 6.827c-116.48 20.907-222.72 31.147-339.2 31.147z" /> | ||
595 | <glyph unicode="" d="M981.333 170.667v512c0 46.933-38.4 85.333-85.333 85.333h-768c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333zM362.667 405.334l106.667-128.427 149.333 192.427 192-256h-597.333l149.333 192z" /> | ||
596 | <glyph unicode="" d="M768 853.334h-512c-46.933 0-85.333-38.4-85.333-85.333v-682.667c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM256 768h213.333v-341.333l-106.667 64-106.667-64v341.333zM256 128l128 164.693 91.307-110.080 128 164.693 164.693-219.307h-512z" /> | ||
597 | <glyph unicode="" d="M648.533 426.667c0-75.405-61.128-136.533-136.533-136.533s-136.533 61.128-136.533 136.533c0 75.405 61.128 136.533 136.533 136.533s136.533-61.128 136.533-136.533zM384 853.334l-78.080-85.333h-135.253c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333h-135.253l-78.080 85.333h-256zM512 213.334c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333z" /> | ||
598 | <glyph unicode="" d="M938.667 256v512c0 46.933-38.4 85.333-85.333 85.333h-512c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333zM469.333 426.667l86.613-115.627 126.72 158.293 170.667-213.333h-512l128 170.667zM85.333 682.667v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333v85.333h-597.333v597.333h-85.333z" /> | ||
599 | <glyph unicode="" d="M896 128v597.333c0 46.933-38.4 85.333-85.333 85.333h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333zM362.667 362.667l106.667-128.427 149.333 192.427 192-256h-597.333l149.333 192z" /> | ||
600 | <glyph unicode="" d="M512 416c52.907 0 96 43.093 96 96s-43.093 96-96 96-96-43.093-96-96 43.093-96 96-96zM704 245.334c0 64-128 96-192 96s-192-32-192-96v-32h384v32zM810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v597.333h597.333v-597.333z" /> | ||
601 | <glyph unicode="" d="M512 746.667c-213.333 0-395.52-132.693-469.333-320 73.813-187.307 256-320 469.333-320s395.52 132.693 469.333 320c-73.813 187.307-256 320-469.333 320zM512 213.334c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333zM512 554.667c-70.827 0-128-57.173-128-128s57.173-128 128-128 128 57.173 128 128-57.173 128-128 128z" /> | ||
602 | <glyph unicode="" d="M303.36 574.72l-60.16 60.587c-38.4-49.493-62.293-106.667-69.547-165.973h86.187c5.973 37.12 20.907 73.387 43.52 105.387zM259.84 384h-86.187c7.253-59.307 30.72-116.48 69.12-165.973l60.16 60.587c-22.187 32-37.12 67.84-43.093 105.387zM302.933 157.014c49.493-38.4 107.093-61.44 166.4-68.693v86.613c-37.12 6.4-72.96 20.907-104.96 43.947l-61.44-61.867zM554.667 765.014v130.987l-194.133-194.133 194.133-189.867v166.827c121.173-20.48 213.333-125.44 213.333-252.16s-92.16-231.68-213.333-252.16v-86.187c168.533 20.907 298.667 164.267 298.667 338.347s-130.133 317.44-298.667 338.347z" /> | ||
603 | <glyph unicode="" d="M663.467 701.867l-194.133 194.133v-130.987c-168.107-20.907-298.667-164.267-298.667-338.347s130.133-317.44 298.667-338.347v86.187c-121.173 20.48-213.333 125.44-213.333 252.16s92.16 231.68 213.333 252.16v-166.827l194.133 189.867zM850.347 469.334c-7.253 59.307-30.72 116.48-69.12 165.973l-60.587-60.587c23.040-32 37.547-68.267 43.52-105.387h86.187zM554.667 174.934v-86.187c59.307 7.253 116.907 30.293 166.4 68.693l-61.44 61.44c-32-23.040-67.84-37.973-104.96-43.947zM720.64 278.187l60.587-60.16c38.4 49.493 61.867 106.667 69.12 165.973h-86.187c-5.973-37.12-20.48-73.387-43.52-105.813z" /> | ||
604 | <glyph unicode="" d="M426.667 597.334v-341.333l213.333 170.667-213.333 170.667zM810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v597.333h597.333v-597.333z" /> | ||
605 | <glyph unicode="" d="M896 682.667h-768c-46.933 0-85.333-38.4-85.333-85.333v-341.333c0-46.933 38.4-85.333 85.333-85.333h768c46.933 0 85.333 38.4 85.333 85.333v341.333c0 46.933-38.4 85.333-85.333 85.333zM896 256h-768v341.333h85.333v-170.667h85.333v170.667h85.333v-170.667h85.333v170.667h85.333v-170.667h85.333v170.667h85.333v-170.667h85.333v170.667h85.333v-341.333z" /> | ||
606 | <glyph unicode="" d="M107.947 100.267l57.173-23.893v385.28l-103.68-250.027c-17.493-43.52 3.413-93.44 46.507-111.36zM939.947 258.134l-211.627 510.72c-13.227 32-44.373 51.627-77.227 52.48-11.093 0-22.613-1.707-33.707-6.4l-314.453-130.133c-32-13.227-51.627-43.947-52.48-76.8-0.427-11.52 1.707-23.040 6.4-34.133l211.627-510.72c13.227-32.427 44.8-52.053 78.080-52.48 11.093 0 22.187 2.133 32.853 6.4l314.027 130.133c43.52 17.92 64.427 67.84 46.507 110.933zM336.213 565.334c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM250.88 96c0-46.933 38.4-85.333 85.333-85.333h61.867l-147.2 355.84v-270.507z" /> | ||
607 | <glyph unicode="" d="M853.333 768h-135.253l-78.080 85.333h-256l-78.080-85.333h-135.253c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM640 277.334v106.667h-256v-106.667l-149.333 149.333 149.333 149.333v-106.667h256v106.667l149.333-149.333-149.333-149.333z" /> | ||
608 | <glyph unicode="" d="M768 533.334v149.333c0 23.467-19.2 42.667-42.667 42.667h-597.333c-23.467 0-42.667-19.2-42.667-42.667v-512c0-23.467 19.2-42.667 42.667-42.667h597.333c23.467 0 42.667 19.2 42.667 42.667v149.333l170.667-170.667v554.667l-170.667-170.667zM554.667 277.334v106.667h-256v-106.667l-149.333 149.333 149.333 149.333v-106.667h256v106.667l149.333-149.333-149.333-149.333z" /> | ||
609 | <glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM661.333 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM362.667 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM512 192c99.413 0 183.893 62.293 218.027 149.333h-436.053c34.133-87.040 118.613-149.333 218.027-149.333z" /> | ||
610 | <glyph unicode="" d="M832.427 807.254l-701.013-701.013c3.84-14.507 11.52-27.733 21.76-38.4 10.667-10.24 23.893-17.92 38.4-21.76l701.44 701.013c-8.107 29.44-31.147 52.48-60.587 60.16zM506.88 810.667l-378.88-378.88v-120.747l499.627 499.627h-120.747zM213.333 810.667c-46.933 0-85.333-38.4-85.333-85.333v-85.333l170.667 170.667h-85.333zM810.667 42.667c23.467 0 44.8 9.387 60.16 25.173 15.787 15.36 25.173 36.693 25.173 60.16v85.333l-170.667-170.667h85.333zM396.373 42.667h120.747l378.88 378.88v120.747l-499.627-499.627z" /> | ||
611 | <glyph unicode="" d="M692.907 607.574c-49.92 49.92-115.2 75.093-180.907 75.093v-256l-180.907-180.907c99.84-99.84 261.973-99.84 362.24 0 99.84 99.84 99.84 261.973-0.427 361.813zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333z" /> | ||
612 | <glyph unicode="" d="M495.36 385.28c-6.827 10.24-15.36 19.627-26.453 27.733-10.667 8.107-23.893 14.933-39.68 20.48 12.8 5.973 24.32 12.8 34.133 21.333s17.92 17.493 24.32 27.307c6.4 9.813 11.52 19.627 14.507 30.293 3.413 10.24 4.693 20.907 4.693 31.147 0 23.467-3.84 44.373-11.947 62.293-7.68 17.92-18.773 32.853-33.28 45.227-14.080 11.947-31.147 21.333-51.2 27.307-19.2 5.547-41.387 8.533-65.28 8.533-23.467 0-45.227-3.413-64.853-10.24-20.053-7.253-37.12-17.067-51.2-29.44s-25.6-26.88-33.28-43.947c-8.533-16.64-12.373-35.413-12.373-55.040h84.48c0 11.093 2.133 20.907 5.973 29.44s9.387 16.213 16.213 22.187c7.253 5.973 15.36 10.667 24.747 14.080s19.627 5.12 31.147 5.12c26.027 0 45.227-6.827 58.027-20.053s18.773-32 18.773-56.32c0-11.52-1.707-22.187-5.12-31.573s-8.96-17.493-16.213-24.32c-7.253-6.827-16.213-11.947-26.88-15.787s-23.467-5.547-37.973-5.547h-49.92v-66.987h50.347c14.507 0 27.307-1.707 38.827-4.693 11.52-3.413 21.333-8.107 29.44-14.933s14.507-15.36 18.773-26.027c4.267-10.24 6.827-23.040 6.827-37.12 0-26.453-7.68-46.507-22.613-60.587s-35.84-20.907-61.867-20.907c-12.373 0-23.893 1.707-34.133 5.547-10.24 3.413-18.773 8.533-26.027 15.36s-12.8 14.507-16.64 23.893c-3.84 9.387-5.973 19.627-5.973 30.72h-84.907c0-23.467 4.693-43.947 13.653-61.867s21.333-32.853 36.693-44.8 32.853-20.907 52.907-26.88 40.96-8.96 63.147-8.96c24.32 0 46.507 3.413 67.413 9.813s38.827 16.213 53.76 29.013c15.36 12.8 27.307 28.16 35.84 46.933 8.533 18.347 12.8 39.68 12.8 63.147 0 12.373-1.707 24.747-4.693 36.693-3.413 10.667-8.107 21.76-14.933 32.427zM890.453 325.547c-5.973 11.947-14.933 22.613-26.88 31.573s-26.027 16.64-43.093 22.613-36.267 11.52-57.6 16.213c-14.933 2.987-27.307 6.4-37.12 9.813s-17.493 6.827-23.467 10.667c-5.973 3.84-9.813 8.107-11.947 12.8s-3.413 10.24-3.413 16.64 1.28 11.947 3.84 17.493c2.56 5.547 6.4 10.667 11.52 14.507 5.12 4.267 11.52 7.68 19.2 10.24s17.067 3.84 27.307 3.84c10.667 0 20.053-1.707 28.16-4.693s14.933-7.253 20.48-12.373c5.547-5.12 9.387-11.093 12.373-17.92 2.56-6.827 4.267-13.653 4.267-20.907h83.2c0 16.64-3.413 32-10.24 46.507s-16.64 26.88-29.44 37.547c-12.8 10.667-28.16 18.773-46.507 25.173s-39.253 9.387-62.293 9.387c-21.76 0-41.813-2.987-59.307-8.96s-32.853-14.080-45.227-24.32c-12.373-10.24-21.76-22.187-28.587-35.84s-9.813-27.733-9.813-43.093 3.413-29.013 9.813-40.96c6.4-11.947 15.787-22.187 27.307-31.147s25.6-16.213 41.813-22.613c16.213-5.973 34.56-11.093 54.187-15.36 16.64-3.413 30.293-7.253 40.533-11.093s18.347-8.107 24.32-12.373c5.547-4.267 9.387-9.387 11.52-14.507s2.987-10.667 2.987-16.64c0-13.653-5.547-24.32-17.067-32.853s-28.16-12.373-49.92-12.373c-9.387 0-18.347 0.853-27.307 3.413-8.96 2.133-17.067 5.547-23.893 10.24-7.253 4.693-12.8 11.093-17.493 18.773s-7.253 17.493-7.68 28.587h-80.64c0-15.36 3.413-30.293 10.24-44.8s16.64-27.733 29.867-39.68c13.227-11.52 29.44-20.907 49.067-28.16s41.813-10.667 67.413-10.667c22.613 0 43.093 2.56 61.44 8.107s34.133 13.227 47.36 23.040c13.227 9.813 23.040 21.76 30.293 35.413s10.667 28.587 10.667 45.227c-0.853 17.067-3.84 31.573-10.24 43.52z" /> | ||
613 | <glyph unicode="" d="M0 609.28v-71.68l128 42.667v-409.6h85.333v512h-10.667l-202.667-73.387zM1014.613 325.547c-5.973 11.947-14.933 22.613-26.88 31.573s-26.027 16.64-43.093 22.613-36.267 11.52-57.6 16.213c-14.933 2.987-27.307 6.4-37.12 9.813s-17.493 6.827-23.467 10.667c-5.973 3.84-9.813 8.107-11.947 12.8s-3.413 10.24-3.413 16.64c0 5.973 1.28 11.947 3.84 17.493s6.4 10.667 11.52 14.507c5.12 4.267 11.52 7.68 19.2 10.24s17.067 3.84 27.307 3.84c10.667 0 20.053-1.707 28.16-4.693s14.933-7.253 20.48-12.373c5.547-5.12 9.387-11.093 12.373-17.92 2.56-6.827 4.267-13.653 4.267-20.907h83.2c0 16.64-3.413 32-10.24 46.507s-16.64 26.88-29.44 37.547c-12.8 10.667-28.16 18.773-46.507 25.173s-39.253 9.387-62.293 9.387c-21.76 0-41.813-2.987-59.307-8.96s-32.853-14.080-45.227-24.32c-12.373-10.24-21.76-22.187-28.587-35.84s-9.813-27.733-9.813-43.093 3.413-29.44 9.813-40.96c6.4-11.947 15.36-22.187 27.307-31.147 11.52-8.96 25.6-16.213 41.813-22.613 16.213-5.973 34.56-11.093 54.187-15.36 16.64-3.413 30.293-7.253 40.533-11.093s18.347-8.107 24.32-12.373c5.547-4.267 9.387-9.387 11.52-14.507s2.987-10.667 2.987-16.64c0-13.653-5.547-24.32-17.067-32.853s-28.16-12.373-49.92-12.373c-9.387 0-18.347 0.853-27.307 3.413-8.96 2.133-17.067 5.547-23.893 10.24-7.253 4.693-12.8 11.093-17.493 18.773s-7.253 17.493-7.68 28.587h-80.64c0-15.36 3.413-30.293 10.24-44.8s16.64-27.733 29.867-39.68c13.227-11.52 29.44-20.907 49.067-28.16s41.813-10.667 67.413-10.667c22.613 0 43.093 2.56 61.44 8.107s34.133 13.227 47.36 23.040c13.227 9.813 23.040 21.76 30.293 35.413s10.667 28.587 10.667 45.227c-0.853 17.067-3.84 31.573-10.24 43.52zM589.653 637.867c-14.507 17.067-32 29.867-52.48 37.547-20.053 7.68-43.093 11.52-67.84 11.52s-47.36-3.84-67.84-11.52c-20.48-7.68-37.973-20.053-52.48-37.547s-25.6-39.68-33.707-67.84c-7.68-27.733-11.947-61.867-11.947-101.973v-81.92c0-40.107 3.84-74.24 11.947-101.973 8.107-28.16 19.2-50.773 34.133-68.267 14.507-17.493 32-30.293 52.48-37.973s43.093-11.947 67.84-11.947c25.173 0 47.787 3.84 67.84 11.947 20.48 7.68 37.547 20.48 52.053 37.973s25.6 40.107 33.28 68.267c7.68 27.733 11.947 61.867 11.947 101.973v81.92c0 40.107-3.84 74.24-11.947 101.973-7.68 28.16-18.773 50.773-33.28 67.84zM550.4 374.614c0-25.6-1.707-47.36-5.12-65.28s-8.533-32.427-15.36-43.52c-6.827-11.093-15.36-19.2-25.173-24.32s-21.76-7.68-34.987-7.68c-12.8 0-24.747 2.56-34.987 7.68s-18.773 13.227-25.6 24.32c-6.827 11.093-12.373 25.6-16.213 43.52s-5.547 39.68-5.547 65.28v106.667c0 25.6 1.707 47.36 5.547 64.853s8.96 31.573 16.213 42.667c6.827 10.667 15.36 18.347 25.6 23.467 10.24 4.693 21.76 7.253 34.56 7.253 13.227 0 24.747-2.56 34.56-7.253 10.24-4.693 18.773-12.373 25.6-23.467 6.827-10.667 12.373-24.747 15.787-42.24s5.547-39.253 5.547-64.853v-107.093z" /> | ||
614 | <glyph unicode="" d="M512 768c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM512 341.334c-113.92 0-341.333-57.173-341.333-170.667v-85.333h682.667v85.333c0 113.92-227.413 170.667-341.333 170.667z" /> | ||
615 | <glyph unicode="" d="M812.373 744.534l-60.587-60.587c-66.133 52.48-149.333 84.053-239.787 84.053-78.080 0-150.613-23.467-211.2-63.147l62.293-62.293c43.52 25.173 94.72 40.107 148.907 40.107 165.12 0 298.667-133.547 298.667-298.667 0-54.187-14.933-105.387-40.107-148.907l61.867-61.867c40.107 60.16 63.573 132.693 63.573 210.773 0 90.453-31.573 173.653-84.053 239.36l60.587 60.587-60.16 60.587zM640 896h-256v-85.333h256v85.333zM469.333 535.894l85.333-85.333v146.773h-85.333v-61.44zM128.853 768l-54.187-54.187 117.333-117.76c-40.533-60.587-64-133.547-64-212.053 0-212.053 171.52-384 384-384 78.507 0 151.467 23.467 212.48 64l106.667-106.667 54.187 54.187-756.48 756.48zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667 0 54.613 14.933 105.813 40.533 150.187l407.893-407.893c-43.947-26.027-95.147-40.96-149.76-40.96z" /> | ||
616 | <glyph unicode="" d="M640 896h-256v-85.333h256v85.333zM469.333 341.334h85.333v256h-85.333v-256zM811.947 623.36l60.587 60.587c-18.347 21.76-38.4 42.24-60.16 60.16l-60.587-60.587c-66.133 52.907-149.333 84.48-239.787 84.48-212.053 0-384-171.947-384-384s171.52-384 384-384 384 171.947 384 384c0 90.453-31.573 173.653-84.053 239.36zM512 85.334c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> | ||
617 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM469.333 88.32c-168.107 20.907-298.667 164.267-298.667 338.347s130.133 317.44 298.667 338.347v-676.693zM554.667 765.014c43.947-5.547 85.333-19.2 122.453-39.68h-122.453v39.68zM554.667 640h223.573c10.667-13.227 20.48-27.733 29.013-42.667h-252.587v42.667zM554.667 512h287.573c3.413-14.080 6.4-28.16 8.107-42.667h-295.68v42.667zM554.667 88.32v39.68h122.453c-37.12-20.48-78.507-34.133-122.453-39.68zM778.24 213.334h-223.573v42.667h252.587c-8.533-14.933-18.347-29.44-29.013-42.667zM842.24 341.334h-287.573v42.667h295.68c-1.707-14.507-4.693-28.587-8.107-42.667z" /> | ||
618 | <glyph unicode="" d="M938.667 170.667v85.333h-597.333v512h85.333l-128 128-128-128h85.333v-85.333h-170.667v-85.333h170.667v-341.333c0-46.933 38.4-85.333 85.333-85.333h341.333v-85.333h-85.333l128-128 128 128h-85.333v85.333h170.667zM426.667 597.334h256v-256h85.333v256c0 46.933-38.4 85.333-85.333 85.333h-256v-85.333z" /> | ||
619 | <glyph unicode="" d="M128 213.334v-85.333h256v85.333h-256zM128 725.334v-85.333h426.667v85.333h-426.667zM554.667 42.667v85.333h341.333v85.333h-341.333v85.333h-85.333v-256h85.333zM298.667 554.667v-85.333h-170.667v-85.333h170.667v-85.333h85.333v256h-85.333zM896 384v85.333h-426.667v-85.333h426.667zM640 554.667h85.333v85.333h170.667v85.333h-170.667v85.333h-85.333v-256z" /> | ||
620 | <glyph unicode="" d="M292.267 398.934h98.133l-49.067 155.733-49.067-155.733zM938.667 640l-51.2-268.373-64 268.373h-68.267l-63.573-268.373-51.627 268.373h-32.427c-62.72 78.080-158.293 128-266.24 128-188.587 0-341.333-152.747-341.333-341.333s152.747-341.333 341.333-341.333c133.547 0 249.173 77.227 305.067 189.013l4.267-18.347h74.667l64 260.267 64-260.267h74.667l87.467 384h-76.8zM439.467 256l-29.867 85.333h-136.533l-29.867-85.333h-81.067l136.533 384h85.333l136.533-384h-81.067z" /> | ||
621 | <glyph unicode="" d="M826.027 510.294c-29.44 147.2-158.72 257.707-314.027 257.707-123.307 0-230.4-69.973-283.733-172.373-128.427-13.653-228.267-122.453-228.267-254.293 0-141.227 114.773-256 256-256h554.667c117.76 0 213.333 95.573 213.333 213.333 0 112.64-87.467 203.947-197.973 211.627z" /> | ||
622 | <glyph unicode="" d="M151.467 147.627l60.16-60.16 76.373 76.8-60.16 60.16-76.373-76.8zM469.333-19.2h85.333v125.867h-85.333v-125.867zM170.667 490.667h-128v-85.333h128v85.333zM640 669.44v205.227h-256v-205.227c-76.373-44.373-128-126.72-128-221.44 0-141.227 114.773-256 256-256s256 114.773 256 256c0 94.72-51.627 177.067-128 221.44zM853.333 490.667v-85.333h128v85.333h-128zM735.573 163.84l76.373-76.8 60.16 60.16-76.8 76.373-59.733-59.733z" /> | ||
623 | <glyph unicode="" d="M213.333 320h597.333v256h-597.333v-256zM469.333 915.2v-125.867h85.333v125.867h-85.333zM812.373 808.534l-76.373-76.373 60.16-60.16 76.8 76.373-60.587 60.16zM554.667-19.2v125.867h-85.333v-125.867h85.333zM872.533 147.627l-76.8 76.373-60.16-60.16 76.373-76.8 60.587 60.587zM151.467 748.374l76.373-76.373 60.16 60.16-76.373 76.373-60.16-60.16zM211.627 87.467l76.373 76.8-60.16 60.16-76.373-76.373 60.16-60.587z" /> | ||
624 | <glyph unicode="" d="M288.427 732.16l-76.8 76.373-60.16-60.16 76.373-76.373 60.587 60.16zM170.667 490.667h-128v-85.333h128v85.333zM554.667 915.2h-85.333v-125.867h85.333v125.867zM872.533 748.374l-60.16 60.16-76.373-76.373 60.16-60.16 76.373 76.373zM735.573 163.84l76.373-76.8 60.16 60.16-76.8 76.373-59.733-59.733zM853.333 490.667v-85.333h128v85.333h-128zM512 704c-141.227 0-256-114.773-256-256s114.773-256 256-256 256 114.773 256 256-114.773 256-256 256zM469.333-19.2h85.333v125.867h-85.333v-125.867zM151.467 147.627l60.16-60.16 76.373 76.8-60.16 60.16-76.373-76.8z" /> | ||
625 | <glyph unicode="" d="M810.667 896h-597.333c-46.933 0-84.907-38.4-84.907-85.333l-0.427-551.68c0-29.44 14.933-55.467 37.547-70.827l346.453-230.827 346.027 230.827c22.613 15.36 37.547 41.387 37.547 70.827l0.427 551.68c0 46.933-38.4 85.333-85.333 85.333zM426.667 256l-213.333 213.333 60.16 60.16 153.173-152.747 323.84 323.84 60.16-60.587-384-384z" /> | ||
626 | <glyph unicode="" d="M682.667 733.867c42.24 0 76.8 34.56 76.8 76.8s-34.56 76.8-76.8 76.8c-42.667 0-76.8-34.56-76.8-76.8s34.133-76.8 76.8-76.8zM810.667 426.667c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333 213.333 95.573 213.333 213.333-95.573 213.333-213.333 213.333zM810.667 64c-82.347 0-149.333 66.987-149.333 149.333s66.987 149.333 149.333 149.333 149.333-66.987 149.333-149.333-66.987-149.333-149.333-149.333zM631.467 512h179.2v76.8h-136.533l-82.347 139.52c-12.8 21.333-35.84 35.413-62.293 35.413-20.053 0-37.973-8.107-51.2-21.333l-157.867-157.867c-13.653-12.8-21.76-31.147-21.76-51.2 0-26.88 14.080-49.493 36.267-62.72l142.933-86.613v-213.333h76.8v276.48l-96 71.253 98.987 99.413 73.813-105.813zM213.333 426.667c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333 213.333 95.573 213.333 213.333-95.573 213.333-213.333 213.333zM213.333 64c-82.347 0-149.333 66.987-149.333 149.333s66.987 149.333 149.333 149.333 149.333-66.987 149.333-149.333-66.987-149.333-149.333-149.333z" /> | ||
627 | <glyph unicode="" d="M170.667 256c0-37.547 16.64-71.253 42.667-94.72v-75.947c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v42.667h341.333v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v75.947c26.027 23.467 42.667 57.173 42.667 94.72v426.667c0 149.333-152.747 170.667-341.333 170.667s-341.333-21.333-341.333-170.667v-426.667zM320 213.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM704 213.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM768 469.334h-512v213.333h512v-213.333z" /> | ||
628 | <glyph unicode="" d="M807.253 682.24c-8.533 25.173-32.427 43.093-60.587 43.093h-469.333c-28.16 0-51.627-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 256c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 256c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 469.334l64 192h469.333l64-192h-597.333z" /> | ||
629 | <glyph unicode="" d="M853.333 42.667c-59.307 0-118.613 20.053-170.667 56.32-104.107-72.96-237.227-72.96-341.333 0-52.053-36.267-111.36-56.32-170.667-56.32h-85.333v-85.333h85.333c58.88 0 116.907 14.933 170.667 42.24 107.52-55.040 233.813-55.040 341.333 0 53.76-27.733 111.787-42.24 170.667-42.24h85.333v85.333h-85.333zM168.533 128h2.133c68.267 0 128.853 37.547 170.667 85.333 41.813-47.787 102.4-85.333 170.667-85.333s128.853 37.547 170.667 85.333c41.813-47.787 102.4-85.333 170.667-85.333h2.133l80.64 285.013c3.413 11.093 2.56 23.040-2.56 33.28s-14.507 17.92-25.6 21.333l-54.613 17.92v197.12c0 46.933-38.4 85.333-85.333 85.333h-128v128h-256v-128h-128c-46.933 0-85.333-38.4-85.333-85.333v-197.12l-55.040-17.92c-11.093-3.413-20.48-11.093-25.6-21.333s-6.4-22.187-2.56-33.28l81.067-285.013zM256 682.667h512v-169.387l-256 84.053-256-84.053v169.387z" /> | ||
630 | <glyph unicode="" d="M512 853.334c-188.587 0-341.333-21.333-341.333-170.667v-405.333c0-82.347 66.987-149.333 149.333-149.333l-64-64v-21.333h512v21.333l-64 64c82.347 0 149.333 66.987 149.333 149.333v405.333c0 149.333-152.747 170.667-341.333 170.667zM320 213.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM469.333 469.334h-213.333v213.333h213.333v-213.333zM704 213.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM768 469.334h-213.333v213.333h213.333v-213.333z" /> | ||
631 | <glyph unicode="" d="M170.667 277.334c0-82.347 66.987-149.333 149.333-149.333l-64-64v-21.333h512v21.333l-64 64c82.347 0 149.333 66.987 149.333 149.333v448c0 149.333-152.747 170.667-341.333 170.667s-341.333-21.333-341.333-170.667v-448zM512 213.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333zM768 512h-512v213.333h512v-213.333z" /> | ||
632 | <glyph unicode="" d="M512 853.334c-188.587 0-341.333-21.333-341.333-170.667v-405.333c0-82.347 66.987-149.333 149.333-149.333l-64-64v-21.333h512v21.333l-64 64c82.347 0 149.333 66.987 149.333 149.333v405.333c0 149.333-152.747 170.667-341.333 170.667zM320 213.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM469.333 469.334h-213.333v213.333h213.333v-213.333zM704 213.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM768 469.334h-213.333v213.333h213.333v-213.333z" /> | ||
633 | <glyph unicode="" d="M597.333 776.534c42.24 0 76.8 34.56 76.8 76.8 0 42.667-34.56 76.8-76.8 76.8-42.667 0-76.8-34.56-76.8-76.8s34.133-76.8 76.8-76.8zM602.453 512h208.213v76.8h-154.453l-85.333 142.080c-12.8 21.333-35.84 35.413-62.293 35.413-7.253 0-14.507-1.28-20.907-2.987l-231.68-72.107v-221.867h76.8v156.587l90.027 28.16-166.827-654.080h76.8l122.453 346.027 99.413-132.693v-213.333h76.8v273.493l-106.24 193.707 31.147 122.453 46.080-77.653z" /> | ||
634 | <glyph unicode="" d="M926.293 456.96l-384 384c-16.64 16.64-43.52 16.64-60.16 0l-384-384c-16.64-16.64-16.64-43.52 0-60.16l384-384c16.64-16.64 43.52-16.64 60.16 0l384 384c16.64 16.213 16.64 43.093 0 60.16zM597.333 320v106.667h-170.667v-128h-85.333v170.667c0 23.467 19.2 42.667 42.667 42.667h213.333v106.667l149.333-149.333-149.333-149.333z" /> | ||
635 | <glyph unicode="" d="M896 256v85.333l-341.333 213.333v234.667c0 35.413-28.587 64-64 64s-64-28.587-64-64v-234.667l-341.333-213.333v-85.333l341.333 106.667v-234.667l-85.333-64v-64l149.333 42.667 149.333-42.667v64l-85.333 64v234.667l341.333-106.667z" /> | ||
636 | <glyph unicode="" d="M298.667 384c70.827 0 128 57.173 128 128s-57.173 128-128 128-128-57.173-128-128 57.173-128 128-128zM810.667 640h-341.333v-298.667h-341.333v384h-85.333v-640h85.333v128h768v-128h85.333v384c0 94.293-76.373 170.667-170.667 170.667z" /> | ||
637 | <glyph unicode="" d="M845.227 299.094l50.773 39.253-61.013 61.013-50.773-39.253 61.013-61.013zM826.027 500.48l69.973 54.187-384 298.667-124.16-96.853 335.787-336.213 102.4 80.213zM139.52 896l-54.187-54.187 180.053-180.053-137.387-107.093 69.547-54.187 314.453-244.48 89.6 69.547 61.013-61.013-150.613-116.907-314.453 244.48-69.547-53.76 384-298.667 211.2 164.267 161.28-161.28 54.187 54.187-799.147 799.147z" /> | ||
638 | <glyph unicode="" d="M511.573 147.627l-314.453 244.48-69.12-53.76 384-298.667 384 298.667-69.547 54.187-314.88-244.907zM512 256l384 298.667-384 298.667-384-298.667 69.547-54.187 314.453-244.48z" /> | ||
639 | <glyph unicode="" d="M896 256v85.333l-341.333 213.333v234.667c0 35.413-28.587 64-64 64s-64-28.587-64-64v-234.667l-341.333-213.333v-85.333l341.333 106.667v-234.667l-85.333-64v-64l149.333 42.667 149.333-42.667v64l-85.333 64v234.667l341.333-106.667z" /> | ||
640 | <glyph unicode="" d="M469.333 213.334h85.333v42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v128c0 23.467-19.2 42.667-42.667 42.667h-128v42.667h170.667v85.333h-85.333v42.667h-85.333v-42.667h-42.667c-23.467 0-42.667-19.2-42.667-42.667v-128c0-23.467 19.2-42.667 42.667-42.667h128v-42.667h-170.667v-85.333h85.333v-42.667zM853.333 768h-682.667c-47.36 0-84.907-37.973-84.907-85.333l-0.427-512c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v512c0 47.36-37.973 85.333-85.333 85.333zM853.333 170.667h-682.667v512h682.667v-512z" /> | ||
641 | <glyph unicode="" d="M853.333 426.667c0 46.933 38.4 85.333 85.333 85.333v170.667c0 46.933-38.4 85.333-85.333 85.333h-682.667c-46.933 0-84.907-38.4-84.907-85.333v-170.667c46.933 0 84.907-38.4 84.907-85.333s-37.973-85.333-85.333-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v170.667c-46.933 0-85.333 38.4-85.333 85.333zM664.747 221.867l-152.747 98.133-152.747-98.133 46.080 175.787-140.373 114.773 180.907 10.667 66.133 168.107 65.707-168.533 180.907-10.667-140.373-114.773 46.507-175.36z" /> | ||
642 | <glyph unicode="" d="M469.333 384v-256h-213.333v-85.333h512v85.333h-213.333v256l341.333 341.333v85.333h-768v-85.333l341.333-341.333zM320 640l-85.333 85.333h554.667l-85.333-85.333h-384z" /> | ||
643 | <glyph unicode="" d="M853.333 810.667h-682.667v-426.667c0-94.293 76.373-170.667 170.667-170.667h256c94.293 0 170.667 76.373 170.667 170.667v128h85.333c47.36 0 85.333 37.973 85.333 85.333v128c0 47.36-37.973 85.333-85.333 85.333zM853.333 597.334h-85.333v128h85.333v-128zM85.333 42.667h768v85.333h-768v-85.333z" /> | ||
644 | <glyph unicode="" d="M725.333 725.334c35.413 0 64 28.587 64 64 0 42.667-64 115.2-64 115.2s-64-72.533-64-115.2c0-35.413 28.587-64 64-64zM512 725.334c35.413 0 64 28.587 64 64 0 42.667-64 115.2-64 115.2s-64-72.533-64-115.2c0-35.413 28.587-64 64-64zM298.667 725.334c35.413 0 64 28.587 64 64 0 42.667-64 115.2-64 115.2s-64-72.533-64-115.2c0-35.413 28.587-64 64-64zM807.253 596.907c-8.533 25.173-32.427 43.093-60.587 43.093h-469.333c-28.16 0-51.627-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 170.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 170.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 384l64 192h469.333l64-192h-597.333z" /> | ||
645 | <glyph unicode="" d="M810.667 640v128h-597.333v-128h-128v-554.667h341.333v170.667h170.667v-170.667h341.333v554.667h-128zM469.333 512h-85.333v-42.667h85.333v-42.667h-128v128h85.333v42.667h-85.333v42.667h128v-128zM682.667 426.667h-42.667v85.333h-85.333v128h42.667v-85.333h42.667v85.333h42.667v-213.333z" /> | ||
646 | <glyph unicode="" d="M128 853.334l85.76-777.813c5.12-42.667 40.96-75.52 84.907-75.52h426.667c43.947 0 79.787 32.853 84.907 75.52l85.76 777.813h-768zM512 128c-70.827 0-128 57.173-128 128 0 85.333 128 230.4 128 230.4s128-145.067 128-230.4c0-70.827-57.173-128-128-128zM782.080 597.334h-540.16l-18.773 170.667h577.28l-18.347-170.667z" /> | ||
647 | <glyph unicode="" d="M512-0c212.053 0 384 171.947 384 384-212.053 0-384-171.947-384-384zM238.933 501.334c0-58.88 47.787-106.667 106.667-106.667 22.613 0 43.093 6.827 60.587 18.773l-0.853-8.107c0-58.88 47.787-106.667 106.667-106.667s106.667 47.787 106.667 106.667l-0.853 8.107c17.067-11.947 37.973-18.773 60.587-18.773 58.88 0 106.667 47.787 106.667 106.667 0 42.667-25.173 78.933-61.013 96 35.84 17.067 61.013 53.333 61.013 96 0 58.88-47.787 106.667-106.667 106.667-22.613 0-43.093-6.827-60.587-18.773l0.853 8.107c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667l0.853-8.107c-17.067 11.947-37.973 18.773-60.587 18.773-58.88 0-106.667-47.787-106.667-106.667 0-42.667 25.173-78.933 61.013-96-35.84-17.067-61.013-53.333-61.013-96zM512 704c58.88 0 106.667-47.787 106.667-106.667s-47.787-106.667-106.667-106.667-106.667 47.787-106.667 106.667 47.787 106.667 106.667 106.667zM128 384c0-212.053 171.947-384 384-384 0 212.053-171.947 384-384 384z" /> | ||
648 | <glyph unicode="" d="M843.52 630.187l0.427 0.427-158.72 158.72-45.227-45.227 90.027-90.027c-40.107-15.36-68.693-53.76-68.693-99.413 0-58.88 47.787-106.667 106.667-106.667 15.36 0 29.44 3.413 42.667 8.96v-307.627c0-23.467-19.2-42.667-42.667-42.667s-42.667 19.2-42.667 42.667v192c0 46.933-38.4 85.333-85.333 85.333h-42.667v298.667c0 46.933-38.4 85.333-85.333 85.333h-256c-46.933 0-85.333-38.4-85.333-85.333v-682.667h426.667v320h64v-213.333c0-58.88 47.787-106.667 106.667-106.667s106.667 47.787 106.667 106.667v405.333c0 29.44-11.947 56.32-31.147 75.52zM512 512h-256v213.333h256v-213.333zM768 512c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667z" /> | ||
649 | <glyph unicode="" d="M298.667 170.667c-46.933 0-84.907-38.4-84.907-85.333s37.973-85.333 84.907-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM42.667 853.334v-85.333h85.333l153.6-323.84-57.6-104.533c-6.827-11.947-10.667-26.027-10.667-40.96 0-46.933 38.4-85.333 85.333-85.333h512v85.333h-494.080c-5.973 0-10.667 4.693-10.667 10.667l1.28 5.12 38.4 69.547h317.867c32 0 60.16 17.493 74.667 43.947l152.747 276.907c3.413 5.973 5.12 13.227 5.12 20.48 0 23.467-19.2 42.667-42.667 42.667h-631.040l-40.107 85.333h-139.52zM725.333 170.667c-46.933 0-84.907-38.4-84.907-85.333s37.973-85.333 84.907-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> | ||
650 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM768 341.334h-170.667v-170.667h-170.667v170.667h-170.667v170.667h170.667v170.667h170.667v-170.667h170.667v-170.667z" /> | ||
651 | <glyph unicode="" d="M298.667 384c70.827 0 128 57.173 128 128s-57.173 128-128 128-128-57.173-128-128 57.173-128 128-128zM810.667 640h-341.333v-298.667h-341.333v384h-85.333v-640h85.333v128h768v-128h85.333v384c0 94.293-76.373 170.667-170.667 170.667z" /> | ||
652 | <glyph unicode="" d="M391.253 220.587c66.56-66.56 174.933-66.56 241.493 0s66.56 174.933 0 241.493l-241.493-241.493zM768 852.907l-512 0.427c-47.36 0-85.333-37.973-85.333-85.333v-682.667c0-47.36 37.973-85.333 85.333-85.333h512c47.36 0 85.333 37.973 85.333 85.333v682.667c0 47.36-37.973 84.907-85.333 84.907zM426.667 768c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM298.667 768c23.467 0 42.667-19.2 42.667-42.667s-19.2-42.667-42.667-42.667-42.667 19.2-42.667 42.667 19.2 42.667 42.667 42.667zM512 85.334c-141.227 0-256 114.773-256 256s114.773 256 256 256 256-114.773 256-256-114.773-256-256-256z" /> | ||
653 | <glyph unicode="" d="M512 445.867c-100.693 93.867-235.52 151.467-384 151.467v-469.333c148.48 0 283.307-57.6 384-151.467 100.693 93.44 235.52 151.467 384 151.467v469.333c-148.48 0-283.307-57.6-384-151.467zM512 597.334c70.827 0 128 57.173 128 128s-57.173 128-128 128-128-57.173-128-128 57.173-128 128-128z" /> | ||
654 | <glyph unicode="" d="M810.667 682.667h-85.333c0 117.76-95.573 213.333-213.333 213.333s-213.333-95.573-213.333-213.333h-85.333c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM512 810.667c70.827 0 128-57.173 128-128h-256c0 70.827 57.173 128 128 128zM512 384c-117.76 0-213.333 95.573-213.333 213.333h85.333c0-70.827 57.173-128 128-128s128 57.173 128 128h85.333c0-117.76-95.573-213.333-213.333-213.333z" /> | ||
655 | <glyph unicode="" d="M768 810.667v-85.333h-85.333v85.333h-341.333v-85.333h-85.333v85.333h-85.333v-768h85.333v85.333h85.333v-85.333h341.333v85.333h85.333v-85.333h85.333v768h-85.333zM341.333 213.334h-85.333v85.333h85.333v-85.333zM341.333 384h-85.333v85.333h85.333v-85.333zM341.333 554.667h-85.333v85.333h85.333v-85.333zM768 213.334h-85.333v85.333h85.333v-85.333zM768 384h-85.333v85.333h85.333v-85.333zM768 554.667h-85.333v85.333h85.333v-85.333z" /> | ||
656 | <glyph unicode="" d="M913.493 444.587l-384 384c-15.36 15.36-36.693 24.747-60.16 24.747h-298.667c-46.933 0-85.333-38.4-85.333-85.333v-298.667c0-23.467 9.387-44.8 25.173-60.587l384-384c15.36-15.36 36.693-24.747 60.16-24.747s44.8 9.387 60.16 25.173l298.667 298.667c15.787 15.36 25.173 36.693 25.173 60.16s-9.813 45.227-25.173 60.587zM234.667 640c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> | ||
657 | <glyph unicode="" d="M554.667 810.667h-298.667v-768h170.667v256h128c141.227 0 256 114.773 256 256s-114.773 256-256 256zM563.2 469.334h-136.533v170.667h136.533c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333z" /> | ||
658 | <glyph unicode="" d="M896 725.334h-112.64l48.64 133.973-100.267 36.693-62.293-170.667h-541.44v-85.333l85.333-256-85.333-256v-85.333h768v85.333l-85.333 256 85.333 256v85.333zM682.667 341.334h-128v-128h-85.333v128h-128v85.333h128v128h85.333v-128h128v-85.333z" /> | ||
659 | <glyph unicode="" d="M282.453 478.294c61.44-120.747 160.427-219.307 281.173-281.173l93.867 93.867c11.52 11.52 28.587 15.36 43.52 10.24 47.787-15.787 99.413-24.32 152.32-24.32 23.467 0 42.667-19.2 42.667-42.667v-148.907c0-23.467-19.2-42.667-42.667-42.667-400.64 0-725.333 324.693-725.333 725.333 0 23.467 19.2 42.667 42.667 42.667h149.333c23.467 0 42.667-19.2 42.667-42.667 0-53.333 8.533-104.533 24.32-152.32 4.693-14.933 1.28-31.573-10.667-43.52l-93.867-93.867z" /> | ||
660 | <glyph unicode="" d="M512 853.334c-152.32 0-288.853-65.707-383.573-170.667l383.573-682.667 383.573 682.667c-94.293 104.533-231.253 170.667-383.573 170.667zM298.667 640c0 46.933 38.4 85.333 85.333 85.333s85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333-85.333 38.4-85.333 85.333zM512 298.667c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> | ||
661 | <glyph unicode="" d="M853.333 426.667c0 46.933 38.4 85.333 85.333 85.333v170.667c0 46.933-38.4 85.333-85.333 85.333h-682.667c-46.933 0-84.907-38.4-84.907-85.333v-170.667c46.933 0 84.907-38.4 84.907-85.333s-37.973-85.333-85.333-85.333v-170.667c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v170.667c-46.933 0-85.333 38.4-85.333 85.333zM664.747 221.867l-152.747 98.133-152.747-98.133 46.080 175.787-140.373 114.773 180.907 10.667 66.133 168.107 65.707-168.533 180.907-10.667-140.373-114.773 46.507-175.36z" /> | ||
662 | <glyph unicode="" d="M853.333 768h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM853.333 597.334l-341.333-213.333-341.333 213.333v85.333l341.333-213.333 341.333 213.333v-85.333z" /> | ||
663 | <glyph unicode="" d="M810.667 597.334h-597.333c-70.827 0-128-57.173-128-128v-256h170.667v-170.667h512v170.667h170.667v256c0 70.827-57.173 128-128 128zM682.667 128h-341.333v213.333h341.333v-213.333zM810.667 426.667c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM768 810.667h-512v-170.667h512v170.667z" /> | ||
664 | <glyph unicode="" d="M345.6 369.494l120.747 120.747-299.52 299.093c-66.56-66.56-66.56-174.507 0-241.493l178.773-178.347zM634.88 446.72c65.28-30.293 157.013-8.96 224.853 58.88 81.493 81.493 97.28 198.4 34.56 261.12-62.293 62.293-179.2 46.933-261.12-34.56-67.84-67.84-89.173-159.573-58.88-224.853l-416.427-416.427 60.16-60.16 293.973 293.12 293.547-293.547 60.16 60.16-293.547 293.547 62.72 62.72z" /> | ||
665 | <glyph unicode="" d="M648.533 426.667c0-75.405-61.128-136.533-136.533-136.533s-136.533 61.128-136.533 136.533c0 75.405 61.128 136.533 136.533 136.533s136.533-61.128 136.533-136.533zM384 853.334l-78.080-85.333h-135.253c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333h-135.253l-78.080 85.333h-256zM512 213.334c-117.76 0-213.333 95.573-213.333 213.333s95.573 213.333 213.333 213.333 213.333-95.573 213.333-213.333-95.573-213.333-213.333-213.333z" /> | ||
666 | <glyph unicode="" d="M853.333 597.334h-128v170.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-469.333h85.333c0-70.827 57.173-128 128-128s128 57.173 128 128h256c0-70.827 57.173-128 128-128s128 57.173 128 128h85.333v213.333l-128 170.667zM256 149.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM832 533.334l83.627-106.667h-190.293v106.667h106.667zM768 149.334c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> | ||
667 | <glyph unicode="" d="M807.253 682.24c-8.533 25.173-32.427 43.093-60.587 43.093h-106.667v85.333h-256v-85.333h-106.667c-28.16 0-51.627-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 256c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 256c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 469.334l64 192h469.333l64-192h-597.333z" /> | ||
668 | <glyph unicode="" d="M810.667 853.334h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h170.667l128-128 128 128h170.667c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM512 712.534c63.573 0 115.2-51.627 115.2-115.2s-51.627-115.2-115.2-115.2c-63.573 0-115.2 51.627-115.2 115.2s51.627 115.2 115.2 115.2zM768 256h-512v38.4c0 85.333 170.667 132.267 256 132.267s256-46.933 256-132.267v-38.4z" /> | ||
669 | <glyph unicode="" d="M874.667 810.667l-6.827-1.28-227.84-88.32-256 89.6-240.64-81.067c-8.96-2.987-15.36-10.667-15.36-20.48v-645.12c0-11.947 9.387-21.333 21.333-21.333l6.827 1.28 227.84 88.32 256-89.6 240.64 81.067c8.96 2.987 15.36 10.667 15.36 20.48v645.12c0 11.947-9.387 21.333-21.333 21.333zM640 128l-256 90.027v507.307l256-90.027v-507.307z" /> | ||
670 | <glyph unicode="" d="M512 597.334c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM893.44 469.334c-19.627 177.92-160.853 319.147-338.773 338.773v87.893h-85.333v-87.893c-177.92-19.627-319.147-160.853-338.773-338.773h-87.893v-85.333h87.893c19.627-177.92 160.853-319.147 338.773-338.773v-87.893h85.333v87.893c177.92 19.627 319.147 160.853 338.773 338.773h87.893v85.333h-87.893zM512 128c-165.12 0-298.667 133.547-298.667 298.667s133.547 298.667 298.667 298.667 298.667-133.547 298.667-298.667-133.547-298.667-298.667-298.667z" /> | ||
671 | <glyph unicode="" d="M512 853.334l-320-780.373 30.293-30.293 289.707 128 289.707-128 30.293 30.293z" /> | ||
672 | <glyph unicode="" d="M768 597.334c0 141.227-114.773 256-256 256s-256-114.773-256-256c0-192 256-469.333 256-469.333s256 277.333 256 469.333zM426.667 597.334c0 46.933 38.4 85.333 85.333 85.333s85.333-38.4 85.333-85.333-37.973-85.333-85.333-85.333c-46.933 0-85.333 38.4-85.333 85.333zM213.333 85.334v-85.333h597.333v85.333h-597.333z" /> | ||
673 | <glyph unicode="" d="M512 853.334c-165.12 0-298.667-133.547-298.667-298.667 0-224 298.667-554.667 298.667-554.667s298.667 330.667 298.667 554.667c0 165.12-133.547 298.667-298.667 298.667zM512 448c-58.88 0-106.667 47.787-106.667 106.667s47.787 106.667 106.667 106.667 106.667-47.787 106.667-106.667-47.787-106.667-106.667-106.667z" /> | ||
674 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM256 341.334v105.387l293.547 293.547c8.533 8.533 21.76 8.533 30.293 0l75.52-75.52c8.533-8.533 8.533-21.76 0-30.293l-293.973-293.12h-105.387zM768 341.334h-320l85.333 85.333h234.667v-85.333z" /> | ||
675 | <glyph unicode="" d="M345.6 369.494l120.747 120.747-299.52 299.093c-66.56-66.56-66.56-174.507 0-241.493l178.773-178.347zM634.88 446.72c65.28-30.293 157.013-8.96 224.853 58.88 81.493 81.493 97.28 198.4 34.56 261.12-62.293 62.293-179.2 46.933-261.12-34.56-67.84-67.84-89.173-159.573-58.88-224.853l-416.427-416.427 60.16-60.16 293.973 293.12 293.547-293.547 60.16 60.16-293.547 293.547 62.72 62.72z" /> | ||
676 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM213.333 725.76h128c0-70.827-57.173-128.427-128-128.427v128.427zM213.333 426.667v85.333c117.76 0 213.333 96 213.333 213.76h85.333c0-165.12-133.547-299.093-298.667-299.093zM213.333 170.667l149.333 192 106.667-128.427 149.333 192.427 192-256h-597.333z" /> | ||
677 | <glyph unicode="" d="M853.333 768h-682.667v-85.333h682.667v85.333zM896 341.334v85.333l-42.667 213.333h-682.667l-42.667-213.333v-85.333h42.667v-256h426.667v256h170.667v-256h85.333v256h42.667zM512 170.667h-256v170.667h256v-170.667z" /> | ||
678 | <glyph unicode="" d="M597.333 682.667l-160-213.333 121.6-162.133-68.267-51.2c-72.107 96-192 256-192 256l-256-341.333h938.667l-384 512z" /> | ||
679 | <glyph unicode="" d="M853.333 512h-128v48.64c73.387 19.2 128 85.333 128 164.693h-128v42.667c0 23.467-19.2 42.667-42.667 42.667h-341.333c-23.467 0-42.667-19.2-42.667-42.667v-42.667h-128c0-79.36 54.613-145.493 128-164.693v-48.64h-128c0-79.36 54.613-145.493 128-164.693v-48.64h-128c0-79.36 54.613-145.493 128-164.693v-48.64c0-23.467 19.2-42.667 42.667-42.667h341.333c23.467 0 42.667 19.2 42.667 42.667v48.64c73.387 19.2 128 85.333 128 164.693h-128v48.64c73.387 19.2 128 85.333 128 164.693zM512 128c-47.36 0-85.333 38.4-85.333 85.333s37.973 85.333 85.333 85.333c46.933 0 85.333-38.4 85.333-85.333s-37.973-85.333-85.333-85.333zM512 341.334c-47.36 0-85.333 38.4-85.333 85.333s37.973 85.333 85.333 85.333c46.933 0 85.333-38.4 85.333-85.333s-37.973-85.333-85.333-85.333zM512 554.667c-47.36 0-85.333 38.4-85.333 85.333 0 47.36 37.973 85.333 85.333 85.333 46.933 0 85.333-37.973 85.333-85.333 0-46.933-37.973-85.333-85.333-85.333z" /> | ||
680 | <glyph unicode="" d="M170.667 597.334h170.667v170.667h-170.667v-170.667zM426.667 85.334h170.667v170.667h-170.667v-170.667zM170.667 85.334h170.667v170.667h-170.667v-170.667zM170.667 341.334h170.667v170.667h-170.667v-170.667zM426.667 341.334h170.667v170.667h-170.667v-170.667zM682.667 768v-170.667h170.667v170.667h-170.667zM426.667 597.334h170.667v170.667h-170.667v-170.667zM682.667 341.334h170.667v170.667h-170.667v-170.667zM682.667 85.334h170.667v170.667h-170.667v-170.667z" /> | ||
681 | <glyph unicode="" d="M853.333 469.334h-519.253l238.507 238.507-60.587 60.16-341.333-341.333 341.333-341.333 60.16 60.16-238.080 238.507h519.253v85.333z" /> | ||
682 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 341.334l-170.667 170.667h341.333l-170.667-170.667z" /> | ||
683 | <glyph unicode="" d="M298.667 512l213.333-213.333 213.333 213.333z" /> | ||
684 | <glyph unicode="" d="M298.667 341.334l213.333 213.333 213.333-213.333z" /> | ||
685 | <glyph unicode="" d="M512 768l-60.16-60.16 238.080-238.507h-519.253v-85.333h519.253l-238.080-238.507 60.16-60.16 341.333 341.333z" /> | ||
686 | <glyph unicode="" d="M512 853.334c-235.947 0-426.667-190.72-426.667-426.667s190.72-426.667 426.667-426.667 426.667 190.72 426.667 426.667-190.72 426.667-426.667 426.667zM725.333 273.494l-60.16-60.16-153.173 153.173-153.173-153.173-60.16 60.16 153.173 153.173-153.173 153.173 60.16 60.16 153.173-153.173 153.173 153.173 60.16-60.16-153.173-153.173 153.173-153.173z" /> | ||
687 | <glyph unicode="" d="M384 248.747l-177.92 177.92-60.587-60.16 238.507-238.507 512 512-60.16 60.16z" /> | ||
688 | <glyph unicode="" d="M657.493 622.507l-60.16 60.16-256-256 256-256 60.16 60.16-195.413 195.84z" /> | ||
689 | <glyph unicode="" d="M426.667 682.667l-60.16-60.16 195.413-195.84-195.413-195.84 60.16-60.16 256 256z" /> | ||
690 | <glyph unicode="" d="M810.667 665.174l-60.16 60.16-238.507-238.507-238.507 238.507-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 238.507 238.507 238.507-238.507 60.16 60.16-238.507 238.507z" /> | ||
691 | <glyph unicode="" d="M512 597.334l-256-256 60.16-60.16 195.84 195.413 195.84-195.413 60.16 60.16z" /> | ||
692 | <glyph unicode="" d="M707.84 572.16l-195.84-195.413-195.84 195.413-60.16-60.16 256-256 256 256z" /> | ||
693 | <glyph unicode="" d="M213.333 256h128v-128h85.333v213.333h-213.333v-85.333zM341.333 597.334h-128v-85.333h213.333v213.333h-85.333v-128zM597.333 128h85.333v128h128v85.333h-213.333v-213.333zM682.667 597.334v128h-85.333v-213.333h213.333v85.333h-128z" /> | ||
694 | <glyph unicode="" d="M298.667 341.334h-85.333v-213.333h213.333v85.333h-128v128zM213.333 512h85.333v128h128v85.333h-213.333v-213.333zM725.333 213.334h-128v-85.333h213.333v213.333h-85.333v-128zM597.333 725.334v-85.333h128v-128h85.333v213.333h-213.333z" /> | ||
695 | <glyph unicode="" d="M128 170.667h768v85.333h-768v-85.333zM128 384h768v85.333h-768v-85.333zM128 682.667v-85.333h768v85.333h-768z" /> | ||
696 | <glyph unicode="" d="M256 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM768 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM512 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> | ||
697 | <glyph unicode="" d="M512 597.334c46.933 0 85.333 38.4 85.333 85.333s-38.4 85.333-85.333 85.333-85.333-38.4-85.333-85.333 38.4-85.333 85.333-85.333zM512 512c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333zM512 256c-46.933 0-85.333-38.4-85.333-85.333s38.4-85.333 85.333-85.333 85.333 38.4 85.333 85.333-38.4 85.333-85.333 85.333z" /> | ||
698 | <glyph unicode="" d="M753.067 667.734c-61.867 61.867-146.773 100.267-241.067 100.267-188.587 0-340.907-152.747-340.907-341.333s152.32-341.333 340.907-341.333c159.147 0 291.84 108.8 329.813 256h-88.747c-34.987-99.413-129.707-170.667-241.067-170.667-141.227 0-256 114.773-256 256s114.773 256 256 256c70.827 0 133.973-29.44 180.053-75.947l-137.387-137.387h298.667v298.667l-100.267-100.267z" /> | ||
699 | <glyph unicode="" d="M316.16 145.494l60.587-60.16 135.253 135.253 135.253-135.253 60.16 60.16-195.413 195.84-195.84-195.84zM707.84 707.84l-60.587 60.16-135.253-135.253-135.253 135.253-60.587-60.16 195.84-195.84 195.84 195.84z" /> | ||
700 | <glyph unicode="" d="M512 689.92l135.253-135.253 60.16 60.16-195.413 195.84-195.84-195.84 60.587-60.16 135.253 135.253zM512 163.414l-135.253 135.253-60.16-60.16 195.413-195.84 195.84 195.84-60.587 60.16-135.253-135.253z" /> | ||
701 | <glyph unicode="" d="M213.333 256c0-165.12 133.547-298.667 298.667-298.667s298.667 133.547 298.667 298.667v170.667h-597.333v-170.667zM687.787 752.214l89.6 89.6-34.987 35.413-98.133-98.56c-40.107 20.053-84.48 32-132.267 32s-92.16-11.947-131.84-32l-98.56 98.56-34.987-35.413 89.6-89.6c-74.24-54.187-122.88-141.227-122.88-240.213v-42.667h597.333v42.667c0 98.987-48.64 186.027-122.88 240.213zM384 554.667c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667zM640 554.667c-23.467 0-42.667 19.2-42.667 42.667s19.2 42.667 42.667 42.667 42.667-19.2 42.667-42.667-19.2-42.667-42.667-42.667z" /> | ||
702 | <glyph unicode="" d="M607.573 426.24l98.987-98.987c11.947 30.72 18.773 64.427 18.773 99.413s-6.827 67.84-18.347 98.56l-99.413-98.987zM833.28 652.374l-53.76-53.76c26.88-51.627 41.813-109.653 41.813-171.52s-15.36-120.32-41.813-171.52l51.2-51.2c41.387 65.707 65.707 143.36 65.707 226.56-0.427 80.64-23.467 156.587-63.147 221.44zM670.293 609.707l-243.627 243.627h-42.667v-323.84l-195.84 195.84-60.16-60.16 238.507-238.507-238.507-238.507 60.16-60.16 195.84 195.84v-323.84h42.667l243.627 243.627-183.467 183.040 183.467 183.040zM469.333 689.92l80.213-80.213-80.213-80.213v160.427zM549.547 243.627l-80.213-80.213v160.427l80.213-80.213z" /> | ||
703 | <glyph unicode="" d="M853.333 256h85.333v85.333h-85.333v-85.333zM853.333 640v-213.333h85.333v213.333h-85.333zM426.667 768c-188.587 0-341.333-152.747-341.333-341.333s152.747-341.333 341.333-341.333 341.333 152.747 341.333 341.333-152.747 341.333-341.333 341.333zM426.667 341.334c-46.933 0-85.333 38.4-85.333 85.333s38.4 85.333 85.333 85.333 85.333-38.4 85.333-85.333-38.4-85.333-85.333-85.333z" /> | ||
704 | <glyph unicode="" d="M512 853.334c-234.667 0-426.667-192-426.667-426.667s192-426.667 426.667-426.667 426.667 192 426.667 426.667-192 426.667-426.667 426.667zM170.667 426.667c0 187.733 153.6 341.333 341.333 341.333 76.8 0 149.333-25.6 209.067-72.533l-477.867-477.867c-46.933 59.733-72.533 132.267-72.533 209.067zM512 85.334c-76.8 0-149.333 25.6-209.067 72.533l477.867 477.867c46.933-59.733 72.533-132.267 72.533-209.067 0-187.733-153.6-341.333-341.333-341.333z" /> | ||
705 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333 0 78.933 26.88 151.467 72.107 209.067l478.293-478.293c-57.6-45.227-130.133-72.107-209.067-72.107zM781.227 217.6l-478.293 478.293c57.6 45.227 130.133 72.107 209.067 72.107 188.587 0 341.333-152.747 341.333-341.333 0-78.933-26.88-151.467-72.107-209.067z" /> | ||
706 | <glyph unicode="" d="M807.253 724.907c-8.533 25.173-32.427 43.093-60.587 43.093h-469.333c-28.16 0-51.627-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 298.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 298.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 512l64 192h469.333l64-192h-597.333z" /> | ||
707 | <glyph unicode="" d="M705.28 466.774l-45.227 45.227-208.213-208.213-90.453 90.453-45.227-45.227 135.68-135.68 253.44 253.44zM810.667 810.667h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v469.333h597.333v-469.333z" /> | ||
708 | <glyph unicode="" d="M397.227 213.334l104.107 104.107 104.107-104.107 45.227 45.227-104.107 104.107 104.107 104.107-45.227 45.227-104.107-104.107-104.107 104.107-45.227-45.227 104.107-104.107-104.107-104.107 45.227-45.227zM810.667 810.667h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v469.333h597.333v-469.333z" /> | ||
709 | <glyph unicode="" d="M725.333 512h-426.667v-85.333h426.667v85.333zM810.667 810.667h-42.667v85.333h-85.333v-85.333h-341.333v85.333h-85.333v-85.333h-42.667c-47.36 0-84.907-38.4-84.907-85.333l-0.427-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM810.667 128h-597.333v469.333h597.333v-469.333zM597.333 341.334h-298.667v-85.333h298.667v85.333z" /> | ||
710 | <glyph unicode="" d="M853.333 682.667h-341.333l-85.333 85.333h-256c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v426.667c0 46.933-38.4 85.333-85.333 85.333zM579.413 170.667l-152.747 89.6-152.747-89.6 40.533 173.653-134.827 116.907 177.493 15.36 69.547 163.413 69.547-163.84 177.493-15.36-134.827-116.907 40.533-173.227z" /> | ||
711 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM213.333 341.334l149.333 192 106.667-128.427 149.333 192.427 192-256h-597.333z" /> | ||
712 | <glyph unicode="" d="M938.667 810.667h-640c-29.44 0-52.48-14.933-67.84-37.547l-230.827-346.453 230.827-346.027c15.36-22.613 41.387-37.973 70.827-37.973h637.013c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM384 362.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM597.333 362.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM810.667 362.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64z" /> | ||
713 | <glyph unicode="" d="M832 512c7.253 0 14.080-1.28 21.333-2.133v386.133l-810.667-810.667h554.667v128c0 37.973 16.64 71.68 42.667 95.147v11.52c0 105.813 86.187 192 192 192zM938.667 256v64c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-64c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h213.333c23.467 0 42.667 19.2 42.667 42.667v170.667c0 23.467-19.2 42.667-42.667 42.667zM896 256h-128v64c0 35.413 28.587 64 64 64s64-28.587 64-64v-64z" /> | ||
714 | <glyph unicode="" d="M627.627 533.334l97.707 97.707v-161.707h21.333l121.6 121.6-91.307 91.733 91.733 91.733-122.027 121.6h-21.333v-161.707l-97.707 97.707-30.293-30.293 119.040-119.040-119.040-119.040 30.293-30.293zM768 814.507l40.107-40.107-40.107-40.107v80.213zM768 631.040l40.107-40.107-40.107-40.107v80.213zM853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 281.173l93.867 94.293c11.947 11.093 15.36 27.733 10.667 42.667-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667z" /> | ||
715 | <glyph unicode="" d="M768 469.334l213.333 213.333-213.333 213.333v-128h-170.667v-170.667h170.667v-128zM853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 281.173l93.867 94.293c11.947 11.093 15.36 27.733 10.667 42.667-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667z" /> | ||
716 | <glyph unicode="" d="M853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 281.173l93.867 94.293c11.947 11.093 15.36 27.733 10.667 42.667-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667zM810.667 426.667h85.333c0 212.053-171.947 384-384 384v-85.333c165.12 0 298.667-133.547 298.667-298.667zM640 426.667h85.333c0 117.76-95.573 213.333-213.333 213.333v-85.333c70.827 0 128-57.173 128-128z" /> | ||
717 | <glyph unicode="" d="M853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 281.173l93.867 94.293c11.947 11.093 15.36 27.733 10.667 42.667-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667zM853.333 768v21.333c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-21.333c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h213.333c23.467 0 42.667 19.2 42.667 42.667v170.667c0 23.467-19.2 42.667-42.667 42.667zM819.2 768h-145.067v21.333c0 40.107 32.427 72.533 72.533 72.533s72.533-32.427 72.533-72.533v-21.333z" /> | ||
718 | <glyph unicode="" d="M277.333 704l234.667-234.667 298.667 298.667-42.667 42.667-256-256-192 192h149.333v64h-256v-256h64v149.333zM1011.627 227.414c-130.133 123.307-305.92 199.253-499.627 199.253s-369.493-75.947-499.627-199.253c-7.68-7.68-12.373-18.347-12.373-30.293s4.693-22.613 12.373-30.293l105.813-105.813c7.68-7.68 18.347-12.373 30.293-12.373 11.52 0 22.187 4.693 29.867 11.947 33.707 31.573 72.107 58.027 113.493 78.933 14.080 6.827 23.893 21.333 23.893 38.4v132.267c61.867 20.48 128 31.147 196.267 31.147s134.4-10.667 196.267-30.72v-132.267c0-16.64 9.813-31.573 23.893-38.4 41.813-20.907 79.787-47.787 113.92-78.933 7.68-7.68 18.347-11.947 29.867-11.947 11.947 0 22.613 4.693 30.293 12.373l105.813 105.813c7.68 7.68 12.373 18.347 12.373 30.293s-5.12 22.187-12.8 29.867z" /> | ||
719 | <glyph unicode="" d="M725.333 810.667h-85.333v-298.667h85.333v298.667zM853.333 277.334c-53.333 0-104.533 8.533-152.32 24.32-14.933 4.693-31.573 1.28-43.52-10.24l-93.867-93.867c-120.747 61.44-219.733 160-281.173 281.173l93.867 94.293c11.947 11.093 15.36 27.733 10.667 42.667-15.787 47.787-24.32 98.987-24.32 152.32 0 23.467-19.2 42.667-42.667 42.667h-149.333c-23.467 0-42.667-19.2-42.667-42.667 0-400.64 324.693-725.333 725.333-725.333 23.467 0 42.667 19.2 42.667 42.667v149.333c0 23.467-19.2 42.667-42.667 42.667zM810.667 810.667v-298.667h85.333v298.667h-85.333z" /> | ||
720 | <glyph unicode="" d="M853.333 682.667h-170.667v85.333l-85.333 85.333h-170.667l-85.333-85.333v-85.333h-170.667c-47.36 0-84.907-37.973-84.907-85.333l-0.427-469.333c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM426.667 768h170.667v-85.333h-170.667v85.333zM512 128l-213.333 213.333h128v170.667h170.667v-170.667h128l-213.333-213.333z" /> | ||
721 | <glyph unicode="" d="M853.333 682.667h-170.667v85.333l-85.333 85.333h-170.667l-85.333-85.333v-85.333h-170.667c-47.36 0-84.907-37.973-84.907-85.333l-0.427-469.333c0-47.36 37.973-85.333 85.333-85.333h682.667c47.36 0 85.333 37.973 85.333 85.333v469.333c0 47.36-37.973 85.333-85.333 85.333zM426.667 768h170.667v-85.333h-170.667v85.333zM448 192l-149.333 149.333 60.16 60.16 89.173-89.173 221.013 221.013 60.16-60.16-281.173-281.173z" /> | ||
722 | <glyph unicode="" d="M768 853.334h-341.333l-255.147-256-0.853-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM512 597.334h-85.333v170.667h85.333v-170.667zM640 597.334h-85.333v170.667h85.333v-170.667zM768 597.334h-85.333v170.667h85.333v-170.667z" /> | ||
723 | <glyph unicode="" d="M768 853.334h-341.333l-255.147-256-0.853-512c0-46.933 38.4-85.333 85.333-85.333h512c46.933 0 85.333 38.4 85.333 85.333v682.667c0 46.933-38.4 85.333-85.333 85.333zM554.667 213.334h-85.333v85.333h85.333v-85.333zM554.667 384h-85.333v213.333h85.333v-213.333z" /> | ||
724 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM554.667 341.334h-85.333v85.333h85.333v-85.333zM554.667 512h-85.333v170.667h85.333v-170.667z" /> | ||
725 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM384 469.334h-85.333v85.333h85.333v-85.333zM554.667 469.334h-85.333v85.333h85.333v-85.333zM725.333 469.334h-85.333v85.333h85.333v-85.333z" /> | ||
726 | <glyph unicode="" d="M426.667 667.734v89.173c-34.133-8.96-66.133-23.040-95.147-40.96l62.293-62.293c10.667 5.12 21.333 10.24 32.853 14.080zM122.027 707.84l100.693-100.693c-32.853-52.053-52.053-113.92-52.053-180.48 0-94.293 38.827-179.2 100.693-240.64l-100.693-100.693h256v256l-95.573-95.573c-46.080 46.507-75.093 110.080-75.093 180.907 0 42.667 10.667 82.773 29.013 118.187l344.747-344.747c-10.667-5.547-21.333-10.667-32.853-14.507v-89.173c34.133 8.96 66.133 23.040 95.147 40.96l100.693-100.693 54.187 54.187-670.293 671.147-54.613-54.187zM853.333 768h-256v-256l95.573 95.573c46.080-46.507 75.093-110.080 75.093-180.907 0-42.667-10.667-82.773-29.013-118.187l62.293-62.293c32.853 52.053 52.053 113.92 52.053 180.48 0 94.293-38.827 179.2-100.693 240.64l100.693 100.693z" /> | ||
727 | <glyph unicode="" d="M128 426.667c0-94.293 38.827-179.2 100.693-240.64l-100.693-100.693h256v256l-95.573-95.573c-46.080 46.507-75.093 110.080-75.093 180.907 0 111.36 71.253 206.080 170.667 241.067v89.173c-147.2-37.973-256-171.093-256-330.24zM469.333 213.334h85.333v85.333h-85.333v-85.333zM896 768h-256v-256l95.573 95.573c46.080-46.507 75.093-110.080 75.093-180.907 0-111.36-71.253-206.080-170.667-241.067v-89.173c147.2 37.973 256 171.093 256 330.24 0 94.293-38.827 179.2-100.693 240.64l100.693 100.693zM469.333 384h85.333v256h-85.333v-256z" /> | ||
728 | <glyph unicode="" d="M512 768v128l-170.667-170.667 170.667-170.667v128c141.227 0 256-114.773 256-256 0-43.093-10.667-84.053-29.867-119.467l62.293-62.293c33.28 52.48 52.907 114.773 52.907 181.76 0 188.587-152.747 341.333-341.333 341.333zM512 170.667c-141.227 0-256 114.773-256 256 0 43.093 10.667 84.053 29.867 119.467l-62.293 62.293c-33.28-52.48-52.907-114.773-52.907-181.76 0-188.587 152.747-341.333 341.333-341.333v-128l170.667 170.667-170.667 170.667v-128z" /> | ||
729 | <glyph unicode="" d="M725.333 895.574l-426.667 0.427c-46.933 0-85.333-38.4-85.333-85.333v-768c0-46.933 38.4-85.333 85.333-85.333h426.667c46.933 0 85.333 38.4 85.333 85.333v768c0 46.933-38.4 84.907-85.333 84.907zM725.333 128h-426.667v597.333h426.667v-597.333zM682.667 384h-128v213.333h-85.333v-213.333h-128l170.667-170.667 170.667 170.667z" /> | ||
730 | <glyph unicode="" d="M85.333 256v-85.333c117.76 0 213.333-95.573 213.333-213.333h85.333c0 165.12-133.547 298.667-298.667 298.667zM85.333 85.334v-128h128c0 70.827-57.173 128-128 128zM85.333 426.667v-85.333c212.053 0 384-171.947 384-384h85.333c0 259.413-209.92 469.333-469.333 469.333zM725.333 895.574l-426.667 0.427c-46.933 0-85.333-38.4-85.333-85.333v-314.453c29.44-6.827 58.027-15.787 85.333-27.307v256.427h426.667v-554.667h-129.28c22.187-53.333 35.84-110.507 40.533-170.667h88.747c46.933 0 85.333 38.4 85.333 85.333v725.333c0 46.933-38.4 84.907-85.333 84.907z" /> | ||
731 | <glyph unicode="" d="M807.253 724.907c-8.533 25.173-32.427 43.093-60.587 43.093h-469.333c-28.16 0-51.627-17.92-60.587-43.093l-88.747-255.573v-341.333c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v42.667h512v-42.667c0-23.467 19.2-42.667 42.667-42.667h42.667c23.467 0 42.667 19.2 42.667 42.667v341.333l-88.747 255.573zM277.333 298.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM746.667 298.667c-35.413 0-64 28.587-64 64s28.587 64 64 64 64-28.587 64-64-28.587-64-64-64zM213.333 512l64 192h469.333l64-192h-597.333z" /> | ||
732 | <glyph unicode="" d="M0 298.667h85.333v256h-85.333v-256zM128 213.334h85.333v426.667h-85.333v-426.667zM938.667 554.667v-256h85.333v256h-85.333zM810.667 213.334h85.333v426.667h-85.333v-426.667zM704 810.667h-384c-35.413 0-64-28.587-64-64v-640c0-35.413 28.587-64 64-64h384c35.413 0 64 28.587 64 64v640c0 35.413-28.587 64-64 64zM682.667 128h-341.333v597.333h341.333v-597.333z" /> | ||
733 | <glyph unicode="" d="M853.333 853.334h-682.667c-46.933 0-84.907-38.4-84.907-85.333l-0.427-768 170.667 170.667h597.333c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM768 341.334l-170.667 136.533v-136.533h-341.333v341.333h341.333v-136.533l170.667 136.533v-341.333z" /> | ||
734 | <glyph unicode="" d="M938.667 768v21.333c0 58.88-47.787 106.667-106.667 106.667s-106.667-47.787-106.667-106.667v-21.333c-23.467 0-42.667-19.2-42.667-42.667v-170.667c0-23.467 19.2-42.667 42.667-42.667h213.333c23.467 0 42.667 19.2 42.667 42.667v170.667c0 23.467-19.2 42.667-42.667 42.667zM904.533 768h-145.067v21.333c0 40.107 32.427 72.533 72.533 72.533s72.533-32.427 72.533-72.533v-21.333zM807.253 426.667c1.707-14.080 3.413-28.16 3.413-42.667 0-88.747-34.133-169.387-89.6-229.973-11.093 34.56-42.667 59.307-81.067 59.307h-42.667v128c0 23.467-19.2 42.667-42.667 42.667h-256v85.333h85.333c23.467 0 42.667 19.2 42.667 42.667v85.333h85.333c46.933 0 85.333 38.4 85.333 85.333v108.373c-40.533 12.8-83.2 19.627-128 19.627-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667c0 14.507-0.853 28.587-2.133 42.667h-86.613zM426.667 45.654c-168.533 20.907-298.667 164.267-298.667 338.347 0 26.453 3.413 51.627 8.96 76.373l204.373-204.373v-42.667c0-46.933 38.4-85.333 85.333-85.333v-82.347z" /> | ||
735 | <glyph unicode="" d="M512 682.667c47.36 0 85.333 38.4 85.333 85.333 0 16.213-4.267 31.147-12.373 43.947l-72.96 126.72-72.96-126.72c-8.107-12.8-12.373-27.733-12.373-43.947 0-46.933 38.4-85.333 85.333-85.333zM708.267 256.427l-45.653 45.653-46.080-45.653c-55.467-55.467-152.747-55.893-208.64 0l-45.653 45.653-46.507-45.653c-27.733-27.733-64.853-43.093-104.107-43.093-31.147 0-59.733 9.813-83.627 26.027v-196.693c0-23.467 19.2-42.667 42.667-42.667h682.667c23.467 0 42.667 19.2 42.667 42.667v196.693c-23.893-16.213-52.48-26.027-83.627-26.027-39.253 0-76.373 15.36-104.107 43.093zM768 554.667h-213.333v85.333h-85.333v-85.333h-213.333c-70.827 0-128-57.173-128-128v-65.707c0-46.080 37.547-83.627 83.627-83.627 22.187 0 43.52 8.533 58.88 24.32l91.307 90.88 90.88-90.88c31.573-31.573 86.613-31.573 118.187 0l91.307 90.88 90.88-90.88c15.787-15.787 36.693-24.32 58.88-24.32 46.080 0 83.627 37.547 83.627 83.627v65.707c0.427 70.827-56.747 128-127.573 128z" /> | ||
736 | <glyph unicode="" d="M512 640v170.667h-426.667v-768h853.333v597.333h-426.667zM256 128h-85.333v85.333h85.333v-85.333zM256 298.667h-85.333v85.333h85.333v-85.333zM256 469.334h-85.333v85.333h85.333v-85.333zM256 640h-85.333v85.333h85.333v-85.333zM426.667 128h-85.333v85.333h85.333v-85.333zM426.667 298.667h-85.333v85.333h85.333v-85.333zM426.667 469.334h-85.333v85.333h85.333v-85.333zM426.667 640h-85.333v85.333h85.333v-85.333zM853.333 128h-341.333v85.333h85.333v85.333h-85.333v85.333h85.333v85.333h-85.333v85.333h341.333v-426.667zM768 469.334h-85.333v-85.333h85.333v85.333zM768 298.667h-85.333v-85.333h85.333v85.333z" /> | ||
737 | <glyph unicode="" d="M341.333 512h-128v128h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333zM768 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-13.653 0-26.88-2.133-38.827-5.973 24.32-34.56 38.4-76.373 38.4-122.027s-14.507-87.040-38.4-122.027c11.947-3.84 25.173-5.973 38.827-5.973zM554.667 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-70.827 0-128-57.173-128-128s57.173-128 128-128zM837.12 377.174c35.413-31.147 58.88-70.827 58.88-121.173v-85.333h128v85.333c0 65.707-101.12 106.24-186.88 121.173zM554.667 384c-85.333 0-256-42.667-256-128v-85.333h512v85.333c0 85.333-170.667 128-256 128z" /> | ||
738 | <glyph unicode="" d="M682.667 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-70.827 0-128-57.173-128-128s57.173-128 128-128zM341.333 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-70.827 0-128-57.173-128-128s57.173-128 128-128zM341.333 384c-99.413 0-298.667-49.92-298.667-149.333v-106.667h597.333v106.667c0 99.413-199.253 149.333-298.667 149.333zM682.667 384c-12.373 0-26.453-0.853-41.387-2.133 49.493-35.84 84.053-84.053 84.053-147.2v-106.667h256v106.667c0 99.413-199.253 149.333-298.667 149.333z" /> | ||
739 | <glyph unicode="" d="M640 469.334v256l-128 128-128-128v-85.333h-256v-597.333h768v426.667h-256zM298.667 128h-85.333v85.333h85.333v-85.333zM298.667 298.667h-85.333v85.333h85.333v-85.333zM298.667 469.334h-85.333v85.333h85.333v-85.333zM554.667 128h-85.333v85.333h85.333v-85.333zM554.667 298.667h-85.333v85.333h85.333v-85.333zM554.667 469.334h-85.333v85.333h85.333v-85.333zM554.667 640h-85.333v85.333h85.333v-85.333zM810.667 128h-85.333v85.333h85.333v-85.333zM810.667 298.667h-85.333v85.333h85.333v-85.333z" /> | ||
740 | <glyph unicode="" d="M511.573 853.334c-235.52 0-426.24-191.147-426.24-426.667s190.72-426.667 426.24-426.667c235.947 0 427.093 191.147 427.093 426.667s-191.147 426.667-427.093 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333zM661.333 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM362.667 469.334c35.413 0 64 28.587 64 64s-28.587 64-64 64-64-28.587-64-64 28.587-64 64-64zM512 192c99.413 0 183.893 62.293 218.027 149.333h-436.053c34.133-87.040 118.613-149.333 218.027-149.333z" /> | ||
741 | <glyph unicode="" d="M490.667-0c46.933 0 85.333 38.4 85.333 85.333h-170.667c0-46.933 38.4-85.333 85.333-85.333zM768 256v234.667c0 130.987-90.88 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-122.453-29.013-213.333-138.667-213.333-269.653v-234.667l-85.333-85.333v-42.667h725.333v42.667l-85.333 85.333zM682.667 213.334h-384v277.333c0 106.24 85.76 192 192 192s192-85.76 192-192v-277.333z" /> | ||
742 | <glyph unicode="" d="M490.667-0c46.933 0 85.333 38.4 85.333 85.333h-170.667c0-46.933 38.4-85.333 85.333-85.333zM768 490.667c0 130.987-90.88 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-21.76-5.12-42.24-13.653-61.867-23.893l403.2-402.773v157.013zM756.48 128l85.333-85.333 54.187 54.187-713.813 713.813-54.187-54.187 124.587-124.587c-24.747-41.387-39.253-89.6-39.253-141.227v-234.667l-85.333-85.333v-42.667h628.48z" /> | ||
743 | <glyph unicode="" d="M280.747 785.92l-61.013 61.013c-101.973-77.653-169.387-198.4-175.787-334.933h85.333c6.4 113.067 64.427 212.053 151.467 273.92zM852.053 512h85.333c-6.4 136.533-73.813 257.28-176.213 334.933l-61.013-61.013c87.467-61.867 145.493-160.853 151.893-273.92zM768 490.667c0 130.987-90.88 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-122.453-29.013-213.333-138.667-213.333-269.653v-234.667l-85.333-85.333v-42.667h725.333v42.667l-85.333 85.333v234.667zM490.667-0c5.973 0 11.52 0.427 17.067 1.707 27.733 5.547 50.773 24.747 61.44 50.347 4.267 10.24 6.827 21.333 6.827 33.28h-170.667c0-46.933 38.4-85.333 85.333-85.333z" /> | ||
744 | <glyph unicode="" d="M490.667-0c46.933 0 85.333 38.4 85.333 85.333h-170.667c0-46.933 38.4-85.333 85.333-85.333zM768 256v234.667c0 130.987-90.88 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-122.453-29.013-213.333-138.667-213.333-269.653v-234.667l-85.333-85.333v-42.667h725.333v42.667l-85.333 85.333zM597.333 520.534l-119.467-145.067h119.467v-76.8h-213.333v76.8l119.467 145.067h-119.467v76.8h213.333v-76.8z" /> | ||
745 | <glyph unicode="" d="M490.667-0c46.933 0 85.333 38.4 85.333 85.333h-170.667c0-46.933 38.4-85.333 85.333-85.333zM768 256v234.667c0 130.987-90.88 240.64-213.333 269.653v29.013c0 35.413-28.587 64-64 64s-64-28.587-64-64v-29.013c-122.453-29.013-213.333-138.667-213.333-269.653v-234.667l-85.333-85.333v-42.667h725.333v42.667l-85.333 85.333z" /> | ||
746 | <glyph unicode="" d="M128 725.334v-256h213.333l-42.667 170.667 170.667-42.667v213.333h-256c-46.933 0-85.333-38.4-85.333-85.333zM341.333 384h-213.333v-256c0-46.933 38.4-85.333 85.333-85.333h256v213.333l-170.667-42.667 42.667 170.667zM725.333 213.334l-170.667 42.667v-213.333h256c46.933 0 85.333 38.4 85.333 85.333v256h-213.333l42.667-170.667zM810.667 810.667h-256v-213.333l170.667 42.667-42.667-170.667h213.333v256c0 46.933-38.4 85.333-85.333 85.333z" /> | ||
747 | <glyph unicode="" d="M853.333 768h-135.253l-78.080 85.333h-256l-78.080-85.333h-135.253c-46.933 0-85.333-38.4-85.333-85.333v-512c0-46.933 38.4-85.333 85.333-85.333h682.667c46.933 0 85.333 38.4 85.333 85.333v512c0 46.933-38.4 85.333-85.333 85.333zM512 640c69.547 0 130.56-33.707 169.813-85.333h-169.813c-70.827 0-128-57.173-128-128 0-14.933 2.987-29.44 7.68-42.667h-88.747c-2.56 13.653-4.267 28.16-4.267 42.667 0 117.76 95.573 213.333 213.333 213.333zM512 213.334c-69.547 0-130.56 33.707-169.813 85.333h169.813c70.827 0 128 57.173 128 128 0 14.933-2.987 29.44-7.68 42.667h88.747c2.987-13.653 4.267-28.16 4.267-42.667 0-117.76-95.573-213.333-213.333-213.333z" /> | ||
748 | <glyph unicode="" d="M704 384c-51.2 0-130.987-14.507-192-42.667-61.013 28.587-140.8 42.667-192 42.667-92.587 0-277.333-46.080-277.333-138.667v-117.333h938.667v117.333c0 92.587-184.747 138.667-277.333 138.667zM533.333 192h-426.667v53.333c0 23.040 109.227 74.667 213.333 74.667s213.333-51.627 213.333-74.667v-53.333zM917.333 192h-320v53.333c0 19.627-8.533 36.693-22.187 52.053 37.547 12.8 83.627 22.613 128.853 22.613 104.107 0 213.333-51.627 213.333-74.667v-53.333zM320 426.667c82.347 0 149.333 66.987 149.333 149.333s-66.987 149.333-149.333 149.333-149.333-66.987-149.333-149.333 66.987-149.333 149.333-149.333zM320 661.334c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333-85.333 38.4-85.333 85.333 38.4 85.333 85.333 85.333zM704 426.667c82.347 0 149.333 66.987 149.333 149.333s-66.987 149.333-149.333 149.333-149.333-66.987-149.333-149.333 66.987-149.333 149.333-149.333zM704 661.334c46.933 0 85.333-38.4 85.333-85.333s-38.4-85.333-85.333-85.333-85.333 38.4-85.333 85.333 38.4 85.333 85.333 85.333z" /> | ||
749 | <glyph unicode="" d="M682.667 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-70.827 0-128-57.173-128-128s57.173-128 128-128zM341.333 469.334c70.827 0 127.573 57.173 127.573 128s-56.747 128-127.573 128c-70.827 0-128-57.173-128-128s57.173-128 128-128zM341.333 384c-99.413 0-298.667-49.92-298.667-149.333v-106.667h597.333v106.667c0 99.413-199.253 149.333-298.667 149.333zM682.667 384c-12.373 0-26.453-0.853-41.387-2.133 49.493-35.84 84.053-84.053 84.053-147.2v-106.667h256v106.667c0 99.413-199.253 149.333-298.667 149.333z" /> | ||
750 | <glyph unicode="" d="M640 426.667c94.293 0 170.667 76.373 170.667 170.667s-76.373 170.667-170.667 170.667-170.667-76.373-170.667-170.667 76.373-170.667 170.667-170.667zM256 512v128h-85.333v-128h-128v-85.333h128v-128h85.333v128h128v85.333h-128zM640 341.334c-113.92 0-341.333-57.173-341.333-170.667v-85.333h682.667v85.333c0 113.493-227.413 170.667-341.333 170.667z" /> | ||
751 | <glyph unicode="" d="M512 686.934c49.493 0 89.6-40.107 89.6-89.6s-40.107-89.6-89.6-89.6-89.6 40.107-89.6 89.6 40.107 89.6 89.6 89.6zM512 302.934c126.72 0 260.267-62.293 260.267-89.6v-46.933h-520.533v46.933c0 27.307 133.547 89.6 260.267 89.6zM512 768c-94.293 0-170.667-76.373-170.667-170.667s76.373-170.667 170.667-170.667 170.667 76.373 170.667 170.667-76.373 170.667-170.667 170.667zM512 384c-113.92 0-341.333-57.173-341.333-170.667v-128h682.667v128c0 113.493-227.413 170.667-341.333 170.667z" /> | ||
752 | <glyph unicode="" d="M512 426.667c94.293 0 170.667 76.373 170.667 170.667s-76.373 170.667-170.667 170.667-170.667-76.373-170.667-170.667 76.373-170.667 170.667-170.667zM512 341.334c-113.92 0-341.333-57.173-341.333-170.667v-85.333h682.667v85.333c0 113.493-227.413 170.667-341.333 170.667z" /> | ||
753 | <glyph unicode="" d="M426.667 597.334h-85.333v-170.667h-170.667v-85.333h170.667v-170.667h85.333v170.667h170.667v85.333h-170.667zM618.667 679.254v-77.653l106.667 21.333v-452.267h85.333v554.667z" /> | ||
754 | <glyph unicode="" d="M810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333zM384 213.334h-85.333v298.667h85.333v-298.667zM554.667 213.334h-85.333v426.667h85.333v-426.667zM725.333 213.334h-85.333v170.667h85.333v-170.667z" /> | ||
755 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM469.333 88.32c-168.533 20.907-298.667 164.267-298.667 338.347 0 26.453 3.413 51.627 8.96 76.373l204.373-204.373v-42.667c0-46.933 38.4-85.333 85.333-85.333v-82.347zM763.733 196.694c-11.093 34.56-42.667 59.307-81.067 59.307h-42.667v128c0 23.467-19.2 42.667-42.667 42.667h-256v85.333h85.333c23.467 0 42.667 19.2 42.667 42.667v85.333h85.333c46.933 0 85.333 38.4 85.333 85.333v17.493c125.013-50.773 213.333-173.227 213.333-316.16 0-88.747-34.133-169.387-89.6-229.973z" /> | ||
756 | <glyph unicode="" d="M213.333 376.32v-170.667l298.667-162.987 298.667 162.987v170.667l-298.667-162.987-298.667 162.987zM512 810.667l-469.333-256 469.333-256 384 209.493v-294.827h85.333v341.333l-469.333 256z" /> | ||
757 | <glyph unicode="" d="M768 252.587c-32.427 0-61.44-12.8-83.627-32.853l-304.213 177.067c2.133 9.813 3.84 19.627 3.84 29.867s-1.707 20.053-3.84 29.867l300.8 175.36c23.040-21.333 53.333-34.56 87.040-34.56 70.827 0 128 57.173 128 128s-57.173 128-128 128-128-57.173-128-128c0-10.24 1.707-20.053 3.84-29.867l-300.8-175.36c-23.040 21.333-53.333 34.56-87.040 34.56-70.827 0-128-57.173-128-128s57.173-128 128-128c33.707 0 64 13.227 87.040 34.56l303.787-177.493c-2.133-8.96-3.413-18.347-3.413-27.733 0-68.693 55.893-124.587 124.587-124.587s124.587 55.893 124.587 124.587-55.893 124.587-124.587 124.587z" /> | ||
758 | <glyph unicode="" d="M576 910.080s31.573-113.067 31.573-204.8c0-87.893-57.6-159.147-145.493-159.147-88.32 0-154.88 71.253-154.88 159.147l1.28 15.36c-86.187-102.4-137.813-235.093-137.813-379.307 0-188.587 152.747-341.333 341.333-341.333s341.333 152.747 341.333 341.333c0 229.973-110.507 435.2-277.333 568.747zM499.627 128c-75.947 0-137.387 59.733-137.387 133.973 0 69.12 44.8 117.76 119.893 133.12 75.52 15.36 153.6 51.627 197.12 110.080 16.64-55.040 25.173-113.067 25.173-172.373 0-113.067-91.733-204.8-204.8-204.8z" /> | ||
759 | <glyph unicode="" d="M810.667 725.334v-597.333h-597.333v597.333h597.333zM810.667 810.667h-597.333c-46.933 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 38.4-85.333 85.333-85.333h597.333c46.933 0 85.333 38.4 85.333 85.333v597.333c0 46.933-38.4 85.333-85.333 85.333z" /> | ||
760 | <glyph unicode="" d="M810.667 810.667h-597.333c-47.36 0-85.333-38.4-85.333-85.333v-597.333c0-46.933 37.973-85.333 85.333-85.333h597.333c47.36 0 85.333 38.4 85.333 85.333v597.333c0 46.933-37.973 85.333-85.333 85.333zM426.667 213.334l-213.333 213.333 60.16 60.16 153.173-152.747 323.84 323.84 60.16-60.587-384-384z" /> | ||
761 | <glyph unicode="" d="M512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333z" /> | ||
762 | <glyph unicode="" d="M512 640c-117.76 0-213.333-95.573-213.333-213.333s95.573-213.333 213.333-213.333 213.333 95.573 213.333 213.333-95.573 213.333-213.333 213.333zM512 853.334c-235.52 0-426.667-191.147-426.667-426.667s191.147-426.667 426.667-426.667 426.667 191.147 426.667 426.667-191.147 426.667-426.667 426.667zM512 85.334c-188.587 0-341.333 152.747-341.333 341.333s152.747 341.333 341.333 341.333 341.333-152.747 341.333-341.333-152.747-341.333-341.333-341.333z" /> | ||
763 | <glyph unicode="" d="M938.667 523.094l-306.773 26.453-119.893 282.453-119.893-282.88-306.773-26.027 232.96-201.813-69.973-299.947 263.68 159.147 263.68-159.147-69.547 299.947 232.533 201.813zM512 260.267v396.8l72.96-172.373 186.88-16.213-141.653-122.88 42.667-182.613-160.853 97.28z" /> | ||
764 | <glyph unicode="" d="M938.667 544.427l-306.773 26.453-119.893 282.453-119.893-282.88-306.773-26.027 232.96-201.813-69.973-299.947 263.68 159.147 263.68-159.147-69.547 299.947 232.533 201.813zM512 281.6l-160.427-96.853 42.667 182.613-141.653 122.88 186.88 16.213 72.533 171.947 72.96-172.373 186.88-16.213-141.653-122.88 42.667-182.613-160.853 97.28z" /> | ||
765 | <glyph unicode="" d="M512 201.814l263.68-159.147-69.973 299.947 232.96 201.813-306.773 26.027-119.893 282.88-119.893-282.88-306.773-26.027 232.96-201.813-69.973-299.947z" /> | ||
766 | <glyph unicode="" d="M1032.533 597.334l59.733 72.533c-21.333 12.8-226.133 183.467-537.6 183.467s-516.267-170.667-537.6-183.467l537.6-669.867 298.667 371.2v226.133c0 0 179.2 0 179.2 0z" horiz-adv-x="1109" /> | ||
767 | <glyph unicode="" d="M900.267 576c34.133 0 68.267-8.533 98.133-25.6l93.867 119.467c-17.067 12.8-221.867 183.467-533.333 183.467s-516.267-170.667-537.6-183.467l537.6-669.867 179.2 221.867c-34.133 38.4-51.2 85.333-51.2 136.533 0 123.733 98.133 217.6 213.333 217.6z" horiz-adv-x="1109" /> | ||
768 | <glyph unicode="" d="M938.667 597.334v256l-853.333-853.333h682.667v597.333h170.667z" /> | ||
769 | </font></defs></svg> \ No newline at end of file | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.ttf b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.ttf deleted file mode 100644 index e12f0cc4..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.ttf +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.woff b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.woff deleted file mode 100644 index 201581f2..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.woff +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.woff2 b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.woff2 deleted file mode 100644 index 5efd1b93..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/material-design-icons/Material-Design-Icons.woff2 +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Bold.ttf b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Bold.ttf deleted file mode 100644 index 68822caf..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Bold.ttf +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Bold.woff b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Bold.woff deleted file mode 100644 index 1f75afdc..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Bold.woff +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Bold.woff2 b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Bold.woff2 deleted file mode 100644 index 350d1c3a..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Bold.woff2 +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Light.ttf b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Light.ttf deleted file mode 100644 index aa453407..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Light.ttf +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Light.woff b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Light.woff deleted file mode 100644 index 3480c6c8..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Light.woff +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Light.woff2 b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Light.woff2 deleted file mode 100644 index 9a4d98c4..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Light.woff2 +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Medium.ttf b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Medium.ttf deleted file mode 100644 index a3c1a1f1..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Medium.ttf +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Medium.woff b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Medium.woff deleted file mode 100644 index 1186773f..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Medium.woff +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Medium.woff2 b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Medium.woff2 deleted file mode 100644 index d10a5926..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Medium.woff2 +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Regular.ttf b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Regular.ttf deleted file mode 100644 index 0e58508a..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Regular.ttf +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Regular.woff b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Regular.woff deleted file mode 100644 index f823258a..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Regular.woff +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Regular.woff2 b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Regular.woff2 deleted file mode 100644 index b7082ef3..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Regular.woff2 +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Thin.ttf b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Thin.ttf deleted file mode 100644 index 8779333b..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Thin.ttf +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Thin.woff b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Thin.woff deleted file mode 100644 index 2a98c1e4..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Thin.woff +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Thin.woff2 b/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Thin.woff2 deleted file mode 100644 index a38025a1..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/font/roboto/Roboto-Thin.woff2 +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/img/bg-select.png b/src/Wallabag/CoreBundle/Resources/public/themes/material/img/bg-select.png deleted file mode 100644 index 95120441..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/img/bg-select.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/img/logo-w.png b/src/Wallabag/CoreBundle/Resources/public/themes/material/img/logo-w.png deleted file mode 100755 index 65dc607b..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/img/logo-w.png +++ /dev/null | |||
Binary files differ | |||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/img/logo-wallabag.svg b/src/Wallabag/CoreBundle/Resources/public/themes/material/img/logo-wallabag.svg deleted file mode 100644 index 40193e1c..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/img/logo-wallabag.svg +++ /dev/null | |||
@@ -1,300 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In --> | ||
3 | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [ | ||
4 | <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/"> | ||
5 | ]> | ||
6 | <svg version="1.1" | ||
7 | xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" | ||
8 | x="0px" y="0px" width="800px" height="800px" viewBox="0 0 800 800" overflow="visible" enable-background="new 0 0 800 800" | ||
9 | xml:space="preserve"> | ||
10 | <defs> | ||
11 | </defs> | ||
12 | <image overflow="visible" width="800" height="800" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAyAAAAMgCAYAAADbcAZoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJ | ||
13 | bWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdp | ||
14 | bj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6 | ||
15 | eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEz | ||
16 | NDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJo | ||
17 | dHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlw | ||
18 | dGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAv | ||
19 | IiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RS | ||
20 | ZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpD | ||
21 | cmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNSBNYWNpbnRvc2giIHhtcE1NOkluc3RhbmNl | ||
22 | SUQ9InhtcC5paWQ6MkMyNzEzMDQ4QTgzMTFFM0JGNkJCRDhDMjI5OTRBNkIiIHhtcE1NOkRvY3Vt | ||
23 | ZW50SUQ9InhtcC5kaWQ6MkMyNzEzMDU4QTgzMTFFM0JGNkJCRDhDMjI5OTRBNkIiPiA8eG1wTU06 | ||
24 | RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDoyQzI3MTMwMjhBODMxMUUzQkY2 | ||
25 | QkJEOEMyMjk5NEE2QiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDoyQzI3MTMwMzhBODMxMUUz | ||
26 | QkY2QkJEOEMyMjk5NEE2QiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1w | ||
27 | bWV0YT4gPD94cGFja2V0IGVuZD0iciI/PtTNJDcAADxbSURBVHja7N37ddPK2gfgybf2/9ungm0q | ||
28 | IFSAqYBQAaYCQgWECgIVJFRAqABTAaYCvCvY2RXk85yMDibkYsu6zEjPs5ZWuCSxNZKl96eZkQ6u | ||
29 | rq4CAABAF/5PEwAAAAIIAAAggAAAAAggAACAAAIAACCAAAAAAggAACCAAAAACCAAAIAAAgAAIIAA | ||
30 | AAACCAAAIIAAAAAIIAAAgAACAAAggAAAAAIIAAAggAAAAAggAACAAAIAACCAAAAAAggAACCAAAAA | ||
31 | CCAAAIAAAgAAIIAAAAACCAAAIIAAAAAIIAAAgAACAAAggAAAAAIIAACAAAIAAAggAACAAAIAACCA | ||
32 | AAAAAggAAIAAAgAACCAAAIAAAgAAIIAAAAACCAAAgAACAAAIIAAAgAACAAAggAAAAAIIAACAAAIA | ||
33 | AAggAACAAAIAACCAAAAAAggAAIAAAgAACCAAAIAAAgAAIIAAAAACCAAAgAACAAAIIAAAAAIIAAAg | ||
34 | gAAAAAIIAACAAAIAAAggAAAAAggAACCAAAAAAggAAIAAAgAACCAAAAACCAAAIIAAAAACCAAAgAAC | ||
35 | AAAIIAAAAAIIAAAggAAAAAIIAACAAAIAAAggAAAAAggAACCAAAAAAggAAIAAAgAACCAAAAACCAAA | ||
36 | IIAAAAACiCYAAAAEEAAAYHD+0ATAWB0cHMQvk/VynP5pkRbY13S9zNfLn+vl63q5uO2brq6utBQw | ||
37 | vvOvgx8w8gDyab0cbfxzDCCv1stKC1FTDLRvU7itvLgthDgHAwIIwPgCyJf1Mrvlv5cpjNx59Ro2 | ||
38 | HK6Xl+G612Nyy//HQPtIAAEQQAAB5K4AsukyhZDPwggbpuG69+x1+vNDHoUbPWvOwcAYmYQOjN3l | ||
39 | Ft8Tr2jPw/VwrX/Wy1m4vuLN+FRzhr6tlx/r5XTL8BF2+D4AAQRgwL7XKEDnqQD9lv7M8G0G0FMB | ||
40 | FEAAAahrscfPxiI09obEK+En4fax/5RrmsJG1et1pEkA9mcOCDDeA+D1HJCoqQNhHM71Yb28D9sN | ||
41 | 7SJP83A9oXzW8O99djPwOgcDY6QHBKC5ieWxByTefjX2iBxr1qJUQ+vitjtrIXwAIIAA/M/XForZ | ||
42 | 01TMKmTzDx4nG8Fj2uJr6RUDCIZgAWM+AP4cgjVNBWhbYg/Lm+DhhrmZp6DY1dydg5v/4BwMjJEe | ||
43 | EIDrYNBmOIiTl+MdswzLysMs/OzxmHS4jwEggAD8T9sPGKyGZcUHH041dy8mKXT0sQ0EEAABBOAX | ||
44 | nzt6nVm47g1xS9duxXaPvR7znl7/q00AIIAAbFqE7iYJxyvx8aF2p5q9Eyfhutejz+e0LG0GAAEE | ||
45 | 4LYQ0qU4J+Rb8ADDNoNeHHL1doT7FoAAAlCAzz28Znya+o/0lWbDR+z1mGfwXmLvh1vwAgggAL9Z | ||
46 | 9Fgsf8ukWB5S+Dgc+X4FIIAAZG4V+r1b0ZkQsrfDFOZy6lEyAR1AAAG406Ln1z9LC7urJvdP7VMA | ||
47 | AghAKb5n8B7mQkit8JHjM1bM/wAQQAAeLBhzIITsHj5ynMi/sHkABBCAUgpGIWQ7ZyHfu4iZ/wEg | ||
48 | gAA8aCWEFCM+zDHnp8ovbCIAAQSgpABShRBPTb+9XY4zfn/mfwAIIABbF465OQ5u0bvpsIBQtrCZ | ||
49 | AAQQgG38m+n7ikOxjmye/046P0tfc2b+B4AAArCVnIfN5DzhuiunhbTBwkcJQAAB2MYy4/dWPWxv | ||
50 | MtJtE3uA5oXsQ+Z/AAggAIMwTSFkjOtdyh3BlnZTAAEEYEhmYXx3xiph3kfF/A8AAQRgcOKdscYy | ||
51 | KX2eQlcp9IAA3OHg6upKKwDjPAAeHNz1X7HQ/VLIasR5Bk9Cfs8uaVLs9fgRypr3crDNNzkHA2Ok | ||
52 | BwSg/OJ86E9KPy0sfOj9ABBAAHZS2m1uZ+vlZKDbIq7bvLD3vPIRAhBAAHZR4i1u34ZhPh+kxIn2 | ||
53 | 332EAAQQgDEY2lCs40JDled/AAggADv5s9D3HYv1k4Fsg9gL9bbQ924OCIAAArBzIV+qWLRPB7AN | ||
54 | jsN4n/YOIIAAUJTSh2JNQ7m9H9HCLggggACMySyU/YDCtzYhgAACQFlKe3ZGZRrKu+3uppVdD0AA | ||
55 | ARijWMgfF/i+S+/9EEAABBCA0XodypqQHt/r3GYDEEAAKFNpt7IdwtwPt+AFEEAARm0eyugFmYZh | ||
56 | 9H78a5cDEEAAdvV1YOtTwm153fkKQAABYCBmaclVHCo2H0hbr+xuAAIIwK4uB7hOOfcwHA+onQUQ | ||
57 | AAEEYGdDnEg8C/n2gry2ywEIIABjdjnQ9cqx0J+HMh+YOKbwCtCog6urK60AjPMAeHBw338P9eD4 | ||
58 | KOQ1TOjbejkc0m61yzc7BwNjpAcE4Harga5XTnNBZgMLHwsfGwABBKCuoQ6lmYd8ngvycmBte+lj | ||
59 | AyCAANT1fcDrNs/gPQzp1rtj2GcABBCAli0GvG45TEaf22cAxskkdGC8B8CDB+cLD/kA+Wq9nPf4 | ||
60 | +j9CPkPBmvKfsOMwLOdgYIz0gADc7WLA69bn/IvDAYaPVTAHBEAAAdjT1wGv26zHEDDEBw8ufFwA | ||
61 | BBCAfV0MfP36CgJHA2zLzz4uANsxBwQY7wHwYKtnxg3tQXmb4pCh//QQPj4NsC13nv8ROQcDY6QH | ||
62 | BOB+Hwa8bpPQfW/EywG240Uw/wNAAAFQXG7l+cADTxcMvwIQQAAacxmGPRdknoJBF47sHwAIIAAP | ||
63 | ezfw9Tvu6HWeD7DtDL8C2JFJ6MB4D4DbTUKvnIVhPr07pAL6UcuFdOxl+WeAbRfbbVX3h52DgTHS | ||
64 | AwKwnSH3gkxSwGrT8QDbbbFP+AAQQAC4Tyw0zwe8fnF+xryl3x1vY/xWKAVAAAHYzZsw7PH+bQwz | ||
65 | i+FjiM/9iGF04SMBIIAAtCmGj6Ff9Y4h5DQ0c2esGGa+rJep/QCAiknowHgPgLtNQt8Ui+rZCJoo | ||
66 | 3uHp+3r565YQUT0dfnnj35cpvMwGGDwqsSfsfRO/yDkYEEAABJBtxAL7R+ju+RnkY7FenjX1y5yD | ||
67 | gTEyBAtgd3EIzivNMMrt/kIzAAggAH2Iw5PMAxiXZ8FDBwEEEIAenYRh35qXn2KP11IzAOzPHBBg | ||
68 | vAfA+nNAboq3mT3SooMOH60ETedgQAABEEDqiJPR452xDrWq8CGAANzPECyA/cV5Ac+C4Vi2KQAP | ||
69 | 0gMCjPcA2FwPyKY2niZOt+Jcj3i3q1XbL+QcDIyRHhCAZsUhO280Q7Hinc2edBE+AMZKDwgw3gNg | ||
70 | Oz0glVm4npzuYYVlWKTg2OmdrpyDgTHSAwLQXkH7KH0l7+30LC1uswsggAAUrZrI/CZ4gF1uzjeC | ||
71 | h5AI0CFDsIDxHgDbHYJ1UxyKdRpMUO9T7OH4mMJHFoHQORgQQAAEkLbN1svb9JV2xZBxsV6+pq/Z | ||
72 | 9UI5BwNjZAgWQLcW4XrYTye3eeW/4eM8GAIHIIAAjFy8Ih8nqb8SRFoTh72dpQWATBiCBYz3ANjP | ||
73 | EKy7xPkhx7ZKa+L8j9jzlFVPiHMwMEZ6QAD6Nwsmp7ftcL38SF8BEEAARisGjy/BAwu7MEltLewB | ||
74 | CCAAo2R+Qj8hJLb5iaYA6Ic5IMB4D4D9zgGJRfDcVujVebi+CUBvnIOBMfpDEwB0qhoGZC5C/6oA | ||
75 | 6En1AB3SAwKM9wDYfQ+I8JGn3u6Q5RwMjJE5IADCx9gdBjcCABBAAIQPhBAAAQQA4UMIAUAAARA+ | ||
76 | EEIABBAA4QMhBAABBED4QAgB6J7b8ALjPQC2cxte4WNY4i16n7T1y52DgTHSAwLQrE/Cx6DEbXmm | ||
77 | GQAEEIAcxUJ1phkGZy6EAAggALk5TYUqww0hx5oBYH/mgADjPQA2NwckFqeukI/Dq/Vy3tQvcw4G | ||
78 | BBAAAWRXR+F63gfjESelLwUQAAEEoOsA4lat43SZQshKAAHYnTkgAPXE0PFJ+LDtARBAALoQC9Cp | ||
79 | Zhgtt+cFEEAAOhPveDXTDKMX5/+caAaA3ZgDAoz3AFhvDsg8uPLNr16sl4s6P+gcDAggAALIfUw6 | ||
80 | 5za1J6U7BwNjZAgWwHZi6DgTPrhj33ArZgABBKBRMXwcagbuYFI6gAAC0JjjcD3hGO4zTwsA9zAH | ||
81 | BBjvAXC7OSDxyvY3rcWWdpoP4hwMjJEeEIC7VfM+YJd9xnwQAAEEoJb4vA/zPthV3GdONAPA7QzB | ||
82 | AsZ7ALx/CFac8+FKNvt4tl4W932DczAggAAIIFEcRvMjuOUu+1mF6/kglwIIwE+GYAH87pPwQQOm | ||
83 | wRwigN/oAQHGewC8vQck3nL3tIWXW4Wfd0Zarpd/d/jZv1IxWxW1U1uvKC/Wy8Vt/+EcDAggAOMO | ||
84 | ILGwj7fcrdv7UYWMrxt/jmHjsoW3H9/j4cbXKqTMbNnsxO3/6Lb9wDkYEEAAxh1AvuxYwMdwsUiB | ||
85 | Y9FS0KhjmkJJXJ4KJVmIPSAvBBAAAQQQQCrbDL1apaDxObPAsY3DFESqQGKOS/d+G4rlHAwIIADj | ||
86 | DCDTcPfQq1UqGj+G6x6PoagCyfOgh6Qrvw3Fcg4GBBCAcQaQeNeroxv/XYWOixE0xSSt/9P0Ve9I | ||
87 | e87XyysBBBBAAMYbQDYfOBivTH9IReJqxE0T2+S5MNKa/z2g0DkYEEAAxhVAqgcOhhQ83oey5nV0 | ||
88 | Yb4RRmhGDLePBBBAAAEYXwCJk87/FTy2Mklh5HXwHJImvFsvJ87BgAACMK4AMhE8apmtl5cpkFDf | ||
89 | o/U5eKUZgLH5P00AjJjwUc8iXE+k/s96eRPGPV+m7n73zv4HjJUeEGC8B8DfH0RIffG2vnF4lonr | ||
90 | 9ztP4eO/oc05GBBAAAQQ9hdDyMtg4nol9nRcbAaPinMwIIAACCA0p3q+SPWww7H1jMSwUd3W+dbh | ||
91 | Vs7BgAACIIDQns2HHU4Huo5Vb0d8iOXioW92DgYEEAABhG5MNwLJLJTdO7JKYeNzCh9bcw4GBBAA | ||
92 | AYR+HKbl6cafc3WZAsfX9HVZ9xc5BwMCCIAAQj5mKYj8tRFKuu4puUwBIy7fN/7cCOdgQAABEEAo | ||
93 | I5hsfn28EUymYbf5JYuNP39NX5cbwaPVZ3U4BwMCCIAAAp1xDgbGyJPQAQAAAQQAABBAAAAABBAA | ||
94 | AEAAAQAAEEAAAAABBAAAEEAAAAAEEAAAQAABAAAQQAAAAAEEAAAQQAAAAAQQAABAAAEAABBAAAAA | ||
95 | AQQAABBAAAAABBAAAEAAAQAAEEAAAAABBAAAEEAAAAAEEAAAQAABAADYyR+aAKC2yXo5XC+z9Pen | ||
96 | G/+3XC//rpdF+vPlANb3MC3TW9b17411LX2bztJ6/pm+Vr6mr0PapgCdO7i6utIKwDgPgAcHdX90 | ||
97 | vl6er5ejHX7mYr18SMVrSaZpfV+mPz9kldbzvLACPYaO1zW26cf0tRbnYEAAARBAHipST8OvV8V3 | ||
98 | FQPIiwKK8xg23qbwUcdlCiInma9n7PE42zF43BR7Q16FGr0/zsGAAAIggNzlOIWPJsTi/FnId7jS | ||
99 | cQofkwZ+V+3ivAMxSH5paD1DWs9zAQRAAAHYN4DEK+Tzhl8+xxDSRG9AKevadPioFUKcgwEBBEAA | ||
100 | uanJno/bCvMn4XreRA6+hf2Gl5USQmLo+NFC+Ng5hDgHAwIIgACy6TAV5W1apMK8b6cpbLVpmQJX | ||
101 | 32LPx6zF3791sHQOBsbIc0AA7i/K2zZruRje9j0cd/A6MdDNM1jXtts79qy89fEBEEAAdi2WuwoG | ||
102 | r3te1y5f//lI1nUe2hviBVA0Q7CA8R4A7x+CdRK6vYp90GNTdH0iGMu6PjgXxDkYGCM9IAC3e9rx | ||
103 | 6816Ws/pSF4zOhzJegIIIABka0wBpOshUY/tXgACCAAMNfAACCAAAAACCAAAIIAAAAACCAAAgAAC | ||
104 | AAAIIAAAAAIIAAAggAAAAAIIAACAAAIAAAggAAAAAggAACCAAAAAAggAAIAAAgAACCAAAAACCAAA | ||
105 | IIAAAAACCAAAgAACAAAIIAAAAAIIAAAggAAAAAggAACAAAIAAAggAAAAAggAACCAAAAACCAAAIAA | ||
106 | AgAACCAAAAACCAAAIIAAAAAIIAAAgAACAAAIIAAAAAIIAAAggAAAAAggAACAAAIAAAggAAAAAggA | ||
107 | ACCAAAAACCAAAIAAAgAACCAAAAACCAAAIIAAAAAIIAAAgAACAAAIIAAAAAIIAAAggAAAAAggAJCT | ||
108 | pSYAEEAAoCv/agIAAQQgVzNN0LqpJgAQQAAQBAQQAAEEYPRWHb/enz2t50wQAEAAAejf3x2/3uGI | ||
109 | 2ravsPV04CEWQAABYGvTkRTlfYatrttYAAEQQACyLR5jcTwZSfDpI4BMgqFfAAIIgADyi1kP4aOP | ||
110 | oryPMDDrYT09BwRAAAHY2mUPr9n1cKhZj+17NPC27WsfAhBAAArVx9Xrrovy5z2279OBt+3KRwhA | ||
111 | AAHIvYichu56JSY9FOU3A8F0gK8lgAAIIABFFZFvO3qd4wzad97R67zuYd2++vgACCAAu+pjGNYs | ||
112 | tN8LMumpKL8tGExbfo2j0M9cl5WPD4AAArCr7z297llo95a8bf/+XYLQWcG/XwABEEAAGtXXbVSn | ||
113 | 6+VLSyEhFuRHGbXxrKWQMGmxDbex8PEBEEAASgkg0WEqoKcNFuSx0J9n2M7z0GyvTNV2hyPcbwAE | ||
114 | EIDCLXoOId/Wy8mexfk8/Z55xu3cxHucpiDzrcfw0fc+A5C9g6urK60AjPMAeHCwzbfF4v9tJm/5 | ||
115 | IlzfXWn5QJF7mIrx+JyPo5DHfI9dXN5Y1/t6FGZpfZ+GfIaWvUjv/0HOwYAAAiCA3FbMf8u8WF+m | ||
116 | kHE48E22Ssth5qHqP2HLp6A7BwMCCIAAcpt/Qnm9CPRjsV6ebfvNzsHAGJkDAvCwC03Alj5rAoD7 | ||
117 | 6QEBxnsA3L4HZBau76oED9l6+FXkHAyMkR4QgIctggfL8bCLXcIHgAACwH0+aALsIwD7MwQLGO8B | ||
118 | cPshWFGchP4jmIzO7Vbr5dGuP+QcDIyRHhCA7cShNa5wc5d3mgBgO3pAgPEeAHfrAYn0gnCbVajR | ||
119 | +xE5BwNjpAcEYHuxF8SVbm56pQkAtqcHBBjvAXD3HpBKfDL6oRYkXN/56kXdH3YOBgQQAAFkG4cp | ||
120 | hDBusUfsUdjj1rvOwcAYGYIFsLtlMBTrMnjmxSttALA7PSDAeA+A9XtAKvHp6LORNt+T9TJdL59G | ||
121 | uv7v18ubfX+JczAwRnpAAOqLY/+XI1zvV2m9L5oowgu0GOl6AzRCDwgw3gPg/j0gUZwPEntCxnJr | ||
122 | 3hg+zm/829l6mY9k/WPwehYaGnrlHAwIIIy9kAKEkF3Dx5hCSKPhA/qi9qNvhmABNFOYPgnDHo51 | ||
123 | X/jY5v+FDwAEEIAGrVKBejGw9YoF94stw0UMIUOcG3GeAqbwASCAAGRZrA+lCF/WCFXvw3B6Ci5T | ||
124 | qPKkcwABBCBrsQiPV8wXA1iHOsPK4no/CmX3Bi3S+p/bnQEEEKBshyNZz6r3IF49XxVYeO/bi1P1 | ||
125 | Br0IZfWGrNJ7flbYdvOZBAQQgDschfHcsjY6D9e9AbkHkVV6j89Cs5PpL9L6v8s8iFTrX3rPza6m | ||
126 | 6TMJ0Bm34R3KhnQbXsoKIE/DeB/kNl8vL0M+T1BfrJePoZuhRpO0/q9T4ZuDi7T+FyPdH+OT7D+E | ||
127 | socLsiO1HwIIAghjE4vQf8L1lfYxFz3TjTDW9RXo5UbRvepp/Q9TEDvqIYzE9f6cvo75zlYxDMbn | ||
128 | tziBCCAggCCAMHjfUtHZ9HCfks1SUf44fW1qXP5lauOv6esiw6J7mta/WvdZw2ErLt831p+fD8+s | ||
129 | 5iohgIAAggDCoJ2ul+NwffXd8xXuNtkIIodhu7kzlxuhbjHidV/arx4MH7FN41DI95pEAAEBBAGE | ||
130 | oZulAqgqGvWEQPfhI4T6t1pGAAEBRAARQCjOPxtFUHXL1oVmgdbE+TZnG5+7Vbi+6xcCCHTKbXiB | ||
131 | vmyGjVgQxauyJ5oFWhGHPX4Kvw5lE/gBAQQYlc+3/NvbFESmmgcaEYdcxZs+HG/5GQRonSFYQ9mQ | ||
132 | hmBRnup2vHeJD6470UxQ+/N1nEL9beKwx/9opnFS+9E3PSBAX2IBdN/D32Lh9CNcP6sA2F78zHy7 | ||
133 | J3yEMN4HLwICCDByDw0BmYbrSbNxWNZMc8GDweNH+sxM9/zsAbTGEKyhbEhDsCjTQ8Owblqslw/B | ||
134 | 1Vu4GTzehu3nThl+NXJqP/qmBwToUyyEznf4/lm4vpNPNTRrogkZcXg/Dtv3eGwS4IFe6QEZyobU | ||
135 | A0K5Yqj4smeAib0iK03JCMS7Wr0O18/0qBvAPXxw5NR+CCAIIHB9FXe65+9Yhp/Dsy41KQMSg8Z8 | ||
136 | vbxMAWTfz8kTTSqAQJ8MwQJy8LGB3xELszgUJc4p+RTcPYthhI5PaZ8+bSB8hBTSAXqlB2QoG1IP | ||
137 | COUXW/+09Ltjj8jnoGeEMj4HcWjV8/S1aXH/f+RzgNoPAQQBBK7F3ot5y6+x2AgjK01OBmKvxiw0 | ||
138 | M7zqIefr5ZUmR+2HAIIAAtfiHX1OO3y91UYgiV9dFaYLVS/H0xQ8ph2+9iPBGwEEAQQBBH6KxdiX | ||
139 | Hl9/mYLIV4GEBsWAcbgROA57eh/nQe8HAggCCAII/KLNeSB1rDYCyTK4bSnbqYZUPQ7d93Dc51na | ||
140 | n0EAQQBBAIHN82Lm72+Rgsh3oYQUNg5T2KiCR6777TObCwEEAQQBBH73JeMi7r7ibnUjlBi+NSyT | ||
141 | G2FjWth+qvcDAYSs/KEJAPZyWyF6uRFG/g0/55ToMcnbYQobcZv+FX7O35gUvE4L4QPIjR6QoWxI | ||
142 | PSAMw8l6eTvwdVylpQony41wouekXZONQBG//pm+TkM+czWapveD36j96JseEIBuVcXu7I7/r4JI | ||
143 | DCl/p39b3Agv/G6zp6Jq28fp34YcMO5zIXwAOdIDMpQNqQeEYYiF4xfNsJXNMLIZVjZDzF1/LyGg | ||
144 | VareinAjVIQRB4ttee4Ht1L70Tc9IABl2rf43mZOytc93+PTB/6/9PkVOXsvfAC50gMylA2pB4Rh | ||
145 | iAXpN80Ae4nh8lEwp4g7qP3o2/9pAiAj7hIF+3sjfAA50wMylA2pB4ThcFCC+hbBQwd56CCr9kMA | ||
146 | QQABAQQa8iToSUQAIXOGYAG5UTxBPe98fgABBGB3xq5DveB+ohkAAQQA6MIrTQAIIABAFwy9AgQQ | ||
147 | AKATi2DoFSCAAAAdiPOlDL0CBBAAoBMxfKw0AyCAAABte79eLjQDIIAAAG1brJc3mgEQQACAtsW7 | ||
148 | Xb3QDIAAAgC0rZp07mGdgAACALQu9nx43gcggAAArYs9HwvNAAggAM2bagL4RZxwfq4ZgKE4uLq6 | ||
149 | 0gpD2JAHBxqBoXBQgp9i8PCwQZo9yKr96JkeEAAQPgAEEAAQPgAEEIA2zTQBCB+AAAIACB8AAggw | ||
150 | OFNNgPABIIAACCDQrvfCBzAWf2gCICN/aQJGKAaPc80AjIUeECAnU03AiFwKH8AYeRDhUDakBxEy | ||
151 | DP+sl4lmYCTh49l6WWoKuqb2QwBBAIGN86ImYASWKXxcagoEEMbIECwgFzNNwAicr5cnwgcggAD0 | ||
152 | 71ATMGDVfA93ugJGz12wgFy4AxZDtUzBw3wPgKAHBMiHHhCG6DyYbA7wC5PQh7IhTUKnfA5GDEk1 | ||
153 | 5OpCU5DdwVbtR88MwQJyMNMEDMhivbwIJpoD3MoQLCAHhl8xBFWvh1vsAtxDDwiQg6eagMJdpPAh | ||
154 | eAA8wByQoWxIc0AomyegU6pVCh4LTUEp1H70zRAsoG+HwgcFij0d79bLI+EDYDeGYAF9Oyq4AI23 | ||
155 | Vp2mhfE4Xy9vguFWALXoAQH69rzA9xyDR7zy/Wzj68KmHLy43Z8Ecz0ABBCgWNNQ5h2wPtwoQBcp | ||
156 | hLj16nCdBw8UBBBAgOLNCn3fqzv+Pd4J6YkidZDhQ68HgAACDMDzQt/35QPh5EkqWhlO+ACgIW7D | ||
157 | O5QN6Ta8lGe6Xn6U+pHb8vvO1svcphY+ICdqP/qmBwToy9EI1vFV0BNSqlW4vtMVAAIIMBAvC33f | ||
158 | ixohZGFzFxkezfkAEECAgTgMZd79KtQsSg3jKcu50AgggADD8rrg9/69xs+sgqFYJXmnCQAEEGA4 | ||
159 | JqHsidl1b7H72aYvwnm4+zbLAAggQIGOC3//dYtT8wnKICgCtMxteIeyId2Gl3LEW+9OS/641fy5 | ||
160 | aSj3tsNjEUPifzQDQ6f2o296QIAuzQsPH4s9fnZl89cOBV31Hl1oboD2/aEJgA69Lfz9Lwt6r6tU | ||
161 | UP+7Xv4M13cdm2YcAFdpiW38d/q63AgfJx3sP199RAEEEGA45qHs3o+SCtT4AL339/x/DCOTja9V | ||
162 | QAkthZQqXFQh7t8ULJYbXx/SRQBZ+ZgCtM8ckKFsSHNAyF/pcz+i/4T9hgN1ccB9KHzsahJ2f2bL | ||
163 | MrQzbKrt9nMgZRTUfvRNDwjQhZMBhI+2iuomrRoOHyGt8yKDdZv6GAEMg0noQNviFfTXA1iPRQHv | ||
164 | 8cOA96NDHyUAAQRgG2cphJTuYwHvcTng/ei5jxKAAALwkPl6ORrAeqwaKO67uIK/GPC+NOvgNfSy | ||
165 | AAggQMFiMXc6kHVp4vkQXfQCTQe6Lx11tG5HPrYAAghQplhsD2XoVdTE8KuZAFJbV3OIXg5onwUQ | ||
166 | QIBR+RKGM5xlFZqZW/G4g/c6xHkSs47CWxXgjn18AdrlOSBD2ZCeA0I+Ys/HfEDr09RzNbo42Maw | ||
167 | 9GhAbR97I76F7nt2noVhz6dh5NR+9E0PCCB83C0+A+O8gd/TVZvEQn1IV/Dfhn6GlX0KJqQDtEYP | ||
168 | yFA2pB4QhI82xPDxqoHfE4ekzToMTU/CdW9IyWLw+NFz+HwU8n/4JOxM7Uff9IAA+4rDZD4NMHxE | ||
169 | 7xr4HbMOw8fm9ih9MvVZBvt1HP6lJwSgYXpAhrIh9YDQX5E2pAnnm85DM70ffRWxceJ8nMtQ4hX8 | ||
170 | aei392PTZWrHpY87Q6H2o296QIC6DsOwrxA30ftx3GP7HKZwWGJPSE7P46hC9txHHkAAAfotEGNR | ||
171 | Nh3o+sW7Xq0aKFzfZhASS+yhmmT4fuKQsBMffQABBOhefLr5EOYY3CUOuWmq9yOHNqpCyNyuu7e3 | ||
172 | odxeJQABBCjONFwPuRr6g9rehf3nTcQC9XVG61RdwS8lOC4yfm+zcD0/ZeaQACCAAO05DuO4I1As | ||
173 | fJt46OBRpoX+USqej0ayHdoMdLEn5MShAUAAAZo1TYXWaRj+sJPY6/GqwXbLuXj+FPLvDXkT8n8a | ||
174 | +dvgVr0AAgjQmKrXYzaS9Y1Dr1Yj2r5Vb0jOQ+pehGaeRN+mao7NcQBgK54DMpQN6TkgNFtQnYVx | ||
175 | XdW9SMVuU2apKC3FIlz3OOT6rIu4P84LacdXIwuyFEjtR9/0gACVaqLy2IaULENzQ682C9H3BbXB | ||
176 | LG33XIfaxe1zXlA76g0BuIcekKFsSD0g7OckXN+1aWy3F237KdenBRajsU3eZFrwH6c2LcEi6A0h | ||
177 | U2o/BBAEEPo0D9cTaacjXf8nof1hR/NQ5iT+RchzWFZsz7OCwlycW/Q+gAACAogAguAx6uARdTms | ||
178 | J7ZzvOtUiUPb3odmno3SpGridymhLtcwhwACvTAHBMYXPOKdj86Ej06HGK3CdW/LuwLb6jjtM/OM | ||
179 | 3tMydNN71ZRZuJ4bcuIQBKAHZDgbUg8Id4tXieMtV8fe49FX+LitGC01AC5SiFpktG9/CmXdKnqV | ||
180 | 9sGFjyJ9UfshgCCA0JZY4M7DOCeX5xo+Ngvns5D/E8nvEtswDinKZVhWiZP9cxzahgACAggCCLXM | ||
181 | 1svLUMZzE7rS9t2u6pqHcp8yn9sE63koZ3L6ZhvGUHzhI4oAggCCAEJpJuFnb8dUc/yies5HrvMF | ||
182 | pqlwnhXcvrE3ZJHBeyltcnplEdyyFwEEAQQBhELEITzPg96Ou1ykwq6EYS4n4XqeTslt/SaDIrrE | ||
183 | eSEh7aMfgonqCCAIIAggZChe5X2ZwsdUc9xZzOX6ML2Htu1ZKPdJ9DkV0SXOC4ly6lFCAAEBBAFE | ||
184 | 6BA6thALt9KHs5RaPFdWIY87Pc1DuXNsTFJHAEEAQQChc7NwPbxK6NhOqb0e923/0p/XksOwrJJ7 | ||
185 | lUxSRwBBAEEAoVXV8zqepq9unbu96m5MlwPcJ+K8kJJ7Q3IYlhXbMfaEzAttw0UwSR0BBAGEDANI | ||
186 | PMEebpysKEMVOGah3HH/fTpP4WPohVncP0rvDVmF/odlzUPZtz02SR0BBAGErALIl/Dzri/ViWqI | ||
187 | V4RLNtkIGk9DubddFTz6239K7w2J+h6WVfpE/xyCHAIICCD8N4DctSGXafk7nbCWQkmnhU4VNg6D | ||
188 | Ho59Xabg8SGMeyjKLJTfG9L3QwyHEObOQ15Po0cAAQFkhAFkswdkm5P/ZjBZCiaNFIUxYPyVvs40 | ||
189 | SWNWKXSc20cHVUCH0P8tZ49SmCt1vtXQbryAAIIAQmEBJBa98eFb0z1/1SKd1L6nwm8lnPxS9B2m | ||
190 | No7L040/07w4VOdjcAegh4LvaSi/d63PW86W+uDCm8dtk9QRQBBA6DyAVCfSNu/0UgWReJL7O/zs | ||
191 | SalOgEMJGGGjGHl64++0a5lCx7nQu5OTUPZT1EPof27DcWrDkntD+hzWhgACAshIA0hlmk6kfdzK | ||
192 | dTOUVD0pNwPMpraKjc0wEW4JEX+Fnz0Xh8Etb/suPGMvx9jnduzrMF2AKD0sX6QgctlTG5Y8Qb06 | ||
193 | puoNQQBBAKHzALJZhMcQUj3MrtTidHVHoSA0lCuG0c+p2FxqjkaVfiU/hP4fwHcSyu5R0huCAIIA | ||
194 | Qm8B5LYw4iF39CUWk1/T15XmaNU0XPeGHBW+Huehvzs96Q1BAAEBhD0DyG0n11n4+TwKgYSmLVMB | ||
195 | VIUOuneUgsi04HVYhX7nhpyE8ntD3CkLAQQBhCwCiEBCm4FjEUwiz8VQbtn7LvT3FPAh9Ib0ObcG | ||
196 | AQQEEAFkK9MURB4Hz7Xgd9XNBqqw4VbN+RvCJPW4n70I/Q0pigHodSj3As0qtZ95VwKIRkAAIcsA | ||
197 | clcBcyiUjFIVMr6Hnw+upEzzFERKvt1snxPUp+G6N6Tk418ckmWCugACAghFBJC7Qsl0I5hUf6ZM | ||
198 | MVisbgSNlWYZnCEMy3qfCum+lP4UdUOyBBAQQCg2gGwTTP7a+LO5JXlYhJ/PaalChl6N8ZmlInpa | ||
199 | cGB+1mMRPUntd1Rw+73y2RdAQABhKAHkoaKn+vpn+P3p4zRTWGw+tb76u7kaDK2IvkwhpM8iOvYk | ||
200 | nRbcfn0OaUMAQQBBAMlC1VMyDT+vzD7dKJbGPMRrFX4OiYoF17/h16fPCxjUdRLKvd1sDreajcel | ||
201 | L6HcXl7zQgQQEEAYdQDZ1s0wcnOI1+NbioEchoHdFhKqMHHb92yGDmjTPFz3hpSqz1v1RtP18imU | ||
202 | e5EkBrhXPgYCCAggCCDdFg/Thn7XQnNSqFkqoku9kt93EV36kDYhRAABAQQBBOhc6cOJYhEdhxT1 | ||
203 | ORwxhpB5oe3nDlkCCAggCCCAELKjvu+QFZ2EcufVLFL7IYBA4/5PEwCQaQFfeoCKAaTU4UyzUPZ8 | ||
204 | IEAAAUAIGWUIOS84hMyFEEAAAaCPEFLypOQYQj71/B5KDyFzHwNAAAGgSxeFh5BZ6P9KfskhJD5k | ||
205 | cepjAAggAHRdQL8r+P3PQ7/PCCk5hEyCoVhAg9wFaygb0l2wgG6UfHvZ6EW47tHp0yyU+ayVOB9o | ||
206 | 4SNQPrUffdMDAsAu4hX888IDVN+F/yKUObn/pd0fEEAA6CuELAt97zF8fMrgfZR4h7GpXR8QQADo | ||
207 | y7OCQ8hsvRwJIb/x5HNAAAEgW5eFh5DTTN5HbL9HmbRjfA9xjsz5LWEk/v2D3R5ogknoQ9mQJqED | ||
208 | /YhDmuLD/g4LfO85zWfJpR03J+lPNt7Pwq4+HGo/BBAEEEAI6cdFKrhz0vddxlbhukcGAQQEEAQQ | ||
209 | QAhp4/CZ4Xs6WS9ve3x9t9sVQKBV5oAA0ITS54TkFkBehWYnha92+N7nNgEggAAghOzmTej/gYP7 | ||
210 | OE9tuWrwd77YMtQc2pUBAQQAIWQ3L1PBfd9woveZt2VswycNBalpCjNPguFVgAACgBDSuMO0LNJ7 | ||
211 | iYX3u/T3WNDHIU5vCmnLFw2916MUQp6l33dXb8hnuzDQJpPQh7IhTUIH8tP3xPQYOE4G1J6xHc/2 | ||
212 | aM8qjG1un3m4nvMxS+Hk48DajFuo/RBAEECAoevr1rI3C+6hhLrjUO8uWUNsDwQQCmQIFgBta/qB | ||
213 | f5dhu8nUswG2ZVzvk2AuByCAAMCDIeRVQ78r9gK82TKETAbannF+zbPUpiu7FyCAAMDvzlPR3MTz | ||
214 | LR5v+bsmI2jTRymIPDTp/6NdEMiBOSBD2ZDmgADlmK6XT2G/yemLFEAemuh+MMK2jXe7enojfH0M | ||
215 | zQ6Do2BqPwQQBBBgrE7D9YTq2oe+jT+frJfXN4ru+JyPN5oZBBAEEAQQgEq8Wn8W6g2Vunngi79j | ||
216 | Fq57Q+KzPpaaFwQQBBAEEIBwS3CIvSHzPQMIIIBQAJPQAehbnEgeJ1HHOR2LLX9mpdkABBAA2Mci | ||
217 | hZC4XDzwveZ2ABTKEKyhbEhDsIDhmYbrOR1P05+jr+H6bk4rzQP1qP0QQBBAAAABhNEwBAsAABBA | ||
218 | AAAAAQQAAEAAAQAABBAAAAABBAAAEEAAAAABBAAAQAABAAAEEAAAAAEEAAAQQAAAAAEEAABAAAEA | ||
219 | AAQQAAAAAQQAABBAAAAAAQQAAEAAAQAABBAAAAABBAAAEEAAAAABBAAAQAABAAAEEAAAAAEEAAAQ | ||
220 | QAAAAAEEAABAAAEAAAQQAAAAAQQAABBAAAAABBAAAEAAAQAABBAAAAABBAAAEEAAAAAEEAAAQAAB | ||
221 | AAAEEAAAAAEEAAAQQAAAAAQQAABAAAEAAAQQAAAAAQQAABBAAAAABBAAAEAAAQAABBAAAAABBAAA | ||
222 | EEAAAAAEEAAAQAABAAAEEAAAAAEEAAAQQAAAAAQQAABAAAEAABBAAAAAAQQAABBAAAAABBAAAEAA | ||
223 | AQAAEEAAAAABBAAAEEAAAAAEEAAAQAABAAAQQAAAAAEEAAAQQAAAAAQQAABAAAEAABBAAAAAAQQA | ||
224 | ABBAAAAABBAAAEAAAQAAEEAAAAABBAAAEEAAAAAEEAAAQAABAAAQQAAAAAEEAABAAAEAAAQQAABA | ||
225 | AAEAABBAAAAAAQQAAEAAAQAABBAAAGDA/tAEAP81WS+HG39fZPb+Zht/Xq6XS5ssO9O0hLR9lpoE | ||
226 | 4Hd6QICxi4X9t/Xyz3r5srFcrZezjYKyDzEQfUrvZfO9Ve/10ObLwsl6+ZGWahtV+9RJCrcAJAdX | ||
227 | V1daYQgb8uBAI8Du5ilk3CdeyX4Wur+avc17i16tl3ObsheTFBBnD3zfMu1Deq3IgtoPAQQBBPpx | ||
228 | lIrHbazWy5MOC8hpuL6Cvs2V88v03lY2aedO18vxlt97nsIiCCCMniFYwFi93TEQHHX83rYdthO/ | ||
229 | 77XN2bnpDuEjmod+h/MBCCAAPdt1/kSXxeO05XWh+23U9T4EIIAAAAAIIAAAgAACAAAIIAAAAAII | ||
230 | AAAggAAAAAggAACAAAIAAAggAAAAAggAAFCQPzQBmZmsl/l6ebxepunfvq6Xi/WybPi1Zml52uLr | ||
231 | dLk+bZuldYjLn+vl8Mb/f01fV2ndlnZnbpim/abad57e+P+4z/y7Xi439qHLEbTLYfp8TW60SVz3 | ||
232 | 7+nPi/TZWg10v5imNgjpeDnZ+P+4zn9vtMNQ94vpxnH2ZhvcdqxdjOgzwtBcXV1ZBrAMxPF6+Sfu | ||
233 | lncsX+45IO9aSP944HWmDbzOvKP1aTsMfrpnHR5aPqXfkeN67rouJx2+ty87vrcvGe9HR+vl7IHP | ||
234 | wn3Lt/Vy2tBnsulAvuu6zG4Um6c12uVH+rnDAYSu0weOxdph+8/I8S6fEXWTpfe6VSMIIJk43eFA | ||
235 | u08xO9/ydf7Z88Q272h92roKt0/BeFd7nmVWRAog7ZrvWVTdtZ6zwgPIZIfjXUntsUsg/dbwfvEt | ||
236 | 7W8lmdX4nG+zbHWcVTdZBBCLALL7ifyko9epW9RNdizezzLaFicNB4/bgshJJusqgLT3ef7R4j5U | ||
237 | 9axNCjtuXaWr1N9CO0Vnzr2p1ZX+Ly3vF18K6BGZ7Nmr3MjxSt1k6XsxCZ0cPN/x+1/uUTC0+f2b | ||
238 | V/gmO35/DsVBLIzetlzITNJr5D78jHpOQ3NDGB/6zPwo8Op/W0OG5unzm2vxfZLeX9vbq+pVyLU3 | ||
239 | pNpvuzjmvw159rDDfwkg5HJlbBfTzNdn1/fX9wniKHR/5XAmhAzKJPwch97la+ZcbPZx3MmtByBu | ||
240 | o7NUDHf9mrntF/H9dN1zV11Ymvp4IIAAYz8pbp4chZBhhI8+C9+zUF5PyFC3RU4BMacQchr6G2o7 | ||
241 | DXkMWQQBBPivWeh//slhyGsODGUWvAqsX7dJDnNCzjLYL3J4DzEEHff8HhxnEUCALExT0ZaDo5DH | ||
242 | PBjKLPA2i25+Fpxve3z904w+02c9b4dc9kvHWQQQoHe5XTE+tUmKc5xZQRPfy8xm+WX79NEes9D/ | ||
243 | Ff+bIWDeUyj+lNk+4TiLAAL0WpjkdrecaTCZuCRxe73N8H29tml+0fU2yrUnqo99dacHA3b4udUL | ||
244 | ggACdG6SaeEYPbd5iipsc5xzcRTc8WfTLHR7seE40/afhm57g3IN6I6zZOMPTQCjctxA4bhYL5/X | ||
245 | y/KWYuf5HgVP9fyUS5spa7G4mu/5O1br5WK9fL2xveO+8zjs/iydm/vheUHtuUyfp0XDn6dK7BV6 | ||
246 | 1cF6TML+PVCXadvd3C/iPvd0z/3i+S1t3JYmeuLO035xmd73YVr3w422qHucfRWgb57G6EnoGajz | ||
247 | dNw6Tgb2OnXs85Tzbe92FAunuk977nJ4gCeh13O2xz70z5bhZbLH63Q17n4W9ntS9bYP5tv3CeL/ | ||
248 | dHhxY5/3eLJFuJjUPL5W7d2FyZ7H2U9hu16kwz2Os4fqJosnoQNdme9x9TBejXsWfu/1uM0ife+q | ||
249 | xusc2kxZm+wREuO+8yhs1ztxma7Sng90H4rr9SRsd0V+mT5P53tssy7apO5V/8u0fifh4d7Py/R9 | ||
250 | bzLeL/bppYnr9WLLY+dyj+PsLEDPBBAYj7pjf8/D7l32lzWLhKc2U9bqFlerVCztOrzuTY2fmWbe | ||
251 | hotQbwhM3UAWQvs9i4c1270KH8sdf+59jZ/pqvCue5x9n5YujrOemYMAAnRaPO5qGeqPF74I5nMM | ||
252 | Td2A+KLmvnCZ9qMcC8263u3xs29CvSvej1tep9ke67Os+bMfMy2867TFsmaQCDU/Hy70IIAAndin | ||
253 | QNjHsqP3Sb770fkeRWb0dUDtF8PDYo+fj4HsQ42fa3v4UZ2CdhH2u1nAMsN2OKwZcvY9zi4CCCBA | ||
254 | huqceJcNnNiWmn4wYmE1rfFzH/Z83dWA2vCigd9Rp2iftrxedYLpxz1fM8djS1/HWRBAgGyLx119 | ||
255 | buB1/9X0ow6xKyG08c/DZc02bXP4UZ3ffd5AO+SmTtD76GOBAAIMVd0hErAP+1A77ZHT8KOZ/eJ/ | ||
256 | HmsLEEAAaE6dAvZvzdYK7ZqnOj1BeggRQACgweIKAAQQAABAAAEAAAQQAAAAAQQAABBAAAAABBAA | ||
257 | AEAAgU79qQk695cmAFow1QQggEAJ6jxIbabZOm9zsA81H+wvBRBhDAQQ+OlrjZ/J+aFoelp+biPF | ||
258 | 43D0VcA+1fSNhLKhPXH7+YCOkwIIAggM+AQ87ehnhlJ073tSO7abDkqdAvZxA/vg0YDacNbQ53LX | ||
259 | Y0xuvR9NFMw57herHvaJWQABBLININOaJ706V193PSEsOmivOr1ML/d4vXhV77XddPSOwn5XeN9m | ||
260 | vG51ivrHDbzuvKPw2Obxa7pn4XwS8rzq/3eNn9m3J+dlAAEEOjuB7XrQrXu1bNeT5DzTNr6sue51 | ||
261 | i4SzkPcwOborYk/3KLTnA2uPeBzap4d0WjOUfW25LeocX+qGy9h+rwe0T8z3CFOHmX9GQAAha6ua | ||
262 | B95ti+N9rsbHE8MuQ4nqvM7XDtq4bvH4qUbBdBaGNWyGn0Vmnc9qnSBxtEdwyb3grBvOJ+nzWMci | ||
263 | w3aYpbbY9bj/JeR7cWOf4+ykRlt8CiCAwF4BpM4VtG2K40kqZKZ7vL+3W4ads1Dv6uaqgzauW4BM | ||
264 | 0gl/m/WvioO5XXqw6u5H8bNxsuX+dlqzICulPeLn5NuOIX2aPlt1ji+XHQSQuhdR5jsEsuPMw0d1 | ||
265 | LF/V3Ce+7HCemu/4/SCAwB3qXDmapBP5WSqQJzcO6Mfp//ctiKsivLqyf9vr/NjjdRYdtfHFnutf | ||
266 | hYvpjfWfp4LxWzAhcuj26a17mz4nxzcK6Wn6XJ1t/P/Q22OaPjO3tcfNwvQ0fbYOO/7cd/Ua89QO | ||
267 | pzeOH5P099ON/x9qKK229Y+0X8xv2d6zjXONIa4U7+Dq6korDGFDHhyUvgrHoYwhF01brZdHHb3W | ||
268 | POw+5KGX3bmj19n14PcubHcVvwnb9jptFj3POnhfk1QA5V78POsw2P8IzV2Jjr0Vy9DsLayfhG5u | ||
269 | wdtkO7Sli8/wLH1+sw5J69rvWYAe6QEhFxfWu3XnYXgPI6NblyP+rN7lY8MBb9Zg+FiE7p7/8cGu | ||
270 | 8L82X2kGEEAowyp0d8UyJx8G/noMzztN8Iv3GQf7Nx2+1nlwgcNnBAQQHLSzdx66v1L2Prg6x/4X | ||
271 | C95rhv+JRferTI+ny47bQeHd37EdBBCoaRHG1QvSx8k6Fglv7Go0sO8qsH66SEVnLmLwOOnhdd93 | ||
272 | HHpy9koTgABCWQftrrvx+xg20GcBdxFcwWb/z8wLzfCLN5kU3/G40ucE4xfBUKxoEfQIgQBCMVah | ||
273 | 2ytHl+lkfd7ha8bXOsmgWDq3u7GHZXCV97ZjSZ8hZJVBAKgCkBByfZx3nAUBhEJcdFTYbBYMrzo6 | ||
274 | UZxnVLS1vc653zFJgVTG/rwoMIT0UXTG41hXt9zd5r20HUJKKey7OLc4liGAQIMnlzZPYMvw+9XK | ||
275 | eKJoc2jS+5DfFeP4ftoYJlAVYp8zLjYvMn5vu7bbx54/q7HwXbV4HNjVqsf2qCald9kT8S5tg5wK | ||
276 | 0TYDURV8VzXeU1/H2Tct/m7zbihPfBChpfxlwOJ98eMDCq8aXE7C/Q9Si09l/tHg65XwhPD43IEv | ||
277 | Da7v5nMMdmnLo473rX+2fF99PMDx2w7tnctn9aShfShul/nG797lGHCW2fHrZIf9bNflS2jumSFt | ||
278 | arINTjZ+73zH49KQjrM/Ns4ru/7OL+omS+91q0YQQAoxTUXIjz0KmtOw25N65zsUgbctnzouqJsw | ||
279 | S++77glxfsdJd5vi47SnguChbdxXQTvZorD4FvJ7Kvk+n9Xqczq5pS22+Szm2B6bx5NPoZlwdlbA | ||
280 | RY27wljdY/jZHcfvsy3b7DCz4+xZzVD245aLaAKIpbjlYCTF6+AdHByMaXUP0/L4gZPKar18D/s/ | ||
281 | DXiaThjx69MHXu/vjdcreVzu5hOZnzbQxtN7iqb4O+LwhD7ni8Ti8PmNk3p8Xx9D/3MQjtJ72yy+ | ||
282 | 4r4Vh2mdF/BZnaXP6l3h/3JjH3qorWPh9fqWkBF/R3zI5vsCPneTG+1S/f2u4FQdS76G4dyqfJv9 | ||
283 | IqR1XqZ1vm+7Hqf94rbfdZ6OL7nuF7O0/LXFZ+TijuPstx0D1mJd+z0L0GfdKoAIINBD8bVZ5K80 | ||
284 | CzWKtl8KKk3CLUFuLPvFroXcxbr2cxttevWHJhjI0UeQpAyXisXmjPjCg32I24xxMva0xs98t6vQ | ||
285 | N3fBAgAo06zGz7htLwIIAAC1vKzxM27bS+/MAQEo9QBu7heMWbxBxSe1HyXSAwIAUJZZqHeL8AtN | ||
286 | Rw5MQgcA6D5ATNNS3Wp5scXPxTt9xVsOz2u+7mdNTw50wwGUegA3BAtKcxJuf5ZNZRXuvjX5bM/X | ||
287 | jr/3UfyD2o++6QEBAGjfabh+aOJ9pqHerXW38dEmIBd6QABKPYDrAYFSxKFT33p8/VVIvR+R2o++ | ||
288 | mYQOANCuo55f/5VNgAACADAej3t87XdhuwnuIIAAAAxEX08fPw/XE99BAAEAGJHvPYUPQ6/Ikkno | ||
289 | AKUewE1Ch1LE2+7+CHfffrdpb9bL+7v+U+1H3/SAAAC06zKFgrYt1suT+8IH5MBzQAAA2neevp61 | ||
290 | FDw+brwGZM0QLIBSD+CGYEGJZuH6aejx6z5Dslbr5SIFj+UuP6j2QwABQACBcZqmZZb+/le4+0no | ||
291 | MWT8G657O+Kfa99ZS+2HAAIAAIyGSegAAIAAAgAACCAAAAACCAAAIIAAAAAIIAAAgAACAAAIIAAA | ||
292 | AAIIAAAggAAAAAggAACAAAIAAAggAAAAAggAACCAAAAACCAAAIAAAgAACCAAAAACCAAAIIAAAAAI | ||
293 | IAAAgAACAAAIIAAAAAIIAAAggAAAAAggAACAAAIAAAggAAAAAggAACCAAAAACCAAAIAAAgAAIIAA | ||
294 | AAACCAAAIIAAAAAIIAAAgAACAAAggAAAAAIIAAAggAAAAAggAACAAAIAACCAAAAAAggAACCAAAAA | ||
295 | CCAAAIAAAgAAIIAAAAACCAAAIIAAAAAIIAAAgAACAAAggAAAAAIIAAAggAAAAAggAACAAAIAACCA | ||
296 | AAAAAggAAIAAAgAACCAAAIAAAgAAIIAAAAACCAAAgAACAAAIIAAAgAACAAAggAAAAAIIAACAAAIA | ||
297 | AAggAACAAAIAACCAAAAAAggAAIAAAgAACCAAAIAAAgAAIIAAAAACCAAAgAACAAAIIAAAgAACAAAg | ||
298 | gAAAAAIIAACAAAIAAAggAAAAAggAACCAAAAAAggAAEBt/y/AAEmyIDWRykGwAAAAAElFTkSuQmCC"> | ||
299 | </image> | ||
300 | </svg> | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/init.js b/src/Wallabag/CoreBundle/Resources/public/themes/material/js/init.js deleted file mode 100755 index 491a7916..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/init.js +++ /dev/null | |||
@@ -1,79 +0,0 @@ | |||
1 | function init_filters() { | ||
2 | // no display if filters not aviable | ||
3 | if ($("div").is("#filters")) { | ||
4 | $('#button_filters').show(); | ||
5 | $('.button-collapse-right').sideNav({ edge: 'right' }); | ||
6 | $('#clear_form_filters').on('click', function(){ | ||
7 | $('#filters input').val(''); | ||
8 | $('#filters :checked').removeAttr('checked'); | ||
9 | return false; | ||
10 | }); | ||
11 | } | ||
12 | } | ||
13 | |||
14 | function init_export() { | ||
15 | // no display if export not aviable | ||
16 | if ($("div").is("#export")) { | ||
17 | $('#button_export').show(); | ||
18 | $('.button-collapse-right').sideNav({ edge: 'right' }); | ||
19 | } | ||
20 | } | ||
21 | |||
22 | $(document).ready(function(){ | ||
23 | // sideNav | ||
24 | $('.button-collapse').sideNav(); | ||
25 | $('select').material_select(); | ||
26 | $('.collapsible').collapsible({ | ||
27 | accordion : false | ||
28 | }); | ||
29 | $('.datepicker').pickadate({ | ||
30 | selectMonths: true, | ||
31 | selectYears: 15, | ||
32 | formatSubmit: 'dd/mm/yyyy', | ||
33 | hiddenName: true, | ||
34 | format: 'dd/mm/yyyy', | ||
35 | }); | ||
36 | init_filters(); | ||
37 | init_export(); | ||
38 | |||
39 | $('#nav-btn-add-tag').on('click', function(){ | ||
40 | $(".nav-panel-add-tag").toggle(100); | ||
41 | $(".nav-panel-menu").addClass('hidden'); | ||
42 | $("#tag_label").focus(); | ||
43 | return false; | ||
44 | }); | ||
45 | $('#nav-btn-add').on('click', function(){ | ||
46 | $(".nav-panel-buttom").hide(100); | ||
47 | $(".nav-panel-add").show(100); | ||
48 | $(".nav-panels .action").hide(100); | ||
49 | $(".nav-panel-menu").addClass('hidden'); | ||
50 | $(".nav-panels").css('background', 'white'); | ||
51 | $("#entry_url").focus(); | ||
52 | return false; | ||
53 | }); | ||
54 | $('#nav-btn-search').on('click', function(){ | ||
55 | $(".nav-panel-buttom").hide(100); | ||
56 | $(".nav-panel-search").show(100); | ||
57 | $(".nav-panels .action").hide(100); | ||
58 | $(".nav-panel-menu").addClass('hidden'); | ||
59 | $(".nav-panels").css('background', 'white'); | ||
60 | $("#searchfield").focus(); | ||
61 | return false; | ||
62 | }); | ||
63 | $('.mdi-navigation-close').on('click', function(){ | ||
64 | $(".nav-panel-add").hide(100); | ||
65 | $(".nav-panel-search").hide(100); | ||
66 | $(".nav-panel-buttom").show(100); | ||
67 | $(".nav-panels .action").show(100); | ||
68 | $(".nav-panel-menu").removeClass('hidden'); | ||
69 | $(".nav-panels").css('background', 'transparent'); | ||
70 | return false; | ||
71 | }); | ||
72 | $(window).scroll(function () { | ||
73 | var s = $(window).scrollTop(), | ||
74 | d = $(document).height(), | ||
75 | c = $(window).height(); | ||
76 | var scrollPercent = (s / (d-c)) * 100; | ||
77 | $(".progress .determinate").css('width', scrollPercent+'%'); | ||
78 | }); | ||
79 | }); | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/jquery-2.1.4.min.js b/src/Wallabag/CoreBundle/Resources/public/themes/material/js/jquery-2.1.4.min.js deleted file mode 100644 index 49990d6e..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/jquery-2.1.4.min.js +++ /dev/null | |||
@@ -1,4 +0,0 @@ | |||
1 | /*! jQuery v2.1.4 | (c) 2005, 2015 jQuery Foundation, Inc. | jquery.org/license */ | ||
2 | !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=c.slice,e=c.concat,f=c.push,g=c.indexOf,h={},i=h.toString,j=h.hasOwnProperty,k={},l=a.document,m="2.1.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return d.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\f]' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=ma(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=na(b);function qa(){}qa.prototype=d.filters=d.pseudos,d.setFilters=new qa,g=ga.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=S.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=T.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(R," ")}),h=h.slice(c.length));for(g in d.filter)!(e=X[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?ga.error(a):z(a,i).slice(0)};function ra(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ | ||
3 | return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=L.get(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}});var Q=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,R=["Top","Right","Bottom","Left"],S=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)},T=/^(?:checkbox|radio)$/i;!function(){var a=l.createDocumentFragment(),b=a.appendChild(l.createElement("div")),c=l.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),k.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="<textarea>x</textarea>",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,d,e,f=b.button;return null==a.pageX&&null!=b.clientX&&(c=a.target.ownerDocument||l,d=c.documentElement,e=c.body,a.pageX=b.clientX+(d&&d.scrollLeft||e&&e.scrollLeft||0)-(d&&d.clientLeft||e&&e.clientLeft||0),a.pageY=b.clientY+(d&&d.scrollTop||e&&e.scrollTop||0)-(d&&d.clientTop||e&&e.clientTop||0)),a.which||void 0===f||(a.which=1&f?1:2&f?3:4&f?2:0),a}},fix:function(a){if(a[n.expando])return a;var b,c,d,e=a.type,f=a,g=this.fixHooks[e];g||(this.fixHooks[e]=g=W.test(e)?this.mouseHooks:V.test(e)?this.keyHooks:{}),d=g.props?this.props.concat(g.props):this.props,a=new n.Event(f),b=d.length;while(b--)c=d[b],a[c]=f[c];return a.target||(a.target=l),3===a.target.nodeType&&(a.target=a.target.parentNode),g.filter?g.filter(a,f):a},special:{load:{noBubble:!0},focus:{trigger:function(){return this!==_()&&this.focus?(this.focus(),!1):void 0},delegateType:"focusin"},blur:{trigger:function(){return this===_()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return"checkbox"===this.type&&this.click&&n.nodeName(this,"input")?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c,d){var e=n.extend(new n.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?n.event.trigger(e,null,b):n.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?Z:$):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={isDefaultPrevented:$,isPropagationStopped:$,isImmediatePropagationStopped:$,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=Z,a&&a.preventDefault&&a.preventDefault()},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=Z,a&&a.stopPropagation&&a.stopPropagation()},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=Z,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),k.focusinBubbles||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a),!0)};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=L.access(d,b);e||d.addEventListener(a,c,!0),L.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=L.access(d,b)-1;e?L.access(d,b,e):(d.removeEventListener(a,c,!0),L.remove(d,b))}}}),n.fn.extend({on:function(a,b,c,d,e){var f,g;if("object"==typeof a){"string"!=typeof b&&(c=c||b,b=void 0);for(g in a)this.on(g,b,c,a[g],e);return this}if(null==c&&null==d?(d=b,c=b=void 0):null==d&&("string"==typeof b?(d=c,c=void 0):(d=c,c=b,b=void 0)),d===!1)d=$;else if(!d)return this;return 1===e&&(f=d,d=function(a){return n().off(a),f.apply(this,arguments)},d.guid=f.guid||(f.guid=n.guid++)),this.each(function(){n.event.add(this,a,d,c,b)})},one:function(a,b,c,d){return this.on(a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=$),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,ia={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1></$2>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1></$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=qa[0].contentDocument,b.write(),b.close(),c=sa(a,b),qa.detach()),ra[a]=c),c}var ua=/^margin/,va=new RegExp("^("+Q+")(?!px)[a-z%]+$","i"),wa=function(b){return b.ownerDocument.defaultView.opener?b.ownerDocument.defaultView.getComputedStyle(b,null):a.getComputedStyle(b,null)};function xa(a,b,c){var d,e,f,g,h=a.style;return c=c||wa(a),c&&(g=c.getPropertyValue(b)||c[b]),c&&(""!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),va.test(g)&&ua.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0!==g?g+"":g}function ya(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d=l.documentElement,e=l.createElement("div"),f=l.createElement("div");if(f.style){f.style.backgroundClip="content-box",f.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===f.style.backgroundClip,e.style.cssText="border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;position:absolute",e.appendChild(f);function g(){f.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",f.innerHTML="",d.appendChild(e);var g=a.getComputedStyle(f,null);b="1%"!==g.top,c="4px"===g.width,d.removeChild(e)}a.getComputedStyle&&n.extend(k,{pixelPosition:function(){return g(),b},boxSizingReliable:function(){return null==c&&g(),c},reliableMarginRight:function(){var b,c=f.appendChild(l.createElement("div"));return c.style.cssText=f.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",c.style.marginRight=c.style.width="0",f.style.width="1px",d.appendChild(e),b=!parseFloat(a.getComputedStyle(c,null).marginRight),d.removeChild(e),f.removeChild(c),b}})}}(),n.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var za=/^(none|table(?!-c[ea]).+)/,Aa=new RegExp("^("+Q+")(.*)$","i"),Ba=new RegExp("^([+-])=("+Q+")","i"),Ca={position:"absolute",visibility:"hidden",display:"block"},Da={letterSpacing:"0",fontWeight:"400"},Ea=["Webkit","O","Moz","ms"];function Fa(a,b){if(b in a)return b;var c=b[0].toUpperCase()+b.slice(1),d=b,e=Ea.length;while(e--)if(b=Ea[e]+c,b in a)return b;return d}function Ga(a,b,c){var d=Aa.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Ha(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+R[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+R[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+R[f]+"Width",!0,e))):(g+=n.css(a,"padding"+R[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+R[f]+"Width",!0,e)));return g}function Ia(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=wa(a),g="border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=xa(a,b,f),(0>e||null==e)&&(e=a.style[b]),va.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Ha(a,b,c||(g?"border":"content"),d,f)+"px"}function Ja(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=L.get(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&S(d)&&(f[g]=L.access(d,"olddisplay",ta(d.nodeName)))):(e=S(d),"none"===c&&e||L.set(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=xa(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":"cssFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;return b=n.cssProps[h]||(n.cssProps[h]=Fa(i,h)),g=n.cssHooks[b]||n.cssHooks[h],void 0===c?g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b]:(f=typeof c,"string"===f&&(e=Ba.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(n.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||n.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),g&&"set"in g&&void 0===(c=g.set(a,c,d))||(i[b]=c)),void 0)}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=Fa(a.style,h)),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(e=g.get(a,!0,c)),void 0===e&&(e=xa(a,b,d)),"normal"===e&&b in Da&&(e=Da[b]),""===c||c?(f=parseFloat(e),c===!0||n.isNumeric(f)?f||0:e):e}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?za.test(n.css(a,"display"))&&0===a.offsetWidth?n.swap(a,Ca,function(){return Ia(a,b,d)}):Ia(a,b,d):void 0},set:function(a,c,d){var e=d&&wa(a);return Ga(a,c,d?Ha(a,b,d,"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),n.cssHooks.marginRight=ya(k.reliableMarginRight,function(a,b){return b?n.swap(a,{display:"inline-block"},xa,[a,"marginRight"]):void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+R[d]+b]=f[d]||f[d-2]||f[0];return e}},ua.test(a)||(n.cssHooks[a+b].set=Ga)}),n.fn.extend({css:function(a,b){return J(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=wa(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return Ja(this,!0)},hide:function(){return Ja(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){S(this)?n(this).show():n(this).hide()})}});function Ka(a,b,c,d,e){return new Ka.prototype.init(a,b,c,d,e)}n.Tween=Ka,Ka.prototype={constructor:Ka,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=Ka.propHooks[this.prop];return a&&a.get?a.get(this):Ka.propHooks._default.get(this)},run:function(a){var b,c=Ka.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ka.propHooks._default.set(this),this}},Ka.prototype.init.prototype=Ka.prototype,Ka.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[n.cssProps[a.prop]]||n.cssHooks[a.prop])?n.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Ka.propHooks.scrollTop=Ka.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},n.fx=Ka.prototype.init,n.fx.step={};var La,Ma,Na=/^(?:toggle|show|hide)$/,Oa=new RegExp("^(?:([+-])=|)("+Q+")([a-z%]*)$","i"),Pa=/queueHooks$/,Qa=[Va],Ra={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=Oa.exec(b),f=e&&e[3]||(n.cssNumber[a]?"":"px"),g=(n.cssNumber[a]||"px"!==f&&+d)&&Oa.exec(n.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,n.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function Sa(){return setTimeout(function(){La=void 0}),La=n.now()}function Ta(a,b){var c,d=0,e={height:a};for(b=b?1:0;4>d;d+=2-b)c=R[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function Ua(a,b,c){for(var d,e=(Ra[b]||[]).concat(Ra["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function Va(a,b,c){var d,e,f,g,h,i,j,k,l=this,m={},o=a.style,p=a.nodeType&&S(a),q=L.get(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,l.always(function(){l.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[o.overflow,o.overflowX,o.overflowY],j=n.css(a,"display"),k="none"===j?L.get(a,"olddisplay")||ta(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(o.display="inline-block")),c.overflow&&(o.overflow="hidden",l.always(function(){o.overflow=c.overflow[0],o.overflowX=c.overflow[1],o.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],Na.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(p?"hide":"show")){if("show"!==e||!q||void 0===q[d])continue;p=!0}m[d]=q&&q[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(m))"inline"===("none"===j?ta(a.nodeName):j)&&(o.display=j);else{q?"hidden"in q&&(p=q.hidden):q=L.access(a,"fxshow",{}),f&&(q.hidden=!p),p?n(a).show():l.done(function(){n(a).hide()}),l.done(function(){var b;L.remove(a,"fxshow");for(b in m)n.style(a,b,m[b])});for(d in m)g=Ua(p?q[d]:0,d,l),d in q||(q[d]=g.start,p&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function Wa(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function Xa(a,b,c){var d,e,f=0,g=Qa.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=La||Sa(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:La||Sa(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(Wa(k,j.opts.specialEasing);g>f;f++)if(d=Qa[f].call(j,a,k,j.opts))return d;return n.map(k,Ua,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(Xa,{tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],Ra[c]=Ra[c]||[],Ra[c].unshift(b)},prefilter:function(a,b){b?Qa.unshift(a):Qa.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(S).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=Xa(this,n.extend({},a),f);(e||L.get(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=L.get(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&Pa.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=L.get(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(Ta(b,!0),a,d,e)}}),n.each({slideDown:Ta("show"),slideUp:Ta("hide"),slideToggle:Ta("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=0,c=n.timers;for(La=n.now();b<c.length;b++)a=c[b],a()||c[b]!==a||c.splice(b--,1);c.length||n.fx.stop(),La=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){Ma||(Ma=setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){clearInterval(Ma),Ma=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(a,b){return a=n.fx?n.fx.speeds[a]||a:a,b=b||"fx",this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},function(){var a=l.createElement("input"),b=l.createElement("select"),c=b.appendChild(l.createElement("option"));a.type="checkbox",k.checkOn=""!==a.value,k.optSelected=c.selected,b.disabled=!0,k.optDisabled=!c.disabled,a=l.createElement("input"),a.value="t",a.type="radio",k.radioValue="t"===a.value}();var Ya,Za,$a=n.expr.attrHandle;n.fn.extend({attr:function(a,b){return J(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===U?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),d=n.attrHooks[b]||(n.expr.match.bool.test(b)?Za:Ya)), | ||
4 | void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=n.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void n.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)&&(a[d]=!1),a.removeAttribute(c)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),Za={set:function(a,b,c){return b===!1?n.removeAttr(a,c):a.setAttribute(c,c),c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=$a[b]||n.find.attr;$a[b]=function(a,b,d){var e,f;return d||(f=$a[b],$a[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,$a[b]=f),e}});var _a=/^(?:input|select|textarea|button)$/i;n.fn.extend({prop:function(a,b){return J(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[n.propFix[a]||a]})}}),n.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!n.isXMLDoc(a),f&&(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){return a.hasAttribute("tabindex")||_a.test(a.nodeName)||a.href?a.tabIndex:-1}}}}),k.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this});var ab=/[\t\r\n\f]/g;n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h="string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=n.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0===arguments.length||"string"==typeof a&&a,i=0,j=this.length;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,this.className))});if(h)for(b=(a||"").match(E)||[];j>i;i++)if(c=this[i],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(ab," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?n.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(n.isFunction(a)?function(c){n(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=n(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===U||"boolean"===c)&&(this.className&&L.set(this,"__className__",this.className),this.className=this.className||a===!1?"":L.get(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(ab," ").indexOf(b)>=0)return!0;return!1}});var bb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(bb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)d=e[g],(d.selected=n.inArray(d.value,f)>=0)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>=0:void 0}},k.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var cb=n.now(),db=/\?/;n.parseJSON=function(a){return JSON.parse(a+"")},n.parseXML=function(a){var b,c;if(!a||"string"!=typeof a)return null;try{c=new DOMParser,b=c.parseFromString(a,"text/xml")}catch(d){b=void 0}return(!b||b.getElementsByTagName("parsererror").length)&&n.error("Invalid XML: "+a),b};var eb=/#.*$/,fb=/([?&])_=[^&]*/,gb=/^(.*?):[ \t]*([^\r\n]*)$/gm,hb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,ib=/^(?:GET|HEAD)$/,jb=/^\/\//,kb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,lb={},mb={},nb="*/".concat("*"),ob=a.location.href,pb=kb.exec(ob.toLowerCase())||[];function qb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(n.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function rb(a,b,c,d){var e={},f=a===mb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function sb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&n.extend(!0,a,d),a}function tb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function ub(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:ob,type:"GET",isLocal:hb.test(pb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":nb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?sb(sb(a,n.ajaxSettings),b):sb(n.ajaxSettings,a)},ajaxPrefilter:qb(lb),ajaxTransport:qb(mb),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=n.ajaxSetup({},b),l=k.context||k,m=k.context&&(l.nodeType||l.jquery)?n(l):n.event,o=n.Deferred(),p=n.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!f){f={};while(b=gb.exec(e))f[b[1].toLowerCase()]=b[2]}b=f[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?e:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return c&&c.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||ob)+"").replace(eb,"").replace(jb,pb[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=n.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(h=kb.exec(k.url.toLowerCase()),k.crossDomain=!(!h||h[1]===pb[1]&&h[2]===pb[2]&&(h[3]||("http:"===h[1]?"80":"443"))===(pb[3]||("http:"===pb[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=n.param(k.data,k.traditional)),rb(lb,k,b,v),2===t)return v;i=n.event&&k.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!ib.test(k.type),d=k.url,k.hasContent||(k.data&&(d=k.url+=(db.test(d)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=fb.test(d)?d.replace(fb,"$1_="+cb++):d+(db.test(d)?"&":"?")+"_="+cb++)),k.ifModified&&(n.lastModified[d]&&v.setRequestHeader("If-Modified-Since",n.lastModified[d]),n.etag[d]&&v.setRequestHeader("If-None-Match",n.etag[d])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+nb+"; q=0.01":""):k.accepts["*"]);for(j in k.headers)v.setRequestHeader(j,k.headers[j]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(j in{success:1,error:1,complete:1})v[j](k[j]);if(c=rb(mb,k,b,v)){v.readyState=1,i&&m.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,c.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,f,h){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),c=void 0,e=h||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,f&&(u=tb(k,v,f)),u=ub(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(n.lastModified[d]=w),w=v.getResponseHeader("etag"),w&&(n.etag[d]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,i&&m.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),i&&(m.trigger("ajaxComplete",[v,k]),--n.active||n.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){var b;return n.isFunction(a)?this.each(function(b){n(this).wrapAll(a.call(this,b))}):(this[0]&&(b=n(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this)},wrapInner:function(a){return this.each(n.isFunction(a)?function(b){n(this).wrapInner(a.call(this,b))}:function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}}),n.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var vb=/%20/g,wb=/\[\]$/,xb=/\r?\n/g,yb=/^(?:submit|button|image|reset|file)$/i,zb=/^(?:input|select|textarea|keygen)/i;function Ab(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||wb.test(a)?d(a,e):Ab(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)Ab(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)Ab(c,a[c],b,e);return d.join("&").replace(vb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&zb.test(this.nodeName)&&!yb.test(a)&&(this.checked||!T.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(xb,"\r\n")}}):{name:b.name,value:c.replace(xb,"\r\n")}}).get()}}),n.ajaxSettings.xhr=function(){try{return new XMLHttpRequest}catch(a){}};var Bb=0,Cb={},Db={0:200,1223:204},Eb=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in Cb)Cb[a]()}),k.cors=!!Eb&&"withCredentials"in Eb,k.ajax=Eb=!!Eb,n.ajaxTransport(function(a){var b;return k.cors||Eb&&!a.crossDomain?{send:function(c,d){var e,f=a.xhr(),g=++Bb;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)f.setRequestHeader(e,c[e]);b=function(a){return function(){b&&(delete Cb[g],b=f.onload=f.onerror=null,"abort"===a?f.abort():"error"===a?d(f.status,f.statusText):d(Db[f.status]||f.status,f.statusText,"string"==typeof f.responseText?{text:f.responseText}:void 0,f.getAllResponseHeaders()))}},f.onload=b(),f.onerror=b("error"),b=Cb[g]=b("abort");try{f.send(a.hasContent&&a.data||null)}catch(h){if(b)throw h}},abort:function(){b&&b()}}:void 0}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(d,e){b=n("<script>").prop({async:!0,charset:a.scriptCharset,src:a.url}).on("load error",c=function(a){b.remove(),c=null,a&&e("error"===a.type?404:200,a.type)}),l.head.appendChild(b[0])},abort:function(){c&&c()}}}});var Fb=[],Gb=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=Fb.pop()||n.expando+"_"+cb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(Gb.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&Gb.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(Gb,"$1"+e):b.jsonp!==!1&&(b.url+=(db.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,Fb.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||l;var d=v.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=n.buildFragment([a],b,e),e&&e.length&&n(e).remove(),n.merge([],d.childNodes))};var Hb=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&Hb)return Hb.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=n.trim(a.slice(h)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e,dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,f||[a.responseText,b,a])}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};var Ib=a.document.documentElement;function Jb(a){return n.isWindow(a)?a:9===a.nodeType&&a.defaultView}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&(f+i).indexOf("auto")>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d=this[0],e={top:0,left:0},f=d&&d.ownerDocument;if(f)return b=f.documentElement,n.contains(b,d)?(typeof d.getBoundingClientRect!==U&&(e=d.getBoundingClientRect()),c=Jb(f),{top:e.top+c.pageYOffset-b.clientTop,left:e.left+c.pageXOffset-b.clientLeft}):e},position:function(){if(this[0]){var a,b,c=this[0],d={top:0,left:0};return"fixed"===n.css(c,"position")?b=c.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(d=a.offset()),d.top+=n.css(a[0],"borderTopWidth",!0),d.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-d.top-n.css(c,"marginTop",!0),left:b.left-d.left-n.css(c,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||Ib;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Ib})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(b,c){var d="pageYOffset"===c;n.fn[b]=function(e){return J(this,function(b,e,f){var g=Jb(b);return void 0===f?g?g[c]:b[e]:void(g?g.scrollTo(d?a.pageXOffset:f,d?f:a.pageYOffset):b[e]=f)},b,e,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=ya(k.pixelPosition,function(a,c){return c?(c=xa(a,b),va.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return J(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var Kb=a.jQuery,Lb=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=Lb),b&&a.jQuery===n&&(a.jQuery=Kb),n},typeof b===U&&(a.jQuery=a.$=n),n}); | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/jquery.tinydot.js b/src/Wallabag/CoreBundle/Resources/public/themes/material/js/jquery.tinydot.js deleted file mode 100644 index bf9eadef..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/jquery.tinydot.js +++ /dev/null | |||
@@ -1,103 +0,0 @@ | |||
1 | /* | ||
2 | * jQuery tinydot 0.2.0 | ||
3 | * | ||
4 | * Copyright (c) Alexander Danilov | ||
5 | * modos189.ru | ||
6 | * | ||
7 | * Plugin website: | ||
8 | * tinydot.modos189.ru | ||
9 | * | ||
10 | * Licensed under the MIT license. | ||
11 | * http://en.wikipedia.org/wiki/MIT_License | ||
12 | */ | ||
13 | |||
14 | (function( $, undef ) | ||
15 | { | ||
16 | if ( $.fn.tinydot ) | ||
17 | { | ||
18 | return; | ||
19 | } | ||
20 | |||
21 | $.fn.tinydot = function( o ) { | ||
22 | |||
23 | var $dot = this; | ||
24 | $dot.child = getChildOrDie($dot); | ||
25 | $dot.orgContent = $($dot.child).html(); | ||
26 | ellipsis( $dot ); | ||
27 | |||
28 | $dot.watch = function() | ||
29 | { | ||
30 | $(window).on('resize', function(){ | ||
31 | if ( watchInt ) | ||
32 | { | ||
33 | clearInterval( watchInt ); | ||
34 | } | ||
35 | watchInt = setTimeout( | ||
36 | function() | ||
37 | { | ||
38 | reinitialize($dot); | ||
39 | }, 100 | ||
40 | ); | ||
41 | }); | ||
42 | |||
43 | return $dot; | ||
44 | }; | ||
45 | |||
46 | var opts = $.extend( true, {}, $.fn.tinydot.defaults, o ), | ||
47 | watchInt = null; | ||
48 | |||
49 | if ( opts.watch ) | ||
50 | { | ||
51 | $dot.watch(); | ||
52 | } | ||
53 | } | ||
54 | |||
55 | // public | ||
56 | $.fn.tinydot.defaults = { | ||
57 | 'watch' : false | ||
58 | }; | ||
59 | |||
60 | function getChildOrDie( $elem ) | ||
61 | { | ||
62 | var childrens = $elem.children(); | ||
63 | if (childrens.length == 0) { | ||
64 | // create children | ||
65 | var data = $($elem).html(); | ||
66 | $elem.html(''); | ||
67 | $elem.append('<span />'); | ||
68 | return $elem.children('span').html(data); | ||
69 | } else { | ||
70 | return childrens[0]; | ||
71 | } | ||
72 | } | ||
73 | |||
74 | function reinitialize( $elem ) | ||
75 | { | ||
76 | $($elem.child).html($elem.orgContent); | ||
77 | ellipsis( $elem ); | ||
78 | } | ||
79 | |||
80 | function ellipsis( $elem ) { | ||
81 | var divh=$($elem).height(); | ||
82 | while ($($elem.child).outerHeight()>divh) { | ||
83 | $($elem.child).html(function (index, html) { | ||
84 | return html.replace(/\W*\s(\S)*$/, '...'); | ||
85 | }); | ||
86 | } | ||
87 | } | ||
88 | |||
89 | })( jQuery ); | ||
90 | |||
91 | jQuery(document).ready(function($) { | ||
92 | //We only invoke jQuery.tinydot on elements that have dot-ellipsis class | ||
93 | $(".dot-ellipsis").each(function(){ | ||
94 | //Checking if update on window resize required | ||
95 | var watch_window=$(this).hasClass("dot-resize-update"); | ||
96 | |||
97 | //Invoking jQuery.tinydot | ||
98 | var x = new Object(); | ||
99 | if (watch_window) | ||
100 | x.watch='window'; | ||
101 | $(this).tinydot(x); | ||
102 | }); | ||
103 | }); | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/jquery.tinydot.min.js b/src/Wallabag/CoreBundle/Resources/public/themes/material/js/jquery.tinydot.min.js deleted file mode 100644 index 74754629..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/jquery.tinydot.min.js +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | !function(a,b){function c(b){var c=b.children();if(0==c.length){var d=a(b).html();return b.html(""),b.append("<span />"),b.children("span").html(d)}return c[0]}function d(b){a(b.child).html(b.orgContent),e(b)}function e(b){for(var c=a(b).height();a(b.child).outerHeight()>c;)a(b.child).html(function(a,b){return b.replace(/\W*\s(\S)*$/,"...")})}a.fn.tinydot||(a.fn.tinydot=function(b){var f=this;f.child=c(f),f.orgContent=a(f.child).html(),e(f),f.watch=function(){return a(window).on("resize",function(){h&&clearInterval(h),h=setTimeout(function(){d(f)},100)}),f};var g=a.extend(!0,{},a.fn.tinydot.defaults,b),h=null;g.watch&&f.watch()},a.fn.tinydot.defaults={watch:!1})}(jQuery),jQuery(document).ready(function(a){a(".dot-ellipsis").each(function(){var b=a(this).hasClass("dot-resize-update"),c=new Object;b&&(c.watch="window"),a(this).tinydot(c)})}); | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/materialize.js b/src/Wallabag/CoreBundle/Resources/public/themes/material/js/materialize.js deleted file mode 100644 index b7242f6b..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/materialize.js +++ /dev/null | |||
@@ -1,6219 +0,0 @@ | |||
1 | /*! | ||
2 | * Materialize v0.97.1 (http://materializecss.com) | ||
3 | * Copyright 2014-2015 Materialize | ||
4 | * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) | ||
5 | */ | ||
6 | /* | ||
7 | * jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ | ||
8 | * | ||
9 | * Uses the built in easing capabilities added In jQuery 1.1 | ||
10 | * to offer multiple easing options | ||
11 | * | ||
12 | * TERMS OF USE - jQuery Easing | ||
13 | * | ||
14 | * Open source under the BSD License. | ||
15 | * | ||
16 | * Copyright © 2008 George McGinley Smith | ||
17 | * All rights reserved. | ||
18 | * | ||
19 | * Redistribution and use in source and binary forms, with or without modification, | ||
20 | * are permitted provided that the following conditions are met: | ||
21 | * | ||
22 | * Redistributions of source code must retain the above copyright notice, this list of | ||
23 | * conditions and the following disclaimer. | ||
24 | * Redistributions in binary form must reproduce the above copyright notice, this list | ||
25 | * of conditions and the following disclaimer in the documentation and/or other materials | ||
26 | * provided with the distribution. | ||
27 | * | ||
28 | * Neither the name of the author nor the names of contributors may be used to endorse | ||
29 | * or promote products derived from this software without specific prior written permission. | ||
30 | * | ||
31 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY | ||
32 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
33 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | ||
34 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||
35 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE | ||
36 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED | ||
37 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | ||
38 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
39 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
40 | * | ||
41 | */ | ||
42 | |||
43 | // t: current time, b: begInnIng value, c: change In value, d: duration | ||
44 | jQuery.easing['jswing'] = jQuery.easing['swing']; | ||
45 | |||
46 | jQuery.extend( jQuery.easing, | ||
47 | { | ||
48 | def: 'easeOutQuad', | ||
49 | swing: function (x, t, b, c, d) { | ||
50 | //alert(jQuery.easing.default); | ||
51 | return jQuery.easing[jQuery.easing.def](x, t, b, c, d); | ||
52 | }, | ||
53 | easeInQuad: function (x, t, b, c, d) { | ||
54 | return c*(t/=d)*t + b; | ||
55 | }, | ||
56 | easeOutQuad: function (x, t, b, c, d) { | ||
57 | return -c *(t/=d)*(t-2) + b; | ||
58 | }, | ||
59 | easeInOutQuad: function (x, t, b, c, d) { | ||
60 | if ((t/=d/2) < 1) return c/2*t*t + b; | ||
61 | return -c/2 * ((--t)*(t-2) - 1) + b; | ||
62 | }, | ||
63 | easeInCubic: function (x, t, b, c, d) { | ||
64 | return c*(t/=d)*t*t + b; | ||
65 | }, | ||
66 | easeOutCubic: function (x, t, b, c, d) { | ||
67 | return c*((t=t/d-1)*t*t + 1) + b; | ||
68 | }, | ||
69 | easeInOutCubic: function (x, t, b, c, d) { | ||
70 | if ((t/=d/2) < 1) return c/2*t*t*t + b; | ||
71 | return c/2*((t-=2)*t*t + 2) + b; | ||
72 | }, | ||
73 | easeInQuart: function (x, t, b, c, d) { | ||
74 | return c*(t/=d)*t*t*t + b; | ||
75 | }, | ||
76 | easeOutQuart: function (x, t, b, c, d) { | ||
77 | return -c * ((t=t/d-1)*t*t*t - 1) + b; | ||
78 | }, | ||
79 | easeInOutQuart: function (x, t, b, c, d) { | ||
80 | if ((t/=d/2) < 1) return c/2*t*t*t*t + b; | ||
81 | return -c/2 * ((t-=2)*t*t*t - 2) + b; | ||
82 | }, | ||
83 | easeInQuint: function (x, t, b, c, d) { | ||
84 | return c*(t/=d)*t*t*t*t + b; | ||
85 | }, | ||
86 | easeOutQuint: function (x, t, b, c, d) { | ||
87 | return c*((t=t/d-1)*t*t*t*t + 1) + b; | ||
88 | }, | ||
89 | easeInOutQuint: function (x, t, b, c, d) { | ||
90 | if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; | ||
91 | return c/2*((t-=2)*t*t*t*t + 2) + b; | ||
92 | }, | ||
93 | easeInSine: function (x, t, b, c, d) { | ||
94 | return -c * Math.cos(t/d * (Math.PI/2)) + c + b; | ||
95 | }, | ||
96 | easeOutSine: function (x, t, b, c, d) { | ||
97 | return c * Math.sin(t/d * (Math.PI/2)) + b; | ||
98 | }, | ||
99 | easeInOutSine: function (x, t, b, c, d) { | ||
100 | return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; | ||
101 | }, | ||
102 | easeInExpo: function (x, t, b, c, d) { | ||
103 | return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; | ||
104 | }, | ||
105 | easeOutExpo: function (x, t, b, c, d) { | ||
106 | return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; | ||
107 | }, | ||
108 | easeInOutExpo: function (x, t, b, c, d) { | ||
109 | if (t==0) return b; | ||
110 | if (t==d) return b+c; | ||
111 | if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; | ||
112 | return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; | ||
113 | }, | ||
114 | easeInCirc: function (x, t, b, c, d) { | ||
115 | return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; | ||
116 | }, | ||
117 | easeOutCirc: function (x, t, b, c, d) { | ||
118 | return c * Math.sqrt(1 - (t=t/d-1)*t) + b; | ||
119 | }, | ||
120 | easeInOutCirc: function (x, t, b, c, d) { | ||
121 | if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; | ||
122 | return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; | ||
123 | }, | ||
124 | easeInElastic: function (x, t, b, c, d) { | ||
125 | var s=1.70158;var p=0;var a=c; | ||
126 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; | ||
127 | if (a < Math.abs(c)) { a=c; var s=p/4; } | ||
128 | else var s = p/(2*Math.PI) * Math.asin (c/a); | ||
129 | return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; | ||
130 | }, | ||
131 | easeOutElastic: function (x, t, b, c, d) { | ||
132 | var s=1.70158;var p=0;var a=c; | ||
133 | if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; | ||
134 | if (a < Math.abs(c)) { a=c; var s=p/4; } | ||
135 | else var s = p/(2*Math.PI) * Math.asin (c/a); | ||
136 | return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; | ||
137 | }, | ||
138 | easeInOutElastic: function (x, t, b, c, d) { | ||
139 | var s=1.70158;var p=0;var a=c; | ||
140 | if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); | ||
141 | if (a < Math.abs(c)) { a=c; var s=p/4; } | ||
142 | else var s = p/(2*Math.PI) * Math.asin (c/a); | ||
143 | if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; | ||
144 | return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; | ||
145 | }, | ||
146 | easeInBack: function (x, t, b, c, d, s) { | ||
147 | if (s == undefined) s = 1.70158; | ||
148 | return c*(t/=d)*t*((s+1)*t - s) + b; | ||
149 | }, | ||
150 | easeOutBack: function (x, t, b, c, d, s) { | ||
151 | if (s == undefined) s = 1.70158; | ||
152 | return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; | ||
153 | }, | ||
154 | easeInOutBack: function (x, t, b, c, d, s) { | ||
155 | if (s == undefined) s = 1.70158; | ||
156 | if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; | ||
157 | return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; | ||
158 | }, | ||
159 | easeInBounce: function (x, t, b, c, d) { | ||
160 | return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; | ||
161 | }, | ||
162 | easeOutBounce: function (x, t, b, c, d) { | ||
163 | if ((t/=d) < (1/2.75)) { | ||
164 | return c*(7.5625*t*t) + b; | ||
165 | } else if (t < (2/2.75)) { | ||
166 | return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; | ||
167 | } else if (t < (2.5/2.75)) { | ||
168 | return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; | ||
169 | } else { | ||
170 | return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; | ||
171 | } | ||
172 | }, | ||
173 | easeInOutBounce: function (x, t, b, c, d) { | ||
174 | if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; | ||
175 | return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; | ||
176 | } | ||
177 | }); | ||
178 | |||
179 | /* | ||
180 | * | ||
181 | * TERMS OF USE - EASING EQUATIONS | ||
182 | * | ||
183 | * Open source under the BSD License. | ||
184 | * | ||
185 | * Copyright © 2001 Robert Penner | ||
186 | * All rights reserved. | ||
187 | * | ||
188 | * Redistribution and use in source and binary forms, with or without modification, | ||
189 | * are permitted provided that the following conditions are met: | ||
190 | * | ||
191 | * Redistributions of source code must retain the above copyright notice, this list of | ||
192 | * conditions and the following disclaimer. | ||
193 | * Redistributions in binary form must reproduce the above copyright notice, this list | ||
194 | * of conditions and the following disclaimer in the documentation and/or other materials | ||
195 | * provided with the distribution. | ||
196 | * | ||
197 | * Neither the name of the author nor the names of contributors may be used to endorse | ||
198 | * or promote products derived from this software without specific prior written permission. | ||
199 | * | ||
200 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY | ||
201 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
202 | * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | ||
203 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||
204 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE | ||
205 | * GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED | ||
206 | * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | ||
207 | * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | ||
208 | * OF THE POSSIBILITY OF SUCH DAMAGE. | ||
209 | * | ||
210 | */; // Custom Easing | ||
211 | jQuery.extend( jQuery.easing, | ||
212 | { | ||
213 | easeInOutMaterial: function (x, t, b, c, d) { | ||
214 | if ((t/=d/2) < 1) return c/2*t*t + b; | ||
215 | return c/4*((t-=2)*t*t + 2) + b; | ||
216 | } | ||
217 | }); | ||
218 | |||
219 | ;/*! VelocityJS.org (1.2.2). (C) 2014 Julian Shapiro. MIT @license: en.wikipedia.org/wiki/MIT_License */ | ||
220 | /*! VelocityJS.org jQuery Shim (1.0.1). (C) 2014 The jQuery Foundation. MIT @license: en.wikipedia.org/wiki/MIT_License. */ | ||
221 | !function(e){function t(e){var t=e.length,r=$.type(e);return"function"===r||$.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===r||0===t||"number"==typeof t&&t>0&&t-1 in e}if(!e.jQuery){var $=function(e,t){return new $.fn.init(e,t)};$.isWindow=function(e){return null!=e&&e==e.window},$.type=function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?a[o.call(e)]||"object":typeof e},$.isArray=Array.isArray||function(e){return"array"===$.type(e)},$.isPlainObject=function(e){var t;if(!e||"object"!==$.type(e)||e.nodeType||$.isWindow(e))return!1;try{if(e.constructor&&!n.call(e,"constructor")&&!n.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}for(t in e);return void 0===t||n.call(e,t)},$.each=function(e,r,a){var n,o=0,i=e.length,s=t(e);if(a){if(s)for(;i>o&&(n=r.apply(e[o],a),n!==!1);o++);else for(o in e)if(n=r.apply(e[o],a),n===!1)break}else if(s)for(;i>o&&(n=r.call(e[o],o,e[o]),n!==!1);o++);else for(o in e)if(n=r.call(e[o],o,e[o]),n===!1)break;return e},$.data=function(e,t,a){if(void 0===a){var n=e[$.expando],o=n&&r[n];if(void 0===t)return o;if(o&&t in o)return o[t]}else if(void 0!==t){var n=e[$.expando]||(e[$.expando]=++$.uuid);return r[n]=r[n]||{},r[n][t]=a,a}},$.removeData=function(e,t){var a=e[$.expando],n=a&&r[a];n&&$.each(t,function(e,t){delete n[t]})},$.extend=function(){var e,t,r,a,n,o,i=arguments[0]||{},s=1,l=arguments.length,u=!1;for("boolean"==typeof i&&(u=i,i=arguments[s]||{},s++),"object"!=typeof i&&"function"!==$.type(i)&&(i={}),s===l&&(i=this,s--);l>s;s++)if(null!=(n=arguments[s]))for(a in n)e=i[a],r=n[a],i!==r&&(u&&r&&($.isPlainObject(r)||(t=$.isArray(r)))?(t?(t=!1,o=e&&$.isArray(e)?e:[]):o=e&&$.isPlainObject(e)?e:{},i[a]=$.extend(u,o,r)):void 0!==r&&(i[a]=r));return i},$.queue=function(e,r,a){function n(e,r){var a=r||[];return null!=e&&(t(Object(e))?!function(e,t){for(var r=+t.length,a=0,n=e.length;r>a;)e[n++]=t[a++];if(r!==r)for(;void 0!==t[a];)e[n++]=t[a++];return e.length=n,e}(a,"string"==typeof e?[e]:e):[].push.call(a,e)),a}if(e){r=(r||"fx")+"queue";var o=$.data(e,r);return a?(!o||$.isArray(a)?o=$.data(e,r,n(a)):o.push(a),o):o||[]}},$.dequeue=function(e,t){$.each(e.nodeType?[e]:e,function(e,r){t=t||"fx";var a=$.queue(r,t),n=a.shift();"inprogress"===n&&(n=a.shift()),n&&("fx"===t&&a.unshift("inprogress"),n.call(r,function(){$.dequeue(r,t)}))})},$.fn=$.prototype={init:function(e){if(e.nodeType)return this[0]=e,this;throw new Error("Not a DOM node.")},offset:function(){var t=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:t.top+(e.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:t.left+(e.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function e(){for(var e=this.offsetParent||document;e&&"html"===!e.nodeType.toLowerCase&&"static"===e.style.position;)e=e.offsetParent;return e||document}var t=this[0],e=e.apply(t),r=this.offset(),a=/^(?:body|html)$/i.test(e.nodeName)?{top:0,left:0}:$(e).offset();return r.top-=parseFloat(t.style.marginTop)||0,r.left-=parseFloat(t.style.marginLeft)||0,e.style&&(a.top+=parseFloat(e.style.borderTopWidth)||0,a.left+=parseFloat(e.style.borderLeftWidth)||0),{top:r.top-a.top,left:r.left-a.left}}};var r={};$.expando="velocity"+(new Date).getTime(),$.uuid=0;for(var a={},n=a.hasOwnProperty,o=a.toString,i="Boolean Number String Function Array Date RegExp Object Error".split(" "),s=0;s<i.length;s++)a["[object "+i[s]+"]"]=i[s].toLowerCase();$.fn.init.prototype=$.fn,e.Velocity={Utilities:$}}}(window),function(e){"object"==typeof module&&"object"==typeof module.exports?module.exports=e():"function"==typeof define&&define.amd?define(e):e()}(function(){return function(e,t,r,a){function n(e){for(var t=-1,r=e?e.length:0,a=[];++t<r;){var n=e[t];n&&a.push(n)}return a}function o(e){return g.isWrapped(e)?e=[].slice.call(e):g.isNode(e)&&(e=[e]),e}function i(e){var t=$.data(e,"velocity");return null===t?a:t}function s(e){return function(t){return Math.round(t*e)*(1/e)}}function l(e,r,a,n){function o(e,t){return 1-3*t+3*e}function i(e,t){return 3*t-6*e}function s(e){return 3*e}function l(e,t,r){return((o(t,r)*e+i(t,r))*e+s(t))*e}function u(e,t,r){return 3*o(t,r)*e*e+2*i(t,r)*e+s(t)}function c(t,r){for(var n=0;m>n;++n){var o=u(r,e,a);if(0===o)return r;var i=l(r,e,a)-t;r-=i/o}return r}function p(){for(var t=0;b>t;++t)w[t]=l(t*x,e,a)}function f(t,r,n){var o,i,s=0;do i=r+(n-r)/2,o=l(i,e,a)-t,o>0?n=i:r=i;while(Math.abs(o)>h&&++s<v);return i}function d(t){for(var r=0,n=1,o=b-1;n!=o&&w[n]<=t;++n)r+=x;--n;var i=(t-w[n])/(w[n+1]-w[n]),s=r+i*x,l=u(s,e,a);return l>=y?c(t,s):0==l?s:f(t,r,r+x)}function g(){V=!0,(e!=r||a!=n)&&p()}var m=4,y=.001,h=1e-7,v=10,b=11,x=1/(b-1),S="Float32Array"in t;if(4!==arguments.length)return!1;for(var P=0;4>P;++P)if("number"!=typeof arguments[P]||isNaN(arguments[P])||!isFinite(arguments[P]))return!1;e=Math.min(e,1),a=Math.min(a,1),e=Math.max(e,0),a=Math.max(a,0);var w=S?new Float32Array(b):new Array(b),V=!1,C=function(t){return V||g(),e===r&&a===n?t:0===t?0:1===t?1:l(d(t),r,n)};C.getControlPoints=function(){return[{x:e,y:r},{x:a,y:n}]};var T="generateBezier("+[e,r,a,n]+")";return C.toString=function(){return T},C}function u(e,t){var r=e;return g.isString(e)?v.Easings[e]||(r=!1):r=g.isArray(e)&&1===e.length?s.apply(null,e):g.isArray(e)&&2===e.length?b.apply(null,e.concat([t])):g.isArray(e)&&4===e.length?l.apply(null,e):!1,r===!1&&(r=v.Easings[v.defaults.easing]?v.defaults.easing:h),r}function c(e){if(e){var t=(new Date).getTime(),r=v.State.calls.length;r>1e4&&(v.State.calls=n(v.State.calls));for(var o=0;r>o;o++)if(v.State.calls[o]){var s=v.State.calls[o],l=s[0],u=s[2],f=s[3],d=!!f,m=null;f||(f=v.State.calls[o][3]=t-16);for(var y=Math.min((t-f)/u.duration,1),h=0,b=l.length;b>h;h++){var S=l[h],w=S.element;if(i(w)){var V=!1;if(u.display!==a&&null!==u.display&&"none"!==u.display){if("flex"===u.display){var C=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];$.each(C,function(e,t){x.setPropertyValue(w,"display",t)})}x.setPropertyValue(w,"display",u.display)}u.visibility!==a&&"hidden"!==u.visibility&&x.setPropertyValue(w,"visibility",u.visibility);for(var T in S)if("element"!==T){var k=S[T],A,F=g.isString(k.easing)?v.Easings[k.easing]:k.easing;if(1===y)A=k.endValue;else{var E=k.endValue-k.startValue;if(A=k.startValue+E*F(y,u,E),!d&&A===k.currentValue)continue}if(k.currentValue=A,"tween"===T)m=A;else{if(x.Hooks.registered[T]){var j=x.Hooks.getRoot(T),H=i(w).rootPropertyValueCache[j];H&&(k.rootPropertyValue=H)}var N=x.setPropertyValue(w,T,k.currentValue+(0===parseFloat(A)?"":k.unitType),k.rootPropertyValue,k.scrollData);x.Hooks.registered[T]&&(i(w).rootPropertyValueCache[j]=x.Normalizations.registered[j]?x.Normalizations.registered[j]("extract",null,N[1]):N[1]),"transform"===N[0]&&(V=!0)}}u.mobileHA&&i(w).transformCache.translate3d===a&&(i(w).transformCache.translate3d="(0px, 0px, 0px)",V=!0),V&&x.flushTransformCache(w)}}u.display!==a&&"none"!==u.display&&(v.State.calls[o][2].display=!1),u.visibility!==a&&"hidden"!==u.visibility&&(v.State.calls[o][2].visibility=!1),u.progress&&u.progress.call(s[1],s[1],y,Math.max(0,f+u.duration-t),f,m),1===y&&p(o)}}v.State.isTicking&&P(c)}function p(e,t){if(!v.State.calls[e])return!1;for(var r=v.State.calls[e][0],n=v.State.calls[e][1],o=v.State.calls[e][2],s=v.State.calls[e][4],l=!1,u=0,c=r.length;c>u;u++){var p=r[u].element;if(t||o.loop||("none"===o.display&&x.setPropertyValue(p,"display",o.display),"hidden"===o.visibility&&x.setPropertyValue(p,"visibility",o.visibility)),o.loop!==!0&&($.queue(p)[1]===a||!/\.velocityQueueEntryFlag/i.test($.queue(p)[1]))&&i(p)){i(p).isAnimating=!1,i(p).rootPropertyValueCache={};var f=!1;$.each(x.Lists.transforms3D,function(e,t){var r=/^scale/.test(t)?1:0,n=i(p).transformCache[t];i(p).transformCache[t]!==a&&new RegExp("^\\("+r+"[^.]").test(n)&&(f=!0,delete i(p).transformCache[t])}),o.mobileHA&&(f=!0,delete i(p).transformCache.translate3d),f&&x.flushTransformCache(p),x.Values.removeClass(p,"velocity-animating")}if(!t&&o.complete&&!o.loop&&u===c-1)try{o.complete.call(n,n)}catch(d){setTimeout(function(){throw d},1)}s&&o.loop!==!0&&s(n),i(p)&&o.loop===!0&&!t&&($.each(i(p).tweensContainer,function(e,t){/^rotate/.test(e)&&360===parseFloat(t.endValue)&&(t.endValue=0,t.startValue=360),/^backgroundPosition/.test(e)&&100===parseFloat(t.endValue)&&"%"===t.unitType&&(t.endValue=0,t.startValue=100)}),v(p,"reverse",{loop:!0,delay:o.delay})),o.queue!==!1&&$.dequeue(p,o.queue)}v.State.calls[e]=!1;for(var g=0,m=v.State.calls.length;m>g;g++)if(v.State.calls[g]!==!1){l=!0;break}l===!1&&(v.State.isTicking=!1,delete v.State.calls,v.State.calls=[])}var f=function(){if(r.documentMode)return r.documentMode;for(var e=7;e>4;e--){var t=r.createElement("div");if(t.innerHTML="<!--[if IE "+e+"]><span></span><![endif]-->",t.getElementsByTagName("span").length)return t=null,e}return a}(),d=function(){var e=0;return t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||function(t){var r=(new Date).getTime(),a;return a=Math.max(0,16-(r-e)),e=r+a,setTimeout(function(){t(r+a)},a)}}(),g={isString:function(e){return"string"==typeof e},isArray:Array.isArray||function(e){return"[object Array]"===Object.prototype.toString.call(e)},isFunction:function(e){return"[object Function]"===Object.prototype.toString.call(e)},isNode:function(e){return e&&e.nodeType},isNodeList:function(e){return"object"==typeof e&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(e))&&e.length!==a&&(0===e.length||"object"==typeof e[0]&&e[0].nodeType>0)},isWrapped:function(e){return e&&(e.jquery||t.Zepto&&t.Zepto.zepto.isZ(e))},isSVG:function(e){return t.SVGElement&&e instanceof t.SVGElement},isEmptyObject:function(e){for(var t in e)return!1;return!0}},$,m=!1;if(e.fn&&e.fn.jquery?($=e,m=!0):$=t.Velocity.Utilities,8>=f&&!m)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=f)return void(jQuery.fn.velocity=jQuery.fn.animate);var y=400,h="swing",v={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:t.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:r.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:$,Redirects:{},Easings:{},Promise:t.Promise,defaults:{queue:"",duration:y,easing:h,begin:a,complete:a,progress:a,display:a,visibility:a,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(e){$.data(e,"velocity",{isSVG:g.isSVG(e),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};t.pageYOffset!==a?(v.State.scrollAnchor=t,v.State.scrollPropertyLeft="pageXOffset",v.State.scrollPropertyTop="pageYOffset"):(v.State.scrollAnchor=r.documentElement||r.body.parentNode||r.body,v.State.scrollPropertyLeft="scrollLeft",v.State.scrollPropertyTop="scrollTop");var b=function(){function e(e){return-e.tension*e.x-e.friction*e.v}function t(t,r,a){var n={x:t.x+a.dx*r,v:t.v+a.dv*r,tension:t.tension,friction:t.friction};return{dx:n.v,dv:e(n)}}function r(r,a){var n={dx:r.v,dv:e(r)},o=t(r,.5*a,n),i=t(r,.5*a,o),s=t(r,a,i),l=1/6*(n.dx+2*(o.dx+i.dx)+s.dx),u=1/6*(n.dv+2*(o.dv+i.dv)+s.dv);return r.x=r.x+l*a,r.v=r.v+u*a,r}return function a(e,t,n){var o={x:-1,v:0,tension:null,friction:null},i=[0],s=0,l=1e-4,u=.016,c,p,f;for(e=parseFloat(e)||500,t=parseFloat(t)||20,n=n||null,o.tension=e,o.friction=t,c=null!==n,c?(s=a(e,t),p=s/n*u):p=u;;)if(f=r(f||o,p),i.push(1+f.x),s+=16,!(Math.abs(f.x)>l&&Math.abs(f.v)>l))break;return c?function(e){return i[e*(i.length-1)|0]}:s}}();v.Easings={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},spring:function(e){return 1-Math.cos(4.5*e*Math.PI)*Math.exp(6*-e)}},$.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(e,t){v.Easings[t[0]]=l.apply(null,t[1])});var x=v.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var e=0;e<x.Lists.colors.length;e++){var t="color"===x.Lists.colors[e]?"0 0 0 1":"255 255 255 1";x.Hooks.templates[x.Lists.colors[e]]=["Red Green Blue Alpha",t]}var r,a,n;if(f)for(r in x.Hooks.templates){a=x.Hooks.templates[r],n=a[0].split(" ");var o=a[1].match(x.RegEx.valueSplit);"Color"===n[0]&&(n.push(n.shift()),o.push(o.shift()),x.Hooks.templates[r]=[n.join(" "),o.join(" ")])}for(r in x.Hooks.templates){a=x.Hooks.templates[r],n=a[0].split(" ");for(var e in n){var i=r+n[e],s=e;x.Hooks.registered[i]=[r,s]}}},getRoot:function(e){var t=x.Hooks.registered[e];return t?t[0]:e},cleanRootPropertyValue:function(e,t){return x.RegEx.valueUnwrap.test(t)&&(t=t.match(x.RegEx.valueUnwrap)[1]),x.Values.isCSSNullValue(t)&&(t=x.Hooks.templates[e][1]),t},extractValue:function(e,t){var r=x.Hooks.registered[e];if(r){var a=r[0],n=r[1];return t=x.Hooks.cleanRootPropertyValue(a,t),t.toString().match(x.RegEx.valueSplit)[n]}return t},injectValue:function(e,t,r){var a=x.Hooks.registered[e];if(a){var n=a[0],o=a[1],i,s;return r=x.Hooks.cleanRootPropertyValue(n,r),i=r.toString().match(x.RegEx.valueSplit),i[o]=t,s=i.join(" ")}return r}},Normalizations:{registered:{clip:function(e,t,r){switch(e){case"name":return"clip";case"extract":var a;return x.RegEx.wrappedValueAlreadyExtracted.test(r)?a=r:(a=r.toString().match(x.RegEx.valueUnwrap),a=a?a[1].replace(/,(\s+)?/g," "):r),a;case"inject":return"rect("+r+")"}},blur:function(e,t,r){switch(e){case"name":return v.State.isFirefox?"filter":"-webkit-filter";case"extract":var a=parseFloat(r);if(!a&&0!==a){var n=r.toString().match(/blur\(([0-9]+[A-z]+)\)/i);a=n?n[1]:0}return a;case"inject":return parseFloat(r)?"blur("+r+")":"none"}},opacity:function(e,t,r){if(8>=f)switch(e){case"name":return"filter";case"extract":var a=r.toString().match(/alpha\(opacity=(.*)\)/i);return r=a?a[1]/100:1;case"inject":return t.style.zoom=1,parseFloat(r)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(r),10)+")"}else switch(e){case"name":return"opacity";case"extract":return r;case"inject":return r}}},register:function(){9>=f||v.State.isGingerbread||(x.Lists.transformsBase=x.Lists.transformsBase.concat(x.Lists.transforms3D));for(var e=0;e<x.Lists.transformsBase.length;e++)!function(){var t=x.Lists.transformsBase[e];x.Normalizations.registered[t]=function(e,r,n){switch(e){case"name":return"transform";case"extract":return i(r)===a||i(r).transformCache[t]===a?/^scale/i.test(t)?1:0:i(r).transformCache[t].replace(/[()]/g,"");case"inject":var o=!1;switch(t.substr(0,t.length-1)){case"translate":o=!/(%|px|em|rem|vw|vh|\d)$/i.test(n);break;case"scal":case"scale":v.State.isAndroid&&i(r).transformCache[t]===a&&1>n&&(n=1),o=!/(\d)$/i.test(n);break;case"skew":o=!/(deg|\d)$/i.test(n);break;case"rotate":o=!/(deg|\d)$/i.test(n)}return o||(i(r).transformCache[t]="("+n+")"),i(r).transformCache[t]}}}();for(var e=0;e<x.Lists.colors.length;e++)!function(){var t=x.Lists.colors[e];x.Normalizations.registered[t]=function(e,r,n){switch(e){case"name":return t;case"extract":var o;if(x.RegEx.wrappedValueAlreadyExtracted.test(n))o=n;else{var i,s={black:"rgb(0, 0, 0)",blue:"rgb(0, 0, 255)",gray:"rgb(128, 128, 128)",green:"rgb(0, 128, 0)",red:"rgb(255, 0, 0)",white:"rgb(255, 255, 255)"};/^[A-z]+$/i.test(n)?i=s[n]!==a?s[n]:s.black:x.RegEx.isHex.test(n)?i="rgb("+x.Values.hexToRgb(n).join(" ")+")":/^rgba?\(/i.test(n)||(i=s.black),o=(i||n).toString().match(x.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g," ")}return 8>=f||3!==o.split(" ").length||(o+=" 1"),o;case"inject":return 8>=f?4===n.split(" ").length&&(n=n.split(/\s+/).slice(0,3).join(" ")):3===n.split(" ").length&&(n+=" 1"),(8>=f?"rgb":"rgba")+"("+n.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(e){return e.replace(/-(\w)/g,function(e,t){return t.toUpperCase()})},SVGAttribute:function(e){var t="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(f||v.State.isAndroid&&!v.State.isChrome)&&(t+="|transform"),new RegExp("^("+t+")$","i").test(e)},prefixCheck:function(e){if(v.State.prefixMatches[e])return[v.State.prefixMatches[e],!0];for(var t=["","Webkit","Moz","ms","O"],r=0,a=t.length;a>r;r++){var n;if(n=0===r?e:t[r]+e.replace(/^\w/,function(e){return e.toUpperCase()}),g.isString(v.State.prefixElement.style[n]))return v.State.prefixMatches[e]=n,[n,!0]}return[e,!1]}},Values:{hexToRgb:function(e){var t=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,r=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,a;return e=e.replace(t,function(e,t,r,a){return t+t+r+r+a+a}),a=r.exec(e),a?[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)]:[0,0,0]},isCSSNullValue:function(e){return 0==e||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(e)},getUnitType:function(e){return/^(rotate|skew)/i.test(e)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(e)?"":"px"},getDisplayType:function(e){var t=e&&e.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(t)?"inline":/^(li)$/i.test(t)?"list-item":/^(tr)$/i.test(t)?"table-row":/^(table)$/i.test(t)?"table":/^(tbody)$/i.test(t)?"table-row-group":"block"},addClass:function(e,t){e.classList?e.classList.add(t):e.className+=(e.className.length?" ":"")+t},removeClass:function(e,t){e.classList?e.classList.remove(t):e.className=e.className.toString().replace(new RegExp("(^|\\s)"+t.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(e,r,n,o){function s(e,r){function n(){u&&x.setPropertyValue(e,"display","none")}var l=0;if(8>=f)l=$.css(e,r);else{var u=!1;if(/^(width|height)$/.test(r)&&0===x.getPropertyValue(e,"display")&&(u=!0,x.setPropertyValue(e,"display",x.Values.getDisplayType(e))),!o){if("height"===r&&"border-box"!==x.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var c=e.offsetHeight-(parseFloat(x.getPropertyValue(e,"borderTopWidth"))||0)-(parseFloat(x.getPropertyValue(e,"borderBottomWidth"))||0)-(parseFloat(x.getPropertyValue(e,"paddingTop"))||0)-(parseFloat(x.getPropertyValue(e,"paddingBottom"))||0);return n(),c}if("width"===r&&"border-box"!==x.getPropertyValue(e,"boxSizing").toString().toLowerCase()){var p=e.offsetWidth-(parseFloat(x.getPropertyValue(e,"borderLeftWidth"))||0)-(parseFloat(x.getPropertyValue(e,"borderRightWidth"))||0)-(parseFloat(x.getPropertyValue(e,"paddingLeft"))||0)-(parseFloat(x.getPropertyValue(e,"paddingRight"))||0);return n(),p}}var d;d=i(e)===a?t.getComputedStyle(e,null):i(e).computedStyle?i(e).computedStyle:i(e).computedStyle=t.getComputedStyle(e,null),"borderColor"===r&&(r="borderTopColor"),l=9===f&&"filter"===r?d.getPropertyValue(r):d[r],(""===l||null===l)&&(l=e.style[r]),n()}if("auto"===l&&/^(top|right|bottom|left)$/i.test(r)){var g=s(e,"position");("fixed"===g||"absolute"===g&&/top|left/i.test(r))&&(l=$(e).position()[r]+"px")}return l}var l;if(x.Hooks.registered[r]){var u=r,c=x.Hooks.getRoot(u);n===a&&(n=x.getPropertyValue(e,x.Names.prefixCheck(c)[0])),x.Normalizations.registered[c]&&(n=x.Normalizations.registered[c]("extract",e,n)),l=x.Hooks.extractValue(u,n)}else if(x.Normalizations.registered[r]){var p,d;p=x.Normalizations.registered[r]("name",e),"transform"!==p&&(d=s(e,x.Names.prefixCheck(p)[0]),x.Values.isCSSNullValue(d)&&x.Hooks.templates[r]&&(d=x.Hooks.templates[r][1])),l=x.Normalizations.registered[r]("extract",e,d)}if(!/^[\d-]/.test(l))if(i(e)&&i(e).isSVG&&x.Names.SVGAttribute(r))if(/^(height|width)$/i.test(r))try{l=e.getBBox()[r]}catch(g){l=0}else l=e.getAttribute(r);else l=s(e,x.Names.prefixCheck(r)[0]);return x.Values.isCSSNullValue(l)&&(l=0),v.debug>=2&&console.log("Get "+r+": "+l),l},setPropertyValue:function(e,r,a,n,o){var s=r;if("scroll"===r)o.container?o.container["scroll"+o.direction]=a:"Left"===o.direction?t.scrollTo(a,o.alternateValue):t.scrollTo(o.alternateValue,a);else if(x.Normalizations.registered[r]&&"transform"===x.Normalizations.registered[r]("name",e))x.Normalizations.registered[r]("inject",e,a),s="transform",a=i(e).transformCache[r];else{if(x.Hooks.registered[r]){var l=r,u=x.Hooks.getRoot(r);n=n||x.getPropertyValue(e,u),a=x.Hooks.injectValue(l,a,n),r=u}if(x.Normalizations.registered[r]&&(a=x.Normalizations.registered[r]("inject",e,a),r=x.Normalizations.registered[r]("name",e)),s=x.Names.prefixCheck(r)[0],8>=f)try{e.style[s]=a}catch(c){v.debug&&console.log("Browser does not support ["+a+"] for ["+s+"]")}else i(e)&&i(e).isSVG&&x.Names.SVGAttribute(r)?e.setAttribute(r,a):e.style[s]=a;v.debug>=2&&console.log("Set "+r+" ("+s+"): "+a)}return[s,a]},flushTransformCache:function(e){function t(t){return parseFloat(x.getPropertyValue(e,t))}var r="";if((f||v.State.isAndroid&&!v.State.isChrome)&&i(e).isSVG){var a={translate:[t("translateX"),t("translateY")],skewX:[t("skewX")],skewY:[t("skewY")],scale:1!==t("scale")?[t("scale"),t("scale")]:[t("scaleX"),t("scaleY")],rotate:[t("rotateZ"),0,0]};$.each(i(e).transformCache,function(e){/^translate/i.test(e)?e="translate":/^scale/i.test(e)?e="scale":/^rotate/i.test(e)&&(e="rotate"),a[e]&&(r+=e+"("+a[e].join(" ")+") ",delete a[e])})}else{var n,o;$.each(i(e).transformCache,function(t){return n=i(e).transformCache[t],"transformPerspective"===t?(o=n,!0):(9===f&&"rotateZ"===t&&(t="rotate"),void(r+=t+n+" "))}),o&&(r="perspective"+o+" "+r)}x.setPropertyValue(e,"transform",r)}};x.Hooks.register(),x.Normalizations.register(),v.hook=function(e,t,r){var n=a;return e=o(e),$.each(e,function(e,o){if(i(o)===a&&v.init(o),r===a)n===a&&(n=v.CSS.getPropertyValue(o,t));else{var s=v.CSS.setPropertyValue(o,t,r);"transform"===s[0]&&v.CSS.flushTransformCache(o),n=s}}),n};var S=function(){function e(){return l?T.promise||null:f}function n(){function e(e){function p(e,t){var r=a,i=a,s=a;return g.isArray(e)?(r=e[0],!g.isArray(e[1])&&/^[\d-]/.test(e[1])||g.isFunction(e[1])||x.RegEx.isHex.test(e[1])?s=e[1]:(g.isString(e[1])&&!x.RegEx.isHex.test(e[1])||g.isArray(e[1]))&&(i=t?e[1]:u(e[1],o.duration),e[2]!==a&&(s=e[2]))):r=e,t||(i=i||o.easing),g.isFunction(r)&&(r=r.call(n,w,P)),g.isFunction(s)&&(s=s.call(n,w,P)),[r||0,i,s]}function f(e,t){var r,a;return a=(t||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(e){return r=e,""}),r||(r=x.Values.getUnitType(e)),[a,r]}function d(){var e={myParent:n.parentNode||r.body,position:x.getPropertyValue(n,"position"),fontSize:x.getPropertyValue(n,"fontSize")},a=e.position===N.lastPosition&&e.myParent===N.lastParent,o=e.fontSize===N.lastFontSize;N.lastParent=e.myParent,N.lastPosition=e.position,N.lastFontSize=e.fontSize;var s=100,l={};if(o&&a)l.emToPx=N.lastEmToPx,l.percentToPxWidth=N.lastPercentToPxWidth,l.percentToPxHeight=N.lastPercentToPxHeight;else{var u=i(n).isSVG?r.createElementNS("http://www.w3.org/2000/svg","rect"):r.createElement("div");v.init(u),e.myParent.appendChild(u),$.each(["overflow","overflowX","overflowY"],function(e,t){v.CSS.setPropertyValue(u,t,"hidden")}),v.CSS.setPropertyValue(u,"position",e.position),v.CSS.setPropertyValue(u,"fontSize",e.fontSize),v.CSS.setPropertyValue(u,"boxSizing","content-box"),$.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(e,t){v.CSS.setPropertyValue(u,t,s+"%")}),v.CSS.setPropertyValue(u,"paddingLeft",s+"em"),l.percentToPxWidth=N.lastPercentToPxWidth=(parseFloat(x.getPropertyValue(u,"width",null,!0))||1)/s,l.percentToPxHeight=N.lastPercentToPxHeight=(parseFloat(x.getPropertyValue(u,"height",null,!0))||1)/s,l.emToPx=N.lastEmToPx=(parseFloat(x.getPropertyValue(u,"paddingLeft"))||1)/s,e.myParent.removeChild(u)}return null===N.remToPx&&(N.remToPx=parseFloat(x.getPropertyValue(r.body,"fontSize"))||16),null===N.vwToPx&&(N.vwToPx=parseFloat(t.innerWidth)/100,N.vhToPx=parseFloat(t.innerHeight)/100),l.remToPx=N.remToPx,l.vwToPx=N.vwToPx,l.vhToPx=N.vhToPx,v.debug>=1&&console.log("Unit ratios: "+JSON.stringify(l),n),l}if(o.begin&&0===w)try{o.begin.call(m,m)}catch(y){setTimeout(function(){throw y},1)}if("scroll"===k){var S=/^x$/i.test(o.axis)?"Left":"Top",V=parseFloat(o.offset)||0,C,A,F;o.container?g.isWrapped(o.container)||g.isNode(o.container)?(o.container=o.container[0]||o.container,C=o.container["scroll"+S],F=C+$(n).position()[S.toLowerCase()]+V):o.container=null:(C=v.State.scrollAnchor[v.State["scrollProperty"+S]],A=v.State.scrollAnchor[v.State["scrollProperty"+("Left"===S?"Top":"Left")]],F=$(n).offset()[S.toLowerCase()]+V),s={scroll:{rootPropertyValue:!1,startValue:C,currentValue:C,endValue:F,unitType:"",easing:o.easing,scrollData:{container:o.container,direction:S,alternateValue:A}},element:n},v.debug&&console.log("tweensContainer (scroll): ",s.scroll,n)}else if("reverse"===k){if(!i(n).tweensContainer)return void $.dequeue(n,o.queue);"none"===i(n).opts.display&&(i(n).opts.display="auto"),"hidden"===i(n).opts.visibility&&(i(n).opts.visibility="visible"),i(n).opts.loop=!1,i(n).opts.begin=null,i(n).opts.complete=null,b.easing||delete o.easing,b.duration||delete o.duration,o=$.extend({},i(n).opts,o);var E=$.extend(!0,{},i(n).tweensContainer);for(var j in E)if("element"!==j){var H=E[j].startValue;E[j].startValue=E[j].currentValue=E[j].endValue,E[j].endValue=H,g.isEmptyObject(b)||(E[j].easing=o.easing),v.debug&&console.log("reverse tweensContainer ("+j+"): "+JSON.stringify(E[j]),n)}s=E}else if("start"===k){var E;i(n).tweensContainer&&i(n).isAnimating===!0&&(E=i(n).tweensContainer),$.each(h,function(e,t){if(RegExp("^"+x.Lists.colors.join("$|^")+"$").test(e)){var r=p(t,!0),n=r[0],o=r[1],i=r[2];if(x.RegEx.isHex.test(n)){for(var s=["Red","Green","Blue"],l=x.Values.hexToRgb(n),u=i?x.Values.hexToRgb(i):a,c=0;c<s.length;c++){var f=[l[c]];o&&f.push(o),u!==a&&f.push(u[c]),h[e+s[c]]=f}delete h[e]}}});for(var R in h){var O=p(h[R]),z=O[0],q=O[1],M=O[2];R=x.Names.camelCase(R);var I=x.Hooks.getRoot(R),B=!1;if(i(n).isSVG||"tween"===I||x.Names.prefixCheck(I)[1]!==!1||x.Normalizations.registered[I]!==a){(o.display!==a&&null!==o.display&&"none"!==o.display||o.visibility!==a&&"hidden"!==o.visibility)&&/opacity|filter/.test(R)&&!M&&0!==z&&(M=0),o._cacheValues&&E&&E[R]?(M===a&&(M=E[R].endValue+E[R].unitType),B=i(n).rootPropertyValueCache[I]):x.Hooks.registered[R]?M===a?(B=x.getPropertyValue(n,I),M=x.getPropertyValue(n,R,B)):B=x.Hooks.templates[I][1]:M===a&&(M=x.getPropertyValue(n,R));var W,G,D,X=!1;if(W=f(R,M),M=W[0],D=W[1],W=f(R,z),z=W[0].replace(/^([+-\/*])=/,function(e,t){return X=t,""}),G=W[1],M=parseFloat(M)||0,z=parseFloat(z)||0,"%"===G&&(/^(fontSize|lineHeight)$/.test(R)?(z/=100,G="em"):/^scale/.test(R)?(z/=100,G=""):/(Red|Green|Blue)$/i.test(R)&&(z=z/100*255,G="")),/[\/*]/.test(X))G=D;else if(D!==G&&0!==M)if(0===z)G=D;else{l=l||d();var Y=/margin|padding|left|right|width|text|word|letter/i.test(R)||/X$/.test(R)||"x"===R?"x":"y";switch(D){case"%":M*="x"===Y?l.percentToPxWidth:l.percentToPxHeight;break;case"px":break;default:M*=l[D+"ToPx"]}switch(G){case"%":M*=1/("x"===Y?l.percentToPxWidth:l.percentToPxHeight);break;case"px":break;default:M*=1/l[G+"ToPx"]}}switch(X){case"+":z=M+z;break;case"-":z=M-z;break;case"*":z=M*z;break;case"/":z=M/z}s[R]={rootPropertyValue:B,startValue:M,currentValue:M,endValue:z,unitType:G,easing:q},v.debug&&console.log("tweensContainer ("+R+"): "+JSON.stringify(s[R]),n)}else v.debug&&console.log("Skipping ["+I+"] due to a lack of browser support.")}s.element=n}s.element&&(x.Values.addClass(n,"velocity-animating"),L.push(s),""===o.queue&&(i(n).tweensContainer=s,i(n).opts=o),i(n).isAnimating=!0,w===P-1?(v.State.calls.push([L,m,o,null,T.resolver]),v.State.isTicking===!1&&(v.State.isTicking=!0,c())):w++)}var n=this,o=$.extend({},v.defaults,b),s={},l;switch(i(n)===a&&v.init(n),parseFloat(o.delay)&&o.queue!==!1&&$.queue(n,o.queue,function(e){v.velocityQueueEntryFlag=!0,i(n).delayTimer={setTimeout:setTimeout(e,parseFloat(o.delay)),next:e}}),o.duration.toString().toLowerCase()){case"fast":o.duration=200;break;case"normal":o.duration=y;break;case"slow":o.duration=600;break;default:o.duration=parseFloat(o.duration)||1}v.mock!==!1&&(v.mock===!0?o.duration=o.delay=1:(o.duration*=parseFloat(v.mock)||1,o.delay*=parseFloat(v.mock)||1)),o.easing=u(o.easing,o.duration),o.begin&&!g.isFunction(o.begin)&&(o.begin=null),o.progress&&!g.isFunction(o.progress)&&(o.progress=null),o.complete&&!g.isFunction(o.complete)&&(o.complete=null),o.display!==a&&null!==o.display&&(o.display=o.display.toString().toLowerCase(),"auto"===o.display&&(o.display=v.CSS.Values.getDisplayType(n))),o.visibility!==a&&null!==o.visibility&&(o.visibility=o.visibility.toString().toLowerCase()),o.mobileHA=o.mobileHA&&v.State.isMobile&&!v.State.isGingerbread,o.queue===!1?o.delay?setTimeout(e,o.delay):e():$.queue(n,o.queue,function(t,r){return r===!0?(T.promise&&T.resolver(m),!0):(v.velocityQueueEntryFlag=!0,void e(t))}),""!==o.queue&&"fx"!==o.queue||"inprogress"===$.queue(n)[0]||$.dequeue(n)}var s=arguments[0]&&(arguments[0].p||$.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||g.isString(arguments[0].properties)),l,f,d,m,h,b;if(g.isWrapped(this)?(l=!1,d=0,m=this,f=this):(l=!0,d=1,m=s?arguments[0].elements||arguments[0].e:arguments[0]),m=o(m)){s?(h=arguments[0].properties||arguments[0].p,b=arguments[0].options||arguments[0].o):(h=arguments[d],b=arguments[d+1]);var P=m.length,w=0;if(!/^(stop|finish)$/i.test(h)&&!$.isPlainObject(b)){var V=d+1;b={};for(var C=V;C<arguments.length;C++)g.isArray(arguments[C])||!/^(fast|normal|slow)$/i.test(arguments[C])&&!/^\d/.test(arguments[C])?g.isString(arguments[C])||g.isArray(arguments[C])?b.easing=arguments[C]:g.isFunction(arguments[C])&&(b.complete=arguments[C]):b.duration=arguments[C]}var T={promise:null,resolver:null,rejecter:null};l&&v.Promise&&(T.promise=new v.Promise(function(e,t){T.resolver=e,T.rejecter=t}));var k;switch(h){case"scroll":k="scroll";break;case"reverse":k="reverse";break;case"finish":case"stop":$.each(m,function(e,t){i(t)&&i(t).delayTimer&&(clearTimeout(i(t).delayTimer.setTimeout),i(t).delayTimer.next&&i(t).delayTimer.next(),delete i(t).delayTimer)});var A=[];return $.each(v.State.calls,function(e,t){t&&$.each(t[1],function(r,n){var o=b===a?"":b;return o===!0||t[2].queue===o||b===a&&t[2].queue===!1?void $.each(m,function(r,a){a===n&&((b===!0||g.isString(b))&&($.each($.queue(a,g.isString(b)?b:""),function(e,t){g.isFunction(t)&&t(null,!0)}),$.queue(a,g.isString(b)?b:"",[])),"stop"===h?(i(a)&&i(a).tweensContainer&&o!==!1&&$.each(i(a).tweensContainer,function(e,t){t.endValue=t.currentValue | ||
222 | }),A.push(e)):"finish"===h&&(t[2].duration=1))}):!0})}),"stop"===h&&($.each(A,function(e,t){p(t,!0)}),T.promise&&T.resolver(m)),e();default:if(!$.isPlainObject(h)||g.isEmptyObject(h)){if(g.isString(h)&&v.Redirects[h]){var F=$.extend({},b),E=F.duration,j=F.delay||0;return F.backwards===!0&&(m=$.extend(!0,[],m).reverse()),$.each(m,function(e,t){parseFloat(F.stagger)?F.delay=j+parseFloat(F.stagger)*e:g.isFunction(F.stagger)&&(F.delay=j+F.stagger.call(t,e,P)),F.drag&&(F.duration=parseFloat(E)||(/^(callout|transition)/.test(h)?1e3:y),F.duration=Math.max(F.duration*(F.backwards?1-e/P:(e+1)/P),.75*F.duration,200)),v.Redirects[h].call(t,t,F||{},e,P,m,T.promise?T:a)}),e()}var H="Velocity: First argument ("+h+") was not a property map, a known action, or a registered redirect. Aborting.";return T.promise?T.rejecter(new Error(H)):console.log(H),e()}k="start"}var N={lastParent:null,lastPosition:null,lastFontSize:null,lastPercentToPxWidth:null,lastPercentToPxHeight:null,lastEmToPx:null,remToPx:null,vwToPx:null,vhToPx:null},L=[];$.each(m,function(e,t){g.isNode(t)&&n.call(t)});var F=$.extend({},v.defaults,b),R;if(F.loop=parseInt(F.loop),R=2*F.loop-1,F.loop)for(var O=0;R>O;O++){var z={delay:F.delay,progress:F.progress};O===R-1&&(z.display=F.display,z.visibility=F.visibility,z.complete=F.complete),S(m,"reverse",z)}return e()}};v=$.extend(S,v),v.animate=S;var P=t.requestAnimationFrame||d;return v.State.isMobile||r.hidden===a||r.addEventListener("visibilitychange",function(){r.hidden?(P=function(e){return setTimeout(function(){e(!0)},16)},c()):P=t.requestAnimationFrame||d}),e.Velocity=v,e!==t&&(e.fn.velocity=S,e.fn.velocity.defaults=v.defaults),$.each(["Down","Up"],function(e,t){v.Redirects["slide"+t]=function(e,r,n,o,i,s){var l=$.extend({},r),u=l.begin,c=l.complete,p={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},f={};l.display===a&&(l.display="Down"===t?"inline"===v.CSS.Values.getDisplayType(e)?"inline-block":"block":"none"),l.begin=function(){u&&u.call(i,i);for(var r in p){f[r]=e.style[r];var a=v.CSS.getPropertyValue(e,r);p[r]="Down"===t?[a,0]:[0,a]}f.overflow=e.style.overflow,e.style.overflow="hidden"},l.complete=function(){for(var t in f)e.style[t]=f[t];c&&c.call(i,i),s&&s.resolver(i)},v(e,p,l)}}),$.each(["In","Out"],function(e,t){v.Redirects["fade"+t]=function(e,r,n,o,i,s){var l=$.extend({},r),u={opacity:"In"===t?1:0},c=l.complete;l.complete=n!==o-1?l.begin=null:function(){c&&c.call(i,i),s&&s.resolver(i)},l.display===a&&(l.display="In"===t?"auto":"none"),v(this,u,l)}}),v}(window.jQuery||window.Zepto||window,window,document)});;!function(a,b,c,d){"use strict";function k(a,b,c){return setTimeout(q(a,c),b)}function l(a,b,c){return Array.isArray(a)?(m(a,c[b],c),!0):!1}function m(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function n(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a}function o(a,b){return n(a,b,!0)}function p(a,b,c){var e,d=b.prototype;e=a.prototype=Object.create(d),e.constructor=a,e._super=d,c&&n(e,c)}function q(a,b){return function(){return a.apply(b,arguments)}}function r(a,b){return typeof a==g?a.apply(b?b[0]||d:d,b):a}function s(a,b){return a===d?b:a}function t(a,b,c){m(x(b),function(b){a.addEventListener(b,c,!1)})}function u(a,b,c){m(x(b),function(b){a.removeEventListener(b,c,!1)})}function v(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function w(a,b){return a.indexOf(b)>-1}function x(a){return a.trim().split(/\s+/g)}function y(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function z(a){return Array.prototype.slice.call(a,0)}function A(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];y(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function B(a,b){for(var c,f,g=b[0].toUpperCase()+b.slice(1),h=0;h<e.length;){if(c=e[h],f=c?c+g:b,f in a)return f;h++}return d}function D(){return C++}function E(a){var b=a.ownerDocument;return b.defaultView||b.parentWindow}function ab(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){r(a.options.enable,[a])&&c.handler(b)},this.init()}function bb(a){var b,c=a.options.inputClass;return b=c?c:H?wb:I?Eb:G?Gb:rb,new b(a,cb)}function cb(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&O&&0===d-e,g=b&(Q|R)&&0===d-e;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,db(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function db(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=gb(b)),e>1&&!c.firstMultiple?c.firstMultiple=gb(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=hb(d);b.timeStamp=j(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=lb(h,i),b.distance=kb(h,i),eb(c,b),b.offsetDirection=jb(b.deltaX,b.deltaY),b.scale=g?nb(g.pointers,d):1,b.rotation=g?mb(g.pointers,d):0,fb(c,b);var k=a.element;v(b.srcEvent.target,k)&&(k=b.srcEvent.target),b.target=k}function eb(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===O||f.eventType===Q)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function fb(a,b){var f,g,h,j,c=a.lastInterval||b,e=b.timeStamp-c.timeStamp;if(b.eventType!=R&&(e>N||c.velocity===d)){var k=c.deltaX-b.deltaX,l=c.deltaY-b.deltaY,m=ib(e,k,l);g=m.x,h=m.y,f=i(m.x)>i(m.y)?m.x:m.y,j=jb(k,l),a.lastInterval=b}else f=c.velocity,g=c.velocityX,h=c.velocityY,j=c.direction;b.velocity=f,b.velocityX=g,b.velocityY=h,b.direction=j}function gb(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:h(a.pointers[c].clientX),clientY:h(a.pointers[c].clientY)},c++;return{timeStamp:j(),pointers:b,center:hb(b),deltaX:a.deltaX,deltaY:a.deltaY}}function hb(a){var b=a.length;if(1===b)return{x:h(a[0].clientX),y:h(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:h(c/b),y:h(d/b)}}function ib(a,b,c){return{x:b/a||0,y:c/a||0}}function jb(a,b){return a===b?S:i(a)>=i(b)?a>0?T:U:b>0?V:W}function kb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function lb(a,b,c){c||(c=$);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function mb(a,b){return lb(b[1],b[0],_)-lb(a[1],a[0],_)}function nb(a,b){return kb(b[0],b[1],_)/kb(a[0],a[1],_)}function rb(){this.evEl=pb,this.evWin=qb,this.allow=!0,this.pressed=!1,ab.apply(this,arguments)}function wb(){this.evEl=ub,this.evWin=vb,ab.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function Ab(){this.evTarget=yb,this.evWin=zb,this.started=!1,ab.apply(this,arguments)}function Bb(a,b){var c=z(a.touches),d=z(a.changedTouches);return b&(Q|R)&&(c=A(c.concat(d),"identifier",!0)),[c,d]}function Eb(){this.evTarget=Db,this.targetIds={},ab.apply(this,arguments)}function Fb(a,b){var c=z(a.touches),d=this.targetIds;if(b&(O|P)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=z(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return v(a.target,i)}),b===O)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Q|R)&&delete d[g[e].identifier],e++;return h.length?[A(f.concat(h),"identifier",!0),h]:void 0}function Gb(){ab.apply(this,arguments);var a=q(this.handler,this);this.touch=new Eb(this.manager,a),this.mouse=new rb(this.manager,a)}function Pb(a,b){this.manager=a,this.set(b)}function Qb(a){if(w(a,Mb))return Mb;var b=w(a,Nb),c=w(a,Ob);return b&&c?Nb+" "+Ob:b||c?b?Nb:Ob:w(a,Lb)?Lb:Kb}function Yb(a){this.id=D(),this.manager=null,this.options=o(a||{},this.defaults),this.options.enable=s(this.options.enable,!0),this.state=Rb,this.simultaneous={},this.requireFail=[]}function Zb(a){return a&Wb?"cancel":a&Ub?"end":a&Tb?"move":a&Sb?"start":""}function $b(a){return a==W?"down":a==V?"up":a==T?"left":a==U?"right":""}function _b(a,b){var c=b.manager;return c?c.get(a):a}function ac(){Yb.apply(this,arguments)}function bc(){ac.apply(this,arguments),this.pX=null,this.pY=null}function cc(){ac.apply(this,arguments)}function dc(){Yb.apply(this,arguments),this._timer=null,this._input=null}function ec(){ac.apply(this,arguments)}function fc(){ac.apply(this,arguments)}function gc(){Yb.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function hc(a,b){return b=b||{},b.recognizers=s(b.recognizers,hc.defaults.preset),new kc(a,b)}function kc(a,b){b=b||{},this.options=o(b,hc.defaults),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=bb(this),this.touchAction=new Pb(this,this.options.touchAction),lc(this,!0),m(b.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function lc(a,b){var c=a.element;m(a.options.cssProps,function(a,d){c.style[B(c.style,d)]=b?a:""})}function mc(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var e=["","webkit","moz","MS","ms","o"],f=b.createElement("div"),g="function",h=Math.round,i=Math.abs,j=Date.now,C=1,F=/mobile|tablet|ip(ad|hone|od)|android/i,G="ontouchstart"in a,H=B(a,"PointerEvent")!==d,I=G&&F.test(navigator.userAgent),J="touch",K="pen",L="mouse",M="kinect",N=25,O=1,P=2,Q=4,R=8,S=1,T=2,U=4,V=8,W=16,X=T|U,Y=V|W,Z=X|Y,$=["x","y"],_=["clientX","clientY"];ab.prototype={handler:function(){},init:function(){this.evEl&&t(this.element,this.evEl,this.domHandler),this.evTarget&&t(this.target,this.evTarget,this.domHandler),this.evWin&&t(E(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&u(this.element,this.evEl,this.domHandler),this.evTarget&&u(this.target,this.evTarget,this.domHandler),this.evWin&&u(E(this.element),this.evWin,this.domHandler)}};var ob={mousedown:O,mousemove:P,mouseup:Q},pb="mousedown",qb="mousemove mouseup";p(rb,ab,{handler:function(a){var b=ob[a.type];b&O&&0===a.button&&(this.pressed=!0),b&P&&1!==a.which&&(b=Q),this.pressed&&this.allow&&(b&Q&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:L,srcEvent:a}))}});var sb={pointerdown:O,pointermove:P,pointerup:Q,pointercancel:R,pointerout:R},tb={2:J,3:K,4:L,5:M},ub="pointerdown",vb="pointermove pointerup pointercancel";a.MSPointerEvent&&(ub="MSPointerDown",vb="MSPointerMove MSPointerUp MSPointerCancel"),p(wb,ab,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=sb[d],f=tb[a.pointerType]||a.pointerType,g=f==J,h=y(b,a.pointerId,"pointerId");e&O&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Q|R)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var xb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},yb="touchstart",zb="touchstart touchmove touchend touchcancel";p(Ab,ab,{handler:function(a){var b=xb[a.type];if(b===O&&(this.started=!0),this.started){var c=Bb.call(this,a,b);b&(Q|R)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}});var Cb={touchstart:O,touchmove:P,touchend:Q,touchcancel:R},Db="touchstart touchmove touchend touchcancel";p(Eb,ab,{handler:function(a){var b=Cb[a.type],c=Fb.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:J,srcEvent:a})}}),p(Gb,ab,{handler:function(a,b,c){var d=c.pointerType==J,e=c.pointerType==L;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Q|R)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Hb=B(f.style,"touchAction"),Ib=Hb!==d,Jb="compute",Kb="auto",Lb="manipulation",Mb="none",Nb="pan-x",Ob="pan-y";Pb.prototype={set:function(a){a==Jb&&(a=this.compute()),Ib&&(this.manager.element.style[Hb]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return m(this.manager.recognizers,function(b){r(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),Qb(a.join(" "))},preventDefaults:function(a){if(!Ib){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return b.preventDefault(),void 0;var d=this.actions,e=w(d,Mb),f=w(d,Ob),g=w(d,Nb);return e||f&&c&X||g&&c&Y?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var Rb=1,Sb=2,Tb=4,Ub=8,Vb=Ub,Wb=16,Xb=32;Yb.prototype={defaults:{},set:function(a){return n(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(l(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=_b(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return l(a,"dropRecognizeWith",this)?this:(a=_b(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(l(a,"requireFailure",this))return this;var b=this.requireFail;return a=_b(a,this),-1===y(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(l(a,"dropRequireFailure",this))return this;a=_b(a,this);var b=y(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function d(d){b.manager.emit(b.options.event+(d?Zb(c):""),a)}var b=this,c=this.state;Ub>c&&d(!0),d(),c>=Ub&&d(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):(this.state=Xb,void 0)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(Xb|Rb)))return!1;a++}return!0},recognize:function(a){var b=n({},a);return r(this.options.enable,[this,b])?(this.state&(Vb|Wb|Xb)&&(this.state=Rb),this.state=this.process(b),this.state&(Sb|Tb|Ub|Wb)&&this.tryEmit(b),void 0):(this.reset(),this.state=Xb,void 0)},process:function(){},getTouchAction:function(){},reset:function(){}},p(ac,Yb,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(Sb|Tb),e=this.attrTest(a);return d&&(c&R||!e)?b|Wb:d||e?c&Q?b|Ub:b&Sb?b|Tb:Sb:Xb}}),p(bc,ac,{defaults:{event:"pan",threshold:10,pointers:1,direction:Z},getTouchAction:function(){var a=this.options.direction,b=[];return a&X&&b.push(Ob),a&Y&&b.push(Nb),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&X?(e=0===f?S:0>f?T:U,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?S:0>g?V:W,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return ac.prototype.attrTest.call(this,a)&&(this.state&Sb||!(this.state&Sb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),p(cc,ac,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&Sb)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),p(dc,Yb,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[Kb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,e=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Q|R)&&!e)this.reset();else if(a.eventType&O)this.reset(),this._timer=k(function(){this.state=Vb,this.tryEmit()},b.time,this);else if(a.eventType&Q)return Vb;return Xb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===Vb&&(a&&a.eventType&Q?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=j(),this.manager.emit(this.options.event,this._input)))}}),p(ec,ac,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[Mb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&Sb)}}),p(fc,ac,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:X|Y,pointers:1},getTouchAction:function(){return bc.prototype.getTouchAction.call(this)},attrTest:function(a){var c,b=this.options.direction;return b&(X|Y)?c=a.velocity:b&X?c=a.velocityX:b&Y&&(c=a.velocityY),this._super.attrTest.call(this,a)&&b&a.direction&&a.distance>this.options.threshold&&i(c)>this.options.velocity&&a.eventType&Q},emit:function(a){var b=$b(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),p(gc,Yb,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[Lb]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,e=a.deltaTime<b.time;if(this.reset(),a.eventType&O&&0===this.count)return this.failTimeout();if(d&&e&&c){if(a.eventType!=Q)return this.failTimeout();var f=this.pTime?a.timeStamp-this.pTime<b.interval:!0,g=!this.pCenter||kb(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,g&&f?this.count+=1:this.count=1,this._input=a;var h=this.count%b.taps;if(0===h)return this.hasRequireFailures()?(this._timer=k(function(){this.state=Vb,this.tryEmit()},b.interval,this),Sb):Vb}return Xb},failTimeout:function(){return this._timer=k(function(){this.state=Xb},this.options.interval,this),Xb},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==Vb&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),hc.VERSION="2.0.4",hc.defaults={domEvents:!1,touchAction:Jb,enable:!0,inputTarget:null,inputClass:null,preset:[[ec,{enable:!1}],[cc,{enable:!1},["rotate"]],[fc,{direction:X}],[bc,{direction:X},["swipe"]],[gc],[gc,{event:"doubletap",taps:2},["tap"]],[dc]],cssProps:{userSelect:"default",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var ic=1,jc=2;kc.prototype={set:function(a){return n(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?jc:ic},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&Vb)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===jc||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(Sb|Tb|Ub)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof Yb)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(l(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(l(a,"remove",this))return this;var b=this.recognizers;return a=this.get(a),b.splice(y(b,a),1),this.touchAction.update(),this},on:function(a,b){var c=this.handlers;return m(x(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return m(x(a),function(a){b?c[a].splice(y(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&mc(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&lc(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},n(hc,{INPUT_START:O,INPUT_MOVE:P,INPUT_END:Q,INPUT_CANCEL:R,STATE_POSSIBLE:Rb,STATE_BEGAN:Sb,STATE_CHANGED:Tb,STATE_ENDED:Ub,STATE_RECOGNIZED:Vb,STATE_CANCELLED:Wb,STATE_FAILED:Xb,DIRECTION_NONE:S,DIRECTION_LEFT:T,DIRECTION_RIGHT:U,DIRECTION_UP:V,DIRECTION_DOWN:W,DIRECTION_HORIZONTAL:X,DIRECTION_VERTICAL:Y,DIRECTION_ALL:Z,Manager:kc,Input:ab,TouchAction:Pb,TouchInput:Eb,MouseInput:rb,PointerEventInput:wb,TouchMouseInput:Gb,SingleTouchInput:Ab,Recognizer:Yb,AttrRecognizer:ac,Tap:gc,Pan:bc,Swipe:fc,Pinch:cc,Rotate:ec,Press:dc,on:t,off:u,each:m,merge:o,extend:n,inherit:p,bindFn:q,prefixed:B}),typeof define==g&&define.amd?define(function(){return hc}):"undefined"!=typeof module&&module.exports?module.exports=hc:a[c]=hc}(window,document,"Hammer");;(function(factory) { | ||
223 | if (typeof define === 'function' && define.amd) { | ||
224 | define(['jquery', 'hammerjs'], factory); | ||
225 | } else if (typeof exports === 'object') { | ||
226 | factory(require('jquery'), require('hammerjs')); | ||
227 | } else { | ||
228 | factory(jQuery, Hammer); | ||
229 | } | ||
230 | }(function($, Hammer) { | ||
231 | function hammerify(el, options) { | ||
232 | var $el = $(el); | ||
233 | if(!$el.data("hammer")) { | ||
234 | $el.data("hammer", new Hammer($el[0], options)); | ||
235 | } | ||
236 | } | ||
237 | |||
238 | $.fn.hammer = function(options) { | ||
239 | return this.each(function() { | ||
240 | hammerify(this, options); | ||
241 | }); | ||
242 | }; | ||
243 | |||
244 | // extend the emit method to also trigger jQuery events | ||
245 | Hammer.Manager.prototype.emit = (function(originalEmit) { | ||
246 | return function(type, data) { | ||
247 | originalEmit.call(this, type, data); | ||
248 | $(this.element).trigger({ | ||
249 | type: type, | ||
250 | gesture: data | ||
251 | }); | ||
252 | }; | ||
253 | })(Hammer.Manager.prototype.emit); | ||
254 | })); | ||
255 | ;window.Materialize = {}; | ||
256 | |||
257 | // Unique ID | ||
258 | Materialize.guid = (function() { | ||
259 | function s4() { | ||
260 | return Math.floor((1 + Math.random()) * 0x10000) | ||
261 | .toString(16) | ||
262 | .substring(1); | ||
263 | } | ||
264 | return function() { | ||
265 | return s4() + s4() + '-' + s4() + '-' + s4() + '-' + | ||
266 | s4() + '-' + s4() + s4() + s4(); | ||
267 | }; | ||
268 | })(); | ||
269 | |||
270 | Materialize.elementOrParentIsFixed = function(element) { | ||
271 | var $element = $(element); | ||
272 | var $checkElements = $element.add($element.parents()); | ||
273 | var isFixed = false; | ||
274 | $checkElements.each(function(){ | ||
275 | if ($(this).css("position") === "fixed") { | ||
276 | isFixed = true; | ||
277 | return false; | ||
278 | } | ||
279 | }); | ||
280 | return isFixed; | ||
281 | }; | ||
282 | |||
283 | // Velocity has conflicts when loaded with jQuery, this will check for it | ||
284 | var Vel; | ||
285 | if ($) { | ||
286 | Vel = $.Velocity; | ||
287 | } | ||
288 | else { | ||
289 | Vel = Velocity; | ||
290 | } | ||
291 | ;(function ($) { | ||
292 | $.fn.collapsible = function(options) { | ||
293 | var defaults = { | ||
294 | accordion: undefined | ||
295 | }; | ||
296 | |||
297 | options = $.extend(defaults, options); | ||
298 | |||
299 | |||
300 | return this.each(function() { | ||
301 | |||
302 | var $this = $(this); | ||
303 | |||
304 | var $panel_headers = $(this).find('> li > .collapsible-header'); | ||
305 | |||
306 | var collapsible_type = $this.data("collapsible"); | ||
307 | |||
308 | // Turn off any existing event handlers | ||
309 | $this.off('click.collapse', '.collapsible-header'); | ||
310 | $panel_headers.off('click.collapse'); | ||
311 | |||
312 | |||
313 | /**************** | ||
314 | Helper Functions | ||
315 | ****************/ | ||
316 | |||
317 | // Accordion Open | ||
318 | function accordionOpen(object) { | ||
319 | $panel_headers = $this.find('> li > .collapsible-header'); | ||
320 | if (object.hasClass('active')) { | ||
321 | object.parent().addClass('active'); | ||
322 | } | ||
323 | else { | ||
324 | object.parent().removeClass('active'); | ||
325 | } | ||
326 | if (object.parent().hasClass('active')){ | ||
327 | object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); | ||
328 | } | ||
329 | else{ | ||
330 | object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); | ||
331 | } | ||
332 | |||
333 | $panel_headers.not(object).removeClass('active').parent().removeClass('active'); | ||
334 | $panel_headers.not(object).parent().children('.collapsible-body').stop(true,false).slideUp( | ||
335 | { | ||
336 | duration: 350, | ||
337 | easing: "easeOutQuart", | ||
338 | queue: false, | ||
339 | complete: | ||
340 | function() { | ||
341 | $(this).css('height', ''); | ||
342 | } | ||
343 | }); | ||
344 | } | ||
345 | |||
346 | // Expandable Open | ||
347 | function expandableOpen(object) { | ||
348 | if (object.hasClass('active')) { | ||
349 | object.parent().addClass('active'); | ||
350 | } | ||
351 | else { | ||
352 | object.parent().removeClass('active'); | ||
353 | } | ||
354 | if (object.parent().hasClass('active')){ | ||
355 | object.siblings('.collapsible-body').stop(true,false).slideDown({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); | ||
356 | } | ||
357 | else{ | ||
358 | object.siblings('.collapsible-body').stop(true,false).slideUp({ duration: 350, easing: "easeOutQuart", queue: false, complete: function() {$(this).css('height', '');}}); | ||
359 | } | ||
360 | } | ||
361 | |||
362 | /** | ||
363 | * Check if object is children of panel header | ||
364 | * @param {Object} object Jquery object | ||
365 | * @return {Boolean} true if it is children | ||
366 | */ | ||
367 | function isChildrenOfPanelHeader(object) { | ||
368 | |||
369 | var panelHeader = getPanelHeader(object); | ||
370 | |||
371 | return panelHeader.length > 0; | ||
372 | } | ||
373 | |||
374 | /** | ||
375 | * Get panel header from a children element | ||
376 | * @param {Object} object Jquery object | ||
377 | * @return {Object} panel header object | ||
378 | */ | ||
379 | function getPanelHeader(object) { | ||
380 | |||
381 | return object.closest('li > .collapsible-header'); | ||
382 | } | ||
383 | |||
384 | /***** End Helper Functions *****/ | ||
385 | |||
386 | |||
387 | |||
388 | if (options.accordion || collapsible_type === "accordion" || collapsible_type === undefined) { // Handle Accordion | ||
389 | // Add click handler to only direct collapsible header children | ||
390 | $panel_headers = $this.find('> li > .collapsible-header'); | ||
391 | $panel_headers.on('click.collapse', function (e) { | ||
392 | var element = $(e.target); | ||
393 | |||
394 | if (isChildrenOfPanelHeader(element)) { | ||
395 | element = getPanelHeader(element); | ||
396 | } | ||
397 | |||
398 | element.toggleClass('active'); | ||
399 | accordionOpen(element); | ||
400 | }); | ||
401 | // Open first active | ||
402 | accordionOpen($panel_headers.filter('.active').first()); | ||
403 | } | ||
404 | else { // Handle Expandables | ||
405 | $panel_headers.each(function () { | ||
406 | // Add click handler to only direct collapsible header children | ||
407 | $(this).on('click.collapse', function (e) { | ||
408 | var element = $(e.target); | ||
409 | if (isChildrenOfPanelHeader(element)) { | ||
410 | element = getPanelHeader(element); | ||
411 | } | ||
412 | element.toggleClass('active'); | ||
413 | expandableOpen(element); | ||
414 | }); | ||
415 | // Open any bodies that have the active class | ||
416 | if ($(this).hasClass('active')) { | ||
417 | expandableOpen($(this)); | ||
418 | } | ||
419 | |||
420 | }); | ||
421 | } | ||
422 | |||
423 | }); | ||
424 | }; | ||
425 | |||
426 | $(document).ready(function(){ | ||
427 | $('.collapsible').collapsible(); | ||
428 | }); | ||
429 | }( jQuery ));;(function ($) { | ||
430 | |||
431 | // Add posibility to scroll to selected option | ||
432 | // usefull for select for example | ||
433 | $.fn.scrollTo = function(elem) { | ||
434 | $(this).scrollTop($(this).scrollTop() - $(this).offset().top + $(elem).offset().top); | ||
435 | return this; | ||
436 | }; | ||
437 | |||
438 | $.fn.dropdown = function (option) { | ||
439 | var defaults = { | ||
440 | inDuration: 300, | ||
441 | outDuration: 225, | ||
442 | constrain_width: true, // Constrains width of dropdown to the activator | ||
443 | hover: false, | ||
444 | gutter: 0, // Spacing from edge | ||
445 | belowOrigin: false, | ||
446 | alignment: 'left' | ||
447 | }; | ||
448 | |||
449 | this.each(function(){ | ||
450 | var origin = $(this); | ||
451 | var options = $.extend({}, defaults, option); | ||
452 | |||
453 | // Dropdown menu | ||
454 | var activates = $("#"+ origin.attr('data-activates')); | ||
455 | |||
456 | function updateOptions() { | ||
457 | if (origin.data('induration') !== undefined) | ||
458 | options.inDuration = origin.data('inDuration'); | ||
459 | if (origin.data('outduration') !== undefined) | ||
460 | options.outDuration = origin.data('outDuration'); | ||
461 | if (origin.data('constrainwidth') !== undefined) | ||
462 | options.constrain_width = origin.data('constrainwidth'); | ||
463 | if (origin.data('hover') !== undefined) | ||
464 | options.hover = origin.data('hover'); | ||
465 | if (origin.data('gutter') !== undefined) | ||
466 | options.gutter = origin.data('gutter'); | ||
467 | if (origin.data('beloworigin') !== undefined) | ||
468 | options.belowOrigin = origin.data('beloworigin'); | ||
469 | if (origin.data('alignment') !== undefined) | ||
470 | options.alignment = origin.data('alignment'); | ||
471 | } | ||
472 | |||
473 | updateOptions(); | ||
474 | |||
475 | // Attach dropdown to its activator | ||
476 | origin.after(activates); | ||
477 | |||
478 | /* | ||
479 | Helper function to position and resize dropdown. | ||
480 | Used in hover and click handler. | ||
481 | */ | ||
482 | function placeDropdown() { | ||
483 | // Check html data attributes | ||
484 | updateOptions(); | ||
485 | |||
486 | // Set Dropdown state | ||
487 | activates.addClass('active'); | ||
488 | |||
489 | // Constrain width | ||
490 | if (options.constrain_width === true) { | ||
491 | activates.css('width', origin.outerWidth()); | ||
492 | } | ||
493 | else { | ||
494 | activates.css('white-space', 'nowrap'); | ||
495 | } | ||
496 | var offset = 0; | ||
497 | if (options.belowOrigin === true) { | ||
498 | offset = origin.height(); | ||
499 | } | ||
500 | |||
501 | // Offscreen detection | ||
502 | var offsetLeft = origin.offset().left; | ||
503 | var activatesLeft, width_difference, gutter_spacing; | ||
504 | if (offsetLeft + activates.innerWidth() > $(window).width()) { | ||
505 | options.alignment = 'right'; | ||
506 | } | ||
507 | else if (offsetLeft - activates.innerWidth() + origin.innerWidth() < 0) { | ||
508 | options.alignment = 'left'; | ||
509 | } | ||
510 | |||
511 | // Handle edge alignment | ||
512 | if (options.alignment === 'left') { | ||
513 | width_difference = 0; | ||
514 | gutter_spacing = options.gutter; | ||
515 | activatesLeft = origin.position().left + width_difference + gutter_spacing; | ||
516 | |||
517 | // Position dropdown | ||
518 | activates.css({ left: activatesLeft }); | ||
519 | } | ||
520 | else if (options.alignment === 'right') { | ||
521 | var offsetRight = $(window).width() - offsetLeft - origin.innerWidth(); | ||
522 | width_difference = 0; | ||
523 | gutter_spacing = options.gutter; | ||
524 | activatesLeft = ( $(window).width() - origin.position().left - origin.innerWidth() ) + gutter_spacing; | ||
525 | |||
526 | // Position dropdown | ||
527 | activates.css({ right: activatesLeft }); | ||
528 | } | ||
529 | // Position dropdown | ||
530 | activates.css({ | ||
531 | position: 'absolute', | ||
532 | top: origin.position().top + offset, | ||
533 | }); | ||
534 | |||
535 | |||
536 | |||
537 | // Show dropdown | ||
538 | activates.stop(true, true).css('opacity', 0) | ||
539 | .slideDown({ | ||
540 | queue: false, | ||
541 | duration: options.inDuration, | ||
542 | easing: 'easeOutCubic', | ||
543 | complete: function() { | ||
544 | $(this).css('height', ''); | ||
545 | } | ||
546 | }) | ||
547 | .animate( {opacity: 1}, {queue: false, duration: options.inDuration, easing: 'easeOutSine'}); | ||
548 | } | ||
549 | |||
550 | function hideDropdown() { | ||
551 | activates.fadeOut(options.outDuration); | ||
552 | activates.removeClass('active'); | ||
553 | } | ||
554 | |||
555 | // Hover | ||
556 | if (options.hover) { | ||
557 | var open = false; | ||
558 | origin.unbind('click.' + origin.attr('id')); | ||
559 | // Hover handler to show dropdown | ||
560 | origin.on('mouseenter', function(e){ // Mouse over | ||
561 | if (open === false) { | ||
562 | placeDropdown(); | ||
563 | open = true; | ||
564 | } | ||
565 | }); | ||
566 | origin.on('mouseleave', function(e){ | ||
567 | // If hover on origin then to something other than dropdown content, then close | ||
568 | var toEl = e.toElement || e.relatedTarget; // added browser compatibility for target element | ||
569 | if(!$(toEl).closest('.dropdown-content').is(activates)) { | ||
570 | activates.stop(true, true); | ||
571 | hideDropdown(); | ||
572 | open = false; | ||
573 | } | ||
574 | }); | ||
575 | |||
576 | activates.on('mouseleave', function(e){ // Mouse out | ||
577 | var toEl = e.toElement || e.relatedTarget; | ||
578 | if(!$(toEl).closest('.dropdown-button').is(origin)) { | ||
579 | activates.stop(true, true); | ||
580 | hideDropdown(); | ||
581 | open = false; | ||
582 | } | ||
583 | }); | ||
584 | |||
585 | // Click | ||
586 | } else { | ||
587 | |||
588 | // Click handler to show dropdown | ||
589 | origin.unbind('click.' + origin.attr('id')); | ||
590 | origin.bind('click.'+origin.attr('id'), function(e){ | ||
591 | |||
592 | if ( origin[0] == e.currentTarget && ($(e.target).closest('.dropdown-content').length === 0) ) { | ||
593 | e.preventDefault(); // Prevents button click from moving window | ||
594 | placeDropdown(); | ||
595 | |||
596 | } | ||
597 | // If origin is clicked and menu is open, close menu | ||
598 | else { | ||
599 | if (origin.hasClass('active')) { | ||
600 | hideDropdown(); | ||
601 | $(document).unbind('click.' + activates.attr('id')); | ||
602 | } | ||
603 | } | ||
604 | // If menu open, add click close handler to document | ||
605 | if (activates.hasClass('active')) { | ||
606 | $(document).bind('click.'+ activates.attr('id'), function (e) { | ||
607 | if (!activates.is(e.target) && !origin.is(e.target) && (!origin.find(e.target).length > 0) ) { | ||
608 | hideDropdown(); | ||
609 | $(document).unbind('click.' + activates.attr('id')); | ||
610 | } | ||
611 | }); | ||
612 | } | ||
613 | }); | ||
614 | |||
615 | } // End else | ||
616 | |||
617 | // Listen to open and close event - useful for select component | ||
618 | origin.on('open', placeDropdown); | ||
619 | origin.on('close', hideDropdown); | ||
620 | |||
621 | |||
622 | }); | ||
623 | }; // End dropdown plugin | ||
624 | |||
625 | $(document).ready(function(){ | ||
626 | $('.dropdown-button').dropdown(); | ||
627 | }); | ||
628 | }( jQuery )); | ||
629 | ;(function($) { | ||
630 | var _stack = 0, | ||
631 | _lastID = 0, | ||
632 | _generateID = function() { | ||
633 | _lastID++; | ||
634 | return 'materialize-lean-overlay-' + _lastID; | ||
635 | }; | ||
636 | |||
637 | $.fn.extend({ | ||
638 | openModal: function(options) { | ||
639 | |||
640 | $('body').css('overflow', 'hidden'); | ||
641 | |||
642 | var defaults = { | ||
643 | opacity: 0.5, | ||
644 | in_duration: 350, | ||
645 | out_duration: 250, | ||
646 | ready: undefined, | ||
647 | complete: undefined, | ||
648 | dismissible: true, | ||
649 | starting_top: '4%' | ||
650 | }, | ||
651 | overlayID = _generateID(), | ||
652 | $modal = $(this), | ||
653 | $overlay = $('<div class="lean-overlay"></div>'), | ||
654 | lStack = (++_stack); | ||
655 | |||
656 | // Store a reference of the overlay | ||
657 | $overlay.attr('id', overlayID).css('z-index', 1000 + lStack * 2); | ||
658 | $modal.data('overlay-id', overlayID).css('z-index', 1000 + lStack * 2 + 1); | ||
659 | |||
660 | $("body").append($overlay); | ||
661 | |||
662 | // Override defaults | ||
663 | options = $.extend(defaults, options); | ||
664 | |||
665 | if (options.dismissible) { | ||
666 | $overlay.click(function() { | ||
667 | $modal.closeModal(options); | ||
668 | }); | ||
669 | // Return on ESC | ||
670 | $(document).on('keyup.leanModal' + overlayID, function(e) { | ||
671 | if (e.keyCode === 27) { // ESC key | ||
672 | $modal.closeModal(options); | ||
673 | } | ||
674 | }); | ||
675 | } | ||
676 | |||
677 | $modal.find(".modal-close").on('click.close', function(e) { | ||
678 | $modal.closeModal(options); | ||
679 | }); | ||
680 | |||
681 | $overlay.css({ display : "block", opacity : 0 }); | ||
682 | |||
683 | $modal.css({ | ||
684 | display : "block", | ||
685 | opacity: 0 | ||
686 | }); | ||
687 | |||
688 | $overlay.velocity({opacity: options.opacity}, {duration: options.in_duration, queue: false, ease: "easeOutCubic"}); | ||
689 | $modal.data('associated-overlay', $overlay[0]); | ||
690 | |||
691 | // Define Bottom Sheet animation | ||
692 | if ($modal.hasClass('bottom-sheet')) { | ||
693 | $modal.velocity({bottom: "0", opacity: 1}, { | ||
694 | duration: options.in_duration, | ||
695 | queue: false, | ||
696 | ease: "easeOutCubic", | ||
697 | // Handle modal ready callback | ||
698 | complete: function() { | ||
699 | if (typeof(options.ready) === "function") { | ||
700 | options.ready(); | ||
701 | } | ||
702 | } | ||
703 | }); | ||
704 | } | ||
705 | else { | ||
706 | $.Velocity.hook($modal, "scaleX", 0.7); | ||
707 | $modal.css({ top: options.starting_top }); | ||
708 | $modal.velocity({top: "10%", opacity: 1, scaleX: '1'}, { | ||
709 | duration: options.in_duration, | ||
710 | queue: false, | ||
711 | ease: "easeOutCubic", | ||
712 | // Handle modal ready callback | ||
713 | complete: function() { | ||
714 | if (typeof(options.ready) === "function") { | ||
715 | options.ready(); | ||
716 | } | ||
717 | } | ||
718 | }); | ||
719 | } | ||
720 | |||
721 | |||
722 | } | ||
723 | }); | ||
724 | |||
725 | $.fn.extend({ | ||
726 | closeModal: function(options) { | ||
727 | var defaults = { | ||
728 | out_duration: 250, | ||
729 | complete: undefined | ||
730 | }, | ||
731 | $modal = $(this), | ||
732 | overlayID = $modal.data('overlay-id'), | ||
733 | $overlay = $('#' + overlayID); | ||
734 | |||
735 | options = $.extend(defaults, options); | ||
736 | |||
737 | // Disable scrolling | ||
738 | $('body').css('overflow', ''); | ||
739 | |||
740 | $modal.find('.modal-close').off('click.close'); | ||
741 | $(document).off('keyup.leanModal' + overlayID); | ||
742 | |||
743 | $overlay.velocity( { opacity: 0}, {duration: options.out_duration, queue: false, ease: "easeOutQuart"}); | ||
744 | |||
745 | |||
746 | // Define Bottom Sheet animation | ||
747 | if ($modal.hasClass('bottom-sheet')) { | ||
748 | $modal.velocity({bottom: "-100%", opacity: 0}, { | ||
749 | duration: options.out_duration, | ||
750 | queue: false, | ||
751 | ease: "easeOutCubic", | ||
752 | // Handle modal ready callback | ||
753 | complete: function() { | ||
754 | $overlay.css({display:"none"}); | ||
755 | |||
756 | // Call complete callback | ||
757 | if (typeof(options.complete) === "function") { | ||
758 | options.complete(); | ||
759 | } | ||
760 | $overlay.remove(); | ||
761 | _stack--; | ||
762 | } | ||
763 | }); | ||
764 | } | ||
765 | else { | ||
766 | $modal.velocity( | ||
767 | { top: options.starting_top, opacity: 0, scaleX: 0.7}, { | ||
768 | duration: options.out_duration, | ||
769 | complete: | ||
770 | function() { | ||
771 | |||
772 | $(this).css('display', 'none'); | ||
773 | // Call complete callback | ||
774 | if (typeof(options.complete) === "function") { | ||
775 | options.complete(); | ||
776 | } | ||
777 | $overlay.remove(); | ||
778 | _stack--; | ||
779 | } | ||
780 | } | ||
781 | ); | ||
782 | } | ||
783 | } | ||
784 | }); | ||
785 | |||
786 | $.fn.extend({ | ||
787 | leanModal: function(option) { | ||
788 | return this.each(function() { | ||
789 | |||
790 | var defaults = { | ||
791 | starting_top: '4%' | ||
792 | }, | ||
793 | // Override defaults | ||
794 | options = $.extend(defaults, option); | ||
795 | |||
796 | // Close Handlers | ||
797 | $(this).click(function(e) { | ||
798 | options.starting_top = ($(this).offset().top - $(window).scrollTop()) /1.15; | ||
799 | var modal_id = $(this).attr("href") || '#' + $(this).data('target'); | ||
800 | $(modal_id).openModal(options); | ||
801 | e.preventDefault(); | ||
802 | }); // done set on click | ||
803 | }); // done return | ||
804 | } | ||
805 | }); | ||
806 | })(jQuery); | ||
807 | ;(function ($) { | ||
808 | |||
809 | $.fn.materialbox = function () { | ||
810 | |||
811 | return this.each(function() { | ||
812 | |||
813 | if ($(this).hasClass('initialized')) { | ||
814 | return; | ||
815 | } | ||
816 | |||
817 | $(this).addClass('initialized'); | ||
818 | |||
819 | var overlayActive = false; | ||
820 | var doneAnimating = true; | ||
821 | var inDuration = 275; | ||
822 | var outDuration = 200; | ||
823 | var origin = $(this); | ||
824 | var placeholder = $('<div></div>').addClass('material-placeholder'); | ||
825 | var originalWidth = 0; | ||
826 | var originalHeight = 0; | ||
827 | origin.wrap(placeholder); | ||
828 | |||
829 | |||
830 | origin.on('click', function(){ | ||
831 | var placeholder = origin.parent('.material-placeholder'); | ||
832 | var windowWidth = window.innerWidth; | ||
833 | var windowHeight = window.innerHeight; | ||
834 | var originalWidth = origin.width(); | ||
835 | var originalHeight = origin.height(); | ||
836 | |||
837 | |||
838 | // If already modal, return to original | ||
839 | if (doneAnimating === false) { | ||
840 | returnToOriginal(); | ||
841 | return false; | ||
842 | } | ||
843 | else if (overlayActive && doneAnimating===true) { | ||
844 | returnToOriginal(); | ||
845 | return false; | ||
846 | } | ||
847 | |||
848 | |||
849 | // Set states | ||
850 | doneAnimating = false; | ||
851 | origin.addClass('active'); | ||
852 | overlayActive = true; | ||
853 | |||
854 | // Set positioning for placeholder | ||
855 | |||
856 | placeholder.css({ | ||
857 | width: placeholder[0].getBoundingClientRect().width, | ||
858 | height: placeholder[0].getBoundingClientRect().height, | ||
859 | position: 'relative', | ||
860 | top: 0, | ||
861 | left: 0 | ||
862 | }); | ||
863 | |||
864 | |||
865 | |||
866 | // Set css on origin | ||
867 | origin.css({position: 'absolute', 'z-index': 1000}) | ||
868 | .data('width', originalWidth) | ||
869 | .data('height', originalHeight); | ||
870 | |||
871 | // Add overlay | ||
872 | var overlay = $('<div id="materialbox-overlay"></div>') | ||
873 | .css({ | ||
874 | opacity: 0 | ||
875 | }) | ||
876 | .click(function(){ | ||
877 | if (doneAnimating === true) | ||
878 | returnToOriginal(); | ||
879 | }); | ||
880 | // Animate Overlay | ||
881 | $('body').append(overlay); | ||
882 | overlay.velocity({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'} | ||
883 | ); | ||
884 | |||
885 | |||
886 | // Add and animate caption if it exists | ||
887 | if (origin.data('caption') !== "") { | ||
888 | var $photo_caption = $('<div class="materialbox-caption"></div>'); | ||
889 | $photo_caption.text(origin.data('caption')); | ||
890 | $('body').append($photo_caption); | ||
891 | $photo_caption.css({ "display": "inline" }); | ||
892 | $photo_caption.velocity({opacity: 1}, {duration: inDuration, queue: false, easing: 'easeOutQuad'}); | ||
893 | } | ||
894 | |||
895 | |||
896 | |||
897 | // Resize Image | ||
898 | var ratio = 0; | ||
899 | var widthPercent = originalWidth / windowWidth; | ||
900 | var heightPercent = originalHeight / windowHeight; | ||
901 | var newWidth = 0; | ||
902 | var newHeight = 0; | ||
903 | |||
904 | if (widthPercent > heightPercent) { | ||
905 | ratio = originalHeight / originalWidth; | ||
906 | newWidth = windowWidth * 0.9; | ||
907 | newHeight = windowWidth * 0.9 * ratio; | ||
908 | } | ||
909 | else { | ||
910 | ratio = originalWidth / originalHeight; | ||
911 | newWidth = (windowHeight * 0.9) * ratio; | ||
912 | newHeight = windowHeight * 0.9; | ||
913 | } | ||
914 | |||
915 | // Animate image + set z-index | ||
916 | if(origin.hasClass('responsive-img')) { | ||
917 | origin.velocity({'max-width': newWidth, 'width': originalWidth}, {duration: 0, queue: false, | ||
918 | complete: function(){ | ||
919 | origin.css({left: 0, top: 0}) | ||
920 | .velocity( | ||
921 | { | ||
922 | height: newHeight, | ||
923 | width: newWidth, | ||
924 | left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2, | ||
925 | top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2 | ||
926 | }, | ||
927 | { | ||
928 | duration: inDuration, | ||
929 | queue: false, | ||
930 | easing: 'easeOutQuad', | ||
931 | complete: function(){doneAnimating = true;} | ||
932 | } | ||
933 | ); | ||
934 | } // End Complete | ||
935 | }); // End Velocity | ||
936 | } | ||
937 | else { | ||
938 | origin.css('left', 0) | ||
939 | .css('top', 0) | ||
940 | .velocity( | ||
941 | { | ||
942 | height: newHeight, | ||
943 | width: newWidth, | ||
944 | left: $(document).scrollLeft() + windowWidth/2 - origin.parent('.material-placeholder').offset().left - newWidth/2, | ||
945 | top: $(document).scrollTop() + windowHeight/2 - origin.parent('.material-placeholder').offset().top - newHeight/ 2 | ||
946 | }, | ||
947 | { | ||
948 | duration: inDuration, | ||
949 | queue: false, | ||
950 | easing: 'easeOutQuad', | ||
951 | complete: function(){doneAnimating = true;} | ||
952 | } | ||
953 | ); // End Velocity | ||
954 | } | ||
955 | |||
956 | }); // End origin on click | ||
957 | |||
958 | |||
959 | // Return on scroll | ||
960 | $(window).scroll(function() { | ||
961 | if (overlayActive ) { | ||
962 | returnToOriginal(); | ||
963 | } | ||
964 | }); | ||
965 | |||
966 | // Return on ESC | ||
967 | $(document).keyup(function(e) { | ||
968 | |||
969 | if (e.keyCode === 27 && doneAnimating === true) { // ESC key | ||
970 | if (overlayActive) { | ||
971 | returnToOriginal(); | ||
972 | } | ||
973 | } | ||
974 | }); | ||
975 | |||
976 | |||
977 | // This function returns the modaled image to the original spot | ||
978 | function returnToOriginal() { | ||
979 | |||
980 | doneAnimating = false; | ||
981 | |||
982 | var placeholder = origin.parent('.material-placeholder'); | ||
983 | var windowWidth = window.innerWidth; | ||
984 | var windowHeight = window.innerHeight; | ||
985 | var originalWidth = origin.data('width'); | ||
986 | var originalHeight = origin.data('height'); | ||
987 | |||
988 | origin.velocity("stop", true); | ||
989 | $('#materialbox-overlay').velocity("stop", true); | ||
990 | $('.materialbox-caption').velocity("stop", true); | ||
991 | |||
992 | |||
993 | $('#materialbox-overlay').velocity({opacity: 0}, { | ||
994 | duration: outDuration, // Delay prevents animation overlapping | ||
995 | queue: false, easing: 'easeOutQuad', | ||
996 | complete: function(){ | ||
997 | // Remove Overlay | ||
998 | overlayActive = false; | ||
999 | $(this).remove(); | ||
1000 | } | ||
1001 | }); | ||
1002 | |||
1003 | // Resize Image | ||
1004 | origin.velocity( | ||
1005 | { | ||
1006 | width: originalWidth, | ||
1007 | height: originalHeight, | ||
1008 | left: 0, | ||
1009 | top: 0 | ||
1010 | }, | ||
1011 | { | ||
1012 | duration: outDuration, | ||
1013 | queue: false, easing: 'easeOutQuad' | ||
1014 | } | ||
1015 | ); | ||
1016 | |||
1017 | // Remove Caption + reset css settings on image | ||
1018 | $('.materialbox-caption').velocity({opacity: 0}, { | ||
1019 | duration: outDuration, // Delay prevents animation overlapping | ||
1020 | queue: false, easing: 'easeOutQuad', | ||
1021 | complete: function(){ | ||
1022 | placeholder.css({ | ||
1023 | height: '', | ||
1024 | width: '', | ||
1025 | position: '', | ||
1026 | top: '', | ||
1027 | left: '' | ||
1028 | }); | ||
1029 | |||
1030 | origin.css({ | ||
1031 | height: '', | ||
1032 | top: '', | ||
1033 | left: '', | ||
1034 | width: '', | ||
1035 | 'max-width': '', | ||
1036 | position: '', | ||
1037 | 'z-index': '' | ||
1038 | }); | ||
1039 | |||
1040 | // Remove class | ||
1041 | origin.removeClass('active'); | ||
1042 | doneAnimating = true; | ||
1043 | $(this).remove(); | ||
1044 | } | ||
1045 | }); | ||
1046 | |||
1047 | } | ||
1048 | }); | ||
1049 | }; | ||
1050 | |||
1051 | $(document).ready(function(){ | ||
1052 | $('.materialboxed').materialbox(); | ||
1053 | }); | ||
1054 | |||
1055 | }( jQuery )); | ||
1056 | ;(function ($) { | ||
1057 | |||
1058 | $.fn.parallax = function () { | ||
1059 | var window_width = $(window).width(); | ||
1060 | // Parallax Scripts | ||
1061 | return this.each(function(i) { | ||
1062 | var $this = $(this); | ||
1063 | $this.addClass('parallax'); | ||
1064 | |||
1065 | function updateParallax(initial) { | ||
1066 | var container_height; | ||
1067 | if (window_width < 601) { | ||
1068 | container_height = ($this.height() > 0) ? $this.height() : $this.children("img").height(); | ||
1069 | } | ||
1070 | else { | ||
1071 | container_height = ($this.height() > 0) ? $this.height() : 500; | ||
1072 | } | ||
1073 | var $img = $this.children("img").first(); | ||
1074 | var img_height = $img.height(); | ||
1075 | var parallax_dist = img_height - container_height; | ||
1076 | var bottom = $this.offset().top + container_height; | ||
1077 | var top = $this.offset().top; | ||
1078 | var scrollTop = $(window).scrollTop(); | ||
1079 | var windowHeight = window.innerHeight; | ||
1080 | var windowBottom = scrollTop + windowHeight; | ||
1081 | var percentScrolled = (windowBottom - top) / (container_height + windowHeight); | ||
1082 | var parallax = Math.round((parallax_dist * percentScrolled)); | ||
1083 | |||
1084 | if (initial) { | ||
1085 | $img.css('display', 'block'); | ||
1086 | } | ||
1087 | if ((bottom > scrollTop) && (top < (scrollTop + windowHeight))) { | ||
1088 | $img.css('transform', "translate3D(-50%," + parallax + "px, 0)"); | ||
1089 | } | ||
1090 | |||
1091 | } | ||
1092 | |||
1093 | // Wait for image load | ||
1094 | $this.children("img").one("load", function() { | ||
1095 | updateParallax(true); | ||
1096 | }).each(function() { | ||
1097 | if(this.complete) $(this).load(); | ||
1098 | }); | ||
1099 | |||
1100 | $(window).scroll(function() { | ||
1101 | window_width = $(window).width(); | ||
1102 | updateParallax(false); | ||
1103 | }); | ||
1104 | |||
1105 | $(window).resize(function() { | ||
1106 | window_width = $(window).width(); | ||
1107 | updateParallax(false); | ||
1108 | }); | ||
1109 | |||
1110 | }); | ||
1111 | |||
1112 | }; | ||
1113 | }( jQuery ));;(function ($) { | ||
1114 | |||
1115 | var methods = { | ||
1116 | init : function() { | ||
1117 | return this.each(function() { | ||
1118 | |||
1119 | // For each set of tabs, we want to keep track of | ||
1120 | // which tab is active and its associated content | ||
1121 | var $this = $(this), | ||
1122 | window_width = $(window).width(); | ||
1123 | |||
1124 | $this.width('100%'); | ||
1125 | var $active, $content, $links = $this.find('li.tab a'), | ||
1126 | $tabs_width = $this.width(), | ||
1127 | $tab_width = $this.find('li').first().outerWidth(), | ||
1128 | $index = 0; | ||
1129 | |||
1130 | // If the location.hash matches one of the links, use that as the active tab. | ||
1131 | $active = $($links.filter('[href="'+location.hash+'"]')); | ||
1132 | |||
1133 | // If no match is found, use the first link or any with class 'active' as the initial active tab. | ||
1134 | if ($active.length === 0) { | ||
1135 | $active = $(this).find('li.tab a.active').first(); | ||
1136 | } | ||
1137 | if ($active.length === 0) { | ||
1138 | $active = $(this).find('li.tab a').first(); | ||
1139 | } | ||
1140 | |||
1141 | $active.addClass('active'); | ||
1142 | $index = $links.index($active); | ||
1143 | if ($index < 0) { | ||
1144 | $index = 0; | ||
1145 | } | ||
1146 | |||
1147 | $content = $($active[0].hash); | ||
1148 | |||
1149 | // append indicator then set indicator width to tab width | ||
1150 | $this.append('<div class="indicator"></div>'); | ||
1151 | var $indicator = $this.find('.indicator'); | ||
1152 | if ($this.is(":visible")) { | ||
1153 | $indicator.css({"right": $tabs_width - (($index + 1) * $tab_width)}); | ||
1154 | $indicator.css({"left": $index * $tab_width}); | ||
1155 | } | ||
1156 | $(window).resize(function () { | ||
1157 | $tabs_width = $this.width(); | ||
1158 | $tab_width = $this.find('li').first().outerWidth(); | ||
1159 | if ($index < 0) { | ||
1160 | $index = 0; | ||
1161 | } | ||
1162 | if ($tab_width !== 0 && $tabs_width !== 0) { | ||
1163 | $indicator.css({"right": $tabs_width - (($index + 1) * $tab_width)}); | ||
1164 | $indicator.css({"left": $index * $tab_width}); | ||
1165 | } | ||
1166 | }); | ||
1167 | |||
1168 | // Hide the remaining content | ||
1169 | $links.not($active).each(function () { | ||
1170 | $(this.hash).hide(); | ||
1171 | }); | ||
1172 | |||
1173 | |||
1174 | // Bind the click event handler | ||
1175 | $this.on('click', 'a', function(e){ | ||
1176 | if ($(this).parent().hasClass('disabled')) { | ||
1177 | e.preventDefault(); | ||
1178 | return; | ||
1179 | } | ||
1180 | |||
1181 | $tabs_width = $this.width(); | ||
1182 | $tab_width = $this.find('li').first().outerWidth(); | ||
1183 | |||
1184 | // Make the old tab inactive. | ||
1185 | $active.removeClass('active'); | ||
1186 | $content.hide(); | ||
1187 | |||
1188 | // Update the variables with the new link and content | ||
1189 | $active = $(this); | ||
1190 | $content = $(this.hash); | ||
1191 | $links = $this.find('li.tab a'); | ||
1192 | |||
1193 | // Make the tab active. | ||
1194 | $active.addClass('active'); | ||
1195 | var $prev_index = $index; | ||
1196 | $index = $links.index($(this)); | ||
1197 | if ($index < 0) { | ||
1198 | $index = 0; | ||
1199 | } | ||
1200 | // Change url to current tab | ||
1201 | // window.location.hash = $active.attr('href'); | ||
1202 | |||
1203 | $content.show(); | ||
1204 | |||
1205 | // Update indicator | ||
1206 | if (($index - $prev_index) >= 0) { | ||
1207 | $indicator.velocity({"right": $tabs_width - (($index + 1) * $tab_width)}, { duration: 300, queue: false, easing: 'easeOutQuad'}); | ||
1208 | $indicator.velocity({"left": $index * $tab_width}, {duration: 300, queue: false, easing: 'easeOutQuad', delay: 90}); | ||
1209 | |||
1210 | } | ||
1211 | else { | ||
1212 | $indicator.velocity({"left": $index * $tab_width}, { duration: 300, queue: false, easing: 'easeOutQuad'}); | ||
1213 | $indicator.velocity({"right": $tabs_width - (($index + 1) * $tab_width)}, {duration: 300, queue: false, easing: 'easeOutQuad', delay: 90}); | ||
1214 | } | ||
1215 | |||
1216 | // Prevent the anchor's default click action | ||
1217 | e.preventDefault(); | ||
1218 | }); | ||
1219 | }); | ||
1220 | |||
1221 | }, | ||
1222 | select_tab : function( id ) { | ||
1223 | this.find('a[href="#' + id + '"]').trigger('click'); | ||
1224 | } | ||
1225 | }; | ||
1226 | |||
1227 | $.fn.tabs = function(methodOrOptions) { | ||
1228 | if ( methods[methodOrOptions] ) { | ||
1229 | return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); | ||
1230 | } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { | ||
1231 | // Default to "init" | ||
1232 | return methods.init.apply( this, arguments ); | ||
1233 | } else { | ||
1234 | $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' ); | ||
1235 | } | ||
1236 | }; | ||
1237 | |||
1238 | $(document).ready(function(){ | ||
1239 | $('ul.tabs').tabs(); | ||
1240 | }); | ||
1241 | }( jQuery )); | ||
1242 | ;(function ($) { | ||
1243 | $.fn.tooltip = function (options) { | ||
1244 | var timeout = null, | ||
1245 | counter = null, | ||
1246 | started = false, | ||
1247 | counterInterval = null, | ||
1248 | margin = 5; | ||
1249 | |||
1250 | // Defaults | ||
1251 | var defaults = { | ||
1252 | delay: 350 | ||
1253 | }; | ||
1254 | |||
1255 | // Remove tooltip from the activator | ||
1256 | if (options === "remove") { | ||
1257 | this.each(function(){ | ||
1258 | $('#' + $(this).attr('data-tooltip-id')).remove(); | ||
1259 | }); | ||
1260 | return false; | ||
1261 | } | ||
1262 | |||
1263 | options = $.extend(defaults, options); | ||
1264 | |||
1265 | |||
1266 | return this.each(function(){ | ||
1267 | var tooltipId = Materialize.guid(); | ||
1268 | var origin = $(this); | ||
1269 | origin.attr('data-tooltip-id', tooltipId); | ||
1270 | |||
1271 | // Create Text span | ||
1272 | var tooltip_text = $('<span></span>').text(origin.attr('data-tooltip')); | ||
1273 | |||
1274 | // Create tooltip | ||
1275 | var newTooltip = $('<div></div>'); | ||
1276 | newTooltip.addClass('material-tooltip').append(tooltip_text) | ||
1277 | .appendTo($('body')) | ||
1278 | .attr('id', tooltipId); | ||
1279 | |||
1280 | var backdrop = $('<div></div>').addClass('backdrop'); | ||
1281 | backdrop.appendTo(newTooltip); | ||
1282 | backdrop.css({ top: 0, left:0 }); | ||
1283 | |||
1284 | |||
1285 | //Destroy previously binded events | ||
1286 | origin.off('mouseenter.tooltip mouseleave.tooltip'); | ||
1287 | // Mouse In | ||
1288 | origin.on({ | ||
1289 | 'mouseenter.tooltip': function(e) { | ||
1290 | var tooltip_delay = origin.data("delay"); | ||
1291 | tooltip_delay = (tooltip_delay === undefined || tooltip_delay === '') ? options.delay : tooltip_delay; | ||
1292 | counter = 0; | ||
1293 | counterInterval = setInterval(function(){ | ||
1294 | counter += 10; | ||
1295 | if (counter >= tooltip_delay && started === false) { | ||
1296 | started = true; | ||
1297 | newTooltip.css({ display: 'block', left: '0px', top: '0px' }); | ||
1298 | |||
1299 | // Set Tooltip text | ||
1300 | newTooltip.children('span').text(origin.attr('data-tooltip')); | ||
1301 | |||
1302 | // Tooltip positioning | ||
1303 | var originWidth = origin.outerWidth(); | ||
1304 | var originHeight = origin.outerHeight(); | ||
1305 | var tooltipPosition = origin.attr('data-position'); | ||
1306 | var tooltipHeight = newTooltip.outerHeight(); | ||
1307 | var tooltipWidth = newTooltip.outerWidth(); | ||
1308 | var tooltipVerticalMovement = '0px'; | ||
1309 | var tooltipHorizontalMovement = '0px'; | ||
1310 | var scale_factor = 8; | ||
1311 | |||
1312 | if (tooltipPosition === "top") { | ||
1313 | // Top Position | ||
1314 | newTooltip.css({ | ||
1315 | top: origin.offset().top - tooltipHeight - margin, | ||
1316 | left: origin.offset().left + originWidth/2 - tooltipWidth/2 | ||
1317 | }); | ||
1318 | tooltipVerticalMovement = '-10px'; | ||
1319 | backdrop.css({ | ||
1320 | borderRadius: '14px 14px 0 0', | ||
1321 | transformOrigin: '50% 90%', | ||
1322 | marginTop: tooltipHeight, | ||
1323 | marginLeft: (tooltipWidth/2) - (backdrop.width()/2) | ||
1324 | |||
1325 | }); | ||
1326 | } | ||
1327 | // Left Position | ||
1328 | else if (tooltipPosition === "left") { | ||
1329 | newTooltip.css({ | ||
1330 | top: origin.offset().top + originHeight/2 - tooltipHeight/2, | ||
1331 | left: origin.offset().left - tooltipWidth - margin | ||
1332 | }); | ||
1333 | tooltipHorizontalMovement = '-10px'; | ||
1334 | backdrop.css({ | ||
1335 | width: '14px', | ||
1336 | height: '14px', | ||
1337 | borderRadius: '14px 0 0 14px', | ||
1338 | transformOrigin: '95% 50%', | ||
1339 | marginTop: tooltipHeight/2, | ||
1340 | marginLeft: tooltipWidth | ||
1341 | }); | ||
1342 | } | ||
1343 | // Right Position | ||
1344 | else if (tooltipPosition === "right") { | ||
1345 | newTooltip.css({ | ||
1346 | top: origin.offset().top + originHeight/2 - tooltipHeight/2, | ||
1347 | left: origin.offset().left + originWidth + margin | ||
1348 | }); | ||
1349 | tooltipHorizontalMovement = '+10px'; | ||
1350 | backdrop.css({ | ||
1351 | width: '14px', | ||
1352 | height: '14px', | ||
1353 | borderRadius: '0 14px 14px 0', | ||
1354 | transformOrigin: '5% 50%', | ||
1355 | marginTop: tooltipHeight/2, | ||
1356 | marginLeft: '0px' | ||
1357 | }); | ||
1358 | } | ||
1359 | else { | ||
1360 | // Bottom Position | ||
1361 | newTooltip.css({ | ||
1362 | top: origin.offset().top + origin.outerHeight() + margin, | ||
1363 | left: origin.offset().left + originWidth/2 - tooltipWidth/2 | ||
1364 | }); | ||
1365 | tooltipVerticalMovement = '+10px'; | ||
1366 | backdrop.css({ | ||
1367 | marginLeft: (tooltipWidth/2) - (backdrop.width()/2) | ||
1368 | }); | ||
1369 | } | ||
1370 | |||
1371 | // Calculate Scale to fill | ||
1372 | scale_factor = tooltipWidth / 8; | ||
1373 | if (scale_factor < 8) { | ||
1374 | scale_factor = 8; | ||
1375 | } | ||
1376 | if (tooltipPosition === "right" || tooltipPosition === "left") { | ||
1377 | scale_factor = tooltipWidth / 10; | ||
1378 | if (scale_factor < 6) | ||
1379 | scale_factor = 6; | ||
1380 | } | ||
1381 | |||
1382 | newTooltip.velocity({ marginTop: tooltipVerticalMovement, marginLeft: tooltipHorizontalMovement}, { duration: 350, queue: false }) | ||
1383 | .velocity({opacity: 1}, {duration: 300, delay: 50, queue: false}); | ||
1384 | backdrop.css({ display: 'block' }) | ||
1385 | .velocity({opacity:1},{duration: 55, delay: 0, queue: false}) | ||
1386 | .velocity({scale: scale_factor}, {duration: 300, delay: 0, queue: false, easing: 'easeInOutQuad'}); | ||
1387 | |||
1388 | } | ||
1389 | }, 10); // End Interval | ||
1390 | |||
1391 | // Mouse Out | ||
1392 | }, | ||
1393 | 'mouseleave.tooltip': function(){ | ||
1394 | // Reset State | ||
1395 | clearInterval(counterInterval); | ||
1396 | counter = 0; | ||
1397 | |||
1398 | // Animate back | ||
1399 | newTooltip.velocity({ | ||
1400 | opacity: 0, marginTop: 0, marginLeft: 0}, { duration: 225, queue: false, delay: 225 } | ||
1401 | ); | ||
1402 | backdrop.velocity({opacity: 0, scale: 1}, { | ||
1403 | duration:225, | ||
1404 | delay: 275, queue: false, | ||
1405 | complete: function(){ | ||
1406 | backdrop.css('display', 'none'); | ||
1407 | newTooltip.css('display', 'none'); | ||
1408 | started = false;} | ||
1409 | }); | ||
1410 | } | ||
1411 | }); | ||
1412 | }); | ||
1413 | }; | ||
1414 | |||
1415 | $(document).ready(function(){ | ||
1416 | $('.tooltipped').tooltip(); | ||
1417 | }); | ||
1418 | }( jQuery )); | ||
1419 | ;/*! | ||
1420 | * Waves v0.6.4 | ||
1421 | * http://fian.my.id/Waves | ||
1422 | * | ||
1423 | * Copyright 2014 Alfiana E. Sibuea and other contributors | ||
1424 | * Released under the MIT license | ||
1425 | * https://github.com/fians/Waves/blob/master/LICENSE | ||
1426 | */ | ||
1427 | |||
1428 | ;(function(window) { | ||
1429 | 'use strict'; | ||
1430 | |||
1431 | var Waves = Waves || {}; | ||
1432 | var $$ = document.querySelectorAll.bind(document); | ||
1433 | |||
1434 | // Find exact position of element | ||
1435 | function isWindow(obj) { | ||
1436 | return obj !== null && obj === obj.window; | ||
1437 | } | ||
1438 | |||
1439 | function getWindow(elem) { | ||
1440 | return isWindow(elem) ? elem : elem.nodeType === 9 && elem.defaultView; | ||
1441 | } | ||
1442 | |||
1443 | function offset(elem) { | ||
1444 | var docElem, win, | ||
1445 | box = {top: 0, left: 0}, | ||
1446 | doc = elem && elem.ownerDocument; | ||
1447 | |||
1448 | docElem = doc.documentElement; | ||
1449 | |||
1450 | if (typeof elem.getBoundingClientRect !== typeof undefined) { | ||
1451 | box = elem.getBoundingClientRect(); | ||
1452 | } | ||
1453 | win = getWindow(doc); | ||
1454 | return { | ||
1455 | top: box.top + win.pageYOffset - docElem.clientTop, | ||
1456 | left: box.left + win.pageXOffset - docElem.clientLeft | ||
1457 | }; | ||
1458 | } | ||
1459 | |||
1460 | function convertStyle(obj) { | ||
1461 | var style = ''; | ||
1462 | |||
1463 | for (var a in obj) { | ||
1464 | if (obj.hasOwnProperty(a)) { | ||
1465 | style += (a + ':' + obj[a] + ';'); | ||
1466 | } | ||
1467 | } | ||
1468 | |||
1469 | return style; | ||
1470 | } | ||
1471 | |||
1472 | var Effect = { | ||
1473 | |||
1474 | // Effect delay | ||
1475 | duration: 750, | ||
1476 | |||
1477 | show: function(e, element) { | ||
1478 | |||
1479 | // Disable right click | ||
1480 | if (e.button === 2) { | ||
1481 | return false; | ||
1482 | } | ||
1483 | |||
1484 | var el = element || this; | ||
1485 | |||
1486 | // Create ripple | ||
1487 | var ripple = document.createElement('div'); | ||
1488 | ripple.className = 'waves-ripple'; | ||
1489 | el.appendChild(ripple); | ||
1490 | |||
1491 | // Get click coordinate and element witdh | ||
1492 | var pos = offset(el); | ||
1493 | var relativeY = (e.pageY - pos.top); | ||
1494 | var relativeX = (e.pageX - pos.left); | ||
1495 | var scale = 'scale('+((el.clientWidth / 100) * 10)+')'; | ||
1496 | |||
1497 | // Support for touch devices | ||
1498 | if ('touches' in e) { | ||
1499 | relativeY = (e.touches[0].pageY - pos.top); | ||
1500 | relativeX = (e.touches[0].pageX - pos.left); | ||
1501 | } | ||
1502 | |||
1503 | // Attach data to element | ||
1504 | ripple.setAttribute('data-hold', Date.now()); | ||
1505 | ripple.setAttribute('data-scale', scale); | ||
1506 | ripple.setAttribute('data-x', relativeX); | ||
1507 | ripple.setAttribute('data-y', relativeY); | ||
1508 | |||
1509 | // Set ripple position | ||
1510 | var rippleStyle = { | ||
1511 | 'top': relativeY+'px', | ||
1512 | 'left': relativeX+'px' | ||
1513 | }; | ||
1514 | |||
1515 | ripple.className = ripple.className + ' waves-notransition'; | ||
1516 | ripple.setAttribute('style', convertStyle(rippleStyle)); | ||
1517 | ripple.className = ripple.className.replace('waves-notransition', ''); | ||
1518 | |||
1519 | // Scale the ripple | ||
1520 | rippleStyle['-webkit-transform'] = scale; | ||
1521 | rippleStyle['-moz-transform'] = scale; | ||
1522 | rippleStyle['-ms-transform'] = scale; | ||
1523 | rippleStyle['-o-transform'] = scale; | ||
1524 | rippleStyle.transform = scale; | ||
1525 | rippleStyle.opacity = '1'; | ||
1526 | |||
1527 | rippleStyle['-webkit-transition-duration'] = Effect.duration + 'ms'; | ||
1528 | rippleStyle['-moz-transition-duration'] = Effect.duration + 'ms'; | ||
1529 | rippleStyle['-o-transition-duration'] = Effect.duration + 'ms'; | ||
1530 | rippleStyle['transition-duration'] = Effect.duration + 'ms'; | ||
1531 | |||
1532 | rippleStyle['-webkit-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; | ||
1533 | rippleStyle['-moz-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; | ||
1534 | rippleStyle['-o-transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; | ||
1535 | rippleStyle['transition-timing-function'] = 'cubic-bezier(0.250, 0.460, 0.450, 0.940)'; | ||
1536 | |||
1537 | ripple.setAttribute('style', convertStyle(rippleStyle)); | ||
1538 | }, | ||
1539 | |||
1540 | hide: function(e) { | ||
1541 | TouchHandler.touchup(e); | ||
1542 | |||
1543 | var el = this; | ||
1544 | var width = el.clientWidth * 1.4; | ||
1545 | |||
1546 | // Get first ripple | ||
1547 | var ripple = null; | ||
1548 | var ripples = el.getElementsByClassName('waves-ripple'); | ||
1549 | if (ripples.length > 0) { | ||
1550 | ripple = ripples[ripples.length - 1]; | ||
1551 | } else { | ||
1552 | return false; | ||
1553 | } | ||
1554 | |||
1555 | var relativeX = ripple.getAttribute('data-x'); | ||
1556 | var relativeY = ripple.getAttribute('data-y'); | ||
1557 | var scale = ripple.getAttribute('data-scale'); | ||
1558 | |||
1559 | // Get delay beetween mousedown and mouse leave | ||
1560 | var diff = Date.now() - Number(ripple.getAttribute('data-hold')); | ||
1561 | var delay = 350 - diff; | ||
1562 | |||
1563 | if (delay < 0) { | ||
1564 | delay = 0; | ||
1565 | } | ||
1566 | |||
1567 | // Fade out ripple after delay | ||
1568 | setTimeout(function() { | ||
1569 | var style = { | ||
1570 | 'top': relativeY+'px', | ||
1571 | 'left': relativeX+'px', | ||
1572 | 'opacity': '0', | ||
1573 | |||
1574 | // Duration | ||
1575 | '-webkit-transition-duration': Effect.duration + 'ms', | ||
1576 | '-moz-transition-duration': Effect.duration + 'ms', | ||
1577 | '-o-transition-duration': Effect.duration + 'ms', | ||
1578 | 'transition-duration': Effect.duration + 'ms', | ||
1579 | '-webkit-transform': scale, | ||
1580 | '-moz-transform': scale, | ||
1581 | '-ms-transform': scale, | ||
1582 | '-o-transform': scale, | ||
1583 | 'transform': scale, | ||
1584 | }; | ||
1585 | |||
1586 | ripple.setAttribute('style', convertStyle(style)); | ||
1587 | |||
1588 | setTimeout(function() { | ||
1589 | try { | ||
1590 | el.removeChild(ripple); | ||
1591 | } catch(e) { | ||
1592 | return false; | ||
1593 | } | ||
1594 | }, Effect.duration); | ||
1595 | }, delay); | ||
1596 | }, | ||
1597 | |||
1598 | // Little hack to make <input> can perform waves effect | ||
1599 | wrapInput: function(elements) { | ||
1600 | for (var a = 0; a < elements.length; a++) { | ||
1601 | var el = elements[a]; | ||
1602 | |||
1603 | if (el.tagName.toLowerCase() === 'input') { | ||
1604 | var parent = el.parentNode; | ||
1605 | |||
1606 | // If input already have parent just pass through | ||
1607 | if (parent.tagName.toLowerCase() === 'i' && parent.className.indexOf('waves-effect') !== -1) { | ||
1608 | continue; | ||
1609 | } | ||
1610 | |||
1611 | // Put element class and style to the specified parent | ||
1612 | var wrapper = document.createElement('i'); | ||
1613 | wrapper.className = el.className + ' waves-input-wrapper'; | ||
1614 | |||
1615 | var elementStyle = el.getAttribute('style'); | ||
1616 | |||
1617 | if (!elementStyle) { | ||
1618 | elementStyle = ''; | ||
1619 | } | ||
1620 | |||
1621 | wrapper.setAttribute('style', elementStyle); | ||
1622 | |||
1623 | el.className = 'waves-button-input'; | ||
1624 | el.removeAttribute('style'); | ||
1625 | |||
1626 | // Put element as child | ||
1627 | parent.replaceChild(wrapper, el); | ||
1628 | wrapper.appendChild(el); | ||
1629 | } | ||
1630 | } | ||
1631 | } | ||
1632 | }; | ||
1633 | |||
1634 | |||
1635 | /** | ||
1636 | * Disable mousedown event for 500ms during and after touch | ||
1637 | */ | ||
1638 | var TouchHandler = { | ||
1639 | /* uses an integer rather than bool so there's no issues with | ||
1640 | * needing to clear timeouts if another touch event occurred | ||
1641 | * within the 500ms. Cannot mouseup between touchstart and | ||
1642 | * touchend, nor in the 500ms after touchend. */ | ||
1643 | touches: 0, | ||
1644 | allowEvent: function(e) { | ||
1645 | var allow = true; | ||
1646 | |||
1647 | if (e.type === 'touchstart') { | ||
1648 | TouchHandler.touches += 1; //push | ||
1649 | } else if (e.type === 'touchend' || e.type === 'touchcancel') { | ||
1650 | setTimeout(function() { | ||
1651 | if (TouchHandler.touches > 0) { | ||
1652 | TouchHandler.touches -= 1; //pop after 500ms | ||
1653 | } | ||
1654 | }, 500); | ||
1655 | } else if (e.type === 'mousedown' && TouchHandler.touches > 0) { | ||
1656 | allow = false; | ||
1657 | } | ||
1658 | |||
1659 | return allow; | ||
1660 | }, | ||
1661 | touchup: function(e) { | ||
1662 | TouchHandler.allowEvent(e); | ||
1663 | } | ||
1664 | }; | ||
1665 | |||
1666 | |||
1667 | /** | ||
1668 | * Delegated click handler for .waves-effect element. | ||
1669 | * returns null when .waves-effect element not in "click tree" | ||
1670 | */ | ||
1671 | function getWavesEffectElement(e) { | ||
1672 | if (TouchHandler.allowEvent(e) === false) { | ||
1673 | return null; | ||
1674 | } | ||
1675 | |||
1676 | var element = null; | ||
1677 | var target = e.target || e.srcElement; | ||
1678 | |||
1679 | while (target.parentElement !== null) { | ||
1680 | if (!(target instanceof SVGElement) && target.className.indexOf('waves-effect') !== -1) { | ||
1681 | element = target; | ||
1682 | break; | ||
1683 | } else if (target.classList.contains('waves-effect')) { | ||
1684 | element = target; | ||
1685 | break; | ||
1686 | } | ||
1687 | target = target.parentElement; | ||
1688 | } | ||
1689 | |||
1690 | return element; | ||
1691 | } | ||
1692 | |||
1693 | /** | ||
1694 | * Bubble the click and show effect if .waves-effect elem was found | ||
1695 | */ | ||
1696 | function showEffect(e) { | ||
1697 | var element = getWavesEffectElement(e); | ||
1698 | |||
1699 | if (element !== null) { | ||
1700 | Effect.show(e, element); | ||
1701 | |||
1702 | if ('ontouchstart' in window) { | ||
1703 | element.addEventListener('touchend', Effect.hide, false); | ||
1704 | element.addEventListener('touchcancel', Effect.hide, false); | ||
1705 | } | ||
1706 | |||
1707 | element.addEventListener('mouseup', Effect.hide, false); | ||
1708 | element.addEventListener('mouseleave', Effect.hide, false); | ||
1709 | } | ||
1710 | } | ||
1711 | |||
1712 | Waves.displayEffect = function(options) { | ||
1713 | options = options || {}; | ||
1714 | |||
1715 | if ('duration' in options) { | ||
1716 | Effect.duration = options.duration; | ||
1717 | } | ||
1718 | |||
1719 | //Wrap input inside <i> tag | ||
1720 | Effect.wrapInput($$('.waves-effect')); | ||
1721 | |||
1722 | if ('ontouchstart' in window) { | ||
1723 | document.body.addEventListener('touchstart', showEffect, false); | ||
1724 | } | ||
1725 | |||
1726 | document.body.addEventListener('mousedown', showEffect, false); | ||
1727 | }; | ||
1728 | |||
1729 | /** | ||
1730 | * Attach Waves to an input element (or any element which doesn't | ||
1731 | * bubble mouseup/mousedown events). | ||
1732 | * Intended to be used with dynamically loaded forms/inputs, or | ||
1733 | * where the user doesn't want a delegated click handler. | ||
1734 | */ | ||
1735 | Waves.attach = function(element) { | ||
1736 | //FUTURE: automatically add waves classes and allow users | ||
1737 | // to specify them with an options param? Eg. light/classic/button | ||
1738 | if (element.tagName.toLowerCase() === 'input') { | ||
1739 | Effect.wrapInput([element]); | ||
1740 | element = element.parentElement; | ||
1741 | } | ||
1742 | |||
1743 | if ('ontouchstart' in window) { | ||
1744 | element.addEventListener('touchstart', showEffect, false); | ||
1745 | } | ||
1746 | |||
1747 | element.addEventListener('mousedown', showEffect, false); | ||
1748 | }; | ||
1749 | |||
1750 | window.Waves = Waves; | ||
1751 | |||
1752 | document.addEventListener('DOMContentLoaded', function() { | ||
1753 | Waves.displayEffect(); | ||
1754 | }, false); | ||
1755 | |||
1756 | })(window); | ||
1757 | ;Materialize.toast = function (message, displayLength, className, completeCallback) { | ||
1758 | className = className || ""; | ||
1759 | |||
1760 | var container = document.getElementById('toast-container'); | ||
1761 | |||
1762 | // Create toast container if it does not exist | ||
1763 | if (container === null) { | ||
1764 | // create notification container | ||
1765 | container = document.createElement('div'); | ||
1766 | container.id = 'toast-container'; | ||
1767 | document.body.appendChild(container); | ||
1768 | } | ||
1769 | |||
1770 | // Select and append toast | ||
1771 | var newToast = createToast(message); | ||
1772 | |||
1773 | // only append toast if message is not undefined | ||
1774 | if(message){ | ||
1775 | container.appendChild(newToast); | ||
1776 | } | ||
1777 | |||
1778 | newToast.style.top = '35px'; | ||
1779 | newToast.style.opacity = 0; | ||
1780 | |||
1781 | // Animate toast in | ||
1782 | Vel(newToast, { "top" : "0px", opacity: 1 }, {duration: 300, | ||
1783 | easing: 'easeOutCubic', | ||
1784 | queue: false}); | ||
1785 | |||
1786 | // Allows timer to be pause while being panned | ||
1787 | var timeLeft = displayLength; | ||
1788 | var counterInterval = setInterval (function(){ | ||
1789 | |||
1790 | |||
1791 | if (newToast.parentNode === null) | ||
1792 | window.clearInterval(counterInterval); | ||
1793 | |||
1794 | // If toast is not being dragged, decrease its time remaining | ||
1795 | if (!newToast.classList.contains('panning')) { | ||
1796 | timeLeft -= 20; | ||
1797 | } | ||
1798 | |||
1799 | if (timeLeft <= 0) { | ||
1800 | // Animate toast out | ||
1801 | Vel(newToast, {"opacity": 0, marginTop: '-40px'}, { duration: 375, | ||
1802 | easing: 'easeOutExpo', | ||
1803 | queue: false, | ||
1804 | complete: function(){ | ||
1805 | // Call the optional callback | ||
1806 | if(typeof(completeCallback) === "function") | ||
1807 | completeCallback(); | ||
1808 | // Remove toast after it times out | ||
1809 | this[0].parentNode.removeChild(this[0]); | ||
1810 | } | ||
1811 | }); | ||
1812 | window.clearInterval(counterInterval); | ||
1813 | } | ||
1814 | }, 20); | ||
1815 | |||
1816 | |||
1817 | |||
1818 | function createToast(html) { | ||
1819 | |||
1820 | // Create toast | ||
1821 | var toast = document.createElement('div'); | ||
1822 | toast.classList.add('toast'); | ||
1823 | if (className) { | ||
1824 | var classes = className.split(' '); | ||
1825 | |||
1826 | for (var i = 0, count = classes.length; i < count; i++) { | ||
1827 | toast.classList.add(classes[i]); | ||
1828 | } | ||
1829 | } | ||
1830 | // If type of parameter is HTML Element | ||
1831 | if ( typeof HTMLElement === "object" ? html instanceof HTMLElement : html && typeof html === "object" && html !== null && html.nodeType === 1 && typeof html.nodeName==="string" | ||
1832 | ) { | ||
1833 | toast.appendChild(html); | ||
1834 | } | ||
1835 | else if (html instanceof jQuery) { | ||
1836 | // Check if it is jQuery object | ||
1837 | toast.appendChild(html[0]); | ||
1838 | } | ||
1839 | else { | ||
1840 | // Insert as text; | ||
1841 | toast.innerHTML = html; | ||
1842 | } | ||
1843 | // Bind hammer | ||
1844 | var hammerHandler = new Hammer(toast, {prevent_default: false}); | ||
1845 | hammerHandler.on('pan', function(e) { | ||
1846 | var deltaX = e.deltaX; | ||
1847 | var activationDistance = 80; | ||
1848 | |||
1849 | // Change toast state | ||
1850 | if (!toast.classList.contains('panning')){ | ||
1851 | toast.classList.add('panning'); | ||
1852 | } | ||
1853 | |||
1854 | var opacityPercent = 1-Math.abs(deltaX / activationDistance); | ||
1855 | if (opacityPercent < 0) | ||
1856 | opacityPercent = 0; | ||
1857 | |||
1858 | Vel(toast, {left: deltaX, opacity: opacityPercent }, {duration: 50, queue: false, easing: 'easeOutQuad'}); | ||
1859 | |||
1860 | }); | ||
1861 | |||
1862 | hammerHandler.on('panend', function(e) { | ||
1863 | var deltaX = e.deltaX; | ||
1864 | var activationDistance = 80; | ||
1865 | |||
1866 | // If toast dragged past activation point | ||
1867 | if (Math.abs(deltaX) > activationDistance) { | ||
1868 | Vel(toast, {marginTop: '-40px'}, { duration: 375, | ||
1869 | easing: 'easeOutExpo', | ||
1870 | queue: false, | ||
1871 | complete: function(){ | ||
1872 | if(typeof(completeCallback) === "function") { | ||
1873 | completeCallback(); | ||
1874 | } | ||
1875 | toast.parentNode.removeChild(toast); | ||
1876 | } | ||
1877 | }); | ||
1878 | |||
1879 | } else { | ||
1880 | toast.classList.remove('panning'); | ||
1881 | // Put toast back into original position | ||
1882 | Vel(toast, { left: 0, opacity: 1 }, { duration: 300, | ||
1883 | easing: 'easeOutExpo', | ||
1884 | queue: false | ||
1885 | }); | ||
1886 | |||
1887 | } | ||
1888 | }); | ||
1889 | |||
1890 | return toast; | ||
1891 | } | ||
1892 | }; | ||
1893 | ;(function ($) { | ||
1894 | |||
1895 | var methods = { | ||
1896 | init : function(options) { | ||
1897 | var defaults = { | ||
1898 | menuWidth: 240, | ||
1899 | edge: 'left', | ||
1900 | closeOnClick: false | ||
1901 | }; | ||
1902 | options = $.extend(defaults, options); | ||
1903 | |||
1904 | $(this).each(function(){ | ||
1905 | var $this = $(this); | ||
1906 | var menu_id = $("#"+ $this.attr('data-activates')); | ||
1907 | |||
1908 | // Set to width | ||
1909 | if (options.menuWidth != 240) { | ||
1910 | menu_id.css('width', options.menuWidth); | ||
1911 | } | ||
1912 | |||
1913 | // Add Touch Area | ||
1914 | var dragTarget = $('<div class="drag-target"></div>'); | ||
1915 | $('body').append(dragTarget); | ||
1916 | |||
1917 | if (options.edge == 'left') { | ||
1918 | menu_id.css('left', -1 * (options.menuWidth + 10)); | ||
1919 | dragTarget.css({'left': 0}); // Add Touch Area | ||
1920 | } | ||
1921 | else { | ||
1922 | menu_id.addClass('right-aligned') // Change text-alignment to right | ||
1923 | .css('right', -1 * (options.menuWidth + 10)) | ||
1924 | .css('left', ''); | ||
1925 | dragTarget.css({'right': 0}); // Add Touch Area | ||
1926 | } | ||
1927 | |||
1928 | // If fixed sidenav, bring menu out | ||
1929 | if (menu_id.hasClass('fixed')) { | ||
1930 | if (window.innerWidth > 992) { | ||
1931 | menu_id.css('left', 0); | ||
1932 | } | ||
1933 | } | ||
1934 | |||
1935 | // Window resize to reset on large screens fixed | ||
1936 | if (menu_id.hasClass('fixed')) { | ||
1937 | $(window).resize( function() { | ||
1938 | if (window.innerWidth > 992) { | ||
1939 | // Close menu if window is resized bigger than 992 and user has fixed sidenav | ||
1940 | if ($('#sidenav-overlay').css('opacity') !== 0 && menuOut) { | ||
1941 | removeMenu(true); | ||
1942 | } | ||
1943 | else { | ||
1944 | menu_id.removeAttr('style'); | ||
1945 | menu_id.css('width', options.menuWidth); | ||
1946 | } | ||
1947 | } | ||
1948 | else if (menuOut === false){ | ||
1949 | if (options.edge === 'left') | ||
1950 | menu_id.css('left', -1 * (options.menuWidth + 10)); | ||
1951 | else | ||
1952 | menu_id.css('right', -1 * (options.menuWidth + 10)); | ||
1953 | } | ||
1954 | |||
1955 | }); | ||
1956 | } | ||
1957 | |||
1958 | // if closeOnClick, then add close event for all a tags in side sideNav | ||
1959 | if (options.closeOnClick === true) { | ||
1960 | menu_id.on("click.itemclick", "a:not(.collapsible-header)", function(){ | ||
1961 | removeMenu(); | ||
1962 | }); | ||
1963 | } | ||
1964 | |||
1965 | function removeMenu(restoreNav) { | ||
1966 | panning = false; | ||
1967 | menuOut = false; | ||
1968 | |||
1969 | // Reenable scrolling | ||
1970 | $('body').css('overflow', ''); | ||
1971 | |||
1972 | $('#sidenav-overlay').velocity({opacity: 0}, {duration: 200, queue: false, easing: 'easeOutQuad', | ||
1973 | complete: function() { | ||
1974 | $(this).remove(); | ||
1975 | } }); | ||
1976 | if (options.edge === 'left') { | ||
1977 | // Reset phantom div | ||
1978 | dragTarget.css({width: '', right: '', left: '0'}); | ||
1979 | menu_id.velocity( | ||
1980 | {left: -1 * (options.menuWidth + 10)}, | ||
1981 | { duration: 200, | ||
1982 | queue: false, | ||
1983 | easing: 'easeOutCubic', | ||
1984 | complete: function() { | ||
1985 | if (restoreNav === true) { | ||
1986 | // Restore Fixed sidenav | ||
1987 | menu_id.removeAttr('style'); | ||
1988 | menu_id.css('width', options.menuWidth); | ||
1989 | } | ||
1990 | } | ||
1991 | |||
1992 | }); | ||
1993 | } | ||
1994 | else { | ||
1995 | // Reset phantom div | ||
1996 | dragTarget.css({width: '', right: '0', left: ''}); | ||
1997 | menu_id.velocity( | ||
1998 | {right: -1 * (options.menuWidth + 10)}, | ||
1999 | { duration: 200, | ||
2000 | queue: false, | ||
2001 | easing: 'easeOutCubic', | ||
2002 | complete: function() { | ||
2003 | if (restoreNav === true) { | ||
2004 | // Restore Fixed sidenav | ||
2005 | menu_id.removeAttr('style'); | ||
2006 | menu_id.css('width', options.menuWidth); | ||
2007 | } | ||
2008 | } | ||
2009 | }); | ||
2010 | } | ||
2011 | } | ||
2012 | |||
2013 | |||
2014 | |||
2015 | // Touch Event | ||
2016 | var panning = false; | ||
2017 | var menuOut = false; | ||
2018 | |||
2019 | dragTarget.on('click', function(){ | ||
2020 | removeMenu(); | ||
2021 | }); | ||
2022 | |||
2023 | dragTarget.hammer({ | ||
2024 | prevent_default: false | ||
2025 | }).bind('pan', function(e) { | ||
2026 | |||
2027 | if (e.gesture.pointerType == "touch") { | ||
2028 | |||
2029 | var direction = e.gesture.direction; | ||
2030 | var x = e.gesture.center.x; | ||
2031 | var y = e.gesture.center.y; | ||
2032 | var velocityX = e.gesture.velocityX; | ||
2033 | |||
2034 | // Disable Scrolling | ||
2035 | $('body').css('overflow', 'hidden'); | ||
2036 | |||
2037 | // If overlay does not exist, create one and if it is clicked, close menu | ||
2038 | if ($('#sidenav-overlay').length === 0) { | ||
2039 | var overlay = $('<div id="sidenav-overlay"></div>'); | ||
2040 | overlay.css('opacity', 0).click( function(){ | ||
2041 | removeMenu(); | ||
2042 | }); | ||
2043 | $('body').append(overlay); | ||
2044 | } | ||
2045 | |||
2046 | // Keep within boundaries | ||
2047 | if (options.edge === 'left') { | ||
2048 | if (x > options.menuWidth) { x = options.menuWidth; } | ||
2049 | else if (x < 0) { x = 0; } | ||
2050 | } | ||
2051 | |||
2052 | if (options.edge === 'left') { | ||
2053 | // Left Direction | ||
2054 | if (x < (options.menuWidth / 2)) { menuOut = false; } | ||
2055 | // Right Direction | ||
2056 | else if (x >= (options.menuWidth / 2)) { menuOut = true; } | ||
2057 | |||
2058 | menu_id.css('left', (x - options.menuWidth)); | ||
2059 | } | ||
2060 | else { | ||
2061 | // Left Direction | ||
2062 | if (x < (window.innerWidth - options.menuWidth / 2)) { | ||
2063 | menuOut = true; | ||
2064 | } | ||
2065 | // Right Direction | ||
2066 | else if (x >= (window.innerWidth - options.menuWidth / 2)) { | ||
2067 | menuOut = false; | ||
2068 | } | ||
2069 | var rightPos = -1 *(x - options.menuWidth / 2); | ||
2070 | if (rightPos > 0) { | ||
2071 | rightPos = 0; | ||
2072 | } | ||
2073 | |||
2074 | menu_id.css('right', rightPos); | ||
2075 | } | ||
2076 | |||
2077 | |||
2078 | |||
2079 | |||
2080 | // Percentage overlay | ||
2081 | var overlayPerc; | ||
2082 | if (options.edge === 'left') { | ||
2083 | overlayPerc = x / options.menuWidth; | ||
2084 | $('#sidenav-overlay').velocity({opacity: overlayPerc }, {duration: 50, queue: false, easing: 'easeOutQuad'}); | ||
2085 | } | ||
2086 | else { | ||
2087 | overlayPerc = Math.abs((x - window.innerWidth) / options.menuWidth); | ||
2088 | $('#sidenav-overlay').velocity({opacity: overlayPerc }, {duration: 50, queue: false, easing: 'easeOutQuad'}); | ||
2089 | } | ||
2090 | } | ||
2091 | |||
2092 | }).bind('panend', function(e) { | ||
2093 | |||
2094 | if (e.gesture.pointerType == "touch") { | ||
2095 | var velocityX = e.gesture.velocityX; | ||
2096 | panning = false; | ||
2097 | if (options.edge === 'left') { | ||
2098 | // If velocityX <= 0.3 then the user is flinging the menu closed so ignore menuOut | ||
2099 | if ((menuOut && velocityX <= 0.3) || velocityX < -0.5) { | ||
2100 | menu_id.velocity({left: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); | ||
2101 | $('#sidenav-overlay').velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'}); | ||
2102 | dragTarget.css({width: '50%', right: 0, left: ''}); | ||
2103 | } | ||
2104 | else if (!menuOut || velocityX > 0.3) { | ||
2105 | // Enable Scrolling | ||
2106 | $('body').css('overflow', ''); | ||
2107 | // Slide menu closed | ||
2108 | menu_id.velocity({left: -1 * (options.menuWidth + 10)}, {duration: 200, queue: false, easing: 'easeOutQuad'}); | ||
2109 | $('#sidenav-overlay').velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad', | ||
2110 | complete: function () { | ||
2111 | $(this).remove(); | ||
2112 | }}); | ||
2113 | dragTarget.css({width: '10px', right: '', left: 0}); | ||
2114 | } | ||
2115 | } | ||
2116 | else { | ||
2117 | if ((menuOut && velocityX >= -0.3) || velocityX > 0.5) { | ||
2118 | menu_id.velocity({right: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); | ||
2119 | $('#sidenav-overlay').velocity({opacity: 1 }, {duration: 50, queue: false, easing: 'easeOutQuad'}); | ||
2120 | dragTarget.css({width: '50%', right: '', left: 0}); | ||
2121 | } | ||
2122 | else if (!menuOut || velocityX < -0.3) { | ||
2123 | // Enable Scrolling | ||
2124 | $('body').css('overflow', ''); | ||
2125 | // Slide menu closed | ||
2126 | menu_id.velocity({right: -1 * (options.menuWidth + 10)}, {duration: 200, queue: false, easing: 'easeOutQuad'}); | ||
2127 | $('#sidenav-overlay').velocity({opacity: 0 }, {duration: 200, queue: false, easing: 'easeOutQuad', | ||
2128 | complete: function () { | ||
2129 | $(this).remove(); | ||
2130 | }}); | ||
2131 | dragTarget.css({width: '10px', right: 0, left: ''}); | ||
2132 | } | ||
2133 | } | ||
2134 | |||
2135 | } | ||
2136 | }); | ||
2137 | |||
2138 | $this.click(function() { | ||
2139 | if (menuOut === true) { | ||
2140 | menuOut = false; | ||
2141 | panning = false; | ||
2142 | removeMenu(); | ||
2143 | } | ||
2144 | else { | ||
2145 | |||
2146 | // Disable Scrolling | ||
2147 | $('body').css('overflow', 'hidden'); | ||
2148 | // Push current drag target on top of DOM tree | ||
2149 | $('body').append(dragTarget); | ||
2150 | |||
2151 | if (options.edge === 'left') { | ||
2152 | dragTarget.css({width: '50%', right: 0, left: ''}); | ||
2153 | menu_id.velocity({left: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); | ||
2154 | } | ||
2155 | else { | ||
2156 | dragTarget.css({width: '50%', right: '', left: 0}); | ||
2157 | menu_id.velocity({right: 0}, {duration: 300, queue: false, easing: 'easeOutQuad'}); | ||
2158 | menu_id.css('left',''); | ||
2159 | } | ||
2160 | |||
2161 | var overlay = $('<div id="sidenav-overlay"></div>'); | ||
2162 | overlay.css('opacity', 0) | ||
2163 | .click(function(){ | ||
2164 | menuOut = false; | ||
2165 | panning = false; | ||
2166 | removeMenu(); | ||
2167 | overlay.velocity({opacity: 0}, {duration: 300, queue: false, easing: 'easeOutQuad', | ||
2168 | complete: function() { | ||
2169 | $(this).remove(); | ||
2170 | } }); | ||
2171 | |||
2172 | }); | ||
2173 | $('body').append(overlay); | ||
2174 | overlay.velocity({opacity: 1}, {duration: 300, queue: false, easing: 'easeOutQuad', | ||
2175 | complete: function () { | ||
2176 | menuOut = true; | ||
2177 | panning = false; | ||
2178 | } | ||
2179 | }); | ||
2180 | } | ||
2181 | |||
2182 | return false; | ||
2183 | }); | ||
2184 | }); | ||
2185 | |||
2186 | |||
2187 | }, | ||
2188 | show : function() { | ||
2189 | this.trigger('click'); | ||
2190 | }, | ||
2191 | hide : function() { | ||
2192 | $('#sidenav-overlay').trigger('click'); | ||
2193 | } | ||
2194 | }; | ||
2195 | |||
2196 | |||
2197 | $.fn.sideNav = function(methodOrOptions) { | ||
2198 | if ( methods[methodOrOptions] ) { | ||
2199 | return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); | ||
2200 | } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { | ||
2201 | // Default to "init" | ||
2202 | return methods.init.apply( this, arguments ); | ||
2203 | } else { | ||
2204 | $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.sideNav' ); | ||
2205 | } | ||
2206 | }; // Plugin end | ||
2207 | }( jQuery )); | ||
2208 | ;/** | ||
2209 | * Extend jquery with a scrollspy plugin. | ||
2210 | * This watches the window scroll and fires events when elements are scrolled into viewport. | ||
2211 | * | ||
2212 | * throttle() and getTime() taken from Underscore.js | ||
2213 | * https://github.com/jashkenas/underscore | ||
2214 | * | ||
2215 | * @author Copyright 2013 John Smart | ||
2216 | * @license https://raw.github.com/thesmart/jquery-scrollspy/master/LICENSE | ||
2217 | * @see https://github.com/thesmart | ||
2218 | * @version 0.1.2 | ||
2219 | */ | ||
2220 | (function($) { | ||
2221 | |||
2222 | var jWindow = $(window); | ||
2223 | var elements = []; | ||
2224 | var elementsInView = []; | ||
2225 | var isSpying = false; | ||
2226 | var ticks = 0; | ||
2227 | var unique_id = 1; | ||
2228 | var offset = { | ||
2229 | top : 0, | ||
2230 | right : 0, | ||
2231 | bottom : 0, | ||
2232 | left : 0, | ||
2233 | } | ||
2234 | |||
2235 | /** | ||
2236 | * Find elements that are within the boundary | ||
2237 | * @param {number} top | ||
2238 | * @param {number} right | ||
2239 | * @param {number} bottom | ||
2240 | * @param {number} left | ||
2241 | * @return {jQuery} A collection of elements | ||
2242 | */ | ||
2243 | function findElements(top, right, bottom, left) { | ||
2244 | var hits = $(); | ||
2245 | $.each(elements, function(i, element) { | ||
2246 | if (element.height() > 0) { | ||
2247 | var elTop = element.offset().top, | ||
2248 | elLeft = element.offset().left, | ||
2249 | elRight = elLeft + element.width(), | ||
2250 | elBottom = elTop + element.height(); | ||
2251 | |||
2252 | var isIntersect = !(elLeft > right || | ||
2253 | elRight < left || | ||
2254 | elTop > bottom || | ||
2255 | elBottom < top); | ||
2256 | |||
2257 | if (isIntersect) { | ||
2258 | hits.push(element); | ||
2259 | } | ||
2260 | } | ||
2261 | }); | ||
2262 | |||
2263 | return hits; | ||
2264 | } | ||
2265 | |||
2266 | |||
2267 | /** | ||
2268 | * Called when the user scrolls the window | ||
2269 | */ | ||
2270 | function onScroll() { | ||
2271 | // unique tick id | ||
2272 | ++ticks; | ||
2273 | |||
2274 | // viewport rectangle | ||
2275 | var top = jWindow.scrollTop(), | ||
2276 | left = jWindow.scrollLeft(), | ||
2277 | right = left + jWindow.width(), | ||
2278 | bottom = top + jWindow.height(); | ||
2279 | |||
2280 | // determine which elements are in view | ||
2281 | // + 60 accounts for fixed nav | ||
2282 | var intersections = findElements(top+offset.top + 200, right+offset.right, bottom+offset.bottom, left+offset.left); | ||
2283 | $.each(intersections, function(i, element) { | ||
2284 | |||
2285 | var lastTick = element.data('scrollSpy:ticks'); | ||
2286 | if (typeof lastTick != 'number') { | ||
2287 | // entered into view | ||
2288 | element.triggerHandler('scrollSpy:enter'); | ||
2289 | } | ||
2290 | |||
2291 | // update tick id | ||
2292 | element.data('scrollSpy:ticks', ticks); | ||
2293 | }); | ||
2294 | |||
2295 | // determine which elements are no longer in view | ||
2296 | $.each(elementsInView, function(i, element) { | ||
2297 | var lastTick = element.data('scrollSpy:ticks'); | ||
2298 | if (typeof lastTick == 'number' && lastTick !== ticks) { | ||
2299 | // exited from view | ||
2300 | element.triggerHandler('scrollSpy:exit'); | ||
2301 | element.data('scrollSpy:ticks', null); | ||
2302 | } | ||
2303 | }); | ||
2304 | |||
2305 | // remember elements in view for next tick | ||
2306 | elementsInView = intersections; | ||
2307 | } | ||
2308 | |||
2309 | /** | ||
2310 | * Called when window is resized | ||
2311 | */ | ||
2312 | function onWinSize() { | ||
2313 | jWindow.trigger('scrollSpy:winSize'); | ||
2314 | } | ||
2315 | |||
2316 | /** | ||
2317 | * Get time in ms | ||
2318 | * @license https://raw.github.com/jashkenas/underscore/master/LICENSE | ||
2319 | * @type {function} | ||
2320 | * @return {number} | ||
2321 | */ | ||
2322 | var getTime = (Date.now || function () { | ||
2323 | return new Date().getTime(); | ||
2324 | }); | ||
2325 | |||
2326 | /** | ||
2327 | * Returns a function, that, when invoked, will only be triggered at most once | ||
2328 | * during a given window of time. Normally, the throttled function will run | ||
2329 | * as much as it can, without ever going more than once per `wait` duration; | ||
2330 | * but if you'd like to disable the execution on the leading edge, pass | ||
2331 | * `{leading: false}`. To disable execution on the trailing edge, ditto. | ||
2332 | * @license https://raw.github.com/jashkenas/underscore/master/LICENSE | ||
2333 | * @param {function} func | ||
2334 | * @param {number} wait | ||
2335 | * @param {Object=} options | ||
2336 | * @returns {Function} | ||
2337 | */ | ||
2338 | function throttle(func, wait, options) { | ||
2339 | var context, args, result; | ||
2340 | var timeout = null; | ||
2341 | var previous = 0; | ||
2342 | options || (options = {}); | ||
2343 | var later = function () { | ||
2344 | previous = options.leading === false ? 0 : getTime(); | ||
2345 | timeout = null; | ||
2346 | result = func.apply(context, args); | ||
2347 | context = args = null; | ||
2348 | }; | ||
2349 | return function () { | ||
2350 | var now = getTime(); | ||
2351 | if (!previous && options.leading === false) previous = now; | ||
2352 | var remaining = wait - (now - previous); | ||
2353 | context = this; | ||
2354 | args = arguments; | ||
2355 | if (remaining <= 0) { | ||
2356 | clearTimeout(timeout); | ||
2357 | timeout = null; | ||
2358 | previous = now; | ||
2359 | result = func.apply(context, args); | ||
2360 | context = args = null; | ||
2361 | } else if (!timeout && options.trailing !== false) { | ||
2362 | timeout = setTimeout(later, remaining); | ||
2363 | } | ||
2364 | return result; | ||
2365 | }; | ||
2366 | }; | ||
2367 | |||
2368 | /** | ||
2369 | * Enables ScrollSpy using a selector | ||
2370 | * @param {jQuery|string} selector The elements collection, or a selector | ||
2371 | * @param {Object=} options Optional. | ||
2372 | throttle : number -> scrollspy throttling. Default: 100 ms | ||
2373 | offsetTop : number -> offset from top. Default: 0 | ||
2374 | offsetRight : number -> offset from right. Default: 0 | ||
2375 | offsetBottom : number -> offset from bottom. Default: 0 | ||
2376 | offsetLeft : number -> offset from left. Default: 0 | ||
2377 | * @returns {jQuery} | ||
2378 | */ | ||
2379 | $.scrollSpy = function(selector, options) { | ||
2380 | var visible = []; | ||
2381 | selector = $(selector); | ||
2382 | selector.each(function(i, element) { | ||
2383 | elements.push($(element)); | ||
2384 | $(element).data("scrollSpy:id", i); | ||
2385 | // Smooth scroll to section | ||
2386 | $('a[href=#' + $(element).attr('id') + ']').click(function(e) { | ||
2387 | e.preventDefault(); | ||
2388 | var offset = $(this.hash).offset().top + 1; | ||
2389 | |||
2390 | // offset - 200 allows elements near bottom of page to scroll | ||
2391 | |||
2392 | $('html, body').animate({ scrollTop: offset - 200 }, {duration: 400, queue: false, easing: 'easeOutCubic'}); | ||
2393 | |||
2394 | }); | ||
2395 | }); | ||
2396 | options = options || { | ||
2397 | throttle: 100 | ||
2398 | }; | ||
2399 | |||
2400 | offset.top = options.offsetTop || 0; | ||
2401 | offset.right = options.offsetRight || 0; | ||
2402 | offset.bottom = options.offsetBottom || 0; | ||
2403 | offset.left = options.offsetLeft || 0; | ||
2404 | |||
2405 | var throttledScroll = throttle(onScroll, options.throttle || 100); | ||
2406 | var readyScroll = function(){ | ||
2407 | $(document).ready(throttledScroll); | ||
2408 | }; | ||
2409 | |||
2410 | if (!isSpying) { | ||
2411 | jWindow.on('scroll', readyScroll); | ||
2412 | jWindow.on('resize', readyScroll); | ||
2413 | isSpying = true; | ||
2414 | } | ||
2415 | |||
2416 | // perform a scan once, after current execution context, and after dom is ready | ||
2417 | setTimeout(readyScroll, 0); | ||
2418 | |||
2419 | |||
2420 | selector.on('scrollSpy:enter', function() { | ||
2421 | visible = $.grep(visible, function(value) { | ||
2422 | return value.height() != 0; | ||
2423 | }); | ||
2424 | |||
2425 | var $this = $(this); | ||
2426 | |||
2427 | if (visible[0]) { | ||
2428 | $('a[href=#' + visible[0].attr('id') + ']').removeClass('active'); | ||
2429 | if ($this.data('scrollSpy:id') < visible[0].data('scrollSpy:id')) { | ||
2430 | visible.unshift($(this)); | ||
2431 | } | ||
2432 | else { | ||
2433 | visible.push($(this)); | ||
2434 | } | ||
2435 | } | ||
2436 | else { | ||
2437 | visible.push($(this)); | ||
2438 | } | ||
2439 | |||
2440 | |||
2441 | $('a[href=#' + visible[0].attr('id') + ']').addClass('active'); | ||
2442 | }); | ||
2443 | selector.on('scrollSpy:exit', function() { | ||
2444 | visible = $.grep(visible, function(value) { | ||
2445 | return value.height() != 0; | ||
2446 | }); | ||
2447 | |||
2448 | if (visible[0]) { | ||
2449 | $('a[href=#' + visible[0].attr('id') + ']').removeClass('active'); | ||
2450 | var $this = $(this); | ||
2451 | visible = $.grep(visible, function(value) { | ||
2452 | return value.attr('id') != $this.attr('id'); | ||
2453 | }); | ||
2454 | if (visible[0]) { // Check if empty | ||
2455 | $('a[href=#' + visible[0].attr('id') + ']').addClass('active'); | ||
2456 | } | ||
2457 | } | ||
2458 | }); | ||
2459 | |||
2460 | return selector; | ||
2461 | }; | ||
2462 | |||
2463 | /** | ||
2464 | * Listen for window resize events | ||
2465 | * @param {Object=} options Optional. Set { throttle: number } to change throttling. Default: 100 ms | ||
2466 | * @returns {jQuery} $(window) | ||
2467 | */ | ||
2468 | $.winSizeSpy = function(options) { | ||
2469 | $.winSizeSpy = function() { return jWindow; }; // lock from multiple calls | ||
2470 | options = options || { | ||
2471 | throttle: 100 | ||
2472 | }; | ||
2473 | return jWindow.on('resize', throttle(onWinSize, options.throttle || 100)); | ||
2474 | }; | ||
2475 | |||
2476 | /** | ||
2477 | * Enables ScrollSpy on a collection of elements | ||
2478 | * e.g. $('.scrollSpy').scrollSpy() | ||
2479 | * @param {Object=} options Optional. | ||
2480 | throttle : number -> scrollspy throttling. Default: 100 ms | ||
2481 | offsetTop : number -> offset from top. Default: 0 | ||
2482 | offsetRight : number -> offset from right. Default: 0 | ||
2483 | offsetBottom : number -> offset from bottom. Default: 0 | ||
2484 | offsetLeft : number -> offset from left. Default: 0 | ||
2485 | * @returns {jQuery} | ||
2486 | */ | ||
2487 | $.fn.scrollSpy = function(options) { | ||
2488 | return $.scrollSpy($(this), options); | ||
2489 | }; | ||
2490 | |||
2491 | })(jQuery);;(function ($) { | ||
2492 | $(document).ready(function() { | ||
2493 | |||
2494 | // Function to update labels of text fields | ||
2495 | Materialize.updateTextFields = function() { | ||
2496 | var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea'; | ||
2497 | $(input_selector).each(function(index, element) { | ||
2498 | if ($(element).val().length > 0 || $(this).attr('placeholder') !== undefined || $(element)[0].validity.badInput === true) { | ||
2499 | $(this).siblings('label').addClass('active'); | ||
2500 | } | ||
2501 | else { | ||
2502 | $(this).siblings('label, i').removeClass('active'); | ||
2503 | } | ||
2504 | }); | ||
2505 | }; | ||
2506 | |||
2507 | // Text based inputs | ||
2508 | var input_selector = 'input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea'; | ||
2509 | |||
2510 | // Handle HTML5 autofocus | ||
2511 | $('input[autofocus]').siblings('label, i').addClass('active'); | ||
2512 | |||
2513 | // Add active if form auto complete | ||
2514 | $(document).on('change', input_selector, function () { | ||
2515 | if($(this).val().length !== 0 || $(this).attr('placeholder') !== undefined) { | ||
2516 | $(this).siblings('label').addClass('active'); | ||
2517 | } | ||
2518 | validate_field($(this)); | ||
2519 | }); | ||
2520 | |||
2521 | // Add active if input element has been pre-populated on document ready | ||
2522 | $(document).ready(function() { | ||
2523 | Materialize.updateTextFields(); | ||
2524 | }); | ||
2525 | |||
2526 | // HTML DOM FORM RESET handling | ||
2527 | $(document).on('reset', function(e) { | ||
2528 | var formReset = $(e.target); | ||
2529 | if (formReset.is('form')) { | ||
2530 | formReset.find(input_selector).removeClass('valid').removeClass('invalid'); | ||
2531 | formReset.find(input_selector).each(function () { | ||
2532 | if ($(this).attr('value') === '') { | ||
2533 | $(this).siblings('label, i').removeClass('active'); | ||
2534 | } | ||
2535 | }); | ||
2536 | |||
2537 | // Reset select | ||
2538 | formReset.find('select.initialized').each(function () { | ||
2539 | var reset_text = formReset.find('option[selected]').text(); | ||
2540 | formReset.siblings('input.select-dropdown').val(reset_text); | ||
2541 | }); | ||
2542 | } | ||
2543 | }); | ||
2544 | |||
2545 | // Add active when element has focus | ||
2546 | $(document).on('focus', input_selector, function () { | ||
2547 | $(this).siblings('label, i').addClass('active'); | ||
2548 | }); | ||
2549 | |||
2550 | $(document).on('blur', input_selector, function () { | ||
2551 | var $inputElement = $(this); | ||
2552 | if ($inputElement.val().length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') === undefined) { | ||
2553 | $inputElement.siblings('label, i').removeClass('active'); | ||
2554 | } | ||
2555 | |||
2556 | if ($inputElement.val().length === 0 && $inputElement[0].validity.badInput !== true && $inputElement.attr('placeholder') !== undefined) { | ||
2557 | $inputElement.siblings('i').removeClass('active'); | ||
2558 | } | ||
2559 | validate_field($inputElement); | ||
2560 | }); | ||
2561 | |||
2562 | window.validate_field = function(object) { | ||
2563 | var hasLength = object.attr('length') !== undefined; | ||
2564 | var lenAttr = parseInt(object.attr('length')); | ||
2565 | var len = object.val().length; | ||
2566 | |||
2567 | if (object.val().length === 0 && object[0].validity.badInput === false) { | ||
2568 | if (object.hasClass('validate')) { | ||
2569 | object.removeClass('valid'); | ||
2570 | object.removeClass('invalid'); | ||
2571 | } | ||
2572 | } | ||
2573 | else { | ||
2574 | if (object.hasClass('validate')) { | ||
2575 | // Check for character counter attributes | ||
2576 | if ((object.is(':valid') && hasLength && (len <= lenAttr)) || (object.is(':valid') && !hasLength)) { | ||
2577 | object.removeClass('invalid'); | ||
2578 | object.addClass('valid'); | ||
2579 | } | ||
2580 | else { | ||
2581 | object.removeClass('valid'); | ||
2582 | object.addClass('invalid'); | ||
2583 | } | ||
2584 | } | ||
2585 | } | ||
2586 | }; | ||
2587 | |||
2588 | |||
2589 | // Textarea Auto Resize | ||
2590 | var hiddenDiv = $('.hiddendiv').first(); | ||
2591 | if (!hiddenDiv.length) { | ||
2592 | hiddenDiv = $('<div class="hiddendiv common"></div>'); | ||
2593 | $('body').append(hiddenDiv); | ||
2594 | } | ||
2595 | var text_area_selector = '.materialize-textarea'; | ||
2596 | |||
2597 | function textareaAutoResize($textarea) { | ||
2598 | // Set font properties of hiddenDiv | ||
2599 | |||
2600 | var fontFamily = $textarea.css('font-family'); | ||
2601 | var fontSize = $textarea.css('font-size'); | ||
2602 | |||
2603 | if (fontSize) { hiddenDiv.css('font-size', fontSize); } | ||
2604 | if (fontFamily) { hiddenDiv.css('font-family', fontFamily); } | ||
2605 | |||
2606 | if ($textarea.attr('wrap') === "off") { | ||
2607 | hiddenDiv.css('overflow-wrap', "normal") | ||
2608 | .css('white-space', "pre"); | ||
2609 | } | ||
2610 | |||
2611 | |||
2612 | |||
2613 | |||
2614 | hiddenDiv.text($textarea.val() + '\n'); | ||
2615 | var content = hiddenDiv.html().replace(/\n/g, '<br>'); | ||
2616 | hiddenDiv.html(content); | ||
2617 | |||
2618 | |||
2619 | // When textarea is hidden, width goes crazy. | ||
2620 | // Approximate with half of window size | ||
2621 | |||
2622 | if ($textarea.is(':visible')) { | ||
2623 | hiddenDiv.css('width', $textarea.width()); | ||
2624 | } | ||
2625 | else { | ||
2626 | hiddenDiv.css('width', $(window).width()/2); | ||
2627 | } | ||
2628 | |||
2629 | $textarea.css('height', hiddenDiv.height()); | ||
2630 | } | ||
2631 | |||
2632 | $(text_area_selector).each(function () { | ||
2633 | var $textarea = $(this); | ||
2634 | if ($textarea.val().length) { | ||
2635 | textareaAutoResize($textarea); | ||
2636 | } | ||
2637 | }); | ||
2638 | |||
2639 | $('body').on('keyup keydown autoresize', text_area_selector, function () { | ||
2640 | textareaAutoResize($(this)); | ||
2641 | }); | ||
2642 | |||
2643 | |||
2644 | // File Input Path | ||
2645 | |||
2646 | $(document).on('change', '.file-field input[type="file"]', function () { | ||
2647 | var file_field = $(this).closest('.file-field'); | ||
2648 | var path_input = file_field.find('input.file-path'); | ||
2649 | var files = $(this)[0].files; | ||
2650 | var file_names = []; | ||
2651 | for (var i = 0; i < files.length; i++) { | ||
2652 | file_names.push(files[i].name); | ||
2653 | } | ||
2654 | path_input.val(file_names.join(", ")); | ||
2655 | path_input.trigger('change'); | ||
2656 | }); | ||
2657 | |||
2658 | |||
2659 | /**************** | ||
2660 | * Range Input * | ||
2661 | ****************/ | ||
2662 | |||
2663 | var range_type = 'input[type=range]'; | ||
2664 | var range_mousedown = false; | ||
2665 | var left; | ||
2666 | |||
2667 | $(range_type).each(function () { | ||
2668 | var thumb = $('<span class="thumb"><span class="value"></span></span>'); | ||
2669 | $(this).after(thumb); | ||
2670 | }); | ||
2671 | |||
2672 | var range_wrapper = '.range-field'; | ||
2673 | $(document).on('change', range_type, function(e) { | ||
2674 | var thumb = $(this).siblings('.thumb'); | ||
2675 | thumb.find('.value').html($(this).val()); | ||
2676 | }); | ||
2677 | |||
2678 | $(document).on('input mousedown touchstart', range_type, function(e) { | ||
2679 | var thumb = $(this).siblings('.thumb'); | ||
2680 | |||
2681 | // If thumb indicator does not exist yet, create it | ||
2682 | if (thumb.length <= 0) { | ||
2683 | thumb = $('<span class="thumb"><span class="value"></span></span>'); | ||
2684 | $(this).append(thumb); | ||
2685 | } | ||
2686 | |||
2687 | // Set indicator value | ||
2688 | thumb.find('.value').html($(this).val()); | ||
2689 | |||
2690 | range_mousedown = true; | ||
2691 | $(this).addClass('active'); | ||
2692 | |||
2693 | if (!thumb.hasClass('active')) { | ||
2694 | thumb.velocity({ height: "30px", width: "30px", top: "-20px", marginLeft: "-15px"}, { duration: 300, easing: 'easeOutExpo' }); | ||
2695 | } | ||
2696 | |||
2697 | if(e.pageX === undefined || e.pageX === null){//mobile | ||
2698 | left = e.originalEvent.touches[0].pageX - $(this).offset().left; | ||
2699 | } | ||
2700 | else{ // desktop | ||
2701 | left = e.pageX - $(this).offset().left; | ||
2702 | } | ||
2703 | var width = $(this).outerWidth(); | ||
2704 | |||
2705 | if (left < 0) { | ||
2706 | left = 0; | ||
2707 | } | ||
2708 | else if (left > width) { | ||
2709 | left = width; | ||
2710 | } | ||
2711 | thumb.addClass('active').css('left', left); | ||
2712 | thumb.find('.value').html($(this).val()); | ||
2713 | |||
2714 | |||
2715 | }); | ||
2716 | |||
2717 | $(document).on('mouseup touchend', range_wrapper, function() { | ||
2718 | range_mousedown = false; | ||
2719 | $(this).removeClass('active'); | ||
2720 | }); | ||
2721 | |||
2722 | $(document).on('mousemove touchmove', range_wrapper, function(e) { | ||
2723 | var thumb = $(this).children('.thumb'); | ||
2724 | var left; | ||
2725 | if (range_mousedown) { | ||
2726 | if (!thumb.hasClass('active')) { | ||
2727 | thumb.velocity({ height: '30px', width: '30px', top: '-20px', marginLeft: '-15px'}, { duration: 300, easing: 'easeOutExpo' }); | ||
2728 | } | ||
2729 | if (e.pageX === undefined || e.pageX === null) { //mobile | ||
2730 | left = e.originalEvent.touches[0].pageX - $(this).offset().left; | ||
2731 | } | ||
2732 | else{ // desktop | ||
2733 | left = e.pageX - $(this).offset().left; | ||
2734 | } | ||
2735 | var width = $(this).outerWidth(); | ||
2736 | |||
2737 | if (left < 0) { | ||
2738 | left = 0; | ||
2739 | } | ||
2740 | else if (left > width) { | ||
2741 | left = width; | ||
2742 | } | ||
2743 | thumb.addClass('active').css('left', left); | ||
2744 | thumb.find('.value').html(thumb.siblings(range_type).val()); | ||
2745 | } | ||
2746 | }); | ||
2747 | |||
2748 | $(document).on('mouseout touchleave', range_wrapper, function() { | ||
2749 | if (!range_mousedown) { | ||
2750 | |||
2751 | var thumb = $(this).children('.thumb'); | ||
2752 | |||
2753 | if (thumb.hasClass('active')) { | ||
2754 | thumb.velocity({ height: '0', width: '0', top: '10px', marginLeft: '-6px'}, { duration: 100 }); | ||
2755 | } | ||
2756 | thumb.removeClass('active'); | ||
2757 | } | ||
2758 | }); | ||
2759 | |||
2760 | }); // End of $(document).ready | ||
2761 | |||
2762 | |||
2763 | |||
2764 | |||
2765 | // Select Plugin | ||
2766 | $.fn.material_select = function (callback) { | ||
2767 | $(this).each(function(){ | ||
2768 | $select = $(this); | ||
2769 | |||
2770 | if ( $select.hasClass('browser-default')) { | ||
2771 | return; // Continue to next (return false breaks out of entire loop) | ||
2772 | } | ||
2773 | |||
2774 | // Tear down structure if Select needs to be rebuilt | ||
2775 | var lastID = $select.data('select-id'); | ||
2776 | if (lastID) { | ||
2777 | $select.parent().find('span.caret').remove(); | ||
2778 | $select.parent().find('input').remove(); | ||
2779 | |||
2780 | $select.unwrap(); | ||
2781 | $('ul#select-options-'+lastID).remove(); | ||
2782 | } | ||
2783 | |||
2784 | // If destroying the select, remove the selelct-id and reset it to it's uninitialized state. | ||
2785 | if(callback === 'destroy') { | ||
2786 | $select.data('select-id', null).removeClass('initialized'); | ||
2787 | return; | ||
2788 | } | ||
2789 | |||
2790 | var uniqueID = Materialize.guid(); | ||
2791 | $select.data('select-id', uniqueID); | ||
2792 | var wrapper = $('<div class="select-wrapper"></div>'); | ||
2793 | wrapper.addClass($select.attr('class')); | ||
2794 | var options = $('<ul id="select-options-' + uniqueID+'" class="dropdown-content select-dropdown"></ul>'); | ||
2795 | var selectOptions = $select.children('option'); | ||
2796 | |||
2797 | var label; | ||
2798 | if ($select.find('option:selected') !== undefined) { | ||
2799 | label = $select.find('option:selected'); | ||
2800 | } | ||
2801 | else { | ||
2802 | label = options.first(); | ||
2803 | } | ||
2804 | |||
2805 | |||
2806 | // Create Dropdown structure | ||
2807 | selectOptions.each(function () { | ||
2808 | // Add disabled attr if disabled | ||
2809 | options.append($('<li class="' + (($(this).is(':disabled')) ? 'disabled' : '') + '"><span>' + $(this).html() + '</span></li>')); | ||
2810 | }); | ||
2811 | |||
2812 | |||
2813 | options.find('li').each(function (i) { | ||
2814 | var $curr_select = $select; | ||
2815 | $(this).click(function () { | ||
2816 | // Check if option element is disabled | ||
2817 | if (!$(this).hasClass('disabled')) { | ||
2818 | $curr_select.find('option').eq(i).prop('selected', true); | ||
2819 | // Trigger onchange() event | ||
2820 | $curr_select.trigger('change'); | ||
2821 | $curr_select.siblings('input.select-dropdown').val($(this).text()); | ||
2822 | if (typeof callback !== 'undefined') callback(); | ||
2823 | } | ||
2824 | }); | ||
2825 | |||
2826 | }); | ||
2827 | |||
2828 | // Wrap Elements | ||
2829 | $select.wrap(wrapper); | ||
2830 | // Add Select Display Element | ||
2831 | var dropdownIcon = $('<span class="caret">▼</span>'); | ||
2832 | if ( $select.is(':disabled') ) | ||
2833 | dropdownIcon.addClass('disabled'); | ||
2834 | |||
2835 | // escape double quotes | ||
2836 | var sanitizedLabelHtml = label.html().replace(/"/g, '"'); | ||
2837 | |||
2838 | var $newSelect = $('<input type="text" class="select-dropdown" readonly="true" ' + (($select.is(':disabled')) ? 'disabled' : '') + ' data-activates="select-options-' + uniqueID +'" value="'+ sanitizedLabelHtml +'"/>'); | ||
2839 | $select.before($newSelect); | ||
2840 | $newSelect.before(dropdownIcon); | ||
2841 | |||
2842 | $('body').append(options); | ||
2843 | // Check if section element is disabled | ||
2844 | if (!$select.is(':disabled')) { | ||
2845 | $newSelect.dropdown({"hover": false}); | ||
2846 | } | ||
2847 | |||
2848 | // Copy tabindex | ||
2849 | if ($select.attr('tabindex')) { | ||
2850 | $($newSelect[0]).attr('tabindex', $select.attr('tabindex')); | ||
2851 | } | ||
2852 | |||
2853 | $select.addClass('initialized'); | ||
2854 | |||
2855 | $newSelect.on('focus', function(){ | ||
2856 | $(this).trigger('open'); | ||
2857 | label = $(this).val(); | ||
2858 | selectedOption = options.find('li').filter(function() { | ||
2859 | return $(this).text().toLowerCase() === label.toLowerCase(); | ||
2860 | })[0]; | ||
2861 | activateOption(options, selectedOption); | ||
2862 | }); | ||
2863 | |||
2864 | $newSelect.on('blur', function(){ | ||
2865 | $(this).trigger('close'); | ||
2866 | }); | ||
2867 | |||
2868 | // Make option as selected and scroll to selected position | ||
2869 | activateOption = function(collection, newOption) { | ||
2870 | collection.find('li.active').removeClass('active'); | ||
2871 | $(newOption).addClass('active'); | ||
2872 | collection.scrollTo(newOption); | ||
2873 | }; | ||
2874 | |||
2875 | // Allow user to search by typing | ||
2876 | // this array is cleared after 1 second | ||
2877 | filterQuery = []; | ||
2878 | |||
2879 | onKeyDown = function(event){ | ||
2880 | // TAB - switch to another input | ||
2881 | if(event.which == 9){ | ||
2882 | $newSelect.trigger('close'); | ||
2883 | return; | ||
2884 | } | ||
2885 | |||
2886 | // ARROW DOWN WHEN SELECT IS CLOSED - open select options | ||
2887 | if(event.which == 40 && !options.is(":visible")){ | ||
2888 | $newSelect.trigger('open'); | ||
2889 | return; | ||
2890 | } | ||
2891 | |||
2892 | // ENTER WHEN SELECT IS CLOSED - submit form | ||
2893 | if(event.which == 13 && !options.is(":visible")){ | ||
2894 | return; | ||
2895 | } | ||
2896 | |||
2897 | event.preventDefault(); | ||
2898 | |||
2899 | // CASE WHEN USER TYPE LETTERS | ||
2900 | letter = String.fromCharCode(event.which).toLowerCase(); | ||
2901 | var nonLetters = [9,13,27,38,40]; | ||
2902 | if (letter && (nonLetters.indexOf(event.which) === -1)){ | ||
2903 | filterQuery.push(letter); | ||
2904 | |||
2905 | string = filterQuery.join(""); | ||
2906 | |||
2907 | newOption = options.find('li').filter(function() { | ||
2908 | return $(this).text().toLowerCase().indexOf(string) === 0; | ||
2909 | })[0]; | ||
2910 | |||
2911 | if(newOption){ | ||
2912 | activateOption(options, newOption); | ||
2913 | } | ||
2914 | } | ||
2915 | |||
2916 | // ENTER - select option and close when select options are opened | ||
2917 | if(event.which == 13){ | ||
2918 | activeOption = options.find('li.active:not(.disabled)')[0]; | ||
2919 | if(activeOption){ | ||
2920 | $(activeOption).trigger('click'); | ||
2921 | $newSelect.trigger('close'); | ||
2922 | } | ||
2923 | } | ||
2924 | |||
2925 | // ARROW DOWN - move to next not disabled option | ||
2926 | if(event.which == 40){ | ||
2927 | newOption = options.find('li.active').next('li:not(.disabled)')[0]; | ||
2928 | if(newOption){ | ||
2929 | activateOption(options, newOption); | ||
2930 | } | ||
2931 | } | ||
2932 | |||
2933 | // ESC - close options | ||
2934 | if(event.which == 27){ | ||
2935 | $newSelect.trigger('close'); | ||
2936 | } | ||
2937 | |||
2938 | // ARROW UP - move to previous not disabled option | ||
2939 | if(event.which == 38){ | ||
2940 | newOption = options.find('li.active').prev('li:not(.disabled)')[0]; | ||
2941 | if(newOption){ | ||
2942 | activateOption(options, newOption); | ||
2943 | } | ||
2944 | } | ||
2945 | |||
2946 | // Automaticaly clean filter query so user can search again by starting letters | ||
2947 | setTimeout(function(){ filterQuery = []; }, 1000); | ||
2948 | }; | ||
2949 | |||
2950 | $newSelect.on('keydown', onKeyDown); | ||
2951 | }); | ||
2952 | }; | ||
2953 | |||
2954 | }( jQuery )); | ||
2955 | ;(function ($) { | ||
2956 | |||
2957 | var methods = { | ||
2958 | |||
2959 | init : function(options) { | ||
2960 | var defaults = { | ||
2961 | indicators: true, | ||
2962 | height: 400, | ||
2963 | transition: 500, | ||
2964 | interval: 6000 | ||
2965 | }; | ||
2966 | options = $.extend(defaults, options); | ||
2967 | |||
2968 | return this.each(function() { | ||
2969 | |||
2970 | // For each slider, we want to keep track of | ||
2971 | // which slide is active and its associated content | ||
2972 | var $this = $(this); | ||
2973 | var $slider = $this.find('ul.slides').first(); | ||
2974 | var $slides = $slider.find('li'); | ||
2975 | var $active_index = $slider.find('.active').index(); | ||
2976 | var $active; | ||
2977 | if ($active_index != -1) { $active = $slides.eq($active_index); } | ||
2978 | |||
2979 | // Transitions the caption depending on alignment | ||
2980 | function captionTransition(caption, duration) { | ||
2981 | if (caption.hasClass("center-align")) { | ||
2982 | caption.velocity({opacity: 0, translateY: -100}, {duration: duration, queue: false}); | ||
2983 | } | ||
2984 | else if (caption.hasClass("right-align")) { | ||
2985 | caption.velocity({opacity: 0, translateX: 100}, {duration: duration, queue: false}); | ||
2986 | } | ||
2987 | else if (caption.hasClass("left-align")) { | ||
2988 | caption.velocity({opacity: 0, translateX: -100}, {duration: duration, queue: false}); | ||
2989 | } | ||
2990 | } | ||
2991 | |||
2992 | // This function will transition the slide to any index of the next slide | ||
2993 | function moveToSlide(index) { | ||
2994 | if (index >= $slides.length) index = 0; | ||
2995 | else if (index < 0) index = $slides.length -1; | ||
2996 | |||
2997 | $active_index = $slider.find('.active').index(); | ||
2998 | |||
2999 | // Only do if index changes | ||
3000 | if ($active_index != index) { | ||
3001 | $active = $slides.eq($active_index); | ||
3002 | $caption = $active.find('.caption'); | ||
3003 | |||
3004 | $active.removeClass('active'); | ||
3005 | $active.velocity({opacity: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad', | ||
3006 | complete: function() { | ||
3007 | $slides.not('.active').velocity({opacity: 0, translateX: 0, translateY: 0}, {duration: 0, queue: false}); | ||
3008 | } }); | ||
3009 | captionTransition($caption, options.transition); | ||
3010 | |||
3011 | |||
3012 | // Update indicators | ||
3013 | if (options.indicators) { | ||
3014 | $indicators.eq($active_index).removeClass('active'); | ||
3015 | } | ||
3016 | |||
3017 | $slides.eq(index).velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); | ||
3018 | $slides.eq(index).find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, delay: options.transition, queue: false, easing: 'easeOutQuad'}); | ||
3019 | $slides.eq(index).addClass('active'); | ||
3020 | |||
3021 | |||
3022 | // Update indicators | ||
3023 | if (options.indicators) { | ||
3024 | $indicators.eq(index).addClass('active'); | ||
3025 | } | ||
3026 | } | ||
3027 | } | ||
3028 | |||
3029 | // Set height of slider | ||
3030 | // If fullscreen, do nothing | ||
3031 | if (!$this.hasClass('fullscreen')) { | ||
3032 | if (options.indicators) { | ||
3033 | // Add height if indicators are present | ||
3034 | $this.height(options.height + 40); | ||
3035 | } | ||
3036 | else { | ||
3037 | $this.height(options.height); | ||
3038 | } | ||
3039 | $slider.height(options.height); | ||
3040 | } | ||
3041 | |||
3042 | |||
3043 | // Set initial positions of captions | ||
3044 | $slides.find('.caption').each(function () { | ||
3045 | captionTransition($(this), 0); | ||
3046 | }); | ||
3047 | |||
3048 | // Move img src into background-image | ||
3049 | $slides.find('img').each(function () { | ||
3050 | $(this).css('background-image', 'url(' + $(this).attr('src') + ')' ); | ||
3051 | $(this).attr('src', 'data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=='); | ||
3052 | }); | ||
3053 | |||
3054 | // dynamically add indicators | ||
3055 | if (options.indicators) { | ||
3056 | var $indicators = $('<ul class="indicators"></ul>'); | ||
3057 | $slides.each(function( index ) { | ||
3058 | var $indicator = $('<li class="indicator-item"></li>'); | ||
3059 | |||
3060 | // Handle clicks on indicators | ||
3061 | $indicator.click(function () { | ||
3062 | var $parent = $slider.parent(); | ||
3063 | var curr_index = $parent.find($(this)).index(); | ||
3064 | moveToSlide(curr_index); | ||
3065 | |||
3066 | // reset interval | ||
3067 | clearInterval($interval); | ||
3068 | $interval = setInterval( | ||
3069 | function(){ | ||
3070 | $active_index = $slider.find('.active').index(); | ||
3071 | if ($slides.length == $active_index + 1) $active_index = 0; // loop to start | ||
3072 | else $active_index += 1; | ||
3073 | |||
3074 | moveToSlide($active_index); | ||
3075 | |||
3076 | }, options.transition + options.interval | ||
3077 | ); | ||
3078 | }); | ||
3079 | $indicators.append($indicator); | ||
3080 | }); | ||
3081 | $this.append($indicators); | ||
3082 | $indicators = $this.find('ul.indicators').find('li.indicator-item'); | ||
3083 | } | ||
3084 | |||
3085 | if ($active) { | ||
3086 | $active.show(); | ||
3087 | } | ||
3088 | else { | ||
3089 | $slides.first().addClass('active').velocity({opacity: 1}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); | ||
3090 | |||
3091 | $active_index = 0; | ||
3092 | $active = $slides.eq($active_index); | ||
3093 | |||
3094 | // Update indicators | ||
3095 | if (options.indicators) { | ||
3096 | $indicators.eq($active_index).addClass('active'); | ||
3097 | } | ||
3098 | } | ||
3099 | |||
3100 | // Adjust height to current slide | ||
3101 | $active.find('img').each(function() { | ||
3102 | $active.find('.caption').velocity({opacity: 1, translateX: 0, translateY: 0}, {duration: options.transition, queue: false, easing: 'easeOutQuad'}); | ||
3103 | }); | ||
3104 | |||
3105 | // auto scroll | ||
3106 | $interval = setInterval( | ||
3107 | function(){ | ||
3108 | $active_index = $slider.find('.active').index(); | ||
3109 | moveToSlide($active_index + 1); | ||
3110 | |||
3111 | }, options.transition + options.interval | ||
3112 | ); | ||
3113 | |||
3114 | |||
3115 | // HammerJS, Swipe navigation | ||
3116 | |||
3117 | // Touch Event | ||
3118 | var panning = false; | ||
3119 | var swipeLeft = false; | ||
3120 | var swipeRight = false; | ||
3121 | |||
3122 | $this.hammer({ | ||
3123 | prevent_default: false | ||
3124 | }).bind('pan', function(e) { | ||
3125 | if (e.gesture.pointerType === "touch") { | ||
3126 | |||
3127 | // reset interval | ||
3128 | clearInterval($interval); | ||
3129 | |||
3130 | var direction = e.gesture.direction; | ||
3131 | var x = e.gesture.deltaX; | ||
3132 | var velocityX = e.gesture.velocityX; | ||
3133 | |||
3134 | $curr_slide = $slider.find('.active'); | ||
3135 | $curr_slide.velocity({ translateX: x | ||
3136 | }, {duration: 50, queue: false, easing: 'easeOutQuad'}); | ||
3137 | |||
3138 | // Swipe Left | ||
3139 | if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.65)) { | ||
3140 | swipeRight = true; | ||
3141 | } | ||
3142 | // Swipe Right | ||
3143 | else if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.65)) { | ||
3144 | swipeLeft = true; | ||
3145 | } | ||
3146 | |||
3147 | // Make Slide Behind active slide visible | ||
3148 | var next_slide; | ||
3149 | if (swipeLeft) { | ||
3150 | next_slide = $curr_slide.next(); | ||
3151 | if (next_slide.length === 0) { | ||
3152 | next_slide = $slides.first(); | ||
3153 | } | ||
3154 | next_slide.velocity({ opacity: 1 | ||
3155 | }, {duration: 300, queue: false, easing: 'easeOutQuad'}); | ||
3156 | } | ||
3157 | if (swipeRight) { | ||
3158 | next_slide = $curr_slide.prev(); | ||
3159 | if (next_slide.length === 0) { | ||
3160 | next_slide = $slides.last(); | ||
3161 | } | ||
3162 | next_slide.velocity({ opacity: 1 | ||
3163 | }, {duration: 300, queue: false, easing: 'easeOutQuad'}); | ||
3164 | } | ||
3165 | |||
3166 | |||
3167 | } | ||
3168 | |||
3169 | }).bind('panend', function(e) { | ||
3170 | if (e.gesture.pointerType === "touch") { | ||
3171 | |||
3172 | $curr_slide = $slider.find('.active'); | ||
3173 | panning = false; | ||
3174 | curr_index = $slider.find('.active').index(); | ||
3175 | |||
3176 | if (!swipeRight && !swipeLeft) { | ||
3177 | // Return to original spot | ||
3178 | $curr_slide.velocity({ translateX: 0 | ||
3179 | }, {duration: 300, queue: false, easing: 'easeOutQuad'}); | ||
3180 | } | ||
3181 | else if (swipeLeft) { | ||
3182 | moveToSlide(curr_index + 1); | ||
3183 | $curr_slide.velocity({translateX: -1 * $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad', | ||
3184 | complete: function() { | ||
3185 | $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false}); | ||
3186 | } }); | ||
3187 | } | ||
3188 | else if (swipeRight) { | ||
3189 | moveToSlide(curr_index - 1); | ||
3190 | $curr_slide.velocity({translateX: $this.innerWidth() }, {duration: 300, queue: false, easing: 'easeOutQuad', | ||
3191 | complete: function() { | ||
3192 | $curr_slide.velocity({opacity: 0, translateX: 0}, {duration: 0, queue: false}); | ||
3193 | } }); | ||
3194 | } | ||
3195 | swipeLeft = false; | ||
3196 | swipeRight = false; | ||
3197 | |||
3198 | // Restart interval | ||
3199 | clearInterval($interval); | ||
3200 | $interval = setInterval( | ||
3201 | function(){ | ||
3202 | $active_index = $slider.find('.active').index(); | ||
3203 | if ($slides.length == $active_index + 1) $active_index = 0; // loop to start | ||
3204 | else $active_index += 1; | ||
3205 | |||
3206 | moveToSlide($active_index); | ||
3207 | |||
3208 | }, options.transition + options.interval | ||
3209 | ); | ||
3210 | } | ||
3211 | }); | ||
3212 | |||
3213 | $this.on('sliderPause', function() { | ||
3214 | clearInterval($interval); | ||
3215 | }); | ||
3216 | |||
3217 | $this.on('sliderStart', function() { | ||
3218 | clearInterval($interval); | ||
3219 | $interval = setInterval( | ||
3220 | function(){ | ||
3221 | $active_index = $slider.find('.active').index(); | ||
3222 | if ($slides.length == $active_index + 1) $active_index = 0; // loop to start | ||
3223 | else $active_index += 1; | ||
3224 | |||
3225 | moveToSlide($active_index); | ||
3226 | |||
3227 | }, options.transition + options.interval | ||
3228 | ); | ||
3229 | }); | ||
3230 | |||
3231 | }); | ||
3232 | |||
3233 | |||
3234 | |||
3235 | }, | ||
3236 | pause : function() { | ||
3237 | $(this).trigger('sliderPause'); | ||
3238 | }, | ||
3239 | start : function() { | ||
3240 | $(this).trigger('sliderStart'); | ||
3241 | } | ||
3242 | }; | ||
3243 | |||
3244 | |||
3245 | $.fn.slider = function(methodOrOptions) { | ||
3246 | if ( methods[methodOrOptions] ) { | ||
3247 | return methods[ methodOrOptions ].apply( this, Array.prototype.slice.call( arguments, 1 )); | ||
3248 | } else if ( typeof methodOrOptions === 'object' || ! methodOrOptions ) { | ||
3249 | // Default to "init" | ||
3250 | return methods.init.apply( this, arguments ); | ||
3251 | } else { | ||
3252 | $.error( 'Method ' + methodOrOptions + ' does not exist on jQuery.tooltip' ); | ||
3253 | } | ||
3254 | }; // Plugin end | ||
3255 | }( jQuery ));;(function ($) { | ||
3256 | $(document).ready(function() { | ||
3257 | |||
3258 | $(document).on('click.card', '.card', function (e) { | ||
3259 | if ($(this).find('> .card-reveal').length) { | ||
3260 | if ($(e.target).is($('.card-reveal .card-title')) || $(e.target).is($('.card-reveal .card-title i'))) { | ||
3261 | // Make Reveal animate down and display none | ||
3262 | $(this).find('.card-reveal').velocity( | ||
3263 | {translateY: 0}, { | ||
3264 | duration: 225, | ||
3265 | queue: false, | ||
3266 | easing: 'easeInOutQuad', | ||
3267 | complete: function() { $(this).css({ display: 'none'}); } | ||
3268 | } | ||
3269 | ); | ||
3270 | } | ||
3271 | else if ($(e.target).is($('.card .activator')) || | ||
3272 | $(e.target).is($('.card .activator i')) ) { | ||
3273 | $(this).find('.card-reveal').css({ display: 'block'}).velocity("stop", false).velocity({translateY: '-100%'}, {duration: 300, queue: false, easing: 'easeInOutQuad'}); | ||
3274 | } | ||
3275 | } | ||
3276 | |||
3277 | |||
3278 | }); | ||
3279 | |||
3280 | }); | ||
3281 | }( jQuery ));;(function ($) { | ||
3282 | $(document).ready(function() { | ||
3283 | |||
3284 | $(document).on('click.chip', '.chip .material-icons', function (e) { | ||
3285 | $(this).parent().remove(); | ||
3286 | }); | ||
3287 | |||
3288 | }); | ||
3289 | }( jQuery ));;(function ($) { | ||
3290 | $(document).ready(function() { | ||
3291 | |||
3292 | $.fn.pushpin = function (options) { | ||
3293 | |||
3294 | var defaults = { | ||
3295 | top: 0, | ||
3296 | bottom: Infinity, | ||
3297 | offset: 0 | ||
3298 | } | ||
3299 | options = $.extend(defaults, options); | ||
3300 | |||
3301 | $index = 0; | ||
3302 | return this.each(function() { | ||
3303 | var $uniqueId = Materialize.guid(), | ||
3304 | $this = $(this), | ||
3305 | $original_offset = $(this).offset().top; | ||
3306 | |||
3307 | function removePinClasses(object) { | ||
3308 | object.removeClass('pin-top'); | ||
3309 | object.removeClass('pinned'); | ||
3310 | object.removeClass('pin-bottom'); | ||
3311 | } | ||
3312 | |||
3313 | function updateElements(objects, scrolled) { | ||
3314 | objects.each(function () { | ||
3315 | // Add position fixed (because its between top and bottom) | ||
3316 | if (options.top <= scrolled && options.bottom >= scrolled && !$(this).hasClass('pinned')) { | ||
3317 | removePinClasses($(this)); | ||
3318 | $(this).css('top', options.offset); | ||
3319 | $(this).addClass('pinned'); | ||
3320 | } | ||
3321 | |||
3322 | // Add pin-top (when scrolled position is above top) | ||
3323 | if (scrolled < options.top && !$(this).hasClass('pin-top')) { | ||
3324 | removePinClasses($(this)); | ||
3325 | $(this).css('top', 0); | ||
3326 | $(this).addClass('pin-top'); | ||
3327 | } | ||
3328 | |||
3329 | // Add pin-bottom (when scrolled position is below bottom) | ||
3330 | if (scrolled > options.bottom && !$(this).hasClass('pin-bottom')) { | ||
3331 | removePinClasses($(this)); | ||
3332 | $(this).addClass('pin-bottom'); | ||
3333 | $(this).css('top', options.bottom - $original_offset); | ||
3334 | } | ||
3335 | }); | ||
3336 | } | ||
3337 | |||
3338 | updateElements($this, $(window).scrollTop()); | ||
3339 | $(window).on('scroll.' + $uniqueId, function () { | ||
3340 | var $scrolled = $(window).scrollTop() + options.offset; | ||
3341 | updateElements($this, $scrolled); | ||
3342 | }); | ||
3343 | |||
3344 | }); | ||
3345 | |||
3346 | }; | ||
3347 | |||
3348 | |||
3349 | }); | ||
3350 | }( jQuery ));;(function ($) { | ||
3351 | $(document).ready(function() { | ||
3352 | |||
3353 | // jQuery reverse | ||
3354 | $.fn.reverse = [].reverse; | ||
3355 | |||
3356 | $(document).on('mouseenter.fixedActionBtn', '.fixed-action-btn', function(e) { | ||
3357 | var $this = $(this); | ||
3358 | openFABMenu($this); | ||
3359 | |||
3360 | }); | ||
3361 | |||
3362 | $(document).on('mouseleave.fixedActionBtn', '.fixed-action-btn', function(e) { | ||
3363 | var $this = $(this); | ||
3364 | closeFABMenu($this); | ||
3365 | }); | ||
3366 | |||
3367 | }); | ||
3368 | |||
3369 | $.fn.extend({ | ||
3370 | openFAB: function() { | ||
3371 | var $this = $(this); | ||
3372 | openFABMenu($this); | ||
3373 | }, | ||
3374 | closeFAB: function() { | ||
3375 | closeFABMenu($this); | ||
3376 | } | ||
3377 | }); | ||
3378 | |||
3379 | |||
3380 | var openFABMenu = function (btn) { | ||
3381 | $this = btn; | ||
3382 | if ($this.hasClass('active') === false) { | ||
3383 | $this.addClass('active'); | ||
3384 | $this.find('ul .btn-floating').velocity( | ||
3385 | { scaleY: ".4", scaleX: ".4", translateY: "40px"}, | ||
3386 | { duration: 0 }); | ||
3387 | |||
3388 | var time = 0; | ||
3389 | $this.find('ul .btn-floating').reverse().each(function () { | ||
3390 | $(this).velocity( | ||
3391 | { opacity: "1", scaleX: "1", scaleY: "1", translateY: "0"}, | ||
3392 | { duration: 80, delay: time }); | ||
3393 | time += 40; | ||
3394 | }); | ||
3395 | } | ||
3396 | }; | ||
3397 | |||
3398 | var closeFABMenu = function (btn) { | ||
3399 | $this = btn; | ||
3400 | $this.removeClass('active'); | ||
3401 | var time = 0; | ||
3402 | $this.find('ul .btn-floating').velocity("stop", true); | ||
3403 | $this.find('ul .btn-floating').velocity( | ||
3404 | { opacity: "0", scaleX: ".4", scaleY: ".4", translateY: "40px"}, | ||
3405 | { duration: 80 } | ||
3406 | ); | ||
3407 | }; | ||
3408 | |||
3409 | |||
3410 | }( jQuery )); | ||
3411 | ;(function ($) { | ||
3412 | // Image transition function | ||
3413 | Materialize.fadeInImage = function(selector){ | ||
3414 | var element = $(selector); | ||
3415 | element.css({opacity: 0}); | ||
3416 | $(element).velocity({opacity: 1}, { | ||
3417 | duration: 650, | ||
3418 | queue: false, | ||
3419 | easing: 'easeOutSine' | ||
3420 | }); | ||
3421 | $(element).velocity({opacity: 1}, { | ||
3422 | duration: 1300, | ||
3423 | queue: false, | ||
3424 | easing: 'swing', | ||
3425 | step: function(now, fx) { | ||
3426 | fx.start = 100; | ||
3427 | var grayscale_setting = now/100; | ||
3428 | var brightness_setting = 150 - (100 - now)/1.75; | ||
3429 | |||
3430 | if (brightness_setting < 100) { | ||
3431 | brightness_setting = 100; | ||
3432 | } | ||
3433 | if (now >= 0) { | ||
3434 | $(this).css({ | ||
3435 | "-webkit-filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)", | ||
3436 | "filter": "grayscale("+grayscale_setting+")" + "brightness("+brightness_setting+"%)" | ||
3437 | }); | ||
3438 | } | ||
3439 | } | ||
3440 | }); | ||
3441 | }; | ||
3442 | |||
3443 | // Horizontal staggered list | ||
3444 | Materialize.showStaggeredList = function(selector) { | ||
3445 | var time = 0; | ||
3446 | $(selector).find('li').velocity( | ||
3447 | { translateX: "-100px"}, | ||
3448 | { duration: 0 }); | ||
3449 | |||
3450 | $(selector).find('li').each(function() { | ||
3451 | $(this).velocity( | ||
3452 | { opacity: "1", translateX: "0"}, | ||
3453 | { duration: 800, delay: time, easing: [60, 10] }); | ||
3454 | time += 120; | ||
3455 | }); | ||
3456 | }; | ||
3457 | |||
3458 | |||
3459 | $(document).ready(function() { | ||
3460 | // Hardcoded .staggered-list scrollFire | ||
3461 | // var staggeredListOptions = []; | ||
3462 | // $('ul.staggered-list').each(function (i) { | ||
3463 | |||
3464 | // var label = 'scrollFire-' + i; | ||
3465 | // $(this).addClass(label); | ||
3466 | // staggeredListOptions.push( | ||
3467 | // {selector: 'ul.staggered-list.' + label, | ||
3468 | // offset: 200, | ||
3469 | // callback: 'showStaggeredList("ul.staggered-list.' + label + '")'}); | ||
3470 | // }); | ||
3471 | // scrollFire(staggeredListOptions); | ||
3472 | |||
3473 | // HammerJS, Swipe navigation | ||
3474 | |||
3475 | // Touch Event | ||
3476 | var swipeLeft = false; | ||
3477 | var swipeRight = false; | ||
3478 | |||
3479 | |||
3480 | // Dismissible Collections | ||
3481 | $('.dismissable').each(function() { | ||
3482 | $(this).hammer({ | ||
3483 | prevent_default: false | ||
3484 | }).bind('pan', function(e) { | ||
3485 | if (e.gesture.pointerType === "touch") { | ||
3486 | var $this = $(this); | ||
3487 | var direction = e.gesture.direction; | ||
3488 | var x = e.gesture.deltaX; | ||
3489 | var velocityX = e.gesture.velocityX; | ||
3490 | |||
3491 | $this.velocity({ translateX: x | ||
3492 | }, {duration: 50, queue: false, easing: 'easeOutQuad'}); | ||
3493 | |||
3494 | // Swipe Left | ||
3495 | if (direction === 4 && (x > ($this.innerWidth() / 2) || velocityX < -0.75)) { | ||
3496 | swipeLeft = true; | ||
3497 | } | ||
3498 | |||
3499 | // Swipe Right | ||
3500 | if (direction === 2 && (x < (-1 * $this.innerWidth() / 2) || velocityX > 0.75)) { | ||
3501 | swipeRight = true; | ||
3502 | } | ||
3503 | } | ||
3504 | }).bind('panend', function(e) { | ||
3505 | // Reset if collection is moved back into original position | ||
3506 | if (Math.abs(e.gesture.deltaX) < ($(this).innerWidth() / 2)) { | ||
3507 | swipeRight = false; | ||
3508 | swipeLeft = false; | ||
3509 | } | ||
3510 | |||
3511 | if (e.gesture.pointerType === "touch") { | ||
3512 | var $this = $(this); | ||
3513 | if (swipeLeft || swipeRight) { | ||
3514 | var fullWidth; | ||
3515 | if (swipeLeft) { fullWidth = $this.innerWidth(); } | ||
3516 | else { fullWidth = -1 * $this.innerWidth(); } | ||
3517 | |||
3518 | $this.velocity({ translateX: fullWidth, | ||
3519 | }, {duration: 100, queue: false, easing: 'easeOutQuad', complete: | ||
3520 | function() { | ||
3521 | $this.css('border', 'none'); | ||
3522 | $this.velocity({ height: 0, padding: 0, | ||
3523 | }, {duration: 200, queue: false, easing: 'easeOutQuad', complete: | ||
3524 | function() { $this.remove(); } | ||
3525 | }); | ||
3526 | } | ||
3527 | }); | ||
3528 | } | ||
3529 | else { | ||
3530 | $this.velocity({ translateX: 0, | ||
3531 | }, {duration: 100, queue: false, easing: 'easeOutQuad'}); | ||
3532 | } | ||
3533 | swipeLeft = false; | ||
3534 | swipeRight = false; | ||
3535 | } | ||
3536 | }); | ||
3537 | |||
3538 | }); | ||
3539 | |||
3540 | |||
3541 | // time = 0 | ||
3542 | // // Vertical Staggered list | ||
3543 | // $('ul.staggered-list.vertical li').velocity( | ||
3544 | // { translateY: "100px"}, | ||
3545 | // { duration: 0 }); | ||
3546 | |||
3547 | // $('ul.staggered-list.vertical li').each(function() { | ||
3548 | // $(this).velocity( | ||
3549 | // { opacity: "1", translateY: "0"}, | ||
3550 | // { duration: 800, delay: time, easing: [60, 25] }); | ||
3551 | // time += 120; | ||
3552 | // }); | ||
3553 | |||
3554 | // // Fade in and Scale | ||
3555 | // $('.fade-in.scale').velocity( | ||
3556 | // { scaleX: .4, scaleY: .4, translateX: -600}, | ||
3557 | // { duration: 0}); | ||
3558 | // $('.fade-in').each(function() { | ||
3559 | // $(this).velocity( | ||
3560 | // { opacity: "1", scaleX: 1, scaleY: 1, translateX: 0}, | ||
3561 | // { duration: 800, easing: [60, 10] }); | ||
3562 | // }); | ||
3563 | }); | ||
3564 | }( jQuery )); | ||
3565 | ;(function($) { | ||
3566 | |||
3567 | // Input: Array of JSON objects {selector, offset, callback} | ||
3568 | |||
3569 | Materialize.scrollFire = function(options) { | ||
3570 | |||
3571 | var didScroll = false; | ||
3572 | |||
3573 | window.addEventListener("scroll", function() { | ||
3574 | didScroll = true; | ||
3575 | }); | ||
3576 | |||
3577 | // Rate limit to 100ms | ||
3578 | setInterval(function() { | ||
3579 | if(didScroll) { | ||
3580 | didScroll = false; | ||
3581 | |||
3582 | var windowScroll = window.pageYOffset + window.innerHeight; | ||
3583 | |||
3584 | for (var i = 0 ; i < options.length; i++) { | ||
3585 | // Get options from each line | ||
3586 | var value = options[i]; | ||
3587 | var selector = value.selector, | ||
3588 | offset = value.offset, | ||
3589 | callback = value.callback; | ||
3590 | |||
3591 | var currentElement = document.querySelector(selector); | ||
3592 | if ( currentElement !== null) { | ||
3593 | var elementOffset = currentElement.getBoundingClientRect().top + window.pageYOffset; | ||
3594 | |||
3595 | if (windowScroll > (elementOffset + offset)) { | ||
3596 | if (value.done !== true) { | ||
3597 | var callbackFunc = new Function(callback); | ||
3598 | callbackFunc(); | ||
3599 | value.done = true; | ||
3600 | } | ||
3601 | } | ||
3602 | } | ||
3603 | } | ||
3604 | } | ||
3605 | }, 100); | ||
3606 | }; | ||
3607 | |||
3608 | })(jQuery);;/*! | ||
3609 | * pickadate.js v3.5.0, 2014/04/13 | ||
3610 | * By Amsul, http://amsul.ca | ||
3611 | * Hosted on http://amsul.github.io/pickadate.js | ||
3612 | * Licensed under MIT | ||
3613 | */ | ||
3614 | |||
3615 | (function ( factory ) { | ||
3616 | |||
3617 | // AMD. | ||
3618 | if ( typeof define == 'function' && define.amd ) | ||
3619 | define( 'picker', ['jquery'], factory ) | ||
3620 | |||
3621 | // Node.js/browserify. | ||
3622 | else if ( typeof exports == 'object' ) | ||
3623 | module.exports = factory( require('jquery') ) | ||
3624 | |||
3625 | // Browser globals. | ||
3626 | else this.Picker = factory( jQuery ) | ||
3627 | |||
3628 | }(function( $ ) { | ||
3629 | |||
3630 | var $window = $( window ) | ||
3631 | var $document = $( document ) | ||
3632 | var $html = $( document.documentElement ) | ||
3633 | |||
3634 | |||
3635 | /** | ||
3636 | * The picker constructor that creates a blank picker. | ||
3637 | */ | ||
3638 | function PickerConstructor( ELEMENT, NAME, COMPONENT, OPTIONS ) { | ||
3639 | |||
3640 | // If there’s no element, return the picker constructor. | ||
3641 | if ( !ELEMENT ) return PickerConstructor | ||
3642 | |||
3643 | |||
3644 | var | ||
3645 | IS_DEFAULT_THEME = false, | ||
3646 | |||
3647 | |||
3648 | // The state of the picker. | ||
3649 | STATE = { | ||
3650 | id: ELEMENT.id || 'P' + Math.abs( ~~(Math.random() * new Date()) ) | ||
3651 | }, | ||
3652 | |||
3653 | |||
3654 | // Merge the defaults and options passed. | ||
3655 | SETTINGS = COMPONENT ? $.extend( true, {}, COMPONENT.defaults, OPTIONS ) : OPTIONS || {}, | ||
3656 | |||
3657 | |||
3658 | // Merge the default classes with the settings classes. | ||
3659 | CLASSES = $.extend( {}, PickerConstructor.klasses(), SETTINGS.klass ), | ||
3660 | |||
3661 | |||
3662 | // The element node wrapper into a jQuery object. | ||
3663 | $ELEMENT = $( ELEMENT ), | ||
3664 | |||
3665 | |||
3666 | // Pseudo picker constructor. | ||
3667 | PickerInstance = function() { | ||
3668 | return this.start() | ||
3669 | }, | ||
3670 | |||
3671 | |||
3672 | // The picker prototype. | ||
3673 | P = PickerInstance.prototype = { | ||
3674 | |||
3675 | constructor: PickerInstance, | ||
3676 | |||
3677 | $node: $ELEMENT, | ||
3678 | |||
3679 | |||
3680 | /** | ||
3681 | * Initialize everything | ||
3682 | */ | ||
3683 | start: function() { | ||
3684 | |||
3685 | // If it’s already started, do nothing. | ||
3686 | if ( STATE && STATE.start ) return P | ||
3687 | |||
3688 | |||
3689 | // Update the picker states. | ||
3690 | STATE.methods = {} | ||
3691 | STATE.start = true | ||
3692 | STATE.open = false | ||
3693 | STATE.type = ELEMENT.type | ||
3694 | |||
3695 | |||
3696 | // Confirm focus state, convert into text input to remove UA stylings, | ||
3697 | // and set as readonly to prevent keyboard popup. | ||
3698 | ELEMENT.autofocus = ELEMENT == getActiveElement() | ||
3699 | ELEMENT.readOnly = !SETTINGS.editable | ||
3700 | ELEMENT.id = ELEMENT.id || STATE.id | ||
3701 | if ( ELEMENT.type != 'text' ) { | ||
3702 | ELEMENT.type = 'text' | ||
3703 | } | ||
3704 | |||
3705 | |||
3706 | // Create a new picker component with the settings. | ||
3707 | P.component = new COMPONENT(P, SETTINGS) | ||
3708 | |||
3709 | |||
3710 | // Create the picker root with a holder and then prepare it. | ||
3711 | P.$root = $( PickerConstructor._.node('div', createWrappedComponent(), CLASSES.picker, 'id="' + ELEMENT.id + '_root" tabindex="0"') ) | ||
3712 | prepareElementRoot() | ||
3713 | |||
3714 | |||
3715 | // If there’s a format for the hidden input element, create the element. | ||
3716 | if ( SETTINGS.formatSubmit ) { | ||
3717 | prepareElementHidden() | ||
3718 | } | ||
3719 | |||
3720 | |||
3721 | // Prepare the input element. | ||
3722 | prepareElement() | ||
3723 | |||
3724 | |||
3725 | // Insert the root as specified in the settings. | ||
3726 | if ( SETTINGS.container ) $( SETTINGS.container ).append( P.$root ) | ||
3727 | else $ELEMENT.after( P.$root ) | ||
3728 | |||
3729 | |||
3730 | // Bind the default component and settings events. | ||
3731 | P.on({ | ||
3732 | start: P.component.onStart, | ||
3733 | render: P.component.onRender, | ||
3734 | stop: P.component.onStop, | ||
3735 | open: P.component.onOpen, | ||
3736 | close: P.component.onClose, | ||
3737 | set: P.component.onSet | ||
3738 | }).on({ | ||
3739 | start: SETTINGS.onStart, | ||
3740 | render: SETTINGS.onRender, | ||
3741 | stop: SETTINGS.onStop, | ||
3742 | open: SETTINGS.onOpen, | ||
3743 | close: SETTINGS.onClose, | ||
3744 | set: SETTINGS.onSet | ||
3745 | }) | ||
3746 | |||
3747 | |||
3748 | // Once we’re all set, check the theme in use. | ||
3749 | IS_DEFAULT_THEME = isUsingDefaultTheme( P.$root.children()[ 0 ] ) | ||
3750 | |||
3751 | |||
3752 | // If the element has autofocus, open the picker. | ||
3753 | if ( ELEMENT.autofocus ) { | ||
3754 | P.open() | ||
3755 | } | ||
3756 | |||
3757 | |||
3758 | // Trigger queued the “start” and “render” events. | ||
3759 | return P.trigger( 'start' ).trigger( 'render' ) | ||
3760 | }, //start | ||
3761 | |||
3762 | |||
3763 | /** | ||
3764 | * Render a new picker | ||
3765 | */ | ||
3766 | render: function( entireComponent ) { | ||
3767 | |||
3768 | // Insert a new component holder in the root or box. | ||
3769 | if ( entireComponent ) P.$root.html( createWrappedComponent() ) | ||
3770 | else P.$root.find( '.' + CLASSES.box ).html( P.component.nodes( STATE.open ) ) | ||
3771 | |||
3772 | // Trigger the queued “render” events. | ||
3773 | return P.trigger( 'render' ) | ||
3774 | }, //render | ||
3775 | |||
3776 | |||
3777 | /** | ||
3778 | * Destroy everything | ||
3779 | */ | ||
3780 | stop: function() { | ||
3781 | |||
3782 | // If it’s already stopped, do nothing. | ||
3783 | if ( !STATE.start ) return P | ||
3784 | |||
3785 | // Then close the picker. | ||
3786 | P.close() | ||
3787 | |||
3788 | // Remove the hidden field. | ||
3789 | if ( P._hidden ) { | ||
3790 | P._hidden.parentNode.removeChild( P._hidden ) | ||
3791 | } | ||
3792 | |||
3793 | // Remove the root. | ||
3794 | P.$root.remove() | ||
3795 | |||
3796 | // Remove the input class, remove the stored data, and unbind | ||
3797 | // the events (after a tick for IE - see `P.close`). | ||
3798 | $ELEMENT.removeClass( CLASSES.input ).removeData( NAME ) | ||
3799 | setTimeout( function() { | ||
3800 | $ELEMENT.off( '.' + STATE.id ) | ||
3801 | }, 0) | ||
3802 | |||
3803 | // Restore the element state | ||
3804 | ELEMENT.type = STATE.type | ||
3805 | ELEMENT.readOnly = false | ||
3806 | |||
3807 | // Trigger the queued “stop” events. | ||
3808 | P.trigger( 'stop' ) | ||
3809 | |||
3810 | // Reset the picker states. | ||
3811 | STATE.methods = {} | ||
3812 | STATE.start = false | ||
3813 | |||
3814 | return P | ||
3815 | }, //stop | ||
3816 | |||
3817 | |||
3818 | /** | ||
3819 | * Open up the picker | ||
3820 | */ | ||
3821 | open: function( dontGiveFocus ) { | ||
3822 | |||
3823 | // If it’s already open, do nothing. | ||
3824 | if ( STATE.open ) return P | ||
3825 | |||
3826 | // Add the “active” class. | ||
3827 | $ELEMENT.addClass( CLASSES.active ) | ||
3828 | aria( ELEMENT, 'expanded', true ) | ||
3829 | |||
3830 | // * A Firefox bug, when `html` has `overflow:hidden`, results in | ||
3831 | // killing transitions :(. So add the “opened” state on the next tick. | ||
3832 | // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 | ||
3833 | setTimeout( function() { | ||
3834 | |||
3835 | // Add the “opened” class to the picker root. | ||
3836 | P.$root.addClass( CLASSES.opened ) | ||
3837 | aria( P.$root[0], 'hidden', false ) | ||
3838 | |||
3839 | }, 0 ) | ||
3840 | |||
3841 | // If we have to give focus, bind the element and doc events. | ||
3842 | if ( dontGiveFocus !== false ) { | ||
3843 | |||
3844 | // Set it as open. | ||
3845 | STATE.open = true | ||
3846 | |||
3847 | // Prevent the page from scrolling. | ||
3848 | if ( IS_DEFAULT_THEME ) { | ||
3849 | $html. | ||
3850 | css( 'overflow', 'hidden' ). | ||
3851 | css( 'padding-right', '+=' + getScrollbarWidth() ) | ||
3852 | } | ||
3853 | |||
3854 | // Pass focus to the root element’s jQuery object. | ||
3855 | // * Workaround for iOS8 to bring the picker’s root into view. | ||
3856 | P.$root[0].focus() | ||
3857 | |||
3858 | // Bind the document events. | ||
3859 | $document.on( 'click.' + STATE.id + ' focusin.' + STATE.id, function( event ) { | ||
3860 | |||
3861 | var target = event.target | ||
3862 | |||
3863 | // If the target of the event is not the element, close the picker picker. | ||
3864 | // * Don’t worry about clicks or focusins on the root because those don’t bubble up. | ||
3865 | // Also, for Firefox, a click on an `option` element bubbles up directly | ||
3866 | // to the doc. So make sure the target wasn't the doc. | ||
3867 | // * In Firefox stopPropagation() doesn’t prevent right-click events from bubbling, | ||
3868 | // which causes the picker to unexpectedly close when right-clicking it. So make | ||
3869 | // sure the event wasn’t a right-click. | ||
3870 | if ( target != ELEMENT && target != document && event.which != 3 ) { | ||
3871 | |||
3872 | // If the target was the holder that covers the screen, | ||
3873 | // keep the element focused to maintain tabindex. | ||
3874 | P.close( target === P.$root.children()[0] ) | ||
3875 | } | ||
3876 | |||
3877 | }).on( 'keydown.' + STATE.id, function( event ) { | ||
3878 | |||
3879 | var | ||
3880 | // Get the keycode. | ||
3881 | keycode = event.keyCode, | ||
3882 | |||
3883 | // Translate that to a selection change. | ||
3884 | keycodeToMove = P.component.key[ keycode ], | ||
3885 | |||
3886 | // Grab the target. | ||
3887 | target = event.target | ||
3888 | |||
3889 | |||
3890 | // On escape, close the picker and give focus. | ||
3891 | if ( keycode == 27 ) { | ||
3892 | P.close( true ) | ||
3893 | } | ||
3894 | |||
3895 | |||
3896 | // Check if there is a key movement or “enter” keypress on the element. | ||
3897 | else if ( target == P.$root[0] && ( keycodeToMove || keycode == 13 ) ) { | ||
3898 | |||
3899 | // Prevent the default action to stop page movement. | ||
3900 | event.preventDefault() | ||
3901 | |||
3902 | // Trigger the key movement action. | ||
3903 | if ( keycodeToMove ) { | ||
3904 | PickerConstructor._.trigger( P.component.key.go, P, [ PickerConstructor._.trigger( keycodeToMove ) ] ) | ||
3905 | } | ||
3906 | |||
3907 | // On “enter”, if the highlighted item isn’t disabled, set the value and close. | ||
3908 | else if ( !P.$root.find( '.' + CLASSES.highlighted ).hasClass( CLASSES.disabled ) ) { | ||
3909 | P.set( 'select', P.component.item.highlight ).close() | ||
3910 | } | ||
3911 | } | ||
3912 | |||
3913 | |||
3914 | // If the target is within the root and “enter” is pressed, | ||
3915 | // prevent the default action and trigger a click on the target instead. | ||
3916 | else if ( $.contains( P.$root[0], target ) && keycode == 13 ) { | ||
3917 | event.preventDefault() | ||
3918 | target.click() | ||
3919 | } | ||
3920 | }) | ||
3921 | } | ||
3922 | |||
3923 | // Trigger the queued “open” events. | ||
3924 | return P.trigger( 'open' ) | ||
3925 | }, //open | ||
3926 | |||
3927 | |||
3928 | /** | ||
3929 | * Close the picker | ||
3930 | */ | ||
3931 | close: function( giveFocus ) { | ||
3932 | |||
3933 | // If we need to give focus, do it before changing states. | ||
3934 | if ( giveFocus ) { | ||
3935 | // ....ah yes! It would’ve been incomplete without a crazy workaround for IE :| | ||
3936 | // The focus is triggered *after* the close has completed - causing it | ||
3937 | // to open again. So unbind and rebind the event at the next tick. | ||
3938 | P.$root.off( 'focus.toOpen' )[0].focus() | ||
3939 | setTimeout( function() { | ||
3940 | P.$root.on( 'focus.toOpen', handleFocusToOpenEvent ) | ||
3941 | }, 0 ) | ||
3942 | } | ||
3943 | |||
3944 | // Remove the “active” class. | ||
3945 | $ELEMENT.removeClass( CLASSES.active ) | ||
3946 | aria( ELEMENT, 'expanded', false ) | ||
3947 | |||
3948 | // * A Firefox bug, when `html` has `overflow:hidden`, results in | ||
3949 | // killing transitions :(. So remove the “opened” state on the next tick. | ||
3950 | // Bug: https://bugzilla.mozilla.org/show_bug.cgi?id=625289 | ||
3951 | setTimeout( function() { | ||
3952 | |||
3953 | // Remove the “opened” and “focused” class from the picker root. | ||
3954 | P.$root.removeClass( CLASSES.opened + ' ' + CLASSES.focused ) | ||
3955 | aria( P.$root[0], 'hidden', true ) | ||
3956 | |||
3957 | }, 0 ) | ||
3958 | |||
3959 | // If it’s already closed, do nothing more. | ||
3960 | if ( !STATE.open ) return P | ||
3961 | |||
3962 | // Set it as closed. | ||
3963 | STATE.open = false | ||
3964 | |||
3965 | // Allow the page to scroll. | ||
3966 | if ( IS_DEFAULT_THEME ) { | ||
3967 | $html. | ||
3968 | css( 'overflow', '' ). | ||
3969 | css( 'padding-right', '-=' + getScrollbarWidth() ) | ||
3970 | } | ||
3971 | |||
3972 | // Unbind the document events. | ||
3973 | $document.off( '.' + STATE.id ) | ||
3974 | |||
3975 | // Trigger the queued “close” events. | ||
3976 | return P.trigger( 'close' ) | ||
3977 | }, //close | ||
3978 | |||
3979 | |||
3980 | /** | ||
3981 | * Clear the values | ||
3982 | */ | ||
3983 | clear: function( options ) { | ||
3984 | return P.set( 'clear', null, options ) | ||
3985 | }, //clear | ||
3986 | |||
3987 | |||
3988 | /** | ||
3989 | * Set something | ||
3990 | */ | ||
3991 | set: function( thing, value, options ) { | ||
3992 | |||
3993 | var thingItem, thingValue, | ||
3994 | thingIsObject = $.isPlainObject( thing ), | ||
3995 | thingObject = thingIsObject ? thing : {} | ||
3996 | |||
3997 | // Make sure we have usable options. | ||
3998 | options = thingIsObject && $.isPlainObject( value ) ? value : options || {} | ||
3999 | |||
4000 | if ( thing ) { | ||
4001 | |||
4002 | // If the thing isn’t an object, make it one. | ||
4003 | if ( !thingIsObject ) { | ||
4004 | thingObject[ thing ] = value | ||
4005 | } | ||
4006 | |||
4007 | // Go through the things of items to set. | ||
4008 | for ( thingItem in thingObject ) { | ||
4009 | |||
4010 | // Grab the value of the thing. | ||
4011 | thingValue = thingObject[ thingItem ] | ||
4012 | |||
4013 | // First, if the item exists and there’s a value, set it. | ||
4014 | if ( thingItem in P.component.item ) { | ||
4015 | if ( thingValue === undefined ) thingValue = null | ||
4016 | P.component.set( thingItem, thingValue, options ) | ||
4017 | } | ||
4018 | |||
4019 | // Then, check to update the element value and broadcast a change. | ||
4020 | if ( thingItem == 'select' || thingItem == 'clear' ) { | ||
4021 | $ELEMENT. | ||
4022 | val( thingItem == 'clear' ? '' : P.get( thingItem, SETTINGS.format ) ). | ||
4023 | trigger( 'change' ) | ||
4024 | } | ||
4025 | } | ||
4026 | |||
4027 | // Render a new picker. | ||
4028 | P.render() | ||
4029 | } | ||
4030 | |||
4031 | // When the method isn’t muted, trigger queued “set” events and pass the `thingObject`. | ||
4032 | return options.muted ? P : P.trigger( 'set', thingObject ) | ||
4033 | }, //set | ||
4034 | |||
4035 | |||
4036 | /** | ||
4037 | * Get something | ||
4038 | */ | ||
4039 | get: function( thing, format ) { | ||
4040 | |||
4041 | // Make sure there’s something to get. | ||
4042 | thing = thing || 'value' | ||
4043 | |||
4044 | // If a picker state exists, return that. | ||
4045 | if ( STATE[ thing ] != null ) { | ||
4046 | return STATE[ thing ] | ||
4047 | } | ||
4048 | |||
4049 | // Return the submission value, if that. | ||
4050 | if ( thing == 'valueSubmit' ) { | ||
4051 | if ( P._hidden ) { | ||
4052 | return P._hidden.value | ||
4053 | } | ||
4054 | thing = 'value' | ||
4055 | } | ||
4056 | |||
4057 | // Return the value, if that. | ||
4058 | if ( thing == 'value' ) { | ||
4059 | return ELEMENT.value | ||
4060 | } | ||
4061 | |||
4062 | // Check if a component item exists, return that. | ||
4063 | if ( thing in P.component.item ) { | ||
4064 | if ( typeof format == 'string' ) { | ||
4065 | var thingValue = P.component.get( thing ) | ||
4066 | return thingValue ? | ||
4067 | PickerConstructor._.trigger( | ||
4068 | P.component.formats.toString, | ||
4069 | P.component, | ||
4070 | [ format, thingValue ] | ||
4071 | ) : '' | ||
4072 | } | ||
4073 | return P.component.get( thing ) | ||
4074 | } | ||
4075 | }, //get | ||
4076 | |||
4077 | |||
4078 | |||
4079 | /** | ||
4080 | * Bind events on the things. | ||
4081 | */ | ||
4082 | on: function( thing, method, internal ) { | ||
4083 | |||
4084 | var thingName, thingMethod, | ||
4085 | thingIsObject = $.isPlainObject( thing ), | ||
4086 | thingObject = thingIsObject ? thing : {} | ||
4087 | |||
4088 | if ( thing ) { | ||
4089 | |||
4090 | // If the thing isn’t an object, make it one. | ||
4091 | if ( !thingIsObject ) { | ||
4092 | thingObject[ thing ] = method | ||
4093 | } | ||
4094 | |||
4095 | // Go through the things to bind to. | ||
4096 | for ( thingName in thingObject ) { | ||
4097 | |||
4098 | // Grab the method of the thing. | ||
4099 | thingMethod = thingObject[ thingName ] | ||
4100 | |||
4101 | // If it was an internal binding, prefix it. | ||
4102 | if ( internal ) { | ||
4103 | thingName = '_' + thingName | ||
4104 | } | ||
4105 | |||
4106 | // Make sure the thing methods collection exists. | ||
4107 | STATE.methods[ thingName ] = STATE.methods[ thingName ] || [] | ||
4108 | |||
4109 | // Add the method to the relative method collection. | ||
4110 | STATE.methods[ thingName ].push( thingMethod ) | ||
4111 | } | ||
4112 | } | ||
4113 | |||
4114 | return P | ||
4115 | }, //on | ||
4116 | |||
4117 | |||
4118 | |||
4119 | /** | ||
4120 | * Unbind events on the things. | ||
4121 | */ | ||
4122 | off: function() { | ||
4123 | var i, thingName, | ||
4124 | names = arguments; | ||
4125 | for ( i = 0, namesCount = names.length; i < namesCount; i += 1 ) { | ||
4126 | thingName = names[i] | ||
4127 | if ( thingName in STATE.methods ) { | ||
4128 | delete STATE.methods[thingName] | ||
4129 | } | ||
4130 | } | ||
4131 | return P | ||
4132 | }, | ||
4133 | |||
4134 | |||
4135 | /** | ||
4136 | * Fire off method events. | ||
4137 | */ | ||
4138 | trigger: function( name, data ) { | ||
4139 | var _trigger = function( name ) { | ||
4140 | var methodList = STATE.methods[ name ] | ||
4141 | if ( methodList ) { | ||
4142 | methodList.map( function( method ) { | ||
4143 | PickerConstructor._.trigger( method, P, [ data ] ) | ||
4144 | }) | ||
4145 | } | ||
4146 | } | ||
4147 | _trigger( '_' + name ) | ||
4148 | _trigger( name ) | ||
4149 | return P | ||
4150 | } //trigger | ||
4151 | } //PickerInstance.prototype | ||
4152 | |||
4153 | |||
4154 | /** | ||
4155 | * Wrap the picker holder components together. | ||
4156 | */ | ||
4157 | function createWrappedComponent() { | ||
4158 | |||
4159 | // Create a picker wrapper holder | ||
4160 | return PickerConstructor._.node( 'div', | ||
4161 | |||
4162 | // Create a picker wrapper node | ||
4163 | PickerConstructor._.node( 'div', | ||
4164 | |||
4165 | // Create a picker frame | ||
4166 | PickerConstructor._.node( 'div', | ||
4167 | |||
4168 | // Create a picker box node | ||
4169 | PickerConstructor._.node( 'div', | ||
4170 | |||
4171 | // Create the components nodes. | ||
4172 | P.component.nodes( STATE.open ), | ||
4173 | |||
4174 | // The picker box class | ||
4175 | CLASSES.box | ||
4176 | ), | ||
4177 | |||
4178 | // Picker wrap class | ||
4179 | CLASSES.wrap | ||
4180 | ), | ||
4181 | |||
4182 | // Picker frame class | ||
4183 | CLASSES.frame | ||
4184 | ), | ||
4185 | |||
4186 | // Picker holder class | ||
4187 | CLASSES.holder | ||
4188 | ) //endreturn | ||
4189 | } //createWrappedComponent | ||
4190 | |||
4191 | |||
4192 | |||
4193 | /** | ||
4194 | * Prepare the input element with all bindings. | ||
4195 | */ | ||
4196 | function prepareElement() { | ||
4197 | |||
4198 | $ELEMENT. | ||
4199 | |||
4200 | // Store the picker data by component name. | ||
4201 | data(NAME, P). | ||
4202 | |||
4203 | // Add the “input” class name. | ||
4204 | addClass(CLASSES.input). | ||
4205 | |||
4206 | // Remove the tabindex. | ||
4207 | attr('tabindex', -1). | ||
4208 | |||
4209 | // If there’s a `data-value`, update the value of the element. | ||
4210 | val( $ELEMENT.data('value') ? | ||
4211 | P.get('select', SETTINGS.format) : | ||
4212 | ELEMENT.value | ||
4213 | ) | ||
4214 | |||
4215 | |||
4216 | // Only bind keydown events if the element isn’t editable. | ||
4217 | if ( !SETTINGS.editable ) { | ||
4218 | |||
4219 | $ELEMENT. | ||
4220 | |||
4221 | // On focus/click, focus onto the root to open it up. | ||
4222 | on( 'focus.' + STATE.id + ' click.' + STATE.id, function( event ) { | ||
4223 | event.preventDefault() | ||
4224 | P.$root[0].focus() | ||
4225 | }). | ||
4226 | |||
4227 | // Handle keyboard event based on the picker being opened or not. | ||
4228 | on( 'keydown.' + STATE.id, handleKeydownEvent ) | ||
4229 | } | ||
4230 | |||
4231 | |||
4232 | // Update the aria attributes. | ||
4233 | aria(ELEMENT, { | ||
4234 | haspopup: true, | ||
4235 | expanded: false, | ||
4236 | readonly: false, | ||
4237 | owns: ELEMENT.id + '_root' | ||
4238 | }) | ||
4239 | } | ||
4240 | |||
4241 | |||
4242 | /** | ||
4243 | * Prepare the root picker element with all bindings. | ||
4244 | */ | ||
4245 | function prepareElementRoot() { | ||
4246 | |||
4247 | P.$root. | ||
4248 | |||
4249 | on({ | ||
4250 | |||
4251 | // For iOS8. | ||
4252 | keydown: handleKeydownEvent, | ||
4253 | |||
4254 | // When something within the root is focused, stop from bubbling | ||
4255 | // to the doc and remove the “focused” state from the root. | ||
4256 | focusin: function( event ) { | ||
4257 | P.$root.removeClass( CLASSES.focused ) | ||
4258 | event.stopPropagation() | ||
4259 | }, | ||
4260 | |||
4261 | // When something within the root holder is clicked, stop it | ||
4262 | // from bubbling to the doc. | ||
4263 | 'mousedown click': function( event ) { | ||
4264 | |||
4265 | var target = event.target | ||
4266 | |||
4267 | // Make sure the target isn’t the root holder so it can bubble up. | ||
4268 | if ( target != P.$root.children()[ 0 ] ) { | ||
4269 | |||
4270 | event.stopPropagation() | ||
4271 | |||
4272 | // * For mousedown events, cancel the default action in order to | ||
4273 | // prevent cases where focus is shifted onto external elements | ||
4274 | // when using things like jQuery mobile or MagnificPopup (ref: #249 & #120). | ||
4275 | // Also, for Firefox, don’t prevent action on the `option` element. | ||
4276 | if ( event.type == 'mousedown' && !$( target ).is( 'input, select, textarea, button, option' )) { | ||
4277 | |||
4278 | event.preventDefault() | ||
4279 | |||
4280 | // Re-focus onto the root so that users can click away | ||
4281 | // from elements focused within the picker. | ||
4282 | P.$root[0].focus() | ||
4283 | } | ||
4284 | } | ||
4285 | } | ||
4286 | }). | ||
4287 | |||
4288 | // Add/remove the “target” class on focus and blur. | ||
4289 | on({ | ||
4290 | focus: function() { | ||
4291 | $ELEMENT.addClass( CLASSES.target ) | ||
4292 | }, | ||
4293 | blur: function() { | ||
4294 | $ELEMENT.removeClass( CLASSES.target ) | ||
4295 | } | ||
4296 | }). | ||
4297 | |||
4298 | // Open the picker and adjust the root “focused” state | ||
4299 | on( 'focus.toOpen', handleFocusToOpenEvent ). | ||
4300 | |||
4301 | // If there’s a click on an actionable element, carry out the actions. | ||
4302 | on( 'click', '[data-pick], [data-nav], [data-clear], [data-close]', function() { | ||
4303 | |||
4304 | var $target = $( this ), | ||
4305 | targetData = $target.data(), | ||
4306 | targetDisabled = $target.hasClass( CLASSES.navDisabled ) || $target.hasClass( CLASSES.disabled ), | ||
4307 | |||
4308 | // * For IE, non-focusable elements can be active elements as well | ||
4309 | // (http://stackoverflow.com/a/2684561). | ||
4310 | activeElement = getActiveElement() | ||
4311 | activeElement = activeElement && ( activeElement.type || activeElement.href ) | ||
4312 | |||
4313 | // If it’s disabled or nothing inside is actively focused, re-focus the element. | ||
4314 | if ( targetDisabled || activeElement && !$.contains( P.$root[0], activeElement ) ) { | ||
4315 | P.$root[0].focus() | ||
4316 | } | ||
4317 | |||
4318 | // If something is superficially changed, update the `highlight` based on the `nav`. | ||
4319 | if ( !targetDisabled && targetData.nav ) { | ||
4320 | P.set( 'highlight', P.component.item.highlight, { nav: targetData.nav } ) | ||
4321 | } | ||
4322 | |||
4323 | // If something is picked, set `select` then close with focus. | ||
4324 | else if ( !targetDisabled && 'pick' in targetData ) { | ||
4325 | P.set( 'select', targetData.pick ) | ||
4326 | } | ||
4327 | |||
4328 | // If a “clear” button is pressed, empty the values and close with focus. | ||
4329 | else if ( targetData.clear ) { | ||
4330 | P.clear().close( true ) | ||
4331 | } | ||
4332 | |||
4333 | else if ( targetData.close ) { | ||
4334 | P.close( true ) | ||
4335 | } | ||
4336 | |||
4337 | }) //P.$root | ||
4338 | |||
4339 | aria( P.$root[0], 'hidden', true ) | ||
4340 | } | ||
4341 | |||
4342 | |||
4343 | /** | ||
4344 | * Prepare the hidden input element along with all bindings. | ||
4345 | */ | ||
4346 | function prepareElementHidden() { | ||
4347 | |||
4348 | var name | ||
4349 | |||
4350 | if ( SETTINGS.hiddenName === true ) { | ||
4351 | name = ELEMENT.name | ||
4352 | ELEMENT.name = '' | ||
4353 | } | ||
4354 | else { | ||
4355 | name = [ | ||
4356 | typeof SETTINGS.hiddenPrefix == 'string' ? SETTINGS.hiddenPrefix : '', | ||
4357 | typeof SETTINGS.hiddenSuffix == 'string' ? SETTINGS.hiddenSuffix : '_submit' | ||
4358 | ] | ||
4359 | name = name[0] + ELEMENT.name + name[1] | ||
4360 | } | ||
4361 | |||
4362 | P._hidden = $( | ||
4363 | '<input ' + | ||
4364 | 'type=hidden ' + | ||
4365 | |||
4366 | // Create the name using the original input’s with a prefix and suffix. | ||
4367 | 'name="' + name + '"' + | ||
4368 | |||
4369 | // If the element has a value, set the hidden value as well. | ||
4370 | ( | ||
4371 | $ELEMENT.data('value') || ELEMENT.value ? | ||
4372 | ' value="' + P.get('select', SETTINGS.formatSubmit) + '"' : | ||
4373 | '' | ||
4374 | ) + | ||
4375 | '>' | ||
4376 | )[0] | ||
4377 | |||
4378 | $ELEMENT. | ||
4379 | |||
4380 | // If the value changes, update the hidden input with the correct format. | ||
4381 | on('change.' + STATE.id, function() { | ||
4382 | P._hidden.value = ELEMENT.value ? | ||
4383 | P.get('select', SETTINGS.formatSubmit) : | ||
4384 | '' | ||
4385 | }) | ||
4386 | |||
4387 | |||
4388 | // Insert the hidden input as specified in the settings. | ||
4389 | if ( SETTINGS.container ) $( SETTINGS.container ).append( P._hidden ) | ||
4390 | else $ELEMENT.after( P._hidden ) | ||
4391 | } | ||
4392 | |||
4393 | |||
4394 | // For iOS8. | ||
4395 | function handleKeydownEvent( event ) { | ||
4396 | |||
4397 | var keycode = event.keyCode, | ||
4398 | |||
4399 | // Check if one of the delete keys was pressed. | ||
4400 | isKeycodeDelete = /^(8|46)$/.test(keycode) | ||
4401 | |||
4402 | // For some reason IE clears the input value on “escape”. | ||
4403 | if ( keycode == 27 ) { | ||
4404 | P.close() | ||
4405 | return false | ||
4406 | } | ||
4407 | |||
4408 | // Check if `space` or `delete` was pressed or the picker is closed with a key movement. | ||
4409 | if ( keycode == 32 || isKeycodeDelete || !STATE.open && P.component.key[keycode] ) { | ||
4410 | |||
4411 | // Prevent it from moving the page and bubbling to doc. | ||
4412 | event.preventDefault() | ||
4413 | event.stopPropagation() | ||
4414 | |||
4415 | // If `delete` was pressed, clear the values and close the picker. | ||
4416 | // Otherwise open the picker. | ||
4417 | if ( isKeycodeDelete ) { P.clear().close() } | ||
4418 | else { P.open() } | ||
4419 | } | ||
4420 | } | ||
4421 | |||
4422 | |||
4423 | // Separated for IE | ||
4424 | function handleFocusToOpenEvent( event ) { | ||
4425 | |||
4426 | // Stop the event from propagating to the doc. | ||
4427 | event.stopPropagation() | ||
4428 | |||
4429 | // If it’s a focus event, add the “focused” class to the root. | ||
4430 | if ( event.type == 'focus' ) { | ||
4431 | P.$root.addClass( CLASSES.focused ) | ||
4432 | } | ||
4433 | |||
4434 | // And then finally open the picker. | ||
4435 | P.open() | ||
4436 | } | ||
4437 | |||
4438 | |||
4439 | // Return a new picker instance. | ||
4440 | return new PickerInstance() | ||
4441 | } //PickerConstructor | ||
4442 | |||
4443 | |||
4444 | |||
4445 | /** | ||
4446 | * The default classes and prefix to use for the HTML classes. | ||
4447 | */ | ||
4448 | PickerConstructor.klasses = function( prefix ) { | ||
4449 | prefix = prefix || 'picker' | ||
4450 | return { | ||
4451 | |||
4452 | picker: prefix, | ||
4453 | opened: prefix + '--opened', | ||
4454 | focused: prefix + '--focused', | ||
4455 | |||
4456 | input: prefix + '__input', | ||
4457 | active: prefix + '__input--active', | ||
4458 | target: prefix + '__input--target', | ||
4459 | |||
4460 | holder: prefix + '__holder', | ||
4461 | |||
4462 | frame: prefix + '__frame', | ||
4463 | wrap: prefix + '__wrap', | ||
4464 | |||
4465 | box: prefix + '__box' | ||
4466 | } | ||
4467 | } //PickerConstructor.klasses | ||
4468 | |||
4469 | |||
4470 | |||
4471 | /** | ||
4472 | * Check if the default theme is being used. | ||
4473 | */ | ||
4474 | function isUsingDefaultTheme( element ) { | ||
4475 | |||
4476 | var theme, | ||
4477 | prop = 'position' | ||
4478 | |||
4479 | // For IE. | ||
4480 | if ( element.currentStyle ) { | ||
4481 | theme = element.currentStyle[prop] | ||
4482 | } | ||
4483 | |||
4484 | // For normal browsers. | ||
4485 | else if ( window.getComputedStyle ) { | ||
4486 | theme = getComputedStyle( element )[prop] | ||
4487 | } | ||
4488 | |||
4489 | return theme == 'fixed' | ||
4490 | } | ||
4491 | |||
4492 | |||
4493 | |||
4494 | /** | ||
4495 | * Get the width of the browser’s scrollbar. | ||
4496 | * Taken from: https://github.com/VodkaBears/Remodal/blob/master/src/jquery.remodal.js | ||
4497 | */ | ||
4498 | function getScrollbarWidth() { | ||
4499 | |||
4500 | if ( $html.height() <= $window.height() ) { | ||
4501 | return 0 | ||
4502 | } | ||
4503 | |||
4504 | var $outer = $( '<div style="visibility:hidden;width:100px" />' ). | ||
4505 | appendTo( 'body' ) | ||
4506 | |||
4507 | // Get the width without scrollbars. | ||
4508 | var widthWithoutScroll = $outer[0].offsetWidth | ||
4509 | |||
4510 | // Force adding scrollbars. | ||
4511 | $outer.css( 'overflow', 'scroll' ) | ||
4512 | |||
4513 | // Add the inner div. | ||
4514 | var $inner = $( '<div style="width:100%" />' ).appendTo( $outer ) | ||
4515 | |||
4516 | // Get the width with scrollbars. | ||
4517 | var widthWithScroll = $inner[0].offsetWidth | ||
4518 | |||
4519 | // Remove the divs. | ||
4520 | $outer.remove() | ||
4521 | |||
4522 | // Return the difference between the widths. | ||
4523 | return widthWithoutScroll - widthWithScroll | ||
4524 | } | ||
4525 | |||
4526 | |||
4527 | |||
4528 | /** | ||
4529 | * PickerConstructor helper methods. | ||
4530 | */ | ||
4531 | PickerConstructor._ = { | ||
4532 | |||
4533 | /** | ||
4534 | * Create a group of nodes. Expects: | ||
4535 | * ` | ||
4536 | { | ||
4537 | min: {Integer}, | ||
4538 | max: {Integer}, | ||
4539 | i: {Integer}, | ||
4540 | node: {String}, | ||
4541 | item: {Function} | ||
4542 | } | ||
4543 | * ` | ||
4544 | */ | ||
4545 | group: function( groupObject ) { | ||
4546 | |||
4547 | var | ||
4548 | // Scope for the looped object | ||
4549 | loopObjectScope, | ||
4550 | |||
4551 | // Create the nodes list | ||
4552 | nodesList = '', | ||
4553 | |||
4554 | // The counter starts from the `min` | ||
4555 | counter = PickerConstructor._.trigger( groupObject.min, groupObject ) | ||
4556 | |||
4557 | |||
4558 | // Loop from the `min` to `max`, incrementing by `i` | ||
4559 | for ( ; counter <= PickerConstructor._.trigger( groupObject.max, groupObject, [ counter ] ); counter += groupObject.i ) { | ||
4560 | |||
4561 | // Trigger the `item` function within scope of the object | ||
4562 | loopObjectScope = PickerConstructor._.trigger( groupObject.item, groupObject, [ counter ] ) | ||
4563 | |||
4564 | // Splice the subgroup and create nodes out of the sub nodes | ||
4565 | nodesList += PickerConstructor._.node( | ||
4566 | groupObject.node, | ||
4567 | loopObjectScope[ 0 ], // the node | ||
4568 | loopObjectScope[ 1 ], // the classes | ||
4569 | loopObjectScope[ 2 ] // the attributes | ||
4570 | ) | ||
4571 | } | ||
4572 | |||
4573 | // Return the list of nodes | ||
4574 | return nodesList | ||
4575 | }, //group | ||
4576 | |||
4577 | |||
4578 | /** | ||
4579 | * Create a dom node string | ||
4580 | */ | ||
4581 | node: function( wrapper, item, klass, attribute ) { | ||
4582 | |||
4583 | // If the item is false-y, just return an empty string | ||
4584 | if ( !item ) return '' | ||
4585 | |||
4586 | // If the item is an array, do a join | ||
4587 | item = $.isArray( item ) ? item.join( '' ) : item | ||
4588 | |||
4589 | // Check for the class | ||
4590 | klass = klass ? ' class="' + klass + '"' : '' | ||
4591 | |||
4592 | // Check for any attributes | ||
4593 | attribute = attribute ? ' ' + attribute : '' | ||
4594 | |||
4595 | // Return the wrapped item | ||
4596 | return '<' + wrapper + klass + attribute + '>' + item + '</' + wrapper + '>' | ||
4597 | }, //node | ||
4598 | |||
4599 | |||
4600 | /** | ||
4601 | * Lead numbers below 10 with a zero. | ||
4602 | */ | ||
4603 | lead: function( number ) { | ||
4604 | return ( number < 10 ? '0': '' ) + number | ||
4605 | }, | ||
4606 | |||
4607 | |||
4608 | /** | ||
4609 | * Trigger a function otherwise return the value. | ||
4610 | */ | ||
4611 | trigger: function( callback, scope, args ) { | ||
4612 | return typeof callback == 'function' ? callback.apply( scope, args || [] ) : callback | ||
4613 | }, | ||
4614 | |||
4615 | |||
4616 | /** | ||
4617 | * If the second character is a digit, length is 2 otherwise 1. | ||
4618 | */ | ||
4619 | digits: function( string ) { | ||
4620 | return ( /\d/ ).test( string[ 1 ] ) ? 2 : 1 | ||
4621 | }, | ||
4622 | |||
4623 | |||
4624 | /** | ||
4625 | * Tell if something is a date object. | ||
4626 | */ | ||
4627 | isDate: function( value ) { | ||
4628 | return {}.toString.call( value ).indexOf( 'Date' ) > -1 && this.isInteger( value.getDate() ) | ||
4629 | }, | ||
4630 | |||
4631 | |||
4632 | /** | ||
4633 | * Tell if something is an integer. | ||
4634 | */ | ||
4635 | isInteger: function( value ) { | ||
4636 | return {}.toString.call( value ).indexOf( 'Number' ) > -1 && value % 1 === 0 | ||
4637 | }, | ||
4638 | |||
4639 | |||
4640 | /** | ||
4641 | * Create ARIA attribute strings. | ||
4642 | */ | ||
4643 | ariaAttr: ariaAttr | ||
4644 | } //PickerConstructor._ | ||
4645 | |||
4646 | |||
4647 | |||
4648 | /** | ||
4649 | * Extend the picker with a component and defaults. | ||
4650 | */ | ||
4651 | PickerConstructor.extend = function( name, Component ) { | ||
4652 | |||
4653 | // Extend jQuery. | ||
4654 | $.fn[ name ] = function( options, action ) { | ||
4655 | |||
4656 | // Grab the component data. | ||
4657 | var componentData = this.data( name ) | ||
4658 | |||
4659 | // If the picker is requested, return the data object. | ||
4660 | if ( options == 'picker' ) { | ||
4661 | return componentData | ||
4662 | } | ||
4663 | |||
4664 | // If the component data exists and `options` is a string, carry out the action. | ||
4665 | if ( componentData && typeof options == 'string' ) { | ||
4666 | return PickerConstructor._.trigger( componentData[ options ], componentData, [ action ] ) | ||
4667 | } | ||
4668 | |||
4669 | // Otherwise go through each matched element and if the component | ||
4670 | // doesn’t exist, create a new picker using `this` element | ||
4671 | // and merging the defaults and options with a deep copy. | ||
4672 | return this.each( function() { | ||
4673 | var $this = $( this ) | ||
4674 | if ( !$this.data( name ) ) { | ||
4675 | new PickerConstructor( this, name, Component, options ) | ||
4676 | } | ||
4677 | }) | ||
4678 | } | ||
4679 | |||
4680 | // Set the defaults. | ||
4681 | $.fn[ name ].defaults = Component.defaults | ||
4682 | } //PickerConstructor.extend | ||
4683 | |||
4684 | |||
4685 | |||
4686 | function aria(element, attribute, value) { | ||
4687 | if ( $.isPlainObject(attribute) ) { | ||
4688 | for ( var key in attribute ) { | ||
4689 | ariaSet(element, key, attribute[key]) | ||
4690 | } | ||
4691 | } | ||
4692 | else { | ||
4693 | ariaSet(element, attribute, value) | ||
4694 | } | ||
4695 | } | ||
4696 | function ariaSet(element, attribute, value) { | ||
4697 | element.setAttribute( | ||
4698 | (attribute == 'role' ? '' : 'aria-') + attribute, | ||
4699 | value | ||
4700 | ) | ||
4701 | } | ||
4702 | function ariaAttr(attribute, data) { | ||
4703 | if ( !$.isPlainObject(attribute) ) { | ||
4704 | attribute = { attribute: data } | ||
4705 | } | ||
4706 | data = '' | ||
4707 | for ( var key in attribute ) { | ||
4708 | var attr = (key == 'role' ? '' : 'aria-') + key, | ||
4709 | attrVal = attribute[key] | ||
4710 | data += attrVal == null ? '' : attr + '="' + attribute[key] + '"' | ||
4711 | } | ||
4712 | return data | ||
4713 | } | ||
4714 | |||
4715 | // IE8 bug throws an error for activeElements within iframes. | ||
4716 | function getActiveElement() { | ||
4717 | try { | ||
4718 | return document.activeElement | ||
4719 | } catch ( err ) { } | ||
4720 | } | ||
4721 | |||
4722 | |||
4723 | |||
4724 | // Expose the picker constructor. | ||
4725 | return PickerConstructor | ||
4726 | |||
4727 | |||
4728 | })); | ||
4729 | |||
4730 | |||
4731 | ;/*! | ||
4732 | * Date picker for pickadate.js v3.5.0 | ||
4733 | * http://amsul.github.io/pickadate.js/date.htm | ||
4734 | */ | ||
4735 | |||
4736 | (function ( factory ) { | ||
4737 | |||
4738 | // AMD. | ||
4739 | if ( typeof define == 'function' && define.amd ) | ||
4740 | define( ['picker', 'jquery'], factory ) | ||
4741 | |||
4742 | // Node.js/browserify. | ||
4743 | else if ( typeof exports == 'object' ) | ||
4744 | module.exports = factory( require('./picker.js'), require('jquery') ) | ||
4745 | |||
4746 | // Browser globals. | ||
4747 | else factory( Picker, jQuery ) | ||
4748 | |||
4749 | }(function( Picker, $ ) { | ||
4750 | |||
4751 | |||
4752 | /** | ||
4753 | * Globals and constants | ||
4754 | */ | ||
4755 | var DAYS_IN_WEEK = 7, | ||
4756 | WEEKS_IN_CALENDAR = 6, | ||
4757 | _ = Picker._ | ||
4758 | |||
4759 | |||
4760 | |||
4761 | /** | ||
4762 | * The date picker constructor | ||
4763 | */ | ||
4764 | function DatePicker( picker, settings ) { | ||
4765 | |||
4766 | var calendar = this, | ||
4767 | element = picker.$node[ 0 ], | ||
4768 | elementValue = element.value, | ||
4769 | elementDataValue = picker.$node.data( 'value' ), | ||
4770 | valueString = elementDataValue || elementValue, | ||
4771 | formatString = elementDataValue ? settings.formatSubmit : settings.format, | ||
4772 | isRTL = function() { | ||
4773 | |||
4774 | return element.currentStyle ? | ||
4775 | |||
4776 | // For IE. | ||
4777 | element.currentStyle.direction == 'rtl' : | ||
4778 | |||
4779 | // For normal browsers. | ||
4780 | getComputedStyle( picker.$root[0] ).direction == 'rtl' | ||
4781 | } | ||
4782 | |||
4783 | calendar.settings = settings | ||
4784 | calendar.$node = picker.$node | ||
4785 | |||
4786 | // The queue of methods that will be used to build item objects. | ||
4787 | calendar.queue = { | ||
4788 | min: 'measure create', | ||
4789 | max: 'measure create', | ||
4790 | now: 'now create', | ||
4791 | select: 'parse create validate', | ||
4792 | highlight: 'parse navigate create validate', | ||
4793 | view: 'parse create validate viewset', | ||
4794 | disable: 'deactivate', | ||
4795 | enable: 'activate' | ||
4796 | } | ||
4797 | |||
4798 | // The component's item object. | ||
4799 | calendar.item = {} | ||
4800 | |||
4801 | calendar.item.clear = null | ||
4802 | calendar.item.disable = ( settings.disable || [] ).slice( 0 ) | ||
4803 | calendar.item.enable = -(function( collectionDisabled ) { | ||
4804 | return collectionDisabled[ 0 ] === true ? collectionDisabled.shift() : -1 | ||
4805 | })( calendar.item.disable ) | ||
4806 | |||
4807 | calendar. | ||
4808 | set( 'min', settings.min ). | ||
4809 | set( 'max', settings.max ). | ||
4810 | set( 'now' ) | ||
4811 | |||
4812 | // When there’s a value, set the `select`, which in turn | ||
4813 | // also sets the `highlight` and `view`. | ||
4814 | if ( valueString ) { | ||
4815 | calendar.set( 'select', valueString, { format: formatString }) | ||
4816 | } | ||
4817 | |||
4818 | // If there’s no value, default to highlighting “today”. | ||
4819 | else { | ||
4820 | calendar. | ||
4821 | set( 'select', null ). | ||
4822 | set( 'highlight', calendar.item.now ) | ||
4823 | } | ||
4824 | |||
4825 | |||
4826 | // The keycode to movement mapping. | ||
4827 | calendar.key = { | ||
4828 | 40: 7, // Down | ||
4829 | 38: -7, // Up | ||
4830 | 39: function() { return isRTL() ? -1 : 1 }, // Right | ||
4831 | 37: function() { return isRTL() ? 1 : -1 }, // Left | ||
4832 | go: function( timeChange ) { | ||
4833 | var highlightedObject = calendar.item.highlight, | ||
4834 | targetDate = new Date( highlightedObject.year, highlightedObject.month, highlightedObject.date + timeChange ) | ||
4835 | calendar.set( | ||
4836 | 'highlight', | ||
4837 | targetDate, | ||
4838 | { interval: timeChange } | ||
4839 | ) | ||
4840 | this.render() | ||
4841 | } | ||
4842 | } | ||
4843 | |||
4844 | |||
4845 | // Bind some picker events. | ||
4846 | picker. | ||
4847 | on( 'render', function() { | ||
4848 | picker.$root.find( '.' + settings.klass.selectMonth ).on( 'change', function() { | ||
4849 | var value = this.value | ||
4850 | if ( value ) { | ||
4851 | picker.set( 'highlight', [ picker.get( 'view' ).year, value, picker.get( 'highlight' ).date ] ) | ||
4852 | picker.$root.find( '.' + settings.klass.selectMonth ).trigger( 'focus' ) | ||
4853 | } | ||
4854 | }) | ||
4855 | picker.$root.find( '.' + settings.klass.selectYear ).on( 'change', function() { | ||
4856 | var value = this.value | ||
4857 | if ( value ) { | ||
4858 | picker.set( 'highlight', [ value, picker.get( 'view' ).month, picker.get( 'highlight' ).date ] ) | ||
4859 | picker.$root.find( '.' + settings.klass.selectYear ).trigger( 'focus' ) | ||
4860 | } | ||
4861 | }) | ||
4862 | }, 1 ). | ||
4863 | on( 'open', function() { | ||
4864 | var includeToday = '' | ||
4865 | if ( calendar.disabled( calendar.get('now') ) ) { | ||
4866 | includeToday = ':not(.' + settings.klass.buttonToday + ')' | ||
4867 | } | ||
4868 | picker.$root.find( 'button' + includeToday + ', select' ).attr( 'disabled', false ) | ||
4869 | }, 1 ). | ||
4870 | on( 'close', function() { | ||
4871 | picker.$root.find( 'button, select' ).attr( 'disabled', true ) | ||
4872 | }, 1 ) | ||
4873 | |||
4874 | } //DatePicker | ||
4875 | |||
4876 | |||
4877 | /** | ||
4878 | * Set a datepicker item object. | ||
4879 | */ | ||
4880 | DatePicker.prototype.set = function( type, value, options ) { | ||
4881 | |||
4882 | var calendar = this, | ||
4883 | calendarItem = calendar.item | ||
4884 | |||
4885 | // If the value is `null` just set it immediately. | ||
4886 | if ( value === null ) { | ||
4887 | if ( type == 'clear' ) type = 'select' | ||
4888 | calendarItem[ type ] = value | ||
4889 | return calendar | ||
4890 | } | ||
4891 | |||
4892 | // Otherwise go through the queue of methods, and invoke the functions. | ||
4893 | // Update this as the time unit, and set the final value as this item. | ||
4894 | // * In the case of `enable`, keep the queue but set `disable` instead. | ||
4895 | // And in the case of `flip`, keep the queue but set `enable` instead. | ||
4896 | calendarItem[ ( type == 'enable' ? 'disable' : type == 'flip' ? 'enable' : type ) ] = calendar.queue[ type ].split( ' ' ).map( function( method ) { | ||
4897 | value = calendar[ method ]( type, value, options ) | ||
4898 | return value | ||
4899 | }).pop() | ||
4900 | |||
4901 | // Check if we need to cascade through more updates. | ||
4902 | if ( type == 'select' ) { | ||
4903 | calendar.set( 'highlight', calendarItem.select, options ) | ||
4904 | } | ||
4905 | else if ( type == 'highlight' ) { | ||
4906 | calendar.set( 'view', calendarItem.highlight, options ) | ||
4907 | } | ||
4908 | else if ( type.match( /^(flip|min|max|disable|enable)$/ ) ) { | ||
4909 | if ( calendarItem.select && calendar.disabled( calendarItem.select ) ) { | ||
4910 | calendar.set( 'select', calendarItem.select, options ) | ||
4911 | } | ||
4912 | if ( calendarItem.highlight && calendar.disabled( calendarItem.highlight ) ) { | ||
4913 | calendar.set( 'highlight', calendarItem.highlight, options ) | ||
4914 | } | ||
4915 | } | ||
4916 | |||
4917 | return calendar | ||
4918 | } //DatePicker.prototype.set | ||
4919 | |||
4920 | |||
4921 | /** | ||
4922 | * Get a datepicker item object. | ||
4923 | */ | ||
4924 | DatePicker.prototype.get = function( type ) { | ||
4925 | return this.item[ type ] | ||
4926 | } //DatePicker.prototype.get | ||
4927 | |||
4928 | |||
4929 | /** | ||
4930 | * Create a picker date object. | ||
4931 | */ | ||
4932 | DatePicker.prototype.create = function( type, value, options ) { | ||
4933 | |||
4934 | var isInfiniteValue, | ||
4935 | calendar = this | ||
4936 | |||
4937 | // If there’s no value, use the type as the value. | ||
4938 | value = value === undefined ? type : value | ||
4939 | |||
4940 | |||
4941 | // If it’s infinity, update the value. | ||
4942 | if ( value == -Infinity || value == Infinity ) { | ||
4943 | isInfiniteValue = value | ||
4944 | } | ||
4945 | |||
4946 | // If it’s an object, use the native date object. | ||
4947 | else if ( $.isPlainObject( value ) && _.isInteger( value.pick ) ) { | ||
4948 | value = value.obj | ||
4949 | } | ||
4950 | |||
4951 | // If it’s an array, convert it into a date and make sure | ||
4952 | // that it’s a valid date – otherwise default to today. | ||
4953 | else if ( $.isArray( value ) ) { | ||
4954 | value = new Date( value[ 0 ], value[ 1 ], value[ 2 ] ) | ||
4955 | value = _.isDate( value ) ? value : calendar.create().obj | ||
4956 | } | ||
4957 | |||
4958 | // If it’s a number or date object, make a normalized date. | ||
4959 | else if ( _.isInteger( value ) || _.isDate( value ) ) { | ||
4960 | value = calendar.normalize( new Date( value ), options ) | ||
4961 | } | ||
4962 | |||
4963 | // If it’s a literal true or any other case, set it to now. | ||
4964 | else /*if ( value === true )*/ { | ||
4965 | value = calendar.now( type, value, options ) | ||
4966 | } | ||
4967 | |||
4968 | // Return the compiled object. | ||
4969 | return { | ||
4970 | year: isInfiniteValue || value.getFullYear(), | ||
4971 | month: isInfiniteValue || value.getMonth(), | ||
4972 | date: isInfiniteValue || value.getDate(), | ||
4973 | day: isInfiniteValue || value.getDay(), | ||
4974 | obj: isInfiniteValue || value, | ||
4975 | pick: isInfiniteValue || value.getTime() | ||
4976 | } | ||
4977 | } //DatePicker.prototype.create | ||
4978 | |||
4979 | |||
4980 | /** | ||
4981 | * Create a range limit object using an array, date object, | ||
4982 | * literal “true”, or integer relative to another time. | ||
4983 | */ | ||
4984 | DatePicker.prototype.createRange = function( from, to ) { | ||
4985 | |||
4986 | var calendar = this, | ||
4987 | createDate = function( date ) { | ||
4988 | if ( date === true || $.isArray( date ) || _.isDate( date ) ) { | ||
4989 | return calendar.create( date ) | ||
4990 | } | ||
4991 | return date | ||
4992 | } | ||
4993 | |||
4994 | // Create objects if possible. | ||
4995 | if ( !_.isInteger( from ) ) { | ||
4996 | from = createDate( from ) | ||
4997 | } | ||
4998 | if ( !_.isInteger( to ) ) { | ||
4999 | to = createDate( to ) | ||
5000 | } | ||
5001 | |||
5002 | // Create relative dates. | ||
5003 | if ( _.isInteger( from ) && $.isPlainObject( to ) ) { | ||
5004 | from = [ to.year, to.month, to.date + from ]; | ||
5005 | } | ||
5006 | else if ( _.isInteger( to ) && $.isPlainObject( from ) ) { | ||
5007 | to = [ from.year, from.month, from.date + to ]; | ||
5008 | } | ||
5009 | |||
5010 | return { | ||
5011 | from: createDate( from ), | ||
5012 | to: createDate( to ) | ||
5013 | } | ||
5014 | } //DatePicker.prototype.createRange | ||
5015 | |||
5016 | |||
5017 | /** | ||
5018 | * Check if a date unit falls within a date range object. | ||
5019 | */ | ||
5020 | DatePicker.prototype.withinRange = function( range, dateUnit ) { | ||
5021 | range = this.createRange(range.from, range.to) | ||
5022 | return dateUnit.pick >= range.from.pick && dateUnit.pick <= range.to.pick | ||
5023 | } | ||
5024 | |||
5025 | |||
5026 | /** | ||
5027 | * Check if two date range objects overlap. | ||
5028 | */ | ||
5029 | DatePicker.prototype.overlapRanges = function( one, two ) { | ||
5030 | |||
5031 | var calendar = this | ||
5032 | |||
5033 | // Convert the ranges into comparable dates. | ||
5034 | one = calendar.createRange( one.from, one.to ) | ||
5035 | two = calendar.createRange( two.from, two.to ) | ||
5036 | |||
5037 | return calendar.withinRange( one, two.from ) || calendar.withinRange( one, two.to ) || | ||
5038 | calendar.withinRange( two, one.from ) || calendar.withinRange( two, one.to ) | ||
5039 | } | ||
5040 | |||
5041 | |||
5042 | /** | ||
5043 | * Get the date today. | ||
5044 | */ | ||
5045 | DatePicker.prototype.now = function( type, value, options ) { | ||
5046 | value = new Date() | ||
5047 | if ( options && options.rel ) { | ||
5048 | value.setDate( value.getDate() + options.rel ) | ||
5049 | } | ||
5050 | return this.normalize( value, options ) | ||
5051 | } | ||
5052 | |||
5053 | |||
5054 | /** | ||
5055 | * Navigate to next/prev month. | ||
5056 | */ | ||
5057 | DatePicker.prototype.navigate = function( type, value, options ) { | ||
5058 | |||
5059 | var targetDateObject, | ||
5060 | targetYear, | ||
5061 | targetMonth, | ||
5062 | targetDate, | ||
5063 | isTargetArray = $.isArray( value ), | ||
5064 | isTargetObject = $.isPlainObject( value ), | ||
5065 | viewsetObject = this.item.view/*, | ||
5066 | safety = 100*/ | ||
5067 | |||
5068 | |||
5069 | if ( isTargetArray || isTargetObject ) { | ||
5070 | |||
5071 | if ( isTargetObject ) { | ||
5072 | targetYear = value.year | ||
5073 | targetMonth = value.month | ||
5074 | targetDate = value.date | ||
5075 | } | ||
5076 | else { | ||
5077 | targetYear = +value[0] | ||
5078 | targetMonth = +value[1] | ||
5079 | targetDate = +value[2] | ||
5080 | } | ||
5081 | |||
5082 | // If we’re navigating months but the view is in a different | ||
5083 | // month, navigate to the view’s year and month. | ||
5084 | if ( options && options.nav && viewsetObject && viewsetObject.month !== targetMonth ) { | ||
5085 | targetYear = viewsetObject.year | ||
5086 | targetMonth = viewsetObject.month | ||
5087 | } | ||
5088 | |||
5089 | // Figure out the expected target year and month. | ||
5090 | targetDateObject = new Date( targetYear, targetMonth + ( options && options.nav ? options.nav : 0 ), 1 ) | ||
5091 | targetYear = targetDateObject.getFullYear() | ||
5092 | targetMonth = targetDateObject.getMonth() | ||
5093 | |||
5094 | // If the month we’re going to doesn’t have enough days, | ||
5095 | // keep decreasing the date until we reach the month’s last date. | ||
5096 | while ( /*safety &&*/ new Date( targetYear, targetMonth, targetDate ).getMonth() !== targetMonth ) { | ||
5097 | targetDate -= 1 | ||
5098 | /*safety -= 1 | ||
5099 | if ( !safety ) { | ||
5100 | throw 'Fell into an infinite loop while navigating to ' + new Date( targetYear, targetMonth, targetDate ) + '.' | ||
5101 | }*/ | ||
5102 | } | ||
5103 | |||
5104 | value = [ targetYear, targetMonth, targetDate ] | ||
5105 | } | ||
5106 | |||
5107 | return value | ||
5108 | } //DatePicker.prototype.navigate | ||
5109 | |||
5110 | |||
5111 | /** | ||
5112 | * Normalize a date by setting the hours to midnight. | ||
5113 | */ | ||
5114 | DatePicker.prototype.normalize = function( value/*, options*/ ) { | ||
5115 | value.setHours( 0, 0, 0, 0 ) | ||
5116 | return value | ||
5117 | } | ||
5118 | |||
5119 | |||
5120 | /** | ||
5121 | * Measure the range of dates. | ||
5122 | */ | ||
5123 | DatePicker.prototype.measure = function( type, value/*, options*/ ) { | ||
5124 | |||
5125 | var calendar = this | ||
5126 | |||
5127 | // If it’s anything false-y, remove the limits. | ||
5128 | if ( !value ) { | ||
5129 | value = type == 'min' ? -Infinity : Infinity | ||
5130 | } | ||
5131 | |||
5132 | // If it’s a string, parse it. | ||
5133 | else if ( typeof value == 'string' ) { | ||
5134 | value = calendar.parse( type, value ) | ||
5135 | } | ||
5136 | |||
5137 | // If it's an integer, get a date relative to today. | ||
5138 | else if ( _.isInteger( value ) ) { | ||
5139 | value = calendar.now( type, value, { rel: value } ) | ||
5140 | } | ||
5141 | |||
5142 | return value | ||
5143 | } ///DatePicker.prototype.measure | ||
5144 | |||
5145 | |||
5146 | /** | ||
5147 | * Create a viewset object based on navigation. | ||
5148 | */ | ||
5149 | DatePicker.prototype.viewset = function( type, dateObject/*, options*/ ) { | ||
5150 | return this.create([ dateObject.year, dateObject.month, 1 ]) | ||
5151 | } | ||
5152 | |||
5153 | |||
5154 | /** | ||
5155 | * Validate a date as enabled and shift if needed. | ||
5156 | */ | ||
5157 | DatePicker.prototype.validate = function( type, dateObject, options ) { | ||
5158 | |||
5159 | var calendar = this, | ||
5160 | |||
5161 | // Keep a reference to the original date. | ||
5162 | originalDateObject = dateObject, | ||
5163 | |||
5164 | // Make sure we have an interval. | ||
5165 | interval = options && options.interval ? options.interval : 1, | ||
5166 | |||
5167 | // Check if the calendar enabled dates are inverted. | ||
5168 | isFlippedBase = calendar.item.enable === -1, | ||
5169 | |||
5170 | // Check if we have any enabled dates after/before now. | ||
5171 | hasEnabledBeforeTarget, hasEnabledAfterTarget, | ||
5172 | |||
5173 | // The min & max limits. | ||
5174 | minLimitObject = calendar.item.min, | ||
5175 | maxLimitObject = calendar.item.max, | ||
5176 | |||
5177 | // Check if we’ve reached the limit during shifting. | ||
5178 | reachedMin, reachedMax, | ||
5179 | |||
5180 | // Check if the calendar is inverted and at least one weekday is enabled. | ||
5181 | hasEnabledWeekdays = isFlippedBase && calendar.item.disable.filter( function( value ) { | ||
5182 | |||
5183 | // If there’s a date, check where it is relative to the target. | ||
5184 | if ( $.isArray( value ) ) { | ||
5185 | var dateTime = calendar.create( value ).pick | ||
5186 | if ( dateTime < dateObject.pick ) hasEnabledBeforeTarget = true | ||
5187 | else if ( dateTime > dateObject.pick ) hasEnabledAfterTarget = true | ||
5188 | } | ||
5189 | |||
5190 | // Return only integers for enabled weekdays. | ||
5191 | return _.isInteger( value ) | ||
5192 | }).length/*, | ||
5193 | |||
5194 | safety = 100*/ | ||
5195 | |||
5196 | |||
5197 | |||
5198 | // Cases to validate for: | ||
5199 | // [1] Not inverted and date disabled. | ||
5200 | // [2] Inverted and some dates enabled. | ||
5201 | // [3] Not inverted and out of range. | ||
5202 | // | ||
5203 | // Cases to **not** validate for: | ||
5204 | // • Navigating months. | ||
5205 | // • Not inverted and date enabled. | ||
5206 | // • Inverted and all dates disabled. | ||
5207 | // • ..and anything else. | ||
5208 | if ( !options || !options.nav ) if ( | ||
5209 | /* 1 */ ( !isFlippedBase && calendar.disabled( dateObject ) ) || | ||
5210 | /* 2 */ ( isFlippedBase && calendar.disabled( dateObject ) && ( hasEnabledWeekdays || hasEnabledBeforeTarget || hasEnabledAfterTarget ) ) || | ||
5211 | /* 3 */ ( !isFlippedBase && (dateObject.pick <= minLimitObject.pick || dateObject.pick >= maxLimitObject.pick) ) | ||
5212 | ) { | ||
5213 | |||
5214 | |||
5215 | // When inverted, flip the direction if there aren’t any enabled weekdays | ||
5216 | // and there are no enabled dates in the direction of the interval. | ||
5217 | if ( isFlippedBase && !hasEnabledWeekdays && ( ( !hasEnabledAfterTarget && interval > 0 ) || ( !hasEnabledBeforeTarget && interval < 0 ) ) ) { | ||
5218 | interval *= -1 | ||
5219 | } | ||
5220 | |||
5221 | |||
5222 | // Keep looping until we reach an enabled date. | ||
5223 | while ( /*safety &&*/ calendar.disabled( dateObject ) ) { | ||
5224 | |||
5225 | /*safety -= 1 | ||
5226 | if ( !safety ) { | ||
5227 | throw 'Fell into an infinite loop while validating ' + dateObject.obj + '.' | ||
5228 | }*/ | ||
5229 | |||
5230 | |||
5231 | // If we’ve looped into the next/prev month with a large interval, return to the original date and flatten the interval. | ||
5232 | if ( Math.abs( interval ) > 1 && ( dateObject.month < originalDateObject.month || dateObject.month > originalDateObject.month ) ) { | ||
5233 | dateObject = originalDateObject | ||
5234 | interval = interval > 0 ? 1 : -1 | ||
5235 | } | ||
5236 | |||
5237 | |||
5238 | // If we’ve reached the min/max limit, reverse the direction, flatten the interval and set it to the limit. | ||
5239 | if ( dateObject.pick <= minLimitObject.pick ) { | ||
5240 | reachedMin = true | ||
5241 | interval = 1 | ||
5242 | dateObject = calendar.create([ | ||
5243 | minLimitObject.year, | ||
5244 | minLimitObject.month, | ||
5245 | minLimitObject.date + (dateObject.pick === minLimitObject.pick ? 0 : -1) | ||
5246 | ]) | ||
5247 | } | ||
5248 | else if ( dateObject.pick >= maxLimitObject.pick ) { | ||
5249 | reachedMax = true | ||
5250 | interval = -1 | ||
5251 | dateObject = calendar.create([ | ||
5252 | maxLimitObject.year, | ||
5253 | maxLimitObject.month, | ||
5254 | maxLimitObject.date + (dateObject.pick === maxLimitObject.pick ? 0 : 1) | ||
5255 | ]) | ||
5256 | } | ||
5257 | |||
5258 | |||
5259 | // If we’ve reached both limits, just break out of the loop. | ||
5260 | if ( reachedMin && reachedMax ) { | ||
5261 | break | ||
5262 | } | ||
5263 | |||
5264 | |||
5265 | // Finally, create the shifted date using the interval and keep looping. | ||
5266 | dateObject = calendar.create([ dateObject.year, dateObject.month, dateObject.date + interval ]) | ||
5267 | } | ||
5268 | |||
5269 | } //endif | ||
5270 | |||
5271 | |||
5272 | // Return the date object settled on. | ||
5273 | return dateObject | ||
5274 | } //DatePicker.prototype.validate | ||
5275 | |||
5276 | |||
5277 | /** | ||
5278 | * Check if a date is disabled. | ||
5279 | */ | ||
5280 | DatePicker.prototype.disabled = function( dateToVerify ) { | ||
5281 | |||
5282 | var | ||
5283 | calendar = this, | ||
5284 | |||
5285 | // Filter through the disabled dates to check if this is one. | ||
5286 | isDisabledMatch = calendar.item.disable.filter( function( dateToDisable ) { | ||
5287 | |||
5288 | // If the date is a number, match the weekday with 0index and `firstDay` check. | ||
5289 | if ( _.isInteger( dateToDisable ) ) { | ||
5290 | return dateToVerify.day === ( calendar.settings.firstDay ? dateToDisable : dateToDisable - 1 ) % 7 | ||
5291 | } | ||
5292 | |||
5293 | // If it’s an array or a native JS date, create and match the exact date. | ||
5294 | if ( $.isArray( dateToDisable ) || _.isDate( dateToDisable ) ) { | ||
5295 | return dateToVerify.pick === calendar.create( dateToDisable ).pick | ||
5296 | } | ||
5297 | |||
5298 | // If it’s an object, match a date within the “from” and “to” range. | ||
5299 | if ( $.isPlainObject( dateToDisable ) ) { | ||
5300 | return calendar.withinRange( dateToDisable, dateToVerify ) | ||
5301 | } | ||
5302 | }) | ||
5303 | |||
5304 | // If this date matches a disabled date, confirm it’s not inverted. | ||
5305 | isDisabledMatch = isDisabledMatch.length && !isDisabledMatch.filter(function( dateToDisable ) { | ||
5306 | return $.isArray( dateToDisable ) && dateToDisable[3] == 'inverted' || | ||
5307 | $.isPlainObject( dateToDisable ) && dateToDisable.inverted | ||
5308 | }).length | ||
5309 | |||
5310 | // Check the calendar “enabled” flag and respectively flip the | ||
5311 | // disabled state. Then also check if it’s beyond the min/max limits. | ||
5312 | return calendar.item.enable === -1 ? !isDisabledMatch : isDisabledMatch || | ||
5313 | dateToVerify.pick < calendar.item.min.pick || | ||
5314 | dateToVerify.pick > calendar.item.max.pick | ||
5315 | |||
5316 | } //DatePicker.prototype.disabled | ||
5317 | |||
5318 | |||
5319 | /** | ||
5320 | * Parse a string into a usable type. | ||
5321 | */ | ||
5322 | DatePicker.prototype.parse = function( type, value, options ) { | ||
5323 | |||
5324 | var calendar = this, | ||
5325 | parsingObject = {} | ||
5326 | |||
5327 | // If it’s already parsed, we’re good. | ||
5328 | if ( !value || typeof value != 'string' ) { | ||
5329 | return value | ||
5330 | } | ||
5331 | |||
5332 | // We need a `.format` to parse the value with. | ||
5333 | if ( !( options && options.format ) ) { | ||
5334 | options = options || {} | ||
5335 | options.format = calendar.settings.format | ||
5336 | } | ||
5337 | |||
5338 | // Convert the format into an array and then map through it. | ||
5339 | calendar.formats.toArray( options.format ).map( function( label ) { | ||
5340 | |||
5341 | var | ||
5342 | // Grab the formatting label. | ||
5343 | formattingLabel = calendar.formats[ label ], | ||
5344 | |||
5345 | // The format length is from the formatting label function or the | ||
5346 | // label length without the escaping exclamation (!) mark. | ||
5347 | formatLength = formattingLabel ? _.trigger( formattingLabel, calendar, [ value, parsingObject ] ) : label.replace( /^!/, '' ).length | ||
5348 | |||
5349 | // If there's a format label, split the value up to the format length. | ||
5350 | // Then add it to the parsing object with appropriate label. | ||
5351 | if ( formattingLabel ) { | ||
5352 | parsingObject[ label ] = value.substr( 0, formatLength ) | ||
5353 | } | ||
5354 | |||
5355 | // Update the value as the substring from format length to end. | ||
5356 | value = value.substr( formatLength ) | ||
5357 | }) | ||
5358 | |||
5359 | // Compensate for month 0index. | ||
5360 | return [ | ||
5361 | parsingObject.yyyy || parsingObject.yy, | ||
5362 | +( parsingObject.mm || parsingObject.m ) - 1, | ||
5363 | parsingObject.dd || parsingObject.d | ||
5364 | ] | ||
5365 | } //DatePicker.prototype.parse | ||
5366 | |||
5367 | |||
5368 | /** | ||
5369 | * Various formats to display the object in. | ||
5370 | */ | ||
5371 | DatePicker.prototype.formats = (function() { | ||
5372 | |||
5373 | // Return the length of the first word in a collection. | ||
5374 | function getWordLengthFromCollection( string, collection, dateObject ) { | ||
5375 | |||
5376 | // Grab the first word from the string. | ||
5377 | var word = string.match( /\w+/ )[ 0 ] | ||
5378 | |||
5379 | // If there's no month index, add it to the date object | ||
5380 | if ( !dateObject.mm && !dateObject.m ) { | ||
5381 | dateObject.m = collection.indexOf( word ) + 1 | ||
5382 | } | ||
5383 | |||
5384 | // Return the length of the word. | ||
5385 | return word.length | ||
5386 | } | ||
5387 | |||
5388 | // Get the length of the first word in a string. | ||
5389 | function getFirstWordLength( string ) { | ||
5390 | return string.match( /\w+/ )[ 0 ].length | ||
5391 | } | ||
5392 | |||
5393 | return { | ||
5394 | |||
5395 | d: function( string, dateObject ) { | ||
5396 | |||
5397 | // If there's string, then get the digits length. | ||
5398 | // Otherwise return the selected date. | ||
5399 | return string ? _.digits( string ) : dateObject.date | ||
5400 | }, | ||
5401 | dd: function( string, dateObject ) { | ||
5402 | |||
5403 | // If there's a string, then the length is always 2. | ||
5404 | // Otherwise return the selected date with a leading zero. | ||
5405 | return string ? 2 : _.lead( dateObject.date ) | ||
5406 | }, | ||
5407 | ddd: function( string, dateObject ) { | ||
5408 | |||
5409 | // If there's a string, then get the length of the first word. | ||
5410 | // Otherwise return the short selected weekday. | ||
5411 | return string ? getFirstWordLength( string ) : this.settings.weekdaysShort[ dateObject.day ] | ||
5412 | }, | ||
5413 | dddd: function( string, dateObject ) { | ||
5414 | |||
5415 | // If there's a string, then get the length of the first word. | ||
5416 | // Otherwise return the full selected weekday. | ||
5417 | return string ? getFirstWordLength( string ) : this.settings.weekdaysFull[ dateObject.day ] | ||
5418 | }, | ||
5419 | m: function( string, dateObject ) { | ||
5420 | |||
5421 | // If there's a string, then get the length of the digits | ||
5422 | // Otherwise return the selected month with 0index compensation. | ||
5423 | return string ? _.digits( string ) : dateObject.month + 1 | ||
5424 | }, | ||
5425 | mm: function( string, dateObject ) { | ||
5426 | |||
5427 | // If there's a string, then the length is always 2. | ||
5428 | // Otherwise return the selected month with 0index and leading zero. | ||
5429 | return string ? 2 : _.lead( dateObject.month + 1 ) | ||
5430 | }, | ||
5431 | mmm: function( string, dateObject ) { | ||
5432 | |||
5433 | var collection = this.settings.monthsShort | ||
5434 | |||
5435 | // If there's a string, get length of the relevant month from the short | ||
5436 | // months collection. Otherwise return the selected month from that collection. | ||
5437 | return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ] | ||
5438 | }, | ||
5439 | mmmm: function( string, dateObject ) { | ||
5440 | |||
5441 | var collection = this.settings.monthsFull | ||
5442 | |||
5443 | // If there's a string, get length of the relevant month from the full | ||
5444 | // months collection. Otherwise return the selected month from that collection. | ||
5445 | return string ? getWordLengthFromCollection( string, collection, dateObject ) : collection[ dateObject.month ] | ||
5446 | }, | ||
5447 | yy: function( string, dateObject ) { | ||
5448 | |||
5449 | // If there's a string, then the length is always 2. | ||
5450 | // Otherwise return the selected year by slicing out the first 2 digits. | ||
5451 | return string ? 2 : ( '' + dateObject.year ).slice( 2 ) | ||
5452 | }, | ||
5453 | yyyy: function( string, dateObject ) { | ||
5454 | |||
5455 | // If there's a string, then the length is always 4. | ||
5456 | // Otherwise return the selected year. | ||
5457 | return string ? 4 : dateObject.year | ||
5458 | }, | ||
5459 | |||
5460 | // Create an array by splitting the formatting string passed. | ||
5461 | toArray: function( formatString ) { return formatString.split( /(d{1,4}|m{1,4}|y{4}|yy|!.)/g ) }, | ||
5462 | |||
5463 | // Format an object into a string using the formatting options. | ||
5464 | toString: function ( formatString, itemObject ) { | ||
5465 | var calendar = this | ||
5466 | return calendar.formats.toArray( formatString ).map( function( label ) { | ||
5467 | return _.trigger( calendar.formats[ label ], calendar, [ 0, itemObject ] ) || label.replace( /^!/, '' ) | ||
5468 | }).join( '' ) | ||
5469 | } | ||
5470 | } | ||
5471 | })() //DatePicker.prototype.formats | ||
5472 | |||
5473 | |||
5474 | |||
5475 | |||
5476 | /** | ||
5477 | * Check if two date units are the exact. | ||
5478 | */ | ||
5479 | DatePicker.prototype.isDateExact = function( one, two ) { | ||
5480 | |||
5481 | var calendar = this | ||
5482 | |||
5483 | // When we’re working with weekdays, do a direct comparison. | ||
5484 | if ( | ||
5485 | ( _.isInteger( one ) && _.isInteger( two ) ) || | ||
5486 | ( typeof one == 'boolean' && typeof two == 'boolean' ) | ||
5487 | ) { | ||
5488 | return one === two | ||
5489 | } | ||
5490 | |||
5491 | // When we’re working with date representations, compare the “pick” value. | ||
5492 | if ( | ||
5493 | ( _.isDate( one ) || $.isArray( one ) ) && | ||
5494 | ( _.isDate( two ) || $.isArray( two ) ) | ||
5495 | ) { | ||
5496 | return calendar.create( one ).pick === calendar.create( two ).pick | ||
5497 | } | ||
5498 | |||
5499 | // When we’re working with range objects, compare the “from” and “to”. | ||
5500 | if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) { | ||
5501 | return calendar.isDateExact( one.from, two.from ) && calendar.isDateExact( one.to, two.to ) | ||
5502 | } | ||
5503 | |||
5504 | return false | ||
5505 | } | ||
5506 | |||
5507 | |||
5508 | /** | ||
5509 | * Check if two date units overlap. | ||
5510 | */ | ||
5511 | DatePicker.prototype.isDateOverlap = function( one, two ) { | ||
5512 | |||
5513 | var calendar = this, | ||
5514 | firstDay = calendar.settings.firstDay ? 1 : 0 | ||
5515 | |||
5516 | // When we’re working with a weekday index, compare the days. | ||
5517 | if ( _.isInteger( one ) && ( _.isDate( two ) || $.isArray( two ) ) ) { | ||
5518 | one = one % 7 + firstDay | ||
5519 | return one === calendar.create( two ).day + 1 | ||
5520 | } | ||
5521 | if ( _.isInteger( two ) && ( _.isDate( one ) || $.isArray( one ) ) ) { | ||
5522 | two = two % 7 + firstDay | ||
5523 | return two === calendar.create( one ).day + 1 | ||
5524 | } | ||
5525 | |||
5526 | // When we’re working with range objects, check if the ranges overlap. | ||
5527 | if ( $.isPlainObject( one ) && $.isPlainObject( two ) ) { | ||
5528 | return calendar.overlapRanges( one, two ) | ||
5529 | } | ||
5530 | |||
5531 | return false | ||
5532 | } | ||
5533 | |||
5534 | |||
5535 | /** | ||
5536 | * Flip the “enabled” state. | ||
5537 | */ | ||
5538 | DatePicker.prototype.flipEnable = function(val) { | ||
5539 | var itemObject = this.item | ||
5540 | itemObject.enable = val || (itemObject.enable == -1 ? 1 : -1) | ||
5541 | } | ||
5542 | |||
5543 | |||
5544 | /** | ||
5545 | * Mark a collection of dates as “disabled”. | ||
5546 | */ | ||
5547 | DatePicker.prototype.deactivate = function( type, datesToDisable ) { | ||
5548 | |||
5549 | var calendar = this, | ||
5550 | disabledItems = calendar.item.disable.slice(0) | ||
5551 | |||
5552 | |||
5553 | // If we’re flipping, that’s all we need to do. | ||
5554 | if ( datesToDisable == 'flip' ) { | ||
5555 | calendar.flipEnable() | ||
5556 | } | ||
5557 | |||
5558 | else if ( datesToDisable === false ) { | ||
5559 | calendar.flipEnable(1) | ||
5560 | disabledItems = [] | ||
5561 | } | ||
5562 | |||
5563 | else if ( datesToDisable === true ) { | ||
5564 | calendar.flipEnable(-1) | ||
5565 | disabledItems = [] | ||
5566 | } | ||
5567 | |||
5568 | // Otherwise go through the dates to disable. | ||
5569 | else { | ||
5570 | |||
5571 | datesToDisable.map(function( unitToDisable ) { | ||
5572 | |||
5573 | var matchFound | ||
5574 | |||
5575 | // When we have disabled items, check for matches. | ||
5576 | // If something is matched, immediately break out. | ||
5577 | for ( var index = 0; index < disabledItems.length; index += 1 ) { | ||
5578 | if ( calendar.isDateExact( unitToDisable, disabledItems[index] ) ) { | ||
5579 | matchFound = true | ||
5580 | break | ||
5581 | } | ||
5582 | } | ||
5583 | |||
5584 | // If nothing was found, add the validated unit to the collection. | ||
5585 | if ( !matchFound ) { | ||
5586 | if ( | ||
5587 | _.isInteger( unitToDisable ) || | ||
5588 | _.isDate( unitToDisable ) || | ||
5589 | $.isArray( unitToDisable ) || | ||
5590 | ( $.isPlainObject( unitToDisable ) && unitToDisable.from && unitToDisable.to ) | ||
5591 | ) { | ||
5592 | disabledItems.push( unitToDisable ) | ||
5593 | } | ||
5594 | } | ||
5595 | }) | ||
5596 | } | ||
5597 | |||
5598 | // Return the updated collection. | ||
5599 | return disabledItems | ||
5600 | } //DatePicker.prototype.deactivate | ||
5601 | |||
5602 | |||
5603 | /** | ||
5604 | * Mark a collection of dates as “enabled”. | ||
5605 | */ | ||
5606 | DatePicker.prototype.activate = function( type, datesToEnable ) { | ||
5607 | |||
5608 | var calendar = this, | ||
5609 | disabledItems = calendar.item.disable, | ||
5610 | disabledItemsCount = disabledItems.length | ||
5611 | |||
5612 | // If we’re flipping, that’s all we need to do. | ||
5613 | if ( datesToEnable == 'flip' ) { | ||
5614 | calendar.flipEnable() | ||
5615 | } | ||
5616 | |||
5617 | else if ( datesToEnable === true ) { | ||
5618 | calendar.flipEnable(1) | ||
5619 | disabledItems = [] | ||
5620 | } | ||
5621 | |||
5622 | else if ( datesToEnable === false ) { | ||
5623 | calendar.flipEnable(-1) | ||
5624 | disabledItems = [] | ||
5625 | } | ||
5626 | |||
5627 | // Otherwise go through the disabled dates. | ||
5628 | else { | ||
5629 | |||
5630 | datesToEnable.map(function( unitToEnable ) { | ||
5631 | |||
5632 | var matchFound, | ||
5633 | disabledUnit, | ||
5634 | index, | ||
5635 | isExactRange | ||
5636 | |||
5637 | // Go through the disabled items and try to find a match. | ||
5638 | for ( index = 0; index < disabledItemsCount; index += 1 ) { | ||
5639 | |||
5640 | disabledUnit = disabledItems[index] | ||
5641 | |||
5642 | // When an exact match is found, remove it from the collection. | ||
5643 | if ( calendar.isDateExact( disabledUnit, unitToEnable ) ) { | ||
5644 | matchFound = disabledItems[index] = null | ||
5645 | isExactRange = true | ||
5646 | break | ||
5647 | } | ||
5648 | |||
5649 | // When an overlapped match is found, add the “inverted” state to it. | ||
5650 | else if ( calendar.isDateOverlap( disabledUnit, unitToEnable ) ) { | ||
5651 | if ( $.isPlainObject( unitToEnable ) ) { | ||
5652 | unitToEnable.inverted = true | ||
5653 | matchFound = unitToEnable | ||
5654 | } | ||
5655 | else if ( $.isArray( unitToEnable ) ) { | ||
5656 | matchFound = unitToEnable | ||
5657 | if ( !matchFound[3] ) matchFound.push( 'inverted' ) | ||
5658 | } | ||
5659 | else if ( _.isDate( unitToEnable ) ) { | ||
5660 | matchFound = [ unitToEnable.getFullYear(), unitToEnable.getMonth(), unitToEnable.getDate(), 'inverted' ] | ||
5661 | } | ||
5662 | break | ||
5663 | } | ||
5664 | } | ||
5665 | |||
5666 | // If a match was found, remove a previous duplicate entry. | ||
5667 | if ( matchFound ) for ( index = 0; index < disabledItemsCount; index += 1 ) { | ||
5668 | if ( calendar.isDateExact( disabledItems[index], unitToEnable ) ) { | ||
5669 | disabledItems[index] = null | ||
5670 | break | ||
5671 | } | ||
5672 | } | ||
5673 | |||
5674 | // In the event that we’re dealing with an exact range of dates, | ||
5675 | // make sure there are no “inverted” dates because of it. | ||
5676 | if ( isExactRange ) for ( index = 0; index < disabledItemsCount; index += 1 ) { | ||
5677 | if ( calendar.isDateOverlap( disabledItems[index], unitToEnable ) ) { | ||
5678 | disabledItems[index] = null | ||
5679 | break | ||
5680 | } | ||
5681 | } | ||
5682 | |||
5683 | // If something is still matched, add it into the collection. | ||
5684 | if ( matchFound ) { | ||
5685 | disabledItems.push( matchFound ) | ||
5686 | } | ||
5687 | }) | ||
5688 | } | ||
5689 | |||
5690 | // Return the updated collection. | ||
5691 | return disabledItems.filter(function( val ) { return val != null }) | ||
5692 | } //DatePicker.prototype.activate | ||
5693 | |||
5694 | |||
5695 | /** | ||
5696 | * Create a string for the nodes in the picker. | ||
5697 | */ | ||
5698 | DatePicker.prototype.nodes = function( isOpen ) { | ||
5699 | |||
5700 | var | ||
5701 | calendar = this, | ||
5702 | settings = calendar.settings, | ||
5703 | calendarItem = calendar.item, | ||
5704 | nowObject = calendarItem.now, | ||
5705 | selectedObject = calendarItem.select, | ||
5706 | highlightedObject = calendarItem.highlight, | ||
5707 | viewsetObject = calendarItem.view, | ||
5708 | disabledCollection = calendarItem.disable, | ||
5709 | minLimitObject = calendarItem.min, | ||
5710 | maxLimitObject = calendarItem.max, | ||
5711 | |||
5712 | |||
5713 | // Create the calendar table head using a copy of weekday labels collection. | ||
5714 | // * We do a copy so we don't mutate the original array. | ||
5715 | tableHead = (function( collection, fullCollection ) { | ||
5716 | |||
5717 | // If the first day should be Monday, move Sunday to the end. | ||
5718 | if ( settings.firstDay ) { | ||
5719 | collection.push( collection.shift() ) | ||
5720 | fullCollection.push( fullCollection.shift() ) | ||
5721 | } | ||
5722 | |||
5723 | // Create and return the table head group. | ||
5724 | return _.node( | ||
5725 | 'thead', | ||
5726 | _.node( | ||
5727 | 'tr', | ||
5728 | _.group({ | ||
5729 | min: 0, | ||
5730 | max: DAYS_IN_WEEK - 1, | ||
5731 | i: 1, | ||
5732 | node: 'th', | ||
5733 | item: function( counter ) { | ||
5734 | return [ | ||
5735 | collection[ counter ], | ||
5736 | settings.klass.weekdays, | ||
5737 | 'scope=col title="' + fullCollection[ counter ] + '"' | ||
5738 | ] | ||
5739 | } | ||
5740 | }) | ||
5741 | ) | ||
5742 | ) //endreturn | ||
5743 | |||
5744 | // Materialize modified | ||
5745 | })( ( settings.showWeekdaysFull ? settings.weekdaysFull : settings.weekdaysLetter ).slice( 0 ), settings.weekdaysFull.slice( 0 ) ), //tableHead | ||
5746 | |||
5747 | |||
5748 | // Create the nav for next/prev month. | ||
5749 | createMonthNav = function( next ) { | ||
5750 | |||
5751 | // Otherwise, return the created month tag. | ||
5752 | return _.node( | ||
5753 | 'div', | ||
5754 | ' ', | ||
5755 | settings.klass[ 'nav' + ( next ? 'Next' : 'Prev' ) ] + ( | ||
5756 | |||
5757 | // If the focused month is outside the range, disabled the button. | ||
5758 | ( next && viewsetObject.year >= maxLimitObject.year && viewsetObject.month >= maxLimitObject.month ) || | ||
5759 | ( !next && viewsetObject.year <= minLimitObject.year && viewsetObject.month <= minLimitObject.month ) ? | ||
5760 | ' ' + settings.klass.navDisabled : '' | ||
5761 | ), | ||
5762 | 'data-nav=' + ( next || -1 ) + ' ' + | ||
5763 | _.ariaAttr({ | ||
5764 | role: 'button', | ||
5765 | controls: calendar.$node[0].id + '_table' | ||
5766 | }) + ' ' + | ||
5767 | 'title="' + (next ? settings.labelMonthNext : settings.labelMonthPrev ) + '"' | ||
5768 | ) //endreturn | ||
5769 | }, //createMonthNav | ||
5770 | |||
5771 | |||
5772 | // Create the month label. | ||
5773 | //Materialize modified | ||
5774 | createMonthLabel = function(override) { | ||
5775 | |||
5776 | var monthsCollection = settings.showMonthsShort ? settings.monthsShort : settings.monthsFull | ||
5777 | |||
5778 | // Materialize modified | ||
5779 | if (override == "short_months") { | ||
5780 | monthsCollection = settings.monthsShort; | ||
5781 | } | ||
5782 | |||
5783 | // If there are months to select, add a dropdown menu. | ||
5784 | if ( settings.selectMonths && override == undefined) { | ||
5785 | |||
5786 | return _.node( 'select', | ||
5787 | _.group({ | ||
5788 | min: 0, | ||
5789 | max: 11, | ||
5790 | i: 1, | ||
5791 | node: 'option', | ||
5792 | item: function( loopedMonth ) { | ||
5793 | |||
5794 | return [ | ||
5795 | |||
5796 | // The looped month and no classes. | ||
5797 | monthsCollection[ loopedMonth ], 0, | ||
5798 | |||
5799 | // Set the value and selected index. | ||
5800 | 'value=' + loopedMonth + | ||
5801 | ( viewsetObject.month == loopedMonth ? ' selected' : '' ) + | ||
5802 | ( | ||
5803 | ( | ||
5804 | ( viewsetObject.year == minLimitObject.year && loopedMonth < minLimitObject.month ) || | ||
5805 | ( viewsetObject.year == maxLimitObject.year && loopedMonth > maxLimitObject.month ) | ||
5806 | ) ? | ||
5807 | ' disabled' : '' | ||
5808 | ) | ||
5809 | ] | ||
5810 | } | ||
5811 | }), | ||
5812 | settings.klass.selectMonth + ' browser-default', | ||
5813 | ( isOpen ? '' : 'disabled' ) + ' ' + | ||
5814 | _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + | ||
5815 | 'title="' + settings.labelMonthSelect + '"' | ||
5816 | ) | ||
5817 | } | ||
5818 | |||
5819 | // Materialize modified | ||
5820 | if (override == "short_months") | ||
5821 | if (selectedObject != null) | ||
5822 | return _.node( 'div', monthsCollection[ selectedObject.month ] ); | ||
5823 | else return _.node( 'div', monthsCollection[ viewsetObject.month ] ); | ||
5824 | |||
5825 | // If there's a need for a month selector | ||
5826 | return _.node( 'div', monthsCollection[ viewsetObject.month ], settings.klass.month ) | ||
5827 | }, //createMonthLabel | ||
5828 | |||
5829 | |||
5830 | // Create the year label. | ||
5831 | // Materialize modified | ||
5832 | createYearLabel = function(override) { | ||
5833 | |||
5834 | var focusedYear = viewsetObject.year, | ||
5835 | |||
5836 | // If years selector is set to a literal "true", set it to 5. Otherwise | ||
5837 | // divide in half to get half before and half after focused year. | ||
5838 | numberYears = settings.selectYears === true ? 5 : ~~( settings.selectYears / 2 ) | ||
5839 | |||
5840 | // If there are years to select, add a dropdown menu. | ||
5841 | if ( numberYears ) { | ||
5842 | |||
5843 | var | ||
5844 | minYear = minLimitObject.year, | ||
5845 | maxYear = maxLimitObject.year, | ||
5846 | lowestYear = focusedYear - numberYears, | ||
5847 | highestYear = focusedYear + numberYears | ||
5848 | |||
5849 | // If the min year is greater than the lowest year, increase the highest year | ||
5850 | // by the difference and set the lowest year to the min year. | ||
5851 | if ( minYear > lowestYear ) { | ||
5852 | highestYear += minYear - lowestYear | ||
5853 | lowestYear = minYear | ||
5854 | } | ||
5855 | |||
5856 | // If the max year is less than the highest year, decrease the lowest year | ||
5857 | // by the lower of the two: available and needed years. Then set the | ||
5858 | // highest year to the max year. | ||
5859 | if ( maxYear < highestYear ) { | ||
5860 | |||
5861 | var availableYears = lowestYear - minYear, | ||
5862 | neededYears = highestYear - maxYear | ||
5863 | |||
5864 | lowestYear -= availableYears > neededYears ? neededYears : availableYears | ||
5865 | highestYear = maxYear | ||
5866 | } | ||
5867 | |||
5868 | if ( settings.selectYears && override == undefined ) { | ||
5869 | return _.node( 'select', | ||
5870 | _.group({ | ||
5871 | min: lowestYear, | ||
5872 | max: highestYear, | ||
5873 | i: 1, | ||
5874 | node: 'option', | ||
5875 | item: function( loopedYear ) { | ||
5876 | return [ | ||
5877 | |||
5878 | // The looped year and no classes. | ||
5879 | loopedYear, 0, | ||
5880 | |||
5881 | // Set the value and selected index. | ||
5882 | 'value=' + loopedYear + ( focusedYear == loopedYear ? ' selected' : '' ) | ||
5883 | ] | ||
5884 | } | ||
5885 | }), | ||
5886 | settings.klass.selectYear + ' browser-default', | ||
5887 | ( isOpen ? '' : 'disabled' ) + ' ' + _.ariaAttr({ controls: calendar.$node[0].id + '_table' }) + ' ' + | ||
5888 | 'title="' + settings.labelYearSelect + '"' | ||
5889 | ) | ||
5890 | } | ||
5891 | } | ||
5892 | |||
5893 | // Materialize modified | ||
5894 | if (override == "raw") | ||
5895 | return _.node( 'div', focusedYear ) | ||
5896 | |||
5897 | // Otherwise just return the year focused | ||
5898 | return _.node( 'div', focusedYear, settings.klass.year ) | ||
5899 | } //createYearLabel | ||
5900 | |||
5901 | |||
5902 | // Materialize modified | ||
5903 | createDayLabel = function() { | ||
5904 | if (selectedObject != null) | ||
5905 | return _.node( 'div', selectedObject.date) | ||
5906 | else return _.node( 'div', nowObject.date) | ||
5907 | } | ||
5908 | createWeekdayLabel = function() { | ||
5909 | var display_day; | ||
5910 | |||
5911 | if (selectedObject != null) | ||
5912 | display_day = selectedObject.day; | ||
5913 | else | ||
5914 | display_day = nowObject.day; | ||
5915 | var weekday = settings.weekdaysFull[ display_day ] | ||
5916 | return weekday | ||
5917 | } | ||
5918 | |||
5919 | |||
5920 | // Create and return the entire calendar. | ||
5921 | return _.node( | ||
5922 | // Date presentation View | ||
5923 | 'div', | ||
5924 | _.node( | ||
5925 | 'div', | ||
5926 | createWeekdayLabel(), | ||
5927 | "picker__weekday-display" | ||
5928 | )+ | ||
5929 | _.node( | ||
5930 | // Div for short Month | ||
5931 | 'div', | ||
5932 | createMonthLabel("short_months"), | ||
5933 | settings.klass.month_display | ||
5934 | )+ | ||
5935 | _.node( | ||
5936 | // Div for Day | ||
5937 | 'div', | ||
5938 | createDayLabel() , | ||
5939 | settings.klass.day_display | ||
5940 | )+ | ||
5941 | _.node( | ||
5942 | // Div for Year | ||
5943 | 'div', | ||
5944 | createYearLabel("raw") , | ||
5945 | settings.klass.year_display | ||
5946 | ), | ||
5947 | settings.klass.date_display | ||
5948 | )+ | ||
5949 | // Calendar container | ||
5950 | _.node('div', | ||
5951 | _.node('div', | ||
5952 | ( settings.selectYears ? createMonthLabel() + createYearLabel() : createMonthLabel() + createYearLabel() ) + | ||
5953 | createMonthNav() + createMonthNav( 1 ), | ||
5954 | settings.klass.header | ||
5955 | ) + _.node( | ||
5956 | 'table', | ||
5957 | tableHead + | ||
5958 | _.node( | ||
5959 | 'tbody', | ||
5960 | _.group({ | ||
5961 | min: 0, | ||
5962 | max: WEEKS_IN_CALENDAR - 1, | ||
5963 | i: 1, | ||
5964 | node: 'tr', | ||
5965 | item: function( rowCounter ) { | ||
5966 | |||
5967 | // If Monday is the first day and the month starts on Sunday, shift the date back a week. | ||
5968 | var shiftDateBy = settings.firstDay && calendar.create([ viewsetObject.year, viewsetObject.month, 1 ]).day === 0 ? -7 : 0 | ||
5969 | |||
5970 | return [ | ||
5971 | _.group({ | ||
5972 | min: DAYS_IN_WEEK * rowCounter - viewsetObject.day + shiftDateBy + 1, // Add 1 for weekday 0index | ||
5973 | max: function() { | ||
5974 | return this.min + DAYS_IN_WEEK - 1 | ||
5975 | }, | ||
5976 | i: 1, | ||
5977 | node: 'td', | ||
5978 | item: function( targetDate ) { | ||
5979 | |||
5980 | // Convert the time date from a relative date to a target date. | ||
5981 | targetDate = calendar.create([ viewsetObject.year, viewsetObject.month, targetDate + ( settings.firstDay ? 1 : 0 ) ]) | ||
5982 | |||
5983 | var isSelected = selectedObject && selectedObject.pick == targetDate.pick, | ||
5984 | isHighlighted = highlightedObject && highlightedObject.pick == targetDate.pick, | ||
5985 | isDisabled = disabledCollection && calendar.disabled( targetDate ) || targetDate.pick < minLimitObject.pick || targetDate.pick > maxLimitObject.pick, | ||
5986 | formattedDate = _.trigger( calendar.formats.toString, calendar, [ settings.format, targetDate ] ) | ||
5987 | |||
5988 | return [ | ||
5989 | _.node( | ||
5990 | 'div', | ||
5991 | targetDate.date, | ||
5992 | (function( klasses ) { | ||
5993 | |||
5994 | // Add the `infocus` or `outfocus` classes based on month in view. | ||
5995 | klasses.push( viewsetObject.month == targetDate.month ? settings.klass.infocus : settings.klass.outfocus ) | ||
5996 | |||
5997 | // Add the `today` class if needed. | ||
5998 | if ( nowObject.pick == targetDate.pick ) { | ||
5999 | klasses.push( settings.klass.now ) | ||
6000 | } | ||
6001 | |||
6002 | // Add the `selected` class if something's selected and the time matches. | ||
6003 | if ( isSelected ) { | ||
6004 | klasses.push( settings.klass.selected ) | ||
6005 | } | ||
6006 | |||
6007 | // Add the `highlighted` class if something's highlighted and the time matches. | ||
6008 | if ( isHighlighted ) { | ||
6009 | klasses.push( settings.klass.highlighted ) | ||
6010 | } | ||
6011 | |||
6012 | // Add the `disabled` class if something's disabled and the object matches. | ||
6013 | if ( isDisabled ) { | ||
6014 | klasses.push( settings.klass.disabled ) | ||
6015 | } | ||
6016 | |||
6017 | return klasses.join( ' ' ) | ||
6018 | })([ settings.klass.day ]), | ||
6019 | 'data-pick=' + targetDate.pick + ' ' + _.ariaAttr({ | ||
6020 | role: 'gridcell', | ||
6021 | label: formattedDate, | ||
6022 | selected: isSelected && calendar.$node.val() === formattedDate ? true : null, | ||
6023 | activedescendant: isHighlighted ? true : null, | ||
6024 | disabled: isDisabled ? true : null | ||
6025 | }) | ||
6026 | ), | ||
6027 | '', | ||
6028 | _.ariaAttr({ role: 'presentation' }) | ||
6029 | ] //endreturn | ||
6030 | } | ||
6031 | }) | ||
6032 | ] //endreturn | ||
6033 | } | ||
6034 | }) | ||
6035 | ), | ||
6036 | settings.klass.table, | ||
6037 | 'id="' + calendar.$node[0].id + '_table' + '" ' + _.ariaAttr({ | ||
6038 | role: 'grid', | ||
6039 | controls: calendar.$node[0].id, | ||
6040 | readonly: true | ||
6041 | }) | ||
6042 | ) | ||
6043 | , settings.klass.calendar_container) // end calendar | ||
6044 | |||
6045 | + | ||
6046 | |||
6047 | // * For Firefox forms to submit, make sure to set the buttons’ `type` attributes as “button”. | ||
6048 | _.node( | ||
6049 | 'div', | ||
6050 | _.node( 'button', settings.today, "btn-flat picker__today", | ||
6051 | 'type=button data-pick=' + nowObject.pick + | ||
6052 | ( isOpen && !calendar.disabled(nowObject) ? '' : ' disabled' ) + ' ' + | ||
6053 | _.ariaAttr({ controls: calendar.$node[0].id }) ) + | ||
6054 | _.node( 'button', settings.clear, "btn-flat picker__clear", | ||
6055 | 'type=button data-clear=1' + | ||
6056 | ( isOpen ? '' : ' disabled' ) + ' ' + | ||
6057 | _.ariaAttr({ controls: calendar.$node[0].id }) ) + | ||
6058 | _.node('button', settings.close, "btn-flat picker__close", | ||
6059 | 'type=button data-close=true ' + | ||
6060 | ( isOpen ? '' : ' disabled' ) + ' ' + | ||
6061 | _.ariaAttr({ controls: calendar.$node[0].id }) ), | ||
6062 | settings.klass.footer | ||
6063 | ) //endreturn | ||
6064 | } //DatePicker.prototype.nodes | ||
6065 | |||
6066 | |||
6067 | |||
6068 | |||
6069 | /** | ||
6070 | * The date picker defaults. | ||
6071 | */ | ||
6072 | DatePicker.defaults = (function( prefix ) { | ||
6073 | |||
6074 | return { | ||
6075 | |||
6076 | // The title label to use for the month nav buttons | ||
6077 | labelMonthNext: 'Next month', | ||
6078 | labelMonthPrev: 'Previous month', | ||
6079 | |||
6080 | // The title label to use for the dropdown selectors | ||
6081 | labelMonthSelect: 'Select a month', | ||
6082 | labelYearSelect: 'Select a year', | ||
6083 | |||
6084 | // Months and weekdays | ||
6085 | monthsFull: [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ], | ||
6086 | monthsShort: [ 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec' ], | ||
6087 | weekdaysFull: [ 'Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday' ], | ||
6088 | weekdaysShort: [ 'Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat' ], | ||
6089 | |||
6090 | // Materialize modified | ||
6091 | weekdaysLetter: [ 'S', 'M', 'T', 'W', 'T', 'F', 'S' ], | ||
6092 | |||
6093 | // Today and clear | ||
6094 | today: 'Today', | ||
6095 | clear: 'Clear', | ||
6096 | close: 'Close', | ||
6097 | |||
6098 | // The format to show on the `input` element | ||
6099 | format: 'd mmmm, yyyy', | ||
6100 | |||
6101 | // Classes | ||
6102 | klass: { | ||
6103 | |||
6104 | table: prefix + 'table', | ||
6105 | |||
6106 | header: prefix + 'header', | ||
6107 | |||
6108 | |||
6109 | // Materialize Added klasses | ||
6110 | date_display: prefix + 'date-display', | ||
6111 | day_display: prefix + 'day-display', | ||
6112 | month_display: prefix + 'month-display', | ||
6113 | year_display: prefix + 'year-display', | ||
6114 | calendar_container: prefix + 'calendar-container', | ||
6115 | // end | ||
6116 | |||
6117 | |||
6118 | |||
6119 | navPrev: prefix + 'nav--prev', | ||
6120 | navNext: prefix + 'nav--next', | ||
6121 | navDisabled: prefix + 'nav--disabled', | ||
6122 | |||
6123 | month: prefix + 'month', | ||
6124 | year: prefix + 'year', | ||
6125 | |||
6126 | selectMonth: prefix + 'select--month', | ||
6127 | selectYear: prefix + 'select--year', | ||
6128 | |||
6129 | weekdays: prefix + 'weekday', | ||
6130 | |||
6131 | day: prefix + 'day', | ||
6132 | disabled: prefix + 'day--disabled', | ||
6133 | selected: prefix + 'day--selected', | ||
6134 | highlighted: prefix + 'day--highlighted', | ||
6135 | now: prefix + 'day--today', | ||
6136 | infocus: prefix + 'day--infocus', | ||
6137 | outfocus: prefix + 'day--outfocus', | ||
6138 | |||
6139 | footer: prefix + 'footer', | ||
6140 | |||
6141 | buttonClear: prefix + 'button--clear', | ||
6142 | buttonToday: prefix + 'button--today', | ||
6143 | buttonClose: prefix + 'button--close' | ||
6144 | } | ||
6145 | } | ||
6146 | })( Picker.klasses().picker + '__' ) | ||
6147 | |||
6148 | |||
6149 | |||
6150 | |||
6151 | |||
6152 | /** | ||
6153 | * Extend the picker to add the date picker. | ||
6154 | */ | ||
6155 | Picker.extend( 'pickadate', DatePicker ) | ||
6156 | |||
6157 | |||
6158 | })); | ||
6159 | |||
6160 | |||
6161 | ;(function ($) { | ||
6162 | |||
6163 | $.fn.characterCounter = function(){ | ||
6164 | return this.each(function(){ | ||
6165 | |||
6166 | var itHasLengthAttribute = $(this).attr('length') !== undefined; | ||
6167 | |||
6168 | if(itHasLengthAttribute){ | ||
6169 | $(this).on('input', updateCounter); | ||
6170 | $(this).on('focus', updateCounter); | ||
6171 | $(this).on('blur', removeCounterElement); | ||
6172 | |||
6173 | addCounterElement($(this)); | ||
6174 | } | ||
6175 | |||
6176 | }); | ||
6177 | }; | ||
6178 | |||
6179 | function updateCounter(){ | ||
6180 | var maxLength = +$(this).attr('length'), | ||
6181 | actualLength = +$(this).val().length, | ||
6182 | isValidLength = actualLength <= maxLength; | ||
6183 | |||
6184 | $(this).parent().find('span[class="character-counter"]') | ||
6185 | .html( actualLength + '/' + maxLength); | ||
6186 | |||
6187 | addInputStyle(isValidLength, $(this)); | ||
6188 | } | ||
6189 | |||
6190 | function addCounterElement($input){ | ||
6191 | var $counterElement = $('<span/>') | ||
6192 | .addClass('character-counter') | ||
6193 | .css('float','right') | ||
6194 | .css('font-size','12px') | ||
6195 | .css('height', 1); | ||
6196 | |||
6197 | $input.parent().append($counterElement); | ||
6198 | } | ||
6199 | |||
6200 | function removeCounterElement(){ | ||
6201 | $(this).parent().find('span[class="character-counter"]').html(''); | ||
6202 | } | ||
6203 | |||
6204 | function addInputStyle(isValidLength, $input){ | ||
6205 | var inputHasInvalidClass = $input.hasClass('invalid'); | ||
6206 | if (isValidLength && inputHasInvalidClass) { | ||
6207 | $input.removeClass('invalid'); | ||
6208 | } | ||
6209 | else if(!isValidLength && !inputHasInvalidClass){ | ||
6210 | $input.removeClass('valid'); | ||
6211 | $input.addClass('invalid'); | ||
6212 | } | ||
6213 | } | ||
6214 | |||
6215 | $(document).ready(function(){ | ||
6216 | $('input, textarea').characterCounter(); | ||
6217 | }); | ||
6218 | |||
6219 | }( jQuery )); | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/materialize.min.js b/src/Wallabag/CoreBundle/Resources/public/themes/material/js/materialize.min.js deleted file mode 100644 index 7f778aad..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/materialize.min.js +++ /dev/null | |||
@@ -1,9 +0,0 @@ | |||
1 | /*! | ||
2 | * Materialize v0.97.1 (http://materializecss.com) | ||
3 | * Copyright 2014-2015 Materialize | ||
4 | * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE) | ||
5 | */ | ||
6 | jQuery.easing.jswing=jQuery.easing.swing,jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(a,b,c,d,e){return jQuery.easing[jQuery.easing.def](a,b,c,d,e)},easeInQuad:function(a,b,c,d,e){return d*(b/=e)*b+c},easeOutQuad:function(a,b,c,d,e){return-d*(b/=e)*(b-2)+c},easeInOutQuad:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b+c:-d/2*(--b*(b-2)-1)+c},easeInCubic:function(a,b,c,d,e){return d*(b/=e)*b*b+c},easeOutCubic:function(a,b,c,d,e){return d*((b=b/e-1)*b*b+1)+c},easeInOutCubic:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b+c:d/2*((b-=2)*b*b+2)+c},easeInQuart:function(a,b,c,d,e){return d*(b/=e)*b*b*b+c},easeOutQuart:function(a,b,c,d,e){return-d*((b=b/e-1)*b*b*b-1)+c},easeInOutQuart:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b+c:-d/2*((b-=2)*b*b*b-2)+c},easeInQuint:function(a,b,c,d,e){return d*(b/=e)*b*b*b*b+c},easeOutQuint:function(a,b,c,d,e){return d*((b=b/e-1)*b*b*b*b+1)+c},easeInOutQuint:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b*b*b*b+c:d/2*((b-=2)*b*b*b*b+2)+c},easeInSine:function(a,b,c,d,e){return-d*Math.cos(b/e*(Math.PI/2))+d+c},easeOutSine:function(a,b,c,d,e){return d*Math.sin(b/e*(Math.PI/2))+c},easeInOutSine:function(a,b,c,d,e){return-d/2*(Math.cos(Math.PI*b/e)-1)+c},easeInExpo:function(a,b,c,d,e){return 0==b?c:d*Math.pow(2,10*(b/e-1))+c},easeOutExpo:function(a,b,c,d,e){return b==e?c+d:d*(-Math.pow(2,-10*b/e)+1)+c},easeInOutExpo:function(a,b,c,d,e){return 0==b?c:b==e?c+d:(b/=e/2)<1?d/2*Math.pow(2,10*(b-1))+c:d/2*(-Math.pow(2,-10*--b)+2)+c},easeInCirc:function(a,b,c,d,e){return-d*(Math.sqrt(1-(b/=e)*b)-1)+c},easeOutCirc:function(a,b,c,d,e){return d*Math.sqrt(1-(b=b/e-1)*b)+c},easeInOutCirc:function(a,b,c,d,e){return(b/=e/2)<1?-d/2*(Math.sqrt(1-b*b)-1)+c:d/2*(Math.sqrt(1-(b-=2)*b)+1)+c},easeInElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(0==b)return c;if(1==(b/=e))return c+d;if(g||(g=.3*e),h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(b-=1))*Math.sin(2*(b*e-f)*Math.PI/g))+c},easeOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(0==b)return c;if(1==(b/=e))return c+d;if(g||(g=.3*e),h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10*b)*Math.sin(2*(b*e-f)*Math.PI/g)+d+c},easeInOutElastic:function(a,b,c,d,e){var f=1.70158,g=0,h=d;if(0==b)return c;if(2==(b/=e/2))return c+d;if(g||(g=.3*e*1.5),h<Math.abs(d)){h=d;var f=g/4}else var f=g/(2*Math.PI)*Math.asin(d/h);return 1>b?-.5*h*Math.pow(2,10*(b-=1))*Math.sin(2*(b*e-f)*Math.PI/g)+c:h*Math.pow(2,-10*(b-=1))*Math.sin(2*(b*e-f)*Math.PI/g)*.5+d+c},easeInBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),d*(b/=e)*b*((f+1)*b-f)+c},easeOutBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),d*((b=b/e-1)*b*((f+1)*b+f)+1)+c},easeInOutBack:function(a,b,c,d,e,f){return void 0==f&&(f=1.70158),(b/=e/2)<1?d/2*b*b*(((f*=1.525)+1)*b-f)+c:d/2*((b-=2)*b*(((f*=1.525)+1)*b+f)+2)+c},easeInBounce:function(a,b,c,d,e){return d-jQuery.easing.easeOutBounce(a,e-b,0,d,e)+c},easeOutBounce:function(a,b,c,d,e){return(b/=e)<1/2.75?7.5625*d*b*b+c:2/2.75>b?d*(7.5625*(b-=1.5/2.75)*b+.75)+c:2.5/2.75>b?d*(7.5625*(b-=2.25/2.75)*b+.9375)+c:d*(7.5625*(b-=2.625/2.75)*b+.984375)+c},easeInOutBounce:function(a,b,c,d,e){return e/2>b?.5*jQuery.easing.easeInBounce(a,2*b,0,d,e)+c:.5*jQuery.easing.easeOutBounce(a,2*b-e,0,d,e)+.5*d+c}}),jQuery.extend(jQuery.easing,{easeInOutMaterial:function(a,b,c,d,e){return(b/=e/2)<1?d/2*b*b+c:d/4*((b-=2)*b*b+2)+c}}),!function(a){function b(a){var b=a.length,d=c.type(a);return"function"===d||c.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===d||0===b||"number"==typeof b&&b>0&&b-1 in a}if(!a.jQuery){var c=function(a,b){return new c.fn.init(a,b)};c.isWindow=function(a){return null!=a&&a==a.window},c.type=function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?e[g.call(a)]||"object":typeof a},c.isArray=Array.isArray||function(a){return"array"===c.type(a)},c.isPlainObject=function(a){var b;if(!a||"object"!==c.type(a)||a.nodeType||c.isWindow(a))return!1;try{if(a.constructor&&!f.call(a,"constructor")&&!f.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(d){return!1}for(b in a);return void 0===b||f.call(a,b)},c.each=function(a,c,d){var e,f=0,g=a.length,h=b(a);if(d){if(h)for(;g>f&&(e=c.apply(a[f],d),e!==!1);f++);else for(f in a)if(e=c.apply(a[f],d),e===!1)break}else if(h)for(;g>f&&(e=c.call(a[f],f,a[f]),e!==!1);f++);else for(f in a)if(e=c.call(a[f],f,a[f]),e===!1)break;return a},c.data=function(a,b,e){if(void 0===e){var f=a[c.expando],g=f&&d[f];if(void 0===b)return g;if(g&&b in g)return g[b]}else if(void 0!==b){var f=a[c.expando]||(a[c.expando]=++c.uuid);return d[f]=d[f]||{},d[f][b]=e,e}},c.removeData=function(a,b){var e=a[c.expando],f=e&&d[e];f&&c.each(b,function(a,b){delete f[b]})},c.extend=function(){var a,b,d,e,f,g,h=arguments[0]||{},i=1,j=arguments.length,k=!1;for("boolean"==typeof h&&(k=h,h=arguments[i]||{},i++),"object"!=typeof h&&"function"!==c.type(h)&&(h={}),i===j&&(h=this,i--);j>i;i++)if(null!=(f=arguments[i]))for(e in f)a=h[e],d=f[e],h!==d&&(k&&d&&(c.isPlainObject(d)||(b=c.isArray(d)))?(b?(b=!1,g=a&&c.isArray(a)?a:[]):g=a&&c.isPlainObject(a)?a:{},h[e]=c.extend(k,g,d)):void 0!==d&&(h[e]=d));return h},c.queue=function(a,d,e){function f(a,c){var d=c||[];return null!=a&&(b(Object(a))?!function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;)a[e++]=b[d++];if(c!==c)for(;void 0!==b[d];)a[e++]=b[d++];return a.length=e,a}(d,"string"==typeof a?[a]:a):[].push.call(d,a)),d}if(a){d=(d||"fx")+"queue";var g=c.data(a,d);return e?(!g||c.isArray(e)?g=c.data(a,d,f(e)):g.push(e),g):g||[]}},c.dequeue=function(a,b){c.each(a.nodeType?[a]:a,function(a,d){b=b||"fx";var e=c.queue(d,b),f=e.shift();"inprogress"===f&&(f=e.shift()),f&&("fx"===b&&e.unshift("inprogress"),f.call(d,function(){c.dequeue(d,b)}))})},c.fn=c.prototype={init:function(a){if(a.nodeType)return this[0]=a,this;throw new Error("Not a DOM node.")},offset:function(){var b=this[0].getBoundingClientRect?this[0].getBoundingClientRect():{top:0,left:0};return{top:b.top+(a.pageYOffset||document.scrollTop||0)-(document.clientTop||0),left:b.left+(a.pageXOffset||document.scrollLeft||0)-(document.clientLeft||0)}},position:function(){function a(){for(var a=this.offsetParent||document;a&&"html"===!a.nodeType.toLowerCase&&"static"===a.style.position;)a=a.offsetParent;return a||document}var b=this[0],a=a.apply(b),d=this.offset(),e=/^(?:body|html)$/i.test(a.nodeName)?{top:0,left:0}:c(a).offset();return d.top-=parseFloat(b.style.marginTop)||0,d.left-=parseFloat(b.style.marginLeft)||0,a.style&&(e.top+=parseFloat(a.style.borderTopWidth)||0,e.left+=parseFloat(a.style.borderLeftWidth)||0),{top:d.top-e.top,left:d.left-e.left}}};var d={};c.expando="velocity"+(new Date).getTime(),c.uuid=0;for(var e={},f=e.hasOwnProperty,g=e.toString,h="Boolean Number String Function Array Date RegExp Object Error".split(" "),i=0;i<h.length;i++)e["[object "+h[i]+"]"]=h[i].toLowerCase();c.fn.init.prototype=c.fn,a.Velocity={Utilities:c}}}(window),function(a){"object"==typeof module&&"object"==typeof module.exports?module.exports=a():"function"==typeof define&&define.amd?define(a):a()}(function(){return function(a,b,c,d){function e(a){for(var b=-1,c=a?a.length:0,d=[];++b<c;){var e=a[b];e&&d.push(e)}return d}function f(a){return p.isWrapped(a)?a=[].slice.call(a):p.isNode(a)&&(a=[a]),a}function g(a){var b=m.data(a,"velocity");return null===b?d:b}function h(a){return function(b){return Math.round(b*a)*(1/a)}}function i(a,c,d,e){function f(a,b){return 1-3*b+3*a}function g(a,b){return 3*b-6*a}function h(a){return 3*a}function i(a,b,c){return((f(b,c)*a+g(b,c))*a+h(b))*a}function j(a,b,c){return 3*f(b,c)*a*a+2*g(b,c)*a+h(b)}function k(b,c){for(var e=0;p>e;++e){var f=j(c,a,d);if(0===f)return c;var g=i(c,a,d)-b;c-=g/f}return c}function l(){for(var b=0;t>b;++b)x[b]=i(b*u,a,d)}function m(b,c,e){var f,g,h=0;do g=c+(e-c)/2,f=i(g,a,d)-b,f>0?e=g:c=g;while(Math.abs(f)>r&&++h<s);return g}function n(b){for(var c=0,e=1,f=t-1;e!=f&&x[e]<=b;++e)c+=u;--e;var g=(b-x[e])/(x[e+1]-x[e]),h=c+g*u,i=j(h,a,d);return i>=q?k(b,h):0==i?h:m(b,c,c+u)}function o(){y=!0,(a!=c||d!=e)&&l()}var p=4,q=.001,r=1e-7,s=10,t=11,u=1/(t-1),v="Float32Array"in b;if(4!==arguments.length)return!1;for(var w=0;4>w;++w)if("number"!=typeof arguments[w]||isNaN(arguments[w])||!isFinite(arguments[w]))return!1;a=Math.min(a,1),d=Math.min(d,1),a=Math.max(a,0),d=Math.max(d,0);var x=v?new Float32Array(t):new Array(t),y=!1,z=function(b){return y||o(),a===c&&d===e?b:0===b?0:1===b?1:i(n(b),c,e)};z.getControlPoints=function(){return[{x:a,y:c},{x:d,y:e}]};var A="generateBezier("+[a,c,d,e]+")";return z.toString=function(){return A},z}function j(a,b){var c=a;return p.isString(a)?t.Easings[a]||(c=!1):c=p.isArray(a)&&1===a.length?h.apply(null,a):p.isArray(a)&&2===a.length?u.apply(null,a.concat([b])):p.isArray(a)&&4===a.length?i.apply(null,a):!1,c===!1&&(c=t.Easings[t.defaults.easing]?t.defaults.easing:s),c}function k(a){if(a){var b=(new Date).getTime(),c=t.State.calls.length;c>1e4&&(t.State.calls=e(t.State.calls));for(var f=0;c>f;f++)if(t.State.calls[f]){var h=t.State.calls[f],i=h[0],j=h[2],n=h[3],o=!!n,q=null;n||(n=t.State.calls[f][3]=b-16);for(var r=Math.min((b-n)/j.duration,1),s=0,u=i.length;u>s;s++){var w=i[s],y=w.element;if(g(y)){var z=!1;if(j.display!==d&&null!==j.display&&"none"!==j.display){if("flex"===j.display){var A=["-webkit-box","-moz-box","-ms-flexbox","-webkit-flex"];m.each(A,function(a,b){v.setPropertyValue(y,"display",b)})}v.setPropertyValue(y,"display",j.display)}j.visibility!==d&&"hidden"!==j.visibility&&v.setPropertyValue(y,"visibility",j.visibility);for(var B in w)if("element"!==B){var C,D=w[B],E=p.isString(D.easing)?t.Easings[D.easing]:D.easing;if(1===r)C=D.endValue;else{var F=D.endValue-D.startValue;if(C=D.startValue+F*E(r,j,F),!o&&C===D.currentValue)continue}if(D.currentValue=C,"tween"===B)q=C;else{if(v.Hooks.registered[B]){var G=v.Hooks.getRoot(B),H=g(y).rootPropertyValueCache[G];H&&(D.rootPropertyValue=H)}var I=v.setPropertyValue(y,B,D.currentValue+(0===parseFloat(C)?"":D.unitType),D.rootPropertyValue,D.scrollData);v.Hooks.registered[B]&&(g(y).rootPropertyValueCache[G]=v.Normalizations.registered[G]?v.Normalizations.registered[G]("extract",null,I[1]):I[1]),"transform"===I[0]&&(z=!0)}}j.mobileHA&&g(y).transformCache.translate3d===d&&(g(y).transformCache.translate3d="(0px, 0px, 0px)",z=!0),z&&v.flushTransformCache(y)}}j.display!==d&&"none"!==j.display&&(t.State.calls[f][2].display=!1),j.visibility!==d&&"hidden"!==j.visibility&&(t.State.calls[f][2].visibility=!1),j.progress&&j.progress.call(h[1],h[1],r,Math.max(0,n+j.duration-b),n,q),1===r&&l(f)}}t.State.isTicking&&x(k)}function l(a,b){if(!t.State.calls[a])return!1;for(var c=t.State.calls[a][0],e=t.State.calls[a][1],f=t.State.calls[a][2],h=t.State.calls[a][4],i=!1,j=0,k=c.length;k>j;j++){var l=c[j].element;if(b||f.loop||("none"===f.display&&v.setPropertyValue(l,"display",f.display),"hidden"===f.visibility&&v.setPropertyValue(l,"visibility",f.visibility)),f.loop!==!0&&(m.queue(l)[1]===d||!/\.velocityQueueEntryFlag/i.test(m.queue(l)[1]))&&g(l)){g(l).isAnimating=!1,g(l).rootPropertyValueCache={};var n=!1;m.each(v.Lists.transforms3D,function(a,b){var c=/^scale/.test(b)?1:0,e=g(l).transformCache[b];g(l).transformCache[b]!==d&&new RegExp("^\\("+c+"[^.]").test(e)&&(n=!0,delete g(l).transformCache[b])}),f.mobileHA&&(n=!0,delete g(l).transformCache.translate3d),n&&v.flushTransformCache(l),v.Values.removeClass(l,"velocity-animating")}if(!b&&f.complete&&!f.loop&&j===k-1)try{f.complete.call(e,e)}catch(o){setTimeout(function(){throw o},1)}h&&f.loop!==!0&&h(e),g(l)&&f.loop===!0&&!b&&(m.each(g(l).tweensContainer,function(a,b){/^rotate/.test(a)&&360===parseFloat(b.endValue)&&(b.endValue=0,b.startValue=360),/^backgroundPosition/.test(a)&&100===parseFloat(b.endValue)&&"%"===b.unitType&&(b.endValue=0,b.startValue=100)}),t(l,"reverse",{loop:!0,delay:f.delay})),f.queue!==!1&&m.dequeue(l,f.queue)}t.State.calls[a]=!1;for(var p=0,q=t.State.calls.length;q>p;p++)if(t.State.calls[p]!==!1){i=!0;break}i===!1&&(t.State.isTicking=!1,delete t.State.calls,t.State.calls=[])}var m,n=function(){if(c.documentMode)return c.documentMode;for(var a=7;a>4;a--){var b=c.createElement("div");if(b.innerHTML="<!--[if IE "+a+"]><span></span><![endif]-->",b.getElementsByTagName("span").length)return b=null,a}return d}(),o=function(){var a=0;return b.webkitRequestAnimationFrame||b.mozRequestAnimationFrame||function(b){var c,d=(new Date).getTime();return c=Math.max(0,16-(d-a)),a=d+c,setTimeout(function(){b(d+c)},c)}}(),p={isString:function(a){return"string"==typeof a},isArray:Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)},isFunction:function(a){return"[object Function]"===Object.prototype.toString.call(a)},isNode:function(a){return a&&a.nodeType},isNodeList:function(a){return"object"==typeof a&&/^\[object (HTMLCollection|NodeList|Object)\]$/.test(Object.prototype.toString.call(a))&&a.length!==d&&(0===a.length||"object"==typeof a[0]&&a[0].nodeType>0)},isWrapped:function(a){return a&&(a.jquery||b.Zepto&&b.Zepto.zepto.isZ(a))},isSVG:function(a){return b.SVGElement&&a instanceof b.SVGElement},isEmptyObject:function(a){for(var b in a)return!1;return!0}},q=!1;if(a.fn&&a.fn.jquery?(m=a,q=!0):m=b.Velocity.Utilities,8>=n&&!q)throw new Error("Velocity: IE8 and below require jQuery to be loaded before Velocity.");if(7>=n)return void(jQuery.fn.velocity=jQuery.fn.animate);var r=400,s="swing",t={State:{isMobile:/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),isAndroid:/Android/i.test(navigator.userAgent),isGingerbread:/Android 2\.3\.[3-7]/i.test(navigator.userAgent),isChrome:b.chrome,isFirefox:/Firefox/i.test(navigator.userAgent),prefixElement:c.createElement("div"),prefixMatches:{},scrollAnchor:null,scrollPropertyLeft:null,scrollPropertyTop:null,isTicking:!1,calls:[]},CSS:{},Utilities:m,Redirects:{},Easings:{},Promise:b.Promise,defaults:{queue:"",duration:r,easing:s,begin:d,complete:d,progress:d,display:d,visibility:d,loop:!1,delay:!1,mobileHA:!0,_cacheValues:!0},init:function(a){m.data(a,"velocity",{isSVG:p.isSVG(a),isAnimating:!1,computedStyle:null,tweensContainer:null,rootPropertyValueCache:{},transformCache:{}})},hook:null,mock:!1,version:{major:1,minor:2,patch:2},debug:!1};b.pageYOffset!==d?(t.State.scrollAnchor=b,t.State.scrollPropertyLeft="pageXOffset",t.State.scrollPropertyTop="pageYOffset"):(t.State.scrollAnchor=c.documentElement||c.body.parentNode||c.body,t.State.scrollPropertyLeft="scrollLeft",t.State.scrollPropertyTop="scrollTop");var u=function(){function a(a){return-a.tension*a.x-a.friction*a.v}function b(b,c,d){var e={x:b.x+d.dx*c,v:b.v+d.dv*c,tension:b.tension,friction:b.friction};return{dx:e.v,dv:a(e)}}function c(c,d){var e={dx:c.v,dv:a(c)},f=b(c,.5*d,e),g=b(c,.5*d,f),h=b(c,d,g),i=1/6*(e.dx+2*(f.dx+g.dx)+h.dx),j=1/6*(e.dv+2*(f.dv+g.dv)+h.dv);return c.x=c.x+i*d,c.v=c.v+j*d,c}return function d(a,b,e){var f,g,h,i={x:-1,v:0,tension:null,friction:null},j=[0],k=0,l=1e-4,m=.016;for(a=parseFloat(a)||500,b=parseFloat(b)||20,e=e||null,i.tension=a,i.friction=b,f=null!==e,f?(k=d(a,b),g=k/e*m):g=m;h=c(h||i,g),j.push(1+h.x),k+=16,Math.abs(h.x)>l&&Math.abs(h.v)>l;);return f?function(a){return j[a*(j.length-1)|0]}:k}}();t.Easings={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},spring:function(a){return 1-Math.cos(4.5*a*Math.PI)*Math.exp(6*-a)}},m.each([["ease",[.25,.1,.25,1]],["ease-in",[.42,0,1,1]],["ease-out",[0,0,.58,1]],["ease-in-out",[.42,0,.58,1]],["easeInSine",[.47,0,.745,.715]],["easeOutSine",[.39,.575,.565,1]],["easeInOutSine",[.445,.05,.55,.95]],["easeInQuad",[.55,.085,.68,.53]],["easeOutQuad",[.25,.46,.45,.94]],["easeInOutQuad",[.455,.03,.515,.955]],["easeInCubic",[.55,.055,.675,.19]],["easeOutCubic",[.215,.61,.355,1]],["easeInOutCubic",[.645,.045,.355,1]],["easeInQuart",[.895,.03,.685,.22]],["easeOutQuart",[.165,.84,.44,1]],["easeInOutQuart",[.77,0,.175,1]],["easeInQuint",[.755,.05,.855,.06]],["easeOutQuint",[.23,1,.32,1]],["easeInOutQuint",[.86,0,.07,1]],["easeInExpo",[.95,.05,.795,.035]],["easeOutExpo",[.19,1,.22,1]],["easeInOutExpo",[1,0,0,1]],["easeInCirc",[.6,.04,.98,.335]],["easeOutCirc",[.075,.82,.165,1]],["easeInOutCirc",[.785,.135,.15,.86]]],function(a,b){t.Easings[b[0]]=i.apply(null,b[1])});var v=t.CSS={RegEx:{isHex:/^#([A-f\d]{3}){1,2}$/i,valueUnwrap:/^[A-z]+\((.*)\)$/i,wrappedValueAlreadyExtracted:/[0-9.]+ [0-9.]+ [0-9.]+( [0-9.]+)?/,valueSplit:/([A-z]+\(.+\))|(([A-z0-9#-.]+?)(?=\s|$))/gi},Lists:{colors:["fill","stroke","stopColor","color","backgroundColor","borderColor","borderTopColor","borderRightColor","borderBottomColor","borderLeftColor","outlineColor"],transformsBase:["translateX","translateY","scale","scaleX","scaleY","skewX","skewY","rotateZ"],transforms3D:["transformPerspective","translateZ","scaleZ","rotateX","rotateY"]},Hooks:{templates:{textShadow:["Color X Y Blur","black 0px 0px 0px"],boxShadow:["Color X Y Blur Spread","black 0px 0px 0px 0px"],clip:["Top Right Bottom Left","0px 0px 0px 0px"],backgroundPosition:["X Y","0% 0%"],transformOrigin:["X Y Z","50% 50% 0px"],perspectiveOrigin:["X Y","50% 50%"]},registered:{},register:function(){for(var a=0;a<v.Lists.colors.length;a++){var b="color"===v.Lists.colors[a]?"0 0 0 1":"255 255 255 1";v.Hooks.templates[v.Lists.colors[a]]=["Red Green Blue Alpha",b]}var c,d,e;if(n)for(c in v.Hooks.templates){d=v.Hooks.templates[c],e=d[0].split(" ");var f=d[1].match(v.RegEx.valueSplit);"Color"===e[0]&&(e.push(e.shift()),f.push(f.shift()),v.Hooks.templates[c]=[e.join(" "),f.join(" ")])}for(c in v.Hooks.templates){d=v.Hooks.templates[c],e=d[0].split(" ");for(var a in e){var g=c+e[a],h=a;v.Hooks.registered[g]=[c,h]}}},getRoot:function(a){var b=v.Hooks.registered[a];return b?b[0]:a},cleanRootPropertyValue:function(a,b){return v.RegEx.valueUnwrap.test(b)&&(b=b.match(v.RegEx.valueUnwrap)[1]),v.Values.isCSSNullValue(b)&&(b=v.Hooks.templates[a][1]),b},extractValue:function(a,b){var c=v.Hooks.registered[a];if(c){var d=c[0],e=c[1];return b=v.Hooks.cleanRootPropertyValue(d,b),b.toString().match(v.RegEx.valueSplit)[e]}return b},injectValue:function(a,b,c){var d=v.Hooks.registered[a];if(d){var e,f,g=d[0],h=d[1];return c=v.Hooks.cleanRootPropertyValue(g,c),e=c.toString().match(v.RegEx.valueSplit),e[h]=b,f=e.join(" ")}return c}},Normalizations:{registered:{clip:function(a,b,c){switch(a){case"name":return"clip";case"extract":var d;return v.RegEx.wrappedValueAlreadyExtracted.test(c)?d=c:(d=c.toString().match(v.RegEx.valueUnwrap),d=d?d[1].replace(/,(\s+)?/g," "):c),d;case"inject":return"rect("+c+")"}},blur:function(a,b,c){switch(a){case"name":return t.State.isFirefox?"filter":"-webkit-filter";case"extract":var d=parseFloat(c);if(!d&&0!==d){var e=c.toString().match(/blur\(([0-9]+[A-z]+)\)/i);d=e?e[1]:0}return d;case"inject":return parseFloat(c)?"blur("+c+")":"none"}},opacity:function(a,b,c){if(8>=n)switch(a){case"name":return"filter";case"extract":var d=c.toString().match(/alpha\(opacity=(.*)\)/i);return c=d?d[1]/100:1;case"inject":return b.style.zoom=1,parseFloat(c)>=1?"":"alpha(opacity="+parseInt(100*parseFloat(c),10)+")"}else switch(a){case"name":return"opacity";case"extract":return c;case"inject":return c}}},register:function(){9>=n||t.State.isGingerbread||(v.Lists.transformsBase=v.Lists.transformsBase.concat(v.Lists.transforms3D));for(var a=0;a<v.Lists.transformsBase.length;a++)!function(){var b=v.Lists.transformsBase[a];v.Normalizations.registered[b]=function(a,c,e){switch(a){case"name":return"transform";case"extract":return g(c)===d||g(c).transformCache[b]===d?/^scale/i.test(b)?1:0:g(c).transformCache[b].replace(/[()]/g,"");case"inject":var f=!1;switch(b.substr(0,b.length-1)){case"translate":f=!/(%|px|em|rem|vw|vh|\d)$/i.test(e);break;case"scal":case"scale":t.State.isAndroid&&g(c).transformCache[b]===d&&1>e&&(e=1),f=!/(\d)$/i.test(e);break;case"skew":f=!/(deg|\d)$/i.test(e);break;case"rotate":f=!/(deg|\d)$/i.test(e)}return f||(g(c).transformCache[b]="("+e+")"),g(c).transformCache[b]}}}();for(var a=0;a<v.Lists.colors.length;a++)!function(){var b=v.Lists.colors[a];v.Normalizations.registered[b]=function(a,c,e){switch(a){case"name":return b;case"extract":var f;if(v.RegEx.wrappedValueAlreadyExtracted.test(e))f=e;else{var g,h={black:"rgb(0, 0, 0)",blue:"rgb(0, 0, 255)",gray:"rgb(128, 128, 128)",green:"rgb(0, 128, 0)",red:"rgb(255, 0, 0)",white:"rgb(255, 255, 255)"};/^[A-z]+$/i.test(e)?g=h[e]!==d?h[e]:h.black:v.RegEx.isHex.test(e)?g="rgb("+v.Values.hexToRgb(e).join(" ")+")":/^rgba?\(/i.test(e)||(g=h.black),f=(g||e).toString().match(v.RegEx.valueUnwrap)[1].replace(/,(\s+)?/g," ")}return 8>=n||3!==f.split(" ").length||(f+=" 1"),f;case"inject":return 8>=n?4===e.split(" ").length&&(e=e.split(/\s+/).slice(0,3).join(" ")):3===e.split(" ").length&&(e+=" 1"),(8>=n?"rgb":"rgba")+"("+e.replace(/\s+/g,",").replace(/\.(\d)+(?=,)/g,"")+")"}}}()}},Names:{camelCase:function(a){return a.replace(/-(\w)/g,function(a,b){return b.toUpperCase()})},SVGAttribute:function(a){var b="width|height|x|y|cx|cy|r|rx|ry|x1|x2|y1|y2";return(n||t.State.isAndroid&&!t.State.isChrome)&&(b+="|transform"),new RegExp("^("+b+")$","i").test(a)},prefixCheck:function(a){if(t.State.prefixMatches[a])return[t.State.prefixMatches[a],!0];for(var b=["","Webkit","Moz","ms","O"],c=0,d=b.length;d>c;c++){var e;if(e=0===c?a:b[c]+a.replace(/^\w/,function(a){return a.toUpperCase()}),p.isString(t.State.prefixElement.style[e]))return t.State.prefixMatches[a]=e,[e,!0]}return[a,!1]}},Values:{hexToRgb:function(a){var b,c=/^#?([a-f\d])([a-f\d])([a-f\d])$/i,d=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i;return a=a.replace(c,function(a,b,c,d){return b+b+c+c+d+d}),b=d.exec(a),b?[parseInt(b[1],16),parseInt(b[2],16),parseInt(b[3],16)]:[0,0,0]},isCSSNullValue:function(a){return 0==a||/^(none|auto|transparent|(rgba\(0, ?0, ?0, ?0\)))$/i.test(a)},getUnitType:function(a){return/^(rotate|skew)/i.test(a)?"deg":/(^(scale|scaleX|scaleY|scaleZ|alpha|flexGrow|flexHeight|zIndex|fontWeight)$)|((opacity|red|green|blue|alpha)$)/i.test(a)?"":"px"},getDisplayType:function(a){var b=a&&a.tagName.toString().toLowerCase();return/^(b|big|i|small|tt|abbr|acronym|cite|code|dfn|em|kbd|strong|samp|var|a|bdo|br|img|map|object|q|script|span|sub|sup|button|input|label|select|textarea)$/i.test(b)?"inline":/^(li)$/i.test(b)?"list-item":/^(tr)$/i.test(b)?"table-row":/^(table)$/i.test(b)?"table":/^(tbody)$/i.test(b)?"table-row-group":"block"},addClass:function(a,b){a.classList?a.classList.add(b):a.className+=(a.className.length?" ":"")+b},removeClass:function(a,b){a.classList?a.classList.remove(b):a.className=a.className.toString().replace(new RegExp("(^|\\s)"+b.split(" ").join("|")+"(\\s|$)","gi")," ")}},getPropertyValue:function(a,c,e,f){function h(a,c){function e(){j&&v.setPropertyValue(a,"display","none")}var i=0;if(8>=n)i=m.css(a,c);else{var j=!1;if(/^(width|height)$/.test(c)&&0===v.getPropertyValue(a,"display")&&(j=!0,v.setPropertyValue(a,"display",v.Values.getDisplayType(a))),!f){if("height"===c&&"border-box"!==v.getPropertyValue(a,"boxSizing").toString().toLowerCase()){var k=a.offsetHeight-(parseFloat(v.getPropertyValue(a,"borderTopWidth"))||0)-(parseFloat(v.getPropertyValue(a,"borderBottomWidth"))||0)-(parseFloat(v.getPropertyValue(a,"paddingTop"))||0)-(parseFloat(v.getPropertyValue(a,"paddingBottom"))||0);return e(),k}if("width"===c&&"border-box"!==v.getPropertyValue(a,"boxSizing").toString().toLowerCase()){var l=a.offsetWidth-(parseFloat(v.getPropertyValue(a,"borderLeftWidth"))||0)-(parseFloat(v.getPropertyValue(a,"borderRightWidth"))||0)-(parseFloat(v.getPropertyValue(a,"paddingLeft"))||0)-(parseFloat(v.getPropertyValue(a,"paddingRight"))||0);return e(),l}}var o;o=g(a)===d?b.getComputedStyle(a,null):g(a).computedStyle?g(a).computedStyle:g(a).computedStyle=b.getComputedStyle(a,null),"borderColor"===c&&(c="borderTopColor"),i=9===n&&"filter"===c?o.getPropertyValue(c):o[c],(""===i||null===i)&&(i=a.style[c]),e()}if("auto"===i&&/^(top|right|bottom|left)$/i.test(c)){var p=h(a,"position");("fixed"===p||"absolute"===p&&/top|left/i.test(c))&&(i=m(a).position()[c]+"px")}return i}var i;if(v.Hooks.registered[c]){var j=c,k=v.Hooks.getRoot(j);e===d&&(e=v.getPropertyValue(a,v.Names.prefixCheck(k)[0])),v.Normalizations.registered[k]&&(e=v.Normalizations.registered[k]("extract",a,e)),i=v.Hooks.extractValue(j,e)}else if(v.Normalizations.registered[c]){var l,o;l=v.Normalizations.registered[c]("name",a),"transform"!==l&&(o=h(a,v.Names.prefixCheck(l)[0]),v.Values.isCSSNullValue(o)&&v.Hooks.templates[c]&&(o=v.Hooks.templates[c][1])),i=v.Normalizations.registered[c]("extract",a,o)}if(!/^[\d-]/.test(i))if(g(a)&&g(a).isSVG&&v.Names.SVGAttribute(c))if(/^(height|width)$/i.test(c))try{i=a.getBBox()[c]}catch(p){i=0}else i=a.getAttribute(c);else i=h(a,v.Names.prefixCheck(c)[0]);return v.Values.isCSSNullValue(i)&&(i=0),t.debug>=2&&console.log("Get "+c+": "+i),i},setPropertyValue:function(a,c,d,e,f){var h=c;if("scroll"===c)f.container?f.container["scroll"+f.direction]=d:"Left"===f.direction?b.scrollTo(d,f.alternateValue):b.scrollTo(f.alternateValue,d);else if(v.Normalizations.registered[c]&&"transform"===v.Normalizations.registered[c]("name",a))v.Normalizations.registered[c]("inject",a,d),h="transform",d=g(a).transformCache[c];else{if(v.Hooks.registered[c]){var i=c,j=v.Hooks.getRoot(c);e=e||v.getPropertyValue(a,j),d=v.Hooks.injectValue(i,d,e),c=j}if(v.Normalizations.registered[c]&&(d=v.Normalizations.registered[c]("inject",a,d),c=v.Normalizations.registered[c]("name",a)),h=v.Names.prefixCheck(c)[0],8>=n)try{a.style[h]=d}catch(k){t.debug&&console.log("Browser does not support ["+d+"] for ["+h+"]")}else g(a)&&g(a).isSVG&&v.Names.SVGAttribute(c)?a.setAttribute(c,d):a.style[h]=d;t.debug>=2&&console.log("Set "+c+" ("+h+"): "+d)}return[h,d]},flushTransformCache:function(a){function b(b){return parseFloat(v.getPropertyValue(a,b))}var c="";if((n||t.State.isAndroid&&!t.State.isChrome)&&g(a).isSVG){var d={translate:[b("translateX"),b("translateY")],skewX:[b("skewX")],skewY:[b("skewY")],scale:1!==b("scale")?[b("scale"),b("scale")]:[b("scaleX"),b("scaleY")],rotate:[b("rotateZ"),0,0]};m.each(g(a).transformCache,function(a){/^translate/i.test(a)?a="translate":/^scale/i.test(a)?a="scale":/^rotate/i.test(a)&&(a="rotate"),d[a]&&(c+=a+"("+d[a].join(" ")+") ",delete d[a])})}else{var e,f;m.each(g(a).transformCache,function(b){return e=g(a).transformCache[b],"transformPerspective"===b?(f=e,!0):(9===n&&"rotateZ"===b&&(b="rotate"),void(c+=b+e+" "))}),f&&(c="perspective"+f+" "+c)}v.setPropertyValue(a,"transform",c)}};v.Hooks.register(),v.Normalizations.register(),t.hook=function(a,b,c){var e=d;return a=f(a),m.each(a,function(a,f){if(g(f)===d&&t.init(f),c===d)e===d&&(e=t.CSS.getPropertyValue(f,b));else{var h=t.CSS.setPropertyValue(f,b,c);"transform"===h[0]&&t.CSS.flushTransformCache(f),e=h}}),e};var w=function(){function a(){return h?B.promise||null:i}function e(){function a(a){function l(a,b){var c=d,e=d,g=d;return p.isArray(a)?(c=a[0],!p.isArray(a[1])&&/^[\d-]/.test(a[1])||p.isFunction(a[1])||v.RegEx.isHex.test(a[1])?g=a[1]:(p.isString(a[1])&&!v.RegEx.isHex.test(a[1])||p.isArray(a[1]))&&(e=b?a[1]:j(a[1],h.duration),a[2]!==d&&(g=a[2]))):c=a,b||(e=e||h.easing),p.isFunction(c)&&(c=c.call(f,y,x)),p.isFunction(g)&&(g=g.call(f,y,x)),[c||0,e,g]}function n(a,b){var c,d;return d=(b||"0").toString().toLowerCase().replace(/[%A-z]+$/,function(a){return c=a,""}),c||(c=v.Values.getUnitType(a)),[d,c]}function r(){var a={myParent:f.parentNode||c.body,position:v.getPropertyValue(f,"position"),fontSize:v.getPropertyValue(f,"fontSize")},d=a.position===I.lastPosition&&a.myParent===I.lastParent,e=a.fontSize===I.lastFontSize;I.lastParent=a.myParent,I.lastPosition=a.position,I.lastFontSize=a.fontSize;var h=100,i={};if(e&&d)i.emToPx=I.lastEmToPx,i.percentToPxWidth=I.lastPercentToPxWidth,i.percentToPxHeight=I.lastPercentToPxHeight;else{var j=g(f).isSVG?c.createElementNS("http://www.w3.org/2000/svg","rect"):c.createElement("div");t.init(j),a.myParent.appendChild(j),m.each(["overflow","overflowX","overflowY"],function(a,b){t.CSS.setPropertyValue(j,b,"hidden")}),t.CSS.setPropertyValue(j,"position",a.position),t.CSS.setPropertyValue(j,"fontSize",a.fontSize),t.CSS.setPropertyValue(j,"boxSizing","content-box"),m.each(["minWidth","maxWidth","width","minHeight","maxHeight","height"],function(a,b){t.CSS.setPropertyValue(j,b,h+"%")}),t.CSS.setPropertyValue(j,"paddingLeft",h+"em"),i.percentToPxWidth=I.lastPercentToPxWidth=(parseFloat(v.getPropertyValue(j,"width",null,!0))||1)/h,i.percentToPxHeight=I.lastPercentToPxHeight=(parseFloat(v.getPropertyValue(j,"height",null,!0))||1)/h,i.emToPx=I.lastEmToPx=(parseFloat(v.getPropertyValue(j,"paddingLeft"))||1)/h,a.myParent.removeChild(j)}return null===I.remToPx&&(I.remToPx=parseFloat(v.getPropertyValue(c.body,"fontSize"))||16),null===I.vwToPx&&(I.vwToPx=parseFloat(b.innerWidth)/100,I.vhToPx=parseFloat(b.innerHeight)/100),i.remToPx=I.remToPx,i.vwToPx=I.vwToPx,i.vhToPx=I.vhToPx,t.debug>=1&&console.log("Unit ratios: "+JSON.stringify(i),f),i}if(h.begin&&0===y)try{h.begin.call(o,o)}catch(u){setTimeout(function(){throw u},1)}if("scroll"===C){var w,z,A,D=/^x$/i.test(h.axis)?"Left":"Top",E=parseFloat(h.offset)||0;h.container?p.isWrapped(h.container)||p.isNode(h.container)?(h.container=h.container[0]||h.container,w=h.container["scroll"+D],A=w+m(f).position()[D.toLowerCase()]+E):h.container=null:(w=t.State.scrollAnchor[t.State["scrollProperty"+D]],z=t.State.scrollAnchor[t.State["scrollProperty"+("Left"===D?"Top":"Left")]],A=m(f).offset()[D.toLowerCase()]+E),i={scroll:{rootPropertyValue:!1,startValue:w,currentValue:w,endValue:A,unitType:"",easing:h.easing,scrollData:{container:h.container,direction:D,alternateValue:z}},element:f},t.debug&&console.log("tweensContainer (scroll): ",i.scroll,f)}else if("reverse"===C){if(!g(f).tweensContainer)return void m.dequeue(f,h.queue);"none"===g(f).opts.display&&(g(f).opts.display="auto"),"hidden"===g(f).opts.visibility&&(g(f).opts.visibility="visible"),g(f).opts.loop=!1,g(f).opts.begin=null,g(f).opts.complete=null,s.easing||delete h.easing,s.duration||delete h.duration,h=m.extend({},g(f).opts,h);var F=m.extend(!0,{},g(f).tweensContainer);for(var G in F)if("element"!==G){var H=F[G].startValue;F[G].startValue=F[G].currentValue=F[G].endValue,F[G].endValue=H,p.isEmptyObject(s)||(F[G].easing=h.easing),t.debug&&console.log("reverse tweensContainer ("+G+"): "+JSON.stringify(F[G]),f)}i=F}else if("start"===C){var F;g(f).tweensContainer&&g(f).isAnimating===!0&&(F=g(f).tweensContainer),m.each(q,function(a,b){if(RegExp("^"+v.Lists.colors.join("$|^")+"$").test(a)){var c=l(b,!0),e=c[0],f=c[1],g=c[2];if(v.RegEx.isHex.test(e)){for(var h=["Red","Green","Blue"],i=v.Values.hexToRgb(e),j=g?v.Values.hexToRgb(g):d,k=0;k<h.length;k++){var m=[i[k]];f&&m.push(f),j!==d&&m.push(j[k]),q[a+h[k]]=m}delete q[a]}}});for(var K in q){var L=l(q[K]),M=L[0],N=L[1],O=L[2];K=v.Names.camelCase(K);var P=v.Hooks.getRoot(K),Q=!1;if(g(f).isSVG||"tween"===P||v.Names.prefixCheck(P)[1]!==!1||v.Normalizations.registered[P]!==d){(h.display!==d&&null!==h.display&&"none"!==h.display||h.visibility!==d&&"hidden"!==h.visibility)&&/opacity|filter/.test(K)&&!O&&0!==M&&(O=0),h._cacheValues&&F&&F[K]?(O===d&&(O=F[K].endValue+F[K].unitType),Q=g(f).rootPropertyValueCache[P]):v.Hooks.registered[K]?O===d?(Q=v.getPropertyValue(f,P),O=v.getPropertyValue(f,K,Q)):Q=v.Hooks.templates[P][1]:O===d&&(O=v.getPropertyValue(f,K));var R,S,T,U=!1;if(R=n(K,O),O=R[0],T=R[1],R=n(K,M),M=R[0].replace(/^([+-\/*])=/,function(a,b){return U=b,""}),S=R[1],O=parseFloat(O)||0,M=parseFloat(M)||0,"%"===S&&(/^(fontSize|lineHeight)$/.test(K)?(M/=100,S="em"):/^scale/.test(K)?(M/=100,S=""):/(Red|Green|Blue)$/i.test(K)&&(M=M/100*255,S="")),/[\/*]/.test(U))S=T;else if(T!==S&&0!==O)if(0===M)S=T;else{e=e||r();var V=/margin|padding|left|right|width|text|word|letter/i.test(K)||/X$/.test(K)||"x"===K?"x":"y";switch(T){case"%":O*="x"===V?e.percentToPxWidth:e.percentToPxHeight;break;case"px":break;default:O*=e[T+"ToPx"]}switch(S){case"%":O*=1/("x"===V?e.percentToPxWidth:e.percentToPxHeight);break;case"px":break;default: | ||
7 | O*=1/e[S+"ToPx"]}}switch(U){case"+":M=O+M;break;case"-":M=O-M;break;case"*":M=O*M;break;case"/":M=O/M}i[K]={rootPropertyValue:Q,startValue:O,currentValue:O,endValue:M,unitType:S,easing:N},t.debug&&console.log("tweensContainer ("+K+"): "+JSON.stringify(i[K]),f)}else t.debug&&console.log("Skipping ["+P+"] due to a lack of browser support.")}i.element=f}i.element&&(v.Values.addClass(f,"velocity-animating"),J.push(i),""===h.queue&&(g(f).tweensContainer=i,g(f).opts=h),g(f).isAnimating=!0,y===x-1?(t.State.calls.push([J,o,h,null,B.resolver]),t.State.isTicking===!1&&(t.State.isTicking=!0,k())):y++)}var e,f=this,h=m.extend({},t.defaults,s),i={};switch(g(f)===d&&t.init(f),parseFloat(h.delay)&&h.queue!==!1&&m.queue(f,h.queue,function(a){t.velocityQueueEntryFlag=!0,g(f).delayTimer={setTimeout:setTimeout(a,parseFloat(h.delay)),next:a}}),h.duration.toString().toLowerCase()){case"fast":h.duration=200;break;case"normal":h.duration=r;break;case"slow":h.duration=600;break;default:h.duration=parseFloat(h.duration)||1}t.mock!==!1&&(t.mock===!0?h.duration=h.delay=1:(h.duration*=parseFloat(t.mock)||1,h.delay*=parseFloat(t.mock)||1)),h.easing=j(h.easing,h.duration),h.begin&&!p.isFunction(h.begin)&&(h.begin=null),h.progress&&!p.isFunction(h.progress)&&(h.progress=null),h.complete&&!p.isFunction(h.complete)&&(h.complete=null),h.display!==d&&null!==h.display&&(h.display=h.display.toString().toLowerCase(),"auto"===h.display&&(h.display=t.CSS.Values.getDisplayType(f))),h.visibility!==d&&null!==h.visibility&&(h.visibility=h.visibility.toString().toLowerCase()),h.mobileHA=h.mobileHA&&t.State.isMobile&&!t.State.isGingerbread,h.queue===!1?h.delay?setTimeout(a,h.delay):a():m.queue(f,h.queue,function(b,c){return c===!0?(B.promise&&B.resolver(o),!0):(t.velocityQueueEntryFlag=!0,void a(b))}),""!==h.queue&&"fx"!==h.queue||"inprogress"===m.queue(f)[0]||m.dequeue(f)}var h,i,n,o,q,s,u=arguments[0]&&(arguments[0].p||m.isPlainObject(arguments[0].properties)&&!arguments[0].properties.names||p.isString(arguments[0].properties));if(p.isWrapped(this)?(h=!1,n=0,o=this,i=this):(h=!0,n=1,o=u?arguments[0].elements||arguments[0].e:arguments[0]),o=f(o)){u?(q=arguments[0].properties||arguments[0].p,s=arguments[0].options||arguments[0].o):(q=arguments[n],s=arguments[n+1]);var x=o.length,y=0;if(!/^(stop|finish)$/i.test(q)&&!m.isPlainObject(s)){var z=n+1;s={};for(var A=z;A<arguments.length;A++)p.isArray(arguments[A])||!/^(fast|normal|slow)$/i.test(arguments[A])&&!/^\d/.test(arguments[A])?p.isString(arguments[A])||p.isArray(arguments[A])?s.easing=arguments[A]:p.isFunction(arguments[A])&&(s.complete=arguments[A]):s.duration=arguments[A]}var B={promise:null,resolver:null,rejecter:null};h&&t.Promise&&(B.promise=new t.Promise(function(a,b){B.resolver=a,B.rejecter=b}));var C;switch(q){case"scroll":C="scroll";break;case"reverse":C="reverse";break;case"finish":case"stop":m.each(o,function(a,b){g(b)&&g(b).delayTimer&&(clearTimeout(g(b).delayTimer.setTimeout),g(b).delayTimer.next&&g(b).delayTimer.next(),delete g(b).delayTimer)});var D=[];return m.each(t.State.calls,function(a,b){b&&m.each(b[1],function(c,e){var f=s===d?"":s;return f===!0||b[2].queue===f||s===d&&b[2].queue===!1?void m.each(o,function(c,d){d===e&&((s===!0||p.isString(s))&&(m.each(m.queue(d,p.isString(s)?s:""),function(a,b){p.isFunction(b)&&b(null,!0)}),m.queue(d,p.isString(s)?s:"",[])),"stop"===q?(g(d)&&g(d).tweensContainer&&f!==!1&&m.each(g(d).tweensContainer,function(a,b){b.endValue=b.currentValue}),D.push(a)):"finish"===q&&(b[2].duration=1))}):!0})}),"stop"===q&&(m.each(D,function(a,b){l(b,!0)}),B.promise&&B.resolver(o)),a();default:if(!m.isPlainObject(q)||p.isEmptyObject(q)){if(p.isString(q)&&t.Redirects[q]){var E=m.extend({},s),F=E.duration,G=E.delay||0;return E.backwards===!0&&(o=m.extend(!0,[],o).reverse()),m.each(o,function(a,b){parseFloat(E.stagger)?E.delay=G+parseFloat(E.stagger)*a:p.isFunction(E.stagger)&&(E.delay=G+E.stagger.call(b,a,x)),E.drag&&(E.duration=parseFloat(F)||(/^(callout|transition)/.test(q)?1e3:r),E.duration=Math.max(E.duration*(E.backwards?1-a/x:(a+1)/x),.75*E.duration,200)),t.Redirects[q].call(b,b,E||{},a,x,o,B.promise?B:d)}),a()}var H="Velocity: First argument ("+q+") was not a property map, a known action, or a registered redirect. Aborting.";return B.promise?B.rejecter(new Error(H)):console.log(H),a()}C="start"}var I={lastParent:null,lastPosition:null,lastFontSize:null,lastPercentToPxWidth:null,lastPercentToPxHeight:null,lastEmToPx:null,remToPx:null,vwToPx:null,vhToPx:null},J=[];m.each(o,function(a,b){p.isNode(b)&&e.call(b)});var K,E=m.extend({},t.defaults,s);if(E.loop=parseInt(E.loop),K=2*E.loop-1,E.loop)for(var L=0;K>L;L++){var M={delay:E.delay,progress:E.progress};L===K-1&&(M.display=E.display,M.visibility=E.visibility,M.complete=E.complete),w(o,"reverse",M)}return a()}};t=m.extend(w,t),t.animate=w;var x=b.requestAnimationFrame||o;return t.State.isMobile||c.hidden===d||c.addEventListener("visibilitychange",function(){c.hidden?(x=function(a){return setTimeout(function(){a(!0)},16)},k()):x=b.requestAnimationFrame||o}),a.Velocity=t,a!==b&&(a.fn.velocity=w,a.fn.velocity.defaults=t.defaults),m.each(["Down","Up"],function(a,b){t.Redirects["slide"+b]=function(a,c,e,f,g,h){var i=m.extend({},c),j=i.begin,k=i.complete,l={height:"",marginTop:"",marginBottom:"",paddingTop:"",paddingBottom:""},n={};i.display===d&&(i.display="Down"===b?"inline"===t.CSS.Values.getDisplayType(a)?"inline-block":"block":"none"),i.begin=function(){j&&j.call(g,g);for(var c in l){n[c]=a.style[c];var d=t.CSS.getPropertyValue(a,c);l[c]="Down"===b?[d,0]:[0,d]}n.overflow=a.style.overflow,a.style.overflow="hidden"},i.complete=function(){for(var b in n)a.style[b]=n[b];k&&k.call(g,g),h&&h.resolver(g)},t(a,l,i)}}),m.each(["In","Out"],function(a,b){t.Redirects["fade"+b]=function(a,c,e,f,g,h){var i=m.extend({},c),j={opacity:"In"===b?1:0},k=i.complete;i.complete=e!==f-1?i.begin=null:function(){k&&k.call(g,g),h&&h.resolver(g)},i.display===d&&(i.display="In"===b?"auto":"none"),t(this,j,i)}}),t}(window.jQuery||window.Zepto||window,window,document)}),!function(a,b,c,d){"use strict";function e(a,b,c){return setTimeout(k(a,c),b)}function f(a,b,c){return Array.isArray(a)?(g(a,c[b],c),!0):!1}function g(a,b,c){var e;if(a)if(a.forEach)a.forEach(b,c);else if(a.length!==d)for(e=0;e<a.length;)b.call(c,a[e],e,a),e++;else for(e in a)a.hasOwnProperty(e)&&b.call(c,a[e],e,a)}function h(a,b,c){for(var e=Object.keys(b),f=0;f<e.length;)(!c||c&&a[e[f]]===d)&&(a[e[f]]=b[e[f]]),f++;return a}function i(a,b){return h(a,b,!0)}function j(a,b,c){var d,e=b.prototype;d=a.prototype=Object.create(e),d.constructor=a,d._super=e,c&&h(d,c)}function k(a,b){return function(){return a.apply(b,arguments)}}function l(a,b){return typeof a==ka?a.apply(b?b[0]||d:d,b):a}function m(a,b){return a===d?b:a}function n(a,b,c){g(r(b),function(b){a.addEventListener(b,c,!1)})}function o(a,b,c){g(r(b),function(b){a.removeEventListener(b,c,!1)})}function p(a,b){for(;a;){if(a==b)return!0;a=a.parentNode}return!1}function q(a,b){return a.indexOf(b)>-1}function r(a){return a.trim().split(/\s+/g)}function s(a,b,c){if(a.indexOf&&!c)return a.indexOf(b);for(var d=0;d<a.length;){if(c&&a[d][c]==b||!c&&a[d]===b)return d;d++}return-1}function t(a){return Array.prototype.slice.call(a,0)}function u(a,b,c){for(var d=[],e=[],f=0;f<a.length;){var g=b?a[f][b]:a[f];s(e,g)<0&&d.push(a[f]),e[f]=g,f++}return c&&(d=b?d.sort(function(a,c){return a[b]>c[b]}):d.sort()),d}function v(a,b){for(var c,e,f=b[0].toUpperCase()+b.slice(1),g=0;g<ia.length;){if(c=ia[g],e=c?c+f:b,e in a)return e;g++}return d}function w(){return oa++}function x(a){var b=a.ownerDocument;return b.defaultView||b.parentWindow}function y(a,b){var c=this;this.manager=a,this.callback=b,this.element=a.element,this.target=a.options.inputTarget,this.domHandler=function(b){l(a.options.enable,[a])&&c.handler(b)},this.init()}function z(a){var b,c=a.options.inputClass;return new(b=c?c:ra?N:sa?Q:qa?S:M)(a,A)}function A(a,b,c){var d=c.pointers.length,e=c.changedPointers.length,f=b&ya&&0===d-e,g=b&(Aa|Ba)&&0===d-e;c.isFirst=!!f,c.isFinal=!!g,f&&(a.session={}),c.eventType=b,B(a,c),a.emit("hammer.input",c),a.recognize(c),a.session.prevInput=c}function B(a,b){var c=a.session,d=b.pointers,e=d.length;c.firstInput||(c.firstInput=E(b)),e>1&&!c.firstMultiple?c.firstMultiple=E(b):1===e&&(c.firstMultiple=!1);var f=c.firstInput,g=c.firstMultiple,h=g?g.center:f.center,i=b.center=F(d);b.timeStamp=na(),b.deltaTime=b.timeStamp-f.timeStamp,b.angle=J(h,i),b.distance=I(h,i),C(c,b),b.offsetDirection=H(b.deltaX,b.deltaY),b.scale=g?L(g.pointers,d):1,b.rotation=g?K(g.pointers,d):0,D(c,b);var j=a.element;p(b.srcEvent.target,j)&&(j=b.srcEvent.target),b.target=j}function C(a,b){var c=b.center,d=a.offsetDelta||{},e=a.prevDelta||{},f=a.prevInput||{};(b.eventType===ya||f.eventType===Aa)&&(e=a.prevDelta={x:f.deltaX||0,y:f.deltaY||0},d=a.offsetDelta={x:c.x,y:c.y}),b.deltaX=e.x+(c.x-d.x),b.deltaY=e.y+(c.y-d.y)}function D(a,b){var c,e,f,g,h=a.lastInterval||b,i=b.timeStamp-h.timeStamp;if(b.eventType!=Ba&&(i>xa||h.velocity===d)){var j=h.deltaX-b.deltaX,k=h.deltaY-b.deltaY,l=G(i,j,k);e=l.x,f=l.y,c=ma(l.x)>ma(l.y)?l.x:l.y,g=H(j,k),a.lastInterval=b}else c=h.velocity,e=h.velocityX,f=h.velocityY,g=h.direction;b.velocity=c,b.velocityX=e,b.velocityY=f,b.direction=g}function E(a){for(var b=[],c=0;c<a.pointers.length;)b[c]={clientX:la(a.pointers[c].clientX),clientY:la(a.pointers[c].clientY)},c++;return{timeStamp:na(),pointers:b,center:F(b),deltaX:a.deltaX,deltaY:a.deltaY}}function F(a){var b=a.length;if(1===b)return{x:la(a[0].clientX),y:la(a[0].clientY)};for(var c=0,d=0,e=0;b>e;)c+=a[e].clientX,d+=a[e].clientY,e++;return{x:la(c/b),y:la(d/b)}}function G(a,b,c){return{x:b/a||0,y:c/a||0}}function H(a,b){return a===b?Ca:ma(a)>=ma(b)?a>0?Da:Ea:b>0?Fa:Ga}function I(a,b,c){c||(c=Ka);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return Math.sqrt(d*d+e*e)}function J(a,b,c){c||(c=Ka);var d=b[c[0]]-a[c[0]],e=b[c[1]]-a[c[1]];return 180*Math.atan2(e,d)/Math.PI}function K(a,b){return J(b[1],b[0],La)-J(a[1],a[0],La)}function L(a,b){return I(b[0],b[1],La)/I(a[0],a[1],La)}function M(){this.evEl=Na,this.evWin=Oa,this.allow=!0,this.pressed=!1,y.apply(this,arguments)}function N(){this.evEl=Ra,this.evWin=Sa,y.apply(this,arguments),this.store=this.manager.session.pointerEvents=[]}function O(){this.evTarget=Ua,this.evWin=Va,this.started=!1,y.apply(this,arguments)}function P(a,b){var c=t(a.touches),d=t(a.changedTouches);return b&(Aa|Ba)&&(c=u(c.concat(d),"identifier",!0)),[c,d]}function Q(){this.evTarget=Xa,this.targetIds={},y.apply(this,arguments)}function R(a,b){var c=t(a.touches),d=this.targetIds;if(b&(ya|za)&&1===c.length)return d[c[0].identifier]=!0,[c,c];var e,f,g=t(a.changedTouches),h=[],i=this.target;if(f=c.filter(function(a){return p(a.target,i)}),b===ya)for(e=0;e<f.length;)d[f[e].identifier]=!0,e++;for(e=0;e<g.length;)d[g[e].identifier]&&h.push(g[e]),b&(Aa|Ba)&&delete d[g[e].identifier],e++;return h.length?[u(f.concat(h),"identifier",!0),h]:void 0}function S(){y.apply(this,arguments);var a=k(this.handler,this);this.touch=new Q(this.manager,a),this.mouse=new M(this.manager,a)}function T(a,b){this.manager=a,this.set(b)}function U(a){if(q(a,bb))return bb;var b=q(a,cb),c=q(a,db);return b&&c?cb+" "+db:b||c?b?cb:db:q(a,ab)?ab:_a}function V(a){this.id=w(),this.manager=null,this.options=i(a||{},this.defaults),this.options.enable=m(this.options.enable,!0),this.state=eb,this.simultaneous={},this.requireFail=[]}function W(a){return a&jb?"cancel":a&hb?"end":a&gb?"move":a&fb?"start":""}function X(a){return a==Ga?"down":a==Fa?"up":a==Da?"left":a==Ea?"right":""}function Y(a,b){var c=b.manager;return c?c.get(a):a}function Z(){V.apply(this,arguments)}function $(){Z.apply(this,arguments),this.pX=null,this.pY=null}function _(){Z.apply(this,arguments)}function aa(){V.apply(this,arguments),this._timer=null,this._input=null}function ba(){Z.apply(this,arguments)}function ca(){Z.apply(this,arguments)}function da(){V.apply(this,arguments),this.pTime=!1,this.pCenter=!1,this._timer=null,this._input=null,this.count=0}function ea(a,b){return b=b||{},b.recognizers=m(b.recognizers,ea.defaults.preset),new fa(a,b)}function fa(a,b){b=b||{},this.options=i(b,ea.defaults),this.options.inputTarget=this.options.inputTarget||a,this.handlers={},this.session={},this.recognizers=[],this.element=a,this.input=z(this),this.touchAction=new T(this,this.options.touchAction),ga(this,!0),g(b.recognizers,function(a){var b=this.add(new a[0](a[1]));a[2]&&b.recognizeWith(a[2]),a[3]&&b.requireFailure(a[3])},this)}function ga(a,b){var c=a.element;g(a.options.cssProps,function(a,d){c.style[v(c.style,d)]=b?a:""})}function ha(a,c){var d=b.createEvent("Event");d.initEvent(a,!0,!0),d.gesture=c,c.target.dispatchEvent(d)}var ia=["","webkit","moz","MS","ms","o"],ja=b.createElement("div"),ka="function",la=Math.round,ma=Math.abs,na=Date.now,oa=1,pa=/mobile|tablet|ip(ad|hone|od)|android/i,qa="ontouchstart"in a,ra=v(a,"PointerEvent")!==d,sa=qa&&pa.test(navigator.userAgent),ta="touch",ua="pen",va="mouse",wa="kinect",xa=25,ya=1,za=2,Aa=4,Ba=8,Ca=1,Da=2,Ea=4,Fa=8,Ga=16,Ha=Da|Ea,Ia=Fa|Ga,Ja=Ha|Ia,Ka=["x","y"],La=["clientX","clientY"];y.prototype={handler:function(){},init:function(){this.evEl&&n(this.element,this.evEl,this.domHandler),this.evTarget&&n(this.target,this.evTarget,this.domHandler),this.evWin&&n(x(this.element),this.evWin,this.domHandler)},destroy:function(){this.evEl&&o(this.element,this.evEl,this.domHandler),this.evTarget&&o(this.target,this.evTarget,this.domHandler),this.evWin&&o(x(this.element),this.evWin,this.domHandler)}};var Ma={mousedown:ya,mousemove:za,mouseup:Aa},Na="mousedown",Oa="mousemove mouseup";j(M,y,{handler:function(a){var b=Ma[a.type];b&ya&&0===a.button&&(this.pressed=!0),b&za&&1!==a.which&&(b=Aa),this.pressed&&this.allow&&(b&Aa&&(this.pressed=!1),this.callback(this.manager,b,{pointers:[a],changedPointers:[a],pointerType:va,srcEvent:a}))}});var Pa={pointerdown:ya,pointermove:za,pointerup:Aa,pointercancel:Ba,pointerout:Ba},Qa={2:ta,3:ua,4:va,5:wa},Ra="pointerdown",Sa="pointermove pointerup pointercancel";a.MSPointerEvent&&(Ra="MSPointerDown",Sa="MSPointerMove MSPointerUp MSPointerCancel"),j(N,y,{handler:function(a){var b=this.store,c=!1,d=a.type.toLowerCase().replace("ms",""),e=Pa[d],f=Qa[a.pointerType]||a.pointerType,g=f==ta,h=s(b,a.pointerId,"pointerId");e&ya&&(0===a.button||g)?0>h&&(b.push(a),h=b.length-1):e&(Aa|Ba)&&(c=!0),0>h||(b[h]=a,this.callback(this.manager,e,{pointers:b,changedPointers:[a],pointerType:f,srcEvent:a}),c&&b.splice(h,1))}});var Ta={touchstart:ya,touchmove:za,touchend:Aa,touchcancel:Ba},Ua="touchstart",Va="touchstart touchmove touchend touchcancel";j(O,y,{handler:function(a){var b=Ta[a.type];if(b===ya&&(this.started=!0),this.started){var c=P.call(this,a,b);b&(Aa|Ba)&&0===c[0].length-c[1].length&&(this.started=!1),this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:ta,srcEvent:a})}}});var Wa={touchstart:ya,touchmove:za,touchend:Aa,touchcancel:Ba},Xa="touchstart touchmove touchend touchcancel";j(Q,y,{handler:function(a){var b=Wa[a.type],c=R.call(this,a,b);c&&this.callback(this.manager,b,{pointers:c[0],changedPointers:c[1],pointerType:ta,srcEvent:a})}}),j(S,y,{handler:function(a,b,c){var d=c.pointerType==ta,e=c.pointerType==va;if(d)this.mouse.allow=!1;else if(e&&!this.mouse.allow)return;b&(Aa|Ba)&&(this.mouse.allow=!0),this.callback(a,b,c)},destroy:function(){this.touch.destroy(),this.mouse.destroy()}});var Ya=v(ja.style,"touchAction"),Za=Ya!==d,$a="compute",_a="auto",ab="manipulation",bb="none",cb="pan-x",db="pan-y";T.prototype={set:function(a){a==$a&&(a=this.compute()),Za&&(this.manager.element.style[Ya]=a),this.actions=a.toLowerCase().trim()},update:function(){this.set(this.manager.options.touchAction)},compute:function(){var a=[];return g(this.manager.recognizers,function(b){l(b.options.enable,[b])&&(a=a.concat(b.getTouchAction()))}),U(a.join(" "))},preventDefaults:function(a){if(!Za){var b=a.srcEvent,c=a.offsetDirection;if(this.manager.session.prevented)return void b.preventDefault();var d=this.actions,e=q(d,bb),f=q(d,db),g=q(d,cb);return e||f&&c&Ha||g&&c&Ia?this.preventSrc(b):void 0}},preventSrc:function(a){this.manager.session.prevented=!0,a.preventDefault()}};var eb=1,fb=2,gb=4,hb=8,ib=hb,jb=16,kb=32;V.prototype={defaults:{},set:function(a){return h(this.options,a),this.manager&&this.manager.touchAction.update(),this},recognizeWith:function(a){if(f(a,"recognizeWith",this))return this;var b=this.simultaneous;return a=Y(a,this),b[a.id]||(b[a.id]=a,a.recognizeWith(this)),this},dropRecognizeWith:function(a){return f(a,"dropRecognizeWith",this)?this:(a=Y(a,this),delete this.simultaneous[a.id],this)},requireFailure:function(a){if(f(a,"requireFailure",this))return this;var b=this.requireFail;return a=Y(a,this),-1===s(b,a)&&(b.push(a),a.requireFailure(this)),this},dropRequireFailure:function(a){if(f(a,"dropRequireFailure",this))return this;a=Y(a,this);var b=s(this.requireFail,a);return b>-1&&this.requireFail.splice(b,1),this},hasRequireFailures:function(){return this.requireFail.length>0},canRecognizeWith:function(a){return!!this.simultaneous[a.id]},emit:function(a){function b(b){c.manager.emit(c.options.event+(b?W(d):""),a)}var c=this,d=this.state;hb>d&&b(!0),b(),d>=hb&&b(!0)},tryEmit:function(a){return this.canEmit()?this.emit(a):void(this.state=kb)},canEmit:function(){for(var a=0;a<this.requireFail.length;){if(!(this.requireFail[a].state&(kb|eb)))return!1;a++}return!0},recognize:function(a){var b=h({},a);return l(this.options.enable,[this,b])?(this.state&(ib|jb|kb)&&(this.state=eb),this.state=this.process(b),void(this.state&(fb|gb|hb|jb)&&this.tryEmit(b))):(this.reset(),void(this.state=kb))},process:function(){},getTouchAction:function(){},reset:function(){}},j(Z,V,{defaults:{pointers:1},attrTest:function(a){var b=this.options.pointers;return 0===b||a.pointers.length===b},process:function(a){var b=this.state,c=a.eventType,d=b&(fb|gb),e=this.attrTest(a);return d&&(c&Ba||!e)?b|jb:d||e?c&Aa?b|hb:b&fb?b|gb:fb:kb}}),j($,Z,{defaults:{event:"pan",threshold:10,pointers:1,direction:Ja},getTouchAction:function(){var a=this.options.direction,b=[];return a&Ha&&b.push(db),a&Ia&&b.push(cb),b},directionTest:function(a){var b=this.options,c=!0,d=a.distance,e=a.direction,f=a.deltaX,g=a.deltaY;return e&b.direction||(b.direction&Ha?(e=0===f?Ca:0>f?Da:Ea,c=f!=this.pX,d=Math.abs(a.deltaX)):(e=0===g?Ca:0>g?Fa:Ga,c=g!=this.pY,d=Math.abs(a.deltaY))),a.direction=e,c&&d>b.threshold&&e&b.direction},attrTest:function(a){return Z.prototype.attrTest.call(this,a)&&(this.state&fb||!(this.state&fb)&&this.directionTest(a))},emit:function(a){this.pX=a.deltaX,this.pY=a.deltaY;var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this._super.emit.call(this,a)}}),j(_,Z,{defaults:{event:"pinch",threshold:0,pointers:2},getTouchAction:function(){return[bb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.scale-1)>this.options.threshold||this.state&fb)},emit:function(a){if(this._super.emit.call(this,a),1!==a.scale){var b=a.scale<1?"in":"out";this.manager.emit(this.options.event+b,a)}}}),j(aa,V,{defaults:{event:"press",pointers:1,time:500,threshold:5},getTouchAction:function(){return[_a]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime>b.time;if(this._input=a,!d||!c||a.eventType&(Aa|Ba)&&!f)this.reset();else if(a.eventType&ya)this.reset(),this._timer=e(function(){this.state=ib,this.tryEmit()},b.time,this);else if(a.eventType&Aa)return ib;return kb},reset:function(){clearTimeout(this._timer)},emit:function(a){this.state===ib&&(a&&a.eventType&Aa?this.manager.emit(this.options.event+"up",a):(this._input.timeStamp=na(),this.manager.emit(this.options.event,this._input)))}}),j(ba,Z,{defaults:{event:"rotate",threshold:0,pointers:2},getTouchAction:function(){return[bb]},attrTest:function(a){return this._super.attrTest.call(this,a)&&(Math.abs(a.rotation)>this.options.threshold||this.state&fb)}}),j(ca,Z,{defaults:{event:"swipe",threshold:10,velocity:.65,direction:Ha|Ia,pointers:1},getTouchAction:function(){return $.prototype.getTouchAction.call(this)},attrTest:function(a){var b,c=this.options.direction;return c&(Ha|Ia)?b=a.velocity:c&Ha?b=a.velocityX:c&Ia&&(b=a.velocityY),this._super.attrTest.call(this,a)&&c&a.direction&&a.distance>this.options.threshold&&ma(b)>this.options.velocity&&a.eventType&Aa},emit:function(a){var b=X(a.direction);b&&this.manager.emit(this.options.event+b,a),this.manager.emit(this.options.event,a)}}),j(da,V,{defaults:{event:"tap",pointers:1,taps:1,interval:300,time:250,threshold:2,posThreshold:10},getTouchAction:function(){return[ab]},process:function(a){var b=this.options,c=a.pointers.length===b.pointers,d=a.distance<b.threshold,f=a.deltaTime<b.time;if(this.reset(),a.eventType&ya&&0===this.count)return this.failTimeout();if(d&&f&&c){if(a.eventType!=Aa)return this.failTimeout();var g=this.pTime?a.timeStamp-this.pTime<b.interval:!0,h=!this.pCenter||I(this.pCenter,a.center)<b.posThreshold;this.pTime=a.timeStamp,this.pCenter=a.center,h&&g?this.count+=1:this.count=1,this._input=a;var i=this.count%b.taps;if(0===i)return this.hasRequireFailures()?(this._timer=e(function(){this.state=ib,this.tryEmit()},b.interval,this),fb):ib}return kb},failTimeout:function(){return this._timer=e(function(){this.state=kb},this.options.interval,this),kb},reset:function(){clearTimeout(this._timer)},emit:function(){this.state==ib&&(this._input.tapCount=this.count,this.manager.emit(this.options.event,this._input))}}),ea.VERSION="2.0.4",ea.defaults={domEvents:!1,touchAction:$a,enable:!0,inputTarget:null,inputClass:null,preset:[[ba,{enable:!1}],[_,{enable:!1},["rotate"]],[ca,{direction:Ha}],[$,{direction:Ha},["swipe"]],[da],[da,{event:"doubletap",taps:2},["tap"]],[aa]],cssProps:{userSelect:"default",touchSelect:"none",touchCallout:"none",contentZooming:"none",userDrag:"none",tapHighlightColor:"rgba(0,0,0,0)"}};var lb=1,mb=2;fa.prototype={set:function(a){return h(this.options,a),a.touchAction&&this.touchAction.update(),a.inputTarget&&(this.input.destroy(),this.input.target=a.inputTarget,this.input.init()),this},stop:function(a){this.session.stopped=a?mb:lb},recognize:function(a){var b=this.session;if(!b.stopped){this.touchAction.preventDefaults(a);var c,d=this.recognizers,e=b.curRecognizer;(!e||e&&e.state&ib)&&(e=b.curRecognizer=null);for(var f=0;f<d.length;)c=d[f],b.stopped===mb||e&&c!=e&&!c.canRecognizeWith(e)?c.reset():c.recognize(a),!e&&c.state&(fb|gb|hb)&&(e=b.curRecognizer=c),f++}},get:function(a){if(a instanceof V)return a;for(var b=this.recognizers,c=0;c<b.length;c++)if(b[c].options.event==a)return b[c];return null},add:function(a){if(f(a,"add",this))return this;var b=this.get(a.options.event);return b&&this.remove(b),this.recognizers.push(a),a.manager=this,this.touchAction.update(),a},remove:function(a){if(f(a,"remove",this))return this;var b=this.recognizers;return a=this.get(a),b.splice(s(b,a),1),this.touchAction.update(),this},on:function(a,b){var c=this.handlers;return g(r(a),function(a){c[a]=c[a]||[],c[a].push(b)}),this},off:function(a,b){var c=this.handlers;return g(r(a),function(a){b?c[a].splice(s(c[a],b),1):delete c[a]}),this},emit:function(a,b){this.options.domEvents&&ha(a,b);var c=this.handlers[a]&&this.handlers[a].slice();if(c&&c.length){b.type=a,b.preventDefault=function(){b.srcEvent.preventDefault()};for(var d=0;d<c.length;)c[d](b),d++}},destroy:function(){this.element&&ga(this,!1),this.handlers={},this.session={},this.input.destroy(),this.element=null}},h(ea,{INPUT_START:ya,INPUT_MOVE:za,INPUT_END:Aa,INPUT_CANCEL:Ba,STATE_POSSIBLE:eb,STATE_BEGAN:fb,STATE_CHANGED:gb,STATE_ENDED:hb,STATE_RECOGNIZED:ib,STATE_CANCELLED:jb,STATE_FAILED:kb,DIRECTION_NONE:Ca,DIRECTION_LEFT:Da,DIRECTION_RIGHT:Ea,DIRECTION_UP:Fa,DIRECTION_DOWN:Ga,DIRECTION_HORIZONTAL:Ha,DIRECTION_VERTICAL:Ia,DIRECTION_ALL:Ja,Manager:fa,Input:y,TouchAction:T,TouchInput:Q,MouseInput:M,PointerEventInput:N,TouchMouseInput:S,SingleTouchInput:O,Recognizer:V,AttrRecognizer:Z,Tap:da,Pan:$,Swipe:ca,Pinch:_,Rotate:ba,Press:aa,on:n,off:o,each:g,merge:i,extend:h,inherit:j,bindFn:k,prefixed:v}),typeof define==ka&&define.amd?define(function(){return ea}):"undefined"!=typeof module&&module.exports?module.exports=ea:a[c]=ea}(window,document,"Hammer"),function(a){"function"==typeof define&&define.amd?define(["jquery","hammerjs"],a):"object"==typeof exports?a(require("jquery"),require("hammerjs")):a(jQuery,Hammer)}(function(a,b){function c(c,d){var e=a(c);e.data("hammer")||e.data("hammer",new b(e[0],d))}a.fn.hammer=function(a){return this.each(function(){c(this,a)})},b.Manager.prototype.emit=function(b){return function(c,d){b.call(this,c,d),a(this.element).trigger({type:c,gesture:d})}}(b.Manager.prototype.emit)}),window.Materialize={},Materialize.guid=function(){function a(){return Math.floor(65536*(1+Math.random())).toString(16).substring(1)}return function(){return a()+a()+"-"+a()+"-"+a()+"-"+a()+"-"+a()+a()+a()}}(),Materialize.elementOrParentIsFixed=function(a){var b=$(a),c=b.add(b.parents()),d=!1;return c.each(function(){return"fixed"===$(this).css("position")?(d=!0,!1):void 0}),d};var Vel;Vel=$?$.Velocity:Velocity,function(a){a.fn.collapsible=function(b){var c={accordion:void 0};return b=a.extend(c,b),this.each(function(){function c(b){h=g.find("> li > .collapsible-header"),b.hasClass("active")?b.parent().addClass("active"):b.parent().removeClass("active"),b.parent().hasClass("active")?b.siblings(".collapsible-body").stop(!0,!1).slideDown({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}):b.siblings(".collapsible-body").stop(!0,!1).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}),h.not(b).removeClass("active").parent().removeClass("active"),h.not(b).parent().children(".collapsible-body").stop(!0,!1).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}})}function d(b){b.hasClass("active")?b.parent().addClass("active"):b.parent().removeClass("active"),b.parent().hasClass("active")?b.siblings(".collapsible-body").stop(!0,!1).slideDown({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}}):b.siblings(".collapsible-body").stop(!0,!1).slideUp({duration:350,easing:"easeOutQuart",queue:!1,complete:function(){a(this).css("height","")}})}function e(a){var b=f(a);return b.length>0}function f(a){return a.closest("li > .collapsible-header")}var g=a(this),h=a(this).find("> li > .collapsible-header"),i=g.data("collapsible");g.off("click.collapse",".collapsible-header"),h.off("click.collapse"),b.accordion||"accordion"===i||void 0===i?(h=g.find("> li > .collapsible-header"),h.on("click.collapse",function(b){var d=a(b.target);e(d)&&(d=f(d)),d.toggleClass("active"),c(d)}),c(h.filter(".active").first())):h.each(function(){a(this).on("click.collapse",function(b){var c=a(b.target);e(c)&&(c=f(c)),c.toggleClass("active"),d(c)}),a(this).hasClass("active")&&d(a(this))})})},a(document).ready(function(){a(".collapsible").collapsible()})}(jQuery),function(a){a.fn.scrollTo=function(b){return a(this).scrollTop(a(this).scrollTop()-a(this).offset().top+a(b).offset().top),this},a.fn.dropdown=function(b){var c={inDuration:300,outDuration:225,constrain_width:!0,hover:!1,gutter:0,belowOrigin:!1,alignment:"left"};this.each(function(){function d(){void 0!==g.data("induration")&&(h.inDuration=g.data("inDuration")),void 0!==g.data("outduration")&&(h.outDuration=g.data("outDuration")),void 0!==g.data("constrainwidth")&&(h.constrain_width=g.data("constrainwidth")),void 0!==g.data("hover")&&(h.hover=g.data("hover")),void 0!==g.data("gutter")&&(h.gutter=g.data("gutter")),void 0!==g.data("beloworigin")&&(h.belowOrigin=g.data("beloworigin")),void 0!==g.data("alignment")&&(h.alignment=g.data("alignment"))}function e(){d(),i.addClass("active"),h.constrain_width===!0?i.css("width",g.outerWidth()):i.css("white-space","nowrap");var b=0;h.belowOrigin===!0&&(b=g.height());var c,e,f,j=g.offset().left;if(j+i.innerWidth()>a(window).width()?h.alignment="right":j-i.innerWidth()+g.innerWidth()<0&&(h.alignment="left"),"left"===h.alignment)e=0,f=h.gutter,c=g.position().left+e+f,i.css({left:c});else if("right"===h.alignment){a(window).width()-j-g.innerWidth();e=0,f=h.gutter,c=a(window).width()-g.position().left-g.innerWidth()+f,i.css({right:c})}i.css({position:"absolute",top:g.position().top+b}),i.stop(!0,!0).css("opacity",0).slideDown({queue:!1,duration:h.inDuration,easing:"easeOutCubic",complete:function(){a(this).css("height","")}}).animate({opacity:1},{queue:!1,duration:h.inDuration,easing:"easeOutSine"})}function f(){i.fadeOut(h.outDuration),i.removeClass("active")}var g=a(this),h=a.extend({},c,b),i=a("#"+g.attr("data-activates"));if(d(),g.after(i),h.hover){var j=!1;g.unbind("click."+g.attr("id")),g.on("mouseenter",function(a){j===!1&&(e(),j=!0)}),g.on("mouseleave",function(b){var c=b.toElement||b.relatedTarget;a(c).closest(".dropdown-content").is(i)||(i.stop(!0,!0),f(),j=!1)}),i.on("mouseleave",function(b){var c=b.toElement||b.relatedTarget;a(c).closest(".dropdown-button").is(g)||(i.stop(!0,!0),f(),j=!1)})}else g.unbind("click."+g.attr("id")),g.bind("click."+g.attr("id"),function(b){g[0]==b.currentTarget&&0===a(b.target).closest(".dropdown-content").length?(b.preventDefault(),e()):g.hasClass("active")&&(f(),a(document).unbind("click."+i.attr("id"))),i.hasClass("active")&&a(document).bind("click."+i.attr("id"),function(b){!i.is(b.target)&&!g.is(b.target)&&!g.find(b.target).length>0&&(f(),a(document).unbind("click."+i.attr("id")))})});g.on("open",e),g.on("close",f)})},a(document).ready(function(){a(".dropdown-button").dropdown()})}(jQuery),function(a){var b=0,c=0,d=function(){return c++,"materialize-lean-overlay-"+c};a.fn.extend({openModal:function(c){a("body").css("overflow","hidden");var e={opacity:.5,in_duration:350,out_duration:250,ready:void 0,complete:void 0,dismissible:!0,starting_top:"4%"},f=d(),g=a(this),h=a('<div class="lean-overlay"></div>'),i=++b;h.attr("id",f).css("z-index",1e3+2*i),g.data("overlay-id",f).css("z-index",1e3+2*i+1),a("body").append(h),c=a.extend(e,c),c.dismissible&&(h.click(function(){g.closeModal(c)}),a(document).on("keyup.leanModal"+f,function(a){27===a.keyCode&&g.closeModal(c)})),g.find(".modal-close").on("click.close",function(a){g.closeModal(c)}),h.css({display:"block",opacity:0}),g.css({display:"block",opacity:0}),h.velocity({opacity:c.opacity},{duration:c.in_duration,queue:!1,ease:"easeOutCubic"}),g.data("associated-overlay",h[0]),g.hasClass("bottom-sheet")?g.velocity({bottom:"0",opacity:1},{duration:c.in_duration,queue:!1,ease:"easeOutCubic",complete:function(){"function"==typeof c.ready&&c.ready()}}):(a.Velocity.hook(g,"scaleX",.7),g.css({top:c.starting_top}),g.velocity({top:"10%",opacity:1,scaleX:"1"},{duration:c.in_duration,queue:!1,ease:"easeOutCubic",complete:function(){"function"==typeof c.ready&&c.ready()}}))}}),a.fn.extend({closeModal:function(c){var d={out_duration:250,complete:void 0},e=a(this),f=e.data("overlay-id"),g=a("#"+f);c=a.extend(d,c),a("body").css("overflow",""),e.find(".modal-close").off("click.close"),a(document).off("keyup.leanModal"+f),g.velocity({opacity:0},{duration:c.out_duration,queue:!1,ease:"easeOutQuart"}),e.hasClass("bottom-sheet")?e.velocity({bottom:"-100%",opacity:0},{duration:c.out_duration,queue:!1,ease:"easeOutCubic",complete:function(){g.css({display:"none"}),"function"==typeof c.complete&&c.complete(),g.remove(),b--}}):e.velocity({top:c.starting_top,opacity:0,scaleX:.7},{duration:c.out_duration,complete:function(){a(this).css("display","none"),"function"==typeof c.complete&&c.complete(),g.remove(),b--}})}}),a.fn.extend({leanModal:function(b){return this.each(function(){var c={starting_top:"4%"},d=a.extend(c,b);a(this).click(function(b){d.starting_top=(a(this).offset().top-a(window).scrollTop())/1.15;var c=a(this).attr("href")||"#"+a(this).data("target");a(c).openModal(d),b.preventDefault()})})}})}(jQuery),function(a){a.fn.materialbox=function(){return this.each(function(){function b(){ | ||
8 | d=!1;var b=g.parent(".material-placeholder"),e=(window.innerWidth,window.innerHeight,g.data("width")),h=g.data("height");g.velocity("stop",!0),a("#materialbox-overlay").velocity("stop",!0),a(".materialbox-caption").velocity("stop",!0),a("#materialbox-overlay").velocity({opacity:0},{duration:f,queue:!1,easing:"easeOutQuad",complete:function(){c=!1,a(this).remove()}}),g.velocity({width:e,height:h,left:0,top:0},{duration:f,queue:!1,easing:"easeOutQuad"}),a(".materialbox-caption").velocity({opacity:0},{duration:f,queue:!1,easing:"easeOutQuad",complete:function(){b.css({height:"",width:"",position:"",top:"",left:""}),g.css({height:"",top:"",left:"",width:"","max-width":"",position:"","z-index":""}),g.removeClass("active"),d=!0,a(this).remove()}})}if(!a(this).hasClass("initialized")){a(this).addClass("initialized");var c=!1,d=!0,e=275,f=200,g=a(this),h=a("<div></div>").addClass("material-placeholder");g.wrap(h),g.on("click",function(){var f=g.parent(".material-placeholder"),h=window.innerWidth,i=window.innerHeight,j=g.width(),k=g.height();if(d===!1)return b(),!1;if(c&&d===!0)return b(),!1;d=!1,g.addClass("active"),c=!0,f.css({width:f[0].getBoundingClientRect().width,height:f[0].getBoundingClientRect().height,position:"relative",top:0,left:0}),g.css({position:"absolute","z-index":1e3}).data("width",j).data("height",k);var l=a('<div id="materialbox-overlay"></div>').css({opacity:0}).click(function(){d===!0&&b()});if(a("body").append(l),l.velocity({opacity:1},{duration:e,queue:!1,easing:"easeOutQuad"}),""!==g.data("caption")){var m=a('<div class="materialbox-caption"></div>');m.text(g.data("caption")),a("body").append(m),m.css({display:"inline"}),m.velocity({opacity:1},{duration:e,queue:!1,easing:"easeOutQuad"})}var n=0,o=j/h,p=k/i,q=0,r=0;o>p?(n=k/j,q=.9*h,r=.9*h*n):(n=j/k,q=.9*i*n,r=.9*i),g.hasClass("responsive-img")?g.velocity({"max-width":q,width:j},{duration:0,queue:!1,complete:function(){g.css({left:0,top:0}).velocity({height:r,width:q,left:a(document).scrollLeft()+h/2-g.parent(".material-placeholder").offset().left-q/2,top:a(document).scrollTop()+i/2-g.parent(".material-placeholder").offset().top-r/2},{duration:e,queue:!1,easing:"easeOutQuad",complete:function(){d=!0}})}}):g.css("left",0).css("top",0).velocity({height:r,width:q,left:a(document).scrollLeft()+h/2-g.parent(".material-placeholder").offset().left-q/2,top:a(document).scrollTop()+i/2-g.parent(".material-placeholder").offset().top-r/2},{duration:e,queue:!1,easing:"easeOutQuad",complete:function(){d=!0}})}),a(window).scroll(function(){c&&b()}),a(document).keyup(function(a){27===a.keyCode&&d===!0&&c&&b()})}})},a(document).ready(function(){a(".materialboxed").materialbox()})}(jQuery),function(a){a.fn.parallax=function(){var b=a(window).width();return this.each(function(c){function d(c){var d;d=601>b?e.height()>0?e.height():e.children("img").height():e.height()>0?e.height():500;var f=e.children("img").first(),g=f.height(),h=g-d,i=e.offset().top+d,j=e.offset().top,k=a(window).scrollTop(),l=window.innerHeight,m=k+l,n=(m-j)/(d+l),o=Math.round(h*n);c&&f.css("display","block"),i>k&&k+l>j&&f.css("transform","translate3D(-50%,"+o+"px, 0)")}var e=a(this);e.addClass("parallax"),e.children("img").one("load",function(){d(!0)}).each(function(){this.complete&&a(this).load()}),a(window).scroll(function(){b=a(window).width(),d(!1)}),a(window).resize(function(){b=a(window).width(),d(!1)})})}}(jQuery),function(a){var b={init:function(){return this.each(function(){var b=a(this);a(window).width();b.width("100%");var c,d,e=b.find("li.tab a"),f=b.width(),g=b.find("li").first().outerWidth(),h=0;c=a(e.filter('[href="'+location.hash+'"]')),0===c.length&&(c=a(this).find("li.tab a.active").first()),0===c.length&&(c=a(this).find("li.tab a").first()),c.addClass("active"),h=e.index(c),0>h&&(h=0),d=a(c[0].hash),b.append('<div class="indicator"></div>');var i=b.find(".indicator");b.is(":visible")&&(i.css({right:f-(h+1)*g}),i.css({left:h*g})),a(window).resize(function(){f=b.width(),g=b.find("li").first().outerWidth(),0>h&&(h=0),0!==g&&0!==f&&(i.css({right:f-(h+1)*g}),i.css({left:h*g}))}),e.not(c).each(function(){a(this.hash).hide()}),b.on("click","a",function(j){if(a(this).parent().hasClass("disabled"))return void j.preventDefault();f=b.width(),g=b.find("li").first().outerWidth(),c.removeClass("active"),d.hide(),c=a(this),d=a(this.hash),e=b.find("li.tab a"),c.addClass("active");var k=h;h=e.index(a(this)),0>h&&(h=0),d.show(),h-k>=0?(i.velocity({right:f-(h+1)*g},{duration:300,queue:!1,easing:"easeOutQuad"}),i.velocity({left:h*g},{duration:300,queue:!1,easing:"easeOutQuad",delay:90})):(i.velocity({left:h*g},{duration:300,queue:!1,easing:"easeOutQuad"}),i.velocity({right:f-(h+1)*g},{duration:300,queue:!1,easing:"easeOutQuad",delay:90})),j.preventDefault()})})},select_tab:function(a){this.find('a[href="#'+a+'"]').trigger("click")}};a.fn.tabs=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.tooltip"):b.init.apply(this,arguments)},a(document).ready(function(){a("ul.tabs").tabs()})}(jQuery),function(a){a.fn.tooltip=function(b){var c=null,d=!1,e=null,f=5,g={delay:350};return"remove"===b?(this.each(function(){a("#"+a(this).attr("data-tooltip-id")).remove()}),!1):(b=a.extend(g,b),this.each(function(){var g=Materialize.guid(),h=a(this);h.attr("data-tooltip-id",g);var i=a("<span></span>").text(h.attr("data-tooltip")),j=a("<div></div>");j.addClass("material-tooltip").append(i).appendTo(a("body")).attr("id",g);var k=a("<div></div>").addClass("backdrop");k.appendTo(j),k.css({top:0,left:0}),h.off("mouseenter.tooltip mouseleave.tooltip"),h.on({"mouseenter.tooltip":function(a){var g=h.data("delay");g=void 0===g||""===g?b.delay:g,c=0,e=setInterval(function(){if(c+=10,c>=g&&d===!1){d=!0,j.css({display:"block",left:"0px",top:"0px"}),j.children("span").text(h.attr("data-tooltip"));var a=h.outerWidth(),b=h.outerHeight(),e=h.attr("data-position"),i=j.outerHeight(),l=j.outerWidth(),m="0px",n="0px",o=8;"top"===e?(j.css({top:h.offset().top-i-f,left:h.offset().left+a/2-l/2}),m="-10px",k.css({borderRadius:"14px 14px 0 0",transformOrigin:"50% 90%",marginTop:i,marginLeft:l/2-k.width()/2})):"left"===e?(j.css({top:h.offset().top+b/2-i/2,left:h.offset().left-l-f}),n="-10px",k.css({width:"14px",height:"14px",borderRadius:"14px 0 0 14px",transformOrigin:"95% 50%",marginTop:i/2,marginLeft:l})):"right"===e?(j.css({top:h.offset().top+b/2-i/2,left:h.offset().left+a+f}),n="+10px",k.css({width:"14px",height:"14px",borderRadius:"0 14px 14px 0",transformOrigin:"5% 50%",marginTop:i/2,marginLeft:"0px"})):(j.css({top:h.offset().top+h.outerHeight()+f,left:h.offset().left+a/2-l/2}),m="+10px",k.css({marginLeft:l/2-k.width()/2})),o=l/8,8>o&&(o=8),("right"===e||"left"===e)&&(o=l/10,6>o&&(o=6)),j.velocity({marginTop:m,marginLeft:n},{duration:350,queue:!1}).velocity({opacity:1},{duration:300,delay:50,queue:!1}),k.css({display:"block"}).velocity({opacity:1},{duration:55,delay:0,queue:!1}).velocity({scale:o},{duration:300,delay:0,queue:!1,easing:"easeInOutQuad"})}},10)},"mouseleave.tooltip":function(){clearInterval(e),c=0,j.velocity({opacity:0,marginTop:0,marginLeft:0},{duration:225,queue:!1,delay:225}),k.velocity({opacity:0,scale:1},{duration:225,delay:275,queue:!1,complete:function(){k.css("display","none"),j.css("display","none"),d=!1}})}})}))},a(document).ready(function(){a(".tooltipped").tooltip()})}(jQuery),function(a){"use strict";function b(a){return null!==a&&a===a.window}function c(a){return b(a)?a:9===a.nodeType&&a.defaultView}function d(a){var b,d,e={top:0,left:0},f=a&&a.ownerDocument;return b=f.documentElement,"undefined"!=typeof a.getBoundingClientRect&&(e=a.getBoundingClientRect()),d=c(f),{top:e.top+d.pageYOffset-b.clientTop,left:e.left+d.pageXOffset-b.clientLeft}}function e(a){var b="";for(var c in a)a.hasOwnProperty(c)&&(b+=c+":"+a[c]+";");return b}function f(a){if(k.allowEvent(a)===!1)return null;for(var b=null,c=a.target||a.srcElement;null!==c.parentElement;){if(!(c instanceof SVGElement||-1===c.className.indexOf("waves-effect"))){b=c;break}if(c.classList.contains("waves-effect")){b=c;break}c=c.parentElement}return b}function g(b){var c=f(b);null!==c&&(j.show(b,c),"ontouchstart"in a&&(c.addEventListener("touchend",j.hide,!1),c.addEventListener("touchcancel",j.hide,!1)),c.addEventListener("mouseup",j.hide,!1),c.addEventListener("mouseleave",j.hide,!1))}var h=h||{},i=document.querySelectorAll.bind(document),j={duration:750,show:function(a,b){if(2===a.button)return!1;var c=b||this,f=document.createElement("div");f.className="waves-ripple",c.appendChild(f);var g=d(c),h=a.pageY-g.top,i=a.pageX-g.left,k="scale("+c.clientWidth/100*10+")";"touches"in a&&(h=a.touches[0].pageY-g.top,i=a.touches[0].pageX-g.left),f.setAttribute("data-hold",Date.now()),f.setAttribute("data-scale",k),f.setAttribute("data-x",i),f.setAttribute("data-y",h);var l={top:h+"px",left:i+"px"};f.className=f.className+" waves-notransition",f.setAttribute("style",e(l)),f.className=f.className.replace("waves-notransition",""),l["-webkit-transform"]=k,l["-moz-transform"]=k,l["-ms-transform"]=k,l["-o-transform"]=k,l.transform=k,l.opacity="1",l["-webkit-transition-duration"]=j.duration+"ms",l["-moz-transition-duration"]=j.duration+"ms",l["-o-transition-duration"]=j.duration+"ms",l["transition-duration"]=j.duration+"ms",l["-webkit-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-moz-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["-o-transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",l["transition-timing-function"]="cubic-bezier(0.250, 0.460, 0.450, 0.940)",f.setAttribute("style",e(l))},hide:function(a){k.touchup(a);var b=this,c=(1.4*b.clientWidth,null),d=b.getElementsByClassName("waves-ripple");if(!(d.length>0))return!1;c=d[d.length-1];var f=c.getAttribute("data-x"),g=c.getAttribute("data-y"),h=c.getAttribute("data-scale"),i=Date.now()-Number(c.getAttribute("data-hold")),l=350-i;0>l&&(l=0),setTimeout(function(){var a={top:g+"px",left:f+"px",opacity:"0","-webkit-transition-duration":j.duration+"ms","-moz-transition-duration":j.duration+"ms","-o-transition-duration":j.duration+"ms","transition-duration":j.duration+"ms","-webkit-transform":h,"-moz-transform":h,"-ms-transform":h,"-o-transform":h,transform:h};c.setAttribute("style",e(a)),setTimeout(function(){try{b.removeChild(c)}catch(a){return!1}},j.duration)},l)},wrapInput:function(a){for(var b=0;b<a.length;b++){var c=a[b];if("input"===c.tagName.toLowerCase()){var d=c.parentNode;if("i"===d.tagName.toLowerCase()&&-1!==d.className.indexOf("waves-effect"))continue;var e=document.createElement("i");e.className=c.className+" waves-input-wrapper";var f=c.getAttribute("style");f||(f=""),e.setAttribute("style",f),c.className="waves-button-input",c.removeAttribute("style"),d.replaceChild(e,c),e.appendChild(c)}}}},k={touches:0,allowEvent:function(a){var b=!0;return"touchstart"===a.type?k.touches+=1:"touchend"===a.type||"touchcancel"===a.type?setTimeout(function(){k.touches>0&&(k.touches-=1)},500):"mousedown"===a.type&&k.touches>0&&(b=!1),b},touchup:function(a){k.allowEvent(a)}};h.displayEffect=function(b){b=b||{},"duration"in b&&(j.duration=b.duration),j.wrapInput(i(".waves-effect")),"ontouchstart"in a&&document.body.addEventListener("touchstart",g,!1),document.body.addEventListener("mousedown",g,!1)},h.attach=function(b){"input"===b.tagName.toLowerCase()&&(j.wrapInput([b]),b=b.parentElement),"ontouchstart"in a&&b.addEventListener("touchstart",g,!1),b.addEventListener("mousedown",g,!1)},a.Waves=h,document.addEventListener("DOMContentLoaded",function(){h.displayEffect()},!1)}(window),Materialize.toast=function(a,b,c,d){function e(a){var b=document.createElement("div");if(b.classList.add("toast"),c)for(var e=c.split(" "),f=0,g=e.length;g>f;f++)b.classList.add(e[f]);("object"==typeof HTMLElement?a instanceof HTMLElement:a&&"object"==typeof a&&null!==a&&1===a.nodeType&&"string"==typeof a.nodeName)?b.appendChild(a):a instanceof jQuery?b.appendChild(a[0]):b.innerHTML=a;var h=new Hammer(b,{prevent_default:!1});return h.on("pan",function(a){var c=a.deltaX,d=80;b.classList.contains("panning")||b.classList.add("panning");var e=1-Math.abs(c/d);0>e&&(e=0),Vel(b,{left:c,opacity:e},{duration:50,queue:!1,easing:"easeOutQuad"})}),h.on("panend",function(a){var c=a.deltaX,e=80;Math.abs(c)>e?Vel(b,{marginTop:"-40px"},{duration:375,easing:"easeOutExpo",queue:!1,complete:function(){"function"==typeof d&&d(),b.parentNode.removeChild(b)}}):(b.classList.remove("panning"),Vel(b,{left:0,opacity:1},{duration:300,easing:"easeOutExpo",queue:!1}))}),b}c=c||"";var f=document.getElementById("toast-container");null===f&&(f=document.createElement("div"),f.id="toast-container",document.body.appendChild(f));var g=e(a);a&&f.appendChild(g),g.style.top="35px",g.style.opacity=0,Vel(g,{top:"0px",opacity:1},{duration:300,easing:"easeOutCubic",queue:!1});var h=b,i=setInterval(function(){null===g.parentNode&&window.clearInterval(i),g.classList.contains("panning")||(h-=20),0>=h&&(Vel(g,{opacity:0,marginTop:"-40px"},{duration:375,easing:"easeOutExpo",queue:!1,complete:function(){"function"==typeof d&&d(),this[0].parentNode.removeChild(this[0])}}),window.clearInterval(i))},20)},function(a){var b={init:function(b){var c={menuWidth:240,edge:"left",closeOnClick:!1};b=a.extend(c,b),a(this).each(function(){function c(c){g=!1,h=!1,a("body").css("overflow",""),a("#sidenav-overlay").velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),"left"===b.edge?(f.css({width:"",right:"",left:"0"}),e.velocity({left:-1*(b.menuWidth+10)},{duration:200,queue:!1,easing:"easeOutCubic",complete:function(){c===!0&&(e.removeAttr("style"),e.css("width",b.menuWidth))}})):(f.css({width:"",right:"0",left:""}),e.velocity({right:-1*(b.menuWidth+10)},{duration:200,queue:!1,easing:"easeOutCubic",complete:function(){c===!0&&(e.removeAttr("style"),e.css("width",b.menuWidth))}}))}var d=a(this),e=a("#"+d.attr("data-activates"));240!=b.menuWidth&&e.css("width",b.menuWidth);var f=a('<div class="drag-target"></div>');a("body").append(f),"left"==b.edge?(e.css("left",-1*(b.menuWidth+10)),f.css({left:0})):(e.addClass("right-aligned").css("right",-1*(b.menuWidth+10)).css("left",""),f.css({right:0})),e.hasClass("fixed")&&window.innerWidth>992&&e.css("left",0),e.hasClass("fixed")&&a(window).resize(function(){window.innerWidth>992?0!==a("#sidenav-overlay").css("opacity")&&h?c(!0):(e.removeAttr("style"),e.css("width",b.menuWidth)):h===!1&&("left"===b.edge?e.css("left",-1*(b.menuWidth+10)):e.css("right",-1*(b.menuWidth+10)))}),b.closeOnClick===!0&&e.on("click.itemclick","a:not(.collapsible-header)",function(){c()});var g=!1,h=!1;f.on("click",function(){c()}),f.hammer({prevent_default:!1}).bind("pan",function(d){if("touch"==d.gesture.pointerType){var f=(d.gesture.direction,d.gesture.center.x);d.gesture.center.y,d.gesture.velocityX;if(a("body").css("overflow","hidden"),0===a("#sidenav-overlay").length){var g=a('<div id="sidenav-overlay"></div>');g.css("opacity",0).click(function(){c()}),a("body").append(g)}if("left"===b.edge&&(f>b.menuWidth?f=b.menuWidth:0>f&&(f=0)),"left"===b.edge)f<b.menuWidth/2?h=!1:f>=b.menuWidth/2&&(h=!0),e.css("left",f-b.menuWidth);else{f<window.innerWidth-b.menuWidth/2?h=!0:f>=window.innerWidth-b.menuWidth/2&&(h=!1);var i=-1*(f-b.menuWidth/2);i>0&&(i=0),e.css("right",i)}var j;"left"===b.edge?(j=f/b.menuWidth,a("#sidenav-overlay").velocity({opacity:j},{duration:50,queue:!1,easing:"easeOutQuad"})):(j=Math.abs((f-window.innerWidth)/b.menuWidth),a("#sidenav-overlay").velocity({opacity:j},{duration:50,queue:!1,easing:"easeOutQuad"}))}}).bind("panend",function(c){if("touch"==c.gesture.pointerType){var d=c.gesture.velocityX;g=!1,"left"===b.edge?h&&.3>=d||-.5>d?(e.velocity({left:0},{duration:300,queue:!1,easing:"easeOutQuad"}),a("#sidenav-overlay").velocity({opacity:1},{duration:50,queue:!1,easing:"easeOutQuad"}),f.css({width:"50%",right:0,left:""})):(!h||d>.3)&&(a("body").css("overflow",""),e.velocity({left:-1*(b.menuWidth+10)},{duration:200,queue:!1,easing:"easeOutQuad"}),a("#sidenav-overlay").velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),f.css({width:"10px",right:"",left:0})):h&&d>=-.3||d>.5?(e.velocity({right:0},{duration:300,queue:!1,easing:"easeOutQuad"}),a("#sidenav-overlay").velocity({opacity:1},{duration:50,queue:!1,easing:"easeOutQuad"}),f.css({width:"50%",right:"",left:0})):(!h||-.3>d)&&(a("body").css("overflow",""),e.velocity({right:-1*(b.menuWidth+10)},{duration:200,queue:!1,easing:"easeOutQuad"}),a("#sidenav-overlay").velocity({opacity:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}}),f.css({width:"10px",right:0,left:""}))}}),d.click(function(){if(h===!0)h=!1,g=!1,c();else{a("body").css("overflow","hidden"),a("body").append(f),"left"===b.edge?(f.css({width:"50%",right:0,left:""}),e.velocity({left:0},{duration:300,queue:!1,easing:"easeOutQuad"})):(f.css({width:"50%",right:"",left:0}),e.velocity({right:0},{duration:300,queue:!1,easing:"easeOutQuad"}),e.css("left",""));var d=a('<div id="sidenav-overlay"></div>');d.css("opacity",0).click(function(){h=!1,g=!1,c(),d.velocity({opacity:0},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){a(this).remove()}})}),a("body").append(d),d.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){h=!0,g=!1}})}return!1})})},show:function(){this.trigger("click")},hide:function(){a("#sidenav-overlay").trigger("click")}};a.fn.sideNav=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.sideNav"):b.init.apply(this,arguments)}}(jQuery),function(a){function b(b,c,d,e){var f=a();return a.each(g,function(a,g){if(g.height()>0){var h=g.offset().top,i=g.offset().left,j=i+g.width(),k=h+g.height(),l=!(i>c||e>j||h>d||b>k);l&&f.push(g)}}),f}function c(){++j;var c=f.scrollTop(),d=f.scrollLeft(),e=d+f.width(),g=c+f.height(),i=b(c+k.top+200,e+k.right,g+k.bottom,d+k.left);a.each(i,function(a,b){var c=b.data("scrollSpy:ticks");"number"!=typeof c&&b.triggerHandler("scrollSpy:enter"),b.data("scrollSpy:ticks",j)}),a.each(h,function(a,b){var c=b.data("scrollSpy:ticks");"number"==typeof c&&c!==j&&(b.triggerHandler("scrollSpy:exit"),b.data("scrollSpy:ticks",null))}),h=i}function d(){f.trigger("scrollSpy:winSize")}function e(a,b,c){var d,e,f,g=null,h=0;c||(c={});var i=function(){h=c.leading===!1?0:l(),g=null,f=a.apply(d,e),d=e=null};return function(){var j=l();h||c.leading!==!1||(h=j);var k=b-(j-h);return d=this,e=arguments,0>=k?(clearTimeout(g),g=null,h=j,f=a.apply(d,e),d=e=null):g||c.trailing===!1||(g=setTimeout(i,k)),f}}var f=a(window),g=[],h=[],i=!1,j=0,k={top:0,right:0,bottom:0,left:0},l=Date.now||function(){return(new Date).getTime()};a.scrollSpy=function(b,d){var h=[];b=a(b),b.each(function(b,c){g.push(a(c)),a(c).data("scrollSpy:id",b),a("a[href=#"+a(c).attr("id")+"]").click(function(b){b.preventDefault();var c=a(this.hash).offset().top+1;a("html, body").animate({scrollTop:c-200},{duration:400,queue:!1,easing:"easeOutCubic"})})}),d=d||{throttle:100},k.top=d.offsetTop||0,k.right=d.offsetRight||0,k.bottom=d.offsetBottom||0,k.left=d.offsetLeft||0;var j=e(c,d.throttle||100),l=function(){a(document).ready(j)};return i||(f.on("scroll",l),f.on("resize",l),i=!0),setTimeout(l,0),b.on("scrollSpy:enter",function(){h=a.grep(h,function(a){return 0!=a.height()});var b=a(this);h[0]?(a("a[href=#"+h[0].attr("id")+"]").removeClass("active"),b.data("scrollSpy:id")<h[0].data("scrollSpy:id")?h.unshift(a(this)):h.push(a(this))):h.push(a(this)),a("a[href=#"+h[0].attr("id")+"]").addClass("active")}),b.on("scrollSpy:exit",function(){if(h=a.grep(h,function(a){return 0!=a.height()}),h[0]){a("a[href=#"+h[0].attr("id")+"]").removeClass("active");var b=a(this);h=a.grep(h,function(a){return a.attr("id")!=b.attr("id")}),h[0]&&a("a[href=#"+h[0].attr("id")+"]").addClass("active")}}),b},a.winSizeSpy=function(b){return a.winSizeSpy=function(){return f},b=b||{throttle:100},f.on("resize",e(d,b.throttle||100))},a.fn.scrollSpy=function(b){return a.scrollSpy(a(this),b)}}(jQuery),function(a){a(document).ready(function(){function b(b){var c=b.css("font-family"),e=b.css("font-size");e&&d.css("font-size",e),c&&d.css("font-family",c),"off"===b.attr("wrap")&&d.css("overflow-wrap","normal").css("white-space","pre"),d.text(b.val()+"\n");var f=d.html().replace(/\n/g,"<br>");d.html(f),b.is(":visible")?d.css("width",b.width()):d.css("width",a(window).width()/2),b.css("height",d.height())}Materialize.updateTextFields=function(){var b="input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea";a(b).each(function(b,c){a(c).val().length>0||void 0!==a(this).attr("placeholder")||a(c)[0].validity.badInput===!0?a(this).siblings("label").addClass("active"):a(this).siblings("label, i").removeClass("active")})};var c="input[type=text], input[type=password], input[type=email], input[type=url], input[type=tel], input[type=number], input[type=search], textarea";a("input[autofocus]").siblings("label, i").addClass("active"),a(document).on("change",c,function(){(0!==a(this).val().length||void 0!==a(this).attr("placeholder"))&&a(this).siblings("label").addClass("active"),validate_field(a(this))}),a(document).ready(function(){Materialize.updateTextFields()}),a(document).on("reset",function(b){var d=a(b.target);d.is("form")&&(d.find(c).removeClass("valid").removeClass("invalid"),d.find(c).each(function(){""===a(this).attr("value")&&a(this).siblings("label, i").removeClass("active")}),d.find("select.initialized").each(function(){var a=d.find("option[selected]").text();d.siblings("input.select-dropdown").val(a)}))}),a(document).on("focus",c,function(){a(this).siblings("label, i").addClass("active")}),a(document).on("blur",c,function(){var b=a(this);0===b.val().length&&b[0].validity.badInput!==!0&&void 0===b.attr("placeholder")&&b.siblings("label, i").removeClass("active"),0===b.val().length&&b[0].validity.badInput!==!0&&void 0!==b.attr("placeholder")&&b.siblings("i").removeClass("active"),validate_field(b)}),window.validate_field=function(a){var b=void 0!==a.attr("length"),c=parseInt(a.attr("length")),d=a.val().length;0===a.val().length&&a[0].validity.badInput===!1?a.hasClass("validate")&&(a.removeClass("valid"),a.removeClass("invalid")):a.hasClass("validate")&&(a.is(":valid")&&b&&c>=d||a.is(":valid")&&!b?(a.removeClass("invalid"),a.addClass("valid")):(a.removeClass("valid"),a.addClass("invalid")))};var d=a(".hiddendiv").first();d.length||(d=a('<div class="hiddendiv common"></div>'),a("body").append(d));var e=".materialize-textarea";a(e).each(function(){var c=a(this);c.val().length&&b(c)}),a("body").on("keyup keydown autoresize",e,function(){b(a(this))}),a(document).on("change",'.file-field input[type="file"]',function(){for(var b=a(this).closest(".file-field"),c=b.find("input.file-path"),d=a(this)[0].files,e=[],f=0;f<d.length;f++)e.push(d[f].name);c.val(e.join(", ")),c.trigger("change")});var f,g="input[type=range]",h=!1;a(g).each(function(){var b=a('<span class="thumb"><span class="value"></span></span>');a(this).after(b)});var i=".range-field";a(document).on("change",g,function(b){var c=a(this).siblings(".thumb");c.find(".value").html(a(this).val())}),a(document).on("input mousedown touchstart",g,function(b){var c=a(this).siblings(".thumb");c.length<=0&&(c=a('<span class="thumb"><span class="value"></span></span>'),a(this).append(c)),c.find(".value").html(a(this).val()),h=!0,a(this).addClass("active"),c.hasClass("active")||c.velocity({height:"30px",width:"30px",top:"-20px",marginLeft:"-15px"},{duration:300,easing:"easeOutExpo"}),f=void 0===b.pageX||null===b.pageX?b.originalEvent.touches[0].pageX-a(this).offset().left:b.pageX-a(this).offset().left;var d=a(this).outerWidth();0>f?f=0:f>d&&(f=d),c.addClass("active").css("left",f),c.find(".value").html(a(this).val())}),a(document).on("mouseup touchend",i,function(){h=!1,a(this).removeClass("active")}),a(document).on("mousemove touchmove",i,function(b){var c,d=a(this).children(".thumb");if(h){d.hasClass("active")||d.velocity({height:"30px",width:"30px",top:"-20px",marginLeft:"-15px"},{duration:300,easing:"easeOutExpo"}),c=void 0===b.pageX||null===b.pageX?b.originalEvent.touches[0].pageX-a(this).offset().left:b.pageX-a(this).offset().left;var e=a(this).outerWidth();0>c?c=0:c>e&&(c=e),d.addClass("active").css("left",c),d.find(".value").html(d.siblings(g).val())}}),a(document).on("mouseout touchleave",i,function(){if(!h){var b=a(this).children(".thumb");b.hasClass("active")&&b.velocity({height:"0",width:"0",top:"10px",marginLeft:"-6px"},{duration:100}),b.removeClass("active")}})}),a.fn.material_select=function(b){a(this).each(function(){if($select=a(this),!$select.hasClass("browser-default")){var c=$select.data("select-id");if(c&&($select.parent().find("span.caret").remove(),$select.parent().find("input").remove(),$select.unwrap(),a("ul#select-options-"+c).remove()),"destroy"===b)return void $select.data("select-id",null).removeClass("initialized");var d=Materialize.guid();$select.data("select-id",d);var e=a('<div class="select-wrapper"></div>');e.addClass($select.attr("class"));var f,g=a('<ul id="select-options-'+d+'" class="dropdown-content select-dropdown"></ul>'),h=$select.children("option");f=void 0!==$select.find("option:selected")?$select.find("option:selected"):g.first(),h.each(function(){g.append(a('<li class="'+(a(this).is(":disabled")?"disabled":"")+'"><span>'+a(this).html()+"</span></li>"))}),g.find("li").each(function(c){var d=$select;a(this).click(function(){a(this).hasClass("disabled")||(d.find("option").eq(c).prop("selected",!0),d.trigger("change"),d.siblings("input.select-dropdown").val(a(this).text()),"undefined"!=typeof b&&b())})}),$select.wrap(e);var i=a('<span class="caret">▼</span>');$select.is(":disabled")&&i.addClass("disabled");var j=f.html().replace(/"/g,"""),k=a('<input type="text" class="select-dropdown" readonly="true" '+($select.is(":disabled")?"disabled":"")+' data-activates="select-options-'+d+'" value="'+j+'"/>');$select.before(k),k.before(i),a("body").append(g),$select.is(":disabled")||k.dropdown({hover:!1}),$select.attr("tabindex")&&a(k[0]).attr("tabindex",$select.attr("tabindex")),$select.addClass("initialized"),k.on("focus",function(){a(this).trigger("open"),f=a(this).val(),selectedOption=g.find("li").filter(function(){return a(this).text().toLowerCase()===f.toLowerCase()})[0],activateOption(g,selectedOption)}),k.on("blur",function(){a(this).trigger("close")}),activateOption=function(b,c){b.find("li.active").removeClass("active"),a(c).addClass("active"),b.scrollTo(c)},filterQuery=[],onKeyDown=function(b){if(9==b.which)return void k.trigger("close");if(40==b.which&&!g.is(":visible"))return void k.trigger("open");if(13!=b.which||g.is(":visible")){b.preventDefault(),letter=String.fromCharCode(b.which).toLowerCase();var c=[9,13,27,38,40];letter&&-1===c.indexOf(b.which)&&(filterQuery.push(letter),string=filterQuery.join(""),newOption=g.find("li").filter(function(){return 0===a(this).text().toLowerCase().indexOf(string)})[0],newOption&&activateOption(g,newOption)),13==b.which&&(activeOption=g.find("li.active:not(.disabled)")[0],activeOption&&(a(activeOption).trigger("click"),k.trigger("close"))),40==b.which&&(newOption=g.find("li.active").next("li:not(.disabled)")[0],newOption&&activateOption(g,newOption)),27==b.which&&k.trigger("close"),38==b.which&&(newOption=g.find("li.active").prev("li:not(.disabled)")[0],newOption&&activateOption(g,newOption)),setTimeout(function(){filterQuery=[]},1e3)}},k.on("keydown",onKeyDown)}})}}(jQuery),function(a){var b={init:function(b){var c={indicators:!0,height:400,transition:500,interval:6e3};return b=a.extend(c,b),this.each(function(){function c(a,b){a.hasClass("center-align")?a.velocity({opacity:0,translateY:-100},{duration:b,queue:!1}):a.hasClass("right-align")?a.velocity({opacity:0,translateX:100},{duration:b,queue:!1}):a.hasClass("left-align")&&a.velocity({opacity:0,translateX:-100},{duration:b,queue:!1})}function d(a){a>=h.length?a=0:0>a&&(a=h.length-1),i=g.find(".active").index(),i!=a&&(e=h.eq(i),$caption=e.find(".caption"),e.removeClass("active"),e.velocity({opacity:0},{duration:b.transition,queue:!1,easing:"easeOutQuad",complete:function(){h.not(".active").velocity({opacity:0,translateX:0,translateY:0},{duration:0,queue:!1})}}),c($caption,b.transition),b.indicators&&j.eq(i).removeClass("active"),h.eq(a).velocity({opacity:1},{duration:b.transition,queue:!1,easing:"easeOutQuad"}),h.eq(a).find(".caption").velocity({opacity:1,translateX:0,translateY:0},{duration:b.transition,delay:b.transition,queue:!1,easing:"easeOutQuad"}),h.eq(a).addClass("active"),b.indicators&&j.eq(a).addClass("active"))}var e,f=a(this),g=f.find("ul.slides").first(),h=g.find("li"),i=g.find(".active").index();if(-1!=i&&(e=h.eq(i)),f.hasClass("fullscreen")||(b.indicators?f.height(b.height+40):f.height(b.height),g.height(b.height)),h.find(".caption").each(function(){c(a(this),0)}),h.find("img").each(function(){a(this).css("background-image","url("+a(this).attr("src")+")"),a(this).attr("src","data:image/gif;base64,R0lGODlhAQABAIABAP///wAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==")}),b.indicators){var j=a('<ul class="indicators"></ul>');h.each(function(c){var e=a('<li class="indicator-item"></li>');e.click(function(){var c=g.parent(),e=c.find(a(this)).index();d(e),clearInterval($interval),$interval=setInterval(function(){i=g.find(".active").index(),h.length==i+1?i=0:i+=1,d(i)},b.transition+b.interval)}),j.append(e)}),f.append(j),j=f.find("ul.indicators").find("li.indicator-item")}e?e.show():(h.first().addClass("active").velocity({opacity:1},{duration:b.transition,queue:!1,easing:"easeOutQuad"}),i=0,e=h.eq(i),b.indicators&&j.eq(i).addClass("active")),e.find("img").each(function(){e.find(".caption").velocity({opacity:1,translateX:0,translateY:0},{duration:b.transition,queue:!1,easing:"easeOutQuad"})}),$interval=setInterval(function(){i=g.find(".active").index(),d(i+1)},b.transition+b.interval);var k=!1,l=!1,m=!1;f.hammer({prevent_default:!1}).bind("pan",function(a){if("touch"===a.gesture.pointerType){clearInterval($interval);var b=a.gesture.direction,c=a.gesture.deltaX,d=a.gesture.velocityX;$curr_slide=g.find(".active"),$curr_slide.velocity({translateX:c},{duration:50,queue:!1,easing:"easeOutQuad"}),4===b&&(c>f.innerWidth()/2||-.65>d)?m=!0:2===b&&(c<-1*f.innerWidth()/2||d>.65)&&(l=!0);var e;l&&(e=$curr_slide.next(),0===e.length&&(e=h.first()),e.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad"})),m&&(e=$curr_slide.prev(),0===e.length&&(e=h.last()),e.velocity({opacity:1},{duration:300,queue:!1,easing:"easeOutQuad"}))}}).bind("panend",function(a){"touch"===a.gesture.pointerType&&($curr_slide=g.find(".active"),k=!1,curr_index=g.find(".active").index(),m||l?l?(d(curr_index+1),$curr_slide.velocity({translateX:-1*f.innerWidth()},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){$curr_slide.velocity({opacity:0,translateX:0},{duration:0,queue:!1})}})):m&&(d(curr_index-1),$curr_slide.velocity({translateX:f.innerWidth()},{duration:300,queue:!1,easing:"easeOutQuad",complete:function(){$curr_slide.velocity({opacity:0,translateX:0},{duration:0,queue:!1})}})):$curr_slide.velocity({translateX:0},{duration:300,queue:!1,easing:"easeOutQuad"}),l=!1,m=!1,clearInterval($interval),$interval=setInterval(function(){i=g.find(".active").index(),h.length==i+1?i=0:i+=1,d(i)},b.transition+b.interval))}),f.on("sliderPause",function(){clearInterval($interval)}),f.on("sliderStart",function(){clearInterval($interval),$interval=setInterval(function(){i=g.find(".active").index(),h.length==i+1?i=0:i+=1,d(i)},b.transition+b.interval)})})},pause:function(){a(this).trigger("sliderPause")},start:function(){a(this).trigger("sliderStart")}};a.fn.slider=function(c){return b[c]?b[c].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof c&&c?void a.error("Method "+c+" does not exist on jQuery.tooltip"):b.init.apply(this,arguments); | ||
9 | }}(jQuery),function(a){a(document).ready(function(){a(document).on("click.card",".card",function(b){a(this).find("> .card-reveal").length&&(a(b.target).is(a(".card-reveal .card-title"))||a(b.target).is(a(".card-reveal .card-title i"))?a(this).find(".card-reveal").velocity({translateY:0},{duration:225,queue:!1,easing:"easeInOutQuad",complete:function(){a(this).css({display:"none"})}}):(a(b.target).is(a(".card .activator"))||a(b.target).is(a(".card .activator i")))&&a(this).find(".card-reveal").css({display:"block"}).velocity("stop",!1).velocity({translateY:"-100%"},{duration:300,queue:!1,easing:"easeInOutQuad"}))})})}(jQuery),function(a){a(document).ready(function(){a(document).on("click.chip",".chip .material-icons",function(b){a(this).parent().remove()})})}(jQuery),function(a){a(document).ready(function(){a.fn.pushpin=function(b){var c={top:0,bottom:1/0,offset:0};return b=a.extend(c,b),$index=0,this.each(function(){function c(a){a.removeClass("pin-top"),a.removeClass("pinned"),a.removeClass("pin-bottom")}function d(d,e){d.each(function(){b.top<=e&&b.bottom>=e&&!a(this).hasClass("pinned")&&(c(a(this)),a(this).css("top",b.offset),a(this).addClass("pinned")),e<b.top&&!a(this).hasClass("pin-top")&&(c(a(this)),a(this).css("top",0),a(this).addClass("pin-top")),e>b.bottom&&!a(this).hasClass("pin-bottom")&&(c(a(this)),a(this).addClass("pin-bottom"),a(this).css("top",b.bottom-g))})}var e=Materialize.guid(),f=a(this),g=a(this).offset().top;d(f,a(window).scrollTop()),a(window).on("scroll."+e,function(){var c=a(window).scrollTop()+b.offset;d(f,c)})})}})}(jQuery),function(a){a(document).ready(function(){a.fn.reverse=[].reverse,a(document).on("mouseenter.fixedActionBtn",".fixed-action-btn",function(c){var d=a(this);b(d)}),a(document).on("mouseleave.fixedActionBtn",".fixed-action-btn",function(b){var d=a(this);c(d)})}),a.fn.extend({openFAB:function(){var c=a(this);b(c)},closeFAB:function(){c($this)}});var b=function(b){if($this=b,$this.hasClass("active")===!1){$this.addClass("active"),$this.find("ul .btn-floating").velocity({scaleY:".4",scaleX:".4",translateY:"40px"},{duration:0});var c=0;$this.find("ul .btn-floating").reverse().each(function(){a(this).velocity({opacity:"1",scaleX:"1",scaleY:"1",translateY:"0"},{duration:80,delay:c}),c+=40})}},c=function(a){$this=a,$this.removeClass("active");$this.find("ul .btn-floating").velocity("stop",!0),$this.find("ul .btn-floating").velocity({opacity:"0",scaleX:".4",scaleY:".4",translateY:"40px"},{duration:80})}}(jQuery),function(a){Materialize.fadeInImage=function(b){var c=a(b);c.css({opacity:0}),a(c).velocity({opacity:1},{duration:650,queue:!1,easing:"easeOutSine"}),a(c).velocity({opacity:1},{duration:1300,queue:!1,easing:"swing",step:function(b,c){c.start=100;var d=b/100,e=150-(100-b)/1.75;100>e&&(e=100),b>=0&&a(this).css({"-webkit-filter":"grayscale("+d+")brightness("+e+"%)",filter:"grayscale("+d+")brightness("+e+"%)"})}})},Materialize.showStaggeredList=function(b){var c=0;a(b).find("li").velocity({translateX:"-100px"},{duration:0}),a(b).find("li").each(function(){a(this).velocity({opacity:"1",translateX:"0"},{duration:800,delay:c,easing:[60,10]}),c+=120})},a(document).ready(function(){var b=!1,c=!1;a(".dismissable").each(function(){a(this).hammer({prevent_default:!1}).bind("pan",function(d){if("touch"===d.gesture.pointerType){var e=a(this),f=d.gesture.direction,g=d.gesture.deltaX,h=d.gesture.velocityX;e.velocity({translateX:g},{duration:50,queue:!1,easing:"easeOutQuad"}),4===f&&(g>e.innerWidth()/2||-.75>h)&&(b=!0),2===f&&(g<-1*e.innerWidth()/2||h>.75)&&(c=!0)}}).bind("panend",function(d){if(Math.abs(d.gesture.deltaX)<a(this).innerWidth()/2&&(c=!1,b=!1),"touch"===d.gesture.pointerType){var e=a(this);if(b||c){var f;f=b?e.innerWidth():-1*e.innerWidth(),e.velocity({translateX:f},{duration:100,queue:!1,easing:"easeOutQuad",complete:function(){e.css("border","none"),e.velocity({height:0,padding:0},{duration:200,queue:!1,easing:"easeOutQuad",complete:function(){e.remove()}})}})}else e.velocity({translateX:0},{duration:100,queue:!1,easing:"easeOutQuad"});b=!1,c=!1}})})})}(jQuery),function(a){Materialize.scrollFire=function(a){var b=!1;window.addEventListener("scroll",function(){b=!0}),setInterval(function(){if(b){b=!1;for(var c=window.pageYOffset+window.innerHeight,d=0;d<a.length;d++){var e=a[d],f=e.selector,g=e.offset,h=e.callback,i=document.querySelector(f);if(null!==i){var j=i.getBoundingClientRect().top+window.pageYOffset;if(c>j+g&&e.done!==!0){var k=new Function(h);k(),e.done=!0}}}}},100)}}(jQuery),function(a){"function"==typeof define&&define.amd?define("picker",["jquery"],a):"object"==typeof exports?module.exports=a(require("jquery")):this.Picker=a(jQuery)}(function(a){function b(f,g,i,l){function m(){return b._.node("div",b._.node("div",b._.node("div",b._.node("div",y.component.nodes(t.open),v.box),v.wrap),v.frame),v.holder)}function n(){w.data(g,y).addClass(v.input).attr("tabindex",-1).val(w.data("value")?y.get("select",u.format):f.value),u.editable||w.on("focus."+t.id+" click."+t.id,function(a){a.preventDefault(),y.$root[0].focus()}).on("keydown."+t.id,q),e(f,{haspopup:!0,expanded:!1,readonly:!1,owns:f.id+"_root"})}function o(){y.$root.on({keydown:q,focusin:function(a){y.$root.removeClass(v.focused),a.stopPropagation()},"mousedown click":function(b){var c=b.target;c!=y.$root.children()[0]&&(b.stopPropagation(),"mousedown"!=b.type||a(c).is("input, select, textarea, button, option")||(b.preventDefault(),y.$root[0].focus()))}}).on({focus:function(){w.addClass(v.target)},blur:function(){w.removeClass(v.target)}}).on("focus.toOpen",r).on("click","[data-pick], [data-nav], [data-clear], [data-close]",function(){var b=a(this),c=b.data(),d=b.hasClass(v.navDisabled)||b.hasClass(v.disabled),e=h();e=e&&(e.type||e.href),(d||e&&!a.contains(y.$root[0],e))&&y.$root[0].focus(),!d&&c.nav?y.set("highlight",y.component.item.highlight,{nav:c.nav}):!d&&"pick"in c?y.set("select",c.pick):c.clear?y.clear().close(!0):c.close&&y.close(!0)}),e(y.$root[0],"hidden",!0)}function p(){var b;u.hiddenName===!0?(b=f.name,f.name=""):(b=["string"==typeof u.hiddenPrefix?u.hiddenPrefix:"","string"==typeof u.hiddenSuffix?u.hiddenSuffix:"_submit"],b=b[0]+f.name+b[1]),y._hidden=a('<input type=hidden name="'+b+'"'+(w.data("value")||f.value?' value="'+y.get("select",u.formatSubmit)+'"':"")+">")[0],w.on("change."+t.id,function(){y._hidden.value=f.value?y.get("select",u.formatSubmit):""}),u.container?a(u.container).append(y._hidden):w.after(y._hidden)}function q(a){var b=a.keyCode,c=/^(8|46)$/.test(b);return 27==b?(y.close(),!1):void((32==b||c||!t.open&&y.component.key[b])&&(a.preventDefault(),a.stopPropagation(),c?y.clear().close():y.open()))}function r(a){a.stopPropagation(),"focus"==a.type&&y.$root.addClass(v.focused),y.open()}if(!f)return b;var s=!1,t={id:f.id||"P"+Math.abs(~~(Math.random()*new Date))},u=i?a.extend(!0,{},i.defaults,l):l||{},v=a.extend({},b.klasses(),u.klass),w=a(f),x=function(){return this.start()},y=x.prototype={constructor:x,$node:w,start:function(){return t&&t.start?y:(t.methods={},t.start=!0,t.open=!1,t.type=f.type,f.autofocus=f==h(),f.readOnly=!u.editable,f.id=f.id||t.id,"text"!=f.type&&(f.type="text"),y.component=new i(y,u),y.$root=a(b._.node("div",m(),v.picker,'id="'+f.id+'_root" tabindex="0"')),o(),u.formatSubmit&&p(),n(),u.container?a(u.container).append(y.$root):w.after(y.$root),y.on({start:y.component.onStart,render:y.component.onRender,stop:y.component.onStop,open:y.component.onOpen,close:y.component.onClose,set:y.component.onSet}).on({start:u.onStart,render:u.onRender,stop:u.onStop,open:u.onOpen,close:u.onClose,set:u.onSet}),s=c(y.$root.children()[0]),f.autofocus&&y.open(),y.trigger("start").trigger("render"))},render:function(a){return a?y.$root.html(m()):y.$root.find("."+v.box).html(y.component.nodes(t.open)),y.trigger("render")},stop:function(){return t.start?(y.close(),y._hidden&&y._hidden.parentNode.removeChild(y._hidden),y.$root.remove(),w.removeClass(v.input).removeData(g),setTimeout(function(){w.off("."+t.id)},0),f.type=t.type,f.readOnly=!1,y.trigger("stop"),t.methods={},t.start=!1,y):y},open:function(c){return t.open?y:(w.addClass(v.active),e(f,"expanded",!0),setTimeout(function(){y.$root.addClass(v.opened),e(y.$root[0],"hidden",!1)},0),c!==!1&&(t.open=!0,s&&k.css("overflow","hidden").css("padding-right","+="+d()),y.$root[0].focus(),j.on("click."+t.id+" focusin."+t.id,function(a){var b=a.target;b!=f&&b!=document&&3!=a.which&&y.close(b===y.$root.children()[0])}).on("keydown."+t.id,function(c){var d=c.keyCode,e=y.component.key[d],f=c.target;27==d?y.close(!0):f!=y.$root[0]||!e&&13!=d?a.contains(y.$root[0],f)&&13==d&&(c.preventDefault(),f.click()):(c.preventDefault(),e?b._.trigger(y.component.key.go,y,[b._.trigger(e)]):y.$root.find("."+v.highlighted).hasClass(v.disabled)||y.set("select",y.component.item.highlight).close())})),y.trigger("open"))},close:function(a){return a&&(y.$root.off("focus.toOpen")[0].focus(),setTimeout(function(){y.$root.on("focus.toOpen",r)},0)),w.removeClass(v.active),e(f,"expanded",!1),setTimeout(function(){y.$root.removeClass(v.opened+" "+v.focused),e(y.$root[0],"hidden",!0)},0),t.open?(t.open=!1,s&&k.css("overflow","").css("padding-right","-="+d()),j.off("."+t.id),y.trigger("close")):y},clear:function(a){return y.set("clear",null,a)},set:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(d=g&&a.isPlainObject(c)?c:d||{},b){g||(h[b]=c);for(e in h)f=h[e],e in y.component.item&&(void 0===f&&(f=null),y.component.set(e,f,d)),("select"==e||"clear"==e)&&w.val("clear"==e?"":y.get(e,u.format)).trigger("change");y.render()}return d.muted?y:y.trigger("set",h)},get:function(a,c){if(a=a||"value",null!=t[a])return t[a];if("valueSubmit"==a){if(y._hidden)return y._hidden.value;a="value"}if("value"==a)return f.value;if(a in y.component.item){if("string"==typeof c){var d=y.component.get(a);return d?b._.trigger(y.component.formats.toString,y.component,[c,d]):""}return y.component.get(a)}},on:function(b,c,d){var e,f,g=a.isPlainObject(b),h=g?b:{};if(b){g||(h[b]=c);for(e in h)f=h[e],d&&(e="_"+e),t.methods[e]=t.methods[e]||[],t.methods[e].push(f)}return y},off:function(){var a,b,c=arguments;for(a=0,namesCount=c.length;a<namesCount;a+=1)b=c[a],b in t.methods&&delete t.methods[b];return y},trigger:function(a,c){var d=function(a){var d=t.methods[a];d&&d.map(function(a){b._.trigger(a,y,[c])})};return d("_"+a),d(a),y}};return new x}function c(a){var b,c="position";return a.currentStyle?b=a.currentStyle[c]:window.getComputedStyle&&(b=getComputedStyle(a)[c]),"fixed"==b}function d(){if(k.height()<=i.height())return 0;var b=a('<div style="visibility:hidden;width:100px" />').appendTo("body"),c=b[0].offsetWidth;b.css("overflow","scroll");var d=a('<div style="width:100%" />').appendTo(b),e=d[0].offsetWidth;return b.remove(),c-e}function e(b,c,d){if(a.isPlainObject(c))for(var e in c)f(b,e,c[e]);else f(b,c,d)}function f(a,b,c){a.setAttribute(("role"==b?"":"aria-")+b,c)}function g(b,c){a.isPlainObject(b)||(b={attribute:c}),c="";for(var d in b){var e=("role"==d?"":"aria-")+d,f=b[d];c+=null==f?"":e+'="'+b[d]+'"'}return c}function h(){try{return document.activeElement}catch(a){}}var i=a(window),j=a(document),k=a(document.documentElement);return b.klasses=function(a){return a=a||"picker",{picker:a,opened:a+"--opened",focused:a+"--focused",input:a+"__input",active:a+"__input--active",target:a+"__input--target",holder:a+"__holder",frame:a+"__frame",wrap:a+"__wrap",box:a+"__box"}},b._={group:function(a){for(var c,d="",e=b._.trigger(a.min,a);e<=b._.trigger(a.max,a,[e]);e+=a.i)c=b._.trigger(a.item,a,[e]),d+=b._.node(a.node,c[0],c[1],c[2]);return d},node:function(b,c,d,e){return c?(c=a.isArray(c)?c.join(""):c,d=d?' class="'+d+'"':"",e=e?" "+e:"","<"+b+d+e+">"+c+"</"+b+">"):""},lead:function(a){return(10>a?"0":"")+a},trigger:function(a,b,c){return"function"==typeof a?a.apply(b,c||[]):a},digits:function(a){return/\d/.test(a[1])?2:1},isDate:function(a){return{}.toString.call(a).indexOf("Date")>-1&&this.isInteger(a.getDate())},isInteger:function(a){return{}.toString.call(a).indexOf("Number")>-1&&a%1===0},ariaAttr:g},b.extend=function(c,d){a.fn[c]=function(e,f){var g=this.data(c);return"picker"==e?g:g&&"string"==typeof e?b._.trigger(g[e],g,[f]):this.each(function(){var f=a(this);f.data(c)||new b(this,c,d,e)})},a.fn[c].defaults=d.defaults},b}),function(a){"function"==typeof define&&define.amd?define(["picker","jquery"],a):"object"==typeof exports?module.exports=a(require("./picker.js"),require("jquery")):a(Picker,jQuery)}(function(a,b){function c(a,b){var c=this,d=a.$node[0],e=d.value,f=a.$node.data("value"),g=f||e,h=f?b.formatSubmit:b.format,i=function(){return d.currentStyle?"rtl"==d.currentStyle.direction:"rtl"==getComputedStyle(a.$root[0]).direction};c.settings=b,c.$node=a.$node,c.queue={min:"measure create",max:"measure create",now:"now create",select:"parse create validate",highlight:"parse navigate create validate",view:"parse create validate viewset",disable:"deactivate",enable:"activate"},c.item={},c.item.clear=null,c.item.disable=(b.disable||[]).slice(0),c.item.enable=-function(a){return a[0]===!0?a.shift():-1}(c.item.disable),c.set("min",b.min).set("max",b.max).set("now"),g?c.set("select",g,{format:h}):c.set("select",null).set("highlight",c.item.now),c.key={40:7,38:-7,39:function(){return i()?-1:1},37:function(){return i()?1:-1},go:function(a){var b=c.item.highlight,d=new Date(b.year,b.month,b.date+a);c.set("highlight",d,{interval:a}),this.render()}},a.on("render",function(){a.$root.find("."+b.klass.selectMonth).on("change",function(){var c=this.value;c&&(a.set("highlight",[a.get("view").year,c,a.get("highlight").date]),a.$root.find("."+b.klass.selectMonth).trigger("focus"))}),a.$root.find("."+b.klass.selectYear).on("change",function(){var c=this.value;c&&(a.set("highlight",[c,a.get("view").month,a.get("highlight").date]),a.$root.find("."+b.klass.selectYear).trigger("focus"))})},1).on("open",function(){var d="";c.disabled(c.get("now"))&&(d=":not(."+b.klass.buttonToday+")"),a.$root.find("button"+d+", select").attr("disabled",!1)},1).on("close",function(){a.$root.find("button, select").attr("disabled",!0)},1)}var d=7,e=6,f=a._;c.prototype.set=function(a,b,c){var d=this,e=d.item;return null===b?("clear"==a&&(a="select"),e[a]=b,d):(e["enable"==a?"disable":"flip"==a?"enable":a]=d.queue[a].split(" ").map(function(e){return b=d[e](a,b,c)}).pop(),"select"==a?d.set("highlight",e.select,c):"highlight"==a?d.set("view",e.highlight,c):a.match(/^(flip|min|max|disable|enable)$/)&&(e.select&&d.disabled(e.select)&&d.set("select",e.select,c),e.highlight&&d.disabled(e.highlight)&&d.set("highlight",e.highlight,c)),d)},c.prototype.get=function(a){return this.item[a]},c.prototype.create=function(a,c,d){var e,g=this;return c=void 0===c?a:c,c==-(1/0)||c==1/0?e=c:b.isPlainObject(c)&&f.isInteger(c.pick)?c=c.obj:b.isArray(c)?(c=new Date(c[0],c[1],c[2]),c=f.isDate(c)?c:g.create().obj):c=f.isInteger(c)||f.isDate(c)?g.normalize(new Date(c),d):g.now(a,c,d),{year:e||c.getFullYear(),month:e||c.getMonth(),date:e||c.getDate(),day:e||c.getDay(),obj:e||c,pick:e||c.getTime()}},c.prototype.createRange=function(a,c){var d=this,e=function(a){return a===!0||b.isArray(a)||f.isDate(a)?d.create(a):a};return f.isInteger(a)||(a=e(a)),f.isInteger(c)||(c=e(c)),f.isInteger(a)&&b.isPlainObject(c)?a=[c.year,c.month,c.date+a]:f.isInteger(c)&&b.isPlainObject(a)&&(c=[a.year,a.month,a.date+c]),{from:e(a),to:e(c)}},c.prototype.withinRange=function(a,b){return a=this.createRange(a.from,a.to),b.pick>=a.from.pick&&b.pick<=a.to.pick},c.prototype.overlapRanges=function(a,b){var c=this;return a=c.createRange(a.from,a.to),b=c.createRange(b.from,b.to),c.withinRange(a,b.from)||c.withinRange(a,b.to)||c.withinRange(b,a.from)||c.withinRange(b,a.to)},c.prototype.now=function(a,b,c){return b=new Date,c&&c.rel&&b.setDate(b.getDate()+c.rel),this.normalize(b,c)},c.prototype.navigate=function(a,c,d){var e,f,g,h,i=b.isArray(c),j=b.isPlainObject(c),k=this.item.view;if(i||j){for(j?(f=c.year,g=c.month,h=c.date):(f=+c[0],g=+c[1],h=+c[2]),d&&d.nav&&k&&k.month!==g&&(f=k.year,g=k.month),e=new Date(f,g+(d&&d.nav?d.nav:0),1),f=e.getFullYear(),g=e.getMonth();new Date(f,g,h).getMonth()!==g;)h-=1;c=[f,g,h]}return c},c.prototype.normalize=function(a){return a.setHours(0,0,0,0),a},c.prototype.measure=function(a,b){var c=this;return b?"string"==typeof b?b=c.parse(a,b):f.isInteger(b)&&(b=c.now(a,b,{rel:b})):b="min"==a?-(1/0):1/0,b},c.prototype.viewset=function(a,b){return this.create([b.year,b.month,1])},c.prototype.validate=function(a,c,d){var e,g,h,i,j=this,k=c,l=d&&d.interval?d.interval:1,m=-1===j.item.enable,n=j.item.min,o=j.item.max,p=m&&j.item.disable.filter(function(a){if(b.isArray(a)){var d=j.create(a).pick;d<c.pick?e=!0:d>c.pick&&(g=!0)}return f.isInteger(a)}).length;if((!d||!d.nav)&&(!m&&j.disabled(c)||m&&j.disabled(c)&&(p||e||g)||!m&&(c.pick<=n.pick||c.pick>=o.pick)))for(m&&!p&&(!g&&l>0||!e&&0>l)&&(l*=-1);j.disabled(c)&&(Math.abs(l)>1&&(c.month<k.month||c.month>k.month)&&(c=k,l=l>0?1:-1),c.pick<=n.pick?(h=!0,l=1,c=j.create([n.year,n.month,n.date+(c.pick===n.pick?0:-1)])):c.pick>=o.pick&&(i=!0,l=-1,c=j.create([o.year,o.month,o.date+(c.pick===o.pick?0:1)])),!h||!i);)c=j.create([c.year,c.month,c.date+l]);return c},c.prototype.disabled=function(a){var c=this,d=c.item.disable.filter(function(d){return f.isInteger(d)?a.day===(c.settings.firstDay?d:d-1)%7:b.isArray(d)||f.isDate(d)?a.pick===c.create(d).pick:b.isPlainObject(d)?c.withinRange(d,a):void 0});return d=d.length&&!d.filter(function(a){return b.isArray(a)&&"inverted"==a[3]||b.isPlainObject(a)&&a.inverted}).length,-1===c.item.enable?!d:d||a.pick<c.item.min.pick||a.pick>c.item.max.pick},c.prototype.parse=function(a,b,c){var d=this,e={};return b&&"string"==typeof b?(c&&c.format||(c=c||{},c.format=d.settings.format),d.formats.toArray(c.format).map(function(a){var c=d.formats[a],g=c?f.trigger(c,d,[b,e]):a.replace(/^!/,"").length;c&&(e[a]=b.substr(0,g)),b=b.substr(g)}),[e.yyyy||e.yy,+(e.mm||e.m)-1,e.dd||e.d]):b},c.prototype.formats=function(){function a(a,b,c){var d=a.match(/\w+/)[0];return c.mm||c.m||(c.m=b.indexOf(d)+1),d.length}function b(a){return a.match(/\w+/)[0].length}return{d:function(a,b){return a?f.digits(a):b.date},dd:function(a,b){return a?2:f.lead(b.date)},ddd:function(a,c){return a?b(a):this.settings.weekdaysShort[c.day]},dddd:function(a,c){return a?b(a):this.settings.weekdaysFull[c.day]},m:function(a,b){return a?f.digits(a):b.month+1},mm:function(a,b){return a?2:f.lead(b.month+1)},mmm:function(b,c){var d=this.settings.monthsShort;return b?a(b,d,c):d[c.month]},mmmm:function(b,c){var d=this.settings.monthsFull;return b?a(b,d,c):d[c.month]},yy:function(a,b){return a?2:(""+b.year).slice(2)},yyyy:function(a,b){return a?4:b.year},toArray:function(a){return a.split(/(d{1,4}|m{1,4}|y{4}|yy|!.)/g)},toString:function(a,b){var c=this;return c.formats.toArray(a).map(function(a){return f.trigger(c.formats[a],c,[0,b])||a.replace(/^!/,"")}).join("")}}}(),c.prototype.isDateExact=function(a,c){var d=this;return f.isInteger(a)&&f.isInteger(c)||"boolean"==typeof a&&"boolean"==typeof c?a===c:(f.isDate(a)||b.isArray(a))&&(f.isDate(c)||b.isArray(c))?d.create(a).pick===d.create(c).pick:b.isPlainObject(a)&&b.isPlainObject(c)?d.isDateExact(a.from,c.from)&&d.isDateExact(a.to,c.to):!1},c.prototype.isDateOverlap=function(a,c){var d=this,e=d.settings.firstDay?1:0;return f.isInteger(a)&&(f.isDate(c)||b.isArray(c))?(a=a%7+e,a===d.create(c).day+1):f.isInteger(c)&&(f.isDate(a)||b.isArray(a))?(c=c%7+e,c===d.create(a).day+1):b.isPlainObject(a)&&b.isPlainObject(c)?d.overlapRanges(a,c):!1},c.prototype.flipEnable=function(a){var b=this.item;b.enable=a||(-1==b.enable?1:-1)},c.prototype.deactivate=function(a,c){var d=this,e=d.item.disable.slice(0);return"flip"==c?d.flipEnable():c===!1?(d.flipEnable(1),e=[]):c===!0?(d.flipEnable(-1),e=[]):c.map(function(a){for(var c,g=0;g<e.length;g+=1)if(d.isDateExact(a,e[g])){c=!0;break}c||(f.isInteger(a)||f.isDate(a)||b.isArray(a)||b.isPlainObject(a)&&a.from&&a.to)&&e.push(a)}),e},c.prototype.activate=function(a,c){var d=this,e=d.item.disable,g=e.length;return"flip"==c?d.flipEnable():c===!0?(d.flipEnable(1),e=[]):c===!1?(d.flipEnable(-1),e=[]):c.map(function(a){var c,h,i,j;for(i=0;g>i;i+=1){if(h=e[i],d.isDateExact(h,a)){c=e[i]=null,j=!0;break}if(d.isDateOverlap(h,a)){b.isPlainObject(a)?(a.inverted=!0,c=a):b.isArray(a)?(c=a,c[3]||c.push("inverted")):f.isDate(a)&&(c=[a.getFullYear(),a.getMonth(),a.getDate(),"inverted"]);break}}if(c)for(i=0;g>i;i+=1)if(d.isDateExact(e[i],a)){e[i]=null;break}if(j)for(i=0;g>i;i+=1)if(d.isDateOverlap(e[i],a)){e[i]=null;break}c&&e.push(c)}),e.filter(function(a){return null!=a})},c.prototype.nodes=function(a){var b=this,c=b.settings,g=b.item,h=g.now,i=g.select,j=g.highlight,k=g.view,l=g.disable,m=g.min,n=g.max,o=function(a,b){return c.firstDay&&(a.push(a.shift()),b.push(b.shift())),f.node("thead",f.node("tr",f.group({min:0,max:d-1,i:1,node:"th",item:function(d){return[a[d],c.klass.weekdays,'scope=col title="'+b[d]+'"']}})))}((c.showWeekdaysFull?c.weekdaysFull:c.weekdaysLetter).slice(0),c.weekdaysFull.slice(0)),p=function(a){return f.node("div"," ",c.klass["nav"+(a?"Next":"Prev")]+(a&&k.year>=n.year&&k.month>=n.month||!a&&k.year<=m.year&&k.month<=m.month?" "+c.klass.navDisabled:""),"data-nav="+(a||-1)+" "+f.ariaAttr({role:"button",controls:b.$node[0].id+"_table"})+' title="'+(a?c.labelMonthNext:c.labelMonthPrev)+'"')},q=function(d){var e=c.showMonthsShort?c.monthsShort:c.monthsFull;return"short_months"==d&&(e=c.monthsShort),c.selectMonths&&void 0==d?f.node("select",f.group({min:0,max:11,i:1,node:"option",item:function(a){return[e[a],0,"value="+a+(k.month==a?" selected":"")+(k.year==m.year&&a<m.month||k.year==n.year&&a>n.month?" disabled":"")]}}),c.klass.selectMonth+" browser-default",(a?"":"disabled")+" "+f.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelMonthSelect+'"'):"short_months"==d?null!=i?f.node("div",e[i.month]):f.node("div",e[k.month]):f.node("div",e[k.month],c.klass.month)},r=function(d){var e=k.year,g=c.selectYears===!0?5:~~(c.selectYears/2);if(g){var h=m.year,i=n.year,j=e-g,l=e+g;if(h>j&&(l+=h-j,j=h),l>i){var o=j-h,p=l-i;j-=o>p?p:o,l=i}if(c.selectYears&&void 0==d)return f.node("select",f.group({min:j,max:l,i:1,node:"option",item:function(a){return[a,0,"value="+a+(e==a?" selected":"")]}}),c.klass.selectYear+" browser-default",(a?"":"disabled")+" "+f.ariaAttr({controls:b.$node[0].id+"_table"})+' title="'+c.labelYearSelect+'"')}return"raw"==d?f.node("div",e):f.node("div",e,c.klass.year)};return createDayLabel=function(){return null!=i?f.node("div",i.date):f.node("div",h.date)},createWeekdayLabel=function(){var a;a=null!=i?i.day:h.day;var b=c.weekdaysFull[a];return b},f.node("div",f.node("div",createWeekdayLabel(),"picker__weekday-display")+f.node("div",q("short_months"),c.klass.month_display)+f.node("div",createDayLabel(),c.klass.day_display)+f.node("div",r("raw"),c.klass.year_display),c.klass.date_display)+f.node("div",f.node("div",(c.selectYears?q()+r():q()+r())+p()+p(1),c.klass.header)+f.node("table",o+f.node("tbody",f.group({min:0,max:e-1,i:1,node:"tr",item:function(a){var e=c.firstDay&&0===b.create([k.year,k.month,1]).day?-7:0;return[f.group({min:d*a-k.day+e+1,max:function(){return this.min+d-1},i:1,node:"td",item:function(a){a=b.create([k.year,k.month,a+(c.firstDay?1:0)]);var d=i&&i.pick==a.pick,e=j&&j.pick==a.pick,g=l&&b.disabled(a)||a.pick<m.pick||a.pick>n.pick,o=f.trigger(b.formats.toString,b,[c.format,a]);return[f.node("div",a.date,function(b){return b.push(k.month==a.month?c.klass.infocus:c.klass.outfocus),h.pick==a.pick&&b.push(c.klass.now),d&&b.push(c.klass.selected),e&&b.push(c.klass.highlighted),g&&b.push(c.klass.disabled),b.join(" ")}([c.klass.day]),"data-pick="+a.pick+" "+f.ariaAttr({role:"gridcell",label:o,selected:d&&b.$node.val()===o?!0:null,activedescendant:e?!0:null,disabled:g?!0:null})),"",f.ariaAttr({role:"presentation"})]}})]}})),c.klass.table,'id="'+b.$node[0].id+'_table" '+f.ariaAttr({role:"grid",controls:b.$node[0].id,readonly:!0})),c.klass.calendar_container)+f.node("div",f.node("button",c.today,"btn-flat picker__today","type=button data-pick="+h.pick+(a&&!b.disabled(h)?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id}))+f.node("button",c.clear,"btn-flat picker__clear","type=button data-clear=1"+(a?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id}))+f.node("button",c.close,"btn-flat picker__close","type=button data-close=true "+(a?"":" disabled")+" "+f.ariaAttr({controls:b.$node[0].id})),c.klass.footer)},c.defaults=function(a){return{labelMonthNext:"Next month",labelMonthPrev:"Previous month",labelMonthSelect:"Select a month",labelYearSelect:"Select a year",monthsFull:["January","February","March","April","May","June","July","August","September","October","November","December"],monthsShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],weekdaysFull:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],weekdaysShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],weekdaysLetter:["S","M","T","W","T","F","S"],today:"Today",clear:"Clear",close:"Close",format:"d mmmm, yyyy",klass:{table:a+"table",header:a+"header",date_display:a+"date-display",day_display:a+"day-display",month_display:a+"month-display",year_display:a+"year-display",calendar_container:a+"calendar-container",navPrev:a+"nav--prev",navNext:a+"nav--next",navDisabled:a+"nav--disabled",month:a+"month",year:a+"year",selectMonth:a+"select--month",selectYear:a+"select--year",weekdays:a+"weekday",day:a+"day",disabled:a+"day--disabled",selected:a+"day--selected",highlighted:a+"day--highlighted",now:a+"day--today",infocus:a+"day--infocus",outfocus:a+"day--outfocus",footer:a+"footer",buttonClear:a+"button--clear",buttonToday:a+"button--today",buttonClose:a+"button--close"}}}(a.klasses().picker+"__"),a.extend("pickadate",c)}),function(a){function b(){var b=+a(this).attr("length"),c=+a(this).val().length,d=b>=c;a(this).parent().find('span[class="character-counter"]').html(c+"/"+b),e(d,a(this))}function c(b){var c=a("<span/>").addClass("character-counter").css("float","right").css("font-size","12px").css("height",1);b.parent().append(c)}function d(){a(this).parent().find('span[class="character-counter"]').html("")}function e(a,b){var c=b.hasClass("invalid");a&&c?b.removeClass("invalid"):a||c||(b.removeClass("valid"),b.addClass("invalid"))}a.fn.characterCounter=function(){return this.each(function(){var e=void 0!==a(this).attr("length");e&&(a(this).on("input",b),a(this).on("focus",b),a(this).on("blur",d),c(a(this)))})},a(document).ready(function(){a("input, textarea").characterCounter()})}(jQuery); \ No newline at end of file | ||
diff --git a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/restoreScroll.js b/src/Wallabag/CoreBundle/Resources/public/themes/material/js/restoreScroll.js deleted file mode 100644 index 331c9e19..00000000 --- a/src/Wallabag/CoreBundle/Resources/public/themes/material/js/restoreScroll.js +++ /dev/null | |||
@@ -1,25 +0,0 @@ | |||
1 | function supportsLocalStorage() { | ||
2 | try { | ||
3 | return 'localStorage' in window && window['localStorage'] !== null; | ||
4 | } catch (e) { | ||
5 | return false; | ||
6 | } | ||
7 | } | ||
8 | |||
9 | function savePercent(id, percent) { | ||
10 | if (!supportsLocalStorage()) { return false; } | ||
11 | localStorage["poche.article." + id + ".percent"] = percent; | ||
12 | return true; | ||
13 | } | ||
14 | |||
15 | function retrievePercent(id) { | ||
16 | if (!supportsLocalStorage()) { return false; } | ||
17 | |||
18 | var bheight = $(document).height(); | ||
19 | var percent = localStorage["poche.article." + id + ".percent"]; | ||
20 | var scroll = bheight * percent; | ||
21 | |||
22 | $('html,body').animate({scrollTop: scroll}, 'fast'); | ||
23 | |||
24 | return true; | ||
25 | } \ No newline at end of file | ||
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml index c066aaf7..7ad5c100 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.da.yml | |||
@@ -68,6 +68,7 @@ config: | |||
68 | # 200_word: 'I read ~200 words per minute' | 68 | # 200_word: 'I read ~200 words per minute' |
69 | # 300_word: 'I read ~300 words per minute' | 69 | # 300_word: 'I read ~300 words per minute' |
70 | # 400_word: 'I read ~400 words per minute' | 70 | # 400_word: 'I read ~400 words per minute' |
71 | pocket_consumer_key_label: Brugers nøgle til Pocket for at importere materialer | ||
71 | form_rss: | 72 | form_rss: |
72 | description: 'RSS-feeds fra wallabag gør det muligt at læse de artikler, der gemmes i wallabag, med din RSS-læser. Det kræver, at du genererer et token først.' | 73 | description: 'RSS-feeds fra wallabag gør det muligt at læse de artikler, der gemmes i wallabag, med din RSS-læser. Det kræver, at du genererer et token først.' |
73 | token_label: 'RSS-Token' | 74 | token_label: 'RSS-Token' |
@@ -139,11 +140,14 @@ entry: | |||
139 | # starred: 'Starred entries' | 140 | # starred: 'Starred entries' |
140 | # archived: 'Archived entries' | 141 | # archived: 'Archived entries' |
141 | # filtered: 'Filtered entries' | 142 | # filtered: 'Filtered entries' |
143 | # filtered_tags: 'Filtered by tags' | ||
144 | # untagged: 'Untagged entries' | ||
142 | list: | 145 | list: |
143 | # number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.' | 146 | # number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.' |
144 | reading_time: 'estimeret læsetid' | 147 | reading_time: 'estimeret læsetid' |
145 | reading_time_minutes: 'estimeret læsetid: %readingTime% min' | 148 | reading_time_minutes: 'estimeret læsetid: %readingTime% min' |
146 | reading_time_less_one_minute: 'estimeret læsetid: <small class="inferieur"><</small> 1 min' | 149 | reading_time_less_one_minute: 'estimeret læsetid: <small class="inferieur"><</small> 1 min' |
150 | # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags' | ||
147 | reading_time_minutes_short: '%readingTime% min' | 151 | reading_time_minutes_short: '%readingTime% min' |
148 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' | 152 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' |
149 | original_article: 'original' | 153 | original_article: 'original' |
@@ -185,6 +189,8 @@ entry: | |||
185 | add_a_tag: 'Tliføj et tag' | 189 | add_a_tag: 'Tliføj et tag' |
186 | share_content: 'Deling' | 190 | share_content: 'Deling' |
187 | # share_email_label: 'Email' | 191 | # share_email_label: 'Email' |
192 | # public_link: 'public link' | ||
193 | # delete_public_link: 'delete public link' | ||
188 | download: 'Download' | 194 | download: 'Download' |
189 | # print: 'Print' | 195 | # print: 'Print' |
190 | problem: | 196 | problem: |
@@ -287,6 +293,7 @@ quickstart: | |||
287 | # pocket: 'Migrate from Pocket' | 293 | # pocket: 'Migrate from Pocket' |
288 | # wallabag_v1: 'Migrate from wallabag v1' | 294 | # wallabag_v1: 'Migrate from wallabag v1' |
289 | # wallabag_v2: 'Migrate from wallabag v2' | 295 | # wallabag_v2: 'Migrate from wallabag v2' |
296 | # readability: 'Migrate from Readability' | ||
290 | # developer: | 297 | # developer: |
291 | # title: 'Developers' | 298 | # title: 'Developers' |
292 | # create_application: 'Create your third application' | 299 | # create_application: 'Create your third application' |
@@ -308,6 +315,7 @@ tag: | |||
308 | page_title: 'Tags' | 315 | page_title: 'Tags' |
309 | list: | 316 | list: |
310 | # number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.' | 317 | # number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.' |
318 | # see_untagged_entries: 'See untagged entries' | ||
311 | 319 | ||
312 | import: | 320 | import: |
313 | # page_title: 'Import' | 321 | # page_title: 'Import' |
@@ -335,6 +343,24 @@ import: | |||
335 | # wallabag_v2: | 343 | # wallabag_v2: |
336 | # page_title: 'Import > Wallabag v2' | 344 | # page_title: 'Import > Wallabag v2' |
337 | # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.' | 345 | # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.' |
346 | # readability: | ||
347 | # page_title: 'Import > Readability' | ||
348 | # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).' | ||
349 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' | ||
350 | worker: | ||
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | ||
352 | # firefox: | ||
353 | # page_title: 'Import > Firefox' | ||
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | ||
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
356 | #chrome: | ||
357 | # page_title: 'Import > Chrome' | ||
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | ||
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
360 | # instapaper: | ||
361 | # page_title: 'Import > Instapaper' | ||
362 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
363 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
338 | 364 | ||
339 | developer: | 365 | developer: |
340 | # page_title: 'Developer' | 366 | # page_title: 'Developer' |
@@ -400,10 +426,10 @@ flashes: | |||
400 | notice: | 426 | notice: |
401 | # entry_already_saved: 'Entry already saved on %date%' | 427 | # entry_already_saved: 'Entry already saved on %date%' |
402 | # entry_saved: 'Entry saved' | 428 | # entry_saved: 'Entry saved' |
403 | # entry_saved_failed: 'Failed to save entry' | 429 | # entry_saved_failed: 'Entry saved but fetching content failed' |
404 | # entry_updated: 'Entry updated' | 430 | # entry_updated: 'Entry updated' |
405 | # entry_reloaded: 'Entry reloaded' | 431 | # entry_reloaded: 'Entry reloaded' |
406 | # entry_reload_failed: 'Failed to reload entry' | 432 | # entry_reload_failed: 'Entry reloaded but fetching content failed' |
407 | entry_archived: 'Artikel arkiveret' | 433 | entry_archived: 'Artikel arkiveret' |
408 | entry_unarchived: 'Artikel ikke længere arkiveret' | 434 | entry_unarchived: 'Artikel ikke længere arkiveret' |
409 | entry_starred: 'Artikel markeret som favorit' | 435 | entry_starred: 'Artikel markeret som favorit' |
@@ -417,6 +443,10 @@ flashes: | |||
417 | # failed: 'Import failed, please try again.' | 443 | # failed: 'Import failed, please try again.' |
418 | # failed_on_file: 'Error while processing import. Please verify your import file.' | 444 | # failed_on_file: 'Error while processing import. Please verify your import file.' |
419 | # summary: 'Import summary: %imported% imported, %skipped% already saved.' | 445 | # summary: 'Import summary: %imported% imported, %skipped% already saved.' |
446 | # summary_with_queue: 'Import summary: %queued% queued.' | ||
447 | error: | ||
448 | # redis_enabled_not_installed: Redis is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check Redis configuration. | ||
449 | # rabbit_enabled_not_installed: RabbitMQ is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check RabbitMQ configuration. | ||
420 | developer: | 450 | developer: |
421 | notice: | 451 | notice: |
422 | # client_created: 'New client created.' | 452 | # client_created: 'New client created.' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml index 28d826b6..650e4761 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.de.yml | |||
@@ -68,6 +68,7 @@ config: | |||
68 | 200_word: 'Ich lese ~200 Wörter pro Minute' | 68 | 200_word: 'Ich lese ~200 Wörter pro Minute' |
69 | 300_word: 'Ich lese ~300 Wörter pro Minute' | 69 | 300_word: 'Ich lese ~300 Wörter pro Minute' |
70 | 400_word: 'Ich lese ~400 Wörter pro Minute' | 70 | 400_word: 'Ich lese ~400 Wörter pro Minute' |
71 | pocket_consumer_key_label: Consumer-Key für Pocket, um Inhalte zu importieren | ||
71 | form_rss: | 72 | form_rss: |
72 | description: 'Die RSS-Feeds von wallabag erlauben es dir, deine gespeicherten Artikel mit deinem bevorzugten RSS-Reader zu lesen. Vorher musst du jedoch einen Token erstellen.' | 73 | description: 'Die RSS-Feeds von wallabag erlauben es dir, deine gespeicherten Artikel mit deinem bevorzugten RSS-Reader zu lesen. Vorher musst du jedoch einen Token erstellen.' |
73 | token_label: 'RSS-token' | 74 | token_label: 'RSS-token' |
@@ -139,11 +140,14 @@ entry: | |||
139 | starred: 'Favorisierte Einträge' | 140 | starred: 'Favorisierte Einträge' |
140 | archived: 'Archivierte Einträge' | 141 | archived: 'Archivierte Einträge' |
141 | filtered: 'Gefilterte Einträge' | 142 | filtered: 'Gefilterte Einträge' |
143 | # filtered_tags: 'Filtered by tags' | ||
144 | # untagged: 'Untagged entries' | ||
142 | list: | 145 | list: |
143 | number_on_the_page: '{0} Es gibt keine Einträge.|{1} Es gibt einen Eintrag.|]1,Inf[ Es gibt %count% Einträge.' | 146 | number_on_the_page: '{0} Es gibt keine Einträge.|{1} Es gibt einen Eintrag.|]1,Inf[ Es gibt %count% Einträge.' |
144 | reading_time: 'geschätzte Lesezeit' | 147 | reading_time: 'geschätzte Lesezeit' |
145 | reading_time_minutes: 'geschätzte Lesezeit: %readingTime% min' | 148 | reading_time_minutes: 'geschätzte Lesezeit: %readingTime% min' |
146 | reading_time_less_one_minute: 'geschätzte Lesezeit: <small class="inferieur"><</small> 1 min' | 149 | reading_time_less_one_minute: 'geschätzte Lesezeit: <small class="inferieur"><</small> 1 min' |
150 | # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags' | ||
147 | reading_time_minutes_short: '%readingTime% min' | 151 | reading_time_minutes_short: '%readingTime% min' |
148 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' | 152 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' |
149 | original_article: 'original' | 153 | original_article: 'original' |
@@ -185,6 +189,8 @@ entry: | |||
185 | add_a_tag: 'Tag hinzufügen' | 189 | add_a_tag: 'Tag hinzufügen' |
186 | share_content: 'Teilen' | 190 | share_content: 'Teilen' |
187 | share_email_label: 'E-Mail' | 191 | share_email_label: 'E-Mail' |
192 | # public_link: 'public link' | ||
193 | # delete_public_link: 'delete public link' | ||
188 | download: 'Herunterladen' | 194 | download: 'Herunterladen' |
189 | print: 'Drucken' | 195 | print: 'Drucken' |
190 | problem: | 196 | problem: |
@@ -287,6 +293,7 @@ quickstart: | |||
287 | pocket: 'von Pocket migrieren' | 293 | pocket: 'von Pocket migrieren' |
288 | wallabag_v1: 'von wallabag v1 migrieren' | 294 | wallabag_v1: 'von wallabag v1 migrieren' |
289 | wallabag_v2: 'von wallabag v2 migrieren' | 295 | wallabag_v2: 'von wallabag v2 migrieren' |
296 | readability: 'von Readability migrieren' | ||
290 | developer: | 297 | developer: |
291 | title: 'Entwickler' | 298 | title: 'Entwickler' |
292 | create_application: 'Erstelle eine Anwendung und nutze die wallabag API' | 299 | create_application: 'Erstelle eine Anwendung und nutze die wallabag API' |
@@ -308,6 +315,7 @@ tag: | |||
308 | page_title: 'Tags' | 315 | page_title: 'Tags' |
309 | list: | 316 | list: |
310 | number_on_the_page: '{0} Es gibt keine Tags.|{1} Es gibt einen Tag.|]1,Inf[ Es gibt %count% Tags.' | 317 | number_on_the_page: '{0} Es gibt keine Tags.|{1} Es gibt einen Tag.|]1,Inf[ Es gibt %count% Tags.' |
318 | # see_untagged_entries: 'See untagged entries' | ||
311 | 319 | ||
312 | import: | 320 | import: |
313 | page_title: 'Importieren' | 321 | page_title: 'Importieren' |
@@ -335,6 +343,24 @@ import: | |||
335 | wallabag_v2: | 343 | wallabag_v2: |
336 | page_title: 'Aus wallabag v2 importieren' | 344 | page_title: 'Aus wallabag v2 importieren' |
337 | description: 'Dieser Import wird all deine Artikel aus wallabag v2 importieren. Gehe auf "Alle Artikel" und dann, in der Exportieren-Seitenleiste auf "JSON". Dabei erhältst du eine "All articles.json"-Datei.' | 345 | description: 'Dieser Import wird all deine Artikel aus wallabag v2 importieren. Gehe auf "Alle Artikel" und dann, in der Exportieren-Seitenleiste auf "JSON". Dabei erhältst du eine "All articles.json"-Datei.' |
346 | readability: | ||
347 | page_title: 'Aus Readability importieren' | ||
348 | # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).' | ||
349 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' | ||
350 | worker: | ||
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | ||
352 | firefox: | ||
353 | page_title: 'Aus Firefox importieren' | ||
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | ||
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
356 | chrome: | ||
357 | page_title: 'Aus Chrome importieren' | ||
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | ||
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
360 | instapaper: | ||
361 | page_title: 'Aus Instapaper importieren' | ||
362 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
363 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
338 | 364 | ||
339 | developer: | 365 | developer: |
340 | page_title: 'Entwickler' | 366 | page_title: 'Entwickler' |
@@ -400,10 +426,10 @@ flashes: | |||
400 | notice: | 426 | notice: |
401 | entry_already_saved: 'Eintrag bereits am %date% gespeichert' | 427 | entry_already_saved: 'Eintrag bereits am %date% gespeichert' |
402 | entry_saved: 'Eintrag gespeichert' | 428 | entry_saved: 'Eintrag gespeichert' |
403 | # entry_saved_failed: 'Failed to save entry' | 429 | # entry_saved_failed: 'Entry saved but fetching content failed' |
404 | entry_updated: 'Eintrag aktualisiert' | 430 | entry_updated: 'Eintrag aktualisiert' |
405 | entry_reloaded: 'Eintrag neugeladen' | 431 | entry_reloaded: 'Eintrag neugeladen' |
406 | entry_reload_failed: 'Neuladen des Eintrags fehlgeschlagen' | 432 | # entry_reload_failed: 'Entry reloaded but fetching content failed' |
407 | entry_archived: 'Artikel archiviert' | 433 | entry_archived: 'Artikel archiviert' |
408 | entry_unarchived: 'Artikel dearchiviert' | 434 | entry_unarchived: 'Artikel dearchiviert' |
409 | entry_starred: 'Artikel favorisiert' | 435 | entry_starred: 'Artikel favorisiert' |
@@ -417,6 +443,10 @@ flashes: | |||
417 | failed: 'Import fehlgeschlagen, bitte erneut probieren.' | 443 | failed: 'Import fehlgeschlagen, bitte erneut probieren.' |
418 | failed_on_file: 'Fehler während des Imports. Bitte überprüfe deine Import-Datei.' | 444 | failed_on_file: 'Fehler während des Imports. Bitte überprüfe deine Import-Datei.' |
419 | summary: 'Import-Zusammenfassung: %imported% importiert, %skipped% bereits gespeichert.' | 445 | summary: 'Import-Zusammenfassung: %imported% importiert, %skipped% bereits gespeichert.' |
446 | # summary_with_queue: 'Import summary: %queued% queued.' | ||
447 | error: | ||
448 | # redis_enabled_not_installed: Redis is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check Redis configuration. | ||
449 | # rabbit_enabled_not_installed: RabbitMQ is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check RabbitMQ configuration. | ||
420 | developer: | 450 | developer: |
421 | notice: | 451 | notice: |
422 | client_created: 'Neuer Client erstellt.' | 452 | client_created: 'Neuer Client erstellt.' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml index c6633f5b..d5842cc5 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.en.yml | |||
@@ -68,6 +68,7 @@ config: | |||
68 | 200_word: 'I read ~200 words per minute' | 68 | 200_word: 'I read ~200 words per minute' |
69 | 300_word: 'I read ~300 words per minute' | 69 | 300_word: 'I read ~300 words per minute' |
70 | 400_word: 'I read ~400 words per minute' | 70 | 400_word: 'I read ~400 words per minute' |
71 | pocket_consumer_key_label: Consumer key for Pocket to import contents | ||
71 | form_rss: | 72 | form_rss: |
72 | description: 'RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.' | 73 | description: 'RSS feeds provided by wallabag allow you to read your saved articles with your favourite RSS reader. You need to generate a token first.' |
73 | token_label: 'RSS token' | 74 | token_label: 'RSS token' |
@@ -139,11 +140,14 @@ entry: | |||
139 | starred: 'Starred entries' | 140 | starred: 'Starred entries' |
140 | archived: 'Archived entries' | 141 | archived: 'Archived entries' |
141 | filtered: 'Filtered entries' | 142 | filtered: 'Filtered entries' |
143 | filtered_tags: 'Filtered by tags' | ||
144 | untagged: 'Untagged entries' | ||
142 | list: | 145 | list: |
143 | number_on_the_page: '{0} There are no entries.|{1} There is one entry.|]1,Inf[ There are %count% entries.' | 146 | number_on_the_page: '{0} There are no entries.|{1} There is one entry.|]1,Inf[ There are %count% entries.' |
144 | reading_time: 'estimated reading time' | 147 | reading_time: 'estimated reading time' |
145 | reading_time_minutes: 'estimated reading time: %readingTime% min' | 148 | reading_time_minutes: 'estimated reading time: %readingTime% min' |
146 | reading_time_less_one_minute: 'estimated reading time: <small class="inferieur"><</small> 1 min' | 149 | reading_time_less_one_minute: 'estimated reading time: <small class="inferieur"><</small> 1 min' |
150 | number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags' | ||
147 | reading_time_minutes_short: '%readingTime% min' | 151 | reading_time_minutes_short: '%readingTime% min' |
148 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' | 152 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' |
149 | original_article: 'original' | 153 | original_article: 'original' |
@@ -185,6 +189,8 @@ entry: | |||
185 | add_a_tag: 'Add a tag' | 189 | add_a_tag: 'Add a tag' |
186 | share_content: 'Share' | 190 | share_content: 'Share' |
187 | share_email_label: 'Email' | 191 | share_email_label: 'Email' |
192 | public_link: 'public link' | ||
193 | delete_public_link: 'delete public link' | ||
188 | download: 'Download' | 194 | download: 'Download' |
189 | print: 'Print' | 195 | print: 'Print' |
190 | problem: | 196 | problem: |
@@ -287,6 +293,7 @@ quickstart: | |||
287 | pocket: 'Migrate from Pocket' | 293 | pocket: 'Migrate from Pocket' |
288 | wallabag_v1: 'Migrate from wallabag v1' | 294 | wallabag_v1: 'Migrate from wallabag v1' |
289 | wallabag_v2: 'Migrate from wallabag v2' | 295 | wallabag_v2: 'Migrate from wallabag v2' |
296 | readability: 'Migrate from Readability' | ||
290 | developer: | 297 | developer: |
291 | title: 'Developers' | 298 | title: 'Developers' |
292 | create_application: 'Create your third application' | 299 | create_application: 'Create your third application' |
@@ -308,6 +315,7 @@ tag: | |||
308 | page_title: 'Tags' | 315 | page_title: 'Tags' |
309 | list: | 316 | list: |
310 | number_on_the_page: '{0} There are no tags.|{1} There is one tag.|]1,Inf[ There are %count% tags.' | 317 | number_on_the_page: '{0} There are no tags.|{1} There is one tag.|]1,Inf[ There are %count% tags.' |
318 | see_untagged_entries: 'See untagged entries' | ||
311 | 319 | ||
312 | import: | 320 | import: |
313 | page_title: 'Import' | 321 | page_title: 'Import' |
@@ -335,6 +343,24 @@ import: | |||
335 | wallabag_v2: | 343 | wallabag_v2: |
336 | page_title: 'Import > Wallabag v2' | 344 | page_title: 'Import > Wallabag v2' |
337 | description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.' | 345 | description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.' |
346 | readability: | ||
347 | page_title: 'Import > Readability' | ||
348 | description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).' | ||
349 | how_to: 'Please select your Readability export and click on the below button to upload and import it.' | ||
350 | worker: | ||
351 | enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | ||
352 | firefox: | ||
353 | page_title: 'Import > Firefox' | ||
354 | description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | ||
355 | how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
356 | chrome: | ||
357 | page_title: 'Import > Chrome' | ||
358 | description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | ||
359 | how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
360 | instapaper: | ||
361 | page_title: 'Import > Instapaper' | ||
362 | description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
363 | how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
338 | 364 | ||
339 | developer: | 365 | developer: |
340 | page_title: 'Developer' | 366 | page_title: 'Developer' |
@@ -354,19 +380,21 @@ developer: | |||
354 | field_grant_types: 'Grant type allowed' | 380 | field_grant_types: 'Grant type allowed' |
355 | no_client: 'No client yet.' | 381 | no_client: 'No client yet.' |
356 | remove: | 382 | remove: |
357 | warn_message_1: 'You have the ability to remove this client. This action is IRREVERSIBLE !' | 383 | warn_message_1: 'You have the ability to remove the client %name%. This action is IRREVERSIBLE !' |
358 | warn_message_2: "If you remove it, every app configured with that client won't be able to auth on your wallabag." | 384 | warn_message_2: "If you remove it, every app configured with that client won't be able to auth on your wallabag." |
359 | action: 'Remove this client' | 385 | action: 'Remove the client %name%' |
360 | client: | 386 | client: |
361 | page_title: 'Developer > New client' | 387 | page_title: 'Developer > New client' |
362 | page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.' | 388 | page_description: 'You are about to create a new client. Please fill the field below for the redirect URI of your application.' |
363 | form: | 389 | form: |
364 | redirect_uris_label: 'Redirect URIs' | 390 | name_label: 'Name of the client' |
391 | redirect_uris_label: 'Redirect URIs (optional)' | ||
365 | save_label: 'Create a new client' | 392 | save_label: 'Create a new client' |
366 | action_back: 'Back' | 393 | action_back: 'Back' |
367 | client_parameter: | 394 | client_parameter: |
368 | page_title: 'Developer > Client parameters' | 395 | page_title: 'Developer > Client parameters' |
369 | page_description: 'Here are your client parameters.' | 396 | page_description: 'Here are your client parameters.' |
397 | field_name: 'Client name' | ||
370 | field_id: 'Client ID' | 398 | field_id: 'Client ID' |
371 | field_secret: 'Client secret' | 399 | field_secret: 'Client secret' |
372 | back: 'Back' | 400 | back: 'Back' |
@@ -400,10 +428,10 @@ flashes: | |||
400 | notice: | 428 | notice: |
401 | entry_already_saved: 'Entry already saved on %date%' | 429 | entry_already_saved: 'Entry already saved on %date%' |
402 | entry_saved: 'Entry saved' | 430 | entry_saved: 'Entry saved' |
403 | entry_saved_failed: 'Failed to save entry' | 431 | entry_saved_failed: 'Entry saved but fetching content failed' |
404 | entry_updated: 'Entry updated' | 432 | entry_updated: 'Entry updated' |
405 | entry_reloaded: 'Entry reloaded' | 433 | entry_reloaded: 'Entry reloaded' |
406 | entry_reload_failed: 'Failed to reload entry' | 434 | entry_reload_failed: 'Entry reloaded but fetching content failed' |
407 | entry_archived: 'Entry archived' | 435 | entry_archived: 'Entry archived' |
408 | entry_unarchived: 'Entry unarchived' | 436 | entry_unarchived: 'Entry unarchived' |
409 | entry_starred: 'Entry starred' | 437 | entry_starred: 'Entry starred' |
@@ -417,7 +445,11 @@ flashes: | |||
417 | failed: 'Import failed, please try again.' | 445 | failed: 'Import failed, please try again.' |
418 | failed_on_file: 'Error while processing import. Please verify your import file.' | 446 | failed_on_file: 'Error while processing import. Please verify your import file.' |
419 | summary: 'Import summary: %imported% imported, %skipped% already saved.' | 447 | summary: 'Import summary: %imported% imported, %skipped% already saved.' |
448 | summary_with_queue: 'Import summary: %queued% queued.' | ||
449 | error: | ||
450 | redis_enabled_not_installed: Redis is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check Redis configuration. | ||
451 | rabbit_enabled_not_installed: RabbitMQ is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check RabbitMQ configuration. | ||
420 | developer: | 452 | developer: |
421 | notice: | 453 | notice: |
422 | client_created: 'New client created.' | 454 | client_created: 'New client %name% created.' |
423 | client_deleted: 'Client deleted' | 455 | client_deleted: 'Client %name% deleted' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml index 266b4af5..bd691c1c 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.es.yml | |||
@@ -68,6 +68,7 @@ config: | |||
68 | 200_word: 'Leo ~200 palabras por minuto' | 68 | 200_word: 'Leo ~200 palabras por minuto' |
69 | 300_word: 'Leo ~300 palabras por minuto' | 69 | 300_word: 'Leo ~300 palabras por minuto' |
70 | 400_word: 'Leo ~400 palabras por minuto' | 70 | 400_word: 'Leo ~400 palabras por minuto' |
71 | # pocket_consumer_key_label: Consumer key for Pocket to import contents | ||
71 | form_rss: | 72 | form_rss: |
72 | description: 'Los feeds RSS de wallabag permiten leer los artículos guardados con su lector RSS favorito. Necesita generar un token primero' | 73 | description: 'Los feeds RSS de wallabag permiten leer los artículos guardados con su lector RSS favorito. Necesita generar un token primero' |
73 | token_label: 'RSS token' | 74 | token_label: 'RSS token' |
@@ -139,11 +140,14 @@ entry: | |||
139 | starred: 'Artículos favoritos' | 140 | starred: 'Artículos favoritos' |
140 | archived: 'Artículos archivados' | 141 | archived: 'Artículos archivados' |
141 | filtered: 'Artículos filtrados' | 142 | filtered: 'Artículos filtrados' |
143 | # filtered_tags: 'Filtered by tags' | ||
144 | # untagged: 'Untagged entries' | ||
142 | list: | 145 | list: |
143 | number_on_the_page: '{0} No hay artículos.|{1} Hay un artículo.|]1,Inf[ Hay %count% artículos.' | 146 | number_on_the_page: '{0} No hay artículos.|{1} Hay un artículo.|]1,Inf[ Hay %count% artículos.' |
144 | reading_time: 'tiempo estimado de lectura' | 147 | reading_time: 'tiempo estimado de lectura' |
145 | reading_time_minutes: 'tiempo estimado de lectura: %readingTime% min' | 148 | reading_time_minutes: 'tiempo estimado de lectura: %readingTime% min' |
146 | reading_time_less_one_minute: 'tiempo estimado de lectura: <small class="inferieur"><</small> 1 min' | 149 | reading_time_less_one_minute: 'tiempo estimado de lectura: <small class="inferieur"><</small> 1 min' |
150 | # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags' | ||
147 | reading_time_minutes_short: '%readingTime% min' | 151 | reading_time_minutes_short: '%readingTime% min' |
148 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' | 152 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' |
149 | original_article: 'original' | 153 | original_article: 'original' |
@@ -185,6 +189,8 @@ entry: | |||
185 | add_a_tag: 'Añadir una etiqueta' | 189 | add_a_tag: 'Añadir una etiqueta' |
186 | share_content: 'Compartir' | 190 | share_content: 'Compartir' |
187 | share_email_label: 'Dirección e-mail' | 191 | share_email_label: 'Dirección e-mail' |
192 | # public_link: 'public link' | ||
193 | # delete_public_link: 'delete public link' | ||
188 | download: 'Descargar' | 194 | download: 'Descargar' |
189 | print: 'Imprimir' | 195 | print: 'Imprimir' |
190 | problem: | 196 | problem: |
@@ -287,6 +293,7 @@ quickstart: | |||
287 | pocket: 'Migrar desde Pocket' | 293 | pocket: 'Migrar desde Pocket' |
288 | wallabag_v1: 'Migrar desde wallabag v1' | 294 | wallabag_v1: 'Migrar desde wallabag v1' |
289 | wallabag_v2: 'Migrar desde wallabag v2' | 295 | wallabag_v2: 'Migrar desde wallabag v2' |
296 | readability: 'Migrar desde Readability' | ||
290 | developer: | 297 | developer: |
291 | title: 'Promotores' | 298 | title: 'Promotores' |
292 | create_application: 'Cree su tercera aplicación' | 299 | create_application: 'Cree su tercera aplicación' |
@@ -308,6 +315,7 @@ tag: | |||
308 | page_title: 'Etiquetas' | 315 | page_title: 'Etiquetas' |
309 | list: | 316 | list: |
310 | number_on_the_page: '{0} No hay ninguna etiqueta.|{1} Hay una etiqueta.|]1,Inf[ Hay %count% etiquetas.' | 317 | number_on_the_page: '{0} No hay ninguna etiqueta.|{1} Hay una etiqueta.|]1,Inf[ Hay %count% etiquetas.' |
318 | # see_untagged_entries: 'See untagged entries' | ||
311 | 319 | ||
312 | import: | 320 | import: |
313 | page_title: 'Importar' | 321 | page_title: 'Importar' |
@@ -335,6 +343,24 @@ import: | |||
335 | wallabag_v2: | 343 | wallabag_v2: |
336 | page_title: 'Importar > Wallabag v2' | 344 | page_title: 'Importar > Wallabag v2' |
337 | description: 'Va a importar sus artículos de otra instancia de wallabag v2. Vaya a Todos los artículos, entonces, en la barra lateral, oprima en "JSON". Usted tendrá un fichero "All articles.json"' | 345 | description: 'Va a importar sus artículos de otra instancia de wallabag v2. Vaya a Todos los artículos, entonces, en la barra lateral, oprima en "JSON". Usted tendrá un fichero "All articles.json"' |
346 | readability: | ||
347 | page_title: 'Importar > Readability' | ||
348 | # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).' | ||
349 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' | ||
350 | worker: | ||
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | ||
352 | firefox: | ||
353 | page_title: 'Importar > Firefox' | ||
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | ||
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
356 | chrome: | ||
357 | page_title: 'Importar > Chrome' | ||
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | ||
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
360 | instapaper: | ||
361 | page_title: 'Importar > Instapaper' | ||
362 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
363 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
338 | 364 | ||
339 | developer: | 365 | developer: |
340 | page_title: 'Promotor' | 366 | page_title: 'Promotor' |
@@ -400,10 +426,10 @@ flashes: | |||
400 | notice: | 426 | notice: |
401 | entry_already_saved: 'Entrada ya guardada por %fecha%' | 427 | entry_already_saved: 'Entrada ya guardada por %fecha%' |
402 | entry_saved: 'Entrada guardada' | 428 | entry_saved: 'Entrada guardada' |
403 | # entry_saved_failed: 'Failed to save entry' | 429 | # entry_saved_failed: 'Entry saved but fetching content failed' |
404 | entry_updated: 'Entrada actualizada' | 430 | entry_updated: 'Entrada actualizada' |
405 | entry_reloaded: 'Entrada recargada' | 431 | entry_reloaded: 'Entrada recargada' |
406 | entry_reload_failed: 'Entrada recargada reprobada' | 432 | # entry_reload_failed: 'Entry reloaded but fetching content failed' |
407 | entry_archived: 'Artículo archivado' | 433 | entry_archived: 'Artículo archivado' |
408 | entry_unarchived: 'Artículo desarchivado' | 434 | entry_unarchived: 'Artículo desarchivado' |
409 | entry_starred: 'Artículo guardado en los favoritos' | 435 | entry_starred: 'Artículo guardado en los favoritos' |
@@ -414,9 +440,13 @@ flashes: | |||
414 | tag_added: 'Etiqueta añadida' | 440 | tag_added: 'Etiqueta añadida' |
415 | import: | 441 | import: |
416 | notice: | 442 | notice: |
417 | failed: 'Importación reprobada, por favor inténtelo de nuevo.' | 443 | failed: 'Importación reprobada, por favor inténtelo de nuevo.' |
418 | failed_on_file: 'Se ocurre un error por procesar importación. Por favor verifique su archivo importado.' | 444 | failed_on_file: 'Se ocurre un error por procesar importación. Por favor verifique su archivo importado.' |
419 | summary: 'Resúmen importado: %importado% importado, %saltados% ya guardado.' | 445 | summary: 'Resúmen importado: %importado% importado, %saltados% ya guardado.' |
446 | # summary_with_queue: 'Import summary: %queued% queued.' | ||
447 | error: | ||
448 | # redis_enabled_not_installed: Redis is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check Redis configuration. | ||
449 | # rabbit_enabled_not_installed: RabbitMQ is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check RabbitMQ configuration. | ||
420 | developer: | 450 | developer: |
421 | notice: | 451 | notice: |
422 | client_created: 'Nuevo cliente creado.' | 452 | client_created: 'Nuevo cliente creado.' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml index c2350019..a9989a83 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fa.yml | |||
@@ -68,6 +68,7 @@ config: | |||
68 | 200_word: 'من تقریباً ۲۰۰ واژه را در دقیقه میخوانم' | 68 | 200_word: 'من تقریباً ۲۰۰ واژه را در دقیقه میخوانم' |
69 | 300_word: 'من تقریباً ۳۰۰ واژه را در دقیقه میخوانم' | 69 | 300_word: 'من تقریباً ۳۰۰ واژه را در دقیقه میخوانم' |
70 | 400_word: 'من تقریباً ۴۰۰ واژه را در دقیقه میخوانم' | 70 | 400_word: 'من تقریباً ۴۰۰ واژه را در دقیقه میخوانم' |
71 | pocket_consumer_key_label: کلید کاربری Pocket برای درونریزی مطالب | ||
71 | form_rss: | 72 | form_rss: |
72 | description: 'با خوراک آر-اس-اس که wallabag در اختیارتان میگذارد، میتوانید مقالههای ذخیرهشده را در نرمافزار آر-اس-اس دلخواه خود بخوانید. برای این کار نخست باید یک کد بسازید.' | 73 | description: 'با خوراک آر-اس-اس که wallabag در اختیارتان میگذارد، میتوانید مقالههای ذخیرهشده را در نرمافزار آر-اس-اس دلخواه خود بخوانید. برای این کار نخست باید یک کد بسازید.' |
73 | token_label: 'کد آر-اس-اس' | 74 | token_label: 'کد آر-اس-اس' |
@@ -139,11 +140,14 @@ entry: | |||
139 | starred: 'مقالههای برگزیده' | 140 | starred: 'مقالههای برگزیده' |
140 | archived: 'مقالههای بایگانیشده' | 141 | archived: 'مقالههای بایگانیشده' |
141 | filtered: 'مقالههای فیلترشده' | 142 | filtered: 'مقالههای فیلترشده' |
143 | # filtered_tags: 'Filtered by tags' | ||
144 | # untagged: 'Untagged entries' | ||
142 | list: | 145 | list: |
143 | number_on_the_page: '{0} هیج مقالهای نیست.|{1} یک مقاله هست.|]1,Inf[ %count% مقاله هست.' | 146 | number_on_the_page: '{0} هیج مقالهای نیست.|{1} یک مقاله هست.|]1,Inf[ %count% مقاله هست.' |
144 | reading_time: 'زمان تخمینی برای خواندن' | 147 | reading_time: 'زمان تخمینی برای خواندن' |
145 | reading_time_minutes: 'زمان تخمینی برای خواندن: %readingTime% min' | 148 | reading_time_minutes: 'زمان تخمینی برای خواندن: %readingTime% min' |
146 | reading_time_less_one_minute: 'زمان تخمینی برای خواندن: <small class="inferieur"><</small> 1 min' | 149 | reading_time_less_one_minute: 'زمان تخمینی برای خواندن: <small class="inferieur"><</small> 1 min' |
150 | # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags' | ||
147 | reading_time_minutes_short: '%readingTime% min' | 151 | reading_time_minutes_short: '%readingTime% min' |
148 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' | 152 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' |
149 | original_article: 'original' | 153 | original_article: 'original' |
@@ -185,6 +189,8 @@ entry: | |||
185 | add_a_tag: 'افزودن برچسب' | 189 | add_a_tag: 'افزودن برچسب' |
186 | share_content: 'همرسانی' | 190 | share_content: 'همرسانی' |
187 | share_email_label: 'نشانی ایمیل' | 191 | share_email_label: 'نشانی ایمیل' |
192 | # public_link: 'public link' | ||
193 | # delete_public_link: 'delete public link' | ||
188 | download: 'بارگیری' | 194 | download: 'بارگیری' |
189 | print: 'چاپ' | 195 | print: 'چاپ' |
190 | problem: | 196 | problem: |
@@ -287,6 +293,7 @@ quickstart: | |||
287 | pocket: 'مهاجرت از Pocket' | 293 | pocket: 'مهاجرت از Pocket' |
288 | wallabag_v1: 'مهاجرت از نسخهٔ یکم wallabag' | 294 | wallabag_v1: 'مهاجرت از نسخهٔ یکم wallabag' |
289 | wallabag_v2: 'مهاجرت از نسخهٔ دوم wallabag' | 295 | wallabag_v2: 'مهاجرت از نسخهٔ دوم wallabag' |
296 | readability: 'مهاجرت از نسخهٔ دوم Readability' | ||
290 | developer: | 297 | developer: |
291 | title: 'برنامهنویسان' | 298 | title: 'برنامهنویسان' |
292 | create_application: 'برنامهٔ wallabag خود را بسازید' | 299 | create_application: 'برنامهٔ wallabag خود را بسازید' |
@@ -308,18 +315,19 @@ tag: | |||
308 | page_title: 'برچسبها' | 315 | page_title: 'برچسبها' |
309 | list: | 316 | list: |
310 | number_on_the_page: '{0} هیچ برچسبی نیست.|{1} یک برچسب هست.|]1,Inf[ %count% برچسب هست.' | 317 | number_on_the_page: '{0} هیچ برچسبی نیست.|{1} یک برچسب هست.|]1,Inf[ %count% برچسب هست.' |
318 | # see_untagged_entries: 'See untagged entries' | ||
311 | 319 | ||
312 | import: | 320 | import: |
313 | page_title: 'درونریزی' | 321 | page_title: 'درونریزی' |
314 | page_description: 'به درونریز wallabag خوش آمدید. لطفاً سرویس قبلی خود را که میخواهید از آن مهاجرت کنید انتخاب کنید.' | 322 | page_description: 'به درونریز wallabag خوش آمدید. لطفاً سرویس قبلی خود را که میخواهید از آن مهاجرت کنید انتخاب کنید.' |
315 | action: | 323 | action: |
316 | import_contents: 'درونریزی مقالهها' | 324 | import_contents: 'درونریزی مقالهها' |
317 | form: | 325 | form: |
318 | mark_as_read_title: 'علامتزدن همه به عنوان خواندهشده؟' | 326 | mark_as_read_title: 'علامتزدن همه به عنوان خواندهشده؟' |
319 | mark_as_read_label: 'همهٔ مقالههای درونریزی شده را به عنوان خواندهشده علامت بزن' | 327 | mark_as_read_label: 'همهٔ مقالههای درونریزی شده را به عنوان خواندهشده علامت بزن' |
320 | file_label: 'پرونده' | 328 | file_label: 'پرونده' |
321 | save_label: 'بارگذاری پرونده' | 329 | save_label: 'بارگذاری پرونده' |
322 | pocket: | 330 | pocket: |
323 | page_title: 'درونریزی > Pocket' | 331 | page_title: 'درونریزی > Pocket' |
324 | description: "این برنامه همهٔ دادههای Pocket شما را درونریزی میکند. سرویس Pocket اجازه نمیدهد که متن مقالهها را درونریزی کنیم، بنابراین wallabag متن مقالهها را دوباره از اینترنت دریافت میکند." | 332 | description: "این برنامه همهٔ دادههای Pocket شما را درونریزی میکند. سرویس Pocket اجازه نمیدهد که متن مقالهها را درونریزی کنیم، بنابراین wallabag متن مقالهها را دوباره از اینترنت دریافت میکند." |
325 | config_missing: | 333 | config_missing: |
@@ -328,13 +336,31 @@ import: | |||
328 | user_message: 'مدیر سرور شما باید یک API Key برای Pocket تعریف کند.' | 336 | user_message: 'مدیر سرور شما باید یک API Key برای Pocket تعریف کند.' |
329 | authorize_message: 'شما میتوانید دادههایتان را از حساب Pocket خود درونریزی کنید. روی دکمهٔ زیر کلیک کنید و به برنامه اجازه دهید تا به getpocket.com وصل شود.' | 337 | authorize_message: 'شما میتوانید دادههایتان را از حساب Pocket خود درونریزی کنید. روی دکمهٔ زیر کلیک کنید و به برنامه اجازه دهید تا به getpocket.com وصل شود.' |
330 | connect_to_pocket: 'به Pocket وصل شو و دادهها را دریافت کن' | 338 | connect_to_pocket: 'به Pocket وصل شو و دادهها را دریافت کن' |
331 | wallabag_v1: | 339 | wallabag_v1: |
332 | page_title: 'درونریزی > Wallabag v1' | 340 | page_title: 'درونریزی > Wallabag v1' |
333 | description: 'این برنامه همهٔ دادههای شما را در نسخهٔ ۱ wallabag درونریزی میکند. در صفحهٔ تنظیمات، روی "JSON export" در بخش "Export your wallabag data" کلیک کنید. با این کار شما پروندهای به شکل "wallabag-export-1-xxxx-xx-xx.json" دریافت خواهید کرد.' | 341 | description: 'این برنامه همهٔ دادههای شما را در نسخهٔ ۱ wallabag درونریزی میکند. در صفحهٔ تنظیمات، روی "JSON export" در بخش "Export your wallabag data" کلیک کنید. با این کار شما پروندهای به شکل "wallabag-export-1-xxxx-xx-xx.json" دریافت خواهید کرد.' |
334 | how_to: 'لطفاً پرونده را انتخاب کنید و روی دکمهٔ زیر کلیک کنید تا بارگذاری و درونریزی شود.' | 342 | how_to: 'لطفاً پرونده را انتخاب کنید و روی دکمهٔ زیر کلیک کنید تا بارگذاری و درونریزی شود.' |
335 | wallabag_v2: | 343 | wallabag_v2: |
336 | page_title: 'درونریزی > Wallabag v2' | 344 | page_title: 'درونریزی > Wallabag v2' |
337 | description: 'این برنامه همهٔ دادههای شما را در نسخهٔ ۲ wallabag درونریزی میکند. به بخش «همهٔ مقالهها» بروید و در بخش «برونریزی» روی "JSON" کلیک کنید. با این کار شما پروندهای به شکل "All articles.json" دریافت خواهید کرد.' | 345 | description: 'این برنامه همهٔ دادههای شما را در نسخهٔ ۲ wallabag درونریزی میکند. به بخش «همهٔ مقالهها» بروید و در بخش «برونریزی» روی "JSON" کلیک کنید. با این کار شما پروندهای به شکل "All articles.json" دریافت خواهید کرد.' |
346 | readability: | ||
347 | page_title: 'درونریزی > Readability' | ||
348 | # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).' | ||
349 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' | ||
350 | worker: | ||
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | ||
352 | firefox: | ||
353 | page_title: 'درونریزی > Firefox' | ||
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | ||
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
356 | chrome: | ||
357 | page_title: 'درونریزی > Chrome' | ||
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | ||
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
360 | instapaper: | ||
361 | page_title: 'درونریزی > Instapaper' | ||
362 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
363 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
338 | 364 | ||
339 | developer: | 365 | developer: |
340 | # page_title: 'Developer' | 366 | # page_title: 'Developer' |
@@ -400,10 +426,10 @@ flashes: | |||
400 | notice: | 426 | notice: |
401 | entry_already_saved: 'این مقاله در تاریخ %date% ذخیره شده بود' | 427 | entry_already_saved: 'این مقاله در تاریخ %date% ذخیره شده بود' |
402 | entry_saved: 'مقاله ذخیره شد' | 428 | entry_saved: 'مقاله ذخیره شد' |
403 | # entry_saved_failed: 'Failed to save entry' | 429 | # entry_saved_failed: 'Entry saved but fetching content failed' |
404 | entry_updated: 'مقاله بهروز شد' | 430 | entry_updated: 'مقاله بهروز شد' |
405 | entry_reloaded: 'مقاله بهروز شد' | 431 | entry_reloaded: 'مقاله بهروز شد' |
406 | entry_reload_failed: 'بهروزرسانی مقاله شکست خورد' | 432 | # entry_reload_failed: 'Entry reloaded but fetching content failed' |
407 | entry_archived: 'مقاله بایگانی شد' | 433 | entry_archived: 'مقاله بایگانی شد' |
408 | entry_unarchived: 'مقاله از بایگانی درآمد' | 434 | entry_unarchived: 'مقاله از بایگانی درآمد' |
409 | entry_starred: 'مقاله برگزیده شد' | 435 | entry_starred: 'مقاله برگزیده شد' |
@@ -417,6 +443,10 @@ flashes: | |||
417 | failed: 'درونریزی شکست خورد. لطفاً دوباره تلاش کنید.' | 443 | failed: 'درونریزی شکست خورد. لطفاً دوباره تلاش کنید.' |
418 | failed_on_file: 'خطا هنگام پردازش پروندهٔ ورودی. آیا پروندهٔ درونریزی شده سالم است؟' | 444 | failed_on_file: 'خطا هنگام پردازش پروندهٔ ورودی. آیا پروندهٔ درونریزی شده سالم است؟' |
419 | summary: 'گزارش درونریزی: %imported% وارد شد, %skipped% از قبل ذخیره شده بود.' | 445 | summary: 'گزارش درونریزی: %imported% وارد شد, %skipped% از قبل ذخیره شده بود.' |
446 | # summary_with_queue: 'Import summary: %queued% queued.' | ||
447 | error: | ||
448 | # redis_enabled_not_installed: Redis is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check Redis configuration. | ||
449 | # rabbit_enabled_not_installed: RabbitMQ is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check RabbitMQ configuration. | ||
420 | developer: | 450 | developer: |
421 | notice: | 451 | notice: |
422 | # client_created: 'New client created.' | 452 | # client_created: 'New client created.' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml index 25d9ec59..b70ca64d 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.fr.yml | |||
@@ -45,9 +45,9 @@ footer: | |||
45 | social: 'Social' | 45 | social: 'Social' |
46 | powered_by: 'propulsé par' | 46 | powered_by: 'propulsé par' |
47 | about: 'À propos' | 47 | about: 'À propos' |
48 | page_title: 'Configuration' | ||
49 | 48 | ||
50 | config: | 49 | config: |
50 | page_title: 'Configuration' | ||
51 | tab_menu: | 51 | tab_menu: |
52 | settings: 'Paramètres' | 52 | settings: 'Paramètres' |
53 | rss: 'RSS' | 53 | rss: 'RSS' |
@@ -68,6 +68,7 @@ config: | |||
68 | 200_word: 'Je lis environ 200 mots par minute' | 68 | 200_word: 'Je lis environ 200 mots par minute' |
69 | 300_word: 'Je lis environ 300 mots par minute' | 69 | 300_word: 'Je lis environ 300 mots par minute' |
70 | 400_word: 'Je lis environ 400 mots par minute' | 70 | 400_word: 'Je lis environ 400 mots par minute' |
71 | pocket_consumer_key_label: Clé d'authentification Pocket pour importer les données | ||
71 | form_rss: | 72 | form_rss: |
72 | description: "Les flux RSS fournis par wallabag vous permettent de lire vos articles sauvegardés dans votre lecteur de flux préféré. Pour pouvoir les utiliser, vous devez d'abord créer un jeton." | 73 | description: "Les flux RSS fournis par wallabag vous permettent de lire vos articles sauvegardés dans votre lecteur de flux préféré. Pour pouvoir les utiliser, vous devez d'abord créer un jeton." |
73 | token_label: 'Jeton RSS' | 74 | token_label: 'Jeton RSS' |
@@ -139,11 +140,14 @@ entry: | |||
139 | starred: 'Articles favoris' | 140 | starred: 'Articles favoris' |
140 | archived: 'Articles lus' | 141 | archived: 'Articles lus' |
141 | filtered: 'Articles filtrés' | 142 | filtered: 'Articles filtrés' |
143 | filtered_tags: 'Articles filtrés par tags' | ||
144 | untagged: 'Article sans tag' | ||
142 | list: | 145 | list: |
143 | number_on_the_page: "{0} Il n'y a pas d'articles.|{1} Il y a un article.|]1,Inf[ Il y a %count% articles." | 146 | number_on_the_page: "{0} Il n'y a pas d'articles.|{1} Il y a un article.|]1,Inf[ Il y a %count% articles." |
144 | reading_time: 'durée de lecture' | 147 | reading_time: 'durée de lecture' |
145 | reading_time_minutes: 'durée de lecture: %readingTime% min' | 148 | reading_time_minutes: 'durée de lecture: %readingTime% min' |
146 | reading_time_less_one_minute: 'durée de lecture: <small class="inferieur"><</small> 1 min' | 149 | reading_time_less_one_minute: 'durée de lecture: <small class="inferieur"><</small> 1 min' |
150 | number_of_tags: '{1}et un autre tag|]1,Inf[et %count% autres tags' | ||
147 | reading_time_minutes_short: '%readingTime% min' | 151 | reading_time_minutes_short: '%readingTime% min' |
148 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' | 152 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' |
149 | original_article: 'original' | 153 | original_article: 'original' |
@@ -185,6 +189,8 @@ entry: | |||
185 | add_a_tag: 'Ajouter un tag' | 189 | add_a_tag: 'Ajouter un tag' |
186 | share_content: 'Partager' | 190 | share_content: 'Partager' |
187 | share_email_label: 'Email' | 191 | share_email_label: 'Email' |
192 | public_link: 'Lien public' | ||
193 | delete_public_link: 'Supprimer lien public' | ||
188 | download: 'Télécharger' | 194 | download: 'Télécharger' |
189 | print: 'Imprimer' | 195 | print: 'Imprimer' |
190 | problem: | 196 | problem: |
@@ -287,6 +293,7 @@ quickstart: | |||
287 | pocket: 'Migrer depuis Pocket' | 293 | pocket: 'Migrer depuis Pocket' |
288 | wallabag_v1: 'Migrer depuis wallabag v1' | 294 | wallabag_v1: 'Migrer depuis wallabag v1' |
289 | wallabag_v2: 'Migrer depuis wallabag v2' | 295 | wallabag_v2: 'Migrer depuis wallabag v2' |
296 | readability: 'Migrer depuis Readability' | ||
290 | developer: | 297 | developer: |
291 | title: 'Pour les développeurs' | 298 | title: 'Pour les développeurs' |
292 | create_application: 'Créer votre application tierce' | 299 | create_application: 'Créer votre application tierce' |
@@ -308,6 +315,7 @@ tag: | |||
308 | page_title: 'Tags' | 315 | page_title: 'Tags' |
309 | list: | 316 | list: |
310 | number_on_the_page: "{0} Il n'y a pas de tag.|{1} Il y a un tag.|]1,Inf[ Il y a %count% tags." | 317 | number_on_the_page: "{0} Il n'y a pas de tag.|{1} Il y a un tag.|]1,Inf[ Il y a %count% tags." |
318 | see_untagged_entries: 'Voir les articles sans tag' | ||
311 | 319 | ||
312 | import: | 320 | import: |
313 | page_title: 'Importer' | 321 | page_title: 'Importer' |
@@ -335,6 +343,24 @@ import: | |||
335 | wallabag_v2: | 343 | wallabag_v2: |
336 | page_title: 'Importer > Wallabag v2' | 344 | page_title: 'Importer > Wallabag v2' |
337 | description: "Cet outil va importer tous vos articles d'une autre instance de wallabag v2. Allez dans tous vos articles, puis, sur la barre latérale, cliquez sur \"JSON\". Vous allez récupérer un fichier \"All articles.json\"" | 345 | description: "Cet outil va importer tous vos articles d'une autre instance de wallabag v2. Allez dans tous vos articles, puis, sur la barre latérale, cliquez sur \"JSON\". Vous allez récupérer un fichier \"All articles.json\"" |
346 | readability: | ||
347 | page_title: 'Importer > Readability' | ||
348 | description: 'Cet outil va importer toutes vos données de Readability. Sur la page des outils (https://www.readability.com/tools/), cliquez sur "Export your data" dans la section "Data Export". Vous allez recevoir un email avec un lien pour télécharger le json.' | ||
349 | how_to: "Choisissez le fichier de votre export Readability et cliquez sur le bouton ci-dessous pour l'importer." | ||
350 | worker: | ||
351 | enabled: "Les imports sont asynchrones. Une fois l'import commencé un worker externe traitera les messages un par un. Le service activé est :" | ||
352 | firefox: | ||
353 | page_title: 'Import > Firefox' | ||
354 | description: "Cet outil va vous permettre d'importer tous vos marques-pages de Firefox. <p>Pour Firefox, ouvrez le panneau des marques-pages (Ctrl+Maj+O), puis dans « Importation et sauvegarde », choisissez « Sauvegarde... ». Vous allez récupérer un fichier .json. </p>" | ||
355 | how_to: "Choisissez le fichier de sauvegarde de vos marques-page et cliquez sur le bouton pour l'importer. Soyez avertis que le processus peut prendre un temps assez long car tous les articles doivent être récupérés en ligne." | ||
356 | chrome: | ||
357 | page_title: 'Import > Chrome' | ||
358 | description: "Cet outil va vous permettre d'importer tous vos marques-pages de Google Chrome/Chromium. Pour Google Chrome, la situation du fichier dépend de votre système d'exploitation : <ul><li>Sur GNU/Linux, allez dans le répertoire <code>~/.config/google-chrome/Default/</code></li><li>Sous Windows, il devrait se trouver à <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>Sur OS X, il devrait se trouver dans le fichier <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Une fois que vous y êtes, copiez le fichier Bookmarks à un endroit où vous le retrouverez.<em><br>Notez que si vous utilisez Chromium à la place de Chrome, vous devez corriger les chemins en conséquence.</em></p>" | ||
359 | how_to: "Choisissez le fichier de sauvegarde de vos marques-page et cliquez sur le bouton pour l'importer. Soyez avertis que le processus peut prendre un temps assez long car tous les articles doivent être récupérés en ligne." | ||
360 | instapaper: | ||
361 | page_title: 'Import > Instapaper' | ||
362 | description: 'Sur la page des paramètres (`https://www.instapaper.com/user<https://www.instapaper.com/user>`_), cliquez sur "Download .CSV file" dans la section "Export". Un fichier CSV se téléchargera ("instapaper-export.csv").' | ||
363 | how_to: "Choisissez le fichier de votre export Instapaper et cliquez sur le bouton ci-dessous pour l'importer." | ||
338 | 364 | ||
339 | developer: | 365 | developer: |
340 | page_title: 'Développeur' | 366 | page_title: 'Développeur' |
@@ -345,7 +371,7 @@ developer: | |||
345 | list_methods: "Lister toutes les méthodes de l'API" | 371 | list_methods: "Lister toutes les méthodes de l'API" |
346 | clients: | 372 | clients: |
347 | title: 'Clients' | 373 | title: 'Clients' |
348 | create_new: 'Créer une nouveau client' | 374 | create_new: 'Créer un nouveau client' |
349 | existing_clients: | 375 | existing_clients: |
350 | title: 'Les clients existants' | 376 | title: 'Les clients existants' |
351 | field_id: 'ID Client' | 377 | field_id: 'ID Client' |
@@ -354,19 +380,21 @@ developer: | |||
354 | field_grant_types: 'Type de privilège accordé' | 380 | field_grant_types: 'Type de privilège accordé' |
355 | no_client: 'Aucun client pour le moment' | 381 | no_client: 'Aucun client pour le moment' |
356 | remove: | 382 | remove: |
357 | warn_message_1: 'Vous avez la possibilité de supprimer un client. Cette action est IRREVERSIBLE !' | 383 | warn_message_1: 'Vous avez la possibilité de supprimer le client %name%. Cette action est IRREVERSIBLE !' |
358 | warn_message_2: "Si vous supprimez un client, toutes les applications qui l'utilisaient ne fonctionneront plus avec votre compte wallabag." | 384 | warn_message_2: "Si vous supprimez le client %name%, toutes les applications qui l'utilisaient ne fonctionneront plus avec votre compte wallabag." |
359 | action: 'Supprimer ce client' | 385 | action: 'Supprimer le client %name%' |
360 | client: | 386 | client: |
361 | page_title: 'Développeur > Nouveau client' | 387 | page_title: 'Développeur > Nouveau client' |
362 | page_description: "Vous allez créer un nouveau client. Merci de remplir l'url de redirection vers votre application." | 388 | page_description: "Vous allez créer un nouveau client. Merci de remplir l'url de redirection vers votre application." |
363 | form: | 389 | form: |
364 | redirect_uris_label: 'URLs de redirection' | 390 | name_label: "Nom du client" |
391 | redirect_uris_label: 'URLs de redirection (optionnel)' | ||
365 | save_label: 'Créer un nouveau client' | 392 | save_label: 'Créer un nouveau client' |
366 | action_back: 'Retour' | 393 | action_back: 'Retour' |
367 | client_parameter: | 394 | client_parameter: |
368 | page_title: 'Développeur > Les paramètres de votre client' | 395 | page_title: 'Développeur > Les paramètres de votre client' |
369 | page_description: 'Voilà les paramètres de votre client' | 396 | page_description: 'Voilà les paramètres de votre client' |
397 | field_name: 'Nom du client' | ||
370 | field_id: 'ID Client' | 398 | field_id: 'ID Client' |
371 | field_secret: 'Clé secrète' | 399 | field_secret: 'Clé secrète' |
372 | back: 'Retour' | 400 | back: 'Retour' |
@@ -400,10 +428,10 @@ flashes: | |||
400 | notice: | 428 | notice: |
401 | entry_already_saved: 'Article déjà sauvergardé le %date%' | 429 | entry_already_saved: 'Article déjà sauvergardé le %date%' |
402 | entry_saved: 'Article enregistré' | 430 | entry_saved: 'Article enregistré' |
403 | entry_saved_failed: "L'enregistrement a échoué" | 431 | entry_saved_failed: 'Article enregistré mais impossible de récupérer le contenu' |
404 | entry_updated: 'Article mis à jour' | 432 | entry_updated: 'Article mis à jour' |
405 | entry_reloaded: 'Article rechargé' | 433 | entry_reloaded: 'Article rechargé' |
406 | entry_reload_failed: "Le rechargement de l'article a échoué" | 434 | entry_reload_failed: "Article mis à jour mais impossible de récupérer le contenu" |
407 | entry_archived: 'Article marqué comme lu' | 435 | entry_archived: 'Article marqué comme lu' |
408 | entry_unarchived: 'Article marqué comme non lu' | 436 | entry_unarchived: 'Article marqué comme non lu' |
409 | entry_starred: 'Article ajouté dans les favoris' | 437 | entry_starred: 'Article ajouté dans les favoris' |
@@ -416,8 +444,12 @@ flashes: | |||
416 | notice: | 444 | notice: |
417 | failed: "L'import a échoué, veuillez ré-essayer" | 445 | failed: "L'import a échoué, veuillez ré-essayer" |
418 | failed_on_file: "Erreur lors du traitement de l'import. Vérifier votre fichier." | 446 | failed_on_file: "Erreur lors du traitement de l'import. Vérifier votre fichier." |
419 | summary: "Rapport d'import: %imported% importés, %skipped% déjà présent." | 447 | summary: "Rapport d'import: %imported% importés, %skipped% déjà présents." |
448 | summary_with_queue: "Rapport d'import: %queued% en cours de traitement." | ||
449 | error: | ||
450 | redis_enabled_not_installed: Redis est activé pour les imports asynchrones mais <u>impossible de s'y connecter</u>. Vérifier la configuration de Redis. | ||
451 | rabbit_enabled_not_installed: RabbitMQ est activé pour les imports asynchrones mais <u>impossible de s'y connecter</u>. Vérifier la configuration de RabbitMQ. | ||
420 | developer: | 452 | developer: |
421 | notice: | 453 | notice: |
422 | client_created: 'Nouveau client créé' | 454 | client_created: 'Nouveau client %name% créé' |
423 | client_deleted: 'Client supprimé' | 455 | client_deleted: 'Client %name% supprimé' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml index 231ba759..118098fe 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.it.yml | |||
@@ -68,6 +68,7 @@ config: | |||
68 | 200_word: 'Leggo ~200 parole al minuto' | 68 | 200_word: 'Leggo ~200 parole al minuto' |
69 | 300_word: 'Leggo ~300 parole al minuto' | 69 | 300_word: 'Leggo ~300 parole al minuto' |
70 | 400_word: 'Leggo ~400 parole al minuto' | 70 | 400_word: 'Leggo ~400 parole al minuto' |
71 | pocket_consumer_key_label: Consumer key per Pocket per importare i contenuti | ||
71 | form_rss: | 72 | form_rss: |
72 | description: 'I feed RSS generati da wallabag ti permettono di leggere i tuoi contenuti salvati con il tuo lettore di RSS preferito. Prima, devi generare un token.' | 73 | description: 'I feed RSS generati da wallabag ti permettono di leggere i tuoi contenuti salvati con il tuo lettore di RSS preferito. Prima, devi generare un token.' |
73 | token_label: 'RSS token' | 74 | token_label: 'RSS token' |
@@ -139,11 +140,14 @@ entry: | |||
139 | starred: 'Contenuti preferiti' | 140 | starred: 'Contenuti preferiti' |
140 | archived: 'Contenuti archiviati' | 141 | archived: 'Contenuti archiviati' |
141 | filtered: 'Contenuti filtrati' | 142 | filtered: 'Contenuti filtrati' |
143 | # filtered_tags: 'Filtered by tags' | ||
144 | # untagged: 'Untagged entries' | ||
142 | list: | 145 | list: |
143 | number_on_the_page: "{0} Non ci sono contenuti.|{1} C'è un contenuto.|]1,Inf[ Ci sono %count% contenuti." | 146 | number_on_the_page: "{0} Non ci sono contenuti.|{1} C'è un contenuto.|]1,Inf[ Ci sono %count% contenuti." |
144 | reading_time: 'tempo di lettura stimato' | 147 | reading_time: 'tempo di lettura stimato' |
145 | reading_time_minutes: 'tempo di lettura stimato: %readingTime% min' | 148 | reading_time_minutes: 'tempo di lettura stimato: %readingTime% min' |
146 | reading_time_less_one_minute: 'tempo di lettura stimato: <small class="inferieur"><</small> 1 min' | 149 | reading_time_less_one_minute: 'tempo di lettura stimato: <small class="inferieur"><</small> 1 min' |
150 | # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags' | ||
147 | reading_time_minutes_short: '%readingTime% min' | 151 | reading_time_minutes_short: '%readingTime% min' |
148 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' | 152 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' |
149 | original_article: 'originale' | 153 | original_article: 'originale' |
@@ -184,6 +188,8 @@ entry: | |||
184 | add_a_tag: 'Aggiungi un tag' | 188 | add_a_tag: 'Aggiungi un tag' |
185 | share_content: 'Condividi' | 189 | share_content: 'Condividi' |
186 | share_email_label: 'E-mail' | 190 | share_email_label: 'E-mail' |
191 | # public_link: 'public link' | ||
192 | # delete_public_link: 'delete public link' | ||
187 | download: 'Download' | 193 | download: 'Download' |
188 | print: 'Stampa' | 194 | print: 'Stampa' |
189 | problem: | 195 | problem: |
@@ -286,6 +292,7 @@ quickstart: | |||
286 | pocket: 'Trasferisci da Pocket' | 292 | pocket: 'Trasferisci da Pocket' |
287 | wallabag_v1: 'Trasferisci da wallabag v1' | 293 | wallabag_v1: 'Trasferisci da wallabag v1' |
288 | wallabag_v2: 'Trasferisci da wallabag v2' | 294 | wallabag_v2: 'Trasferisci da wallabag v2' |
295 | readability: 'Trasferisci da Readability' | ||
289 | developer: | 296 | developer: |
290 | title: 'Sviluppatori' | 297 | title: 'Sviluppatori' |
291 | create_application: 'Crea la tua applicazione' | 298 | create_application: 'Crea la tua applicazione' |
@@ -307,6 +314,7 @@ tag: | |||
307 | page_title: 'Tags' | 314 | page_title: 'Tags' |
308 | list: | 315 | list: |
309 | number_on_the_page: "{0} Non ci sono tag.|{1} C'è un tag.|]1,Inf[ ci sono %count% tag." | 316 | number_on_the_page: "{0} Non ci sono tag.|{1} C'è un tag.|]1,Inf[ ci sono %count% tag." |
317 | # see_untagged_entries: 'See untagged entries' | ||
310 | 318 | ||
311 | import: | 319 | import: |
312 | page_title: 'Importa' | 320 | page_title: 'Importa' |
@@ -334,6 +342,24 @@ import: | |||
334 | wallabag_v2: | 342 | wallabag_v2: |
335 | page_title: 'Importa da > Wallabag v2' | 343 | page_title: 'Importa da > Wallabag v2' |
336 | description: 'Questo importatore copierà tutti i tuoi dati da un wallabag v2. Vai in "Tutti i contenuti", e, nella sidebar di esportazione, clicca su "JSON". Otterrai un file "Tutti i contenuti.json".' | 344 | description: 'Questo importatore copierà tutti i tuoi dati da un wallabag v2. Vai in "Tutti i contenuti", e, nella sidebar di esportazione, clicca su "JSON". Otterrai un file "Tutti i contenuti.json".' |
345 | readability: | ||
346 | page_title: 'Importa da > Readability' | ||
347 | # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).' | ||
348 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' | ||
349 | worker: | ||
350 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | ||
351 | firefox: | ||
352 | page_title: 'Importa da > Firefox' | ||
353 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | ||
354 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
355 | chrome: | ||
356 | page_title: 'Importa da > Chrome' | ||
357 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | ||
358 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
359 | instapaper: | ||
360 | page_title: 'Importa da > Instapaper' | ||
361 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
362 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
337 | 363 | ||
338 | developer: | 364 | developer: |
339 | page_title: 'Sviluppatori' | 365 | page_title: 'Sviluppatori' |
@@ -399,10 +425,10 @@ flashes: | |||
399 | notice: | 425 | notice: |
400 | entry_already_saved: 'Contenuto già salvato in data %date%' | 426 | entry_already_saved: 'Contenuto già salvato in data %date%' |
401 | entry_saved: 'Contenuto salvato' | 427 | entry_saved: 'Contenuto salvato' |
402 | # entry_saved_failed: 'Failed to save entry' | 428 | # entry_saved_failed: 'Entry saved but fetching content failed' |
403 | entry_updated: 'Contenuto aggiornato' | 429 | entry_updated: 'Contenuto aggiornato' |
404 | entry_reloaded: 'Contenuto ricaricato' | 430 | entry_reloaded: 'Contenuto ricaricato' |
405 | entry_reload_failed: 'Errore nel ricaricamento del contenuto' | 431 | # entry_reload_failed: 'Entry reloaded but fetching content failed' |
406 | entry_archived: 'Contenuto archiviato' | 432 | entry_archived: 'Contenuto archiviato' |
407 | entry_unarchived: 'Contenuto dis-archiviato' | 433 | entry_unarchived: 'Contenuto dis-archiviato' |
408 | entry_starred: 'Contenuto segnato come preferito' | 434 | entry_starred: 'Contenuto segnato come preferito' |
@@ -416,6 +442,10 @@ flashes: | |||
416 | failed: 'Importazione fallita, riprova.' | 442 | failed: 'Importazione fallita, riprova.' |
417 | failed_on_file: 'Errore durante la processazione dei dati da importare. Verifica il tuo file di import.' | 443 | failed_on_file: 'Errore durante la processazione dei dati da importare. Verifica il tuo file di import.' |
418 | summary: 'Sommario di importazione: %imported% importati, %skipped% già salvati.' | 444 | summary: 'Sommario di importazione: %imported% importati, %skipped% già salvati.' |
445 | # summary_with_queue: 'Import summary: %queued% queued.' | ||
446 | error: | ||
447 | # redis_enabled_not_installed: Redis is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check Redis configuration. | ||
448 | # rabbit_enabled_not_installed: RabbitMQ is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check RabbitMQ configuration. | ||
419 | developer: | 449 | developer: |
420 | notice: | 450 | notice: |
421 | client_created: 'Nuovo client creato.' | 451 | client_created: 'Nuovo client creato.' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml index 6e71b850..93467dac 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.oc.yml | |||
@@ -41,7 +41,7 @@ menu: | |||
41 | 41 | ||
42 | footer: | 42 | footer: |
43 | wallabag: | 43 | wallabag: |
44 | elsewhere: 'Emportatz wallabag amb vosaultres' | 44 | elsewhere: 'Emportatz wallabag amb vosautres' |
45 | social: 'Social' | 45 | social: 'Social' |
46 | powered_by: 'propulsat per' | 46 | powered_by: 'propulsat per' |
47 | about: 'A prepaus' | 47 | about: 'A prepaus' |
@@ -68,6 +68,7 @@ config: | |||
68 | 200_word: "Legissi a l'entorn de 200 mots per minuta" | 68 | 200_word: "Legissi a l'entorn de 200 mots per minuta" |
69 | 300_word: "Legissi a l'entorn de 300 mots per minuta" | 69 | 300_word: "Legissi a l'entorn de 300 mots per minuta" |
70 | 400_word: "Legissi a l'entorn de 400 mots per minuta" | 70 | 400_word: "Legissi a l'entorn de 400 mots per minuta" |
71 | pocket_consumer_key_label: Clau d'autentificacion Pocket per importar las donadas | ||
71 | form_rss: | 72 | form_rss: |
72 | description: "Los fluxes RSS fornits per wallabag vos permeton de legir vòstres articles salvagardats dins vòstre lector de fluxes preferit. Per los poder emplegar, vos cal, d'en primièr crear un geton." | 73 | description: "Los fluxes RSS fornits per wallabag vos permeton de legir vòstres articles salvagardats dins vòstre lector de fluxes preferit. Per los poder emplegar, vos cal, d'en primièr crear un geton." |
73 | token_label: 'Geton RSS' | 74 | token_label: 'Geton RSS' |
@@ -139,11 +140,14 @@ entry: | |||
139 | starred: 'Articles favorits' | 140 | starred: 'Articles favorits' |
140 | archived: 'Articles legits' | 141 | archived: 'Articles legits' |
141 | filtered: 'Articles filtrats' | 142 | filtered: 'Articles filtrats' |
143 | filtered_tags: 'Filtats per etiquetas' | ||
144 | untagged: 'Articles sens etiqueta' | ||
142 | list: | 145 | list: |
143 | number_on_the_page: "{0} I a pas cap d'article.|{1} I a un article.|]1,Inf[ I a %count% articles." | 146 | number_on_the_page: "{0} I a pas cap d'article.|{1} I a un article.|]1,Inf[ I a %count% articles." |
144 | reading_time: 'durada de lectura' | 147 | reading_time: 'durada de lectura' |
145 | reading_time_minutes: 'durada de lectura : %readingTime% min' | 148 | reading_time_minutes: 'durada de lectura : %readingTime% min' |
146 | reading_time_less_one_minute: 'durada de lectura : <small class="inferieur"><</small> 1 min' | 149 | reading_time_less_one_minute: 'durada de lectura : <small class="inferieur"><</small> 1 min' |
150 | number_of_tags: '{1}e una autra etiqueta|]1,Inf[e %count% autras etiquetas' | ||
147 | reading_time_minutes_short: '%readingTime% min' | 151 | reading_time_minutes_short: '%readingTime% min' |
148 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' | 152 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' |
149 | original_article: 'original' | 153 | original_article: 'original' |
@@ -185,6 +189,8 @@ entry: | |||
185 | add_a_tag: 'Ajustar una etiqueta' | 189 | add_a_tag: 'Ajustar una etiqueta' |
186 | share_content: 'Partatjar' | 190 | share_content: 'Partatjar' |
187 | share_email_label: 'Corrièl' | 191 | share_email_label: 'Corrièl' |
192 | public_link: 'ligam public' | ||
193 | delete_public_link: 'suprimir lo ligam public' | ||
188 | download: 'Telecargar' | 194 | download: 'Telecargar' |
189 | print: 'Imprimir' | 195 | print: 'Imprimir' |
190 | problem: | 196 | problem: |
@@ -287,6 +293,7 @@ quickstart: | |||
287 | pocket: 'Migrar dempuèi Pocket' | 293 | pocket: 'Migrar dempuèi Pocket' |
288 | wallabag_v1: 'Migrar dempuèi wallabag v1' | 294 | wallabag_v1: 'Migrar dempuèi wallabag v1' |
289 | wallabag_v2: 'Migrar dempuèi wallabag v2' | 295 | wallabag_v2: 'Migrar dempuèi wallabag v2' |
296 | readability: 'Migrar dempuèi Readability' | ||
290 | developer: | 297 | developer: |
291 | title: 'Pels desvolopadors' | 298 | title: 'Pels desvolopadors' |
292 | create_application: 'Crear vòstra aplicacion tèrça' | 299 | create_application: 'Crear vòstra aplicacion tèrça' |
@@ -308,6 +315,7 @@ tag: | |||
308 | page_title: 'Etiquetas' | 315 | page_title: 'Etiquetas' |
309 | list: | 316 | list: |
310 | number_on_the_page: "{0} I a pas cap d'etiquetas.|{1} I a una etiqueta.|]1,Inf[ I a %count% etiquetas." | 317 | number_on_the_page: "{0} I a pas cap d'etiquetas.|{1} I a una etiqueta.|]1,Inf[ I a %count% etiquetas." |
318 | see_untagged_entries: "Afichar las entradas sens pas cap d'etiquetas" | ||
311 | 319 | ||
312 | import: | 320 | import: |
313 | page_title: 'Importar' | 321 | page_title: 'Importar' |
@@ -320,7 +328,7 @@ import: | |||
320 | file_label: 'Fichièr' | 328 | file_label: 'Fichièr' |
321 | save_label: 'Importar lo fichièr' | 329 | save_label: 'Importar lo fichièr' |
322 | pocket: | 330 | pocket: |
323 | page_title: 'Importer > Pocket' | 331 | page_title: 'Importar > Pocket' |
324 | description: "Aquesta aisina importarà totas vòstras donadas de Pocket. Pocket nos permet pas de recuperar lo contengut dempuèi lor servidor, alara wallabag deu tornar fulhetar cada article per recuperar son contengut." | 332 | description: "Aquesta aisina importarà totas vòstras donadas de Pocket. Pocket nos permet pas de recuperar lo contengut dempuèi lor servidor, alara wallabag deu tornar fulhetar cada article per recuperar son contengut." |
325 | config_missing: | 333 | config_missing: |
326 | description: "L'importacion dempuèi Pocket es pas configurada." | 334 | description: "L'importacion dempuèi Pocket es pas configurada." |
@@ -329,12 +337,30 @@ import: | |||
329 | authorize_message: "Podètz importar vòstras donadas dempuèi vòstre compte Pocket. Vos cal pas que clicar sul boton çai-jos e autorizar wallabag a se connectar a getpocket.com." | 337 | authorize_message: "Podètz importar vòstras donadas dempuèi vòstre compte Pocket. Vos cal pas que clicar sul boton çai-jos e autorizar wallabag a se connectar a getpocket.com." |
330 | connect_to_pocket: 'Se connectar a Pocket e importar las donadas' | 338 | connect_to_pocket: 'Se connectar a Pocket e importar las donadas' |
331 | wallabag_v1: | 339 | wallabag_v1: |
332 | page_title: 'Importer > Wallabag v1' | 340 | page_title: 'Importar > Wallabag v1' |
333 | description: 'Aquesta aisina importarà totas vòstras donadas de wallabag v1. Sus vòstre pagina de configuracion de wallabag v1, clicatz sus \"Export JSON\" dins la seccion \"Exportar vòstras donadas de wallabag\". Traparatz un fichièr \"wallabag-export-1-xxxx-xx-xx.json\".' | 341 | description: 'Aquesta aisina importarà totas vòstras donadas de wallabag v1. Sus vòstre pagina de configuracion de wallabag v1, clicatz sus \"Export JSON\" dins la seccion \"Exportar vòstras donadas de wallabag\". Traparatz un fichièr \"wallabag-export-1-xxxx-xx-xx.json\".' |
334 | how_to: "Causissètz lo fichièr de vòstra exportacion wallabag v1 e clicatz sul boton çai-jos per l'importar." | 342 | how_to: "Causissètz lo fichièr de vòstra exportacion wallabag v1 e clicatz sul boton çai-jos per l'importar." |
335 | wallabag_v2: | 343 | wallabag_v2: |
336 | page_title: 'Importer > Wallabag v2' | 344 | page_title: 'Importar > Wallabag v2' |
337 | description: "Aquesta aisina importarà totas vòstras donadas d'una instància mai de wallabag v2. Anatz dins totes vòstres articles, puèi, sus la barra laterala, clicatz sus \"JSON\". Traparatz un fichièr \"All articles.json\"" | 345 | description: "Aquesta aisina importarà totas vòstras donadas d'una instància mai de wallabag v2. Anatz dins totes vòstres articles, puèi, sus la barra laterala, clicatz sus \"JSON\". Traparatz un fichièr \"All articles.json\"" |
346 | readability: | ||
347 | page_title: 'Importer > Readability' | ||
348 | description: "Aquesta aisina importarà totas vòstres articles de Readability. Sus la pagina de l'aisina (https://www.readability.com/tools/), clicatz sus \"Export your data\" dins la seccion \"Data Export\". Recebretz un corrièl per telecargar un json (qu'acaba pas amb un .json de fach)." | ||
349 | how_to: "Mercés de seleccionar vòstre Readability fichièr e de clicar sul boton dejós per lo telecargar e l'importar." | ||
350 | worker: | ||
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | ||
352 | firefox: | ||
353 | page_title: 'Importer > Firefox' | ||
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | ||
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
356 | chrome: | ||
357 | page_title: 'Importer > Chrome' | ||
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | ||
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
360 | instapaper: | ||
361 | page_title: 'Importer > Instapaper' | ||
362 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
363 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
338 | 364 | ||
339 | developer: | 365 | developer: |
340 | page_title: 'Desvolopador' | 366 | page_title: 'Desvolopador' |
@@ -342,7 +368,7 @@ developer: | |||
342 | documentation: 'Documentacion' | 368 | documentation: 'Documentacion' |
343 | how_to_first_app: 'Cossí crear vòstra primièra aplicacion' | 369 | how_to_first_app: 'Cossí crear vòstra primièra aplicacion' |
344 | full_documentation: "Veire la documentacion completa de l'API" | 370 | full_documentation: "Veire la documentacion completa de l'API" |
345 | # list_methods: 'List API methods' | 371 | list_methods: "Lista dels metòdes de l'API" |
346 | clients: | 372 | clients: |
347 | title: 'Clients' | 373 | title: 'Clients' |
348 | create_new: 'Crear un novèl client' | 374 | create_new: 'Crear un novèl client' |
@@ -374,7 +400,7 @@ developer: | |||
374 | howto: | 400 | howto: |
375 | page_title: 'Desvolopador > Cossí crear ma primièra aplicacion' | 401 | page_title: 'Desvolopador > Cossí crear ma primièra aplicacion' |
376 | description: | 402 | description: |
377 | paragraph_1: "Las comandas seguentas utilizan la <a href=\"https://github.com/jkbrzt/httpie\">libraria HTTPie</a>. Asseguratz-vos que siasqueòu installadas abans de l'utilizar." | 403 | paragraph_1: "Las comandas seguentas utilizan la <a href=\"https://github.com/jkbrzt/httpie\">bibliotèca HTTPie</a>. Asseguratz-vos que siasqueòu installadas abans de l'utilizar." |
378 | paragraph_2: "Vos cal un geton per escambiar entre vòstra aplicacion e l'API de wallabar." | 404 | paragraph_2: "Vos cal un geton per escambiar entre vòstra aplicacion e l'API de wallabar." |
379 | paragraph_3: 'Per crear un geton, vos cal crear <a href=\"%link%\">crear un novèl client</a>.' | 405 | paragraph_3: 'Per crear un geton, vos cal crear <a href=\"%link%\">crear un novèl client</a>.' |
380 | paragraph_4: 'Ara creatz un geton (remplaçar client_id, client_secret, username e password amb las bonas valors) :' | 406 | paragraph_4: 'Ara creatz un geton (remplaçar client_id, client_secret, username e password amb las bonas valors) :' |
@@ -400,10 +426,10 @@ flashes: | |||
400 | notice: | 426 | notice: |
401 | entry_already_saved: 'Article ja salvargardat lo %date%' | 427 | entry_already_saved: 'Article ja salvargardat lo %date%' |
402 | entry_saved: 'Article enregistrat' | 428 | entry_saved: 'Article enregistrat' |
403 | # entry_saved_failed: 'Failed to save entry' | 429 | # entry_saved_failed: 'Entry saved but fetching content failed' |
404 | entry_updated: 'Article mes a jorn' | 430 | entry_updated: 'Article mes a jorn' |
405 | entry_reloaded: 'Article recargat' | 431 | entry_reloaded: 'Article recargat' |
406 | entry_reload_failed: "Fracàs de l'actualizacion de l'article" | 432 | # entry_reload_failed: 'Entry reloaded but fetching content failed' |
407 | entry_archived: 'Article marcat coma legit' | 433 | entry_archived: 'Article marcat coma legit' |
408 | entry_unarchived: 'Article marcat coma pas legit' | 434 | entry_unarchived: 'Article marcat coma pas legit' |
409 | entry_starred: 'Article apondut dins los favorits' | 435 | entry_starred: 'Article apondut dins los favorits' |
@@ -417,6 +443,10 @@ flashes: | |||
417 | failed: "L'importacion a fracassat, mercés de tornar ensajar" | 443 | failed: "L'importacion a fracassat, mercés de tornar ensajar" |
418 | failed_on_file: "Errorr pendent du tractament de l'import. Mercés de verificar vòstre fichièr." | 444 | failed_on_file: "Errorr pendent du tractament de l'import. Mercés de verificar vòstre fichièr." |
419 | summary: "Rapòrt d'import: %imported% importats, %skipped% ja presents." | 445 | summary: "Rapòrt d'import: %imported% importats, %skipped% ja presents." |
446 | # summary_with_queue: 'Import summary: %queued% queued.' | ||
447 | error: | ||
448 | # redis_enabled_not_installed: Redis is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check Redis configuration. | ||
449 | # rabbit_enabled_not_installed: RabbitMQ is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check RabbitMQ configuration. | ||
420 | developer: | 450 | developer: |
421 | notice: | 451 | notice: |
422 | client_created: 'Novèl client creat' | 452 | client_created: 'Novèl client creat' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml index 2db26cf1..27507a81 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.pl.yml | |||
@@ -68,6 +68,7 @@ config: | |||
68 | 200_word: 'Czytam ~200 słów na minutę' | 68 | 200_word: 'Czytam ~200 słów na minutę' |
69 | 300_word: 'Czytam ~300 słów na minutę' | 69 | 300_word: 'Czytam ~300 słów na minutę' |
70 | 400_word: 'Czytam ~400 słów na minutę' | 70 | 400_word: 'Czytam ~400 słów na minutę' |
71 | pocket_consumer_key_label: 'Klucz klienta Pocket do importu zawartości' | ||
71 | form_rss: | 72 | form_rss: |
72 | description: 'Kanały RSS prowadzone przez wallabag pozwalają Ci na czytanie twoich zapisanych artykułów w twoium ulubionym czytniku RSS. Musisz najpierw wynegenerować tokena.' | 73 | description: 'Kanały RSS prowadzone przez wallabag pozwalają Ci na czytanie twoich zapisanych artykułów w twoium ulubionym czytniku RSS. Musisz najpierw wynegenerować tokena.' |
73 | token_label: 'Token RSS' | 74 | token_label: 'Token RSS' |
@@ -139,11 +140,14 @@ entry: | |||
139 | starred: 'Wpisy oznaczone gwiazdką' | 140 | starred: 'Wpisy oznaczone gwiazdką' |
140 | archived: 'Zarchiwizowane wpisy' | 141 | archived: 'Zarchiwizowane wpisy' |
141 | filtered: 'Odfiltrowane wpisy' | 142 | filtered: 'Odfiltrowane wpisy' |
143 | filtered_tags: 'Filtrowane po tagach' | ||
144 | untagged: 'Odtaguj wpisy' | ||
142 | list: | 145 | list: |
143 | number_on_the_page: '{0} Nie ma wpisów.|{1} Jest jeden wpis.|]1,Inf[ Są %count% wpisy.' | 146 | number_on_the_page: '{0} Nie ma wpisów.|{1} Jest jeden wpis.|]1,Inf[ Są %count% wpisy.' |
144 | reading_time: 'szacunkowy czas czytania' | 147 | reading_time: 'szacunkowy czas czytania' |
145 | reading_time_minutes: 'szacunkowy czas czytania: %readingTime% min' | 148 | reading_time_minutes: 'szacunkowy czas czytania: %readingTime% min' |
146 | reading_time_less_one_minute: 'szacunkowy czas czytania: <small class="inferieur"><</small> 1 min' | 149 | reading_time_less_one_minute: 'szacunkowy czas czytania: <small class="inferieur"><</small> 1 min' |
150 | number_of_tags: '{1} i inny tag|]1,Inf[i %count% innych tagów' | ||
147 | reading_time_minutes_short: '%readingTime% min' | 151 | reading_time_minutes_short: '%readingTime% min' |
148 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' | 152 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' |
149 | original_article: 'oryginał' | 153 | original_article: 'oryginał' |
@@ -185,6 +189,8 @@ entry: | |||
185 | add_a_tag: 'Dodaj tag' | 189 | add_a_tag: 'Dodaj tag' |
186 | share_content: 'Udostępnij' | 190 | share_content: 'Udostępnij' |
187 | share_email_label: 'Adres email' | 191 | share_email_label: 'Adres email' |
192 | public_link: 'Publiczny link' | ||
193 | delete_public_link: 'Usuń publiczny link' | ||
188 | download: 'Pobierz' | 194 | download: 'Pobierz' |
189 | print: 'Drukuj' | 195 | print: 'Drukuj' |
190 | problem: | 196 | problem: |
@@ -273,7 +279,7 @@ quickstart: | |||
273 | title: 'Administracja' | 279 | title: 'Administracja' |
274 | description: 'Jako administrator wallabag, możesz:' | 280 | description: 'Jako administrator wallabag, możesz:' |
275 | new_user: 'Tworzyć nowego użytkownika' | 281 | new_user: 'Tworzyć nowego użytkownika' |
276 | analytics: 'Configure analytics' | 282 | analytics: 'Konfigurować analityki' |
277 | sharing: 'Włączyć pewne parametry dotyczące udostępniania artykułów' | 283 | sharing: 'Włączyć pewne parametry dotyczące udostępniania artykułów' |
278 | export: 'Skonfigurować eksport' | 284 | export: 'Skonfigurować eksport' |
279 | import: 'Skonfigurować import' | 285 | import: 'Skonfigurować import' |
@@ -287,6 +293,7 @@ quickstart: | |||
287 | pocket: 'Migruj z Pocket' | 293 | pocket: 'Migruj z Pocket' |
288 | wallabag_v1: 'Migruj z wallabag v1' | 294 | wallabag_v1: 'Migruj z wallabag v1' |
289 | wallabag_v2: 'Migruj z wallabag v2' | 295 | wallabag_v2: 'Migruj z wallabag v2' |
296 | readability: 'Migruj z Readability' | ||
290 | developer: | 297 | developer: |
291 | title: 'Deweloperzy' | 298 | title: 'Deweloperzy' |
292 | create_application: 'Stwórz swoją aplikację' | 299 | create_application: 'Stwórz swoją aplikację' |
@@ -308,6 +315,7 @@ tag: | |||
308 | page_title: 'Tagi' | 315 | page_title: 'Tagi' |
309 | list: | 316 | list: |
310 | number_on_the_page: '{0} Nie ma tagów.|{1} Jest jeden tag.|]1,Inf[ Są %count% tagi.' | 317 | number_on_the_page: '{0} Nie ma tagów.|{1} Jest jeden tag.|]1,Inf[ Są %count% tagi.' |
318 | see_untagged_entries: 'Zobacz nieotagowane wpisy' | ||
311 | 319 | ||
312 | import: | 320 | import: |
313 | page_title: 'Import' | 321 | page_title: 'Import' |
@@ -335,6 +343,24 @@ import: | |||
335 | wallabag_v2: | 343 | wallabag_v2: |
336 | page_title: 'Import > Wallabag v2' | 344 | page_title: 'Import > Wallabag v2' |
337 | description: 'Ten importer, zaimportuje wszystkie twoje artykułu z wallabag v2. Idź do wszystkich artykułów, a następnie na panelu exportu kliknij na "JSON". Otrzymasz plik "All articles.json".' | 345 | description: 'Ten importer, zaimportuje wszystkie twoje artykułu z wallabag v2. Idź do wszystkich artykułów, a następnie na panelu exportu kliknij na "JSON". Otrzymasz plik "All articles.json".' |
346 | readability: | ||
347 | page_title: 'Import > Readability' | ||
348 | description: 'Ten importer, zaimportuje wszystkie twoje artykuły z Readability. Na stronie narzędzi (https://www.readability.com/tools/), kliknij na "Export your data" w sekcji "Data Export". Otrzymach email z plikiem JSON (plik nie będzie zawierał rozszerzenia .json).' | ||
349 | how_to: 'Wybierz swój plik eksportu z Readability i kliknij poniższy przycisk, aby go załadować.' | ||
350 | worker: | ||
351 | enabled: "Import jest wykonywany asynchronicznie. Od momentu rozpoczęcia importu, zewnętrzna usługa może zajmować się na raz tylko jednym zadaniem. Bieżącą usługą jest:" | ||
352 | firefox: | ||
353 | page_title: 'Import > Firefox' | ||
354 | description: "Ten importer zaimportuje wszystkie twoje zakładki z Firefoksa. <p>Dla Firefoksa, idź do twoich zakładek (Ctrl+Shift+O), następnie w \"Import i kopie zapasowe\", wybierz \"Utwórz kopię zapasową...\". Uzyskasz plik .json." | ||
355 | how_to: "Wybierz swój plik z zakładkami i naciśnij poniższy przycisk, aby je zaimportować. Może to zająć dłuższą chwilę, zanim wszystkie artykuły zostaną przeniesione." | ||
356 | chrome: | ||
357 | page_title: 'Import > Chrome' | ||
358 | description: "Ten importer zaimportuje wszystkie twoje zakładki z Chrome. Lokalizacja pliku jest zależna od twojego systemy operacyjnego : <ul><li>Pod Linuksem, idź do katalogu <code>~/.config/chromium/Default/</code></li><li>Pod Windowsem, powinien się on znajdować w <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>Pod OS X, powinien się on znajdować w <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Po odnalezieniu pliku, skopiuj go w łatwo dostęne miejsce.<em><br>Jeżeli używasz Chromium zamiast Chrome, będziesz musiał odpowiednio poprawić ścieżkę dostępu.</em></p>" | ||
359 | how_to: "Wybierz swój plik z zakładkami i naciśnij poniższy przycisk, aby je zaimportować. Może to zająć dłuższą chwilę, zanim wszystkie artykuły zostaną przeniesione." | ||
360 | instapaper: | ||
361 | page_title: 'Import > Instapaper' | ||
362 | description: 'Ten importer, zaimportuje wszystkie twoje artykuły z Instapaper. W ustawieniach (https://www.instapaper.com/user), kliknij na "Download .CSV file" w sekcji "Export". Otrzymasz plik CSV.' | ||
363 | how_to: 'Wybierz swój plik eksportu z Instapaper i kliknij poniższy przycisk, aby go załadować.' | ||
338 | 364 | ||
339 | developer: | 365 | developer: |
340 | page_title: 'Deweloper' | 366 | page_title: 'Deweloper' |
@@ -342,13 +368,13 @@ developer: | |||
342 | documentation: 'Dokumentacja' | 368 | documentation: 'Dokumentacja' |
343 | how_to_first_app: 'Jak stworzyć moją pierwszą aplikację' | 369 | how_to_first_app: 'Jak stworzyć moją pierwszą aplikację' |
344 | full_documentation: 'Pokaż pełne API' | 370 | full_documentation: 'Pokaż pełne API' |
345 | # list_methods: 'List API methods' | 371 | list_methods: 'Lista metod API' |
346 | clients: | 372 | clients: |
347 | title: 'Klienci' | 373 | title: 'Klienci' |
348 | create_new: 'Utwórz nowego klienta' | 374 | create_new: 'Utwórz nowego klienta' |
349 | existing_clients: | 375 | existing_clients: |
350 | title: 'Istniejący klienci' | 376 | title: 'Istniejący klienci' |
351 | field_id: 'Client ID' | 377 | field_id: 'ID klienta' |
352 | field_secret: 'Client secret' | 378 | field_secret: 'Client secret' |
353 | field_uris: 'Przekieruj URIs' | 379 | field_uris: 'Przekieruj URIs' |
354 | field_grant_types: 'Przyznaj pozwolenie' | 380 | field_grant_types: 'Przyznaj pozwolenie' |
@@ -400,10 +426,10 @@ flashes: | |||
400 | notice: | 426 | notice: |
401 | entry_already_saved: 'Wpis już został dodany %date%' | 427 | entry_already_saved: 'Wpis już został dodany %date%' |
402 | entry_saved: 'Wpis zapisany' | 428 | entry_saved: 'Wpis zapisany' |
403 | # entry_saved_failed: 'Failed to save entry' | 429 | entry_saved_failed: 'Wpis zapisany, ale wystąpił bład pobierania treści' |
404 | entry_updated: 'Wpis zaktualizowany' | 430 | entry_updated: 'Wpis zaktualizowany' |
405 | entry_reloaded: 'Wpis ponownie załadowany' | 431 | entry_reloaded: 'Wpis ponownie załadowany' |
406 | entry_reload_failed: 'Błąd ponownego załadowania' | 432 | entry_reload_failed: 'Wpis ponownie załadowany, ale wystąpił bład pobierania treści' |
407 | entry_archived: 'Wpis dodany do archiwum' | 433 | entry_archived: 'Wpis dodany do archiwum' |
408 | entry_unarchived: 'Wpis usunięty z archiwum' | 434 | entry_unarchived: 'Wpis usunięty z archiwum' |
409 | entry_starred: 'Wpis oznaczony gwiazdką' | 435 | entry_starred: 'Wpis oznaczony gwiazdką' |
@@ -417,6 +443,10 @@ flashes: | |||
417 | failed: 'Nieudany import, prosimy spróbować ponownie.' | 443 | failed: 'Nieudany import, prosimy spróbować ponownie.' |
418 | failed_on_file: 'Błąd podczas ptrzetwarzania pliku. Sprawdż swój importowany plik.' | 444 | failed_on_file: 'Błąd podczas ptrzetwarzania pliku. Sprawdż swój importowany plik.' |
419 | summary: 'Podsumowanie importu: %imported% zaimportowane, %skipped% już zapisane.' | 445 | summary: 'Podsumowanie importu: %imported% zaimportowane, %skipped% już zapisane.' |
446 | summary_with_queue: 'Podsumowanie importu: %queued% zakolejkowane.' | ||
447 | error: | ||
448 | redis_enabled_not_installed: 'Redis jest włączony dla obsługi importu asynchronicznego, ale <u>nie możemy się z nim połączyć</u>. Sprawdź konfigurację Redisa.' | ||
449 | rabbit_enabled_not_installed: 'RabbitMQ jest włączony dla obsługi importu asynchronicznego, ale <u>nie możemy się z nim połączyć</u>. Sprawdź konfigurację RabbitMQ.' | ||
420 | developer: | 450 | developer: |
421 | notice: | 451 | notice: |
422 | client_created: 'Nowy klient utworzony.' | 452 | client_created: 'Nowy klient utworzony.' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml index d8f09bc9..7c77ffb7 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.ro.yml | |||
@@ -68,6 +68,7 @@ config: | |||
68 | # 200_word: 'I read ~200 words per minute' | 68 | # 200_word: 'I read ~200 words per minute' |
69 | # 300_word: 'I read ~300 words per minute' | 69 | # 300_word: 'I read ~300 words per minute' |
70 | # 400_word: 'I read ~400 words per minute' | 70 | # 400_word: 'I read ~400 words per minute' |
71 | pocket_consumer_key_label: Cheie consumator pentru importarea contentului din Pocket | ||
71 | form_rss: | 72 | form_rss: |
72 | description: 'Feed-urile RSS oferite de wallabag îți permit să-ți citești articolele salvate în reader-ul tău preferat RSS.' | 73 | description: 'Feed-urile RSS oferite de wallabag îți permit să-ți citești articolele salvate în reader-ul tău preferat RSS.' |
73 | token_label: 'RSS-Token' | 74 | token_label: 'RSS-Token' |
@@ -139,11 +140,14 @@ entry: | |||
139 | # starred: 'Starred entries' | 140 | # starred: 'Starred entries' |
140 | # archived: 'Archived entries' | 141 | # archived: 'Archived entries' |
141 | # filtered: 'Filtered entries' | 142 | # filtered: 'Filtered entries' |
143 | # filtered_tags: 'Filtered by tags' | ||
144 | # untagged: 'Untagged entries' | ||
142 | list: | 145 | list: |
143 | # number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.' | 146 | # number_on_the_page: '{0} There is no entry.|{1} There is one entry.|]1,Inf[ There are %count% entries.' |
144 | reading_time: 'timp estimat de citire' | 147 | reading_time: 'timp estimat de citire' |
145 | reading_time_minutes: 'timp estimat de citire: %readingTime% min' | 148 | reading_time_minutes: 'timp estimat de citire: %readingTime% min' |
146 | reading_time_less_one_minute: 'timp estimat de citire: <small class="inferieur"><</small> 1 min' | 149 | reading_time_less_one_minute: 'timp estimat de citire: <small class="inferieur"><</small> 1 min' |
150 | # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags' | ||
147 | reading_time_minutes_short: '%readingTime% min' | 151 | reading_time_minutes_short: '%readingTime% min' |
148 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' | 152 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' |
149 | original_article: 'original' | 153 | original_article: 'original' |
@@ -185,6 +189,8 @@ entry: | |||
185 | add_a_tag: 'Adaugă un tag' | 189 | add_a_tag: 'Adaugă un tag' |
186 | share_content: 'Dă mai departe' | 190 | share_content: 'Dă mai departe' |
187 | share_email_label: 'E-mail' | 191 | share_email_label: 'E-mail' |
192 | # public_link: 'public link' | ||
193 | # delete_public_link: 'delete public link' | ||
188 | download: 'Descarcă' | 194 | download: 'Descarcă' |
189 | # print: 'Print' | 195 | # print: 'Print' |
190 | problem: | 196 | problem: |
@@ -287,6 +293,7 @@ quickstart: | |||
287 | # pocket: 'Migrate from Pocket' | 293 | # pocket: 'Migrate from Pocket' |
288 | # wallabag_v1: 'Migrate from wallabag v1' | 294 | # wallabag_v1: 'Migrate from wallabag v1' |
289 | # wallabag_v2: 'Migrate from wallabag v2' | 295 | # wallabag_v2: 'Migrate from wallabag v2' |
296 | # readability: 'Migrate from Readability' | ||
290 | # developer: | 297 | # developer: |
291 | # title: 'Developers' | 298 | # title: 'Developers' |
292 | # create_application: 'Create your third application' | 299 | # create_application: 'Create your third application' |
@@ -308,6 +315,7 @@ tag: | |||
308 | page_title: 'Tag-uri' | 315 | page_title: 'Tag-uri' |
309 | list: | 316 | list: |
310 | # number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.' | 317 | # number_on_the_page: '{0} There is no tag.|{1} There is one tag.|]1,Inf[ There are %count% tags.' |
318 | # see_untagged_entries: 'See untagged entries' | ||
311 | 319 | ||
312 | import: | 320 | import: |
313 | # page_title: 'Import' | 321 | # page_title: 'Import' |
@@ -335,6 +343,24 @@ import: | |||
335 | # wallabag_v2: | 343 | # wallabag_v2: |
336 | # page_title: 'Import > Wallabag v2' | 344 | # page_title: 'Import > Wallabag v2' |
337 | # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.' | 345 | # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.' |
346 | # readability: | ||
347 | # page_title: 'Import > Readability' | ||
348 | # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).' | ||
349 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' | ||
350 | worker: | ||
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | ||
352 | # firefox: | ||
353 | # page_title: 'Import > Firefox' | ||
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | ||
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
356 | # chrome: | ||
357 | # page_title: 'Import > Chrome' | ||
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | ||
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
360 | # instapaper: | ||
361 | # page_title: 'Import > Instapaper' | ||
362 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
363 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
338 | 364 | ||
339 | developer: | 365 | developer: |
340 | # page_title: 'Developer' | 366 | # page_title: 'Developer' |
@@ -400,10 +426,10 @@ flashes: | |||
400 | notice: | 426 | notice: |
401 | # entry_already_saved: 'Entry already saved on %date%' | 427 | # entry_already_saved: 'Entry already saved on %date%' |
402 | # entry_saved: 'Entry saved' | 428 | # entry_saved: 'Entry saved' |
403 | # entry_saved_failed: 'Failed to save entry' | 429 | # entry_saved_failed: 'Entry saved but fetching content failed' |
404 | # entry_updated: 'Entry updated' | 430 | # entry_updated: 'Entry updated' |
405 | # entry_reloaded: 'Entry reloaded' | 431 | # entry_reloaded: 'Entry reloaded' |
406 | # entry_reload_failed: 'Failed to reload entry' | 432 | # entry_reload_failed: 'Entry reloaded but fetching content failed' |
407 | entry_archived: 'Articol arhivat' | 433 | entry_archived: 'Articol arhivat' |
408 | entry_unarchived: 'Articol dezarhivat' | 434 | entry_unarchived: 'Articol dezarhivat' |
409 | entry_starred: 'Articol adăugat la favorite' | 435 | entry_starred: 'Articol adăugat la favorite' |
@@ -417,6 +443,10 @@ flashes: | |||
417 | # failed: 'Import failed, please try again.' | 443 | # failed: 'Import failed, please try again.' |
418 | # failed_on_file: 'Error while processing import. Please verify your import file.' | 444 | # failed_on_file: 'Error while processing import. Please verify your import file.' |
419 | # summary: 'Import summary: %imported% imported, %skipped% already saved.' | 445 | # summary: 'Import summary: %imported% imported, %skipped% already saved.' |
446 | # summary_with_queue: 'Import summary: %queued% queued.' | ||
447 | error: | ||
448 | # redis_enabled_not_installed: Redis is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check Redis configuration. | ||
449 | # rabbit_enabled_not_installed: RabbitMQ is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check RabbitMQ configuration. | ||
420 | developer: | 450 | developer: |
421 | notice: | 451 | notice: |
422 | # client_created: 'New client created.' | 452 | # client_created: 'New client created.' |
diff --git a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml index 074d13e2..8bc0c4b9 100644 --- a/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml +++ b/src/Wallabag/CoreBundle/Resources/translations/messages.tr.yml | |||
@@ -68,6 +68,7 @@ config: | |||
68 | # 200_word: 'I read ~200 words per minute' | 68 | # 200_word: 'I read ~200 words per minute' |
69 | # 300_word: 'I read ~300 words per minute' | 69 | # 300_word: 'I read ~300 words per minute' |
70 | # 400_word: 'I read ~400 words per minute' | 70 | # 400_word: 'I read ~400 words per minute' |
71 | # pocket_consumer_key_label: Consumer key for Pocket to import contents | ||
71 | form_rss: | 72 | form_rss: |
72 | description: 'wallabag RSS akışı kaydetmiş olduğunuz makalelerini favori RSS okuyucunuzda görüntülemenizi sağlar. Bunu yapabilmek için öncelikle belirteç (token) oluşturmalısınız.' | 73 | description: 'wallabag RSS akışı kaydetmiş olduğunuz makalelerini favori RSS okuyucunuzda görüntülemenizi sağlar. Bunu yapabilmek için öncelikle belirteç (token) oluşturmalısınız.' |
73 | token_label: 'RSS belirteci (token)' | 74 | token_label: 'RSS belirteci (token)' |
@@ -139,11 +140,14 @@ entry: | |||
139 | # starred: 'Starred entries' | 140 | # starred: 'Starred entries' |
140 | # archived: 'Archived entries' | 141 | # archived: 'Archived entries' |
141 | # filtered: 'Filtered entries' | 142 | # filtered: 'Filtered entries' |
143 | # filtered_tags: 'Filtered by tags' | ||
144 | # untagged: 'Untagged entries' | ||
142 | list: | 145 | list: |
143 | number_on_the_page: '{0} Herhangi bir makale yok.|{1} Burada bir adet makale var.|]1,Inf[ Burada %count% adet makale var.' | 146 | number_on_the_page: '{0} Herhangi bir makale yok.|{1} Burada bir adet makale var.|]1,Inf[ Burada %count% adet makale var.' |
144 | reading_time: 'tahmini okuma süresi' | 147 | reading_time: 'tahmini okuma süresi' |
145 | reading_time_minutes: 'tahmini okuma süresi: %readingTime% min' | 148 | reading_time_minutes: 'tahmini okuma süresi: %readingTime% min' |
146 | reading_time_less_one_minute: 'tahmini okuma süresi: <small class="inferieur"><</small> 1 min' | 149 | reading_time_less_one_minute: 'tahmini okuma süresi: <small class="inferieur"><</small> 1 min' |
150 | # number_of_tags: '{1}and one other tag|]1,Inf[and %count% other tags' | ||
147 | reading_time_minutes_short: '%readingTime% min' | 151 | reading_time_minutes_short: '%readingTime% min' |
148 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' | 152 | reading_time_less_one_minute_short: '<small class="inferieur"><</small> 1 min' |
149 | original_article: 'orijinal' | 153 | original_article: 'orijinal' |
@@ -185,6 +189,8 @@ entry: | |||
185 | add_a_tag: 'Bir etiket ekle' | 189 | add_a_tag: 'Bir etiket ekle' |
186 | share_content: 'Paylaş' | 190 | share_content: 'Paylaş' |
187 | share_email_label: 'E-posta' | 191 | share_email_label: 'E-posta' |
192 | # public_link: 'public link' | ||
193 | # delete_public_link: 'delete public link' | ||
188 | download: 'İndir' | 194 | download: 'İndir' |
189 | # print: 'Print' | 195 | # print: 'Print' |
190 | problem: | 196 | problem: |
@@ -287,6 +293,7 @@ quickstart: | |||
287 | pocket: "Pocket üzerindeki verilerinizi wallabag'e aktarın" | 293 | pocket: "Pocket üzerindeki verilerinizi wallabag'e aktarın" |
288 | wallabag_v1: "wallabag v1 üzerindeki verilerinizi wallabag'in yeni sürümüne aktarın" | 294 | wallabag_v1: "wallabag v1 üzerindeki verilerinizi wallabag'in yeni sürümüne aktarın" |
289 | wallabag_v2: "wallabag v2 üzerindeki verilerinizi wallabag'in yeni sürümüne aktarın" | 295 | wallabag_v2: "wallabag v2 üzerindeki verilerinizi wallabag'in yeni sürümüne aktarın" |
296 | readability: "Readability üzerindeki verilerinizi wallabag'e aktarın'" | ||
290 | developer: | 297 | developer: |
291 | # title: 'Developers' | 298 | # title: 'Developers' |
292 | # create_application: 'Create your third application' | 299 | # create_application: 'Create your third application' |
@@ -308,6 +315,7 @@ tag: | |||
308 | page_title: 'Etiketler' | 315 | page_title: 'Etiketler' |
309 | list: | 316 | list: |
310 | number_on_the_page: '{0} Herhangi bir etiket yok.|{1} Burada bir adet etiket var.|]1,Inf[ Burada %count% adet etiket var.' | 317 | number_on_the_page: '{0} Herhangi bir etiket yok.|{1} Burada bir adet etiket var.|]1,Inf[ Burada %count% adet etiket var.' |
318 | # see_untagged_entries: 'See untagged entries' | ||
311 | 319 | ||
312 | import: | 320 | import: |
313 | page_title: 'İçe Aktar' | 321 | page_title: 'İçe Aktar' |
@@ -335,6 +343,24 @@ import: | |||
335 | wallabag_v2: | 343 | wallabag_v2: |
336 | page_title: 'İçe Aktar > Wallabag v2' | 344 | page_title: 'İçe Aktar > Wallabag v2' |
337 | # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.' | 345 | # description: 'This importer will import all your wallabag v2 articles. Go to All articles, then, on the export sidebar, click on "JSON". You will have a "All articles.json" file.' |
346 | readability: | ||
347 | page_title: 'İçe Aktar > Readability' | ||
348 | # description: 'This importer will import all your Readability articles. On the tools (https://www.readability.com/tools/) page, click on "Export your data" in the "Data Export" section. You will received an email to download a json (which does not end with .json in fact).' | ||
349 | # how_to: 'Please select your Readability export and click on the below button to upload and import it.' | ||
350 | worker: | ||
351 | # enabled: "Import is made asynchronously. Once the import task is started, an external worker will handle jobs one at a time. The current service is:" | ||
352 | firefox: | ||
353 | page_title: 'İçe Aktar > Firefox' | ||
354 | # description: "This importer will import all your Firefox bookmarks. <p>For Firefox, just go to your bookmarks (Ctrl+Maj+O), then into \"Import and backup\", choose \"Backup...\". You will obtain a .json file." | ||
355 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
356 | chrome: | ||
357 | page_title: 'İçe Aktar > Chrome' | ||
358 | # description: "This importer will import all your Chrome bookmarks. The location of the file depends on your operating system : <ul><li>On Linux, go into the <code>~/.config/chromium/Default/</code> directory</li><li>On Windows, it should be at <code>%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default</code></li><li>On OS X, it should be at <code>~/Library/Application Support/Google/Chrome/Default/Bookmarks</code></li></ul>Once you got there, copy the Bookmarks file someplace you'll find.<em><br>Note that if you have Chromium instead of Chrome, you'll have to correct paths accordingly.</em></p>" | ||
359 | # how_to: "Please choose the bookmark backup file and click on the button below to import it. Note that the process may take a long time since all articles have to be fetched." | ||
360 | instapaper: | ||
361 | page_title: 'İçe Aktar > Instapaper' | ||
362 | # description: 'This importer will import all your Instapaper articles. On the settings (https://www.instapaper.com/user) page, click on "Download .CSV file" in the "Export" section. A CSV file will be downloaded (like "instapaper-export.csv").' | ||
363 | # how_to: 'Please select your Instapaper export and click on the below button to upload and import it.' | ||
338 | 364 | ||
339 | developer: | 365 | developer: |
340 | # page_title: 'Developer' | 366 | # page_title: 'Developer' |
@@ -400,10 +426,10 @@ flashes: | |||
400 | notice: | 426 | notice: |
401 | entry_already_saved: 'Entry already saved on %date%' | 427 | entry_already_saved: 'Entry already saved on %date%' |
402 | entry_saved: 'Makale kaydedildi' | 428 | entry_saved: 'Makale kaydedildi' |
403 | # entry_saved_failed: 'Failed to save entry' | 429 | # entry_saved_failed: 'Entry saved but fetching content failed' |
404 | # entry_updated: 'Entry updated' | 430 | # entry_updated: 'Entry updated' |
405 | entry_reloaded: 'Makale içeriği yenilendi' | 431 | entry_reloaded: 'Makale içeriği yenilendi' |
406 | # entry_reload_failed: 'Failed to reload entry' | 432 | # entry_reload_failed: 'Entry reloaded but fetching content failed' |
407 | entry_archived: 'Makale arşivlendi' | 433 | entry_archived: 'Makale arşivlendi' |
408 | entry_unarchived: 'Makale arşivden çıkartıldı' | 434 | entry_unarchived: 'Makale arşivden çıkartıldı' |
409 | entry_starred: 'Makale favorilere eklendi' | 435 | entry_starred: 'Makale favorilere eklendi' |
@@ -417,6 +443,10 @@ flashes: | |||
417 | # failed: 'Import failed, please try again.' | 443 | # failed: 'Import failed, please try again.' |
418 | # failed_on_file: 'Error while processing import. Please verify your import file.' | 444 | # failed_on_file: 'Error while processing import. Please verify your import file.' |
419 | # summary: 'Import summary: %imported% imported, %skipped% already saved.' | 445 | # summary: 'Import summary: %imported% imported, %skipped% already saved.' |
446 | # summary_with_queue: 'Import summary: %queued% queued.' | ||
447 | error: | ||
448 | # redis_enabled_not_installed: Redis is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check Redis configuration. | ||
449 | # rabbit_enabled_not_installed: RabbitMQ is enabled for handle asynchronous import but it looks like <u>we can't connect to it</u>. Please check RabbitMQ configuration. | ||
420 | developer: | 450 | developer: |
421 | notice: | 451 | notice: |
422 | # client_created: 'New client created.' | 452 | # client_created: 'New client created.' |
diff --git a/src/Wallabag/CoreBundle/Resources/views/base.html.twig b/src/Wallabag/CoreBundle/Resources/views/base.html.twig index f024b633..0f88901a 100644 --- a/src/Wallabag/CoreBundle/Resources/views/base.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/base.html.twig | |||
@@ -41,10 +41,6 @@ | |||
41 | {% block css %} | 41 | {% block css %} |
42 | {% endblock %} | 42 | {% endblock %} |
43 | {% block scripts %} | 43 | {% block scripts %} |
44 | <script src="{{ asset('bundles/wallabagcore/themes/_global/js/jquery-2.0.3.min.js') }}"></script> | ||
45 | <script src="{{ asset('bundles/wallabagcore/themes/_global/js/jquery.cookie.js') }}"></script> | ||
46 | <script src="{{ asset('bundles/wallabagcore/themes/_global/js/bookmarklet.js') }}"></script> | ||
47 | <script src="{{ asset('bundles/wallabagcore/themes/_global/js/annotator.min.js') }}"></script> | ||
48 | {% endblock %} | 44 | {% endblock %} |
49 | 45 | ||
50 | <title>wallabag - {% block title %}{% endblock %}</title> | 46 | <title>wallabag - {% block title %}{% endblock %}</title> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig index a8abe8d3..6446cf2c 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Config/index.html.twig | |||
@@ -44,6 +44,18 @@ | |||
44 | </div> | 44 | </div> |
45 | </fieldset> | 45 | </fieldset> |
46 | 46 | ||
47 | <fieldset class="w500p inline"> | ||
48 | <div class="row"> | ||
49 | {{ form_label(form.config.pocket_consumer_key) }} | ||
50 | {{ form_errors(form.config.pocket_consumer_key) }} | ||
51 | {{ form_widget(form.config.pocket_consumer_key) }} | ||
52 | <p> | ||
53 | » | ||
54 | <a href="https://getpocket.com/developer/docs/authentication">https://getpocket.com/developer/docs/authentication</a> | ||
55 | </p> | ||
56 | </div> | ||
57 | </fieldset> | ||
58 | |||
47 | {{ form_rest(form.config) }} | 59 | {{ form_rest(form.config) }} |
48 | </form> | 60 | </form> |
49 | 61 | ||
@@ -205,7 +217,6 @@ | |||
205 | 217 | ||
206 | {{ form_rest(form.new_tagging_rule) }} | 218 | {{ form_rest(form.new_tagging_rule) }} |
207 | </form> | 219 | </form> |
208 | |||
209 | <div class="row"> | 220 | <div class="row"> |
210 | <div class="input-field col s12"> | 221 | <div class="input-field col s12"> |
211 | <h3>{{ 'config.form_rules.faq.title'|trans }}</h3> | 222 | <h3>{{ 'config.form_rules.faq.title'|trans }}</h3> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig index 778625ae..ffc5bec6 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.html.twig | |||
@@ -1,6 +1,8 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | 1 | {% extends "WallabagCoreBundle::layout.html.twig" %} |
2 | 2 | ||
3 | {% block title %}{{ 'entry.page_titles.unread'|trans }}{% endblock %} | 3 | {% block title %} |
4 | {% include "@WallabagCore/themes/common/Entry/_title.html.twig" %} | ||
5 | {% endblock %} | ||
4 | 6 | ||
5 | {% block content %} | 7 | {% block content %} |
6 | {% include "WallabagCoreBundle:Entry:pager.html.twig" with {'entries': entries} %} | 8 | {% include "WallabagCoreBundle:Entry:pager.html.twig" with {'entries': entries} %} |
@@ -28,12 +30,43 @@ | |||
28 | </ul> | 30 | </ul> |
29 | {% if entry.previewPicture is null %} | 31 | {% if entry.previewPicture is null %} |
30 | <p>{{ entry.content|striptags|slice(0, 300) }}…</p> | 32 | <p>{{ entry.content|striptags|slice(0, 300) }}…</p> |
33 | <ul class="card-entry-tags"> | ||
34 | {% for tag in entry.tags %} | ||
35 | <li>{{ tag.label }}</li> | ||
36 | {% endfor %} | ||
37 | </ul> | ||
31 | {% else %} | 38 | {% else %} |
39 | <ul class="card-entry-labels"> | ||
40 | {% for tag in entry.tags | slice(0, 3) %} | ||
41 | <li>{{ tag.label }}</li> | ||
42 | {% endfor %} | ||
43 | </ul> | ||
32 | <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" /> | 44 | <img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" /> |
33 | {% endif %} | 45 | {% endif %} |
34 | </div> | 46 | </div> |
35 | {% endfor %} | 47 | {% endfor %} |
36 | 48 | ||
49 | <!-- Export --> | ||
50 | <aside id="download-form"> | ||
51 | {% set currentRoute = app.request.attributes.get('_route') %} | ||
52 | {% if currentRoute == 'homepage' %} | ||
53 | {% set currentRoute = 'unread' %} | ||
54 | {% endif %} | ||
55 | <h2>{{ 'entry.list.export_title'|trans }}</h2> | ||
56 | <a href="javascript: void(null);" id="download-form-close" class="close-button--popup close-button">×</a> | ||
57 | <ul> | ||
58 | {% if craue_setting('export_epub') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'epub' }) }}">EPUB</a></li>{% endif %} | ||
59 | {% if craue_setting('export_mobi') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'mobi' }) }}">MOBI</a></li>{% endif %} | ||
60 | {% if craue_setting('export_pdf') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'pdf' }) }}">PDF</a></li>{% endif %} | ||
61 | {% if craue_setting('export_csv') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'json' }) }}">JSON</a></li>{% endif %} | ||
62 | {% if craue_setting('export_json') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'csv' }) }}">CSV</a></li>{% endif %} | ||
63 | {% if craue_setting('export_txt') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'txt' }) }}">TXT</a></li>{% endif %} | ||
64 | {% if craue_setting('export_xml') %}<li class="bold"><a class="waves-effect" href="{{ path('export_entries', { 'category': currentRoute, 'format': 'xml' }) }}">XML</a></li>{% endif %} | ||
65 | </ul> | ||
66 | </aside> | ||
67 | |||
68 | <!-- Filter --> | ||
69 | {% if form is not null %} | ||
37 | <aside id="filter-form" class=""> | 70 | <aside id="filter-form" class=""> |
38 | <form method="get" action="{{ path('all') }}"> | 71 | <form method="get" action="{{ path('all') }}"> |
39 | <h2>{{ 'entry.filters.title'|trans }}</h2> | 72 | <h2>{{ 'entry.filters.title'|trans }}</h2> |
@@ -115,6 +148,5 @@ | |||
115 | </div> | 148 | </div> |
116 | </form> | 149 | </form> |
117 | </aside> | 150 | </aside> |
118 | 151 | {% endif %} | |
119 | {% include "WallabagCoreBundle:Entry:pager.html.twig" with {'entries': entries} %} | ||
120 | {% endblock %} | 152 | {% endblock %} |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig index d7374dc7..bec4b70f 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entry.html.twig | |||
@@ -5,53 +5,63 @@ | |||
5 | {% block content %} | 5 | {% block content %} |
6 | <div id="article"> | 6 | <div id="article"> |
7 | <header class="mbm"> | 7 | <header class="mbm"> |
8 | <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1> | 8 | <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" class="nostyle" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1> |
9 | </header> | 9 | </header> |
10 | 10 | ||
11 | <div id="article_toolbar"> | 11 | <div id="article_toolbar"> |
12 | <ul class="links"> | 12 | <ul class="links"> |
13 | <li class="topPosF"><a href="#top" title="{{ 'entry.view.left_menu.back_to_top'|trans }}" class="tool top icon icon-arrow-up-thick"><span>{{ 'entry.view.left_menu.set_as_read'|trans }}</span></a></li> | 13 | <li class="topPosF"><a href="#top" title="{{ 'entry.view.left_menu.back_to_top'|trans }}" class="tool top icon icon-arrow-up-thick"><span>{{ 'entry.view.left_menu.set_as_read'|trans }}</span></a></li> |
14 | <li><a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link icon icon-link"><span>{{ entry.domainName|removeWww }}</span></a></li> | 14 | <li><a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link icon icon-link"><span>{{ entry.domainName|removeWww }}</span></a></li> |
15 | <li><a title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" class="tool icon icon-reload" href="{{ path('reload_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span></a></li> | 15 | <li><a title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" class="tool icon icon-reload" href="{{ path('reload_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span></a></li> |
16 | <li><a title="{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}" class="tool icon icon-check {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}</span></a></li> | 16 | |
17 | <li><a title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" class="tool icon icon-star {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.set_as_starred'|trans }}</span></a></li> | 17 | {% set markAsReadLabel = 'entry.view.left_menu.set_as_unread' %} |
18 | <li><a id="nav-btn-add-tag" title="{{ 'entry.view.left_menu.add_a_tag'|trans }}"><span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span></a></li> | 18 | {% if entry.isArchived == 0 %} |
19 | <li><a title="{{ 'entry.view.left_menu.delete'|trans }}" class="tool delete icon icon-trash" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.delete'|trans }}</span></a></li> | 19 | {% set markAsReadLabel = 'entry.view.left_menu.set_as_read' %} |
20 | {% if craue_setting('share_twitter') %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="Tweet"><span>Tweet</span></a></li>{% endif %} | 20 | {% endif %} |
21 | {% if craue_setting('share_mail') %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="Email"><span>Email</span></a></li>{% endif %} | ||
22 | {% if craue_setting('share_shaarli') %}<li><a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="shaarli"><span>shaarli</span></a></li>{% endif %} | ||
23 | {% if craue_setting('share_diaspora') %}<li><a href="{{ craue_setting('diaspora_url') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}¬es=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="diaspora"><span>diaspora</span></a></li>{% endif %} | ||
24 | {% if craue_setting('carrot') %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon-image icon-image--carrot" target="_blank" title="carrot"><span>Carrot</span></a></li>{% endif %} | ||
25 | {% if craue_setting('show_printlink') %}<li><a title="{{ 'entry.view.left_menu.print'|trans }}" class="tool icon icon-print" href="javascript: window.print();"><span>{{ 'entry.view.left_menu.print'|trans }}</span></a></li>{% endif %} | ||
26 | {% if craue_setting('export_epub') %}<li><a href="?epub&method=id&value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %} | ||
27 | {% if craue_setting('export_mobi') %}<li><a href="?mobi&method=id&value={{ entry.id }}" title="Generate Mobi file">MOBI</a></li>{% endif %} | ||
28 | {% if craue_setting('export_pdf') %}<li><a href="?pdf&method=id&value={{ entry.id }}" title="Generate PDF file">PDF</a></li>{% endif %} | ||
29 | <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.label'|trans }}" class="tool bad-display icon icon-delete"><span>{{ 'entry.view.left_menu.problem.label'|trans }}</span></a></li> | ||
30 | </ul> | ||
31 | </div> | ||
32 | <div class="link mdi-action-today"> | ||
33 | {{ 'entry.view.created_at'|trans }}: {{ entry.createdAt|date('Y-m-d') }} | ||
34 | </div> | ||
35 | 21 | ||
36 | <div class="link mdi-action-query-builder"> | 22 | <li><a title="{{ markAsReadLabel|trans }}" class="tool icon icon-check {% if entry.isArchived == 0 %}archive-off{% else %}archive{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"><span>{{ markAsReadLabel|trans }}</span></a></li> |
37 | {% set readingTime = entry.readingTime / app.user.config.readingSpeed %} | 23 | <li><a title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" class="tool icon icon-star {% if entry.isStarred == 0 %}fav-off{% else %}fav{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.set_as_starred'|trans }}</span></a></li> |
38 | {% if readingTime > 0 %} | 24 | <li><a id="nav-btn-add-tag" title="{{ 'entry.view.left_menu.add_a_tag'|trans }}"><span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span></a></li> |
39 | {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': readingTime|round})|capitalize }} | 25 | <li><a title="{{ 'entry.view.left_menu.delete'|trans }}" class="tool delete icon icon-trash" href="{{ path('delete_entry', { 'id': entry.id }) }}"><span>{{ 'entry.view.left_menu.delete'|trans }}</span></a></li> |
40 | {% else %} | 26 | {% if craue_setting('share_public') %}<li><a href="{{ path('share', {'id': entry.id }) }}" target="_blank" class="tool public" title="{{ 'entry.view.left_menu.public_link'|trans }}"><span>{{ 'entry.view.left_menu.public_link'|trans }}</span></a></li> <li><a href="{{ path('delete_share', {'id': entry.id }) }}" class="tool public" title="{{ 'entry.view.left_menu.delete_public_link'|trans }}"><span>{{ 'entry.view.left_menu.delete_public_link'|trans }}</span></a></li>{% endif %} |
41 | {{ 'entry.list.reading_time_less_one_minute'|trans|raw }} | 27 | {% if craue_setting('share_twitter') %}<li><a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="Tweet"><span>Tweet</span></a></li>{% endif %} |
42 | {% endif %} | 28 | {% if craue_setting('share_mail') %}<li><a href="mailto:?subject={{ entry.title|url_encode }}&body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="Email"><span>Email</span></a></li>{% endif %} |
29 | {% if craue_setting('share_shaarli') %}<li><a href="{{ craue_setting('shaarli_url') }}/index.php?post={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" target="_blank" class="tool shaarli" title="shaarli"><span>shaarli</span></a></li>{% endif %} | ||
30 | {% if craue_setting('share_diaspora') %}<li><a href="{{ craue_setting('diaspora_url') }}/bookmarklet?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}¬es=&v=1&noui=1&jump=doclose" target="_blank" class="tool diaspora icon-image icon-image--diaspora" title="diaspora"><span>diaspora</span></a></li>{% endif %} | ||
31 | {% if craue_setting('carrot') %}<li><a href="https://secure.carrot.org/GiveAndGetBack.do?url={{ entry.url|url_encode }}&title={{ entry.title|url_encode }}" class="tool carrot icon-image icon-image--carrot" target="_blank" title="carrot"><span>Carrot</span></a></li>{% endif %} | ||
32 | {% if craue_setting('show_printlink') %}<li><a title="{{ 'entry.view.left_menu.print'|trans }}" class="tool icon icon-print" href="javascript: window.print();"><span>{{ 'entry.view.left_menu.print'|trans }}</span></a></li>{% endif %} | ||
33 | {% if craue_setting('export_epub') %}<li><a href="?epub&method=id&value={{ entry.id }}" title="Generate ePub file">EPUB</a></li>{% endif %} | ||
34 | {% if craue_setting('export_mobi') %}<li><a href="?mobi&method=id&value={{ entry.id }}" title="Generate Mobi file">MOBI</a></li>{% endif %} | ||
35 | {% if craue_setting('export_pdf') %}<li><a href="?pdf&method=id&value={{ entry.id }}" title="Generate PDF file">PDF</a></li>{% endif %} | ||
36 | <li><a href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.label'|trans }}" class="tool bad-display icon icon-delete"><span>{{ 'entry.view.left_menu.problem.label'|trans }}</span></a></li> | ||
37 | </ul> | ||
43 | </div> | 38 | </div> |
44 | 39 | ||
45 | {% set nbAnnotations = entry.annotations | length %} | 40 | <div id="article-informations"> |
46 | <span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span> | 41 | <div class="link mdi-action-today"> |
47 | <aside class="tags"> | 42 | {{ 'entry.view.created_at'|trans }}: {{ entry.createdAt|date('Y-m-d') }} |
48 | {% for tag in entry.tags %} | 43 | </div> |
49 | <span class="mdi-action-label-outline">{{ tag.label }}</span> <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i>✘</i></a> | 44 | |
50 | {% endfor %} | 45 | <div class="link mdi-action-query-builder"> |
51 | <div class="input-field nav-panel-add-tag" style="display: none"> | 46 | {% set readingTime = entry.readingTime / app.user.config.readingSpeed %} |
52 | {{ render(controller( "WallabagCoreBundle:Tag:addTagForm", { 'id': entry.id } )) }} | 47 | {% if readingTime > 0 %} |
48 | {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': readingTime|round})|capitalize }} | ||
49 | {% else %} | ||
50 | {{ 'entry.list.reading_time_less_one_minute'|trans|raw }} | ||
51 | {% endif %} | ||
53 | </div> | 52 | </div> |
54 | </aside> | 53 | |
54 | {% set nbAnnotations = entry.annotations | length %} | ||
55 | <span class="tool link"><i class="material-icons link">comment</i> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span> | ||
56 | <aside class="tags"> | ||
57 | {% for tag in entry.tags %} | ||
58 | <span class="label-outline"><i class="material-icons">label_outline</i> {{ tag.label }}</span> <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"class="nostyle"><i>✘</i></a> | ||
59 | {% endfor %} | ||
60 | <div class="input-field nav-panel-add-tag" style="display: none"> | ||
61 | {{ render(controller( "WallabagCoreBundle:Tag:addTagForm", { 'id': entry.id } )) }} | ||
62 | </div> | ||
63 | </aside> | ||
64 | </div> | ||
55 | {% if entry.previewPicture is not null %} | 65 | {% if entry.previewPicture is not null %} |
56 | <div><img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" /></div> | 66 | <div><img class="preview" src="{{ entry.previewPicture }}" alt="{{ entry.title|raw }}" /></div> |
57 | {% endif %} | 67 | {% endif %} |
@@ -59,54 +69,22 @@ | |||
59 | {{ entry.content | raw }} | 69 | {{ entry.content | raw }} |
60 | </article> | 70 | </article> |
61 | </div> | 71 | </div> |
72 | |||
73 | <script id="annotationroutes" type="application/json"> | ||
74 | { | ||
75 | "prefix": "", | ||
76 | "urls": { | ||
77 | "create": "{{ path('annotations_post_annotation', { 'entry': entry.id }) }}", | ||
78 | "update": "{{ path('annotations_put_annotation', { 'annotation': 'idAnnotation' }) }}", | ||
79 | "destroy": "{{ path('annotations_delete_annotation', { 'annotation': 'idAnnotation' }) }}", | ||
80 | "search": "{{ path('annotations_get_annotations', { 'entry': entry.id }) }}" | ||
81 | }, | ||
82 | "entryId": "{{ entry.id }}" | ||
83 | } | ||
84 | </script> | ||
62 | <script src="{{ asset('bundles/wallabagcore/themes/_global/js/restoreScroll.js')}}"></script> | 85 | <script src="{{ asset('bundles/wallabagcore/themes/_global/js/restoreScroll.js')}}"></script> |
63 | <script type="text/javascript"> | 86 | <script type="text/javascript"> |
64 | $(document).ready(function() { | 87 | $(document).ready(function() { |
65 | |||
66 | // toggle read property of current article | ||
67 | /* $('#markAsRead').click(function(){ | ||
68 | $("body").css("cursor", "wait"); | ||
69 | $.ajax( { url: '{{ path('archive_entry', { 'id': entry.id }) }}' }).done( | ||
70 | function( data ) { | ||
71 | if ( data == '1' ) { | ||
72 | if ( $('#markAsRead').hasClass("archive-off") ) { | ||
73 | $('#markAsRead').removeClass("archive-off"); | ||
74 | $('#markAsRead').addClass("archive"); | ||
75 | } | ||
76 | else { | ||
77 | $('#markAsRead').removeClass("archive"); | ||
78 | $('#markAsRead').addClass("archive-off"); | ||
79 | } | ||
80 | } | ||
81 | else { | ||
82 | alert('Error! Pls check if you are logged in.'); | ||
83 | } | ||
84 | }); | ||
85 | $("body").css("cursor", "auto"); | ||
86 | });*/ | ||
87 | |||
88 | // toggle starred property of current article | ||
89 | /* $('#setFav').click(function(){ | ||
90 | $("body").css("cursor", "wait"); | ||
91 | $.ajax( { url: '{{ path('star_entry', { 'id': entry.id }) }}' }).done( | ||
92 | function( data ) { | ||
93 | if ( data == '1' ) { | ||
94 | if ( $('#setFav').hasClass("fav-off") ) { | ||
95 | $('#setFav').removeClass("fav-off"); | ||
96 | $('#setFav').addClass("fav"); | ||
97 | } | ||
98 | else { | ||
99 | $('#setFav').removeClass("fav"); | ||
100 | $('#setFav').addClass("fav-off"); | ||
101 | } | ||
102 | } | ||
103 | else { | ||
104 | alert('Error! Pls check if you are logged in.'); | ||
105 | } | ||
106 | }); | ||
107 | $("body").css("cursor", "auto"); | ||
108 | });*/ | ||
109 | |||
110 | $(window).scroll(function(e){ | 88 | $(window).scroll(function(e){ |
111 | var scrollTop = $(window).scrollTop(); | 89 | var scrollTop = $(window).scrollTop(); |
112 | var docHeight = $(document).height(); | 90 | var docHeight = $(document).height(); |
@@ -121,25 +99,5 @@ | |||
121 | retrievePercent({{ entry.id }}); | 99 | retrievePercent({{ entry.id }}); |
122 | }); | 100 | }); |
123 | }); | 101 | }); |
124 | |||
125 | var app = new annotator.App(); | ||
126 | app.include(annotator.ui.main, { | ||
127 | element: document.querySelector('article') | ||
128 | }); | ||
129 | app.include(annotator.storage.http, { | ||
130 | prefix: '', | ||
131 | urls: { | ||
132 | create: '{{ path('annotations_post_annotation', { 'entry': entry.id }) }}', | ||
133 | update: '{{ path('annotations_put_annotation', { 'annotation': 'idAnnotation' }) }}', | ||
134 | destroy: '{{ path('annotations_delete_annotation', { 'annotation': 'idAnnotation' }) }}', | ||
135 | search: '{{ path('annotations_get_annotations', { 'entry': entry.id }) }}' | ||
136 | } | ||
137 | }); | ||
138 | app | ||
139 | .start() | ||
140 | .then(function () { | ||
141 | app.annotations.load({entry: {{ entry.id }}}); | ||
142 | }); | ||
143 | </script> | 102 | </script> |
144 | |||
145 | {% endblock %} | 103 | {% endblock %} |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/pager.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/pager.html.twig index ac74676a..faaa21a8 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/pager.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/pager.html.twig | |||
@@ -2,7 +2,8 @@ | |||
2 | <div class="results"> | 2 | <div class="results"> |
3 | <div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div> | 3 | <div class="nb-results">{{ 'entry.list.number_on_the_page'|transchoice(entries.count) }}</div> |
4 | <div class="pagination"> | 4 | <div class="pagination"> |
5 | <a href="#" id="filter">{{ 'entry.filters.title'|trans }}</a> | 5 | <i class="btn-clickable download-btn material-icons md-36">file_download</i> |
6 | <i class="btn-clickable filter-btn material-icons md-36">filter_list</i> | ||
6 | {% if entries.getNbPages > 1 %} | 7 | {% if entries.getNbPages > 1 %} |
7 | {{ pagerfanta(entries, 'twitter_bootstrap_translated', {'proximity': 1}) }} | 8 | {{ pagerfanta(entries, 'twitter_bootstrap_translated', {'proximity': 1}) }} |
8 | {% endif %} | 9 | {% endif %} |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig deleted file mode 100644 index 404d2857..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/about.html.twig +++ /dev/null | |||
@@ -1,170 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'about.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <h2>{{ 'about.top_menu.who_behind_wallabag'|trans }}</h2> | ||
7 | |||
8 | <dl> | ||
9 | <dt>{{ 'about.who_behind_wallabag.developped_by'|trans }}</dt> | ||
10 | <dd><a href="mailto:nicolas@loeuillet.org">Nicolas Lœuillet</a> — <a href="http://www.loeuillet.org">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd> | ||
11 | <dd>Thomas Citharel — <a href="https://tcit.fr">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd> | ||
12 | <dd>Jérémy Benoist — <a href="http://www.j0k3r.net">{{ 'about.who_behind_wallabag.website'|trans }}</a></dd> | ||
13 | |||
14 | <dt>{{ 'about.who_behind_wallabag.many_contributors'|trans|raw }}</dt> | ||
15 | |||
16 | <dt>{{ 'about.who_behind_wallabag.project_website'|trans }}</dt> | ||
17 | <dd><a href="https://www.wallabag.org">https://www.wallabag.org</a></dd> | ||
18 | |||
19 | <dt>{{ 'about.who_behind_wallabag.license'|trans }}: <a href="http://en.wikipedia.org/wiki/MIT_License">MIT</a></dt> | ||
20 | |||
21 | <dt>{{ 'about.who_behind_wallabag.version'|trans }}: {{ version }}</dt> | ||
22 | </dl> | ||
23 | |||
24 | <h2>{{ 'about.top_menu.getting_help'|trans }}</h2> | ||
25 | |||
26 | <dl> | ||
27 | <dt>{{ 'about.getting_help.documentation'|trans }}</dt> | ||
28 | <dd><a href="http://doc.wallabag.org/en/master/">english</a></dd> | ||
29 | <dd><a href="http://doc.wallabag.org/fr/master/">français</a></dd> | ||
30 | |||
31 | <dt>{{ 'about.getting_help.bug_reports'|trans }}</dt> | ||
32 | <dd>{{ 'about.getting_help.support'|trans|raw }}</dd> | ||
33 | </dl> | ||
34 | |||
35 | <h2>{{ 'about.top_menu.helping'|trans }}</h2> | ||
36 | |||
37 | <p>{{ 'about.helping.description'|trans }}</p> | ||
38 | |||
39 | <dl> | ||
40 | <dt>{{ 'about.helping.description'|trans }}</dt> | ||
41 | <dd>{{ 'about.helping.by_contributing_2'|trans }} <a href="https://github.com/wallabag/wallabag/issues/1254">{{ 'about.helping.by_contributing'|trans }}</a></dd> | ||
42 | <dd><a href="{{ paypal_url }}">{{ 'about.helping.by_paypal'|trans }}</a></dd> | ||
43 | </dl> | ||
44 | |||
45 | <h2>{{ 'about.top_menu.contributors'|trans }}</h2> | ||
46 | <p><a href="https://github.com/wallabag/wallabag/graphs/contributors">{{ 'about.contributors.description'|trans }}</a></p> | ||
47 | |||
48 | <h2>{{ 'about.top_menu.third_party'|trans }}</h2> | ||
49 | <p>{{ 'about.third_party.description'|trans }}</p> | ||
50 | <table class="striped"> | ||
51 | <tr> | ||
52 | <th>{{ 'about.third_party.package'|trans }}</th> | ||
53 | <th>{{ 'about.third_party.license'|trans }}</th> | ||
54 | </tr> | ||
55 | <tr><td>behat/transliterator</td><td>Artistic 1.0</td></tr> | ||
56 | <tr><td>CraueConfigBundle</td><td>MIT</td></tr> | ||
57 | <tr><td>doctrine/annotations</td><td>MIT</td></tr> | ||
58 | <tr><td>doctrine/cache</td><td>MIT</td></tr> | ||
59 | <tr><td>doctrine/collections</td><td>MIT</td></tr> | ||
60 | <tr><td>doctrine/common</td><td>MIT</td></tr> | ||
61 | <tr><td>doctrine/dbal</td><td>MIT</td></tr> | ||
62 | <tr><td>doctrine/doctrine-bundle</td><td>MIT</td></tr> | ||
63 | <tr><td>doctrine/doctrine-cache-bundle</td><td>MIT</td></tr> | ||
64 | <tr><td>doctrine/doctrine-migrations-bundle</td><td>MIT</td></tr> | ||
65 | <tr><td>doctrine/inflector</td><td>MIT</td></tr> | ||
66 | <tr><td>doctrine/instantiator</td><td>MIT</td></tr> | ||
67 | <tr><td>doctrine/lexer</td><td>MIT</td></tr> | ||
68 | <tr><td>doctrine/migrations</td><td>LGPL-2.1</td></tr> | ||
69 | <tr><td>doctrine/orm</td><td>MIT</td></tr> | ||
70 | <tr><td>friendsofsymfony/oauth-server-bundle</td><td>MIT</td></tr> | ||
71 | <tr><td>friendsofsymfony/oauth2-php</td><td>MIT</td></tr> | ||
72 | <tr><td>friendsofsymfony/rest-bundle</td><td>MIT</td></tr> | ||
73 | <tr><td>friendsofsymfony/user-bundle</td><td>MIT</td></tr> | ||
74 | <tr><td>gedmo/doctrine-extensions</td><td>MIT</td></tr> | ||
75 | <tr><td>grandt/binstring</td><td>LGPL-2.1</td></tr> | ||
76 | <tr><td>grandt/phpepub</td><td>LGPL-2.1</td></tr> | ||
77 | <tr><td>grandt/phpresizegif</td><td>LGPL-2.1</td></tr> | ||
78 | <tr><td>grandt/phpzipmerge</td><td>LGPL-2.1</td></tr> | ||
79 | <tr><td>grandt/relativepath</td><td>LGPL-2.1</td></tr> | ||
80 | <tr><td>guzzlehttp/guzzle</td><td>MIT</td></tr> | ||
81 | <tr><td>guzzlehttp/ringphp</td><td>MIT</td></tr> | ||
82 | <tr><td>guzzlehttp/streams</td><td>MIT</td></tr> | ||
83 | <tr><td>hoa/compiler</td><td>BSD-3-Clause</td></tr> | ||
84 | <tr><td>hoa/consistency</td><td>BSD-3-Clause</td></tr> | ||
85 | <tr><td>hoa/event</td><td>BSD-3-Clause</td></tr> | ||
86 | <tr><td>hoa/exception</td><td>BSD-3-Clause</td></tr> | ||
87 | <tr><td>hoa/file</td><td>BSD-3-Clause</td></tr> | ||
88 | <tr><td>hoa/iterator</td><td>BSD-3-Clause</td></tr> | ||
89 | <tr><td>hoa/math</td><td>BSD-3-Clause</td></tr> | ||
90 | <tr><td>hoa/protocol</td><td>BSD-3-Clause</td></tr> | ||
91 | <tr><td>hoa/regex</td><td>BSD-3-Clause</td></tr> | ||
92 | <tr><td>hoa/ruler</td><td>BSD-3-Clausev | ||
93 | <tr><td>hoa/stream</td><td>BSD-3-Clause</td></tr> | ||
94 | <tr><td>hoa/ustring</td><td>BSD-3-Clause</td></tr> | ||
95 | <tr><td>hoa/visitor</td><td>BSD-3-Clause</td></tr> | ||
96 | <tr><td>hoa/zformat</td><td>BSD-3-Clause</td></tr> | ||
97 | <tr><td>htmlawed/htmlawed</td><td>GPL-2.0+ or LGPL-3.0</td></tr> | ||
98 | <tr><td>incenteev/composer-parameter-handler</td><td>MIT</td></tr> | ||
99 | <tr><td>j0k3r/graby</td><td>AGPL-3.0</td></tr> | ||
100 | <tr><td>j0k3r/graby-site-config</td><td>AGPL-3.0</td></tr> | ||
101 | <tr><td>j0k3r/php-readability</td><td>Apache-2.0</td></tr> | ||
102 | <tr><td>j0k3r/safecurl</td><td>MIT</td></tr> | ||
103 | <tr><td>jdorn/sql-formatter</td><td>MIT</td></tr> | ||
104 | <tr><td>jms/metadata</td><td>Apache</td></tr> | ||
105 | <tr><td>jms/parser-lib</td><td>Apache2</td></tr> | ||
106 | <tr><td>jms/serializer</td><td>Apache2</td></tr> | ||
107 | <tr><td>jms/serializer-bundle</td><td>Apache2</td></tr> | ||
108 | <tr><td>kphoen/rulerz</td><td>MIT</td></tr> | ||
109 | <tr><td>kphoen/rulerz-bundle</td><td>MIT</td></tr> | ||
110 | <tr><td>kriswallsmith/assetic</td><td>MIT</td></tr> | ||
111 | <tr><td>lexik/form-filter-bundle</td><td>MIT</td></tr> | ||
112 | <tr><td>liip/theme-bundle</td><td>MIT</td></tr> | ||
113 | <tr><td>mgargano/simplehtmldom</td><td>MIT</td></tr> | ||
114 | <tr><td>michelf/php-markdown</td><td>BSD-3-Clause</td></tr> | ||
115 | <tr><td>monolog/monolog</td><td>MIT</td></tr> | ||
116 | <tr><td>neitanod/forceutf8</td><td>BSD-3-Clause</td></tr> | ||
117 | <tr><td>nelmio/api-doc-bundle</td><td>MIT</td></tr> | ||
118 | <tr><td>nelmio/cors-bundle</td><td>MIT</td></tr> | ||
119 | <tr><td>ocramius/proxy-manager</td><td>MIT</td></tr> | ||
120 | <tr><td>pagerfanta/pagerfanta</td><td>MIT</td></tr> | ||
121 | <tr><td>paragonie/random_compat</td><td>MIT</td></tr> | ||
122 | <tr><td>phpcollection/phpcollection</td><td>Apache2</td></tr> | ||
123 | <tr><td>phpoption/phpoption</td><td>Apache2</td></tr> | ||
124 | <tr><td>phpzip/phpzip</td><td>LGPL-2.1</td></tr> | ||
125 | <tr><td>psr/log</td><td>MIT</td></tr> | ||
126 | <tr><td>react/promise</td><td>MIT</td></tr> | ||
127 | <tr><td>scheb/two-factor-bundle</td><td>MIT</td></tr> | ||
128 | <tr><td>sensio/distribution-bundle</td><td>MIT</td></tr> | ||
129 | <tr><td>sensio/framework-extra-bundle</td><td>MIT</td></tr> | ||
130 | <tr><td>sensiolabs/security-checker</td><td>MIT</td></tr> | ||
131 | <tr><td>simplepie/simplepie</td><td>BSD-3-Clause</td></tr> | ||
132 | <tr><td>smalot/pdfparser</td><td>GPL-3.0</td></tr> | ||
133 | <tr><td>sonata-project/google-authenticator</td><td>MIT</td></tr> | ||
134 | <tr><td>stof/doctrine-extensions-bundle</td><td>MIT</td></tr> | ||
135 | <tr><td>swiftmailer/swiftmailer</td><td>MIT</td></tr> | ||
136 | <tr><td>symfony/assetic-bundle</td><td>MIT</td></tr> | ||
137 | <tr><td>symfony/monolog-bundle</td><td>MIT</td></tr> | ||
138 | <tr><td>All of Symfony</td><td>MIT-licenced</td></tr> | ||
139 | <tr><td>tecnickcom/tcpdf</td><td>LGPLv3</td></tr> | ||
140 | <tr><td>twig/extensions</td><td>MIT</td></tr> | ||
141 | <tr><td>twig/twig</td><td>BSD-3-Clause</td></tr> | ||
142 | <tr><td>wallabag/php-mobi</td><td>Apache-2.0</td></tr> | ||
143 | <tr><td>willdurand/hateoas</td><td>MIT</td></tr> | ||
144 | <tr><td>willdurand/hateoas-bundle</td><td>MIT</td></tr> | ||
145 | <tr><td>willdurand/jsonp-callback-validator</td><td>MIT</td></tr> | ||
146 | <tr><td>willdurand/negotiation</td><td>MIT</td></tr> | ||
147 | <tr><td>zendframework/zend-code</td><td>BSD-3-Clause</td></tr> | ||
148 | <tr><td>zendframework/zend-eventmanager</td><td>BSD-3-Clause</td></tr> | ||
149 | <tr><td>doctrine/data-fixtures</td><td>MIT</td></tr> | ||
150 | <tr><td>doctrine/doctrine-fixtures-bundle</td><td>MIT</td></tr> | ||
151 | <tr><td>phpdocumentor/reflection-docblock</td><td>MIT</td></tr> | ||
152 | <tr><td>phpspec/prophecy</td><td>MIT</td></tr> | ||
153 | <tr><td>phpunit/php-code-coverage</td><td>BSD-3-Clause</td></tr> | ||
154 | <tr><td>phpunit/php-file-iterator</td><td>BSD-3-Clause</td></tr> | ||
155 | <tr><td>phpunit/php-text-template</td><td>BSD-3-Clause</td></tr> | ||
156 | <tr><td>phpunit/php-timer</td><td>BSD-3-Clause</td></tr> | ||
157 | <tr><td>phpunit/php-token-stream</td><td>BSD-3-Clause</td></tr> | ||
158 | <tr><td>phpunit/phpunit</td><td>BSD-3-Clause</td></tr> | ||
159 | <tr><td>phpunit/phpunit-mock-objects</td><td>BSD-3-Clause</td></tr> | ||
160 | <tr><td>sebastian/comparator</td><td>BSD-3-Clause</td></tr> | ||
161 | <tr><td>sebastian/diff</td><td>BSD-3-Clause</td></tr> | ||
162 | <tr><td>sebastian/environment</td><td>BSD-3-Clause</td></tr> | ||
163 | <tr><td>sebastian/exporter</td><td>BSD-3-Clause</td></tr> | ||
164 | <tr><td>sebastian/global-state</td><td>BSD-3-Clause</td></tr> | ||
165 | <tr><td>sebastian/recursion-context</td><td>BSD-3-Clause</td></tr> | ||
166 | <tr><td>sebastian/version</td><td>BSD-3-Clause</td></tr> | ||
167 | <tr><td>sensio/generator-bundle</td><td>MIT</td></tr> | ||
168 | <tr><td>symfony/phpunit-bridge</td><td>MIT</td></tr> | ||
169 | </table> | ||
170 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig deleted file mode 100644 index b529a0ac..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/howto.html.twig +++ /dev/null | |||
@@ -1,28 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'howto.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <h2>{{ 'howto.page_title'|trans }}</h2> | ||
7 | |||
8 | <p>{{ 'howto.page_description'|trans }}</p> | ||
9 | <ul> | ||
10 | <li><a href="{{ path('new') }}">{{ 'howto.form.description'|trans }}</a></li> | ||
11 | </ul> | ||
12 | <h3>{{ 'howto.top_menu.browser_addons'|trans }}</h3> | ||
13 | <ul> | ||
14 | <li><a href="{{ addonsUrl.firefox }}" target="_blank">{{ 'howto.browser_addons.firefox'|trans }}</a></li> | ||
15 | <li><a href="{{ addonsUrl.chrome }}" target="_blank">{{ 'howto.browser_addons.chrome'|trans }}</a></li> | ||
16 | </ul> | ||
17 | <h3>{{ 'howto.top_menu.mobile_apps'|trans }}</h3> | ||
18 | <ul> | ||
19 | <li>Android: <a href="{{ addonsUrl.f_droid }}" target="_blank">{{ 'howto.mobile_apps.android.via_f_droid'|trans }}</a> / <a href="{{ addonsUrl.google_play }}" target="_blank">{{ 'howto.mobile_apps.android.via_google_play'|trans }}</a></li> | ||
20 | <li>iOS: <a href="{{ addonsUrl.ios }}" target="_blank">{{ 'howto.mobile_apps.ios'|trans }}</a></li> | ||
21 | <li>Windows Phone: <a href="{{ addonsUrl.windows }}" target="_blank">{{ 'howto.mobile_apps.windows'|trans }}</a></li> | ||
22 | </ul> | ||
23 | <h3>{{ 'howto.top_menu.bookmarklet'|trans }}</h3> | ||
24 | <p> | ||
25 | {{ 'howto.bookmarklet.description'|trans }} | ||
26 | {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %} | ||
27 | |||
28 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig deleted file mode 100644 index b3d3d5a0..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Static/quickstart.html.twig +++ /dev/null | |||
@@ -1,66 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'quickstart.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | |||
7 | <h3>{{ 'quickstart.intro.title'|trans }}</h3> | ||
8 | <p>{{ 'quickstart.intro.paragraph_1'|trans }}</p> | ||
9 | <p>{{ 'quickstart.intro.paragraph_2'|trans }}</p> | ||
10 | |||
11 | <h4>{{ 'quickstart.configure.title'|trans }}</h4> | ||
12 | <ul> | ||
13 | <li><a href="{{ path('config') }}">{{ 'quickstart.configure.language'|trans }}</a></li> | ||
14 | <li><a href="{{ path('config') }}#set2">{{ 'quickstart.configure.rss'|trans }}</a></li> | ||
15 | <li><a href="{{ path('config') }}#set5">{{ 'quickstart.configure.tagging_rules'|trans }}</a></li> | ||
16 | </ul> | ||
17 | |||
18 | {% if is_granted('ROLE_SUPER_ADMIN') %} | ||
19 | <h4>{{ 'quickstart.admin.title'|trans }}</h4> | ||
20 | <p>{{ 'quickstart.admin.description'|trans }}</p> | ||
21 | <ul> | ||
22 | <li><a href="{{ path('config') }}#set6">{{ 'quickstart.admin.new_user'|trans }}</a></li> | ||
23 | <li><a href="{{ path('craue_config_settings_modify') }}#set-analytics">{{ 'quickstart.admin.analytics'|trans }}</a></li> | ||
24 | <li><a href="{{ path('craue_config_settings_modify') }}#set-entry">{{ 'quickstart.admin.sharing'|trans }}</a></li> | ||
25 | <li><a href="{{ path('craue_config_settings_modify') }}#set-export">{{ 'quickstart.admin.export'|trans }}</a></li> | ||
26 | <li><a href="{{ path('craue_config_settings_modify') }}#set-import">{{ 'quickstart.admin.import'|trans }}</a></li> | ||
27 | </ul> | ||
28 | {% endif %} | ||
29 | |||
30 | <h4>{{ 'quickstart.first_steps.title'|trans }}</h4> | ||
31 | <ul> | ||
32 | <li><a href="{{ path('new') }}">{{ 'quickstart.first_steps.new_article'|trans }}</a></li> | ||
33 | <li><a href="{{ path('unread') }}">{{ 'quickstart.first_steps.unread_articles'|trans }}</a></li> | ||
34 | </ul> | ||
35 | |||
36 | <h4>{{ 'quickstart.migrate.title'|trans }}</h4> | ||
37 | <p>{{ 'quickstart.migrate.description'|trans }}</p> | ||
38 | <ul> | ||
39 | <li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li> | ||
40 | <li><a href="{{ path('import_wallabag_v1') }}">{{ 'quickstart.migrate.wallabag_v1'|trans }}</a></li> | ||
41 | <li><a href="{{ path('import_wallabag_v2') }}">{{ 'quickstart.migrate.wallabag_v2'|trans }}</a></li> | ||
42 | </ul> | ||
43 | |||
44 | <h4>{{ 'quickstart.developer.title'|trans }}</h4> | ||
45 | <ul> | ||
46 | <li><a href="{{ path('developer') }}">{{ 'quickstart.developer.create_application'|trans }}</a></li> | ||
47 | </ul> | ||
48 | |||
49 | <h4>{{ 'quickstart.docs.title'|trans }}</h4> | ||
50 | <ul> | ||
51 | <li><a href="http://doc.wallabag.org/en/master/user/annotations.html">{{ 'quickstart.docs.annotate'|trans }}</a></li> | ||
52 | <li><a href="http://doc.wallabag.org/en/master/user/download_articles.html">{{ 'quickstart.docs.export'|trans }}</a></li> | ||
53 | <li><a href="http://doc.wallabag.org/en/master/user/filters.html">{{ 'quickstart.docs.search_filters'|trans }}</a></li> | ||
54 | <li><a href="http://doc.wallabag.org/en/master/user/errors_during_fetching.html">{{ 'quickstart.docs.fetching_errors'|trans }}</a></li> | ||
55 | <li><a href="http://doc.wallabag.org/">{{ 'quickstart.docs.all_docs'|trans }}</a></li> | ||
56 | </ul> | ||
57 | |||
58 | <h4>{{ 'quickstart.support.title'|trans }}</h4> | ||
59 | <p>{{ 'quickstart.support.description'|trans }}</p> | ||
60 | <ul> | ||
61 | <li><a href="https://github.com/wallabag/wallabag/issues/">{{ 'quickstart.support.github'|trans }}</a></li> | ||
62 | <li><a href="mailto:hello@wallabag.org">{{ 'quickstart.support.email'|trans }}</a></li> | ||
63 | <li><a href="https://gitter.im/wallabag/wallabag">{{ 'quickstart.support.gitter'|trans }}</a></li> | ||
64 | </ul> | ||
65 | |||
66 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig index 524a1d23..50043907 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Tag/tags.html.twig | |||
@@ -9,7 +9,11 @@ | |||
9 | 9 | ||
10 | <ul> | 10 | <ul> |
11 | {% for tag in tags %} | 11 | {% for tag in tags %} |
12 | <li id="tag-{{ tag.id|e }}">{{tag.label}} ({{ tag.getEntriesByUserId(app.user.id) | length }})</li> | 12 | <li id="tag-{{ tag.id|e }}"><a href="{{ path('tag_entries', {'slug': tag.slug}) }}">{{tag.label}} ({{ tag.entries.getValues | length }})</a></li> |
13 | {% endfor %} | 13 | {% endfor %} |
14 | </ul> | 14 | </ul> |
15 | |||
16 | <div> | ||
17 | <a href="{{ path('untagged') }}">{{ 'tag.list.see_untagged_entries'|trans }}</a> | ||
18 | </div> | ||
15 | {% endblock %} | 19 | {% endblock %} |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig index 2c15ad95..4fd4d317 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/baggy/layout.html.twig | |||
@@ -2,29 +2,19 @@ | |||
2 | 2 | ||
3 | {% block css %} | 3 | {% block css %} |
4 | {{ parent() }} | 4 | {{ parent() }} |
5 | 5 | <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/baggy/css/style.min.css') }}" media="screen,projection,print"/> | |
6 | <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/baggy/css/ratatouille.css') }}" media="all"> | ||
7 | <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/baggy/css/font.css') }}" media="all"> | ||
8 | <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/baggy/css/main.css') }}" media="all"> | ||
9 | <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/baggy/css/messages.css') }}" media="all"> | ||
10 | <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/baggy/css/print.css') }}" media="print"> | ||
11 | {% endblock %} | 6 | {% endblock %} |
12 | 7 | ||
13 | {% block scripts %} | 8 | {% block scripts %} |
14 | {{ parent() }} | 9 | {{ parent() }} |
15 | 10 | <script src="{{ asset('bundles/wallabagcore/themes/baggy/js/baggy.min.js') }}"></script> | |
16 | <script src="{{ asset('bundles/wallabagcore/themes/baggy/js/init.js') }}"></script> | ||
17 | <script src="{{ asset('bundles/wallabagcore/themes/baggy/js/closeMessage.js') }}"></script> | ||
18 | <script src="{{ asset('bundles/wallabagcore/themes/baggy/js/autoClose.js') }}"></script> | ||
19 | <script src="{{ asset('bundles/wallabagcore/themes/baggy/js/saveLink.js') }}"></script> | ||
20 | <script src="{{ asset('bundles/wallabagcore/themes/baggy/js/popupForm.js') }}"></script> | ||
21 | {% endblock %} | 11 | {% endblock %} |
22 | 12 | ||
23 | {% block header %} | 13 | {% block header %} |
24 | <header class="w600p center mbm"> | 14 | <header class="w600p center mbm"> |
25 | <h1 class="logo"> | 15 | <h1 class="logo"> |
26 | {% block logo %} | 16 | {% block logo %} |
27 | <img width="100" height="100" src="{{ asset('bundles/wallabagcore/themes/baggy/img/logo-w.png') }}" alt="wallabag logo" /> | 17 | <img width="100" height="100" src="{{ asset('bundles/wallabagcore/themes/_global/img/logo-w.png') }}" alt="wallabag logo" /> |
28 | {% endblock %} | 18 | {% endblock %} |
29 | </h1> | 19 | </h1> |
30 | </header> | 20 | </header> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/client.html.twig index 78a9dc04..8a5da71a 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/client.html.twig | |||
@@ -13,6 +13,12 @@ | |||
13 | {{ form_errors(form) }} | 13 | {{ form_errors(form) }} |
14 | 14 | ||
15 | <div class="input-field col s12"> | 15 | <div class="input-field col s12"> |
16 | {{ form_label(form.name) }} | ||
17 | {{ form_errors(form.name) }} | ||
18 | {{ form_widget(form.name) }} | ||
19 | </div> | ||
20 | |||
21 | <div class="input-field col s12"> | ||
16 | {{ form_label(form.redirect_uris) }} | 22 | {{ form_label(form.redirect_uris) }} |
17 | {{ form_errors(form.redirect_uris) }} | 23 | {{ form_errors(form.redirect_uris) }} |
18 | {{ form_widget(form.redirect_uris) }} | 24 | {{ form_widget(form.redirect_uris) }} |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client_parameters.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/client_parameters.html.twig index b615fa3b..b498cceb 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/client_parameters.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/client_parameters.html.twig | |||
@@ -9,6 +9,7 @@ | |||
9 | <div class="row"> | 9 | <div class="row"> |
10 | <p>{{ 'developer.client_parameter.page_description'|trans }}</p> | 10 | <p>{{ 'developer.client_parameter.page_description'|trans }}</p> |
11 | <ul> | 11 | <ul> |
12 | <li>{{ 'developer.client_parameter.field_name'|trans }}: <strong><pre>{{ client_name }}</pre></strong></li> | ||
12 | <li>{{ 'developer.client_parameter.field_id'|trans }}: <strong><pre>{{ client_id }}</pre></strong></li> | 13 | <li>{{ 'developer.client_parameter.field_id'|trans }}: <strong><pre>{{ client_id }}</pre></strong></li> |
13 | <li>{{ 'developer.client_parameter.field_secret'|trans }}: <strong><pre>{{ client_secret }}</pre></strong></li> | 14 | <li>{{ 'developer.client_parameter.field_secret'|trans }}: <strong><pre>{{ client_secret }}</pre></strong></li> |
14 | </ul> | 15 | </ul> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/howto_app.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/howto_app.html.twig index acbc2c88..acbc2c88 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/howto_app.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/howto_app.html.twig | |||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/index.html.twig index 001c5cbb..3430c0d4 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Developer/index.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Developer/index.html.twig | |||
@@ -28,7 +28,7 @@ | |||
28 | <ul class="collapsible" data-collapsible="expandable"> | 28 | <ul class="collapsible" data-collapsible="expandable"> |
29 | {% for client in clients %} | 29 | {% for client in clients %} |
30 | <li> | 30 | <li> |
31 | <div class="collapsible-header">#{{ client.id }}</div> | 31 | <div class="collapsible-header">{{ client.name }} - #{{ client.id }}</div> |
32 | <div class="collapsible-body"> | 32 | <div class="collapsible-body"> |
33 | <table class="striped"> | 33 | <table class="striped"> |
34 | <tr> | 34 | <tr> |
@@ -49,9 +49,9 @@ | |||
49 | </tr> | 49 | </tr> |
50 | </table> | 50 | </table> |
51 | <p> | 51 | <p> |
52 | {{ 'developer.remove.warn_message_1'|trans }}<br/> | 52 | {{ 'developer.remove.warn_message_1'|trans({'%name%': client.name }) }}<br/> |
53 | {{ 'developer.remove.warn_message_2'|trans }}<br/> | 53 | {{ 'developer.remove.warn_message_2'|trans({'%name%': client.name }) }}<br/> |
54 | <a class="waves-effect waves-light red btn" href="{{ path('developer_delete_client', {'id': client.id}) }}">{{ 'developer.remove.action'|trans }}</a> | 54 | <a class="waves-effect waves-light red btn" href="{{ path('developer_delete_client', {'id': client.id}) }}">{{ 'developer.remove.action'|trans({'%name%': client.name }) }}</a> |
55 | </p> | 55 | </p> |
56 | </div> | 56 | </div> |
57 | </li> | 57 | </li> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_title.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_title.html.twig new file mode 100644 index 00000000..d1c2f203 --- /dev/null +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/_title.html.twig | |||
@@ -0,0 +1,15 @@ | |||
1 | {% set currentRoute = app.request.attributes.get('_route') %} | ||
2 | |||
3 | {% if currentRoute == 'starred' %} | ||
4 | {{ 'entry.page_titles.starred'|trans }} | ||
5 | {% elseif currentRoute == 'archive' %} | ||
6 | {{ 'entry.page_titles.archived'|trans }} | ||
7 | {% elseif currentRoute == 'all' %} | ||
8 | {{ 'entry.page_titles.filtered'|trans }} | ||
9 | {% elseif currentRoute == 'tag_entries' %} | ||
10 | {{ 'entry.page_titles.filtered_tags'|trans }} | ||
11 | {% elseif currentRoute == 'untagged' %} | ||
12 | {{ 'entry.page_titles.untagged'|trans }} | ||
13 | {% else %} | ||
14 | {{ 'entry.page_titles.unread'|trans }} | ||
15 | {% endif %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/entries.xml.twig index 6cabcf44..288bb54f 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/baggy/Entry/entries.xml.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/entries.xml.twig | |||
@@ -16,15 +16,7 @@ | |||
16 | <guid>{{ entry.url }}</guid> | 16 | <guid>{{ entry.url }}</guid> |
17 | <pubDate>{{ entry.createdAt|date('D, d M Y H:i:s') }}</pubDate> | 17 | <pubDate>{{ entry.createdAt|date('D, d M Y H:i:s') }}</pubDate> |
18 | <description> | 18 | <description> |
19 | <![CDATA[ | 19 | <![CDATA[{%- if entry.readingTime > 0 -%}{{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }}{%- else -%}{{ 'entry.list.reading_time_less_one_minute'|trans|raw }}{%- endif %}{{ entry.content|raw -}}]]> |
20 | {%- if entry.readingTime > 0 -%} | ||
21 | {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }} | ||
22 | {%- else -%} | ||
23 | {{ 'entry.list.reading_time_less_one_minute'|trans|raw }} | ||
24 | {%- endif %} | ||
25 | |||
26 | {{ entry.content|raw -}} | ||
27 | ]]> | ||
28 | </description> | 20 | </description> |
29 | </item> | 21 | </item> |
30 | 22 | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/share.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/share.html.twig new file mode 100644 index 00000000..b82b3d3d --- /dev/null +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Entry/share.html.twig | |||
@@ -0,0 +1,40 @@ | |||
1 | <html> | ||
2 | <head> | ||
3 | <title>{{ entry.title | raw }}</title> | ||
4 | <style> | ||
5 | body { | ||
6 | margin: 10px; | ||
7 | font-family: 'Roboto',Verdana,Geneva,sans-serif; | ||
8 | font-size: 16px; | ||
9 | color: #000; | ||
10 | } | ||
11 | header { | ||
12 | text-align: center; | ||
13 | } | ||
14 | |||
15 | header h1 { | ||
16 | font-size: 1.3em; | ||
17 | } | ||
18 | |||
19 | a, | ||
20 | a:hover, | ||
21 | a:visited { | ||
22 | color: #000; | ||
23 | } | ||
24 | |||
25 | article { | ||
26 | margin: 0 auto; | ||
27 | width: 600px; | ||
28 | } | ||
29 | </style> | ||
30 | </head> | ||
31 | <body> | ||
32 | <header> | ||
33 | <h1>{{ entry.title | raw }}</h1> | ||
34 | <span><a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool">{{ entry.domainName|removeWww }}</a></span> | ||
35 | </header> | ||
36 | <article> | ||
37 | {{ entry.content | raw }} | ||
38 | </article> | ||
39 | </body> | ||
40 | </html> | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/common/Mail/forgotPassword.txt.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Mail/forgotPassword.txt.twig new file mode 100644 index 00000000..631bcb88 --- /dev/null +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Mail/forgotPassword.txt.twig | |||
@@ -0,0 +1,6 @@ | |||
1 | Hello {{username}}! | ||
2 | |||
3 | To reset your password - please visit {{confirmationUrl}} | ||
4 | |||
5 | Regards, | ||
6 | Wallabag bot | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/_bookmarklet.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/_bookmarklet.html.twig index 966a84db..966a84db 100644 --- a/src/Wallabag/CoreBundle/Resources/views/_bookmarklet.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/_bookmarklet.html.twig | |||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/about.html.twig index d0b94279..d0b94279 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/about.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/about.html.twig | |||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/howto.html.twig index 6a177d6b..67a10190 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/howto.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/howto.html.twig | |||
@@ -35,7 +35,7 @@ | |||
35 | <div class="col s12"> | 35 | <div class="col s12"> |
36 | <h5>{{ 'howto.top_menu.bookmarklet'|trans }}</h5> | 36 | <h5>{{ 'howto.top_menu.bookmarklet'|trans }}</h5> |
37 | {{ 'howto.bookmarklet.description'|trans }} | 37 | {{ 'howto.bookmarklet.description'|trans }} |
38 | {% include 'WallabagCoreBundle::_bookmarklet.html.twig' %} | 38 | {% include '@WallabagCore/themes/common/Static/_bookmarklet.html.twig' %} |
39 | </div> | 39 | </div> |
40 | 40 | ||
41 | </div> | 41 | </div> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/quickstart.html.twig index 59dd037b..8cbf4ab4 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Static/quickstart.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/common/Static/quickstart.html.twig | |||
@@ -44,6 +44,7 @@ | |||
44 | <li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li> | 44 | <li><a href="{{ path('import_pocket') }}">{{ 'quickstart.migrate.pocket'|trans }}</a></li> |
45 | <li><a href="{{ path('import_wallabag_v1') }}">{{ 'quickstart.migrate.wallabag_v1'|trans }}</a></li> | 45 | <li><a href="{{ path('import_wallabag_v1') }}">{{ 'quickstart.migrate.wallabag_v1'|trans }}</a></li> |
46 | <li><a href="{{ path('import_wallabag_v2') }}">{{ 'quickstart.migrate.wallabag_v2'|trans }}</a></li> | 46 | <li><a href="{{ path('import_wallabag_v2') }}">{{ 'quickstart.migrate.wallabag_v2'|trans }}</a></li> |
47 | <li><a href="{{ path('import_readability') }}">{{ 'quickstart.migrate.readability'|trans }}</a></li> | ||
47 | </ul> | 48 | </ul> |
48 | 49 | ||
49 | <h4>{{ 'quickstart.developer.title'|trans }}</h4> | 50 | <h4>{{ 'quickstart.developer.title'|trans }}</h4> |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig index afd5b499..5330c353 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Config/index.html.twig | |||
@@ -62,6 +62,18 @@ | |||
62 | </div> | 62 | </div> |
63 | </div> | 63 | </div> |
64 | 64 | ||
65 | <div class="row"> | ||
66 | <div class="input-field col s12"> | ||
67 | {{ form_label(form.config.pocket_consumer_key) }} | ||
68 | {{ form_errors(form.config.pocket_consumer_key) }} | ||
69 | {{ form_widget(form.config.pocket_consumer_key) }} | ||
70 | <p> | ||
71 | » | ||
72 | <a href="https://getpocket.com/developer/docs/authentication">https://getpocket.com/developer/docs/authentication</a> | ||
73 | </p> | ||
74 | </div> | ||
75 | </div> | ||
76 | |||
65 | {{ form_widget(form.config.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} | 77 | {{ form_widget(form.config.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} |
66 | {{ form_rest(form.config) }} | 78 | {{ form_rest(form.config) }} |
67 | </form> | 79 | </form> |
@@ -196,6 +208,7 @@ | |||
196 | </div> | 208 | </div> |
197 | 209 | ||
198 | <div id="set5" class="col s12"> | 210 | <div id="set5" class="col s12"> |
211 | {% if app.user.config.taggingRules is not empty %} | ||
199 | <div class="row"> | 212 | <div class="row"> |
200 | <div class="input-field col s12"> | 213 | <div class="input-field col s12"> |
201 | <ul> | 214 | <ul> |
@@ -206,13 +219,14 @@ | |||
206 | {{ 'config.form_rules.then_tag_as_label'|trans }} | 219 | {{ 'config.form_rules.then_tag_as_label'|trans }} |
207 | « {{ tagging_rule.tags|join(', ') }} » | 220 | « {{ tagging_rule.tags|join(', ') }} » |
208 | <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}"> | 221 | <a href="{{ path('delete_tagging_rule', {id: tagging_rule.id}) }}" title="{{ 'config.form_rules.delete_rule_label'|trans }}"> |
209 | <i class="tool grey-text delete mdi-action-delete"></i> | 222 | <i class="tool grey-text delete material-icons">delete</i> |
210 | </a> | 223 | </a> |
211 | </li> | 224 | </li> |
212 | {% endfor %} | 225 | {% endfor %} |
213 | </ul> | 226 | </ul> |
214 | </div> | 227 | </div> |
215 | </div> | 228 | </div> |
229 | {% endif %} | ||
216 | 230 | ||
217 | {{ form_start(form.new_tagging_rule) }} | 231 | {{ form_start(form.new_tagging_rule) }} |
218 | {{ form_errors(form.new_tagging_rule) }} | 232 | {{ form_errors(form.new_tagging_rule) }} |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client.html.twig deleted file mode 100644 index 78a9dc04..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client.html.twig +++ /dev/null | |||
@@ -1,31 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'developer.client.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <div class="row"> | ||
7 | <div class="col s12"> | ||
8 | <div class="card-panel settings"> | ||
9 | |||
10 | <div class="row"> | ||
11 | <p>{{ 'developer.client.page_description'|trans }}</p> | ||
12 | {{ form_start(form) }} | ||
13 | {{ form_errors(form) }} | ||
14 | |||
15 | <div class="input-field col s12"> | ||
16 | {{ form_label(form.redirect_uris) }} | ||
17 | {{ form_errors(form.redirect_uris) }} | ||
18 | {{ form_widget(form.redirect_uris) }} | ||
19 | </div> | ||
20 | |||
21 | <a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{{ 'developer.client.action_back'|trans }}</a> | ||
22 | {{ form_widget(form.save, {'attr': {'class': 'btn waves-effect waves-light'}}) }} | ||
23 | |||
24 | {{ form_rest(form) }} | ||
25 | </div> | ||
26 | |||
27 | </div> | ||
28 | </div> | ||
29 | </div> | ||
30 | |||
31 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client_parameters.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client_parameters.html.twig deleted file mode 100644 index b615fa3b..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/client_parameters.html.twig +++ /dev/null | |||
@@ -1,22 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'developer.client_parameter.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <div class="row"> | ||
7 | <div class="col s12"> | ||
8 | <div class="card-panel settings"> | ||
9 | <div class="row"> | ||
10 | <p>{{ 'developer.client_parameter.page_description'|trans }}</p> | ||
11 | <ul> | ||
12 | <li>{{ 'developer.client_parameter.field_id'|trans }}: <strong><pre>{{ client_id }}</pre></strong></li> | ||
13 | <li>{{ 'developer.client_parameter.field_secret'|trans }}: <strong><pre>{{ client_secret }}</pre></strong></li> | ||
14 | </ul> | ||
15 | |||
16 | <a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{{ 'developer.client_parameter.back'|trans }}</a> | ||
17 | <a href="{{ path('developer_howto_firstapp') }}" class="btn waves-effect waves-light">{{ 'developer.client_parameter.read_howto'|trans }}</a> | ||
18 | </div> | ||
19 | </div> | ||
20 | </div> | ||
21 | </div> | ||
22 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/howto_app.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/howto_app.html.twig deleted file mode 100644 index acbc2c88..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/howto_app.html.twig +++ /dev/null | |||
@@ -1,63 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'developer.howto.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block css %} | ||
6 | {{ parent() }} | ||
7 | <link rel="stylesheet" href="{{ asset('https://cdnjs.cloudflare.com/ajax/libs/prism/1.4.1/themes/prism-dark.min.css') }}"> | ||
8 | {% endblock %} | ||
9 | |||
10 | {% block content %} | ||
11 | <div class="row"> | ||
12 | <div class="col s12"> | ||
13 | <div class="card-panel settings"> | ||
14 | |||
15 | <div class="row"> | ||
16 | <p>{{ 'developer.howto.description.paragraph_1'|trans|raw }}</p> | ||
17 | <p>{{ 'developer.howto.description.paragraph_2'|trans }}</p> | ||
18 | <p>{{ 'developer.howto.description.paragraph_3'|trans({'%link%': path('developer_create_client')})|raw }}</p> | ||
19 | <p>{{ 'developer.howto.description.paragraph_4'|trans }}</p> | ||
20 | <p> | ||
21 | <pre><code class="language-bash">http POST http://v2.wallabag.org/oauth/v2/token \ | ||
22 | grant_type=password \ | ||
23 | client_id=12_5um6nz50ceg4088c0840wwc0kgg44g00kk84og044ggkscso0k \ | ||
24 | client_secret=3qd12zpeaxes8cwg8c0404g888co4wo8kc4gcw0occww8cgw4k \ | ||
25 | username=yourUsername \ | ||
26 | password=yourPassw0rd</code></pre> | ||
27 | </p> | ||
28 | <p>{{ 'developer.howto.description.paragraph_5'|trans }}</p> | ||
29 | <p> | ||
30 | <pre><code class="language-bash">HTTP/1.1 200 OK | ||
31 | Cache-Control: no-store, private | ||
32 | Connection: close | ||
33 | Content-Type: application/json | ||
34 | Date: Tue, 06 Oct 2015 18:24:03 GMT | ||
35 | Host: localhost:8000 | ||
36 | Pragma: no-cache | ||
37 | X-Debug-Token: be00a1 | ||
38 | X-Debug-Token-Link: /profiler/be00a1 | ||
39 | X-Powered-By: PHP/5.5.9-1ubuntu4.13 | ||
40 | { | ||
41 | "access_token": "ZWFjNjA3ZWMwYWVmYzRkYTBlMmQ3NTllYmVhOGJiZDE0ZTg1NjE4MjczOTVlNzM0ZTRlMWQ0MmRlMmYwNTk5Mw", | ||
42 | "expires_in": 3600, | ||
43 | "refresh_token": "ODBjODU1NWUwNmUzZTBkNDQ5YWVlZTVlMjQ2Y2I0OWM2NTM1ZGM2M2Y3MDhjMTViM2U2MzYxYzRkMDk5ODRlZg", | ||
44 | "scope": null, | ||
45 | "token_type": "bearer" | ||
46 | }</code></pre> | ||
47 | </p> | ||
48 | <p>{{ 'developer.howto.description.paragraph_6'|trans }}</p> | ||
49 | <p> | ||
50 | <pre><code class="language-bash">http GET http://v2.wallabag.org/api/entries.json \ | ||
51 | "Authorization:Bearer ZWFjNjA3ZWMwYWVmYzRkYTBlMmQ3NTllYmVhOGJiZDE0ZTg1NjE4MjczOTVlNzM0ZTRlMWQ0MmRlMmYwNTk5Mw"</code></pre> | ||
52 | </p> | ||
53 | <p>{{ 'developer.howto.description.paragraph_7'|trans }}</p> | ||
54 | <p>{{ 'developer.howto.description.paragraph_8'|trans({'%link%': path('nelmio_api_doc_index')})|raw }}</p> | ||
55 | <p><a href="{{ path('developer') }}" class="waves-effect waves-light grey btn">{{ 'developer.howto.back'|trans }}</a></p> | ||
56 | </div> | ||
57 | |||
58 | </div> | ||
59 | </div> | ||
60 | </div> | ||
61 | <script src="{{ asset('https://cdnjs.cloudflare.com/ajax/libs/prism/1.4.1/prism.min.js') }}"></script> | ||
62 | <script src="{{ asset('https://cdnjs.cloudflare.com/ajax/libs/prism/1.4.1/components/prism-bash.min.js') }}"></script> | ||
63 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/index.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/index.html.twig deleted file mode 100644 index 001c5cbb..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Developer/index.html.twig +++ /dev/null | |||
@@ -1,69 +0,0 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'developer.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <div class="row"> | ||
7 | <div class="col s12"> | ||
8 | <div class="card-panel settings"> | ||
9 | |||
10 | <div class="row"> | ||
11 | <h3>{{ 'developer.welcome_message'|trans }}</h3> | ||
12 | |||
13 | <h4>{{ 'developer.documentation'|trans }}</h4> | ||
14 | |||
15 | <ul> | ||
16 | <li><a href="{{ path('developer_howto_firstapp') }}">{{ 'developer.how_to_first_app'|trans }}</a></li> | ||
17 | <li><a href="http://doc.wallabag.org/en/master/developer/api.html">{{ 'developer.full_documentation'|trans }}</a></li> | ||
18 | <li><a href="{{ path('nelmio_api_doc_index') }}">{{ 'developer.list_methods'|trans }}</a></li> | ||
19 | </ul> | ||
20 | |||
21 | <h4>{{ 'developer.clients.title'|trans }}</h4> | ||
22 | <ul> | ||
23 | <li><a href="{{ path('developer_create_client') }}">{{ 'developer.clients.create_new'|trans }}</a></li> | ||
24 | </ul> | ||
25 | |||
26 | <h4>{{ 'developer.existing_clients.title'|trans }}</h4> | ||
27 | {% if clients %} | ||
28 | <ul class="collapsible" data-collapsible="expandable"> | ||
29 | {% for client in clients %} | ||
30 | <li> | ||
31 | <div class="collapsible-header">#{{ client.id }}</div> | ||
32 | <div class="collapsible-body"> | ||
33 | <table class="striped"> | ||
34 | <tr> | ||
35 | <td>{{ 'developer.existing_clients.field_id'|trans }}</td> | ||
36 | <td><strong><code>{{ client.id }}_{{ client.randomId }}</code></strong></td> | ||
37 | </tr> | ||
38 | <tr> | ||
39 | <td>{{ 'developer.existing_clients.field_secret'|trans }}</td> | ||
40 | <td><strong><code>{{ client.secret }}</code></strong></td> | ||
41 | </tr> | ||
42 | <tr> | ||
43 | <td>{{ 'developer.existing_clients.field_uris'|trans }}</td> | ||
44 | <td><strong><code>{{ client.redirectUris|json_encode() }}</code></strong></td> | ||
45 | </tr> | ||
46 | <tr> | ||
47 | <td>{{ 'developer.existing_clients.field_grant_types'|trans }}</td> | ||
48 | <td><strong><code>{{ client.allowedGrantTypes|json_encode() }}</code></strong></td> | ||
49 | </tr> | ||
50 | </table> | ||
51 | <p> | ||
52 | {{ 'developer.remove.warn_message_1'|trans }}<br/> | ||
53 | {{ 'developer.remove.warn_message_2'|trans }}<br/> | ||
54 | <a class="waves-effect waves-light red btn" href="{{ path('developer_delete_client', {'id': client.id}) }}">{{ 'developer.remove.action'|trans }}</a> | ||
55 | </p> | ||
56 | </div> | ||
57 | </li> | ||
58 | {% endfor %} | ||
59 | </ul> | ||
60 | {% else %} | ||
61 | {{ 'developer.existing_clients.no_client'|trans }} | ||
62 | {% endif %} | ||
63 | </div> | ||
64 | |||
65 | </div> | ||
66 | </div> | ||
67 | </div> | ||
68 | |||
69 | {% endblock %} | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig index f6941ca5..e889dea8 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.html.twig | |||
@@ -1,18 +1,7 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | 1 | {% extends "WallabagCoreBundle::layout.html.twig" %} |
2 | 2 | ||
3 | {% block title %} | 3 | {% block title %} |
4 | {% set currentRoute = app.request.attributes.get('_route') %} | 4 | {% include "@WallabagCore/themes/common/Entry/_title.html.twig" %} |
5 | |||
6 | {% if currentRoute == 'starred' %} | ||
7 | {{ 'entry.page_titles.starred'|trans }} | ||
8 | {% elseif currentRoute == 'archive' %} | ||
9 | {{ 'entry.page_titles.archived'|trans }} | ||
10 | {% elseif currentRoute == 'all' %} | ||
11 | {{ 'entry.page_titles.filtered'|trans }} | ||
12 | {% else %} | ||
13 | {{ 'entry.page_titles.unread'|trans }} | ||
14 | {% endif %} | ||
15 | |||
16 | {% endblock %} | 5 | {% endblock %} |
17 | 6 | ||
18 | {% block content %} | 7 | {% block content %} |
@@ -26,13 +15,18 @@ | |||
26 | <div class="card-body"> | 15 | <div class="card-body"> |
27 | {% if not entry.previewPicture is null %} | 16 | {% if not entry.previewPicture is null %} |
28 | <div class="card-image waves-effect waves-block waves-light"> | 17 | <div class="card-image waves-effect waves-block waves-light"> |
18 | <ul class="card-entry-labels"> | ||
19 | {% for tag in entry.tags | slice(0, 3) %} | ||
20 | <li>{{ tag.label }}</li> | ||
21 | {% endfor %} | ||
22 | </ul> | ||
29 | <div class="preview activator" style="background-image: url({{ entry.previewPicture }})"></div> | 23 | <div class="preview activator" style="background-image: url({{ entry.previewPicture }})"></div> |
30 | </div> | 24 | </div> |
31 | {% endif %} | 25 | {% endif %} |
32 | 26 | ||
33 | <div class="card-content"> | 27 | <div class="card-content"> |
34 | {% if not entry.previewPicture is null %} | 28 | {% if not entry.previewPicture is null %} |
35 | <i class="card-title grey-text text-darken-4 activator mdi-navigation-more-horiz right"></i> | 29 | <i class="card-title grey-text text-darken-4 activator material-icons right">more_vert</i> |
36 | {% endif %} | 30 | {% endif %} |
37 | 31 | ||
38 | <span class="card-title dot-ellipsis dot-resize-update"><a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title|raw }}">{{ entry.title|striptags|raw }}</a></span> | 32 | <span class="card-title dot-ellipsis dot-resize-update"><a href="{{ path('view', { 'id': entry.id }) }}" title="{{ entry.title|raw }}">{{ entry.title|striptags|raw }}</a></span> |
@@ -50,13 +44,18 @@ | |||
50 | 44 | ||
51 | {% if entry.previewPicture is null %} | 45 | {% if entry.previewPicture is null %} |
52 | <p>{{ entry.content|striptags|slice(0, 300)|raw }}…</p> | 46 | <p>{{ entry.content|striptags|slice(0, 300)|raw }}…</p> |
47 | <ul class="card-entry-labels-hidden"> | ||
48 | {% for tag in entry.tags | slice(0, 2) %} | ||
49 | <li>{{ tag.label }}</li> | ||
50 | {% endfor %} | ||
51 | </ul> | ||
53 | {% endif %} | 52 | {% endif %} |
54 | </div> | 53 | </div> |
55 | </div> | 54 | </div> |
56 | 55 | ||
57 | {% if not entry.previewPicture is null %} | 56 | {% if not entry.previewPicture is null %} |
58 | <div class="card-reveal"> | 57 | <div class="card-reveal"> |
59 | <i class="card-title grey-text text-darken-4 mdi-card-close right"></i> | 58 | <i class="card-title grey-text text-darken-4 material-icons right">clear</i> |
60 | <span class="card-title"><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></span> | 59 | <span class="card-title"><a href="{{ path('view', { 'id': entry.id }) }}">{{ entry.title|raw }}</a></span> |
61 | 60 | ||
62 | <div class="estimatedTime grey-text"> | 61 | <div class="estimatedTime grey-text"> |
@@ -66,6 +65,12 @@ | |||
66 | </div> | 65 | </div> |
67 | 66 | ||
68 | <p>{{ entry.content|striptags|slice(0, 300)|raw }}…</p> | 67 | <p>{{ entry.content|striptags|slice(0, 300)|raw }}…</p> |
68 | |||
69 | <ul class="card-entry-tags"> | ||
70 | {% for tag in entry.tags %} | ||
71 | <li>{{ tag.label }}</li> | ||
72 | {% endfor %} | ||
73 | </ul> | ||
69 | </div> | 74 | </div> |
70 | {% endif %} | 75 | {% endif %} |
71 | 76 | ||
@@ -74,11 +79,11 @@ | |||
74 | <a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.list.original_article'|trans }}: {{ entry.title|e }} - {{ entry.domainName|removeWww }}" class="tool original grey-text"><span>{{ entry.domainName|removeWww|truncate(18) }}</span></a> | 79 | <a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.list.original_article'|trans }}: {{ entry.title|e }} - {{ entry.domainName|removeWww }}" class="tool original grey-text"><span>{{ entry.domainName|removeWww|truncate(18) }}</span></a> |
75 | </bold> | 80 | </bold> |
76 | 81 | ||
77 | <ul class="tools links right"> | 82 | <ul class="tools right"> |
78 | <li> | 83 | <li> |
79 | <a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool grey-text {% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %}" href="{{ path('archive_entry', { 'id': entry.id }) }}"></a> | 84 | <a title="{{ 'entry.list.toogle_as_read'|trans }}" class="tool grey-text" href="{{ path('archive_entry', { 'id': entry.id }) }}"><i class="material-icons">{% if entry.isArchived == 0 %}done{% else %}redo{% endif %}</i></a> |
80 | <a title="{{ 'entry.list.toogle_as_star'|trans }}" class="tool grey-text {% if entry.isStarred == 0 %}mdi-toggle-star-outline{% else %}mdi-toggle-star{% endif %}" href="{{ path('star_entry', { 'id': entry.id }) }}"></a> | 85 | <a title="{{ 'entry.list.toogle_as_star'|trans }}" class="tool grey-text" href="{{ path('star_entry', { 'id': entry.id }) }}"><i class="material-icons">{% if entry.isStarred == 0 %}star_border{% else %}star{% endif %}</i></a> |
81 | <a title="{{ 'entry.list.delete'|trans }}" class="tool grey-text delete mdi-action-delete " href="{{ path('delete_entry', { 'id': entry.id }) }}"></a> | 86 | <a title="{{ 'entry.list.delete'|trans }}" class="tool grey-text delete" href="{{ path('delete_entry', { 'id': entry.id }) }}"><i class="material-icons">delete</i></a> |
82 | </li> | 87 | </li> |
83 | </ul> | 88 | </ul> |
84 | </div> | 89 | </div> |
@@ -106,6 +111,7 @@ | |||
106 | </div> | 111 | </div> |
107 | 112 | ||
108 | <!-- Filters --> | 113 | <!-- Filters --> |
114 | {% if form is not null %} | ||
109 | <div id="filters" class="side-nav fixed right-aligned"> | 115 | <div id="filters" class="side-nav fixed right-aligned"> |
110 | <form action="{{ path('all') }}"> | 116 | <form action="{{ path('all') }}"> |
111 | 117 | ||
@@ -189,5 +195,6 @@ | |||
189 | 195 | ||
190 | </form> | 196 | </form> |
191 | </div> | 197 | </div> |
192 | {% include "WallabagCoreBundle:Entry:pager.html.twig" with {'entries': entries} %} | 198 | {% endif %} |
199 | |||
193 | {% endblock %} | 200 | {% endblock %} |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig deleted file mode 100644 index 6cabcf44..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entries.xml.twig +++ /dev/null | |||
@@ -1,34 +0,0 @@ | |||
1 | <?xml version="1.0" encoding="utf-8"?> | ||
2 | <rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/"> | ||
3 | <channel> | ||
4 | <title>wallabag — {{type}} feed</title> | ||
5 | <link>{{ url('unread') }}</link> | ||
6 | <pubDate>{{ "now"|date('D, d M Y H:i:s') }}</pubDate> | ||
7 | <generator>wallabag</generator> | ||
8 | <description>wallabag {{type}} elements</description> | ||
9 | |||
10 | {% for entry in entries %} | ||
11 | |||
12 | <item> | ||
13 | <title><![CDATA[{{ entry.title }}]]></title> | ||
14 | <source url="{{ url('view', { 'id': entry.id }) }}">wallabag</source> | ||
15 | <link>{{ entry.url }}</link> | ||
16 | <guid>{{ entry.url }}</guid> | ||
17 | <pubDate>{{ entry.createdAt|date('D, d M Y H:i:s') }}</pubDate> | ||
18 | <description> | ||
19 | <![CDATA[ | ||
20 | {%- if entry.readingTime > 0 -%} | ||
21 | {{ 'entry.list.reading_time_minutes'|trans({'%readingTime%': entry.readingTime}) }} | ||
22 | {%- else -%} | ||
23 | {{ 'entry.list.reading_time_less_one_minute'|trans|raw }} | ||
24 | {%- endif %} | ||
25 | |||
26 | {{ entry.content|raw -}} | ||
27 | ]]> | ||
28 | </description> | ||
29 | </item> | ||
30 | |||
31 | {% endfor %} | ||
32 | |||
33 | </channel> | ||
34 | </rss> | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig index 2ee615aa..209e9e89 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Entry/entry.html.twig | |||
@@ -13,24 +13,24 @@ | |||
13 | <ul> | 13 | <ul> |
14 | <li> | 14 | <li> |
15 | <a class="waves-effect" href="{{ path('homepage') }}"> | 15 | <a class="waves-effect" href="{{ path('homepage') }}"> |
16 | <i class="mdi-action-exit-to-app"></i> | 16 | <i class="material-icons">exit_to_app</i> |
17 | </a> | 17 | </a> |
18 | </li> | 18 | </li> |
19 | </ul> | 19 | </ul> |
20 | <ul class="right"> | 20 | <ul class="right"> |
21 | <li> | 21 | <li> |
22 | <a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead"> | 22 | <a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead"> |
23 | <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i> | 23 | <i class="material-icons small">{% if entry.isArchived == 0 %}done{% else %}redo{% endif %}</i> |
24 | </a> | 24 | </a> |
25 | </li> | 25 | </li> |
26 | <li> | 26 | <li> |
27 | <a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav"> | 27 | <a class="waves-effect" title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav"> |
28 | <i class="{% if entry.isStarred == 0 %}mdi-toggle-star-outline{% else %}mdi-toggle-star{% endif %} small"></i> | 28 | <i class="material-icons small">{% if entry.isStarred == 0 %}star_outline{% else %}star{% endif %}</i> |
29 | </a> | 29 | </a> |
30 | </li> | 30 | </li> |
31 | <li> | 31 | <li> |
32 | <a href="#" data-activates="slide-out" class="button-collapse right"> | 32 | <a href="#" data-activates="slide-out" class="button-collapse right"> |
33 | <i class="mdi-navigation-menu"></i> | 33 | <i class="material-icons">menu</i> |
34 | </a> | 34 | </a> |
35 | </li> | 35 | </li> |
36 | </ul> | 36 | </ul> |
@@ -39,7 +39,7 @@ | |||
39 | <ul id="slide-out" class="collapsible side-nav fixed reader-mode" data-collapsible="accordion"> | 39 | <ul id="slide-out" class="collapsible side-nav fixed reader-mode" data-collapsible="accordion"> |
40 | <li class="bold border-bottom hide-on-med-and-down"> | 40 | <li class="bold border-bottom hide-on-med-and-down"> |
41 | <a class="waves-effect collapsible-header" href="{{ path('homepage') }}"> | 41 | <a class="waves-effect collapsible-header" href="{{ path('homepage') }}"> |
42 | <i class="mdi-action-exit-to-app small"></i> | 42 | <i class="material-icons small">exit_to_app</i> |
43 | <span>{{ 'entry.view.left_menu.back_to_homepage'|trans }}</span> | 43 | <span>{{ 'entry.view.left_menu.back_to_homepage'|trans }}</span> |
44 | </a> | 44 | </a> |
45 | <div class="collapsible-body"></div> | 45 | <div class="collapsible-body"></div> |
@@ -47,7 +47,7 @@ | |||
47 | 47 | ||
48 | <li class="bold border-bottom hide-on-med-and-down"> | 48 | <li class="bold border-bottom hide-on-med-and-down"> |
49 | <a class="waves-effect collapsible-header" href="{{ entry.url|e }}"> | 49 | <a class="waves-effect collapsible-header" href="{{ entry.url|e }}"> |
50 | <i class="mdi-content-link small"></i> | 50 | <i class="material-icons small">link</i> |
51 | <span>{{ 'entry.view.left_menu.view_original_article'|trans }}</span> | 51 | <span>{{ 'entry.view.left_menu.view_original_article'|trans }}</span> |
52 | </a> | 52 | </a> |
53 | <div class="collapsible-body"></div> | 53 | <div class="collapsible-body"></div> |
@@ -55,30 +55,35 @@ | |||
55 | 55 | ||
56 | <li class="bold hide-on-med-and-down"> | 56 | <li class="bold hide-on-med-and-down"> |
57 | <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" href="{{ path('reload_entry', { 'id': entry.id }) }}" id="reload"> | 57 | <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.re_fetch_content'|trans }}" href="{{ path('reload_entry', { 'id': entry.id }) }}" id="reload"> |
58 | <i class="mdi-action-autorenew small"></i> | 58 | <i class="material-icons small">autorenew</i> |
59 | <span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span> | 59 | <span>{{ 'entry.view.left_menu.re_fetch_content'|trans }}</span> |
60 | </a> | 60 | </a> |
61 | <div class="collapsible-body"></div> | 61 | <div class="collapsible-body"></div> |
62 | </li> | 62 | </li> |
63 | 63 | ||
64 | {% set markAsReadLabel = 'entry.view.left_menu.set_as_unread' %} | ||
65 | {% if entry.isArchived == 0 %} | ||
66 | {% set markAsReadLabel = 'entry.view.left_menu.set_as_read' %} | ||
67 | {% endif %} | ||
68 | |||
64 | <li class="bold hide-on-med-and-down"> | 69 | <li class="bold hide-on-med-and-down"> |
65 | <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_read'|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead"> | 70 | <a class="waves-effect collapsible-header" title="{{ markAsReadLabel|trans }}" href="{{ path('archive_entry', { 'id': entry.id }) }}" id="markAsRead"> |
66 | <i class="{% if entry.isArchived == 0 %}mdi-action-done{% else %}mdi-content-redo{% endif %} small"></i> | 71 | <i class="material-icons small">{% if entry.isArchived == 0 %}done{% else %}redo{% endif %}</i> |
67 | <span>{% if entry.isArchived == 0 %}{{ 'entry.view.left_menu.set_as_read'|trans }}{% else %}{{ 'entry.view.left_menu.set_as_unread'|trans }}{% endif %}</span> | 72 | <span>{{ markAsReadLabel|trans }}</span> |
68 | </a> | 73 | </a> |
69 | <div class="collapsible-body"></div> | 74 | <div class="collapsible-body"></div> |
70 | </li> | 75 | </li> |
71 | 76 | ||
72 | <li class="bold hide-on-med-and-down"> | 77 | <li class="bold hide-on-med-and-down"> |
73 | <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav"> | 78 | <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.set_as_starred'|trans }}" href="{{ path('star_entry', { 'id': entry.id }) }}" id="setFav"> |
74 | <i class="{% if entry.isStarred == 0 %}mdi-toggle-star-outline{% else %}mdi-toggle-star{% endif %} small"></i> | 79 | <i class="material-icons spall">{% if entry.isStarred == 0 %}star_outline{% else %}star{% endif %}</i> |
75 | <span>{{ 'entry.view.left_menu.set_as_starred'|trans }}</span> | 80 | <span>{{ 'entry.view.left_menu.set_as_starred'|trans }}</span> |
76 | </a> | 81 | </a> |
77 | <div class="collapsible-body"></div> | 82 | <div class="collapsible-body"></div> |
78 | </li> | 83 | </li> |
79 | <li class="bold border-bottom hide-on-med-and-down"> | 84 | <li class="bold border-bottom hide-on-med-and-down"> |
80 | <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}"> | 85 | <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}"> |
81 | <i class="mdi-action-delete small"></i> | 86 | <i class="material-icons small">delete</i> |
82 | <span>{{ 'entry.view.left_menu.delete'|trans }}</span> | 87 | <span>{{ 'entry.view.left_menu.delete'|trans }}</span> |
83 | </a> | 88 | </a> |
84 | <div class="collapsible-body"></div> | 89 | <div class="collapsible-body"></div> |
@@ -86,7 +91,7 @@ | |||
86 | 91 | ||
87 | <li class="bold border-bottom hide-on-med-and-down"> | 92 | <li class="bold border-bottom hide-on-med-and-down"> |
88 | <a class="waves-effect collapsible-header" id="nav-btn-add-tag"> | 93 | <a class="waves-effect collapsible-header" id="nav-btn-add-tag"> |
89 | <i class="mdi-action-label-outline small"></i> | 94 | <i class="material-icons small">label_outline</i> |
90 | <span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span> | 95 | <span>{{ 'entry.view.left_menu.add_a_tag'|trans }}</span> |
91 | </a> | 96 | </a> |
92 | <div class="collapsible-body"></div> | 97 | <div class="collapsible-body"></div> |
@@ -94,11 +99,23 @@ | |||
94 | 99 | ||
95 | <li class="bold"> | 100 | <li class="bold"> |
96 | <a class="waves-effect collapsible-header"> | 101 | <a class="waves-effect collapsible-header"> |
97 | <i class="mdi-social-share small"></i> | 102 | <i class="material-icons small">share</i> |
98 | <span>{{ 'entry.view.left_menu.share_content'|trans }}</span> | 103 | <span>{{ 'entry.view.left_menu.share_content'|trans }}</span> |
99 | </a> | 104 | </a> |
100 | <div class="collapsible-body"> | 105 | <div class="collapsible-body"> |
101 | <ul> | 106 | <ul> |
107 | {% if craue_setting('share_public') %} | ||
108 | <li> | ||
109 | <a href="{{ path('share', {'id': entry.id }) }}" target="_blank" class="public icon-link" title="{{ 'entry.view.left_menu.public_link'|trans }}"> | ||
110 | <span>{{ 'entry.view.left_menu.public_link'|trans }}</span> | ||
111 | </a> | ||
112 | </li> | ||
113 | <li> | ||
114 | <a href="{{ path('delete_share', {'id': entry.id }) }}" class="tool public" title="{{ 'entry.view.left_menu.delete_public_link'|trans }}"> | ||
115 | <span>{{ 'entry.view.left_menu.delete_public_link'|trans }}</span> | ||
116 | </a> | ||
117 | </li> | ||
118 | {% endif %} | ||
102 | {% if craue_setting('share_twitter') %} | 119 | {% if craue_setting('share_twitter') %} |
103 | <li> | 120 | <li> |
104 | <a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="twitter"> | 121 | <a href="https://twitter.com/home?status={{entry.title|url_encode}}%20{{ entry.url|url_encode }}%20via%20@wallabagapp" target="_blank" class="tool twitter icon icon-twitter" title="twitter"> |
@@ -129,7 +146,8 @@ | |||
129 | {% endif %} | 146 | {% endif %} |
130 | {% if craue_setting('share_mail') %} | 147 | {% if craue_setting('share_mail') %} |
131 | <li> | 148 | <li> |
132 | <a href="mailto:?subject={{ entry.title|url_encode }}&body={{ entry.url|url_encode }}%20via%20@wallabagapp" class="tool email icon icon-mail" title="{{ 'entry.view.left_menu.share_email_label'|trans }}"> | 149 | <a href="mailto:?subject={{ entry.title|url_encode }}&body={{ entry.url|url_encode }}%20via%20@wallabagapp" title="{{ 'entry.view.left_menu.share_email_label'|trans }}"> |
150 | <i class="material-icons">email</i> | ||
133 | <span>{{ 'entry.view.left_menu.share_email_label'|trans }}</span> | 151 | <span>{{ 'entry.view.left_menu.share_email_label'|trans }}</span> |
134 | </a> | 152 | </a> |
135 | </li> | 153 | </li> |
@@ -141,17 +159,16 @@ | |||
141 | {% if craue_setting('show_printlink') %} | 159 | {% if craue_setting('show_printlink') %} |
142 | <li class="bold border-bottom hide-on-med-and-down"> | 160 | <li class="bold border-bottom hide-on-med-and-down"> |
143 | <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.print'|trans }}" href="javascript: window.print();"> | 161 | <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.print'|trans }}" href="javascript: window.print();"> |
144 | <i class="mdi-action-print small"></i> | 162 | <i class="material-icons small">print</i> |
145 | <span>{{ 'entry.view.left_menu.print'|trans }}</span> | 163 | <span>{{ 'entry.view.left_menu.print'|trans }}</span> |
146 | </a> | 164 | </a> |
147 | <div class="collapsible-body"></div> | 165 | <div class="collapsible-body"></div> |
148 | </li> | 166 | </li> |
149 | {% endif %} | 167 | {% endif %} |
150 | 168 | ||
151 | |||
152 | <li class="bold"> | 169 | <li class="bold"> |
153 | <a class="waves-effect collapsible-header"> | 170 | <a class="waves-effect collapsible-header"> |
154 | <i class="mdi-file-file-download small"></i> | 171 | <i class="material-icons small">file_download</i> |
155 | <span>{{ 'entry.view.left_menu.download'|trans }}</span> | 172 | <span>{{ 'entry.view.left_menu.download'|trans }}</span> |
156 | </a> | 173 | </a> |
157 | <div class="collapsible-body"> | 174 | <div class="collapsible-body"> |
@@ -169,7 +186,7 @@ | |||
169 | 186 | ||
170 | <li class="bold hide-on-large-only"> | 187 | <li class="bold hide-on-large-only"> |
171 | <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}"> | 188 | <a class="waves-effect collapsible-header" title="{{ 'entry.view.left_menu.delete'|trans }}" href="{{ path('delete_entry', { 'id': entry.id }) }}"> |
172 | <i class="mdi-action-delete small"></i> | 189 | <i class="material-icons small">delete</i> |
173 | <span>{{ 'entry.view.left_menu.delete'|trans }}</span> | 190 | <span>{{ 'entry.view.left_menu.delete'|trans }}</span> |
174 | </a> | 191 | </a> |
175 | <div class="collapsible-body"></div> | 192 | <div class="collapsible-body"></div> |
@@ -177,7 +194,7 @@ | |||
177 | 194 | ||
178 | <li class="bold"> | 195 | <li class="bold"> |
179 | <a class="waves-effect collapsible-header" href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.description'|trans }}"> | 196 | <a class="waves-effect collapsible-header" href="mailto:hello@wallabag.org?subject=Wrong%20display%20in%20wallabag&body={{ entry.url|url_encode }}" title="{{ 'entry.view.left_menu.problem.description'|trans }}"> |
180 | <i class="mdi-alert-error small"></i> | 197 | <i class="material-icons small">error</i> |
181 | <span>{{ 'entry.view.left_menu.problem.label'|trans }}</span> | 198 | <span>{{ 'entry.view.left_menu.problem.label'|trans }}</span> |
182 | </a> | 199 | </a> |
183 | <div class="collapsible-body"></div> | 200 | <div class="collapsible-body"></div> |
@@ -193,21 +210,23 @@ | |||
193 | <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1> | 210 | <h1>{{ entry.title|raw }} <a href="{{ path('edit', { 'id': entry.id }) }}" title="{{ 'entry.view.edit_title'|trans }}">✎</a></h1> |
194 | </header> | 211 | </header> |
195 | <aside> | 212 | <aside> |
196 | <span class="link mdi-action-today" title="{{ 'entry.view.created_at'|trans }}"> {{ entry.createdAt|date('Y-m-d') }}</span> | ||
197 | {% set readingTime = entry.readingTime / app.user.config.readingSpeed %} | 213 | {% set readingTime = entry.readingTime / app.user.config.readingSpeed %} |
198 | <span class="link mdi-action-query-builder"> | 214 | <span class="mdi-action-query-builder"></span> |
215 | <span class="link"> | ||
199 | {% if readingTime > 0 %} | 216 | {% if readingTime > 0 %} |
200 | {{ 'entry.list.reading_time_minutes_short'|trans({'%readingTime%': readingTime|round}) }} | 217 | {{ 'entry.list.reading_time_minutes_short'|trans({'%readingTime%': readingTime|round}) }} |
201 | {% else %} | 218 | {% else %} |
202 | {{ 'entry.list.reading_time_less_one_minute_short'|trans|raw }} | 219 | {{ 'entry.list.reading_time_less_one_minute_short'|trans|raw }} |
203 | {% endif %} | 220 | {% endif %} |
204 | </span> | 221 | </span> |
205 | <a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool link mdi-content-link"> <span>{{ entry.domainName|removeWww }}</span></a> | 222 | <span class="mdi-action-today" title="{{ 'entry.view.created_at'|trans }}"> </span> <span class="link">{{ entry.createdAt|date('Y-m-d') }}</span> |
206 | <span class="tool link mdi-communication-comment"> {{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span> | 223 | <a href="{{ entry.url|e }}" target="_blank" title="{{ 'entry.view.original_article'|trans }} : {{ entry.title|e }}" class="tool"> |
224 | <i class="material-icons link">link</i> <span class="link">{{ entry.domainName|removeWww }}</span></a> | ||
225 | <span class="tool"><i class="material-icons link">comment</i> <span class="link">{{ 'entry.view.annotations_on_the_entry'|transchoice(entry.annotations | length) }}</span> | ||
207 | <div id="list"> | 226 | <div id="list"> |
208 | {% for tag in entry.tags %} | 227 | {% for tag in entry.tags %} |
209 | <div class="chip"> | 228 | <div class="chip"> |
210 | {{ tag.label }} <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i class="mdi-action-delete"></i></a> | 229 | {{ tag.label }} <a href="{{ path('remove_tag', { 'entry': entry.id, 'tag': tag.id }) }}"><i class="material-icons">delete</i></a> |
211 | </div> | 230 | </div> |
212 | {% endfor %} | 231 | {% endfor %} |
213 | </div> | 232 | </div> |
@@ -226,27 +245,17 @@ | |||
226 | </article> | 245 | </article> |
227 | </div> | 246 | </div> |
228 | 247 | ||
229 | <script type="text/javascript"> | 248 | <script id="annotationroutes" type="application/json"> |
230 | 249 | { | |
231 | var app = new annotator.App(); | 250 | "prefix": "", |
232 | app.include(annotator.ui.main, { | 251 | "urls": { |
233 | element: document.querySelector('article') | 252 | "create": "{{ path('annotations_post_annotation', { 'entry': entry.id }) }}", |
234 | }); | 253 | "update": "{{ path('annotations_put_annotation', { 'annotation': 'idAnnotation' }) }}", |
235 | app.include(annotator.storage.http, { | 254 | "destroy": "{{ path('annotations_delete_annotation', { 'annotation': 'idAnnotation' }) }}", |
236 | prefix: '', | 255 | "search": "{{ path('annotations_get_annotations', { 'entry': entry.id }) }}" |
237 | urls: { | 256 | }, |
238 | create: '{{ path('annotations_post_annotation', { 'entry': entry.id }) }}', | 257 | "entryId": "{{ entry.id }}" |
239 | update: '{{ path('annotations_put_annotation', { 'annotation': 'idAnnotation' }) }}', | 258 | }</script> |
240 | destroy: '{{ path('annotations_delete_annotation', { 'annotation': 'idAnnotation' }) }}', | ||
241 | search: '{{ path('annotations_get_annotations', { 'entry': entry.id }) }}' | ||
242 | } | ||
243 | }); | ||
244 | app | ||
245 | .start() | ||
246 | .then(function () { | ||
247 | app.annotations.load({entry: {{ entry.id }}}); | ||
248 | }); | ||
249 | </script> | ||
250 | 259 | ||
251 | {% endblock %} | 260 | {% endblock %} |
252 | 261 | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig index d958c4b8..1690633a 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/Tag/tags.html.twig | |||
@@ -9,7 +9,10 @@ | |||
9 | <br /> | 9 | <br /> |
10 | <ul class="row data"> | 10 | <ul class="row data"> |
11 | {% for tag in tags %} | 11 | {% for tag in tags %} |
12 | <li id="tag-{{ tag.id|e }}" class="col l4 m6 s12">{{tag.label}} ({{ tag.getEntriesByUserId(app.user.id) | length }})</li> | 12 | <li id="tag-{{ tag.id|e }}" class="col l4 m6 s12"><a href="{{ path('tag_entries', {'slug': tag.slug}) }}">{{tag.label}} ({{ tag.entries.getValues | length }})</a></li> |
13 | {% endfor %} | 13 | {% endfor %} |
14 | </ul> | 14 | </ul> |
15 | <div> | ||
16 | <a href="{{ path('untagged') }}">{{ 'tag.list.see_untagged_entries'|trans }}</a> | ||
17 | </div> | ||
15 | {% endblock %} | 18 | {% endblock %} |
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/footer.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/footer.html.twig deleted file mode 100644 index 7cb19966..00000000 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/footer.html.twig +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | <footer class="page-footer cyan darken-2"> | ||
2 | <div class="container"> | ||
3 | <div class="row"> | ||
4 | <div class="col l6 s12"> | ||
5 | <h5 class="white-text">{{ 'footer.wallabag.elsewhere'|trans }}</h5> | ||
6 | <p class="grey-text text-lighten-4"> | ||
7 | <a target="_blank" class="grey-text text-lighten-3" href="{{ addonsUrl.google_play }}" title="Android"> | ||
8 | <span class="icon-android"></span> | ||
9 | </a> | ||
10 | <a target="_blank" class="grey-text text-lighten-3" href="{{ addonsUrl.ios }}" title="iOS"> | ||
11 | <span class="icon-apple"></span> | ||
12 | </a> | ||
13 | <a target="_blank" class="grey-text text-lighten-3" href="{{ addonsUrl.firefox }}" title="Firefox"> | ||
14 | <span class="icon-firefox"></span> | ||
15 | </a> | ||
16 | <a target="_blank" class="grey-text text-lighten-3" href="{{ addonsUrl.chrome }}" title="Chrome"> | ||
17 | <span class="icon-chrome"></span> | ||
18 | </a> | ||
19 | </p> | ||
20 | </div> | ||
21 | <div class="col l4 offset-l2 s12"> | ||
22 | <h5 class="white-text">{{ 'footer.wallabag.social'|trans }}</h5> | ||
23 | <a target="_blank" class="grey-text text-lighten-3" href="{{ socialsUrl.twitter }}" title="Twitter"> | ||
24 | <span class="icon-twitter"></span> | ||
25 | </a> | ||
26 | <a target="_blank" class="grey-text text-lighten-3" href="{{ socialsUrl.google_plus }}" title="Google+"> | ||
27 | <span class="icon-google-plus2"></span> | ||
28 | </a> | ||
29 | <a target="_blank" class="grey-text text-lighten-3" href="{{ socialsUrl.facebook }}" title="Facebook"> | ||
30 | <span class="icon-facebook2"></span> | ||
31 | </a> | ||
32 | </div> | ||
33 | </div> | ||
34 | </div> | ||
35 | <div class="footer-copyright"> | ||
36 | <div class="container"> | ||
37 | <p>{{ 'footer.wallabag.powered_by'|trans }} <a target="_blank" href="https://wallabag.org" class="grey-text text-lighten-4">wallabag</a></p> | ||
38 | <a class="grey-text text-lighten-4 right" href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a> | ||
39 | </div> | ||
40 | </div> | ||
41 | </footer> | ||
diff --git a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig index 0573e8e5..df05e2a4 100644 --- a/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig +++ b/src/Wallabag/CoreBundle/Resources/views/themes/material/layout.html.twig | |||
@@ -2,18 +2,12 @@ | |||
2 | 2 | ||
3 | {% block css %} | 3 | {% block css %} |
4 | {{ parent() }} | 4 | {{ parent() }} |
5 | 5 | <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/material/css/style.min.css') }}" media="screen,projection,print"/> | |
6 | <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/material/css/materialize.min.css') }}" media="screen,projection"/> | ||
7 | <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/material/css/main.css') }}" media="all"> | ||
8 | <link rel="stylesheet" href="{{ asset('bundles/wallabagcore/themes/material/css/print.css') }}" media="print"> | ||
9 | {% endblock %} | 6 | {% endblock %} |
10 | 7 | ||
11 | {% block scripts %} | 8 | {% block scripts %} |
12 | {{ parent() }} | 9 | {{ parent() }} |
13 | 10 | <script src="{{ asset('bundles/wallabagcore/themes/material/js/material.min.js') }}"></script> | |
14 | <script src="{{ asset('bundles/wallabagcore/themes/material/js/jquery.tinydot.min.js') }}"></script> | ||
15 | <script src="{{ asset('bundles/wallabagcore/themes/material/js/materialize.min.js') }}"></script> | ||
16 | <script src="{{ asset('bundles/wallabagcore/themes/material/js/init.js') }}"></script> | ||
17 | {% endblock %} | 11 | {% endblock %} |
18 | 12 | ||
19 | {% block header %} | 13 | {% block header %} |
@@ -25,6 +19,8 @@ | |||
25 | Materialize.toast('{{ flashMessage|trans }}', 4000); | 19 | Materialize.toast('{{ flashMessage|trans }}', 4000); |
26 | </script> | 20 | </script> |
27 | {% endfor %} | 21 | {% endfor %} |
22 | |||
23 | {{ render(controller("WallabagImportBundle:Import:checkQueue")) }} | ||
28 | {% endblock %} | 24 | {% endblock %} |
29 | 25 | ||
30 | {% block menu %} | 26 | {% block menu %} |
@@ -33,7 +29,7 @@ | |||
33 | {% block logo %} | 29 | {% block logo %} |
34 | <li class="logo border-bottom"> | 30 | <li class="logo border-bottom"> |
35 | <a title="{{ 'menu.left.back_to_unread'|trans }}" href="{{ path('unread') }}"> | 31 | <a title="{{ 'menu.left.back_to_unread'|trans }}" href="{{ path('unread') }}"> |
36 | <img src="{{ asset('bundles/wallabagcore/themes/material/img/logo-square.png') }}" alt="wallabag logo" /> | 32 | <img src="{{ asset('bundles/wallabagcore/themes/_global/img/logo-square.png') }}" alt="wallabag logo" /> |
37 | </a> | 33 | </a> |
38 | </li> | 34 | </li> |
39 | {% endblock %} | 35 | {% endblock %} |
@@ -41,19 +37,19 @@ | |||
41 | {% set currentRoute = app.request.attributes.get('_route') %} | 37 | {% set currentRoute = app.request.attributes.get('_route') %} |
42 | 38 | ||
43 | <li class="bold {% if currentRoute == 'unread' or currentRoute == 'homepage' %}active{% endif %}"> | 39 | <li class="bold {% if currentRoute == 'unread' or currentRoute == 'homepage' %}active{% endif %}"> |
44 | <a class="waves-effect" href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }}</a> | 40 | <a class="waves-effect" href="{{ path('unread') }}">{{ 'menu.left.unread'|trans }} <span class="numberItems grey-text">{{ count_entries('unread') }}</span></a> |
45 | </li> | 41 | </li> |
46 | <li class="bold {% if currentRoute == 'starred' %}active{% endif %}"> | 42 | <li class="bold {% if currentRoute == 'starred' %}active{% endif %}"> |
47 | <a class="waves-effect" href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }}</a> | 43 | <a class="waves-effect" href="{{ path('starred') }}">{{ 'menu.left.starred'|trans }} <span class="numberItems grey-text">{{ count_entries('starred') }}</span></a> |
48 | </li> | 44 | </li> |
49 | <li class="bold {% if currentRoute == 'archive' %}active{% endif %}"> | 45 | <li class="bold {% if currentRoute == 'archive' %}active{% endif %}"> |
50 | <a class="waves-effect" href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }}</a> | 46 | <a class="waves-effect" href="{{ path('archive') }}">{{ 'menu.left.archive'|trans }} <span class="numberItems grey-text">{{ count_entries('archive') }}</span></a> |
51 | </li> | 47 | </li> |
52 | <li class="bold border-bottom {% if currentRoute == 'all' %}active{% endif %}"> | 48 | <li class="bold border-bottom {% if currentRoute == 'all' %}active{% endif %}"> |
53 | <a class="waves-effect" href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }}</a> | 49 | <a class="waves-effect" href="{{ path('all') }}">{{ 'menu.left.all_articles'|trans }} <span class="numberItems grey-text">{{ count_entries('all') }}</span></a> |
54 | </li> | 50 | </li> |
55 | <li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}"> | 51 | <li class="bold border-bottom {% if currentRoute == 'tags' %}active{% endif %}"> |
56 | <a class="waves-effect" href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }}</a> | 52 | <a class="waves-effect" href="{{ path('tag') }}">{{ 'menu.left.tags'|trans }} <span class="numberItems grey-text">{{ count_tags() }}</span></a> |
57 | </li> | 53 | </li> |
58 | <li class="bold {% if currentRoute == 'config' %}active{% endif %}"> | 54 | <li class="bold {% if currentRoute == 'config' %}active{% endif %}"> |
59 | <a class="waves-effect" href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a> | 55 | <a class="waves-effect" href="{{ path('config') }}">{{ 'menu.left.config'|trans }}</a> |
@@ -77,7 +73,7 @@ | |||
77 | </li> | 73 | </li> |
78 | </ul> | 74 | </ul> |
79 | <div class="nav-wrapper nav-panels"> | 75 | <div class="nav-wrapper nav-panels"> |
80 | <a href="#" data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="mdi-navigation-menu"></i></a> | 76 | <a href="#" data-activates="slide-out" class="nav-panel-menu button-collapse"><i class="material-icons">menu</i></a> |
81 | <div class="left action"> | 77 | <div class="left action"> |
82 | {% block title %} | 78 | {% block title %} |
83 | {% endblock %} | 79 | {% endblock %} |
@@ -86,22 +82,22 @@ | |||
86 | <ul> | 82 | <ul> |
87 | <li class="bold"> | 83 | <li class="bold"> |
88 | <a title="{{ 'menu.top.add_new_entry'|trans }}" class="waves-effect" href="{{ path('new') }}" id="nav-btn-add"> | 84 | <a title="{{ 'menu.top.add_new_entry'|trans }}" class="waves-effect" href="{{ path('new') }}" id="nav-btn-add"> |
89 | <i class="mdi-content-add"></i> | 85 | <i class="material-icons">add</i> |
90 | </a> | 86 | </a> |
91 | </li> | 87 | </li> |
92 | <!--<li> | 88 | <!--<li> |
93 | <a title="{{ 'menu.top.search'|trans }}" class="waves-effect" href="javascript: void(null);" id="nav-btn-search"> | 89 | <a title="{{ 'menu.top.search'|trans }}" class="waves-effect" href="javascript: void(null);" id="nav-btn-search"> |
94 | <i class="mdi-action-search"></i> | 90 | <i class="material-icons">search</i> |
95 | </a> | 91 | </a> |
96 | </li>--> | 92 | </li>--> |
97 | <li id="button_filters"> | 93 | <li id="button_filters"> |
98 | <a title="{{ 'menu.top.filter_entries'|trans }}" href="#" data-activates="filters" class="nav-panel-menu button-collapse-right"> | 94 | <a title="{{ 'menu.top.filter_entries'|trans }}" href="#" data-activates="filters" class="nav-panel-menu button-collapse-right"> |
99 | <i class="mdi-content-filter-list"></i> | 95 | <i class="material-icons">filter_list</i> |
100 | </a> | 96 | </a> |
101 | </li> | 97 | </li> |
102 | <li id="button_export"> | 98 | <li id="button_export"> |
103 | <a title="{{ 'menu.top.export'|trans }}" class="nav-panel-menu button-collapse-right" href="#" data-activates="export" class="nav-panel-menu button-collapse-right"> | 99 | <a title="{{ 'menu.top.export'|trans }}" class="nav-panel-menu button-collapse-right" href="#" data-activates="export"> |
104 | <i class="mdi-file-file-download"></i> | 100 | <i class="material-icons">file_download</i> |
105 | </a> | 101 | </a> |
106 | </li> | 102 | </li> |
107 | </ul> | 103 | </ul> |
@@ -109,19 +105,26 @@ | |||
109 | <form method="get" action="index.php"> | 105 | <form method="get" action="index.php"> |
110 | <div class="input-field nav-panel-search" style="display: none"> | 106 | <div class="input-field nav-panel-search" style="display: none"> |
111 | <input name="search" id="searchfield" type="search" required placeholder="{{ 'menu.search_form.input_label'|trans }}"> | 107 | <input name="search" id="searchfield" type="search" required placeholder="{{ 'menu.search_form.input_label'|trans }}"> |
112 | <label for="search"><i class="mdi-action-search"></i></label> | 108 | <label for="search"><i class="material-icons search">search</i></label> |
113 | <i class="mdi-navigation-close"></i> | 109 | <i class="material-icons close">clear</i> |
114 | </div> | 110 | </div> |
115 | </form> | 111 | </form> |
116 | <div class="input-field nav-panel-add" style="display: none"> | 112 | <div class="input-field nav-panel-add" style="display: none"> |
117 | {{ render(controller("WallabagCoreBundle:Entry:addEntryForm")) }} | 113 | {{ render(controller("WallabagCoreBundle:Entry:addEntryForm")) }} |
118 | <label for="add" class="active"><i class="mdi-content-add"></i></label> | 114 | <label for="add" class="active"><i class="material-icons add">add</i></label> |
119 | <i class="mdi-navigation-close"></i> | 115 | <i class="material-icons close">clear</i> |
120 | </div> | 116 | </div> |
121 | </div> | 117 | </div> |
122 | </nav> | 118 | </nav> |
123 | {% endblock %} | 119 | {% endblock %} |
124 | 120 | ||
125 | {% block footer %} | 121 | {% block footer %} |
126 | {{ render(controller("WallabagCoreBundle:Footer:index")) }} | 122 | <footer class="page-footer cyan darken-2"> |
123 | <div class="footer-copyright"> | ||
124 | <div class="container"> | ||
125 | <p>{{ 'footer.wallabag.powered_by'|trans }} <a target="_blank" href="https://wallabag.org" class="grey-text text-lighten-4">wallabag</a></p> | ||
126 | <a class="grey-text text-lighten-4 right" href="{{ path('about') }}">{{ 'footer.wallabag.about'|trans }}</a> | ||
127 | </div> | ||
128 | </div> | ||
129 | </footer> | ||
127 | {% endblock %} | 130 | {% endblock %} |
diff --git a/src/Wallabag/CoreBundle/Twig/WallabagExtension.php b/src/Wallabag/CoreBundle/Twig/WallabagExtension.php index 1a308070..fb4c7412 100644 --- a/src/Wallabag/CoreBundle/Twig/WallabagExtension.php +++ b/src/Wallabag/CoreBundle/Twig/WallabagExtension.php | |||
@@ -2,8 +2,25 @@ | |||
2 | 2 | ||
3 | namespace Wallabag\CoreBundle\Twig; | 3 | namespace Wallabag\CoreBundle\Twig; |
4 | 4 | ||
5 | class WallabagExtension extends \Twig_Extension | 5 | use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; |
6 | use Wallabag\CoreBundle\Repository\EntryRepository; | ||
7 | use Wallabag\CoreBundle\Repository\TagRepository; | ||
8 | |||
9 | class WallabagExtension extends \Twig_Extension implements \Twig_Extension_GlobalsInterface | ||
6 | { | 10 | { |
11 | private $tokenStorage; | ||
12 | private $entryRepository; | ||
13 | private $tagRepository; | ||
14 | private $lifeTime; | ||
15 | |||
16 | public function __construct(EntryRepository $entryRepository = null, TagRepository $tagRepository = null, TokenStorageInterface $tokenStorage = null, $lifeTime = 0) | ||
17 | { | ||
18 | $this->entryRepository = $entryRepository; | ||
19 | $this->tagRepository = $tagRepository; | ||
20 | $this->tokenStorage = $tokenStorage; | ||
21 | $this->lifeTime = $lifeTime; | ||
22 | } | ||
23 | |||
7 | public function getFilters() | 24 | public function getFilters() |
8 | { | 25 | { |
9 | return [ | 26 | return [ |
@@ -11,11 +28,85 @@ class WallabagExtension extends \Twig_Extension | |||
11 | ]; | 28 | ]; |
12 | } | 29 | } |
13 | 30 | ||
31 | public function getFunctions() | ||
32 | { | ||
33 | return array( | ||
34 | new \Twig_SimpleFunction('count_entries', [$this, 'countEntries']), | ||
35 | new \Twig_SimpleFunction('count_tags', [$this, 'countTags']), | ||
36 | ); | ||
37 | } | ||
38 | |||
14 | public function removeWww($url) | 39 | public function removeWww($url) |
15 | { | 40 | { |
16 | return preg_replace('/^www\./i', '', $url); | 41 | return preg_replace('/^www\./i', '', $url); |
17 | } | 42 | } |
18 | 43 | ||
44 | /** | ||
45 | * Return number of entries depending of the type (unread, archive, starred or all). | ||
46 | * | ||
47 | * @param string $type Type of entries to count | ||
48 | * | ||
49 | * @return int | ||
50 | */ | ||
51 | public function countEntries($type) | ||
52 | { | ||
53 | $user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null; | ||
54 | |||
55 | if (null === $user || !is_object($user)) { | ||
56 | return 0; | ||
57 | } | ||
58 | |||
59 | switch ($type) { | ||
60 | case 'starred': | ||
61 | $qb = $this->entryRepository->getBuilderForStarredByUser($user->getId()); | ||
62 | break; | ||
63 | |||
64 | case 'archive': | ||
65 | $qb = $this->entryRepository->getBuilderForArchiveByUser($user->getId()); | ||
66 | break; | ||
67 | |||
68 | case 'unread': | ||
69 | $qb = $this->entryRepository->getBuilderForUnreadByUser($user->getId()); | ||
70 | break; | ||
71 | |||
72 | case 'all': | ||
73 | $qb = $this->entryRepository->getBuilderForAllByUser($user->getId()); | ||
74 | break; | ||
75 | |||
76 | default: | ||
77 | throw new \InvalidArgumentException(sprintf('Type "%s" is not implemented.', $type)); | ||
78 | } | ||
79 | |||
80 | // THANKS to PostgreSQL we CAN'T make a DEAD SIMPLE count(e.id) | ||
81 | // ERROR: column "e0_.id" must appear in the GROUP BY clause or be used in an aggregate function | ||
82 | $query = $qb | ||
83 | ->select('e.id') | ||
84 | ->groupBy('e.id') | ||
85 | ->getQuery(); | ||
86 | |||
87 | $query->useQueryCache(true); | ||
88 | $query->useResultCache(true); | ||
89 | $query->setResultCacheLifetime($this->lifeTime); | ||
90 | |||
91 | return count($query->getArrayResult()); | ||
92 | } | ||
93 | |||
94 | /** | ||
95 | * Return number of tags. | ||
96 | * | ||
97 | * @return int | ||
98 | */ | ||
99 | public function countTags() | ||
100 | { | ||
101 | $user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null; | ||
102 | |||
103 | if (null === $user || !is_object($user)) { | ||
104 | return 0; | ||
105 | } | ||
106 | |||
107 | return $this->tagRepository->countAllTags($user->getId()); | ||
108 | } | ||
109 | |||
19 | public function getName() | 110 | public function getName() |
20 | { | 111 | { |
21 | return 'wallabag_extension'; | 112 | return 'wallabag_extension'; |
diff --git a/src/Wallabag/ImportBundle/Command/ImportCommand.php b/src/Wallabag/ImportBundle/Command/ImportCommand.php index dfbfc2f7..1df38295 100644 --- a/src/Wallabag/ImportBundle/Command/ImportCommand.php +++ b/src/Wallabag/ImportBundle/Command/ImportCommand.php | |||
@@ -13,10 +13,12 @@ class ImportCommand extends ContainerAwareCommand | |||
13 | protected function configure() | 13 | protected function configure() |
14 | { | 14 | { |
15 | $this | 15 | $this |
16 | ->setName('wallabag:import-v1') | 16 | ->setName('wallabag:import') |
17 | ->setDescription('Import entries from a JSON export from a wallabag v1 instance') | 17 | ->setDescription('Import entries from a JSON export from a wallabag v1 instance') |
18 | ->addArgument('userId', InputArgument::REQUIRED, 'User ID to populate') | 18 | ->addArgument('userId', InputArgument::REQUIRED, 'User ID to populate') |
19 | ->addArgument('filepath', InputArgument::REQUIRED, 'Path to the JSON file') | 19 | ->addArgument('filepath', InputArgument::REQUIRED, 'Path to the JSON file') |
20 | ->addOption('importer', null, InputArgument::OPTIONAL, 'The importer to use: wallabag v1, v2, firefox or chrome', 'v1') | ||
21 | ->addOption('markAsRead', null, InputArgument::OPTIONAL, 'Mark all entries as read', false) | ||
20 | ; | 22 | ; |
21 | } | 23 | } |
22 | 24 | ||
@@ -24,6 +26,10 @@ class ImportCommand extends ContainerAwareCommand | |||
24 | { | 26 | { |
25 | $output->writeln('Start : '.(new \DateTime())->format('d-m-Y G:i:s').' ---'); | 27 | $output->writeln('Start : '.(new \DateTime())->format('d-m-Y G:i:s').' ---'); |
26 | 28 | ||
29 | if (!file_exists($input->getArgument('filepath'))) { | ||
30 | throw new Exception(sprintf('File "%s" not found', $input->getArgument('filepath'))); | ||
31 | } | ||
32 | |||
27 | $em = $this->getContainer()->get('doctrine')->getManager(); | 33 | $em = $this->getContainer()->get('doctrine')->getManager(); |
28 | // Turning off doctrine default logs queries for saving memory | 34 | // Turning off doctrine default logs queries for saving memory |
29 | $em->getConnection()->getConfiguration()->setSQLLogger(null); | 35 | $em->getConnection()->getConfiguration()->setSQLLogger(null); |
@@ -34,9 +40,26 @@ class ImportCommand extends ContainerAwareCommand | |||
34 | throw new Exception(sprintf('User with id "%s" not found', $input->getArgument('userId'))); | 40 | throw new Exception(sprintf('User with id "%s" not found', $input->getArgument('userId'))); |
35 | } | 41 | } |
36 | 42 | ||
37 | $wallabag = $this->getContainer()->get('wallabag_import.wallabag_v1.import'); | 43 | switch ($input->getOption('importer')) { |
44 | case 'v2': | ||
45 | $wallabag = $this->getContainer()->get('wallabag_import.wallabag_v2.import'); | ||
46 | break; | ||
47 | case 'firefox': | ||
48 | $wallabag = $this->getContainer()->get('wallabag_import.firefox.import'); | ||
49 | break; | ||
50 | case 'chrome': | ||
51 | $wallabag = $this->getContainer()->get('wallabag_import.chrome.import'); | ||
52 | break; | ||
53 | case 'v1': | ||
54 | default: | ||
55 | $wallabag = $this->getContainer()->get('wallabag_import.wallabag_v1.import'); | ||
56 | break; | ||
57 | } | ||
58 | |||
59 | $wallabag->setMarkAsRead($input->getOption('markAsRead')); | ||
60 | $wallabag->setUser($user); | ||
61 | |||
38 | $res = $wallabag | 62 | $res = $wallabag |
39 | ->setUser($user) | ||
40 | ->setFilepath($input->getArgument('filepath')) | 63 | ->setFilepath($input->getArgument('filepath')) |
41 | ->import(); | 64 | ->import(); |
42 | 65 | ||
diff --git a/src/Wallabag/ImportBundle/Command/RedisWorkerCommand.php b/src/Wallabag/ImportBundle/Command/RedisWorkerCommand.php new file mode 100644 index 00000000..c2c11f11 --- /dev/null +++ b/src/Wallabag/ImportBundle/Command/RedisWorkerCommand.php | |||
@@ -0,0 +1,44 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Command; | ||
4 | |||
5 | use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; | ||
6 | use Symfony\Component\Config\Definition\Exception\Exception; | ||
7 | use Symfony\Component\Console\Input\InputArgument; | ||
8 | use Symfony\Component\Console\Input\InputOption; | ||
9 | use Symfony\Component\Console\Input\InputInterface; | ||
10 | use Symfony\Component\Console\Output\OutputInterface; | ||
11 | use Simpleue\Worker\QueueWorker; | ||
12 | |||
13 | class RedisWorkerCommand extends ContainerAwareCommand | ||
14 | { | ||
15 | protected function configure() | ||
16 | { | ||
17 | $this | ||
18 | ->setName('wallabag:import:redis-worker') | ||
19 | ->setDescription('Launch Redis worker') | ||
20 | ->addArgument('serviceName', InputArgument::REQUIRED, 'Service to use: wallabag_v1, wallabag_v2, pocket, readability, firefox, chrome or instapaper') | ||
21 | ->addOption('maxIterations', '', InputOption::VALUE_OPTIONAL, 'Number of iterations before stoping', false) | ||
22 | ; | ||
23 | } | ||
24 | |||
25 | protected function execute(InputInterface $input, OutputInterface $output) | ||
26 | { | ||
27 | $output->writeln('Worker started at: '.(new \DateTime())->format('d-m-Y G:i:s')); | ||
28 | $output->writeln('Waiting for message ...'); | ||
29 | |||
30 | $serviceName = $input->getArgument('serviceName'); | ||
31 | |||
32 | if (!$this->getContainer()->has('wallabag_import.queue.redis.'.$serviceName) || !$this->getContainer()->has('wallabag_import.consumer.redis.'.$serviceName)) { | ||
33 | throw new Exception(sprintf('No queue or consumer found for service name: "%s"', $input->getArgument('serviceName'))); | ||
34 | } | ||
35 | |||
36 | $worker = new QueueWorker( | ||
37 | $this->getContainer()->get('wallabag_import.queue.redis.'.$serviceName), | ||
38 | $this->getContainer()->get('wallabag_import.consumer.redis.'.$serviceName), | ||
39 | $input->getOption('maxIterations') | ||
40 | ); | ||
41 | |||
42 | $worker->start(); | ||
43 | } | ||
44 | } | ||
diff --git a/src/Wallabag/ImportBundle/Consumer/AMQPEntryConsumer.php b/src/Wallabag/ImportBundle/Consumer/AMQPEntryConsumer.php new file mode 100644 index 00000000..5aaa8c03 --- /dev/null +++ b/src/Wallabag/ImportBundle/Consumer/AMQPEntryConsumer.php | |||
@@ -0,0 +1,17 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Consumer; | ||
4 | |||
5 | use OldSound\RabbitMqBundle\RabbitMq\ConsumerInterface; | ||
6 | use PhpAmqpLib\Message\AMQPMessage; | ||
7 | |||
8 | class AMQPEntryConsumer extends AbstractConsumer implements ConsumerInterface | ||
9 | { | ||
10 | /** | ||
11 | * {@inheritdoc} | ||
12 | */ | ||
13 | public function execute(AMQPMessage $msg) | ||
14 | { | ||
15 | return $this->handleMessage($msg->body); | ||
16 | } | ||
17 | } | ||
diff --git a/src/Wallabag/ImportBundle/Consumer/AbstractConsumer.php b/src/Wallabag/ImportBundle/Consumer/AbstractConsumer.php new file mode 100644 index 00000000..2b85ad76 --- /dev/null +++ b/src/Wallabag/ImportBundle/Consumer/AbstractConsumer.php | |||
@@ -0,0 +1,74 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Consumer; | ||
4 | |||
5 | use Doctrine\ORM\EntityManager; | ||
6 | use Wallabag\ImportBundle\Import\AbstractImport; | ||
7 | use Wallabag\UserBundle\Repository\UserRepository; | ||
8 | use Wallabag\CoreBundle\Entity\Entry; | ||
9 | use Wallabag\CoreBundle\Entity\Tag; | ||
10 | use Psr\Log\LoggerInterface; | ||
11 | use Psr\Log\NullLogger; | ||
12 | |||
13 | abstract class AbstractConsumer | ||
14 | { | ||
15 | protected $em; | ||
16 | protected $userRepository; | ||
17 | protected $import; | ||
18 | protected $logger; | ||
19 | |||
20 | public function __construct(EntityManager $em, UserRepository $userRepository, AbstractImport $import, LoggerInterface $logger = null) | ||
21 | { | ||
22 | $this->em = $em; | ||
23 | $this->userRepository = $userRepository; | ||
24 | $this->import = $import; | ||
25 | $this->logger = $logger ?: new NullLogger(); | ||
26 | } | ||
27 | |||
28 | /** | ||
29 | * Handle a message and save it. | ||
30 | * | ||
31 | * @param string $body Message from the queue (in json) | ||
32 | * | ||
33 | * @return bool | ||
34 | */ | ||
35 | protected function handleMessage($body) | ||
36 | { | ||
37 | $storedEntry = json_decode($body, true); | ||
38 | |||
39 | $user = $this->userRepository->find($storedEntry['userId']); | ||
40 | |||
41 | // no user? Drop message | ||
42 | if (null === $user) { | ||
43 | $this->logger->warning('Unable to retrieve user', ['entry' => $storedEntry]); | ||
44 | |||
45 | return false; | ||
46 | } | ||
47 | |||
48 | $this->import->setUser($user); | ||
49 | |||
50 | $entry = $this->import->parseEntry($storedEntry); | ||
51 | |||
52 | if (null === $entry) { | ||
53 | $this->logger->warning('Unable to parse entry', ['entry' => $storedEntry]); | ||
54 | |||
55 | return false; | ||
56 | } | ||
57 | |||
58 | try { | ||
59 | $this->em->flush(); | ||
60 | |||
61 | // clear only affected entities | ||
62 | $this->em->clear(Entry::class); | ||
63 | $this->em->clear(Tag::class); | ||
64 | } catch (\Exception $e) { | ||
65 | $this->logger->warning('Unable to save entry', ['entry' => $storedEntry, 'exception' => $e]); | ||
66 | |||
67 | return false; | ||
68 | } | ||
69 | |||
70 | $this->logger->info('Content with url imported! ('.$entry->getUrl().')'); | ||
71 | |||
72 | return true; | ||
73 | } | ||
74 | } | ||
diff --git a/src/Wallabag/ImportBundle/Consumer/RedisEntryConsumer.php b/src/Wallabag/ImportBundle/Consumer/RedisEntryConsumer.php new file mode 100644 index 00000000..450b71ff --- /dev/null +++ b/src/Wallabag/ImportBundle/Consumer/RedisEntryConsumer.php | |||
@@ -0,0 +1,29 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Consumer; | ||
4 | |||
5 | use Simpleue\Job\Job; | ||
6 | |||
7 | class RedisEntryConsumer extends AbstractConsumer implements Job | ||
8 | { | ||
9 | /** | ||
10 | * Handle one message by one message. | ||
11 | * | ||
12 | * @param string $job Content of the message (directly from Redis) | ||
13 | * | ||
14 | * @return bool | ||
15 | */ | ||
16 | public function manage($job) | ||
17 | { | ||
18 | return $this->handleMessage($job); | ||
19 | } | ||
20 | |||
21 | /** | ||
22 | * Should tell if the given job will kill the worker. | ||
23 | * We don't want to stop it :). | ||
24 | */ | ||
25 | public function isStopJob($job) | ||
26 | { | ||
27 | return false; | ||
28 | } | ||
29 | } | ||
diff --git a/src/Wallabag/ImportBundle/Controller/BrowserController.php b/src/Wallabag/ImportBundle/Controller/BrowserController.php new file mode 100644 index 00000000..144a4880 --- /dev/null +++ b/src/Wallabag/ImportBundle/Controller/BrowserController.php | |||
@@ -0,0 +1,90 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Controller; | ||
4 | |||
5 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; | ||
6 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | ||
7 | use Symfony\Component\HttpFoundation\Request; | ||
8 | use Symfony\Component\HttpFoundation\Response; | ||
9 | use Wallabag\ImportBundle\Form\Type\UploadImportType; | ||
10 | |||
11 | abstract class BrowserController extends Controller | ||
12 | { | ||
13 | /** | ||
14 | * Return the service to handle the import. | ||
15 | * | ||
16 | * @return \Wallabag\ImportBundle\Import\ImportInterface | ||
17 | */ | ||
18 | abstract protected function getImportService(); | ||
19 | |||
20 | /** | ||
21 | * Return the template used for the form. | ||
22 | * | ||
23 | * @return string | ||
24 | */ | ||
25 | abstract protected function getImportTemplate(); | ||
26 | |||
27 | /** | ||
28 | * @Route("/browser", name="import_browser") | ||
29 | * | ||
30 | * @param Request $request | ||
31 | * | ||
32 | * @return Response | ||
33 | */ | ||
34 | public function indexAction(Request $request) | ||
35 | { | ||
36 | $form = $this->createForm(UploadImportType::class); | ||
37 | $form->handleRequest($request); | ||
38 | |||
39 | $wallabag = $this->getImportService(); | ||
40 | $wallabag->setUser($this->getUser()); | ||
41 | |||
42 | if ($form->isValid()) { | ||
43 | $file = $form->get('file')->getData(); | ||
44 | $markAsRead = $form->get('mark_as_read')->getData(); | ||
45 | $name = $this->getUser()->getId().'.json'; | ||
46 | |||
47 | if (null !== $file && in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes')) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { | ||
48 | $res = $wallabag | ||
49 | ->setFilepath($this->getParameter('wallabag_import.resource_dir').'/'.$name) | ||
50 | ->setMarkAsRead($markAsRead) | ||
51 | ->import(); | ||
52 | |||
53 | $message = 'flashes.import.notice.failed'; | ||
54 | |||
55 | if (true === $res) { | ||
56 | $summary = $wallabag->getSummary(); | ||
57 | $message = $this->get('translator')->trans('flashes.import.notice.summary', [ | ||
58 | '%imported%' => $summary['imported'], | ||
59 | '%skipped%' => $summary['skipped'], | ||
60 | ]); | ||
61 | |||
62 | if (0 < $summary['queued']) { | ||
63 | $message = $this->get('translator')->trans('flashes.import.notice.summary_with_queue', [ | ||
64 | '%queued%' => $summary['queued'], | ||
65 | ]); | ||
66 | } | ||
67 | |||
68 | unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name); | ||
69 | } | ||
70 | |||
71 | $this->get('session')->getFlashBag()->add( | ||
72 | 'notice', | ||
73 | $message | ||
74 | ); | ||
75 | |||
76 | return $this->redirect($this->generateUrl('homepage')); | ||
77 | } else { | ||
78 | $this->get('session')->getFlashBag()->add( | ||
79 | 'notice', | ||
80 | 'flashes.import.notice.failed_on_file' | ||
81 | ); | ||
82 | } | ||
83 | } | ||
84 | |||
85 | return $this->render($this->getImportTemplate(), [ | ||
86 | 'form' => $form->createView(), | ||
87 | 'import' => $wallabag, | ||
88 | ]); | ||
89 | } | ||
90 | } | ||
diff --git a/src/Wallabag/ImportBundle/Controller/ChromeController.php b/src/Wallabag/ImportBundle/Controller/ChromeController.php new file mode 100644 index 00000000..454f3347 --- /dev/null +++ b/src/Wallabag/ImportBundle/Controller/ChromeController.php | |||
@@ -0,0 +1,41 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Controller; | ||
4 | |||
5 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | ||
6 | use Symfony\Component\HttpFoundation\Request; | ||
7 | |||
8 | class ChromeController extends BrowserController | ||
9 | { | ||
10 | /** | ||
11 | * {@inheritdoc} | ||
12 | */ | ||
13 | protected function getImportService() | ||
14 | { | ||
15 | $service = $this->get('wallabag_import.chrome.import'); | ||
16 | |||
17 | if ($this->get('craue_config')->get('import_with_rabbitmq')) { | ||
18 | $service->setProducer($this->get('old_sound_rabbit_mq.import_chrome_producer')); | ||
19 | } elseif ($this->get('craue_config')->get('import_with_redis')) { | ||
20 | $service->setProducer($this->get('wallabag_import.producer.redis.chrome')); | ||
21 | } | ||
22 | |||
23 | return $service; | ||
24 | } | ||
25 | |||
26 | /** | ||
27 | * {@inheritdoc} | ||
28 | */ | ||
29 | protected function getImportTemplate() | ||
30 | { | ||
31 | return 'WallabagImportBundle:Chrome:index.html.twig'; | ||
32 | } | ||
33 | |||
34 | /** | ||
35 | * @Route("/chrome", name="import_chrome") | ||
36 | */ | ||
37 | public function indexAction(Request $request) | ||
38 | { | ||
39 | return parent::indexAction($request); | ||
40 | } | ||
41 | } | ||
diff --git a/src/Wallabag/ImportBundle/Controller/FirefoxController.php b/src/Wallabag/ImportBundle/Controller/FirefoxController.php new file mode 100644 index 00000000..c329b9c4 --- /dev/null +++ b/src/Wallabag/ImportBundle/Controller/FirefoxController.php | |||
@@ -0,0 +1,41 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Controller; | ||
4 | |||
5 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | ||
6 | use Symfony\Component\HttpFoundation\Request; | ||
7 | |||
8 | class FirefoxController extends BrowserController | ||
9 | { | ||
10 | /** | ||
11 | * {@inheritdoc} | ||
12 | */ | ||
13 | protected function getImportService() | ||
14 | { | ||
15 | $service = $this->get('wallabag_import.firefox.import'); | ||
16 | |||
17 | if ($this->get('craue_config')->get('import_with_rabbitmq')) { | ||
18 | $service->setProducer($this->get('old_sound_rabbit_mq.import_firefox_producer')); | ||
19 | } elseif ($this->get('craue_config')->get('import_with_redis')) { | ||
20 | $service->setProducer($this->get('wallabag_import.producer.redis.firefox')); | ||
21 | } | ||
22 | |||
23 | return $service; | ||
24 | } | ||
25 | |||
26 | /** | ||
27 | * {@inheritdoc} | ||
28 | */ | ||
29 | protected function getImportTemplate() | ||
30 | { | ||
31 | return 'WallabagImportBundle:Firefox:index.html.twig'; | ||
32 | } | ||
33 | |||
34 | /** | ||
35 | * @Route("/firefox", name="import_firefox") | ||
36 | */ | ||
37 | public function indexAction(Request $request) | ||
38 | { | ||
39 | return parent::indexAction($request); | ||
40 | } | ||
41 | } | ||
diff --git a/src/Wallabag/ImportBundle/Controller/ImportController.php b/src/Wallabag/ImportBundle/Controller/ImportController.php index c1486e38..15de75ff 100644 --- a/src/Wallabag/ImportBundle/Controller/ImportController.php +++ b/src/Wallabag/ImportBundle/Controller/ImportController.php | |||
@@ -16,4 +16,82 @@ class ImportController extends Controller | |||
16 | 'imports' => $this->get('wallabag_import.chain')->getAll(), | 16 | 'imports' => $this->get('wallabag_import.chain')->getAll(), |
17 | ]); | 17 | ]); |
18 | } | 18 | } |
19 | |||
20 | /** | ||
21 | * Display how many messages are queue (both in Redis and RabbitMQ). | ||
22 | * Only for admins. | ||
23 | */ | ||
24 | public function checkQueueAction() | ||
25 | { | ||
26 | $nbRedisMessages = null; | ||
27 | $nbRabbitMessages = null; | ||
28 | $redisNotInstalled = false; | ||
29 | $rabbitNotInstalled = false; | ||
30 | |||
31 | if (!$this->get('security.authorization_checker')->isGranted('ROLE_SUPER_ADMIN')) { | ||
32 | return $this->render('WallabagImportBundle:Import:check_queue.html.twig'); | ||
33 | } | ||
34 | |||
35 | if ($this->get('craue_config')->get('import_with_rabbitmq')) { | ||
36 | // in case rabbit is activated but not installed | ||
37 | try { | ||
38 | $nbRabbitMessages = $this->getTotalMessageInRabbitQueue('pocket') | ||
39 | + $this->getTotalMessageInRabbitQueue('readability') | ||
40 | + $this->getTotalMessageInRabbitQueue('wallabag_v1') | ||
41 | + $this->getTotalMessageInRabbitQueue('wallabag_v2') | ||
42 | + $this->getTotalMessageInRabbitQueue('firefox') | ||
43 | + $this->getTotalMessageInRabbitQueue('chrome') | ||
44 | + $this->getTotalMessageInRabbitQueue('instapaper') | ||
45 | ; | ||
46 | } catch (\Exception $e) { | ||
47 | $rabbitNotInstalled = true; | ||
48 | } | ||
49 | } elseif ($this->get('craue_config')->get('import_with_redis')) { | ||
50 | $redis = $this->get('wallabag_core.redis.client'); | ||
51 | |||
52 | try { | ||
53 | $nbRedisMessages = $redis->llen('wallabag.import.pocket') | ||
54 | + $redis->llen('wallabag.import.readability') | ||
55 | + $redis->llen('wallabag.import.wallabag_v1') | ||
56 | + $redis->llen('wallabag.import.wallabag_v2') | ||
57 | + $redis->llen('wallabag.import.firefox') | ||
58 | + $redis->llen('wallabag.import.chrome') | ||
59 | + $redis->llen('wallabag.import.instapaper') | ||
60 | ; | ||
61 | } catch (\Exception $e) { | ||
62 | $redisNotInstalled = true; | ||
63 | } | ||
64 | } | ||
65 | |||
66 | return $this->render('WallabagImportBundle:Import:check_queue.html.twig', [ | ||
67 | 'nbRedisMessages' => $nbRedisMessages, | ||
68 | 'nbRabbitMessages' => $nbRabbitMessages, | ||
69 | 'redisNotInstalled' => $redisNotInstalled, | ||
70 | 'rabbitNotInstalled' => $rabbitNotInstalled, | ||
71 | ]); | ||
72 | } | ||
73 | |||
74 | /** | ||
75 | * Count message in RabbitMQ queue. | ||
76 | * It get one message without acking it (so it'll stay in the queue) | ||
77 | * which will include the total of *other* messages in the queue. | ||
78 | * Adding one to that messages will result in the full total message. | ||
79 | * | ||
80 | * @param string $importService The import service related: pocket, readability, wallabag_v1 or wallabag_v2 | ||
81 | * | ||
82 | * @return int | ||
83 | */ | ||
84 | private function getTotalMessageInRabbitQueue($importService) | ||
85 | { | ||
86 | $message = $this | ||
87 | ->get('old_sound_rabbit_mq.import_'.$importService.'_consumer') | ||
88 | ->getChannel() | ||
89 | ->basic_get('wallabag.import.'.$importService); | ||
90 | |||
91 | if (null === $message) { | ||
92 | return 0; | ||
93 | } | ||
94 | |||
95 | return $message->delivery_info['message_count'] + 1; | ||
96 | } | ||
19 | } | 97 | } |
diff --git a/src/Wallabag/ImportBundle/Controller/InstapaperController.php b/src/Wallabag/ImportBundle/Controller/InstapaperController.php new file mode 100644 index 00000000..c3fc8a39 --- /dev/null +++ b/src/Wallabag/ImportBundle/Controller/InstapaperController.php | |||
@@ -0,0 +1,77 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Controller; | ||
4 | |||
5 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; | ||
6 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | ||
7 | use Symfony\Component\HttpFoundation\Request; | ||
8 | use Wallabag\ImportBundle\Form\Type\UploadImportType; | ||
9 | |||
10 | class InstapaperController extends Controller | ||
11 | { | ||
12 | /** | ||
13 | * @Route("/instapaper", name="import_instapaper") | ||
14 | */ | ||
15 | public function indexAction(Request $request) | ||
16 | { | ||
17 | $form = $this->createForm(UploadImportType::class); | ||
18 | $form->handleRequest($request); | ||
19 | |||
20 | $instapaper = $this->get('wallabag_import.instapaper.import'); | ||
21 | $instapaper->setUser($this->getUser()); | ||
22 | |||
23 | if ($this->get('craue_config')->get('import_with_rabbitmq')) { | ||
24 | $instapaper->setProducer($this->get('old_sound_rabbit_mq.import_instapaper_producer')); | ||
25 | } elseif ($this->get('craue_config')->get('import_with_redis')) { | ||
26 | $instapaper->setProducer($this->get('wallabag_import.producer.redis.instapaper')); | ||
27 | } | ||
28 | |||
29 | if ($form->isValid()) { | ||
30 | $file = $form->get('file')->getData(); | ||
31 | $markAsRead = $form->get('mark_as_read')->getData(); | ||
32 | $name = 'instapaper_'.$this->getUser()->getId().'.csv'; | ||
33 | |||
34 | if (null !== $file && in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes')) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { | ||
35 | $res = $instapaper | ||
36 | ->setFilepath($this->getParameter('wallabag_import.resource_dir').'/'.$name) | ||
37 | ->setMarkAsRead($markAsRead) | ||
38 | ->import(); | ||
39 | |||
40 | $message = 'flashes.import.notice.failed'; | ||
41 | |||
42 | if (true === $res) { | ||
43 | $summary = $instapaper->getSummary(); | ||
44 | $message = $this->get('translator')->trans('flashes.import.notice.summary', [ | ||
45 | '%imported%' => $summary['imported'], | ||
46 | '%skipped%' => $summary['skipped'], | ||
47 | ]); | ||
48 | |||
49 | if (0 < $summary['queued']) { | ||
50 | $message = $this->get('translator')->trans('flashes.import.notice.summary_with_queue', [ | ||
51 | '%queued%' => $summary['queued'], | ||
52 | ]); | ||
53 | } | ||
54 | |||
55 | unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name); | ||
56 | } | ||
57 | |||
58 | $this->get('session')->getFlashBag()->add( | ||
59 | 'notice', | ||
60 | $message | ||
61 | ); | ||
62 | |||
63 | return $this->redirect($this->generateUrl('homepage')); | ||
64 | } else { | ||
65 | $this->get('session')->getFlashBag()->add( | ||
66 | 'notice', | ||
67 | 'flashes.import.notice.failed_on_file' | ||
68 | ); | ||
69 | } | ||
70 | } | ||
71 | |||
72 | return $this->render('WallabagImportBundle:Instapaper:index.html.twig', [ | ||
73 | 'form' => $form->createView(), | ||
74 | 'import' => $instapaper, | ||
75 | ]); | ||
76 | } | ||
77 | } | ||
diff --git a/src/Wallabag/ImportBundle/Controller/PocketController.php b/src/Wallabag/ImportBundle/Controller/PocketController.php index 36ee25bf..56be5cbf 100644 --- a/src/Wallabag/ImportBundle/Controller/PocketController.php +++ b/src/Wallabag/ImportBundle/Controller/PocketController.php | |||
@@ -11,11 +11,30 @@ use Symfony\Component\Form\Extension\Core\Type\CheckboxType; | |||
11 | class PocketController extends Controller | 11 | class PocketController extends Controller |
12 | { | 12 | { |
13 | /** | 13 | /** |
14 | * Return Pocket Import Service with or without RabbitMQ enabled. | ||
15 | * | ||
16 | * @return \Wallabag\ImportBundle\Import\PocketImport | ||
17 | */ | ||
18 | private function getPocketImportService() | ||
19 | { | ||
20 | $pocket = $this->get('wallabag_import.pocket.import'); | ||
21 | $pocket->setUser($this->getUser()); | ||
22 | |||
23 | if ($this->get('craue_config')->get('import_with_rabbitmq')) { | ||
24 | $pocket->setProducer($this->get('old_sound_rabbit_mq.import_pocket_producer')); | ||
25 | } elseif ($this->get('craue_config')->get('import_with_redis')) { | ||
26 | $pocket->setProducer($this->get('wallabag_import.producer.redis.pocket')); | ||
27 | } | ||
28 | |||
29 | return $pocket; | ||
30 | } | ||
31 | |||
32 | /** | ||
14 | * @Route("/pocket", name="import_pocket") | 33 | * @Route("/pocket", name="import_pocket") |
15 | */ | 34 | */ |
16 | public function indexAction() | 35 | public function indexAction() |
17 | { | 36 | { |
18 | $pocket = $this->get('wallabag_import.pocket.import'); | 37 | $pocket = $this->getPocketImportService(); |
19 | $form = $this->createFormBuilder($pocket) | 38 | $form = $this->createFormBuilder($pocket) |
20 | ->add('mark_as_read', CheckboxType::class, [ | 39 | ->add('mark_as_read', CheckboxType::class, [ |
21 | 'label' => 'import.form.mark_as_read_label', | 40 | 'label' => 'import.form.mark_as_read_label', |
@@ -24,8 +43,8 @@ class PocketController extends Controller | |||
24 | ->getForm(); | 43 | ->getForm(); |
25 | 44 | ||
26 | return $this->render('WallabagImportBundle:Pocket:index.html.twig', [ | 45 | return $this->render('WallabagImportBundle:Pocket:index.html.twig', [ |
27 | 'import' => $this->get('wallabag_import.pocket.import'), | 46 | 'import' => $this->getPocketImportService(), |
28 | 'has_consumer_key' => '' == trim($this->get('craue_config')->get('pocket_consumer_key')) ? false : true, | 47 | 'has_consumer_key' => '' === trim($this->getUser()->getConfig()->getPocketConsumerKey()) ? false : true, |
29 | 'form' => $form->createView(), | 48 | 'form' => $form->createView(), |
30 | ]); | 49 | ]); |
31 | } | 50 | } |
@@ -35,7 +54,7 @@ class PocketController extends Controller | |||
35 | */ | 54 | */ |
36 | public function authAction(Request $request) | 55 | public function authAction(Request $request) |
37 | { | 56 | { |
38 | $requestToken = $this->get('wallabag_import.pocket.import') | 57 | $requestToken = $this->getPocketImportService() |
39 | ->getRequestToken($this->generateUrl('import', [], UrlGeneratorInterface::ABSOLUTE_URL)); | 58 | ->getRequestToken($this->generateUrl('import', [], UrlGeneratorInterface::ABSOLUTE_URL)); |
40 | 59 | ||
41 | if (false === $requestToken) { | 60 | if (false === $requestToken) { |
@@ -62,7 +81,7 @@ class PocketController extends Controller | |||
62 | public function callbackAction() | 81 | public function callbackAction() |
63 | { | 82 | { |
64 | $message = 'flashes.import.notice.failed'; | 83 | $message = 'flashes.import.notice.failed'; |
65 | $pocket = $this->get('wallabag_import.pocket.import'); | 84 | $pocket = $this->getPocketImportService(); |
66 | 85 | ||
67 | $markAsRead = $this->get('session')->get('mark_as_read'); | 86 | $markAsRead = $this->get('session')->get('mark_as_read'); |
68 | $this->get('session')->remove('mark_as_read'); | 87 | $this->get('session')->remove('mark_as_read'); |
@@ -83,6 +102,12 @@ class PocketController extends Controller | |||
83 | '%imported%' => $summary['imported'], | 102 | '%imported%' => $summary['imported'], |
84 | '%skipped%' => $summary['skipped'], | 103 | '%skipped%' => $summary['skipped'], |
85 | ]); | 104 | ]); |
105 | |||
106 | if (0 < $summary['queued']) { | ||
107 | $message = $this->get('translator')->trans('flashes.import.notice.summary_with_queue', [ | ||
108 | '%queued%' => $summary['queued'], | ||
109 | ]); | ||
110 | } | ||
86 | } | 111 | } |
87 | 112 | ||
88 | $this->get('session')->getFlashBag()->add( | 113 | $this->get('session')->getFlashBag()->add( |
diff --git a/src/Wallabag/ImportBundle/Controller/ReadabilityController.php b/src/Wallabag/ImportBundle/Controller/ReadabilityController.php new file mode 100644 index 00000000..d00e22c2 --- /dev/null +++ b/src/Wallabag/ImportBundle/Controller/ReadabilityController.php | |||
@@ -0,0 +1,77 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Controller; | ||
4 | |||
5 | use Symfony\Bundle\FrameworkBundle\Controller\Controller; | ||
6 | use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; | ||
7 | use Symfony\Component\HttpFoundation\Request; | ||
8 | use Wallabag\ImportBundle\Form\Type\UploadImportType; | ||
9 | |||
10 | class ReadabilityController extends Controller | ||
11 | { | ||
12 | /** | ||
13 | * @Route("/readability", name="import_readability") | ||
14 | */ | ||
15 | public function indexAction(Request $request) | ||
16 | { | ||
17 | $form = $this->createForm(UploadImportType::class); | ||
18 | $form->handleRequest($request); | ||
19 | |||
20 | $readability = $this->get('wallabag_import.readability.import'); | ||
21 | $readability->setUser($this->getUser()); | ||
22 | |||
23 | if ($this->get('craue_config')->get('import_with_rabbitmq')) { | ||
24 | $readability->setProducer($this->get('old_sound_rabbit_mq.import_readability_producer')); | ||
25 | } elseif ($this->get('craue_config')->get('import_with_redis')) { | ||
26 | $readability->setProducer($this->get('wallabag_import.producer.redis.readability')); | ||
27 | } | ||
28 | |||
29 | if ($form->isValid()) { | ||
30 | $file = $form->get('file')->getData(); | ||
31 | $markAsRead = $form->get('mark_as_read')->getData(); | ||
32 | $name = 'readability_'.$this->getUser()->getId().'.json'; | ||
33 | |||
34 | if (null !== $file && in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes')) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { | ||
35 | $res = $readability | ||
36 | ->setFilepath($this->getParameter('wallabag_import.resource_dir').'/'.$name) | ||
37 | ->setMarkAsRead($markAsRead) | ||
38 | ->import(); | ||
39 | |||
40 | $message = 'flashes.import.notice.failed'; | ||
41 | |||
42 | if (true === $res) { | ||
43 | $summary = $readability->getSummary(); | ||
44 | $message = $this->get('translator')->trans('flashes.import.notice.summary', [ | ||
45 | '%imported%' => $summary['imported'], | ||
46 | '%skipped%' => $summary['skipped'], | ||
47 | ]); | ||
48 | |||
49 | if (0 < $summary['queued']) { | ||
50 | $message = $this->get('translator')->trans('flashes.import.notice.summary_with_queue', [ | ||
51 | '%queued%' => $summary['queued'], | ||
52 | ]); | ||
53 | } | ||
54 | |||
55 | unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name); | ||
56 | } | ||
57 | |||
58 | $this->get('session')->getFlashBag()->add( | ||
59 | 'notice', | ||
60 | $message | ||
61 | ); | ||
62 | |||
63 | return $this->redirect($this->generateUrl('homepage')); | ||
64 | } else { | ||
65 | $this->get('session')->getFlashBag()->add( | ||
66 | 'notice', | ||
67 | 'flashes.import.notice.failed_on_file' | ||
68 | ); | ||
69 | } | ||
70 | } | ||
71 | |||
72 | return $this->render('WallabagImportBundle:Readability:index.html.twig', [ | ||
73 | 'form' => $form->createView(), | ||
74 | 'import' => $readability, | ||
75 | ]); | ||
76 | } | ||
77 | } | ||
diff --git a/src/Wallabag/ImportBundle/Controller/WallabagController.php b/src/Wallabag/ImportBundle/Controller/WallabagController.php index 76ced0d2..9c0cde80 100644 --- a/src/Wallabag/ImportBundle/Controller/WallabagController.php +++ b/src/Wallabag/ImportBundle/Controller/WallabagController.php | |||
@@ -38,15 +38,15 @@ abstract class WallabagController extends Controller | |||
38 | $form->handleRequest($request); | 38 | $form->handleRequest($request); |
39 | 39 | ||
40 | $wallabag = $this->getImportService(); | 40 | $wallabag = $this->getImportService(); |
41 | $wallabag->setUser($this->getUser()); | ||
41 | 42 | ||
42 | if ($form->isValid()) { | 43 | if ($form->isValid()) { |
43 | $file = $form->get('file')->getData(); | 44 | $file = $form->get('file')->getData(); |
44 | $markAsRead = $form->get('mark_as_read')->getData(); | 45 | $markAsRead = $form->get('mark_as_read')->getData(); |
45 | $name = $this->getUser()->getId().'.json'; | 46 | $name = $this->getUser()->getId().'.json'; |
46 | 47 | ||
47 | if (in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes')) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { | 48 | if (null !== $file && in_array($file->getClientMimeType(), $this->getParameter('wallabag_import.allow_mimetypes')) && $file->move($this->getParameter('wallabag_import.resource_dir'), $name)) { |
48 | $res = $wallabag | 49 | $res = $wallabag |
49 | ->setUser($this->getUser()) | ||
50 | ->setFilepath($this->getParameter('wallabag_import.resource_dir').'/'.$name) | 50 | ->setFilepath($this->getParameter('wallabag_import.resource_dir').'/'.$name) |
51 | ->setMarkAsRead($markAsRead) | 51 | ->setMarkAsRead($markAsRead) |
52 | ->import(); | 52 | ->import(); |
@@ -60,6 +60,12 @@ abstract class WallabagController extends Controller | |||
60 | '%skipped%' => $summary['skipped'], | 60 | '%skipped%' => $summary['skipped'], |
61 | ]); | 61 | ]); |
62 | 62 | ||
63 | if (0 < $summary['queued']) { | ||
64 | $message = $this->get('translator')->trans('flashes.import.notice.summary_with_queue', [ | ||
65 | '%queued%' => $summary['queued'], | ||
66 | ]); | ||
67 | } | ||
68 | |||
63 | unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name); | 69 | unlink($this->getParameter('wallabag_import.resource_dir').'/'.$name); |
64 | } | 70 | } |
65 | 71 | ||
diff --git a/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php b/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php index 3e748d57..312c7a35 100644 --- a/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php +++ b/src/Wallabag/ImportBundle/Controller/WallabagV1Controller.php | |||
@@ -12,7 +12,15 @@ class WallabagV1Controller extends WallabagController | |||
12 | */ | 12 | */ |
13 | protected function getImportService() | 13 | protected function getImportService() |
14 | { | 14 | { |
15 | return $this->get('wallabag_import.wallabag_v1.import'); | 15 | $service = $this->get('wallabag_import.wallabag_v1.import'); |
16 | |||
17 | if ($this->get('craue_config')->get('import_with_rabbitmq')) { | ||
18 | $service->setProducer($this->get('old_sound_rabbit_mq.import_wallabag_v1_producer')); | ||
19 | } elseif ($this->get('craue_config')->get('import_with_redis')) { | ||
20 | $service->setProducer($this->get('wallabag_import.producer.redis.wallabag_v1')); | ||
21 | } | ||
22 | |||
23 | return $service; | ||
16 | } | 24 | } |
17 | 25 | ||
18 | /** | 26 | /** |
diff --git a/src/Wallabag/ImportBundle/Controller/WallabagV2Controller.php b/src/Wallabag/ImportBundle/Controller/WallabagV2Controller.php index c2a42165..45211fe6 100644 --- a/src/Wallabag/ImportBundle/Controller/WallabagV2Controller.php +++ b/src/Wallabag/ImportBundle/Controller/WallabagV2Controller.php | |||
@@ -12,7 +12,15 @@ class WallabagV2Controller extends WallabagController | |||
12 | */ | 12 | */ |
13 | protected function getImportService() | 13 | protected function getImportService() |
14 | { | 14 | { |
15 | return $this->get('wallabag_import.wallabag_v2.import'); | 15 | $service = $this->get('wallabag_import.wallabag_v2.import'); |
16 | |||
17 | if ($this->get('craue_config')->get('import_with_rabbitmq')) { | ||
18 | $service->setProducer($this->get('old_sound_rabbit_mq.import_wallabag_v2_producer')); | ||
19 | } elseif ($this->get('craue_config')->get('import_with_redis')) { | ||
20 | $service->setProducer($this->get('wallabag_import.producer.redis.wallabag_v2')); | ||
21 | } | ||
22 | |||
23 | return $service; | ||
16 | } | 24 | } |
17 | 25 | ||
18 | /** | 26 | /** |
diff --git a/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php b/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php index 92a167d9..f50424c1 100644 --- a/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php +++ b/src/Wallabag/ImportBundle/Form/Type/UploadImportType.php | |||
@@ -15,6 +15,7 @@ class UploadImportType extends AbstractType | |||
15 | $builder | 15 | $builder |
16 | ->add('file', FileType::class, [ | 16 | ->add('file', FileType::class, [ |
17 | 'label' => 'import.form.file_label', | 17 | 'label' => 'import.form.file_label', |
18 | 'required' => true, | ||
18 | ]) | 19 | ]) |
19 | ->add('mark_as_read', CheckboxType::class, [ | 20 | ->add('mark_as_read', CheckboxType::class, [ |
20 | 'label' => 'import.form.mark_as_read_label', | 21 | 'label' => 'import.form.mark_as_read_label', |
diff --git a/src/Wallabag/ImportBundle/Import/AbstractImport.php b/src/Wallabag/ImportBundle/Import/AbstractImport.php index 14377a35..764b390a 100644 --- a/src/Wallabag/ImportBundle/Import/AbstractImport.php +++ b/src/Wallabag/ImportBundle/Import/AbstractImport.php | |||
@@ -7,12 +7,21 @@ use Psr\Log\NullLogger; | |||
7 | use Doctrine\ORM\EntityManager; | 7 | use Doctrine\ORM\EntityManager; |
8 | use Wallabag\CoreBundle\Helper\ContentProxy; | 8 | use Wallabag\CoreBundle\Helper\ContentProxy; |
9 | use Wallabag\CoreBundle\Entity\Entry; | 9 | use Wallabag\CoreBundle\Entity\Entry; |
10 | use Wallabag\CoreBundle\Entity\Tag; | ||
11 | use Wallabag\UserBundle\Entity\User; | ||
12 | use OldSound\RabbitMqBundle\RabbitMq\ProducerInterface; | ||
10 | 13 | ||
11 | abstract class AbstractImport implements ImportInterface | 14 | abstract class AbstractImport implements ImportInterface |
12 | { | 15 | { |
13 | protected $em; | 16 | protected $em; |
14 | protected $logger; | 17 | protected $logger; |
15 | protected $contentProxy; | 18 | protected $contentProxy; |
19 | protected $producer; | ||
20 | protected $user; | ||
21 | protected $markAsRead; | ||
22 | protected $skippedEntries = 0; | ||
23 | protected $importedEntries = 0; | ||
24 | protected $queuedEntries = 0; | ||
16 | 25 | ||
17 | public function __construct(EntityManager $em, ContentProxy $contentProxy) | 26 | public function __construct(EntityManager $em, ContentProxy $contentProxy) |
18 | { | 27 | { |
@@ -27,21 +36,154 @@ abstract class AbstractImport implements ImportInterface | |||
27 | } | 36 | } |
28 | 37 | ||
29 | /** | 38 | /** |
39 | * Set RabbitMQ/Redis Producer to send each entry to a queue. | ||
40 | * This method should be called when user has enabled RabbitMQ. | ||
41 | * | ||
42 | * @param ProducerInterface $producer | ||
43 | */ | ||
44 | public function setProducer(ProducerInterface $producer) | ||
45 | { | ||
46 | $this->producer = $producer; | ||
47 | } | ||
48 | |||
49 | /** | ||
50 | * Set current user. | ||
51 | * Could the current *connected* user or one retrieve by the consumer. | ||
52 | * | ||
53 | * @param User $user | ||
54 | */ | ||
55 | public function setUser(User $user) | ||
56 | { | ||
57 | $this->user = $user; | ||
58 | } | ||
59 | |||
60 | /** | ||
61 | * Set whether articles must be all marked as read. | ||
62 | * | ||
63 | * @param bool $markAsRead | ||
64 | */ | ||
65 | public function setMarkAsRead($markAsRead) | ||
66 | { | ||
67 | $this->markAsRead = $markAsRead; | ||
68 | |||
69 | return $this; | ||
70 | } | ||
71 | |||
72 | /** | ||
73 | * Get whether articles must be all marked as read. | ||
74 | */ | ||
75 | public function getMarkAsRead() | ||
76 | { | ||
77 | return $this->markAsRead; | ||
78 | } | ||
79 | |||
80 | /** | ||
30 | * Fetch content from the ContentProxy (using graby). | 81 | * Fetch content from the ContentProxy (using graby). |
31 | * If it fails return false instead of the updated entry. | 82 | * If it fails return the given entry to be saved in all case (to avoid user to loose the content). |
32 | * | 83 | * |
33 | * @param Entry $entry Entry to update | 84 | * @param Entry $entry Entry to update |
34 | * @param string $url Url to grab content for | 85 | * @param string $url Url to grab content for |
35 | * @param array $content An array with AT LEAST keys title, html, url, language & content_type to skip the fetchContent from the url | 86 | * @param array $content An array with AT LEAST keys title, html, url, language & content_type to skip the fetchContent from the url |
36 | * | 87 | * |
37 | * @return Entry|false | 88 | * @return Entry |
38 | */ | 89 | */ |
39 | protected function fetchContent(Entry $entry, $url, array $content = []) | 90 | protected function fetchContent(Entry $entry, $url, array $content = []) |
40 | { | 91 | { |
41 | try { | 92 | try { |
42 | return $this->contentProxy->updateEntry($entry, $url, $content); | 93 | return $this->contentProxy->updateEntry($entry, $url, $content); |
43 | } catch (\Exception $e) { | 94 | } catch (\Exception $e) { |
44 | return false; | 95 | return $entry; |
45 | } | 96 | } |
46 | } | 97 | } |
98 | |||
99 | /** | ||
100 | * Parse and insert all given entries. | ||
101 | * | ||
102 | * @param $entries | ||
103 | */ | ||
104 | protected function parseEntries($entries) | ||
105 | { | ||
106 | $i = 1; | ||
107 | |||
108 | foreach ($entries as $importedEntry) { | ||
109 | if ($this->markAsRead) { | ||
110 | $importedEntry = $this->setEntryAsRead($importedEntry); | ||
111 | } | ||
112 | |||
113 | $entry = $this->parseEntry($importedEntry); | ||
114 | |||
115 | if (null === $entry) { | ||
116 | continue; | ||
117 | } | ||
118 | |||
119 | // flush every 20 entries | ||
120 | if (($i % 20) === 0) { | ||
121 | $this->em->flush(); | ||
122 | |||
123 | // clear only affected entities | ||
124 | $this->em->clear(Entry::class); | ||
125 | $this->em->clear(Tag::class); | ||
126 | } | ||
127 | ++$i; | ||
128 | } | ||
129 | |||
130 | $this->em->flush(); | ||
131 | } | ||
132 | |||
133 | /** | ||
134 | * Parse entries and send them to the queue. | ||
135 | * It should just be a simple loop on all item, no call to the database should be done | ||
136 | * to speedup queuing. | ||
137 | * | ||
138 | * Faster parse entries for Producer. | ||
139 | * We don't care to make check at this time. They'll be done by the consumer. | ||
140 | * | ||
141 | * @param array $entries | ||
142 | */ | ||
143 | protected function parseEntriesForProducer(array $entries) | ||
144 | { | ||
145 | foreach ($entries as $importedEntry) { | ||
146 | // set userId for the producer (it won't know which user is connected) | ||
147 | $importedEntry['userId'] = $this->user->getId(); | ||
148 | |||
149 | if ($this->markAsRead) { | ||
150 | $importedEntry = $this->setEntryAsRead($importedEntry); | ||
151 | } | ||
152 | |||
153 | ++$this->queuedEntries; | ||
154 | |||
155 | $this->producer->publish(json_encode($importedEntry)); | ||
156 | } | ||
157 | } | ||
158 | |||
159 | /** | ||
160 | * {@inheritdoc} | ||
161 | */ | ||
162 | public function getSummary() | ||
163 | { | ||
164 | return [ | ||
165 | 'skipped' => $this->skippedEntries, | ||
166 | 'imported' => $this->importedEntries, | ||
167 | 'queued' => $this->queuedEntries, | ||
168 | ]; | ||
169 | } | ||
170 | |||
171 | /** | ||
172 | * Parse one entry. | ||
173 | * | ||
174 | * @param array $importedEntry | ||
175 | * | ||
176 | * @return Entry | ||
177 | */ | ||
178 | abstract public function parseEntry(array $importedEntry); | ||
179 | |||
180 | /** | ||
181 | * Set current imported entry to archived / read. | ||
182 | * Implementation is different accross all imports. | ||
183 | * | ||
184 | * @param array $importedEntry | ||
185 | * | ||
186 | * @return array | ||
187 | */ | ||
188 | abstract protected function setEntryAsRead(array $importedEntry); | ||
47 | } | 189 | } |
diff --git a/src/Wallabag/ImportBundle/Import/BrowserImport.php b/src/Wallabag/ImportBundle/Import/BrowserImport.php new file mode 100644 index 00000000..9d75685b --- /dev/null +++ b/src/Wallabag/ImportBundle/Import/BrowserImport.php | |||
@@ -0,0 +1,207 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Import; | ||
4 | |||
5 | use Wallabag\CoreBundle\Entity\Entry; | ||
6 | use Wallabag\UserBundle\Entity\User; | ||
7 | use Wallabag\CoreBundle\Helper\ContentProxy; | ||
8 | |||
9 | abstract class BrowserImport extends AbstractImport | ||
10 | { | ||
11 | protected $filepath; | ||
12 | |||
13 | /** | ||
14 | * {@inheritdoc} | ||
15 | */ | ||
16 | abstract public function getName(); | ||
17 | |||
18 | /** | ||
19 | * {@inheritdoc} | ||
20 | */ | ||
21 | abstract public function getUrl(); | ||
22 | |||
23 | /** | ||
24 | * {@inheritdoc} | ||
25 | */ | ||
26 | abstract public function getDescription(); | ||
27 | |||
28 | /** | ||
29 | * {@inheritdoc} | ||
30 | */ | ||
31 | public function import() | ||
32 | { | ||
33 | if (!$this->user) { | ||
34 | $this->logger->error('Wallabag Browser Import: user is not defined'); | ||
35 | |||
36 | return false; | ||
37 | } | ||
38 | |||
39 | if (!file_exists($this->filepath) || !is_readable($this->filepath)) { | ||
40 | $this->logger->error('Wallabag Browser Import: unable to read file', ['filepath' => $this->filepath]); | ||
41 | |||
42 | return false; | ||
43 | } | ||
44 | |||
45 | $data = json_decode(file_get_contents($this->filepath), true); | ||
46 | |||
47 | if (empty($data)) { | ||
48 | $this->logger->error('Wallabag Browser: no entries in imported file'); | ||
49 | |||
50 | return false; | ||
51 | } | ||
52 | |||
53 | if ($this->producer) { | ||
54 | $this->parseEntriesForProducer($data); | ||
55 | |||
56 | return true; | ||
57 | } | ||
58 | |||
59 | $this->parseEntries($data); | ||
60 | |||
61 | return true; | ||
62 | } | ||
63 | |||
64 | /** | ||
65 | * Set file path to the json file. | ||
66 | * | ||
67 | * @param string $filepath | ||
68 | */ | ||
69 | public function setFilepath($filepath) | ||
70 | { | ||
71 | $this->filepath = $filepath; | ||
72 | |||
73 | return $this; | ||
74 | } | ||
75 | |||
76 | /** | ||
77 | * Parse and insert all given entries. | ||
78 | * | ||
79 | * @param $entries | ||
80 | */ | ||
81 | protected function parseEntries($entries) | ||
82 | { | ||
83 | $i = 1; | ||
84 | |||
85 | foreach ($entries as $importedEntry) { | ||
86 | if ((array) $importedEntry !== $importedEntry) { | ||
87 | continue; | ||
88 | } | ||
89 | |||
90 | $entry = $this->parseEntry($importedEntry); | ||
91 | |||
92 | if (null === $entry) { | ||
93 | continue; | ||
94 | } | ||
95 | |||
96 | // flush every 20 entries | ||
97 | if (($i % 20) === 0) { | ||
98 | $this->em->flush(); | ||
99 | } | ||
100 | ++$i; | ||
101 | } | ||
102 | |||
103 | $this->em->flush(); | ||
104 | } | ||
105 | |||
106 | /** | ||
107 | * Parse entries and send them to the queue. | ||
108 | * It should just be a simple loop on all item, no call to the database should be done | ||
109 | * to speedup queuing. | ||
110 | * | ||
111 | * Faster parse entries for Producer. | ||
112 | * We don't care to make check at this time. They'll be done by the consumer. | ||
113 | * | ||
114 | * @param array $entries | ||
115 | */ | ||
116 | protected function parseEntriesForProducer(array $entries) | ||
117 | { | ||
118 | foreach ($entries as $importedEntry) { | ||
119 | if ((array) $importedEntry !== $importedEntry) { | ||
120 | continue; | ||
121 | } | ||
122 | |||
123 | // set userId for the producer (it won't know which user is connected) | ||
124 | $importedEntry['userId'] = $this->user->getId(); | ||
125 | |||
126 | if ($this->markAsRead) { | ||
127 | $importedEntry = $this->setEntryAsRead($importedEntry); | ||
128 | } | ||
129 | |||
130 | ++$this->queuedEntries; | ||
131 | |||
132 | $this->producer->publish(json_encode($importedEntry)); | ||
133 | } | ||
134 | } | ||
135 | |||
136 | /** | ||
137 | * {@inheritdoc} | ||
138 | */ | ||
139 | public function parseEntry(array $importedEntry) | ||
140 | { | ||
141 | if ((!array_key_exists('guid', $importedEntry) || (!array_key_exists('id', $importedEntry))) && is_array(reset($importedEntry))) { | ||
142 | $this->parseEntries($importedEntry); | ||
143 | |||
144 | return; | ||
145 | } | ||
146 | |||
147 | if (array_key_exists('children', $importedEntry)) { | ||
148 | $this->parseEntries($importedEntry['children']); | ||
149 | |||
150 | return; | ||
151 | } | ||
152 | |||
153 | if (!array_key_exists('uri', $importedEntry) && !array_key_exists('url', $importedEntry)) { | ||
154 | return; | ||
155 | } | ||
156 | |||
157 | $url = array_key_exists('uri', $importedEntry) ? $importedEntry['uri'] : $importedEntry['url']; | ||
158 | |||
159 | $existingEntry = $this->em | ||
160 | ->getRepository('WallabagCoreBundle:Entry') | ||
161 | ->findByUrlAndUserId($url, $this->user->getId()); | ||
162 | |||
163 | if (false !== $existingEntry) { | ||
164 | ++$this->skippedEntries; | ||
165 | |||
166 | return; | ||
167 | } | ||
168 | |||
169 | $data = $this->prepareEntry($importedEntry); | ||
170 | |||
171 | $entry = new Entry($this->user); | ||
172 | $entry->setUrl($data['url']); | ||
173 | $entry->setTitle($data['title']); | ||
174 | |||
175 | // update entry with content (in case fetching failed, the given entry will be return) | ||
176 | $entry = $this->fetchContent($entry, $data['url'], $data); | ||
177 | |||
178 | if (array_key_exists('tags', $data)) { | ||
179 | $this->contentProxy->assignTagsToEntry( | ||
180 | $entry, | ||
181 | $data['tags'] | ||
182 | ); | ||
183 | } | ||
184 | |||
185 | $entry->setArchived($data['is_archived']); | ||
186 | |||
187 | if (!empty($data['created_at'])) { | ||
188 | $dt = new \DateTime(); | ||
189 | $entry->setCreatedAt($dt->setTimestamp($data['created_at'])); | ||
190 | } | ||
191 | |||
192 | $this->em->persist($entry); | ||
193 | ++$this->importedEntries; | ||
194 | |||
195 | return $entry; | ||
196 | } | ||
197 | |||
198 | /** | ||
199 | * {@inheritdoc} | ||
200 | */ | ||
201 | protected function setEntryAsRead(array $importedEntry) | ||
202 | { | ||
203 | $importedEntry['is_archived'] = 1; | ||
204 | |||
205 | return $importedEntry; | ||
206 | } | ||
207 | } | ||
diff --git a/src/Wallabag/ImportBundle/Import/ChromeImport.php b/src/Wallabag/ImportBundle/Import/ChromeImport.php new file mode 100644 index 00000000..d7620bcb --- /dev/null +++ b/src/Wallabag/ImportBundle/Import/ChromeImport.php | |||
@@ -0,0 +1,53 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Import; | ||
4 | |||
5 | class ChromeImport extends BrowserImport | ||
6 | { | ||
7 | protected $filepath; | ||
8 | |||
9 | /** | ||
10 | * {@inheritdoc} | ||
11 | */ | ||
12 | public function getName() | ||
13 | { | ||
14 | return 'Chrome'; | ||
15 | } | ||
16 | |||
17 | /** | ||
18 | * {@inheritdoc} | ||
19 | */ | ||
20 | public function getUrl() | ||
21 | { | ||
22 | return 'import_chrome'; | ||
23 | } | ||
24 | |||
25 | /** | ||
26 | * {@inheritdoc} | ||
27 | */ | ||
28 | public function getDescription() | ||
29 | { | ||
30 | return 'import.chrome.description'; | ||
31 | } | ||
32 | |||
33 | /** | ||
34 | * {@inheritdoc} | ||
35 | */ | ||
36 | protected function prepareEntry(array $entry = []) | ||
37 | { | ||
38 | $data = [ | ||
39 | 'title' => $entry['name'], | ||
40 | 'html' => '', | ||
41 | 'url' => $entry['url'], | ||
42 | 'is_archived' => $this->markAsRead, | ||
43 | 'tags' => '', | ||
44 | 'created_at' => substr($entry['date_added'], 0, 10), | ||
45 | ]; | ||
46 | |||
47 | if (array_key_exists('tags', $entry) && $entry['tags'] != '') { | ||
48 | $data['tags'] = $entry['tags']; | ||
49 | } | ||
50 | |||
51 | return $data; | ||
52 | } | ||
53 | } | ||
diff --git a/src/Wallabag/ImportBundle/Import/FirefoxImport.php b/src/Wallabag/ImportBundle/Import/FirefoxImport.php new file mode 100644 index 00000000..e010f5a4 --- /dev/null +++ b/src/Wallabag/ImportBundle/Import/FirefoxImport.php | |||
@@ -0,0 +1,53 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Import; | ||
4 | |||
5 | class FirefoxImport extends BrowserImport | ||
6 | { | ||
7 | protected $filepath; | ||
8 | |||
9 | /** | ||
10 | * {@inheritdoc} | ||
11 | */ | ||
12 | public function getName() | ||
13 | { | ||
14 | return 'Firefox'; | ||
15 | } | ||
16 | |||
17 | /** | ||
18 | * {@inheritdoc} | ||
19 | */ | ||
20 | public function getUrl() | ||
21 | { | ||
22 | return 'import_firefox'; | ||
23 | } | ||
24 | |||
25 | /** | ||
26 | * {@inheritdoc} | ||
27 | */ | ||
28 | public function getDescription() | ||
29 | { | ||
30 | return 'import.firefox.description'; | ||
31 | } | ||
32 | |||
33 | /** | ||
34 | * {@inheritdoc} | ||
35 | */ | ||
36 | protected function prepareEntry(array $entry = []) | ||
37 | { | ||
38 | $data = [ | ||
39 | 'title' => $entry['title'], | ||
40 | 'html' => '', | ||
41 | 'url' => $entry['uri'], | ||
42 | 'is_archived' => $this->markAsRead, | ||
43 | 'tags' => '', | ||
44 | 'created_at' => substr($entry['dateAdded'], 0, 10), | ||
45 | ]; | ||
46 | |||
47 | if (array_key_exists('tags', $entry) && $entry['tags'] != '') { | ||
48 | $data['tags'] = $entry['tags']; | ||
49 | } | ||
50 | |||
51 | return $data; | ||
52 | } | ||
53 | } | ||
diff --git a/src/Wallabag/ImportBundle/Import/InstapaperImport.php b/src/Wallabag/ImportBundle/Import/InstapaperImport.php new file mode 100644 index 00000000..cf4c785c --- /dev/null +++ b/src/Wallabag/ImportBundle/Import/InstapaperImport.php | |||
@@ -0,0 +1,140 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Import; | ||
4 | |||
5 | use Wallabag\CoreBundle\Entity\Entry; | ||
6 | |||
7 | class InstapaperImport extends AbstractImport | ||
8 | { | ||
9 | private $filepath; | ||
10 | |||
11 | /** | ||
12 | * {@inheritdoc} | ||
13 | */ | ||
14 | public function getName() | ||
15 | { | ||
16 | return 'Instapaper'; | ||
17 | } | ||
18 | |||
19 | /** | ||
20 | * {@inheritdoc} | ||
21 | */ | ||
22 | public function getUrl() | ||
23 | { | ||
24 | return 'import_instapaper'; | ||
25 | } | ||
26 | |||
27 | /** | ||
28 | * {@inheritdoc} | ||
29 | */ | ||
30 | public function getDescription() | ||
31 | { | ||
32 | return 'import.instapaper.description'; | ||
33 | } | ||
34 | |||
35 | /** | ||
36 | * Set file path to the json file. | ||
37 | * | ||
38 | * @param string $filepath | ||
39 | */ | ||
40 | public function setFilepath($filepath) | ||
41 | { | ||
42 | $this->filepath = $filepath; | ||
43 | |||
44 | return $this; | ||
45 | } | ||
46 | |||
47 | /** | ||
48 | * {@inheritdoc} | ||
49 | */ | ||
50 | public function import() | ||
51 | { | ||
52 | if (!$this->user) { | ||
53 | $this->logger->error('InstapaperImport: user is not defined'); | ||
54 | |||
55 | return false; | ||
56 | } | ||
57 | |||
58 | if (!file_exists($this->filepath) || !is_readable($this->filepath)) { | ||
59 | $this->logger->error('InstapaperImport: unable to read file', ['filepath' => $this->filepath]); | ||
60 | |||
61 | return false; | ||
62 | } | ||
63 | |||
64 | $entries = []; | ||
65 | $handle = fopen($this->filepath, 'r'); | ||
66 | while (($data = fgetcsv($handle, 10240)) !== false) { | ||
67 | if ('URL' === $data[0]) { | ||
68 | continue; | ||
69 | } | ||
70 | |||
71 | $entries[] = [ | ||
72 | 'url' => $data[0], | ||
73 | 'title' => $data[1], | ||
74 | 'status' => $data[3], | ||
75 | 'is_archived' => $data[3] === 'Archive' || $data[3] === 'Starred', | ||
76 | 'is_starred' => $data[3] === 'Starred', | ||
77 | 'content_type' => '', | ||
78 | 'language' => '', | ||
79 | ]; | ||
80 | } | ||
81 | fclose($handle); | ||
82 | |||
83 | if (empty($entries)) { | ||
84 | $this->logger->error('InstapaperImport: no entries in imported file'); | ||
85 | |||
86 | return false; | ||
87 | } | ||
88 | |||
89 | if ($this->producer) { | ||
90 | $this->parseEntriesForProducer($entries); | ||
91 | |||
92 | return true; | ||
93 | } | ||
94 | |||
95 | $this->parseEntries($entries); | ||
96 | |||
97 | return true; | ||
98 | } | ||
99 | |||
100 | /** | ||
101 | * {@inheritdoc} | ||
102 | */ | ||
103 | public function parseEntry(array $importedEntry) | ||
104 | { | ||
105 | $existingEntry = $this->em | ||
106 | ->getRepository('WallabagCoreBundle:Entry') | ||
107 | ->findByUrlAndUserId($importedEntry['url'], $this->user->getId()); | ||
108 | |||
109 | if (false !== $existingEntry) { | ||
110 | ++$this->skippedEntries; | ||
111 | |||
112 | return; | ||
113 | } | ||
114 | |||
115 | $entry = new Entry($this->user); | ||
116 | $entry->setUrl($importedEntry['url']); | ||
117 | $entry->setTitle($importedEntry['title']); | ||
118 | |||
119 | // update entry with content (in case fetching failed, the given entry will be return) | ||
120 | $entry = $this->fetchContent($entry, $importedEntry['url'], $importedEntry); | ||
121 | |||
122 | $entry->setArchived($importedEntry['is_archived']); | ||
123 | $entry->setStarred($importedEntry['is_starred']); | ||
124 | |||
125 | $this->em->persist($entry); | ||
126 | ++$this->importedEntries; | ||
127 | |||
128 | return $entry; | ||
129 | } | ||
130 | |||
131 | /** | ||
132 | * {@inheritdoc} | ||
133 | */ | ||
134 | protected function setEntryAsRead(array $importedEntry) | ||
135 | { | ||
136 | $importedEntry['is_archived'] = 1; | ||
137 | |||
138 | return $importedEntry; | ||
139 | } | ||
140 | } | ||
diff --git a/src/Wallabag/ImportBundle/Import/PocketImport.php b/src/Wallabag/ImportBundle/Import/PocketImport.php index 798cfdae..327e2500 100644 --- a/src/Wallabag/ImportBundle/Import/PocketImport.php +++ b/src/Wallabag/ImportBundle/Import/PocketImport.php | |||
@@ -6,31 +6,34 @@ use Psr\Log\NullLogger; | |||
6 | use Doctrine\ORM\EntityManager; | 6 | use Doctrine\ORM\EntityManager; |
7 | use GuzzleHttp\Client; | 7 | use GuzzleHttp\Client; |
8 | use GuzzleHttp\Exception\RequestException; | 8 | use GuzzleHttp\Exception\RequestException; |
9 | use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; | ||
10 | use Wallabag\CoreBundle\Entity\Entry; | 9 | use Wallabag\CoreBundle\Entity\Entry; |
11 | use Wallabag\CoreBundle\Helper\ContentProxy; | 10 | use Wallabag\CoreBundle\Helper\ContentProxy; |
12 | use Craue\ConfigBundle\Util\Config; | ||
13 | 11 | ||
14 | class PocketImport extends AbstractImport | 12 | class PocketImport extends AbstractImport |
15 | { | 13 | { |
16 | private $user; | ||
17 | private $client; | 14 | private $client; |
18 | private $consumerKey; | 15 | private $accessToken; |
19 | private $skippedEntries = 0; | ||
20 | private $importedEntries = 0; | ||
21 | private $markAsRead; | ||
22 | protected $accessToken; | ||
23 | 16 | ||
24 | public function __construct(TokenStorageInterface $tokenStorage, EntityManager $em, ContentProxy $contentProxy, Config $craueConfig) | 17 | const NB_ELEMENTS = 5000; |
18 | |||
19 | public function __construct(EntityManager $em, ContentProxy $contentProxy) | ||
25 | { | 20 | { |
26 | $this->user = $tokenStorage->getToken()->getUser(); | ||
27 | $this->em = $em; | 21 | $this->em = $em; |
28 | $this->contentProxy = $contentProxy; | 22 | $this->contentProxy = $contentProxy; |
29 | $this->consumerKey = $craueConfig->get('pocket_consumer_key'); | ||
30 | $this->logger = new NullLogger(); | 23 | $this->logger = new NullLogger(); |
31 | } | 24 | } |
32 | 25 | ||
33 | /** | 26 | /** |
27 | * Only used for test purpose. | ||
28 | * | ||
29 | * @return string | ||
30 | */ | ||
31 | public function getAccessToken() | ||
32 | { | ||
33 | return $this->accessToken; | ||
34 | } | ||
35 | |||
36 | /** | ||
34 | * {@inheritdoc} | 37 | * {@inheritdoc} |
35 | */ | 38 | */ |
36 | public function getName() | 39 | public function getName() |
@@ -66,7 +69,7 @@ class PocketImport extends AbstractImport | |||
66 | $request = $this->client->createRequest('POST', 'https://getpocket.com/v3/oauth/request', | 69 | $request = $this->client->createRequest('POST', 'https://getpocket.com/v3/oauth/request', |
67 | [ | 70 | [ |
68 | 'body' => json_encode([ | 71 | 'body' => json_encode([ |
69 | 'consumer_key' => $this->consumerKey, | 72 | 'consumer_key' => $this->user->getConfig()->getPocketConsumerKey(), |
70 | 'redirect_uri' => $redirectUri, | 73 | 'redirect_uri' => $redirectUri, |
71 | ]), | 74 | ]), |
72 | ] | 75 | ] |
@@ -96,7 +99,7 @@ class PocketImport extends AbstractImport | |||
96 | $request = $this->client->createRequest('POST', 'https://getpocket.com/v3/oauth/authorize', | 99 | $request = $this->client->createRequest('POST', 'https://getpocket.com/v3/oauth/authorize', |
97 | [ | 100 | [ |
98 | 'body' => json_encode([ | 101 | 'body' => json_encode([ |
99 | 'consumer_key' => $this->consumerKey, | 102 | 'consumer_key' => $this->user->getConfig()->getPocketConsumerKey(), |
100 | 'code' => $code, | 103 | 'code' => $code, |
101 | ]), | 104 | ]), |
102 | ] | 105 | ] |
@@ -116,38 +119,22 @@ class PocketImport extends AbstractImport | |||
116 | } | 119 | } |
117 | 120 | ||
118 | /** | 121 | /** |
119 | * Set whether articles must be all marked as read. | ||
120 | * | ||
121 | * @param bool $markAsRead | ||
122 | */ | ||
123 | public function setMarkAsRead($markAsRead) | ||
124 | { | ||
125 | $this->markAsRead = $markAsRead; | ||
126 | |||
127 | return $this; | ||
128 | } | ||
129 | |||
130 | /** | ||
131 | * Get whether articles must be all marked as read. | ||
132 | */ | ||
133 | public function getMarkAsRead() | ||
134 | { | ||
135 | return $this->markAsRead; | ||
136 | } | ||
137 | |||
138 | /** | ||
139 | * {@inheritdoc} | 122 | * {@inheritdoc} |
140 | */ | 123 | */ |
141 | public function import() | 124 | public function import($offset = 0) |
142 | { | 125 | { |
126 | static $run = 0; | ||
127 | |||
143 | $request = $this->client->createRequest('POST', 'https://getpocket.com/v3/get', | 128 | $request = $this->client->createRequest('POST', 'https://getpocket.com/v3/get', |
144 | [ | 129 | [ |
145 | 'body' => json_encode([ | 130 | 'body' => json_encode([ |
146 | 'consumer_key' => $this->consumerKey, | 131 | 'consumer_key' => $this->user->getConfig()->getPocketConsumerKey(), |
147 | 'access_token' => $this->accessToken, | 132 | 'access_token' => $this->accessToken, |
148 | 'detailType' => 'complete', | 133 | 'detailType' => 'complete', |
149 | 'state' => 'all', | 134 | 'state' => 'all', |
150 | 'sort' => 'oldest', | 135 | 'sort' => 'newest', |
136 | 'count' => self::NB_ELEMENTS, | ||
137 | 'offset' => $offset, | ||
151 | ]), | 138 | ]), |
152 | ] | 139 | ] |
153 | ); | 140 | ); |
@@ -162,20 +149,24 @@ class PocketImport extends AbstractImport | |||
162 | 149 | ||
163 | $entries = $response->json(); | 150 | $entries = $response->json(); |
164 | 151 | ||
165 | $this->parseEntries($entries['list']); | 152 | if ($this->producer) { |
153 | $this->parseEntriesForProducer($entries['list']); | ||
154 | } else { | ||
155 | $this->parseEntries($entries['list']); | ||
156 | } | ||
166 | 157 | ||
167 | return true; | 158 | // if we retrieve exactly the amount of items requested it means we can get more |
168 | } | 159 | // re-call import and offset item by the amount previous received: |
160 | // - first call get 5k offset 0 | ||
161 | // - second call get 5k offset 5k | ||
162 | // - and so on | ||
163 | if (count($entries['list']) === self::NB_ELEMENTS) { | ||
164 | ++$run; | ||
169 | 165 | ||
170 | /** | 166 | return $this->import(self::NB_ELEMENTS * $run); |
171 | * {@inheritdoc} | 167 | } |
172 | */ | 168 | |
173 | public function getSummary() | 169 | return true; |
174 | { | ||
175 | return [ | ||
176 | 'skipped' => $this->skippedEntries, | ||
177 | 'imported' => $this->importedEntries, | ||
178 | ]; | ||
179 | } | 170 | } |
180 | 171 | ||
181 | /** | 172 | /** |
@@ -189,77 +180,75 @@ class PocketImport extends AbstractImport | |||
189 | } | 180 | } |
190 | 181 | ||
191 | /** | 182 | /** |
192 | * @see https://getpocket.com/developer/docs/v3/retrieve | 183 | * {@inheritdoc} |
193 | * | 184 | * |
194 | * @param $entries | 185 | * @see https://getpocket.com/developer/docs/v3/retrieve |
195 | */ | 186 | */ |
196 | private function parseEntries($entries) | 187 | public function parseEntry(array $importedEntry) |
197 | { | 188 | { |
198 | $i = 1; | 189 | $url = isset($importedEntry['resolved_url']) && $importedEntry['resolved_url'] != '' ? $importedEntry['resolved_url'] : $importedEntry['given_url']; |
199 | 190 | ||
200 | foreach ($entries as $pocketEntry) { | 191 | $existingEntry = $this->em |
201 | $url = isset($pocketEntry['resolved_url']) && $pocketEntry['resolved_url'] != '' ? $pocketEntry['resolved_url'] : $pocketEntry['given_url']; | 192 | ->getRepository('WallabagCoreBundle:Entry') |
202 | 193 | ->findByUrlAndUserId($url, $this->user->getId()); | |
203 | $existingEntry = $this->em | 194 | |
204 | ->getRepository('WallabagCoreBundle:Entry') | 195 | if (false !== $existingEntry) { |
205 | ->findByUrlAndUserId($url, $this->user->getId()); | 196 | ++$this->skippedEntries; |
206 | 197 | ||
207 | if (false !== $existingEntry) { | 198 | return; |
208 | ++$this->skippedEntries; | 199 | } |
209 | continue; | 200 | |
210 | } | 201 | $entry = new Entry($this->user); |
211 | 202 | $entry->setUrl($url); | |
212 | $entry = new Entry($this->user); | 203 | |
213 | $entry = $this->fetchContent($entry, $url); | 204 | // update entry with content (in case fetching failed, the given entry will be return) |
214 | 205 | $entry = $this->fetchContent($entry, $url); | |
215 | // jump to next entry in case of problem while getting content | 206 | |
216 | if (false === $entry) { | 207 | // 0, 1, 2 - 1 if the item is archived - 2 if the item should be deleted |
217 | ++$this->skippedEntries; | 208 | $entry->setArchived($importedEntry['status'] == 1 || $this->markAsRead); |
218 | continue; | 209 | |
219 | } | 210 | // 0 or 1 - 1 If the item is starred |
220 | 211 | $entry->setStarred($importedEntry['favorite'] == 1); | |
221 | // 0, 1, 2 - 1 if the item is archived - 2 if the item should be deleted | 212 | |
222 | if ($pocketEntry['status'] == 1 || $this->markAsRead) { | 213 | $title = 'Untitled'; |
223 | $entry->setArchived(true); | 214 | if (isset($importedEntry['resolved_title']) && $importedEntry['resolved_title'] != '') { |
224 | } | 215 | $title = $importedEntry['resolved_title']; |
225 | 216 | } elseif (isset($importedEntry['given_title']) && $importedEntry['given_title'] != '') { | |
226 | // 0 or 1 - 1 If the item is starred | 217 | $title = $importedEntry['given_title']; |
227 | if ($pocketEntry['favorite'] == 1) { | 218 | } |
228 | $entry->setStarred(true); | 219 | |
229 | } | 220 | $entry->setTitle($title); |
230 | 221 | ||
231 | $title = 'Untitled'; | 222 | // 0, 1, or 2 - 1 if the item has images in it - 2 if the item is an image |
232 | if (isset($pocketEntry['resolved_title']) && $pocketEntry['resolved_title'] != '') { | 223 | if (isset($importedEntry['has_image']) && $importedEntry['has_image'] > 0 && isset($importedEntry['images'][1])) { |
233 | $title = $pocketEntry['resolved_title']; | 224 | $entry->setPreviewPicture($importedEntry['images'][1]['src']); |
234 | } elseif (isset($pocketEntry['given_title']) && $pocketEntry['given_title'] != '') { | 225 | } |
235 | $title = $pocketEntry['given_title']; | 226 | |
236 | } | 227 | if (isset($importedEntry['tags']) && !empty($importedEntry['tags'])) { |
237 | 228 | $this->contentProxy->assignTagsToEntry( | |
238 | $entry->setTitle($title); | 229 | $entry, |
239 | 230 | array_keys($importedEntry['tags']), | |
240 | // 0, 1, or 2 - 1 if the item has images in it - 2 if the item is an image | 231 | $this->em->getUnitOfWork()->getScheduledEntityInsertions() |
241 | if (isset($pocketEntry['has_image']) && $pocketEntry['has_image'] > 0 && isset($pocketEntry['images'][1])) { | 232 | ); |
242 | $entry->setPreviewPicture($pocketEntry['images'][1]['src']); | ||
243 | } | ||
244 | |||
245 | if (isset($pocketEntry['tags']) && !empty($pocketEntry['tags'])) { | ||
246 | $this->contentProxy->assignTagsToEntry( | ||
247 | $entry, | ||
248 | array_keys($pocketEntry['tags']) | ||
249 | ); | ||
250 | } | ||
251 | |||
252 | $this->em->persist($entry); | ||
253 | ++$this->importedEntries; | ||
254 | |||
255 | // flush every 20 entries | ||
256 | if (($i % 20) === 0) { | ||
257 | $this->em->flush(); | ||
258 | $this->em->clear($entry); | ||
259 | } | ||
260 | ++$i; | ||
261 | } | 233 | } |
262 | 234 | ||
263 | $this->em->flush(); | 235 | if (!empty($importedEntry['time_added'])) { |
236 | $entry->setCreatedAt((new \DateTime())->setTimestamp($importedEntry['time_added'])); | ||
237 | } | ||
238 | |||
239 | $this->em->persist($entry); | ||
240 | ++$this->importedEntries; | ||
241 | |||
242 | return $entry; | ||
243 | } | ||
244 | |||
245 | /** | ||
246 | * {@inheritdoc} | ||
247 | */ | ||
248 | protected function setEntryAsRead(array $importedEntry) | ||
249 | { | ||
250 | $importedEntry['status'] = '1'; | ||
251 | |||
252 | return $importedEntry; | ||
264 | } | 253 | } |
265 | } | 254 | } |
diff --git a/src/Wallabag/ImportBundle/Import/ReadabilityImport.php b/src/Wallabag/ImportBundle/Import/ReadabilityImport.php new file mode 100644 index 00000000..b8c0f777 --- /dev/null +++ b/src/Wallabag/ImportBundle/Import/ReadabilityImport.php | |||
@@ -0,0 +1,134 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Import; | ||
4 | |||
5 | use Wallabag\CoreBundle\Entity\Entry; | ||
6 | |||
7 | class ReadabilityImport extends AbstractImport | ||
8 | { | ||
9 | private $filepath; | ||
10 | |||
11 | /** | ||
12 | * {@inheritdoc} | ||
13 | */ | ||
14 | public function getName() | ||
15 | { | ||
16 | return 'Readability'; | ||
17 | } | ||
18 | |||
19 | /** | ||
20 | * {@inheritdoc} | ||
21 | */ | ||
22 | public function getUrl() | ||
23 | { | ||
24 | return 'import_readability'; | ||
25 | } | ||
26 | |||
27 | /** | ||
28 | * {@inheritdoc} | ||
29 | */ | ||
30 | public function getDescription() | ||
31 | { | ||
32 | return 'import.readability.description'; | ||
33 | } | ||
34 | |||
35 | /** | ||
36 | * Set file path to the json file. | ||
37 | * | ||
38 | * @param string $filepath | ||
39 | */ | ||
40 | public function setFilepath($filepath) | ||
41 | { | ||
42 | $this->filepath = $filepath; | ||
43 | |||
44 | return $this; | ||
45 | } | ||
46 | |||
47 | /** | ||
48 | * {@inheritdoc} | ||
49 | */ | ||
50 | public function import() | ||
51 | { | ||
52 | if (!$this->user) { | ||
53 | $this->logger->error('ReadabilityImport: user is not defined'); | ||
54 | |||
55 | return false; | ||
56 | } | ||
57 | |||
58 | if (!file_exists($this->filepath) || !is_readable($this->filepath)) { | ||
59 | $this->logger->error('ReadabilityImport: unable to read file', ['filepath' => $this->filepath]); | ||
60 | |||
61 | return false; | ||
62 | } | ||
63 | |||
64 | $data = json_decode(file_get_contents($this->filepath), true); | ||
65 | |||
66 | if (empty($data) || empty($data['bookmarks'])) { | ||
67 | $this->logger->error('ReadabilityImport: no entries in imported file'); | ||
68 | |||
69 | return false; | ||
70 | } | ||
71 | |||
72 | if ($this->producer) { | ||
73 | $this->parseEntriesForProducer($data['bookmarks']); | ||
74 | |||
75 | return true; | ||
76 | } | ||
77 | |||
78 | $this->parseEntries($data['bookmarks']); | ||
79 | |||
80 | return true; | ||
81 | } | ||
82 | |||
83 | /** | ||
84 | * {@inheritdoc} | ||
85 | */ | ||
86 | public function parseEntry(array $importedEntry) | ||
87 | { | ||
88 | $existingEntry = $this->em | ||
89 | ->getRepository('WallabagCoreBundle:Entry') | ||
90 | ->findByUrlAndUserId($importedEntry['article__url'], $this->user->getId()); | ||
91 | |||
92 | if (false !== $existingEntry) { | ||
93 | ++$this->skippedEntries; | ||
94 | |||
95 | return; | ||
96 | } | ||
97 | |||
98 | $data = [ | ||
99 | 'title' => $importedEntry['article__title'], | ||
100 | 'url' => $importedEntry['article__url'], | ||
101 | 'content_type' => '', | ||
102 | 'language' => '', | ||
103 | 'is_archived' => $importedEntry['archive'] || $this->markAsRead, | ||
104 | 'is_starred' => $importedEntry['favorite'], | ||
105 | 'created_at' => $importedEntry['date_added'], | ||
106 | ]; | ||
107 | |||
108 | $entry = new Entry($this->user); | ||
109 | $entry->setUrl($data['url']); | ||
110 | $entry->setTitle($data['title']); | ||
111 | |||
112 | // update entry with content (in case fetching failed, the given entry will be return) | ||
113 | $entry = $this->fetchContent($entry, $data['url'], $data); | ||
114 | |||
115 | $entry->setArchived($data['is_archived']); | ||
116 | $entry->setStarred($data['is_starred']); | ||
117 | $entry->setCreatedAt(new \DateTime($data['created_at'])); | ||
118 | |||
119 | $this->em->persist($entry); | ||
120 | ++$this->importedEntries; | ||
121 | |||
122 | return $entry; | ||
123 | } | ||
124 | |||
125 | /** | ||
126 | * {@inheritdoc} | ||
127 | */ | ||
128 | protected function setEntryAsRead(array $importedEntry) | ||
129 | { | ||
130 | $importedEntry['archive'] = 1; | ||
131 | |||
132 | return $importedEntry; | ||
133 | } | ||
134 | } | ||
diff --git a/src/Wallabag/ImportBundle/Import/WallabagImport.php b/src/Wallabag/ImportBundle/Import/WallabagImport.php index a1cc085b..702da057 100644 --- a/src/Wallabag/ImportBundle/Import/WallabagImport.php +++ b/src/Wallabag/ImportBundle/Import/WallabagImport.php | |||
@@ -3,15 +3,10 @@ | |||
3 | namespace Wallabag\ImportBundle\Import; | 3 | namespace Wallabag\ImportBundle\Import; |
4 | 4 | ||
5 | use Wallabag\CoreBundle\Entity\Entry; | 5 | use Wallabag\CoreBundle\Entity\Entry; |
6 | use Wallabag\UserBundle\Entity\User; | ||
7 | 6 | ||
8 | abstract class WallabagImport extends AbstractImport | 7 | abstract class WallabagImport extends AbstractImport |
9 | { | 8 | { |
10 | protected $user; | ||
11 | protected $skippedEntries = 0; | ||
12 | protected $importedEntries = 0; | ||
13 | protected $filepath; | 9 | protected $filepath; |
14 | protected $markAsRead; | ||
15 | // untitled in all languages from v1 | 10 | // untitled in all languages from v1 |
16 | protected $untitled = [ | 11 | protected $untitled = [ |
17 | 'Untitled', | 12 | 'Untitled', |
@@ -29,19 +24,6 @@ abstract class WallabagImport extends AbstractImport | |||
29 | ]; | 24 | ]; |
30 | 25 | ||
31 | /** | 26 | /** |
32 | * We define the user in a custom call because on the import command there is no logged in user. | ||
33 | * So we can't retrieve user from the `security.token_storage` service. | ||
34 | * | ||
35 | * @param User $user | ||
36 | */ | ||
37 | public function setUser(User $user) | ||
38 | { | ||
39 | $this->user = $user; | ||
40 | |||
41 | return $this; | ||
42 | } | ||
43 | |||
44 | /** | ||
45 | * {@inheritdoc} | 27 | * {@inheritdoc} |
46 | */ | 28 | */ |
47 | abstract public function getName(); | 29 | abstract public function getName(); |
@@ -76,26 +58,23 @@ abstract class WallabagImport extends AbstractImport | |||
76 | $data = json_decode(file_get_contents($this->filepath), true); | 58 | $data = json_decode(file_get_contents($this->filepath), true); |
77 | 59 | ||
78 | if (empty($data)) { | 60 | if (empty($data)) { |
61 | $this->logger->error('WallabagImport: no entries in imported file'); | ||
62 | |||
79 | return false; | 63 | return false; |
80 | } | 64 | } |
81 | 65 | ||
66 | if ($this->producer) { | ||
67 | $this->parseEntriesForProducer($data); | ||
68 | |||
69 | return true; | ||
70 | } | ||
71 | |||
82 | $this->parseEntries($data); | 72 | $this->parseEntries($data); |
83 | 73 | ||
84 | return true; | 74 | return true; |
85 | } | 75 | } |
86 | 76 | ||
87 | /** | 77 | /** |
88 | * {@inheritdoc} | ||
89 | */ | ||
90 | public function getSummary() | ||
91 | { | ||
92 | return [ | ||
93 | 'skipped' => $this->skippedEntries, | ||
94 | 'imported' => $this->importedEntries, | ||
95 | ]; | ||
96 | } | ||
97 | |||
98 | /** | ||
99 | * Set file path to the json file. | 78 | * Set file path to the json file. |
100 | * | 79 | * |
101 | * @param string $filepath | 80 | * @param string $filepath |
@@ -108,85 +87,60 @@ abstract class WallabagImport extends AbstractImport | |||
108 | } | 87 | } |
109 | 88 | ||
110 | /** | 89 | /** |
111 | * Set whether articles must be all marked as read. | 90 | * {@inheritdoc} |
112 | * | ||
113 | * @param bool $markAsRead | ||
114 | */ | 91 | */ |
115 | public function setMarkAsRead($markAsRead) | 92 | public function parseEntry(array $importedEntry) |
116 | { | 93 | { |
117 | $this->markAsRead = $markAsRead; | 94 | $existingEntry = $this->em |
95 | ->getRepository('WallabagCoreBundle:Entry') | ||
96 | ->findByUrlAndUserId($importedEntry['url'], $this->user->getId()); | ||
118 | 97 | ||
119 | return $this; | 98 | if (false !== $existingEntry) { |
120 | } | 99 | ++$this->skippedEntries; |
121 | 100 | ||
122 | /** | 101 | return; |
123 | * Parse and insert all given entries. | 102 | } |
124 | * | ||
125 | * @param $entries | ||
126 | */ | ||
127 | protected function parseEntries($entries) | ||
128 | { | ||
129 | $i = 1; | ||
130 | 103 | ||
131 | foreach ($entries as $importedEntry) { | 104 | $data = $this->prepareEntry($importedEntry); |
132 | $existingEntry = $this->em | ||
133 | ->getRepository('WallabagCoreBundle:Entry') | ||
134 | ->findByUrlAndUserId($importedEntry['url'], $this->user->getId()); | ||
135 | 105 | ||
136 | if (false !== $existingEntry) { | 106 | $entry = new Entry($this->user); |
137 | ++$this->skippedEntries; | 107 | $entry->setUrl($data['url']); |
138 | continue; | 108 | $entry->setTitle($data['title']); |
139 | } | ||
140 | 109 | ||
141 | $data = $this->prepareEntry($importedEntry, $this->markAsRead); | 110 | // update entry with content (in case fetching failed, the given entry will be return) |
111 | $entry = $this->fetchContent($entry, $data['url'], $data); | ||
142 | 112 | ||
143 | $entry = $this->fetchContent( | 113 | if (array_key_exists('tags', $data)) { |
144 | new Entry($this->user), | 114 | $this->contentProxy->assignTagsToEntry( |
145 | $importedEntry['url'], | 115 | $entry, |
146 | $data | 116 | $data['tags'], |
117 | $this->em->getUnitOfWork()->getScheduledEntityInsertions() | ||
147 | ); | 118 | ); |
119 | } | ||
148 | 120 | ||
149 | // jump to next entry in case of problem while getting content | 121 | if (isset($importedEntry['preview_picture'])) { |
150 | if (false === $entry) { | 122 | $entry->setPreviewPicture($importedEntry['preview_picture']); |
151 | ++$this->skippedEntries; | ||
152 | continue; | ||
153 | } | ||
154 | |||
155 | if (array_key_exists('tags', $data)) { | ||
156 | $this->contentProxy->assignTagsToEntry( | ||
157 | $entry, | ||
158 | $data['tags'] | ||
159 | ); | ||
160 | } | ||
161 | |||
162 | if (isset($importedEntry['preview_picture'])) { | ||
163 | $entry->setPreviewPicture($importedEntry['preview_picture']); | ||
164 | } | ||
165 | |||
166 | $entry->setArchived($data['is_archived']); | ||
167 | $entry->setStarred($data['is_starred']); | ||
168 | |||
169 | $this->em->persist($entry); | ||
170 | ++$this->importedEntries; | ||
171 | |||
172 | // flush every 20 entries | ||
173 | if (($i % 20) === 0) { | ||
174 | $this->em->flush(); | ||
175 | $this->em->clear($entry); | ||
176 | } | ||
177 | ++$i; | ||
178 | } | 123 | } |
179 | 124 | ||
180 | $this->em->flush(); | 125 | $entry->setArchived($data['is_archived']); |
126 | $entry->setStarred($data['is_starred']); | ||
127 | |||
128 | if (!empty($data['created_at'])) { | ||
129 | $entry->setCreatedAt(new \DateTime($data['created_at'])); | ||
130 | } | ||
131 | |||
132 | $this->em->persist($entry); | ||
133 | ++$this->importedEntries; | ||
134 | |||
135 | return $entry; | ||
181 | } | 136 | } |
182 | 137 | ||
183 | /** | 138 | /** |
184 | * This should return a cleaned array for a given entry to be given to `updateEntry`. | 139 | * This should return a cleaned array for a given entry to be given to `updateEntry`. |
185 | * | 140 | * |
186 | * @param array $entry Data from the imported file | 141 | * @param array $entry Data from the imported file |
187 | * @param bool $markAsRead Should we mark as read content? | ||
188 | * | 142 | * |
189 | * @return array | 143 | * @return array |
190 | */ | 144 | */ |
191 | abstract protected function prepareEntry($entry = [], $markAsRead = false); | 145 | abstract protected function prepareEntry($entry = []); |
192 | } | 146 | } |
diff --git a/src/Wallabag/ImportBundle/Import/WallabagV1Import.php b/src/Wallabag/ImportBundle/Import/WallabagV1Import.php index 6cf3467a..4f001062 100644 --- a/src/Wallabag/ImportBundle/Import/WallabagV1Import.php +++ b/src/Wallabag/ImportBundle/Import/WallabagV1Import.php | |||
@@ -31,7 +31,7 @@ class WallabagV1Import extends WallabagImport | |||
31 | /** | 31 | /** |
32 | * {@inheritdoc} | 32 | * {@inheritdoc} |
33 | */ | 33 | */ |
34 | protected function prepareEntry($entry = [], $markAsRead = false) | 34 | protected function prepareEntry($entry = []) |
35 | { | 35 | { |
36 | $data = [ | 36 | $data = [ |
37 | 'title' => $entry['title'], | 37 | 'title' => $entry['title'], |
@@ -39,9 +39,10 @@ class WallabagV1Import extends WallabagImport | |||
39 | 'url' => $entry['url'], | 39 | 'url' => $entry['url'], |
40 | 'content_type' => '', | 40 | 'content_type' => '', |
41 | 'language' => '', | 41 | 'language' => '', |
42 | 'is_archived' => $entry['is_read'] || $markAsRead, | 42 | 'is_archived' => $entry['is_read'] || $this->markAsRead, |
43 | 'is_starred' => $entry['is_fav'], | 43 | 'is_starred' => $entry['is_fav'], |
44 | 'tags' => '', | 44 | 'tags' => '', |
45 | 'created_at' => '', | ||
45 | ]; | 46 | ]; |
46 | 47 | ||
47 | // force content to be refreshed in case on bad fetch in the v1 installation | 48 | // force content to be refreshed in case on bad fetch in the v1 installation |
@@ -56,4 +57,14 @@ class WallabagV1Import extends WallabagImport | |||
56 | 57 | ||
57 | return $data; | 58 | return $data; |
58 | } | 59 | } |
60 | |||
61 | /** | ||
62 | * {@inheritdoc} | ||
63 | */ | ||
64 | protected function setEntryAsRead(array $importedEntry) | ||
65 | { | ||
66 | $importedEntry['is_read'] = 1; | ||
67 | |||
68 | return $importedEntry; | ||
69 | } | ||
59 | } | 70 | } |
diff --git a/src/Wallabag/ImportBundle/Import/WallabagV2Import.php b/src/Wallabag/ImportBundle/Import/WallabagV2Import.php index d0035b63..37c8ca14 100644 --- a/src/Wallabag/ImportBundle/Import/WallabagV2Import.php +++ b/src/Wallabag/ImportBundle/Import/WallabagV2Import.php | |||
@@ -31,12 +31,22 @@ class WallabagV2Import extends WallabagImport | |||
31 | /** | 31 | /** |
32 | * {@inheritdoc} | 32 | * {@inheritdoc} |
33 | */ | 33 | */ |
34 | protected function prepareEntry($entry = [], $markAsRead = false) | 34 | protected function prepareEntry($entry = []) |
35 | { | 35 | { |
36 | return [ | 36 | return [ |
37 | 'html' => $entry['content'], | 37 | 'html' => $entry['content'], |
38 | 'content_type' => $entry['mimetype'], | 38 | 'content_type' => $entry['mimetype'], |
39 | 'is_archived' => ($entry['is_archived'] || $markAsRead), | 39 | 'is_archived' => ($entry['is_archived'] || $this->markAsRead), |
40 | ] + $entry; | 40 | ] + $entry; |
41 | } | 41 | } |
42 | |||
43 | /** | ||
44 | * {@inheritdoc} | ||
45 | */ | ||
46 | protected function setEntryAsRead(array $importedEntry) | ||
47 | { | ||
48 | $importedEntry['is_archived'] = 1; | ||
49 | |||
50 | return $importedEntry; | ||
51 | } | ||
42 | } | 52 | } |
diff --git a/src/Wallabag/ImportBundle/Redis/Producer.php b/src/Wallabag/ImportBundle/Redis/Producer.php new file mode 100644 index 00000000..fedc3e57 --- /dev/null +++ b/src/Wallabag/ImportBundle/Redis/Producer.php | |||
@@ -0,0 +1,36 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\ImportBundle\Redis; | ||
4 | |||
5 | use OldSound\RabbitMqBundle\RabbitMq\ProducerInterface; | ||
6 | use Simpleue\Queue\RedisQueue; | ||
7 | |||
8 | /** | ||
9 | * This is a proxy class for "Simpleue\Queue\RedisQueue". | ||
10 | * It allow us to use the same way to publish a message between RabbitMQ & Redis: publish(). | ||
11 | * | ||
12 | * It implements the ProducerInterface of RabbitMQ (yes it's ugly) so we can have the same | ||
13 | * kind of class which implements the same interface. | ||
14 | * So we can inject either a RabbitMQ producer or a Redis producer with the same signature | ||
15 | */ | ||
16 | class Producer implements ProducerInterface | ||
17 | { | ||
18 | private $queue; | ||
19 | |||
20 | public function __construct(RedisQueue $queue) | ||
21 | { | ||
22 | $this->queue = $queue; | ||
23 | } | ||
24 | |||
25 | /** | ||
26 | * Publish a message in the Redis queue. | ||
27 | * | ||
28 | * @param string $msgBody | ||
29 | * @param string $routingKey NOT USED | ||
30 | * @param array $additionalProperties NOT USED | ||
31 | */ | ||
32 | public function publish($msgBody, $routingKey = '', $additionalProperties = array()) | ||
33 | { | ||
34 | $this->queue->sendJob($msgBody); | ||
35 | } | ||
36 | } | ||
diff --git a/src/Wallabag/ImportBundle/Resources/config/rabbit.yml b/src/Wallabag/ImportBundle/Resources/config/rabbit.yml new file mode 100644 index 00000000..70b8a0d4 --- /dev/null +++ b/src/Wallabag/ImportBundle/Resources/config/rabbit.yml | |||
@@ -0,0 +1,51 @@ | |||
1 | # RabbitMQ stuff | ||
2 | services: | ||
3 | wallabag_import.consumer.amqp.pocket: | ||
4 | class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer | ||
5 | arguments: | ||
6 | - "@doctrine.orm.entity_manager" | ||
7 | - "@wallabag_user.user_repository" | ||
8 | - "@wallabag_import.pocket.import" | ||
9 | - "@logger" | ||
10 | wallabag_import.consumer.amqp.readability: | ||
11 | class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer | ||
12 | arguments: | ||
13 | - "@doctrine.orm.entity_manager" | ||
14 | - "@wallabag_user.user_repository" | ||
15 | - "@wallabag_import.readability.import" | ||
16 | - "@logger" | ||
17 | wallabag_import.consumer.amqp.instapaper: | ||
18 | class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer | ||
19 | arguments: | ||
20 | - "@doctrine.orm.entity_manager" | ||
21 | - "@wallabag_user.user_repository" | ||
22 | - "@wallabag_import.instapaper.import" | ||
23 | - "@logger" | ||
24 | wallabag_import.consumer.amqp.wallabag_v1: | ||
25 | class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer | ||
26 | arguments: | ||
27 | - "@doctrine.orm.entity_manager" | ||
28 | - "@wallabag_user.user_repository" | ||
29 | - "@wallabag_import.wallabag_v1.import" | ||
30 | - "@logger" | ||
31 | wallabag_import.consumer.amqp.wallabag_v2: | ||
32 | class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer | ||
33 | arguments: | ||
34 | - "@doctrine.orm.entity_manager" | ||
35 | - "@wallabag_user.user_repository" | ||
36 | - "@wallabag_import.wallabag_v2.import" | ||
37 | - "@logger" | ||
38 | wallabag_import.consumer.amqp.firefox: | ||
39 | class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer | ||
40 | arguments: | ||
41 | - "@doctrine.orm.entity_manager" | ||
42 | - "@wallabag_user.user_repository" | ||
43 | - "@wallabag_import.firefox.import" | ||
44 | - "@logger" | ||
45 | wallabag_import.consumer.amqp.chrome: | ||
46 | class: Wallabag\ImportBundle\Consumer\AMQPEntryConsumer | ||
47 | arguments: | ||
48 | - "@doctrine.orm.entity_manager" | ||
49 | - "@wallabag_user.user_repository" | ||
50 | - "@wallabag_import.chrome.import" | ||
51 | - "@logger" | ||
diff --git a/src/Wallabag/ImportBundle/Resources/config/redis.yml b/src/Wallabag/ImportBundle/Resources/config/redis.yml new file mode 100644 index 00000000..0a81e1b5 --- /dev/null +++ b/src/Wallabag/ImportBundle/Resources/config/redis.yml | |||
@@ -0,0 +1,141 @@ | |||
1 | # Redis stuff | ||
2 | services: | ||
3 | # readability | ||
4 | wallabag_import.queue.redis.readability: | ||
5 | class: Simpleue\Queue\RedisQueue | ||
6 | arguments: | ||
7 | - "@wallabag_core.redis.client" | ||
8 | - "wallabag.import.readability" | ||
9 | |||
10 | wallabag_import.producer.redis.readability: | ||
11 | class: Wallabag\ImportBundle\Redis\Producer | ||
12 | arguments: | ||
13 | - "@wallabag_import.queue.redis.readability" | ||
14 | |||
15 | wallabag_import.consumer.redis.readability: | ||
16 | class: Wallabag\ImportBundle\Consumer\RedisEntryConsumer | ||
17 | arguments: | ||
18 | - "@doctrine.orm.entity_manager" | ||
19 | - "@wallabag_user.user_repository" | ||
20 | - "@wallabag_import.readability.import" | ||
21 | - "@logger" | ||
22 | |||
23 | # instapaper | ||
24 | wallabag_import.queue.redis.instapaper: | ||
25 | class: Simpleue\Queue\RedisQueue | ||
26 | arguments: | ||
27 | - "@wallabag_core.redis.client" | ||
28 | - "wallabag.import.instapaper" | ||
29 | |||
30 | wallabag_import.producer.redis.instapaper: | ||
31 | class: Wallabag\ImportBundle\Redis\Producer | ||
32 | arguments: | ||
33 | - "@wallabag_import.queue.redis.instapaper" | ||
34 | |||
35 | wallabag_import.consumer.redis.instapaper: | ||
36 | class: Wallabag\ImportBundle\Consumer\RedisEntryConsumer | ||
37 | arguments: | ||
38 | - "@doctrine.orm.entity_manager" | ||
39 | - "@wallabag_user.user_repository" | ||
40 | - "@wallabag_import.instapaper.import" | ||
41 | - "@logger" | ||
42 | |||
43 | |||
44 | wallabag_import.queue.redis.pocket: | ||
45 | class: Simpleue\Queue\RedisQueue | ||
46 | arguments: | ||
47 | - "@wallabag_core.redis.client" | ||
48 | - "wallabag.import.pocket" | ||
49 | |||
50 | wallabag_import.producer.redis.pocket: | ||
51 | class: Wallabag\ImportBundle\Redis\Producer | ||
52 | arguments: | ||
53 | - "@wallabag_import.queue.redis.pocket" | ||
54 | |||
55 | wallabag_import.consumer.redis.pocket: | ||
56 | class: Wallabag\ImportBundle\Consumer\RedisEntryConsumer | ||
57 | arguments: | ||
58 | - "@doctrine.orm.entity_manager" | ||
59 | - "@wallabag_user.user_repository" | ||
60 | - "@wallabag_import.pocket.import" | ||
61 | - "@logger" | ||
62 | |||
63 | # wallabag v1 | ||
64 | wallabag_import.queue.redis.wallabag_v1: | ||
65 | class: Simpleue\Queue\RedisQueue | ||
66 | arguments: | ||
67 | - "@wallabag_core.redis.client" | ||
68 | - "wallabag.import.wallabag_v1" | ||
69 | |||
70 | wallabag_import.producer.redis.wallabag_v1: | ||
71 | class: Wallabag\ImportBundle\Redis\Producer | ||
72 | arguments: | ||
73 | - "@wallabag_import.queue.redis.wallabag_v1" | ||
74 | |||
75 | wallabag_import.consumer.redis.wallabag_v1: | ||
76 | class: Wallabag\ImportBundle\Consumer\RedisEntryConsumer | ||
77 | arguments: | ||
78 | - "@doctrine.orm.entity_manager" | ||
79 | - "@wallabag_user.user_repository" | ||
80 | - "@wallabag_import.wallabag_v1.import" | ||
81 | - "@logger" | ||
82 | |||
83 | # wallabag v2 | ||
84 | wallabag_import.queue.redis.wallabag_v2: | ||
85 | class: Simpleue\Queue\RedisQueue | ||
86 | arguments: | ||
87 | - "@wallabag_core.redis.client" | ||
88 | - "wallabag.import.wallabag_v2" | ||
89 | |||
90 | wallabag_import.producer.redis.wallabag_v2: | ||
91 | class: Wallabag\ImportBundle\Redis\Producer | ||
92 | arguments: | ||
93 | - "@wallabag_import.queue.redis.wallabag_v2" | ||
94 | |||
95 | wallabag_import.consumer.redis.wallabag_v2: | ||
96 | class: Wallabag\ImportBundle\Consumer\RedisEntryConsumer | ||
97 | arguments: | ||
98 | - "@doctrine.orm.entity_manager" | ||
99 | - "@wallabag_user.user_repository" | ||
100 | - "@wallabag_import.wallabag_v2.import" | ||
101 | - "@logger" | ||
102 | |||
103 | # firefox | ||
104 | wallabag_import.queue.redis.firefox: | ||
105 | class: Simpleue\Queue\RedisQueue | ||
106 | arguments: | ||
107 | - "@wallabag_core.redis.client" | ||
108 | - "wallabag.import.firefox" | ||
109 | |||
110 | wallabag_import.producer.redis.firefox: | ||
111 | class: Wallabag\ImportBundle\Redis\Producer | ||
112 | arguments: | ||
113 | - "@wallabag_import.queue.redis.firefox" | ||
114 | |||
115 | wallabag_import.consumer.redis.firefox: | ||
116 | class: Wallabag\ImportBundle\Consumer\RedisEntryConsumer | ||
117 | arguments: | ||
118 | - "@doctrine.orm.entity_manager" | ||
119 | - "@wallabag_user.user_repository" | ||
120 | - "@wallabag_import.firefox.import" | ||
121 | - "@logger" | ||
122 | |||
123 | # chrome | ||
124 | wallabag_import.queue.redis.chrome: | ||
125 | class: Simpleue\Queue\RedisQueue | ||
126 | arguments: | ||
127 | - "@wallabag_core.redis.client" | ||
128 | - "wallabag.import.chrome" | ||
129 | |||
130 | wallabag_import.producer.redis.chrome: | ||
131 | class: Wallabag\ImportBundle\Redis\Producer | ||
132 | arguments: | ||
133 | - "@wallabag_import.queue.redis.chrome" | ||
134 | |||
135 | wallabag_import.consumer.redis.chrome: | ||
136 | class: Wallabag\ImportBundle\Consumer\RedisEntryConsumer | ||
137 | arguments: | ||
138 | - "@doctrine.orm.entity_manager" | ||
139 | - "@wallabag_user.user_repository" | ||
140 | - "@wallabag_import.chrome.import" | ||
141 | - "@logger" | ||
diff --git a/src/Wallabag/ImportBundle/Resources/config/services.yml b/src/Wallabag/ImportBundle/Resources/config/services.yml index 86b44cb3..89adc71b 100644 --- a/src/Wallabag/ImportBundle/Resources/config/services.yml +++ b/src/Wallabag/ImportBundle/Resources/config/services.yml | |||
@@ -1,3 +1,7 @@ | |||
1 | imports: | ||
2 | - { resource: rabbit.yml } | ||
3 | - { resource: redis.yml } | ||
4 | |||
1 | services: | 5 | services: |
2 | wallabag_import.chain: | 6 | wallabag_import.chain: |
3 | class: Wallabag\ImportBundle\Import\ImportChain | 7 | class: Wallabag\ImportBundle\Import\ImportChain |
@@ -14,7 +18,6 @@ services: | |||
14 | wallabag_import.pocket.import: | 18 | wallabag_import.pocket.import: |
15 | class: Wallabag\ImportBundle\Import\PocketImport | 19 | class: Wallabag\ImportBundle\Import\PocketImport |
16 | arguments: | 20 | arguments: |
17 | - "@security.token_storage" | ||
18 | - "@doctrine.orm.entity_manager" | 21 | - "@doctrine.orm.entity_manager" |
19 | - "@wallabag_core.content_proxy" | 22 | - "@wallabag_core.content_proxy" |
20 | - "@craue_config" | 23 | - "@craue_config" |
@@ -43,3 +46,42 @@ services: | |||
43 | - [ setLogger, [ "@logger" ]] | 46 | - [ setLogger, [ "@logger" ]] |
44 | tags: | 47 | tags: |
45 | - { name: wallabag_import.import, alias: wallabag_v2 } | 48 | - { name: wallabag_import.import, alias: wallabag_v2 } |
49 | |||
50 | wallabag_import.readability.import: | ||
51 | class: Wallabag\ImportBundle\Import\ReadabilityImport | ||
52 | arguments: | ||
53 | - "@doctrine.orm.entity_manager" | ||
54 | - "@wallabag_core.content_proxy" | ||
55 | calls: | ||
56 | - [ setLogger, [ "@logger" ]] | ||
57 | tags: | ||
58 | - { name: wallabag_import.import, alias: readability } | ||
59 | |||
60 | wallabag_import.instapaper.import: | ||
61 | class: Wallabag\ImportBundle\Import\InstapaperImport | ||
62 | arguments: | ||
63 | - "@doctrine.orm.entity_manager" | ||
64 | - "@wallabag_core.content_proxy" | ||
65 | calls: | ||
66 | - [ setLogger, [ "@logger" ]] | ||
67 | tags: | ||
68 | - { name: wallabag_import.import, alias: instapaper } | ||
69 | |||
70 | wallabag_import.firefox.import: | ||
71 | class: Wallabag\ImportBundle\Import\FirefoxImport | ||
72 | arguments: | ||
73 | - "@doctrine.orm.entity_manager" | ||
74 | - "@wallabag_core.content_proxy" | ||
75 | calls: | ||
76 | - [ setLogger, [ "@logger" ]] | ||
77 | tags: | ||
78 | - { name: wallabag_import.import, alias: firefox } | ||
79 | wallabag_import.chrome.import: | ||
80 | class: Wallabag\ImportBundle\Import\ChromeImport | ||
81 | arguments: | ||
82 | - "@doctrine.orm.entity_manager" | ||
83 | - "@wallabag_core.content_proxy" | ||
84 | calls: | ||
85 | - [ setLogger, [ "@logger" ]] | ||
86 | tags: | ||
87 | - { name: wallabag_import.import, alias: chrome } | ||
diff --git a/src/Wallabag/ImportBundle/Resources/views/Chrome/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Chrome/index.html.twig new file mode 100644 index 00000000..ead828c6 --- /dev/null +++ b/src/Wallabag/ImportBundle/Resources/views/Chrome/index.html.twig | |||
@@ -0,0 +1,43 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'import.chrome.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <div class="row"> | ||
7 | <div class="col s12"> | ||
8 | <div class="card-panel settings"> | ||
9 | <div class="row"> | ||
10 | <blockquote>{{ import.description|trans|raw }}</blockquote> | ||
11 | <p>{{ 'import.chrome.how_to'|trans }}</p> | ||
12 | |||
13 | <div class="col s12"> | ||
14 | {{ form_start(form, {'method': 'POST'}) }} | ||
15 | {{ form_errors(form) }} | ||
16 | <div class="row"> | ||
17 | <div class="file-field input-field col s12"> | ||
18 | {{ form_errors(form.file) }} | ||
19 | <div class="btn"> | ||
20 | <span>{{ form.file.vars.label|trans }}</span> | ||
21 | {{ form_widget(form.file) }} | ||
22 | </div> | ||
23 | <div class="file-path-wrapper"> | ||
24 | <input class="file-path validate" type="text"> | ||
25 | </div> | ||
26 | </div> | ||
27 | <div class="input-field col s6 with-checkbox"> | ||
28 | <h6>{{ 'import.form.mark_as_read_title'|trans }}</h6> | ||
29 | {{ form_widget(form.mark_as_read) }} | ||
30 | {{ form_label(form.mark_as_read) }} | ||
31 | </div> | ||
32 | </div> | ||
33 | |||
34 | {{ form_widget(form.save, { 'attr': {'class': 'btn waves-effect waves-light'} }) }} | ||
35 | |||
36 | {{ form_rest(form) }} | ||
37 | </form> | ||
38 | </div> | ||
39 | </div> | ||
40 | </div> | ||
41 | </div> | ||
42 | </div> | ||
43 | {% endblock %} | ||
diff --git a/src/Wallabag/ImportBundle/Resources/views/Firefox/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Firefox/index.html.twig new file mode 100644 index 00000000..f975da3f --- /dev/null +++ b/src/Wallabag/ImportBundle/Resources/views/Firefox/index.html.twig | |||
@@ -0,0 +1,43 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'import.firefox.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <div class="row"> | ||
7 | <div class="col s12"> | ||
8 | <div class="card-panel settings"> | ||
9 | <div class="row"> | ||
10 | <blockquote>{{ import.description|trans|raw }}</blockquote> | ||
11 | <p>{{ 'import.firefox.how_to'|trans }}</p> | ||
12 | |||
13 | <div class="col s12"> | ||
14 | {{ form_start(form, {'method': 'POST'}) }} | ||
15 | {{ form_errors(form) }} | ||
16 | <div class="row"> | ||
17 | <div class="file-field input-field col s12"> | ||
18 | {{ form_errors(form.file) }} | ||
19 | <div class="btn"> | ||
20 | <span>{{ form.file.vars.label|trans }}</span> | ||
21 | {{ form_widget(form.file) }} | ||
22 | </div> | ||
23 | <div class="file-path-wrapper"> | ||
24 | <input class="file-path validate" type="text"> | ||
25 | </div> | ||
26 | </div> | ||
27 | <div class="input-field col s6 with-checkbox"> | ||
28 | <h6>{{ 'import.form.mark_as_read_title'|trans }}</h6> | ||
29 | {{ form_widget(form.mark_as_read) }} | ||
30 | {{ form_label(form.mark_as_read) }} | ||
31 | </div> | ||
32 | </div> | ||
33 | |||
34 | {{ form_widget(form.save, { 'attr': {'class': 'btn waves-effect waves-light'} }) }} | ||
35 | |||
36 | {{ form_rest(form) }} | ||
37 | </form> | ||
38 | </div> | ||
39 | </div> | ||
40 | </div> | ||
41 | </div> | ||
42 | </div> | ||
43 | {% endblock %} | ||
diff --git a/src/Wallabag/ImportBundle/Resources/views/Import/_workerEnabled.html.twig b/src/Wallabag/ImportBundle/Resources/views/Import/_workerEnabled.html.twig new file mode 100644 index 00000000..2390a41f --- /dev/null +++ b/src/Wallabag/ImportBundle/Resources/views/Import/_workerEnabled.html.twig | |||
@@ -0,0 +1,8 @@ | |||
1 | {% set redis = craue_setting('import_with_redis') %} | ||
2 | {% set rabbit = craue_setting('import_with_rabbitmq') %} | ||
3 | |||
4 | {% if redis or rabbit %} | ||
5 | <div class="card-panel yellow darken-1 black-text"> | ||
6 | {{ 'import.worker.enabled'|trans }} <strong>{% if rabbit %}RabbitMQ{% elseif redis %}Redis{% endif %}</strong> | ||
7 | </div> | ||
8 | {% endif %} | ||
diff --git a/src/Wallabag/ImportBundle/Resources/views/Import/check_queue.html.twig b/src/Wallabag/ImportBundle/Resources/views/Import/check_queue.html.twig new file mode 100644 index 00000000..a2633698 --- /dev/null +++ b/src/Wallabag/ImportBundle/Resources/views/Import/check_queue.html.twig | |||
@@ -0,0 +1,23 @@ | |||
1 | {% if nbRedisMessages is defined and nbRedisMessages > 0 %} | ||
2 | <script> | ||
3 | Materialize.toast('Messages in queue: {{ nbRedisMessages }}', 4000); | ||
4 | </script> | ||
5 | {% endif %} | ||
6 | |||
7 | {% if nbRabbitMessages is defined and nbRabbitMessages > 0 %} | ||
8 | <script> | ||
9 | Materialize.toast('Messages in queue: {{ nbRabbitMessages }}', 4000); | ||
10 | </script> | ||
11 | {% endif %} | ||
12 | |||
13 | {% if redisNotInstalled is defined and redisNotInstalled %} | ||
14 | <div class="card-panel red darken-1 white-text"> | ||
15 | {{ 'flashes.import.error.redis_enabled_not_installed'|trans|raw }} | ||
16 | </div> | ||
17 | {% endif %} | ||
18 | |||
19 | {% if rabbitNotInstalled is defined and rabbitNotInstalled %} | ||
20 | <div class="card-panel red darken-1 white-text"> | ||
21 | {{ 'flashes.import.error.rabbit_enabled_not_installed'|trans|raw }} | ||
22 | </div> | ||
23 | {% endif %} | ||
diff --git a/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig index aebbfa20..6ea5e0f4 100644 --- a/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig +++ b/src/Wallabag/ImportBundle/Resources/views/Import/index.html.twig | |||
@@ -11,7 +11,7 @@ | |||
11 | {% for import in imports %} | 11 | {% for import in imports %} |
12 | <li> | 12 | <li> |
13 | <h5>{{ import.name }}</h5> | 13 | <h5>{{ import.name }}</h5> |
14 | <blockquote>{{ import.description|trans }}</blockquote> | 14 | <blockquote>{{ import.description|trans|raw }}</blockquote> |
15 | <p><a class="waves-effect waves-light btn" href="{{ path(import.url) }}">{{ 'import.action.import_contents'|trans }}</a></p> | 15 | <p><a class="waves-effect waves-light btn" href="{{ path(import.url) }}">{{ 'import.action.import_contents'|trans }}</a></p> |
16 | </li> | 16 | </li> |
17 | {% endfor %} | 17 | {% endfor %} |
diff --git a/src/Wallabag/ImportBundle/Resources/views/Instapaper/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Instapaper/index.html.twig new file mode 100644 index 00000000..5789361f --- /dev/null +++ b/src/Wallabag/ImportBundle/Resources/views/Instapaper/index.html.twig | |||
@@ -0,0 +1,45 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'import.instapaper.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <div class="row"> | ||
7 | <div class="col s12"> | ||
8 | <div class="card-panel settings"> | ||
9 | {% include 'WallabagImportBundle:Import:_workerEnabled.html.twig' %} | ||
10 | |||
11 | <div class="row"> | ||
12 | <blockquote>{{ import.description|trans }}</blockquote> | ||
13 | <p>{{ 'import.instapaper.how_to'|trans }}</p> | ||
14 | |||
15 | <div class="col s12"> | ||
16 | {{ form_start(form, {'method': 'POST'}) }} | ||
17 | {{ form_errors(form) }} | ||
18 | <div class="row"> | ||
19 | <div class="file-field input-field col s12"> | ||
20 | {{ form_errors(form.file) }} | ||
21 | <div class="btn"> | ||
22 | <span>{{ form.file.vars.label|trans }}</span> | ||
23 | {{ form_widget(form.file) }} | ||
24 | </div> | ||
25 | <div class="file-path-wrapper"> | ||
26 | <input class="file-path validate" type="text"> | ||
27 | </div> | ||
28 | </div> | ||
29 | <div class="input-field col s6 with-checkbox"> | ||
30 | <h6>{{ 'import.form.mark_as_read_title'|trans }}</h6> | ||
31 | {{ form_widget(form.mark_as_read) }} | ||
32 | {{ form_label(form.mark_as_read) }} | ||
33 | </div> | ||
34 | </div> | ||
35 | |||
36 | {{ form_widget(form.save, { 'attr': {'class': 'btn waves-effect waves-light'} }) }} | ||
37 | |||
38 | {{ form_rest(form) }} | ||
39 | </form> | ||
40 | </div> | ||
41 | </div> | ||
42 | </div> | ||
43 | </div> | ||
44 | </div> | ||
45 | {% endblock %} | ||
diff --git a/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig index 401dbd33..6195fa07 100644 --- a/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig +++ b/src/Wallabag/ImportBundle/Resources/views/Pocket/index.html.twig | |||
@@ -6,15 +6,13 @@ | |||
6 | <div class="row"> | 6 | <div class="row"> |
7 | <div class="col s12"> | 7 | <div class="col s12"> |
8 | <div class="card-panel settings"> | 8 | <div class="card-panel settings"> |
9 | {% include 'WallabagImportBundle:Import:_workerEnabled.html.twig' %} | ||
10 | |||
9 | {% if not has_consumer_key %} | 11 | {% if not has_consumer_key %} |
10 | <div class="card-panel red darken-1"> | 12 | <div class="card-panel red white-text"> |
11 | {{ 'import.pocket.config_missing.description'|trans }} | 13 | {{ 'import.pocket.config_missing.description'|trans }} |
12 | 14 | ||
13 | {% if is_granted('ROLE_SUPER_ADMIN') %} | 15 | {{ 'import.pocket.config_missing.admin_message'|trans({'%keyurls%': '<a href="' ~ path('config') ~ '">', '%keyurle%':'</a>'})|raw }} |
14 | {{ 'import.pocket.config_missing.admin_message'|trans({'%keyurls%': '<a href="' ~ path('craue_config_settings_modify') ~ '#set-import">', '%keyurle%':'</a>'})|raw }} | ||
15 | {% else %} | ||
16 | {{ 'import.pocket.config_missing.user_message'|trans }} | ||
17 | {% endif %} | ||
18 | </div> | 16 | </div> |
19 | {% endif %} | 17 | {% endif %} |
20 | 18 | ||
@@ -29,7 +27,7 @@ | |||
29 | {{ form_label(form.mark_as_read) }} | 27 | {{ form_label(form.mark_as_read) }} |
30 | </div> | 28 | </div> |
31 | </div> | 29 | </div> |
32 | <button class="btn waves-effect waves-light" type="submit" name="action"> | 30 | <button class="btn waves-effect waves-light" type="submit" name="action" {% if not has_consumer_key %}disabled="disabled"{% endif %}> |
33 | {{ 'import.pocket.connect_to_pocket'|trans }} | 31 | {{ 'import.pocket.connect_to_pocket'|trans }} |
34 | </button> | 32 | </button> |
35 | </form> | 33 | </form> |
diff --git a/src/Wallabag/ImportBundle/Resources/views/Readability/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/Readability/index.html.twig new file mode 100644 index 00000000..74653b0f --- /dev/null +++ b/src/Wallabag/ImportBundle/Resources/views/Readability/index.html.twig | |||
@@ -0,0 +1,45 @@ | |||
1 | {% extends "WallabagCoreBundle::layout.html.twig" %} | ||
2 | |||
3 | {% block title %}{{ 'import.readability.page_title'|trans }}{% endblock %} | ||
4 | |||
5 | {% block content %} | ||
6 | <div class="row"> | ||
7 | <div class="col s12"> | ||
8 | <div class="card-panel settings"> | ||
9 | {% include 'WallabagImportBundle:Import:_workerEnabled.html.twig' %} | ||
10 | |||
11 | <div class="row"> | ||
12 | <blockquote>{{ import.description|trans }}</blockquote> | ||
13 | <p>{{ 'import.readability.how_to'|trans }}</p> | ||
14 | |||
15 | <div class="col s12"> | ||
16 | {{ form_start(form, {'method': 'POST'}) }} | ||
17 | {{ form_errors(form) }} | ||
18 | <div class="row"> | ||
19 | <div class="file-field input-field col s12"> | ||
20 | {{ form_errors(form.file) }} | ||
21 | <div class="btn"> | ||
22 | <span>{{ form.file.vars.label|trans }}</span> | ||
23 | {{ form_widget(form.file) }} | ||
24 | </div> | ||
25 | <div class="file-path-wrapper"> | ||
26 | <input class="file-path validate" type="text"> | ||
27 | </div> | ||
28 | </div> | ||
29 | <div class="input-field col s6 with-checkbox"> | ||
30 | <h6>{{ 'import.form.mark_as_read_title'|trans }}</h6> | ||
31 | {{ form_widget(form.mark_as_read) }} | ||
32 | {{ form_label(form.mark_as_read) }} | ||
33 | </div> | ||
34 | </div> | ||
35 | |||
36 | {{ form_widget(form.save, { 'attr': {'class': 'btn waves-effect waves-light'} }) }} | ||
37 | |||
38 | {{ form_rest(form) }} | ||
39 | </form> | ||
40 | </div> | ||
41 | </div> | ||
42 | </div> | ||
43 | </div> | ||
44 | </div> | ||
45 | {% endblock %} | ||
diff --git a/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig b/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig index 13e24c8c..0b19bc34 100644 --- a/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig +++ b/src/Wallabag/ImportBundle/Resources/views/WallabagV1/index.html.twig | |||
@@ -6,6 +6,8 @@ | |||
6 | <div class="row"> | 6 | <div class="row"> |
7 | <div class="col s12"> | 7 | <div class="col s12"> |
8 | <div class="card-panel settings"> | 8 | <div class="card-panel settings"> |
9 | {% include 'WallabagImportBundle:Import:_workerEnabled.html.twig' %} | ||
10 | |||
9 | <div class="row"> | 11 | <div class="row"> |
10 | <blockquote>{{ import.description|trans }}</blockquote> | 12 | <blockquote>{{ import.description|trans }}</blockquote> |
11 | <p>{{ 'import.wallabag_v1.how_to'|trans }}</p> | 13 | <p>{{ 'import.wallabag_v1.how_to'|trans }}</p> |
diff --git a/src/Wallabag/UserBundle/Controller/RegistrationController.php b/src/Wallabag/UserBundle/Controller/RegistrationController.php new file mode 100644 index 00000000..f81f3a7b --- /dev/null +++ b/src/Wallabag/UserBundle/Controller/RegistrationController.php | |||
@@ -0,0 +1,18 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\UserBundle\Controller; | ||
4 | |||
5 | use FOS\UserBundle\Controller\RegistrationController as FOSRegistrationController; | ||
6 | use Symfony\Component\HttpFoundation\Request; | ||
7 | |||
8 | class RegistrationController extends FOSRegistrationController | ||
9 | { | ||
10 | public function registerAction(Request $request) | ||
11 | { | ||
12 | if ($this->container->getParameter('wallabag_user.registration_enabled')) { | ||
13 | return parent::registerAction($request); | ||
14 | } | ||
15 | |||
16 | return $this->redirectToRoute('fos_user_security_login', [], 301); | ||
17 | } | ||
18 | } | ||
diff --git a/src/Wallabag/UserBundle/Controller/SecurityController.php b/src/Wallabag/UserBundle/Controller/SecurityController.php new file mode 100644 index 00000000..83fa0b20 --- /dev/null +++ b/src/Wallabag/UserBundle/Controller/SecurityController.php | |||
@@ -0,0 +1,21 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Wallabag\UserBundle\Controller; | ||
4 | |||
5 | use FOS\UserBundle\Controller\SecurityController as FOSSecurityController; | ||
6 | |||
7 | /** | ||
8 | * Extends login form in order to pass the registration_enabled parameter. | ||
9 | */ | ||
10 | class SecurityController extends FOSSecurityController | ||
11 | { | ||
12 | protected function renderLogin(array $data) | ||
13 | { | ||
14 | return $this->render('FOSUserBundle:Security:login.html.twig', | ||
15 | array_merge( | ||
16 | $data, | ||
17 | ['registration_enabled' => $this->container->getParameter('wallabag_user.registration_enabled')] | ||
18 | ) | ||
19 | ); | ||
20 | } | ||
21 | } | ||
diff --git a/src/Wallabag/UserBundle/DependencyInjection/Configuration.php b/src/Wallabag/UserBundle/DependencyInjection/Configuration.php index 4223f8db..971ce1a0 100644 --- a/src/Wallabag/UserBundle/DependencyInjection/Configuration.php +++ b/src/Wallabag/UserBundle/DependencyInjection/Configuration.php | |||
@@ -12,6 +12,14 @@ class Configuration implements ConfigurationInterface | |||
12 | $treeBuilder = new TreeBuilder(); | 12 | $treeBuilder = new TreeBuilder(); |
13 | $rootNode = $treeBuilder->root('wallabag_user'); | 13 | $rootNode = $treeBuilder->root('wallabag_user'); |
14 | 14 | ||
15 | $rootNode | ||
16 | ->children() | ||
17 | ->booleanNode('registration_enabled') | ||
18 | ->defaultValue(true) | ||
19 | ->end() | ||
20 | ->end() | ||
21 | ; | ||
22 | |||
15 | return $treeBuilder; | 23 | return $treeBuilder; |
16 | } | 24 | } |
17 | } | 25 | } |
diff --git a/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php b/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php index c12a8937..99040f69 100644 --- a/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php +++ b/src/Wallabag/UserBundle/DependencyInjection/WallabagUserExtension.php | |||
@@ -16,6 +16,7 @@ class WallabagUserExtension extends Extension | |||
16 | 16 | ||
17 | $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); | 17 | $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); |
18 | $loader->load('services.yml'); | 18 | $loader->load('services.yml'); |
19 | $container->setParameter('wallabag_user.registration_enabled', $config['registration_enabled']); | ||
19 | } | 20 | } |
20 | 21 | ||
21 | public function getAlias() | 22 | public function getAlias() |
diff --git a/src/Wallabag/UserBundle/Resources/config/services.yml b/src/Wallabag/UserBundle/Resources/config/services.yml index d79d8fa2..05830555 100644 --- a/src/Wallabag/UserBundle/Resources/config/services.yml +++ b/src/Wallabag/UserBundle/Resources/config/services.yml | |||
@@ -14,3 +14,9 @@ services: | |||
14 | - "@router" | 14 | - "@router" |
15 | tags: | 15 | tags: |
16 | - { name: kernel.event_subscriber } | 16 | - { name: kernel.event_subscriber } |
17 | |||
18 | wallabag_user.user_repository: | ||
19 | class: Wallabag\UserBundle\Repository\UserRepository | ||
20 | factory: [ "@doctrine.orm.default_entity_manager", getRepository ] | ||
21 | arguments: | ||
22 | - WallabagUserBundle:User | ||
diff --git a/src/Wallabag/UserBundle/Resources/translations/wallabag_user.pl.yml b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.pl.yml new file mode 100644 index 00000000..04dbef39 --- /dev/null +++ b/src/Wallabag/UserBundle/Resources/translations/wallabag_user.pl.yml | |||
@@ -0,0 +1,11 @@ | |||
1 | # Two factor mail | ||
2 | auth_code: | ||
3 | on: 'włączony' | ||
4 | mailer: | ||
5 | subject: 'Kod autoryzacyjny Wallabag' | ||
6 | body: | ||
7 | hello: "Cześć %user%," | ||
8 | first_para: "Od momentu włączenia na swoim koncie autoryzacji dwuetapowej i zalogowaniu się na nowym urzączeniu (komputer, telefon, etc.), wyślemy do ciebie kod potwierdzający twoje połączenie" | ||
9 | second_para: "Tutaj jest twój kod:" | ||
10 | support: "Nie wahaj się skontaktować z nami, jeżeli masz jakiekolwiek problemy:" | ||
11 | signature: "Zespół wallabag" | ||
diff --git a/src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig b/src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig index acf69196..c8471bdd 100644 --- a/src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig +++ b/src/Wallabag/UserBundle/Resources/views/Authentication/form.html.twig | |||
@@ -23,10 +23,10 @@ | |||
23 | </div> | 23 | </div> |
24 | </div> | 24 | </div> |
25 | <div class="card-action center"> | 25 | <div class="card-action center"> |
26 | <a href="{{ path('fos_user_security_logout') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {{ 'security.login.cancel'|trans }}</a> | 26 | <a href="{{ path('fos_user_security_logout') }}" class="waves-effect waves-light grey btn">{{ 'security.login.cancel'|trans }}</a> |
27 | <button class="btn waves-effect waves-light" type="submit" name="send"> | 27 | <button class="btn waves-effect waves-light" type="submit" name="send"> |
28 | {{ "scheb_two_factor.login"|trans }} | 28 | {{ "scheb_two_factor.login"|trans }} |
29 | <i class="mdi-content-send right"></i> | 29 | <i class="material-icons right">send</i> |
30 | </button> | 30 | </button> |
31 | </div> | 31 | </div> |
32 | </form> | 32 | </form> |
diff --git a/src/Wallabag/UserBundle/Resources/views/Registration/confirmed.html.twig b/src/Wallabag/UserBundle/Resources/views/Registration/confirmed.html.twig index aa4b9bca..cb8d40a4 100644 --- a/src/Wallabag/UserBundle/Resources/views/Registration/confirmed.html.twig +++ b/src/Wallabag/UserBundle/Resources/views/Registration/confirmed.html.twig | |||
@@ -11,7 +11,7 @@ | |||
11 | {% endif %} | 11 | {% endif %} |
12 | </div> | 12 | </div> |
13 | <div class="card-action center"> | 13 | <div class="card-action center"> |
14 | <a href="{{ path('homepage') }}" class="waves-effect waves-light btn"><i class="material-icons left"></i> {{ 'security.register.go_to_account'|trans({},'messages') }}</a> | 14 | <a href="{{ path('homepage') }}" class="waves-effect waves-light btn">{{ 'security.register.go_to_account'|trans({},'messages') }}</a> |
15 | </div> | 15 | </div> |
16 | </div> | 16 | </div> |
17 | {% endblock fos_user_content %} | 17 | {% endblock fos_user_content %} |
diff --git a/src/Wallabag/UserBundle/Resources/views/Registration/register_content.html.twig b/src/Wallabag/UserBundle/Resources/views/Registration/register_content.html.twig index 7d2b45d4..d0a85fc7 100644 --- a/src/Wallabag/UserBundle/Resources/views/Registration/register_content.html.twig +++ b/src/Wallabag/UserBundle/Resources/views/Registration/register_content.html.twig | |||
@@ -36,10 +36,10 @@ | |||
36 | </div> | 36 | </div> |
37 | </div> | 37 | </div> |
38 | <div class="card-action center"> | 38 | <div class="card-action center"> |
39 | <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {{ 'security.login.submit'|trans }}</a> | 39 | <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn">{{ 'security.login.submit'|trans }}</a> |
40 | <button class="btn waves-effect waves-light" type="submit" name="send"> | 40 | <button class="btn waves-effect waves-light" type="submit" name="send"> |
41 | {{ 'registration.submit'|trans({}, 'FOSUserBundle') }} | 41 | {{ 'registration.submit'|trans({}, 'FOSUserBundle') }} |
42 | <i class="mdi-content-send right"></i> | 42 | <i class="material-icons right">send</i> |
43 | </button> | 43 | </button> |
44 | </div> | 44 | </div> |
45 | </form> | 45 | </form> |
diff --git a/src/Wallabag/UserBundle/Resources/views/Resetting/request_content.html.twig b/src/Wallabag/UserBundle/Resources/views/Resetting/request_content.html.twig index 7a5ac838..010ee0d0 100644 --- a/src/Wallabag/UserBundle/Resources/views/Resetting/request_content.html.twig +++ b/src/Wallabag/UserBundle/Resources/views/Resetting/request_content.html.twig | |||
@@ -21,7 +21,7 @@ | |||
21 | </div> | 21 | </div> |
22 | <div class="card-action center"> | 22 | <div class="card-action center"> |
23 | <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn"> | 23 | <a href="{{ path('fos_user_security_login') }}" class="waves-effect waves-light grey btn"> |
24 | <i class="material-icons left"></i> {{ 'security.login.submit'|trans({}, "messages") }} | 24 | {{ 'security.login.submit'|trans({}, "messages") }} |
25 | </a> | 25 | </a> |
26 | <button class="btn waves-effect waves-light" type="submit" name="send"> | 26 | <button class="btn waves-effect waves-light" type="submit" name="send"> |
27 | {{ 'resetting.request.submit'|trans }} | 27 | {{ 'resetting.request.submit'|trans }} |
diff --git a/src/Wallabag/UserBundle/Resources/views/Resetting/reset_content.html.twig b/src/Wallabag/UserBundle/Resources/views/Resetting/reset_content.html.twig index 9d0a061c..a19dc7d2 100644 --- a/src/Wallabag/UserBundle/Resources/views/Resetting/reset_content.html.twig +++ b/src/Wallabag/UserBundle/Resources/views/Resetting/reset_content.html.twig | |||
@@ -8,7 +8,7 @@ | |||
8 | <div class="card-action center"> | 8 | <div class="card-action center"> |
9 | <button class="btn waves-effect waves-light" type="submit" name="send"> | 9 | <button class="btn waves-effect waves-light" type="submit" name="send"> |
10 | {{ 'resetting.reset.submit'|trans }} | 10 | {{ 'resetting.reset.submit'|trans }} |
11 | <i class="mdi-content-send right"></i> | 11 | <i class="material-icons right">send</i> |
12 | </button> | 12 | </button> |
13 | </div> | 13 | </div> |
14 | </div> | 14 | </div> |
diff --git a/src/Wallabag/UserBundle/Resources/views/Security/login.html.twig b/src/Wallabag/UserBundle/Resources/views/Security/login.html.twig index 5835330d..938f1a31 100644 --- a/src/Wallabag/UserBundle/Resources/views/Security/login.html.twig +++ b/src/Wallabag/UserBundle/Resources/views/Security/login.html.twig | |||
@@ -33,10 +33,12 @@ | |||
33 | </div> | 33 | </div> |
34 | <div class="card-action center"> | 34 | <div class="card-action center"> |
35 | <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" /> | 35 | <input type="hidden" name="_csrf_token" value="{{ csrf_token('authenticate') }}" /> |
36 | <a href="{{ path('fos_user_registration_register') }}" class="waves-effect waves-light grey btn"><i class="material-icons left"></i> {{ 'security.login.register'|trans }}</a> | 36 | {% if registration_enabled %} |
37 | <a href="{{ path('fos_user_registration_register') }}" class="waves-effect waves-light grey btn">{{ 'security.login.register'|trans }}</a> | ||
38 | {% endif %} | ||
37 | <button class="btn waves-effect waves-light" type="submit" name="send"> | 39 | <button class="btn waves-effect waves-light" type="submit" name="send"> |
38 | {{ 'security.login.submit'|trans }} | 40 | {{ 'security.login.submit'|trans }} |
39 | <i class="mdi-content-send right"></i> | 41 | <i class="material-icons right">send</i> |
40 | </button> | 42 | </button> |
41 | </div> | 43 | </div> |
42 | <div class="row center"> | 44 | <div class="row center"> |
diff --git a/src/Wallabag/UserBundle/Resources/views/layout.html.twig b/src/Wallabag/UserBundle/Resources/views/layout.html.twig index 1d0189ca..1f6ea255 100644 --- a/src/Wallabag/UserBundle/Resources/views/layout.html.twig +++ b/src/Wallabag/UserBundle/Resources/views/layout.html.twig | |||
@@ -11,7 +11,7 @@ | |||
11 | <main class="valign-wrapper"> | 11 | <main class="valign-wrapper"> |
12 | <div class="valign row"> | 12 | <div class="valign row"> |
13 | <div class="card sw"> | 13 | <div class="card sw"> |
14 | <div class="center"><img src="{{ asset('bundles/wallabagcore/themes/material/img/logo-other_themes.png') }}" alt="wallabag logo" /></div> | 14 | <div class="center"><img src="{{ asset('bundles/wallabagcore/themes/_global/img/logo-other_themes.png') }}" alt="wallabag logo" /></div> |
15 | {% block fos_user_content %} | 15 | {% block fos_user_content %} |
16 | {% endblock fos_user_content %} | 16 | {% endblock fos_user_content %} |
17 | </div> | 17 | </div> |
diff --git a/tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php b/tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php index c39cc357..101c20eb 100644 --- a/tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php +++ b/tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php | |||
@@ -3,6 +3,7 @@ | |||
3 | namespace Tests\Wallabag\ApiBundle\Controller; | 3 | namespace Tests\Wallabag\ApiBundle\Controller; |
4 | 4 | ||
5 | use Tests\Wallabag\ApiBundle\WallabagApiTestCase; | 5 | use Tests\Wallabag\ApiBundle\WallabagApiTestCase; |
6 | use Wallabag\CoreBundle\Entity\Tag; | ||
6 | 7 | ||
7 | class WallabagRestControllerTest extends WallabagApiTestCase | 8 | class WallabagRestControllerTest extends WallabagApiTestCase |
8 | { | 9 | { |
@@ -79,7 +80,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase | |||
79 | 80 | ||
80 | public function testGetStarredEntries() | 81 | public function testGetStarredEntries() |
81 | { | 82 | { |
82 | $this->client->request('GET', '/api/entries', ['star' => 1, 'sort' => 'updated']); | 83 | $this->client->request('GET', '/api/entries', ['starred' => 1, 'sort' => 'updated']); |
83 | 84 | ||
84 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); | 85 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); |
85 | 86 | ||
@@ -121,6 +122,73 @@ class WallabagRestControllerTest extends WallabagApiTestCase | |||
121 | ); | 122 | ); |
122 | } | 123 | } |
123 | 124 | ||
125 | public function testGetTaggedEntries() | ||
126 | { | ||
127 | $this->client->request('GET', '/api/entries', ['tags' => 'foo,bar']); | ||
128 | |||
129 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); | ||
130 | |||
131 | $content = json_decode($this->client->getResponse()->getContent(), true); | ||
132 | |||
133 | $this->assertGreaterThanOrEqual(1, count($content)); | ||
134 | $this->assertNotEmpty($content['_embedded']['items']); | ||
135 | $this->assertGreaterThanOrEqual(1, $content['total']); | ||
136 | $this->assertEquals(1, $content['page']); | ||
137 | $this->assertGreaterThanOrEqual(1, $content['pages']); | ||
138 | |||
139 | $this->assertTrue( | ||
140 | $this->client->getResponse()->headers->contains( | ||
141 | 'Content-Type', | ||
142 | 'application/json' | ||
143 | ) | ||
144 | ); | ||
145 | } | ||
146 | |||
147 | public function testGetDatedEntries() | ||
148 | { | ||
149 | $this->client->request('GET', '/api/entries', ['since' => 1]); | ||
150 | |||
151 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); | ||
152 | |||
153 | $content = json_decode($this->client->getResponse()->getContent(), true); | ||
154 | |||
155 | $this->assertGreaterThanOrEqual(1, count($content)); | ||
156 | $this->assertNotEmpty($content['_embedded']['items']); | ||
157 | $this->assertGreaterThanOrEqual(1, $content['total']); | ||
158 | $this->assertEquals(1, $content['page']); | ||
159 | $this->assertGreaterThanOrEqual(1, $content['pages']); | ||
160 | |||
161 | $this->assertTrue( | ||
162 | $this->client->getResponse()->headers->contains( | ||
163 | 'Content-Type', | ||
164 | 'application/json' | ||
165 | ) | ||
166 | ); | ||
167 | } | ||
168 | |||
169 | public function testGetDatedSupEntries() | ||
170 | { | ||
171 | $future = new \DateTime(date('Y-m-d H:i:s')); | ||
172 | $this->client->request('GET', '/api/entries', ['since' => $future->getTimestamp() + 1000]); | ||
173 | |||
174 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); | ||
175 | |||
176 | $content = json_decode($this->client->getResponse()->getContent(), true); | ||
177 | |||
178 | $this->assertGreaterThanOrEqual(1, count($content)); | ||
179 | $this->assertEmpty($content['_embedded']['items']); | ||
180 | $this->assertEquals(0, $content['total']); | ||
181 | $this->assertEquals(1, $content['page']); | ||
182 | $this->assertEquals(1, $content['pages']); | ||
183 | |||
184 | $this->assertTrue( | ||
185 | $this->client->getResponse()->headers->contains( | ||
186 | 'Content-Type', | ||
187 | 'application/json' | ||
188 | ) | ||
189 | ); | ||
190 | } | ||
191 | |||
124 | public function testDeleteEntry() | 192 | public function testDeleteEntry() |
125 | { | 193 | { |
126 | $entry = $this->client->getContainer() | 194 | $entry = $this->client->getContainer() |
@@ -292,7 +360,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase | |||
292 | $entry = $this->client->getContainer() | 360 | $entry = $this->client->getContainer() |
293 | ->get('doctrine.orm.entity_manager') | 361 | ->get('doctrine.orm.entity_manager') |
294 | ->getRepository('WallabagCoreBundle:Entry') | 362 | ->getRepository('WallabagCoreBundle:Entry') |
295 | ->findOneWithTags(1); | 363 | ->findOneWithTags($this->user->getId()); |
296 | 364 | ||
297 | $entry = $entry[0]; | 365 | $entry = $entry[0]; |
298 | 366 | ||
@@ -354,7 +422,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase | |||
354 | $entry = $this->client->getContainer() | 422 | $entry = $this->client->getContainer() |
355 | ->get('doctrine.orm.entity_manager') | 423 | ->get('doctrine.orm.entity_manager') |
356 | ->getRepository('WallabagCoreBundle:Entry') | 424 | ->getRepository('WallabagCoreBundle:Entry') |
357 | ->findOneWithTags(1); | 425 | ->findOneWithTags($this->user->getId()); |
358 | $entry = $entry[0]; | 426 | $entry = $entry[0]; |
359 | 427 | ||
360 | if (!$entry) { | 428 | if (!$entry) { |
@@ -405,7 +473,7 @@ class WallabagRestControllerTest extends WallabagApiTestCase | |||
405 | $this->assertEquals($tag['label'], $content['label']); | 473 | $this->assertEquals($tag['label'], $content['label']); |
406 | $this->assertEquals($tag['slug'], $content['slug']); | 474 | $this->assertEquals($tag['slug'], $content['slug']); |
407 | 475 | ||
408 | $entries = $entry = $this->client->getContainer() | 476 | $entries = $this->client->getContainer() |
409 | ->get('doctrine.orm.entity_manager') | 477 | ->get('doctrine.orm.entity_manager') |
410 | ->getRepository('WallabagCoreBundle:Entry') | 478 | ->getRepository('WallabagCoreBundle:Entry') |
411 | ->findAllByTagId($this->user->getId(), $tag['id']); | 479 | ->findAllByTagId($this->user->getId(), $tag['id']); |
@@ -413,6 +481,112 @@ class WallabagRestControllerTest extends WallabagApiTestCase | |||
413 | $this->assertCount(0, $entries); | 481 | $this->assertCount(0, $entries); |
414 | } | 482 | } |
415 | 483 | ||
484 | public function testDeleteTagByLabel() | ||
485 | { | ||
486 | $em = $this->client->getContainer()->get('doctrine.orm.entity_manager'); | ||
487 | $entry = $this->client->getContainer() | ||
488 | ->get('doctrine.orm.entity_manager') | ||
489 | ->getRepository('WallabagCoreBundle:Entry') | ||
490 | ->findOneWithTags($this->user->getId()); | ||
491 | |||
492 | $entry = $entry[0]; | ||
493 | |||
494 | $tag = new Tag(); | ||
495 | $tag->setLabel('Awesome tag for test'); | ||
496 | $em->persist($tag); | ||
497 | |||
498 | $entry->addTag($tag); | ||
499 | |||
500 | $em->persist($entry); | ||
501 | $em->flush(); | ||
502 | |||
503 | $this->client->request('DELETE', '/api/tag/label.json', ['tag' => $tag->getLabel()]); | ||
504 | |||
505 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); | ||
506 | |||
507 | $content = json_decode($this->client->getResponse()->getContent(), true); | ||
508 | |||
509 | $this->assertArrayHasKey('label', $content); | ||
510 | $this->assertEquals($tag->getLabel(), $content['label']); | ||
511 | $this->assertEquals($tag->getSlug(), $content['slug']); | ||
512 | |||
513 | $entries = $this->client->getContainer() | ||
514 | ->get('doctrine.orm.entity_manager') | ||
515 | ->getRepository('WallabagCoreBundle:Entry') | ||
516 | ->findAllByTagId($this->user->getId(), $tag->getId()); | ||
517 | |||
518 | $this->assertCount(0, $entries); | ||
519 | } | ||
520 | |||
521 | public function testDeleteTagByLabelNotFound() | ||
522 | { | ||
523 | $this->client->request('DELETE', '/api/tag/label.json', ['tag' => 'does not exist']); | ||
524 | |||
525 | $this->assertEquals(404, $this->client->getResponse()->getStatusCode()); | ||
526 | } | ||
527 | |||
528 | public function testDeleteTagsByLabel() | ||
529 | { | ||
530 | $em = $this->client->getContainer()->get('doctrine.orm.entity_manager'); | ||
531 | $entry = $this->client->getContainer() | ||
532 | ->get('doctrine.orm.entity_manager') | ||
533 | ->getRepository('WallabagCoreBundle:Entry') | ||
534 | ->findOneWithTags($this->user->getId()); | ||
535 | |||
536 | $entry = $entry[0]; | ||
537 | |||
538 | $tag = new Tag(); | ||
539 | $tag->setLabel('Awesome tag for tagsLabel'); | ||
540 | $em->persist($tag); | ||
541 | |||
542 | $tag2 = new Tag(); | ||
543 | $tag2->setLabel('Awesome tag for tagsLabel 2'); | ||
544 | $em->persist($tag2); | ||
545 | |||
546 | $entry->addTag($tag); | ||
547 | $entry->addTag($tag2); | ||
548 | |||
549 | $em->persist($entry); | ||
550 | $em->flush(); | ||
551 | |||
552 | $this->client->request('DELETE', '/api/tags/label.json', ['tags' => $tag->getLabel().','.$tag2->getLabel()]); | ||
553 | |||
554 | $this->assertEquals(200, $this->client->getResponse()->getStatusCode()); | ||
555 | |||
556 | $content = json_decode($this->client->getResponse()->getContent(), true); | ||
557 | |||
558 | $this->assertCount(2, $content); | ||
559 | |||
560 | $this->assertArrayHasKey('label', $content[0]); | ||
561 | $this->assertEquals($tag->getLabel(), $content[0]['label']); | ||
562 | $this->assertEquals($tag->getSlug(), $content[0]['slug']); | ||
563 | |||
564 | $this->assertArrayHasKey('label', $content[1]); | ||
565 | $this->assertEquals($tag2->getLabel(), $content[1]['label']); | ||
566 | $this->assertEquals($tag2->getSlug(), $content[1]['slug']); | ||
567 | |||
568 | $entries = $this->client->getContainer() | ||
569 | ->get('doctrine.orm.entity_manager') | ||
570 | ->getRepository('WallabagCoreBundle:Entry') | ||
571 | ->findAllByTagId($this->user->getId(), $tag->getId()); | ||
572 | |||
573 | $this->assertCount(0, $entries); | ||
574 | |||
575 | $entries = $this->client->getContainer() | ||
576 | ->get('doctrine.orm.entity_manager') | ||
577 | ->getRepository('WallabagCoreBundle:Entry') | ||
578 | ->findAllByTagId($this->user->getId(), $tag2->getId()); | ||
579 | |||
580 | $this->assertCount(0, $entries); | ||
581 | } | ||
582 | |||
583 | public function testDeleteTagsByLabelNotFound() | ||
584 | { | ||
585 | $this->client->request('DELETE', '/api/tags/label.json', ['tags' => 'does not exist']); | ||
586 | |||
587 | $this->assertEquals(404, $this->client->getResponse()->getStatusCode()); | ||
588 | } | ||
589 | |||
416 | public function testGetVersion() | 590 | public function testGetVersion() |
417 | { | 591 | { |
418 | $this->client->request('GET', '/api/version'); | 592 | $this->client->request('GET', '/api/version'); |
diff --git a/tests/Wallabag/CoreBundle/Command/InstallCommandTest.php b/tests/Wallabag/CoreBundle/Command/InstallCommandTest.php index 83f5bf24..1bfd41d5 100644 --- a/tests/Wallabag/CoreBundle/Command/InstallCommandTest.php +++ b/tests/Wallabag/CoreBundle/Command/InstallCommandTest.php | |||
@@ -33,7 +33,7 @@ class InstallCommandTest extends WallabagCoreTestCase | |||
33 | } | 33 | } |
34 | 34 | ||
35 | /** | 35 | /** |
36 | * Ensure next tests will have a clean database | 36 | * Ensure next tests will have a clean database. |
37 | */ | 37 | */ |
38 | public static function tearDownAfterClass() | 38 | public static function tearDownAfterClass() |
39 | { | 39 | { |
@@ -87,7 +87,6 @@ class InstallCommandTest extends WallabagCoreTestCase | |||
87 | $this->assertContains('Setting up database.', $tester->getDisplay()); | 87 | $this->assertContains('Setting up database.', $tester->getDisplay()); |
88 | $this->assertContains('Administration setup.', $tester->getDisplay()); | 88 | $this->assertContains('Administration setup.', $tester->getDisplay()); |
89 | $this->assertContains('Config setup.', $tester->getDisplay()); | 89 | $this->assertContains('Config setup.', $tester->getDisplay()); |
90 | $this->assertContains('Installing assets.', $tester->getDisplay()); | ||
91 | } | 90 | } |
92 | 91 | ||
93 | public function testRunInstallCommandWithReset() | 92 | public function testRunInstallCommandWithReset() |
@@ -119,7 +118,6 @@ class InstallCommandTest extends WallabagCoreTestCase | |||
119 | $this->assertContains('Droping database, creating database and schema, clearing the cache', $tester->getDisplay()); | 118 | $this->assertContains('Droping database, creating database and schema, clearing the cache', $tester->getDisplay()); |
120 | $this->assertContains('Administration setup.', $tester->getDisplay()); | 119 | $this->assertContains('Administration setup.', $tester->getDisplay()); |
121 | $this->assertContains('Config setup.', $tester->getDisplay()); | 120 | $this->assertContains('Config setup.', $tester->getDisplay()); |
122 | $this->assertContains('Installing assets.', $tester->getDisplay()); | ||
123 | 121 | ||
124 | // we force to reset everything | 122 | // we force to reset everything |
125 | $this->assertContains('Droping database, creating database and schema, clearing the cache', $tester->getDisplay()); | 123 | $this->assertContains('Droping database, creating database and schema, clearing the cache', $tester->getDisplay()); |
@@ -170,7 +168,6 @@ class InstallCommandTest extends WallabagCoreTestCase | |||
170 | $this->assertContains('Setting up database.', $tester->getDisplay()); | 168 | $this->assertContains('Setting up database.', $tester->getDisplay()); |
171 | $this->assertContains('Administration setup.', $tester->getDisplay()); | 169 | $this->assertContains('Administration setup.', $tester->getDisplay()); |
172 | $this->assertContains('Config setup.', $tester->getDisplay()); | 170 | $this->assertContains('Config setup.', $tester->getDisplay()); |
173 | $this->assertContains('Installing assets.', $tester->getDisplay()); | ||
174 | 171 | ||
175 | // the current database doesn't already exist | 172 | // the current database doesn't already exist |
176 | $this->assertContains('Creating database and schema, clearing the cache', $tester->getDisplay()); | 173 | $this->assertContains('Creating database and schema, clearing the cache', $tester->getDisplay()); |
@@ -208,7 +205,6 @@ class InstallCommandTest extends WallabagCoreTestCase | |||
208 | $this->assertContains('Setting up database.', $tester->getDisplay()); | 205 | $this->assertContains('Setting up database.', $tester->getDisplay()); |
209 | $this->assertContains('Administration setup.', $tester->getDisplay()); | 206 | $this->assertContains('Administration setup.', $tester->getDisplay()); |
210 | $this->assertContains('Config setup.', $tester->getDisplay()); | 207 | $this->assertContains('Config setup.', $tester->getDisplay()); |
211 | $this->assertContains('Installing assets.', $tester->getDisplay()); | ||
212 | 208 | ||
213 | $this->assertContains('Droping schema and creating schema', $tester->getDisplay()); | 209 | $this->assertContains('Droping schema and creating schema', $tester->getDisplay()); |
214 | } | 210 | } |
@@ -263,7 +259,6 @@ class InstallCommandTest extends WallabagCoreTestCase | |||
263 | $this->assertContains('Setting up database.', $tester->getDisplay()); | 259 | $this->assertContains('Setting up database.', $tester->getDisplay()); |
264 | $this->assertContains('Administration setup.', $tester->getDisplay()); | 260 | $this->assertContains('Administration setup.', $tester->getDisplay()); |
265 | $this->assertContains('Config setup.', $tester->getDisplay()); | 261 | $this->assertContains('Config setup.', $tester->getDisplay()); |
266 | $this->assertContains('Installing assets.', $tester->getDisplay()); | ||
267 | 262 | ||
268 | $this->assertContains('Creating schema', $tester->getDisplay()); | 263 | $this->assertContains('Creating schema', $tester->getDisplay()); |
269 | } | 264 | } |
@@ -296,6 +291,5 @@ class InstallCommandTest extends WallabagCoreTestCase | |||
296 | $this->assertContains('Setting up database.', $tester->getDisplay()); | 291 | $this->assertContains('Setting up database.', $tester->getDisplay()); |
297 | $this->assertContains('Administration setup.', $tester->getDisplay()); | 292 | $this->assertContains('Administration setup.', $tester->getDisplay()); |
298 | $this->assertContains('Config setup.', $tester->getDisplay()); | 293 | $this->assertContains('Config setup.', $tester->getDisplay()); |
299 | $this->assertContains('Installing assets.', $tester->getDisplay()); | ||
300 | } | 294 | } |
301 | } | 295 | } |
diff --git a/tests/Wallabag/CoreBundle/Controller/DeveloperControllerTest.php b/tests/Wallabag/CoreBundle/Controller/DeveloperControllerTest.php index 79452ace..97ed0d58 100644 --- a/tests/Wallabag/CoreBundle/Controller/DeveloperControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/DeveloperControllerTest.php | |||
@@ -18,12 +18,19 @@ class DeveloperControllerTest extends WallabagCoreTestCase | |||
18 | 18 | ||
19 | $form = $crawler->filter('button[type=submit]')->form(); | 19 | $form = $crawler->filter('button[type=submit]')->form(); |
20 | 20 | ||
21 | $client->submit($form); | 21 | $data = [ |
22 | 'client[name]' => 'My app', | ||
23 | ]; | ||
24 | |||
25 | $crawler = $client->submit($form, $data); | ||
22 | 26 | ||
23 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 27 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); |
24 | 28 | ||
25 | $newNbClients = $em->getRepository('WallabagApiBundle:Client')->findAll(); | 29 | $newNbClients = $em->getRepository('WallabagApiBundle:Client')->findAll(); |
26 | $this->assertGreaterThan(count($nbClients), count($newNbClients)); | 30 | $this->assertGreaterThan(count($nbClients), count($newNbClients)); |
31 | |||
32 | $this->assertGreaterThan(1, $alert = $crawler->filter('.settings ul li strong')->extract(['_text'])); | ||
33 | $this->assertContains('My app', $alert[0]); | ||
27 | } | 34 | } |
28 | 35 | ||
29 | public function testListingClient() | 36 | public function testListingClient() |
diff --git a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php index 5c739c78..a74c17d9 100644 --- a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php | |||
@@ -236,6 +236,16 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
236 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 236 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); |
237 | } | 237 | } |
238 | 238 | ||
239 | public function testUntagged() | ||
240 | { | ||
241 | $this->logInAs('admin'); | ||
242 | $client = $this->getClient(); | ||
243 | |||
244 | $client->request('GET', '/untagged/list'); | ||
245 | |||
246 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
247 | } | ||
248 | |||
239 | public function testStarred() | 249 | public function testStarred() |
240 | { | 250 | { |
241 | $this->logInAs('admin'); | 251 | $this->logInAs('admin'); |
@@ -698,4 +708,47 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
698 | $crawler = $client->submit($form, $data); | 708 | $crawler = $client->submit($form, $data); |
699 | $this->assertCount(2, $crawler->filter('div[class=entry]')); | 709 | $this->assertCount(2, $crawler->filter('div[class=entry]')); |
700 | } | 710 | } |
711 | |||
712 | public function testCache() | ||
713 | { | ||
714 | $this->logInAs('admin'); | ||
715 | $client = $this->getClient(); | ||
716 | |||
717 | $content = $client->getContainer() | ||
718 | ->get('doctrine.orm.entity_manager') | ||
719 | ->getRepository('WallabagCoreBundle:Entry') | ||
720 | ->findOneByUser($this->getLoggedInUserId()); | ||
721 | |||
722 | // no uuid | ||
723 | $client->request('GET', '/share/'.$content->getUuid()); | ||
724 | $this->assertEquals(404, $client->getResponse()->getStatusCode()); | ||
725 | |||
726 | // generating the uuid | ||
727 | $client->request('GET', '/share/'.$content->getId()); | ||
728 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
729 | |||
730 | // follow link with uuid | ||
731 | $crawler = $client->followRedirect(); | ||
732 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
733 | $this->assertContains('max-age=25200', $client->getResponse()->headers->get('cache-control')); | ||
734 | $this->assertContains('public', $client->getResponse()->headers->get('cache-control')); | ||
735 | $this->assertContains('s-maxage=25200', $client->getResponse()->headers->get('cache-control')); | ||
736 | $this->assertNotContains('no-cache', $client->getResponse()->headers->get('cache-control')); | ||
737 | |||
738 | // sharing is now disabled | ||
739 | $client->getContainer()->get('craue_config')->set('share_public', 0); | ||
740 | $client->request('GET', '/share/'.$content->getUuid()); | ||
741 | $this->assertEquals(404, $client->getResponse()->getStatusCode()); | ||
742 | |||
743 | $client->request('GET', '/view/'.$content->getId()); | ||
744 | $this->assertContains('no-cache', $client->getResponse()->headers->get('cache-control')); | ||
745 | |||
746 | // removing the share | ||
747 | $client->request('GET', '/share/delete/'.$content->getId()); | ||
748 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
749 | |||
750 | // share is now disable | ||
751 | $client->request('GET', '/share/'.$content->getUuid()); | ||
752 | $this->assertEquals(404, $client->getResponse()->getStatusCode()); | ||
753 | } | ||
701 | } | 754 | } |
diff --git a/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php b/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php index b22156c3..47b86117 100644 --- a/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php | |||
@@ -168,7 +168,7 @@ class ExportControllerTest extends WallabagCoreTestCase | |||
168 | $this->assertGreaterThan(1, $csv); | 168 | $this->assertGreaterThan(1, $csv); |
169 | // +1 for title line | 169 | // +1 for title line |
170 | $this->assertEquals(count($contentInDB) + 1, count($csv)); | 170 | $this->assertEquals(count($contentInDB) + 1, count($csv)); |
171 | $this->assertEquals('Title;URL;Content;Tags;"MIME Type";Language', $csv[0]); | 171 | $this->assertEquals('Title;URL;Content;Tags;"MIME Type";Language;"Creation date"', $csv[0]); |
172 | } | 172 | } |
173 | 173 | ||
174 | public function testJsonExport() | 174 | public function testJsonExport() |
@@ -210,6 +210,8 @@ class ExportControllerTest extends WallabagCoreTestCase | |||
210 | $this->assertArrayHasKey('reading_time', $content[0]); | 210 | $this->assertArrayHasKey('reading_time', $content[0]); |
211 | $this->assertArrayHasKey('domain_name', $content[0]); | 211 | $this->assertArrayHasKey('domain_name', $content[0]); |
212 | $this->assertArrayHasKey('tags', $content[0]); | 212 | $this->assertArrayHasKey('tags', $content[0]); |
213 | $this->assertArrayHasKey('created_at', $content[0]); | ||
214 | $this->assertArrayHasKey('updated_at', $content[0]); | ||
213 | } | 215 | } |
214 | 216 | ||
215 | public function testXmlExport() | 217 | public function testXmlExport() |
@@ -247,5 +249,7 @@ class ExportControllerTest extends WallabagCoreTestCase | |||
247 | $this->assertNotEmpty('url', (string) $content->entry[0]->url); | 249 | $this->assertNotEmpty('url', (string) $content->entry[0]->url); |
248 | $this->assertNotEmpty('content', (string) $content->entry[0]->content); | 250 | $this->assertNotEmpty('content', (string) $content->entry[0]->content); |
249 | $this->assertNotEmpty('domain_name', (string) $content->entry[0]->domain_name); | 251 | $this->assertNotEmpty('domain_name', (string) $content->entry[0]->domain_name); |
252 | $this->assertNotEmpty('created_at', (string) $content->entry[0]->created_at); | ||
253 | $this->assertNotEmpty('updated_at', (string) $content->entry[0]->updated_at); | ||
250 | } | 254 | } |
251 | } | 255 | } |
diff --git a/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php b/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php index 03355f5a..08f4676e 100644 --- a/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php | |||
@@ -69,4 +69,19 @@ class SecurityControllerTest extends WallabagCoreTestCase | |||
69 | $this->assertTrue($user->isTrustedComputer('ABCDEF')); | 69 | $this->assertTrue($user->isTrustedComputer('ABCDEF')); |
70 | $this->assertFalse($user->isTrustedComputer('FEDCBA')); | 70 | $this->assertFalse($user->isTrustedComputer('FEDCBA')); |
71 | } | 71 | } |
72 | |||
73 | public function testEnabledRegistration() | ||
74 | { | ||
75 | $client = $this->getClient(); | ||
76 | |||
77 | if (!$client->getContainer()->getParameter('fosuser_registration')) { | ||
78 | $this->markTestSkipped('fosuser_registration is not enabled.'); | ||
79 | |||
80 | return; | ||
81 | } | ||
82 | |||
83 | $client->followRedirects(); | ||
84 | $crawler = $client->request('GET', '/register'); | ||
85 | $this->assertContains('registration.submit', $crawler->filter('body')->extract(['_text'])[0]); | ||
86 | } | ||
72 | } | 87 | } |
diff --git a/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php b/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php index 58450e5f..2c32393f 100644 --- a/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php | |||
@@ -47,7 +47,7 @@ class TagControllerTest extends WallabagCoreTestCase | |||
47 | 47 | ||
48 | $this->assertEquals(1, count($entry->getTags())); | 48 | $this->assertEquals(1, count($entry->getTags())); |
49 | 49 | ||
50 | # tag already exists and already assigned | 50 | // tag already exists and already assigned |
51 | $client->submit($form, $data); | 51 | $client->submit($form, $data); |
52 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 52 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); |
53 | 53 | ||
@@ -58,7 +58,7 @@ class TagControllerTest extends WallabagCoreTestCase | |||
58 | 58 | ||
59 | $this->assertEquals(1, count($newEntry->getTags())); | 59 | $this->assertEquals(1, count($newEntry->getTags())); |
60 | 60 | ||
61 | # tag already exists but still not assigned to this entry | 61 | // tag already exists but still not assigned to this entry |
62 | $data = [ | 62 | $data = [ |
63 | 'tag[label]' => 'foo', | 63 | 'tag[label]' => 'foo', |
64 | ]; | 64 | ]; |
@@ -131,4 +131,35 @@ class TagControllerTest extends WallabagCoreTestCase | |||
131 | 131 | ||
132 | $this->assertEquals(404, $client->getResponse()->getStatusCode()); | 132 | $this->assertEquals(404, $client->getResponse()->getStatusCode()); |
133 | } | 133 | } |
134 | |||
135 | public function testShowEntriesForTagAction() | ||
136 | { | ||
137 | $this->logInAs('admin'); | ||
138 | $client = $this->getClient(); | ||
139 | |||
140 | $entry = $client->getContainer() | ||
141 | ->get('doctrine.orm.entity_manager') | ||
142 | ->getRepository('WallabagCoreBundle:Entry') | ||
143 | ->findOneByUsernameAndNotArchived('admin'); | ||
144 | |||
145 | $tag = $client->getContainer() | ||
146 | ->get('doctrine.orm.entity_manager') | ||
147 | ->getRepository('WallabagCoreBundle:Tag') | ||
148 | ->findOneByEntryAndTagLabel($entry, 'foo'); | ||
149 | |||
150 | $crawler = $client->request('GET', '/tag/list/'.$tag->getSlug()); | ||
151 | |||
152 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
153 | $this->assertCount(2, $crawler->filter('div[class=entry]')); | ||
154 | |||
155 | $tag = $client->getContainer() | ||
156 | ->get('doctrine.orm.entity_manager') | ||
157 | ->getRepository('WallabagCoreBundle:Tag') | ||
158 | ->findOneByLabel('baz'); | ||
159 | |||
160 | $crawler = $client->request('GET', '/tag/list/'.$tag->getSlug()); | ||
161 | |||
162 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
163 | $this->assertCount(0, $crawler->filter('div[class=entry]')); | ||
164 | } | ||
134 | } | 165 | } |
diff --git a/tests/Wallabag/CoreBundle/EventListener/LocaleListenerTest.php b/tests/Wallabag/CoreBundle/EventListener/LocaleListenerTest.php index 2a7f9390..078bb69a 100644 --- a/tests/Wallabag/CoreBundle/EventListener/LocaleListenerTest.php +++ b/tests/Wallabag/CoreBundle/EventListener/LocaleListenerTest.php | |||
@@ -15,7 +15,11 @@ class LocaleListenerTest extends \PHPUnit_Framework_TestCase | |||
15 | { | 15 | { |
16 | private function getEvent(Request $request) | 16 | private function getEvent(Request $request) |
17 | { | 17 | { |
18 | return new GetResponseEvent($this->getMock('Symfony\Component\HttpKernel\HttpKernelInterface'), $request, HttpKernelInterface::MASTER_REQUEST); | 18 | $kernel = $this->getMockBuilder('Symfony\Component\HttpKernel\HttpKernelInterface') |
19 | ->disableOriginalConstructor() | ||
20 | ->getMock(); | ||
21 | |||
22 | return new GetResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST); | ||
19 | } | 23 | } |
20 | 24 | ||
21 | public function testWithoutSession() | 25 | public function testWithoutSession() |
diff --git a/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php b/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php index 7abb0737..5d772602 100644 --- a/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php +++ b/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php | |||
@@ -296,6 +296,29 @@ class ContentProxyTest extends \PHPUnit_Framework_TestCase | |||
296 | $this->assertEquals('tag2', $entry->getTags()[1]->getLabel()); | 296 | $this->assertEquals('tag2', $entry->getTags()[1]->getLabel()); |
297 | } | 297 | } |
298 | 298 | ||
299 | public function testAssignTagsNotFlushed() | ||
300 | { | ||
301 | $graby = $this->getMockBuilder('Graby\Graby') | ||
302 | ->disableOriginalConstructor() | ||
303 | ->getMock(); | ||
304 | |||
305 | $tagRepo = $this->getTagRepositoryMock(); | ||
306 | $tagRepo->expects($this->never()) | ||
307 | ->method('__call'); | ||
308 | |||
309 | $proxy = new ContentProxy($graby, $this->getTaggerMock(), $tagRepo, $this->getLogger()); | ||
310 | |||
311 | $tagEntity = new Tag(); | ||
312 | $tagEntity->setLabel('tag1'); | ||
313 | |||
314 | $entry = new Entry(new User()); | ||
315 | |||
316 | $proxy->assignTagsToEntry($entry, 'tag1', [$tagEntity]); | ||
317 | |||
318 | $this->assertCount(1, $entry->getTags()); | ||
319 | $this->assertEquals('tag1', $entry->getTags()[0]->getLabel()); | ||
320 | } | ||
321 | |||
299 | private function getTaggerMock() | 322 | private function getTaggerMock() |
300 | { | 323 | { |
301 | return $this->getMockBuilder('Wallabag\CoreBundle\Helper\RuleBasedTagger') | 324 | return $this->getMockBuilder('Wallabag\CoreBundle\Helper\RuleBasedTagger') |
diff --git a/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php b/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php index c0055888..4f103921 100644 --- a/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php +++ b/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php | |||
@@ -80,4 +80,19 @@ abstract class WallabagCoreTestCase extends WebTestCase | |||
80 | 80 | ||
81 | throw new \RuntimeException('No logged in User.'); | 81 | throw new \RuntimeException('No logged in User.'); |
82 | } | 82 | } |
83 | |||
84 | /** | ||
85 | * Check if Redis is installed. | ||
86 | * If not, mark test as skip. | ||
87 | */ | ||
88 | protected function checkRedis() | ||
89 | { | ||
90 | try { | ||
91 | $this->client->getContainer()->get('wallabag_core.redis.client')->connect(); | ||
92 | } catch (\Exception $e) { | ||
93 | $this->markTestSkipped( | ||
94 | 'Redis is not installed/activated' | ||
95 | ); | ||
96 | } | ||
97 | } | ||
83 | } | 98 | } |
diff --git a/tests/Wallabag/ImportBundle/Command/ImportCommandTest.php b/tests/Wallabag/ImportBundle/Command/ImportCommandTest.php new file mode 100644 index 00000000..7be1eb18 --- /dev/null +++ b/tests/Wallabag/ImportBundle/Command/ImportCommandTest.php | |||
@@ -0,0 +1,85 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\ImportBundle\Command; | ||
4 | |||
5 | use Symfony\Bundle\FrameworkBundle\Console\Application; | ||
6 | use Symfony\Component\Console\Tester\CommandTester; | ||
7 | use Wallabag\ImportBundle\Command\ImportCommand; | ||
8 | use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; | ||
9 | |||
10 | class ImportCommandTest extends WallabagCoreTestCase | ||
11 | { | ||
12 | /** | ||
13 | * @expectedException Symfony\Component\Console\Exception\RuntimeException | ||
14 | * @expectedExceptionMessage Not enough arguments | ||
15 | */ | ||
16 | public function testRunImportCommandWithoutArguments() | ||
17 | { | ||
18 | $application = new Application($this->getClient()->getKernel()); | ||
19 | $application->add(new ImportCommand()); | ||
20 | |||
21 | $command = $application->find('wallabag:import'); | ||
22 | |||
23 | $tester = new CommandTester($command); | ||
24 | $tester->execute([ | ||
25 | 'command' => $command->getName(), | ||
26 | ]); | ||
27 | } | ||
28 | |||
29 | /** | ||
30 | * @expectedException Symfony\Component\Config\Definition\Exception\Exception | ||
31 | * @expectedExceptionMessage not found | ||
32 | */ | ||
33 | public function testRunImportCommandWithoutFilepath() | ||
34 | { | ||
35 | $application = new Application($this->getClient()->getKernel()); | ||
36 | $application->add(new ImportCommand()); | ||
37 | |||
38 | $command = $application->find('wallabag:import'); | ||
39 | |||
40 | $tester = new CommandTester($command); | ||
41 | $tester->execute([ | ||
42 | 'command' => $command->getName(), | ||
43 | 'userId' => 1, | ||
44 | 'filepath' => 1, | ||
45 | ]); | ||
46 | } | ||
47 | |||
48 | /** | ||
49 | * @expectedException Symfony\Component\Config\Definition\Exception\Exception | ||
50 | * @expectedExceptionMessage User with id | ||
51 | */ | ||
52 | public function testRunImportCommandWithoutUserId() | ||
53 | { | ||
54 | $application = new Application($this->getClient()->getKernel()); | ||
55 | $application->add(new ImportCommand()); | ||
56 | |||
57 | $command = $application->find('wallabag:import'); | ||
58 | |||
59 | $tester = new CommandTester($command); | ||
60 | $tester->execute([ | ||
61 | 'command' => $command->getName(), | ||
62 | 'userId' => 0, | ||
63 | 'filepath' => './', | ||
64 | ]); | ||
65 | } | ||
66 | |||
67 | public function testRunImportCommand() | ||
68 | { | ||
69 | $application = new Application($this->getClient()->getKernel()); | ||
70 | $application->add(new ImportCommand()); | ||
71 | |||
72 | $command = $application->find('wallabag:import'); | ||
73 | |||
74 | $tester = new CommandTester($command); | ||
75 | $tester->execute([ | ||
76 | 'command' => $command->getName(), | ||
77 | 'userId' => 1, | ||
78 | 'filepath' => $application->getKernel()->getContainer()->getParameter('kernel.root_dir').'/../tests/Wallabag/ImportBundle/fixtures/wallabag-v2-read.json', | ||
79 | '--importer' => 'v2', | ||
80 | ]); | ||
81 | |||
82 | $this->assertContains('imported', $tester->getDisplay()); | ||
83 | $this->assertContains('already saved', $tester->getDisplay()); | ||
84 | } | ||
85 | } | ||
diff --git a/tests/Wallabag/ImportBundle/Command/RedisWorkerCommandTest.php b/tests/Wallabag/ImportBundle/Command/RedisWorkerCommandTest.php new file mode 100644 index 00000000..74952847 --- /dev/null +++ b/tests/Wallabag/ImportBundle/Command/RedisWorkerCommandTest.php | |||
@@ -0,0 +1,74 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\ImportBundle\Command; | ||
4 | |||
5 | use Symfony\Bundle\FrameworkBundle\Console\Application; | ||
6 | use Symfony\Component\Console\Tester\CommandTester; | ||
7 | use Wallabag\ImportBundle\Command\RedisWorkerCommand; | ||
8 | use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; | ||
9 | use M6Web\Component\RedisMock\RedisMockFactory; | ||
10 | |||
11 | class RedisWorkerCommandTest extends WallabagCoreTestCase | ||
12 | { | ||
13 | /** | ||
14 | * @expectedException Symfony\Component\Console\Exception\RuntimeException | ||
15 | * @expectedExceptionMessage Not enough arguments (missing: "serviceName") | ||
16 | */ | ||
17 | public function testRunRedisWorkerCommandWithoutArguments() | ||
18 | { | ||
19 | $application = new Application($this->getClient()->getKernel()); | ||
20 | $application->add(new RedisWorkerCommand()); | ||
21 | |||
22 | $command = $application->find('wallabag:import:redis-worker'); | ||
23 | |||
24 | $tester = new CommandTester($command); | ||
25 | $tester->execute([ | ||
26 | 'command' => $command->getName(), | ||
27 | ]); | ||
28 | } | ||
29 | |||
30 | /** | ||
31 | * @expectedException Symfony\Component\Config\Definition\Exception\Exception | ||
32 | * @expectedExceptionMessage No queue or consumer found for service name | ||
33 | */ | ||
34 | public function testRunRedisWorkerCommandWithBadService() | ||
35 | { | ||
36 | $application = new Application($this->getClient()->getKernel()); | ||
37 | $application->add(new RedisWorkerCommand()); | ||
38 | |||
39 | $command = $application->find('wallabag:import:redis-worker'); | ||
40 | |||
41 | $tester = new CommandTester($command); | ||
42 | $tester->execute([ | ||
43 | 'command' => $command->getName(), | ||
44 | 'serviceName' => 'YOMONSERVICE', | ||
45 | ]); | ||
46 | } | ||
47 | |||
48 | public function testRunRedisWorkerCommand() | ||
49 | { | ||
50 | $application = new Application($this->getClient()->getKernel()); | ||
51 | $application->add(new RedisWorkerCommand()); | ||
52 | |||
53 | $factory = new RedisMockFactory(); | ||
54 | $redisMock = $factory->getAdapter('Predis\Client', true); | ||
55 | |||
56 | $application->getKernel()->getContainer()->set('wallabag_core.redis.client', $redisMock); | ||
57 | |||
58 | // put a fake message in the queue so the worker will stop after reading that message | ||
59 | // instead of waiting for others | ||
60 | $redisMock->lpush('wallabag.import.readability', '{}'); | ||
61 | |||
62 | $command = $application->find('wallabag:import:redis-worker'); | ||
63 | |||
64 | $tester = new CommandTester($command); | ||
65 | $tester->execute([ | ||
66 | 'command' => $command->getName(), | ||
67 | 'serviceName' => 'readability', | ||
68 | '--maxIterations' => 1, | ||
69 | ]); | ||
70 | |||
71 | $this->assertContains('Worker started at', $tester->getDisplay()); | ||
72 | $this->assertContains('Waiting for message', $tester->getDisplay()); | ||
73 | } | ||
74 | } | ||
diff --git a/tests/Wallabag/ImportBundle/Consumer/AMQPEntryConsumerTest.php b/tests/Wallabag/ImportBundle/Consumer/AMQPEntryConsumerTest.php new file mode 100644 index 00000000..a3263771 --- /dev/null +++ b/tests/Wallabag/ImportBundle/Consumer/AMQPEntryConsumerTest.php | |||
@@ -0,0 +1,225 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\ImportBundle\Consumer\AMQP; | ||
4 | |||
5 | use Wallabag\ImportBundle\Consumer\AMQPEntryConsumer; | ||
6 | use PhpAmqpLib\Message\AMQPMessage; | ||
7 | use Wallabag\UserBundle\Entity\User; | ||
8 | use Wallabag\CoreBundle\Entity\Entry; | ||
9 | |||
10 | class AMQPEntryConsumerTest extends \PHPUnit_Framework_TestCase | ||
11 | { | ||
12 | public function testMessageOk() | ||
13 | { | ||
14 | $em = $this->getMockBuilder('Doctrine\ORM\EntityManager') | ||
15 | ->disableOriginalConstructor() | ||
16 | ->getMock(); | ||
17 | |||
18 | $em | ||
19 | ->expects($this->once()) | ||
20 | ->method('flush'); | ||
21 | |||
22 | $em | ||
23 | ->expects($this->exactly(2)) | ||
24 | ->method('clear'); | ||
25 | |||
26 | $body = <<<'JSON' | ||
27 | { | ||
28 | "item_id": "1402935436", | ||
29 | "resolved_id": "1402935436", | ||
30 | "given_url": "http://mashable.com/2016/09/04/leslie-jones-back-on-twitter-after-hack/?utm_campaign=Mash-Prod-RSS-Feedburner-All-Partial&utm_cid=Mash-Prod-RSS-Feedburner-All-Partial", | ||
31 | "given_title": "Leslie Jones is back on Twitter and her comeback tweet rules", | ||
32 | "favorite": "0", | ||
33 | "status": "0", | ||
34 | "time_added": "1473020899", | ||
35 | "time_updated": "1473020899", | ||
36 | "time_read": "0", | ||
37 | "time_favorited": "0", | ||
38 | "sort_id": 0, | ||
39 | "resolved_title": "Leslie Jones is back on Twitter and her comeback tweet rules", | ||
40 | "resolved_url": "http://mashable.com/2016/09/04/leslie-jones-back-on-twitter-after-hack/?utm_campaign=Mash-Prod-RSS-Feedburner-All-Partial&utm_cid=Mash-Prod-RSS-Feedburner-All-Partial", | ||
41 | "excerpt": "Leslie Jones is back to communicating with her adoring public on Twitter after cowardly hacker-trolls drove her away, probably to compensate for their own failings. It all started with a mic drop ...", | ||
42 | "is_article": "1", | ||
43 | "is_index": "0", | ||
44 | "has_video": "0", | ||
45 | "has_image": "1", | ||
46 | "word_count": "200", | ||
47 | "tags": { | ||
48 | "ifttt": { | ||
49 | "item_id": "1402935436", | ||
50 | "tag": "ifttt" | ||
51 | }, | ||
52 | "mashable": { | ||
53 | "item_id": "1402935436", | ||
54 | "tag": "mashable" | ||
55 | } | ||
56 | }, | ||
57 | "authors": { | ||
58 | "2484273": { | ||
59 | "item_id": "1402935436", | ||
60 | "author_id": "2484273", | ||
61 | "name": "Adam Rosenberg", | ||
62 | "url": "http://mashable.com/author/adam-rosenberg/" | ||
63 | } | ||
64 | }, | ||
65 | "image": { | ||
66 | "item_id": "1402935436", | ||
67 | "src": "http://i.amz.mshcdn.com/i-V5cS6_sDqFABaVR0hVSBJqG_w=/950x534/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fcard%2Fimage%2F199899%2Fleslie_jones_war_dogs.jpg", | ||
68 | "width": "0", | ||
69 | "height": "0" | ||
70 | }, | ||
71 | "images": { | ||
72 | "1": { | ||
73 | "item_id": "1402935436", | ||
74 | "image_id": "1", | ||
75 | "src": "http://i.amz.mshcdn.com/i-V5cS6_sDqFABaVR0hVSBJqG_w=/950x534/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fcard%2Fimage%2F199899%2Fleslie_jones_war_dogs.jpg", | ||
76 | "width": "0", | ||
77 | "height": "0", | ||
78 | "credit": "Image: Steve Eichner/NameFace/Sipa USA", | ||
79 | "caption": "" | ||
80 | } | ||
81 | }, | ||
82 | "userId": 1 | ||
83 | } | ||
84 | JSON; | ||
85 | |||
86 | $user = new User(); | ||
87 | $entry = new Entry($user); | ||
88 | |||
89 | $userRepository = $this->getMockBuilder('Wallabag\UserBundle\Repository\UserRepository') | ||
90 | ->disableOriginalConstructor() | ||
91 | ->getMock(); | ||
92 | |||
93 | $userRepository | ||
94 | ->expects($this->once()) | ||
95 | ->method('find') | ||
96 | // userId from the body json above | ||
97 | ->with(1) | ||
98 | ->willReturn($user); | ||
99 | |||
100 | $import = $this->getMockBuilder('Wallabag\ImportBundle\Import\AbstractImport') | ||
101 | ->disableOriginalConstructor() | ||
102 | ->getMock(); | ||
103 | |||
104 | $import | ||
105 | ->expects($this->once()) | ||
106 | ->method('setUser') | ||
107 | ->with($user); | ||
108 | |||
109 | $import | ||
110 | ->expects($this->once()) | ||
111 | ->method('parseEntry') | ||
112 | ->with(json_decode($body, true)) | ||
113 | ->willReturn($entry); | ||
114 | |||
115 | $consumer = new AMQPEntryConsumer( | ||
116 | $em, | ||
117 | $userRepository, | ||
118 | $import | ||
119 | ); | ||
120 | |||
121 | $message = new AMQPMessage($body); | ||
122 | |||
123 | $consumer->execute($message); | ||
124 | } | ||
125 | |||
126 | public function testMessageWithBadUser() | ||
127 | { | ||
128 | $em = $this->getMockBuilder('Doctrine\ORM\EntityManager') | ||
129 | ->disableOriginalConstructor() | ||
130 | ->getMock(); | ||
131 | |||
132 | $em | ||
133 | ->expects($this->never()) | ||
134 | ->method('flush'); | ||
135 | |||
136 | $em | ||
137 | ->expects($this->never()) | ||
138 | ->method('clear'); | ||
139 | |||
140 | $body = '{ "userId": 123 }'; | ||
141 | |||
142 | $user = new User(); | ||
143 | $entry = new Entry($user); | ||
144 | |||
145 | $userRepository = $this->getMockBuilder('Wallabag\UserBundle\Repository\UserRepository') | ||
146 | ->disableOriginalConstructor() | ||
147 | ->getMock(); | ||
148 | |||
149 | $userRepository | ||
150 | ->expects($this->once()) | ||
151 | ->method('find') | ||
152 | // userId from the body json above | ||
153 | ->with(123) | ||
154 | ->willReturn(null); | ||
155 | |||
156 | $import = $this->getMockBuilder('Wallabag\ImportBundle\Import\AbstractImport') | ||
157 | ->disableOriginalConstructor() | ||
158 | ->getMock(); | ||
159 | |||
160 | $consumer = new AMQPEntryConsumer( | ||
161 | $em, | ||
162 | $userRepository, | ||
163 | $import | ||
164 | ); | ||
165 | |||
166 | $message = new AMQPMessage($body); | ||
167 | |||
168 | $consumer->execute($message); | ||
169 | } | ||
170 | |||
171 | public function testMessageWithEntryProcessed() | ||
172 | { | ||
173 | $em = $this->getMockBuilder('Doctrine\ORM\EntityManager') | ||
174 | ->disableOriginalConstructor() | ||
175 | ->getMock(); | ||
176 | |||
177 | $em | ||
178 | ->expects($this->never()) | ||
179 | ->method('flush'); | ||
180 | |||
181 | $em | ||
182 | ->expects($this->never()) | ||
183 | ->method('clear'); | ||
184 | |||
185 | $body = '{ "userId": 123 }'; | ||
186 | |||
187 | $user = new User(); | ||
188 | |||
189 | $userRepository = $this->getMockBuilder('Wallabag\UserBundle\Repository\UserRepository') | ||
190 | ->disableOriginalConstructor() | ||
191 | ->getMock(); | ||
192 | |||
193 | $userRepository | ||
194 | ->expects($this->once()) | ||
195 | ->method('find') | ||
196 | // userId from the body json above | ||
197 | ->with(123) | ||
198 | ->willReturn($user); | ||
199 | |||
200 | $import = $this->getMockBuilder('Wallabag\ImportBundle\Import\AbstractImport') | ||
201 | ->disableOriginalConstructor() | ||
202 | ->getMock(); | ||
203 | |||
204 | $import | ||
205 | ->expects($this->once()) | ||
206 | ->method('setUser') | ||
207 | ->with($user); | ||
208 | |||
209 | $import | ||
210 | ->expects($this->once()) | ||
211 | ->method('parseEntry') | ||
212 | ->with(json_decode($body, true)) | ||
213 | ->willReturn(null); | ||
214 | |||
215 | $consumer = new AMQPEntryConsumer( | ||
216 | $em, | ||
217 | $userRepository, | ||
218 | $import | ||
219 | ); | ||
220 | |||
221 | $message = new AMQPMessage($body); | ||
222 | |||
223 | $consumer->execute($message); | ||
224 | } | ||
225 | } | ||
diff --git a/tests/Wallabag/ImportBundle/Consumer/RedisEntryConsumerTest.php b/tests/Wallabag/ImportBundle/Consumer/RedisEntryConsumerTest.php new file mode 100644 index 00000000..5e8ee41d --- /dev/null +++ b/tests/Wallabag/ImportBundle/Consumer/RedisEntryConsumerTest.php | |||
@@ -0,0 +1,225 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\ImportBundle\Consumer\AMQP; | ||
4 | |||
5 | use Wallabag\ImportBundle\Consumer\RedisEntryConsumer; | ||
6 | use Wallabag\UserBundle\Entity\User; | ||
7 | use Wallabag\CoreBundle\Entity\Entry; | ||
8 | |||
9 | class RedisEntryConsumerTest extends \PHPUnit_Framework_TestCase | ||
10 | { | ||
11 | public function testMessageOk() | ||
12 | { | ||
13 | $em = $this->getMockBuilder('Doctrine\ORM\EntityManager') | ||
14 | ->disableOriginalConstructor() | ||
15 | ->getMock(); | ||
16 | |||
17 | $em | ||
18 | ->expects($this->once()) | ||
19 | ->method('flush'); | ||
20 | |||
21 | $em | ||
22 | ->expects($this->exactly(2)) | ||
23 | ->method('clear'); | ||
24 | |||
25 | $body = <<<'JSON' | ||
26 | { | ||
27 | "item_id": "1402935436", | ||
28 | "resolved_id": "1402935436", | ||
29 | "given_url": "http://mashable.com/2016/09/04/leslie-jones-back-on-twitter-after-hack/?utm_campaign=Mash-Prod-RSS-Feedburner-All-Partial&utm_cid=Mash-Prod-RSS-Feedburner-All-Partial", | ||
30 | "given_title": "Leslie Jones is back on Twitter and her comeback tweet rules", | ||
31 | "favorite": "0", | ||
32 | "status": "0", | ||
33 | "time_added": "1473020899", | ||
34 | "time_updated": "1473020899", | ||
35 | "time_read": "0", | ||
36 | "time_favorited": "0", | ||
37 | "sort_id": 0, | ||
38 | "resolved_title": "Leslie Jones is back on Twitter and her comeback tweet rules", | ||
39 | "resolved_url": "http://mashable.com/2016/09/04/leslie-jones-back-on-twitter-after-hack/?utm_campaign=Mash-Prod-RSS-Feedburner-All-Partial&utm_cid=Mash-Prod-RSS-Feedburner-All-Partial", | ||
40 | "excerpt": "Leslie Jones is back to communicating with her adoring public on Twitter after cowardly hacker-trolls drove her away, probably to compensate for their own failings. It all started with a mic drop ...", | ||
41 | "is_article": "1", | ||
42 | "is_index": "0", | ||
43 | "has_video": "0", | ||
44 | "has_image": "1", | ||
45 | "word_count": "200", | ||
46 | "tags": { | ||
47 | "ifttt": { | ||
48 | "item_id": "1402935436", | ||
49 | "tag": "ifttt" | ||
50 | }, | ||
51 | "mashable": { | ||
52 | "item_id": "1402935436", | ||
53 | "tag": "mashable" | ||
54 | } | ||
55 | }, | ||
56 | "authors": { | ||
57 | "2484273": { | ||
58 | "item_id": "1402935436", | ||
59 | "author_id": "2484273", | ||
60 | "name": "Adam Rosenberg", | ||
61 | "url": "http://mashable.com/author/adam-rosenberg/" | ||
62 | } | ||
63 | }, | ||
64 | "image": { | ||
65 | "item_id": "1402935436", | ||
66 | "src": "http://i.amz.mshcdn.com/i-V5cS6_sDqFABaVR0hVSBJqG_w=/950x534/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fcard%2Fimage%2F199899%2Fleslie_jones_war_dogs.jpg", | ||
67 | "width": "0", | ||
68 | "height": "0" | ||
69 | }, | ||
70 | "images": { | ||
71 | "1": { | ||
72 | "item_id": "1402935436", | ||
73 | "image_id": "1", | ||
74 | "src": "http://i.amz.mshcdn.com/i-V5cS6_sDqFABaVR0hVSBJqG_w=/950x534/https%3A%2F%2Fblueprint-api-production.s3.amazonaws.com%2Fuploads%2Fcard%2Fimage%2F199899%2Fleslie_jones_war_dogs.jpg", | ||
75 | "width": "0", | ||
76 | "height": "0", | ||
77 | "credit": "Image: Steve Eichner/NameFace/Sipa USA", | ||
78 | "caption": "" | ||
79 | } | ||
80 | }, | ||
81 | "userId": 1 | ||
82 | } | ||
83 | JSON; | ||
84 | |||
85 | $user = new User(); | ||
86 | $entry = new Entry($user); | ||
87 | |||
88 | $userRepository = $this->getMockBuilder('Wallabag\UserBundle\Repository\UserRepository') | ||
89 | ->disableOriginalConstructor() | ||
90 | ->getMock(); | ||
91 | |||
92 | $userRepository | ||
93 | ->expects($this->once()) | ||
94 | ->method('find') | ||
95 | // userId from the body json above | ||
96 | ->with(1) | ||
97 | ->willReturn($user); | ||
98 | |||
99 | $import = $this->getMockBuilder('Wallabag\ImportBundle\Import\AbstractImport') | ||
100 | ->disableOriginalConstructor() | ||
101 | ->getMock(); | ||
102 | |||
103 | $import | ||
104 | ->expects($this->once()) | ||
105 | ->method('setUser') | ||
106 | ->with($user); | ||
107 | |||
108 | $import | ||
109 | ->expects($this->once()) | ||
110 | ->method('parseEntry') | ||
111 | ->with(json_decode($body, true)) | ||
112 | ->willReturn($entry); | ||
113 | |||
114 | $consumer = new RedisEntryConsumer( | ||
115 | $em, | ||
116 | $userRepository, | ||
117 | $import | ||
118 | ); | ||
119 | |||
120 | $res = $consumer->manage($body); | ||
121 | |||
122 | $this->assertTrue($res); | ||
123 | } | ||
124 | |||
125 | public function testMessageWithBadUser() | ||
126 | { | ||
127 | $em = $this->getMockBuilder('Doctrine\ORM\EntityManager') | ||
128 | ->disableOriginalConstructor() | ||
129 | ->getMock(); | ||
130 | |||
131 | $em | ||
132 | ->expects($this->never()) | ||
133 | ->method('flush'); | ||
134 | |||
135 | $em | ||
136 | ->expects($this->never()) | ||
137 | ->method('clear'); | ||
138 | |||
139 | $body = '{ "userId": 123 }'; | ||
140 | |||
141 | $user = new User(); | ||
142 | $entry = new Entry($user); | ||
143 | |||
144 | $userRepository = $this->getMockBuilder('Wallabag\UserBundle\Repository\UserRepository') | ||
145 | ->disableOriginalConstructor() | ||
146 | ->getMock(); | ||
147 | |||
148 | $userRepository | ||
149 | ->expects($this->once()) | ||
150 | ->method('find') | ||
151 | // userId from the body json above | ||
152 | ->with(123) | ||
153 | ->willReturn(null); | ||
154 | |||
155 | $import = $this->getMockBuilder('Wallabag\ImportBundle\Import\AbstractImport') | ||
156 | ->disableOriginalConstructor() | ||
157 | ->getMock(); | ||
158 | |||
159 | $consumer = new RedisEntryConsumer( | ||
160 | $em, | ||
161 | $userRepository, | ||
162 | $import | ||
163 | ); | ||
164 | |||
165 | $res = $consumer->manage($body); | ||
166 | |||
167 | $this->assertFalse($res); | ||
168 | } | ||
169 | |||
170 | public function testMessageWithEntryProcessed() | ||
171 | { | ||
172 | $em = $this->getMockBuilder('Doctrine\ORM\EntityManager') | ||
173 | ->disableOriginalConstructor() | ||
174 | ->getMock(); | ||
175 | |||
176 | $em | ||
177 | ->expects($this->never()) | ||
178 | ->method('flush'); | ||
179 | |||
180 | $em | ||
181 | ->expects($this->never()) | ||
182 | ->method('clear'); | ||
183 | |||
184 | $body = '{ "userId": 123 }'; | ||
185 | |||
186 | $user = new User(); | ||
187 | |||
188 | $userRepository = $this->getMockBuilder('Wallabag\UserBundle\Repository\UserRepository') | ||
189 | ->disableOriginalConstructor() | ||
190 | ->getMock(); | ||
191 | |||
192 | $userRepository | ||
193 | ->expects($this->once()) | ||
194 | ->method('find') | ||
195 | // userId from the body json above | ||
196 | ->with(123) | ||
197 | ->willReturn($user); | ||
198 | |||
199 | $import = $this->getMockBuilder('Wallabag\ImportBundle\Import\AbstractImport') | ||
200 | ->disableOriginalConstructor() | ||
201 | ->getMock(); | ||
202 | |||
203 | $import | ||
204 | ->expects($this->once()) | ||
205 | ->method('setUser') | ||
206 | ->with($user); | ||
207 | |||
208 | $import | ||
209 | ->expects($this->once()) | ||
210 | ->method('parseEntry') | ||
211 | ->with(json_decode($body, true)) | ||
212 | ->willReturn(null); | ||
213 | |||
214 | $consumer = new RedisEntryConsumer( | ||
215 | $em, | ||
216 | $userRepository, | ||
217 | $import | ||
218 | ); | ||
219 | |||
220 | $res = $consumer->manage($body); | ||
221 | |||
222 | $this->assertFalse($res); | ||
223 | $this->assertFalse($consumer->isStopJob($body)); | ||
224 | } | ||
225 | } | ||
diff --git a/tests/Wallabag/ImportBundle/Controller/ChromeControllerTest.php b/tests/Wallabag/ImportBundle/Controller/ChromeControllerTest.php new file mode 100644 index 00000000..23c80bec --- /dev/null +++ b/tests/Wallabag/ImportBundle/Controller/ChromeControllerTest.php | |||
@@ -0,0 +1,152 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\ImportBundle\Controller; | ||
4 | |||
5 | use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; | ||
6 | use Symfony\Component\HttpFoundation\File\UploadedFile; | ||
7 | |||
8 | class ChromeControllerTest extends WallabagCoreTestCase | ||
9 | { | ||
10 | public function testImportChrome() | ||
11 | { | ||
12 | $this->logInAs('admin'); | ||
13 | $client = $this->getClient(); | ||
14 | |||
15 | $crawler = $client->request('GET', '/import/chrome'); | ||
16 | |||
17 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
18 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
19 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
20 | } | ||
21 | |||
22 | public function testImportChromeWithRabbitEnabled() | ||
23 | { | ||
24 | $this->logInAs('admin'); | ||
25 | $client = $this->getClient(); | ||
26 | |||
27 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 1); | ||
28 | |||
29 | $crawler = $client->request('GET', '/import/chrome'); | ||
30 | |||
31 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
32 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
33 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
34 | |||
35 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 0); | ||
36 | } | ||
37 | |||
38 | public function testImportChromeBadFile() | ||
39 | { | ||
40 | $this->logInAs('admin'); | ||
41 | $client = $this->getClient(); | ||
42 | |||
43 | $crawler = $client->request('GET', '/import/chrome'); | ||
44 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
45 | |||
46 | $data = [ | ||
47 | 'upload_import_file[file]' => '', | ||
48 | ]; | ||
49 | |||
50 | $client->submit($form, $data); | ||
51 | |||
52 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
53 | } | ||
54 | |||
55 | public function testImportChromeWithRedisEnabled() | ||
56 | { | ||
57 | $this->logInAs('admin'); | ||
58 | $client = $this->getClient(); | ||
59 | $client->getContainer()->get('craue_config')->set('import_with_redis', 1); | ||
60 | |||
61 | $crawler = $client->request('GET', '/import/chrome'); | ||
62 | |||
63 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
64 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
65 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
66 | |||
67 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
68 | |||
69 | $file = new UploadedFile(__DIR__.'/../fixtures/chrome-bookmarks', 'Bookmarks'); | ||
70 | |||
71 | $data = [ | ||
72 | 'upload_import_file[file]' => $file, | ||
73 | ]; | ||
74 | |||
75 | $client->submit($form, $data); | ||
76 | |||
77 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
78 | |||
79 | $crawler = $client->followRedirect(); | ||
80 | |||
81 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
82 | $this->assertContains('flashes.import.notice.summary', $body[0]); | ||
83 | |||
84 | $this->assertNotEmpty($client->getContainer()->get('wallabag_core.redis.client')->lpop('wallabag.import.chrome')); | ||
85 | |||
86 | $client->getContainer()->get('craue_config')->set('import_with_redis', 0); | ||
87 | } | ||
88 | |||
89 | public function testImportWallabagWithChromeFile() | ||
90 | { | ||
91 | $this->logInAs('admin'); | ||
92 | $client = $this->getClient(); | ||
93 | |||
94 | $crawler = $client->request('GET', '/import/chrome'); | ||
95 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
96 | |||
97 | $file = new UploadedFile(__DIR__.'/../fixtures/chrome-bookmarks', 'Bookmarks'); | ||
98 | |||
99 | $data = [ | ||
100 | 'upload_import_file[file]' => $file, | ||
101 | ]; | ||
102 | |||
103 | $client->submit($form, $data); | ||
104 | |||
105 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
106 | |||
107 | $crawler = $client->followRedirect(); | ||
108 | |||
109 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
110 | $this->assertContains('flashes.import.notice.summary', $body[0]); | ||
111 | |||
112 | $content = $client->getContainer() | ||
113 | ->get('doctrine.orm.entity_manager') | ||
114 | ->getRepository('WallabagCoreBundle:Entry') | ||
115 | ->findByUrlAndUserId( | ||
116 | 'http://www.usinenouvelle.com/article/la-multiplication-des-chefs-de-projet-est-une-catastrophe-manageriale-majeure-affirme-le-sociologue-francois-dupuy.N307730', | ||
117 | $this->getLoggedInUserId() | ||
118 | ); | ||
119 | |||
120 | $this->assertNotEmpty($content->getPreviewPicture()); | ||
121 | $this->assertNotEmpty($content->getLanguage()); | ||
122 | $this->assertEquals(0, count($content->getTags())); | ||
123 | |||
124 | $createdAt = $content->getCreatedAt(); | ||
125 | $this->assertEquals('2011', $createdAt->format('Y')); | ||
126 | $this->assertEquals('07', $createdAt->format('m')); | ||
127 | } | ||
128 | |||
129 | public function testImportWallabagWithEmptyFile() | ||
130 | { | ||
131 | $this->logInAs('admin'); | ||
132 | $client = $this->getClient(); | ||
133 | |||
134 | $crawler = $client->request('GET', '/import/chrome'); | ||
135 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
136 | |||
137 | $file = new UploadedFile(__DIR__.'/../fixtures/test.txt', 'test.txt'); | ||
138 | |||
139 | $data = [ | ||
140 | 'upload_import_file[file]' => $file, | ||
141 | ]; | ||
142 | |||
143 | $client->submit($form, $data); | ||
144 | |||
145 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
146 | |||
147 | $crawler = $client->followRedirect(); | ||
148 | |||
149 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
150 | $this->assertContains('flashes.import.notice.failed', $body[0]); | ||
151 | } | ||
152 | } | ||
diff --git a/tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php b/tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php new file mode 100644 index 00000000..98f13d72 --- /dev/null +++ b/tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php | |||
@@ -0,0 +1,165 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\ImportBundle\Controller; | ||
4 | |||
5 | use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; | ||
6 | use Symfony\Component\HttpFoundation\File\UploadedFile; | ||
7 | |||
8 | class FirefoxControllerTest extends WallabagCoreTestCase | ||
9 | { | ||
10 | public function testImportFirefox() | ||
11 | { | ||
12 | $this->logInAs('admin'); | ||
13 | $client = $this->getClient(); | ||
14 | |||
15 | $crawler = $client->request('GET', '/import/firefox'); | ||
16 | |||
17 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
18 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
19 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
20 | } | ||
21 | |||
22 | public function testImportFirefoxWithRabbitEnabled() | ||
23 | { | ||
24 | $this->logInAs('admin'); | ||
25 | $client = $this->getClient(); | ||
26 | |||
27 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 1); | ||
28 | |||
29 | $crawler = $client->request('GET', '/import/firefox'); | ||
30 | |||
31 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
32 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
33 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
34 | |||
35 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 0); | ||
36 | } | ||
37 | |||
38 | public function testImportFirefoxBadFile() | ||
39 | { | ||
40 | $this->logInAs('admin'); | ||
41 | $client = $this->getClient(); | ||
42 | |||
43 | $crawler = $client->request('GET', '/import/firefox'); | ||
44 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
45 | |||
46 | $data = [ | ||
47 | 'upload_import_file[file]' => '', | ||
48 | ]; | ||
49 | |||
50 | $client->submit($form, $data); | ||
51 | |||
52 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
53 | } | ||
54 | |||
55 | public function testImportFirefoxWithRedisEnabled() | ||
56 | { | ||
57 | $this->logInAs('admin'); | ||
58 | $client = $this->getClient(); | ||
59 | $client->getContainer()->get('craue_config')->set('import_with_redis', 1); | ||
60 | |||
61 | $crawler = $client->request('GET', '/import/firefox'); | ||
62 | |||
63 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
64 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
65 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
66 | |||
67 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
68 | |||
69 | $file = new UploadedFile(__DIR__.'/../fixtures/firefox-bookmarks.json', 'Bookmarks'); | ||
70 | |||
71 | $data = [ | ||
72 | 'upload_import_file[file]' => $file, | ||
73 | ]; | ||
74 | |||
75 | $client->submit($form, $data); | ||
76 | |||
77 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
78 | |||
79 | $crawler = $client->followRedirect(); | ||
80 | |||
81 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
82 | $this->assertContains('flashes.import.notice.summary', $body[0]); | ||
83 | |||
84 | $this->assertNotEmpty($client->getContainer()->get('wallabag_core.redis.client')->lpop('wallabag.import.firefox')); | ||
85 | |||
86 | $client->getContainer()->get('craue_config')->set('import_with_redis', 0); | ||
87 | } | ||
88 | |||
89 | public function testImportWallabagWithFirefoxFile() | ||
90 | { | ||
91 | $this->logInAs('admin'); | ||
92 | $client = $this->getClient(); | ||
93 | |||
94 | $crawler = $client->request('GET', '/import/firefox'); | ||
95 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
96 | |||
97 | $file = new UploadedFile(__DIR__.'/../fixtures/firefox-bookmarks.json', 'Bookmarks'); | ||
98 | |||
99 | $data = [ | ||
100 | 'upload_import_file[file]' => $file, | ||
101 | ]; | ||
102 | |||
103 | $client->submit($form, $data); | ||
104 | |||
105 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
106 | |||
107 | $crawler = $client->followRedirect(); | ||
108 | |||
109 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
110 | $this->assertContains('flashes.import.notice.summary', $body[0]); | ||
111 | |||
112 | $content = $client->getContainer() | ||
113 | ->get('doctrine.orm.entity_manager') | ||
114 | ->getRepository('WallabagCoreBundle:Entry') | ||
115 | ->findByUrlAndUserId( | ||
116 | 'http://lexpansion.lexpress.fr/high-tech/orange-offre-un-meilleur-reseau-mobile-que-bouygues-et-sfr-free-derriere_1811554.html', | ||
117 | $this->getLoggedInUserId() | ||
118 | ); | ||
119 | |||
120 | $this->assertNotEmpty($content->getMimetype()); | ||
121 | $this->assertNotEmpty($content->getPreviewPicture()); | ||
122 | $this->assertNotEmpty($content->getLanguage()); | ||
123 | $this->assertEquals(2, count($content->getTags())); | ||
124 | |||
125 | $content = $client->getContainer() | ||
126 | ->get('doctrine.orm.entity_manager') | ||
127 | ->getRepository('WallabagCoreBundle:Entry') | ||
128 | ->findByUrlAndUserId( | ||
129 | 'http://stackoverflow.com/questions/15017163/parser-for-exported-bookmarks-html-file-of-google-chrome-and-mozilla-in-java', | ||
130 | $this->getLoggedInUserId() | ||
131 | ); | ||
132 | |||
133 | $this->assertNotEmpty($content->getMimetype()); | ||
134 | $this->assertNotEmpty($content->getPreviewPicture()); | ||
135 | $this->assertEmpty($content->getLanguage()); | ||
136 | |||
137 | $createdAt = $content->getCreatedAt(); | ||
138 | $this->assertEquals('2013', $createdAt->format('Y')); | ||
139 | $this->assertEquals('12', $createdAt->format('m')); | ||
140 | } | ||
141 | |||
142 | public function testImportWallabagWithEmptyFile() | ||
143 | { | ||
144 | $this->logInAs('admin'); | ||
145 | $client = $this->getClient(); | ||
146 | |||
147 | $crawler = $client->request('GET', '/import/firefox'); | ||
148 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
149 | |||
150 | $file = new UploadedFile(__DIR__.'/../fixtures/test.txt', 'test.txt'); | ||
151 | |||
152 | $data = [ | ||
153 | 'upload_import_file[file]' => $file, | ||
154 | ]; | ||
155 | |||
156 | $client->submit($form, $data); | ||
157 | |||
158 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
159 | |||
160 | $crawler = $client->followRedirect(); | ||
161 | |||
162 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
163 | $this->assertContains('flashes.import.notice.failed', $body[0]); | ||
164 | } | ||
165 | } | ||
diff --git a/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php b/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php index 96b5300b..0bc40bdd 100644 --- a/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php +++ b/tests/Wallabag/ImportBundle/Controller/ImportControllerTest.php | |||
@@ -24,6 +24,6 @@ class ImportControllerTest extends WallabagCoreTestCase | |||
24 | $crawler = $client->request('GET', '/import/'); | 24 | $crawler = $client->request('GET', '/import/'); |
25 | 25 | ||
26 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 26 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); |
27 | $this->assertEquals(3, $crawler->filter('blockquote')->count()); | 27 | $this->assertEquals(7, $crawler->filter('blockquote')->count()); |
28 | } | 28 | } |
29 | } | 29 | } |
diff --git a/tests/Wallabag/ImportBundle/Controller/InstapaperControllerTest.php b/tests/Wallabag/ImportBundle/Controller/InstapaperControllerTest.php new file mode 100644 index 00000000..9df08e75 --- /dev/null +++ b/tests/Wallabag/ImportBundle/Controller/InstapaperControllerTest.php | |||
@@ -0,0 +1,196 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\ImportBundle\Controller; | ||
4 | |||
5 | use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; | ||
6 | use Symfony\Component\HttpFoundation\File\UploadedFile; | ||
7 | |||
8 | class InstapaperControllerTest extends WallabagCoreTestCase | ||
9 | { | ||
10 | public function testImportInstapaper() | ||
11 | { | ||
12 | $this->logInAs('admin'); | ||
13 | $client = $this->getClient(); | ||
14 | |||
15 | $crawler = $client->request('GET', '/import/instapaper'); | ||
16 | |||
17 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
18 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
19 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
20 | } | ||
21 | |||
22 | public function testImportInstapaperWithRabbitEnabled() | ||
23 | { | ||
24 | $this->logInAs('admin'); | ||
25 | $client = $this->getClient(); | ||
26 | |||
27 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 1); | ||
28 | |||
29 | $crawler = $client->request('GET', '/import/instapaper'); | ||
30 | |||
31 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
32 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
33 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
34 | |||
35 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 0); | ||
36 | } | ||
37 | |||
38 | public function testImportInstapaperBadFile() | ||
39 | { | ||
40 | $this->logInAs('admin'); | ||
41 | $client = $this->getClient(); | ||
42 | |||
43 | $crawler = $client->request('GET', '/import/instapaper'); | ||
44 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
45 | |||
46 | $data = [ | ||
47 | 'upload_import_file[file]' => '', | ||
48 | ]; | ||
49 | |||
50 | $client->submit($form, $data); | ||
51 | |||
52 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
53 | } | ||
54 | |||
55 | public function testImportInstapaperWithRedisEnabled() | ||
56 | { | ||
57 | $this->checkRedis(); | ||
58 | $this->logInAs('admin'); | ||
59 | $client = $this->getClient(); | ||
60 | $client->getContainer()->get('craue_config')->set('import_with_redis', 1); | ||
61 | |||
62 | $crawler = $client->request('GET', '/import/instapaper'); | ||
63 | |||
64 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
65 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
66 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
67 | |||
68 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
69 | |||
70 | $file = new UploadedFile(__DIR__.'/../fixtures/instapaper-export.csv', 'instapaper.csv'); | ||
71 | |||
72 | $data = [ | ||
73 | 'upload_import_file[file]' => $file, | ||
74 | ]; | ||
75 | |||
76 | $client->submit($form, $data); | ||
77 | |||
78 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
79 | |||
80 | $crawler = $client->followRedirect(); | ||
81 | |||
82 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
83 | $this->assertContains('flashes.import.notice.summary', $body[0]); | ||
84 | |||
85 | $this->assertNotEmpty($client->getContainer()->get('wallabag_core.redis.client')->lpop('wallabag.import.instapaper')); | ||
86 | |||
87 | $client->getContainer()->get('craue_config')->set('import_with_redis', 0); | ||
88 | } | ||
89 | |||
90 | public function testImportInstapaperWithFile() | ||
91 | { | ||
92 | $this->logInAs('admin'); | ||
93 | $client = $this->getClient(); | ||
94 | |||
95 | $crawler = $client->request('GET', '/import/instapaper'); | ||
96 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
97 | |||
98 | $file = new UploadedFile(__DIR__.'/../fixtures/instapaper-export.csv', 'instapaper.csv'); | ||
99 | |||
100 | $data = [ | ||
101 | 'upload_import_file[file]' => $file, | ||
102 | ]; | ||
103 | |||
104 | $client->submit($form, $data); | ||
105 | |||
106 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
107 | |||
108 | $crawler = $client->followRedirect(); | ||
109 | |||
110 | $content = $client->getContainer() | ||
111 | ->get('doctrine.orm.entity_manager') | ||
112 | ->getRepository('WallabagCoreBundle:Entry') | ||
113 | ->findByUrlAndUserId( | ||
114 | 'http://www.liberation.fr/societe/2012/12/06/baumettes-un-tour-en-cellule_865551', | ||
115 | $this->getLoggedInUserId() | ||
116 | ); | ||
117 | |||
118 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
119 | $this->assertContains('flashes.import.notice.summary', $body[0]); | ||
120 | |||
121 | $this->assertNotEmpty($content->getMimetype()); | ||
122 | $this->assertNotEmpty($content->getPreviewPicture()); | ||
123 | $this->assertNotEmpty($content->getLanguage()); | ||
124 | $this->assertEquals(0, count($content->getTags())); | ||
125 | $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt()); | ||
126 | } | ||
127 | |||
128 | public function testImportInstapaperWithFileAndMarkAllAsRead() | ||
129 | { | ||
130 | $this->logInAs('admin'); | ||
131 | $client = $this->getClient(); | ||
132 | |||
133 | $crawler = $client->request('GET', '/import/instapaper'); | ||
134 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
135 | |||
136 | $file = new UploadedFile(__DIR__.'/../fixtures/instapaper-export.csv', 'instapaper-read.csv'); | ||
137 | |||
138 | $data = [ | ||
139 | 'upload_import_file[file]' => $file, | ||
140 | 'upload_import_file[mark_as_read]' => 1, | ||
141 | ]; | ||
142 | |||
143 | $client->submit($form, $data); | ||
144 | |||
145 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
146 | |||
147 | $crawler = $client->followRedirect(); | ||
148 | |||
149 | $content1 = $client->getContainer() | ||
150 | ->get('doctrine.orm.entity_manager') | ||
151 | ->getRepository('WallabagCoreBundle:Entry') | ||
152 | ->findByUrlAndUserId( | ||
153 | 'https://redditblog.com/2016/09/20/amp-and-reactredux/', | ||
154 | $this->getLoggedInUserId() | ||
155 | ); | ||
156 | |||
157 | $this->assertTrue($content1->isArchived()); | ||
158 | |||
159 | $content2 = $client->getContainer() | ||
160 | ->get('doctrine.orm.entity_manager') | ||
161 | ->getRepository('WallabagCoreBundle:Entry') | ||
162 | ->findByUrlAndUserId( | ||
163 | 'https://medium.com/@the_minh/why-foursquare-swarm-is-still-my-favourite-social-network-e38228493e6c', | ||
164 | $this->getLoggedInUserId() | ||
165 | ); | ||
166 | |||
167 | $this->assertTrue($content2->isArchived()); | ||
168 | |||
169 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
170 | $this->assertContains('flashes.import.notice.summary', $body[0]); | ||
171 | } | ||
172 | |||
173 | public function testImportInstapaperWithEmptyFile() | ||
174 | { | ||
175 | $this->logInAs('admin'); | ||
176 | $client = $this->getClient(); | ||
177 | |||
178 | $crawler = $client->request('GET', '/import/instapaper'); | ||
179 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
180 | |||
181 | $file = new UploadedFile(__DIR__.'/../fixtures/test.txt', 'test.txt'); | ||
182 | |||
183 | $data = [ | ||
184 | 'upload_import_file[file]' => $file, | ||
185 | ]; | ||
186 | |||
187 | $client->submit($form, $data); | ||
188 | |||
189 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
190 | |||
191 | $crawler = $client->followRedirect(); | ||
192 | |||
193 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
194 | $this->assertContains('flashes.import.notice.failed', $body[0]); | ||
195 | } | ||
196 | } | ||
diff --git a/tests/Wallabag/ImportBundle/Controller/PocketControllerTest.php b/tests/Wallabag/ImportBundle/Controller/PocketControllerTest.php index e0e61df8..7d6a300f 100644 --- a/tests/Wallabag/ImportBundle/Controller/PocketControllerTest.php +++ b/tests/Wallabag/ImportBundle/Controller/PocketControllerTest.php | |||
@@ -17,6 +17,37 @@ class PocketControllerTest extends WallabagCoreTestCase | |||
17 | $this->assertEquals(1, $crawler->filter('button[type=submit]')->count()); | 17 | $this->assertEquals(1, $crawler->filter('button[type=submit]')->count()); |
18 | } | 18 | } |
19 | 19 | ||
20 | public function testImportPocketWithRabbitEnabled() | ||
21 | { | ||
22 | $this->logInAs('admin'); | ||
23 | $client = $this->getClient(); | ||
24 | |||
25 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 1); | ||
26 | |||
27 | $crawler = $client->request('GET', '/import/pocket'); | ||
28 | |||
29 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
30 | $this->assertEquals(1, $crawler->filter('button[type=submit]')->count()); | ||
31 | |||
32 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 0); | ||
33 | } | ||
34 | |||
35 | public function testImportPocketWithRedisEnabled() | ||
36 | { | ||
37 | $this->checkRedis(); | ||
38 | $this->logInAs('admin'); | ||
39 | $client = $this->getClient(); | ||
40 | |||
41 | $client->getContainer()->get('craue_config')->set('import_with_redis', 1); | ||
42 | |||
43 | $crawler = $client->request('GET', '/import/pocket'); | ||
44 | |||
45 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
46 | $this->assertEquals(1, $crawler->filter('button[type=submit]')->count()); | ||
47 | |||
48 | $client->getContainer()->get('craue_config')->set('import_with_redis', 0); | ||
49 | } | ||
50 | |||
20 | public function testImportPocketAuthBadToken() | 51 | public function testImportPocketAuthBadToken() |
21 | { | 52 | { |
22 | $this->logInAs('admin'); | 53 | $this->logInAs('admin'); |
diff --git a/tests/Wallabag/ImportBundle/Controller/ReadabilityControllerTest.php b/tests/Wallabag/ImportBundle/Controller/ReadabilityControllerTest.php new file mode 100644 index 00000000..916dd297 --- /dev/null +++ b/tests/Wallabag/ImportBundle/Controller/ReadabilityControllerTest.php | |||
@@ -0,0 +1,197 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\ImportBundle\Controller; | ||
4 | |||
5 | use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; | ||
6 | use Symfony\Component\HttpFoundation\File\UploadedFile; | ||
7 | |||
8 | class ReadabilityControllerTest extends WallabagCoreTestCase | ||
9 | { | ||
10 | public function testImportReadability() | ||
11 | { | ||
12 | $this->logInAs('admin'); | ||
13 | $client = $this->getClient(); | ||
14 | |||
15 | $crawler = $client->request('GET', '/import/readability'); | ||
16 | |||
17 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
18 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
19 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
20 | } | ||
21 | |||
22 | public function testImportReadabilityWithRabbitEnabled() | ||
23 | { | ||
24 | $this->logInAs('admin'); | ||
25 | $client = $this->getClient(); | ||
26 | |||
27 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 1); | ||
28 | |||
29 | $crawler = $client->request('GET', '/import/readability'); | ||
30 | |||
31 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
32 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
33 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
34 | |||
35 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 0); | ||
36 | } | ||
37 | |||
38 | public function testImportReadabilityBadFile() | ||
39 | { | ||
40 | $this->logInAs('admin'); | ||
41 | $client = $this->getClient(); | ||
42 | |||
43 | $crawler = $client->request('GET', '/import/readability'); | ||
44 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
45 | |||
46 | $data = [ | ||
47 | 'upload_import_file[file]' => '', | ||
48 | ]; | ||
49 | |||
50 | $client->submit($form, $data); | ||
51 | |||
52 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
53 | } | ||
54 | |||
55 | public function testImportReadabilityWithRedisEnabled() | ||
56 | { | ||
57 | $this->checkRedis(); | ||
58 | $this->logInAs('admin'); | ||
59 | $client = $this->getClient(); | ||
60 | $client->getContainer()->get('craue_config')->set('import_with_redis', 1); | ||
61 | |||
62 | $crawler = $client->request('GET', '/import/readability'); | ||
63 | |||
64 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
65 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
66 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
67 | |||
68 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
69 | |||
70 | $file = new UploadedFile(__DIR__.'/../fixtures/readability.json', 'readability.json'); | ||
71 | |||
72 | $data = [ | ||
73 | 'upload_import_file[file]' => $file, | ||
74 | ]; | ||
75 | |||
76 | $client->submit($form, $data); | ||
77 | |||
78 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
79 | |||
80 | $crawler = $client->followRedirect(); | ||
81 | |||
82 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
83 | $this->assertContains('flashes.import.notice.summary', $body[0]); | ||
84 | |||
85 | $this->assertNotEmpty($client->getContainer()->get('wallabag_core.redis.client')->lpop('wallabag.import.readability')); | ||
86 | |||
87 | $client->getContainer()->get('craue_config')->set('import_with_redis', 0); | ||
88 | } | ||
89 | |||
90 | public function testImportReadabilityWithFile() | ||
91 | { | ||
92 | $this->logInAs('admin'); | ||
93 | $client = $this->getClient(); | ||
94 | |||
95 | $crawler = $client->request('GET', '/import/readability'); | ||
96 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
97 | |||
98 | $file = new UploadedFile(__DIR__.'/../fixtures/readability.json', 'readability.json'); | ||
99 | |||
100 | $data = [ | ||
101 | 'upload_import_file[file]' => $file, | ||
102 | ]; | ||
103 | |||
104 | $client->submit($form, $data); | ||
105 | |||
106 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
107 | |||
108 | $crawler = $client->followRedirect(); | ||
109 | |||
110 | $content = $client->getContainer() | ||
111 | ->get('doctrine.orm.entity_manager') | ||
112 | ->getRepository('WallabagCoreBundle:Entry') | ||
113 | ->findByUrlAndUserId( | ||
114 | 'https://venngage.com/blog/hashtags-are-worthless/', | ||
115 | $this->getLoggedInUserId() | ||
116 | ); | ||
117 | |||
118 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
119 | $this->assertContains('flashes.import.notice.summary', $body[0]); | ||
120 | |||
121 | $this->assertNotEmpty($content->getMimetype()); | ||
122 | $this->assertNotEmpty($content->getPreviewPicture()); | ||
123 | $this->assertNotEmpty($content->getLanguage()); | ||
124 | $this->assertEquals(0, count($content->getTags())); | ||
125 | $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt()); | ||
126 | $this->assertEquals('2016-08-25', $content->getCreatedAt()->format('Y-m-d')); | ||
127 | } | ||
128 | |||
129 | public function testImportReadabilityWithFileAndMarkAllAsRead() | ||
130 | { | ||
131 | $this->logInAs('admin'); | ||
132 | $client = $this->getClient(); | ||
133 | |||
134 | $crawler = $client->request('GET', '/import/readability'); | ||
135 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
136 | |||
137 | $file = new UploadedFile(__DIR__.'/../fixtures/readability-read.json', 'readability-read.json'); | ||
138 | |||
139 | $data = [ | ||
140 | 'upload_import_file[file]' => $file, | ||
141 | 'upload_import_file[mark_as_read]' => 1, | ||
142 | ]; | ||
143 | |||
144 | $client->submit($form, $data); | ||
145 | |||
146 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
147 | |||
148 | $crawler = $client->followRedirect(); | ||
149 | |||
150 | $content1 = $client->getContainer() | ||
151 | ->get('doctrine.orm.entity_manager') | ||
152 | ->getRepository('WallabagCoreBundle:Entry') | ||
153 | ->findByUrlAndUserId( | ||
154 | 'https://blog.travis-ci.com/2016-07-28-what-we-learned-from-analyzing-2-million-travis-builds/', | ||
155 | $this->getLoggedInUserId() | ||
156 | ); | ||
157 | |||
158 | $this->assertTrue($content1->isArchived()); | ||
159 | |||
160 | $content2 = $client->getContainer() | ||
161 | ->get('doctrine.orm.entity_manager') | ||
162 | ->getRepository('WallabagCoreBundle:Entry') | ||
163 | ->findByUrlAndUserId( | ||
164 | 'https://facebook.github.io/graphql/', | ||
165 | $this->getLoggedInUserId() | ||
166 | ); | ||
167 | |||
168 | $this->assertTrue($content2->isArchived()); | ||
169 | |||
170 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
171 | $this->assertContains('flashes.import.notice.summary', $body[0]); | ||
172 | } | ||
173 | |||
174 | public function testImportReadabilityWithEmptyFile() | ||
175 | { | ||
176 | $this->logInAs('admin'); | ||
177 | $client = $this->getClient(); | ||
178 | |||
179 | $crawler = $client->request('GET', '/import/readability'); | ||
180 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
181 | |||
182 | $file = new UploadedFile(__DIR__.'/../fixtures/test.txt', 'test.txt'); | ||
183 | |||
184 | $data = [ | ||
185 | 'upload_import_file[file]' => $file, | ||
186 | ]; | ||
187 | |||
188 | $client->submit($form, $data); | ||
189 | |||
190 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
191 | |||
192 | $crawler = $client->followRedirect(); | ||
193 | |||
194 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
195 | $this->assertContains('flashes.import.notice.failed', $body[0]); | ||
196 | } | ||
197 | } | ||
diff --git a/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php b/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php index c1025b41..3497c4b8 100644 --- a/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php +++ b/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php | |||
@@ -19,6 +19,75 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase | |||
19 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | 19 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); |
20 | } | 20 | } |
21 | 21 | ||
22 | public function testImportWallabagWithRabbitEnabled() | ||
23 | { | ||
24 | $this->logInAs('admin'); | ||
25 | $client = $this->getClient(); | ||
26 | |||
27 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 1); | ||
28 | |||
29 | $crawler = $client->request('GET', '/import/wallabag-v1'); | ||
30 | |||
31 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
32 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
33 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
34 | |||
35 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 0); | ||
36 | } | ||
37 | |||
38 | public function testImportWallabagBadFile() | ||
39 | { | ||
40 | $this->logInAs('admin'); | ||
41 | $client = $this->getClient(); | ||
42 | |||
43 | $crawler = $client->request('GET', '/import/wallabag-v1'); | ||
44 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
45 | |||
46 | $data = [ | ||
47 | 'upload_import_file[file]' => '', | ||
48 | ]; | ||
49 | |||
50 | $client->submit($form, $data); | ||
51 | |||
52 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
53 | } | ||
54 | |||
55 | public function testImportWallabagWithRedisEnabled() | ||
56 | { | ||
57 | $this->checkRedis(); | ||
58 | $this->logInAs('admin'); | ||
59 | $client = $this->getClient(); | ||
60 | |||
61 | $client->getContainer()->get('craue_config')->set('import_with_redis', 1); | ||
62 | |||
63 | $crawler = $client->request('GET', '/import/wallabag-v1'); | ||
64 | |||
65 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
66 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
67 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
68 | |||
69 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
70 | |||
71 | $file = new UploadedFile(__DIR__.'/../fixtures/wallabag-v1.json', 'wallabag-v1.json'); | ||
72 | |||
73 | $data = [ | ||
74 | 'upload_import_file[file]' => $file, | ||
75 | ]; | ||
76 | |||
77 | $client->submit($form, $data); | ||
78 | |||
79 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
80 | |||
81 | $crawler = $client->followRedirect(); | ||
82 | |||
83 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
84 | $this->assertContains('flashes.import.notice.summary', $body[0]); | ||
85 | |||
86 | $this->assertNotEmpty($client->getContainer()->get('wallabag_core.redis.client')->lpop('wallabag.import.wallabag_v1')); | ||
87 | |||
88 | $client->getContainer()->get('craue_config')->set('import_with_redis', 0); | ||
89 | } | ||
90 | |||
22 | public function testImportWallabagWithFile() | 91 | public function testImportWallabagWithFile() |
23 | { | 92 | { |
24 | $this->logInAs('admin'); | 93 | $this->logInAs('admin'); |
@@ -56,6 +125,12 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase | |||
56 | 125 | ||
57 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | 126 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); |
58 | $this->assertContains('flashes.import.notice.summary', $body[0]); | 127 | $this->assertContains('flashes.import.notice.summary', $body[0]); |
128 | |||
129 | $this->assertEmpty($content->getMimetype()); | ||
130 | $this->assertEmpty($content->getPreviewPicture()); | ||
131 | $this->assertEmpty($content->getLanguage()); | ||
132 | $this->assertEquals(1, count($content->getTags())); | ||
133 | $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt()); | ||
59 | } | 134 | } |
60 | 135 | ||
61 | public function testImportWallabagWithFileAndMarkAllAsRead() | 136 | public function testImportWallabagWithFileAndMarkAllAsRead() |
diff --git a/tests/Wallabag/ImportBundle/Controller/WallabagV2ControllerTest.php b/tests/Wallabag/ImportBundle/Controller/WallabagV2ControllerTest.php index d8d2c8bf..27d2d52b 100644 --- a/tests/Wallabag/ImportBundle/Controller/WallabagV2ControllerTest.php +++ b/tests/Wallabag/ImportBundle/Controller/WallabagV2ControllerTest.php | |||
@@ -19,6 +19,75 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase | |||
19 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | 19 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); |
20 | } | 20 | } |
21 | 21 | ||
22 | public function testImportWallabagWithRabbitEnabled() | ||
23 | { | ||
24 | $this->logInAs('admin'); | ||
25 | $client = $this->getClient(); | ||
26 | |||
27 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 1); | ||
28 | |||
29 | $crawler = $client->request('GET', '/import/wallabag-v2'); | ||
30 | |||
31 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
32 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
33 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
34 | |||
35 | $client->getContainer()->get('craue_config')->set('import_with_rabbitmq', 0); | ||
36 | } | ||
37 | |||
38 | public function testImportWallabagBadFile() | ||
39 | { | ||
40 | $this->logInAs('admin'); | ||
41 | $client = $this->getClient(); | ||
42 | |||
43 | $crawler = $client->request('GET', '/import/wallabag-v2'); | ||
44 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
45 | |||
46 | $data = [ | ||
47 | 'upload_import_file[file]' => '', | ||
48 | ]; | ||
49 | |||
50 | $client->submit($form, $data); | ||
51 | |||
52 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
53 | } | ||
54 | |||
55 | public function testImportWallabagWithRedisEnabled() | ||
56 | { | ||
57 | $this->checkRedis(); | ||
58 | $this->logInAs('admin'); | ||
59 | $client = $this->getClient(); | ||
60 | |||
61 | $client->getContainer()->get('craue_config')->set('import_with_redis', 1); | ||
62 | |||
63 | $crawler = $client->request('GET', '/import/wallabag-v2'); | ||
64 | |||
65 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | ||
66 | $this->assertEquals(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count()); | ||
67 | $this->assertEquals(1, $crawler->filter('input[type=file]')->count()); | ||
68 | |||
69 | $form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form(); | ||
70 | |||
71 | $file = new UploadedFile(__DIR__.'/../fixtures/wallabag-v2.json', 'wallabag-v2.json'); | ||
72 | |||
73 | $data = [ | ||
74 | 'upload_import_file[file]' => $file, | ||
75 | ]; | ||
76 | |||
77 | $client->submit($form, $data); | ||
78 | |||
79 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
80 | |||
81 | $crawler = $client->followRedirect(); | ||
82 | |||
83 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | ||
84 | $this->assertContains('flashes.import.notice.summary', $body[0]); | ||
85 | |||
86 | $this->assertNotEmpty($client->getContainer()->get('wallabag_core.redis.client')->lpop('wallabag.import.wallabag_v2')); | ||
87 | |||
88 | $client->getContainer()->get('craue_config')->set('import_with_redis', 0); | ||
89 | } | ||
90 | |||
22 | public function testImportWallabagWithFile() | 91 | public function testImportWallabagWithFile() |
23 | { | 92 | { |
24 | $this->logInAs('admin'); | 93 | $this->logInAs('admin'); |
@@ -50,9 +119,9 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase | |||
50 | $this->getLoggedInUserId() | 119 | $this->getLoggedInUserId() |
51 | ); | 120 | ); |
52 | 121 | ||
53 | $this->assertEmpty($content->getMimetype()); | 122 | $this->assertNotEmpty($content->getMimetype()); |
54 | $this->assertEmpty($content->getPreviewPicture()); | 123 | $this->assertNotEmpty($content->getPreviewPicture()); |
55 | $this->assertEmpty($content->getLanguage()); | 124 | $this->assertNotEmpty($content->getLanguage()); |
56 | $this->assertEquals(0, count($content->getTags())); | 125 | $this->assertEquals(0, count($content->getTags())); |
57 | 126 | ||
58 | $content = $client->getContainer() | 127 | $content = $client->getContainer() |
@@ -67,6 +136,8 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase | |||
67 | $this->assertNotEmpty($content->getPreviewPicture()); | 136 | $this->assertNotEmpty($content->getPreviewPicture()); |
68 | $this->assertNotEmpty($content->getLanguage()); | 137 | $this->assertNotEmpty($content->getLanguage()); |
69 | $this->assertEquals(2, count($content->getTags())); | 138 | $this->assertEquals(2, count($content->getTags())); |
139 | $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt()); | ||
140 | $this->assertEquals('2016-09-08', $content->getCreatedAt()->format('Y-m-d')); | ||
70 | } | 141 | } |
71 | 142 | ||
72 | public function testImportWallabagWithEmptyFile() | 143 | public function testImportWallabagWithEmptyFile() |
diff --git a/tests/Wallabag/ImportBundle/Import/ChromeImportTest.php b/tests/Wallabag/ImportBundle/Import/ChromeImportTest.php new file mode 100644 index 00000000..1e52615c --- /dev/null +++ b/tests/Wallabag/ImportBundle/Import/ChromeImportTest.php | |||
@@ -0,0 +1,233 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\ImportBundle\Import; | ||
4 | |||
5 | use Wallabag\ImportBundle\Import\ChromeImport; | ||
6 | use Wallabag\UserBundle\Entity\User; | ||
7 | use Wallabag\CoreBundle\Entity\Entry; | ||
8 | use Wallabag\ImportBundle\Redis\Producer; | ||
9 | use Monolog\Logger; | ||
10 | use Monolog\Handler\TestHandler; | ||
11 | use Simpleue\Queue\RedisQueue; | ||
12 | use M6Web\Component\RedisMock\RedisMockFactory; | ||
13 | |||
14 | class ChromeImportTest extends \PHPUnit_Framework_TestCase | ||
15 | { | ||
16 | protected $user; | ||
17 | protected $em; | ||
18 | protected $logHandler; | ||
19 | protected $contentProxy; | ||
20 | |||
21 | private function getChromeImport($unsetUser = false) | ||
22 | { | ||
23 | $this->user = new User(); | ||
24 | |||
25 | $this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager') | ||
26 | ->disableOriginalConstructor() | ||
27 | ->getMock(); | ||
28 | |||
29 | $this->contentProxy = $this->getMockBuilder('Wallabag\CoreBundle\Helper\ContentProxy') | ||
30 | ->disableOriginalConstructor() | ||
31 | ->getMock(); | ||
32 | |||
33 | $wallabag = new ChromeImport($this->em, $this->contentProxy); | ||
34 | |||
35 | $this->logHandler = new TestHandler(); | ||
36 | $logger = new Logger('test', [$this->logHandler]); | ||
37 | $wallabag->setLogger($logger); | ||
38 | |||
39 | if (false === $unsetUser) { | ||
40 | $wallabag->setUser($this->user); | ||
41 | } | ||
42 | |||
43 | return $wallabag; | ||
44 | } | ||
45 | |||
46 | public function testInit() | ||
47 | { | ||
48 | $chromeImport = $this->getChromeImport(); | ||
49 | |||
50 | $this->assertEquals('Chrome', $chromeImport->getName()); | ||
51 | $this->assertNotEmpty($chromeImport->getUrl()); | ||
52 | $this->assertEquals('import.chrome.description', $chromeImport->getDescription()); | ||
53 | } | ||
54 | |||
55 | public function testImport() | ||
56 | { | ||
57 | $chromeImport = $this->getChromeImport(); | ||
58 | $chromeImport->setFilepath(__DIR__.'/../fixtures/chrome-bookmarks'); | ||
59 | |||
60 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
61 | ->disableOriginalConstructor() | ||
62 | ->getMock(); | ||
63 | |||
64 | $entryRepo->expects($this->exactly(1)) | ||
65 | ->method('findByUrlAndUserId') | ||
66 | ->willReturn(false); | ||
67 | |||
68 | $this->em | ||
69 | ->expects($this->any()) | ||
70 | ->method('getRepository') | ||
71 | ->willReturn($entryRepo); | ||
72 | |||
73 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
74 | ->disableOriginalConstructor() | ||
75 | ->getMock(); | ||
76 | |||
77 | $this->contentProxy | ||
78 | ->expects($this->exactly(1)) | ||
79 | ->method('updateEntry') | ||
80 | ->willReturn($entry); | ||
81 | |||
82 | $res = $chromeImport->import(); | ||
83 | |||
84 | $this->assertTrue($res); | ||
85 | $this->assertEquals(['skipped' => 0, 'imported' => 1, 'queued' => 0], $chromeImport->getSummary()); | ||
86 | } | ||
87 | |||
88 | public function testImportAndMarkAllAsRead() | ||
89 | { | ||
90 | $chromeImport = $this->getChromeImport(); | ||
91 | $chromeImport->setFilepath(__DIR__.'/../fixtures/chrome-bookmarks'); | ||
92 | |||
93 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
94 | ->disableOriginalConstructor() | ||
95 | ->getMock(); | ||
96 | |||
97 | $entryRepo->expects($this->exactly(1)) | ||
98 | ->method('findByUrlAndUserId') | ||
99 | ->will($this->onConsecutiveCalls(false, true)); | ||
100 | |||
101 | $this->em | ||
102 | ->expects($this->any()) | ||
103 | ->method('getRepository') | ||
104 | ->willReturn($entryRepo); | ||
105 | |||
106 | $this->contentProxy | ||
107 | ->expects($this->exactly(1)) | ||
108 | ->method('updateEntry') | ||
109 | ->willReturn(new Entry($this->user)); | ||
110 | |||
111 | // check that every entry persisted are archived | ||
112 | $this->em | ||
113 | ->expects($this->any()) | ||
114 | ->method('persist') | ||
115 | ->with($this->callback(function ($persistedEntry) { | ||
116 | return $persistedEntry->isArchived(); | ||
117 | })); | ||
118 | |||
119 | $res = $chromeImport->setMarkAsRead(true)->import(); | ||
120 | |||
121 | $this->assertTrue($res); | ||
122 | |||
123 | $this->assertEquals(['skipped' => 0, 'imported' => 1, 'queued' => 0], $chromeImport->getSummary()); | ||
124 | } | ||
125 | |||
126 | public function testImportWithRabbit() | ||
127 | { | ||
128 | $chromeImport = $this->getChromeImport(); | ||
129 | $chromeImport->setFilepath(__DIR__.'/../fixtures/chrome-bookmarks'); | ||
130 | |||
131 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
132 | ->disableOriginalConstructor() | ||
133 | ->getMock(); | ||
134 | |||
135 | $entryRepo->expects($this->never()) | ||
136 | ->method('findByUrlAndUserId'); | ||
137 | |||
138 | $this->em | ||
139 | ->expects($this->never()) | ||
140 | ->method('getRepository'); | ||
141 | |||
142 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
143 | ->disableOriginalConstructor() | ||
144 | ->getMock(); | ||
145 | |||
146 | $this->contentProxy | ||
147 | ->expects($this->never()) | ||
148 | ->method('updateEntry'); | ||
149 | |||
150 | $producer = $this->getMockBuilder('OldSound\RabbitMqBundle\RabbitMq\Producer') | ||
151 | ->disableOriginalConstructor() | ||
152 | ->getMock(); | ||
153 | |||
154 | $producer | ||
155 | ->expects($this->exactly(1)) | ||
156 | ->method('publish'); | ||
157 | |||
158 | $chromeImport->setProducer($producer); | ||
159 | |||
160 | $res = $chromeImport->setMarkAsRead(true)->import(); | ||
161 | |||
162 | $this->assertTrue($res); | ||
163 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 1], $chromeImport->getSummary()); | ||
164 | } | ||
165 | |||
166 | public function testImportWithRedis() | ||
167 | { | ||
168 | $chromeImport = $this->getChromeImport(); | ||
169 | $chromeImport->setFilepath(__DIR__.'/../fixtures/chrome-bookmarks'); | ||
170 | |||
171 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
172 | ->disableOriginalConstructor() | ||
173 | ->getMock(); | ||
174 | |||
175 | $entryRepo->expects($this->never()) | ||
176 | ->method('findByUrlAndUserId'); | ||
177 | |||
178 | $this->em | ||
179 | ->expects($this->never()) | ||
180 | ->method('getRepository'); | ||
181 | |||
182 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
183 | ->disableOriginalConstructor() | ||
184 | ->getMock(); | ||
185 | |||
186 | $this->contentProxy | ||
187 | ->expects($this->never()) | ||
188 | ->method('updateEntry'); | ||
189 | |||
190 | $factory = new RedisMockFactory(); | ||
191 | $redisMock = $factory->getAdapter('Predis\Client', true); | ||
192 | |||
193 | $queue = new RedisQueue($redisMock, 'chrome'); | ||
194 | $producer = new Producer($queue); | ||
195 | |||
196 | $chromeImport->setProducer($producer); | ||
197 | |||
198 | $res = $chromeImport->setMarkAsRead(true)->import(); | ||
199 | |||
200 | $this->assertTrue($res); | ||
201 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 1], $chromeImport->getSummary()); | ||
202 | |||
203 | $this->assertNotEmpty($redisMock->lpop('chrome')); | ||
204 | } | ||
205 | |||
206 | public function testImportBadFile() | ||
207 | { | ||
208 | $chromeImport = $this->getChromeImport(); | ||
209 | $chromeImport->setFilepath(__DIR__.'/../fixtures/wallabag-v1.jsonx'); | ||
210 | |||
211 | $res = $chromeImport->import(); | ||
212 | |||
213 | $this->assertFalse($res); | ||
214 | |||
215 | $records = $this->logHandler->getRecords(); | ||
216 | $this->assertContains('Wallabag Browser Import: unable to read file', $records[0]['message']); | ||
217 | $this->assertEquals('ERROR', $records[0]['level_name']); | ||
218 | } | ||
219 | |||
220 | public function testImportUserNotDefined() | ||
221 | { | ||
222 | $chromeImport = $this->getChromeImport(true); | ||
223 | $chromeImport->setFilepath(__DIR__.'/../fixtures/chrome-bookmarks'); | ||
224 | |||
225 | $res = $chromeImport->import(); | ||
226 | |||
227 | $this->assertFalse($res); | ||
228 | |||
229 | $records = $this->logHandler->getRecords(); | ||
230 | $this->assertContains('Wallabag Browser Import: user is not defined', $records[0]['message']); | ||
231 | $this->assertEquals('ERROR', $records[0]['level_name']); | ||
232 | } | ||
233 | } | ||
diff --git a/tests/Wallabag/ImportBundle/Import/FirefoxImportTest.php b/tests/Wallabag/ImportBundle/Import/FirefoxImportTest.php new file mode 100644 index 00000000..007dda6a --- /dev/null +++ b/tests/Wallabag/ImportBundle/Import/FirefoxImportTest.php | |||
@@ -0,0 +1,233 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\ImportBundle\Import; | ||
4 | |||
5 | use Wallabag\ImportBundle\Import\FirefoxImport; | ||
6 | use Wallabag\UserBundle\Entity\User; | ||
7 | use Wallabag\CoreBundle\Entity\Entry; | ||
8 | use Wallabag\ImportBundle\Redis\Producer; | ||
9 | use Monolog\Logger; | ||
10 | use Monolog\Handler\TestHandler; | ||
11 | use Simpleue\Queue\RedisQueue; | ||
12 | use M6Web\Component\RedisMock\RedisMockFactory; | ||
13 | |||
14 | class FirefoxImportTest extends \PHPUnit_Framework_TestCase | ||
15 | { | ||
16 | protected $user; | ||
17 | protected $em; | ||
18 | protected $logHandler; | ||
19 | protected $contentProxy; | ||
20 | |||
21 | private function getFirefoxImport($unsetUser = false) | ||
22 | { | ||
23 | $this->user = new User(); | ||
24 | |||
25 | $this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager') | ||
26 | ->disableOriginalConstructor() | ||
27 | ->getMock(); | ||
28 | |||
29 | $this->contentProxy = $this->getMockBuilder('Wallabag\CoreBundle\Helper\ContentProxy') | ||
30 | ->disableOriginalConstructor() | ||
31 | ->getMock(); | ||
32 | |||
33 | $wallabag = new FirefoxImport($this->em, $this->contentProxy); | ||
34 | |||
35 | $this->logHandler = new TestHandler(); | ||
36 | $logger = new Logger('test', [$this->logHandler]); | ||
37 | $wallabag->setLogger($logger); | ||
38 | |||
39 | if (false === $unsetUser) { | ||
40 | $wallabag->setUser($this->user); | ||
41 | } | ||
42 | |||
43 | return $wallabag; | ||
44 | } | ||
45 | |||
46 | public function testInit() | ||
47 | { | ||
48 | $firefoxImport = $this->getFirefoxImport(); | ||
49 | |||
50 | $this->assertEquals('Firefox', $firefoxImport->getName()); | ||
51 | $this->assertNotEmpty($firefoxImport->getUrl()); | ||
52 | $this->assertEquals('import.firefox.description', $firefoxImport->getDescription()); | ||
53 | } | ||
54 | |||
55 | public function testImport() | ||
56 | { | ||
57 | $firefoxImport = $this->getFirefoxImport(); | ||
58 | $firefoxImport->setFilepath(__DIR__.'/../fixtures/firefox-bookmarks.json'); | ||
59 | |||
60 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
61 | ->disableOriginalConstructor() | ||
62 | ->getMock(); | ||
63 | |||
64 | $entryRepo->expects($this->exactly(2)) | ||
65 | ->method('findByUrlAndUserId') | ||
66 | ->willReturn(false); | ||
67 | |||
68 | $this->em | ||
69 | ->expects($this->any()) | ||
70 | ->method('getRepository') | ||
71 | ->willReturn($entryRepo); | ||
72 | |||
73 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
74 | ->disableOriginalConstructor() | ||
75 | ->getMock(); | ||
76 | |||
77 | $this->contentProxy | ||
78 | ->expects($this->exactly(2)) | ||
79 | ->method('updateEntry') | ||
80 | ->willReturn($entry); | ||
81 | |||
82 | $res = $firefoxImport->import(); | ||
83 | |||
84 | $this->assertTrue($res); | ||
85 | $this->assertEquals(['skipped' => 0, 'imported' => 2, 'queued' => 0], $firefoxImport->getSummary()); | ||
86 | } | ||
87 | |||
88 | public function testImportAndMarkAllAsRead() | ||
89 | { | ||
90 | $firefoxImport = $this->getFirefoxImport(); | ||
91 | $firefoxImport->setFilepath(__DIR__.'/../fixtures/firefox-bookmarks.json'); | ||
92 | |||
93 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
94 | ->disableOriginalConstructor() | ||
95 | ->getMock(); | ||
96 | |||
97 | $entryRepo->expects($this->exactly(2)) | ||
98 | ->method('findByUrlAndUserId') | ||
99 | ->will($this->onConsecutiveCalls(false, true)); | ||
100 | |||
101 | $this->em | ||
102 | ->expects($this->any()) | ||
103 | ->method('getRepository') | ||
104 | ->willReturn($entryRepo); | ||
105 | |||
106 | $this->contentProxy | ||
107 | ->expects($this->exactly(1)) | ||
108 | ->method('updateEntry') | ||
109 | ->willReturn(new Entry($this->user)); | ||
110 | |||
111 | // check that every entry persisted are archived | ||
112 | $this->em | ||
113 | ->expects($this->any()) | ||
114 | ->method('persist') | ||
115 | ->with($this->callback(function ($persistedEntry) { | ||
116 | return $persistedEntry->isArchived(); | ||
117 | })); | ||
118 | |||
119 | $res = $firefoxImport->setMarkAsRead(true)->import(); | ||
120 | |||
121 | $this->assertTrue($res); | ||
122 | |||
123 | $this->assertEquals(['skipped' => 1, 'imported' => 1, 'queued' => 0], $firefoxImport->getSummary()); | ||
124 | } | ||
125 | |||
126 | public function testImportWithRabbit() | ||
127 | { | ||
128 | $firefoxImport = $this->getFirefoxImport(); | ||
129 | $firefoxImport->setFilepath(__DIR__.'/../fixtures/firefox-bookmarks.json'); | ||
130 | |||
131 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
132 | ->disableOriginalConstructor() | ||
133 | ->getMock(); | ||
134 | |||
135 | $entryRepo->expects($this->never()) | ||
136 | ->method('findByUrlAndUserId'); | ||
137 | |||
138 | $this->em | ||
139 | ->expects($this->never()) | ||
140 | ->method('getRepository'); | ||
141 | |||
142 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
143 | ->disableOriginalConstructor() | ||
144 | ->getMock(); | ||
145 | |||
146 | $this->contentProxy | ||
147 | ->expects($this->never()) | ||
148 | ->method('updateEntry'); | ||
149 | |||
150 | $producer = $this->getMockBuilder('OldSound\RabbitMqBundle\RabbitMq\Producer') | ||
151 | ->disableOriginalConstructor() | ||
152 | ->getMock(); | ||
153 | |||
154 | $producer | ||
155 | ->expects($this->exactly(1)) | ||
156 | ->method('publish'); | ||
157 | |||
158 | $firefoxImport->setProducer($producer); | ||
159 | |||
160 | $res = $firefoxImport->setMarkAsRead(true)->import(); | ||
161 | |||
162 | $this->assertTrue($res); | ||
163 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 1], $firefoxImport->getSummary()); | ||
164 | } | ||
165 | |||
166 | public function testImportWithRedis() | ||
167 | { | ||
168 | $firefoxImport = $this->getFirefoxImport(); | ||
169 | $firefoxImport->setFilepath(__DIR__.'/../fixtures/firefox-bookmarks.json'); | ||
170 | |||
171 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
172 | ->disableOriginalConstructor() | ||
173 | ->getMock(); | ||
174 | |||
175 | $entryRepo->expects($this->never()) | ||
176 | ->method('findByUrlAndUserId'); | ||
177 | |||
178 | $this->em | ||
179 | ->expects($this->never()) | ||
180 | ->method('getRepository'); | ||
181 | |||
182 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
183 | ->disableOriginalConstructor() | ||
184 | ->getMock(); | ||
185 | |||
186 | $this->contentProxy | ||
187 | ->expects($this->never()) | ||
188 | ->method('updateEntry'); | ||
189 | |||
190 | $factory = new RedisMockFactory(); | ||
191 | $redisMock = $factory->getAdapter('Predis\Client', true); | ||
192 | |||
193 | $queue = new RedisQueue($redisMock, 'firefox'); | ||
194 | $producer = new Producer($queue); | ||
195 | |||
196 | $firefoxImport->setProducer($producer); | ||
197 | |||
198 | $res = $firefoxImport->setMarkAsRead(true)->import(); | ||
199 | |||
200 | $this->assertTrue($res); | ||
201 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 1], $firefoxImport->getSummary()); | ||
202 | |||
203 | $this->assertNotEmpty($redisMock->lpop('firefox')); | ||
204 | } | ||
205 | |||
206 | public function testImportBadFile() | ||
207 | { | ||
208 | $firefoxImport = $this->getFirefoxImport(); | ||
209 | $firefoxImport->setFilepath(__DIR__.'/../fixtures/wallabag-v1.jsonx'); | ||
210 | |||
211 | $res = $firefoxImport->import(); | ||
212 | |||
213 | $this->assertFalse($res); | ||
214 | |||
215 | $records = $this->logHandler->getRecords(); | ||
216 | $this->assertContains('Wallabag Browser Import: unable to read file', $records[0]['message']); | ||
217 | $this->assertEquals('ERROR', $records[0]['level_name']); | ||
218 | } | ||
219 | |||
220 | public function testImportUserNotDefined() | ||
221 | { | ||
222 | $firefoxImport = $this->getFirefoxImport(true); | ||
223 | $firefoxImport->setFilepath(__DIR__.'/../fixtures/firefox-bookmarks.json'); | ||
224 | |||
225 | $res = $firefoxImport->import(); | ||
226 | |||
227 | $this->assertFalse($res); | ||
228 | |||
229 | $records = $this->logHandler->getRecords(); | ||
230 | $this->assertContains('Wallabag Browser Import: user is not defined', $records[0]['message']); | ||
231 | $this->assertEquals('ERROR', $records[0]['level_name']); | ||
232 | } | ||
233 | } | ||
diff --git a/tests/Wallabag/ImportBundle/Import/InstapaperImportTest.php b/tests/Wallabag/ImportBundle/Import/InstapaperImportTest.php new file mode 100644 index 00000000..75900bd7 --- /dev/null +++ b/tests/Wallabag/ImportBundle/Import/InstapaperImportTest.php | |||
@@ -0,0 +1,233 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\ImportBundle\Import; | ||
4 | |||
5 | use Wallabag\ImportBundle\Import\InstapaperImport; | ||
6 | use Wallabag\UserBundle\Entity\User; | ||
7 | use Wallabag\CoreBundle\Entity\Entry; | ||
8 | use Wallabag\ImportBundle\Redis\Producer; | ||
9 | use Monolog\Logger; | ||
10 | use Monolog\Handler\TestHandler; | ||
11 | use Simpleue\Queue\RedisQueue; | ||
12 | use M6Web\Component\RedisMock\RedisMockFactory; | ||
13 | |||
14 | class InstapaperImportTest extends \PHPUnit_Framework_TestCase | ||
15 | { | ||
16 | protected $user; | ||
17 | protected $em; | ||
18 | protected $logHandler; | ||
19 | protected $contentProxy; | ||
20 | |||
21 | private function getInstapaperImport($unsetUser = false) | ||
22 | { | ||
23 | $this->user = new User(); | ||
24 | |||
25 | $this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager') | ||
26 | ->disableOriginalConstructor() | ||
27 | ->getMock(); | ||
28 | |||
29 | $this->contentProxy = $this->getMockBuilder('Wallabag\CoreBundle\Helper\ContentProxy') | ||
30 | ->disableOriginalConstructor() | ||
31 | ->getMock(); | ||
32 | |||
33 | $import = new InstapaperImport($this->em, $this->contentProxy); | ||
34 | |||
35 | $this->logHandler = new TestHandler(); | ||
36 | $logger = new Logger('test', [$this->logHandler]); | ||
37 | $import->setLogger($logger); | ||
38 | |||
39 | if (false === $unsetUser) { | ||
40 | $import->setUser($this->user); | ||
41 | } | ||
42 | |||
43 | return $import; | ||
44 | } | ||
45 | |||
46 | public function testInit() | ||
47 | { | ||
48 | $instapaperImport = $this->getInstapaperImport(); | ||
49 | |||
50 | $this->assertEquals('Instapaper', $instapaperImport->getName()); | ||
51 | $this->assertNotEmpty($instapaperImport->getUrl()); | ||
52 | $this->assertEquals('import.instapaper.description', $instapaperImport->getDescription()); | ||
53 | } | ||
54 | |||
55 | public function testImport() | ||
56 | { | ||
57 | $instapaperImport = $this->getInstapaperImport(); | ||
58 | $instapaperImport->setFilepath(__DIR__.'/../fixtures/instapaper-export.csv'); | ||
59 | |||
60 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
61 | ->disableOriginalConstructor() | ||
62 | ->getMock(); | ||
63 | |||
64 | $entryRepo->expects($this->exactly(3)) | ||
65 | ->method('findByUrlAndUserId') | ||
66 | ->willReturn(false); | ||
67 | |||
68 | $this->em | ||
69 | ->expects($this->any()) | ||
70 | ->method('getRepository') | ||
71 | ->willReturn($entryRepo); | ||
72 | |||
73 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
74 | ->disableOriginalConstructor() | ||
75 | ->getMock(); | ||
76 | |||
77 | $this->contentProxy | ||
78 | ->expects($this->exactly(3)) | ||
79 | ->method('updateEntry') | ||
80 | ->willReturn($entry); | ||
81 | |||
82 | $res = $instapaperImport->import(); | ||
83 | |||
84 | $this->assertTrue($res); | ||
85 | $this->assertEquals(['skipped' => 0, 'imported' => 3, 'queued' => 0], $instapaperImport->getSummary()); | ||
86 | } | ||
87 | |||
88 | public function testImportAndMarkAllAsRead() | ||
89 | { | ||
90 | $instapaperImport = $this->getInstapaperImport(); | ||
91 | $instapaperImport->setFilepath(__DIR__.'/../fixtures/instapaper-export.csv'); | ||
92 | |||
93 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
94 | ->disableOriginalConstructor() | ||
95 | ->getMock(); | ||
96 | |||
97 | $entryRepo->expects($this->exactly(3)) | ||
98 | ->method('findByUrlAndUserId') | ||
99 | ->will($this->onConsecutiveCalls(false, true, true)); | ||
100 | |||
101 | $this->em | ||
102 | ->expects($this->any()) | ||
103 | ->method('getRepository') | ||
104 | ->willReturn($entryRepo); | ||
105 | |||
106 | $this->contentProxy | ||
107 | ->expects($this->once()) | ||
108 | ->method('updateEntry') | ||
109 | ->willReturn(new Entry($this->user)); | ||
110 | |||
111 | // check that every entry persisted are archived | ||
112 | $this->em | ||
113 | ->expects($this->once()) | ||
114 | ->method('persist') | ||
115 | ->with($this->callback(function ($persistedEntry) { | ||
116 | return $persistedEntry->isArchived(); | ||
117 | })); | ||
118 | |||
119 | $res = $instapaperImport->setMarkAsRead(true)->import(); | ||
120 | |||
121 | $this->assertTrue($res); | ||
122 | |||
123 | $this->assertEquals(['skipped' => 2, 'imported' => 1, 'queued' => 0], $instapaperImport->getSummary()); | ||
124 | } | ||
125 | |||
126 | public function testImportWithRabbit() | ||
127 | { | ||
128 | $instapaperImport = $this->getInstapaperImport(); | ||
129 | $instapaperImport->setFilepath(__DIR__.'/../fixtures/instapaper-export.csv'); | ||
130 | |||
131 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
132 | ->disableOriginalConstructor() | ||
133 | ->getMock(); | ||
134 | |||
135 | $entryRepo->expects($this->never()) | ||
136 | ->method('findByUrlAndUserId'); | ||
137 | |||
138 | $this->em | ||
139 | ->expects($this->never()) | ||
140 | ->method('getRepository'); | ||
141 | |||
142 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
143 | ->disableOriginalConstructor() | ||
144 | ->getMock(); | ||
145 | |||
146 | $this->contentProxy | ||
147 | ->expects($this->never()) | ||
148 | ->method('updateEntry'); | ||
149 | |||
150 | $producer = $this->getMockBuilder('OldSound\RabbitMqBundle\RabbitMq\Producer') | ||
151 | ->disableOriginalConstructor() | ||
152 | ->getMock(); | ||
153 | |||
154 | $producer | ||
155 | ->expects($this->exactly(3)) | ||
156 | ->method('publish'); | ||
157 | |||
158 | $instapaperImport->setProducer($producer); | ||
159 | |||
160 | $res = $instapaperImport->setMarkAsRead(true)->import(); | ||
161 | |||
162 | $this->assertTrue($res); | ||
163 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 3], $instapaperImport->getSummary()); | ||
164 | } | ||
165 | |||
166 | public function testImportWithRedis() | ||
167 | { | ||
168 | $instapaperImport = $this->getInstapaperImport(); | ||
169 | $instapaperImport->setFilepath(__DIR__.'/../fixtures/instapaper-export.csv'); | ||
170 | |||
171 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
172 | ->disableOriginalConstructor() | ||
173 | ->getMock(); | ||
174 | |||
175 | $entryRepo->expects($this->never()) | ||
176 | ->method('findByUrlAndUserId'); | ||
177 | |||
178 | $this->em | ||
179 | ->expects($this->never()) | ||
180 | ->method('getRepository'); | ||
181 | |||
182 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
183 | ->disableOriginalConstructor() | ||
184 | ->getMock(); | ||
185 | |||
186 | $this->contentProxy | ||
187 | ->expects($this->never()) | ||
188 | ->method('updateEntry'); | ||
189 | |||
190 | $factory = new RedisMockFactory(); | ||
191 | $redisMock = $factory->getAdapter('Predis\Client', true); | ||
192 | |||
193 | $queue = new RedisQueue($redisMock, 'instapaper'); | ||
194 | $producer = new Producer($queue); | ||
195 | |||
196 | $instapaperImport->setProducer($producer); | ||
197 | |||
198 | $res = $instapaperImport->setMarkAsRead(true)->import(); | ||
199 | |||
200 | $this->assertTrue($res); | ||
201 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 3], $instapaperImport->getSummary()); | ||
202 | |||
203 | $this->assertNotEmpty($redisMock->lpop('instapaper')); | ||
204 | } | ||
205 | |||
206 | public function testImportBadFile() | ||
207 | { | ||
208 | $instapaperImport = $this->getInstapaperImport(); | ||
209 | $instapaperImport->setFilepath(__DIR__.'/../fixtures/wallabag-v1.jsonx'); | ||
210 | |||
211 | $res = $instapaperImport->import(); | ||
212 | |||
213 | $this->assertFalse($res); | ||
214 | |||
215 | $records = $this->logHandler->getRecords(); | ||
216 | $this->assertContains('InstapaperImport: unable to read file', $records[0]['message']); | ||
217 | $this->assertEquals('ERROR', $records[0]['level_name']); | ||
218 | } | ||
219 | |||
220 | public function testImportUserNotDefined() | ||
221 | { | ||
222 | $instapaperImport = $this->getInstapaperImport(true); | ||
223 | $instapaperImport->setFilepath(__DIR__.'/../fixtures/instapaper-export.csv'); | ||
224 | |||
225 | $res = $instapaperImport->import(); | ||
226 | |||
227 | $this->assertFalse($res); | ||
228 | |||
229 | $records = $this->logHandler->getRecords(); | ||
230 | $this->assertContains('InstapaperImport: user is not defined', $records[0]['message']); | ||
231 | $this->assertEquals('ERROR', $records[0]['level_name']); | ||
232 | } | ||
233 | } | ||
diff --git a/tests/Wallabag/ImportBundle/Import/PocketImportTest.php b/tests/Wallabag/ImportBundle/Import/PocketImportTest.php index 8534e1c8..9ec7935c 100644 --- a/tests/Wallabag/ImportBundle/Import/PocketImportTest.php +++ b/tests/Wallabag/ImportBundle/Import/PocketImportTest.php | |||
@@ -4,21 +4,17 @@ namespace Tests\Wallabag\ImportBundle\Import; | |||
4 | 4 | ||
5 | use Wallabag\UserBundle\Entity\User; | 5 | use Wallabag\UserBundle\Entity\User; |
6 | use Wallabag\CoreBundle\Entity\Entry; | 6 | use Wallabag\CoreBundle\Entity\Entry; |
7 | use Wallabag\CoreBundle\Entity\Config; | ||
7 | use Wallabag\ImportBundle\Import\PocketImport; | 8 | use Wallabag\ImportBundle\Import\PocketImport; |
8 | use GuzzleHttp\Client; | 9 | use GuzzleHttp\Client; |
9 | use GuzzleHttp\Subscriber\Mock; | 10 | use GuzzleHttp\Subscriber\Mock; |
10 | use GuzzleHttp\Message\Response; | 11 | use GuzzleHttp\Message\Response; |
11 | use GuzzleHttp\Stream\Stream; | 12 | use GuzzleHttp\Stream\Stream; |
13 | use Wallabag\ImportBundle\Redis\Producer; | ||
12 | use Monolog\Logger; | 14 | use Monolog\Logger; |
13 | use Monolog\Handler\TestHandler; | 15 | use Monolog\Handler\TestHandler; |
14 | 16 | use Simpleue\Queue\RedisQueue; | |
15 | class PocketImportMock extends PocketImport | 17 | use M6Web\Component\RedisMock\RedisMockFactory; |
16 | { | ||
17 | public function getAccessToken() | ||
18 | { | ||
19 | return $this->accessToken; | ||
20 | } | ||
21 | } | ||
22 | 18 | ||
23 | class PocketImportTest extends \PHPUnit_Framework_TestCase | 19 | class PocketImportTest extends \PHPUnit_Framework_TestCase |
24 | { | 20 | { |
@@ -32,45 +28,38 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase | |||
32 | { | 28 | { |
33 | $this->user = new User(); | 29 | $this->user = new User(); |
34 | 30 | ||
35 | $this->tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface') | 31 | $config = new Config($this->user); |
36 | ->disableOriginalConstructor() | 32 | $config->setPocketConsumerKey('xxx'); |
37 | ->getMock(); | ||
38 | 33 | ||
39 | $token = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\TokenInterface') | 34 | $this->user->setConfig($config); |
40 | ->disableOriginalConstructor() | ||
41 | ->getMock(); | ||
42 | 35 | ||
43 | $this->contentProxy = $this->getMockBuilder('Wallabag\CoreBundle\Helper\ContentProxy') | 36 | $this->contentProxy = $this->getMockBuilder('Wallabag\CoreBundle\Helper\ContentProxy') |
44 | ->disableOriginalConstructor() | 37 | ->disableOriginalConstructor() |
45 | ->getMock(); | 38 | ->getMock(); |
46 | 39 | ||
47 | $token->expects($this->once()) | ||
48 | ->method('getUser') | ||
49 | ->willReturn($this->user); | ||
50 | |||
51 | $this->tokenStorage->expects($this->once()) | ||
52 | ->method('getToken') | ||
53 | ->willReturn($token); | ||
54 | |||
55 | $this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager') | 40 | $this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager') |
56 | ->disableOriginalConstructor() | 41 | ->disableOriginalConstructor() |
57 | ->getMock(); | 42 | ->getMock(); |
58 | 43 | ||
59 | $config = $this->getMockBuilder('Craue\ConfigBundle\Util\Config') | 44 | $this->uow = $this->getMockBuilder('Doctrine\ORM\UnitOfWork') |
60 | ->disableOriginalConstructor() | 45 | ->disableOriginalConstructor() |
61 | ->getMock(); | 46 | ->getMock(); |
62 | 47 | ||
63 | $config->expects($this->any()) | 48 | $this->em |
64 | ->method('get') | 49 | ->expects($this->any()) |
65 | ->with('pocket_consumer_key') | 50 | ->method('getUnitOfWork') |
66 | ->willReturn($consumerKey); | 51 | ->willReturn($this->uow); |
52 | |||
53 | $this->uow | ||
54 | ->expects($this->any()) | ||
55 | ->method('getScheduledEntityInsertions') | ||
56 | ->willReturn([]); | ||
67 | 57 | ||
68 | $pocket = new PocketImportMock( | 58 | $pocket = new PocketImport( |
69 | $this->tokenStorage, | ||
70 | $this->em, | 59 | $this->em, |
71 | $this->contentProxy, | 60 | $this->contentProxy |
72 | $config | ||
73 | ); | 61 | ); |
62 | $pocket->setUser($this->user); | ||
74 | 63 | ||
75 | $this->logHandler = new TestHandler(); | 64 | $this->logHandler = new TestHandler(); |
76 | $logger = new Logger('test', [$this->logHandler]); | 65 | $logger = new Logger('test', [$this->logHandler]); |
@@ -189,10 +178,16 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase | |||
189 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", | 178 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", |
190 | "favorite": "1", | 179 | "favorite": "1", |
191 | "status": "1", | 180 | "status": "1", |
181 | "time_added": "1473020899", | ||
182 | "time_updated": "1473020899", | ||
183 | "time_read": "0", | ||
184 | "time_favorited": "0", | ||
185 | "sort_id": 0, | ||
192 | "resolved_title": "The Massive Ryder Cup Preview", | 186 | "resolved_title": "The Massive Ryder Cup Preview", |
193 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", | 187 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", |
194 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", | 188 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", |
195 | "is_article": "1", | 189 | "is_article": "1", |
190 | "is_index": "0", | ||
196 | "has_video": "1", | 191 | "has_video": "1", |
197 | "has_image": "1", | 192 | "has_image": "1", |
198 | "word_count": "3197", | 193 | "word_count": "3197", |
@@ -236,10 +231,16 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase | |||
236 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", | 231 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", |
237 | "favorite": "1", | 232 | "favorite": "1", |
238 | "status": "1", | 233 | "status": "1", |
234 | "time_added": "1473020899", | ||
235 | "time_updated": "1473020899", | ||
236 | "time_read": "0", | ||
237 | "time_favorited": "0", | ||
238 | "sort_id": 1, | ||
239 | "resolved_title": "The Massive Ryder Cup Preview", | 239 | "resolved_title": "The Massive Ryder Cup Preview", |
240 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", | 240 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", |
241 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", | 241 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", |
242 | "is_article": "1", | 242 | "is_article": "1", |
243 | "is_index": "0", | ||
243 | "has_video": "0", | 244 | "has_video": "0", |
244 | "has_image": "0", | 245 | "has_image": "0", |
245 | "word_count": "3197" | 246 | "word_count": "3197" |
@@ -279,7 +280,7 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase | |||
279 | $res = $pocketImport->import(); | 280 | $res = $pocketImport->import(); |
280 | 281 | ||
281 | $this->assertTrue($res); | 282 | $this->assertTrue($res); |
282 | $this->assertEquals(['skipped' => 1, 'imported' => 1], $pocketImport->getSummary()); | 283 | $this->assertEquals(['skipped' => 1, 'imported' => 1, 'queued' => 0], $pocketImport->getSummary()); |
283 | } | 284 | } |
284 | 285 | ||
285 | /** | 286 | /** |
@@ -302,6 +303,11 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase | |||
302 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", | 303 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", |
303 | "favorite": "1", | 304 | "favorite": "1", |
304 | "status": "1", | 305 | "status": "1", |
306 | "time_added": "1473020899", | ||
307 | "time_updated": "1473020899", | ||
308 | "time_read": "0", | ||
309 | "time_favorited": "0", | ||
310 | "sort_id": 0, | ||
305 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", | 311 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", |
306 | "is_article": "1", | 312 | "is_article": "1", |
307 | "has_video": "1", | 313 | "has_video": "1", |
@@ -315,6 +321,11 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase | |||
315 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", | 321 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", |
316 | "favorite": "1", | 322 | "favorite": "1", |
317 | "status": "0", | 323 | "status": "0", |
324 | "time_added": "1473020899", | ||
325 | "time_updated": "1473020899", | ||
326 | "time_read": "0", | ||
327 | "time_favorited": "0", | ||
328 | "sort_id": 1, | ||
318 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", | 329 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", |
319 | "is_article": "1", | 330 | "is_article": "1", |
320 | "has_video": "0", | 331 | "has_video": "0", |
@@ -364,7 +375,174 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase | |||
364 | $res = $pocketImport->setMarkAsRead(true)->import(); | 375 | $res = $pocketImport->setMarkAsRead(true)->import(); |
365 | 376 | ||
366 | $this->assertTrue($res); | 377 | $this->assertTrue($res); |
367 | $this->assertEquals(['skipped' => 0, 'imported' => 2], $pocketImport->getSummary()); | 378 | $this->assertEquals(['skipped' => 0, 'imported' => 2, 'queued' => 0], $pocketImport->getSummary()); |
379 | } | ||
380 | |||
381 | /** | ||
382 | * Will sample results from https://getpocket.com/developer/docs/v3/retrieve. | ||
383 | */ | ||
384 | public function testImportWithRabbit() | ||
385 | { | ||
386 | $client = new Client(); | ||
387 | |||
388 | $body = <<<'JSON' | ||
389 | { | ||
390 | "item_id": "229279689", | ||
391 | "resolved_id": "229279689", | ||
392 | "given_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", | ||
393 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", | ||
394 | "favorite": "1", | ||
395 | "status": "1", | ||
396 | "time_added": "1473020899", | ||
397 | "time_updated": "1473020899", | ||
398 | "time_read": "0", | ||
399 | "time_favorited": "0", | ||
400 | "sort_id": 0, | ||
401 | "resolved_title": "The Massive Ryder Cup Preview", | ||
402 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", | ||
403 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", | ||
404 | "is_article": "1", | ||
405 | "has_video": "0", | ||
406 | "has_image": "0", | ||
407 | "word_count": "3197" | ||
408 | } | ||
409 | JSON; | ||
410 | |||
411 | $mock = new Mock([ | ||
412 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(json_encode(['access_token' => 'wunderbar_token']))), | ||
413 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(' | ||
414 | { | ||
415 | "status": 1, | ||
416 | "list": { | ||
417 | "229279690": '.$body.' | ||
418 | } | ||
419 | } | ||
420 | ')), | ||
421 | ]); | ||
422 | |||
423 | $client->getEmitter()->attach($mock); | ||
424 | |||
425 | $pocketImport = $this->getPocketImport(); | ||
426 | |||
427 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
428 | ->disableOriginalConstructor() | ||
429 | ->getMock(); | ||
430 | |||
431 | $entryRepo->expects($this->never()) | ||
432 | ->method('findByUrlAndUserId'); | ||
433 | |||
434 | $this->em | ||
435 | ->expects($this->never()) | ||
436 | ->method('getRepository'); | ||
437 | |||
438 | $entry = new Entry($this->user); | ||
439 | |||
440 | $this->contentProxy | ||
441 | ->expects($this->never()) | ||
442 | ->method('updateEntry'); | ||
443 | |||
444 | $producer = $this->getMockBuilder('OldSound\RabbitMqBundle\RabbitMq\Producer') | ||
445 | ->disableOriginalConstructor() | ||
446 | ->getMock(); | ||
447 | |||
448 | $bodyAsArray = json_decode($body, true); | ||
449 | // because with just use `new User()` so it doesn't have an id | ||
450 | $bodyAsArray['userId'] = null; | ||
451 | |||
452 | $producer | ||
453 | ->expects($this->once()) | ||
454 | ->method('publish') | ||
455 | ->with(json_encode($bodyAsArray)); | ||
456 | |||
457 | $pocketImport->setClient($client); | ||
458 | $pocketImport->setProducer($producer); | ||
459 | $pocketImport->authorize('wunderbar_code'); | ||
460 | |||
461 | $res = $pocketImport->setMarkAsRead(true)->import(); | ||
462 | |||
463 | $this->assertTrue($res); | ||
464 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 1], $pocketImport->getSummary()); | ||
465 | } | ||
466 | |||
467 | /** | ||
468 | * Will sample results from https://getpocket.com/developer/docs/v3/retrieve. | ||
469 | */ | ||
470 | public function testImportWithRedis() | ||
471 | { | ||
472 | $client = new Client(); | ||
473 | |||
474 | $body = <<<'JSON' | ||
475 | { | ||
476 | "item_id": "229279689", | ||
477 | "resolved_id": "229279689", | ||
478 | "given_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", | ||
479 | "given_title": "The Massive Ryder Cup Preview - The Triangle Blog - Grantland", | ||
480 | "favorite": "1", | ||
481 | "status": "1", | ||
482 | "time_added": "1473020899", | ||
483 | "time_updated": "1473020899", | ||
484 | "time_read": "0", | ||
485 | "time_favorited": "0", | ||
486 | "sort_id": 0, | ||
487 | "resolved_title": "The Massive Ryder Cup Preview", | ||
488 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview", | ||
489 | "excerpt": "The list of things I love about the Ryder Cup is so long that it could fill a (tedious) novel, and golf fans can probably guess most of them.", | ||
490 | "is_article": "1", | ||
491 | "has_video": "0", | ||
492 | "has_image": "0", | ||
493 | "word_count": "3197" | ||
494 | } | ||
495 | JSON; | ||
496 | |||
497 | $mock = new Mock([ | ||
498 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(json_encode(['access_token' => 'wunderbar_token']))), | ||
499 | new Response(200, ['Content-Type' => 'application/json'], Stream::factory(' | ||
500 | { | ||
501 | "status": 1, | ||
502 | "list": { | ||
503 | "229279690": '.$body.' | ||
504 | } | ||
505 | } | ||
506 | ')), | ||
507 | ]); | ||
508 | |||
509 | $client->getEmitter()->attach($mock); | ||
510 | |||
511 | $pocketImport = $this->getPocketImport(); | ||
512 | |||
513 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
514 | ->disableOriginalConstructor() | ||
515 | ->getMock(); | ||
516 | |||
517 | $entryRepo->expects($this->never()) | ||
518 | ->method('findByUrlAndUserId'); | ||
519 | |||
520 | $this->em | ||
521 | ->expects($this->never()) | ||
522 | ->method('getRepository'); | ||
523 | |||
524 | $entry = new Entry($this->user); | ||
525 | |||
526 | $this->contentProxy | ||
527 | ->expects($this->never()) | ||
528 | ->method('updateEntry'); | ||
529 | |||
530 | $factory = new RedisMockFactory(); | ||
531 | $redisMock = $factory->getAdapter('Predis\Client', true); | ||
532 | |||
533 | $queue = new RedisQueue($redisMock, 'pocket'); | ||
534 | $producer = new Producer($queue); | ||
535 | |||
536 | $pocketImport->setClient($client); | ||
537 | $pocketImport->setProducer($producer); | ||
538 | $pocketImport->authorize('wunderbar_code'); | ||
539 | |||
540 | $res = $pocketImport->setMarkAsRead(true)->import(); | ||
541 | |||
542 | $this->assertTrue($res); | ||
543 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 1], $pocketImport->getSummary()); | ||
544 | |||
545 | $this->assertNotEmpty($redisMock->lpop('pocket')); | ||
368 | } | 546 | } |
369 | 547 | ||
370 | public function testImportBadResponse() | 548 | public function testImportBadResponse() |
@@ -402,6 +580,8 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase | |||
402 | "status": 1, | 580 | "status": 1, |
403 | "list": { | 581 | "list": { |
404 | "229279689": { | 582 | "229279689": { |
583 | "status": "1", | ||
584 | "favorite": "1", | ||
405 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview" | 585 | "resolved_url": "http://www.grantland.com/blog/the-triangle/post/_/id/38347/ryder-cup-preview" |
406 | } | 586 | } |
407 | } | 587 | } |
@@ -439,6 +619,6 @@ class PocketImportTest extends \PHPUnit_Framework_TestCase | |||
439 | $res = $pocketImport->import(); | 619 | $res = $pocketImport->import(); |
440 | 620 | ||
441 | $this->assertTrue($res); | 621 | $this->assertTrue($res); |
442 | $this->assertEquals(['skipped' => 1, 'imported' => 0], $pocketImport->getSummary()); | 622 | $this->assertEquals(['skipped' => 0, 'imported' => 1, 'queued' => 0], $pocketImport->getSummary()); |
443 | } | 623 | } |
444 | } | 624 | } |
diff --git a/tests/Wallabag/ImportBundle/Import/ReadabilityImportTest.php b/tests/Wallabag/ImportBundle/Import/ReadabilityImportTest.php new file mode 100644 index 00000000..d98cd486 --- /dev/null +++ b/tests/Wallabag/ImportBundle/Import/ReadabilityImportTest.php | |||
@@ -0,0 +1,233 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\ImportBundle\Import; | ||
4 | |||
5 | use Wallabag\ImportBundle\Import\ReadabilityImport; | ||
6 | use Wallabag\UserBundle\Entity\User; | ||
7 | use Wallabag\CoreBundle\Entity\Entry; | ||
8 | use Wallabag\ImportBundle\Redis\Producer; | ||
9 | use Monolog\Logger; | ||
10 | use Monolog\Handler\TestHandler; | ||
11 | use Simpleue\Queue\RedisQueue; | ||
12 | use M6Web\Component\RedisMock\RedisMockFactory; | ||
13 | |||
14 | class ReadabilityImportTest extends \PHPUnit_Framework_TestCase | ||
15 | { | ||
16 | protected $user; | ||
17 | protected $em; | ||
18 | protected $logHandler; | ||
19 | protected $contentProxy; | ||
20 | |||
21 | private function getReadabilityImport($unsetUser = false) | ||
22 | { | ||
23 | $this->user = new User(); | ||
24 | |||
25 | $this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager') | ||
26 | ->disableOriginalConstructor() | ||
27 | ->getMock(); | ||
28 | |||
29 | $this->contentProxy = $this->getMockBuilder('Wallabag\CoreBundle\Helper\ContentProxy') | ||
30 | ->disableOriginalConstructor() | ||
31 | ->getMock(); | ||
32 | |||
33 | $wallabag = new ReadabilityImport($this->em, $this->contentProxy); | ||
34 | |||
35 | $this->logHandler = new TestHandler(); | ||
36 | $logger = new Logger('test', [$this->logHandler]); | ||
37 | $wallabag->setLogger($logger); | ||
38 | |||
39 | if (false === $unsetUser) { | ||
40 | $wallabag->setUser($this->user); | ||
41 | } | ||
42 | |||
43 | return $wallabag; | ||
44 | } | ||
45 | |||
46 | public function testInit() | ||
47 | { | ||
48 | $readabilityImport = $this->getReadabilityImport(); | ||
49 | |||
50 | $this->assertEquals('Readability', $readabilityImport->getName()); | ||
51 | $this->assertNotEmpty($readabilityImport->getUrl()); | ||
52 | $this->assertEquals('import.readability.description', $readabilityImport->getDescription()); | ||
53 | } | ||
54 | |||
55 | public function testImport() | ||
56 | { | ||
57 | $readabilityImport = $this->getReadabilityImport(); | ||
58 | $readabilityImport->setFilepath(__DIR__.'/../fixtures/readability.json'); | ||
59 | |||
60 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
61 | ->disableOriginalConstructor() | ||
62 | ->getMock(); | ||
63 | |||
64 | $entryRepo->expects($this->exactly(24)) | ||
65 | ->method('findByUrlAndUserId') | ||
66 | ->willReturn(false); | ||
67 | |||
68 | $this->em | ||
69 | ->expects($this->any()) | ||
70 | ->method('getRepository') | ||
71 | ->willReturn($entryRepo); | ||
72 | |||
73 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
74 | ->disableOriginalConstructor() | ||
75 | ->getMock(); | ||
76 | |||
77 | $this->contentProxy | ||
78 | ->expects($this->exactly(24)) | ||
79 | ->method('updateEntry') | ||
80 | ->willReturn($entry); | ||
81 | |||
82 | $res = $readabilityImport->import(); | ||
83 | |||
84 | $this->assertTrue($res); | ||
85 | $this->assertEquals(['skipped' => 0, 'imported' => 24, 'queued' => 0], $readabilityImport->getSummary()); | ||
86 | } | ||
87 | |||
88 | public function testImportAndMarkAllAsRead() | ||
89 | { | ||
90 | $readabilityImport = $this->getReadabilityImport(); | ||
91 | $readabilityImport->setFilepath(__DIR__.'/../fixtures/readability-read.json'); | ||
92 | |||
93 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
94 | ->disableOriginalConstructor() | ||
95 | ->getMock(); | ||
96 | |||
97 | $entryRepo->expects($this->exactly(2)) | ||
98 | ->method('findByUrlAndUserId') | ||
99 | ->will($this->onConsecutiveCalls(false, true)); | ||
100 | |||
101 | $this->em | ||
102 | ->expects($this->any()) | ||
103 | ->method('getRepository') | ||
104 | ->willReturn($entryRepo); | ||
105 | |||
106 | $this->contentProxy | ||
107 | ->expects($this->exactly(1)) | ||
108 | ->method('updateEntry') | ||
109 | ->willReturn(new Entry($this->user)); | ||
110 | |||
111 | // check that every entry persisted are archived | ||
112 | $this->em | ||
113 | ->expects($this->any()) | ||
114 | ->method('persist') | ||
115 | ->with($this->callback(function ($persistedEntry) { | ||
116 | return $persistedEntry->isArchived(); | ||
117 | })); | ||
118 | |||
119 | $res = $readabilityImport->setMarkAsRead(true)->import(); | ||
120 | |||
121 | $this->assertTrue($res); | ||
122 | |||
123 | $this->assertEquals(['skipped' => 1, 'imported' => 1, 'queued' => 0], $readabilityImport->getSummary()); | ||
124 | } | ||
125 | |||
126 | public function testImportWithRabbit() | ||
127 | { | ||
128 | $readabilityImport = $this->getReadabilityImport(); | ||
129 | $readabilityImport->setFilepath(__DIR__.'/../fixtures/readability.json'); | ||
130 | |||
131 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
132 | ->disableOriginalConstructor() | ||
133 | ->getMock(); | ||
134 | |||
135 | $entryRepo->expects($this->never()) | ||
136 | ->method('findByUrlAndUserId'); | ||
137 | |||
138 | $this->em | ||
139 | ->expects($this->never()) | ||
140 | ->method('getRepository'); | ||
141 | |||
142 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
143 | ->disableOriginalConstructor() | ||
144 | ->getMock(); | ||
145 | |||
146 | $this->contentProxy | ||
147 | ->expects($this->never()) | ||
148 | ->method('updateEntry'); | ||
149 | |||
150 | $producer = $this->getMockBuilder('OldSound\RabbitMqBundle\RabbitMq\Producer') | ||
151 | ->disableOriginalConstructor() | ||
152 | ->getMock(); | ||
153 | |||
154 | $producer | ||
155 | ->expects($this->exactly(24)) | ||
156 | ->method('publish'); | ||
157 | |||
158 | $readabilityImport->setProducer($producer); | ||
159 | |||
160 | $res = $readabilityImport->setMarkAsRead(true)->import(); | ||
161 | |||
162 | $this->assertTrue($res); | ||
163 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 24], $readabilityImport->getSummary()); | ||
164 | } | ||
165 | |||
166 | public function testImportWithRedis() | ||
167 | { | ||
168 | $readabilityImport = $this->getReadabilityImport(); | ||
169 | $readabilityImport->setFilepath(__DIR__.'/../fixtures/readability.json'); | ||
170 | |||
171 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
172 | ->disableOriginalConstructor() | ||
173 | ->getMock(); | ||
174 | |||
175 | $entryRepo->expects($this->never()) | ||
176 | ->method('findByUrlAndUserId'); | ||
177 | |||
178 | $this->em | ||
179 | ->expects($this->never()) | ||
180 | ->method('getRepository'); | ||
181 | |||
182 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
183 | ->disableOriginalConstructor() | ||
184 | ->getMock(); | ||
185 | |||
186 | $this->contentProxy | ||
187 | ->expects($this->never()) | ||
188 | ->method('updateEntry'); | ||
189 | |||
190 | $factory = new RedisMockFactory(); | ||
191 | $redisMock = $factory->getAdapter('Predis\Client', true); | ||
192 | |||
193 | $queue = new RedisQueue($redisMock, 'readability'); | ||
194 | $producer = new Producer($queue); | ||
195 | |||
196 | $readabilityImport->setProducer($producer); | ||
197 | |||
198 | $res = $readabilityImport->setMarkAsRead(true)->import(); | ||
199 | |||
200 | $this->assertTrue($res); | ||
201 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 24], $readabilityImport->getSummary()); | ||
202 | |||
203 | $this->assertNotEmpty($redisMock->lpop('readability')); | ||
204 | } | ||
205 | |||
206 | public function testImportBadFile() | ||
207 | { | ||
208 | $readabilityImport = $this->getReadabilityImport(); | ||
209 | $readabilityImport->setFilepath(__DIR__.'/../fixtures/wallabag-v1.jsonx'); | ||
210 | |||
211 | $res = $readabilityImport->import(); | ||
212 | |||
213 | $this->assertFalse($res); | ||
214 | |||
215 | $records = $this->logHandler->getRecords(); | ||
216 | $this->assertContains('ReadabilityImport: unable to read file', $records[0]['message']); | ||
217 | $this->assertEquals('ERROR', $records[0]['level_name']); | ||
218 | } | ||
219 | |||
220 | public function testImportUserNotDefined() | ||
221 | { | ||
222 | $readabilityImport = $this->getReadabilityImport(true); | ||
223 | $readabilityImport->setFilepath(__DIR__.'/../fixtures/readability.json'); | ||
224 | |||
225 | $res = $readabilityImport->import(); | ||
226 | |||
227 | $this->assertFalse($res); | ||
228 | |||
229 | $records = $this->logHandler->getRecords(); | ||
230 | $this->assertContains('ReadabilityImport: user is not defined', $records[0]['message']); | ||
231 | $this->assertEquals('ERROR', $records[0]['level_name']); | ||
232 | } | ||
233 | } | ||
diff --git a/tests/Wallabag/ImportBundle/Import/WallabagV1ImportTest.php b/tests/Wallabag/ImportBundle/Import/WallabagV1ImportTest.php index bdc47dac..82dc4c7e 100644 --- a/tests/Wallabag/ImportBundle/Import/WallabagV1ImportTest.php +++ b/tests/Wallabag/ImportBundle/Import/WallabagV1ImportTest.php | |||
@@ -5,8 +5,11 @@ namespace Tests\Wallabag\ImportBundle\Import; | |||
5 | use Wallabag\ImportBundle\Import\WallabagV1Import; | 5 | use Wallabag\ImportBundle\Import\WallabagV1Import; |
6 | use Wallabag\UserBundle\Entity\User; | 6 | use Wallabag\UserBundle\Entity\User; |
7 | use Wallabag\CoreBundle\Entity\Entry; | 7 | use Wallabag\CoreBundle\Entity\Entry; |
8 | use Wallabag\ImportBundle\Redis\Producer; | ||
8 | use Monolog\Logger; | 9 | use Monolog\Logger; |
9 | use Monolog\Handler\TestHandler; | 10 | use Monolog\Handler\TestHandler; |
11 | use Simpleue\Queue\RedisQueue; | ||
12 | use M6Web\Component\RedisMock\RedisMockFactory; | ||
10 | 13 | ||
11 | class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | 14 | class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase |
12 | { | 15 | { |
@@ -23,6 +26,20 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | |||
23 | ->disableOriginalConstructor() | 26 | ->disableOriginalConstructor() |
24 | ->getMock(); | 27 | ->getMock(); |
25 | 28 | ||
29 | $this->uow = $this->getMockBuilder('Doctrine\ORM\UnitOfWork') | ||
30 | ->disableOriginalConstructor() | ||
31 | ->getMock(); | ||
32 | |||
33 | $this->em | ||
34 | ->expects($this->any()) | ||
35 | ->method('getUnitOfWork') | ||
36 | ->willReturn($this->uow); | ||
37 | |||
38 | $this->uow | ||
39 | ->expects($this->any()) | ||
40 | ->method('getScheduledEntityInsertions') | ||
41 | ->willReturn([]); | ||
42 | |||
26 | $this->contentProxy = $this->getMockBuilder('Wallabag\CoreBundle\Helper\ContentProxy') | 43 | $this->contentProxy = $this->getMockBuilder('Wallabag\CoreBundle\Helper\ContentProxy') |
27 | ->disableOriginalConstructor() | 44 | ->disableOriginalConstructor() |
28 | ->getMock(); | 45 | ->getMock(); |
@@ -79,7 +96,7 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | |||
79 | $res = $wallabagV1Import->import(); | 96 | $res = $wallabagV1Import->import(); |
80 | 97 | ||
81 | $this->assertTrue($res); | 98 | $this->assertTrue($res); |
82 | $this->assertEquals(['skipped' => 1, 'imported' => 3], $wallabagV1Import->getSummary()); | 99 | $this->assertEquals(['skipped' => 1, 'imported' => 3, 'queued' => 0], $wallabagV1Import->getSummary()); |
83 | } | 100 | } |
84 | 101 | ||
85 | public function testImportAndMarkAllAsRead() | 102 | public function testImportAndMarkAllAsRead() |
@@ -117,7 +134,87 @@ class WallabagV1ImportTest extends \PHPUnit_Framework_TestCase | |||
117 | 134 | ||
118 | $this->assertTrue($res); | 135 | $this->assertTrue($res); |
119 | 136 | ||
120 | $this->assertEquals(['skipped' => 0, 'imported' => 3], $wallabagV1Import->getSummary()); | 137 | $this->assertEquals(['skipped' => 0, 'imported' => 3, 'queued' => 0], $wallabagV1Import->getSummary()); |
138 | } | ||
139 | |||
140 | public function testImportWithRabbit() | ||
141 | { | ||
142 | $wallabagV1Import = $this->getWallabagV1Import(); | ||
143 | $wallabagV1Import->setFilepath(__DIR__.'/../fixtures/wallabag-v1.json'); | ||
144 | |||
145 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
146 | ->disableOriginalConstructor() | ||
147 | ->getMock(); | ||
148 | |||
149 | $entryRepo->expects($this->never()) | ||
150 | ->method('findByUrlAndUserId'); | ||
151 | |||
152 | $this->em | ||
153 | ->expects($this->never()) | ||
154 | ->method('getRepository'); | ||
155 | |||
156 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
157 | ->disableOriginalConstructor() | ||
158 | ->getMock(); | ||
159 | |||
160 | $this->contentProxy | ||
161 | ->expects($this->never()) | ||
162 | ->method('updateEntry'); | ||
163 | |||
164 | $producer = $this->getMockBuilder('OldSound\RabbitMqBundle\RabbitMq\Producer') | ||
165 | ->disableOriginalConstructor() | ||
166 | ->getMock(); | ||
167 | |||
168 | $producer | ||
169 | ->expects($this->exactly(4)) | ||
170 | ->method('publish'); | ||
171 | |||
172 | $wallabagV1Import->setProducer($producer); | ||
173 | |||
174 | $res = $wallabagV1Import->setMarkAsRead(true)->import(); | ||
175 | |||
176 | $this->assertTrue($res); | ||
177 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 4], $wallabagV1Import->getSummary()); | ||
178 | } | ||
179 | |||
180 | public function testImportWithRedis() | ||
181 | { | ||
182 | $wallabagV1Import = $this->getWallabagV1Import(); | ||
183 | $wallabagV1Import->setFilepath(__DIR__.'/../fixtures/wallabag-v1.json'); | ||
184 | |||
185 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
186 | ->disableOriginalConstructor() | ||
187 | ->getMock(); | ||
188 | |||
189 | $entryRepo->expects($this->never()) | ||
190 | ->method('findByUrlAndUserId'); | ||
191 | |||
192 | $this->em | ||
193 | ->expects($this->never()) | ||
194 | ->method('getRepository'); | ||
195 | |||
196 | $entry = $this->getMockBuilder('Wallabag\CoreBundle\Entity\Entry') | ||
197 | ->disableOriginalConstructor() | ||
198 | ->getMock(); | ||
199 | |||
200 | $this->contentProxy | ||
201 | ->expects($this->never()) | ||
202 | ->method('updateEntry'); | ||
203 | |||
204 | $factory = new RedisMockFactory(); | ||
205 | $redisMock = $factory->getAdapter('Predis\Client', true); | ||
206 | |||
207 | $queue = new RedisQueue($redisMock, 'wallabag_v1'); | ||
208 | $producer = new Producer($queue); | ||
209 | |||
210 | $wallabagV1Import->setProducer($producer); | ||
211 | |||
212 | $res = $wallabagV1Import->setMarkAsRead(true)->import(); | ||
213 | |||
214 | $this->assertTrue($res); | ||
215 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 4], $wallabagV1Import->getSummary()); | ||
216 | |||
217 | $this->assertNotEmpty($redisMock->lpop('wallabag_v1')); | ||
121 | } | 218 | } |
122 | 219 | ||
123 | public function testImportBadFile() | 220 | public function testImportBadFile() |
diff --git a/tests/Wallabag/ImportBundle/Import/WallabagV2ImportTest.php b/tests/Wallabag/ImportBundle/Import/WallabagV2ImportTest.php index 4a45e0f0..bea89efb 100644 --- a/tests/Wallabag/ImportBundle/Import/WallabagV2ImportTest.php +++ b/tests/Wallabag/ImportBundle/Import/WallabagV2ImportTest.php | |||
@@ -5,8 +5,11 @@ namespace Tests\Wallabag\ImportBundle\Import; | |||
5 | use Wallabag\ImportBundle\Import\WallabagV2Import; | 5 | use Wallabag\ImportBundle\Import\WallabagV2Import; |
6 | use Wallabag\UserBundle\Entity\User; | 6 | use Wallabag\UserBundle\Entity\User; |
7 | use Wallabag\CoreBundle\Entity\Entry; | 7 | use Wallabag\CoreBundle\Entity\Entry; |
8 | use Wallabag\ImportBundle\Redis\Producer; | ||
8 | use Monolog\Logger; | 9 | use Monolog\Logger; |
9 | use Monolog\Handler\TestHandler; | 10 | use Monolog\Handler\TestHandler; |
11 | use Simpleue\Queue\RedisQueue; | ||
12 | use M6Web\Component\RedisMock\RedisMockFactory; | ||
10 | 13 | ||
11 | class WallabagV2ImportTest extends \PHPUnit_Framework_TestCase | 14 | class WallabagV2ImportTest extends \PHPUnit_Framework_TestCase |
12 | { | 15 | { |
@@ -23,6 +26,20 @@ class WallabagV2ImportTest extends \PHPUnit_Framework_TestCase | |||
23 | ->disableOriginalConstructor() | 26 | ->disableOriginalConstructor() |
24 | ->getMock(); | 27 | ->getMock(); |
25 | 28 | ||
29 | $this->uow = $this->getMockBuilder('Doctrine\ORM\UnitOfWork') | ||
30 | ->disableOriginalConstructor() | ||
31 | ->getMock(); | ||
32 | |||
33 | $this->em | ||
34 | ->expects($this->any()) | ||
35 | ->method('getUnitOfWork') | ||
36 | ->willReturn($this->uow); | ||
37 | |||
38 | $this->uow | ||
39 | ->expects($this->any()) | ||
40 | ->method('getScheduledEntityInsertions') | ||
41 | ->willReturn([]); | ||
42 | |||
26 | $this->contentProxy = $this->getMockBuilder('Wallabag\CoreBundle\Helper\ContentProxy') | 43 | $this->contentProxy = $this->getMockBuilder('Wallabag\CoreBundle\Helper\ContentProxy') |
27 | ->disableOriginalConstructor() | 44 | ->disableOriginalConstructor() |
28 | ->getMock(); | 45 | ->getMock(); |
@@ -75,7 +92,7 @@ class WallabagV2ImportTest extends \PHPUnit_Framework_TestCase | |||
75 | $res = $wallabagV2Import->import(); | 92 | $res = $wallabagV2Import->import(); |
76 | 93 | ||
77 | $this->assertTrue($res); | 94 | $this->assertTrue($res); |
78 | $this->assertEquals(['skipped' => 22, 'imported' => 2], $wallabagV2Import->getSummary()); | 95 | $this->assertEquals(['skipped' => 22, 'imported' => 2, 'queued' => 0], $wallabagV2Import->getSummary()); |
79 | } | 96 | } |
80 | 97 | ||
81 | public function testImportAndMarkAllAsRead() | 98 | public function testImportAndMarkAllAsRead() |
@@ -113,7 +130,79 @@ class WallabagV2ImportTest extends \PHPUnit_Framework_TestCase | |||
113 | 130 | ||
114 | $this->assertTrue($res); | 131 | $this->assertTrue($res); |
115 | 132 | ||
116 | $this->assertEquals(['skipped' => 0, 'imported' => 2], $wallabagV2Import->getSummary()); | 133 | $this->assertEquals(['skipped' => 0, 'imported' => 2, 'queued' => 0], $wallabagV2Import->getSummary()); |
134 | } | ||
135 | |||
136 | public function testImportWithRabbit() | ||
137 | { | ||
138 | $wallabagV2Import = $this->getWallabagV2Import(); | ||
139 | $wallabagV2Import->setFilepath(__DIR__.'/../fixtures/wallabag-v2.json'); | ||
140 | |||
141 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
142 | ->disableOriginalConstructor() | ||
143 | ->getMock(); | ||
144 | |||
145 | $entryRepo->expects($this->never()) | ||
146 | ->method('findByUrlAndUserId'); | ||
147 | |||
148 | $this->em | ||
149 | ->expects($this->never()) | ||
150 | ->method('getRepository'); | ||
151 | |||
152 | $this->contentProxy | ||
153 | ->expects($this->never()) | ||
154 | ->method('updateEntry'); | ||
155 | |||
156 | $producer = $this->getMockBuilder('OldSound\RabbitMqBundle\RabbitMq\Producer') | ||
157 | ->disableOriginalConstructor() | ||
158 | ->getMock(); | ||
159 | |||
160 | $producer | ||
161 | ->expects($this->exactly(24)) | ||
162 | ->method('publish'); | ||
163 | |||
164 | $wallabagV2Import->setProducer($producer); | ||
165 | |||
166 | $res = $wallabagV2Import->setMarkAsRead(true)->import(); | ||
167 | |||
168 | $this->assertTrue($res); | ||
169 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 24], $wallabagV2Import->getSummary()); | ||
170 | } | ||
171 | |||
172 | public function testImportWithRedis() | ||
173 | { | ||
174 | $wallabagV2Import = $this->getWallabagV2Import(); | ||
175 | $wallabagV2Import->setFilepath(__DIR__.'/../fixtures/wallabag-v2.json'); | ||
176 | |||
177 | $entryRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') | ||
178 | ->disableOriginalConstructor() | ||
179 | ->getMock(); | ||
180 | |||
181 | $entryRepo->expects($this->never()) | ||
182 | ->method('findByUrlAndUserId'); | ||
183 | |||
184 | $this->em | ||
185 | ->expects($this->never()) | ||
186 | ->method('getRepository'); | ||
187 | |||
188 | $this->contentProxy | ||
189 | ->expects($this->never()) | ||
190 | ->method('updateEntry'); | ||
191 | |||
192 | $factory = new RedisMockFactory(); | ||
193 | $redisMock = $factory->getAdapter('Predis\Client', true); | ||
194 | |||
195 | $queue = new RedisQueue($redisMock, 'wallabag_v2'); | ||
196 | $producer = new Producer($queue); | ||
197 | |||
198 | $wallabagV2Import->setProducer($producer); | ||
199 | |||
200 | $res = $wallabagV2Import->setMarkAsRead(true)->import(); | ||
201 | |||
202 | $this->assertTrue($res); | ||
203 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 24], $wallabagV2Import->getSummary()); | ||
204 | |||
205 | $this->assertNotEmpty($redisMock->lpop('wallabag_v2')); | ||
117 | } | 206 | } |
118 | 207 | ||
119 | public function testImportBadFile() | 208 | public function testImportBadFile() |
@@ -152,7 +241,7 @@ class WallabagV2ImportTest extends \PHPUnit_Framework_TestCase | |||
152 | $res = $wallabagV2Import->import(); | 241 | $res = $wallabagV2Import->import(); |
153 | 242 | ||
154 | $this->assertFalse($res); | 243 | $this->assertFalse($res); |
155 | $this->assertEquals(['skipped' => 0, 'imported' => 0], $wallabagV2Import->getSummary()); | 244 | $this->assertEquals(['skipped' => 0, 'imported' => 0, 'queued' => 0], $wallabagV2Import->getSummary()); |
156 | } | 245 | } |
157 | 246 | ||
158 | public function testImportWithExceptionFromGraby() | 247 | public function testImportWithExceptionFromGraby() |
@@ -181,6 +270,6 @@ class WallabagV2ImportTest extends \PHPUnit_Framework_TestCase | |||
181 | $res = $wallabagV2Import->import(); | 270 | $res = $wallabagV2Import->import(); |
182 | 271 | ||
183 | $this->assertTrue($res); | 272 | $this->assertTrue($res); |
184 | $this->assertEquals(['skipped' => 24, 'imported' => 0], $wallabagV2Import->getSummary()); | 273 | $this->assertEquals(['skipped' => 22, 'imported' => 2, 'queued' => 0], $wallabagV2Import->getSummary()); |
185 | } | 274 | } |
186 | } | 275 | } |
diff --git a/tests/Wallabag/ImportBundle/fixtures/chrome-bookmarks b/tests/Wallabag/ImportBundle/fixtures/chrome-bookmarks new file mode 100644 index 00000000..0478eb41 --- /dev/null +++ b/tests/Wallabag/ImportBundle/fixtures/chrome-bookmarks | |||
@@ -0,0 +1,36 @@ | |||
1 | { | ||
2 | "checksum": "f3aa0e9c0edad632a246f7e98ec64918", | ||
3 | "roots": { | ||
4 | "bookmark_bar": { | ||
5 | "children": [ { | ||
6 | "date_added": "13118850929335823", | ||
7 | "id": "6", | ||
8 | "name": "\"La multiplication des chefs de projet est une catastrophe managériale majeure\", affirme le sociologue François Dupuy - Ressources humaines", | ||
9 | "type": "url", | ||
10 | "url": "http://www.usinenouvelle.com/article/la-multiplication-des-chefs-de-projet-est-une-catastrophe-manageriale-majeure-affirme-le-sociologue-francois-dupuy.N307730" | ||
11 | } ], | ||
12 | "date_added": "13118829474385693", | ||
13 | "date_modified": "13118850929335823", | ||
14 | "id": "1", | ||
15 | "name": "Barre de favoris", | ||
16 | "type": "folder" | ||
17 | }, | ||
18 | "other": { | ||
19 | "children": [ ], | ||
20 | "date_added": "13118829474385701", | ||
21 | "date_modified": "0", | ||
22 | "id": "2", | ||
23 | "name": "Autres favoris", | ||
24 | "type": "folder" | ||
25 | }, | ||
26 | "synced": { | ||
27 | "children": [ ], | ||
28 | "date_added": "13118829474385702", | ||
29 | "date_modified": "0", | ||
30 | "id": "3", | ||
31 | "name": "Favoris sur mobile", | ||
32 | "type": "folder" | ||
33 | } | ||
34 | }, | ||
35 | "version": 1 | ||
36 | } | ||
diff --git a/tests/Wallabag/ImportBundle/fixtures/firefox-bookmarks.json b/tests/Wallabag/ImportBundle/fixtures/firefox-bookmarks.json new file mode 100644 index 00000000..406b5697 --- /dev/null +++ b/tests/Wallabag/ImportBundle/fixtures/firefox-bookmarks.json | |||
@@ -0,0 +1,63 @@ | |||
1 | { | ||
2 | "guid": "root________", | ||
3 | "title": "", | ||
4 | "index": 0, | ||
5 | "dateAdded": 1388166091504000, | ||
6 | "lastModified": 1472897622350000, | ||
7 | "id": 1, | ||
8 | "type": "text/x-moz-place-container", | ||
9 | "root": "placesRoot", | ||
10 | "children": [ | ||
11 | { | ||
12 | "guid": "toolbar_____", | ||
13 | "title": "Barre personnelle", | ||
14 | "index": 1, | ||
15 | "dateAdded": 1388166091504000, | ||
16 | "lastModified": 1472897622263000, | ||
17 | "id": 3, | ||
18 | "annos": [ | ||
19 | { | ||
20 | "name": "bookmarkProperties/description", | ||
21 | "flags": 0, | ||
22 | "expires": 4, | ||
23 | "value": "Ajoutez des marque-pages dans ce dossier pour les voir apparaître sur votre barre personnelle" | ||
24 | } | ||
25 | ], | ||
26 | "type": "text/x-moz-place-container", | ||
27 | "root": "toolbarFolder", | ||
28 | "children": [ | ||
29 | { | ||
30 | "guid": "tard77lzbC5H", | ||
31 | "title": "Orange offre un meilleur réseau mobile que Bouygues et SFR, Free derrière - L'Express L'Expansion", | ||
32 | "index": 1, | ||
33 | "dateAdded": 1388166091644000, | ||
34 | "lastModified": 1388166091644000, | ||
35 | "tags":"test,tag", | ||
36 | "id": 4, | ||
37 | "type": "text/x-moz-place", | ||
38 | "uri": "http://lexpansion.lexpress.fr/high-tech/orange-offre-un-meilleur-reseau-mobile-que-bouygues-et-sfr-free-derriere_1811554.html" | ||
39 | }, | ||
40 | { | ||
41 | "guid": "E385l9vZ_LVn", | ||
42 | "title": "Parser for Exported Bookmarks HTML file of Google Chrome and Mozilla in Java", | ||
43 | "index": 1, | ||
44 | "dateAdded": 1388166091544000, | ||
45 | "lastModified": 1388166091545000, | ||
46 | "id": 5, | ||
47 | "type": "text/x-moz-place", | ||
48 | "uri": "http://stackoverflow.com/questions/15017163/parser-for-exported-bookmarks-html-file-of-google-chrome-and-mozilla-in-java" | ||
49 | } | ||
50 | ] | ||
51 | }, | ||
52 | { | ||
53 | "guid": "unfiled_____", | ||
54 | "title": "Autres marque-pages", | ||
55 | "index": 3, | ||
56 | "dateAdded": 1388166091504000, | ||
57 | "lastModified": 1388166091542000, | ||
58 | "id": 6, | ||
59 | "type": "text/x-moz-place-container", | ||
60 | "root": "unfiledBookmarksFolder" | ||
61 | } | ||
62 | ] | ||
63 | } | ||
diff --git a/tests/Wallabag/ImportBundle/fixtures/instapaper-export.csv b/tests/Wallabag/ImportBundle/fixtures/instapaper-export.csv new file mode 100644 index 00000000..28a4c8e6 --- /dev/null +++ b/tests/Wallabag/ImportBundle/fixtures/instapaper-export.csv | |||
@@ -0,0 +1,4 @@ | |||
1 | URL,Title,Selection,Folder | ||
2 | http://www.liberation.fr/societe/2012/12/06/baumettes-un-tour-en-cellule_865551,Baumettes : un tour en cellule,,Unread | ||
3 | https://redditblog.com/2016/09/20/amp-and-reactredux/,AMP and React+Redux: Why Not?,,Archive | ||
4 | https://medium.com/@the_minh/why-foursquare-swarm-is-still-my-favourite-social-network-e38228493e6c,Why Foursquare / Swarm is still my favourite social network,,Starred | ||
diff --git a/tests/Wallabag/ImportBundle/fixtures/readability-read.json b/tests/Wallabag/ImportBundle/fixtures/readability-read.json new file mode 100644 index 00000000..c60767dc --- /dev/null +++ b/tests/Wallabag/ImportBundle/fixtures/readability-read.json | |||
@@ -0,0 +1,25 @@ | |||
1 | { | ||
2 | "bookmarks": [ | ||
3 | { | ||
4 | "article__excerpt": "This is a guest post from Moritz Beller from the Delft University of Technology in The Netherlands. His team produced amazing research on several million Travis CI builds, creating invaluable…", | ||
5 | "favorite": false, | ||
6 | "date_archived": "2016-08-02T06:49:30", | ||
7 | "article__url": "https://blog.travis-ci.com/2016-07-28-what-we-learned-from-analyzing-2-million-travis-builds/", | ||
8 | "date_added": "2016-08-01T05:24:16", | ||
9 | "date_favorited": null, | ||
10 | "article__title": "Travis", | ||
11 | "archive": true | ||
12 | }, | ||
13 | { | ||
14 | "article__excerpt": "The GraphQL Type system describes the capabilities of a GraphQL server and is used to determine if a query is valid. The type system also describes the input types of query variables to determine if…", | ||
15 | "favorite": false, | ||
16 | "date_archived": "2016-07-19T06:48:31", | ||
17 | "article__url": "https://facebook.github.io/graphql/", | ||
18 | "date_added": "2016-06-24T17:50:16", | ||
19 | "date_favorited": null, | ||
20 | "article__title": "GraphQL", | ||
21 | "archive": true | ||
22 | } | ||
23 | ], | ||
24 | "recommendations": [] | ||
25 | } | ||
diff --git a/tests/Wallabag/ImportBundle/fixtures/readability.json b/tests/Wallabag/ImportBundle/fixtures/readability.json new file mode 100644 index 00000000..32f6fa53 --- /dev/null +++ b/tests/Wallabag/ImportBundle/fixtures/readability.json | |||
@@ -0,0 +1,176 @@ | |||
1 | { | ||
2 | "bookmarks": [ | ||
3 | { | ||
4 | "article__excerpt": "When Twitter started it had so much promise to change the way we communicate. But now it has been ruined by the amount of garbage and hate we have to wade through. It’s like that polluted…", | ||
5 | "favorite": false, | ||
6 | "date_archived": null, | ||
7 | "article__url": "https://venngage.com/blog/hashtags-are-worthless/", | ||
8 | "date_added": "2016-08-25T12:05:00", | ||
9 | "date_favorited": null, | ||
10 | "article__title": "We Looked At 167,943 Tweets & Found Out Hashtags Are Worthless", | ||
11 | "archive": false | ||
12 | }, | ||
13 | { | ||
14 | "article__title": "Réfugiés: l'UE va créer 100 000 places d'accueil dans les Balkans", | ||
15 | "article__url": "http://www.liberation.fr/planete/2015/10/26/refugies-l-ue-va-creer-100-000-places-d-accueil-dans-les-balkans_1408867", | ||
16 | "archive": false, | ||
17 | "date_added": "2016-09-08T11:55:58+0200", | ||
18 | "favorite": false | ||
19 | }, | ||
20 | { | ||
21 | "article__title": "No title found", | ||
22 | "article__url": "http://news.nationalgeographic.com/2016/02/160211-albatrosses-mothers-babies-animals-science/&sf20739758=1", | ||
23 | "archive": false, | ||
24 | "date_added": "2016-09-08T11:55:58+0200", | ||
25 | "favorite": true | ||
26 | }, | ||
27 | { | ||
28 | "archive": 0, | ||
29 | "date_added": "2016-09-08T11:55:58+0200", | ||
30 | "favorite": 0, | ||
31 | "article__title": "Échecs", | ||
32 | "article__url": "https://fr.wikipedia.org/wiki/Échecs" | ||
33 | }, | ||
34 | { | ||
35 | "archive": 0, | ||
36 | "date_added": "2016-09-08T11:55:58+0200", | ||
37 | "favorite": 0, | ||
38 | "article__title": "90% des dossiers médicaux des Coréens du sud vendus à des entreprises privées - ZATAZ", | ||
39 | "article__url": "http://www.zataz.com/90-des-dossiers-medicaux-des-coreens-du-sud-vendus-a-des-entreprises-privees/" | ||
40 | }, | ||
41 | { | ||
42 | "archive": 0, | ||
43 | "date_added": "2016-09-08T11:55:58+0200", | ||
44 | "favorite": 0, | ||
45 | "article__title": "Mass Surveillance As Art", | ||
46 | "article__url": "https://www.nationaljournal.com/s/73311/mass-surveillance-art" | ||
47 | }, | ||
48 | { | ||
49 | "archive": 0, | ||
50 | "date_added": "2016-09-08T11:55:58+0200", | ||
51 | "favorite": 0, | ||
52 | "article__title": "What David Cameron did to the pig, his party is now doing to the country", | ||
53 | "article__url": "http://www.newstatesman.com/2015/09/what-david-cameron-did-pig-his-party-now-doing-country" | ||
54 | }, | ||
55 | { | ||
56 | "archive": 1, | ||
57 | "date_added": "2016-09-08T11:55:58+0200", | ||
58 | "favorite": 0, | ||
59 | "article__title": "CLICK HERE to support 2016 CES Winner, Revolutionary Auto-Tracking Robot", | ||
60 | "article__url": "https://www.indiegogo.com/projects/2016-ces-winner-revolutionary-auto-tracking-robot" | ||
61 | }, | ||
62 | { | ||
63 | "archive": 0, | ||
64 | "date_added": "2016-09-08T11:55:58+0200", | ||
65 | "favorite": 1, | ||
66 | "article__title": "No title found", | ||
67 | "article__url": "http://carnetdevol.shost.ca/wordpress/aide-memoire-sur-les-commandes-associees-a-systemd/" | ||
68 | }, | ||
69 | { | ||
70 | "archive": 1, | ||
71 | "date_added": "2016-09-08T11:55:58+0200", | ||
72 | "favorite": 0, | ||
73 | "article__title": "Présentation d'Arduino - Tuto Arduino - Le blog d'Eskimon", | ||
74 | "article__url": "http://eskimon.fr/73-arduino-101-presentation" | ||
75 | }, | ||
76 | { | ||
77 | "archive": 1, | ||
78 | "date_added": "2016-09-08T11:55:58+0200", | ||
79 | "favorite": 0, | ||
80 | "article__title": "Lenovo ThinkPad X1 Carbon Ultrabook Review", | ||
81 | "article__url": "http://www.notebookcheck.net/Lenovo-ThinkPad-X1-Carbon-Ultrabook-Review.138033.0.html" | ||
82 | }, | ||
83 | { | ||
84 | "archive": 0, | ||
85 | "date_added": "2016-09-08T11:55:58+0200", | ||
86 | "favorite": 0, | ||
87 | "article__title": "Visitons le Château de Landsberg !", | ||
88 | "article__url": "http://autour-du-mont-sainte-odile.overblog.com/2016/01/visitons-le-chateau-de-landsberg.html" | ||
89 | }, | ||
90 | { | ||
91 | "archive": 1, | ||
92 | "date_added": "2016-09-08T11:55:58+0200", | ||
93 | "favorite": 0, | ||
94 | "article__title": "Contrer les stéréotypes par les livres : “C'est dès l'enfance qu'ils se construisent”", | ||
95 | "article__url": "https://www.actualitte.com/article/monde-edition/contrer-les-stereotypes-par-les-livres-c-est-des-l-enfance-qu-ils-se-construisent/64058" | ||
96 | }, | ||
97 | { | ||
98 | "archive": 1, | ||
99 | "date_added": "2016-09-08T11:55:58+0200", | ||
100 | "favorite": 0, | ||
101 | "article__title": "[ROM][6.0.1][Layers][N5] TipsyOS official builds {UBER TCs}", | ||
102 | "article__url": "http://forum.xda-developers.com/google-nexus-5/development/rom-tipsyos-official-builds-uber-tcs-t3325989" | ||
103 | }, | ||
104 | { | ||
105 | "archive": 0, | ||
106 | "date_added": "2016-09-08T11:55:58+0200", | ||
107 | "favorite": 0, | ||
108 | "article__title": "Top 15 Podcasts All Web Developers Should Follow - Envato Tuts+ Code Article", | ||
109 | "article__url": "http://code.tutsplus.com/articles/top-15-podcasts-all-web-developers-should-follow--net-14461" | ||
110 | }, | ||
111 | { | ||
112 | "archive": 1, | ||
113 | "date_added": "2016-09-08T11:55:58+0200", | ||
114 | "favorite": 0, | ||
115 | "article__title": "University of Mississippi", | ||
116 | "article__url": "http://olemiss.edu" | ||
117 | }, | ||
118 | { | ||
119 | "archive": 1, | ||
120 | "date_added": "2016-09-08T11:55:58+0200", | ||
121 | "favorite": 0, | ||
122 | "article__title": "FinnChristiansen.de Jetzt Dank Let’s Encrypt Per HTTPS Erreichbar", | ||
123 | "article__url": "https://www.finnchristiansen.de/2015/12/06/finnchristiansen-de-jetzt-dank-lets-encrypt-per-https-erreichbar/" | ||
124 | }, | ||
125 | { | ||
126 | "archive": 1, | ||
127 | "date_added": "2016-09-08T11:55:58+0200", | ||
128 | "favorite": 0, | ||
129 | "article__title": "Le développeur et l'ingénierie logicielle", | ||
130 | "article__url": "http://wemucs.com/le-developpeur-et-lingenierie-logicielle/" | ||
131 | }, | ||
132 | { | ||
133 | "archive": 1, | ||
134 | "date_added": "2016-09-08T11:55:58+0200", | ||
135 | "favorite": 0, | ||
136 | "article__title": "The Role of Methylation in Gene Expression", | ||
137 | "article__url": "http://www.nature.com/scitable/topicpage/the-role-of-methylation-in-gene-expression-1070" | ||
138 | }, | ||
139 | { | ||
140 | "archive": 1, | ||
141 | "date_added": "2016-09-08T11:55:58+0200", | ||
142 | "favorite": 0, | ||
143 | "article__title": "E-Mail-Adresse kostenlos, FreeMail, De-Mail & Nachrichten", | ||
144 | "article__url": "http://web.de" | ||
145 | }, | ||
146 | { | ||
147 | "archive": 1, | ||
148 | "date_added": "2016-09-08T11:55:58+0200", | ||
149 | "favorite": 0, | ||
150 | "article__title": "OpenSSH Server on Arch Linux | DominicM test", | ||
151 | "article__url": "http://dominicm.com/openssh-server-arch-linux/" | ||
152 | }, | ||
153 | { | ||
154 | "archive": 1, | ||
155 | "date_added": "2016-09-08T11:55:58+0200", | ||
156 | "favorite": 0, | ||
157 | "article__title": "Site Moved | Site Help", | ||
158 | "article__url": "http://g1.com/help/sitemoved.asp" | ||
159 | }, | ||
160 | { | ||
161 | "archive": 1, | ||
162 | "date_added": "2016-09-08T11:55:58+0200", | ||
163 | "favorite": 0, | ||
164 | "article__title": "#Maroc : le stylo anti-pédophiles EAGLE d’AMESYS est moins bien configuré que les faux-lowers Twitter du roi Mohammed VI", | ||
165 | "article__url": "https://reflets.info/maroc-le-stylo-anti-pedophiles-eagle-damesys-est-moins-bien-configure-que-les-faux-lowers-twitter-du-roi-mohammed-vi/" | ||
166 | }, | ||
167 | { | ||
168 | "archive": 1, | ||
169 | "date_added": "2016-09-08T11:55:58+0200", | ||
170 | "favorite": 0, | ||
171 | "article__title": "Simple Cloud Infrastructure for Developers", | ||
172 | "article__url": "https://www.digitalocean.com/" | ||
173 | } | ||
174 | ], | ||
175 | "recommendations": [] | ||
176 | } | ||
diff --git a/tests/Wallabag/ImportBundle/fixtures/wallabag-v2-read.json b/tests/Wallabag/ImportBundle/fixtures/wallabag-v2-read.json index 3fa0bddf..d8609280 100644 --- a/tests/Wallabag/ImportBundle/fixtures/wallabag-v2-read.json +++ b/tests/Wallabag/ImportBundle/fixtures/wallabag-v2-read.json | |||
@@ -4,6 +4,8 @@ | |||
4 | "title": "Wikimedia Foundation removes The Diary of Anne Frank due to copyright law requirements « Wikimedia blog", | 4 | "title": "Wikimedia Foundation removes The Diary of Anne Frank due to copyright law requirements « Wikimedia blog", |
5 | "url": "https://blog.wikimedia.org/2016/02/10/anne-frank-diary-removal/", | 5 | "url": "https://blog.wikimedia.org/2016/02/10/anne-frank-diary-removal/", |
6 | "is_archived": true, | 6 | "is_archived": true, |
7 | "created_at": "2016-09-08T11:55:58+0200", | ||
8 | "updated_at": "2016-09-08T11:57:16+0200", | ||
7 | "is_starred": false, | 9 | "is_starred": false, |
8 | "content": "<p><a href=\"https://commons.wikimedia.org/wiki/File:AnneFrankSchoolPhoto.jpg\" rel=\"attachment wp-att-45105\"><img class=\"alignnone size-full wp-image-45105\" src=\"https://wikimediablog.files.wordpress.com/2016/02/annefrankschoolphoto.jpg?w=316&h=520\" alt=\"AnneFrankSchoolPhoto\" width=\"316\" height=\"520\"/></a><br/><small><i>Anne Frank in 1940. <a href=\"https://commons.wikimedia.org/wiki/File:AnneFrankSchoolPhoto.jpg\">Photo</a> by Collectie Anne Frank Stichting Amsterdam, public domain.</i></small></p>\n<p>Today, in an unfortunate example of the overreach of the United States’ current copyright law, the Wikimedia Foundation removed the Dutch-language text of <a href=\"https://en.wikipedia.org/wiki/The_Diary_of_a_Young_Girl\"><em>The Diary of a Young Girl</em></a>—more commonly known in English as the <em>Diary of Anne Frank—</em>from Wikisource.<sup id=\"one\"><a href=\"https://blog.wikimedia.org/2016/02/10/anne-frank-diary-removal/#cite1\">[1]</a></sup></p>\n<p>We took this action to comply with the United States’ <a href=\"https://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act\">Digital Millennium Copyright Act</a> (DMCA), as we believe the diary is still under US copyright protection under the law as it is currently written. Nevertheless, our removal serves as an excellent example of why the law should be changed to prevent repeated extensions of copyright terms, an issue that has plagued our communities <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Wikipedia_Signpost/2014-02-26/News_and_notes\">for years</a>.</p>\n<h3>What prompted us to remove the diary?</h3>\n<p>The deletion was required because the Foundation is under the jurisdiction of US law and is therefore subject to the DMCA, specifically <a href=\"https://www.law.cornell.edu/uscode/text/17/512\" target=\"_blank\">title 17, chapter 5, section 512 of the United States Code</a>. As we <a href=\"https://meta.wikimedia.org/wiki/Legal/URAA_Statement\" target=\"_blank\">noted</a> in 2013, “The location of the servers, incorporation, and headquarters are just three of many factors that establish US jurisdiction … if infringing content is linked to or embedded in Wikimedia projects, then the Foundation may still be subject to liability for such use—either as a direct or contributory infringer.</p>\n<p>Based on email discussions sent to the Wikimedia Foundation at legal[at]wikimedia.org, we determined that the Wikimedia Foundation had either “actual knowledge” (i in the statute quoted below) or what is commonly called “red flag knowledge” (ii in the statute quoted below) that the Anne Frank text was hosted on Wikisource and was under copyright. The statute section states that a service provider is only protected by the DMCA when it:</p>\n<p><strong>(i) </strong>does not have actual knowledge that the material or an activity using the material on the system or network is infringing;</p>\n<p><strong>(ii) </strong>in the absence of such actual knowledge, is not aware of facts or circumstances from which infringing activity is apparent; or</p>\n<p>(The rest applies when we get a proper DMCA takedown notice.)</p>\n<p>Of particular concern, the US’ <a href=\"https://en.wikipedia.org/wiki/United_States_Court_of_Appeals_for_the_Ninth_Circuit\">9th Circuit Court of Appeals</a> stated in their ruling for <a href=\"http://law.justia.com/cases/federal/appellate-courts/ca9/09-55902/09-55902-2013-03-14.html\"><em>UMG Recordings, Inc. v. Shelter Capital Partners LLC</em></a> that in circumstances where a hosting provider (like the Wikimedia Foundation) is informed by a third party (like an unrelated user) about infringing copyrighted content, that would likely constitute either actual or red flag knowledge under the DMCA.</p>\n<p>We believe, based on the detail and specificity contained in the emails, that we received that we had actual knowledge sufficient for the DMCA to require us to perform a takedown even in the absence of a demand letter.</p>\n<h3>How is the diary still copyrighted?</h3>\n<p>You may wonder why or how the Anne Frank text is copyrighted at all, as <a href=\"https://en.wikipedia.org/wiki/Anne_Frank\">Anne Frank</a> died in February 1945. With 70 years having passed since her death, the text may have passed into public domain in the Netherlands on January 1, 2016, where it was first published, although <a href=\"http://www.npr.org/sections/thetwo-way/2015/12/31/461606275/mein-kampf-enters-public-domain-arguably-anne-franks-diary-may-too\">there is still some dispute about this</a>.</p>\n<p>However, in the United States, the Anne Frank original text will be under copyright until 2042. This is the result of several factors coming together, and the English-language Wikipedia has actually covered this issue with a multi-part test on its <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Non-U.S._copyrights\">non-US copyrights content guideline.</a></p>\n<p>In short, there are three major laws that together make the diary still copyrighted:</p>\n<ol><li>In general, the U.S. copyright for works published before 1978 is 95 years from date of publication. This came about because copyrights in the U.S. were originally for 28 years, with the ability to then extend that for a second 28 years (making a total of 56). Starting with the <a href=\"https://en.wikipedia.org/wiki/Copyright_Act_of_1976\">1976 Copyright Act</a> and extending to several more acts, the renewal became automatic and was extended. Today, the total term of works published before 1978 is 95 years from date of publication.</li>\n<li>Foreign works of countries that are treaty partners to the United States are covered as if they were US works.</li>\n<li>Even if a country was not a treaty partner under copyright law at the time of a publication, the <a href=\"https://en.wikipedia.org/wiki/Uruguay_Round_Agreements_Act\">1994 Uruguay Round Agreements Act</a> (URAA) restored copyright to works that:\n<ul><li>had been published in a foreign country</li>\n<li>were still under copyright in that country in 1996</li>\n<li>and would have had U.S. copyright but for the fact they were published abroad.</li>\n</ul></li>\n</ol>\n<p>Court challenges to the URAA have all failed, with the most notable (<a href=\"https://en.wikipedia.org/wiki/Golan_v._Holder\"><em>Golan v. Holder</em></a>) resulting in a Supreme Court ruling that upheld the URAA.</p>\n<p>What that means for Anne Frank’s diary is unfortunately simple: no matter how it wound up in the United States and regardless of what formal copyright notices they used, the US grants it copyright until the year 2042, or 95 years after its original publication in 1947.</p>\n<p>Under current copyright law, this remains true regardless of its copyright status anywhere else in the world and regardless of whether it may have been in the public domain in the United States in the past.</p>\n<p><a href=\"https://wikimediafoundation.org/wiki/User:Jrogers_(WMF)\"><em>Jacob Rogers</em></a><em>, Legal Counsel*<br/>Wikimedia Foundation</em></p>\n<p><em>*Special thanks to </em><a href=\"https://wikimediafoundation.org/wiki/User:AMangalick_(WMF)\"><em>Anisha Mangalick</em></a><em>, Legal Fellow, for her assistance in this matter.</em></p>\n<p><a href=\"https://blog.wikimedia.org/2016/02/10/anne-frank-diary-removal/#one\">[1]</a> The diary text was originally located at <a href=\"https://nl.wikisource.org/wiki/Het_Achterhuis_(Anne_Frank)\" rel=\"nofollow\">https://nl.wikisource.org/wiki/Het_Achterhuis_(Anne_Frank)</a>.</p>\n<p><em>This article was edited to clarify that it is not just the location of the Wikimedia Foundation’s servers that determine whether we fall in US jurisdiction.</em></p>\n\t\t\t\t\t\t\t\t\t\t\t", | 10 | "content": "<p><a href=\"https://commons.wikimedia.org/wiki/File:AnneFrankSchoolPhoto.jpg\" rel=\"attachment wp-att-45105\"><img class=\"alignnone size-full wp-image-45105\" src=\"https://wikimediablog.files.wordpress.com/2016/02/annefrankschoolphoto.jpg?w=316&h=520\" alt=\"AnneFrankSchoolPhoto\" width=\"316\" height=\"520\"/></a><br/><small><i>Anne Frank in 1940. <a href=\"https://commons.wikimedia.org/wiki/File:AnneFrankSchoolPhoto.jpg\">Photo</a> by Collectie Anne Frank Stichting Amsterdam, public domain.</i></small></p>\n<p>Today, in an unfortunate example of the overreach of the United States’ current copyright law, the Wikimedia Foundation removed the Dutch-language text of <a href=\"https://en.wikipedia.org/wiki/The_Diary_of_a_Young_Girl\"><em>The Diary of a Young Girl</em></a>—more commonly known in English as the <em>Diary of Anne Frank—</em>from Wikisource.<sup id=\"one\"><a href=\"https://blog.wikimedia.org/2016/02/10/anne-frank-diary-removal/#cite1\">[1]</a></sup></p>\n<p>We took this action to comply with the United States’ <a href=\"https://en.wikipedia.org/wiki/Digital_Millennium_Copyright_Act\">Digital Millennium Copyright Act</a> (DMCA), as we believe the diary is still under US copyright protection under the law as it is currently written. Nevertheless, our removal serves as an excellent example of why the law should be changed to prevent repeated extensions of copyright terms, an issue that has plagued our communities <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Wikipedia_Signpost/2014-02-26/News_and_notes\">for years</a>.</p>\n<h3>What prompted us to remove the diary?</h3>\n<p>The deletion was required because the Foundation is under the jurisdiction of US law and is therefore subject to the DMCA, specifically <a href=\"https://www.law.cornell.edu/uscode/text/17/512\" target=\"_blank\">title 17, chapter 5, section 512 of the United States Code</a>. As we <a href=\"https://meta.wikimedia.org/wiki/Legal/URAA_Statement\" target=\"_blank\">noted</a> in 2013, “The location of the servers, incorporation, and headquarters are just three of many factors that establish US jurisdiction … if infringing content is linked to or embedded in Wikimedia projects, then the Foundation may still be subject to liability for such use—either as a direct or contributory infringer.</p>\n<p>Based on email discussions sent to the Wikimedia Foundation at legal[at]wikimedia.org, we determined that the Wikimedia Foundation had either “actual knowledge” (i in the statute quoted below) or what is commonly called “red flag knowledge” (ii in the statute quoted below) that the Anne Frank text was hosted on Wikisource and was under copyright. The statute section states that a service provider is only protected by the DMCA when it:</p>\n<p><strong>(i) </strong>does not have actual knowledge that the material or an activity using the material on the system or network is infringing;</p>\n<p><strong>(ii) </strong>in the absence of such actual knowledge, is not aware of facts or circumstances from which infringing activity is apparent; or</p>\n<p>(The rest applies when we get a proper DMCA takedown notice.)</p>\n<p>Of particular concern, the US’ <a href=\"https://en.wikipedia.org/wiki/United_States_Court_of_Appeals_for_the_Ninth_Circuit\">9th Circuit Court of Appeals</a> stated in their ruling for <a href=\"http://law.justia.com/cases/federal/appellate-courts/ca9/09-55902/09-55902-2013-03-14.html\"><em>UMG Recordings, Inc. v. Shelter Capital Partners LLC</em></a> that in circumstances where a hosting provider (like the Wikimedia Foundation) is informed by a third party (like an unrelated user) about infringing copyrighted content, that would likely constitute either actual or red flag knowledge under the DMCA.</p>\n<p>We believe, based on the detail and specificity contained in the emails, that we received that we had actual knowledge sufficient for the DMCA to require us to perform a takedown even in the absence of a demand letter.</p>\n<h3>How is the diary still copyrighted?</h3>\n<p>You may wonder why or how the Anne Frank text is copyrighted at all, as <a href=\"https://en.wikipedia.org/wiki/Anne_Frank\">Anne Frank</a> died in February 1945. With 70 years having passed since her death, the text may have passed into public domain in the Netherlands on January 1, 2016, where it was first published, although <a href=\"http://www.npr.org/sections/thetwo-way/2015/12/31/461606275/mein-kampf-enters-public-domain-arguably-anne-franks-diary-may-too\">there is still some dispute about this</a>.</p>\n<p>However, in the United States, the Anne Frank original text will be under copyright until 2042. This is the result of several factors coming together, and the English-language Wikipedia has actually covered this issue with a multi-part test on its <a href=\"https://en.wikipedia.org/wiki/Wikipedia:Non-U.S._copyrights\">non-US copyrights content guideline.</a></p>\n<p>In short, there are three major laws that together make the diary still copyrighted:</p>\n<ol><li>In general, the U.S. copyright for works published before 1978 is 95 years from date of publication. This came about because copyrights in the U.S. were originally for 28 years, with the ability to then extend that for a second 28 years (making a total of 56). Starting with the <a href=\"https://en.wikipedia.org/wiki/Copyright_Act_of_1976\">1976 Copyright Act</a> and extending to several more acts, the renewal became automatic and was extended. Today, the total term of works published before 1978 is 95 years from date of publication.</li>\n<li>Foreign works of countries that are treaty partners to the United States are covered as if they were US works.</li>\n<li>Even if a country was not a treaty partner under copyright law at the time of a publication, the <a href=\"https://en.wikipedia.org/wiki/Uruguay_Round_Agreements_Act\">1994 Uruguay Round Agreements Act</a> (URAA) restored copyright to works that:\n<ul><li>had been published in a foreign country</li>\n<li>were still under copyright in that country in 1996</li>\n<li>and would have had U.S. copyright but for the fact they were published abroad.</li>\n</ul></li>\n</ol>\n<p>Court challenges to the URAA have all failed, with the most notable (<a href=\"https://en.wikipedia.org/wiki/Golan_v._Holder\"><em>Golan v. Holder</em></a>) resulting in a Supreme Court ruling that upheld the URAA.</p>\n<p>What that means for Anne Frank’s diary is unfortunately simple: no matter how it wound up in the United States and regardless of what formal copyright notices they used, the US grants it copyright until the year 2042, or 95 years after its original publication in 1947.</p>\n<p>Under current copyright law, this remains true regardless of its copyright status anywhere else in the world and regardless of whether it may have been in the public domain in the United States in the past.</p>\n<p><a href=\"https://wikimediafoundation.org/wiki/User:Jrogers_(WMF)\"><em>Jacob Rogers</em></a><em>, Legal Counsel*<br/>Wikimedia Foundation</em></p>\n<p><em>*Special thanks to </em><a href=\"https://wikimediafoundation.org/wiki/User:AMangalick_(WMF)\"><em>Anisha Mangalick</em></a><em>, Legal Fellow, for her assistance in this matter.</em></p>\n<p><a href=\"https://blog.wikimedia.org/2016/02/10/anne-frank-diary-removal/#one\">[1]</a> The diary text was originally located at <a href=\"https://nl.wikisource.org/wiki/Het_Achterhuis_(Anne_Frank)\" rel=\"nofollow\">https://nl.wikisource.org/wiki/Het_Achterhuis_(Anne_Frank)</a>.</p>\n<p><em>This article was edited to clarify that it is not just the location of the Wikimedia Foundation’s servers that determine whether we fall in US jurisdiction.</em></p>\n\t\t\t\t\t\t\t\t\t\t\t", |
9 | "mimetype": "text/html", | 11 | "mimetype": "text/html", |
@@ -17,6 +19,8 @@ | |||
17 | "title": "Tails - Tails 2.0.1 is out", | 19 | "title": "Tails - Tails 2.0.1 is out", |
18 | "url": "https://tails.boum.org/news/version_2.0.1/index.en.html", | 20 | "url": "https://tails.boum.org/news/version_2.0.1/index.en.html", |
19 | "is_archived": false, | 21 | "is_archived": false, |
22 | "created_at": "2016-09-08T11:55:58+0200", | ||
23 | "updated_at": "2016-09-08T11:57:16+0200", | ||
20 | "is_starred": false, | 24 | "is_starred": false, |
21 | "content": "<div id=\"pagebody\" readability=\"39\">\n<p>This release fixes <a href=\"https://tails.boum.org/security/Numerous_security_holes_in_2.0/index.en.html\">numerous security issues</a>. All users must upgrade as soon as possible.</p>\n<div class=\"toc\">\n<ol><li class=\"L1\"><a href=\"https://tails.boum.org/news/version_2.0.1/index.en.html#index1h1\">Changes</a></li>\n<li class=\"L1\"><a href=\"https://tails.boum.org/news/version_2.0.1/index.en.html#index2h1\">Known issues</a></li>\n<li class=\"L1\"><a href=\"https://tails.boum.org/news/version_2.0.1/index.en.html#index3h1\">Download or upgrade</a></li>\n<li class=\"L1\"><a href=\"https://tails.boum.org/news/version_2.0.1/index.en.html#index4h1\">What's coming up?</a></li>\n</ol></div>\n<h2>New features</h2>\n<ul><li readability=\"11\">\n<p>Tails now uses the GNOME Shell desktop environment, in its Classic mode. GNOME Shell provides a modern, simple, and actively developed desktop environment. The Classic mode keeps the traditional Applications, Places menu, and windows list. Accessibility and non-Latin input sources are also better integrated.</p>\n<p>To find your way around, <a href=\"https://tails.boum.org/doc/first_steps/introduction_to_gnome_and_the_tails_desktop/index.en.html\">read our introduction to GNOME and the Tails desktop.</a></p>\n<table class=\"img\"><caption>The desktop and Applications menu</caption>\n<tr><td><img alt=\"Tails 2.0 desktop with applications menu unfolded\" class=\"img\" height=\"384\" src=\"https://tails.boum.org/inc/release_notes/2.0/applications_menu.png\" width=\"512\"/></td>\n</tr></table><table class=\"img\"><caption>The activities overview</caption>\n<tr><td><img alt=\"Tails 2.0 activities overview\" class=\"img\" height=\"384\" src=\"https://tails.boum.org/inc/release_notes/2.0/activities_overview.png\" width=\"512\"/></td>\n</tr></table></li>\n</ul><h2>Upgrades and changes</h2>\n<ul><li readability=\"2\">\n<p>Debian 8 upgrades most included software, for example:</p>\n<ul><li>Many core GNOME utilities from 3.4 to 3.14: Files, Disks, Videos, etc.</li>\n<li>LibreOffice from 3.5 to 4.3</li>\n<li>PiTiVi from 0.15 to 0.93</li>\n<li>Git from 1.7.10 to 2.1.4</li>\n<li>Poedit from 1.5.4 to 1.6.10</li>\n<li>Liferea from 1.8.6 to 1.10</li>\n</ul></li>\n<li readability=\"1\">\n<p>Update Tor Browser to 5.5 (based on Firefox 38.6.0 ESR):</p>\n<ul><li>Add Japanese support.</li>\n</ul></li>\n<li readability=\"2\">\n<p>Remove the Windows camouflage which is currently broken in GNOME Shell. We started working on <a href=\"https://labs.riseup.net/code/issues/10830\">adding it back</a> but <a href=\"https://tails.boum.org/news/windows_camouflage_jessie/index.en.html\">your help is needed</a>!</p>\n</li>\n<li readability=\"1\">\n<p>Change to <code>systemd</code> as init system and use it to:</p>\n<ul><li>Sandbox many services using Linux namespaces and make them harder to exploit.</li>\n<li>Make the launching of Tor and the memory wipe on shutdown more robust.</li>\n<li>Sanitize our code base by replacing many custom scripts.</li>\n</ul></li>\n<li readability=\"1\">\n<p>Update most firmware packages which might improve hardware compatibility.</p>\n</li>\n<li readability=\"1\">\n<p>Notify the user if Tails is running from a non-free virtualization software.</p>\n</li>\n<li readability=\"3\">\n<p>Remove Claws Mail, replaced by <a href=\"https://tails.boum.org/doc/anonymous_internet/icedove/index.en.html\">Icedove</a>, a rebranded version of Mozilla Thunderbird.</p>\n</li>\n</ul><h2>Fixed problems</h2>\n<ul><li readability=\"1\">\n<p>HiDPI displays are better supported. (<a href=\"https://labs.riseup.net/code/issues/8659\">#8659</a>)</p>\n</li>\n<li readability=\"3\">\n<p>Remove the option to open a download with an external application in Tor Browser as this is usually impossible due to the AppArmor confinement. (<a href=\"https://labs.riseup.net/code/issues/9285\">#9285</a>)</p>\n</li>\n<li readability=\"1\">\n<p>Close Vidalia before restarting Tor.</p>\n</li>\n<li readability=\"2\">\n<p>Allow Videos to access the DVD drive. (<a href=\"https://labs.riseup.net/code/issues/10455\">#10455</a>, <a href=\"https://labs.riseup.net/code/issues/9990\">#9990</a>)</p>\n</li>\n<li readability=\"1\">\n<p>Allow configuring printers without administration password. (<a href=\"https://labs.riseup.net/code/issues/8443\">#8443</a>)</p>\n</li>\n</ul>\n<p>See the current list of <a href=\"https://tails.boum.org/support/known_issues/index.en.html\">known issues</a>.</p>\n<p>Go to the <a href=\"https://tails.boum.org/download/index.en.html\">download</a> or <a href=\"https://tails.boum.org/doc/first_steps/upgrade/index.en.html\">upgrade</a> page.</p>\n<p>If your Tails does not boot after an automatic upgrade, please <a href=\"https://tails.boum.org/doc/first_steps/upgrade/index.en.html#manual\">upgrade your Tails manually</a>.</p>\n<p>The next Tails release is <a href=\"https://tails.boum.org/contribute/calendar/\">scheduled</a> for March 08.</p>\n<p>Have a look at our <a href=\"https://labs.riseup.net/code/projects/tails/roadmap\">roadmap</a> to see where we are heading to.</p>\n<p>We need your help and there are many ways to <a href=\"https://tails.boum.org/contribute/index.en.html\">contribute to Tails</a> (<a href=\"https://tails.boum.org/contribute/how/donate/index.en.html\">donating</a> is only one of them). Come <a href=\"https://tails.boum.org/contribute/talk/\">talk to us</a>!</p>\n</div><div id=\"footer\" class=\"pagefooter\" role=\"contentinfo\" readability=\"15\">\n<p>Tags: <a href=\"https://tails.boum.org/tags/announce/\" rel=\"tag\">announce</a></p>\n<p>Pages linking to this one: <a href=\"https://tails.boum.org/inc/stable_i386_release_notes/index.en.html\">inc/stable i386 release notes</a> <a href=\"https://tails.boum.org/security/Numerous_security_holes_in_2.0/index.en.html\">security/Numerous security holes in 2.0</a></p>\n<p>Last edited Sat 13 Feb 2016 02:23:58 PM CET </p>\n</div>", | 25 | "content": "<div id=\"pagebody\" readability=\"39\">\n<p>This release fixes <a href=\"https://tails.boum.org/security/Numerous_security_holes_in_2.0/index.en.html\">numerous security issues</a>. All users must upgrade as soon as possible.</p>\n<div class=\"toc\">\n<ol><li class=\"L1\"><a href=\"https://tails.boum.org/news/version_2.0.1/index.en.html#index1h1\">Changes</a></li>\n<li class=\"L1\"><a href=\"https://tails.boum.org/news/version_2.0.1/index.en.html#index2h1\">Known issues</a></li>\n<li class=\"L1\"><a href=\"https://tails.boum.org/news/version_2.0.1/index.en.html#index3h1\">Download or upgrade</a></li>\n<li class=\"L1\"><a href=\"https://tails.boum.org/news/version_2.0.1/index.en.html#index4h1\">What's coming up?</a></li>\n</ol></div>\n<h2>New features</h2>\n<ul><li readability=\"11\">\n<p>Tails now uses the GNOME Shell desktop environment, in its Classic mode. GNOME Shell provides a modern, simple, and actively developed desktop environment. The Classic mode keeps the traditional Applications, Places menu, and windows list. Accessibility and non-Latin input sources are also better integrated.</p>\n<p>To find your way around, <a href=\"https://tails.boum.org/doc/first_steps/introduction_to_gnome_and_the_tails_desktop/index.en.html\">read our introduction to GNOME and the Tails desktop.</a></p>\n<table class=\"img\"><caption>The desktop and Applications menu</caption>\n<tr><td><img alt=\"Tails 2.0 desktop with applications menu unfolded\" class=\"img\" height=\"384\" src=\"https://tails.boum.org/inc/release_notes/2.0/applications_menu.png\" width=\"512\"/></td>\n</tr></table><table class=\"img\"><caption>The activities overview</caption>\n<tr><td><img alt=\"Tails 2.0 activities overview\" class=\"img\" height=\"384\" src=\"https://tails.boum.org/inc/release_notes/2.0/activities_overview.png\" width=\"512\"/></td>\n</tr></table></li>\n</ul><h2>Upgrades and changes</h2>\n<ul><li readability=\"2\">\n<p>Debian 8 upgrades most included software, for example:</p>\n<ul><li>Many core GNOME utilities from 3.4 to 3.14: Files, Disks, Videos, etc.</li>\n<li>LibreOffice from 3.5 to 4.3</li>\n<li>PiTiVi from 0.15 to 0.93</li>\n<li>Git from 1.7.10 to 2.1.4</li>\n<li>Poedit from 1.5.4 to 1.6.10</li>\n<li>Liferea from 1.8.6 to 1.10</li>\n</ul></li>\n<li readability=\"1\">\n<p>Update Tor Browser to 5.5 (based on Firefox 38.6.0 ESR):</p>\n<ul><li>Add Japanese support.</li>\n</ul></li>\n<li readability=\"2\">\n<p>Remove the Windows camouflage which is currently broken in GNOME Shell. We started working on <a href=\"https://labs.riseup.net/code/issues/10830\">adding it back</a> but <a href=\"https://tails.boum.org/news/windows_camouflage_jessie/index.en.html\">your help is needed</a>!</p>\n</li>\n<li readability=\"1\">\n<p>Change to <code>systemd</code> as init system and use it to:</p>\n<ul><li>Sandbox many services using Linux namespaces and make them harder to exploit.</li>\n<li>Make the launching of Tor and the memory wipe on shutdown more robust.</li>\n<li>Sanitize our code base by replacing many custom scripts.</li>\n</ul></li>\n<li readability=\"1\">\n<p>Update most firmware packages which might improve hardware compatibility.</p>\n</li>\n<li readability=\"1\">\n<p>Notify the user if Tails is running from a non-free virtualization software.</p>\n</li>\n<li readability=\"3\">\n<p>Remove Claws Mail, replaced by <a href=\"https://tails.boum.org/doc/anonymous_internet/icedove/index.en.html\">Icedove</a>, a rebranded version of Mozilla Thunderbird.</p>\n</li>\n</ul><h2>Fixed problems</h2>\n<ul><li readability=\"1\">\n<p>HiDPI displays are better supported. (<a href=\"https://labs.riseup.net/code/issues/8659\">#8659</a>)</p>\n</li>\n<li readability=\"3\">\n<p>Remove the option to open a download with an external application in Tor Browser as this is usually impossible due to the AppArmor confinement. (<a href=\"https://labs.riseup.net/code/issues/9285\">#9285</a>)</p>\n</li>\n<li readability=\"1\">\n<p>Close Vidalia before restarting Tor.</p>\n</li>\n<li readability=\"2\">\n<p>Allow Videos to access the DVD drive. (<a href=\"https://labs.riseup.net/code/issues/10455\">#10455</a>, <a href=\"https://labs.riseup.net/code/issues/9990\">#9990</a>)</p>\n</li>\n<li readability=\"1\">\n<p>Allow configuring printers without administration password. (<a href=\"https://labs.riseup.net/code/issues/8443\">#8443</a>)</p>\n</li>\n</ul>\n<p>See the current list of <a href=\"https://tails.boum.org/support/known_issues/index.en.html\">known issues</a>.</p>\n<p>Go to the <a href=\"https://tails.boum.org/download/index.en.html\">download</a> or <a href=\"https://tails.boum.org/doc/first_steps/upgrade/index.en.html\">upgrade</a> page.</p>\n<p>If your Tails does not boot after an automatic upgrade, please <a href=\"https://tails.boum.org/doc/first_steps/upgrade/index.en.html#manual\">upgrade your Tails manually</a>.</p>\n<p>The next Tails release is <a href=\"https://tails.boum.org/contribute/calendar/\">scheduled</a> for March 08.</p>\n<p>Have a look at our <a href=\"https://labs.riseup.net/code/projects/tails/roadmap\">roadmap</a> to see where we are heading to.</p>\n<p>We need your help and there are many ways to <a href=\"https://tails.boum.org/contribute/index.en.html\">contribute to Tails</a> (<a href=\"https://tails.boum.org/contribute/how/donate/index.en.html\">donating</a> is only one of them). Come <a href=\"https://tails.boum.org/contribute/talk/\">talk to us</a>!</p>\n</div><div id=\"footer\" class=\"pagefooter\" role=\"contentinfo\" readability=\"15\">\n<p>Tags: <a href=\"https://tails.boum.org/tags/announce/\" rel=\"tag\">announce</a></p>\n<p>Pages linking to this one: <a href=\"https://tails.boum.org/inc/stable_i386_release_notes/index.en.html\">inc/stable i386 release notes</a> <a href=\"https://tails.boum.org/security/Numerous_security_holes_in_2.0/index.en.html\">security/Numerous security holes in 2.0</a></p>\n<p>Last edited Sat 13 Feb 2016 02:23:58 PM CET </p>\n</div>", |
22 | "mimetype": "text/html", | 26 | "mimetype": "text/html", |
diff --git a/tests/Wallabag/ImportBundle/fixtures/wallabag-v2.json b/tests/Wallabag/ImportBundle/fixtures/wallabag-v2.json index 37c59668..efa8faf2 100644 --- a/tests/Wallabag/ImportBundle/fixtures/wallabag-v2.json +++ b/tests/Wallabag/ImportBundle/fixtures/wallabag-v2.json | |||
@@ -4,6 +4,8 @@ | |||
4 | "title": "Site d'information français d'actualités indépendant et participatif en ligne | Mediapart", | 4 | "title": "Site d'information français d'actualités indépendant et participatif en ligne | Mediapart", |
5 | "url": "https://www.mediapart.fr/", | 5 | "url": "https://www.mediapart.fr/", |
6 | "is_archived": false, | 6 | "is_archived": false, |
7 | "created_at": "2016-09-08T11:55:58+0200", | ||
8 | "updated_at": "2016-09-08T11:57:16+0200", | ||
7 | "is_starred": false, | 9 | "is_starred": false, |
8 | "content": "<div alt=\"li\">Édition <a href=\"https://blogs.mediapart.fr/edition/camedia-0\">CAMédia</a>\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/edition/camedia/article/180116/deux-nouvelles-editions-pour-debattre-dans-le-club-sur-la-laicite-et-sur-la-democratie\">Deux nouvelles éditions pour débattre dans le club sur la laïcité et sur la démocratie</a></h3>\n<p>18 janv. 2016 | Par </p>\n<p>CAMédia après un échange sur « l'éthique du débat » a lancé deux discussions , l'une sur le thème de la laïcité, l'autre ( encore en cours) sur celui de la démocratie. Nous sommes heureux de pouvoir signaler la création de deux nouvelles éditions participatives sur ces thèmes. Nous vous invitons à les lire et à participer à leurs débats.</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/lucile-longre/blog/170116/de-limportance-de-rever-eloge-du-merveilleux\">De l'importance de rêver, éloge du merveilleux</a></h3>\n<p>17 janv. 2016 | Par </p>\n<p>Je parlerai ici des rêves comme moteur de vie, de ces rêves qui vous rattachent et vous font espérer à ce qu’il y a de plus humain dans l’homme, même au milieu de la plus noire des détresses.</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/barbara-romagnan/blog/180116/fins-dune-toute-puissance\">Fin(s) d'une toute-puissance</a></h3>\n<p>18 janv. 2016 | Par </p>\n<p>En ce début d’année, je recommande la lecture du dernier ouvrage de Guillaume Duval, La France ne sera jamais plus une grande puissance ? Tant mieux !</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/jean-pierre-thibaudat/blog/170116/l-allier-departement-de-destruction-massive-du-tissu-culturel\">L’Allier, département de destruction massive du tissu culturel</a></h3>\n<p>18 janv. 2016 | Par </p>\n<p>Les temps sont durs pour les petites structures, les associations culturelles qui, de bourgades en villages, travaillent au cœur des régions. Leurs subventions sont souvent revues à la baisse. Le département de l’Allier les a carrément supprimées. Pour favoriser « l’événementiel ».</p>\n</div><div alt=\"li\">Édition <a href=\"https://blogs.mediapart.fr/edition/les-invites-de-mediapart\">Les invités de Mediapart</a>\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/edition/les-invites-de-mediapart/article/180116/la-democratie-deja-attaquee-par-la-cooperation-reglementaire-transatlantiqu\">La démocratie déjà attaquée par la coopération réglementaire transatlantique</a></h3>\n<p>18 janv. 2016 | Par </p>\n<p>Lora Verheecke et David Lundy travaillent pour Corporate Europe Observatory, une ONG basée à Bruxelles qui enquête sur le pouvoir des lobbies des grandes entreprises sur la politique de l’Union européenne. Ils révèlent que depuis 25 ans le projet de « coopération réglementaire » mené par l’Union européenne et les États-Unis a été dominé par les grandes entreprises. ET que le TTIP cherche à entériner ce projet.</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/jacqueline-derens/blog/180116/2016-une-annee-test-pour-jacob-zuma-et-son-gouvernement\">2016, une année test pour Jacob Zuma et son gouvernement</a></h3>\n<p>18 janv. 2016 | Par </p>\n<p>Les turbulences de l’an passé ont toutes les chances de continuer à troubler le climat politique et social de l’Afrique du Sud en 2016. La situation exige des changements profonds dans la conduite des affaires du pays. Jacob Zuma tout en admettant la nécessité de ces changements, est-il l’homme de la situation ? Son gouvernement répondra-t-il aux attentes des citoyens sud-africains ?</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/marie-cosnay/blog/140116/un-mal-fou-janvier-2016\">Un mal fou (janvier 2016)</a></h3>\n<p>14 janv. 2016 | Par </p>\n<p>J’ai une fringale d’aventure, d’aventures à venir. J’ai la fringale de la fringale des aventures et soudain, rupture. Je n’y arrive plus, tout est bloqué, tout empêché. Faut dire que depuis un an environ, tout est devenu plus compliqué. Ecrire va de moins en moins de soi.</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/jean-pierre-veran/blog/170116/redoublement-le-changement-bas-bruit\">Redoublement : le changement à bas bruit ?</a></h3>\n<p>17 janv. 2016 | Par </p>\n<p>S’il est une caractéristique de la forme scolaire française bien établie dans la culture des personnels, des élèves et des parents, c’est bien le redoublement, censé sanctionner des résultats insuffisants pour envisager le passage dans la classe supérieure. Or, en ce domaine, l’évolution est nette.</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/michel-de-pracontal/blog/160116/samedi-sciences-196-des-chasseurs-de-mammouths-en-arctique-il-y-45-000-ans\">Samedi-sciences (196): des chasseurs de mammouths en Arctique il y a 45 000 ans</a></h3>\n<p>16 janv. 2016 | Par <a href=\"https://blogs.mediapart.fr/michel-de-pracontal\" class=\"journalist\">Michel de Pracontal</a></p>\n<p>Les restes d’un mammouth retrouvés en Arctique sibérien, datés de 45 000 ans, portent les traces de blessures infligées par des chasseurs humains. Les scientifiques pensaient jusqu’ici que notre espèce ne s’était pas aventurée dans cette région glaciale il y a plus de 30 000 ou 35 0000 ans. En réalité, des hommes ont réussi à survivre en Arctique au moins 10 000 ans plus tôt que l’on croyait.</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/alain-zolty/blog/140116/de-la-democratie-du-citoyen-et-de-lethique\">De la démocratie, du citoyen et de l'éthique</a></h3>\n<p>14 janv. 2016 | Par </p>\n<p>Trois ouvrages sont parus au Seuil, qui font état de la nécessité d’intégrer le citoyen dans la gouvernance de la nation. Non pas à titre consultatif mais doté d’un pouvoir délibératif pour constituer une contre-force face aux clans politico-financiers qui dominent la vie publique.</p>\n</div>", | 10 | "content": "<div alt=\"li\">Édition <a href=\"https://blogs.mediapart.fr/edition/camedia-0\">CAMédia</a>\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/edition/camedia/article/180116/deux-nouvelles-editions-pour-debattre-dans-le-club-sur-la-laicite-et-sur-la-democratie\">Deux nouvelles éditions pour débattre dans le club sur la laïcité et sur la démocratie</a></h3>\n<p>18 janv. 2016 | Par </p>\n<p>CAMédia après un échange sur « l'éthique du débat » a lancé deux discussions , l'une sur le thème de la laïcité, l'autre ( encore en cours) sur celui de la démocratie. Nous sommes heureux de pouvoir signaler la création de deux nouvelles éditions participatives sur ces thèmes. Nous vous invitons à les lire et à participer à leurs débats.</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/lucile-longre/blog/170116/de-limportance-de-rever-eloge-du-merveilleux\">De l'importance de rêver, éloge du merveilleux</a></h3>\n<p>17 janv. 2016 | Par </p>\n<p>Je parlerai ici des rêves comme moteur de vie, de ces rêves qui vous rattachent et vous font espérer à ce qu’il y a de plus humain dans l’homme, même au milieu de la plus noire des détresses.</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/barbara-romagnan/blog/180116/fins-dune-toute-puissance\">Fin(s) d'une toute-puissance</a></h3>\n<p>18 janv. 2016 | Par </p>\n<p>En ce début d’année, je recommande la lecture du dernier ouvrage de Guillaume Duval, La France ne sera jamais plus une grande puissance ? Tant mieux !</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/jean-pierre-thibaudat/blog/170116/l-allier-departement-de-destruction-massive-du-tissu-culturel\">L’Allier, département de destruction massive du tissu culturel</a></h3>\n<p>18 janv. 2016 | Par </p>\n<p>Les temps sont durs pour les petites structures, les associations culturelles qui, de bourgades en villages, travaillent au cœur des régions. Leurs subventions sont souvent revues à la baisse. Le département de l’Allier les a carrément supprimées. Pour favoriser « l’événementiel ».</p>\n</div><div alt=\"li\">Édition <a href=\"https://blogs.mediapart.fr/edition/les-invites-de-mediapart\">Les invités de Mediapart</a>\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/edition/les-invites-de-mediapart/article/180116/la-democratie-deja-attaquee-par-la-cooperation-reglementaire-transatlantiqu\">La démocratie déjà attaquée par la coopération réglementaire transatlantique</a></h3>\n<p>18 janv. 2016 | Par </p>\n<p>Lora Verheecke et David Lundy travaillent pour Corporate Europe Observatory, une ONG basée à Bruxelles qui enquête sur le pouvoir des lobbies des grandes entreprises sur la politique de l’Union européenne. Ils révèlent que depuis 25 ans le projet de « coopération réglementaire » mené par l’Union européenne et les États-Unis a été dominé par les grandes entreprises. ET que le TTIP cherche à entériner ce projet.</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/jacqueline-derens/blog/180116/2016-une-annee-test-pour-jacob-zuma-et-son-gouvernement\">2016, une année test pour Jacob Zuma et son gouvernement</a></h3>\n<p>18 janv. 2016 | Par </p>\n<p>Les turbulences de l’an passé ont toutes les chances de continuer à troubler le climat politique et social de l’Afrique du Sud en 2016. La situation exige des changements profonds dans la conduite des affaires du pays. Jacob Zuma tout en admettant la nécessité de ces changements, est-il l’homme de la situation ? Son gouvernement répondra-t-il aux attentes des citoyens sud-africains ?</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/marie-cosnay/blog/140116/un-mal-fou-janvier-2016\">Un mal fou (janvier 2016)</a></h3>\n<p>14 janv. 2016 | Par </p>\n<p>J’ai une fringale d’aventure, d’aventures à venir. J’ai la fringale de la fringale des aventures et soudain, rupture. Je n’y arrive plus, tout est bloqué, tout empêché. Faut dire que depuis un an environ, tout est devenu plus compliqué. Ecrire va de moins en moins de soi.</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/jean-pierre-veran/blog/170116/redoublement-le-changement-bas-bruit\">Redoublement : le changement à bas bruit ?</a></h3>\n<p>17 janv. 2016 | Par </p>\n<p>S’il est une caractéristique de la forme scolaire française bien établie dans la culture des personnels, des élèves et des parents, c’est bien le redoublement, censé sanctionner des résultats insuffisants pour envisager le passage dans la classe supérieure. Or, en ce domaine, l’évolution est nette.</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/michel-de-pracontal/blog/160116/samedi-sciences-196-des-chasseurs-de-mammouths-en-arctique-il-y-45-000-ans\">Samedi-sciences (196): des chasseurs de mammouths en Arctique il y a 45 000 ans</a></h3>\n<p>16 janv. 2016 | Par <a href=\"https://blogs.mediapart.fr/michel-de-pracontal\" class=\"journalist\">Michel de Pracontal</a></p>\n<p>Les restes d’un mammouth retrouvés en Arctique sibérien, datés de 45 000 ans, portent les traces de blessures infligées par des chasseurs humains. Les scientifiques pensaient jusqu’ici que notre espèce ne s’était pas aventurée dans cette région glaciale il y a plus de 30 000 ou 35 0000 ans. En réalité, des hommes ont réussi à survivre en Arctique au moins 10 000 ans plus tôt que l’on croyait.</p>\n</div><div alt=\"li\">\n<h3 class=\"title\"><a href=\"https://blogs.mediapart.fr/alain-zolty/blog/140116/de-la-democratie-du-citoyen-et-de-lethique\">De la démocratie, du citoyen et de l'éthique</a></h3>\n<p>14 janv. 2016 | Par </p>\n<p>Trois ouvrages sont parus au Seuil, qui font état de la nécessité d’intégrer le citoyen dans la gouvernance de la nation. Non pas à titre consultatif mais doté d’un pouvoir délibératif pour constituer une contre-force face aux clans politico-financiers qui dominent la vie publique.</p>\n</div>", |
9 | "mimetype": "text/html", | 11 | "mimetype": "text/html", |
@@ -21,6 +23,8 @@ | |||
21 | "title": "Réfugiés: l'UE va créer 100 000 places d'accueil dans les Balkans", | 23 | "title": "Réfugiés: l'UE va créer 100 000 places d'accueil dans les Balkans", |
22 | "url": "http://www.liberation.fr/planete/2015/10/26/refugies-l-ue-va-creer-100-000-places-d-accueil-dans-les-balkans_1408867", | 24 | "url": "http://www.liberation.fr/planete/2015/10/26/refugies-l-ue-va-creer-100-000-places-d-accueil-dans-les-balkans_1408867", |
23 | "is_archived": false, | 25 | "is_archived": false, |
26 | "created_at": "2016-09-08T11:55:58+0200", | ||
27 | "updated_at": "2016-09-08T11:57:16+0200", | ||
24 | "is_starred": false, | 28 | "is_starred": false, |
25 | "content": "<p>Pour un sommet sur les réfugiés qui devait se concentrer sur des <em>«mesures opérationnelles immédiates»</em> dans les Balkans, la réunion, dimanche à Bruxelles, de 11 chefs d’Etat et de gouvernement, dont 8 Européens, a été agitée. Dès leur arrivée, Viktor Orbán (Hongrie) et Aléxis Tsípras (Grèce) se sont jeté des anathèmes. Le Premier ministre grec a dénoncé l’attitude <em>«not in my backyard»</em> (pas de ça chez moi) de certains Etats européens, alors que son pays est montré du doigt par d’autres dirigeants, dont Orbán : ils reprochent à la Grèce de ne pas suffisamment contrôler ses frontières avec la Turquie et ne pas montrer assez de zèle dans l’enregistrement des demandeurs d’asile.</p>\n<p>Le sommet, convoqué par la Commission européenne, sur suggestion de l’Allemagne, aura au moins permis à ces 11 Etats – Autriche, Bulgarie, Croatie, Allemagne, Grèce, Hongrie, Roumanie, Slovénie côté européen, et 3 pays «non UE», Albanie, Macédoine et Serbie – de discuter ensemble.</p>\n<h3>400 policiers européens en Slovénie</h3>\n<p>L’objectif, rappelé par Angela Merkel, était de trouver une <em>«réponse coordonnée»</em> à la crise des réfugiés. Quelques mesures ont été annoncées : 100 000 places d’accueil seront créées, dont 50 000 en Grèce, et le reste le long de la route des Balkans. 400 officiers de police de pays européens partiront en Slovénie, actuellement submergée, pour aider au contrôle des frontières. Frontex, l’agence européenne de surveillance des frontières, s’impliquera aux frontières gréco-macédonienne et gréco-albanaise pour des contrôles et identifications.</p>\n<p>Ce sommet est intervenu dans un contexte de fortes tensions, marqué par des fermetures de frontières bloquant les réfugiés dans des zones tampon. Ces obstacles ont été partiellement levés ces derniers jours, les autorités tentant d’organiser un «corridor» informel vers l’Allemagne, qui pourtant durcit sa politique d’accueil et souhaite désormais ralentir le flux. Mais la situation des réfugiés est catastrophique. L’ONG Human Rights Watch craint que des réfugiés ne meurent dans les Balkans. Des groupes de centaines, voire de milliers de personnes, bloqués près des postes-frontières, se retrouvent dans des conditions humanitaires intenables.</p>\n<p>Depuis mi-septembre, 250 000 personnes ont traversé les Balkans. En une semaine, la Slovénie a vu 60 000 réfugiés fouler le sol de son territoire. Dimanche, 15 000 personnes ont transité en Slovénie.</p>\n<h3>Des zones tampon</h3>\n<p>L’enjeu principal du sommet, aux yeux de nombreux Etats de l’Union européenne, était aussi que les pays des Balkans <em>«prennent leur part»</em> face à la crise : qu’ils accueillent et enregistrent davantage de réfugiés. Ces Etats craignent que l’Autriche ou l’Allemagne ne ferment leurs frontières et fassent de leurs pays des <em>«zones tampon»</em>, comme s’en inquiétait Boyko Borissov, Premier ministre bulgare.</p>\n<p><em>« Aujourd’hui, plusieurs Etats du nord de l’Europe veulent que l’on enregistre les migrants puis que l’on détermine leur éligibilité au statut de réfugié,</em> explique Marc Pierini, du think tank Carnegie Europe. <em>La difficulté, c’est que les gens sont en mouvement. Pour le faire, il faut se poser quelque part. La crainte des pays intermédiaires, donc ceux des Balkans, est qu’on enregistre ces personnes sur leur territoire et qu’ils soient contraints de rester sur leur sol. Donc les pays des Balkans ne sont pas désireux d’accueillir ces réfugiés et ces derniers veulent avancer.»</em></p>\n<p>Le sommet a élaboré quelques principes. L’idée générale est de rendre effective la «logique de hotspot» : un enregistrement des demandeurs d’asile à leur point d’entrée dans l’Union européenne, suivi de l’expulsion de ceux qui ne correspondraient pas aux critères de la Convention de Genève, et la répartition des autres, via le mécanisme de relocalisation.</p>\n<p>Dans ce cadre, l’enregistrement des demandeurs d’asile est un élément clé. <em>«Pas d’enregistrement, pas de droit»</em>, a prévenu le président de la Commission européenne, Jean-Claude Juncker, dimanche soir. Les Etats ont tenu à rappeler que les migrants qui refusent de demander l’asile à la frontière peuvent se voir refuser l’entrée dans un pays.</p>\n<p>Et les Etats <em>«décourageront les mouvements de réfugiés»</em> de frontière en frontière. La politique consistant à laisser passer les migrants vers un autre pays est officiellement jugée <em>«inacceptable»</em>.</p>\n<h3>Se jeter dans la gueule du loup</h3>\n<p>Voilà pour la théorie. En pratique, la relocalisation ne devrait concerner que 160 000 réfugiés en deux ans, alors que près de 700 000 personnes sont arrivées en Europe depuis le début de l’année. De plus, les Etats ne jouent pas le jeu. La semaine passée, seules 854 places de relocalisation avaient été proposées.</p>\n<p>Dans ce contexte, il est probable que les Etats des Balkans ne s’impliqueront pas outre mesure dans les solutions proposées, craignant de devoir «garder» les réfugiés alors que l’Union européenne tarde à mettre en œuvre leur répartition.</p>\n<p>Quant aux réfugiés, ils préfèrent traverser les frontières par eux-mêmes, plutôt que de se jeter dans ces «hotspots», considérés comme la gueule du loup.</p>\n<a itemprop=\"name\" href=\"http://www.liberation.fr/auteur/15743-cedric-vallet\">Cédric Vallet</a>", | 29 | "content": "<p>Pour un sommet sur les réfugiés qui devait se concentrer sur des <em>«mesures opérationnelles immédiates»</em> dans les Balkans, la réunion, dimanche à Bruxelles, de 11 chefs d’Etat et de gouvernement, dont 8 Européens, a été agitée. Dès leur arrivée, Viktor Orbán (Hongrie) et Aléxis Tsípras (Grèce) se sont jeté des anathèmes. Le Premier ministre grec a dénoncé l’attitude <em>«not in my backyard»</em> (pas de ça chez moi) de certains Etats européens, alors que son pays est montré du doigt par d’autres dirigeants, dont Orbán : ils reprochent à la Grèce de ne pas suffisamment contrôler ses frontières avec la Turquie et ne pas montrer assez de zèle dans l’enregistrement des demandeurs d’asile.</p>\n<p>Le sommet, convoqué par la Commission européenne, sur suggestion de l’Allemagne, aura au moins permis à ces 11 Etats – Autriche, Bulgarie, Croatie, Allemagne, Grèce, Hongrie, Roumanie, Slovénie côté européen, et 3 pays «non UE», Albanie, Macédoine et Serbie – de discuter ensemble.</p>\n<h3>400 policiers européens en Slovénie</h3>\n<p>L’objectif, rappelé par Angela Merkel, était de trouver une <em>«réponse coordonnée»</em> à la crise des réfugiés. Quelques mesures ont été annoncées : 100 000 places d’accueil seront créées, dont 50 000 en Grèce, et le reste le long de la route des Balkans. 400 officiers de police de pays européens partiront en Slovénie, actuellement submergée, pour aider au contrôle des frontières. Frontex, l’agence européenne de surveillance des frontières, s’impliquera aux frontières gréco-macédonienne et gréco-albanaise pour des contrôles et identifications.</p>\n<p>Ce sommet est intervenu dans un contexte de fortes tensions, marqué par des fermetures de frontières bloquant les réfugiés dans des zones tampon. Ces obstacles ont été partiellement levés ces derniers jours, les autorités tentant d’organiser un «corridor» informel vers l’Allemagne, qui pourtant durcit sa politique d’accueil et souhaite désormais ralentir le flux. Mais la situation des réfugiés est catastrophique. L’ONG Human Rights Watch craint que des réfugiés ne meurent dans les Balkans. Des groupes de centaines, voire de milliers de personnes, bloqués près des postes-frontières, se retrouvent dans des conditions humanitaires intenables.</p>\n<p>Depuis mi-septembre, 250 000 personnes ont traversé les Balkans. En une semaine, la Slovénie a vu 60 000 réfugiés fouler le sol de son territoire. Dimanche, 15 000 personnes ont transité en Slovénie.</p>\n<h3>Des zones tampon</h3>\n<p>L’enjeu principal du sommet, aux yeux de nombreux Etats de l’Union européenne, était aussi que les pays des Balkans <em>«prennent leur part»</em> face à la crise : qu’ils accueillent et enregistrent davantage de réfugiés. Ces Etats craignent que l’Autriche ou l’Allemagne ne ferment leurs frontières et fassent de leurs pays des <em>«zones tampon»</em>, comme s’en inquiétait Boyko Borissov, Premier ministre bulgare.</p>\n<p><em>« Aujourd’hui, plusieurs Etats du nord de l’Europe veulent que l’on enregistre les migrants puis que l’on détermine leur éligibilité au statut de réfugié,</em> explique Marc Pierini, du think tank Carnegie Europe. <em>La difficulté, c’est que les gens sont en mouvement. Pour le faire, il faut se poser quelque part. La crainte des pays intermédiaires, donc ceux des Balkans, est qu’on enregistre ces personnes sur leur territoire et qu’ils soient contraints de rester sur leur sol. Donc les pays des Balkans ne sont pas désireux d’accueillir ces réfugiés et ces derniers veulent avancer.»</em></p>\n<p>Le sommet a élaboré quelques principes. L’idée générale est de rendre effective la «logique de hotspot» : un enregistrement des demandeurs d’asile à leur point d’entrée dans l’Union européenne, suivi de l’expulsion de ceux qui ne correspondraient pas aux critères de la Convention de Genève, et la répartition des autres, via le mécanisme de relocalisation.</p>\n<p>Dans ce cadre, l’enregistrement des demandeurs d’asile est un élément clé. <em>«Pas d’enregistrement, pas de droit»</em>, a prévenu le président de la Commission européenne, Jean-Claude Juncker, dimanche soir. Les Etats ont tenu à rappeler que les migrants qui refusent de demander l’asile à la frontière peuvent se voir refuser l’entrée dans un pays.</p>\n<p>Et les Etats <em>«décourageront les mouvements de réfugiés»</em> de frontière en frontière. La politique consistant à laisser passer les migrants vers un autre pays est officiellement jugée <em>«inacceptable»</em>.</p>\n<h3>Se jeter dans la gueule du loup</h3>\n<p>Voilà pour la théorie. En pratique, la relocalisation ne devrait concerner que 160 000 réfugiés en deux ans, alors que près de 700 000 personnes sont arrivées en Europe depuis le début de l’année. De plus, les Etats ne jouent pas le jeu. La semaine passée, seules 854 places de relocalisation avaient été proposées.</p>\n<p>Dans ce contexte, il est probable que les Etats des Balkans ne s’impliqueront pas outre mesure dans les solutions proposées, craignant de devoir «garder» les réfugiés alors que l’Union européenne tarde à mettre en œuvre leur répartition.</p>\n<p>Quant aux réfugiés, ils préfèrent traverser les frontières par eux-mêmes, plutôt que de se jeter dans ces «hotspots», considérés comme la gueule du loup.</p>\n<a itemprop=\"name\" href=\"http://www.liberation.fr/auteur/15743-cedric-vallet\">Cédric Vallet</a>", |
26 | "mimetype": "", | 30 | "mimetype": "", |
@@ -34,6 +38,8 @@ | |||
34 | "title": "No title found", | 38 | "title": "No title found", |
35 | "url": "http://news.nationalgeographic.com/2016/02/160211-albatrosses-mothers-babies-animals-science/&sf20739758=1", | 39 | "url": "http://news.nationalgeographic.com/2016/02/160211-albatrosses-mothers-babies-animals-science/&sf20739758=1", |
36 | "is_archived": false, | 40 | "is_archived": false, |
41 | "created_at": "2016-09-08T11:55:58+0200", | ||
42 | "updated_at": "2016-09-08T11:57:16+0200", | ||
37 | "is_starred": true, | 43 | "is_starred": true, |
38 | "content": "Oh, what a shame, no content", | 44 | "content": "Oh, what a shame, no content", |
39 | "mimetype": "", | 45 | "mimetype": "", |
@@ -44,6 +50,8 @@ | |||
44 | }, | 50 | }, |
45 | { | 51 | { |
46 | "is_archived": 0, | 52 | "is_archived": 0, |
53 | "created_at": "2016-09-08T11:55:58+0200", | ||
54 | "updated_at": "2016-09-08T11:57:16+0200", | ||
47 | "is_starred": 0, | 55 | "is_starred": 0, |
48 | "id": 612, | 56 | "id": 612, |
49 | "title": "Échecs", | 57 | "title": "Échecs", |
@@ -58,6 +66,8 @@ | |||
58 | }, | 66 | }, |
59 | { | 67 | { |
60 | "is_archived": 0, | 68 | "is_archived": 0, |
69 | "created_at": "2016-09-08T11:55:58+0200", | ||
70 | "updated_at": "2016-09-08T11:57:16+0200", | ||
61 | "is_starred": 0, | 71 | "is_starred": 0, |
62 | "id": 608, | 72 | "id": 608, |
63 | "title": "90% des dossiers médicaux des Coréens du sud vendus à des entreprises privées - ZATAZ", | 73 | "title": "90% des dossiers médicaux des Coréens du sud vendus à des entreprises privées - ZATAZ", |
@@ -73,6 +83,8 @@ | |||
73 | }, | 83 | }, |
74 | { | 84 | { |
75 | "is_archived": 0, | 85 | "is_archived": 0, |
86 | "created_at": "2016-09-08T11:55:58+0200", | ||
87 | "updated_at": "2016-09-08T11:57:16+0200", | ||
76 | "is_starred": 0, | 88 | "is_starred": 0, |
77 | "id": 606, | 89 | "id": 606, |
78 | "title": "Mass Surveillance As Art", | 90 | "title": "Mass Surveillance As Art", |
@@ -87,6 +99,8 @@ | |||
87 | }, | 99 | }, |
88 | { | 100 | { |
89 | "is_archived": 0, | 101 | "is_archived": 0, |
102 | "created_at": "2016-09-08T11:55:58+0200", | ||
103 | "updated_at": "2016-09-08T11:57:16+0200", | ||
90 | "is_starred": 0, | 104 | "is_starred": 0, |
91 | "id": 605, | 105 | "id": 605, |
92 | "title": "What David Cameron did to the pig, his party is now doing to the country", | 106 | "title": "What David Cameron did to the pig, his party is now doing to the country", |
@@ -102,6 +116,8 @@ | |||
102 | }, | 116 | }, |
103 | { | 117 | { |
104 | "is_archived": 1, | 118 | "is_archived": 1, |
119 | "created_at": "2016-09-08T11:55:58+0200", | ||
120 | "updated_at": "2016-09-08T11:57:16+0200", | ||
105 | "is_starred": 0, | 121 | "is_starred": 0, |
106 | "id": 604, | 122 | "id": 604, |
107 | "title": "CLICK HERE to support 2016 CES Winner, Revolutionary Auto-Tracking Robot", | 123 | "title": "CLICK HERE to support 2016 CES Winner, Revolutionary Auto-Tracking Robot", |
@@ -116,6 +132,8 @@ | |||
116 | }, | 132 | }, |
117 | { | 133 | { |
118 | "is_archived": 0, | 134 | "is_archived": 0, |
135 | "created_at": "2016-09-08T11:55:58+0200", | ||
136 | "updated_at": "2016-09-08T11:57:16+0200", | ||
119 | "is_starred": 1, | 137 | "is_starred": 1, |
120 | "id": 603, | 138 | "id": 603, |
121 | "title": "No title found", | 139 | "title": "No title found", |
@@ -129,6 +147,8 @@ | |||
129 | }, | 147 | }, |
130 | { | 148 | { |
131 | "is_archived": 1, | 149 | "is_archived": 1, |
150 | "created_at": "2016-09-08T11:55:58+0200", | ||
151 | "updated_at": "2016-09-08T11:57:16+0200", | ||
132 | "is_starred": 0, | 152 | "is_starred": 0, |
133 | "id": 602, | 153 | "id": 602, |
134 | "title": "Présentation d'Arduino - Tuto Arduino - Le blog d'Eskimon", | 154 | "title": "Présentation d'Arduino - Tuto Arduino - Le blog d'Eskimon", |
@@ -144,6 +164,8 @@ | |||
144 | }, | 164 | }, |
145 | { | 165 | { |
146 | "is_archived": 1, | 166 | "is_archived": 1, |
167 | "created_at": "2016-09-08T11:55:58+0200", | ||
168 | "updated_at": "2016-09-08T11:57:16+0200", | ||
147 | "is_starred": 0, | 169 | "is_starred": 0, |
148 | "id": 543, | 170 | "id": 543, |
149 | "title": "Lenovo ThinkPad X1 Carbon Ultrabook Review", | 171 | "title": "Lenovo ThinkPad X1 Carbon Ultrabook Review", |
@@ -159,6 +181,8 @@ | |||
159 | }, | 181 | }, |
160 | { | 182 | { |
161 | "is_archived": 0, | 183 | "is_archived": 0, |
184 | "created_at": "2016-09-08T11:55:58+0200", | ||
185 | "updated_at": "2016-09-08T11:57:16+0200", | ||
162 | "is_starred": 0, | 186 | "is_starred": 0, |
163 | "id": 541, | 187 | "id": 541, |
164 | "title": "Visitons le Château de Landsberg !", | 188 | "title": "Visitons le Château de Landsberg !", |
@@ -174,6 +198,8 @@ | |||
174 | }, | 198 | }, |
175 | { | 199 | { |
176 | "is_archived": 1, | 200 | "is_archived": 1, |
201 | "created_at": "2016-09-08T11:55:58+0200", | ||
202 | "updated_at": "2016-09-08T11:57:16+0200", | ||
177 | "is_starred": 0, | 203 | "is_starred": 0, |
178 | "id": 454, | 204 | "id": 454, |
179 | "title": "Contrer les stéréotypes par les livres : “C'est dès l'enfance qu'ils se construisent”", | 205 | "title": "Contrer les stéréotypes par les livres : “C'est dès l'enfance qu'ils se construisent”", |
@@ -189,6 +215,8 @@ | |||
189 | }, | 215 | }, |
190 | { | 216 | { |
191 | "is_archived": 1, | 217 | "is_archived": 1, |
218 | "created_at": "2016-09-08T11:55:58+0200", | ||
219 | "updated_at": "2016-09-08T11:57:16+0200", | ||
192 | "is_starred": 0, | 220 | "is_starred": 0, |
193 | "id": 99, | 221 | "id": 99, |
194 | "title": "[ROM][6.0.1][Layers][N5] TipsyOS official builds {UBER TCs}", | 222 | "title": "[ROM][6.0.1][Layers][N5] TipsyOS official builds {UBER TCs}", |
@@ -204,6 +232,8 @@ | |||
204 | }, | 232 | }, |
205 | { | 233 | { |
206 | "is_archived": 0, | 234 | "is_archived": 0, |
235 | "created_at": "2016-09-08T11:55:58+0200", | ||
236 | "updated_at": "2016-09-08T11:57:16+0200", | ||
207 | "is_starred": 0, | 237 | "is_starred": 0, |
208 | "id": 98, | 238 | "id": 98, |
209 | "title": "Top 15 Podcasts All Web Developers Should Follow - Envato Tuts+ Code Article", | 239 | "title": "Top 15 Podcasts All Web Developers Should Follow - Envato Tuts+ Code Article", |
@@ -218,6 +248,8 @@ | |||
218 | }, | 248 | }, |
219 | { | 249 | { |
220 | "is_archived": 1, | 250 | "is_archived": 1, |
251 | "created_at": "2016-09-08T11:55:58+0200", | ||
252 | "updated_at": "2016-09-08T11:57:16+0200", | ||
221 | "is_starred": 0, | 253 | "is_starred": 0, |
222 | "id": 97, | 254 | "id": 97, |
223 | "title": "University of Mississippi", | 255 | "title": "University of Mississippi", |
@@ -232,6 +264,8 @@ | |||
232 | }, | 264 | }, |
233 | { | 265 | { |
234 | "is_archived": 1, | 266 | "is_archived": 1, |
267 | "created_at": "2016-09-08T11:55:58+0200", | ||
268 | "updated_at": "2016-09-08T11:57:16+0200", | ||
235 | "is_starred": 0, | 269 | "is_starred": 0, |
236 | "id": 96, | 270 | "id": 96, |
237 | "title": "FinnChristiansen.de Jetzt Dank Let’s Encrypt Per HTTPS Erreichbar", | 271 | "title": "FinnChristiansen.de Jetzt Dank Let’s Encrypt Per HTTPS Erreichbar", |
@@ -246,6 +280,8 @@ | |||
246 | }, | 280 | }, |
247 | { | 281 | { |
248 | "is_archived": 1, | 282 | "is_archived": 1, |
283 | "created_at": "2016-09-08T11:55:58+0200", | ||
284 | "updated_at": "2016-09-08T11:57:16+0200", | ||
249 | "is_starred": 0, | 285 | "is_starred": 0, |
250 | "id": 82, | 286 | "id": 82, |
251 | "title": "Le développeur et l'ingénierie logicielle", | 287 | "title": "Le développeur et l'ingénierie logicielle", |
@@ -259,6 +295,8 @@ | |||
259 | }, | 295 | }, |
260 | { | 296 | { |
261 | "is_archived": 1, | 297 | "is_archived": 1, |
298 | "created_at": "2016-09-08T11:55:58+0200", | ||
299 | "updated_at": "2016-09-08T11:57:16+0200", | ||
262 | "is_starred": 0, | 300 | "is_starred": 0, |
263 | "id": 78, | 301 | "id": 78, |
264 | "title": "The Role of Methylation in Gene Expression", | 302 | "title": "The Role of Methylation in Gene Expression", |
@@ -273,6 +311,8 @@ | |||
273 | }, | 311 | }, |
274 | { | 312 | { |
275 | "is_archived": 1, | 313 | "is_archived": 1, |
314 | "created_at": "2016-09-08T11:55:58+0200", | ||
315 | "updated_at": "2016-09-08T11:57:16+0200", | ||
276 | "is_starred": 0, | 316 | "is_starred": 0, |
277 | "id": 53, | 317 | "id": 53, |
278 | "title": "E-Mail-Adresse kostenlos, FreeMail, De-Mail & Nachrichten", | 318 | "title": "E-Mail-Adresse kostenlos, FreeMail, De-Mail & Nachrichten", |
@@ -287,6 +327,8 @@ | |||
287 | }, | 327 | }, |
288 | { | 328 | { |
289 | "is_archived": 1, | 329 | "is_archived": 1, |
330 | "created_at": "2016-09-08T11:55:58+0200", | ||
331 | "updated_at": "2016-09-08T11:57:16+0200", | ||
290 | "is_starred": 0, | 332 | "is_starred": 0, |
291 | "id": 48, | 333 | "id": 48, |
292 | "title": "OpenSSH Server on Arch Linux | DominicM test", | 334 | "title": "OpenSSH Server on Arch Linux | DominicM test", |
@@ -302,6 +344,8 @@ | |||
302 | }, | 344 | }, |
303 | { | 345 | { |
304 | "is_archived": 1, | 346 | "is_archived": 1, |
347 | "created_at": "2016-09-08T11:55:58+0200", | ||
348 | "updated_at": "2016-09-08T11:57:16+0200", | ||
305 | "is_starred": 0, | 349 | "is_starred": 0, |
306 | "id": 39, | 350 | "id": 39, |
307 | "title": "Site Moved | Site Help", | 351 | "title": "Site Moved | Site Help", |
@@ -316,6 +360,8 @@ | |||
316 | }, | 360 | }, |
317 | { | 361 | { |
318 | "is_archived": 1, | 362 | "is_archived": 1, |
363 | "created_at": "2016-09-08T11:55:58+0200", | ||
364 | "updated_at": "2016-09-08T11:57:16+0200", | ||
319 | "is_starred": 0, | 365 | "is_starred": 0, |
320 | "id": 38, | 366 | "id": 38, |
321 | "title": "#Maroc : le stylo anti-pédophiles EAGLE d’AMESYS est moins bien configuré que les faux-lowers Twitter du roi Mohammed VI", | 367 | "title": "#Maroc : le stylo anti-pédophiles EAGLE d’AMESYS est moins bien configuré que les faux-lowers Twitter du roi Mohammed VI", |
@@ -331,6 +377,8 @@ | |||
331 | }, | 377 | }, |
332 | { | 378 | { |
333 | "is_archived": 1, | 379 | "is_archived": 1, |
380 | "created_at": "2016-09-08T11:55:58+0200", | ||
381 | "updated_at": "2016-09-08T11:57:16+0200", | ||
334 | "is_starred": 0, | 382 | "is_starred": 0, |
335 | "id": 3, | 383 | "id": 3, |
336 | "title": "Simple Cloud Infrastructure for Developers", | 384 | "title": "Simple Cloud Infrastructure for Developers", |
diff --git a/tests/Wallabag/UserBundle/Mailer/AuthCodeMailerTest.php b/tests/Wallabag/UserBundle/Mailer/AuthCodeMailerTest.php index f670c925..441d6519 100644 --- a/tests/Wallabag/UserBundle/Mailer/AuthCodeMailerTest.php +++ b/tests/Wallabag/UserBundle/Mailer/AuthCodeMailerTest.php | |||
@@ -37,7 +37,7 @@ class AuthCodeMailerTest extends \PHPUnit_Framework_TestCase | |||
37 | ); | 37 | ); |
38 | $this->mailer = new \Swift_Mailer($transport); | 38 | $this->mailer = new \Swift_Mailer($transport); |
39 | 39 | ||
40 | $twigTemplate = <<<TWIG | 40 | $twigTemplate = <<<'TWIG' |
41 | {% block subject %}subject{% endblock %} | 41 | {% block subject %}subject{% endblock %} |
42 | {% block body_html %}html body {{ code }}{% endblock %} | 42 | {% block body_html %}html body {{ code }}{% endblock %} |
43 | {% block body_text %}text body {{ support_url }}{% endblock %} | 43 | {% block body_text %}text body {{ support_url }}{% endblock %} |
diff --git a/var/SymfonyRequirements.php b/var/SymfonyRequirements.php index 0a5de546..7e7723af 100644 --- a/var/SymfonyRequirements.php +++ b/var/SymfonyRequirements.php | |||
@@ -168,6 +168,9 @@ class PhpIniRequirement extends Requirement | |||
168 | */ | 168 | */ |
169 | class RequirementCollection implements IteratorAggregate | 169 | class RequirementCollection implements IteratorAggregate |
170 | { | 170 | { |
171 | /** | ||
172 | * @var Requirement[] | ||
173 | */ | ||
171 | private $requirements = array(); | 174 | private $requirements = array(); |
172 | 175 | ||
173 | /** | 176 | /** |
@@ -265,7 +268,7 @@ class RequirementCollection implements IteratorAggregate | |||
265 | /** | 268 | /** |
266 | * Returns both requirements and recommendations. | 269 | * Returns both requirements and recommendations. |
267 | * | 270 | * |
268 | * @return array Array of Requirement instances | 271 | * @return Requirement[] |
269 | */ | 272 | */ |
270 | public function all() | 273 | public function all() |
271 | { | 274 | { |
@@ -275,7 +278,7 @@ class RequirementCollection implements IteratorAggregate | |||
275 | /** | 278 | /** |
276 | * Returns all mandatory requirements. | 279 | * Returns all mandatory requirements. |
277 | * | 280 | * |
278 | * @return array Array of Requirement instances | 281 | * @return Requirement[] |
279 | */ | 282 | */ |
280 | public function getRequirements() | 283 | public function getRequirements() |
281 | { | 284 | { |
@@ -292,7 +295,7 @@ class RequirementCollection implements IteratorAggregate | |||
292 | /** | 295 | /** |
293 | * Returns the mandatory requirements that were not met. | 296 | * Returns the mandatory requirements that were not met. |
294 | * | 297 | * |
295 | * @return array Array of Requirement instances | 298 | * @return Requirement[] |
296 | */ | 299 | */ |
297 | public function getFailedRequirements() | 300 | public function getFailedRequirements() |
298 | { | 301 | { |
@@ -309,7 +312,7 @@ class RequirementCollection implements IteratorAggregate | |||
309 | /** | 312 | /** |
310 | * Returns all optional recommendations. | 313 | * Returns all optional recommendations. |
311 | * | 314 | * |
312 | * @return array Array of Requirement instances | 315 | * @return Requirement[] |
313 | */ | 316 | */ |
314 | public function getRecommendations() | 317 | public function getRecommendations() |
315 | { | 318 | { |
@@ -326,7 +329,7 @@ class RequirementCollection implements IteratorAggregate | |||
326 | /** | 329 | /** |
327 | * Returns the recommendations that were not met. | 330 | * Returns the recommendations that were not met. |
328 | * | 331 | * |
329 | * @return array Array of Requirement instances | 332 | * @return Requirement[] |
330 | */ | 333 | */ |
331 | public function getFailedRecommendations() | 334 | public function getFailedRecommendations() |
332 | { | 335 | { |
@@ -376,7 +379,8 @@ class RequirementCollection implements IteratorAggregate | |||
376 | */ | 379 | */ |
377 | class SymfonyRequirements extends RequirementCollection | 380 | class SymfonyRequirements extends RequirementCollection |
378 | { | 381 | { |
379 | const REQUIRED_PHP_VERSION = '5.3.3'; | 382 | const LEGACY_REQUIRED_PHP_VERSION = '5.3.3'; |
383 | const REQUIRED_PHP_VERSION = '5.5.9'; | ||
380 | 384 | ||
381 | /** | 385 | /** |
382 | * Constructor that initializes the requirements. | 386 | * Constructor that initializes the requirements. |
@@ -386,16 +390,26 @@ class SymfonyRequirements extends RequirementCollection | |||
386 | /* mandatory requirements follow */ | 390 | /* mandatory requirements follow */ |
387 | 391 | ||
388 | $installedPhpVersion = phpversion(); | 392 | $installedPhpVersion = phpversion(); |
393 | $requiredPhpVersion = $this->getPhpRequiredVersion(); | ||
389 | 394 | ||
390 | $this->addRequirement( | 395 | $this->addRecommendation( |
391 | version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>='), | 396 | $requiredPhpVersion, |
392 | sprintf('PHP version must be at least %s (%s installed)', self::REQUIRED_PHP_VERSION, $installedPhpVersion), | 397 | 'Vendors should be installed in order to check all requirements.', |
393 | sprintf('You are running PHP version "<strong>%s</strong>", but Symfony needs at least PHP "<strong>%s</strong>" to run. | 398 | 'Run the <code>composer install</code> command.', |
394 | Before using Symfony, upgrade your PHP installation, preferably to the latest version.', | 399 | 'Run the "composer install" command.' |
395 | $installedPhpVersion, self::REQUIRED_PHP_VERSION), | ||
396 | sprintf('Install PHP %s or newer (installed version is %s)', self::REQUIRED_PHP_VERSION, $installedPhpVersion) | ||
397 | ); | 400 | ); |
398 | 401 | ||
402 | if (false !== $requiredPhpVersion) { | ||
403 | $this->addRequirement( | ||
404 | version_compare($installedPhpVersion, $requiredPhpVersion, '>='), | ||
405 | sprintf('PHP version must be at least %s (%s installed)', $requiredPhpVersion, $installedPhpVersion), | ||
406 | sprintf('You are running PHP version "<strong>%s</strong>", but Symfony needs at least PHP "<strong>%s</strong>" to run. | ||
407 | Before using Symfony, upgrade your PHP installation, preferably to the latest version.', | ||
408 | $installedPhpVersion, $requiredPhpVersion), | ||
409 | sprintf('Install PHP %s or newer (installed version is %s)', $requiredPhpVersion, $installedPhpVersion) | ||
410 | ); | ||
411 | } | ||
412 | |||
399 | $this->addRequirement( | 413 | $this->addRequirement( |
400 | version_compare($installedPhpVersion, '5.3.16', '!='), | 414 | version_compare($installedPhpVersion, '5.3.16', '!='), |
401 | 'PHP version must not be 5.3.16 as Symfony won\'t work properly with it', | 415 | 'PHP version must not be 5.3.16 as Symfony won\'t work properly with it', |
@@ -433,7 +447,7 @@ class SymfonyRequirements extends RequirementCollection | |||
433 | ); | 447 | ); |
434 | } | 448 | } |
435 | 449 | ||
436 | if (version_compare($installedPhpVersion, self::REQUIRED_PHP_VERSION, '>=')) { | 450 | if (false !== $requiredPhpVersion && version_compare($installedPhpVersion, $requiredPhpVersion, '>=')) { |
437 | $timezones = array(); | 451 | $timezones = array(); |
438 | foreach (DateTimeZone::listAbbreviations() as $abbreviations) { | 452 | foreach (DateTimeZone::listAbbreviations() as $abbreviations) { |
439 | foreach ($abbreviations as $abbreviation) { | 453 | foreach ($abbreviations as $abbreviation) { |
@@ -689,7 +703,7 @@ class SymfonyRequirements extends RequirementCollection | |||
689 | $this->addRecommendation( | 703 | $this->addRecommendation( |
690 | \Symfony\Component\Intl\Intl::getIcuDataVersion() === \Symfony\Component\Intl\Intl::getIcuVersion(), | 704 | \Symfony\Component\Intl\Intl::getIcuDataVersion() === \Symfony\Component\Intl\Intl::getIcuVersion(), |
691 | sprintf('intl ICU version installed on your system (%s) does not match the ICU data bundled with Symfony (%s)', \Symfony\Component\Intl\Intl::getIcuVersion(), \Symfony\Component\Intl\Intl::getIcuDataVersion()), | 705 | sprintf('intl ICU version installed on your system (%s) does not match the ICU data bundled with Symfony (%s)', \Symfony\Component\Intl\Intl::getIcuVersion(), \Symfony\Component\Intl\Intl::getIcuDataVersion()), |
692 | 'To avoid internationalization data incosistencies upgrade the symfony/intl component.' | 706 | 'To avoid internationalization data inconsistencies upgrade the symfony/intl component.' |
693 | ); | 707 | ); |
694 | } | 708 | } |
695 | } | 709 | } |
@@ -725,9 +739,9 @@ class SymfonyRequirements extends RequirementCollection | |||
725 | 739 | ||
726 | if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { | 740 | if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { |
727 | $this->addRecommendation( | 741 | $this->addRecommendation( |
728 | $this->getRealpathCacheSize() > 1000, | 742 | $this->getRealpathCacheSize() >= 5 * 1024 * 1024, |
729 | 'realpath_cache_size should be above 1024 in php.ini', | 743 | 'realpath_cache_size should be at least 5M in php.ini', |
730 | 'Set "<strong>realpath_cache_size</strong>" to e.g. "<strong>1024</strong>" in php.ini<a href="#phpini">*</a> to improve performance on windows.' | 744 | 'Setting "<strong>realpath_cache_size</strong>" to e.g. "<strong>5242880</strong>" or "<strong>5M</strong>" in php.ini<a href="#phpini">*</a> may improve performance on Windows significantly in some cases.' |
731 | ); | 745 | ); |
732 | } | 746 | } |
733 | 747 | ||
@@ -778,4 +792,28 @@ class SymfonyRequirements extends RequirementCollection | |||
778 | return (int) $size; | 792 | return (int) $size; |
779 | } | 793 | } |
780 | } | 794 | } |
795 | |||
796 | /** | ||
797 | * Defines PHP required version from Symfony version. | ||
798 | * | ||
799 | * @return string|false The PHP required version or false if it could not be guessed | ||
800 | */ | ||
801 | protected function getPhpRequiredVersion() | ||
802 | { | ||
803 | if (!file_exists($path = __DIR__.'/../composer.lock')) { | ||
804 | return false; | ||
805 | } | ||
806 | |||
807 | $composerLock = json_decode(file_get_contents($path), true); | ||
808 | foreach ($composerLock['packages'] as $package) { | ||
809 | $name = $package['name']; | ||
810 | if ('symfony/symfony' !== $name && 'symfony/http-kernel' !== $name) { | ||
811 | continue; | ||
812 | } | ||
813 | |||
814 | return (int) $package['version'][1] > 2 ? self::REQUIRED_PHP_VERSION : self::LEGACY_REQUIRED_PHP_VERSION; | ||
815 | } | ||
816 | |||
817 | return false; | ||
818 | } | ||
781 | } | 819 | } |