summaryrefslogtreecommitdiffstats
path: root/admin/survey/minify
diff options
context:
space:
mode:
Diffstat (limited to 'admin/survey/minify')
-rw-r--r--admin/survey/minify/.htaccess13
-rw-r--r--admin/survey/minify/.php_cs27
-rw-r--r--admin/survey/minify/.travis.yml42
-rw-r--r--admin/survey/minify/CHANGELOG.md176
-rw-r--r--admin/survey/minify/LICENSE.txt26
-rw-r--r--admin/survey/minify/README.md54
-rw-r--r--admin/survey/minify/UPGRADING.txt28
-rw-r--r--admin/survey/minify/bootstrap.php28
-rw-r--r--admin/survey/minify/builder/_index.js260
-rw-r--r--admin/survey/minify/builder/bm.js38
-rw-r--r--admin/survey/minify/builder/bm2.js15
-rw-r--r--admin/survey/minify/builder/index.php221
-rw-r--r--admin/survey/minify/builder/jquery-1.6.3.min.js4
-rw-r--r--admin/survey/minify/builder/ocCheck.php37
-rw-r--r--admin/survey/minify/builder/rewriteTest.js1
-rw-r--r--admin/survey/minify/builder/test.php43
-rw-r--r--admin/survey/minify/composer.json55
-rw-r--r--admin/survey/minify/composer.lock1829
-rw-r--r--admin/survey/minify/config-test.php10
-rw-r--r--admin/survey/minify/config.php204
-rw-r--r--admin/survey/minify/docs/AlternateFileLayouts.wiki.md30
-rw-r--r--admin/survey/minify/docs/BuilderApp.wiki.md9
-rw-r--r--admin/survey/minify/docs/CommonProblems.wiki.md132
-rw-r--r--admin/survey/minify/docs/ComponentClasses.wiki.md16
-rw-r--r--admin/survey/minify/docs/CookBook.wiki.md142
-rw-r--r--admin/survey/minify/docs/CustomServer.wiki.md108
-rw-r--r--admin/survey/minify/docs/CustomSource.wiki.md136
-rw-r--r--admin/survey/minify/docs/Debugging.wiki.md80
-rw-r--r--admin/survey/minify/docs/FAQ.wiki.md51
-rw-r--r--admin/survey/minify/docs/Install.wiki.md61
-rw-r--r--admin/survey/minify/docs/MinApp.wiki.md14
-rw-r--r--admin/survey/minify/docs/UriRewriting.wiki.md73
-rw-r--r--admin/survey/minify/docs/UserGuide.wiki.md129
-rw-r--r--admin/survey/minify/docs/old/HowItWorks.wiki.md31
-rw-r--r--admin/survey/minify/docs/old/HttpCaching.wiki.md63
-rw-r--r--admin/survey/minify/docs/old/ProjectGoals.wiki.md13
-rw-r--r--admin/survey/minify/docs/old/Security.wiki.md15
-rw-r--r--admin/survey/minify/docs/old/VersionTwo.wiki.md35
-rw-r--r--admin/survey/minify/example.index.php11
-rw-r--r--admin/survey/minify/groupsConfig.php328
-rw-r--r--admin/survey/minify/index.php13
-rw-r--r--admin/survey/minify/lib/HTTP/ConditionalGet.php376
-rw-r--r--admin/survey/minify/lib/HTTP/Encoder.php335
-rw-r--r--admin/survey/minify/lib/Minify.php758
-rw-r--r--admin/survey/minify/lib/Minify/App.php293
-rw-r--r--admin/survey/minify/lib/Minify/Build.php101
-rw-r--r--admin/survey/minify/lib/Minify/CSS.php98
-rw-r--r--admin/survey/minify/lib/Minify/CSS/Compressor.php275
-rw-r--r--admin/survey/minify/lib/Minify/CSS/UriRewriter.php358
-rw-r--r--admin/survey/minify/lib/Minify/CSSmin.php88
-rw-r--r--admin/survey/minify/lib/Minify/Cache/APC.php136
-rw-r--r--admin/survey/minify/lib/Minify/Cache/File.php183
-rw-r--r--admin/survey/minify/lib/Minify/Cache/Memcache.php141
-rw-r--r--admin/survey/minify/lib/Minify/Cache/Null.php67
-rw-r--r--admin/survey/minify/lib/Minify/Cache/WinCache.php139
-rw-r--r--admin/survey/minify/lib/Minify/Cache/XCache.php130
-rw-r--r--admin/survey/minify/lib/Minify/Cache/ZendPlatform.php129
-rw-r--r--admin/survey/minify/lib/Minify/CacheInterface.php58
-rw-r--r--admin/survey/minify/lib/Minify/ClosureCompiler.php240
-rw-r--r--admin/survey/minify/lib/Minify/CommentPreserver.php87
-rw-r--r--admin/survey/minify/lib/Minify/Config.php78
-rw-r--r--admin/survey/minify/lib/Minify/Controller/Base.php81
-rw-r--r--admin/survey/minify/lib/Minify/Controller/Files.php71
-rw-r--r--admin/survey/minify/lib/Minify/Controller/Groups.php76
-rw-r--r--admin/survey/minify/lib/Minify/Controller/MinApp.php196
-rw-r--r--admin/survey/minify/lib/Minify/Controller/Page.php69
-rw-r--r--admin/survey/minify/lib/Minify/ControllerInterface.php22
-rw-r--r--admin/survey/minify/lib/Minify/DebugDetector.php30
-rw-r--r--admin/survey/minify/lib/Minify/Env.php127
-rw-r--r--admin/survey/minify/lib/Minify/HTML.php258
-rw-r--r--admin/survey/minify/lib/Minify/HTML/Helper.php250
-rw-r--r--admin/survey/minify/lib/Minify/ImportProcessor.php217
-rw-r--r--admin/survey/minify/lib/Minify/JS/ClosureCompiler.php237
-rw-r--r--admin/survey/minify/lib/Minify/JS/JShrink.php48
-rw-r--r--admin/survey/minify/lib/Minify/LessCssSource.php128
-rw-r--r--admin/survey/minify/lib/Minify/Lines.php209
-rw-r--r--admin/survey/minify/lib/Minify/Logger/LegacyHandler.php24
-rw-r--r--admin/survey/minify/lib/Minify/NailgunClosureCompiler.php113
-rw-r--r--admin/survey/minify/lib/Minify/Packer.php31
-rw-r--r--admin/survey/minify/lib/Minify/ScssCssSource.php176
-rw-r--r--admin/survey/minify/lib/Minify/ServeConfiguration.php71
-rw-r--r--admin/survey/minify/lib/Minify/Source.php219
-rw-r--r--admin/survey/minify/lib/Minify/Source/Factory.php197
-rw-r--r--admin/survey/minify/lib/Minify/Source/FactoryException.php5
-rw-r--r--admin/survey/minify/lib/Minify/SourceInterface.php82
-rw-r--r--admin/survey/minify/lib/Minify/SourceSet.php31
-rw-r--r--admin/survey/minify/lib/Minify/YUICompressor.php157
-rw-r--r--admin/survey/minify/lib/MrClay/Cli.php393
-rw-r--r--admin/survey/minify/lib/MrClay/Cli/Arg.php189
-rw-r--r--admin/survey/minify/phpunit.xml38
-rw-r--r--admin/survey/minify/quick-test.css30
-rw-r--r--admin/survey/minify/quick-test.js74
-rw-r--r--admin/survey/minify/quick-test.less12
-rw-r--r--admin/survey/minify/quick-testinc.less25
-rw-r--r--admin/survey/minify/server-info.php153
-rw-r--r--admin/survey/minify/static/.htaccess40
-rw-r--r--admin/survey/minify/static/README.md85
-rw-r--r--admin/survey/minify/static/gen.php127
-rw-r--r--admin/survey/minify/static/lib.php68
-rw-r--r--admin/survey/minify/utils.php78
-rw-r--r--admin/survey/minify/vendor/autoload.php7
-rw-r--r--admin/survey/minify/vendor/bin/cssmin17
-rw-r--r--admin/survey/minify/vendor/bin/cssmin.bat4
-rw-r--r--admin/survey/minify/vendor/composer/ClassLoader.php445
-rw-r--r--admin/survey/minify/vendor/composer/LICENSE21
-rw-r--r--admin/survey/minify/vendor/composer/autoload_classmap.php59
-rw-r--r--admin/survey/minify/vendor/composer/autoload_namespaces.php12
-rw-r--r--admin/survey/minify/vendor/composer/autoload_psr4.php15
-rw-r--r--admin/survey/minify/vendor/composer/autoload_real.php52
-rw-r--r--admin/survey/minify/vendor/composer/autoload_static.php142
-rw-r--r--admin/survey/minify/vendor/composer/installed.json485
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/.gitignore3
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/LICENSE20
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/README.md148
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/composer.json15
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/docs/ContainerInterface-meta.md114
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/docs/ContainerInterface.md158
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/docs/Delegate-lookup-meta.md259
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/docs/Delegate-lookup.md60
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/docs/images/interoperating_containers.pngbin0 -> 25738 bytes
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/docs/images/priority.pngbin0 -> 16252 bytes
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/docs/images/side_by_side_containers.pngbin0 -> 16265 bytes
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/src/Interop/Container/ContainerInterface.php15
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/src/Interop/Container/Exception/ContainerException.php15
-rw-r--r--admin/survey/minify/vendor/container-interop/container-interop/src/Interop/Container/Exception/NotFoundException.php15
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/.gitignore3
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/.travis.yml11
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/LICENSE9
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/README.md102
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/composer.json33
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/phpunit.xml18
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/BasicUser.php63
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/DigestUser.php134
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/Facades/Httpauth.php13
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/Httpauth.php159
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/HttpauthServiceProvider.php82
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/HttpauthServiceProviderLaravel4.php30
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/HttpauthServiceProviderLaravel5.php37
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/UserInterface.php22
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/src/config/.gitkeep0
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/src/config/config.php49
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/tests/.gitkeep0
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/tests/BasicUserTest.php30
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/tests/DigestUserTest.php12
-rw-r--r--admin/survey/minify/vendor/intervention/httpauth/tests/HttpauthTest.php49
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/.php_cs59
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/CHANGELOG.md342
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/LICENSE19
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/README.md95
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/composer.json66
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/doc/01-usage.md231
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/doc/02-handlers-formatters-processors.md157
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/doc/03-utilities.md13
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/doc/04-extending.md76
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/doc/sockets.md39
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/phpunit.xml.dist19
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/ErrorHandler.php230
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php78
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php89
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php116
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php85
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php36
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php138
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php141
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php208
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php179
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php47
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php166
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php105
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php297
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php48
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php113
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php186
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php66
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php101
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php148
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php230
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php117
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php211
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php72
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php151
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php57
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php169
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php45
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php107
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php128
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php82
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php140
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php28
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php59
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php34
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php163
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php195
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php126
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php127
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php73
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php104
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php90
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php108
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php350
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php69
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php55
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php102
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php67
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php68
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php21
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php59
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php185
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php202
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php45
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php242
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php56
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php185
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php232
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php97
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php132
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php178
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php82
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php294
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php215
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php115
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php80
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php346
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php176
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php99
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php67
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php56
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php103
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php154
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php61
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php95
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Logger.php700
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php64
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php112
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php35
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php63
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php35
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php63
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php31
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php48
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php44
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php46
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php113
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/src/Monolog/Registry.php134
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/ErrorHandlerTest.php31
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/ChromePHPFormatterTest.php158
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/ElasticaFormatterTest.php79
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/FlowdockFormatterTest.php55
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/FluentdFormatterTest.php62
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/GelfMessageFormatterTest.php258
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/JsonFormatterTest.php183
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/LineFormatterTest.php222
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/LogglyFormatterTest.php40
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/LogstashFormatterTest.php333
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/MongoDBFormatterTest.php262
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/NormalizerFormatterTest.php423
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/ScalarFormatterTest.php110
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/WildfireFormatterTest.php142
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/AbstractHandlerTest.php115
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/AbstractProcessingHandlerTest.php80
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/AmqpHandlerTest.php136
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/BrowserConsoleHandlerTest.php130
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/BufferHandlerTest.php158
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ChromePHPHandlerTest.php156
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/CouchDBHandlerTest.php31
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/DeduplicationHandlerTest.php165
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/DoctrineCouchDBHandlerTest.php52
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/DynamoDbHandlerTest.php82
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ElasticSearchHandlerTest.php239
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ErrorLogHandlerTest.php66
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FilterHandlerTest.php170
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FingersCrossedHandlerTest.php279
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FirePHPHandlerTest.php96
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/Fixtures/.gitkeep0
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FleepHookHandlerTest.php85
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FlowdockHandlerTest.php88
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GelfHandlerLegacyTest.php95
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GelfHandlerTest.php117
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GelfMockMessagePublisher.php25
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GroupHandlerTest.php112
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/HandlerWrapperTest.php130
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/HipChatHandlerTest.php279
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/LogEntriesHandlerTest.php84
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/MailHandlerTest.php75
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/MockRavenClient.php27
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/MongoDBHandlerTest.php65
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/NativeMailerHandlerTest.php111
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/NewRelicHandlerTest.php200
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/NullHandlerTest.php33
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/PHPConsoleHandlerTest.php273
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/PsrHandlerTest.php50
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/PushoverHandlerTest.php141
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RavenHandlerTest.php255
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RedisHandlerTest.php127
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RollbarHandlerTest.php84
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RotatingFileHandlerTest.php211
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SamplingHandlerTest.php33
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/Slack/SlackRecordTest.php387
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SlackHandlerTest.php155
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SlackWebhookHandlerTest.php107
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SlackbotHandlerTest.php47
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SocketHandlerTest.php309
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/StreamHandlerTest.php184
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SwiftMailerHandlerTest.php113
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SyslogHandlerTest.php44
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SyslogUdpHandlerTest.php76
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/TestHandlerTest.php70
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/UdpSocketTest.php64
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/WhatFailureGroupHandlerTest.php121
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ZendMonitorHandlerTest.php69
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/LoggerTest.php548
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/GitProcessorTest.php29
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/IntrospectionProcessorTest.php123
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/MemoryPeakUsageProcessorTest.php42
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/MemoryUsageProcessorTest.php42
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/MercurialProcessorTest.php41
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/ProcessIdProcessorTest.php30
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/PsrLogMessageProcessorTest.php43
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/TagProcessorTest.php49
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/UidProcessorTest.php33
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/WebProcessorTest.php113
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/PsrLogCompatTest.php47
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/RegistryTest.php153
-rw-r--r--admin/survey/minify/vendor/monolog/monolog/tests/Monolog/TestCase.php58
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/.editorconfig19
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/.gitignore5
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/HISTORY.txt24
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/LICENSE.txt26
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/composer.json34
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/phpunit.xml.dist27
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/JSMin.php454
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedCommentException.php6
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedRegExpException.php6
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedStringException.php6
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/before.js27
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/condcomm.js6
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/issue144.js1
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/issue256.js2
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/keyword-regex.js1
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/not-regexp.js1
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/regexes.js2
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/starts-regex.js1
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/token-regexp.js1
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/before.js66
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/condcomm.js14
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/issue144.js9
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/issue256.js3
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/keyword-regex.js3
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/not-regexp.js3
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/regexes.js24
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/starts-regex.js3
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/token-regexp.js3
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/Tests/JSMin/JSMinTest.php168
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/tests/bootstrap.php1
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/web/README.txt2
-rw-r--r--admin/survey/minify/vendor/mrclay/jsmin-php/web/index.php92
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/.gitignore21
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/.travis.yml30
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/LICENSE19
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/README.md165
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/composer.json27
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/phpunit.xml27
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/scripts/example-pimple.php75
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/scripts/example.php71
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/scripts/pizza.php55
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/src/Props/BadMethodCallException.php9
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/src/Props/Container.php249
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/src/Props/FactoryUncallableException.php9
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/src/Props/NotFoundException.php9
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/src/Props/Pimple.php56
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/src/Props/ValueUnresolvableException.php9
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/test/Props/ContainerTest.php324
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/Invokable.php38
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/NonInvokable.php34
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/PimpleTest.php452
-rw-r--r--admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/Service.php38
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/.gitignore3
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/.travis.yml40
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/CHANGELOG59
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/LICENSE19
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/README.rst326
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/composer.json29
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/.gitignore30
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/README.md12
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/config.m463
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/config.w3213
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/php_pimple.h137
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/pimple.c1114
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/pimple_compat.h81
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/001.phpt45
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/002.phpt15
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/003.phpt16
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/004.phpt30
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/005.phpt27
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/006.phpt51
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/007.phpt22
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/008.phpt29
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/009.phpt13
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/010.phpt45
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/011.phpt19
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/012.phpt28
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/013.phpt33
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/014.phpt30
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/015.phpt17
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/016.phpt24
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/017.phpt17
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt17
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/018.phpt23
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/019.phpt18
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/bench.phpb51
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb25
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/phpunit.xml.dist14
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Container.php298
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php38
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php45
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php45
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php45
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Psr11/Container.php55
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php75
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/ServiceIterator.php69
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php46
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php38
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php34
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php54
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php35
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php76
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php589
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php77
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php134
-rw-r--r--admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php52
-rw-r--r--admin/survey/minify/vendor/psr/container/.gitignore3
-rw-r--r--admin/survey/minify/vendor/psr/container/LICENSE21
-rw-r--r--admin/survey/minify/vendor/psr/container/README.md5
-rw-r--r--admin/survey/minify/vendor/psr/container/composer.json27
-rw-r--r--admin/survey/minify/vendor/psr/container/src/ContainerExceptionInterface.php13
-rw-r--r--admin/survey/minify/vendor/psr/container/src/ContainerInterface.php37
-rw-r--r--admin/survey/minify/vendor/psr/container/src/NotFoundExceptionInterface.php13
-rw-r--r--admin/survey/minify/vendor/psr/log/.gitignore1
-rw-r--r--admin/survey/minify/vendor/psr/log/LICENSE19
-rw-r--r--admin/survey/minify/vendor/psr/log/Psr/Log/AbstractLogger.php128
-rw-r--r--admin/survey/minify/vendor/psr/log/Psr/Log/InvalidArgumentException.php7
-rw-r--r--admin/survey/minify/vendor/psr/log/Psr/Log/LogLevel.php18
-rw-r--r--admin/survey/minify/vendor/psr/log/Psr/Log/LoggerAwareInterface.php18
-rw-r--r--admin/survey/minify/vendor/psr/log/Psr/Log/LoggerAwareTrait.php26
-rw-r--r--admin/survey/minify/vendor/psr/log/Psr/Log/LoggerInterface.php123
-rw-r--r--admin/survey/minify/vendor/psr/log/Psr/Log/LoggerTrait.php140
-rw-r--r--admin/survey/minify/vendor/psr/log/Psr/Log/NullLogger.php28
-rw-r--r--admin/survey/minify/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php140
-rw-r--r--admin/survey/minify/vendor/psr/log/README.md45
-rw-r--r--admin/survey/minify/vendor/psr/log/composer.json26
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/.gitignore5
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/README.md461
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/composer.json38
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/cssmin37
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/gui/index.php209
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/gui/scripts.js104
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/gui/styles.css68
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/bootstrap/css/bootstrap.min.css339
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/bootstrap/js/bootstrap.min.js7
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/jquery-1.12.4.min.js5
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/less-1.7.5.min.js16
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/phpunit.xml15
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/src/Colors.php155
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/src/Command.php223
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/src/Minifier.php895
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/src/Utils.php149
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/FineDiff/Render/Cli.php27
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/MinifierTest.php312
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/bin/runner77
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/at-rules.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/attribute-selectors.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/background-position.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/background.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/bootstrap.css15
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/border.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/bulma.css4
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/calc.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/colors.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/comments.css28
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-doublequotes.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-eof.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-linebreakindata.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-noquotes.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-singlequotes.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-twourls.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-dbquote-font.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-inline-svg.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-nonbase64-doublequotes.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-nonbase64-noquotes.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-nonbase64-singlequotes.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-noquote-multiline-font.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-doublequotes.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-noquotes.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-singlequotes.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-yuiapp.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-singlequote-font.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/empty-rules.css5
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/flex.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/font-weight.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/foundation.css3
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/important-comments-remove.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/important.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/kube.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/linebreak-position.css6
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/lowercasing.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/materialize.css22
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/mui.css2
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/numbers.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/old-ie-filters.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/preserve-case.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/pseudo-classes.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/pseudo-elements.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/pure.css12
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/semicolons.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/shortenable-properties.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/sourcemap-comment-preserve.css2
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/sourcemap-comment-remove.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/star-underscore-hacks.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/strings.css3
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/text-shadow.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/unit-ms.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/webkit-transform-origin.css1
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/at-rules.css209
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/attribute-selectors.css33
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/background-position.css10
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/background.css15
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/bootstrap.css7345
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/border.css15
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/bulma.css6630
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/calc.css17
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/colors.css107
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/comments.css55
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-doublequotes.css23
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-eof.css10
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-linebreakindata.css34
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-noquotes.css26
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-singlequotes.css23
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-twourls.css27
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-dbquote-font.css30
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-inline-svg.css6
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-nonbase64-doublequotes.css13
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-nonbase64-noquotes.css11
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-nonbase64-singlequotes.css15
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-noquote-multiline-font.css31
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-doublequotes.css90
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-noquotes.css90
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-singlequotes.css90
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-yuiapp.css106
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-singlequote-font.css30
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/empty-rules.css39
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/flex.css2
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/font-weight.css2
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/foundation.css4398
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/important.css6
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/kube.css2156
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/linebreak-position.css16
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/lowercasing.css77
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/materialize.css8952
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/mui.css2650
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/numbers.css67
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/old-ie-filters.css28
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/preserve-case.css15
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/pseudo-classes.css6
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/pseudo-elements.css35
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/pure.css1508
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/semicolons.css7
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/shortenable-properties.css33
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/sourcemap-comment.css5
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/star-underscore-hacks.css6
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/strings.css28
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/text-shadow.css4
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/unit-ms.css12
-rw-r--r--admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/webkit-transform-origin.css2
573 files changed, 84606 insertions, 0 deletions
diff --git a/admin/survey/minify/.htaccess b/admin/survey/minify/.htaccess
new file mode 100644
index 0000000..06c1161
--- /dev/null
+++ b/admin/survey/minify/.htaccess
@@ -0,0 +1,13 @@
+<IfModule mod_rewrite.c>
+RewriteEngine on
+
+# You may need RewriteBase on some servers
+#RewriteBase /min
+
+# rewrite URLs like "/min/f=..." to "/min/?f=..."
+RewriteRule ^([bfg]=.*) index.php?$1 [L,NE]
+</IfModule>
+<IfModule mod_env.c>
+# In case AddOutputFilterByType has been added
+SetEnv no-gzip
+</IfModule>
diff --git a/admin/survey/minify/.php_cs b/admin/survey/minify/.php_cs
new file mode 100644
index 0000000..d0e6de4
--- /dev/null
+++ b/admin/survey/minify/.php_cs
@@ -0,0 +1,27 @@
+<?php
+
+$finder = Symfony\CS\Finder\DefaultFinder::create()
+ ->in(__DIR__ . '/lib')
+;
+
+return Symfony\CS\Config\Config::create()
+ ->level(Symfony\CS\FixerInterface::PSR2_LEVEL)
+ ->setUsingCache(true)
+ ->fixers(array(
+ 'linefeed',
+ 'trailing_spaces',
+ 'unused_use',
+ 'short_tag',
+ 'return',
+ 'visibility',
+ 'php_closing_tag',
+ 'extra_empty_lines',
+ 'function_declaration',
+ 'include',
+ 'controls_spaces',
+ 'elseif',
+ '-eof_ending',
+ '-method_argument_space',
+ ))
+ ->finder($finder)
+;
diff --git a/admin/survey/minify/.travis.yml b/admin/survey/minify/.travis.yml
new file mode 100644
index 0000000..a8a35cd
--- /dev/null
+++ b/admin/survey/minify/.travis.yml
@@ -0,0 +1,42 @@
+language: php
+sudo: false
+dist: trusty
+
+jobs:
+ fast_finish: true
+ allow_failures:
+ - php: "hhvm"
+ include:
+ - php: "5.3"
+ dist: precise
+ - php: "5.4"
+ - php: "5.5"
+ - php: "5.6"
+ - php: "7.0"
+ - php: "7.1"
+ - php: "7.2"
+ - php: "nightly"
+ - php: "hhvm"
+
+env:
+ - CLOSURE_VERSION: 20161024
+
+services:
+ - memcached
+
+cache:
+ directories:
+ - $HOME/.composer/cache
+ - vendor
+
+install:
+ - composer update --no-interaction --prefer-source
+
+before_script:
+ - tests/dl-closure.sh
+
+script:
+ - composer validate
+ - phpunit --verbose
+
+# vim:ts=2:sw=2:et
diff --git a/admin/survey/minify/CHANGELOG.md b/admin/survey/minify/CHANGELOG.md
new file mode 100644
index 0000000..4f5d424
--- /dev/null
+++ b/admin/survey/minify/CHANGELOG.md
@@ -0,0 +1,176 @@
+## Version 3.0.3 (2017-11-03)
+
+* Fix closure-compiler's error "redirection limit reached". #618, #619
+
+## Version 3.0.2 (2017-09-14)
+
+* Fixes syntax error in Groups controller, #613
+* Better-maintained lessphp fork, #610
+* No longer corrupts some chars in some environments, #608
+
+## Version 3.0.1 (2017-06-09)
+
+* Update CSSmin to v4, #599, #590
+
+## Version 3.0.0 (2017-04-03)
+* Improved CSS minification via Túbal Martín's CSSMin
+* Easier error identification (just see error_log)
+* Adds feature to serve static files directly
+* Adds config option for simply concatenating files
+* Adds config option for altering creation of Minify/MinApp objects
+* Missing spec no longer redirects, instead links to docs
+* Installation requires use of Composer to install dependencies
+* Minify::VERSION is an int that tracks the major version number
+* BREAKING: The project root is now what gets deployed as `min`
+* BREAKING: Removes JSMin
+* BREAKING: Removes JSMin+ (unmaintained, high memory usage)
+* BREAKING: Removes DooDigestAuth
+* BREAKING: Removes Minify_Loader (uses Composer)
+* BREAKING: Removes Minify_Logger (uses Monolog)
+* BREAKING: Removes `$min_libPath` option
+* BREAKING: The Minify, source, and controller components have changed APIs
+
+## Version 2.3.0 (2016-03-11)
+* Adds `$min_concatOnly` option to just concatenate files
+* Deprecates use of Minify_Loader
+* Deprecates use of Minify_Logger
+* Deprecates use of JSMinPlus
+* Deprecates use of FirePHP
+* Deprecates use of DooDigestAuth
+
+## Version 2.2.1 (2014-10-30)
+* Builder styled with Bootstrap (thanks to help from acidvertigo)
+* Update CSSmin to v.2.4.8
+* Added WinCache
+* URLs with spaces properly rewritten
+
+## Version 2.2.0 (2014-03-12)
+* Fix handling of RegEx in certain situations in JSMin
+ * Thanks to Vovan-VE for reporting this
+* Update composer.json with support info
+* Add ability to set ClosureCompiler URL
+ * Thanks Elan Ruusamäe for the pull request
+* Better report of temp directory errors
+ * Also thanks to Elan Ruusamäe for anatoher pull request
+* Updated CSSmin and added Minify_CSSmin wrapper
+* Fix windows issue associated with long cache filenames
+* Fix issue with web-based tool
+* Fix bug in JSMin exceptions
+* Fix "about:blank" bug in CSS_UriRewriter
+* Cite is no longer a block element in HTML minification
+* Allow for definition of custom config locations outside of the min directory
+ * Thanks Sam Bauers for the pull request
+* Allow option for overriding the maximum byte size POST limit for ClosureCompiler and other additions
+ * Thanks Joscha Feth for the code
+* Fixes to file-relative URL identification in UriRewriter
+* Allow far-future expiration and file versioning with the "v" querystirng parameter in addition to existing method
+* Lots of general code tidy ups
+
+## Version 2.1.7 (2013-07-23)
+* Fixes arbitrary file inclusion vulnerability on some systems
+ * Thanks to Matt Mecham for reporting this
+
+## Version 2.1.6 (2013-07-19)
+* JSMin fixes
+* Prevents some Closure Compiler API failures
+* Uses autoloading for all class loading
+* Multiple group support in HTML Helper
+* Cache adaptor for XCache
+* Allow setting stack-size in YUI Compressor wrapper
+* Adds jsCleanComments option to HTML minifier
+* Upgrades CSSmin
+* CLI script more portable
+* Adds composer.json
+
+## Version 2.1.5 (2012-03-10)
+* Removed XSS vulnerability
+* Disabled builder by default
+* command line tools to minify and rewrite URIs in CSS
+* upgrade (optional) JSMin+ library
+* more efficient JS minification when using CC/YUIC
+* Closure Compiler uses cURL when allow\_url\_fopen is off
+* Missing file notices when using groups
+
+## Version 2.1.4b (2010-07-10)
+* Option to minify JS with Closure Compiler API w/ JSMin failover
+* Cookie/bookmarklet-based debug mode. No HTML editing!
+* Allows 1 file to be missing w/o complete failure
+* Combine multiple groups and files in single URI
+* More useful HTML helpers for writing versioned URIs
+* More detailed error logging, including minifier exceptions
+* Builder offers more helpful messages/PHP environment warnings
+* Bypass minification based on filename pattern. e.g. foo.min.js / foo-min.css
+* JSMin won't choke on common Closure compiler syntaxes (`i+ ++j`)
+* Better caching in IE6
+* Cache ids are influenced by group/file names
+* Debug mode for Javascript doesn't break on common XPath strings (Prototype 1.6)
+* Removed annoying maxFiles limit
+* mbstring.func\_overload usage is safer
+
+## Version 2.1.3 (2009-06-30)
+* CSS fixes
+ * A few URI rewriting bugs fixed
+ * comment/whitespace removal no longer breaks some values
+ * IE6 [pseudo-element selector bug](http://www.crankygeek.com/ie6pebug/) no longer triggered
+* HTTP fixes
+ * Proper Expires handling in webkit (dropped "must-revalidate", which triggered a [webkit bug](http://mrclay.org/index.php/2009/02/24/safari-4-beta-cache-controlmust-revalidate-bug/))
+ * ETag generation now valid ([must be unique when gzipped](https://issues.apache.org/bugzilla/show_bug.cgi?id=39727))
+ * Vary header always sent when Accept-Encoding is sniffed
+ * Dropped deflate encoding, since browser and proxy support [could be buggy](http://stackoverflow.com/questions/883841/).
+* File cache now works w/o setting `$min_cachePath`
+* No more 5.3 deprecation warnings: `split()` removed
+* API: Can set contentType Minify\_Source objects (fixes an annoying [caveat](http://groups.google.com/group/minify/msg/8446d32ee99a4961))
+* [Resolved Issue list](http://code.google.com/p/minify/issues/list?can=1&q=label%3ARelease-2.1.2%20status%3AVerified)
+
+## Version 2.1.2 (2009-03-04)
+* Javascript fixes
+ * Debug mode no longer confused by `*/*` in strings/RegExps (jQuery)
+ * quote characters inside RegExp literals no longer cause exception
+ * files ending in single-line comments no longer cause code loss
+* CSS: data: URLs no longer mangled
+* Optional error logging to Firefox's FirePHP extension
+* Unit tests to check for common DOCUMENT\_ROOT problems
+ * DOCUMENT\_ROOT no longer overwritten on IIS servers
+* Builder app doesn't fail on systems without gzdeflate()
+* APC caching class included
+
+## Version 2.1.1 (2008-10-19)
+* Bug fix release
+* Detection and workarounds for zlib.output\_compression and non-PHP encoding modules
+* Zlib not required (mod\_rewrite, et.al., can still be used for encoding)
+* HTML : More IE conditional comments preserved
+* Minify\_groupUri() utility fixed
+
+## Version 2.1.0 (2008-09-18)
+* "min" default application for quick deployment
+* Minify URI Builder app & bookmarklet for quickly creating minify URIs
+* Relative URIs in CSS file are fixed automatically by default
+* "debug" mode for revealing original line #s in combined files
+* Better IIS support
+* Improved minifier classes:
+ * JS: preserves IE conditional comments
+ * CSS: smaller output, preserves more hacks and valid CSS syntax, shorter line lengths, other bug fixes
+ * HTML: smaller output, shorter line lengths, other bug fixes
+* Default Cache-Control: max-age of 30 minutes
+* Conditional GETs supported even when max-age sent
+* Experimental memcache cache class (default is files)
+* Minify\_Cache\_File has flock()s (by default)
+* Workaround for Windows mtime reporting bug
+
+
+## Version 2.0.0 (2008-05-22)
+* Complete code overhaul. Minify is now a PEAR-style class and toolkit for building customized minifying file servers.
+* Content-Encoding: deflate/gzip/compress, based on request headers
+* Expanded CSS and HTML minifiers with test cases
+* Easily plug-in 3rd-party minifiers (like Packer)
+* Plug-able front end controller allows changing the way files are chosen
+* Compression & encoding modules lazy-loaded as needed (304 responses use minimal code)
+* Separate utility classes for HTTP encoding and cache control
+
+## Version 1.0.1 (2007-05-05)
+* Fixed various problems resolving pathnames when hosted on an NFS mount.
+* Fixed 'undefined constant' notice.
+* Replaced old JSMin library with a much faster custom implementation.
+
+## Version 1.0.0 (2007-05-02)
+* First release.
diff --git a/admin/survey/minify/LICENSE.txt b/admin/survey/minify/LICENSE.txt
new file mode 100644
index 0000000..d88c1b3
--- /dev/null
+++ b/admin/survey/minify/LICENSE.txt
@@ -0,0 +1,26 @@
+Copyright (c) 2008 Ryan Grove <ryan@wonko.com>
+Copyright (c) 2008 Steve Clay <steve@mrclay.org>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of this project nor the names of its contributors may be
+ used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/admin/survey/minify/README.md b/admin/survey/minify/README.md
new file mode 100644
index 0000000..488e0c8
--- /dev/null
+++ b/admin/survey/minify/README.md
@@ -0,0 +1,54 @@
+# Welcome to Minify!
+
+Minify is an HTTP server for JS and CSS assets. It compresses and combines files
+and serves it with appropriate headers, allowing conditional GET or long-Expires.
+
+| *Before* | ![7 requests](http://mrclay.org/wp-content/uploads/2008/09/fiddler_before.png) |
+|----------|-----------------------------------------------------------------|
+| *After* | ![2 requests](http://mrclay.org/wp-content/uploads/2008/09/fiddler_after.png) |
+
+The stats above are from a [brief walkthrough](http://mrclay.org/index.php/2008/09/19/minify-21-on-mrclayorg/) which shows how easy it is to set up Minify on an existing site. It eliminated 5 HTTP requests and reduced JS/CSS bandwidth by 70%.
+
+Relative URLs in CSS files are rewritten to compensate for being served from a different directory.
+
+## Static file serving
+
+Version 3 allows [serving files directly from the filesystem](static/README.md) for much better performance. We encourage you to try this feature.
+
+## Support
+
+Post to the [Google Group](http://groups.google.com/group/minify).
+
+## Installation
+
+See the [install guide](docs/Install.wiki.md).
+
+## Configuration & Usage
+
+(Using 2.x? [Here are the 2.x docs](https://github.com/mrclay/minify/tree/2.x/docs).)
+
+See the [user guide](docs/UserGuide.wiki.md).
+
+Minify also comes with a [URI Builder application](docs/BuilderApp.wiki.md) that can help you write URLs
+for use with Minify or configure groups of files.
+
+See the [cookbook](docs/CookBook.wiki.md) for more advanced options for minification.
+
+More [docs are available](docs).
+
+## Unit Testing
+
+1. Install dev deps via Composer: `composer install`
+1. `composer test` or `phpunit`
+
+## Warnings
+
+* Minify is designed for efficiency, but, for very high traffic sites, it will probably serve files slower than your HTTPd due to the CGI overhead of PHP. See the [FAQ](docs/FAQ.wiki.md#how-fast-is-it) and [CookBook](docs/CookBook.wiki.md) for more info.
+* If you combine a lot of CSS, watch out for [IE's 4096 selectors-per-file limit](http://stackoverflow.com/a/9906889/3779), affects IE 6 through 9.
+* Minify *should* work fine with files encoded in UTF-8 or other 8-bit encodings like ISO 8859/Windows-1252. By default Minify appends ";charset=utf-8" to the Content-Type headers it sends.
+
+## Acknowledgments
+
+Minify was inspired by [jscsscomp](http://code.google.com/p/jscsscomp/) by Maxim Martynyuk and by the article [Supercharged JavaScript](http://www.hunlock.com/blogs/Supercharged_Javascript) by Patrick Hunlock.
+
+The [JSMin library](http://www.crockford.com/javascript/jsmin.html) used for JavaScript minification was originally written by Douglas Crockford and was [ported to PHP](https://github.com/mrclay/jsmin-php) by Ryan Grove specifically for use in Minify.
diff --git a/admin/survey/minify/UPGRADING.txt b/admin/survey/minify/UPGRADING.txt
new file mode 100644
index 0000000..5be79b7
--- /dev/null
+++ b/admin/survey/minify/UPGRADING.txt
@@ -0,0 +1,28 @@
+Minify Upgrade Guide
+
+UPGRADING FROM 2.1.*
+
+1. Rename the following files:
+
+ /min/config.php --> /min/old_config.php
+ /min/groupsConfig.php --> /min/old_groupsConfig.php
+
+2. Overwrite all files in /min with those from this zip.
+
+3. Delete /min/groupsConfig.php
+
+4. Rename /min/old_groupsConfig.php --> /min/groupsConfig.php
+
+5. Merge your settings in old_config.php into config.php.
+
+6. (optional) Delete /min/old_config.php.
+
+
+INSTALLING FRESH
+
+See README.txt for instructions on installing this app for the first time.
+
+
+SUPPORT
+
+Send a message to http://groups.google.com/group/minify \ No newline at end of file
diff --git a/admin/survey/minify/bootstrap.php b/admin/survey/minify/bootstrap.php
new file mode 100644
index 0000000..4812aea
--- /dev/null
+++ b/admin/survey/minify/bootstrap.php
@@ -0,0 +1,28 @@
+<?php
+/**
+ * Sets up autoloading and returns the Minify\App
+ */
+
+call_user_func(function () {
+
+ /*if (is_dir(__DIR__ . '/../../../vendor')) {
+ // Used as a composer library
+ $vendorDir = __DIR__ . '/../../../vendor';
+ } else {
+ $vendorDir = __DIR__ . '/vendor';
+ }*/
+ // Ker imamo drug vendor v rootu
+ $vendorDir = __DIR__ . '/vendor';
+
+ $file = $vendorDir . '/autoload.php';
+ if (!is_file($file)) {
+ echo 'You must set up the project dependencies, run the following commands:'.PHP_EOL.
+ 'curl -sS https://getcomposer.org/installer | php'.PHP_EOL.
+ 'php composer.phar install'.PHP_EOL;
+ exit(1);
+ }
+
+ require $file;
+});
+
+return new \Minify\App(__DIR__);
diff --git a/admin/survey/minify/builder/_index.js b/admin/survey/minify/builder/_index.js
new file mode 100644
index 0000000..24d70b3
--- /dev/null
+++ b/admin/survey/minify/builder/_index.js
@@ -0,0 +1,260 @@
+/*!
+ * Minify URI Builder
+ */
+var MUB = {
+ _uid : 0,
+ _minRoot : '/min/?',
+ checkRewrite : function () {
+ var testUri = location.pathname.replace(/\/[^\/]*$/, '/rewriteTest.js').substr(1);
+ function fail() {
+ $('#minRewriteFailed')[0].className = 'topNote';
+ }
+ $.ajax({
+ url : '../f=' + testUri + '&' + (new Date()).getTime(),
+ success : function (data) {
+ if (data === '1' || data === '1;') {
+ MUB._minRoot = '/min/';
+ $('span.minRoot').html('/min/');
+ } else
+ fail();
+ },
+ error : fail
+ });
+ },
+ /**
+ * Get markup for new source LI element
+ */
+ newLi : function () {
+ return '<li id="li' + MUB._uid + '">' + location.protocol + '//' + location.host + '/<input type=text size=20>' +
+ ' <button class="btn btn-danger btn-sm" title="Remove">x</button> <button class="btn btn-default btn-sm" title="Include Earlier">&uarr;</button>' +
+ ' <button class="btn btn-default btn-sm" title="Include Later">&darr;</button> <span></span></li>';
+ },
+ /**
+ * Add new empty source LI and attach handlers to buttons
+ */
+ addLi : function () {
+ $('#sources').append(MUB.newLi());
+ var li = $('#li' + MUB._uid)[0];
+ $('button[title=Remove]', li).click(function () {
+ $('#results').addClass('hide');
+ var hadValue = !!$('input', li)[0].value;
+ $(li).remove();
+ });
+ $('button[title$=Earlier]', li).click(function () {
+ $(li).prev('li').find('input').each(function () {
+ $('#results').addClass('hide');
+ // this = previous li input
+ var tmp = this.value;
+ this.value = $('input', li).val();
+ $('input', li).val(tmp);
+ MUB.updateAllTestLinks();
+ });
+ });
+ $('button[title$=Later]', li).click(function () {
+ $(li).next('li').find('input').each(function () {
+ $('#results').addClass('hide');
+ // this = next li input
+ var tmp = this.value;
+ this.value = $('input', li).val();
+ $('input', li).val(tmp);
+ MUB.updateAllTestLinks();
+ });
+ });
+ ++MUB._uid;
+ },
+ /**
+ * In the context of a source LI element, this will analyze the URI in
+ * the INPUT and check the URL on the site.
+ */
+ liUpdateTestLink : function () { // call in context of li element
+ if (! $('input', this)[0].value)
+ return;
+ var li = this;
+ $('span', this).html('');
+ var url = location.protocol + '//' + location.host + '/' +
+ $('input', this)[0].value.replace(/^\//, '');
+ $.ajax({
+ url : url,
+ complete : function (xhr, stat) {
+ if ('success' === stat)
+ $('span', li).html('<a href="#" class="btn btn-success btn-sm disabled">&#x2713;</a>');
+ else {
+ $('span', li).html('<button class="btn btn-warning btn-sm"><b>404! </b> recheck</button>')
+ .find('button').click(function () {
+ MUB.liUpdateTestLink.call(li);
+ });
+ }
+ },
+ dataType : 'text'
+ });
+ },
+ /**
+ * Check all source URLs
+ */
+ updateAllTestLinks : function () {
+ $('#sources li').each(MUB.liUpdateTestLink);
+ },
+ /**
+ * In a given array of strings, find the character they all have at
+ * a particular index
+ * @param Array arr array of strings
+ * @param Number pos index to check
+ * @return mixed a common char or '' if any do not match
+ */
+ getCommonCharAtPos : function (arr, pos) {
+ var i,
+ l = arr.length,
+ c = arr[0].charAt(pos);
+ if (c === '' || l === 1)
+ return c;
+ for (i = 1; i < l; ++i)
+ if (arr[i].charAt(pos) !== c)
+ return '';
+ return c;
+ },
+ /**
+ * Get the shortest URI to minify the set of source files
+ * @param Array sources URIs
+ */
+ getBestUri : function (sources) {
+ var pos = 0,
+ base = '',
+ c;
+ while (true) {
+ c = MUB.getCommonCharAtPos(sources, pos);
+ if (c === '')
+ break;
+ else
+ base += c;
+ ++pos;
+ }
+ base = base.replace(/[^\/]+$/, '');
+ var uri = MUB._minRoot + 'f=' + sources.join(',');
+ if (base.charAt(base.length - 1) === '/') {
+ // we have a base dir!
+ var basedSources = sources,
+ i,
+ l = sources.length;
+ for (i = 0; i < l; ++i) {
+ basedSources[i] = sources[i].substr(base.length);
+ }
+ base = base.substr(0, base.length - 1);
+ var bUri = MUB._minRoot + 'b=' + base + '&f=' + basedSources.join(',');
+ //window.console && console.log([uri, bUri]);
+ uri = uri.length < bUri.length ? uri : bUri;
+ }
+ return uri;
+ },
+ /**
+ * Create the Minify URI for the sources
+ */
+ update : function () {
+ MUB.updateAllTestLinks();
+ var sources = [],
+ ext = false,
+ fail = false,
+ markup;
+ $('#sources input').each(function () {
+ var m, val;
+ if (! fail && this.value && (m = this.value.match(/\.(css|js)$/))) {
+ var thisExt = m[1];
+ if (ext === false)
+ ext = thisExt;
+ else if (thisExt !== ext) {
+ fail = true;
+ return alert('extensions must match!');
+ }
+ this.value = this.value.replace(/^\//, '');
+ if (-1 !== $.inArray(this.value, sources)) {
+ fail = true;
+ return alert('duplicate file!');
+ }
+ sources.push(this.value);
+ }
+ });
+ if (fail || ! sources.length)
+ return;
+ $('#groupConfig').val(" 'keyName' => array('//" + sources.join("', '//") + "'),");
+ var uri = MUB.getBestUri(sources),
+ uriH = uri.replace(/</, '&lt;').replace(/>/, '&gt;').replace(/&/, '&amp;');
+ $('#uriA').html(uriH)[0].href = uri;
+ if (ext === 'js') {
+ markup = '<script type="text/javascript" src="' + uriH + '"></script>';
+ } else {
+ markup = '<link type="text/css" rel="stylesheet" href="' + uriH + '" />';
+ }
+ $('#uriHtml').val(markup);
+ $('#results').removeClass('hide');
+ },
+ /**
+ * Handler for the "Add file +" button
+ */
+ addButtonClick : function () {
+ $('#results').addClass('hide');
+ MUB.addLi();
+ MUB.updateAllTestLinks();
+ $('#update').removeClass('hide').click(MUB.update);
+ $('#sources li:last input')[0].focus();
+ },
+ /**
+ * Runs on DOMready
+ */
+ init : function () {
+ $('#jsDidntLoad').remove();
+ $('#app').removeClass('hide');
+ $('#sources').html('');
+ $('#add button').click(MUB.addButtonClick);
+ // make easier to copy text out of
+ $('#uriHtml, #groupConfig, #symlinkOpt').click(function () {
+ this.select();
+ }).focus(function () {
+ this.select();
+ });
+ $('a.ext').attr({target:'_blank'});
+ if (location.hash) {
+ // make links out of URIs from bookmarklet
+ $('#getBm').addClass('hide');
+ var i = 0, found = location.hash.substr(1).split(','), l = found.length;
+ $('#bmUris').html('<p><strong>Found by bookmarklet:</strong> /</p>');
+ var $p = $('#bmUris p');
+ for (; i < l; i++) {
+ $p.append($('<a href=#></a>').text(found[i])[0]);
+ if (i < (l - 1)) {
+ $p.append(', /');
+ }
+ }
+ $('#bmUris a').click(function () {
+ MUB.addButtonClick();
+ $('#sources li:last input').val(this.innerHTML);
+ MUB.liUpdateTestLink.call($('#sources li:last')[0]);
+ $('#results').addClass('hide');
+ return false;
+ }).attr({title:'Add file +'});
+ } else {
+ // setup bookmarklet 1
+ $.ajax({
+ url : '../?f=' + location.pathname.replace(/\/[^\/]*$/, '/bm.js').substr(1),
+ success : function (code) {
+ $('#bm')[0].href = code
+ .replace('%BUILDER_URL%', location.href)
+ .replace(/\n/g, ' ');
+ },
+ dataType : 'text'
+ });
+ if ($.browser.msie) {
+ $('#getBm p:last').append(' Sorry, not supported in MSIE!');
+ }
+ MUB.addButtonClick();
+ }
+ // setup bookmarklet 2
+ $.ajax({
+ url : '../?f=' + location.pathname.replace(/\/[^\/]*$/, '/bm2.js').substr(1),
+ success : function (code) {
+ $('#bm2')[0].href = code.replace(/\n/g, ' ');
+ },
+ dataType : 'text'
+ });
+ MUB.checkRewrite();
+ }
+};
+$(MUB.init);
diff --git a/admin/survey/minify/builder/bm.js b/admin/survey/minify/builder/bm.js
new file mode 100644
index 0000000..c09e2bd
--- /dev/null
+++ b/admin/survey/minify/builder/bm.js
@@ -0,0 +1,38 @@
+javascript:(function() {
+ var d = document
+ ,uris = []
+ ,i = 0
+ ,o
+ ,home = (location + '').split('/').splice(0, 3).join('/') + '/';
+ function add(uri) {
+ if (0 !== uri.indexOf(home)) {
+ return;
+ }
+ uri = uri.replace(/\?.*/, '');
+ uris.push(escape(uri.substr(home.length)));
+ };
+ function sheet(ss) {
+ // we must check the domain with add() before accessing ss.cssRules
+ // otherwise a security exception will be thrown
+ if (ss.href && add(ss.href) && ss.cssRules) {
+ var i = 0, r;
+ while (r = ss.cssRules[i++])
+ r.styleSheet && sheet(r.styleSheet);
+ }
+ };
+ while (o = d.getElementsByTagName('script')[i++])
+ o.src && !(o.type && /vbs/i.test(o.type)) && add(o.src);
+ i = 0;
+ while (o = d.styleSheets[i++])
+ /* http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html#StyleSheets-DocumentStyle-styleSheets
+ document.styleSheet is a list property where [0] accesses the 1st element and
+ [outOfRange] returns null. In IE, styleSheets is a function, and also throws an
+ exception when you check the out of bounds index. (sigh) */
+ sheet(o);
+ if (uris.length)
+ window.open('%BUILDER_URL%#' + uris.join(','));
+ else
+ alert('No js/css files found with URLs within "'
+ + home.split('/')[2]
+ + '".\n(This tool is limited to URLs with the same domain.)');
+})(); \ No newline at end of file
diff --git a/admin/survey/minify/builder/bm2.js b/admin/survey/minify/builder/bm2.js
new file mode 100644
index 0000000..a6c7d16
--- /dev/null
+++ b/admin/survey/minify/builder/bm2.js
@@ -0,0 +1,15 @@
+javascript:(function(){
+ var d = document
+ ,c = d.cookie
+ ,m = c.match(/\bminifyDebug=([^; ]+)/)
+ ,v = m ? decodeURIComponent(m[1]) : ''
+ ,p = prompt('Debug Minify URIs on ' + location.hostname + ' which contain:'
+ + '\n(empty for none, space = OR, * = any string, ? = any char)', v)
+ ;
+ if (p === null) return;
+ p = p.replace(/^\s+|\s+$/, '');
+ v = (p === '')
+ ? 'minifyDebug=; expires=Fri, 27 Jul 2001 02:47:11 UTC; path=/'
+ : 'minifyDebug=' + encodeURIComponent(p) + '; path=/';
+ d.cookie = v;
+})(); \ No newline at end of file
diff --git a/admin/survey/minify/builder/index.php b/admin/survey/minify/builder/index.php
new file mode 100644
index 0000000..a9a58c2
--- /dev/null
+++ b/admin/survey/minify/builder/index.php
@@ -0,0 +1,221 @@
+<?php
+
+$app = (require __DIR__ . '/../bootstrap.php');
+/* @var \Minify\App $app */
+
+$config = $app->config;
+
+// recommend $min_symlinks setting for Apache UserDir
+$symlinkOption = '';
+if (0 === strpos($app->env->server("SERVER_SOFTWARE"), 'Apache/')
+ && preg_match('@^/\\~(\\w+)/@', $app->env->server('REQUEST_URI'), $m)
+) {
+ $userDir = DIRECTORY_SEPARATOR . $m[1] . DIRECTORY_SEPARATOR;
+ if (false !== strpos(__FILE__, $userDir)) {
+ $sm = array();
+ $sm["//~{$m[1]}"] = dirname(__DIR__);
+ $array = str_replace('array (', 'array(', var_export($sm, 1));
+ $symlinkOption = "\$min_symlinks = $array;";
+ }
+}
+
+if (!$config->enableBuilder) {
+ header('Content-Type: text/plain');
+ die('This application is not enabled. See https://github.com/mrclay/minify/blob/master/docs/BuilderApp.wiki.md');
+}
+
+if ($config->builderPassword && $config->builderPassword !== '') {
+ $auth = new Intervention\Httpauth\Httpauth(array(
+ 'username' => 'admin',
+ 'password' => $config->builderPassword,
+ 'type' => 'digest',
+ 'realm' => 'Minify Builder',
+ ));
+ $auth->secure();
+}
+
+ob_start();
+?>
+<!DOCTYPE html>
+<title>Minify URI Builder</title>
+<meta name="ROBOTS" content="NOINDEX, NOFOLLOW">
+<link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">
+<style>
+body {margin:1em 60px;}
+h1, h2, h3 {margin-left:-25px; position:relative;}
+h1 {margin-top:0;}
+#sources {margin:0; padding:0;}
+#sources li {margin:0 0 0 40px}
+#sources li input {margin-left:2px}
+#add {margin:5px 0 1em 40px}
+.hide {display:none}
+#uriTable {border-collapse:collapse;}
+#uriTable td, #uriTable th {padding-top:10px;}
+#uriTable th {padding-right:10px;}
+#groupConfig {font-family:monospace;}
+b {color:#c00}
+.topNote {background: #ff9; display:inline-block; padding:.5em .6em; margin:0 0 1em;}
+.topWarning {background:#c00; color:#fff; padding:.5em .6em; margin:0 0 1em;}
+.topWarning a {color:#fff;}
+#jsDidntLoad {display:none;}
+</style>
+<body>
+<?php if ($symlinkOption): ?>
+ <div class=topNote><strong>Note:</strong> It looks like you're running Minify in a user
+ directory. You may need the following option in /min/config.php to have URIs
+ correctly rewritten in CSS output:
+ <br><textarea id=symlinkOpt rows=3 cols=80 readonly><?php echo htmlspecialchars($symlinkOption); ?></textarea>
+</div>
+<?php endif; ?>
+
+<p class=topWarning id=jsDidntLoad><strong>Uh Oh.</strong> Minify was unable to
+ serve Javascript for this app. To troubleshoot this,
+ <a href="https://github.com/mrclay/minify/blob/master/docs/Debugging.wiki.md">enable FirePHP debugging</a>
+ and request the <a id=builderScriptSrc href=#>Minify URL</a> directly. Hopefully the
+ FirePHP console will report the cause of the error.
+</p>
+
+<p id=minRewriteFailed class="hide"><strong>Note:</strong> Your webserver does not seem to
+ support mod_rewrite (used in /min/.htaccess). Your Minify URIs will contain "?", which
+<a href="http://www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/"
+>may reduce the benefit of proxy cache servers</a>.</p>
+
+<h1>Minify URI Builder</h1>
+
+<noscript><p class="topNote">Javascript and a browser supported by jQuery 1.2.6 is required
+for this application.</p></noscript>
+
+<div id=app class=hide>
+
+<p>Create a list of Javascript or CSS files (or 1 is fine) you'd like to combine
+and click [Update].</p>
+
+<ol id=sources><li></li></ol>
+<div id=add><button>Add file +</button></div>
+
+<div id=bmUris></div>
+
+<p><button class="btn btn-primary hide" id=update>Update</button></p>
+
+<div id=results class=hide>
+
+<h2>Minify URI</h2>
+<p>Place this URI in your HTML to serve the files above combined, minified, compressed and
+with cache headers.</p>
+<table id=uriTable>
+ <tr><th>URI</th><td><a id=uriA class=ext>/min</a> <small>(opens in new window)</small></td></tr>
+ <tr><th>HTML</th><td><input id=uriHtml type=text size=100 readonly></td></tr>
+</table>
+
+<h2>How to serve these files as a group</h2>
+<p>For the best performance you can serve these files as a pre-defined group with a URI
+like: <code><span class=minRoot>/min/?</span>g=keyName</code></p>
+<p>To do this, add a line like this to /min/groupsConfig.php:</p>
+
+<pre><code>return array(
+ <span style="color:#666">... your existing groups here ...</span>
+<input id=groupConfig size=100 type=text readonly>
+);</code></pre>
+
+<p><em>Make sure to replace <code>keyName</code> with a unique key for this group.</em></p>
+</div>
+
+<div id=getBm>
+<h3>Find URIs on a Page</h3>
+<p>You can use the bookmarklet below to fetch all CSS &amp; Javascript URIs from a page
+on your site. When you active it, this page will open in a new window with a list of
+available URIs to add.</p>
+
+<p><a id=bm>Create Minify URIs</a> <small>(right-click, add to bookmarks)</small></p>
+</div>
+
+<h3>Combining CSS files that contain <code>@import</code></h3>
+<p>If your CSS files contain <code>@import</code> declarations, Minify will not
+remove them. Therefore, you will want to remove those that point to files already
+in your list, and move any others to the top of the first file in your list
+(imports below any styles will be ignored by browsers as invalid).</p>
+<p>If you desire, you can use Minify URIs in imports and they will not be touched
+by Minify. E.g. <code>@import "<span class=minRoot>/min/?</span>g=css2";</code></p>
+
+<h3>Debug Mode</h3>
+<p>When /min/config.php has <code>$min_allowDebugFlag = <strong>true</strong>;</code>
+ you can get debug output by appending <code>&amp;debug</code> to a Minify URL, or
+ by sending the cookie <code>minDebug=&lt;match&gt;</code>, where <code>&lt;match&gt;</code>
+ should be a string in the Minify URIs you'd like to debug. This bookmarklet will allow you to
+ set this cookie.</p>
+<p><a id=bm2>Minify Debug</a> <small>(right-click, add to bookmarks)</small></p>
+
+</div><!-- #app -->
+
+<hr>
+<p>Need help? Check the <a href="https://github.com/mrclay/minify/tree/master/docs">wiki</a>,
+ or post to the <a class=ext href="http://groups.google.com/group/minify">discussion
+ list</a>.</p>
+ <p><small>Powered by Minify <?php echo Minify::VERSION; ?></small></p>
+
+<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.3/jquery.min.js"></script>
+<script>window.jQuery || document.write('<script src="jquery-1.6.3.min.js"><\/script>')</script>
+<script>
+(function () {
+ // workaround required to test when /min isn't child of web root
+ var src = "../?f=" + location.pathname.replace(/\/[^\/]*$/, '/_index.js').substr(1);
+ // load script immediately
+ document.write('<\script src="' + src + '"><\/script>');
+ $(function () {
+ $('#builderScriptSrc')[0].href = src;
+ // give Minify a few seconds to serve _index.js before showing scary red warning
+ setTimeout(function () {
+ if (! window.MUB) {
+ // Minify didn't load
+ $('#jsDidntLoad').css({display:'block'});
+ }
+ }, 3000);
+
+ // detection of double output encoding
+ var msg = '<\p class=topWarning><\strong>Warning:<\/strong> ';
+ var url = 'ocCheck.php?' + (new Date()).getTime();
+ $.get(url, function (ocStatus) {
+ $.get(url + '&hello=1', function (ocHello) {
+ var expected = [];
+ for (var i = 0; i < 500; i++) {
+ expected.push('0123456789');
+ }
+ if (ocHello != expected.join('')) {
+ msg += 'It appears output is being automatically compressed, interfering '
+ + ' with Minify\'s own compression. ';
+ if (ocStatus == '1')
+ msg += 'The option "zlib.output_compression" is enabled in your PHP configuration. '
+ + 'Minify set this to "0", but it had no effect. This option must be disabled '
+ + 'in php.ini or .htaccess.';
+ else
+ msg += 'The option "zlib.output_compression" is disabled in your PHP configuration '
+ + 'so this behavior is likely due to a server option.';
+ $(document.body).prepend(msg + '<\/p>');
+ } else
+ if (ocStatus == '1')
+ $(document.body).prepend('<\p class=topNote><\strong>Note:</\strong> The option '
+ + '"zlib.output_compression" is enabled in your PHP configuration, but has been '
+ + 'successfully disabled via ini_set(). If you experience mangled output you '
+ + 'may want to consider disabling this option in your PHP configuration.<\/p>'
+ );
+ });
+ });
+ });
+})();
+</script>
+</body>
+<?php
+$content = ob_get_clean();
+
+$controller = new Minify_Controller_Page($app->env, $app->sourceFactory);
+$minify = $app->minify->serve($controller, array(
+ 'content' => $content,
+ 'id' => __FILE__,
+ 'lastModifiedTime' => max(
+ // regenerate cache if any of these change
+ filemtime(__FILE__),
+ filemtime(__DIR__ . '/../config.php'),
+ filemtime(__DIR__ . '/../lib/Minify.php')
+ ),
+ 'minifyAll' => true,
+));
diff --git a/admin/survey/minify/builder/jquery-1.6.3.min.js b/admin/survey/minify/builder/jquery-1.6.3.min.js
new file mode 100644
index 0000000..f57003f
--- /dev/null
+++ b/admin/survey/minify/builder/jquery-1.6.3.min.js
@@ -0,0 +1,4 @@
+/*! jQuery v1.6.3 http://jquery.com/ | http://jquery.org/license */
+(function(a,b){function cu(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cr(a){if(!cg[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){ch||(ch=c.createElement("iframe"),ch.frameBorder=ch.width=ch.height=0),b.appendChild(ch);if(!ci||!ch.createElement)ci=(ch.contentWindow||ch.contentDocument).document,ci.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),ci.close();d=ci.createElement(a),ci.body.appendChild(d),e=f.css(d,"display"),b.removeChild(ch)}cg[a]=e}return cg[a]}function cq(a,b){var c={};f.each(cm.concat.apply([],cm.slice(0,b)),function(){c[this]=a});return c}function cp(){cn=b}function co(){setTimeout(cp,0);return cn=f.now()}function cf(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ce(){try{return new a.XMLHttpRequest}catch(b){}}function b$(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bZ(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bY(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bA.test(a)?d(a,e):bY(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)bY(a+"["+e+"]",b[e],c,d);else d(a,b)}function bX(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function bW(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bP,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bW(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bW(a,c,d,e,"*",g));return l}function bV(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bL),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function by(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bt:bu;if(d>0){c!=="border"&&f.each(e,function(){c||(d-=parseFloat(f.css(a,"padding"+this))||0),c==="margin"?d+=parseFloat(f.css(a,c+this))||0:d-=parseFloat(f.css(a,"border"+this+"Width"))||0});return d+"px"}d=bv(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0,c&&f.each(e,function(){d+=parseFloat(f.css(a,"padding"+this))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+this+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+this))||0)});return d+"px"}function bl(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bd,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bk(a){f.nodeName(a,"input")?bj(a):"getElementsByTagName"in a&&f.grep(a.getElementsByTagName("input"),bj)}function bj(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bi(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function bh(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bg(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c=f.expando,d=f.data(a),e=f.data(b,d);if(d=d[c]){var g=d.events;e=e[c]=f.extend({},d);if(g){delete e.handle,e.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)f.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function bf(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function V(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(Q.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function U(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function M(a,b){return(a&&a!=="*"?a+".":"")+b.replace(y,"`").replace(z,"&")}function L(a){var b,c,d,e,g,h,i,j,k,l,m,n,o,p=[],q=[],r=f._data(this,"events");if(!(a.liveFired===this||!r||!r.live||a.target.disabled||a.button&&a.type==="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var s=r.live.slice(0);for(i=0;i<s.length;i++)g=s[i],g.origType.replace(w,"")===a.type?q.push(g.selector):s.splice(i--,1);e=f(a.target).closest(q,a.currentTarget);for(j=0,k=e.length;j<k;j++){m=e[j];for(i=0;i<s.length;i++){g=s[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,d=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,d=f(a.relatedTarget).closest(g.selector)[0],d&&f.contains(h,d)&&(d=h);(!d||d!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){e=p[j];if(c&&e.level>c)break;a.currentTarget=e.elem,a.data=e.handleObj.data,a.handleObj=e.handleObj,o=e.handleObj.origHandler.apply(e.elem,arguments);if(o===!1||a.isPropagationStopped()){c=e.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function J(a,c,d){var e=f.extend({},d[0]);e.type=a,e.originalEvent={},e.liveFired=b,f.event.handle.call(c,e),e.isDefaultPrevented()&&d[0].preventDefault()}function D(){return!0}function C(){return!1}function m(a,c,d){var e=c+"defer",g=c+"queue",h=c+"mark",i=f.data(a,e,b,!0);i&&(d==="queue"||!f.data(a,g,b,!0))&&(d==="mark"||!f.data(a,h,b,!0))&&setTimeout(function(){!f.data(a,g,b,!0)&&!f.data(a,h,b,!0)&&(f.removeData(a,e,!0),i.resolve())},0)}function l(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function k(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(j,"$1-$2").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNaN(d)?i.test(d)?f.parseJSON(d):d:parseFloat(d)}catch(g){}f.data(a,c,d)}else d=b}return d}var c=a.document,d=a.navigator,e=a.location,f=function(){function K(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(K,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/\d/,n=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,o=/^[\],:{}\s]*$/,p=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,q=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,r=/(?:^|:|,)(?:\s*\[)+/g,s=/(webkit)[ \/]([\w.]+)/,t=/(opera)(?:.*version)?[ \/]([\w.]+)/,u=/(msie) ([\w.]+)/,v=/(mozilla)(?:.*? rv:([\w.]+))?/,w=/-([a-z]|[0-9])/ig,x=/^-ms-/,y=function(a,b){return(b+"").toUpperCase()},z=d.userAgent,A,B,C,D=Object.prototype.toString,E=Object.prototype.hasOwnProperty,F=Array.prototype.push,G=Array.prototype.slice,H=String.prototype.trim,I=Array.prototype.indexOf,J={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=n.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.6.3",length:0,size:function(){return this.length},toArray:function(){return G.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?F.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),B.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(G.apply(this,arguments),"slice",G.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:F,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;B.resolveWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!B){B=e._Deferred();if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",C,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",C),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&K()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNaN:function(a){return a==null||!m.test(a)||isNaN(a)},type:function(a){return a==null?String(a):J[D.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!E.call(a,"constructor")&&!E.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||E.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(o.test(b.replace(p,"@").replace(q,"]").replace(r,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(x,"ms-").replace(w,y)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:H?function(a){return a==null?"":H.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?F.call(c,a):e.merge(c,a)}return c},inArray:function(a,b){if(!b)return-1;if(I)return I.call(b,a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=G.call(arguments,2),g=function(){return a.apply(c,f.concat(G.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=s.exec(a)||t.exec(a)||u.exec(a)||a.indexOf("compatible")<0&&v.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){J["[object "+b+"]"]=b.toLowerCase()}),A=e.uaMatch(z),A.browser&&(e.browser[A.browser]=!0,e.browser.version=A.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?C=function(){c.removeEventListener("DOMContentLoaded",C,!1),e.ready()}:c.attachEvent&&(C=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",C),e.ready())});return e}(),g="done fail isResolved isRejected promise then always pipe".split(" "),h=[].slice;f.extend({_Deferred:function(){var a=[],b,c,d,e={done:function(){if(!d){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=f.type(i),j==="array"?e.done.apply(e,i):j==="function"&&a.push(i);k&&e.resolveWith(k[0],k[1])}return this},resolveWith:function(e,f){if(!d&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(e,f)}finally{b=[e,f],c=0}}return this},resolve:function(){e.resolveWith(this,arguments);return this},isResolved:function(){return!!c||!!b},cancel:function(){d=1,a=[];return this}};return e},Deferred:function(a){var b=f._Deferred(),c=f._Deferred(),d;f.extend(b,{then:function(a,c){b.done(a).fail(c);return this},always:function(){return b.done.apply(b,arguments).fail.apply(this,arguments)},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,pipe:function(a,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[c,"reject"]},function(a,c){var e=c[0],g=c[1],h;f.isFunction(e)?b[a](function(){h=e.apply(this,arguments),h&&f.isFunction(h.promise)?h.promise().then(d.resolve,d.reject):d[g+"With"](this===b?d:this,[h])}):b[a](d[g])})}).promise()},promise:function(a){if(a==null){if(d)return d;d=a={}}var c=g.length;while(c--)a[g[c]]=b[g[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?h.call(arguments,0):c,--e||g.resolveWith(g,h.call(b,0))}}var b=arguments,c=0,d=b.length,e=d,g=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred();if(d>1){for(;c<d;c++)b[c]&&f.isFunction(b[c].promise)?b[c].promise().then(i(c),g.reject):--e;e||g.resolveWith(g,b)}else g!==a&&g.resolveWith(g,d?[a]:[]);return g.promise()}}),f.support=function(){var a=c.createElement("div"),b=c.documentElement,d,e,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;a.setAttribute("className","t"),a.innerHTML=" <link><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type=checkbox>",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},m&&f.extend(p,{position:"absolute",left:"-1000px",top:"-1000px"});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",q=a.getElementsByTagName("td"),u=q[0].offsetHeight===0,q[0].style.display="",q[1].style.display="none",k.reliableHiddenOffsets=u&&q[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",a.appendChild(j),k.reliableMarginRight=(parseInt((c.defaultView.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0),o.innerHTML="",n.removeChild(o);if(a.attachEvent)for(t in{submit:1,change:1,focusin:1})s="on"+t,u=s in a,u||(a.setAttribute(s,"return;"),u=typeof a[s]=="function"),k[t+"Bubbles"]=u;o=l=g=h=m=j=a=i=null;return k}(),f.boxModel=f.support.boxModel;var i=/^(?:\{.*\}|\[.*\])$/,j=/([a-z])([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!l(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i=f.expando,j=typeof c=="string",k=a.nodeType,l=k?f.cache:a,m=k?a[f.expando]:a[f.expando]&&f.expando;if((!m||e&&m&&l[m]&&!l[m][i])&&j&&d===b)return;m||(k?a[f.expando]=m=++f.uuid:m=f.expando),l[m]||(l[m]={},k||(l[m].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?l[m][i]=f.extend(l[m][i],c):l[m]=f.extend(l[m],c);g=l[m],e&&(g[i]||(g[i]={}),g=g[i]),d!==b&&(g[f.camelCase(c)]=d);if(c==="events"&&!g[c])return g[i]&&g[i].events;j?(h=g[c],h==null&&(h=g[f.camelCase(c)])):h=g;return h}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e=f.expando,g=a.nodeType,h=g?f.cache:a,i=g?a[f.expando]:f.expando;if(!h[i])return;if(b){d=c?h[i][e]:h[i];if(d){d[b]||(b=f.camelCase(b)),delete d[b];if(!l(d))return}}if(c){delete h[i][e];if(!l(h[i]))return}var j=h[i][e];f.support.deleteExpando||!h.setInterval?delete h[i]:h[i]=null,j?(h[i]={},g||(h[i].toJSON=f.noop),h[i][e]=j):g&&(f.support.deleteExpando?delete a[f.expando]:a.removeAttribute?a.removeAttribute(f.expando):a[f.expando]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d=null;if(typeof a=="undefined"){if(this.length){d=f.data(this[0]);if(this[0].nodeType===1){var e=this[0].attributes,g;for(var h=0,i=e.length;h<i;h++)g=e[h].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),k(this[0],g,d[g]))}}return d}if(typeof a=="object")return this.each(function(){f.data(this,a)});var j=a.split(".");j[1]=j[1]?"."+j[1]:"";if(c===b){d=this.triggerHandler("getData"+j[1]+"!",[j[0]]),d===b&&this.length&&(d=f.data(this[0],a),d=k(this[0],a,d));return d===b&&j[1]?this.data(j[0]):d}return this.each(function(){var b=f(this),d=[j[0],c];b.triggerHandler("setData"+j[1]+"!",d),f.data(this,a,c),b.triggerHandler("changeData"+j[1]+"!",d)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,c){a&&(c=(c||"fx")+"mark",f.data(a,c,(f.data(a,c,b,!0)||0)+1,!0))},_unmark:function(a,c,d){a!==!0&&(d=c,c=a,a=!1);if(c){d=d||"fx";var e=d+"mark",g=a?0:(f.data(c,e,b,!0)||1)-1;g?f.data(c,e,g,!0):(f.removeData(c,e,!0),m(c,d,"mark"))}},queue:function(a,c,d){if(a){c=(c||"fx")+"queue";var e=f.data(a,c,b,!0);d&&(!e||f.isArray(d)?e=f.data(a,c,f.makeArray(d),!0):e.push(d));return e||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e;d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),d.call(a,function(){f.dequeue(a,b)})),c.length||(f.removeData(a,b+"queue",!0),m(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){f.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f._Deferred(),!0))h++,l.done(m);m();return d.promise()}});var n=/[\n\t\r]/g,o=/\s+/,p=/\r/g,q=/^(?:button|input)$/i,r=/^(?:button|input|object|select|textarea)$/i,s=/^a(?:rea)?$/i,t=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,u,v;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(o);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(o);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(n," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(o);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(n," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e=this[0];if(!arguments.length){if(e){c=f.valHooks[e.nodeName.toLowerCase()]||f.valHooks[e.type];if(c&&"get"in c&&(d=c.get(e,"value"))!==b)return d;d=e.value;return typeof d=="string"?d.replace(p,""):d==null?"":d}return b}var g=f.isFunction(a);return this.each(function(d){var e=f(this),h;if(this.nodeType===1){g?h=a.call(this,d,e.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c=a.selectedIndex,d=[],e=a.options,g=a.type==="select-one";if(c<0)return null;for(var h=g?c:0,i=g?c+1:e.length;h<i;h++){var j=e[h];if(j.selected&&(f.support.optDisabled?!j.disabled:j.getAttribute("disabled")===null)&&(!j.parentNode.disabled||!f.nodeName(j.parentNode,"optgroup"))){b=f(j).val();if(g)return b;d.push(b)}}if(g&&!d.length&&e.length)return f(e[c]).val();return d},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attrFix:{tabindex:"tabIndex"},attr:function(a,c,d,e){var g=a.nodeType;if(!a||g===3||g===8||g===2)return b;if(e&&c in f.attrFn)return f(a)[c](d);if(!("getAttribute"in a))return f.prop(a,c,d);var h,i,j=g!==1||!f.isXMLDoc(a);j&&(c=f.attrFix[c]||c,i=f.attrHooks[c],i||(t.test(c)?i=v:u&&(i=u)));if(d!==b){if(d===null){f.removeAttr(a,c);return b}if(i&&"set"in i&&j&&(h=i.set(a,d,c))!==b)return h;a.setAttribute(c,""+d);return d}if(i&&"get"in i&&j&&(h=i.get(a,c))!==null)return h;h=a.getAttribute(c);return h===null?b:h},removeAttr:function(a,b){var c;a.nodeType===1&&(b=f.attrFix[b]||b,f.attr(a,b,""),a.removeAttribute(b),t.test(b)&&(c=f.propFix[b]||b)in a&&(a[c]=!1))},attrHooks:{type:{set:function(a,b){if(q.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(u&&f.nodeName(a,"button"))return u.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(u&&f.nodeName(a,"button"))return u.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e=a.nodeType;if(!a||e===3||e===8||e===2)return b;var g,h,i=e!==1||!f.isXMLDoc(a);i&&(c=f.propFix[c]||c,h=f.propHooks[c]);return d!==b?h&&"set"in h&&(g=h.set(a,d,c))!==b?g:a[c]=d:h&&"get"in h&&(g=h.get(a,c))!==null?g:a[c]},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):r.test(a.nodeName)||s.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabIndex=f.propHooks.tabIndex,v={get:function(a,c){var d;return f.prop(a,c)===!0||(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},f.support.getSetAttribute||(u=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&d.nodeValue!==""?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})})),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var w=/\.(.*)$/,x=/^(?:textarea|input|select)$/i,y=/\./g,z=/ /g,A=/[^\w\s.|`]/g,B=function(a){return a.replace(A,"\\$&")};f.event={add:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){if(d===!1)d=C;else if(!d)return;var g,h;d.handler&&(g=d,d=g.handler),d.guid||(d.guid=f.guid++);var i=f._data(a);if(!i)return;var j=i.events,k=i.handle;j||(i.events=j={}),k||(i.handle=k=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.handle.apply(k.elem,arguments):b}),k.elem=a,c=c.split(" ");var l,m=0,n;while(l=c[m++]){h=g?f.extend({},g):{handler:d,data:e},l.indexOf(".")>-1?(n=l.split("."),l=n.shift(),h.namespace=n.slice(0).sort().join(".")):(n=[],h.namespace=""),h.type=l,h.guid||(h.guid=d.guid);var o=j[l],p=f.event.special[l]||{};if(!o){o=j[l]=[];if(!p.setup||p.setup.call(a,e,n,k)===!1)a.addEventListener?a.addEventListener(l,k,!1):a.attachEvent&&a.attachEvent("on"+l,k)}p.add&&(p.add.call(a,h),h.handler.guid||(h.handler.guid=d.guid)),o.push(h),f.event.global[l]=!0}a=null}},global:{},remove:function(a,c,d,e){if(a.nodeType!==3&&a.nodeType!==8){d===!1&&(d=C);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=f.hasData(a)&&f._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(d=c.handler,c=c.type);if(!c||typeof c=="string"&&c.charAt(0)==="."){c=c||"";for(h in t)f.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+f.map(m.slice(0).sort(),B).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!d){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))f.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=f.event.special[h]||{};for(j=e||0;j<p.length;j++){q=p[j];if(d.guid===q.guid){if(l||n.test(q.namespace))e==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(e!=null)break}}if(p.length===0||e!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&f.removeEvent(a,h,s.handle),g=null
+,delete t[h]}if(f.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,f.isEmptyObject(s)&&f.removeData(a,b,!0)}}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){var h=c.type||c,i=[],j;h.indexOf("!")>=0&&(h=h.slice(0,-1),j=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if(!!e&&!f.event.customEvent[h]||!!f.event.global[h]){c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.exclusive=j,c.namespace=i.join("."),c.namespace_re=new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)");if(g||!e)c.preventDefault(),c.stopPropagation();if(!e){f.each(f.cache,function(){var a=f.expando,b=this[a];b&&b.events&&b.events[h]&&f.event.trigger(c,d,b.handle.elem)});return}if(e.nodeType===3||e.nodeType===8)return;c.result=b,c.target=e,d=d!=null?f.makeArray(d):[],d.unshift(c);var k=e,l=h.indexOf(":")<0?"on"+h:"";do{var m=f._data(k,"handle");c.currentTarget=k,m&&m.apply(k,d),l&&f.acceptData(k)&&k[l]&&k[l].apply(k,d)===!1&&(c.result=!1,c.preventDefault()),k=k.parentNode||k.ownerDocument||k===c.target.ownerDocument&&a}while(k&&!c.isPropagationStopped());if(!c.isDefaultPrevented()){var n,o=f.event.special[h]||{};if((!o._default||o._default.call(e.ownerDocument,c)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)){try{l&&e[h]&&(n=e[l],n&&(e[l]=null),f.event.triggered=h,e[h]())}catch(p){}n&&(e[l]=n),f.event.triggered=b}}return c.result}},handle:function(c){c=f.event.fix(c||a.event);var d=((f._data(this,"events")||{})[c.type]||[]).slice(0),e=!c.exclusive&&!c.namespace,g=Array.prototype.slice.call(arguments,0);g[0]=c,c.currentTarget=this;for(var h=0,i=d.length;h<i;h++){var j=d[h];if(e||c.namespace_re.test(j.namespace)){c.handler=j.handler,c.data=j.data,c.handleObj=j;var k=j.handler.apply(this,g);k!==b&&(c.result=k,k===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[f.expando])return a;var d=a;a=f.Event(d);for(var e=this.props.length,g;e;)g=this.props[--e],a[g]=d[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=a.target.ownerDocument||c,i=h.documentElement,j=h.body;a.pageX=a.clientX+(i&&i.scrollLeft||j&&j.scrollLeft||0)-(i&&i.clientLeft||j&&j.clientLeft||0),a.pageY=a.clientY+(i&&i.scrollTop||j&&j.scrollTop||0)-(i&&i.clientTop||j&&j.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:f.proxy,special:{ready:{setup:f.bindReady,teardown:f.noop},live:{add:function(a){f.event.add(this,M(a.origType,a.selector),f.extend({},a,{handler:L,guid:a.handler.guid}))},remove:function(a){f.event.remove(this,M(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!this.preventDefault)return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?D:C):this.type=a,b&&f.extend(this,b),this.timeStamp=f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=D;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=D;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=D,this.stopPropagation()},isDefaultPrevented:C,isPropagationStopped:C,isImmediatePropagationStopped:C};var E=function(a){var b=a.relatedTarget,c=!1,d=a.type;a.type=a.data,b!==this&&(b&&(c=f.contains(this,b)),c||(f.event.handle.apply(this,arguments),a.type=d))},F=function(a){a.type=a.data,f.event.handle.apply(this,arguments)};f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={setup:function(c){f.event.add(this,b,c&&c.selector?F:E,a)},teardown:function(a){f.event.remove(this,b,a&&a.selector?F:E)}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(a,b){if(!f.nodeName(this,"form"))f.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="submit"||c==="image")&&f(b).closest("form").length&&J("submit",this,arguments)}),f.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="text"||c==="password")&&f(b).closest("form").length&&a.keyCode===13&&J("submit",this,arguments)});else return!1},teardown:function(a){f.event.remove(this,".specialSubmit")}});if(!f.support.changeBubbles){var G,H=function(a){var b=f.nodeName(a,"input")?a.type:"",c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?f.map(a.options,function(a){return a.selected}).join("-"):"":f.nodeName(a,"select")&&(c=a.selectedIndex);return c},I=function(c){var d=c.target,e,g;if(!!x.test(d.nodeName)&&!d.readOnly){e=f._data(d,"_change_data"),g=H(d),(c.type!=="focusout"||d.type!=="radio")&&f._data(d,"_change_data",g);if(e===b||g===e)return;if(e!=null||g)c.type="change",c.liveFired=b,f.event.trigger(c,arguments[1],d)}};f.event.special.change={filters:{focusout:I,beforedeactivate:I,click:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(c==="radio"||c==="checkbox"||f.nodeName(b,"select"))&&I.call(this,a)},keydown:function(a){var b=a.target,c=f.nodeName(b,"input")?b.type:"";(a.keyCode===13&&!f.nodeName(b,"textarea")||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&I.call(this,a)},beforeactivate:function(a){var b=a.target;f._data(b,"_change_data",H(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in G)f.event.add(this,c+".specialChange",G[c]);return x.test(this.nodeName)},teardown:function(a){f.event.remove(this,".specialChange");return x.test(this.nodeName)}},G=f.event.special.change.filters,G.focus=G.beforeactivate}f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){function e(a){var c=f.event.fix(a);c.type=b,c.originalEvent={},f.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var d=0;f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.each(["bind","one"],function(a,c){f.fn[c]=function(a,d,e){var g;if(typeof a=="object"){for(var h in a)this[c](h,d,a[h],e);return this}if(arguments.length===2||d===!1)e=d,d=b;c==="one"?(g=function(a){f(this).unbind(a,g);return e.apply(this,arguments)},g.guid=e.guid||f.guid++):g=e;if(a==="unload"&&c!=="one")this.one(a,d,e);else for(var i=0,j=this.length;i<j;i++)f.event.add(this[i],a,g,d);return this}}),f.fn.extend({unbind:function(a,b){if(typeof a=="object"&&!a.preventDefault)for(var c in a)this.unbind(c,a[c]);else for(var d=0,e=this.length;d<e;d++)f.event.remove(this[d],a,b);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f.data(this,"lastToggle"+a.guid)||0)%d;f.data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var K={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};f.each(["live","die"],function(a,c){f.fn[c]=function(a,d,e,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:f(this.context);if(typeof a=="object"&&!a.preventDefault){for(var o in a)n[c](o,d,a[o],m);return this}if(c==="die"&&!a&&g&&g.charAt(0)==="."){n.unbind(g);return this}if(d===!1||f.isFunction(d))e=d||C,d=b;a=(a||"").split(" ");while((h=a[i++])!=null){j=w.exec(h),k="",j&&(k=j[0],h=h.replace(w,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,K[h]?(a.push(K[h]+k),h=h+k):h=(K[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)f.event.add(n[p],"live."+M(h,m),{data:d,selector:m,handler:e,origType:h,origHandler:e,preType:l});else n.unbind("live."+M(h,m),e)}return this}}),f.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".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d=0,e=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,f,g){f=f||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return f;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(e.call(n)==="[object Array]")if(!u)f.push.apply(f,n);else if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&f.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&f.push(j[t]);else p(n,f);o&&(k(o,h,f,g),k.uniqueSort(f));return f};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(!f)g=o=!0;else if(f===!0)continue}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("parentNode",b,f,a,e,c)},"~":function(a,b,c){var e,f=d++,g=u;typeof b=="string"&&!j.test(b)&&(b=b.toLowerCase(),e=b,g=t),g("previousSibling",b,f,a,e,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=d++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(e.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var f=a.length;c<f;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){if(a===b){g=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};f.find=k,f.expr=k.selectors,f.expr[":"]=f.expr.filters,f.unique=k.uniqueSort,f.text=k.getText,f.isXMLDoc=k.isXML,f.contains=k.contains}();var N=/Until$/,O=/^(?:parents|prevUntil|prevAll)/,P=/,/,Q=/^.[^:#\[\.,]*$/,R=Array.prototype.slice,S=f.expr.match.POS,T={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(V(this,a,!1),"not",a)},filter:function(a){return this.pushStack(V(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(d=0,e=a.length;d<e;d++)i=a[d],j[i]||(j[i]=S.test(i)?f(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:f(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=S.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(l?l.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(U(c[0])||U(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c),g=R.call(arguments);N.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!T[a]?f.unique(e):e,(this.length>1||P.test(d))&&O.test(a)&&(e=e.reverse());return this.pushStack(e,a,g.join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|object|embed|option|style)/i,bb=/checked\s*(?:[^=]|=\s*.checked.)/i,bc=/\/(java|ecma)script/i,bd=/^\s*<!(?:\[CDATA\[|\-\-)/,be={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};be.optgroup=be.option,be.tbody=be.tfoot=be.colgroup=be.caption=be.thead,be.th=be.td,f.support.htmlSerialize||(be._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){f(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")),f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!be[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bb.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bf(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bl)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i;b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof a[0]=="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!ba.test(a[0])&&(f.support.checkClone||!bb.test(a[0]))&&(g=!0,h=f.fragments[a[0]],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[a[0]]=h?e:1);
+return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d=a.cloneNode(!0),e,g,h;if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bh(a,d),e=bi(a),g=bi(d);for(h=0;e[h];++h)g[h]&&bh(e[h],g[h])}if(b){bg(a,d);if(c){e=bi(a),g=bi(d);for(h=0;e[h];++h)bg(e[h],g[h])}}e=g=null;return d},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=be[l]||be._default,n=m[0],o=b.createElement("div");o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bk(k[i]);else bk(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||bc.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.expando,g=f.event.special,h=f.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&f.noData[j.nodeName.toLowerCase()])continue;c=j[f.expando];if(c){b=d[c]&&d[c][e];if(b&&b.events){for(var k in b.events)g[k]?f.event.remove(j,k):f.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[f.expando]:j.removeAttribute&&j.removeAttribute(f.expando),delete d[c]}}}});var bm=/alpha\([^)]*\)/i,bn=/opacity=([^)]*)/,bo=/([A-Z]|^ms)/g,bp=/^-?\d+(?:px)?$/i,bq=/^-?\d/,br=/^([\-+])=([\-+.\de]+)/,bs={position:"absolute",visibility:"hidden",display:"block"},bt=["Left","Right"],bu=["Top","Bottom"],bv,bw,bx;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bv(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=br.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bv)return bv(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return by(a,b,d);f.swap(a,bs,function(){e=by(a,b,d)});return e}},set:function(a,b){if(!bp.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return bn.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNaN(b)?"":"alpha(opacity="+b*100+")",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bm,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bm.test(g)?g.replace(bm,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bv(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bw=function(a,c){var d,e,g;c=c.replace(bo,"-$1").toLowerCase();if(!(e=a.ownerDocument.defaultView))return b;if(g=e.getComputedStyle(a,null))d=g.getPropertyValue(c),d===""&&!f.contains(a.ownerDocument.documentElement,a)&&(d=f.style(a,c));return d}),c.documentElement.currentStyle&&(bx=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bp.test(d)&&bq.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bv=bw||bx,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bz=/%20/g,bA=/\[\]$/,bB=/\r?\n/g,bC=/#.*$/,bD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bE=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bF=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bG=/^(?:GET|HEAD)$/,bH=/^\/\//,bI=/\?/,bJ=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bK=/^(?:select|textarea)/i,bL=/\s+/,bM=/([?&])_=[^&]*/,bN=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bO=f.fn.load,bP={},bQ={},bR,bS,bT=["*/"]+["*"];try{bR=e.href}catch(bU){bR=c.createElement("a"),bR.href="",bR=bR.href}bS=bN.exec(bR.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bO)return bO.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bJ,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bK.test(this.nodeName)||bE.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bB,"\r\n")}}):{name:b.name,value:c.replace(bB,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.bind(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?bX(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),bX(a,b);return a},ajaxSettings:{url:bR,isLocal:bF.test(bS[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bT},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bV(bP),ajaxTransport:bV(bQ),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?bZ(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=b$(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.resolveWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f._Deferred(),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bD.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.done,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bC,"").replace(bH,bS[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bL),d.crossDomain==null&&(r=bN.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bS[1]&&r[2]==bS[2]&&(r[3]||(r[1]==="http:"?80:443))==(bS[3]||(bS[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),bW(bP,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bG.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bI.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bM,"$1_="+x);d.url=y+(y===d.url?(bI.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bT+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=bW(bQ,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){s<2?w(-1,z):f.error(z)}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)bY(g,a[g],c,e);return d.join("&").replace(bz,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var b_=f.now(),ca=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+b_++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ca.test(b.url)||e&&ca.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ca,l),b.url===j&&(e&&(k=k.replace(ca,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cb=a.ActiveXObject?function(){for(var a in cd)cd[a](0,1)}:!1,cc=0,cd;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ce()||cf()}:ce,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c){if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cb&&delete cd[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cc,cb&&(cd||(cd={},f(a).unload(cb)),cd[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var cg={},ch,ci,cj=/^(?:toggle|show|hide)$/,ck=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cl,cm=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cn;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cq("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cr(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cq("hide",3),a,b,c);for(var d=0,e=this.length;d<e;d++)if(this[d].style){var g=f.css(this[d],"display");g!=="none"&&!f._data(this[d],"olddisplay")&&f._data(this[d],"olddisplay",g)}for(d=0;d<e;d++)this[d].style&&(this[d].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cq("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return this[e.queue===!1?"each":"queue"](function(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(f.support.inlineBlockNeedsLayout?(j=cr(this.nodeName),j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)):this.style.display="inline-block"))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)k=new f.fx(this,b,i),h=a[i],cj.test(h)?k[h==="toggle"?d?"show":"hide":h]():(l=ck.exec(h),m=k.cur(),l?(n=parseFloat(l[2]),o=l[3]||(f.cssNumber[i]?"":"px"),o!=="px"&&(f.style(this,i,(n||1)+o),m=(n||1)/k.cur()*m,f.style(this,i,m+o)),l[1]&&(n=(l[1]==="-="?-1:1)*n+m),k.custom(m,n,o)):k.custom(m,h,""));return!0})},stop:function(a,b){a&&this.queue([]),this.each(function(){var a=f.timers,c=a.length;b||f._unmark(!0,this);while(c--)a[c].elem===this&&(b&&a[c](!0),a.splice(c,1))}),b||this.dequeue();return this}}),f.each({slideDown:cq("show",1),slideUp:cq("hide",1),slideToggle:cq("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default,d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue!==!1?f.dequeue(this):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return d.step(a)}var d=this,e=f.fx;this.startTime=cn||co(),this.start=a,this.end=b,this.unit=c||this.unit||(f.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&f.timers.push(g)&&!cl&&(cl=setInterval(e.tick,e.interval))},show:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=cn||co(),c=!0,d=this.elem,e=this.options,g,h;if(a||b>=e.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),e.animatedProperties[this.prop]=!0;for(g in e.animatedProperties)e.animatedProperties[g]!==!0&&(c=!1);if(c){e.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){d.style["overflow"+b]=e.overflow[a]}),e.hide&&f(d).hide();if(e.hide||e.show)for(var i in e.animatedProperties)f.style(d,i,e.orig[i]);e.complete.call(d)}return!1}e.duration==Infinity?this.now=b:(h=b-this.startTime,this.state=h/e.duration,this.pos=f.easing[e.animatedProperties[this.prop]](this.state,h,0,1,e.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){for(var a=f.timers,b=0;b<a.length;++b)a[b]()||a.splice(b--,1);a.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cl),cl=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cs=/^t(?:able|d|h)$/i,ct=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cu(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);f.offset.initialize();var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.offset.doesNotAddBorder&&(!f.offset.doesAddBorderForTableAndCells||!cs.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={initialize:function(){var a=c.body,b=c.createElement("div"),d,e,g,h,i=parseFloat(f.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";f.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),d=b.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,this.doesNotAddBorder=e.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,e.style.position="fixed",e.style.top="20px",this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),f.offset.initialize=f.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.offset.initialize(),f.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=ct.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!ct.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cu(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cu(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a&&a.style?parseFloat(f.css(a,d,"padding")):null},f.fn["outer"+c]=function(a){var b=this[0];return b&&b.style?parseFloat(f.css(b,d,a?"margin":"border")):null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNaN(j)?i:j}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f})(window); \ No newline at end of file
diff --git a/admin/survey/minify/builder/ocCheck.php b/admin/survey/minify/builder/ocCheck.php
new file mode 100644
index 0000000..85b272c
--- /dev/null
+++ b/admin/survey/minify/builder/ocCheck.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * AJAX checks for zlib.output_compression
+ *
+ * @package Minify
+ */
+
+$app = (require __DIR__ . '/../bootstrap.php');
+/* @var \Minify\App $app */
+
+$_oc = ini_get('zlib.output_compression');
+
+// allow access only if builder is enabled
+if (!$app->config->enableBuilder) {
+ header('Location: /');
+ exit;
+}
+
+if ($app->env->get('hello')) {
+ // echo 'World!'
+
+ // try to prevent double encoding (may not have an effect)
+ ini_set('zlib.output_compression', '0');
+
+ HTTP_Encoder::$encodeToIe6 = true; // just in case
+ $he = new HTTP_Encoder(array(
+ 'content' => str_repeat('0123456789', 500),
+ 'method' => 'deflate',
+ ));
+ $he->encode();
+ $he->sendAll();
+
+} else {
+ // echo status "0" or "1"
+ header('Content-Type: text/plain');
+ echo (int)$_oc;
+}
diff --git a/admin/survey/minify/builder/rewriteTest.js b/admin/survey/minify/builder/rewriteTest.js
new file mode 100644
index 0000000..56a6051
--- /dev/null
+++ b/admin/survey/minify/builder/rewriteTest.js
@@ -0,0 +1 @@
+1 \ No newline at end of file
diff --git a/admin/survey/minify/builder/test.php b/admin/survey/minify/builder/test.php
new file mode 100644
index 0000000..b818f8c
--- /dev/null
+++ b/admin/survey/minify/builder/test.php
@@ -0,0 +1,43 @@
+<?php
+exit;
+/* currently unused.
+
+// capture PHP's default setting (may get overridden in config
+$_oc = ini_get('zlib.output_compression');
+
+// allow access only if builder is enabled
+require __DIR__ . '/../config.php';
+if (! $min_enableBuilder) {
+ exit;
+}
+
+if (isset($_GET['oc'])) {
+ header('Content-Type: text/plain');
+ echo (int)$_oc;
+
+} elseif (isset($_GET['text']) && in_array($_GET['text'], array('js', 'css', 'fake'))) {
+ ini_set('zlib.output_compression', '0');
+ $type = ($_GET['text'] == 'js')
+ ? 'application/x-javascript'
+ : "text/{$_GET['text']}";
+ header("Content-Type: {$type}");
+ echo 'Hello';
+
+} elseif (isset($_GET['docroot'])) {
+ if (false === realpath($_SERVER['DOCUMENT_ROOT'])) {
+ echo "<p class=topWarning><strong>realpath(DOCUMENT_ROOT) failed.</strong> You may need "
+ . "to set \$min_documentRoot manually (hopefully realpath() is not "
+ . "broken in your environment).</p>";
+ }
+ if (0 !== strpos(realpath(__FILE__), realpath($_SERVER['DOCUMENT_ROOT']))) {
+ echo "<p class=topWarning><strong>DOCUMENT_ROOT doesn't contain this file.</strong> You may "
+ . " need to set \$min_documentRoot manually</p>";
+ }
+ if (isset($_SERVER['SUBDOMAIN_DOCUMENT_ROOT'])) {
+ echo "<p class=topNote><strong>\$_SERVER['SUBDOMAIN_DOCUMENT_ROOT'] is set.</strong> "
+ . "You may need to set \$min_documentRoot to this in config.php</p>";
+ }
+
+}
+
+//*/ \ No newline at end of file
diff --git a/admin/survey/minify/composer.json b/admin/survey/minify/composer.json
new file mode 100644
index 0000000..d306dd7
--- /dev/null
+++ b/admin/survey/minify/composer.json
@@ -0,0 +1,55 @@
+{
+ "name": "mrclay/minify",
+ "type": "library",
+ "description": "Minify is a PHP5 app that helps you follow several rules for client-side performance. It combines multiple CSS or Javascript files, removes unnecessary whitespace and comments, and serves them with gzip encoding and optimal client-side cache headers",
+ "homepage": "https://github.com/mrclay/minify",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Stephen Clay",
+ "email": "steve@mrclay.org",
+ "role": "Developer"
+ }
+ ],
+ "support": {
+ "email": "minify@googlegroups.com",
+ "issues": "https://github.com/mrclay/minify/issues",
+ "wiki": "https://github.com/mrclay/minify/blob/master/docs"
+ },
+ "autoload": {
+ "classmap": ["lib/"]
+ },
+ "autoload-dev": {
+ "psr-4": {"Minify\\Test\\": "tests/"}
+ },
+ "require": {
+ "ext-pcre": "*",
+ "intervention/httpauth": "~2.0",
+ "monolog/monolog": "~1.1",
+ "mrclay/jsmin-php": "~2",
+ "mrclay/props-dic": "^2.2",
+ "php": "^5.3.0 || ^7.0",
+ "tubalmartin/cssmin": "~4"
+ },
+ "require-dev": {
+ "firephp/firephp-core": "~0.4.0",
+ "leafo/scssphp": "^0.3 || ^0.6 || ^0.7",
+ "marcusschwarz/lesserphp": "~0.5.1",
+ "meenie/javascript-packer": "~1.1",
+ "phpunit/phpunit": "^4.8.36",
+ "tedivm/jshrink": "~1.1.0"
+ },
+ "suggest": {
+ "firephp/firephp-core": "Use FirePHP for Log messages",
+ "marcusschwarz/lesserphp": "LESS support",
+ "meenie/javascript-packer": "Keep track of the Packer PHP port using Composer"
+ },
+ "scripts": {
+ "test": "phpunit"
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.0.x-dev"
+ }
+ }
+}
diff --git a/admin/survey/minify/composer.lock b/admin/survey/minify/composer.lock
new file mode 100644
index 0000000..62763c6
--- /dev/null
+++ b/admin/survey/minify/composer.lock
@@ -0,0 +1,1829 @@
+{
+ "_readme": [
+ "This file locks the dependencies of your project to a known state",
+ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
+ "This file is @generated automatically"
+ ],
+ "content-hash": "b346c2bc85c9aeeddf687cc19d722a9c",
+ "packages": [
+ {
+ "name": "container-interop/container-interop",
+ "version": "1.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/container-interop/container-interop.git",
+ "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8",
+ "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8",
+ "shasum": ""
+ },
+ "require": {
+ "psr/container": "^1.0"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Interop\\Container\\": "src/Interop/Container/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
+ "homepage": "https://github.com/container-interop/container-interop",
+ "time": "2017-02-14T19:40:03+00:00"
+ },
+ {
+ "name": "intervention/httpauth",
+ "version": "2.0.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Intervention/httpauth.git",
+ "reference": "69d4627c398c2d74b1c70aae7de7121e0b627c17"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Intervention/httpauth/zipball/69d4627c398c2d74b1c70aae7de7121e0b627c17",
+ "reference": "69d4627c398c2d74b1c70aae7de7121e0b627c17",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Intervention\\Httpauth\\HttpauthServiceProvider"
+ ],
+ "aliases": {
+ "Httpauth": "Intervention\\Httpauth\\Facades\\Httpauth"
+ }
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Intervention\\Httpauth\\": "src/Intervention/Httpauth"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Oliver Vogel",
+ "email": "oliver@olivervogel.com",
+ "homepage": "http://olivervogel.com/"
+ }
+ ],
+ "description": "HTTP authentication (Basic & Digest) including ServiceProviders for easy Laravel integration",
+ "homepage": "https://github.com/Intervention/httpauth",
+ "keywords": [
+ "Authentication",
+ "http",
+ "laravel"
+ ],
+ "time": "2017-06-28T17:37:25+00:00"
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "1.23.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
+ "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/log": "~1.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
+ "doctrine/couchdb": "~1.0@dev",
+ "graylog2/gelf-php": "~1.0",
+ "jakub-onderka/php-parallel-lint": "0.9",
+ "php-amqplib/php-amqplib": "~2.4",
+ "php-console/php-console": "^3.1.3",
+ "phpunit/phpunit": "~4.5",
+ "phpunit/phpunit-mock-objects": "2.3.0",
+ "ruflin/elastica": ">=0.90 <3.0",
+ "sentry/sentry": "^0.13",
+ "swiftmailer/swiftmailer": "^5.3|^6.0"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+ "sentry/sentry": "Allow sending log messages to a Sentry server"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "http://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ],
+ "time": "2017-06-19T01:22:40+00:00"
+ },
+ {
+ "name": "mrclay/jsmin-php",
+ "version": "2.3.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mrclay/jsmin-php.git",
+ "reference": "932c9633c35b390beb2cfdea69a41ea7dbc8d759"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mrclay/jsmin-php/zipball/932c9633c35b390beb2cfdea69a41ea7dbc8d759",
+ "reference": "932c9633c35b390beb2cfdea69a41ea7dbc8d759",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pcre": "*",
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.2"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "JSMin\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Stephen Clay",
+ "email": "steve@mrclay.org",
+ "role": "Developer"
+ },
+ {
+ "name": "Ryan Grove",
+ "email": "ryan@wonko.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "Provides a modified port of Douglas Crockford's jsmin.c, which removes unnecessary whitespace from JavaScript files.",
+ "homepage": "https://github.com/mrclay/jsmin-php/",
+ "keywords": [
+ "compress",
+ "jsmin",
+ "minify"
+ ],
+ "time": "2015-03-30T15:04:42+00:00"
+ },
+ {
+ "name": "mrclay/props-dic",
+ "version": "2.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mrclay/Props.git",
+ "reference": "9ed6cf3a027f1eab03abdd134ec209467cf9c77e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mrclay/Props/zipball/9ed6cf3a027f1eab03abdd134ec209467cf9c77e",
+ "reference": "9ed6cf3a027f1eab03abdd134ec209467cf9c77e",
+ "shasum": ""
+ },
+ "require": {
+ "container-interop/container-interop": "^1.1",
+ "php": ">=5.3.3",
+ "pimple/pimple": "~3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "Props\\": [
+ "src/",
+ "test/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Steve Clay",
+ "email": "steve@mrclay.org",
+ "homepage": "http://www.mrclay.org/"
+ }
+ ],
+ "description": "Props is a simple DI container that allows retrieving values via custom property and method names",
+ "keywords": [
+ "container",
+ "dependency injection",
+ "dependency injection container",
+ "di",
+ "di container"
+ ],
+ "time": "2016-02-10T18:59:20+00:00"
+ },
+ {
+ "name": "pimple/pimple",
+ "version": "v3.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/silexphp/Pimple.git",
+ "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32",
+ "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/container": "^1.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^3.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Pimple": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Pimple, a simple Dependency Injection Container",
+ "homepage": "http://pimple.sensiolabs.org",
+ "keywords": [
+ "container",
+ "dependency injection"
+ ],
+ "time": "2018-01-21T07:42:36+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "time": "2017-02-14T16:28:37+00:00"
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ],
+ "time": "2016-10-10T12:19:37+00:00"
+ },
+ {
+ "name": "tubalmartin/cssmin",
+ "version": "v4.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port.git",
+ "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tubalmartin/YUI-CSS-compressor-PHP-port/zipball/3cbf557f4079d83a06f9c3ff9b957c022d7805cf",
+ "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pcre": "*",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "cogpowered/finediff": "0.3.*",
+ "phpunit/phpunit": "4.8.*"
+ },
+ "bin": [
+ "cssmin"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "tubalmartin\\CssMin\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Túbal Martín",
+ "homepage": "http://tubalmartin.me/"
+ }
+ ],
+ "description": "A PHP port of the YUI CSS compressor",
+ "homepage": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port",
+ "keywords": [
+ "compress",
+ "compressor",
+ "css",
+ "cssmin",
+ "minify",
+ "yui"
+ ],
+ "time": "2018-01-15T15:26:51+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "doctrine/instantiator",
+ "version": "1.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/doctrine/instantiator.git",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3,<8.0-DEV"
+ },
+ "require-dev": {
+ "athletic/athletic": "~0.1.8",
+ "ext-pdo": "*",
+ "ext-phar": "*",
+ "phpunit/phpunit": "~4.0",
+ "squizlabs/php_codesniffer": "~2.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Marco Pivetta",
+ "email": "ocramius@gmail.com",
+ "homepage": "http://ocramius.github.com/"
+ }
+ ],
+ "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+ "homepage": "https://github.com/doctrine/instantiator",
+ "keywords": [
+ "constructor",
+ "instantiate"
+ ],
+ "time": "2015-06-14T21:17:01+00:00"
+ },
+ {
+ "name": "firephp/firephp-core",
+ "version": "v0.4.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/firephp/firephp-core.git",
+ "reference": "fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/firephp/firephp-core/zipball/fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf",
+ "reference": "fabad0f2503f9577fe8dd2cb1d1c7cd73ed2aacf",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "lib/FirePHPCore/FirePHP.class.php",
+ "lib/FirePHPCore/fb.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Christoph Dorn",
+ "email": "christoph@christophdorn.com",
+ "homepage": "http://christophdorn.com"
+ }
+ ],
+ "description": "Traditional FirePHPCore library for sending PHP variables to the browser.",
+ "homepage": "https://github.com/firephp/firephp-core",
+ "time": "2013-04-23T15:28:20+00:00"
+ },
+ {
+ "name": "leafo/scssphp",
+ "version": "v0.7.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/leafo/scssphp.git",
+ "reference": "8b538d828bbb75276974605c4a1a435e939da74e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/leafo/scssphp/zipball/8b538d828bbb75276974605c4a1a435e939da74e",
+ "reference": "8b538d828bbb75276974605c4a1a435e939da74e",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.4.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.6",
+ "squizlabs/php_codesniffer": "~2.5"
+ },
+ "bin": [
+ "bin/pscss"
+ ],
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Leafo\\ScssPhp\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Leaf Corcoran",
+ "email": "leafot@gmail.com",
+ "homepage": "http://leafo.net"
+ }
+ ],
+ "description": "scssphp is a compiler for SCSS written in PHP.",
+ "homepage": "http://leafo.github.io/scssphp/",
+ "keywords": [
+ "css",
+ "less",
+ "sass",
+ "scss",
+ "stylesheet"
+ ],
+ "time": "2018-02-09T02:04:21+00:00"
+ },
+ {
+ "name": "marcusschwarz/lesserphp",
+ "version": "v0.5.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/MarcusSchwarz/lesserphp.git",
+ "reference": "e9e3d53980c0e486b07c75e12f2bae5e10bdee44"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/MarcusSchwarz/lesserphp/zipball/e9e3d53980c0e486b07c75e12f2bae5e10bdee44",
+ "reference": "e9e3d53980c0e486b07c75e12f2bae5e10bdee44",
+ "shasum": ""
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.3"
+ },
+ "bin": [
+ "plessc"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "0.5.1-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "lessc.inc.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT",
+ "GPL-3.0"
+ ],
+ "authors": [
+ {
+ "name": "Leaf Corcoran",
+ "email": "leafot@gmail.com",
+ "homepage": "http://leafo.net"
+ },
+ {
+ "name": "Marcus Schwarz",
+ "email": "github@maswaba.de",
+ "homepage": "https://www.maswaba.de"
+ }
+ ],
+ "description": "lesserphp is a compiler for LESS written in PHP based on leafo's lessphp.",
+ "homepage": "http://leafo.net/lessphp/",
+ "time": "2016-09-30T11:13:18+00:00"
+ },
+ {
+ "name": "meenie/javascript-packer",
+ "version": "1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/meenie/javascript-packer.git",
+ "reference": "dcab0159ae1ed9d7535c034fb8afe1e4c3495d22"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/meenie/javascript-packer/zipball/dcab0159ae1ed9d7535c034fb8afe1e4c3495d22",
+ "reference": "dcab0159ae1ed9d7535c034fb8afe1e4c3495d22",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "class.JavaScriptPacker.php"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "LGPL 2.1"
+ ],
+ "authors": [
+ {
+ "name": "Nicolas Martin",
+ "role": "Developer"
+ }
+ ],
+ "description": "Composer hosted mirror of the PHP Version of Dean Edwards' JavaScript Packer",
+ "homepage": "http://joliclic.free.fr/php/javascript-packer/en/",
+ "keywords": [
+ "javascript packer"
+ ],
+ "time": "2013-03-25T21:54:33+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-common",
+ "version": "1.0.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jaap van Otterdijk",
+ "email": "opensource@ijaap.nl"
+ }
+ ],
+ "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
+ "homepage": "http://www.phpdoc.org",
+ "keywords": [
+ "FQSEN",
+ "phpDocumentor",
+ "phpdoc",
+ "reflection",
+ "static analysis"
+ ],
+ "time": "2017-09-11T18:02:19+00:00"
+ },
+ {
+ "name": "phpdocumentor/reflection-docblock",
+ "version": "3.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
+ "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/4aada1f93c72c35e22fb1383b47fee43b8f1d157",
+ "reference": "4aada1f93c72c35e22fb1383b47fee43b8f1d157",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.5",
+ "phpdocumentor/reflection-common": "^1.0@dev",
+ "phpdocumentor/type-resolver": "^0.3.0",
+ "webmozart/assert": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^4.4"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
+ "time": "2017-08-08T06:39:58+00:00"
+ },
+ {
+ "name": "phpdocumentor/type-resolver",
+ "version": "0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpDocumentor/TypeResolver.git",
+ "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/fb3933512008d8162b3cdf9e18dba9309b7c3773",
+ "reference": "fb3933512008d8162b3cdf9e18dba9309b7c3773",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5 || ^7.0",
+ "phpdocumentor/reflection-common": "^1.0"
+ },
+ "require-dev": {
+ "mockery/mockery": "^0.9.4",
+ "phpunit/phpunit": "^5.2||^4.8.24"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "phpDocumentor\\Reflection\\": [
+ "src/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Mike van Riel",
+ "email": "me@mikevanriel.com"
+ }
+ ],
+ "time": "2017-06-03T08:32:36+00:00"
+ },
+ {
+ "name": "phpspec/prophecy",
+ "version": "1.7.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/phpspec/prophecy.git",
+ "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/phpspec/prophecy/zipball/dfd6be44111a7c41c2e884a336cc4f461b3b2401",
+ "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": "^5.3|^7.0",
+ "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
+ "sebastian/comparator": "^1.1|^2.0",
+ "sebastian/recursion-context": "^1.0|^2.0|^3.0"
+ },
+ "require-dev": {
+ "phpspec/phpspec": "^2.5|^3.2",
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-0": {
+ "Prophecy\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Konstantin Kudryashov",
+ "email": "ever.zet@gmail.com",
+ "homepage": "http://everzet.com"
+ },
+ {
+ "name": "Marcello Duarte",
+ "email": "marcello.duarte@gmail.com"
+ }
+ ],
+ "description": "Highly opinionated mocking framework for PHP 5.3+",
+ "homepage": "https://github.com/phpspec/prophecy",
+ "keywords": [
+ "Double",
+ "Dummy",
+ "fake",
+ "mock",
+ "spy",
+ "stub"
+ ],
+ "time": "2018-02-19T10:16:54+00:00"
+ },
+ {
+ "name": "phpunit/php-code-coverage",
+ "version": "2.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
+ "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979",
+ "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "phpunit/php-file-iterator": "~1.3",
+ "phpunit/php-text-template": "~1.2",
+ "phpunit/php-token-stream": "~1.3",
+ "sebastian/environment": "^1.3.2",
+ "sebastian/version": "~1.0"
+ },
+ "require-dev": {
+ "ext-xdebug": ">=2.1.4",
+ "phpunit/phpunit": "~4"
+ },
+ "suggest": {
+ "ext-dom": "*",
+ "ext-xdebug": ">=2.2.1",
+ "ext-xmlwriter": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
+ "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
+ "keywords": [
+ "coverage",
+ "testing",
+ "xunit"
+ ],
+ "time": "2015-10-06T15:47:00+00:00"
+ },
+ {
+ "name": "phpunit/php-file-iterator",
+ "version": "1.4.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
+ "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+ "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+ "keywords": [
+ "filesystem",
+ "iterator"
+ ],
+ "time": "2017-11-27T13:52:08+00:00"
+ },
+ {
+ "name": "phpunit/php-text-template",
+ "version": "1.2.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-text-template.git",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Simple template engine.",
+ "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+ "keywords": [
+ "template"
+ ],
+ "time": "2015-06-21T13:50:34+00:00"
+ },
+ {
+ "name": "phpunit/php-timer",
+ "version": "1.0.9",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-timer.git",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Utility class for timing",
+ "homepage": "https://github.com/sebastianbergmann/php-timer/",
+ "keywords": [
+ "timer"
+ ],
+ "time": "2017-02-26T11:10:40+00:00"
+ },
+ {
+ "name": "phpunit/php-token-stream",
+ "version": "1.4.12",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+ "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16",
+ "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16",
+ "shasum": ""
+ },
+ "require": {
+ "ext-tokenizer": "*",
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.2"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Wrapper around PHP's tokenizer extension.",
+ "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+ "keywords": [
+ "tokenizer"
+ ],
+ "time": "2017-12-04T08:55:13+00:00"
+ },
+ {
+ "name": "phpunit/phpunit",
+ "version": "4.8.36",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit.git",
+ "reference": "46023de9a91eec7dfb06cc56cb4e260017298517"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517",
+ "reference": "46023de9a91eec7dfb06cc56cb4e260017298517",
+ "shasum": ""
+ },
+ "require": {
+ "ext-dom": "*",
+ "ext-json": "*",
+ "ext-pcre": "*",
+ "ext-reflection": "*",
+ "ext-spl": "*",
+ "php": ">=5.3.3",
+ "phpspec/prophecy": "^1.3.1",
+ "phpunit/php-code-coverage": "~2.1",
+ "phpunit/php-file-iterator": "~1.4",
+ "phpunit/php-text-template": "~1.2",
+ "phpunit/php-timer": "^1.0.6",
+ "phpunit/phpunit-mock-objects": "~2.3",
+ "sebastian/comparator": "~1.2.2",
+ "sebastian/diff": "~1.2",
+ "sebastian/environment": "~1.3",
+ "sebastian/exporter": "~1.2",
+ "sebastian/global-state": "~1.0",
+ "sebastian/version": "~1.0",
+ "symfony/yaml": "~2.1|~3.0"
+ },
+ "suggest": {
+ "phpunit/php-invoker": "~1.1"
+ },
+ "bin": [
+ "phpunit"
+ ],
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "4.8.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "The PHP Unit Testing framework.",
+ "homepage": "https://phpunit.de/",
+ "keywords": [
+ "phpunit",
+ "testing",
+ "xunit"
+ ],
+ "time": "2017-06-21T08:07:12+00:00"
+ },
+ {
+ "name": "phpunit/phpunit-mock-objects",
+ "version": "2.3.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+ "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983",
+ "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983",
+ "shasum": ""
+ },
+ "require": {
+ "doctrine/instantiator": "^1.0.2",
+ "php": ">=5.3.3",
+ "phpunit/php-text-template": "~1.2",
+ "sebastian/exporter": "~1.2"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "suggest": {
+ "ext-soap": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sb@sebastian-bergmann.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Mock Object library for PHPUnit",
+ "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+ "keywords": [
+ "mock",
+ "xunit"
+ ],
+ "time": "2015-10-02T06:51:40+00:00"
+ },
+ {
+ "name": "sebastian/comparator",
+ "version": "1.2.4",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/comparator.git",
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+ "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/diff": "~1.2",
+ "sebastian/exporter": "~1.2 || ~2.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.2.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides the functionality to compare PHP values for equality",
+ "homepage": "http://www.github.com/sebastianbergmann/comparator",
+ "keywords": [
+ "comparator",
+ "compare",
+ "equality"
+ ],
+ "time": "2017-01-29T09:50:25+00:00"
+ },
+ {
+ "name": "sebastian/diff",
+ "version": "1.4.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/diff.git",
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+ "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.4-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Kore Nordmann",
+ "email": "mail@kore-nordmann.de"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Diff implementation",
+ "homepage": "https://github.com/sebastianbergmann/diff",
+ "keywords": [
+ "diff"
+ ],
+ "time": "2017-05-22T07:24:03+00:00"
+ },
+ {
+ "name": "sebastian/environment",
+ "version": "1.3.8",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/environment.git",
+ "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
+ "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.8 || ^5.0"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Provides functionality to handle HHVM/PHP environments",
+ "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "keywords": [
+ "Xdebug",
+ "environment",
+ "hhvm"
+ ],
+ "time": "2016-08-18T05:49:44+00:00"
+ },
+ {
+ "name": "sebastian/exporter",
+ "version": "1.2.2",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/exporter.git",
+ "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4",
+ "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3",
+ "sebastian/recursion-context": "~1.0"
+ },
+ "require-dev": {
+ "ext-mbstring": "*",
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Volker Dusch",
+ "email": "github@wallbash.com"
+ },
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@2bepublished.at"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides the functionality to export PHP variables for visualization",
+ "homepage": "http://www.github.com/sebastianbergmann/exporter",
+ "keywords": [
+ "export",
+ "exporter"
+ ],
+ "time": "2016-06-17T09:04:28+00:00"
+ },
+ {
+ "name": "sebastian/global-state",
+ "version": "1.1.1",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/global-state.git",
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4",
+ "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.2"
+ },
+ "suggest": {
+ "ext-uopz": "*"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ }
+ ],
+ "description": "Snapshotting of global state",
+ "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "keywords": [
+ "global state"
+ ],
+ "time": "2015-10-12T03:26:01+00:00"
+ },
+ {
+ "name": "sebastian/recursion-context",
+ "version": "1.0.5",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/recursion-context.git",
+ "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
+ "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.4"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Jeff Welch",
+ "email": "whatthejeff@gmail.com"
+ },
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de"
+ },
+ {
+ "name": "Adam Harvey",
+ "email": "aharvey@php.net"
+ }
+ ],
+ "description": "Provides functionality to recursively process PHP variables",
+ "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
+ "time": "2016-10-03T07:41:43+00:00"
+ },
+ {
+ "name": "sebastian/version",
+ "version": "1.0.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/sebastianbergmann/version.git",
+ "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
+ "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6",
+ "shasum": ""
+ },
+ "type": "library",
+ "autoload": {
+ "classmap": [
+ "src/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Sebastian Bergmann",
+ "email": "sebastian@phpunit.de",
+ "role": "lead"
+ }
+ ],
+ "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+ "homepage": "https://github.com/sebastianbergmann/version",
+ "time": "2015-06-21T13:59:46+00:00"
+ },
+ {
+ "name": "symfony/yaml",
+ "version": "v3.4.6",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/symfony/yaml.git",
+ "reference": "6af42631dcf89e9c616242c900d6c52bd53bd1bb"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/symfony/yaml/zipball/6af42631dcf89e9c616242c900d6c52bd53bd1bb",
+ "reference": "6af42631dcf89e9c616242c900d6c52bd53bd1bb",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.5.9|>=7.0.8"
+ },
+ "conflict": {
+ "symfony/console": "<3.4"
+ },
+ "require-dev": {
+ "symfony/console": "~3.4|~4.0"
+ },
+ "suggest": {
+ "symfony/console": "For validating YAML files using the lint command"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.4-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Symfony\\Component\\Yaml\\": ""
+ },
+ "exclude-from-classmap": [
+ "/Tests/"
+ ]
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ },
+ {
+ "name": "Symfony Community",
+ "homepage": "https://symfony.com/contributors"
+ }
+ ],
+ "description": "Symfony Yaml Component",
+ "homepage": "https://symfony.com",
+ "time": "2018-02-16T09:50:28+00:00"
+ },
+ {
+ "name": "tedivm/jshrink",
+ "version": "v1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tedious/JShrink.git",
+ "reference": "688527a2e854d7935f24f24c7d5eb1b604742bf9"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tedious/JShrink/zipball/688527a2e854d7935f24f24c7d5eb1b604742bf9",
+ "reference": "688527a2e854d7935f24f24c7d5eb1b604742bf9",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "fabpot/php-cs-fixer": "0.4.0",
+ "phpunit/phpunit": "4.0.*",
+ "satooshi/php-coveralls": "dev-master"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-0": {
+ "JShrink": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Robert Hafner",
+ "email": "tedivm@tedivm.com"
+ }
+ ],
+ "description": "Javascript Minifier built in PHP",
+ "homepage": "http://github.com/tedious/JShrink",
+ "keywords": [
+ "javascript",
+ "minifier"
+ ],
+ "time": "2015-07-04T07:35:09+00:00"
+ },
+ {
+ "name": "webmozart/assert",
+ "version": "1.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/webmozart/assert.git",
+ "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
+ "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
+ "shasum": ""
+ },
+ "require": {
+ "php": "^5.3.3 || ^7.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^4.6",
+ "sebastian/version": "^1.0.1"
+ },
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.3-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Webmozart\\Assert\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Bernhard Schussek",
+ "email": "bschussek@gmail.com"
+ }
+ ],
+ "description": "Assertions to validate method input/output with nice error messages.",
+ "keywords": [
+ "assert",
+ "check",
+ "validate"
+ ],
+ "time": "2018-01-29T19:49:41+00:00"
+ }
+ ],
+ "aliases": [],
+ "minimum-stability": "stable",
+ "stability-flags": [],
+ "prefer-stable": false,
+ "prefer-lowest": false,
+ "platform": {
+ "ext-pcre": "*",
+ "php": "^5.3.0 || ^7.0"
+ },
+ "platform-dev": []
+}
diff --git a/admin/survey/minify/config-test.php b/admin/survey/minify/config-test.php
new file mode 100644
index 0000000..c903086
--- /dev/null
+++ b/admin/survey/minify/config-test.php
@@ -0,0 +1,10 @@
+<?php
+/**
+ * Additional configuration applied when the variable "test" is added to the querystring.
+ *
+ * To test config options, place them in this file and add "&test" to your Minify URL.
+ * Note that if this is on a public server, anyone can execute your test.
+ *
+ * @package Minify
+ */
+
diff --git a/admin/survey/minify/config.php b/admin/survey/minify/config.php
new file mode 100644
index 0000000..150fd86
--- /dev/null
+++ b/admin/survey/minify/config.php
@@ -0,0 +1,204 @@
+<?php
+/**
+ * Configuration for "min", the default application built with the Minify
+ * library
+ *
+ * @package Minify
+ */
+
+require( dirname(__FILE__) .'/../../../settings.php' );
+
+/**
+ * Enable the static serving feature
+ */
+$min_enableStatic = false;
+
+
+/**
+ * Allow use of the Minify URI Builder app. Only set this to true while you need it.
+ */
+$min_enableBuilder = true;
+
+
+/**
+ * Concatenate but do not minify the files. This can be used for testing.
+ */
+$min_concatOnly = false;
+
+
+/**
+ * If non-empty, the Builder will be protected with HTTP Digest auth.
+ * The username is "admin".
+ */
+$min_builderPassword = 'admin';
+
+
+/**
+ * Set to true to log messages to FirePHP (Firefox Firebug addon) and PHP's error_log
+ * Set to false for no error logging (Minify may be slightly faster).
+ */
+$min_errorLogger = false;
+
+
+/**
+ * To allow debug mode output, you must set this option to true.
+ *
+ * Once true, you can send the cookie minDebug to request debug mode output. The
+ * cookie value should match the URIs you'd like to debug. E.g. to debug
+ * /min/f=file1.js send the cookie minDebug=file1.js
+ * You can manually enable debugging by appending "&debug" to a URI.
+ * E.g. /min/?f=script1.js,script2.js&debug
+ *
+ * In 'debug' mode, Minify combines files with no minification and adds comments
+ * to indicate line #s of the original files.
+ */
+$min_allowDebugFlag = false;
+
+
+/**
+ * For best performance, specify your temp directory here. Otherwise Minify
+ * will have to load extra code to guess. Some examples below:
+ */
+//$min_cachePath = 'c:\\WINDOWS\\Temp';
+//$min_cachePath = '/tmp';
+//$min_cachePath = preg_replace('/^\\d+;/', '', session_save_path());
+$min_cachePath = $site_path.'admin/survey/minify/cache';
+
+
+/**
+ * To use APC/Memcache/ZendPlatform for cache storage, require the class and
+ * set $min_cachePath to an instance. Example below:
+ */
+//$min_cachePath = new Minify_Cache_APC();
+
+
+/**
+ * Leave an empty string to use PHP's $_SERVER['DOCUMENT_ROOT'].
+ *
+ * On some servers, this value may be misconfigured or missing. If so, set this
+ * to your full document root path with no trailing slash.
+ * E.g. '/home/accountname/public_html' or 'c:\\xampp\\htdocs'
+ *
+ * If /min/ is directly inside your document root, just uncomment the
+ * second line. The third line might work on some Apache servers.
+ */
+$min_documentRoot = '';
+//$min_documentRoot = $site_path; // TOLE MORA BIT NA TUSU; DRUGACE NE DELAJO VIRTUALKE!?
+//$min_documentRoot = dirname(dirname(__DIR__));
+//$min_documentRoot = substr(__FILE__, 0, -15);
+//$min_documentRoot = $_SERVER['SUBDOMAIN_DOCUMENT_ROOT'];
+
+
+/**
+ * Cache file locking. Set to false if filesystem is NFS. On at least one
+ * NFS system flock-ing attempts stalled PHP for 30 seconds!
+ */
+$min_cacheFileLocking = true;
+
+
+/**
+ * Combining multiple CSS files can place @import declarations after rules, which
+ * is invalid. Minify will attempt to detect when this happens and place a
+ * warning comment at the top of the CSS output. To resolve this you can either
+ * move the @imports within your CSS files, or enable this option, which will
+ * move all @imports to the top of the output. Note that moving @imports could
+ * affect CSS values (which is why this option is disabled by default).
+ */
+$min_serveOptions['bubbleCssImports'] = false;
+
+
+/**
+ * Cache-Control: max-age value sent to browser (in seconds). After this period,
+ * the browser will send another conditional GET. Use a longer period for lower
+ * traffic but you may want to shorten this before making changes if it's crucial
+ * those changes are seen immediately.
+ *
+ * Note: Despite this setting, if you include a number at the end of the
+ * querystring, maxAge will be set to one year. E.g. /min/f=hello.css&123456
+ */
+$min_serveOptions['maxAge'] = 1800;
+
+
+/**
+ * To use the CSS compressor that shipped with 2.x, uncomment the following line:
+ */
+//$min_serveOptions['minifiers'][Minify::TYPE_CSS] = array('Minify_CSS', 'minify');
+
+
+/**
+ * To use Google's Closure Compiler API to minify Javascript (falling back to JSMin
+ * on failure), uncomment the following line:
+ */
+//$min_serveOptions['minifiers']['application/x-javascript'] = array('Minify_JS_ClosureCompiler', 'minify');
+
+
+/**
+ * If you'd like to restrict the "f" option to files within/below
+ * particular directories below DOCUMENT_ROOT, set this here.
+ * You will still need to include the directory in the
+ * f or b GET parameters.
+ *
+ * // = shortcut for DOCUMENT_ROOT
+ */
+//$min_serveOptions['minApp']['allowDirs'] = array('//js', '//css');
+
+/**
+ * Set to true to disable the "f" GET parameter for specifying files.
+ * Only the "g" parameter will be considered.
+ */
+$min_serveOptions['minApp']['groupsOnly'] = true;
+
+
+/**
+ * By default, Minify will not minify files with names containing .min or -min
+ * before the extension. E.g. myFile.min.js will not be processed by JSMin
+ *
+ * To minify all files, set this option to null. You could also specify your
+ * own pattern that is matched against the filename.
+ */
+//$min_serveOptions['minApp']['noMinPattern'] = '@[-\\.]min\\.(?:js|css)$@i';
+
+
+/**
+ * If you minify CSS files stored in symlink-ed directories, the URI rewriting
+ * algorithm can fail. To prevent this, provide an array of link paths to
+ * target paths, where the link paths are within the document root.
+ *
+ * Because paths need to be normalized for this to work, use "//" to substitute
+ * the doc root in the link paths (the array keys). E.g.:
+ * <code>
+ * array('//symlink' => '/real/target/path') // unix
+ * array('//static' => 'D:\\staticStorage') // Windows
+ * </code>
+ */
+$min_symlinks = array();
+
+
+/**
+ * If you upload files from Windows to a non-Windows server, Windows may report
+ * incorrect mtimes for the files. This may cause Minify to keep serving stale
+ * cache files when source file changes are made too frequently (e.g. more than
+ * once an hour).
+ *
+ * Immediately after modifying and uploading a file, use the touch command to
+ * update the mtime on the server. If the mtime jumps ahead by a number of hours,
+ * set this variable to that number. If the mtime moves back, this should not be
+ * needed.
+ *
+ * In the Windows SFTP client WinSCP, there's an option that may fix this
+ * issue without changing the variable below. Under login > environment,
+ * select the option "Adjust remote timestamp with DST".
+ * @link http://winscp.net/eng/docs/ui_login_environment#daylight_saving_time
+ */
+$min_uploaderHoursBehind = 0;
+
+
+/**
+ * Advanced: you can replace some of the PHP classes Minify uses to serve requests.
+ * To do this, assign a callable to one of the elements of the $min_factories array.
+ *
+ * You can see the default implementations (and what gets passed in) in index.php.
+ */
+//$min_factories['minify'] = ... a callable accepting a Minify\App object
+//$min_factories['controller'] = ... a callable accepting a Minify\App object
+
diff --git a/admin/survey/minify/docs/AlternateFileLayouts.wiki.md b/admin/survey/minify/docs/AlternateFileLayouts.wiki.md
new file mode 100644
index 0000000..2333cd7
--- /dev/null
+++ b/admin/survey/minify/docs/AlternateFileLayouts.wiki.md
@@ -0,0 +1,30 @@
+If you test sites in a subdirectory (e.g. `http://localhost/testSite/`) rather than a virtualhost, then you'll need to adjust the way you use Minify to rewrite CSS correctly.
+
+1. Place the following in `config.php`:
+
+```php
+// Set the document root to be the path of the "site root"
+$min_documentRoot = substr(__FILE__, 0, -11);
+
+// Set $sitePrefix to the path of the site from the webserver's real docroot
+list($sitePrefix) = explode('/index.php', $_SERVER['SCRIPT_NAME'], 2);
+
+// Prepend $sitePrefix to the rewritten URIs in CSS files
+$min_symlinks['//' . ltrim($sitePrefix, '/')] = $min_documentRoot;
+```
+
+2. In the HTML, make your Minify URIs document-relative (e.g. `min/f=js/file.js` and `../min/f=js/file.js`), not root-relative.
+
+Now the `min` application should operate correctly from a subdirectory and will serve files relative to your "site" root rather than the document root. E.g.
+
+| **environment** | production | testing |
+|:----------------|:-----------|:--------|
+| **server document root** | `/home/mysite_com/www` | `/var/www` |
+| **`$min_documentRoot` ("site root")** | `/home/mysite_com/www` | `/var/www/testSite` |
+| **`$sitePrefix`** | (empty) | `/testSite` |
+| **Minify URL** | `http://mysite.com/min/f=js/file1.js` | `http://localhost/testSite/min/f=js/file1.js` |
+| **file served** | `/home/mysite_com/www/js/file1.js` | `/var/www/testSite/js/file1.js` |
+
+Caveats:
+ * This configuration may break the Builder application (located at `/min/builder/`) used to create Minify URIs, but you can still create them by hand.
+ * Make sure you don't reset `$min_symlinks` to a different value lower in your config file. \ No newline at end of file
diff --git a/admin/survey/minify/docs/BuilderApp.wiki.md b/admin/survey/minify/docs/BuilderApp.wiki.md
new file mode 100644
index 0000000..f4a5b75
--- /dev/null
+++ b/admin/survey/minify/docs/BuilderApp.wiki.md
@@ -0,0 +1,9 @@
+Minify ships with "Builder", a simple Javascript app for constructing URIs to use with Minify. ([screenshots of the 2.1.0 version](http://www.mrclay.org/index.php/2008/09/19/minify-21-on-mrclayorg/))
+
+It also does some run-time checks of your PHP and Minify configuration to look for problematic settings like [auto-encoding](CommonProblems.wiki.md#output-is-distortedrandom-chars).
+
+After installation, this is found at **`http://example.com/min/builder/`**
+
+You must enable it by editing `config.php` and setting `$min_enableBuilder = true;`
+
+After use, you should disable it by resetting `$min_enableBuilder = false;` \ No newline at end of file
diff --git a/admin/survey/minify/docs/CommonProblems.wiki.md b/admin/survey/minify/docs/CommonProblems.wiki.md
new file mode 100644
index 0000000..cb72b69
--- /dev/null
+++ b/admin/survey/minify/docs/CommonProblems.wiki.md
@@ -0,0 +1,132 @@
+If this page doesn't help, please post a question on our [Google group](http://groups.google.com/group/minify).
+
+## URIs are re-written incorrectly in CSS output
+
+See [UriRewriting](UriRewriting.wiki.md).
+
+## Builder Fails / 400 Errors
+
+This is usually due to an unusual server setup. You can see the cause of 400 responses using FirePHP (See [Debugging](Debugging.wiki.md)).
+
+## Long URL parameters are ignored
+
+Some server setups will refuse to populate very long `$_GET` params. Use [groups](UserGuide.wiki.md#using-groups-for-nicer-urls) to shorten the URLs.
+
+## PHP/Apache crashes
+
+[PCRE (which provides regular expressions) commonly crashes PHP](https://www.google.com/search?q=pcre+php+crash) and this is nearly impossible to solve in PHP code. Things to try:
+
+ * Raise Apache's [ThreadStackSize](http://stackoverflow.com/a/7597506/3779)
+ * In [php.ini](http://php.net/manual/en/pcre.configuration.php) raise `pcre.backtrack_limit` and `pcre.recursion_limit` to 1000000. These will allow processing longer strings, but also require a larger stack size.
+ * Use YUICompressor instead of PHP-based CSS compressors
+
+## Dealing with Javascript errors
+
+Short answer: **use Minify 2.1.4+, use a pre-compressed version of your file, and rename it `*.min.js` or `*-min.js`**. By default Minify won't try to minify these files (but will still gzip them). The [Compressor Rater](http://compressorrater.thruhere.net/) is handy for compressing files individually.
+
+If the error is in your code, enable [debug mode](Debugging.wiki.md) while debugging your code in Firebug or your favorite browser's Javascript debugger. This will insert comments to allow you to keep track of the individual source locations in the combined file.
+
+If you have Java on your web host, you can use the [wrapper for YUI Compressor](../lib/Minify/YUICompressor.php) instead of JSMin. [This thread](http://groups.google.com/group/minify/browse_thread/thread/f12f25f27e1256fe) shows how a user has done this.
+
+## Javascript isn't being minified
+
+If the filename ends with **`-min.js`** or **`.min.js`**, Minify will assume the file is already compressed and just combine it with any other files.
+
+### Scriptaculous
+
+Scriptaculous 1.8.2 (and probably all 1.x) has an [autoloader script](http://github.com/madrobby/scriptaculous/blob/4b49fd8884920d4ee760b0194431f4f433f878df/src/scriptaculous.js#L54) that requires files to be in a particular place on disk. To serve Scriptaculous modules with Minify, just serve `prototype.js` and the individual support files (e.g. `dragdrop.js`, `effects.js`) and the library should work fine. E.g.:
+
+```
+<script src="/min/f=scriptaculous/lib/prototype.js" type="text/javascript"></script>
+<script src="/min/b=scriptaculous/src&amp;f=effects.js,dragdrop.js" type="text/javascript"></script>
+<script type="text/javascript">
+/* DragDrop and Effects modules can be used here. */
+</script>
+```
+
+## Server cache files won't update
+
+If you upload files using [Coda or Transmit](http://groups.google.com/group/coda-users/browse_thread/thread/572d2dc315ec02e7/) or from a Windows PC to a non-Windows server, your new files may end up with the wrong `mtime` (timestamp) on the server, confusing the cache system.
+
+Setting the [$min\_uploaderHoursBehind option](../config.php#L171) in `config.php` can compensate for this.
+
+WinSCP has a [Daylight Saving Time option](http://winscp.net/eng/docs/ui_login_environment#daylight_saving_time) that can prevent this issue.
+
+This can also occur if your files are changed, and the `mtime` is set in the past (e.g. via a `git checkout` operation). If so you'll have to `touch` the changed files or use some other method to make the `mtime` current.
+
+## Can't see changes in browser
+
+Generally changes aren't seen because a) the browser is refusing to send a new request, or b) the server doesn't recognize that your source files have been modified after the server cache was created.
+
+First, place the Minify URL directly in the address bar and refresh.
+
+If a change is not seen, verify that the server cache file is being updated.
+
+## Disable Caching
+
+If you'd like to temporarily disable the cache without using [debug mode](Debugging.wiki.md), place these settings at the end of `config.php`:
+```php
+// disable server caching
+$min_cachePath = null;
+// prevent client caching
+$min_serveOptions['maxAge'] = 0;
+$min_serveOptions['lastModifiedTime'] = $_SERVER['REQUEST_TIME'];
+```
+**Don't do this on a production server!** Minify will have to combine, minify, and gzencode on every request.
+
+## Character Encodings
+
+_Please_ use UTF-8. The string processing may work on encodings like Windows-1251 but will certainly fail on radically different ones like UTF-16.
+
+If you consistently use a different encoding, in `config.php` set `$min_serveOptions['contentTypeCharset']` to this encoding to send it in the Content-Type header.
+
+Otherwise, set it to `false` to remove it altogether. You can still, in CSS, use the [@charset](http://www.w3.org/TR/CSS2/syndata.html#x50) directive to tell the browser the encoding, but (a) it must appear first and (b) shouldn't appear later in the output (and Minify won't enforce this).
+
+Moral? To minimize problems, use UTF-8 and remove any `@charset` directives from your CSS.
+
+## @imports can appear in invalid locations in combined CSS files
+
+If you combine CSS files, @import declarations can appear after CSS rules, invalidating the stylesheet. As of version 2.1.2, if Minify detects this, it will prepend a warning to the output CSS file. To resolve this, you can either move your @import statements within your files, or enable the option 'bubbleCssImports'.
+
+## Debug mode can cause a Javascript error
+
+This issue was resolved in version 2.1.2.
+
+Debug mode adds line numbers in comments. Unfortunately, in versions <= 2.1.1, if the source file had a string or regex containing (what looks like) a C-style comment token, the algorithm was confused and the injected comments caused a syntax error.
+
+## Minification can cause a Javascript error
+
+This issue was resolved in version 2.1.2.
+
+In rare instances the [JSMin](https://github.com/mrclay/jsmin-php/blob/master/src/JSMin/JSMin.php) algorithm in versions <= 2.1.1 could be confused by regexes in certain contexts and throw an exception. The workaround was to simply wrap the expression in parenthesis. E.g.
+```js
+// in 2.1.1 and previous
+return /'/; // JSMin throws error
+return (/'/); // no error
+```
+
+## Output is distorted/random chars
+
+What you're seeing is a mismatch between the content encoding the browser expects and what it receives.
+
+The usual problem is that a global PHP or web server configuration is causing the output of PHP scripts to be automatically gzipped. Since Minify already outputs gzipped content, the browser receives "double encoded" content which it interprets as noise. The Builder app in 2.1.4 sometimes can tell you which component is causing the auto-encoding.
+
+## Can't specify more than 10 files via URL
+
+Use Minify 2.1.4+. Before there was a setting to adjust the maximum allowed.
+
+## Directory Listing Denied
+
+This may also appear as "Virtual Directory does not allow contents to be listed". Minify requires that the URI `/min/` (a request for a directory listing) result in the execution of `/min/index.php`. On Apache, you would make sure `index.php` is listed in the [DirectoryIndex directive](http://httpd.apache.org/docs/2.0/mod/mod_dir.html#directoryindex). IIS calls this the [Default Document](http://www.iis.net/ConfigReference/system.webServer/defaultDocument).
+
+## "WARN: environment : Local HTTP request failed. Testing cannot continue."
+
+The `test_environment.php` unit test makes a few local HTTP requests to sniff for `zlib.output_compression` and other auto-encoding behavior, which may break Minify's output. This warning will appear if `allow_url_fopen` is disabled in php.ini, but **does not** necessarily mean there is a problem.
+
+If Minify seems to work fine, ignore the warning. If Minify produces garbled output, enable `allow_url_fopen` in php.ini and re-run the tests. The tests may be able to tell you if PHP or your server is automatically encoding output.
+
+Unless you need it in other scripts, disable `allow_url_fopen` once the issue is resolved. Minify does not need it.
+
+## See Also
+
+ * [Debugging](Debugging.wiki.md)
diff --git a/admin/survey/minify/docs/ComponentClasses.wiki.md b/admin/survey/minify/docs/ComponentClasses.wiki.md
new file mode 100644
index 0000000..824590f
--- /dev/null
+++ b/admin/survey/minify/docs/ComponentClasses.wiki.md
@@ -0,0 +1,16 @@
+# PHP5 Component Classes
+
+(This information is not updated for version 3)
+
+| **Class** | **Functionality** |
+|:----------|:------------------|
+| [Minify](http://code.google.com/p/minify/source/browse/min/lib/Minify.php) | Combine, process, and serve pieces of content (usually CSS/JS files). Almost all behavior is configurable including request handling (via [controllers](http://code.google.com/p/minify/source/browse/min/lib/Minify/Controller/)), HTTP headers & encoding, caching ([file/APC/memcached](http://code.google.com/p/minify/source/browse/min/lib/Minify/Cache/)), and compression functions (by default, the classes below) |
+| [JSMin](http://code.google.com/p/minify/source/browse/min/lib/JSMin.php) | A port of [jsmin.c](http://www.crockford.com/javascript/jsmin.html), extended to preserve some multi-line comments and IE conditional comments (since these occasionally have their [uses](http://dean.edwards.name/weblog/2007/03/sniff/)). |
+| [Minify\_CSS](http://code.google.com/p/minify/source/browse/min/lib/Minify/CSS.php) | Uses the two classes below to minify CSS and optionally rewrite URIs. |
+| [Minify\_CSS\_Compressor](http://code.google.com/p/minify/source/browse/min/lib/Minify/CSS/Compressor.php) | Agressively minifies CSS. Includes a thorough [test suite](http://code.google.com/p/minify/source/browse/min_unit_tests/_test_files/css/) to make sure most common [hacks](http://code.google.com/p/minify/source/browse/min_unit_tests/_test_files/css/hacks.css) and [unusual syntaxes](http://code.google.com/p/minify/source/browse/min_unit_tests/_test_files/css/unusual_strings.css) are preserved. |
+| [Minify\_CSS\_UriRewriter](http://code.google.com/p/minify/source/browse/min/lib/Minify/CSS/UriRewriter.php) | In CSS files, rewrites file-relative URIs as root-relative. With [test suite](http://code.google.com/p/minify/source/browse/min_unit_tests/_test_files/css_uriRewriter/) |
+| [Minify\_HTML](http://code.google.com/p/minify/source/browse/min/lib/Minify/HTML.php) | Agressively minifies (X)HTML markup. Preserves TEXTAREA/PRE contents, can invoke minifiers on STYLE and SCRIPT blocks, and wraps content in CDATA blocks in XHTML when necessary. Includes [test suite](http://code.google.com/p/minify/source/browse/min_unit_tests/_test_files/html/). |
+| [Minify\_YUICompressor](http://code.google.com/p/minify/source/browse/min/lib/Minify/YUICompressor.php) | (Experimental) PHP wrapper for invoking the Java-based [YUI Compressor](http://developer.yahoo.com/yui/compressor/) |
+| [Minify\_ImportProcessor](http://code.google.com/p/minify/source/browse/min/lib/Minify/ImportProcessor.php) | Linearize a CSS/JS file by including content specified by CSS import declarations. In CSS files, relative URIs are fixed. This has a test suite but should be considered "experimental". |
+| [HTTP\_Encoder](http://code.google.com/p/minify/source/browse/min/lib/HTTP/Encoder.php) | Applies HTTP encoding to content. Can serve content with conditional encoding based on Accept-Encoding headers (parsed according to [HTTP spec](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html)) and known browser bugs. |
+| [HTTP\_ConditionalGet](http://code.google.com/p/minify/source/browse/min/lib/HTTP/ConditionalGet.php) | Implements HTTP conditional GETs via a simple, flexible API. | \ No newline at end of file
diff --git a/admin/survey/minify/docs/CookBook.wiki.md b/admin/survey/minify/docs/CookBook.wiki.md
new file mode 100644
index 0000000..85828da
--- /dev/null
+++ b/admin/survey/minify/docs/CookBook.wiki.md
@@ -0,0 +1,142 @@
+Unless mentioned, all the following snippets go in `config.php`.
+
+## Faster Cache Performance
+
+By default, Minify uses `Minify_Cache_File`. It uses `readfile`/`fpassthru` to improve performance over most file-based systems, but it's still file IO, so the following caching options should be faster. In all cases, Minify cache ids begin with `"minify_"`.
+
+### APC
+
+```php
+$min_cachePath = new Minify_Cache_APC();
+```
+
+### Memcache
+
+You must create and connect your Memcache object then pass it to `Minify_Cache_Memcache`'s constructor.
+```php
+$memcache = new Memcache;
+$memcache->connect('localhost', 11211);
+$min_cachePath = new Minify_Cache_Memcache($memcache);
+```
+
+### Zend Platform
+
+```php
+$min_cachePath = new Minify_Cache_ZendPlatform();
+```
+
+### XCache
+
+```php
+$min_cachePath = new Minify_Cache_XCache();
+```
+
+### WinCache
+
+```php
+$min_cachePath = new Minify_Cache_WinCache();
+```
+
+## Closure Compiler API Wrapper
+
+An [experimental wrapper for Google's closure compiler API](../lib/Minify/JS/ClosureCompiler.php) is available for compressing Javascript. If the API fails for any reason, JSMin is used as the default backup minifier.
+```php
+$min_serveOptions['minifiers'][Minify::TYPE_JS] = array('Minify_JS_ClosureCompiler', 'minify');
+```
+
+## YUICompressor
+
+If your host can execute Java, you can use Minify's YUI Compressor wrapper. You'll need the latest [yuicompressor-x.x.x.jar](https://github.com/yui/yuicompressor/releases) and a temp directory. Place the .jar in `min/lib`, then:
+```php
+function yuiJs($js) {
+ Minify_YUICompressor::$jarFile = __DIR__ . '/lib/yuicompressor-x.x.x.jar';
+ Minify_YUICompressor::$tempDir = '/tmp';
+ return Minify_YUICompressor::minifyJs($js);
+}
+$min_serveOptions['minifiers'][Minify::TYPE_JS] = 'yuiJs';
+```
+
+To use YUIC for CSS with fixed URIs:
+
+```php
+function yuiCss($css, $options) {
+ Minify_YUICompressor::$jarFile = __DIR__ . '/lib/yuicompressor-x.x.x.jar';
+ Minify_YUICompressor::$tempDir = '/tmp';
+ $css = Minify_YUICompressor::minifyCss($css);
+
+ $css = Minify_CSS_UriRewriter::rewrite(
+ $css
+ ,$options['currentDir']
+ ,isset($options['docRoot']) ? $options['docRoot'] : $_SERVER['DOCUMENT_ROOT']
+ ,isset($options['symlinks']) ? $options['symlinks'] : array()
+ );
+ return $css;
+}
+$min_serveOptions['minifiers'][Minify::TYPE_CSS] = 'yuiCss';
+```
+
+## Legacy CSS compressor
+
+In 3.x, Minify uses [CSSmin](https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port), a PHP port of the YUI CSS compressor. To use the compressor that came with Minify 2.x (not recommended), uncomment this line in your `config.php` file:
+
+```php
+//$min_serveOptions['minifiers'][Minify::TYPE_CSS] = array('Minify_CSS', 'minify');
+```
+
+## Server-specific Options
+
+You may need to have different options depending on what server you're on. You can do this just how you'd expect:
+```php
+if ($_SERVER['SERVER_NAME'] == 'myTestingWorkstation') {
+ // testing
+ $min_allowDebugFlag = true;
+ $min_errorLogger = true;
+ $min_enableBuilder = true;
+ $min_cachePath = 'c:\\WINDOWS\\Temp';
+ $min_serveOptions['maxAge'] = 0; // see changes immediately
+} else {
+ // production
+ $min_allowDebugFlag = false;
+ $min_errorLogger = false;
+ $min_enableBuilder = false;
+ $min_cachePath = '/tmp';
+ $min_serveOptions['maxAge'] = 86400;
+}
+```
+
+## Site in a Subdirectory
+
+If you test/develop sites in a subdirectory (e.g. `http://localhost/siteA/`), see AlternateFileLayouts.
+
+## Group-specific Options
+
+In "group" requests, `$_GET['g']` holds the group key, so you can code based on it:
+```php
+if (isset($_GET['g'])) {
+ switch ($_GET['g']) {
+ case 'js' : $min_serveOptions['maxAge'] = 86400 * 7;
+ break;
+ case 'css': $min_serveOptions['contentTypeCharset'] = 'iso-8859-1';
+ break;
+ }
+}
+```
+
+## File/Source-specific Options
+
+See CustomSource.
+
+## Processing Output After Minification
+
+If `$min_serveOptions['postprocessor']` is set to a callback, Minify will pass the minified content to this function with type as the second argument. This allows you to apply changes to your minified content without making your own custom minifier. E.g.:
+```php
+function postProcess($content, $type) {
+ if ($type === Minify::TYPE_CSS) {
+ require_once 'CssColorReplacer.php';
+ return CssColorReplacer::process($content);
+ }
+ return $content;
+}
+$min_serveOptions['postprocessor'] = 'postProcess';
+```
+This function is only called once immediately after minification and its output is stored in the cache. \ No newline at end of file
diff --git a/admin/survey/minify/docs/CustomServer.wiki.md b/admin/survey/minify/docs/CustomServer.wiki.md
new file mode 100644
index 0000000..7d7b266
--- /dev/null
+++ b/admin/survey/minify/docs/CustomServer.wiki.md
@@ -0,0 +1,108 @@
+Please see the UserGuide if you're just getting started with Minify. This guide is for more advanced users who wish to implement an HTTP server in PHP using the `Minify` class.
+
+## Pull in Minify via Composer
+
+In composer.json:
+```
+ "require": {
+ "mrclay/minify": "~3"
+ },
+```
+
+```bash
+composer install
+```
+
+## Set up autoloading, caching, and the Minify instance
+
+Minify ships with several [cache classes](https://github.com/mrclay/minify/tree/master/lib/Minify/Cache) for files, APC, memcache, etc.:
+
+```php
+require __DIR__ . '/vendor/autoload.php';
+
+$cache = new Minify_Cache_APC();
+$minify = new Minify($cache);
+```
+
+## Create the environment and the factory for source objects
+
+```php
+$env = new Minify_Env();
+$sourceFactory = new Minify_Source_Factory($env, [], $cache);
+```
+
+## Choose a Minify controller
+
+Minify uses controller classes to analyze the environment (HTTP requests) and determine which sources will make up the response. (The content isn't always returned; if the browser's cache is valid, Minify can return a 304 header instead).
+
+The `Files` controller doesn't care about the HTTP request. It just specifies a given array of sources (file paths or [source objects](CustomSource.md)).
+
+The `Groups` controller uses `$_SERVER['PATH_INFO']` to choose from an array of source lists. There's an example at the end of this page.
+
+The Files controller is simple, so we'll use it here.
+
+```php
+$controller = new Minify_Controller_Files($env, $sourceFactory);
+```
+
+## Set up service and controller options
+
+A single array is used for configuring both the behavior of `Minify::serve` (see the [default options](../lib/Minify.php#L73)) and the controller, which has its own option keys.
+
+The Files controller only needs one key: `files`: the array of sources to be combined and served.
+
+The only `serve` option we'll set is `maxAge` (the default is only 1800 seconds).
+
+```php
+$options = [
+ // options for the controller
+ 'files' => ['//js/file1.js', '//js/file2.js'],
+
+ // options for Minify::serve
+ 'maxAge' => 86400,
+ 'minifierOptions' => [
+ 'text/css' => [
+ 'docRoot' => $env->getDocRoot(), // allows URL rewriting
+ ],
+ ],
+];
+```
+
+Note: `files` can also accept `Minify_Source` objects, which allow serving more than static files.
+
+## Handle the request
+
+```php
+$minify->serve($controller, $options);
+```
+
+That's it...
+
+Minify's default application (`index.php`) is implemented similarly, but uses the `MinApp` controller. If you need URL rewriting in CSS files, you'll need to configure
+
+# The Request Cycle
+
+In handling a request, `Minify::serve` does a number of operations:
+
+ 1. Minify merges your given options with its default options
+ 1. calls the controller's `createConfiguration()`, which analyzes the request and returns a `Minify_ServeConfiguration` object, encapsulating the source objects found.
+ 1. uses `analyzeSources()` to determine the Content-Type and last modified time.
+ 1. determines if the browser accepts gzip
+ 1. validates the browser cache (optionally responding with a 304)
+ 1. validates the server cache. If it needs refreshing, `combineMinify()` fetchs and combines the content of each source.
+ 1. sets up headers to be sent
+ 1. either returns the headers and content in an array (if `quiet` is set), or sends it to the browser.
+
+# Using the Groups controller
+
+The Groups controller uses `$_SERVER['PATH_INFO']` to select an array of sources from the given options:
+```
+$options = [
+ 'groups' => [
+ 'js' => ['//js/file1.js', '//js/file2.js'],
+ 'css' => ['//css/file1.css', '//css/file2.css'],
+ ],
+];
+```
+
+With the above, if you request `http://example.org/myServer.php/css`, Apache will set `$_SERVER['PATH_INFO'] = '/css'` and the sources in `$options['groups']['css']` will be served.
diff --git a/admin/survey/minify/docs/CustomSource.wiki.md b/admin/survey/minify/docs/CustomSource.wiki.md
new file mode 100644
index 0000000..41764f6
--- /dev/null
+++ b/admin/survey/minify/docs/CustomSource.wiki.md
@@ -0,0 +1,136 @@
+In `groupsConfig.php`, usually you specify source file paths using strings like `/path/to/file.js` or `//js/file1.js` (Minify expands this to `"{$_SERVER['DOCUMENT_ROOT']}/js/file1.js"` ).
+
+Instead of a string, you may substitute an instance of class `Minify_Source`. This allows you to customize how minification is applied, and/or pull content from a non-file location (e.g. a URL).
+
+### Example: filepath
+
+In the `$spec` array, set the key `filepath` to produce a source based on a file path:
+
+```php
+$src1 = new Minify_Source(array(
+ 'filepath' => '//js/file1.js',
+));
+$src2 = new Minify_Source(array(
+ 'filepath' => '//js/file2.js',
+));
+
+return [
+ 'js' => [$src1, $src2]
+];
+```
+
+Note the above is functionally identical to:
+```php
+return [
+ 'js' => ['//js/file1.js', '//js/file2.js'],
+];
+```
+
+### Example: Specify a different minifier or none at all
+
+To change minifier, set `minifier` to a [callback](http://php.net/manual/en/language.pseudo-types.php)`*` or the empty string (for none):
+
+**`*`Prepare for `groupsConfig.php` to be executed more than once.** (This is likely if you're using the functions in `/min/utils.php`.) In practice this just means making sure functions are conditionally defined if they don't already exist, etc.
+
+```php
+$src1 = new Minify_Source(array(
+ 'filepath' => '//js/file1.js',
+ 'minifier' => 'myJsMinifier',
+));
+$src2 = new Minify_Source(array(
+ 'filepath' => '//js/file2.js',
+ 'minifier' => 'Minify::nullMinifier', // don't compress
+));
+```
+In the above, `JmyJsMinifier()` is only called when the contents of `$src1` is needed.
+
+**`*`Do _not_ use `create_function()` or anonymous functions for the minifier.** The internal names of these function tend to vary, causing endless cache misses, killing performance and filling cache storage up.
+
+## Non-File Sources
+
+You're not limited to flat js/css files, but without `filepath`, the `$spec` array must contain these keys:
+
+ * **`id `** a unique string id for this source. (e.g. `'my source'`)
+ * **`getContentFunc `** a [callback](http://php.net/manual/en/language.pseudo-types.php) that returns the content. The function is only called when the cache is rebuilt.
+ * **`contentType `** `Minify::TYPE_JS` or `Minify::TYPE_CSS`
+ * **`lastModified `** a timestamp indicating when the content last changed. (If you can't determine this quickly, you can "fake" it using a step function, causing the cache to be periodically rebuilt.)
+
+### Example: Content from a URL
+
+Here we want to fetch javascript from a URL. We don't know when it will change, so we use a stepping expression to re-fetch it every midnight:
+```php
+if (! function_exists('src1_fetch')) {
+ function src1_fetch() {
+ return file_get_contents('http://example.org/javascript.php');
+ }
+}
+$src1 = new Minify_Source([
+ 'id' => 'source1',
+ 'getContentFunc' => 'src1_fetch',
+ 'contentType' => Minify::TYPE_JS,
+ 'lastModified' => ($_SERVER['REQUEST_TIME'] - $_SERVER['REQUEST_TIME'] % 86400),
+]);
+```
+
+If you know that the URL content only depends on a few local files, you can use the maximum of their `mtime`s as the `lastModified` key:
+```php
+$src1 = new Minify_Source([
+ 'id' => 'source1',
+ 'getContentFunc' => 'src1_fetch',
+ 'contentType' => Minify::TYPE_JS,
+ 'lastModified' => max(
+ filemtime('/path/to/javascript.php')
+ ,filemtime('/path/to/javascript_input.css')
+ ),
+]);
+```
+
+## Performance Considerations
+
+Be aware that all the code you put in `groupsConfig.php` will be evaluated upon every request like `/min/g=...`, so make it as light as possible.
+
+If you wish to keep `groupsConfig.php` "clean", you can alternately create a separate PHP script that manually sets up sources, caching, options, and calls Minify::serve().
+
+```php
+// myServer.php
+/**
+ * This script implements a Minify server for a single set of sources.
+ * If you don't want '.php' in the URL, use mod_rewrite...
+ */
+
+require __DIR__ . '/vendor/autoload.php';
+
+// setup Minify
+$cache = new Minify_Cache_File();
+$minify = new Minify($cache);
+$env = new Minify_Env();
+$sourceFactory = new Minify_Source_Factory($env, [], $cache);
+$controller = new Minify_Controller_Files($env, $sourceFactory);
+
+function src1_fetch() {
+ return file_get_contents('http://example.org/javascript.php');
+}
+
+// setup sources
+$sources = [];
+$sources[] = new Minify_Source([
+ 'id' => 'source1',
+ 'getContentFunc' => 'src1_fetch',
+ 'contentType' => Minify::TYPE_JS,
+ 'lastModified' => max(
+ filemtime('/path/to/javascript.php'),
+ filemtime('/path/to/javascript_input.js')
+ ),
+]);
+$sources[] = '//file2.js';
+$sources[] = '//file3.js';
+
+// setup serve and controller options
+$options = [
+ 'files' => $sources,
+ 'maxAge' => 86400,
+];
+
+// handle request
+$minify->serve($controller, $options);
+```
diff --git a/admin/survey/minify/docs/Debugging.wiki.md b/admin/survey/minify/docs/Debugging.wiki.md
new file mode 100644
index 0000000..dfbb475
--- /dev/null
+++ b/admin/survey/minify/docs/Debugging.wiki.md
@@ -0,0 +1,80 @@
+# Server Errors
+
+| **Code** | **Most likely cause** |
+|:---------|:----------------------|
+| 400 | Controller failed to return valid set of sources to serve |
+| 500 | Minifier threw exception (e.g. JSMin choked on syntax) |
+
+You can find details by enabling FirePHP logging:
+
+ 1. Install/enable FirePHP for [Firefox](https://addons.mozilla.org/en-US/firefox/addon/6149) or [Chrome](https://chrome.google.com/webstore/detail/firephp4chrome/gpgbmonepdpnacijbbdijfbecmgoojma?hl=en-US).
+ 1. Open the Chrome DevTools/Firebug console
+ 1. Set `$min_errorLogger = true;` in config.php
+ 1. Reload the Minify URL
+
+Hopefully you'll see the error appear:
+
+```
+Minify: Something bad happened!
+```
+
+# Javascript/CSS Problems
+
+When Javascript errors occur, or URIs in CSS files are incorrectly rewritten, enable "debug mode" to ease debugging combined files:
+
+ 1. Set `$min_allowDebugFlag = true;` in config.php
+ 1. Append `&debug` to the Minify URI. E.g. `/min/?f=script1.js,script2.js&debug` (or use the bookmarklet provided by /min/builder/)
+
+In "debug mode":
+
+ * comments are inserted into the output showing you line numbers in the original file(s)
+ * no minification is performed
+ * In CSS, URI rewriting _is_ performed
+ * In CSS, a leading comment shows how URIs were rewritten.
+
+Example: a combination of two Javascript files in debug mode
+
+```js
+/* firstFile.js */
+
+/* 1 */ (function () {
+/* 2 */ if (window.foo) {
+...
+/* 11 */ })();
+
+;
+/* secondFile.js */
+
+/* 1 */ var Foo = window.Foo || {};
+/* 2 */
+...
+```
+
+Example: Top of CSS output in debug mode
+
+```
+docRoot : M:\home\foo\www
+currentDir : M:\home\foo\www\css
+
+file-relative URI : typography.css
+path prepended : M:\home\foo\www\css\typography.css
+docroot stripped : \css\typography.css
+traversals removed : /css/typography.css
+
+file-relative URI : ../images/bg.jpg
+path prepended : M:\home\foo\www\css\..\images\bg.jpg
+docroot stripped : \css\..\images\bg.jpg
+traversals removed : /images/bg.jpg
+```
+
+### Tips for handling Javascript errors
+
+ * Use the latest version (2.1.4 beta as of Dec 2010)
+ * Try [debug mode](#javascriptcss-problems) to make the combined file more readable (and error locations findable)
+ * Find out if other browsers have the same error
+ * For pre-minified files, make the filenames end in `.min.js` or `-min.js`, which will prevent Minify from altering them
+ * Test your scripts in [JSLint](http://www.jslint.com/).
+
+## See Also
+
+ * [CommonProblems](CommonProblems.wiki.md)
diff --git a/admin/survey/minify/docs/FAQ.wiki.md b/admin/survey/minify/docs/FAQ.wiki.md
new file mode 100644
index 0000000..738a5b5
--- /dev/null
+++ b/admin/survey/minify/docs/FAQ.wiki.md
@@ -0,0 +1,51 @@
+## Minify (JSMin) doesn't compress as much as product XYZ. Why not?
+
+The simple JSMin algorithm is the most reliable in PHP, but check the [CookBook](CookBook.wiki.md) to plug in other minifiers.
+
+## How fast is it?
+
+If you [serve static files](../static/README.md), it's as fast as your web server, and you should do this for high-traffic sites.
+
+The PHP-based server is not as fast, but still performs well thanks to an internal cache. Tips:
+
+ * **Use a reverse proxy** to cache the Minify URLs. This is by far the most important tip.
+ * Revision your Minify URIs (so far-off Expires headers will be sent). One way to do this is using [groups](UserGuide.wiki.md#using-groups-for-nicer-urls) and the [Minify_groupUri()](UserGuide.wiki.md#far-future-expires-headers) utility function. Without this, clients will re-request Minify URLs every 30 minutes to check for updates.
+ * Use the [APC/Memcache adapters](CookBook.wiki.md).
+
+## Does it support gzip compression?
+
+Yes. Based on the browser's Accept-Encoding header.
+
+## Does it work with PHP opcode caches?
+
+Yes, and you can also use [APC for content caching](CookBook.wiki.md).
+
+## Can it minify remote files/the output of dynamic scripts?
+
+[Yes](CustomSource.wiki.md#non-file-sources), but it's not a straightforward setup, and probably best avoided.
+
+## Is there a minifier for HTML?
+
+The class `Minify_HTML` can do this (and minify embedded STYLE and SCRIPT elements), but it's too slow to use directly. You'd want to integrate it into a system that caches the output. E.g., in a CMS, keep one copy for editing and one minified for serving.
+
+## How does it ensure that the client can't request files it shouldn't have access to?
+
+Minify allows files to be specified using the URI, or using pre-configured sets of files. With URI-specified files, Minify is very careful to serve only JS/CSS files that are already public on your server, but if you hide public directories--with .htaccess, e.g.--Minify can't know that. Obvious Tip: don't put sensitive info in JS/CSS files inside DOC_ROOT :)
+
+An included option can disable URI-specified files so Minify will serve only the pre-configured file sets.
+
+## Is it used in production by any large-scale websites?
+
+The libraries are used in many CMS's and frameworks, but the use of `index.php` to serve URLs like http://example.com/min/f=hello.js probably is rare. Minify is made to drop in place to boost small to medium sites not already built for performance.
+
+Version 2.1.1 had 54K downloads.
+
+## Can I use it with my commercial website or product?
+
+Yes. Minify is distributed under the [New BSD License](http://www.opensource.org/licenses/bsd-license.php).
+
+## How can I tell if my server cache is working?
+
+The easiest way is to place a Minify URL directly in your browser's address bar and refresh (F5), which should override the client-side caching that Minify specifies and force Minify to send you a complete response. With cache working, this response should take 100ms or so. Without cache, it could be multiple seconds.
+
+If you have file access to the server you can check your cache path directly for filenames beginning with `minify_`. \ No newline at end of file
diff --git a/admin/survey/minify/docs/Install.wiki.md b/admin/survey/minify/docs/Install.wiki.md
new file mode 100644
index 0000000..328e873
--- /dev/null
+++ b/admin/survey/minify/docs/Install.wiki.md
@@ -0,0 +1,61 @@
+# Installation
+
+Minify requires PHP 5.3+, `git`, and `composer`.
+
+## Typical Installation
+
+Clone the project into the `min/` directory inside your document root and install its dependencies:
+
+```bash
+cd /path/to/public_html
+git clone https://github.com/mrclay/minify.git min
+cd min
+composer install --no-dev
+```
+
+**Note:** If you do this on localhost, make sure the `min/vendor/` directory gets deployed to production.
+
+## Installing as a composer dependency
+
+Add `"mrclay/minify": "~3.0.0"` to your site's composer.json, and `composer install`.
+
+The following assumes your `vendor` directory is in your document root. Adjust the `MINIFY` path as needed:
+
+```bash
+cd /path/to/public_html
+mkdir min
+MIN=min/
+MINIFY=vendor/mrclay/minify/
+cp ${MINIFY}example.index.php ${MIN}index.php
+cp ${MINIFY}.htaccess ${MIN}
+cp ${MINIFY}config.php ${MIN}
+cp ${MINIFY}groupsConfig.php ${MIN}
+cp ${MINIFY}quick-test.js ${MIN}
+cp ${MINIFY}quick-test.css ${MIN}
+```
+
+Edit `min/index.php` to remove the ``die()`` statement and adjust the `vendor` path as needed.
+
+**Note:** This does not install the [URL builder](BuilderApp.wiki.md), but it's not necessary for operation.
+
+## Verifing it works
+
+You can verify it works via these two URLs:
+
+* http://example.org/min/?f=min/quick-test.js
+* http://example.org/min/?f=min/quick-test.css
+
+If your server supports mod_rewrite, the `?` are not necessary:
+
+* http://example.org/min/f=min/quick-test.js
+* http://example.org/min/f=min/quick-test.css
+
+## Having trouble?
+
+Write the [Google Group](http://groups.google.com/group/minify) for help.
+
+## More links
+
+* [Usage instructions](UserGuide.wiki.md)
+* [Cookbook](CookBook.wiki.md) for more advanced options
+* [All docs](docs)
diff --git a/admin/survey/minify/docs/MinApp.wiki.md b/admin/survey/minify/docs/MinApp.wiki.md
new file mode 100644
index 0000000..07bb017
--- /dev/null
+++ b/admin/survey/minify/docs/MinApp.wiki.md
@@ -0,0 +1,14 @@
+"Min" is the front end application `index.php` that handles requests to `http://example.com/min/` and responds with compressed/combined content.
+
+When the documentation refers to "Minify" it usually means this application, but sometimes refers to the [ComponentClasses](ComponentClasses.wiki.md).
+
+User-configurable files:
+
+ * `/config.php`: general configuration
+ * `/groupsConfig.php`: configuration of pre-defined groups of files
+
+Other files of interest:
+
+ * `/.htaccess`: rewrites URLs for the front controller
+ * `/index.php`: front controller
+ * `/lib/Minify/Controller/MinApp.php`: determines which files are combined based on `$_GET`, sets some default options
diff --git a/admin/survey/minify/docs/UriRewriting.wiki.md b/admin/survey/minify/docs/UriRewriting.wiki.md
new file mode 100644
index 0000000..f6c9b19
--- /dev/null
+++ b/admin/survey/minify/docs/UriRewriting.wiki.md
@@ -0,0 +1,73 @@
+## Default operation
+
+Minify uses an algorithm to rewrite relative URIs in CSS output to root-relative URIs so that each link points to the same location it did in its original file.
+
+Say your style sheet `http://example.org/theme/fashion/style.css` contains:
+```
+body { background: url(bg.jpg); }
+```
+
+When Minify serves this content (from `http://example.org/min/f=theme/fashion/style.css` or `http://example.org/min/g=css`) it re-writes the URI so the image is correctly linked:
+```
+body{background:url(/theme/fashion/bg.jpg)}
+```
+
+You can see the steps used to rewrite your URIs by enabling [debug mode](Debugging.wiki.md).
+
+## Disable Rewriting
+
+You can disable the automatic rewriting by setting this in config.php:
+```php
+$min_serveOptions['rewriteCssUris'] = false;
+```
+
+## Manual Rewriting
+
+You can manually rewrite relative URIs in CSS in a couple ways. The simplest is to prepend a string to each relative URI:
+```php
+$min_serveOptions['rewriteCssUris'] = false;
+$min_serveOptions['minifierOptions'][Minify::TYPE_CSS]['prependRelativePath'] = '/css/';
+```
+
+Or you can run the minified output through a custom [post-processor](CookBook.wiki.md#Processing_Output_After_Minification.md) function.
+
+## Document Root Confusion
+
+Out-of-the-box, Minify gets confused when `min` is placed in a subdirectory of the real document root. There's now a [simple workaround](AlternateFileLayouts.md) for this, making `min` more portable.
+
+## Aliases / Symlinks / Virtual Directories
+
+Whether you use [aliases](http://httpd.apache.org/docs/2.2/mod/mod_alias.html), [symlinks](http://en.wikipedia.org/wiki/Symbolic_link), or [virtual directories](http://msdn.microsoft.com/en-us/library/zwk103ab.aspx), if you make content outside of the DOC\_ROOT available at public URLs, Minify may need manual configuration of the `$min_symlinks` option to rewrite some URIs correctly. Consider this scenario, where `http://example.org/static/style.css` will serve `/etc/static_content/style.css`:
+
+| document root | `/var/www` |
+|:------------------|:--------------------------------------------|
+| Apache mod\_alias | `Alias /static /etc/static_content` |
+| ...or symlink | `ln -s /etc/static_content /var/www/static` |
+
+In `/config.php` you'll need the following:
+```php
+// map URL path to file path
+$min_symlinks = array(
+ '//static' => '/etc/static_content'
+);
+```
+This lets Minify know during the rewriting process that an internal file path starting with `/etc/static_content` should be rewritten as a public URI beginning with `/static`.
+
+If your alias target directory is outside of DOC\_ROOT, you'll also need to explicitly allow Minify to serve files from it:
+```php
+$min_serveOptions['minApp']['allowDirs'] = array(
+ '//', // allow from the normal DOC_ROOT
+ '/etc/static_content' // allow from our alias target
+);
+```
+
+### What's my document root?
+
+You can enable the script `min/server-info.php` and open http://example.org/min/server-info.php to find useful `$_SERVER` values. People in the [Google Group](https://groups.google.com/forum/#!forum/minify) might need these to help you.
+
+## It's still not working
+
+ 1. Make sure you have the latest version.
+ 1. Enable [debug mode](Debugging.wiki.md), which will show you the URI transformation process.
+ 1. Check that `$_SERVER['DOCUMENT_ROOT']` is the correct directory path. If not, URI rewriting will fail. If you cannot fix this in httpd.conf, etc., set `$min_documentRoot` in config.php.
+ 1. Paste your [debug mode](Debugging.wiki.md) comment block into a new post on the [minify mailing list](http://groups.google.com/group/minify).
diff --git a/admin/survey/minify/docs/UserGuide.wiki.md b/admin/survey/minify/docs/UserGuide.wiki.md
new file mode 100644
index 0000000..1a83c00
--- /dev/null
+++ b/admin/survey/minify/docs/UserGuide.wiki.md
@@ -0,0 +1,129 @@
+If this page doesn't help, please post a question on our [Google group](http://groups.google.com/group/minify).
+
+# Creating Minify URLs
+
+Let's say you want to serve the file http://example.com/css/foo/bar.css
+
+You would use the URL http://example.com/min/?f=css/foo/bar.css
+
+In other words, the "f" argument is set to the file path from root without the initial `/`. As CSS files may contain relative URIs, Minify will automatically "fix" these by rewriting them as root relative.
+
+To combine multiple files, separate the paths given to "f" with commas.
+
+Let's say you have JS files at these URLs:
+
+* http://example.com/scripts/library-1.5.js
+* http://example.com/scripts/site.js
+
+You'd use the URL http://example.com/min/?f=scripts/library-1.5.js,scripts/site.js
+
+## Shortening URLs with common directories
+
+If you're combining files that share the same ancestor directory, you can use the "b" argument to set the base directory for the "f" argument. Do not include the leading or trailing `/` characters.
+
+E.g., the following URLs will serve the exact same content:
+
+* http://example.com/min/?f=path/to/scripts/library-1.5.js,path/to/scripts/foo/site.js
+* http://example.com/min/?b=path/to/scripts&f=library-1.5.js,site.js,home.js
+
+# Limiting access to directories
+
+By default, Minify will serve any CSS/JS files within the DOCUMENT_ROOT. If you'd prefer to limit Minify's access to certain directories, set the `$min_serveOptions['minApp']['allowDirs']` array in config.php. E.g. to limit to the `/js` and `/themes/default` directories, use:
+
+```php
+$min_serveOptions['minApp']['allowDirs'] = ['//js', '//themes/default'];
+```
+
+# Using groups for nicer URLs
+
+For nicer URLs, edit groupsConfig.php to pre-specify groups of files to be combined under preset keys. E.g., here's an example configuration in groupsConfig.php:
+
+```php
+return [
+ 'js' => ['//js/Class.js', '//js/email.js'],
+];
+```
+
+This pre-selects the following files to be combined under the key "js":
+
+* http://example.com/js/Class.js
+* http://example.com/js/email.js
+
+You can now serve these files with http://example.com/min/?g=js
+
+## Specifying files outside the document root
+
+In the groupsConfig.php array, the `//` in the file paths is a shortcut for the DOCUMENT_ROOT, but you can also specify paths from the root of the filesystem or relative to the DOC_ROOT:
+
+```php
+return [
+ 'js' => [
+ '//js/file.js', // file within DOC_ROOT
+ '//../file.js', // file in parent directory of DOC_ROOT
+ 'C:/Users/Steve/file.js', // file anywhere on filesystem
+ ],
+];
+```
+
+## Multiple groups and files in one URL
+
+E.g.: http://example.com/min/?g=js&f=more/scripts.js
+
+Separate group keys with commas: http://example.com/min/?g=baseCss,css1&f=moreStyles.css
+
+## Creating URLs with the Builder
+
+Enable the [BuilderApp](BuilderApp.wiki.md) via config.php. The default password is "admin", but even if no password is used there's very little server information disclosed.
+
+Browse to http://example.com/min/builder/
+
+The Minify URI Builder will help you create URIs you can use to minify existing files on your site. You can see screenshots and get a feel for this process from this [walkthrough on mrclay.org](http://mrclay.org/index.php/2008/09/19/minify-21-on-mrclayorg/)
+
+You may want to disable the [BuilderApp](BuilderApp.wiki.md) when not in use.
+
+# Far-future Expires headers
+
+Minify can send far-future (one year) Expires headers. To enable this you must add a number or the parameter "v" to the querystring (e.g. `/min/?g=js&1234` or `/min/?g=js&v=1234`) and alter it whenever a source file is changed. If you have a build process you can use a build/source control revision number.
+
+You can alternately use the utility function `Minify_getUri()` to get a "versioned" Minify URI for use in your HTML (it sniffs the `mtime` of the files). E.g.:
+
+```php
+require 'path/to/min/utils.php';
+
+$jsUri = Minify_getUri('js'); // a key in groupsConfig.php
+echo "<script src='{$jsUri}'></script>";
+
+$cssUri = Minify_getUri([ // a list of files
+ '//css/styles1.css',
+ '//css/styles2.css',
+]);
+echo "<link rel=stylesheet href='{$cssUri}'>";
+```
+
+# Debug mode
+
+In debug mode, instead of compressing files, Minify sends combined files with comments prepended to each line to show the line number in the original source file. To enable this, set `$min_allowDebugFlag` to `true` in config.php and append `&debug=1` to your URIs. E.g. `/min/?f=script1.js,script2.js&debug=1`
+
+Known issue: files with comment-like strings/regexps can cause problems in this mode.
+
+# Configuration
+
+See [config.php](../config.php) for general config options.
+
+[groupsConfig.php](../groupsConfig.php) holds preset groups of files to minify. (The builder application can help with this).
+
+[CookBook](CookBook.wiki.md) shows how to customize settings between production/development environments, and between groups.
+
+[CustomSource](CustomSource.wiki.md) shows how to set some file/source-specific options, or serve content from a PHP script or URL.
+
+### Hosting on Lighttpd
+
+Minify comes with Apache mod_rewrite rules, but this does the same for Lighttpd:
+
+```
+url.rewrite-once = ( "^/min/([a-z]=.*)" => "/min/index.php?$1" )
+```
+
+# Problems?
+
+See [CommonProblems](CommonProblems.wiki.md) and [Debugging](Debugging.wiki.md). You might also try running `server-info.php` in particular.
diff --git a/admin/survey/minify/docs/old/HowItWorks.wiki.md b/admin/survey/minify/docs/old/HowItWorks.wiki.md
new file mode 100644
index 0000000..e1be599
--- /dev/null
+++ b/admin/survey/minify/docs/old/HowItWorks.wiki.md
@@ -0,0 +1,31 @@
+### Browsers, trust your cache
+
+In all responses a `Cache-Control` header is sent, telling the browser it doesn't need to "check in" with the server for some period of time. The ideal request is the one that never leaves the browser!
+
+### Convert a request to source objects
+
+When the browser makes a request like `/min/g=css`, Apache rewrites this to `/min/index.php?g=css`, which calls Minify's front controller.
+
+A separate controller then uses the querystring to establish a "sources" array, specifying exactly which objects (usually files) are to be included in the final output.
+
+### Try browser cache
+
+Minify finds the latest modification time of all the source objects (`filemtime` for files, so if you use a tool that doesn't update this, you might need to `touch` your modified files).
+
+If the browser has sent an `If-Modified-Since` header, and it's valid (the given date is older than the most recent source), then a 304 header is returned, execution stops, and the browser uses its cache copy.
+
+### Try server cache
+
+Minify generates a unique cache ID for the particular set of sources and their options. This is used to maintain a cache (file usually) of the final output.
+
+If the cache is "valid" (younger than the most recently modified source), then its content is sent along with a `Last-Modified` header with the most recent source's modification time, and execution stops.
+
+### Minification has to be done
+
+If any source is younger than the cache, the cache must be rebuilt from the minification process (slow, but infrequently done):
+
+Minify processes each source with a "minifier" function (determined by the content type of the sources and source-specific options), combines them to a single string, saves this to the cache object, then serves it with the `Last-Modified` header as sbove.
+
+#### Content encoding
+
+Minify actually stores a gzipped version of each output in a second cache object. If the browser supports it, Minify streams the pre-compressed content straight from cache (disk usually) to the browser. \ No newline at end of file
diff --git a/admin/survey/minify/docs/old/HttpCaching.wiki.md b/admin/survey/minify/docs/old/HttpCaching.wiki.md
new file mode 100644
index 0000000..33e410c
--- /dev/null
+++ b/admin/survey/minify/docs/old/HttpCaching.wiki.md
@@ -0,0 +1,63 @@
+# HTTP Caching in Minify
+
+## Conditional GET
+
+Minify sends all files with Last-Modified and ETag headers. If the browser requests a file again it will send along If-Modified-Since and If-None-Match headers. Minify checks these headers and, if the browser has the latest version, sends back only a slim "304 Not Modified" response (no content), telling the browser to use its cached file.
+
+## Expires Header
+
+Minify also sends Expires and Cache-Control: max-age headers, indicating that the file should be considered valid for a period of time. In future page views the browser will not re-request the file (unless the user refreshes), and instead will use the cached version.
+
+By default, Minify sends an Expires header for 1800 seconds (30 minutes) into the future (configurable via `$min_serveOptions['maxAge']`). This means your file changes may not be seen by users immediately after you make them. If your changes must be seen immediately, you should reduce max-age to 0, but note you will not get as much benefit, as browsers will still have to send requests **every time**.
+
+## Far-off Expires
+
+When pre-set groups are used and a number is appended to the minify URI (e.g. `/min/g=css&456`), then Minify sends an Expires date of 1 year in the future. This is great for caching, but places responsibility on your HTML pages. They _must_ change the number whenever a JS/CSS source file is updated, or the browser will not know to re-request the file. If you're generating your page with PHP, the [Minify\_groupUri](http://code.google.com/p/minify/source/browse/min/utils.php?r=222#11) utility function can make this easier to manage.
+
+# Using `HTTP_ConditionalGet` in other projects
+
+Minify uses the PHP class [HTTP\_ConditionalGet](http://code.google.com/p/minify/source/browse/lib/HTTP/ConditionalGet.php) to implement the conditional GET model. To use this in your own project you'll need the last modification time of your content (for a file, use [filemtime()](http://www.php.net/filemtime)), or a short hash digest of the content (something that changes when the content changes). You'll also want to consider if the content can be stored in public caches, or should only be stored in the user's browser.
+
+## When the last modification time is known
+
+In this example we implement conditional GET for a mostly-static PHP script. The browser needs to redownload the content only when the file is updated.
+
+```
+// top of file
+$cg = new HTTP_ConditionalGet(array(
+ 'isPublic' => true,
+ 'lastModifiedTime' => filemtime(__FILE__)
+));
+$cg->sendHeaders();
+if ($cg->cacheIsValid) { // 304 already sent
+ exit();
+}
+// rest of script
+```
+
+For the first request the browser's cache won't be valid, so the full script will execute, sending the full content. On the next, the cache will be valid and the sendHeaders() method will have already set the 304 header, so the script can be halted.
+
+There's also a shortcut static method for this:
+```
+HTTP_ConditionalGet::check(filemtime(__FILE__), true); // exits if client has cache
+// rest of script
+```
+
+## When last modification time isn't known
+
+Let's say you have an HTML page in a database, but no modification time. To reduce DB requests, you cache this content in a file/memory, but you'd also like to reduce bandwidth. In this case, what you can do is also cache a hash of the page along with the content. Now you can do this:
+
+```
+$cache = getCache();
+$cg = new HTTP_ConditionalGet(array(
+ 'isPublic' => true,
+ 'contentHash' => $cache['hash']
+));
+$cg->sendHeaders();
+if ($cg->cacheIsValid) { // 304 already sent
+ exit();
+}
+echo $cache['page'];
+```
+
+Although Last-Modified cannot be set, ETag will serve the same purposes in most browsers, allowing the conditional GET. \ No newline at end of file
diff --git a/admin/survey/minify/docs/old/ProjectGoals.wiki.md b/admin/survey/minify/docs/old/ProjectGoals.wiki.md
new file mode 100644
index 0000000..7c3e521
--- /dev/null
+++ b/admin/survey/minify/docs/old/ProjectGoals.wiki.md
@@ -0,0 +1,13 @@
+## 1. Be easy to implement
+
+A PHP user should be able to quickly start serving JS/CSS much more optimally.
+
+## 2. Be extensible/versatile
+
+The user should be able to work Minify into an environment without modifying Minify's source. Right now this should be easy on the controller side, but the Minify class is static, which is fast, but may hinder extensibility.
+
+## 3. Be fast as possible
+
+With the release of 2.0.2 Minify will be much faster, outperforming even Apache's mod\_deflate (which apparently doesn't cache the encoded content like mod\_gzip does).
+
+Since testing has shown that [pre-encoding files and using type-maps on Apache is blazingly fast](http://mrclay.org/index.php/2008/06/03/pre-encoding-vs-mod_deflate/), Minify should work towards maintaining builds of pre-encoded files and letting Apache serve them. It's not clear if there's something similar to type-maps on lighttpd, but it's worth looking into. \ No newline at end of file
diff --git a/admin/survey/minify/docs/old/Security.wiki.md b/admin/survey/minify/docs/old/Security.wiki.md
new file mode 100644
index 0000000..0836130
--- /dev/null
+++ b/admin/survey/minify/docs/old/Security.wiki.md
@@ -0,0 +1,15 @@
+This was quickly converted from an e-mail, please consider it "temporary".
+
+## Each file specified by `$_GET['f']` must:
+
+ * Have the [same extension, either "css" or "js"](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/lib/Minify/Controller/MinApp.php#66),
+ * Exist, and...
+ * Have a [realpath() within a whitelist of subdirectories](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/lib/Minify/Controller/Base.php#122).
+
+The default whitelist contains only DOCUMENT\_ROOT, but can be [specified](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/config.php#57).
+
+Then, a few more steps just to be paranoid:
+
+ * If a base was given by `$_GET['b']`, [it can't have ".."](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/lib/Minify/Controller/MinApp.php#84).
+ * `$_GET['f']` [must not contain "//", "\", or "./"](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/lib/Minify/Controller/MinApp.php#64).
+ * There can be [no duplicates](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/lib/Minify/Controller/MinApp.php#77) and only a [limited number of files](http://code.google.com/p/minify/source/browse/tags/release_2.1.1/min/config.php#73) can be specified. \ No newline at end of file
diff --git a/admin/survey/minify/docs/old/VersionTwo.wiki.md b/admin/survey/minify/docs/old/VersionTwo.wiki.md
new file mode 100644
index 0000000..bf67528
--- /dev/null
+++ b/admin/survey/minify/docs/old/VersionTwo.wiki.md
@@ -0,0 +1,35 @@
+# Minify 2
+
+[Minify 2.0.0](http://code.google.com/p/minify/source/browse/tags/release_2.0.0/) was released May 22, 2008 and represents an architectural redesign of Minify's code and its usage. 2.0 is built as a library of classes allowing users to easily build customized minified-file servers; or add minification, HTTP encoding, or [conditional GET](http://fishbowl.pastiche.org/2002/10/21/http_conditional_get_for_rss_hackers) to existing projects.
+
+The release includes 3 [example sites](http://code.google.com/p/minify/source/browse/tags/release_2.0.0/web/examples) to demostrate usage and [unit tests](http://code.google.com/p/minify/source/browse/tags/release_2.0.0/web/test/) you can run on your system.
+
+## Documentation
+
+Each PHP file is documented, but, for now, the [README file](http://code.google.com/p/minify/source/browse/tags/release_2.0.0/README) is the best reference for getting started with the library. This [blog post](http://mrclay.org/index.php/2008/03/27/minifying-javascript-and-css-on-mrclayorg/) may also give you some ideas.
+
+The best place for questions is the [minify Google group](http://groups.google.com/group/minify).
+
+### Included HTTP Classes
+
+The two HTTP utility classes, [HTTP\_ConditionalGet](http://code.google.com/p/minify/source/browse/lib/HTTP/ConditionalGet.php) and [HTTP\_Encoder](http://code.google.com/p/minify/source/browse/lib/HTTP/Encoder.php), are already fairly well-tested and include a set of test pages to see how they work. On the [Florida Automated Weather Network](http://fawn.ifas.ufl.edu/) site, these are used especially in scripts that serve data to our Flash components.
+
+Here's an example of using both to conditionally serve a text file gzipped:
+```
+$cg = new HTTP_ConditionalGet(array(
+ 'lastModifiedTime' => filemtime($filepath)
+ ,'isPublic' => true
+));
+$cg->sendHeaders();
+if ($cg->cacheIsValid) {
+ // client cache was valid, no content needed
+ exit();
+}
+require 'HTTP/Encoder.php';
+$he = new HTTP_Encoder(array(
+ 'content' => file_get_contents($filepath)
+ ,'type' => 'text/plain'
+));
+$he->encode();
+$he->sendAll();
+``` \ No newline at end of file
diff --git a/admin/survey/minify/example.index.php b/admin/survey/minify/example.index.php
new file mode 100644
index 0000000..29de18b
--- /dev/null
+++ b/admin/survey/minify/example.index.php
@@ -0,0 +1,11 @@
+<?php
+// template file for creating your own Minify endpoint
+
+// remove this
+die('disabled');
+
+// adjust this path as necessary
+require __DIR__ . '/../vendor/autoload.php';
+
+$app = new \Minify\App(__DIR__);
+$app->runServer();
diff --git a/admin/survey/minify/groupsConfig.php b/admin/survey/minify/groupsConfig.php
new file mode 100644
index 0000000..38987e9
--- /dev/null
+++ b/admin/survey/minify/groupsConfig.php
@@ -0,0 +1,328 @@
+<?php
+/**
+ * Groups configuration for default Minify implementation
+ *
+ * @package Minify
+ */
+
+/**
+ * You may wish to use the Minify URI Builder app to suggest
+ * changes. http://yourdomain/min/builder/
+ **/
+
+return [
+
+
+ /*********** JAVASCRIPT **********/
+
+ // JAVASCRIPT - admin vmesnik
+ 'jsnew' => [
+
+ // jquery in jquery ui vkljucimo ze minificirana, da bo slo mal hitrej
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/ui-1.8.18/js/jquery-1.7.1.min.js',]),
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/ui-1.8.18/js/jquery-ui-1.8.18.custom.min.js',]),
+
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/ui.drag_drop_selectable.js',]),
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/jquery_touch_punch/jquery.ui.touch-punch.min.js',]),
+
+ dirname(__FILE__).'/../script/mobileMenu/zeynep.min.js',
+
+ dirname(__FILE__).'/../script/jquery/jquery.timer.js',
+ dirname(__FILE__).'/../script/jquery/farbtastic.js',
+ dirname(__FILE__).'/../script/jquery/jquery.qtip-1.0.js',
+ dirname(__FILE__).'/../script/jquery/jquery.selectbox-0.6.1/jquery.selectbox-0.6.1.js',
+ dirname(__FILE__).'/../script/jquery/jquery.ui.Slider.Pips/jquery-ui-slider-pips.min.js',
+
+ dirname(__FILE__).'/../script/jquery/timepicker/jquery-ui-timepicker-addon.js',
+
+ dirname(__FILE__).'/../script/onload.js',
+ dirname(__FILE__).'/../script/script.js',
+ dirname(__FILE__).'/../script/mobile.js',
+ dirname(__FILE__).'/../script/branching.js',
+ dirname(__FILE__).'/../script/folders.js',
+ dirname(__FILE__).'/../script/surveyList.js',
+ dirname(__FILE__).'/../script/library.js',
+ dirname(__FILE__).'/../script/collectData.js',
+ dirname(__FILE__).'/../script/script_analiza.js',
+ dirname(__FILE__).'/../script/statistika.js',
+ dirname(__FILE__).'/../script/vprasanje.js',
+ dirname(__FILE__).'/../script/vprasanjeInline.js',
+ dirname(__FILE__).'/../script/prevajanje.js',
+ dirname(__FILE__).'/../script/telefon.js',
+ dirname(__FILE__).'/../script/missingValues.js',
+ dirname(__FILE__).'/../script/missingProfiles.js',
+ dirname(__FILE__).'/../script/variableProfiles.js',
+ dirname(__FILE__).'/../script/statusProfiles.js',
+ dirname(__FILE__).'/../script/conditionProfiles.js',
+ dirname(__FILE__).'/../script/zankaProfiles.js',
+ dirname(__FILE__).'/../script/timeProfiles.js',
+ dirname(__FILE__).'/../script/postProcess.js',
+ dirname(__FILE__).'/../script/progressBar.js',
+ dirname(__FILE__).'/../script/crosstab.js',
+ dirname(__FILE__).'/../script/multiCrosstabs.js',
+ dirname(__FILE__).'/../script/slideshow.js',
+ dirname(__FILE__).'/../script/dataSettingProfiles.js',
+ dirname(__FILE__).'/../script/invitations.js',
+ dirname(__FILE__).'/../script/themes.js',
+ dirname(__FILE__).'/../script/inspect.js',
+ dirname(__FILE__).'/../script/means.js',
+ dirname(__FILE__).'/../script/ttest.js',
+ dirname(__FILE__).'/../script/simpleMailInvitation.js',
+ dirname(__FILE__).'/../script/zoom.js',
+ dirname(__FILE__).'/../script/break.js',
+ dirname(__FILE__).'/../script/dostop.js',
+ dirname(__FILE__).'/../script/recode.js',
+ dirname(__FILE__).'/../script/appendMerge.js',
+ dirname(__FILE__).'/../script/charts.js',
+ dirname(__FILE__).'/../script/cReport.js',
+ dirname(__FILE__).'/../script/telephone.js',
+ dirname(__FILE__).'/../script/profileManager.js',
+ dirname(__FILE__).'/../script/SurveyConnect.js',
+ dirname(__FILE__).'/../script/surveyCondition.js',
+ dirname(__FILE__).'/../script/datepicker.js',
+ dirname(__FILE__).'/../script/skupine.js',
+ dirname(__FILE__).'/../script/aapor.js',
+ dirname(__FILE__).'/../script/notifications.js',
+ dirname(__FILE__).'/../script/quota.js',
+ dirname(__FILE__).'/../script/ImageHotSpot/imagemap.js',
+ dirname(__FILE__).'/../script/trak.js',
+ dirname(__FILE__).'/../script/trak_respondent.js',
+ dirname(__FILE__).'/../script/GDPR.js',
+ dirname(__FILE__).'/../script/narocila.js',
+ dirname(__FILE__).'/../script/HeatMap/heatmap_admin.js',
+ dirname(__FILE__).'/../script/HeatMap/HeatMapCanvasAdmin.js',
+ dirname(__FILE__).'/../script/HeatMap/HeatMapSumarnikPopUp.js',
+ dirname(__FILE__).'/../script/HeatMap/heatmap.js',
+ dirname(__FILE__).'/../script/DragDrop/dragdropboxInAdmin.js',
+ dirname(__FILE__).'/../script/DragDrop/dragdropInAdmin.js',
+ dirname(__FILE__).'/../script/custom_column_label_respondent.js',
+ dirname(__FILE__).'/../script/ImageHotSpot/imagemap_question_editor.js',
+
+ dirname(__FILE__).'/../script/jquery/jquery.imagemapster.js',
+
+ dirname(__FILE__).'/../script/calendar/calendar.js',
+ dirname(__FILE__).'/../script/calendar/lang/calendar-en.js',
+ dirname(__FILE__).'/../script/calendar/calendar-setup.js',
+ dirname(__FILE__).'/../script/slider.js',
+ dirname(__FILE__).'/../script/ImageHotSpot/imageHotspot.js',
+ dirname(__FILE__).'/../script/custom_column_label_option.js',
+ dirname(__FILE__).'/../script/customizeImageView.js',
+
+ dirname(__FILE__).'/../script/jquery/jquery_touch_punch/jquery.ui.touch-punch.min.js',
+
+ //za prikaz zemljevida v popup oknu
+ dirname(__FILE__).'/../script/jquery/colorbox/jquery.colorbox.js',
+ dirname(__FILE__).'/../script/Maps/mapInBox.js',
+ dirname(__FILE__).'/../script/Maps/markerclusterer.js',
+ dirname(__FILE__).'/../../../main/survey/js/Maps/MapDeclaration.js',
+ dirname(__FILE__).'/../../../main/survey/js/Maps/Markers.js',
+ dirname(__FILE__).'/../../../main/survey/js/Maps/KlikNaMapo.js',
+ dirname(__FILE__).'/../../../main/survey/js/Maps/Geocoding.js',
+ dirname(__FILE__).'/../../../main/survey/js/Maps/UserLocation.js',
+ dirname(__FILE__).'/../../../main/survey/js/Maps/SearchBox.js',
+ dirname(__FILE__).'/../../../main/survey/js/Maps/ShapeDrawing.js',
+ dirname(__FILE__).'/../script/Maps/CenterControl.js',
+ dirname(__FILE__).'/../script/Maps/VnaprejMarkers.js',
+
+ //webcam - fotografija
+ dirname(__FILE__).'/../../../main/survey/js/Fotografiranje/webcam.js',
+ dirname(__FILE__).'/../../../main/survey/js/Fotografiranje/FotoDeclaration.js',
+
+ #Analize za hierarhijo
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/jquery.chosen/chosen.jquery.min.js',]),
+ dirname(__FILE__).'/../modules/mod_hierarhija/js/vendor/hierarhija_analize.js',
+
+ #JS od modula MAZA
+ dirname(__FILE__).'/../modules/mod_MAZA/js/MAZA.js',
+ ],
+
+
+ // JAVASCRIPT - admin hierarhija
+ 'jshierarhija' => [
+ dirname(__FILE__).'/../script/jquery/jquery-1.12.4.min.js',
+ //TODO: samo za test in razvoj
+ //dirname(__FILE__).'/../script/jquery/jquery-migrate-1.4.1.js',
+
+ // Za produkcijo se uporabi MIN, da ne izpisuje nepotrebnih console.log komentarjev
+ dirname(__FILE__).'/../script/jquery/jquery-migrate-1.4.1.min.js',
+
+ dirname(__FILE__).'/../script/jquery/ui-1.11.4/ui/jquery-ui.min.js',
+ dirname(__FILE__).'/../script/jquery/jquery.qtip-1.0.js',
+ dirname(__FILE__).'/../script/jquery/jquery.selectbox-0.6.1/jquery.selectbox-0.6.1.js',
+ dirname(__FILE__).'/../script/sweetalert/sweetalert.min.js',
+ dirname(__FILE__).'/../script/calendar/calendar.js',
+ dirname(__FILE__).'/../script/calendar/lang/calendar-en.js',
+ dirname(__FILE__).'/../script/calendar/calendar-setup.js',
+
+ //dirname(__FILE__) . '/../script/onload.js',
+ dirname(__FILE__).'/../script/vprasanje.js',
+ dirname(__FILE__).'/../script/vprasanjeInline.js',
+ dirname(__FILE__).'/../script/branching.js',
+ dirname(__FILE__).'/../script/folders.js',
+ dirname(__FILE__).'/../script/library.js',
+ dirname(__FILE__).'/../script/charts.js',
+
+
+ #JS od modula Hierarhija
+ dirname(__FILE__).'/../modules/mod_hierarhija/js/vendor/onload.js',
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../modules/mod_hierarhija/js/vendor/hierarhija_analize.js',]),
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/jquery.chosen/chosen.jquery.min.js',]),
+ dirname(__FILE__).'/../modules/mod_hierarhija/js/vendor/jquery.searchabledropdown.min.js',
+ dirname(__FILE__).'/../modules/mod_hierarhija/js/vendor/jquery.nicefileinput.min.js',
+ dirname(__FILE__).'/../modules/mod_hierarhija/js/vendor/datatables.min.js',
+ dirname(__FILE__).'/../modules/mod_hierarhija/js/vendor/select2.min.js',
+ //dirname(__FILE__) . '/../modules/mod_hierarhija/js/vendor/vue.js',
+ //dirname(__FILE__) . '/../modules/mod_hierarhija/js/vendor/vue-resource.min.js',
+ dirname(__FILE__).'/../script/script.js',
+ //dirname(__FILE__) . '/../modules/mod_hierarhija/js/vue-main.js',
+ //dirname(__FILE__) . '/../modules/mod_hierarhija/js/vendor/custom.js',
+ //dirname(__FILE__) . '/../modules/mod_hierarhija/js/vendor/custom-vue.js',
+ dirname(__FILE__).'/../../../public/js/hierarhija_modul.js',
+ dirname(__FILE__).'/../modules/mod_hierarhija/js/vendor/status.js',
+ ],
+
+
+ // JAVASCRIPT - zadnje JS knjižnice (datatables za uporabnike, narocila)
+ 'jsLastLib' => [
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/ui-1.8.18/js/jquery-1.7.1.min.js',]),
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/ui-1.8.18/js/jquery-ui-1.8.18.custom.min.js',]),
+
+ dirname(__FILE__).'/../script/script.js',
+
+ dirname(__FILE__).'/../script/mobileMenu/zeynep.min.js',
+ dirname(__FILE__).'/../script/mobile.js',
+
+ dirname(__FILE__).'/../script/datatables/jquery.dataTables.min.js',
+ dirname(__FILE__).'/../script/select2/select2.min.js',
+ dirname(__FILE__).'/../script/datatables/dataTables.buttons.min.js',
+ dirname(__FILE__).'/../script/datatables/moment.min.js',
+ dirname(__FILE__).'/../script/datatables/datetime-moment.js',
+ dirname(__FILE__).'/../script/datatables/buttons.flash.min.js',
+ dirname(__FILE__).'/../script/datatables/jszip.min.js',
+ dirname(__FILE__).'/../script/datatables/pdfmake.min.js',
+ dirname(__FILE__).'/../script/datatables/vfs_fonts.js',
+ dirname(__FILE__).'/../script/datatables/buttons.html5.min.js',
+ dirname(__FILE__).'/../script/datatables/buttons.print.min.js',
+ dirname(__FILE__).'/../script/datatables/buttons.colVis.min.js',
+ dirname(__FILE__).'/../script/datatables/dataTables.select.min.js',
+ dirname(__FILE__).'/../script/datatables/dataTables.responsive.min.js',
+ dirname(__FILE__).'/../script/uporabniki_custom.js',
+ dirname(__FILE__).'/../script/dostop.js',
+ dirname(__FILE__).'/../script/narocila.js',
+ dirname(__FILE__).'/../script/datepicker.js',
+ ],
+
+
+ // JAVASCRIPT - frontend izpolnjevanje ankete
+ 'jsfrontend' => [
+
+ // JQuery
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/ui-1.8.18/js/jquery-1.7.1.min.js',]),
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/ui-1.8.18/js/jquery-ui-1.8.18.custom.min.js',]),
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/jquery.chosen/chosen.jquery.min.js',]),
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/jquery.ui.Slider.Pips/jquery-ui-slider-pips.min.js',]),
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/jquery_touch_punch/jquery.ui.touch-punch.min.js',]),
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/timepicker/jquery-ui-timepicker-addon.js',]),
+
+ dirname(__FILE__).'/../script/datepicker.js',
+
+ //toltipster
+ dirname(__FILE__).'/../../../main/survey/js/tooltipster.min.js',
+
+ dirname(__FILE__).'/../../../main/survey/js/script.js',
+ dirname(__FILE__).'/../script/slider.js',
+ dirname(__FILE__).'/../script/jquery/jquery.imagemapster.js',
+ dirname(__FILE__).'/../script/jquery/jquery_touch_punch/jquery.ui.touch-punch.min.js',
+
+ dirname(__FILE__).'/../../../main/survey/js/DragDrop/dragdropbox.js',
+ dirname(__FILE__).'/../../../main/survey/js/DragDrop/dragdrop.js',
+ dirname(__FILE__).'/../../../main/survey/js/trak_respondent.js',
+ dirname(__FILE__).'/../../../main/survey/js/custom_column_label_respondent.js',
+ dirname(__FILE__).'/../../../main/survey/js/customizeImageView4Respondent.js',
+
+ //js HeatMap
+ dirname(__FILE__).'/../../../main/survey/js/HeatMap/heatmap4Respondents.js',
+ dirname(__FILE__).'/../../../main/survey/js/HeatMap/HeatMapCanvas.js',
+
+ //js Image HotSpot
+ dirname(__FILE__).'/../../../main/survey/js/ImageHotSpot/imagemapRespondent.js',
+
+ //js za zemljevid
+ dirname(__FILE__).'/../../../main/survey/js/Maps/MapDeclaration.js',
+ dirname(__FILE__).'/../../../main/survey/js/Maps/Markers.js',
+ dirname(__FILE__).'/../../../main/survey/js/Maps/KlikNaMapo.js',
+ dirname(__FILE__).'/../../../main/survey/js/Maps/Geocoding.js',
+ dirname(__FILE__).'/../../../main/survey/js/Maps/UserLocation.js',
+ dirname(__FILE__).'/../../../main/survey/js/Maps/SearchBox.js',
+ dirname(__FILE__).'/../../../main/survey/js/Maps/ShapeDrawing.js',
+
+ //webcam - fotografija
+ dirname(__FILE__).'/../../../main/survey/js/Fotografiranje/webcam.js',
+ dirname(__FILE__).'/../../../main/survey/js/Fotografiranje/FotoDeclaration.js',
+ ],
+
+ /*********** KONEC JAVASCRIPT **********/
+
+
+
+ /*********** CSS **********/
+
+ // CSS - frontend izpolnjevanje ankete
+ 'cssfrontend' => [
+ dirname(__FILE__).'/../script/jquery/jquery.chosen/chosen.css',
+ dirname(__FILE__).'/../script/jquery/ui-1.8.18/js/jquery-ui.css',
+
+ # nov css kamor se bo vse preneslo (public/main.css)
+ dirname(__FILE__).'/../../../public/css/main.css',
+
+ dirname(__FILE__).'/../../../main/survey/skins/tooltipster/tooltipster.css',
+ dirname(__FILE__).'/../script/jquery/jquery.ui.Slider.Pips/jquery-ui-slider-pips.css',
+ dirname(__FILE__).'/../script/jquery/timepicker/jquery-ui-timepicker-addon.css',
+ ],
+
+ // CSS - admin vmesnik
+ 'css' => [
+
+ dirname(__FILE__).'/../script/calendar/calendar.css',
+
+ # Potrebno prenesti do konca
+ dirname(__FILE__).'/../css/style_sprites_test.css',
+
+ # css za admin
+ dirname(__FILE__).'/../../../public/css/admin.css',
+
+ dirname(__FILE__).'/../script/jquery/jquery.selectbox-0.6.1/css/jquery.selectbox.css',
+ dirname(__FILE__).'/../script/jquery/jquery.ui.Slider.Pips/jquery-ui-slider-pips.css',
+
+ dirname(__FILE__).'/../script/jquery/timepicker/jquery-ui-timepicker-addon.css',
+ dirname(__FILE__).'/../script/select2/select2.min.css',
+
+ # Modul hierarhija
+ dirname(__FILE__).'/../script/jquery/jquery.chosen/chosen.css',
+ dirname(__FILE__).'/../modules/mod_hierarhija/css/vendor/jstree/proton/style.css',
+ # css za jstree
+ dirname(__FILE__).'/../modules/mod_hierarhija/css/vendor/datatables.min.css',
+ # css za Data tables
+ dirname(__FILE__).'/../modules/mod_hierarhija/css/vendor/select2.min.css',
+ # css za select2
+ dirname(__FILE__).'/../../../public/css/hierarhija.css',
+ # custom css za modul Hierarhija
+ dirname(__FILE__).'/../script/sweetalert/sweetalert.css',
+
+ # Modul 1kapanel
+ dirname(__FILE__).'/../modules/mod_MAZA/css/MAZA.css',
+
+ // za zemljevid v oknu
+ dirname(__FILE__).'/../script/jquery/colorbox/colorbox.css',
+
+ new Minify_Source(['filepath' => dirname(__FILE__).'/../script/jquery/ui-1.8.18/js/jquery-ui.css',]),
+ ],
+
+
+ // CSS - admin vmesnik za media = print
+ 'cssPrint' => [
+ dirname(__FILE__).'/../css/style_print.css',
+ ],
+
+ /*********** KONEC CSS **********/
+]; \ No newline at end of file
diff --git a/admin/survey/minify/index.php b/admin/survey/minify/index.php
new file mode 100644
index 0000000..2d17007
--- /dev/null
+++ b/admin/survey/minify/index.php
@@ -0,0 +1,13 @@
+<?php
+/**
+ * Sets up MinApp controller and serves files
+ *
+ * DO NOT EDIT! Configure this utility via config.php and groupsConfig.php
+ *
+ * @package Minify
+ */
+
+$app = (require __DIR__ . '/bootstrap.php');
+/* @var \Minify\App $app */
+
+$app->runServer();
diff --git a/admin/survey/minify/lib/HTTP/ConditionalGet.php b/admin/survey/minify/lib/HTTP/ConditionalGet.php
new file mode 100644
index 0000000..d81f8db
--- /dev/null
+++ b/admin/survey/minify/lib/HTTP/ConditionalGet.php
@@ -0,0 +1,376 @@
+<?php
+/**
+ * Class HTTP_ConditionalGet
+ * @package Minify
+ * @subpackage HTTP
+ */
+
+/**
+ * Implement conditional GET via a timestamp or hash of content
+ *
+ * E.g. Content from DB with update time:
+ * <code>
+ * list($updateTime, $content) = getDbUpdateAndContent();
+ * $cg = new HTTP_ConditionalGet(array(
+ * 'lastModifiedTime' => $updateTime
+ * ,'isPublic' => true
+ * ));
+ * $cg->sendHeaders();
+ * if ($cg->cacheIsValid) {
+ * exit();
+ * }
+ * echo $content;
+ * </code>
+ *
+ * E.g. Shortcut for the above
+ * <code>
+ * HTTP_ConditionalGet::check($updateTime, true); // exits if client has cache
+ * echo $content;
+ * </code>
+ *
+ * E.g. Content from DB with no update time:
+ * <code>
+ * $content = getContentFromDB();
+ * $cg = new HTTP_ConditionalGet(array(
+ * 'contentHash' => md5($content)
+ * ));
+ * $cg->sendHeaders();
+ * if ($cg->cacheIsValid) {
+ * exit();
+ * }
+ * echo $content;
+ * </code>
+ *
+ * E.g. Static content with some static includes:
+ * <code>
+ * // before content
+ * $cg = new HTTP_ConditionalGet(array(
+ * 'lastUpdateTime' => max(
+ * filemtime(__FILE__)
+ * ,filemtime('/path/to/header.inc')
+ * ,filemtime('/path/to/footer.inc')
+ * )
+ * ));
+ * $cg->sendHeaders();
+ * if ($cg->cacheIsValid) {
+ * exit();
+ * }
+ * </code>
+ * @package Minify
+ * @subpackage HTTP
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class HTTP_ConditionalGet
+{
+
+ /**
+ * Does the client have a valid copy of the requested resource?
+ *
+ * You'll want to check this after instantiating the object. If true, do
+ * not send content, just call sendHeaders() if you haven't already.
+ *
+ * @var bool
+ */
+ public $cacheIsValid = null;
+
+ /**
+ * @param array $spec options
+ *
+ * 'isPublic': (bool) if false, the Cache-Control header will contain
+ * "private", allowing only browser caching. (default false)
+ *
+ * 'lastModifiedTime': (int) if given, both ETag AND Last-Modified headers
+ * will be sent with content. This is recommended.
+ *
+ * 'encoding': (string) if set, the header "Vary: Accept-Encoding" will
+ * always be sent and a truncated version of the encoding will be appended
+ * to the ETag. E.g. "pub123456;gz". This will also trigger a more lenient
+ * checking of the client's If-None-Match header, as the encoding portion of
+ * the ETag will be stripped before comparison.
+ *
+ * 'contentHash': (string) if given, only the ETag header can be sent with
+ * content (only HTTP1.1 clients can conditionally GET). The given string
+ * should be short with no quote characters and always change when the
+ * resource changes (recommend md5()). This is not needed/used if
+ * lastModifiedTime is given.
+ *
+ * 'eTag': (string) if given, this will be used as the ETag header rather
+ * than values based on lastModifiedTime or contentHash. Also the encoding
+ * string will not be appended to the given value as described above.
+ *
+ * 'invalidate': (bool) if true, the client cache will be considered invalid
+ * without testing. Effectively this disables conditional GET.
+ * (default false)
+ *
+ * 'maxAge': (int) if given, this will set the Cache-Control max-age in
+ * seconds, and also set the Expires header to the equivalent GMT date.
+ * After the max-age period has passed, the browser will again send a
+ * conditional GET to revalidate its cache.
+ */
+ public function __construct($spec)
+ {
+ $scope = (isset($spec['isPublic']) && $spec['isPublic'])
+ ? 'public'
+ : 'private';
+ $maxAge = 0;
+ // backwards compatibility (can be removed later)
+ if (isset($spec['setExpires'])
+ && is_numeric($spec['setExpires'])
+ && ! isset($spec['maxAge'])) {
+ $spec['maxAge'] = $spec['setExpires'] - $_SERVER['REQUEST_TIME'];
+ }
+ if (isset($spec['maxAge'])) {
+ $maxAge = $spec['maxAge'];
+ $this->_headers['Expires'] = self::gmtDate(
+ $_SERVER['REQUEST_TIME'] + $spec['maxAge']
+ );
+ }
+ $etagAppend = '';
+ if (isset($spec['encoding'])) {
+ $this->_stripEtag = true;
+ $this->_headers['Vary'] = 'Accept-Encoding';
+ if ('' !== $spec['encoding']) {
+ if (0 === strpos($spec['encoding'], 'x-')) {
+ $spec['encoding'] = substr($spec['encoding'], 2);
+ }
+ $etagAppend = ';' . substr($spec['encoding'], 0, 2);
+ }
+ }
+ if (isset($spec['lastModifiedTime'])) {
+ $this->_setLastModified($spec['lastModifiedTime']);
+ if (isset($spec['eTag'])) { // Use it
+ $this->_setEtag($spec['eTag'], $scope);
+ } else { // base both headers on time
+ $this->_setEtag($spec['lastModifiedTime'] . $etagAppend, $scope);
+ }
+ } elseif (isset($spec['eTag'])) { // Use it
+ $this->_setEtag($spec['eTag'], $scope);
+ } elseif (isset($spec['contentHash'])) { // Use the hash as the ETag
+ $this->_setEtag($spec['contentHash'] . $etagAppend, $scope);
+ }
+ $privacy = ($scope === 'private')
+ ? ', private'
+ : '';
+ $this->_headers['Cache-Control'] = "max-age={$maxAge}{$privacy}";
+ // invalidate cache if disabled, otherwise check
+ $this->cacheIsValid = (isset($spec['invalidate']) && $spec['invalidate'])
+ ? false
+ : $this->_isCacheValid();
+ }
+
+ /**
+ * Get array of output headers to be sent
+ *
+ * In the case of 304 responses, this array will only contain the response
+ * code header: array('_responseCode' => 'HTTP/1.0 304 Not Modified')
+ *
+ * Otherwise something like:
+ * <code>
+ * array(
+ * 'Cache-Control' => 'max-age=0, public'
+ * ,'ETag' => '"foobar"'
+ * )
+ * </code>
+ *
+ * @return array
+ */
+ public function getHeaders()
+ {
+ return $this->_headers;
+ }
+
+ /**
+ * Set the Content-Length header in bytes
+ *
+ * With most PHP configs, as long as you don't flush() output, this method
+ * is not needed and PHP will buffer all output and set Content-Length for
+ * you. Otherwise you'll want to call this to let the client know up front.
+ *
+ * @param int $bytes
+ *
+ * @return int copy of input $bytes
+ */
+ public function setContentLength($bytes)
+ {
+ return $this->_headers['Content-Length'] = $bytes;
+ }
+
+ /**
+ * Send headers
+ *
+ * @see getHeaders()
+ *
+ * Note this doesn't "clear" the headers. Calling sendHeaders() will
+ * call header() again (but probably have not effect) and getHeaders() will
+ * still return the headers.
+ *
+ * @return null
+ */
+ public function sendHeaders()
+ {
+ $headers = $this->_headers;
+ if (array_key_exists('_responseCode', $headers)) {
+ // FastCGI environments require 3rd arg to header() to be set
+ list(, $code) = explode(' ', $headers['_responseCode'], 3);
+ header($headers['_responseCode'], true, $code);
+ unset($headers['_responseCode']);
+ }
+ foreach ($headers as $name => $val) {
+ header($name . ': ' . $val);
+ }
+ }
+
+ /**
+ * Exit if the client's cache is valid for this resource
+ *
+ * This is a convenience method for common use of the class
+ *
+ * @param int $lastModifiedTime if given, both ETag AND Last-Modified headers
+ * will be sent with content. This is recommended.
+ *
+ * @param bool $isPublic (default false) if true, the Cache-Control header
+ * will contain "public", allowing proxies to cache the content. Otherwise
+ * "private" will be sent, allowing only browser caching.
+ *
+ * @param array $options (default empty) additional options for constructor
+ */
+ public static function check($lastModifiedTime = null, $isPublic = false, $options = array())
+ {
+ if (null !== $lastModifiedTime) {
+ $options['lastModifiedTime'] = (int)$lastModifiedTime;
+ }
+ $options['isPublic'] = (bool)$isPublic;
+ $cg = new HTTP_ConditionalGet($options);
+ $cg->sendHeaders();
+ if ($cg->cacheIsValid) {
+ exit();
+ }
+ }
+
+ /**
+ * Get a GMT formatted date for use in HTTP headers
+ *
+ * <code>
+ * header('Expires: ' . HTTP_ConditionalGet::gmtdate($time));
+ * </code>
+ *
+ * @param int $time unix timestamp
+ *
+ * @return string
+ */
+ public static function gmtDate($time)
+ {
+ return gmdate('D, d M Y H:i:s \G\M\T', $time);
+ }
+
+ protected $_headers = array();
+ protected $_lmTime = null;
+ protected $_etag = null;
+ protected $_stripEtag = false;
+
+ /**
+ * @param string $hash
+ *
+ * @param string $scope
+ */
+ protected function _setEtag($hash, $scope)
+ {
+ $this->_etag = '"' . substr($scope, 0, 3) . $hash . '"';
+ $this->_headers['ETag'] = $this->_etag;
+ }
+
+ /**
+ * @param int $time
+ */
+ protected function _setLastModified($time)
+ {
+ $this->_lmTime = (int)$time;
+ $this->_headers['Last-Modified'] = self::gmtDate($time);
+ }
+
+ /**
+ * Determine validity of client cache and queue 304 header if valid
+ *
+ * @return bool
+ */
+ protected function _isCacheValid()
+ {
+ if (null === $this->_etag) {
+ // lmTime is copied to ETag, so this condition implies that the
+ // server sent neither ETag nor Last-Modified, so the client can't
+ // possibly has a valid cache.
+ return false;
+ }
+ $isValid = ($this->resourceMatchedEtag() || $this->resourceNotModified());
+ if ($isValid) {
+ $this->_headers['_responseCode'] = 'HTTP/1.0 304 Not Modified';
+ }
+
+ return $isValid;
+ }
+
+ /**
+ * @return bool
+ */
+ protected function resourceMatchedEtag()
+ {
+ if (!isset($_SERVER['HTTP_IF_NONE_MATCH'])) {
+ return false;
+ }
+ $clientEtagList = get_magic_quotes_gpc()
+ ? stripslashes($_SERVER['HTTP_IF_NONE_MATCH'])
+ : $_SERVER['HTTP_IF_NONE_MATCH'];
+ $clientEtags = explode(',', $clientEtagList);
+
+ $compareTo = $this->normalizeEtag($this->_etag);
+ foreach ($clientEtags as $clientEtag) {
+ if ($this->normalizeEtag($clientEtag) === $compareTo) {
+ // respond with the client's matched ETag, even if it's not what
+ // we would've sent by default
+ $this->_headers['ETag'] = trim($clientEtag);
+
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * @param string $etag
+ *
+ * @return string
+ */
+ protected function normalizeEtag($etag)
+ {
+ $etag = trim($etag);
+
+ return $this->_stripEtag
+ ? preg_replace('/;\\w\\w"$/', '"', $etag)
+ : $etag;
+ }
+
+ /**
+ * @return bool
+ */
+ protected function resourceNotModified()
+ {
+ if (!isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
+ return false;
+ }
+ // strip off IE's extra data (semicolon)
+ list($ifModifiedSince) = explode(';', $_SERVER['HTTP_IF_MODIFIED_SINCE'], 2);
+
+ $date = new DateTime($ifModifiedSince, new DateTimeZone('UTC'));
+
+ if ($date->getTimestamp() >= $this->_lmTime) {
+ // Apache 2.2's behavior. If there was no ETag match, send the
+ // non-encoded version of the ETag value.
+ $this->_headers['ETag'] = $this->normalizeEtag($this->_etag);
+
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/admin/survey/minify/lib/HTTP/Encoder.php b/admin/survey/minify/lib/HTTP/Encoder.php
new file mode 100644
index 0000000..c1c989e
--- /dev/null
+++ b/admin/survey/minify/lib/HTTP/Encoder.php
@@ -0,0 +1,335 @@
+<?php
+/**
+ * Class HTTP_Encoder
+ * @package Minify
+ * @subpackage HTTP
+ */
+
+/**
+ * Encode and send gzipped/deflated content
+ *
+ * The "Vary: Accept-Encoding" header is sent. If the client allows encoding,
+ * Content-Encoding and Content-Length are added.
+ *
+ * <code>
+ * // Send a CSS file, compressed if possible
+ * $he = new HTTP_Encoder(array(
+ * 'content' => file_get_contents($cssFile)
+ * ,'type' => 'text/css'
+ * ));
+ * $he->encode();
+ * $he->sendAll();
+ * </code>
+ *
+ * <code>
+ * // Shortcut to encoding output
+ * header('Content-Type: text/css'); // needed if not HTML
+ * HTTP_Encoder::output($css);
+ * </code>
+ *
+ * <code>
+ * // Just sniff for the accepted encoding
+ * $encoding = HTTP_Encoder::getAcceptedEncoding();
+ * </code>
+ *
+ * For more control over headers, use getHeaders() and getData() and send your
+ * own output.
+ *
+ * Note: If you don't need header mgmt, use PHP's native gzencode, gzdeflate,
+ * and gzcompress functions for gzip, deflate, and compress-encoding
+ * respectively.
+ *
+ * @package Minify
+ * @subpackage HTTP
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class HTTP_Encoder
+{
+
+ /**
+ * Should the encoder allow HTTP encoding to IE6?
+ *
+ * If you have many IE6 users and the bandwidth savings is worth troubling
+ * some of them, set this to true.
+ *
+ * By default, encoding is only offered to IE7+. When this is true,
+ * getAcceptedEncoding() will return an encoding for IE6 if its user agent
+ * string contains "SV1". This has been documented in many places as "safe",
+ * but there seem to be remaining, intermittent encoding bugs in patched
+ * IE6 on the wild web.
+ *
+ * @var bool
+ */
+ public static $encodeToIe6 = true;
+
+ /**
+ * Default compression level for zlib operations
+ *
+ * This level is used if encode() is not given a $compressionLevel
+ *
+ * @var int
+ */
+ public static $compressionLevel = 6;
+
+ /**
+ * Get an HTTP Encoder object
+ *
+ * @param array $spec options
+ *
+ * 'content': (string required) content to be encoded
+ *
+ * 'type': (string) if set, the Content-Type header will have this value.
+ *
+ * 'method: (string) only set this if you are forcing a particular encoding
+ * method. If not set, the best method will be chosen by getAcceptedEncoding()
+ * The available methods are 'gzip', 'deflate', 'compress', and '' (no
+ * encoding)
+ */
+ public function __construct($spec)
+ {
+ $this->_useMbStrlen = (function_exists('mb_strlen')
+ && (ini_get('mbstring.func_overload') !== '')
+ && ((int)ini_get('mbstring.func_overload') & 2));
+ $this->_content = $spec['content'];
+ $this->_headers['Content-Length'] = $this->_useMbStrlen
+ ? (string)mb_strlen($this->_content, '8bit')
+ : (string)strlen($this->_content);
+ if (isset($spec['type'])) {
+ $this->_headers['Content-Type'] = $spec['type'];
+ }
+ if (isset($spec['method'])
+ && in_array($spec['method'], array('gzip', 'deflate', 'compress', ''))) {
+ $this->_encodeMethod = array($spec['method'], $spec['method']);
+ } else {
+ $this->_encodeMethod = self::getAcceptedEncoding();
+ }
+ }
+
+ /**
+ * Get content in current form
+ *
+ * Call after encode() for encoded content.
+ *
+ * @return string
+ */
+ public function getContent()
+ {
+ return $this->_content;
+ }
+
+ /**
+ * Get array of output headers to be sent
+ *
+ * E.g.
+ * <code>
+ * array(
+ * 'Content-Length' => '615'
+ * ,'Content-Encoding' => 'x-gzip'
+ * ,'Vary' => 'Accept-Encoding'
+ * )
+ * </code>
+ *
+ * @return array
+ */
+ public function getHeaders()
+ {
+ return $this->_headers;
+ }
+
+ /**
+ * Send output headers
+ *
+ * You must call this before headers are sent and it probably cannot be
+ * used in conjunction with zlib output buffering / mod_gzip. Errors are
+ * not handled purposefully.
+ *
+ * @see getHeaders()
+ */
+ public function sendHeaders()
+ {
+ foreach ($this->_headers as $name => $val) {
+ header($name . ': ' . $val);
+ }
+ }
+
+ /**
+ * Send output headers and content
+ *
+ * A shortcut for sendHeaders() and echo getContent()
+ *
+ * You must call this before headers are sent and it probably cannot be
+ * used in conjunction with zlib output buffering / mod_gzip. Errors are
+ * not handled purposefully.
+ */
+ public function sendAll()
+ {
+ $this->sendHeaders();
+ echo $this->_content;
+ }
+
+ /**
+ * Determine the client's best encoding method from the HTTP Accept-Encoding
+ * header.
+ *
+ * If no Accept-Encoding header is set, or the browser is IE before v6 SP2,
+ * this will return ('', ''), the "identity" encoding.
+ *
+ * A syntax-aware scan is done of the Accept-Encoding, so the method must
+ * be non 0. The methods are favored in order of gzip, deflate, then
+ * compress. Deflate is always smallest and generally faster, but is
+ * rarely sent by servers, so client support could be buggier.
+ *
+ * @param bool $allowCompress allow the older compress encoding
+ *
+ * @param bool $allowDeflate allow the more recent deflate encoding
+ *
+ * @return array two values, 1st is the actual encoding method, 2nd is the
+ * alias of that method to use in the Content-Encoding header (some browsers
+ * call gzip "x-gzip" etc.)
+ */
+ public static function getAcceptedEncoding($allowCompress = true, $allowDeflate = true)
+ {
+ // @link http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
+
+ if (! isset($_SERVER['HTTP_ACCEPT_ENCODING'])
+ || self::isBuggyIe()) {
+ return array('', '');
+ }
+ $ae = $_SERVER['HTTP_ACCEPT_ENCODING'];
+ // gzip checks (quick)
+ if (0 === strpos($ae, 'gzip,') // most browsers
+ || 0 === strpos($ae, 'deflate, gzip,') // opera
+ ) {
+ return array('gzip', 'gzip');
+ }
+ // gzip checks (slow)
+ if (preg_match(
+ '@(?:^|,)\\s*((?:x-)?gzip)\\s*(?:$|,|;\\s*q=(?:0\\.|1))@'
+ ,$ae
+ ,$m)) {
+ return array('gzip', $m[1]);
+ }
+ if ($allowDeflate) {
+ // deflate checks
+ $aeRev = strrev($ae);
+ if (0 === strpos($aeRev, 'etalfed ,') // ie, webkit
+ || 0 === strpos($aeRev, 'etalfed,') // gecko
+ || 0 === strpos($ae, 'deflate,') // opera
+ // slow parsing
+ || preg_match(
+ '@(?:^|,)\\s*deflate\\s*(?:$|,|;\\s*q=(?:0\\.|1))@', $ae)) {
+ return array('deflate', 'deflate');
+ }
+ }
+ if ($allowCompress && preg_match(
+ '@(?:^|,)\\s*((?:x-)?compress)\\s*(?:$|,|;\\s*q=(?:0\\.|1))@'
+ ,$ae
+ ,$m)) {
+ return array('compress', $m[1]);
+ }
+
+ return array('', '');
+ }
+
+ /**
+ * Encode (compress) the content
+ *
+ * If the encode method is '' (none) or compression level is 0, or the 'zlib'
+ * extension isn't loaded, we return false.
+ *
+ * Then the appropriate gz_* function is called to compress the content. If
+ * this fails, false is returned.
+ *
+ * The header "Vary: Accept-Encoding" is added. If encoding is successful,
+ * the Content-Length header is updated, and Content-Encoding is also added.
+ *
+ * @param int $compressionLevel given to zlib functions. If not given, the
+ * class default will be used.
+ *
+ * @return bool success true if the content was actually compressed
+ */
+ public function encode($compressionLevel = null)
+ {
+ if (! self::isBuggyIe()) {
+ $this->_headers['Vary'] = 'Accept-Encoding';
+ }
+ if (null === $compressionLevel) {
+ $compressionLevel = self::$compressionLevel;
+ }
+ if ('' === $this->_encodeMethod[0]
+ || ($compressionLevel == 0)
+ || !extension_loaded('zlib')) {
+ return false;
+ }
+ if ($this->_encodeMethod[0] === 'deflate') {
+ $encoded = gzdeflate($this->_content, $compressionLevel);
+ } elseif ($this->_encodeMethod[0] === 'gzip') {
+ $encoded = gzencode($this->_content, $compressionLevel);
+ } else {
+ $encoded = gzcompress($this->_content, $compressionLevel);
+ }
+ if (false === $encoded) {
+ return false;
+ }
+ $this->_headers['Content-Length'] = $this->_useMbStrlen
+ ? (string)mb_strlen($encoded, '8bit')
+ : (string)strlen($encoded);
+ $this->_headers['Content-Encoding'] = $this->_encodeMethod[1];
+ $this->_content = $encoded;
+
+ return true;
+ }
+
+ /**
+ * Encode and send appropriate headers and content
+ *
+ * This is a convenience method for common use of the class
+ *
+ * @param string $content
+ *
+ * @param int $compressionLevel given to zlib functions. If not given, the
+ * class default will be used.
+ *
+ * @return bool success true if the content was actually compressed
+ */
+ public static function output($content, $compressionLevel = null)
+ {
+ if (null === $compressionLevel) {
+ $compressionLevel = self::$compressionLevel;
+ }
+ $he = new HTTP_Encoder(array('content' => $content));
+ $ret = $he->encode($compressionLevel);
+ $he->sendAll();
+
+ return $ret;
+ }
+
+ /**
+ * Is the browser an IE version earlier than 6 SP2?
+ *
+ * @return bool
+ */
+ public static function isBuggyIe()
+ {
+ if (empty($_SERVER['HTTP_USER_AGENT'])) {
+ return false;
+ }
+ $ua = $_SERVER['HTTP_USER_AGENT'];
+ // quick escape for non-IEs
+ if (0 !== strpos($ua, 'Mozilla/4.0 (compatible; MSIE ')
+ || false !== strpos($ua, 'Opera')) {
+ return false;
+ }
+ // no regex = faaast
+ $version = (float)substr($ua, 30);
+
+ return self::$encodeToIe6
+ ? ($version < 6 || ($version == 6 && false === strpos($ua, 'SV1')))
+ : ($version < 7);
+ }
+
+ protected $_content = '';
+ protected $_headers = array();
+ protected $_encodeMethod = array('', '');
+ protected $_useMbStrlen = false;
+}
diff --git a/admin/survey/minify/lib/Minify.php b/admin/survey/minify/lib/Minify.php
new file mode 100644
index 0000000..b01a2b9
--- /dev/null
+++ b/admin/survey/minify/lib/Minify.php
@@ -0,0 +1,758 @@
+<?php
+/**
+ * Class Minify
+ * @package Minify
+ */
+
+use Psr\Log\LoggerInterface;
+
+/**
+ * Minify - Combines, minifies, and caches JavaScript and CSS files on demand.
+ *
+ * See README for usage instructions (for now).
+ *
+ * This library was inspired by {@link mailto:flashkot@mail.ru jscsscomp by Maxim Martynyuk}
+ * and by the article {@link http://www.hunlock.com/blogs/Supercharged_Javascript "Supercharged JavaScript" by Patrick Hunlock}.
+ *
+ * @package Minify
+ * @author Ryan Grove <ryan@wonko.com>
+ * @author Stephen Clay <steve@mrclay.org>
+ * @copyright 2008 Ryan Grove, Stephen Clay. All rights reserved.
+ * @license http://opensource.org/licenses/bsd-license.php New BSD License
+ * @link https://github.com/mrclay/minify
+ */
+class Minify
+{
+
+ /**
+ * API version
+ *
+ * This is only bumped when API breaks are done and should follow the major version of the library
+ *
+ * @var int
+ */
+ const VERSION = 3;
+
+ const TYPE_CSS = 'text/css';
+ const TYPE_HTML = 'text/html';
+ // there is some debate over the ideal JS Content-Type, but this is the
+ // Apache default and what Yahoo! uses..
+ const TYPE_JS = 'application/x-javascript';
+ const URL_DEBUG = 'https://github.com/mrclay/minify/blob/master/docs/Debugging.wiki.md';
+
+ /**
+ * Any Minify_Cache_* object or null (i.e. no server cache is used)
+ *
+ * @var Minify_CacheInterface
+ */
+ private $cache;
+
+ /**
+ * Active controller for current request
+ *
+ * @var Minify_Controller_Base
+ */
+ protected $controller;
+
+ /**
+ * @var Minify_Env
+ */
+ protected $env;
+
+ /**
+ * @var Minify_SourceInterface[]
+ */
+ protected $sources;
+
+ /**
+ * @var string
+ */
+ protected $selectionId;
+
+ /**
+ * Options for current request
+ *
+ * @var array
+ */
+ protected $options;
+
+ /**
+ * @var LoggerInterface|null
+ */
+ protected $logger;
+
+ /**
+ * @param Minify_CacheInterface $cache
+ * @param LoggerInterface $logger
+ */
+ public function __construct(Minify_CacheInterface $cache, LoggerInterface $logger = null)
+ {
+ $this->cache = $cache;
+ $this->logger = $logger;
+ }
+
+ /**
+ * Get default Minify options.
+ *
+ * @return array options for Minify
+ */
+ public function getDefaultOptions()
+ {
+ return array(
+ 'isPublic' => true,
+ 'encodeOutput' => function_exists('gzdeflate'),
+ 'encodeMethod' => null, // determine later
+ 'encodeLevel' => 9,
+
+ 'minifiers' => array(
+ Minify::TYPE_JS => array('JSMin\\JSMin', 'minify'),
+ Minify::TYPE_CSS => array('Minify_CSSmin', 'minify'),
+ Minify::TYPE_HTML => array('Minify_HTML', 'minify'),
+ ),
+ 'minifierOptions' => array(), // no minifier options
+
+ 'contentTypeCharset' => 'utf-8',
+ 'maxAge' => 1800, // 30 minutes
+ 'rewriteCssUris' => true,
+ 'bubbleCssImports' => false,
+ 'quiet' => false, // serve() will send headers and output
+ 'debug' => false,
+ 'concatOnly' => false,
+
+ // if you override these, the response codes MUST be directly after
+ // the first space.
+ 'badRequestHeader' => 'HTTP/1.0 400 Bad Request',
+ 'errorHeader' => 'HTTP/1.0 500 Internal Server Error',
+
+ // callback function to see/modify content of all sources
+ 'postprocessor' => null,
+ // file to require to load preprocessor
+ 'postprocessorRequire' => null,
+
+ /**
+ * If this string is not empty AND the serve() option 'bubbleCssImports' is
+ * NOT set, then serve() will check CSS files for @import declarations that
+ * appear too late in the combined stylesheet. If found, serve() will prepend
+ * the output with this warning.
+ */
+ 'importWarning' => "/* See https://github.com/mrclay/minify/blob/master/docs/CommonProblems.wiki.md#imports-can-appear-in-invalid-locations-in-combined-css-files */\n"
+ );
+ }
+
+ /**
+ * Serve a request for a minified file.
+ *
+ * Here are the available options and defaults:
+ *
+ * 'isPublic' : send "public" instead of "private" in Cache-Control
+ * headers, allowing shared caches to cache the output. (default true)
+ *
+ * 'quiet' : set to true to have serve() return an array rather than sending
+ * any headers/output (default false)
+ *
+ * 'encodeOutput' : set to false to disable content encoding, and not send
+ * the Vary header (default true)
+ *
+ * 'encodeMethod' : generally you should let this be determined by
+ * HTTP_Encoder (leave null), but you can force a particular encoding
+ * to be returned, by setting this to 'gzip' or '' (no encoding)
+ *
+ * 'encodeLevel' : level of encoding compression (0 to 9, default 9)
+ *
+ * 'contentTypeCharset' : appended to the Content-Type header sent. Set to a falsey
+ * value to remove. (default 'utf-8')
+ *
+ * 'maxAge' : set this to the number of seconds the client should use its cache
+ * before revalidating with the server. This sets Cache-Control: max-age and the
+ * Expires header. Unlike the old 'setExpires' setting, this setting will NOT
+ * prevent conditional GETs. Note this has nothing to do with server-side caching.
+ *
+ * 'rewriteCssUris' : If true, serve() will automatically set the 'currentDir'
+ * minifier option to enable URI rewriting in CSS files (default true)
+ *
+ * 'bubbleCssImports' : If true, all @import declarations in combined CSS
+ * files will be move to the top. Note this may alter effective CSS values
+ * due to a change in order. (default false)
+ *
+ * 'debug' : set to true to minify all sources with the 'Lines' controller, which
+ * eases the debugging of combined files. This also prevents 304 responses.
+ * @see Minify_Lines::minify()
+ *
+ * 'concatOnly' : set to true to disable minification and simply concatenate the files.
+ * For JS, no minifier will be used. For CSS, only URI rewriting is still performed.
+ *
+ * 'minifiers' : to override Minify's default choice of minifier function for
+ * a particular content-type, specify your callback under the key of the
+ * content-type:
+ * <code>
+ * // call customCssMinifier($css) for all CSS minification
+ * $options['minifiers'][Minify::TYPE_CSS] = 'customCssMinifier';
+ *
+ * // don't minify Javascript at all
+ * $options['minifiers'][Minify::TYPE_JS] = 'Minify::nullMinifier';
+ * </code>
+ *
+ * 'minifierOptions' : to send options to the minifier function, specify your options
+ * under the key of the content-type. E.g. To send the CSS minifier an option:
+ * <code>
+ * // give CSS minifier array('optionName' => 'optionValue') as 2nd argument
+ * $options['minifierOptions'][Minify::TYPE_CSS]['optionName'] = 'optionValue';
+ * </code>
+ *
+ * 'contentType' : (optional) this is only needed if your file extension is not
+ * js/css/html. The given content-type will be sent regardless of source file
+ * extension, so this should not be used in a Groups config with other
+ * Javascript/CSS files.
+ *
+ * 'importWarning' : serve() will check CSS files for @import declarations that
+ * appear too late in the combined stylesheet. If found, serve() will prepend
+ * the output with this warning. To disable this, set this option to empty string.
+ *
+ * Any controller options are documented in that controller's createConfiguration() method.
+ *
+ * @param Minify_ControllerInterface $controller instance of subclass of Minify_Controller_Base
+ *
+ * @param array $options controller/serve options
+ *
+ * @return null|array if the 'quiet' option is set to true, an array
+ * with keys "success" (bool), "statusCode" (int), "content" (string), and
+ * "headers" (array).
+ *
+ * @throws Exception
+ */
+ public function serve(Minify_ControllerInterface $controller, $options = array())
+ {
+ $this->env = $controller->getEnv();
+
+ $options = array_merge($this->getDefaultOptions(), $options);
+
+ $config = $controller->createConfiguration($options);
+
+ $this->sources = $config->getSources();
+ $this->selectionId = $config->getSelectionId();
+ $this->options = $this->analyzeSources($config->getOptions());
+
+ if (!$this->options['quiet'] && !headers_sent()) {
+ ini_set('zlib.output_compression', '0');
+ }
+
+ // check request validity
+ if (!$this->sources) {
+ // invalid request!
+ if (! $this->options['quiet']) {
+ $this->errorExit($this->options['badRequestHeader'], self::URL_DEBUG);
+ } else {
+ list(,$statusCode) = explode(' ', $this->options['badRequestHeader']);
+
+ return array(
+ 'success' => false,
+ 'statusCode' => (int)$statusCode,
+ 'content' => '',
+ 'headers' => array(),
+ );
+ }
+ }
+
+ $this->controller = $controller;
+
+ if ($this->options['debug']) {
+ $this->setupDebug();
+ $this->options['maxAge'] = 0;
+ }
+
+ // determine encoding
+ if ($this->options['encodeOutput']) {
+ $sendVary = true;
+ if ($this->options['encodeMethod'] !== null) {
+ // controller specifically requested this
+ $contentEncoding = $this->options['encodeMethod'];
+ } else {
+ // sniff request header
+ // depending on what the client accepts, $contentEncoding may be
+ // 'x-gzip' while our internal encodeMethod is 'gzip'. Calling
+ // getAcceptedEncoding(false, false) leaves out compress and deflate as options.
+ $list = HTTP_Encoder::getAcceptedEncoding(false, false);
+ list($this->options['encodeMethod'], $contentEncoding) = $list;
+ $sendVary = ! HTTP_Encoder::isBuggyIe();
+ }
+ } else {
+ $this->options['encodeMethod'] = ''; // identity (no encoding)
+ }
+
+ // check client cache
+ $cgOptions = array(
+ 'lastModifiedTime' => $this->options['lastModifiedTime'],
+ 'isPublic' => $this->options['isPublic'],
+ 'encoding' => $this->options['encodeMethod'],
+ );
+
+ if ($this->options['maxAge'] > 0) {
+ $cgOptions['maxAge'] = $this->options['maxAge'];
+ } elseif ($this->options['debug']) {
+ $cgOptions['invalidate'] = true;
+ }
+
+ $cg = new HTTP_ConditionalGet($cgOptions);
+ if ($cg->cacheIsValid) {
+ // client's cache is valid
+ if (! $this->options['quiet']) {
+ $cg->sendHeaders();
+
+ return;
+ }
+
+ return array(
+ 'success' => true,
+ 'statusCode' => 304,
+ 'content' => '',
+ 'headers' => $cg->getHeaders(),
+ );
+ }
+
+ // client will need output
+ $headers = $cg->getHeaders();
+ unset($cg);
+
+ if ($this->options['contentType'] === self::TYPE_CSS && $this->options['rewriteCssUris']) {
+ $this->setupUriRewrites();
+ }
+
+ if ($this->options['concatOnly']) {
+ $this->options['minifiers'][self::TYPE_JS] = false;
+ foreach ($this->sources as $key => $source) {
+ if ($this->options['contentType'] === self::TYPE_JS) {
+ $source->setMinifier('Minify::nullMinifier');
+ } elseif ($this->options['contentType'] === self::TYPE_CSS) {
+ $source->setMinifier(array('Minify_CSSmin', 'minify'));
+ $sourceOpts = $source->getMinifierOptions();
+ $sourceOpts['compress'] = false;
+ $source->setMinifierOptions($sourceOpts);
+ }
+ }
+ }
+
+ // check server cache
+ if (! $this->options['debug']) {
+ // using cache
+ // the goal is to use only the cache methods to sniff the length and
+ // output the content, as they do not require ever loading the file into
+ // memory.
+ $cacheId = $this->_getCacheId();
+ $fullCacheId = ($this->options['encodeMethod']) ? $cacheId . '.gz' : $cacheId;
+
+ // check cache for valid entry
+ $cacheIsReady = $this->cache->isValid($fullCacheId, $this->options['lastModifiedTime']);
+ if ($cacheIsReady) {
+ $cacheContentLength = $this->cache->getSize($fullCacheId);
+ } else {
+ // generate & cache content
+ try {
+ $content = $this->combineMinify();
+ } catch (Exception $e) {
+ $this->logger && $this->logger->critical($e->getMessage());
+ if (! $this->options['quiet']) {
+ $this->errorExit($this->options['errorHeader'], self::URL_DEBUG);
+ }
+ throw $e;
+ }
+ $this->cache->store($cacheId, $content);
+ if (function_exists('gzencode') && $this->options['encodeMethod']) {
+ $this->cache->store($cacheId . '.gz', gzencode($content, $this->options['encodeLevel']));
+ }
+ }
+ } else {
+ // no cache
+ $cacheIsReady = false;
+ try {
+ $content = $this->combineMinify();
+ } catch (Exception $e) {
+ $this->logger && $this->logger->critical($e->getMessage());
+ if (! $this->options['quiet']) {
+ $this->errorExit($this->options['errorHeader'], self::URL_DEBUG);
+ }
+ throw $e;
+ }
+ }
+ if (! $cacheIsReady && $this->options['encodeMethod']) {
+ // still need to encode
+ $content = gzencode($content, $this->options['encodeLevel']);
+ }
+
+ // add headers
+ if ($cacheIsReady) {
+ $headers['Content-Length'] = $cacheContentLength;
+ } else {
+ if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) {
+ $headers['Content-Length'] = mb_strlen($content, '8bit');
+ } else {
+ $headers['Content-Length'] = strlen($content);
+ }
+ }
+
+ $headers['Content-Type'] = $this->options['contentType'];
+ if ($this->options['contentTypeCharset']) {
+ $headers['Content-Type'] .= '; charset=' . $this->options['contentTypeCharset'];
+ }
+
+ if ($this->options['encodeMethod'] !== '') {
+ $headers['Content-Encoding'] = $contentEncoding;
+ }
+ if ($this->options['encodeOutput'] && $sendVary) {
+ $headers['Vary'] = 'Accept-Encoding';
+ }
+
+ if (! $this->options['quiet']) {
+ // output headers & content
+ foreach ($headers as $name => $val) {
+ header($name . ': ' . $val);
+ }
+ if ($cacheIsReady) {
+ $this->cache->display($fullCacheId);
+ } else {
+ echo $content;
+ }
+ } else {
+ return array(
+ 'success' => true,
+ 'statusCode' => 200,
+ 'content' => $cacheIsReady ? $this->cache->fetch($fullCacheId) : $content,
+ 'headers' => $headers,
+ );
+ }
+ }
+
+ /**
+ * Return combined minified content for a set of sources
+ *
+ * No internal caching will be used and the content will not be HTTP encoded.
+ *
+ * @param array $sources array of filepaths and/or Minify_Source objects
+ *
+ * @param array $options (optional) array of options for serve.
+ *
+ * @return string
+ */
+ public function combine($sources, $options = array())
+ {
+ $tmpCache = $this->cache;
+ $this->cache = new Minify_Cache_Null();
+
+ $env = new Minify_Env();
+ $sourceFactory = new Minify_Source_Factory($env, array(
+ 'checkAllowDirs' => false,
+ ), $this->cache);
+ $controller = new Minify_Controller_Files($env, $sourceFactory, $this->logger);
+
+ $options = array_merge($options, array(
+ 'files' => (array)$sources,
+ 'quiet' => true,
+ 'encodeMethod' => '',
+ 'lastModifiedTime' => 0,
+ ));
+ $out = $this->serve($controller, $options);
+
+ $this->cache = $tmpCache;
+
+ return $out['content'];
+ }
+
+ /**
+ * Show an error page
+ *
+ * @param string $header Full header. E.g. 'HTTP/1.0 500 Internal Server Error'
+ * @param string $url URL to direct the user to
+ * @param string $msgHtml HTML message for the client
+ *
+ * @return void
+ * @internal This is not part of the public API and is subject to change
+ * @access private
+ */
+ public function errorExit($header, $url = '', $msgHtml = '')
+ {
+ $url = htmlspecialchars($url, ENT_QUOTES);
+ list(,$h1) = explode(' ', $header, 2);
+ $h1 = htmlspecialchars($h1);
+ // FastCGI environments require 3rd arg to header() to be set
+ list(, $code) = explode(' ', $header, 3);
+ header($header, true, $code);
+ header('Content-Type: text/html; charset=utf-8');
+ echo "<h1>$h1</h1>";
+ if ($msgHtml) {
+ echo $msgHtml;
+ }
+ if ($url) {
+ echo "<p>Please see <a href='$url'>$url</a>.</p>";
+ }
+ exit;
+ }
+
+ /**
+ * Default minifier for .min or -min JS files.
+ *
+ * @param string $content
+ * @return string
+ */
+ public static function nullMinifier($content)
+ {
+ if (isset($content[0]) && $content[0] === "\xef") {
+ $content = substr($content, 3);
+ }
+ $content = str_replace("\r\n", "\n", $content);
+
+ return trim($content);
+ }
+
+ /**
+ * Setup CSS sources for URI rewriting
+ */
+ protected function setupUriRewrites()
+ {
+ foreach ($this->sources as $key => $source) {
+ $file = $this->env->normalizePath($source->getFilePath());
+ $minifyOptions = $source->getMinifierOptions();
+
+ if ($file
+ && !isset($minifyOptions['currentDir'])
+ && !isset($minifyOptions['prependRelativePath'])) {
+ $minifyOptions['currentDir'] = dirname($file);
+ $source->setMinifierOptions($minifyOptions);
+ }
+ }
+ }
+
+ /**
+ * Set up sources to use Minify_Lines
+ */
+ protected function setupDebug()
+ {
+ foreach ($this->sources as $source) {
+ $source->setMinifier(array('Minify_Lines', 'minify'));
+ $id = $source->getId();
+ $source->setMinifierOptions(array(
+ 'id' => (is_file($id) ? basename($id) : $id),
+ ));
+ }
+ }
+
+ /**
+ * Combines sources and minifies the result.
+ *
+ * @return string
+ *
+ * @throws Exception
+ */
+ protected function combineMinify()
+ {
+ $type = $this->options['contentType']; // ease readability
+
+ // when combining scripts, make sure all statements separated and
+ // trailing single line comment is terminated
+ $implodeSeparator = ($type === self::TYPE_JS) ? "\n;" : '';
+
+ // allow the user to pass a particular array of options to each
+ // minifier (designated by type). source objects may still override
+ // these
+ if (isset($this->options['minifierOptions'][$type])) {
+ $defaultOptions = $this->options['minifierOptions'][$type];
+ } else {
+ $defaultOptions = array();
+ }
+
+ // if minifier not set, default is no minification. source objects
+ // may still override this
+ if (isset($this->options['minifiers'][$type])) {
+ $defaultMinifier = $this->options['minifiers'][$type];
+ } else {
+ $defaultMinifier = false;
+ }
+
+ // process groups of sources with identical minifiers/options
+ $content = array();
+ $i = 0;
+ $l = count($this->sources);
+ $groupToProcessTogether = array();
+ $lastMinifier = null;
+ $lastOptions = null;
+ do {
+ // get next source
+ $source = null;
+ if ($i < $l) {
+ $source = $this->sources[$i];
+ $sourceContent = $source->getContent();
+
+ // allow the source to override our minifier and options
+ $minifier = $source->getMinifier();
+ if (!$minifier) {
+ $minifier = $defaultMinifier;
+ }
+ $options = array_merge($defaultOptions, $source->getMinifierOptions());
+ }
+ // do we need to process our group right now?
+ if ($i > 0 // yes, we have at least the first group populated
+ && (
+ ! $source // yes, we ran out of sources
+ || $type === self::TYPE_CSS // yes, to process CSS individually (avoiding PCRE bugs/limits)
+ || $minifier !== $lastMinifier // yes, minifier changed
+ || $options !== $lastOptions)) { // yes, options changed
+ // minify previous sources with last settings
+ $imploded = implode($implodeSeparator, $groupToProcessTogether);
+ $groupToProcessTogether = array();
+ if ($lastMinifier) {
+ try {
+ $content[] = call_user_func($lastMinifier, $imploded, $lastOptions);
+ } catch (Exception $e) {
+ throw new Exception("Exception in minifier: " . $e->getMessage());
+ }
+ } else {
+ $content[] = $imploded;
+ }
+ }
+ // add content to the group
+ if ($source) {
+ $groupToProcessTogether[] = $sourceContent;
+ $lastMinifier = $minifier;
+ $lastOptions = $options;
+ }
+ $i++;
+ } while ($source);
+
+ $content = implode($implodeSeparator, $content);
+
+ if ($type === self::TYPE_CSS && false !== strpos($content, '@import')) {
+ $content = $this->handleCssImports($content);
+ }
+
+ // do any post-processing (esp. for editing build URIs)
+ if ($this->options['postprocessorRequire']) {
+ require_once $this->options['postprocessorRequire'];
+ }
+ if ($this->options['postprocessor']) {
+ $content = call_user_func($this->options['postprocessor'], $content, $type);
+ }
+
+ return $content;
+ }
+
+ /**
+ * Make a unique cache id for for this request.
+ *
+ * Any settings that could affect output are taken into consideration
+ *
+ * @param string $prefix
+ *
+ * @return string
+ */
+ protected function _getCacheId($prefix = 'minify')
+ {
+ $name = preg_replace('/[^a-zA-Z0-9\\.=_,]/', '', $this->selectionId);
+ $name = preg_replace('/\\.+/', '.', $name);
+ $name = substr($name, 0, 100 - 34 - strlen($prefix));
+ $md5 = md5(serialize(array(
+ Minify_SourceSet::getDigest($this->sources),
+ $this->options['minifiers'],
+ $this->options['minifierOptions'],
+ $this->options['postprocessor'],
+ $this->options['bubbleCssImports'],
+ Minify::VERSION,
+ )));
+
+ return "{$prefix}_{$name}_{$md5}";
+ }
+
+ /**
+ * Bubble CSS @imports to the top or prepend a warning if an import is detected not at the top.
+ *
+ * @param string $css
+ *
+ * @return string
+ */
+ protected function handleCssImports($css)
+ {
+ if ($this->options['bubbleCssImports']) {
+ // bubble CSS imports
+ preg_match_all('/@import.*?;/', $css, $imports);
+ $css = implode('', $imports[0]) . preg_replace('/@import.*?;/', '', $css);
+
+ return $css;
+ }
+
+ if ('' === $this->options['importWarning']) {
+ return $css;
+ }
+
+ // remove comments so we don't mistake { in a comment as a block
+ $noCommentCss = preg_replace('@/\\*[\\s\\S]*?\\*/@', '', $css);
+ $lastImportPos = strrpos($noCommentCss, '@import');
+ $firstBlockPos = strpos($noCommentCss, '{');
+ if (false !== $lastImportPos
+ && false !== $firstBlockPos
+ && $firstBlockPos < $lastImportPos
+ ) {
+ // { appears before @import : prepend warning
+ $css = $this->options['importWarning'] . $css;
+ }
+
+ return $css;
+ }
+
+ /**
+ * Analyze sources (if there are any) and set $options 'contentType'
+ * and 'lastModifiedTime' if they already aren't.
+ *
+ * @param array $options options for Minify
+ *
+ * @return array options for Minify
+ */
+ protected function analyzeSources($options = array())
+ {
+ if (!$this->sources) {
+ return $options;
+ }
+
+ $type = null;
+ foreach ($this->sources as $source) {
+ $sourceType = $source->getContentType();
+
+ if (!empty($options['contentType'])) {
+ // just verify sources have null content type or match the options
+ if ($sourceType !== null && $sourceType !== $options['contentType']) {
+ $this->logger && $this->logger->warning("ContentType mismatch: '{$sourceType}' != '{$options['contentType']}'");
+
+ $this->sources = array();
+
+ return $options;
+ }
+
+ continue;
+ }
+
+ if ($type === null) {
+ $type = $sourceType;
+ } elseif ($sourceType !== $type) {
+ $this->logger && $this->logger->warning("ContentType mismatch: '{$sourceType}' != '{$type}'");
+
+ $this->sources = array();
+
+ return $options;
+ }
+ }
+
+ if (empty($options['contentType'])) {
+ if (null === $type) {
+ $type = 'text/plain';
+ }
+ $options['contentType'] = $type;
+ }
+
+ // last modified is needed for caching, even if setExpires is set
+ if (!isset($options['lastModifiedTime'])) {
+ $max = 0;
+ foreach ($this->sources as $source) {
+ $max = max($source->getLastModified(), $max);
+ }
+ $options['lastModifiedTime'] = $max;
+ }
+
+ return $options;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/App.php b/admin/survey/minify/lib/Minify/App.php
new file mode 100644
index 0000000..5ddb3e9
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/App.php
@@ -0,0 +1,293 @@
+<?php
+
+namespace Minify;
+
+use Minify_Cache_File;
+use Minify_CacheInterface;
+use Minify_Controller_MinApp;
+use Minify_ControllerInterface;
+use Minify_DebugDetector;
+use Minify_Env;
+use Minify_Source_Factory;
+use Props\Container;
+use Psr\Log\LoggerInterface;
+use RuntimeException;
+use Monolog;
+use Minify;
+
+/**
+ * @property Minify_CacheInterface $cache
+ * @property Config $config
+ * @property string $configPath
+ * @property Minify_ControllerInterface $controller
+ * @property string $dir
+ * @property string $docRoot
+ * @property Minify_Env $env
+ * @property Monolog\Handler\ErrorLogHandler $errorLogHandler
+ * @property array $groupsConfig
+ * @property string $groupsConfigPath
+ * @property LoggerInterface $logger
+ * @property \Minify $minify
+ * @property array $serveOptions
+ * @property Minify_Source_Factory $sourceFactory
+ * @property array $sourceFactoryOptions
+ */
+class App extends Container
+{
+
+ /**
+ * Constructor
+ *
+ * @param string $dir Directory containing config files
+ */
+ public function __construct($dir)
+ {
+ $that = $this;
+
+ $this->dir = rtrim($dir, '/\\');
+
+ $this->cache = function (App $app) use ($that) {
+ $config = $app->config;
+
+ if ($config->cachePath instanceof Minify_CacheInterface) {
+ return $config->cachePath;
+ }
+
+ if (!$config->cachePath || is_string($config->cachePath)) {
+ return new Minify_Cache_File($config->cachePath, $config->cacheFileLocking, $app->logger);
+ }
+
+ $type = $that->typeOf($config->cachePath);
+ throw new RuntimeException('$min_cachePath must be a path or implement Minify_CacheInterface.'
+ . " Given $type");
+ };
+
+ $this->config = function (App $app) {
+ $config = (require $app->configPath);
+
+ if ($config instanceof Minify\Config) {
+ return $config;
+ }
+
+ // copy from vars into properties
+
+ $config = new Minify\Config();
+
+ $propNames = array_keys(get_object_vars($config));
+
+ $prefixer = function ($name) {
+ return "min_$name";
+ };
+ $varNames = array_map($prefixer, $propNames);
+
+ $vars = compact($varNames);
+
+ foreach ($varNames as $varName) {
+ if (isset($vars[$varName])) {
+ $config->{substr($varName, 4)} = $vars[$varName];
+ }
+ }
+
+ if ($config->documentRoot) {
+ // copy into env
+ if (empty($config->envArgs['server'])) {
+ $config->envArgs['server'] = $_SERVER;
+ }
+ $config->envArgs['server']['DOCUMENT_ROOT'] = $config->documentRoot;
+ }
+
+ return $config;
+ };
+
+ $this->configPath = "{$this->dir}/config.php";
+
+ $this->controller = function (App $app) use ($that) {
+ $config = $app->config;
+
+ if (empty($config->factories['controller'])) {
+ $ctrl = new Minify_Controller_MinApp($app->env, $app->sourceFactory, $app->logger);
+ } else {
+ $ctrl = call_user_func($config->factories['controller'], $app);
+ }
+
+ if ($ctrl instanceof Minify_ControllerInterface) {
+ return $ctrl;
+ }
+
+ $type = $that->typeOf($ctrl);
+ throw new RuntimeException('$min_factories["controller"] callable must return an implementation'
+ ." of Minify_CacheInterface. Returned $type");
+ };
+
+ $this->docRoot = function (App $app) {
+ $config = $app->config;
+ if (empty($config->documentRoot)) {
+ return $app->env->getDocRoot();
+ }
+
+ return $app->env->normalizePath($config->documentRoot);
+ };
+
+ $this->env = function (App $app) {
+ return new Minify_Env($app->config->envArgs);
+ };
+
+ $this->errorLogHandler = function (App $app) {
+ $format = "%channel%.%level_name%: %message% %context% %extra%";
+ $handler = new Monolog\Handler\ErrorLogHandler();
+ $handler->setFormatter(new Monolog\Formatter\LineFormatter($format));
+
+ return $handler;
+ };
+
+ $this->groupsConfig = function (App $app) {
+ return (require $app->groupsConfigPath);
+ };
+
+ $this->groupsConfigPath = "{$this->dir}/groupsConfig.php";
+
+ $this->logger = function (App $app) use ($that) {
+ $value = $app->config->errorLogger;
+
+ if ($value instanceof LoggerInterface) {
+ return $value;
+ }
+
+ $logger = new Monolog\Logger('minify');
+
+ if (!$value) {
+ return $logger;
+ }
+
+ if ($value === true || $value instanceof \FirePHP) {
+ $logger->pushHandler($app->errorLogHandler);
+ $logger->pushHandler(new Monolog\Handler\FirePHPHandler());
+
+ return $logger;
+ }
+
+ if ($value instanceof Monolog\Handler\HandlerInterface) {
+ $logger->pushHandler($value);
+
+ return $logger;
+ }
+
+ // BC
+ if (is_object($value) && is_callable(array($value, 'log'))) {
+ $handler = new Minify\Logger\LegacyHandler($value);
+ $logger->pushHandler($handler);
+
+ return $logger;
+ }
+
+ $type = $that->typeOf($value);
+ throw new RuntimeException('If set, $min_errorLogger must be a PSR-3 logger or a Monolog handler.'
+ ." Given $type");
+ };
+
+ $this->minify = function (App $app) use ($that) {
+ $config = $app->config;
+
+ if (empty($config->factories['minify'])) {
+ return new \Minify($app->cache, $app->logger);
+ }
+
+ $minify = call_user_func($config->factories['minify'], $app);
+ if ($minify instanceof \Minify) {
+ return $minify;
+ }
+
+ $type = $that->typeOf($minify);
+ throw new RuntimeException('$min_factories["minify"] callable must return a Minify object.'
+ ." Returned $type");
+ };
+
+ $this->serveOptions = function (App $app) {
+ $config = $app->config;
+ $env = $app->env;
+
+ $ret = $config->serveOptions;
+
+ $ret['minifierOptions']['text/css']['docRoot'] = $app->docRoot;
+ $ret['minifierOptions']['text/css']['symlinks'] = $config->symlinks;
+ $ret['minApp']['symlinks'] = $config->symlinks;
+
+ // auto-add targets to allowDirs
+ foreach ($config->symlinks as $uri => $target) {
+ $ret['minApp']['allowDirs'][] = $target;
+ }
+
+ if ($config->allowDebugFlag) {
+ $ret['debug'] = Minify_DebugDetector::shouldDebugRequest($env);
+ }
+
+ if ($config->concatOnly) {
+ $ret['concatOnly'] = true;
+ }
+
+ // check for URI versioning
+ if ($env->get('v') !== null || preg_match('/&\\d/', $app->env->server('QUERY_STRING'))) {
+ $ret['maxAge'] = 31536000;
+ }
+
+ // need groups config?
+ if ($env->get('g') !== null) {
+ $ret['minApp']['groups'] = $app->groupsConfig;
+ }
+
+ return $ret;
+ };
+
+ $this->sourceFactory = function (App $app) {
+ return new Minify_Source_Factory($app->env, $app->sourceFactoryOptions, $app->cache);
+ };
+
+ $this->sourceFactoryOptions = function (App $app) {
+ $serveOptions = $app->serveOptions;
+ $ret = array();
+
+ // translate legacy setting to option for source factory
+ if (isset($serveOptions['minApp']['noMinPattern'])) {
+ $ret['noMinPattern'] = $serveOptions['minApp']['noMinPattern'];
+ }
+
+ if (isset($serveOptions['minApp']['allowDirs'])) {
+ $ret['allowDirs'] = $serveOptions['minApp']['allowDirs'];
+ }
+
+ if (isset($serveOptions['checkAllowDirs'])) {
+ $ret['checkAllowDirs'] = $serveOptions['checkAllowDirs'];
+ }
+
+ if (is_numeric($app->config->uploaderHoursBehind)) {
+ $ret['uploaderHoursBehind'] = $app->config->uploaderHoursBehind;
+ }
+
+ return $ret;
+ };
+ }
+
+ public function runServer()
+ {
+ if (!$this->env->get('f') && $this->env->get('g') === null) {
+ // no spec given
+ $msg = '<p>No "f" or "g" parameters were detected.</p>';
+ $url = 'https://github.com/mrclay/minify/blob/master/docs/CommonProblems.wiki.md#long-url-parameters-are-ignored';
+ $defaults = $this->minify->getDefaultOptions();
+ $this->minify->errorExit($defaults['badRequestHeader'], $url, $msg);
+ }
+
+ $this->minify->serve($this->controller, $this->serveOptions);
+ }
+
+ /**
+ * @param mixed $var
+ * @return string
+ */
+ private function typeOf($var)
+ {
+ $type = gettype($var);
+
+ return $type === 'object' ? get_class($var) : $type;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Build.php b/admin/survey/minify/lib/Minify/Build.php
new file mode 100644
index 0000000..177b262
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Build.php
@@ -0,0 +1,101 @@
+<?php
+/**
+ * Class Minify_Build
+ * @package Minify
+ */
+
+/**
+ * Maintain a single last modification time for a group of Minify sources to
+ * allow use of far off Expires headers in Minify.
+ *
+ * <code>
+ * // in config file
+ * $groupSources = array(
+ * 'js' => array('file1.js', 'file2.js')
+ * ,'css' => array('file1.css', 'file2.css', 'file3.css')
+ * )
+ *
+ * // during HTML generation
+ * $jsBuild = new Minify_Build($groupSources['js']);
+ * $cssBuild = new Minify_Build($groupSources['css']);
+ *
+ * $script = "<script type='text/javascript' src='"
+ * . $jsBuild->uri('/min.php/js') . "'></script>";
+ * $link = "<link rel='stylesheet' type='text/css' href='"
+ * . $cssBuild->uri('/min.php/css') . "'>";
+ *
+ * // in min.php
+ * Minify::serve('Groups', array(
+ * 'groups' => $groupSources
+ * ,'setExpires' => (time() + 86400 * 365)
+ * ));
+ * </code>
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_Build
+{
+
+ /**
+ * Last modification time of all files in the build
+ *
+ * @var int
+ */
+ public $lastModified = 0;
+
+ /**
+ * String to use as ampersand in uri(). Set this to '&' if
+ * you are not HTML-escaping URIs.
+ *
+ * @var string
+ */
+ public static $ampersand = '&amp;';
+
+ /**
+ * Get a time-stamped URI
+ *
+ * <code>
+ * echo $b->uri('/site.js');
+ * // outputs "/site.js?1678242"
+ *
+ * echo $b->uri('/scriptaculous.js?load=effects');
+ * // outputs "/scriptaculous.js?load=effects&amp1678242"
+ * </code>
+ *
+ * @param string $uri
+ * @param boolean $forceAmpersand (default = false) Force the use of ampersand to
+ * append the timestamp to the URI.
+ * @return string
+ */
+ public function uri($uri, $forceAmpersand = false)
+ {
+ $sep = ($forceAmpersand || strpos($uri, '?') !== false) ? self::$ampersand : '?';
+
+ return "{$uri}{$sep}{$this->lastModified}";
+ }
+
+ /**
+ * Create a build object
+ *
+ * @param array $sources array of Minify_Source objects and/or file paths
+ *
+ */
+ public function __construct($sources)
+ {
+ $max = 0;
+ foreach ((array)$sources as $source) {
+ if ($source instanceof Minify_Source) {
+ $max = max($max, $source->getLastModified());
+ } elseif (is_string($source)) {
+ if (0 === strpos($source, '//')) {
+ $source = $_SERVER['DOCUMENT_ROOT'] . substr($source, 1);
+ }
+ if (is_file($source)) {
+ $max = max($max, filemtime($source));
+ }
+ }
+ }
+ $this->lastModified = $max;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/CSS.php b/admin/survey/minify/lib/Minify/CSS.php
new file mode 100644
index 0000000..91b076e
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/CSS.php
@@ -0,0 +1,98 @@
+<?php
+/**
+ * Class Minify_CSS
+ * @package Minify
+ */
+
+/**
+ * Minify CSS
+ *
+ * This class uses Minify_CSS_Compressor and Minify_CSS_UriRewriter to
+ * minify CSS and rewrite relative URIs.
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ * @author http://code.google.com/u/1stvamp/ (Issue 64 patch)
+ *
+ * @deprecated Use Minify_CSSmin
+ */
+class Minify_CSS
+{
+
+ /**
+ * Minify a CSS string
+ *
+ * @param string $css
+ *
+ * @param array $options available options:
+ *
+ * 'preserveComments': (default true) multi-line comments that begin
+ * with "/*!" will be preserved with newlines before and after to
+ * enhance readability.
+ *
+ * 'removeCharsets': (default true) remove all @charset at-rules
+ *
+ * 'prependRelativePath': (default null) if given, this string will be
+ * prepended to all relative URIs in import/url declarations
+ *
+ * 'currentDir': (default null) if given, this is assumed to be the
+ * directory of the current CSS file. Using this, minify will rewrite
+ * all relative URIs in import/url declarations to correctly point to
+ * the desired files. For this to work, the files *must* exist and be
+ * visible by the PHP process.
+ *
+ * 'symlinks': (default = array()) If the CSS file is stored in
+ * a symlink-ed directory, provide an array of link paths to
+ * target paths, where the link paths are within the document root. Because
+ * paths need to be normalized for this to work, use "//" to substitute
+ * the doc root in the link paths (the array keys). E.g.:
+ * <code>
+ * array('//symlink' => '/real/target/path') // unix
+ * array('//static' => 'D:\\staticStorage') // Windows
+ * </code>
+ *
+ * 'docRoot': (default = $_SERVER['DOCUMENT_ROOT'])
+ * see Minify_CSS_UriRewriter::rewrite
+ *
+ * @return string
+ */
+ public static function minify($css, $options = array())
+ {
+ $options = array_merge(array(
+ 'compress' => true,
+ 'removeCharsets' => true,
+ 'preserveComments' => true,
+ 'currentDir' => null,
+ 'docRoot' => $_SERVER['DOCUMENT_ROOT'],
+ 'prependRelativePath' => null,
+ 'symlinks' => array(),
+ ), $options);
+
+ if ($options['removeCharsets']) {
+ $css = preg_replace('/@charset[^;]+;\\s*/', '', $css);
+ }
+
+ if ($options['compress']) {
+ if (! $options['preserveComments']) {
+ $css = Minify_CSS_Compressor::process($css, $options);
+ } else {
+ $processor = array('Minify_CSS_Compressor', 'process');
+ $css = Minify_CommentPreserver::process($css, $processor, array($options));
+ }
+ }
+
+ if (! $options['currentDir'] && ! $options['prependRelativePath']) {
+ return $css;
+ }
+
+ if ($options['currentDir']) {
+ $currentDir = $options['currentDir'];
+ $docRoot = $options['docRoot'];
+ $symlinks = $options['symlinks'];
+
+ return Minify_CSS_UriRewriter::rewrite($css, $currentDir, $docRoot, $symlinks);
+ }
+
+ return Minify_CSS_UriRewriter::prepend($css, $options['prependRelativePath']);
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/CSS/Compressor.php b/admin/survey/minify/lib/Minify/CSS/Compressor.php
new file mode 100644
index 0000000..e0ccabb
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/CSS/Compressor.php
@@ -0,0 +1,275 @@
+<?php
+/**
+ * Class Minify_CSS_Compressor
+ * @package Minify
+ */
+
+/**
+ * Compress CSS
+ *
+ * This is a heavy regex-based removal of whitespace, unnecessary
+ * comments and tokens, and some CSS value minimization, where practical.
+ * Many steps have been taken to avoid breaking comment-based hacks,
+ * including the ie5/mac filter (and its inversion), but expect tricky
+ * hacks involving comment tokens in 'content' value strings to break
+ * minimization badly. A test suite is available.
+ *
+ * Note: This replaces a lot of spaces with line breaks. It's rumored
+ * (https://github.com/yui/yuicompressor/blob/master/README.md#global-options)
+ * that some source control tools and old browsers don't like very long lines.
+ * Compressed files with shorter lines are also easier to diff. If this is
+ * unacceptable please use CSSmin instead.
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ * @author http://code.google.com/u/1stvamp/ (Issue 64 patch)
+ *
+ * @deprecated Use CSSmin (tubalmartin/cssmin)
+ */
+class Minify_CSS_Compressor
+{
+
+ /**
+ * Minify a CSS string
+ *
+ * @param string $css
+ *
+ * @param array $options (currently ignored)
+ *
+ * @return string
+ */
+ public static function process($css, $options = array())
+ {
+ $obj = new Minify_CSS_Compressor($options);
+
+ return $obj->_process($css);
+ }
+
+ /**
+ * @var array
+ */
+ protected $_options = null;
+
+ /**
+ * Are we "in" a hack? I.e. are some browsers targetted until the next comment?
+ *
+ * @var bool
+ */
+ protected $_inHack = false;
+
+ /**
+ * Constructor
+ *
+ * @param array $options (currently ignored)
+ */
+ private function __construct($options)
+ {
+ $this->_options = $options;
+ }
+
+ /**
+ * Minify a CSS string
+ *
+ * @param string $css
+ *
+ * @return string
+ */
+ protected function _process($css)
+ {
+ $css = str_replace("\r\n", "\n", $css);
+
+ // preserve empty comment after '>'
+ // http://www.webdevout.net/css-hacks#in_css-selectors
+ $css = preg_replace('@>/\\*\\s*\\*/@', '>/*keep*/', $css);
+
+ // preserve empty comment between property and value
+ // http://css-discuss.incutio.com/?page=BoxModelHack
+ $css = preg_replace('@/\\*\\s*\\*/\\s*:@', '/*keep*/:', $css);
+ $css = preg_replace('@:\\s*/\\*\\s*\\*/@', ':/*keep*/', $css);
+
+ // apply callback to all valid comments (and strip out surrounding ws
+ $pattern = '@\\s*/\\*([\\s\\S]*?)\\*/\\s*@';
+ $css = preg_replace_callback($pattern, array($this, '_commentCB'), $css);
+
+ // remove ws around { } and last semicolon in declaration block
+ $css = preg_replace('/\\s*{\\s*/', '{', $css);
+ $css = preg_replace('/;?\\s*}\\s*/', '}', $css);
+
+ // remove ws surrounding semicolons
+ $css = preg_replace('/\\s*;\\s*/', ';', $css);
+
+ // remove ws around urls
+ $pattern = '/
+ url\\( # url(
+ \\s*
+ ([^\\)]+?) # 1 = the URL (really just a bunch of non right parenthesis)
+ \\s*
+ \\) # )
+ /x';
+ $css = preg_replace($pattern, 'url($1)', $css);
+
+ // remove ws between rules and colons
+ $pattern = '/
+ \\s*
+ ([{;]) # 1 = beginning of block or rule separator
+ \\s*
+ ([\\*_]?[\\w\\-]+) # 2 = property (and maybe IE filter)
+ \\s*
+ :
+ \\s*
+ (\\b|[#\'"-]) # 3 = first character of a value
+ /x';
+ $css = preg_replace($pattern, '$1$2:$3', $css);
+
+ // remove ws in selectors
+ $pattern = '/
+ (?: # non-capture
+ \\s*
+ [^~>+,\\s]+ # selector part
+ \\s*
+ [,>+~] # combinators
+ )+
+ \\s*
+ [^~>+,\\s]+ # selector part
+ { # open declaration block
+ /x';
+ $css = preg_replace_callback($pattern, array($this, '_selectorsCB'), $css);
+
+ // minimize hex colors
+ $pattern = '/([^=])#([a-f\\d])\\2([a-f\\d])\\3([a-f\\d])\\4([\\s;\\}])/i';
+ $css = preg_replace($pattern, '$1#$2$3$4$5', $css);
+
+ // remove spaces between font families
+ $pattern = '/font-family:([^;}]+)([;}])/';
+ $css = preg_replace_callback($pattern, array($this, '_fontFamilyCB'), $css);
+
+ $css = preg_replace('/@import\\s+url/', '@import url', $css);
+
+ // replace any ws involving newlines with a single newline
+ $css = preg_replace('/[ \\t]*\\n+\\s*/', "\n", $css);
+
+ // separate common descendent selectors w/ newlines (to limit line lengths)
+ $pattern = '/([\\w#\\.\\*]+)\\s+([\\w#\\.\\*]+){/';
+ $css = preg_replace($pattern, "$1\n$2{", $css);
+
+ // Use newline after 1st numeric value (to limit line lengths).
+ $pattern = '/
+ ((?:padding|margin|border|outline):\\d+(?:px|em)?) # 1 = prop : 1st numeric value
+ \\s+
+ /x';
+ $css = preg_replace($pattern, "$1\n", $css);
+
+ // prevent triggering IE6 bug: http://www.crankygeek.com/ie6pebug/
+ $css = preg_replace('/:first-l(etter|ine)\\{/', ':first-l$1 {', $css);
+
+ return trim($css);
+ }
+
+ /**
+ * Replace what looks like a set of selectors
+ *
+ * @param array $m regex matches
+ *
+ * @return string
+ */
+ protected function _selectorsCB($m)
+ {
+ // remove ws around the combinators
+ return preg_replace('/\\s*([,>+~])\\s*/', '$1', $m[0]);
+ }
+
+ /**
+ * Process a comment and return a replacement
+ *
+ * @param array $m regex matches
+ *
+ * @return string
+ */
+ protected function _commentCB($m)
+ {
+ $hasSurroundingWs = (trim($m[0]) !== $m[1]);
+ $m = $m[1];
+ // $m is the comment content w/o the surrounding tokens,
+ // but the return value will replace the entire comment.
+ if ($m === 'keep') {
+ return '/**/';
+ }
+
+ if ($m === '" "') {
+ // component of http://tantek.com/CSS/Examples/midpass.html
+ return '/*" "*/';
+ }
+
+ if (preg_match('@";\\}\\s*\\}/\\*\\s+@', $m)) {
+ // component of http://tantek.com/CSS/Examples/midpass.html
+ return '/*";}}/* */';
+ }
+
+ if ($this->_inHack) {
+ // inversion: feeding only to one browser
+ $pattern = '@
+ ^/ # comment started like /*/
+ \\s*
+ (\\S[\\s\\S]+?) # has at least some non-ws content
+ \\s*
+ /\\* # ends like /*/ or /**/
+ @x';
+ if (preg_match($pattern, $m, $n)) {
+ // end hack mode after this comment, but preserve the hack and comment content
+ $this->_inHack = false;
+
+ return "/*/{$n[1]}/**/";
+ }
+ }
+
+ if (substr($m, -1) === '\\') { // comment ends like \*/
+ // begin hack mode and preserve hack
+ $this->_inHack = true;
+
+ return '/*\\*/';
+ }
+
+ if ($m !== '' && $m[0] === '/') { // comment looks like /*/ foo */
+ // begin hack mode and preserve hack
+ $this->_inHack = true;
+
+ return '/*/*/';
+ }
+
+ if ($this->_inHack) {
+ // a regular comment ends hack mode but should be preserved
+ $this->_inHack = false;
+
+ return '/**/';
+ }
+
+ // Issue 107: if there's any surrounding whitespace, it may be important, so
+ // replace the comment with a single space
+ return $hasSurroundingWs ? ' ' : ''; // remove all other comments
+ }
+
+ /**
+ * Process a font-family listing and return a replacement
+ *
+ * @param array $m regex matches
+ *
+ * @return string
+ */
+ protected function _fontFamilyCB($m)
+ {
+ // Issue 210: must not eliminate WS between words in unquoted families
+ $flags = PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY;
+ $pieces = preg_split('/(\'[^\']+\'|"[^"]+")/', $m[1], null, $flags);
+ $out = 'font-family:';
+
+ while (null !== ($piece = array_shift($pieces))) {
+ if ($piece[0] !== '"' && $piece[0] !== "'") {
+ $piece = preg_replace('/\\s+/', ' ', $piece);
+ $piece = preg_replace('/\\s?,\\s?/', ',', $piece);
+ }
+ $out .= $piece;
+ }
+
+ return $out . $m[2];
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/CSS/UriRewriter.php b/admin/survey/minify/lib/Minify/CSS/UriRewriter.php
new file mode 100644
index 0000000..6f69908
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/CSS/UriRewriter.php
@@ -0,0 +1,358 @@
+<?php
+/**
+ * Class Minify_CSS_UriRewriter
+ * @package Minify
+ */
+
+/**
+ * Rewrite file-relative URIs as root-relative in CSS files
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_CSS_UriRewriter
+{
+
+ /**
+ * rewrite() and rewriteRelative() append debugging information here
+ *
+ * @var string
+ */
+ public static $debugText = '';
+
+ /**
+ * In CSS content, rewrite file relative URIs as root relative
+ *
+ * @param string $css
+ *
+ * @param string $currentDir The directory of the current CSS file.
+ *
+ * @param string $docRoot The document root of the web site in which
+ * the CSS file resides (default = $_SERVER['DOCUMENT_ROOT']).
+ *
+ * @param array $symlinks (default = array()) If the CSS file is stored in
+ * a symlink-ed directory, provide an array of link paths to
+ * target paths, where the link paths are within the document root. Because
+ * paths need to be normalized for this to work, use "//" to substitute
+ * the doc root in the link paths (the array keys). E.g.:
+ * <code>
+ * array('//symlink' => '/real/target/path') // unix
+ * array('//static' => 'D:\\staticStorage') // Windows
+ * </code>
+ *
+ * @return string
+ */
+ public static function rewrite($css, $currentDir, $docRoot = null, $symlinks = array())
+ {
+ self::$_docRoot = self::_realpath(
+ $docRoot ? $docRoot : $_SERVER['DOCUMENT_ROOT']
+ );
+ self::$_currentDir = self::_realpath($currentDir);
+ self::$_symlinks = array();
+
+ // normalize symlinks in order to map to link
+ foreach ($symlinks as $link => $target) {
+ $link = ($link === '//') ? self::$_docRoot : str_replace('//', self::$_docRoot . '/', $link);
+ $link = strtr($link, '/', DIRECTORY_SEPARATOR);
+
+ self::$_symlinks[$link] = self::_realpath($target);
+ }
+
+ self::$debugText .= "docRoot : " . self::$_docRoot . "\n"
+ . "currentDir : " . self::$_currentDir . "\n";
+ if (self::$_symlinks) {
+ self::$debugText .= "symlinks : " . var_export(self::$_symlinks, 1) . "\n";
+ }
+ self::$debugText .= "\n";
+
+ $css = self::_trimUrls($css);
+
+ $css = self::_owlifySvgPaths($css);
+
+ // rewrite
+ $pattern = '/@import\\s+([\'"])(.*?)[\'"]/';
+ $css = preg_replace_callback($pattern, array(self::$className, '_processUriCB'), $css);
+
+ $pattern = '/url\\(\\s*([\'"](.*?)[\'"]|[^\\)\\s]+)\\s*\\)/';
+ $css = preg_replace_callback($pattern, array(self::$className, '_processUriCB'), $css);
+
+ $css = self::_unOwlify($css);
+
+ return $css;
+ }
+
+ /**
+ * In CSS content, prepend a path to relative URIs
+ *
+ * @param string $css
+ *
+ * @param string $path The path to prepend.
+ *
+ * @return string
+ */
+ public static function prepend($css, $path)
+ {
+ self::$_prependPath = $path;
+
+ $css = self::_trimUrls($css);
+
+ $css = self::_owlifySvgPaths($css);
+
+ // append
+ $pattern = '/@import\\s+([\'"])(.*?)[\'"]/';
+ $css = preg_replace_callback($pattern, array(self::$className, '_processUriCB'), $css);
+
+ $pattern = '/url\\(\\s*([\'"](.*?)[\'"]|[^\\)\\s]+)\\s*\\)/';
+ $css = preg_replace_callback($pattern, array(self::$className, '_processUriCB'), $css);
+
+ $css = self::_unOwlify($css);
+
+ self::$_prependPath = null;
+
+ return $css;
+ }
+
+ /**
+ * Get a root relative URI from a file relative URI
+ *
+ * <code>
+ * Minify_CSS_UriRewriter::rewriteRelative(
+ * '../img/hello.gif'
+ * , '/home/user/www/css' // path of CSS file
+ * , '/home/user/www' // doc root
+ * );
+ * // returns '/img/hello.gif'
+ *
+ * // example where static files are stored in a symlinked directory
+ * Minify_CSS_UriRewriter::rewriteRelative(
+ * 'hello.gif'
+ * , '/var/staticFiles/theme'
+ * , '/home/user/www'
+ * , array('/home/user/www/static' => '/var/staticFiles')
+ * );
+ * // returns '/static/theme/hello.gif'
+ * </code>
+ *
+ * @param string $uri file relative URI
+ *
+ * @param string $realCurrentDir realpath of the current file's directory.
+ *
+ * @param string $realDocRoot realpath of the site document root.
+ *
+ * @param array $symlinks (default = array()) If the file is stored in
+ * a symlink-ed directory, provide an array of link paths to
+ * real target paths, where the link paths "appear" to be within the document
+ * root. E.g.:
+ * <code>
+ * array('/home/foo/www/not/real/path' => '/real/target/path') // unix
+ * array('C:\\htdocs\\not\\real' => 'D:\\real\\target\\path') // Windows
+ * </code>
+ *
+ * @return string
+ */
+ public static function rewriteRelative($uri, $realCurrentDir, $realDocRoot, $symlinks = array())
+ {
+ // prepend path with current dir separator (OS-independent)
+ $path = strtr($realCurrentDir, '/', DIRECTORY_SEPARATOR);
+ $path .= DIRECTORY_SEPARATOR . strtr($uri, '/', DIRECTORY_SEPARATOR);
+
+ self::$debugText .= "file-relative URI : {$uri}\n"
+ . "path prepended : {$path}\n";
+
+ // "unresolve" a symlink back to doc root
+ foreach ($symlinks as $link => $target) {
+ if (0 === strpos($path, $target)) {
+ // replace $target with $link
+ $path = $link . substr($path, strlen($target));
+
+ self::$debugText .= "symlink unresolved : {$path}\n";
+
+ break;
+ }
+ }
+ // strip doc root
+ $path = substr($path, strlen($realDocRoot));
+
+ self::$debugText .= "docroot stripped : {$path}\n";
+
+ // fix to root-relative URI
+ $uri = strtr($path, '/\\', '//');
+ $uri = self::removeDots($uri);
+
+ self::$debugText .= "traversals removed : {$uri}\n\n";
+
+ return $uri;
+ }
+
+ /**
+ * Remove instances of "./" and "../" where possible from a root-relative URI
+ *
+ * @param string $uri
+ *
+ * @return string
+ */
+ public static function removeDots($uri)
+ {
+ $uri = str_replace('/./', '/', $uri);
+ // inspired by patch from Oleg Cherniy
+ do {
+ $uri = preg_replace('@/[^/]+/\\.\\./@', '/', $uri, 1, $changed);
+ } while ($changed);
+
+ return $uri;
+ }
+
+ /**
+ * Defines which class to call as part of callbacks, change this
+ * if you extend Minify_CSS_UriRewriter
+ *
+ * @var string
+ */
+ protected static $className = 'Minify_CSS_UriRewriter';
+
+ /**
+ * Get realpath with any trailing slash removed. If realpath() fails,
+ * just remove the trailing slash.
+ *
+ * @param string $path
+ *
+ * @return mixed path with no trailing slash
+ */
+ protected static function _realpath($path)
+ {
+ $realPath = realpath($path);
+ if ($realPath !== false) {
+ $path = $realPath;
+ }
+
+ return rtrim($path, '/\\');
+ }
+
+ /**
+ * Directory of this stylesheet
+ *
+ * @var string
+ */
+ private static $_currentDir = '';
+
+ /**
+ * DOC_ROOT
+ *
+ * @var string
+ */
+ private static $_docRoot = '';
+
+ /**
+ * directory replacements to map symlink targets back to their
+ * source (within the document root) E.g. '/var/www/symlink' => '/var/realpath'
+ *
+ * @var array
+ */
+ private static $_symlinks = array();
+
+ /**
+ * Path to prepend
+ *
+ * @var string
+ */
+ private static $_prependPath = null;
+
+ /**
+ * @param string $css
+ *
+ * @return string
+ */
+ private static function _trimUrls($css)
+ {
+ $pattern = '/
+ url\\( # url(
+ \\s*
+ ([^\\)]+?) # 1 = URI (assuming does not contain ")")
+ \\s*
+ \\) # )
+ /x';
+
+ return preg_replace($pattern, 'url($1)', $css);
+ }
+
+ /**
+ * @param array $m
+ *
+ * @return string
+ */
+ private static function _processUriCB($m)
+ {
+ // $m matched either '/@import\\s+([\'"])(.*?)[\'"]/' or '/url\\(\\s*([^\\)\\s]+)\\s*\\)/'
+ $isImport = ($m[0][0] === '@');
+ // determine URI and the quote character (if any)
+ if ($isImport) {
+ $quoteChar = $m[1];
+ $uri = $m[2];
+ } else {
+ // $m[1] is either quoted or not
+ $quoteChar = ($m[1][0] === "'" || $m[1][0] === '"') ? $m[1][0] : '';
+
+ $uri = ($quoteChar === '') ? $m[1] : substr($m[1], 1, strlen($m[1]) - 2);
+ }
+
+ if ($uri === '') {
+ return $m[0];
+ }
+
+ // if not root/scheme relative and not starts with scheme
+ if (!preg_match('~^(/|[a-z]+\:)~', $uri)) {
+ // URI is file-relative: rewrite depending on options
+ if (self::$_prependPath === null) {
+ $uri = self::rewriteRelative($uri, self::$_currentDir, self::$_docRoot, self::$_symlinks);
+ } else {
+ $uri = self::$_prependPath . $uri;
+ if ($uri[0] === '/') {
+ $root = '';
+ $rootRelative = $uri;
+ $uri = $root . self::removeDots($rootRelative);
+ } elseif (preg_match('@^((https?\:)?//([^/]+))/@', $uri, $m) && (false !== strpos($m[3], '.'))) {
+ $root = $m[1];
+ $rootRelative = substr($uri, strlen($root));
+ $uri = $root . self::removeDots($rootRelative);
+ }
+ }
+ }
+
+ if ($isImport) {
+ return "@import {$quoteChar}{$uri}{$quoteChar}";
+ } else {
+ return "url({$quoteChar}{$uri}{$quoteChar})";
+ }
+ }
+
+ /**
+ * Mungs some inline SVG URL declarations so they won't be touched
+ *
+ * @link https://github.com/mrclay/minify/issues/517
+ * @see _unOwlify
+ *
+ * @param string $css
+ * @return string
+ */
+ private static function _owlifySvgPaths($css)
+ {
+ $pattern = '~\b((?:clip-path|mask|-webkit-mask)\s*\:\s*)url(\(\s*#\w+\s*\))~';
+
+ return preg_replace($pattern, '$1owl$2', $css);
+ }
+
+ /**
+ * Undo work of _owlify
+ *
+ * @see _owlifySvgPaths
+ *
+ * @param string $css
+ * @return string
+ */
+ private static function _unOwlify($css)
+ {
+ $pattern = '~\b((?:clip-path|mask|-webkit-mask)\s*\:\s*)owl~';
+
+ return preg_replace($pattern, '$1url', $css);
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/CSSmin.php b/admin/survey/minify/lib/Minify/CSSmin.php
new file mode 100644
index 0000000..dcde782
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/CSSmin.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ * Class Minify_CSSmin
+ * @package Minify
+ */
+
+use tubalmartin\CssMin\Minifier as CSSmin;
+
+/**
+ * Wrapper for CSSmin
+ *
+ * This class uses CSSmin and Minify_CSS_UriRewriter to minify CSS and rewrite relative URIs.
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_CSSmin
+{
+
+ /**
+ * Minify a CSS string
+ *
+ * @param string $css
+ *
+ * @param array $options available options:
+ *
+ * 'removeCharsets': (default true) remove all @charset at-rules
+ *
+ * 'prependRelativePath': (default null) if given, this string will be
+ * prepended to all relative URIs in import/url declarations
+ *
+ * 'currentDir': (default null) if given, this is assumed to be the
+ * directory of the current CSS file. Using this, minify will rewrite
+ * all relative URIs in import/url declarations to correctly point to
+ * the desired files. For this to work, the files *must* exist and be
+ * visible by the PHP process.
+ *
+ * 'symlinks': (default = array()) If the CSS file is stored in
+ * a symlink-ed directory, provide an array of link paths to
+ * target paths, where the link paths are within the document root. Because
+ * paths need to be normalized for this to work, use "//" to substitute
+ * the doc root in the link paths (the array keys). E.g.:
+ * <code>
+ * array('//symlink' => '/real/target/path') // unix
+ * array('//static' => 'D:\\staticStorage') // Windows
+ * </code>
+ *
+ * 'docRoot': (default = $_SERVER['DOCUMENT_ROOT'])
+ * see Minify_CSS_UriRewriter::rewrite
+ *
+ * @return string
+ */
+ public static function minify($css, $options = array())
+ {
+ $options = array_merge(array(
+ 'compress' => true,
+ 'removeCharsets' => true,
+ 'currentDir' => null,
+ 'docRoot' => $_SERVER['DOCUMENT_ROOT'],
+ 'prependRelativePath' => null,
+ 'symlinks' => array(),
+ ), $options);
+
+ if ($options['removeCharsets']) {
+ $css = preg_replace('/@charset[^;]+;\\s*/', '', $css);
+ }
+ if ($options['compress']) {
+ $obj = new CSSmin();
+ $css = $obj->run($css);
+ }
+ if (! $options['currentDir'] && ! $options['prependRelativePath']) {
+ return $css;
+ }
+ if ($options['currentDir']) {
+ return Minify_CSS_UriRewriter::rewrite(
+ $css
+ ,$options['currentDir']
+ ,$options['docRoot']
+ ,$options['symlinks']
+ );
+ }
+
+ return Minify_CSS_UriRewriter::prepend(
+ $css
+ ,$options['prependRelativePath']
+ );
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Cache/APC.php b/admin/survey/minify/lib/Minify/Cache/APC.php
new file mode 100644
index 0000000..27a57d7
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/APC.php
@@ -0,0 +1,136 @@
+<?php
+/**
+ * Class Minify_Cache_APC
+ * @package Minify
+ */
+
+/**
+ * APC-based cache class for Minify
+ *
+ * <code>
+ * Minify::setCache(new Minify_Cache_APC());
+ * </code>
+ *
+ * @package Minify
+ * @author Chris Edwards
+ **/
+class Minify_Cache_APC implements Minify_CacheInterface
+{
+
+ /**
+ * Create a Minify_Cache_APC object, to be passed to
+ * Minify::setCache().
+ *
+ *
+ * @param int $expire seconds until expiration (default = 0
+ * meaning the item will not get an expiration date)
+ *
+ * @return null
+ */
+ public function __construct($expire = 0)
+ {
+ $this->_exp = $expire;
+ }
+
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id
+ *
+ * @param string $data
+ *
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ return apc_store($id, "{$_SERVER['REQUEST_TIME']}|{$data}", $this->_exp);
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id
+ *
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ if (! $this->_fetch($id)) {
+ return false;
+ }
+
+ if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) {
+ return mb_strlen($this->_data, '8bit');
+ } else {
+ return strlen($this->_data);
+ }
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id
+ *
+ * @param int $srcMtime mtime of the original source file(s)
+ *
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ return ($this->_fetch($id) && ($this->_lm >= $srcMtime));
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id
+ */
+ public function display($id)
+ {
+ echo $this->_fetch($id) ? $this->_data : '';
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id
+ *
+ * @return string
+ */
+ public function fetch($id)
+ {
+ return $this->_fetch($id) ? $this->_data : '';
+ }
+
+ private $_exp = null;
+
+ // cache of most recently fetched id
+ private $_lm = null;
+ private $_data = null;
+ private $_id = null;
+
+ /**
+ * Fetch data and timestamp from apc, store in instance
+ *
+ * @param string $id
+ *
+ * @return bool success
+ */
+ private function _fetch($id)
+ {
+ if ($this->_id === $id) {
+ return true;
+ }
+ $ret = apc_fetch($id);
+ if (false === $ret) {
+ $this->_id = null;
+
+ return false;
+ }
+
+ list($this->_lm, $this->_data) = explode('|', $ret, 2);
+ $this->_id = $id;
+
+ return true;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Cache/File.php b/admin/survey/minify/lib/Minify/Cache/File.php
new file mode 100644
index 0000000..5db1e20
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/File.php
@@ -0,0 +1,183 @@
+<?php
+/**
+ * Class Minify_Cache_File
+ * @package Minify
+ */
+
+use Psr\Log\LoggerInterface;
+
+class Minify_Cache_File implements Minify_CacheInterface
+{
+
+ /**
+ * @var string
+ */
+ private $path;
+
+ /**
+ * @var bool
+ */
+ private $locking;
+
+ /**
+ * @var LoggerInterface
+ */
+ private $logger;
+
+ /**
+ * @param string $path
+ * @param bool $fileLocking
+ * @param LoggerInterface $logger
+ */
+ public function __construct($path = '', $fileLocking = false, LoggerInterface $logger = null)
+ {
+ if (! $path) {
+ $path = sys_get_temp_dir();
+ }
+ $this->locking = $fileLocking;
+ $this->path = $path;
+
+ if (!$logger) {
+ $logger = new \Monolog\Logger('minify');
+ }
+ $this->logger = $logger;
+ }
+
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @param string $data
+ *
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ $flag = $this->locking ? LOCK_EX : null;
+ $file = $this->path . '/' . $id;
+
+ if (! @file_put_contents($file, $data, $flag)) {
+ $this->logger->warning("Minify_Cache_File: Write failed to '$file'");
+ }
+
+ // write control
+ if ($data !== $this->fetch($id)) {
+ @unlink($file);
+ $this->logger->warning("Minify_Cache_File: Post-write read failed for '$file'");
+
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ return filesize($this->path . '/' . $id);
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @param int $srcMtime mtime of the original source file(s)
+ *
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ $file = $this->path . '/' . $id;
+
+ return (is_file($file) && (filemtime($file) >= $srcMtime));
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id (e.g. a filename)
+ */
+ public function display($id)
+ {
+ if (!$this->locking) {
+ readfile($this->path . '/' . $id);
+
+ return;
+ }
+
+ $fp = fopen($this->path . '/' . $id, 'rb');
+ flock($fp, LOCK_SH);
+ fpassthru($fp);
+ flock($fp, LOCK_UN);
+ fclose($fp);
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @return string
+ */
+ public function fetch($id)
+ {
+ if (!$this->locking) {
+ return file_get_contents($this->path . '/' . $id);
+ }
+
+ $fp = fopen($this->path . '/' . $id, 'rb');
+ if (!$fp) {
+ return false;
+ }
+
+ flock($fp, LOCK_SH);
+ $ret = stream_get_contents($fp);
+ flock($fp, LOCK_UN);
+ fclose($fp);
+
+ return $ret;
+ }
+
+ /**
+ * Fetch the cache path used
+ *
+ * @return string
+ */
+ public function getPath()
+ {
+ return $this->path;
+ }
+
+ /**
+ * Get a usable temp directory
+ *
+ * @return string
+ * @deprecated
+ */
+ public static function tmp()
+ {
+ trigger_error(__METHOD__ . ' is deprecated in Minfy 3.0', E_USER_DEPRECATED);
+
+ return sys_get_temp_dir();
+ }
+
+ /**
+ * Send message to the Minify logger
+ * @param string $msg
+ * @return null
+ * @deprecated Use $this->logger
+ */
+ protected function _log($msg)
+ {
+ trigger_error(__METHOD__ . ' is deprecated in Minify 3.0.', E_USER_DEPRECATED);
+ $this->logger->warning($msg);
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Cache/Memcache.php b/admin/survey/minify/lib/Minify/Cache/Memcache.php
new file mode 100644
index 0000000..726785a
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/Memcache.php
@@ -0,0 +1,141 @@
+<?php
+/**
+ * Class Minify_Cache_Memcache
+ * @package Minify
+ */
+
+/**
+ * Memcache-based cache class for Minify
+ *
+ * <code>
+ * // fall back to disk caching if memcache can't connect
+ * $memcache = new Memcache;
+ * if ($memcache->connect('localhost', 11211)) {
+ * Minify::setCache(new Minify_Cache_Memcache($memcache));
+ * } else {
+ * Minify::setCache();
+ * }
+ * </code>
+ **/
+class Minify_Cache_Memcache implements Minify_CacheInterface
+{
+
+ /**
+ * Create a Minify_Cache_Memcache object, to be passed to
+ * Minify::setCache().
+ *
+ * @param Memcache $memcache already-connected instance
+ *
+ * @param int $expire seconds until expiration (default = 0
+ * meaning the item will not get an expiration date)
+ */
+ public function __construct($memcache, $expire = 0)
+ {
+ $this->_mc = $memcache;
+ $this->_exp = $expire;
+ }
+
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id
+ *
+ * @param string $data
+ *
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ return $this->_mc->set($id, "{$_SERVER['REQUEST_TIME']}|{$data}", 0, $this->_exp);
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id
+ *
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ if (! $this->_fetch($id)) {
+ return false;
+ }
+
+ if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) {
+ return mb_strlen($this->_data, '8bit');
+ } else {
+ return strlen($this->_data);
+ }
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id
+ *
+ * @param int $srcMtime mtime of the original source file(s)
+ *
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ return ($this->_fetch($id) && ($this->_lm >= $srcMtime));
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id
+ */
+ public function display($id)
+ {
+ echo $this->_fetch($id) ? $this->_data : '';
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id
+ *
+ * @return string
+ */
+ public function fetch($id)
+ {
+ return $this->_fetch($id) ? $this->_data : '';
+ }
+
+ private $_mc = null;
+ private $_exp = null;
+
+ // cache of most recently fetched id
+ private $_lm = null;
+ private $_data = null;
+ private $_id = null;
+
+ /**
+ * Fetch data and timestamp from memcache, store in instance
+ *
+ * @param string $id
+ *
+ * @return bool success
+ */
+ private function _fetch($id)
+ {
+ if ($this->_id === $id) {
+ return true;
+ }
+
+ $ret = $this->_mc->get($id);
+ if (false === $ret) {
+ $this->_id = null;
+
+ return false;
+ }
+
+ list($this->_lm, $this->_data) = explode('|', $ret, 2);
+ $this->_id = $id;
+
+ return true;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Cache/Null.php b/admin/survey/minify/lib/Minify/Cache/Null.php
new file mode 100644
index 0000000..b6f6566
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/Null.php
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * Class Minify_Cache_Null
+ *
+ * If this is used, Minify will not use a cache and, for each 200 response, will
+ * need to recombine files, minify and encode the output.
+ *
+ * @package Minify
+ */
+class Minify_Cache_Null implements Minify_CacheInterface
+{
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id (e.g. a filename)
+ * @param string $data
+ *
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id (e.g. a filename)
+ * @param int $srcMtime mtime of the original source file(s)
+ *
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id (e.g. a filename)
+ */
+ public function display($id)
+ {
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @return string
+ */
+ public function fetch($id)
+ {
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/lib/Minify/Cache/WinCache.php b/admin/survey/minify/lib/Minify/Cache/WinCache.php
new file mode 100644
index 0000000..089d66d
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/WinCache.php
@@ -0,0 +1,139 @@
+<?php
+/**
+ * Class Minify_Cache_Wincache
+ * @package Minify
+ */
+
+/**
+ * WinCache-based cache class for Minify
+ *
+ * <code>
+ * Minify::setCache(new Minify_Cache_WinCache());
+ * </code>
+ *
+ * @package Minify
+ * @author Matthias Fax
+ **/
+class Minify_Cache_WinCache implements Minify_CacheInterface
+{
+ /**
+ * Create a Minify_Cache_Wincache object, to be passed to
+ * Minify::setCache().
+ *
+ * @param int $expire seconds until expiration (default = 0
+ * meaning the item will not get an expiration date)
+ *
+ * @throws Exception
+ */
+ public function __construct($expire = 0)
+ {
+ if (!function_exists('wincache_ucache_info')) {
+ throw new Exception("WinCache for PHP is not installed to be able to use Minify_Cache_WinCache!");
+ }
+ $this->_exp = $expire;
+ }
+
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id
+ *
+ * @param string $data
+ *
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ return wincache_ucache_set($id, "{$_SERVER['REQUEST_TIME']}|{$data}", $this->_exp);
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id
+ *
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ if (!$this->_fetch($id)) {
+ return false;
+ }
+
+ if (function_exists('mb_strlen') && ((int) ini_get('mbstring.func_overload') & 2)) {
+ return mb_strlen($this->_data, '8bit');
+ } else {
+ return strlen($this->_data);
+ }
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id
+ *
+ * @param int $srcMtime mtime of the original source file(s)
+ *
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ return ($this->_fetch($id) && ($this->_lm >= $srcMtime));
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id
+ */
+ public function display($id)
+ {
+ echo $this->_fetch($id) ? $this->_data : '';
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id
+ *
+ * @return string
+ */
+ public function fetch($id)
+ {
+ return $this->_fetch($id) ? $this->_data : '';
+ }
+
+ private $_exp = null;
+
+ // cache of most recently fetched id
+ private $_lm = null;
+ private $_data = null;
+ private $_id = null;
+
+ /**
+ * Fetch data and timestamp from WinCache, store in instance
+ *
+ * @param string $id
+ *
+ * @return bool success
+ */
+ private function _fetch($id)
+ {
+ if ($this->_id === $id) {
+ return true;
+ }
+
+ $suc = false;
+ $ret = wincache_ucache_get($id, $suc);
+ if (!$suc) {
+ $this->_id = null;
+
+ return false;
+ }
+
+ list($this->_lm, $this->_data) = explode('|', $ret, 2);
+ $this->_id = $id;
+
+ return true;
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/lib/Minify/Cache/XCache.php b/admin/survey/minify/lib/Minify/Cache/XCache.php
new file mode 100644
index 0000000..aa2a8de
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/XCache.php
@@ -0,0 +1,130 @@
+<?php
+/**
+ * Class Minify_Cache_XCache
+ *
+ * @link http://xcache.lighttpd.net/
+ * @package Minify
+ */
+
+/**
+ * XCache-based cache class for Minify
+ * {@see http://xcache.lighttpd.net/wiki/XcacheApi XCache API}
+ *
+ * <code>
+ * Minify::setCache(new Minify_Cache_XCache());
+ * </code>
+ *
+ * @package Minify
+ * @author Elan Ruusamäe <glen@delfi.ee>
+ **/
+class Minify_Cache_XCache implements Minify_CacheInterface
+{
+
+ /**
+ * Create a Minify_Cache_XCache object, to be passed to
+ * Minify::setCache().
+ *
+ * @param int $expire seconds until expiration (default = 0
+ * meaning the item will not get an expiration date)
+ */
+ public function __construct($expire = 0)
+ {
+ $this->_exp = $expire;
+ }
+
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id
+ * @param string $data
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ return xcache_set($id, "{$_SERVER['REQUEST_TIME']}|{$data}", $this->_exp);
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ if (! $this->_fetch($id)) {
+ return false;
+ }
+
+ if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) {
+ return mb_strlen($this->_data, '8bit');
+ } else {
+ return strlen($this->_data);
+ }
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id
+ * @param int $srcMtime mtime of the original source file(s)
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ return ($this->_fetch($id) && ($this->_lm >= $srcMtime));
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id
+ */
+ public function display($id)
+ {
+ echo $this->_fetch($id) ? $this->_data : '';
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id
+ * @return string
+ */
+ public function fetch($id)
+ {
+ return $this->_fetch($id) ? $this->_data : '';
+ }
+
+ private $_exp = null;
+
+ // cache of most recently fetched id
+ private $_lm = null;
+ private $_data = null;
+ private $_id = null;
+
+ /**
+ * Fetch data and timestamp from xcache, store in instance
+ *
+ * @param string $id
+ * @return bool success
+ */
+ private function _fetch($id)
+ {
+ if ($this->_id === $id) {
+ return true;
+ }
+
+ $ret = xcache_get($id);
+ if (false === $ret) {
+ $this->_id = null;
+
+ return false;
+ }
+
+ list($this->_lm, $this->_data) = explode('|', $ret, 2);
+ $this->_id = $id;
+
+ return true;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Cache/ZendPlatform.php b/admin/survey/minify/lib/Minify/Cache/ZendPlatform.php
new file mode 100644
index 0000000..90dfabb
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Cache/ZendPlatform.php
@@ -0,0 +1,129 @@
+<?php
+/**
+ * Class Minify_Cache_ZendPlatform
+ * @package Minify
+ */
+
+/**
+ * ZendPlatform-based cache class for Minify
+ *
+ * Based on Minify_Cache_APC, uses output_cache_get/put (currently deprecated)
+ *
+ * <code>
+ * Minify::setCache(new Minify_Cache_ZendPlatform());
+ * </code>
+ *
+ * @package Minify
+ * @author Patrick van Dissel
+ */
+class Minify_Cache_ZendPlatform implements Minify_CacheInterface
+{
+
+ /**
+ * Create a Minify_Cache_ZendPlatform object, to be passed to
+ * Minify::setCache().
+ *
+ * @param int $expire seconds until expiration (default = 0
+ * meaning the item will not get an expiration date)
+ *
+ */
+ public function __construct($expire = 0)
+ {
+ $this->_exp = $expire;
+ }
+
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id
+ *
+ * @param string $data
+ *
+ * @return bool success
+ */
+ public function store($id, $data)
+ {
+ return output_cache_put($id, "{$_SERVER['REQUEST_TIME']}|{$data}");
+ }
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id
+ *
+ * @return int size in bytes
+ */
+ public function getSize($id)
+ {
+ return $this->_fetch($id) ? strlen($this->_data) : false;
+ }
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id
+ *
+ * @param int $srcMtime mtime of the original source file(s)
+ *
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime)
+ {
+ return ($this->_fetch($id) && ($this->_lm >= $srcMtime));
+ }
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id
+ */
+ public function display($id)
+ {
+ echo $this->_fetch($id) ? $this->_data : '';
+ }
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id
+ *
+ * @return string
+ */
+ public function fetch($id)
+ {
+ return $this->_fetch($id) ? $this->_data : '';
+ }
+
+ private $_exp = null;
+
+ // cache of most recently fetched id
+ private $_lm = null;
+ private $_data = null;
+ private $_id = null;
+
+ /**
+ * Fetch data and timestamp from ZendPlatform, store in instance
+ *
+ * @param string $id
+ *
+ * @return bool success
+ */
+ private function _fetch($id)
+ {
+ if ($this->_id === $id) {
+ return true;
+ }
+
+ $ret = output_cache_get($id, $this->_exp);
+ if (false === $ret) {
+ $this->_id = null;
+
+ return false;
+ }
+
+ list($this->_lm, $this->_data) = explode('|', $ret, 2);
+ $this->_id = $id;
+
+ return true;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/CacheInterface.php b/admin/survey/minify/lib/Minify/CacheInterface.php
new file mode 100644
index 0000000..4b1c51a
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/CacheInterface.php
@@ -0,0 +1,58 @@
+<?php
+/**
+ * Interface Minify_CacheInterface
+ * @package Minify
+ */
+
+/**
+ * Interface for Minify cache adapters
+ *
+ * @package Minify
+ */
+interface Minify_CacheInterface
+{
+ /**
+ * Write data to cache.
+ *
+ * @param string $id cache id (e.g. a filename)
+ * @param string $data
+ *
+ * @return bool success
+ */
+ public function store($id, $data);
+
+ /**
+ * Get the size of a cache entry
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @return int size in bytes
+ */
+ public function getSize($id);
+
+ /**
+ * Does a valid cache entry exist?
+ *
+ * @param string $id cache id (e.g. a filename)
+ * @param int $srcMtime mtime of the original source file(s)
+ *
+ * @return bool exists
+ */
+ public function isValid($id, $srcMtime);
+
+ /**
+ * Send the cached content to output
+ *
+ * @param string $id cache id (e.g. a filename)
+ */
+ public function display($id);
+
+ /**
+ * Fetch the cached content
+ *
+ * @param string $id cache id (e.g. a filename)
+ *
+ * @return string
+ */
+ public function fetch($id);
+}
diff --git a/admin/survey/minify/lib/Minify/ClosureCompiler.php b/admin/survey/minify/lib/Minify/ClosureCompiler.php
new file mode 100644
index 0000000..e95ebc3
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/ClosureCompiler.php
@@ -0,0 +1,240 @@
+<?php
+/**
+ * Class Minify_ClosureCompiler
+ * @package Minify
+ */
+
+/**
+ * Compress Javascript using the Closure Compiler
+ *
+ * You must set $jarFile and $tempDir before calling the minify functions.
+ * Also, depending on your shell's environment, you may need to specify
+ * the full path to java in $javaExecutable or use putenv() to setup the
+ * Java environment.
+ *
+ * <code>
+ * Minify_ClosureCompiler::$jarFile = '/path/to/closure-compiler-20120123.jar';
+ * Minify_ClosureCompiler::$tempDir = '/tmp';
+ * $code = Minify_ClosureCompiler::minify(
+ * $code,
+ * array('compilation_level' => 'SIMPLE_OPTIMIZATIONS')
+ * );
+ *
+ * --compilation_level WHITESPACE_ONLY, SIMPLE_OPTIMIZATIONS, ADVANCED_OPTIMIZATIONS
+ *
+ * </code>
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ * @author Elan Ruusamäe <glen@delfi.ee>
+ */
+class Minify_ClosureCompiler
+{
+ public static $isDebug = false;
+
+ /**
+ * Filepath of the Closure Compiler jar file. This must be set before
+ * calling minifyJs().
+ *
+ * @var string
+ */
+ public static $jarFile;
+
+ /**
+ * Writable temp directory. This must be set before calling minifyJs().
+ *
+ * @var string
+ */
+ public static $tempDir;
+
+ /**
+ * Filepath of "java" executable (may be needed if not in shell's PATH)
+ *
+ * @var string
+ */
+ public static $javaExecutable = 'java';
+
+ /**
+ * Default command line options passed to closure-compiler
+ *
+ * @var array
+ */
+ public static $defaultOptions = array(
+ 'charset' => 'utf-8',
+ 'compilation_level' => 'SIMPLE_OPTIMIZATIONS',
+ 'warning_level' => 'QUIET',
+ );
+
+ /**
+ * Minify a Javascript string
+ *
+ * @param string $js
+ * @param array $options (verbose is ignored)
+ * @see https://code.google.com/p/closure-compiler/source/browse/trunk/README
+ * @return string
+ * @throws Minify_ClosureCompiler_Exception
+ */
+ public static function minify($js, $options = array())
+ {
+ $min = new static();
+
+ return $min->process($js, $options);
+ }
+
+ /**
+ * Process $js using $options.
+ *
+ * @param string $js
+ * @param array $options
+ * @return string
+ * @throws Exception
+ * @throws Minify_ClosureCompiler_Exception
+ */
+ public function process($js, $options)
+ {
+ $tmpFile = $this->dumpFile(self::$tempDir, $js);
+ try {
+ $result = $this->compile($tmpFile, $options);
+ } catch (Exception $e) {
+ unlink($tmpFile);
+ throw $e;
+ }
+ unlink($tmpFile);
+
+ return $result;
+ }
+
+ /**
+ * @param string $tmpFile
+ * @param array $options
+ * @return string
+ * @throws Minify_ClosureCompiler_Exception
+ */
+ protected function compile($tmpFile, $options)
+ {
+ $command = $this->getCommand($options, $tmpFile);
+
+ return implode("\n", $this->shell($command));
+ }
+
+ /**
+ * @param array $userOptions
+ * @param string $tmpFile
+ * @return string
+ */
+ protected function getCommand($userOptions, $tmpFile)
+ {
+ $args = array_merge(
+ $this->getCompilerCommandLine(),
+ $this->getOptionsCommandLine($userOptions)
+ );
+
+ return implode(' ', $args) . ' ' . escapeshellarg($tmpFile);
+ }
+
+ /**
+ * @return array
+ * @throws Minify_ClosureCompiler_Exception
+ */
+ protected function getCompilerCommandLine()
+ {
+ $this->checkJar(self::$jarFile);
+ $server = array(
+ self::$javaExecutable,
+ '-jar',
+ escapeshellarg(self::$jarFile)
+ );
+
+ return $server;
+ }
+
+ /**
+ * @param array $userOptions
+ * @return array
+ */
+ protected function getOptionsCommandLine($userOptions)
+ {
+ $args = array();
+
+ $options = array_merge(
+ static::$defaultOptions,
+ $userOptions
+ );
+
+ foreach ($options as $key => $value) {
+ $args[] = "--{$key} " . escapeshellarg($value);
+ }
+
+ return $args;
+ }
+
+ /**
+ * @param string $jarFile
+ * @throws Minify_ClosureCompiler_Exception
+ */
+ protected function checkJar($jarFile)
+ {
+ if (!is_file($jarFile)) {
+ throw new Minify_ClosureCompiler_Exception('$jarFile(' . $jarFile . ') is not a valid file.');
+ }
+ if (!is_readable($jarFile)) {
+ throw new Minify_ClosureCompiler_Exception('$jarFile(' . $jarFile . ') is not readable.');
+ }
+ }
+
+ /**
+ * @param string $tempDir
+ * @throws Minify_ClosureCompiler_Exception
+ */
+ protected function checkTempdir($tempDir)
+ {
+ if (!is_dir($tempDir)) {
+ throw new Minify_ClosureCompiler_Exception('$tempDir(' . $tempDir . ') is not a valid direcotry.');
+ }
+ if (!is_writable($tempDir)) {
+ throw new Minify_ClosureCompiler_Exception('$tempDir(' . $tempDir . ') is not writable.');
+ }
+ }
+
+ /**
+ * Write $content to a temporary file residing in $dir.
+ *
+ * @param string $dir
+ * @param string $content
+ * @return string
+ * @throws Minify_ClosureCompiler_Exception
+ */
+ protected function dumpFile($dir, $content)
+ {
+ $this->checkTempdir($dir);
+ $tmpFile = tempnam($dir, 'cc_');
+ if (!$tmpFile) {
+ throw new Minify_ClosureCompiler_Exception('Could not create temp file in "' . $dir . '".');
+ }
+ file_put_contents($tmpFile, $content);
+
+ return $tmpFile;
+ }
+
+ /**
+ * Execute command, throw if exit code is not in $expectedCodes array
+ *
+ * @param string $command
+ * @param array $expectedCodes
+ * @return mixed
+ * @throws Minify_ClosureCompiler_Exception
+ */
+ protected function shell($command, $expectedCodes = array(0))
+ {
+ exec($command, $output, $result_code);
+ if (!in_array($result_code, $expectedCodes)) {
+ throw new Minify_ClosureCompiler_Exception("Unpexpected return code: $result_code");
+ }
+
+ return $output;
+ }
+}
+
+class Minify_ClosureCompiler_Exception extends Exception
+{
+}
diff --git a/admin/survey/minify/lib/Minify/CommentPreserver.php b/admin/survey/minify/lib/Minify/CommentPreserver.php
new file mode 100644
index 0000000..2e6599d
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/CommentPreserver.php
@@ -0,0 +1,87 @@
+<?php
+/**
+ * Class Minify_CommentPreserver
+ * @package Minify
+ */
+
+/**
+ * Process a string in pieces preserving C-style comments that begin with "/*!"
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_CommentPreserver
+{
+
+ /**
+ * String to be prepended to each preserved comment
+ *
+ * @var string
+ */
+ public static $prepend = "\n";
+
+ /**
+ * String to be appended to each preserved comment
+ *
+ * @var string
+ */
+ public static $append = "\n";
+
+ /**
+ * Process a string outside of C-style comments that begin with "/*!"
+ *
+ * On each non-empty string outside these comments, the given processor
+ * function will be called. The comments will be surrounded by
+ * Minify_CommentPreserver::$preprend and Minify_CommentPreserver::$append.
+ *
+ * @param string $content
+ * @param callback $processor function
+ * @param array $args array of extra arguments to pass to the processor
+ * function (default = array())
+ * @return string
+ */
+ public static function process($content, $processor, $args = array())
+ {
+ $ret = '';
+ while (true) {
+ list($beforeComment, $comment, $afterComment) = self::_nextComment($content);
+ if ('' !== $beforeComment) {
+ $callArgs = $args;
+ array_unshift($callArgs, $beforeComment);
+ $ret .= call_user_func_array($processor, $callArgs);
+ }
+ if (false === $comment) {
+ break;
+ }
+ $ret .= $comment;
+ $content = $afterComment;
+ }
+
+ return $ret;
+ }
+
+ /**
+ * Extract comments that YUI Compressor preserves.
+ *
+ * @param string $in input
+ *
+ * @return array 3 elements are returned. If a YUI comment is found, the
+ * 2nd element is the comment and the 1st and 3rd are the surrounding
+ * strings. If no comment is found, the entire string is returned as the
+ * 1st element and the other two are false.
+ */
+ private static function _nextComment($in)
+ {
+ if (false === ($start = strpos($in, '/*!')) || false === ($end = strpos($in, '*/', $start + 3))) {
+ return array($in, false, false);
+ }
+
+ $beforeComment = substr($in, 0, $start);
+ $comment = self::$prepend . '/*!' . substr($in, $start + 3, $end - $start - 1) . self::$append;
+
+ $endChars = (strlen($in) - $end - 2);
+ $afterComment = (0 === $endChars) ? '' : substr($in, -$endChars);
+
+ return array($beforeComment, $comment, $afterComment);
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Config.php b/admin/survey/minify/lib/Minify/Config.php
new file mode 100644
index 0000000..a085920
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Config.php
@@ -0,0 +1,78 @@
+<?php
+
+namespace Minify;
+
+use Minify_CacheInterface;
+
+class Config
+{
+ /**
+ * @var bool
+ */
+ public $enableBuilder = false;
+
+ /**
+ * @var bool
+ */
+ public $enableStatic = false;
+
+ /**
+ * @var bool
+ */
+ public $concatOnly = false;
+
+ /**
+ * @var string
+ */
+ public $builderPassword = 'admin';
+
+ /**
+ * @var bool|object
+ */
+ public $errorLogger = false;
+
+ /**
+ * @var bool
+ */
+ public $allowDebugFlag = false;
+
+ /**
+ * @var string|Minify_CacheInterface
+ */
+ public $cachePath = '';
+
+ /**
+ * @var string
+ */
+ public $documentRoot = '';
+
+ /**
+ * @var bool
+ */
+ public $cacheFileLocking = true;
+
+ /**
+ * @var array
+ */
+ public $serveOptions = array();
+
+ /**
+ * @var array
+ */
+ public $symlinks = array();
+
+ /**
+ * @var int
+ */
+ public $uploaderHoursBehind = 0;
+
+ /**
+ * @var array
+ */
+ public $envArgs = array();
+
+ /**
+ * @var callable[]
+ */
+ public $factories = array();
+}
diff --git a/admin/survey/minify/lib/Minify/Controller/Base.php b/admin/survey/minify/lib/Minify/Controller/Base.php
new file mode 100644
index 0000000..557b514
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Controller/Base.php
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Class Minify_Controller_Base
+ * @package Minify
+ */
+
+use Psr\Log\LoggerInterface;
+use Monolog\Logger;
+
+/**
+ * Base class for Minify controller
+ *
+ * The controller class validates a request and uses it to create a configuration for Minify::serve().
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+abstract class Minify_Controller_Base implements Minify_ControllerInterface
+{
+
+ /**
+ * @var Minify_Env
+ */
+ protected $env;
+
+ /**
+ * @var Minify_Source_Factory
+ */
+ protected $sourceFactory;
+
+ /**
+ * @var LoggerInterface
+ */
+ protected $logger;
+
+ /**
+ * @param Minify_Env $env
+ * @param Minify_Source_Factory $sourceFactory
+ * @param LoggerInterface $logger
+ */
+ public function __construct(Minify_Env $env, Minify_Source_Factory $sourceFactory, LoggerInterface $logger = null)
+ {
+ $this->env = $env;
+ $this->sourceFactory = $sourceFactory;
+ if (!$logger) {
+ $logger = new Logger('minify');
+ }
+ $this->logger = $logger;
+ }
+
+ /**
+ * Create controller sources and options for Minify::serve()
+ *
+ * @param array $options controller and Minify options
+ *
+ * @return Minify_ServeConfiguration
+ */
+ abstract public function createConfiguration(array $options);
+
+ /**
+ * Send message to the Minify logger
+ *
+ * @param string $msg
+ *
+ * @return null
+ * @deprecated use $this->logger
+ */
+ public function log($msg)
+ {
+ trigger_error(__METHOD__ . ' is deprecated in Minify 3.0.', E_USER_DEPRECATED);
+ $this->logger->info($msg);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getEnv()
+ {
+ return $this->env;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Controller/Files.php b/admin/survey/minify/lib/Minify/Controller/Files.php
new file mode 100644
index 0000000..a9bb941
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Controller/Files.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Class Minify_Controller_Files
+ * @package Minify
+ */
+
+use Monolog\Logger;
+
+/**
+ * Controller class for minifying a set of files
+ *
+ * E.g. the following would serve the minified Javascript for a site
+ * <code>
+ * $options = [
+ * 'checkAllowDirs' => false, // allow files to be anywhere
+ * ];
+ * $sourceFactory = new Minify_Source_Factory($env, $options, $cache);
+ * $controller = new Minify_Controller_Files($env, $sourceFactory);
+ * $minify->serve($controller, [
+ * 'files' => [
+ * '//js/jquery.js',
+ * '//js/plugins.js',
+ * '/home/username/file.js',
+ * ],
+ * ]);
+ * </code>
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_Controller_Files extends Minify_Controller_Base
+{
+
+ /**
+ * Set up file sources
+ *
+ * @param array $options controller and Minify options
+ * @return Minify_ServeConfiguration
+ *
+ * Controller options:
+ *
+ * 'files': (required) array of complete file paths, or a single path
+ */
+ public function createConfiguration(array $options)
+ {
+ // strip controller options
+
+ $files = $options['files'];
+ // if $files is a single object, casting will break it
+ if (is_object($files)) {
+ $files = array($files);
+ } elseif (! is_array($files)) {
+ $files = (array)$files;
+ }
+ unset($options['files']);
+
+ $sources = array();
+ foreach ($files as $file) {
+ try {
+ $sources[] = $this->sourceFactory->makeSource($file);
+ } catch (Minify_Source_FactoryException $e) {
+ $this->logger->error($e->getMessage());
+
+ return new Minify_ServeConfiguration($options);
+ }
+ }
+
+ return new Minify_ServeConfiguration($options, $sources);
+ }
+}
+
diff --git a/admin/survey/minify/lib/Minify/Controller/Groups.php b/admin/survey/minify/lib/Minify/Controller/Groups.php
new file mode 100644
index 0000000..6d4e5f4
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Controller/Groups.php
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Class Minify_Controller_Groups
+ * @package Minify
+ */
+
+/**
+ * Controller class for serving predetermined groups of minimized sets, selected
+ * by PATH_INFO
+ *
+ * <code>
+ * Minify::serve('Groups', array(
+ * 'groups' => array(
+ * 'css' => array('//css/type.css', '//css/layout.css')
+ * ,'js' => array('//js/jquery.js', '//js/site.js')
+ * )
+ * ));
+ * </code>
+ *
+ * If the above code were placed in /serve.php, it would enable the URLs
+ * /serve.php/js and /serve.php/css
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_Controller_Groups extends Minify_Controller_Files
+{
+
+ /**
+ * Set up groups of files as sources
+ *
+ * @param array $options controller and Minify options
+ *
+ * 'groups': (required) array mapping PATH_INFO strings to arrays
+ * of complete file paths. @see Minify_Controller_Groups
+ *
+ * @return array Minify options
+ */
+ public function createConfiguration(array $options)
+ {
+ // strip controller options
+ $groups = $options['groups'];
+ unset($options['groups']);
+
+ $server = $this->env->server();
+
+ // mod_fcgid places PATH_INFO in ORIG_PATH_INFO
+ if (isset($server['ORIG_PATH_INFO'])) {
+ $pathInfo = substr($server['ORIG_PATH_INFO'], 1);
+ } elseif (isset($server['PATH_INFO'])) {
+ $pathInfo = substr($server['PATH_INFO'], 1);
+ } else {
+ $pathInfo = false;
+ }
+
+ if (false === $pathInfo || ! isset($groups[$pathInfo])) {
+ // no PATH_INFO or not a valid group
+ $this->logger->info("Missing PATH_INFO or no group set for \"$pathInfo\"");
+
+ return new Minify_ServeConfiguration($options);
+ }
+
+ $files = $groups[$pathInfo];
+ // if $files is a single object, casting will break it
+ if (is_object($files)) {
+ $files = array($files);
+ } elseif (! is_array($files)) {
+ $files = (array)$files;
+ }
+
+ $options['files'] = $files;
+
+ return parent::createConfiguration($options);
+ }
+}
+
diff --git a/admin/survey/minify/lib/Minify/Controller/MinApp.php b/admin/survey/minify/lib/Minify/Controller/MinApp.php
new file mode 100644
index 0000000..9a6a098
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Controller/MinApp.php
@@ -0,0 +1,196 @@
+<?php
+/**
+ * Class Minify_Controller_MinApp
+ * @package Minify
+ */
+
+/**
+ * Controller class for requests to /min/index.php
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_Controller_MinApp extends Minify_Controller_Base
+{
+
+ /**
+ * Set up groups of files as sources
+ *
+ * @param array $options controller and Minify options
+ *
+ * @return array Minify options
+ */
+ public function createConfiguration(array $options)
+ {
+ // PHP insecure by default: realpath() and other FS functions can't handle null bytes.
+ $get = $this->env->get();
+ foreach (array('g', 'b', 'f') as $key) {
+ if (isset($get[$key])) {
+ $get[$key] = str_replace("\x00", '', (string)$get[$key]);
+ }
+ }
+
+ // filter controller options
+ $defaults = array(
+ 'groupsOnly' => false,
+ 'groups' => array(),
+ 'symlinks' => array(),
+ );
+ $minApp = isset($options['minApp']) ? $options['minApp'] : array();
+ $localOptions = array_merge($defaults, $minApp);
+
+ unset($options['minApp']);
+
+ // normalize $symlinks in order to map to target
+ $symlinks = array();
+ foreach ($localOptions['symlinks'] as $link => $target) {
+ if (0 === strpos($link, '//')) {
+ $link = rtrim(substr($link, 1), '/') . '/';
+ $target = rtrim($target, '/\\');
+ $symlinks[$link] = $target;
+ }
+ }
+
+ $sources = array();
+ $selectionId = '';
+ $firstMissing = null;
+
+ if (isset($get['g'])) {
+ // add group(s)
+ $selectionId .= 'g=' . $get['g'];
+ $keys = explode(',', $get['g']);
+ if ($keys != array_unique($keys)) {
+ $this->logger->info("Duplicate group key found.");
+
+ return new Minify_ServeConfiguration($options);
+ }
+ foreach ($keys as $key) {
+ if (! isset($localOptions['groups'][$key])) {
+ $this->logger->info("A group configuration for \"{$key}\" was not found");
+
+ return new Minify_ServeConfiguration($options);
+ }
+ $files = $localOptions['groups'][$key];
+ // if $files is a single object, casting will break it
+ if (is_object($files)) {
+ $files = array($files);
+ } elseif (! is_array($files)) {
+ $files = (array)$files;
+ }
+ foreach ($files as $file) {
+ try {
+ $source = $this->sourceFactory->makeSource($file);
+ $sources[] = $source;
+ } catch (Minify_Source_FactoryException $e) {
+ $this->logger->error($e->getMessage());
+ if (null === $firstMissing) {
+ $firstMissing = basename($file);
+ continue;
+ } else {
+ $secondMissing = basename($file);
+ $this->logger->info("More than one file was missing: '$firstMissing', '$secondMissing'");
+
+ return new Minify_ServeConfiguration($options);
+ }
+ }
+ }
+ }
+ }
+ if (! $localOptions['groupsOnly'] && isset($get['f'])) {
+ // try user files
+ // The following restrictions are to limit the URLs that minify will
+ // respond to.
+
+ // verify at least one file, files are single comma separated, and are all same extension
+ $validPattern = preg_match('/^[^,]+\\.(css|less|scss|js)(?:,[^,]+\\.\\1)*$/', $get['f'], $m);
+ $hasComment = strpos($get['f'], '//') !== false;
+ $hasEscape = strpos($get['f'], '\\') !== false;
+
+ if (!$validPattern || $hasComment || $hasEscape) {
+ $this->logger->info("GET param 'f' was invalid");
+
+ return new Minify_ServeConfiguration($options);
+ }
+
+ $ext = ".{$m[1]}";
+ $files = explode(',', $get['f']);
+ if ($files != array_unique($files)) {
+ $this->logger->info("Duplicate files were specified");
+
+ return new Minify_ServeConfiguration($options);
+ }
+
+ if (isset($get['b'])) {
+ // check for validity
+ $isValidBase = preg_match('@^[^/]+(?:/[^/]+)*$@', $get['b']);
+ $hasDots = false !== strpos($get['b'], '..');
+ $isDot = $get['b'] === '.';
+
+ if ($isValidBase && !$hasDots && !$isDot) {
+ // valid base
+ $base = "/{$get['b']}/";
+ } else {
+ $this->logger->info("GET param 'b' was invalid");
+
+ return new Minify_ServeConfiguration($options);
+ }
+ } else {
+ $base = '/';
+ }
+
+ $basenames = array(); // just for cache id
+ foreach ($files as $file) {
+ $uri = $base . $file;
+ $path = $this->env->getDocRoot() . $uri;
+
+ // try to rewrite path
+ foreach ($symlinks as $link => $target) {
+ if (0 === strpos($uri, $link)) {
+ $path = $target . DIRECTORY_SEPARATOR . substr($uri, strlen($link));
+ break;
+ }
+ }
+
+ try {
+ $source = $this->sourceFactory->makeSource($path);
+ $sources[] = $source;
+ $basenames[] = basename($path, $ext);
+ } catch (Minify_Source_FactoryException $e) {
+ $this->logger->error($e->getMessage());
+ if (null === $firstMissing) {
+ $firstMissing = $uri;
+ continue;
+ } else {
+ $secondMissing = $uri;
+ $this->logger->info("More than one file was missing: '$firstMissing', '$secondMissing`'");
+
+ return new Minify_ServeConfiguration($options);
+ }
+ }
+ }
+ if ($selectionId) {
+ $selectionId .= '_f=';
+ }
+ $selectionId .= implode(',', $basenames) . $ext;
+ }
+
+ if (!$sources) {
+ $this->logger->info("No sources to serve");
+
+ return new Minify_ServeConfiguration($options);
+ }
+
+ if (null !== $firstMissing) {
+ array_unshift($sources, new Minify_Source(array(
+ 'id' => 'missingFile',
+ // should not cause cache invalidation
+ 'lastModified' => 0,
+ // due to caching, filename is unreliable.
+ 'content' => "/* Minify: at least one missing file. See " . Minify::URL_DEBUG . " */\n",
+ 'minifier' => 'Minify::nullMinifier',
+ )));
+ }
+
+ return new Minify_ServeConfiguration($options, $sources, $selectionId);
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Controller/Page.php b/admin/survey/minify/lib/Minify/Controller/Page.php
new file mode 100644
index 0000000..8ca00d5
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Controller/Page.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * Class Minify_Controller_Page
+ * @package Minify
+ */
+
+/**
+ * Controller class for serving a single HTML page
+ *
+ * @link http://code.google.com/p/minify/source/browse/trunk/web/examples/1/index.php#59
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_Controller_Page extends Minify_Controller_Base
+{
+
+ /**
+ * Set up source of HTML content
+ *
+ * @param array $options controller and Minify options
+ * @return array Minify options
+ *
+ * Controller options:
+ *
+ * 'content': (required) HTML markup
+ *
+ * 'id': (required) id of page (string for use in server-side caching)
+ *
+ * 'lastModifiedTime': timestamp of when this content changed. This
+ * is recommended to allow both server and client-side caching.
+ *
+ * 'minifyAll': should all CSS and Javascript blocks be individually
+ * minified? (default false)
+ */
+ public function createConfiguration(array $options)
+ {
+ if (isset($options['file'])) {
+ $sourceSpec = array(
+ 'filepath' => $options['file']
+ );
+ $f = $options['file'];
+ } else {
+ // strip controller options
+ $sourceSpec = array(
+ 'content' => $options['content'],
+ 'id' => $options['id'],
+ );
+ $f = $options['id'];
+ unset($options['content'], $options['id']);
+ }
+ // something like "builder,index.php" or "directory,file.html"
+ $selectionId = strtr(substr($f, 1 + strlen(dirname(dirname($f)))), '/\\', ',,');
+
+ if (isset($options['minifyAll'])) {
+ // this will be the 2nd argument passed to Minify_HTML::minify()
+ $sourceSpec['minifyOptions'] = array(
+ 'cssMinifier' => array('Minify_CSSmin', 'minify'),
+ 'jsMinifier' => array('JSMin\\JSMin', 'minify'),
+ );
+ unset($options['minifyAll']);
+ }
+
+ $sourceSpec['contentType'] = Minify::TYPE_HTML;
+ $sources[] = new Minify_Source($sourceSpec);
+
+ return new Minify_ServeConfiguration($options, $sources, $selectionId);
+ }
+}
+
diff --git a/admin/survey/minify/lib/Minify/ControllerInterface.php b/admin/survey/minify/lib/Minify/ControllerInterface.php
new file mode 100644
index 0000000..d468635
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/ControllerInterface.php
@@ -0,0 +1,22 @@
+<?php
+
+
+interface Minify_ControllerInterface
+{
+
+ /**
+ * Create controller sources and options for Minify::serve()
+ *
+ * @param array $options controller and Minify options
+ *
+ * @return Minify_ServeConfiguration
+ */
+ public function createConfiguration(array $options);
+
+ /**
+ * Get the Env component
+ *
+ * @return Minify_Env
+ */
+ public function getEnv();
+} \ No newline at end of file
diff --git a/admin/survey/minify/lib/Minify/DebugDetector.php b/admin/survey/minify/lib/Minify/DebugDetector.php
new file mode 100644
index 0000000..2a3c7a7
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/DebugDetector.php
@@ -0,0 +1,30 @@
+<?php
+
+/**
+ * Detect whether request should be debugged
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_DebugDetector
+{
+ public static function shouldDebugRequest(Minify_Env $env)
+ {
+ if ($env->get('debug') !== null) {
+ return true;
+ }
+
+ $cookieValue = $env->cookie('minifyDebug');
+ if ($cookieValue) {
+ foreach (preg_split('/\\s+/', $cookieValue) as $debugUri) {
+ $pattern = '@' . preg_quote($debugUri, '@') . '@i';
+ $pattern = str_replace(array('\\*', '\\?'), array('.*', '.'), $pattern);
+ if (preg_match($pattern, $env->getRequestUri())) {
+ return true;
+ }
+ }
+ }
+
+ return false;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Env.php b/admin/survey/minify/lib/Minify/Env.php
new file mode 100644
index 0000000..3bc78f7
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Env.php
@@ -0,0 +1,127 @@
+<?php
+
+class Minify_Env
+{
+
+ /**
+ * @return string
+ */
+ public function getDocRoot()
+ {
+ return $this->server['DOCUMENT_ROOT'];
+ }
+
+ /**
+ * @return string
+ */
+ public function getRequestUri()
+ {
+ return $this->server['REQUEST_URI'];
+ }
+
+ public function __construct($options = array())
+ {
+ $options = array_merge(array(
+ 'server' => $_SERVER,
+ 'get' => $_GET,
+ 'post' => $_POST,
+ 'cookie' => $_COOKIE,
+ ), $options);
+
+ $this->server = $options['server'];
+ if (empty($this->server['DOCUMENT_ROOT'])) {
+ $this->server['DOCUMENT_ROOT'] = $this->computeDocRoot($options['server']);
+ } else {
+ $this->server['DOCUMENT_ROOT'] = rtrim($this->server['DOCUMENT_ROOT'], '/\\');
+ }
+
+ $this->server['DOCUMENT_ROOT'] = $this->normalizePath($this->server['DOCUMENT_ROOT']);
+ $this->get = $options['get'];
+ $this->post = $options['post'];
+ $this->cookie = $options['cookie'];
+ }
+
+ public function server($key = null)
+ {
+ if (null === $key) {
+ return $this->server;
+ }
+
+ return isset($this->server[$key]) ? $this->server[$key] : null;
+ }
+
+ public function cookie($key = null, $default = null)
+ {
+ if (null === $key) {
+ return $this->cookie;
+ }
+
+ return isset($this->cookie[$key]) ? $this->cookie[$key] : $default;
+ }
+
+ public function get($key = null, $default = null)
+ {
+ if (null === $key) {
+ return $this->get;
+ }
+
+ return isset($this->get[$key]) ? $this->get[$key] : $default;
+ }
+
+ public function post($key = null, $default = null)
+ {
+ if (null === $key) {
+ return $this->post;
+ }
+
+ return isset($this->post[$key]) ? $this->post[$key] : $default;
+ }
+
+ /**
+ * turn windows-style slashes into unix-style,
+ * remove trailing slash
+ * and lowercase drive letter
+ *
+ * @param string $path absolute path
+ *
+ * @return string
+ */
+ public function normalizePath($path)
+ {
+ $realpath = realpath($path);
+ if ($realpath) {
+ $path = $realpath;
+ }
+
+ $path = str_replace('\\', '/', $path);
+ $path = rtrim($path, '/');
+ if (substr($path, 1, 1) === ':') {
+ $path = lcfirst($path);
+ }
+
+ return $path;
+ }
+
+ protected $server;
+ protected $get;
+ protected $post;
+ protected $cookie;
+
+ /**
+ * Compute $_SERVER['DOCUMENT_ROOT'] for IIS using SCRIPT_FILENAME and SCRIPT_NAME.
+ *
+ * @param array $server
+ * @return string
+ */
+ protected function computeDocRoot(array $server)
+ {
+ if (isset($server['SERVER_SOFTWARE']) && 0 !== strpos($server['SERVER_SOFTWARE'], 'Microsoft-IIS/')) {
+ throw new InvalidArgumentException('DOCUMENT_ROOT is not provided and could not be computed');
+ }
+
+ $substrLength = strlen($server['SCRIPT_FILENAME']) - strlen($server['SCRIPT_NAME']);
+ $docRoot = substr($server['SCRIPT_FILENAME'], 0, $substrLength);
+
+ return rtrim($docRoot, '\\');
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/HTML.php b/admin/survey/minify/lib/Minify/HTML.php
new file mode 100644
index 0000000..24b14ac
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/HTML.php
@@ -0,0 +1,258 @@
+<?php
+/**
+ * Class Minify_HTML
+ * @package Minify
+ */
+
+/**
+ * Compress HTML
+ *
+ * This is a heavy regex-based removal of whitespace, unnecessary comments and
+ * tokens. IE conditional comments are preserved. There are also options to have
+ * STYLE and SCRIPT blocks compressed by callback functions.
+ *
+ * A test suite is available.
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_HTML
+{
+ /**
+ * @var boolean
+ */
+ protected $_jsCleanComments = true;
+
+ /**
+ * "Minify" an HTML page
+ *
+ * @param string $html
+ *
+ * @param array $options
+ *
+ * 'cssMinifier' : (optional) callback function to process content of STYLE
+ * elements.
+ *
+ * 'jsMinifier' : (optional) callback function to process content of SCRIPT
+ * elements. Note: the type attribute is ignored.
+ *
+ * 'xhtml' : (optional boolean) should content be treated as XHTML1.0? If
+ * unset, minify will sniff for an XHTML doctype.
+ *
+ * @return string
+ */
+ public static function minify($html, $options = array())
+ {
+ $min = new self($html, $options);
+
+ return $min->process();
+ }
+
+ /**
+ * Create a minifier object
+ *
+ * @param string $html
+ *
+ * @param array $options
+ *
+ * 'cssMinifier' : (optional) callback function to process content of STYLE
+ * elements.
+ *
+ * 'jsMinifier' : (optional) callback function to process content of SCRIPT
+ * elements. Note: the type attribute is ignored.
+ *
+ * 'jsCleanComments' : (optional) whether to remove HTML comments beginning and end of script block
+ *
+ * 'xhtml' : (optional boolean) should content be treated as XHTML1.0? If
+ * unset, minify will sniff for an XHTML doctype.
+ */
+ public function __construct($html, $options = array())
+ {
+ $this->_html = str_replace("\r\n", "\n", trim($html));
+ if (isset($options['xhtml'])) {
+ $this->_isXhtml = (bool)$options['xhtml'];
+ }
+ if (isset($options['cssMinifier'])) {
+ $this->_cssMinifier = $options['cssMinifier'];
+ }
+ if (isset($options['jsMinifier'])) {
+ $this->_jsMinifier = $options['jsMinifier'];
+ }
+ if (isset($options['jsCleanComments'])) {
+ $this->_jsCleanComments = (bool)$options['jsCleanComments'];
+ }
+ }
+
+ /**
+ * Minify the markeup given in the constructor
+ *
+ * @return string
+ */
+ public function process()
+ {
+ if ($this->_isXhtml === null) {
+ $this->_isXhtml = (false !== strpos($this->_html, '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML'));
+ }
+
+ $this->_replacementHash = 'MINIFYHTML' . md5($_SERVER['REQUEST_TIME']);
+ $this->_placeholders = array();
+
+ // replace SCRIPTs (and minify) with placeholders
+ $this->_html = preg_replace_callback(
+ '/(\\s*)<script(\\b[^>]*?>)([\\s\\S]*?)<\\/script>(\\s*)/iu'
+ ,array($this, '_removeScriptCB')
+ ,$this->_html);
+
+ // replace STYLEs (and minify) with placeholders
+ $this->_html = preg_replace_callback(
+ '/\\s*<style(\\b[^>]*>)([\\s\\S]*?)<\\/style>\\s*/iu'
+ ,array($this, '_removeStyleCB')
+ ,$this->_html);
+
+ // remove HTML comments (not containing IE conditional comments).
+ $this->_html = preg_replace_callback(
+ '/<!--([\\s\\S]*?)-->/u'
+ ,array($this, '_commentCB')
+ ,$this->_html);
+
+ // replace PREs with placeholders
+ $this->_html = preg_replace_callback('/\\s*<pre(\\b[^>]*?>[\\s\\S]*?<\\/pre>)\\s*/iu'
+ ,array($this, '_removePreCB')
+ ,$this->_html);
+
+ // replace TEXTAREAs with placeholders
+ $this->_html = preg_replace_callback(
+ '/\\s*<textarea(\\b[^>]*?>[\\s\\S]*?<\\/textarea>)\\s*/iu'
+ ,array($this, '_removeTextareaCB')
+ ,$this->_html);
+
+ // trim each line.
+ // @todo take into account attribute values that span multiple lines.
+ $this->_html = preg_replace('/^\\s+|\\s+$/mu', '', $this->_html);
+
+ // remove ws around block/undisplayed elements
+ $this->_html = preg_replace('/\\s+(<\\/?(?:area|article|aside|base(?:font)?|blockquote|body'
+ .'|canvas|caption|center|col(?:group)?|dd|dir|div|dl|dt|fieldset|figcaption|figure|footer|form'
+ .'|frame(?:set)?|h[1-6]|head|header|hgroup|hr|html|legend|li|link|main|map|menu|meta|nav'
+ .'|ol|opt(?:group|ion)|output|p|param|section|t(?:able|body|head|d|h||r|foot|itle)'
+ .'|ul|video)\\b[^>]*>)/iu', '$1', $this->_html);
+
+ // remove ws outside of all elements
+ $this->_html = preg_replace(
+ '/>(\\s(?:\\s*))?([^<]+)(\\s(?:\s*))?</u'
+ ,'>$1$2$3<'
+ ,$this->_html);
+
+ // use newlines before 1st attribute in open tags (to limit line lengths)
+ $this->_html = preg_replace('/(<[a-z\\-]+)\\s+([^>]+>)/iu', "$1\n$2", $this->_html);
+
+ // fill placeholders
+ $this->_html = str_replace(
+ array_keys($this->_placeholders)
+ ,array_values($this->_placeholders)
+ ,$this->_html
+ );
+ // issue 229: multi-pass to catch scripts that didn't get replaced in textareas
+ $this->_html = str_replace(
+ array_keys($this->_placeholders)
+ ,array_values($this->_placeholders)
+ ,$this->_html
+ );
+
+ return $this->_html;
+ }
+
+ protected function _commentCB($m)
+ {
+ return (0 === strpos($m[1], '[') || false !== strpos($m[1], '<!['))
+ ? $m[0]
+ : '';
+ }
+
+ protected function _reservePlace($content)
+ {
+ $placeholder = '%' . $this->_replacementHash . count($this->_placeholders) . '%';
+ $this->_placeholders[$placeholder] = $content;
+
+ return $placeholder;
+ }
+
+ protected $_isXhtml;
+ protected $_replacementHash;
+ protected $_placeholders = array();
+ protected $_cssMinifier;
+ protected $_jsMinifier;
+
+ protected function _removePreCB($m)
+ {
+ return $this->_reservePlace("<pre{$m[1]}");
+ }
+
+ protected function _removeTextareaCB($m)
+ {
+ return $this->_reservePlace("<textarea{$m[1]}");
+ }
+
+ protected function _removeStyleCB($m)
+ {
+ $openStyle = "<style{$m[1]}";
+ $css = $m[2];
+ // remove HTML comments
+ $css = preg_replace('/(?:^\\s*<!--|-->\\s*$)/u', '', $css);
+
+ // remove CDATA section markers
+ $css = $this->_removeCdata($css);
+
+ // minify
+ $minifier = $this->_cssMinifier
+ ? $this->_cssMinifier
+ : 'trim';
+ $css = call_user_func($minifier, $css);
+
+ return $this->_reservePlace($this->_needsCdata($css)
+ ? "{$openStyle}/*<![CDATA[*/{$css}/*]]>*/</style>"
+ : "{$openStyle}{$css}</style>"
+ );
+ }
+
+ protected function _removeScriptCB($m)
+ {
+ $openScript = "<script{$m[2]}";
+ $js = $m[3];
+
+ // whitespace surrounding? preserve at least one space
+ $ws1 = ($m[1] === '') ? '' : ' ';
+ $ws2 = ($m[4] === '') ? '' : ' ';
+
+ // remove HTML comments (and ending "//" if present)
+ if ($this->_jsCleanComments) {
+ $js = preg_replace('/(?:^\\s*<!--\\s*|\\s*(?:\\/\\/)?\\s*-->\\s*$)/u', '', $js);
+ }
+
+ // remove CDATA section markers
+ $js = $this->_removeCdata($js);
+
+ // minify
+ $minifier = $this->_jsMinifier
+ ? $this->_jsMinifier
+ : 'trim';
+ $js = call_user_func($minifier, $js);
+
+ return $this->_reservePlace($this->_needsCdata($js)
+ ? "{$ws1}{$openScript}/*<![CDATA[*/{$js}/*]]>*/</script>{$ws2}"
+ : "{$ws1}{$openScript}{$js}</script>{$ws2}"
+ );
+ }
+
+ protected function _removeCdata($str)
+ {
+ return (false !== strpos($str, '<![CDATA['))
+ ? str_replace(array('<![CDATA[', ']]>'), '', $str)
+ : $str;
+ }
+
+ protected function _needsCdata($str)
+ {
+ return ($this->_isXhtml && preg_match('/(?:[<&]|\\-\\-|\\]\\]>)/u', $str));
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/HTML/Helper.php b/admin/survey/minify/lib/Minify/HTML/Helper.php
new file mode 100644
index 0000000..84ed45e
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/HTML/Helper.php
@@ -0,0 +1,250 @@
+<?php
+/**
+ * Class Minify_HTML_Helper
+ * @package Minify
+ */
+
+/**
+ * Helpers for writing Minify URIs into HTML
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_HTML_Helper
+{
+ public $rewriteWorks = true;
+ public $minAppUri = '/min';
+ public $groupsConfigFile = '';
+
+ /**
+ * Get an HTML-escaped Minify URI for a group or set of files
+ *
+ * @param string|array $keyOrFiles a group key or array of filepaths/URIs
+ * @param array $opts options:
+ * 'farExpires' : (default true) append a modified timestamp for cache revving
+ * 'debug' : (default false) append debug flag
+ * 'charset' : (default 'UTF-8') for htmlspecialchars
+ * 'minAppUri' : (default '/min') URI of min directory
+ * 'rewriteWorks' : (default true) does mod_rewrite work in min app?
+ * 'groupsConfigFile' : specify if different
+ * @return string
+ */
+ public static function getUri($keyOrFiles, $opts = array())
+ {
+ $opts = array_merge(array( // default options
+ 'farExpires' => true,
+ 'debug' => false,
+ 'charset' => 'UTF-8',
+ 'minAppUri' => '/min',
+ 'rewriteWorks' => true,
+ 'groupsConfigFile' => self::app()->groupsConfigPath,
+ ), $opts);
+
+ $h = new self;
+ $h->minAppUri = $opts['minAppUri'];
+ $h->rewriteWorks = $opts['rewriteWorks'];
+ $h->groupsConfigFile = $opts['groupsConfigFile'];
+
+ if (is_array($keyOrFiles)) {
+ $h->setFiles($keyOrFiles, $opts['farExpires']);
+ } else {
+ $h->setGroup($keyOrFiles, $opts['farExpires']);
+ }
+ $uri = $h->getRawUri($opts['farExpires'], $opts['debug']);
+
+ return htmlspecialchars($uri, ENT_QUOTES, $opts['charset']);
+ }
+
+ /**
+ * Get non-HTML-escaped URI to minify the specified files
+ *
+ * @param bool $farExpires
+ * @param bool $debug
+ * @return string
+ */
+ public function getRawUri($farExpires = true, $debug = false)
+ {
+ $path = rtrim($this->minAppUri, '/') . '/';
+ if (! $this->rewriteWorks) {
+ $path .= '?';
+ }
+ if (null === $this->_groupKey) {
+ // @todo: implement shortest uri
+ $path = self::_getShortestUri($this->_filePaths, $path);
+ } else {
+ $path .= "g=" . $this->_groupKey;
+ }
+ if ($debug) {
+ $path .= "&debug";
+ } elseif ($farExpires && $this->_lastModified) {
+ $path .= "&" . $this->_lastModified;
+ }
+
+ return $path;
+ }
+
+ /**
+ * Set the files that will comprise the URI we're building
+ *
+ * @param array $files
+ * @param bool $checkLastModified
+ */
+ public function setFiles($files, $checkLastModified = true)
+ {
+ $this->_groupKey = null;
+ if ($checkLastModified) {
+ $this->_lastModified = self::getLastModified($files);
+ }
+ // normalize paths like in /min/f=<paths>
+ foreach ($files as $k => $file) {
+ if (0 === strpos($file, '//')) {
+ $file = substr($file, 2);
+ } elseif (0 === strpos($file, '/') || 1 === strpos($file, ':\\')) {
+ $file = substr($file, strlen(self::app()->env->getDocRoot()) + 1);
+ }
+ $file = strtr($file, '\\', '/');
+ $files[$k] = $file;
+ }
+ $this->_filePaths = $files;
+ }
+
+ /**
+ * Set the group of files that will comprise the URI we're building
+ *
+ * @param string $key
+ * @param bool $checkLastModified
+ */
+ public function setGroup($key, $checkLastModified = true)
+ {
+ $this->_groupKey = $key;
+ if ($checkLastModified) {
+ if (! $this->groupsConfigFile) {
+ $this->groupsConfigFile = self::app()->groupsConfigPath;
+ }
+ if (is_file($this->groupsConfigFile)) {
+ $gc = (require $this->groupsConfigFile);
+ $keys = explode(',', $key);
+ foreach ($keys as $key) {
+ if (!isset($gc[$key])) {
+ // this can happen if value is null
+ // which could be solved with array_filter
+ continue;
+ }
+
+ $this->_lastModified = self::getLastModified($gc[$key], $this->_lastModified);
+ }
+ }
+ }
+ }
+
+ /**
+ * Get the max(lastModified) of all files
+ *
+ * @param array|string $sources
+ * @param int $lastModified
+ * @return int
+ */
+ public static function getLastModified($sources, $lastModified = 0)
+ {
+ $max = $lastModified;
+ $factory = self::app()->sourceFactory;
+
+ /** @var Minify_Source $source */
+ foreach ((array)$sources as $source) {
+ $source = $factory->makeSource($source);
+ $max = max($max, $source->getLastModified());
+ }
+
+ return $max;
+ }
+
+ /**
+ * @param \Minify\App $app
+ * @return \Minify\App
+ * @internal
+ */
+ public static function app(\Minify\App $app = null)
+ {
+ static $cached;
+ if ($app) {
+ $cached = $app;
+
+ return $app;
+ }
+ if ($cached === null) {
+ $cached = (require __DIR__ . '/../../../bootstrap.php');
+ }
+
+ return $cached;
+ }
+
+ protected $_groupKey = null; // if present, URI will be like g=...
+ protected $_filePaths = array();
+ protected $_lastModified = null;
+
+ /**
+ * In a given array of strings, find the character they all have at
+ * a particular index
+ *
+ * @param array $arr array of strings
+ * @param int $pos index to check
+ * @return mixed a common char or '' if any do not match
+ */
+ protected static function _getCommonCharAtPos($arr, $pos)
+ {
+ if (!isset($arr[0][$pos])) {
+ return '';
+ }
+ $c = $arr[0][$pos];
+ $l = count($arr);
+ if ($l === 1) {
+ return $c;
+ }
+ for ($i = 1; $i < $l; ++$i) {
+ if ($arr[$i][$pos] !== $c) {
+ return '';
+ }
+ }
+
+ return $c;
+ }
+
+ /**
+ * Get the shortest URI to minify the set of source files
+ *
+ * @param array $paths root-relative URIs of files
+ * @param string $minRoot root-relative URI of the "min" application
+ * @return string
+ */
+ protected static function _getShortestUri($paths, $minRoot = '/min/')
+ {
+ $pos = 0;
+ $base = '';
+ while (true) {
+ $c = self::_getCommonCharAtPos($paths, $pos);
+ if ($c === '') {
+ break;
+ } else {
+ $base .= $c;
+ }
+ ++$pos;
+ }
+ $base = preg_replace('@[^/]+$@', '', $base);
+ $uri = $minRoot . 'f=' . implode(',', $paths);
+
+ if (substr($base, -1) === '/') {
+ // we have a base dir!
+ $basedPaths = $paths;
+ $l = count($paths);
+ for ($i = 0; $i < $l; ++$i) {
+ $basedPaths[$i] = substr($paths[$i], strlen($base));
+ }
+ $base = substr($base, 0, strlen($base) - 1);
+ $bUri = $minRoot . 'b=' . $base . '&f=' . implode(',', $basedPaths);
+
+ $uri = strlen($uri) < strlen($bUri) ? $uri : $bUri;
+ }
+
+ return $uri;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/ImportProcessor.php b/admin/survey/minify/lib/Minify/ImportProcessor.php
new file mode 100644
index 0000000..0f8c981
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/ImportProcessor.php
@@ -0,0 +1,217 @@
+<?php
+/**
+ * Class Minify_ImportProcessor
+ * @package Minify
+ */
+
+/**
+ * Linearize a CSS/JS file by including content specified by CSS import
+ * declarations. In CSS files, relative URIs are fixed.
+ *
+ * @imports will be processed regardless of where they appear in the source
+ * files; i.e. @imports commented out or in string content will still be
+ * processed!
+ *
+ * This has a unit test but should be considered "experimental".
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ * @author Simon Schick <simonsimcity@gmail.com>
+ */
+class Minify_ImportProcessor
+{
+ public static $filesIncluded = array();
+
+ public static function process($file)
+ {
+ self::$filesIncluded = array();
+ self::$_isCss = (strtolower(substr($file, -4)) === '.css');
+ $obj = new Minify_ImportProcessor(dirname($file));
+
+ return $obj->_getContent($file);
+ }
+
+ // allows callback funcs to know the current directory
+ private $_currentDir;
+
+ // allows callback funcs to know the directory of the file that inherits this one
+ private $_previewsDir;
+
+ // allows _importCB to write the fetched content back to the obj
+ private $_importedContent = '';
+
+ private static $_isCss;
+
+ /**
+ * @param String $currentDir
+ * @param String $previewsDir Is only used internally
+ */
+ private function __construct($currentDir, $previewsDir = "")
+ {
+ $this->_currentDir = $currentDir;
+ $this->_previewsDir = $previewsDir;
+ }
+
+ private function _getContent($file, $is_imported = false)
+ {
+ $file = preg_replace('~\\?.*~', '', $file);
+ $file = realpath($file);
+ if (! $file
+ || in_array($file, self::$filesIncluded)
+ || false === ($content = @file_get_contents($file))) {
+ // file missing, already included, or failed read
+ return '';
+ }
+ self::$filesIncluded[] = realpath($file);
+ $this->_currentDir = dirname($file);
+
+ // remove UTF-8 BOM if present
+ if (pack("CCC",0xef,0xbb,0xbf) === substr($content, 0, 3)) {
+ $content = substr($content, 3);
+ }
+ // ensure uniform EOLs
+ $content = str_replace("\r\n", "\n", $content);
+
+ // process @imports
+ $pattern = '/
+ @import\\s+
+ (?:url\\(\\s*)? # maybe url(
+ [\'"]? # maybe quote
+ (.*?) # 1 = URI
+ [\'"]? # maybe end quote
+ (?:\\s*\\))? # maybe )
+ ([a-zA-Z,\\s]*)? # 2 = media list
+ ; # end token
+ /x';
+ $content = preg_replace_callback($pattern, array($this, '_importCB'), $content);
+
+ // You only need to rework the import-path if the script is imported
+ if (self::$_isCss && $is_imported) {
+ // rewrite remaining relative URIs
+ $pattern = '/url\\(\\s*([^\\)\\s]+)\\s*\\)/';
+ $content = preg_replace_callback($pattern, array($this, '_urlCB'), $content);
+ }
+
+ return $this->_importedContent . $content;
+ }
+
+ private function _importCB($m)
+ {
+ $url = $m[1];
+ $mediaList = preg_replace('/\\s+/', '', $m[2]);
+
+ if (strpos($url, '://') > 0) {
+ // protocol, leave in place for CSS, comment for JS
+ return self::$_isCss
+ ? $m[0]
+ : "/* Minify_ImportProcessor will not include remote content */";
+ }
+ if ('/' === $url[0]) {
+ // protocol-relative or root path
+ $url = ltrim($url, '/');
+ $file = realpath($_SERVER['DOCUMENT_ROOT']) . DIRECTORY_SEPARATOR
+ . strtr($url, '/', DIRECTORY_SEPARATOR);
+ } else {
+ // relative to current path
+ $file = $this->_currentDir . DIRECTORY_SEPARATOR
+ . strtr($url, '/', DIRECTORY_SEPARATOR);
+ }
+ $obj = new Minify_ImportProcessor(dirname($file), $this->_currentDir);
+ $content = $obj->_getContent($file, true);
+ if ('' === $content) {
+ // failed. leave in place for CSS, comment for JS
+ return self::$_isCss
+ ? $m[0]
+ : "/* Minify_ImportProcessor could not fetch '{$file}' */";
+ }
+
+ return (!self::$_isCss || preg_match('@(?:^$|\\ball\\b)@', $mediaList))
+ ? $content
+ : "@media {$mediaList} {\n{$content}\n}\n";
+ }
+
+ private function _urlCB($m)
+ {
+ // $m[1] is either quoted or not
+ $quote = ($m[1][0] === "'" || $m[1][0] === '"') ? $m[1][0] : '';
+
+ $url = ($quote === '') ? $m[1] : substr($m[1], 1, strlen($m[1]) - 2);
+
+ if ('/' !== $url[0]) {
+ if (strpos($url, '//') > 0) {
+ // probably starts with protocol, do not alter
+ } else {
+ // prepend path with current dir separator (OS-independent)
+ $path = $this->_currentDir
+ . DIRECTORY_SEPARATOR . strtr($url, '/', DIRECTORY_SEPARATOR);
+ // update the relative path by the directory of the file that imported this one
+ $url = self::getPathDiff(realpath($this->_previewsDir), $path);
+ }
+ }
+
+ return "url({$quote}{$url}{$quote})";
+ }
+
+ /**
+ * @param string $from
+ * @param string $to
+ * @param string $ps
+ * @return string
+ */
+ private function getPathDiff($from, $to, $ps = DIRECTORY_SEPARATOR)
+ {
+ $realFrom = $this->truepath($from);
+ $realTo = $this->truepath($to);
+
+ $arFrom = explode($ps, rtrim($realFrom, $ps));
+ $arTo = explode($ps, rtrim($realTo, $ps));
+ while (count($arFrom) && count($arTo) && ($arFrom[0] == $arTo[0])) {
+ array_shift($arFrom);
+ array_shift($arTo);
+ }
+
+ return str_pad("", count($arFrom) * 3, '..' . $ps) . implode($ps, $arTo);
+ }
+
+ /**
+ * This function is to replace PHP's extremely buggy realpath().
+ * @param string $path The original path, can be relative etc.
+ * @return string The resolved path, it might not exist.
+ * @see http://stackoverflow.com/questions/4049856/replace-phps-realpath
+ */
+ private function truepath($path)
+ {
+ // whether $path is unix or not
+ $unipath = ('' === $path) || ($path{0} !== '/');
+
+ // attempts to detect if path is relative in which case, add cwd
+ if (strpos($path, ':') === false && $unipath) {
+ $path = $this->_currentDir . DIRECTORY_SEPARATOR . $path;
+ }
+
+ // resolve path parts (single dot, double dot and double delimiters)
+ $path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path);
+ $parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
+ $absolutes = array();
+ foreach ($parts as $part) {
+ if ('.' === $part) {
+ continue;
+ }
+ if ('..' === $part) {
+ array_pop($absolutes);
+ } else {
+ $absolutes[] = $part;
+ }
+ }
+
+ $path = implode(DIRECTORY_SEPARATOR, $absolutes);
+ // resolve any symlinks
+ if (file_exists($path) && linkinfo($path) > 0) {
+ $path = readlink($path);
+ }
+ // put initial separator that could have been lost
+ $path = !$unipath ? '/' . $path : $path;
+
+ return $path;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/JS/ClosureCompiler.php b/admin/survey/minify/lib/Minify/JS/ClosureCompiler.php
new file mode 100644
index 0000000..05e2e33
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/JS/ClosureCompiler.php
@@ -0,0 +1,237 @@
+<?php
+/**
+ * Class Minify_JS_ClosureCompiler
+ * @package Minify
+ */
+
+/**
+ * Minify Javascript using Google's Closure Compiler API
+ *
+ * @link http://code.google.com/closure/compiler/
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ *
+ * @todo can use a stream wrapper to unit test this?
+ */
+class Minify_JS_ClosureCompiler
+{
+
+ /**
+ * @var string The option key for the maximum POST byte size
+ */
+ const OPTION_MAX_BYTES = 'maxBytes';
+
+ /**
+ * @var string The option key for additional params. @see __construct
+ */
+ const OPTION_ADDITIONAL_OPTIONS = 'additionalParams';
+
+ /**
+ * @var string The option key for the fallback Minifier
+ */
+ const OPTION_FALLBACK_FUNCTION = 'fallbackFunc';
+
+ /**
+ * @var string The option key for the service URL
+ */
+ const OPTION_COMPILER_URL = 'compilerUrl';
+
+ /**
+ * @var int The default maximum POST byte size according to https://developers.google.com/closure/compiler/docs/api-ref
+ */
+ const DEFAULT_MAX_BYTES = 200000;
+
+ /**
+ * @var string[] $DEFAULT_OPTIONS The default options to pass to the compiler service
+ *
+ * @note This would be a constant if PHP allowed it
+ */
+ private static $DEFAULT_OPTIONS = array(
+ 'output_format' => 'text',
+ 'compilation_level' => 'SIMPLE_OPTIMIZATIONS'
+ );
+
+ /**
+ * @var string $url URL of compiler server. defaults to Google's
+ */
+ protected $serviceUrl = 'https://closure-compiler.appspot.com/compile';
+
+ /**
+ * @var int $maxBytes The maximum JS size that can be sent to the compiler server in bytes
+ */
+ protected $maxBytes = self::DEFAULT_MAX_BYTES;
+
+ /**
+ * @var string[] $additionalOptions Additional options to pass to the compiler service
+ */
+ protected $additionalOptions = array();
+
+ /**
+ * @var callable Function to minify JS if service fails. Default is JSMin
+ */
+ protected $fallbackMinifier = array('JSMin\\JSMin', 'minify');
+
+ /**
+ * Minify JavaScript code via HTTP request to a Closure Compiler API
+ *
+ * @param string $js input code
+ * @param array $options Options passed to __construct(). @see __construct
+ *
+ * @return string
+ */
+ public static function minify($js, array $options = array())
+ {
+ $obj = new self($options);
+
+ return $obj->min($js);
+ }
+
+ /**
+ * @param array $options Options with keys available below:
+ *
+ * fallbackFunc : (callable) function to minify if service unavailable. Default is JSMin.
+ *
+ * compilerUrl : (string) URL to closure compiler server
+ *
+ * maxBytes : (int) The maximum amount of bytes to be sent as js_code in the POST request.
+ * Defaults to 200000.
+ *
+ * additionalParams : (string[]) Additional parameters to pass to the compiler server. Can be anything named
+ * in https://developers.google.com/closure/compiler/docs/api-ref except for js_code and
+ * output_info
+ */
+ public function __construct(array $options = array())
+ {
+ if (isset($options[self::OPTION_FALLBACK_FUNCTION])) {
+ $this->fallbackMinifier = $options[self::OPTION_FALLBACK_FUNCTION];
+ }
+ if (isset($options[self::OPTION_COMPILER_URL])) {
+ $this->serviceUrl = $options[self::OPTION_COMPILER_URL];
+ }
+ if (isset($options[self::OPTION_ADDITIONAL_OPTIONS]) && is_array($options[self::OPTION_ADDITIONAL_OPTIONS])) {
+ $this->additionalOptions = $options[self::OPTION_ADDITIONAL_OPTIONS];
+ }
+ if (isset($options[self::OPTION_MAX_BYTES])) {
+ $this->maxBytes = (int) $options[self::OPTION_MAX_BYTES];
+ }
+ }
+
+ /**
+ * Call the service to perform the minification
+ *
+ * @param string $js JavaScript code
+ * @return string
+ * @throws Minify_JS_ClosureCompiler_Exception
+ */
+ public function min($js)
+ {
+ $postBody = $this->buildPostBody($js);
+
+ if ($this->maxBytes > 0) {
+ $bytes = (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2))
+ ? mb_strlen($postBody, '8bit')
+ : strlen($postBody);
+ if ($bytes > $this->maxBytes) {
+ throw new Minify_JS_ClosureCompiler_Exception(
+ 'POST content larger than ' . $this->maxBytes . ' bytes'
+ );
+ }
+ }
+
+ $response = $this->getResponse($postBody);
+
+ if (preg_match('/^Error\(\d\d?\):/', $response)) {
+ if (is_callable($this->fallbackMinifier)) {
+ // use fallback
+ $response = "/* Received errors from Closure Compiler API:\n$response"
+ . "\n(Using fallback minifier)\n*/\n";
+ $response .= call_user_func($this->fallbackMinifier, $js);
+ } else {
+ throw new Minify_JS_ClosureCompiler_Exception($response);
+ }
+ }
+
+ if ($response === '') {
+ $errors = $this->getResponse($this->buildPostBody($js, true));
+ throw new Minify_JS_ClosureCompiler_Exception($errors);
+ }
+
+ return $response;
+ }
+
+ /**
+ * Get the response for a given POST body
+ *
+ * @param string $postBody
+ * @return string
+ * @throws Minify_JS_ClosureCompiler_Exception
+ */
+ protected function getResponse($postBody)
+ {
+ $allowUrlFopen = preg_match('/1|yes|on|true/i', ini_get('allow_url_fopen'));
+
+ if ($allowUrlFopen) {
+ $contents = file_get_contents($this->serviceUrl, false, stream_context_create(array(
+ 'http' => array(
+ 'method' => 'POST',
+ 'compilation_level' => 'SIMPLE',
+ 'output_format' => 'text',
+ 'output_info' => 'compiled_code',
+ 'header' => "Content-type: application/x-www-form-urlencoded\r\nConnection: close\r\n",
+ 'content' => $postBody,
+ 'max_redirects' => 0,
+ 'timeout' => 15,
+ )
+ )));
+ } elseif (defined('CURLOPT_POST')) {
+ $ch = curl_init($this->serviceUrl);
+ curl_setopt($ch, CURLOPT_POST, true);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/x-www-form-urlencoded'));
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $postBody);
+ curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
+ curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 15);
+ $contents = curl_exec($ch);
+ curl_close($ch);
+ } else {
+ throw new Minify_JS_ClosureCompiler_Exception(
+ "Could not make HTTP request: allow_url_open is false and cURL not available"
+ );
+ }
+
+ if (false === $contents) {
+ throw new Minify_JS_ClosureCompiler_Exception(
+ "No HTTP response from server"
+ );
+ }
+
+ return trim($contents);
+ }
+
+ /**
+ * Build a POST request body
+ *
+ * @param string $js JavaScript code
+ * @param bool $returnErrors
+ * @return string
+ */
+ protected function buildPostBody($js, $returnErrors = false)
+ {
+ return http_build_query(
+ array_merge(
+ self::$DEFAULT_OPTIONS,
+ $this->additionalOptions,
+ array(
+ 'js_code' => $js,
+ 'output_info' => ($returnErrors ? 'errors' : 'compiled_code')
+ )
+ ),
+ null,
+ '&'
+ );
+ }
+}
+
+class Minify_JS_ClosureCompiler_Exception extends Exception
+{
+}
diff --git a/admin/survey/minify/lib/Minify/JS/JShrink.php b/admin/survey/minify/lib/Minify/JS/JShrink.php
new file mode 100644
index 0000000..5eb5042
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/JS/JShrink.php
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Class Minify\JS\JShrink
+ *
+ * @package Minify
+ */
+
+namespace Minify\JS;
+
+/**
+ * Wrapper to Javascript Minifier built in PHP http://www.tedivm.com
+ *
+ * @package Minify
+ * @author Elan Ruusamäe <glen@pld-linux.org>
+ * @link https://github.com/tedious/JShrink
+ *
+ */
+class JShrink
+{
+ /**
+ * Contains the default options for minification. This array is merged with
+ * the one passed in by the user to create the request specific set of
+ * options (stored in the $options attribute).
+ *
+ * @var string[]
+ */
+ protected static $defaultOptions = array('flaggedComments' => true);
+
+ /**
+ * Takes a string containing javascript and removes unneeded characters in
+ * order to shrink the code without altering it's functionality.
+ *
+ * @param string $js The raw javascript to be minified
+ * @param array $options Various runtime options in an associative array
+ *
+ * @see JShrink\Minifier::minify()
+ * @return string
+ */
+ public static function minify($js, array $options = array())
+ {
+ $options = array_merge(
+ self::$defaultOptions,
+ $options
+ );
+
+ return \JShrink\Minifier::minify($js, $options);
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/LessCssSource.php b/admin/survey/minify/lib/Minify/LessCssSource.php
new file mode 100644
index 0000000..389932c
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/LessCssSource.php
@@ -0,0 +1,128 @@
+<?php
+
+class Minify_LessCssSource extends Minify_Source
+{
+ /**
+ * @var Minify_CacheInterface
+ */
+ private $cache;
+
+ /**
+ * Parsed lessphp cache object
+ *
+ * @var array
+ */
+ private $parsed;
+
+ /**
+ * @inheritdoc
+ */
+ public function __construct(array $spec, Minify_CacheInterface $cache)
+ {
+ parent::__construct($spec);
+
+ $this->cache = $cache;
+ }
+
+ /**
+ * Get last modified of all parsed files
+ *
+ * @return int
+ */
+ public function getLastModified()
+ {
+ $cache = $this->getCache();
+
+ return $cache['lastModified'];
+ }
+
+ /**
+ * Get content
+ *
+ * @return string
+ */
+ public function getContent()
+ {
+ $cache = $this->getCache();
+
+ return $cache['compiled'];
+ }
+
+ /**
+ * Get lessphp cache object
+ *
+ * @return array
+ */
+ private function getCache()
+ {
+ // cache for single run
+ // so that getLastModified and getContent in single request do not add additional cache roundtrips (i.e memcache)
+ if (isset($this->parsed)) {
+ return $this->parsed;
+ }
+
+ // check from cache first
+ $cache = null;
+ $cacheId = $this->getCacheId();
+ if ($this->cache->isValid($cacheId, 0)) {
+ if ($cache = $this->cache->fetch($cacheId)) {
+ $cache = unserialize($cache);
+ }
+ }
+
+ $less = $this->getCompiler();
+ $input = $cache ? $cache : $this->filepath;
+ $cache = $less->cachedCompile($input);
+
+ if (!is_array($input) || $cache['updated'] > $input['updated']) {
+ $cache['lastModified'] = $this->getMaxLastModified($cache);
+ $this->cache->store($cacheId, serialize($cache));
+ }
+
+ return $this->parsed = $cache;
+ }
+
+ /**
+ * Calculate maximum last modified of all files,
+ * as the 'updated' timestamp in cache is not the same as file last modified timestamp:
+ * @link https://github.com/leafo/lessphp/blob/v0.4.0/lessc.inc.php#L1904
+ * @return int
+ */
+ private function getMaxLastModified($cache)
+ {
+ $lastModified = 0;
+ foreach ($cache['files'] as $mtime) {
+ $lastModified = max($lastModified, $mtime);
+ }
+
+ return $lastModified;
+ }
+
+ /**
+ * Make a unique cache id for for this source.
+ *
+ * @param string $prefix
+ *
+ * @return string
+ */
+ private function getCacheId($prefix = 'minify')
+ {
+ $md5 = md5($this->filepath);
+
+ return "{$prefix}_less2_{$md5}";
+ }
+
+ /**
+ * Get instance of less compiler
+ *
+ * @return lessc
+ */
+ private function getCompiler()
+ {
+ $less = new lessc();
+ // do not spend CPU time letting less doing minify
+ $less->setPreserveComments(true);
+
+ return $less;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Lines.php b/admin/survey/minify/lib/Minify/Lines.php
new file mode 100644
index 0000000..60bf3b4
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Lines.php
@@ -0,0 +1,209 @@
+<?php
+/**
+ * Class Minify_Lines
+ * @package Minify
+ */
+
+/**
+ * Add line numbers in C-style comments for easier debugging of combined content
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ * @author Adam Pedersen (Issue 55 fix)
+ */
+class Minify_Lines
+{
+
+ /**
+ * Add line numbers in C-style comments
+ *
+ * This uses a very basic parser easily fooled by comment tokens inside
+ * strings or regexes, but, otherwise, generally clean code will not be
+ * mangled. URI rewriting can also be performed.
+ *
+ * @param string $content
+ *
+ * @param array $options available options:
+ *
+ * 'id': (optional) string to identify file. E.g. file name/path
+ *
+ * 'currentDir': (default null) if given, this is assumed to be the
+ * directory of the current CSS file. Using this, minify will rewrite
+ * all relative URIs in import/url declarations to correctly point to
+ * the desired files, and prepend a comment with debugging information about
+ * this process.
+ *
+ * @return string
+ */
+ public static function minify($content, $options = array())
+ {
+ $id = (isset($options['id']) && $options['id']) ? $options['id'] : '';
+ $content = str_replace("\r\n", "\n", $content);
+
+ $lines = explode("\n", $content);
+ $numLines = count($lines);
+ // determine left padding
+ $padTo = strlen((string) $numLines); // e.g. 103 lines = 3 digits
+ $inComment = false;
+ $i = 0;
+ $newLines = array();
+
+ while (null !== ($line = array_shift($lines))) {
+ if (('' !== $id) && (0 === $i % 50)) {
+ if ($inComment) {
+ array_push($newLines, '', "/* {$id} *|", '');
+ } else {
+ array_push($newLines, '', "/* {$id} */", '');
+ }
+ }
+
+ ++$i;
+ $newLines[] = self::_addNote($line, $i, $inComment, $padTo);
+ $inComment = self::_eolInComment($line, $inComment);
+ }
+
+ $content = implode("\n", $newLines) . "\n";
+
+ // check for desired URI rewriting
+ if (isset($options['currentDir'])) {
+ Minify_CSS_UriRewriter::$debugText = '';
+ $docRoot = isset($options['docRoot']) ? $options['docRoot'] : $_SERVER['DOCUMENT_ROOT'];
+ $symlinks = isset($options['symlinks']) ? $options['symlinks'] : array();
+
+ $content = Minify_CSS_UriRewriter::rewrite($content, $options['currentDir'], $docRoot, $symlinks);
+
+ $content = "/* Minify_CSS_UriRewriter::\$debugText\n\n"
+ . Minify_CSS_UriRewriter::$debugText . "*/\n"
+ . $content;
+ }
+
+ return $content;
+ }
+
+ /**
+ * Is the parser within a C-style comment at the end of this line?
+ *
+ * @param string $line current line of code
+ *
+ * @param bool $inComment was the parser in a C-style comment at the
+ * beginning of the previous line?
+ *
+ * @return bool
+ */
+ private static function _eolInComment($line, $inComment)
+ {
+ while (strlen($line)) {
+ if ($inComment) {
+ // only "*/" can end the comment
+ $index = self::_find($line, '*/');
+ if ($index === false) {
+ return true;
+ }
+
+ // stop comment and keep walking line
+ $inComment = false;
+ @$line = (string)substr($line, $index + 2);
+ continue;
+ }
+
+ // look for "//" and "/*"
+ $single = self::_find($line, '//');
+ $multi = self::_find($line, '/*');
+ if ($multi === false) {
+ return false;
+ }
+
+ if ($single === false || $multi < $single) {
+ // start comment and keep walking line
+ $inComment = true;
+ @$line = (string)substr($line, $multi + 2);
+ continue;
+ }
+
+ // a single-line comment preceeded it
+ return false;
+ }
+
+ return $inComment;
+ }
+
+ /**
+ * Prepend a comment (or note) to the given line
+ *
+ * @param string $line current line of code
+ *
+ * @param string $note content of note/comment
+ *
+ * @param bool $inComment was the parser in a comment at the
+ * beginning of the line?
+ *
+ * @param int $padTo minimum width of comment
+ *
+ * @return string
+ */
+ private static function _addNote($line, $note, $inComment, $padTo)
+ {
+ if ($inComment) {
+ $line = '/* ' . str_pad($note, $padTo, ' ', STR_PAD_RIGHT) . ' *| ' . $line;
+ } else {
+ $line = '/* ' . str_pad($note, $padTo, ' ', STR_PAD_RIGHT) . ' */ ' . $line;
+ }
+
+ return rtrim($line);
+ }
+
+ /**
+ * Find a token trying to avoid false positives
+ *
+ * @param string $str String containing the token
+ * @param string $token Token being checked
+ * @return bool
+ */
+ private static function _find($str, $token)
+ {
+ switch ($token) {
+ case '//':
+ $fakes = array(
+ '://' => 1,
+ '"//' => 1,
+ '\'//' => 1,
+ '".//' => 2,
+ '\'.//' => 2,
+ );
+ break;
+ case '/*':
+ $fakes = array(
+ '"/*' => 1,
+ '\'/*' => 1,
+ '"//*' => 2,
+ '\'//*' => 2,
+ '".//*' => 3,
+ '\'.//*' => 3,
+ '*/*' => 1,
+ '\\/*' => 1,
+ );
+ break;
+ default:
+ $fakes = array();
+ }
+
+ $index = strpos($str, $token);
+ $offset = 0;
+
+ while ($index !== false) {
+ foreach ($fakes as $fake => $skip) {
+ $check = substr($str, $index - $skip, strlen($fake));
+ if ($check === $fake) {
+ // move offset and scan again
+ $offset += $index + strlen($token);
+ $index = strpos($str, $token, $offset);
+ break;
+ }
+ }
+ // legitimate find
+ return $index;
+ }
+
+ return $index;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Logger/LegacyHandler.php b/admin/survey/minify/lib/Minify/Logger/LegacyHandler.php
new file mode 100644
index 0000000..fe4800f
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Logger/LegacyHandler.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace Minify\Logger;
+
+use Monolog\Handler\AbstractProcessingHandler;
+
+class LegacyHandler extends AbstractProcessingHandler
+{
+ private $obj;
+
+ public function __construct($obj)
+ {
+ if (!is_callable(array($obj, 'log'))) {
+ throw new \InvalidArgumentException('$obj must have a public log() method');
+ }
+ $this->obj = $obj;
+ parent::__construct();
+ }
+
+ protected function write(array $record)
+ {
+ $this->obj->log((string)$record['formatted']);
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/NailgunClosureCompiler.php b/admin/survey/minify/lib/Minify/NailgunClosureCompiler.php
new file mode 100644
index 0000000..683e30f
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/NailgunClosureCompiler.php
@@ -0,0 +1,113 @@
+<?php
+
+/**
+ * Class Minify_ClosureCompiler
+ * @package Minify
+ */
+
+/**
+ * Run Closure Compiler via NailGun
+ *
+ * @package Minify
+ * @author Elan Ruusamäe <glen@delfi.ee>
+ * @link https://github.com/martylamb/nailgun
+ */
+class Minify_NailgunClosureCompiler extends Minify_ClosureCompiler
+{
+ const NG_SERVER = 'com.martiansoftware.nailgun.NGServer';
+ const CC_MAIN = 'com.google.javascript.jscomp.CommandLineRunner';
+
+ /**
+ * For some reasons Nailgun thinks that it's server
+ * broke the connection and returns 227 instead of 0
+ * We'll just handle this here instead of fixing
+ * the nailgun client itself.
+ *
+ * It also sometimes breaks on 229 on the devbox.
+ * To complete this whole madness and made future
+ * 'fixes' easier I added this nice little array...
+ * @var array
+ */
+ private static $NG_EXIT_CODES = array(0, 227, 229);
+
+ /**
+ * Filepath of "ng" executable (from Nailgun package)
+ *
+ * @var string
+ */
+ public static $ngExecutable = 'ng';
+
+ /**
+ * Filepath of the Nailgun jar file.
+ *
+ * @var string
+ */
+ public static $ngJarFile;
+
+ /**
+ * Get command to launch NailGun server.
+ *
+ * @return array
+ */
+ protected function getServerCommandLine()
+ {
+ $this->checkJar(self::$ngJarFile);
+ $this->checkJar(self::$jarFile);
+
+ $classPath = array(
+ self::$ngJarFile,
+ self::$jarFile,
+ );
+
+ // The command for the server that should show up in the process list
+ $server = array(
+ self::$javaExecutable,
+ '-server',
+ '-cp', implode(':', $classPath),
+ self::NG_SERVER,
+ );
+
+ return $server;
+ }
+
+ /**
+ * @return array
+ * @throws Minify_ClosureCompiler_Exception
+ */
+ protected function getCompilerCommandLine()
+ {
+ $server = array(
+ self::$ngExecutable,
+ escapeshellarg(self::CC_MAIN)
+ );
+
+ return $server;
+ }
+
+ /**
+ * @param string $tmpFile
+ * @param array $options
+ * @return string
+ * @throws Minify_ClosureCompiler_Exception
+ */
+ protected function compile($tmpFile, $options)
+ {
+ $this->startServer();
+
+ $command = $this->getCommand($options, $tmpFile);
+
+ return implode("\n", $this->shell($command, self::$NG_EXIT_CODES));
+ }
+
+ private function startServer()
+ {
+ $serverCommand = implode(' ', $this->getServerCommandLine());
+ $psCommand = $this->shell("ps -o cmd= -C " . self::$javaExecutable);
+ if (in_array($serverCommand, $psCommand, true)) {
+ // already started!
+ return;
+ }
+
+ $this->shell("$serverCommand </dev/null >/dev/null 2>/dev/null & sleep 10");
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/lib/Minify/Packer.php b/admin/survey/minify/lib/Minify/Packer.php
new file mode 100644
index 0000000..53e9a9b
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Packer.php
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Class Minify_Packer
+ *
+ * To use this class you must first download the PHP port of Packer
+ * and place the file "class.JavaScriptPacker.php" in /lib (or your
+ * include_path).
+ * @link http://joliclic.free.fr/php/javascript-packer/en/
+ *
+ * Be aware that, as long as HTTP encoding is used, scripts minified with JSMin
+ * will provide better client-side performance, as they need not be unpacked in
+ * client-side code.
+ *
+ * @package Minify
+ */
+
+/**
+ * Minify Javascript using Dean Edward's Packer
+ *
+ * @package Minify
+ */
+class Minify_Packer
+{
+ public static function minify($code, $options = array())
+ {
+ // @todo: set encoding options based on $options :)
+ $packer = new JavascriptPacker($code, 'Normal', true, false);
+
+ return trim($packer->pack());
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/ScssCssSource.php b/admin/survey/minify/lib/Minify/ScssCssSource.php
new file mode 100644
index 0000000..ebccbe8
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/ScssCssSource.php
@@ -0,0 +1,176 @@
+<?php
+use Leafo\ScssPhp\Compiler;
+use Leafo\ScssPhp\Server;
+use Leafo\ScssPhp\Version;
+
+/**
+ * Class for using SCSS files
+ *
+ * @link https://github.com/leafo/scssphp/
+ */
+class Minify_ScssCssSource extends Minify_Source
+{
+ /**
+ * @var Minify_CacheInterface
+ */
+ private $cache;
+
+ /**
+ * Parsed SCSS cache object
+ *
+ * @var array
+ */
+ private $parsed;
+
+ /**
+ * @inheritdoc
+ */
+ public function __construct(array $spec, Minify_CacheInterface $cache)
+ {
+ parent::__construct($spec);
+
+ $this->cache = $cache;
+ }
+
+ /**
+ * Get last modified of all parsed files
+ *
+ * @return int
+ */
+ public function getLastModified()
+ {
+ $cache = $this->getCache();
+
+ return $cache['updated'];
+ }
+
+ /**
+ * Get content
+ *
+ * @return string
+ */
+ public function getContent()
+ {
+ $cache = $this->getCache();
+
+ return $cache['content'];
+ }
+
+ /**
+ * Make a unique cache id for for this source.
+ *
+ * @param string $prefix
+ *
+ * @return string
+ */
+ private function getCacheId($prefix = 'minify')
+ {
+ $md5 = md5($this->filepath);
+
+ return "{$prefix}_scss_{$md5}";
+ }
+
+ /**
+ * Get SCSS cache object
+ *
+ * Runs the compilation if needed
+ *
+ * Implements Leafo\ScssPhp\Server logic because we need to get parsed files without parsing actual content
+ *
+ * @return array
+ */
+ private function getCache()
+ {
+ // cache for single run
+ // so that getLastModified and getContent in single request do not add additional cache roundtrips (i.e memcache)
+ if (isset($this->parsed)) {
+ return $this->parsed;
+ }
+
+ // check from cache first
+ $cache = null;
+ $cacheId = $this->getCacheId();
+ if ($this->cache->isValid($cacheId, 0)) {
+ if ($cache = $this->cache->fetch($cacheId)) {
+ $cache = unserialize($cache);
+ }
+ }
+
+ $input = $cache ? $cache : $this->filepath;
+
+ if ($this->cacheIsStale($cache)) {
+ $cache = $this->compile($this->filepath);
+ }
+
+ if (!is_array($input) || $cache['updated'] > $input['updated']) {
+ $this->cache->store($cacheId, serialize($cache));
+ }
+
+ return $this->parsed = $cache;
+ }
+
+ /**
+ * Determine whether .scss file needs to be re-compiled.
+ *
+ * @param array $cache Cache object
+ *
+ * @return boolean True if compile required.
+ */
+ private function cacheIsStale($cache)
+ {
+ if (!$cache) {
+ return true;
+ }
+
+ $updated = $cache['updated'];
+ foreach ($cache['files'] as $import => $mtime) {
+ $filemtime = filemtime($import);
+
+ if ($filemtime !== $mtime || $filemtime > $updated) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Compile .scss file
+ *
+ * @param string $filename Input path (.scss)
+ *
+ * @see Server::compile()
+ * @return array meta data result of the compile
+ */
+ private function compile($filename)
+ {
+ $start = microtime(true);
+ $scss = new Compiler();
+
+ // set import path directory the input filename resides
+ // otherwise @import statements will not find the files
+ // and will treat the @import line as css import
+ $scss->setImportPaths(dirname($filename));
+
+ $css = $scss->compile(file_get_contents($filename), $filename);
+ $elapsed = round((microtime(true) - $start), 4);
+
+ $v = Version::VERSION;
+ $ts = date('r', $start);
+ $css = "/* compiled by scssphp $v on $ts (${elapsed}s) */\n\n" . $css;
+
+ $imports = $scss->getParsedFiles();
+
+ $updated = 0;
+ foreach ($imports as $mtime) {
+ $updated = max($updated, $mtime);
+ }
+
+ return array(
+ 'elapsed' => $elapsed, // statistic, can be dropped
+ 'updated' => $updated,
+ 'content' => $css,
+ 'files' => $imports,
+ );
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/ServeConfiguration.php b/admin/survey/minify/lib/Minify/ServeConfiguration.php
new file mode 100644
index 0000000..1c30708
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/ServeConfiguration.php
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Class Minify_ServeConfiguration
+ * @package Minify
+ */
+
+/**
+ * A configuration for Minify::serve() determined by a controller
+ *
+ * @package Minify
+ */
+class Minify_ServeConfiguration
+{
+
+ /**
+ * @var Minify_SourceInterface[]
+ */
+ protected $sources;
+
+ /**
+ * @var array
+ */
+ protected $options;
+
+ /**
+ * @var string
+ */
+ protected $selectionId = '';
+
+ /**
+ * @param array $options
+ * @param Minify_SourceInterface[] $sources
+ * @param string $selectionId
+ */
+ public function __construct(array $options, array $sources = array(), $selectionId = '')
+ {
+ $this->options = $options;
+ $this->sources = $sources;
+ $this->selectionId = $selectionId;
+ }
+
+ /**
+ * @return array
+ */
+ public function getOptions()
+ {
+ return $this->options;
+ }
+
+ /**
+ * @return Minify_SourceInterface[]
+ */
+ public function getSources()
+ {
+ return $this->sources;
+ }
+
+ /**
+ * Short name to place inside cache id
+ *
+ * The setupSources() method may choose to set this, making it easier to
+ * recognize a particular set of sources/settings in the cache folder. It
+ * will be filtered and truncated to make the final cache id <= 250 bytes.
+ *
+ * @return string
+ */
+ public function getSelectionId()
+ {
+ return $this->selectionId;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Source.php b/admin/survey/minify/lib/Minify/Source.php
new file mode 100644
index 0000000..d94bf58
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Source.php
@@ -0,0 +1,219 @@
+<?php
+/**
+ * Class Minify_Source
+ * @package Minify
+ */
+
+/**
+ * A content source to be minified by Minify.
+ *
+ * This allows per-source minification options and the mixing of files with
+ * content from other sources.
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_Source implements Minify_SourceInterface
+{
+
+ /**
+ * @var int time of last modification
+ */
+ protected $lastModified;
+
+ /**
+ * @var callback minifier function specifically for this source.
+ */
+ protected $minifier;
+
+ /**
+ * @var array minification options specific to this source.
+ */
+ protected $minifyOptions = array();
+
+ /**
+ * @var string full path of file
+ */
+ protected $filepath;
+
+ /**
+ * @var string HTTP Content Type (Minify requires one of the constants Minify::TYPE_*)
+ */
+ protected $contentType;
+
+ /**
+ * @var string
+ */
+ protected $content;
+
+ /**
+ * @var callable
+ */
+ protected $getContentFunc;
+
+ /**
+ * @var string
+ */
+ protected $id;
+
+ /**
+ * Create a Minify_Source
+ *
+ * In the $spec array(), you can either provide a 'filepath' to an existing
+ * file (existence will not be checked!) or give 'id' (unique string for
+ * the content), 'content' (the string content) and 'lastModified'
+ * (unixtime of last update).
+ *
+ * @param array $spec options
+ */
+ public function __construct($spec)
+ {
+ if (isset($spec['filepath'])) {
+ $ext = pathinfo($spec['filepath'], PATHINFO_EXTENSION);
+ switch ($ext) {
+ case 'js': $this->contentType = Minify::TYPE_JS;
+ break;
+ case 'less': // fallthrough
+ case 'scss': // fallthrough
+ case 'css': $this->contentType = Minify::TYPE_CSS;
+ break;
+ case 'htm': // fallthrough
+ case 'html': $this->contentType = Minify::TYPE_HTML;
+ break;
+ }
+ $this->filepath = $spec['filepath'];
+ $this->id = $spec['filepath'];
+
+ // TODO ideally not touch disk in constructor
+ $this->lastModified = filemtime($spec['filepath']);
+
+ if (!empty($spec['uploaderHoursBehind'])) {
+ // offset for Windows uploaders with out of sync clocks
+ $this->lastModified += round($spec['uploaderHoursBehind'] * 3600);
+ }
+ } elseif (isset($spec['id'])) {
+ $this->id = 'id::' . $spec['id'];
+ if (isset($spec['content'])) {
+ $this->content = $spec['content'];
+ } else {
+ $this->getContentFunc = $spec['getContentFunc'];
+ }
+ $this->lastModified = isset($spec['lastModified']) ? $spec['lastModified'] : time();
+ }
+ if (isset($spec['contentType'])) {
+ $this->contentType = $spec['contentType'];
+ }
+ if (isset($spec['minifier'])) {
+ $this->setMinifier($spec['minifier']);
+ }
+ if (isset($spec['minifyOptions'])) {
+ $this->minifyOptions = $spec['minifyOptions'];
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getLastModified()
+ {
+ return $this->lastModified;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getMinifier()
+ {
+ return $this->minifier;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setMinifier($minifier = null)
+ {
+ if ($minifier === '') {
+ error_log(__METHOD__ . " cannot accept empty string. Use 'Minify::nullMinifier' or 'trim'.");
+ $minifier = 'Minify::nullMinifier';
+ }
+ if ($minifier !== null && !is_callable($minifier, true)) {
+ throw new InvalidArgumentException('minifier must be null or a valid callable');
+ }
+ $this->minifier = $minifier;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getMinifierOptions()
+ {
+ return $this->minifyOptions;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setMinifierOptions(array $options)
+ {
+ $this->minifyOptions = $options;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getContentType()
+ {
+ return $this->contentType;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getContent()
+ {
+ if (null === $this->filepath) {
+ if (null === $this->content) {
+ $content = call_user_func($this->getContentFunc, $this->id);
+ } else {
+ $content = $this->content;
+ }
+ } else {
+ $content = file_get_contents($this->filepath);
+ }
+
+ // remove UTF-8 BOM if present
+ if (strpos($content, "\xEF\xBB\xBF") === 0) {
+ return substr($content, 3);
+ }
+
+ return $content;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getId()
+ {
+ return $this->id;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getFilePath()
+ {
+ return $this->filepath;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setupUriRewrites()
+ {
+ if ($this->filepath
+ && !isset($this->minifyOptions['currentDir'])
+ && !isset($this->minifyOptions['prependRelativePath'])) {
+ $this->minifyOptions['currentDir'] = dirname($this->filepath);
+ }
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Source/Factory.php b/admin/survey/minify/lib/Minify/Source/Factory.php
new file mode 100644
index 0000000..4371931
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Source/Factory.php
@@ -0,0 +1,197 @@
+<?php
+
+class Minify_Source_Factory
+{
+
+ /**
+ * @var array
+ */
+ protected $options;
+
+ /**
+ * @var callable[]
+ */
+ protected $handlers = array();
+
+ /**
+ * @var Minify_Env
+ */
+ protected $env;
+
+ /**
+ * @param Minify_Env $env
+ * @param array $options
+ *
+ * noMinPattern : Pattern matched against basename of the filepath (if present). If the pattern
+ * matches, Minify will try to avoid re-compressing the resource.
+ *
+ * fileChecker : Callable responsible for verifying the existence of the file.
+ *
+ * resolveDocRoot : If true, a leading "//" will be replaced with the document root.
+ *
+ * checkAllowDirs : If true, the filepath will be verified to be within one of the directories
+ * specified by allowDirs.
+ *
+ * allowDirs : Directory paths in which sources can be served.
+ *
+ * uploaderHoursBehind : How many hours behind are the file modification times of uploaded files?
+ * If you upload files from Windows to a non-Windows server, Windows may report
+ * incorrect mtimes for the files. Immediately after modifying and uploading a
+ * file, use the touch command to update the mtime on the server. If the mtime
+ * jumps ahead by a number of hours, set this variable to that number. If the mtime
+ * moves back, this should not be needed.
+ *
+ * @param Minify_CacheInterface $cache Optional cache for handling .less files.
+ *
+ */
+ public function __construct(Minify_Env $env, array $options = array(), Minify_CacheInterface $cache = null)
+ {
+ $this->env = $env;
+ $this->options = array_merge(array(
+ 'noMinPattern' => '@[-\\.]min\\.(?:[a-zA-Z]+)$@i', // matched against basename
+ 'fileChecker' => array($this, 'checkIsFile'),
+ 'resolveDocRoot' => true,
+ 'checkAllowDirs' => true,
+ 'allowDirs' => array('//'),
+ 'uploaderHoursBehind' => 0,
+ ), $options);
+
+ // resolve // in allowDirs
+ $docRoot = $env->getDocRoot();
+ foreach ($this->options['allowDirs'] as $i => $dir) {
+ if (0 === strpos($dir, '//')) {
+ $this->options['allowDirs'][$i] = $docRoot . substr($dir, 1);
+ }
+ }
+
+ if ($this->options['fileChecker'] && !is_callable($this->options['fileChecker'])) {
+ throw new InvalidArgumentException("fileChecker option is not callable");
+ }
+
+ $this->setHandler('~\.less$~i', function ($spec) use ($cache) {
+ return new Minify_LessCssSource($spec, $cache);
+ });
+
+ $this->setHandler('~\.scss~i', function ($spec) use ($cache) {
+ return new Minify_ScssCssSource($spec, $cache);
+ });
+
+ $this->setHandler('~\.(js|css)$~i', function ($spec) {
+ return new Minify_Source($spec);
+ });
+ }
+
+ /**
+ * @param string $basenamePattern A pattern tested against basename. E.g. "~\.css$~"
+ * @param callable $handler Function that recieves a $spec array and returns a Minify_SourceInterface
+ */
+ public function setHandler($basenamePattern, $handler)
+ {
+ $this->handlers[$basenamePattern] = $handler;
+ }
+
+ /**
+ * @param string $file
+ * @return string
+ *
+ * @throws Minify_Source_FactoryException
+ */
+ public function checkIsFile($file)
+ {
+ $realpath = realpath($file);
+ if (!$realpath) {
+ throw new Minify_Source_FactoryException("File failed realpath(): $file");
+ }
+
+ $basename = basename($file);
+ if (0 === strpos($basename, '.')) {
+ throw new Minify_Source_FactoryException("Filename starts with period (may be hidden): $basename");
+ }
+
+ if (!is_file($realpath) || !is_readable($realpath)) {
+ throw new Minify_Source_FactoryException("Not a file or isn't readable: $file");
+ }
+
+ return $realpath;
+ }
+
+ /**
+ * @param mixed $spec
+ *
+ * @return Minify_SourceInterface
+ *
+ * @throws Minify_Source_FactoryException
+ */
+ public function makeSource($spec)
+ {
+ if (is_string($spec)) {
+ $spec = array(
+ 'filepath' => $spec,
+ );
+ } elseif ($spec instanceof Minify_SourceInterface) {
+ return $spec;
+ }
+
+ $source = null;
+
+ if (empty($spec['filepath'])) {
+ // not much we can check
+ return new Minify_Source($spec);
+ }
+
+ if ($this->options['resolveDocRoot'] && 0 === strpos($spec['filepath'], '//')) {
+ $spec['filepath'] = $this->env->getDocRoot() . substr($spec['filepath'], 1);
+ }
+
+ if (!empty($this->options['fileChecker'])) {
+ $spec['filepath'] = call_user_func($this->options['fileChecker'], $spec['filepath']);
+ }
+
+ if ($this->options['checkAllowDirs']) {
+ $allowDirs = (array)$this->options['allowDirs'];
+ $inAllowedDir = false;
+ $filePath = $this->env->normalizePath($spec['filepath']);
+ foreach ($allowDirs as $allowDir) {
+ if (strpos($filePath, $this->env->normalizePath($allowDir)) === 0) {
+ $inAllowedDir = true;
+ }
+ }
+
+ if (!$inAllowedDir) {
+ $allowDirsStr = implode(';', $allowDirs);
+ throw new Minify_Source_FactoryException("File '{$spec['filepath']}' is outside \$allowDirs "
+ . "($allowDirsStr). If the path is resolved via an alias/symlink, look into the "
+ . "\$min_symlinks option.");
+ }
+ }
+
+ $basename = basename($spec['filepath']);
+
+ if ($this->options['noMinPattern'] && preg_match($this->options['noMinPattern'], $basename)) {
+ if (preg_match('~\.(css|less)$~i', $basename)) {
+ $spec['minifyOptions']['compress'] = false;
+ // we still want URI rewriting to work for CSS
+ } else {
+ $spec['minifier'] = 'Minify::nullMinifier';
+ }
+ }
+
+ $hoursBehind = $this->options['uploaderHoursBehind'];
+ if ($hoursBehind != 0) {
+ $spec['uploaderHoursBehind'] = $hoursBehind;
+ }
+
+ foreach ($this->handlers as $basenamePattern => $handler) {
+ if (preg_match($basenamePattern, $basename)) {
+ $source = call_user_func($handler, $spec);
+ break;
+ }
+ }
+
+ if (!$source) {
+ throw new Minify_Source_FactoryException("Handler not found for file: $basename");
+ }
+
+ return $source;
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/Source/FactoryException.php b/admin/survey/minify/lib/Minify/Source/FactoryException.php
new file mode 100644
index 0000000..bbc9833
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/Source/FactoryException.php
@@ -0,0 +1,5 @@
+<?php
+
+class Minify_Source_FactoryException extends Exception
+{
+}
diff --git a/admin/survey/minify/lib/Minify/SourceInterface.php b/admin/survey/minify/lib/Minify/SourceInterface.php
new file mode 100644
index 0000000..ef281b9
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/SourceInterface.php
@@ -0,0 +1,82 @@
+<?php
+/**
+ * Interface Minify_SourceInterface
+ * @package Minify
+ */
+
+/**
+ * A content source to be minified by Minify.
+ *
+ * This allows per-source minification options and the mixing of files with
+ * content from other sources.
+ *
+ * @package Minify
+ */
+interface Minify_SourceInterface
+{
+
+ /**
+ * Get the minifier
+ *
+ * @return callable|null
+ */
+ public function getMinifier();
+
+ /**
+ * Set the minifier
+ *
+ * @param callable $minifier
+ * @return void
+ */
+ public function setMinifier($minifier = null);
+
+ /**
+ * Get options for the minifier
+ *
+ * @return array
+ */
+ public function getMinifierOptions();
+
+ /**
+ * Set options for the minifier
+ *
+ * @param array $options
+ * @return void
+ */
+ public function setMinifierOptions(array $options);
+
+ /**
+ * Get the content type
+ *
+ * @return string|null
+ */
+ public function getContentType();
+
+ /**
+ * Get content
+ *
+ * @return string
+ */
+ public function getContent();
+
+ /**
+ * Get last modified timestamp
+ *
+ * @return int
+ */
+ public function getLastModified();
+
+ /**
+ * Get id
+ *
+ * @return string
+ */
+ public function getId();
+
+ /**
+ * Get the path of the file that this source is based on (may be null)
+ *
+ * @return string|null
+ */
+ public function getFilePath();
+}
diff --git a/admin/survey/minify/lib/Minify/SourceSet.php b/admin/survey/minify/lib/Minify/SourceSet.php
new file mode 100644
index 0000000..86f550f
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/SourceSet.php
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Class Minify_SourceSet
+ * @package Minify
+ */
+
+/**
+ * @package Minify
+ */
+class Minify_SourceSet
+{
+
+ /**
+ * Get unique string for a set of sources
+ *
+ * @param Minify_SourceInterface[] $sources Minify_Source instances
+ *
+ * @return string
+ */
+ public static function getDigest($sources)
+ {
+ $info = array();
+ foreach ($sources as $source) {
+ $info[] = array(
+ $source->getId(), $source->getMinifier(), $source->getMinifierOptions()
+ );
+ }
+
+ return md5(serialize($info));
+ }
+}
diff --git a/admin/survey/minify/lib/Minify/YUICompressor.php b/admin/survey/minify/lib/Minify/YUICompressor.php
new file mode 100644
index 0000000..40fd02c
--- /dev/null
+++ b/admin/survey/minify/lib/Minify/YUICompressor.php
@@ -0,0 +1,157 @@
+<?php
+/**
+ * Class Minify_YUICompressor
+ * @package Minify
+ */
+
+/**
+ * Compress Javascript/CSS using the YUI Compressor
+ *
+ * You must set $jarFile and $tempDir before calling the minify functions.
+ * Also, depending on your shell's environment, you may need to specify
+ * the full path to java in $javaExecutable or use putenv() to setup the
+ * Java environment.
+ *
+ * <code>
+ * Minify_YUICompressor::$jarFile = '/path/to/yuicompressor-2.4.6.jar';
+ * Minify_YUICompressor::$tempDir = '/tmp';
+ * $code = Minify_YUICompressor::minifyJs(
+ * $code
+ * ,array('nomunge' => true, 'line-break' => 1000)
+ * );
+ * </code>
+ *
+ * Note: In case you run out stack (default is 512k), you may increase stack size in $options:
+ * array('stack-size' => '2048k')
+ *
+ * @todo unit tests, $options docs
+ *
+ * @package Minify
+ * @author Stephen Clay <steve@mrclay.org>
+ */
+class Minify_YUICompressor
+{
+
+ /**
+ * Filepath of the YUI Compressor jar file. This must be set before
+ * calling minifyJs() or minifyCss().
+ *
+ * @var string
+ */
+ public static $jarFile;
+
+ /**
+ * Writable temp directory. This must be set before calling minifyJs()
+ * or minifyCss().
+ *
+ * @var string
+ */
+ public static $tempDir;
+
+ /**
+ * Filepath of "java" executable (may be needed if not in shell's PATH)
+ *
+ * @var string
+ */
+ public static $javaExecutable = 'java';
+
+ /**
+ * Minify a Javascript string
+ *
+ * @param string $js
+ *
+ * @param array $options (verbose is ignored)
+ *
+ * @see http://www.julienlecomte.net/yuicompressor/README
+ *
+ * @return string
+ */
+ public static function minifyJs($js, $options = array())
+ {
+ return self::_minify('js', $js, $options);
+ }
+
+ /**
+ * Minify a CSS string
+ *
+ * @param string $css
+ *
+ * @param array $options (verbose is ignored)
+ *
+ * @see http://www.julienlecomte.net/yuicompressor/README
+ *
+ * @return string
+ */
+ public static function minifyCss($css, $options = array())
+ {
+ return self::_minify('css', $css, $options);
+ }
+
+ private static function _minify($type, $content, $options)
+ {
+ self::_prepare();
+ if (! ($tmpFile = tempnam(self::$tempDir, 'yuic_'))) {
+ throw new Exception('Minify_YUICompressor : could not create temp file in "'.self::$tempDir.'".');
+ }
+
+ file_put_contents($tmpFile, $content);
+ exec(self::_getCmd($options, $type, $tmpFile), $output, $result_code);
+ unlink($tmpFile);
+ if ($result_code != 0) {
+ throw new Exception('Minify_YUICompressor : YUI compressor execution failed.');
+ }
+
+ return implode("\n", $output);
+ }
+
+ private static function _getCmd($userOptions, $type, $tmpFile)
+ {
+ $defaults = array(
+ 'charset' => '',
+ 'line-break' => 5000,
+ 'type' => $type,
+ 'nomunge' => false,
+ 'preserve-semi' => false,
+ 'disable-optimizations' => false,
+ 'stack-size' => '',
+ );
+ $o = array_merge($defaults, $userOptions);
+
+ $cmd = self::$javaExecutable
+ . (!empty($o['stack-size']) ? ' -Xss' . $o['stack-size'] : '')
+ . ' -jar ' . escapeshellarg(self::$jarFile)
+ . " --type {$type}"
+ . (preg_match('/^[\\da-zA-Z0-9\\-]+$/', $o['charset'])
+ ? " --charset {$o['charset']}"
+ : '')
+ . (is_numeric($o['line-break']) && $o['line-break'] >= 0
+ ? ' --line-break ' . (int)$o['line-break']
+ : '');
+ if ($type === 'js') {
+ foreach (array('nomunge', 'preserve-semi', 'disable-optimizations') as $opt) {
+ $cmd .= $o[$opt]
+ ? " --{$opt}"
+ : '';
+ }
+ }
+
+ return $cmd . ' ' . escapeshellarg($tmpFile);
+ }
+
+ private static function _prepare()
+ {
+ if (! is_file(self::$jarFile)) {
+ throw new Exception('Minify_YUICompressor : $jarFile('.self::$jarFile.') is not a valid file.');
+ }
+ if (! is_readable(self::$jarFile)) {
+ throw new Exception('Minify_YUICompressor : $jarFile('.self::$jarFile.') is not readable.');
+ }
+ if (! is_dir(self::$tempDir)) {
+ throw new Exception('Minify_YUICompressor : $tempDir('.self::$tempDir.') is not a valid direcotry.');
+ }
+ if (! is_writable(self::$tempDir)) {
+ throw new Exception('Minify_YUICompressor : $tempDir('.self::$tempDir.') is not writable.');
+ }
+ }
+}
+
diff --git a/admin/survey/minify/lib/MrClay/Cli.php b/admin/survey/minify/lib/MrClay/Cli.php
new file mode 100644
index 0000000..4622b14
--- /dev/null
+++ b/admin/survey/minify/lib/MrClay/Cli.php
@@ -0,0 +1,393 @@
+<?php
+
+namespace MrClay;
+
+use MrClay\Cli\Arg;
+use InvalidArgumentException;
+
+/**
+ * Forms a front controller for a console app, handling and validating arguments (options)
+ *
+ * Instantiate, add arguments, then call validate(). Afterwards, the user's valid arguments
+ * and their values will be available in $cli->values.
+ *
+ * You may also specify that some arguments be used to provide input/output. By communicating
+ * solely through the file pointers provided by openInput()/openOutput(), you can make your
+ * app more flexible to end users.
+ *
+ * @author Steve Clay <steve@mrclay.org>
+ * @license http://www.opensource.org/licenses/mit-license.php MIT License
+ */
+class Cli
+{
+
+ /**
+ * @var array validation errors
+ */
+ public $errors = array();
+
+ /**
+ * @var array option values available after validation.
+ *
+ * E.g. array(
+ * 'a' => false // option was missing
+ * ,'b' => true // option was present
+ * ,'c' => "Hello" // option had value
+ * ,'f' => "/home/user/file" // file path from root
+ * ,'f.raw' => "~/file" // file path as given to option
+ * )
+ */
+ public $values = array();
+
+ /**
+ * @var array
+ */
+ public $moreArgs = array();
+
+ /**
+ * @var array
+ */
+ public $debug = array();
+
+ /**
+ * @var bool The user wants help info
+ */
+ public $isHelpRequest = false;
+
+ /**
+ * @var Arg[]
+ */
+ protected $_args = array();
+
+ /**
+ * @var resource
+ */
+ protected $_stdin = null;
+
+ /**
+ * @var resource
+ */
+ protected $_stdout = null;
+
+ /**
+ * @param bool $exitIfNoStdin (default true) Exit() if STDIN is not defined
+ */
+ public function __construct($exitIfNoStdin = true)
+ {
+ if ($exitIfNoStdin && ! defined('STDIN')) {
+ exit('This script is for command-line use only.');
+ }
+ if (isset($GLOBALS['argv'][1])
+ && ($GLOBALS['argv'][1] === '-?' || $GLOBALS['argv'][1] === '--help')) {
+ $this->isHelpRequest = true;
+ }
+ }
+
+ /**
+ * @param Arg|string $letter
+ * @return Arg
+ */
+ public function addOptionalArg($letter)
+ {
+ return $this->addArgument($letter, false);
+ }
+
+ /**
+ * @param Arg|string $letter
+ * @return Arg
+ */
+ public function addRequiredArg($letter)
+ {
+ return $this->addArgument($letter, true);
+ }
+
+ /**
+ * @param string $letter
+ * @param bool $required
+ * @param Arg|null $arg
+ * @return Arg
+ * @throws InvalidArgumentException
+ */
+ public function addArgument($letter, $required, Arg $arg = null)
+ {
+ if (! preg_match('/^[a-zA-Z]$/', $letter)) {
+ throw new InvalidArgumentException('$letter must be in [a-zA-Z]');
+ }
+ if (! $arg) {
+ $arg = new Arg($required);
+ }
+ $this->_args[$letter] = $arg;
+
+ return $arg;
+ }
+
+ /**
+ * @param string $letter
+ * @return Arg|null
+ */
+ public function getArgument($letter)
+ {
+ return isset($this->_args[$letter]) ? $this->_args[$letter] : null;
+ }
+
+ /*
+ * Read and validate options
+ *
+ * @return bool true if all options are valid
+ */
+ public function validate()
+ {
+ $options = '';
+ $this->errors = array();
+ $this->values = array();
+ $this->_stdin = null;
+
+ if ($this->isHelpRequest) {
+ return false;
+ }
+
+ $lettersUsed = '';
+ foreach ($this->_args as $letter => $arg) {
+ /* @var Arg $arg */
+ $options .= $letter;
+ $lettersUsed .= $letter;
+
+ if ($arg->mayHaveValue || $arg->mustHaveValue) {
+ $options .= ($arg->mustHaveValue ? ':' : '::');
+ }
+ }
+
+ $this->debug['argv'] = $GLOBALS['argv'];
+ $argvCopy = array_slice($GLOBALS['argv'], 1);
+ $o = getopt($options);
+ $this->debug['getopt_options'] = $options;
+ $this->debug['getopt_return'] = $o;
+
+ foreach ($this->_args as $letter => $arg) {
+ /* @var Arg $arg */
+ $this->values[$letter] = false;
+ if (isset($o[$letter])) {
+ if (is_bool($o[$letter])) {
+
+ // remove from argv copy
+ $k = array_search("-$letter", $argvCopy);
+ if ($k !== false) {
+ array_splice($argvCopy, $k, 1);
+ }
+
+ if ($arg->mustHaveValue) {
+ $this->addError($letter, "Missing value");
+ } else {
+ $this->values[$letter] = true;
+ }
+ } else {
+ // string
+ $this->values[$letter] = $o[$letter];
+ $v =& $this->values[$letter];
+
+ // remove from argv copy
+ // first look for -ovalue or -o=value
+ $pattern = "/^-{$letter}=?" . preg_quote($v, '/') . "$/";
+ $foundInArgv = false;
+ foreach ($argvCopy as $k => $argV) {
+ if (preg_match($pattern, $argV)) {
+ array_splice($argvCopy, $k, 1);
+ $foundInArgv = true;
+ break;
+ }
+ }
+ if (! $foundInArgv) {
+ // space separated
+ $k = array_search("-$letter", $argvCopy);
+ if ($k !== false) {
+ array_splice($argvCopy, $k, 2);
+ }
+ }
+
+ // check that value isn't really another option
+ if (strlen($lettersUsed) > 1) {
+ $pattern = "/^-[" . str_replace($letter, '', $lettersUsed) . "]/i";
+ if (preg_match($pattern, $v)) {
+ $this->addError($letter, "Value was read as another option: %s", $v);
+
+ return false;
+ }
+ }
+ if ($arg->assertFile || $arg->assertDir) {
+ if ($v[0] !== '/' && $v[0] !== '~') {
+ $this->values["$letter.raw"] = $v;
+ $v = getcwd() . "/$v";
+ }
+ }
+ if ($arg->assertFile) {
+ if ($arg->useAsInfile) {
+ $this->_stdin = $v;
+ } elseif ($arg->useAsOutfile) {
+ $this->_stdout = $v;
+ }
+ if ($arg->assertReadable && ! is_readable($v)) {
+ $this->addError($letter, "File not readable: %s", $v);
+ continue;
+ }
+ if ($arg->assertWritable) {
+ if (is_file($v)) {
+ if (! is_writable($v)) {
+ $this->addError($letter, "File not writable: %s", $v);
+ }
+ } else {
+ if (! is_writable(dirname($v))) {
+ $this->addError($letter, "Directory not writable: %s", dirname($v));
+ }
+ }
+ }
+ } elseif ($arg->assertDir && $arg->assertWritable && ! is_writable($v)) {
+ $this->addError($letter, "Directory not readable: %s", $v);
+ }
+ }
+ } else {
+ if ($arg->isRequired()) {
+ $this->addError($letter, "Missing");
+ }
+ }
+ }
+ $this->moreArgs = $argvCopy;
+ reset($this->moreArgs);
+
+ return empty($this->errors);
+ }
+
+ /**
+ * Get the full paths of file(s) passed in as unspecified arguments
+ *
+ * @return array
+ */
+ public function getPathArgs()
+ {
+ $r = $this->moreArgs;
+ foreach ($r as $k => $v) {
+ if ($v[0] !== '/' && $v[0] !== '~') {
+ $v = getcwd() . "/$v";
+ $v = str_replace('/./', '/', $v);
+ do {
+ $v = preg_replace('@/[^/]+/\\.\\./@', '/', $v, 1, $changed);
+ } while ($changed);
+ $r[$k] = $v;
+ }
+ }
+
+ return $r;
+ }
+
+ /**
+ * Get a short list of errors with options
+ *
+ * @return string
+ */
+ public function getErrorReport()
+ {
+ if (empty($this->errors)) {
+ return '';
+ }
+ $r = "Some arguments did not pass validation:\n";
+ foreach ($this->errors as $letter => $arr) {
+ $r .= " $letter : " . implode(', ', $arr) . "\n";
+ }
+ $r .= "\n";
+
+ return $r;
+ }
+
+ /**
+ * @return string
+ */
+ public function getArgumentsListing()
+ {
+ $r = "\n";
+ foreach ($this->_args as $letter => $arg) {
+ /* @var Arg $arg */
+ $desc = $arg->getDescription();
+ $flag = " -$letter ";
+ if ($arg->mayHaveValue) {
+ $flag .= "[VAL]";
+ } elseif ($arg->mustHaveValue) {
+ $flag .= "VAL";
+ }
+ if ($arg->assertFile) {
+ $flag = str_replace('VAL', 'FILE', $flag);
+ } elseif ($arg->assertDir) {
+ $flag = str_replace('VAL', 'DIR', $flag);
+ }
+ if ($arg->isRequired()) {
+ $desc = "(required) $desc";
+ }
+ $flag = str_pad($flag, 12, " ", STR_PAD_RIGHT);
+ $desc = wordwrap($desc, 70);
+ $r .= $flag . str_replace("\n", "\n ", $desc) . "\n\n";
+ }
+
+ return $r;
+ }
+
+ /**
+ * Get resource of open input stream. May be STDIN or a file pointer
+ * to the file specified by an option with 'STDIN'.
+ *
+ * @return resource
+ */
+ public function openInput()
+ {
+ if (null === $this->_stdin) {
+ return STDIN;
+ } else {
+ $this->_stdin = fopen($this->_stdin, 'rb');
+
+ return $this->_stdin;
+ }
+ }
+
+ public function closeInput()
+ {
+ if (null !== $this->_stdin) {
+ fclose($this->_stdin);
+ }
+ }
+
+ /**
+ * Get resource of open output stream. May be STDOUT or a file pointer
+ * to the file specified by an option with 'STDOUT'. The file will be
+ * truncated to 0 bytes on opening.
+ *
+ * @return resource
+ */
+ public function openOutput()
+ {
+ if (null === $this->_stdout) {
+ return STDOUT;
+ } else {
+ $this->_stdout = fopen($this->_stdout, 'wb');
+
+ return $this->_stdout;
+ }
+ }
+
+ public function closeOutput()
+ {
+ if (null !== $this->_stdout) {
+ fclose($this->_stdout);
+ }
+ }
+
+ /**
+ * @param string $letter
+ * @param string $msg
+ * @param string $value
+ */
+ protected function addError($letter, $msg, $value = null)
+ {
+ if ($value !== null) {
+ $value = var_export($value, 1);
+ }
+ $this->errors[$letter][] = sprintf($msg, $value);
+ }
+}
+
diff --git a/admin/survey/minify/lib/MrClay/Cli/Arg.php b/admin/survey/minify/lib/MrClay/Cli/Arg.php
new file mode 100644
index 0000000..9665906
--- /dev/null
+++ b/admin/survey/minify/lib/MrClay/Cli/Arg.php
@@ -0,0 +1,189 @@
+<?php
+
+namespace MrClay\Cli;
+
+use BadMethodCallException;
+
+/**
+ * An argument for a CLI app. This specifies the argument, what values it expects and
+ * how it's treated during validation.
+ *
+ * By default, the argument will be assumed to be an optional letter flag with no value following.
+ *
+ * If the argument may receive a value, call mayHaveValue(). If there's whitespace after the
+ * flag, the value will be returned as true instead of the string.
+ *
+ * If the argument MUST be accompanied by a value, call mustHaveValue(). In this case, whitespace
+ * is permitted between the flag and its value.
+ *
+ * Use assertFile() or assertDir() to indicate that the argument must return a string value
+ * specifying a file or directory. During validation, the value will be resolved to a
+ * full file/dir path (not necessarily existing!) and the original value will be accessible
+ * via a "*.raw" key. E.g. $cli->values['f.raw']
+ *
+ * Use assertReadable()/assertWritable() to cause the validator to test the file/dir for
+ * read/write permissions respectively.
+ *
+ * @method \MrClay\Cli\Arg mayHaveValue() Assert that the argument, if present, may receive a string value
+ * @method \MrClay\Cli\Arg mustHaveValue() Assert that the argument, if present, must receive a string value
+ * @method \MrClay\Cli\Arg assertFile() Assert that the argument's value must specify a file
+ * @method \MrClay\Cli\Arg assertDir() Assert that the argument's value must specify a directory
+ * @method \MrClay\Cli\Arg assertReadable() Assert that the specified file/dir must be readable
+ * @method \MrClay\Cli\Arg assertWritable() Assert that the specified file/dir must be writable
+ *
+ * @property-read bool mayHaveValue
+ * @property-read bool mustHaveValue
+ * @property-read bool assertFile
+ * @property-read bool assertDir
+ * @property-read bool assertReadable
+ * @property-read bool assertWritable
+ * @property-read bool useAsInfile
+ * @property-read bool useAsOutfile
+ *
+ * @author Steve Clay <steve@mrclay.org>
+ * @license http://www.opensource.org/licenses/mit-license.php MIT License
+ */
+class Arg
+{
+ /**
+ * @return array
+ */
+ public function getDefaultSpec()
+ {
+ return array(
+ 'mayHaveValue' => false,
+ 'mustHaveValue' => false,
+ 'assertFile' => false,
+ 'assertDir' => false,
+ 'assertReadable' => false,
+ 'assertWritable' => false,
+ 'useAsInfile' => false,
+ 'useAsOutfile' => false,
+ );
+ }
+
+ /**
+ * @var array
+ */
+ protected $spec = array();
+
+ /**
+ * @var bool
+ */
+ protected $required = false;
+
+ /**
+ * @var string
+ */
+ protected $description = '';
+
+ /**
+ * @param bool $isRequired
+ */
+ public function __construct($isRequired = false)
+ {
+ $this->spec = $this->getDefaultSpec();
+ $this->required = (bool) $isRequired;
+ if ($isRequired) {
+ $this->spec['mustHaveValue'] = true;
+ }
+ }
+
+ /**
+ * Assert that the argument's value points to a writable file. When
+ * Cli::openOutput() is called, a write pointer to this file will
+ * be provided.
+ * @return Arg
+ */
+ public function useAsOutfile()
+ {
+ $this->spec['useAsOutfile'] = true;
+
+ return $this->assertFile()->assertWritable();
+ }
+
+ /**
+ * Assert that the argument's value points to a readable file. When
+ * Cli::openInput() is called, a read pointer to this file will
+ * be provided.
+ * @return Arg
+ */
+ public function useAsInfile()
+ {
+ $this->spec['useAsInfile'] = true;
+
+ return $this->assertFile()->assertReadable();
+ }
+
+ /**
+ * @return array
+ */
+ public function getSpec()
+ {
+ return $this->spec;
+ }
+
+ /**
+ * @param string $desc
+ * @return Arg
+ */
+ public function setDescription($desc)
+ {
+ $this->description = $desc;
+
+ return $this;
+ }
+
+ /**
+ * @return string
+ */
+ public function getDescription()
+ {
+ return $this->description;
+ }
+
+ /**
+ * @return bool
+ */
+ public function isRequired()
+ {
+ return $this->required;
+ }
+
+ /**
+ * Note: magic methods declared in class PHPDOC
+ *
+ * @param string $name
+ * @param array $args
+ * @return Arg
+ * @throws BadMethodCallException
+ */
+ public function __call($name, array $args = array())
+ {
+ if (array_key_exists($name, $this->spec)) {
+ $this->spec[$name] = true;
+ if ($name === 'assertFile' || $name === 'assertDir') {
+ $this->spec['mustHaveValue'] = true;
+ }
+ } else {
+ throw new BadMethodCallException('Method does not exist');
+ }
+
+ return $this;
+ }
+
+ /**
+ * Note: magic properties declared in class PHPDOC
+ *
+ * @param string $name
+ * @return bool|null
+ */
+ public function __get($name)
+ {
+ if (array_key_exists($name, $this->spec)) {
+ return $this->spec[$name];
+ }
+
+ return null;
+ }
+}
diff --git a/admin/survey/minify/phpunit.xml b/admin/survey/minify/phpunit.xml
new file mode 100644
index 0000000..285c66f
--- /dev/null
+++ b/admin/survey/minify/phpunit.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- http://phpunit.de/manual/current/en/appendixes.configuration.html -->
+<phpunit
+ backupGlobals="false"
+ backupStaticAttributes="false"
+ colors="true"
+ convertErrorsToExceptions="true"
+ convertNoticesToExceptions="true"
+ convertWarningsToExceptions="true"
+ processIsolation="false"
+ stopOnFailure="false"
+ syntaxCheck="false"
+ bootstrap="vendor/autoload.php">
+
+ <testsuites>
+ <testsuite name="Project Test Suite">
+ <directory>tests</directory>
+ <exclude>tests/JsClosureCompilerTest.php</exclude>
+ </testsuite>
+ </testsuites>
+
+ <!--
+ <php>
+ <server name="KERNEL_DIR" value="/path/to/your/app/" />
+ </php>
+ -->
+
+ <!-- for code coverage -->
+ <filter>
+ <whitelist>
+ <directory>.</directory>
+ <exclude>
+ <directory>tests</directory>
+ </exclude>
+ </whitelist>
+ </filter>
+</phpunit>
diff --git a/admin/survey/minify/quick-test.css b/admin/survey/minify/quick-test.css
new file mode 100644
index 0000000..261aaa4
--- /dev/null
+++ b/admin/survey/minify/quick-test.css
@@ -0,0 +1,30 @@
+/*! This file exists only for testing a Minify installation. Its content is not used.
+ *
+ * http://example.org/min/f=min/quick-test.css
+ */
+
+@import url( more.css );
+
+ body, td, th {
+ font-family: Verdana , "Bitstream Vera Sans" , Arial Narrow, sans-serif ;
+
+ font-size : 12px;
+}
+
+.nav {
+ margin-left: 20%;
+}
+#main-nav {
+ background-color: red;
+ border: 1px solid #00ff77;
+}
+
+div#content
+h1 + p {
+ padding-top: 0;
+ margin-top: 0;
+}
+
+@media all and (min-width: 640px) {
+ #media-queries-1 { background-color: #0f0; }
+}
diff --git a/admin/survey/minify/quick-test.js b/admin/survey/minify/quick-test.js
new file mode 100644
index 0000000..2668fdf
--- /dev/null
+++ b/admin/survey/minify/quick-test.js
@@ -0,0 +1,74 @@
+/*! This file exists only for testing a Minify installation. Its content is not used.
+ *
+ * http://example.org/min/f=min/quick-test.js
+ */
+
+/* Finds the lowest common multiple of two numbers */
+function LCMCalculator(x, y) { // constructor function
+ var checkInt = function (x) { // inner function
+ if (x % 1 !== 0) {
+ throw new TypeError(x + " is not an integer"); // throw an exception
+ }
+ return x;
+ };
+ this.a = checkInt(x);
+ // ^ semicolons are optional
+ this.b = checkInt(y);
+}
+// The prototype of object instances created by a constructor is
+// that constructor's "prototype" property.
+LCMCalculator.prototype = { // object literal
+ constructor: LCMCalculator, // when reassigning a prototype, set the constructor property appropriately
+ gcd: function () { // method that calculates the greatest common divisor
+ // Euclidean algorithm:
+ var a = Math.abs(this.a), b = Math.abs(this.b), t;
+ if (a < b) {
+ // swap variables
+ t = b;
+ b = a;
+ a = t;
+ }
+ while (b !== 0) {
+ t = b;
+ b = a % b;
+ a = t;
+ }
+ // Only need to calculate GCD once, so "redefine" this method.
+ // (Actually not redefinition - it's defined on the instance itself,
+ // so that this.gcd refers to this "redefinition" instead of LCMCalculator.prototype.gcd.)
+ // Also, 'gcd' === "gcd", this['gcd'] === this.gcd
+ this['gcd'] = function () {
+ return a;
+ };
+ return a;
+ },
+ // Object property names can be specified by strings delimited by double (") or single (') quotes.
+ "lcm" : function () {
+ // Variable names don't collide with object properties, e.g. |lcm| is not |this.lcm|.
+ // not using |this.a * this.b| to avoid FP precision issues
+ var lcm = this.a / this.gcd() * this.b;
+ // Only need to calculate lcm once, so "redefine" this method.
+ this.lcm = function () {
+ return lcm;
+ };
+ return lcm;
+ },
+ toString: function () {
+ return "LCMCalculator: a = " + this.a + ", b = " + this.b;
+ }
+};
+
+//define generic output function; this implementation only works for web browsers
+function output(x) {
+ document.write(x + "<br>");
+}
+
+// Note: Array's map() and forEach() are defined in JavaScript 1.6.
+// They are used here to demonstrate JavaScript's inherent functional nature.
+[[25, 55], [21, 56], [22, 58], [28, 56]].map(function (pair) { // array literal + mapping function
+ return new LCMCalculator(pair[0], pair[1]);
+}).sort(function (a, b) { // sort with this comparative function
+ return a.lcm() - b.lcm();
+}).forEach(function (obj) {
+ output(obj + ", gcd = " + obj.gcd() + ", lcm = " + obj.lcm());
+}); \ No newline at end of file
diff --git a/admin/survey/minify/quick-test.less b/admin/survey/minify/quick-test.less
new file mode 100644
index 0000000..4d1b5fe
--- /dev/null
+++ b/admin/survey/minify/quick-test.less
@@ -0,0 +1,12 @@
+/*! This file exists only for testing a Minify installation. Its content is not used.
+ *
+ * http://example.org/min/f=min/quick-test.less
+ */
+
+// LESS import statement shares syntax with the CSS import statement.
+// If the file being imported ends in a .less extension, or no extension, then it is treated as a LESS
+// import. Otherwise it is left alone and outputted directly.
+// http://leafo.net/lessphp/docs/#import
+@import "quick-test.css";
+
+@import "quick-testinc.less"; \ No newline at end of file
diff --git a/admin/survey/minify/quick-testinc.less b/admin/survey/minify/quick-testinc.less
new file mode 100644
index 0000000..ef0b4fe
--- /dev/null
+++ b/admin/survey/minify/quick-testinc.less
@@ -0,0 +1,25 @@
+/*! This file exists only for testing a Minify installation. Its content is not used.
+ *
+ * http://example.org/min/f=min/quick-test.less
+ */
+
+@base: 24px;
+@border-color: #B2B;
+
+.underline { border-bottom: 1px solid green }
+
+#header {
+ color: black;
+ border: 1px solid @border-color + #222222;
+
+ .navigation {
+ font-size: @base / 2;
+ a {
+ .underline;
+ }
+ }
+ .logo {
+ width: 300px;
+ :hover { text-decoration: none }
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/server-info.php b/admin/survey/minify/server-info.php
new file mode 100644
index 0000000..0b1ada7
--- /dev/null
+++ b/admin/survey/minify/server-info.php
@@ -0,0 +1,153 @@
+<?php
+/**
+ * Reports server info useful in configuring the options $min_documentRoot, $min_symlinks,
+ * and $min_serveOptions['minApp']['allowDirs'].
+ *
+ * Change to true to expose this info.
+ */
+$enabled = false;
+
+///////////////////////
+
+if (!$enabled) {
+ die('Set $enabled to true to see server info.');
+}
+
+function assertTrue($test, $message) {
+ if (!$test) {
+ echo "Warning: $message\n";
+ }
+ return (bool)$test;
+}
+
+header('Content-Type: text/plain');
+
+$file = __FILE__;
+$tmp = sys_get_temp_dir();
+
+echo <<<EOD
+Cache directory : $tmp
+__FILE__ : $file
+SCRIPT_FILENAME : {$_SERVER['SCRIPT_FILENAME']}
+DOCUMENT_ROOT : {$_SERVER['DOCUMENT_ROOT']}
+SCRIPT_NAME : {$_SERVER['SCRIPT_NAME']}
+REQUEST_URI : {$_SERVER['REQUEST_URI']}
+
+
+EOD;
+
+$noSlash = assertTrue(
+ 0 === preg_match('@[\\\\/]$@', $_SERVER['DOCUMENT_ROOT']),
+ 'DOCUMENT_ROOT ends in trailing slash'
+);
+
+$isRealPath = assertTrue(
+ false !== realpath($_SERVER['DOCUMENT_ROOT']),
+ 'DOCUMENT_ROOT fails realpath()'
+);
+
+$containsThisFile = assertTrue(
+ 0 === strpos(realpath(__FILE__), realpath($_SERVER['DOCUMENT_ROOT'])),
+ 'DOCUMENT_ROOT contains this test file'
+);
+
+if (! $noSlash || ! $isRealPath || ! $containsThisFile) {
+ echo "If you cannot modify DOCUMENT_ROOT, consider setting \$min_documentRoot in config.php\n";
+}
+
+assertTrue(
+ empty($_SERVER['SUBDOMAIN_DOCUMENT_ROOT']),
+ "\$_SERVER['SUBDOMAIN_DOCUMENT_ROOT'] is set. You may want to set \$min_documentRoot to this in config.php"
+);
+
+assertTrue(
+ realpath(__FILE__) === realpath($_SERVER['DOCUMENT_ROOT'] . '/min/server-info.php'),
+ "/min/ is not directly inside DOCUMENT_ROOT."
+);
+
+// TODO: rework this
+/*
+function _test_environment_getHello($url)
+{
+ $fp = fopen($url, 'r', false, stream_context_create(array(
+ 'http' => array(
+ 'method' => "GET",
+ 'timeout' => '10',
+ 'header' => "Accept-Encoding: deflate, gzip\r\n",
+ )
+ )));
+ $meta = stream_get_meta_data($fp);
+ $encoding = '';
+ $length = 0;
+ foreach ($meta['wrapper_data'] as $i => $header) {
+ if (preg_match('@^Content-Length:\\s*(\\d+)$@i', $header, $m)) {
+ $length = $m[1];
+ } elseif (preg_match('@^Content-Encoding:\\s*(\\S+)$@i', $header, $m)) {
+ if ($m[1] !== 'identity') {
+ $encoding = $m[1];
+ }
+ }
+ }
+ $streamContents = stream_get_contents($fp);
+ fclose($fp);
+
+ if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
+ if ($length != 6) {
+ echo "\nReturned content should be 6 bytes and not HTTP encoded.\n"
+ . "Headers returned by: {$url}\n\n";
+ var_export($meta['wrapper_data']);
+ echo "\n\n";
+ }
+ }
+
+ return array(
+ 'length' => $length
+ ,'encoding' => $encoding
+ ,'bytes' => $streamContents
+ );
+}
+
+$thisUrl = 'http://'
+ . $_SERVER['HTTP_HOST'] // avoid redirects when SERVER_NAME doesn't match
+ . ('80' === $_SERVER['SERVER_PORT'] ? '' : ":{$_SERVER['SERVER_PORT']}")
+ . dirname($_SERVER['REQUEST_URI'])
+ . '/test_environment.php';
+
+$oc = @file_get_contents($thisUrl . '?getOutputCompression=1');
+
+if (false === $oc || ! preg_match('/^[01]$/', $oc)) {
+ echo "!---: environment : Local HTTP request failed. Testing cannot continue.\n";
+ return;
+}
+if ('1' === $oc) {
+ echo "!---: environment : zlib.output_compression is enabled in php.ini"
+ . " or .htaccess.\n";
+}
+
+$testJs = _test_environment_getHello($thisUrl . '?hello=js');
+$passed = assertTrue(
+ $testJs['length'] == 6
+ ,'environment : PHP/server should not auto-encode application/x-javascript output'
+);
+
+$testCss = _test_environment_getHello($thisUrl . '?hello=css');
+$passed = $passed && assertTrue(
+ $testCss['length'] == 6
+ ,'environment : PHP/server should not auto-encode text/css output'
+ );
+
+$testHtml = _test_environment_getHello($thisUrl . '?hello=html');
+$passed = $passed && assertTrue(
+ $testHtml['length'] == 6
+ ,'environment : PHP/server should not auto-encode text/html output'
+ );
+
+if (! $passed) {
+ $testFake = _test_environment_getHello($thisUrl . '?hello=faketype');
+ if ($testFake['length'] == 6) {
+ echo " environment : Server does not auto-encode arbitrary types. This\n"
+ . " may indicate that the auto-encoding is caused by Apache's\n"
+ . " AddOutputFilterByType.";
+ }
+}
+*/
diff --git a/admin/survey/minify/static/.htaccess b/admin/survey/minify/static/.htaccess
new file mode 100644
index 0000000..f9cc303
--- /dev/null
+++ b/admin/survey/minify/static/.htaccess
@@ -0,0 +1,40 @@
+<IfModule mod_expires.c>
+ ExpiresActive On
+ ExpiresDefault "access plus 1 year"
+</IfModule>
+
+<FilesMatch "\.(js|css|less)$">
+ FileETag MTime Size
+</FilesMatch>
+
+<IfModule mod_gzip.c>
+ mod_gzip_on yes
+ mod_gzip_dechunk yes
+ mod_gzip_keep_workfiles No
+ mod_gzip_minimum_file_size 1000
+ mod_gzip_maximum_file_size 1000000
+ mod_gzip_maximum_inmem_size 1000000
+ mod_gzip_item_include mime ^text/.*
+ mod_gzip_item_include mime ^application/javascript$
+ mod_gzip_item_include mime ^application/x-javascript$
+ # Exclude old browsers and images since IE has trouble with this
+ mod_gzip_item_exclude reqheader "User-Agent: .*Mozilla/4\..*\["
+ mod_gzip_item_exclude mime ^image/.*
+</IfModule>
+
+<IfModule mod_deflate.c>
+ AddOutputFilterByType DEFLATE text/css text/javascript application/javascript application/x-javascript
+ BrowserMatch ^Mozilla/4 gzip-only-text/html
+ BrowserMatch ^Mozilla/4\.[0678] no-gzip
+ BrowserMatch \bMSIE !no-gzip
+</IfModule>
+
+<IfModule mod_rewrite.c>
+RewriteEngine on
+
+# You may need RewriteBase on some servers
+#RewriteBase /min/static
+
+RewriteCond %{REQUEST_FILENAME} !-f
+RewriteRule ^(.*)$ gen.php [QSA,L]
+</IfModule>
diff --git a/admin/survey/minify/static/README.md b/admin/survey/minify/static/README.md
new file mode 100644
index 0000000..9e4dce3
--- /dev/null
+++ b/admin/survey/minify/static/README.md
@@ -0,0 +1,85 @@
+
+# Static file serving
+
+**Note:** This feature is new and not extensively tested.
+
+Within this folder, Minify creates minified files on demand, serving them without the overhead of PHP at all.
+
+For example, when a visitor requests a URL like `/min/static/1467089473/f=js/my-script.js`, Minify creates the directories `1467089473/f=js`, and saves the minified file `my-script.js` in it. On following requests, the file is served directly.
+
+## Getting started
+
+1. Make sure the `static` directory is writable by your server.
+
+2. In `minify/config.php`, set `$min_enableStatic = true;`
+
+3. Request the test script http://example.org/min/static/0/f=min/quick-test.js
+
+ This will create a new cache directory within `static` and redirect the browser to the new location, e.g. http://example.org/min/static/1467089473/f=min/quick-test.js.
+
+ You should see the minified script and on the server the `static` directory should contain a new subdirectory tree with the static file. Following requests will serve the file directly.
+
+4. Delete the new subdirectory (e.g. `1467089473`) and refresh the browser.
+
+You should be redirected to the new location where the file and cache directory has been recreated.
+
+## Site integration
+
+You don't want to hardcode any URLs. Instead we'll use functions in `lib.php`:
+
+```php
+require_once __DIR__ . '/path/to/static/lib.php';
+
+$static_uri = "/min/static";
+$query = "b=scripts&f=1.js,2.js";
+$type = "js";
+
+$uri = Minify\StaticService\build_uri($static_uri, $query, $type);
+```
+
+If you release a new build (or change any source file), you *must* clear the cache by deleting the entire directory:
+
+```php
+require_once __DIR__ . '/path/to/static/lib.php';
+
+Minify\StaticService\flush_cache();
+```
+
+## URL rules
+
+As URLs result in files being created, they are more strictly formatted.
+
+* Arbitrary parameters (e.g. to bust a cache) are not permitted.
+* URLs must end with `.js` or `.css`.
+
+If your URL does not end with `.js` or `.css`, you'll need to append `&z=.js` or `&z=.css` to the URL. E.g.:
+
+* http://example.org/min/static/1467089473/g=home-scripts&z=.js
+* http://example.org/min/static/1467089473/f=styles.less&z=.css
+
+Note that `Minify\StaticService\build_uri` handles this automatically for you.
+
+URLs aren't canonical, so these URLs are all valid and will produce separate files:
+
+* http://example.org/min/static/1467089473/f=one/two/three.js
+* http://example.org/min/static/1467089473/b=one/two&f=three.js
+* http://example.org/min/static/1467089473/f=three.js&b=one/two&z=.js
+
+## Disable caching
+
+You can easily switch to use the regular `min/` endpoint during development:
+
+```php
+<?php
+
+$query = "b=styles&f=minimal.less";
+$type = "css";
+
+if ($use_static) {
+ require_once __DIR__ . '/path/to/static/lib.php';
+ $static_uri = "/min/static";
+ $uri = Minify\StaticService\build_uri($static_uri, $query, $type);
+} else {
+ $uri = "/min/?$query";
+}
+```
diff --git a/admin/survey/minify/static/gen.php b/admin/survey/minify/static/gen.php
new file mode 100644
index 0000000..2bc40af
--- /dev/null
+++ b/admin/survey/minify/static/gen.php
@@ -0,0 +1,127 @@
+<?php
+
+// allows putting /static anywhere as long as you put a boostrap.php in it
+if (is_file(__DIR__ . '/bootstrap.php')) {
+ $bootstrap_file = __DIR__ . '/bootstrap.php';
+} else {
+ $bootstrap_file = __DIR__ . '/../bootstrap.php';
+}
+
+$send_400 = function($content = 'Bad URL') {
+ http_response_code(400);
+ die($content);
+};
+
+$send_301 = function($url) {
+ http_response_code(301);
+ header("Cache-Control: max-age=31536000");
+ header("Location: $url");
+ exit;
+};
+
+$app = (require $bootstrap_file);
+/* @var \Minify\App $app */
+
+if (!$app->config->enableStatic) {
+ die('Minify static serving is not enabled. Set $min_enableStatic = true; in config.php');
+}
+
+require __DIR__ . '/lib.php';
+
+if (!is_writable(__DIR__)) {
+ http_response_code(500);
+ die('Directory is not writable.');
+}
+
+// parse request
+// SCRIPT_NAME = /path/to/minify/static/gen.php
+// REQUEST_URI = /path/to/minify/static/1467084520/b=path/to/minify&f=quick-test.js
+
+// "/path/to/minify/static"
+$root_uri = dirname($_SERVER['SCRIPT_NAME']);
+
+// "/1467084520/b=path/to/minify&f=quick-test.js"
+$uri = substr($_SERVER['REQUEST_URI'], strlen($root_uri));
+
+if (!preg_match('~^/(\d+)/(.*)$~', $uri, $m)) {
+ http_response_code(404);
+ die('File not found');
+}
+
+// "1467084520"
+$requested_cache_dir = $m[1];
+
+// "b=path/to/minify&f=quick-test.js"
+$query = $m[2];
+
+// we basically want canonical querystrings because we make a file for each one.
+// manual parsing is the only way to do this. The MinApp controller will validate
+// these parameters anyway.
+$get_params = array();
+foreach (explode('&', $query) as $piece) {
+ if (false === strpos($piece, '=')) {
+ $send_400();
+ }
+
+ list($key, $value) = explode('=', $piece, 2);
+ if (!in_array($key, array('f', 'g', 'b', 'z'))) {
+ $send_400();
+ }
+
+ if (isset($get_params[$key])) {
+ // already used
+ $send_400();
+ }
+
+ if ($key === 'z' && !preg_match('~^\.(css|js)$~', $value, $m)) {
+ $send_400();
+ }
+
+ $get_params[$key] = urldecode($value);
+}
+
+$cache_time = Minify\StaticService\get_cache_time();
+if (!$cache_time) {
+ http_response_code(500);
+ die('Directory is not writable.');
+}
+
+$app->env = new Minify_Env(array(
+ 'get' => $get_params,
+));
+$ctrl = $app->controller;
+$options = $app->serveOptions;
+$sources = $ctrl->createConfiguration($options)->getSources();
+if (!$sources) {
+ http_response_code(404);
+ die('File not found');
+}
+if ($sources[0]->getId() === 'id::missingFile') {
+ $send_400("Bad URL: missing file");
+}
+
+// we need URL to end in appropriate extension
+$type = $sources[0]->getContentType();
+$ext = ($type === Minify::TYPE_JS) ? '.js' : '.css';
+if (substr($query, - strlen($ext)) !== $ext) {
+ $send_301("$root_uri/$cache_time/{$query}&z=$ext");
+}
+
+// fix the cache dir in the URL
+if ($cache_time !== $requested_cache_dir) {
+ $send_301("$root_uri/$cache_time/$query");
+}
+
+$content = $app->minify->combine($sources);
+
+// save and send file
+$file = __DIR__ . "/$cache_time/$query";
+if (!is_dir(dirname($file))) {
+ mkdir(dirname($file), 0777, true);
+}
+
+file_put_contents($file, $content);
+
+header("Content-Type: $type;charset=utf-8");
+header("Cache-Control: max-age=31536000");
+echo $content;
diff --git a/admin/survey/minify/static/lib.php b/admin/survey/minify/static/lib.php
new file mode 100644
index 0000000..32c6df5
--- /dev/null
+++ b/admin/survey/minify/static/lib.php
@@ -0,0 +1,68 @@
+<?php
+
+namespace Minify\StaticService;
+
+/**
+ * Build a URI for the static cache
+ *
+ * @param string $static_uri E.g. "/min/static"
+ * @param string $query E.g. "b=scripts&f=1.js,2.js"
+ * @param string $type "css" or "js"
+ * @return string
+ */
+function build_uri($static_uri, $query, $type) {
+ $static_uri = rtrim($static_uri, '/');
+ $query = ltrim($query, '?');
+
+ $ext = ".$type";
+ if (substr($query, - strlen($ext)) !== $ext) {
+ $query .= "&z=$ext";
+ }
+
+ $cache_time = get_cache_time();
+
+ return "$static_uri/$cache_time/$query";
+}
+
+/**
+ * Get the name of the current cache directory within static/. E.g. "1467089473"
+ *
+ * @param bool $auto_create Automatically create the directory if missing?
+ * @return null|string null if missing or can't create
+ */
+function get_cache_time($auto_create = true) {
+ foreach (scandir(__DIR__) as $entry) {
+ if (ctype_digit($entry)) {
+ return $entry;
+ break;
+ }
+ }
+
+ if (!$auto_create) {
+ return null;
+ }
+
+ $time = (string)time();
+ if (!mkdir(__DIR__ . "/$time")) {
+ return null;
+ }
+
+ return $time;
+}
+
+function flush_cache() {
+ $time = get_cache_time(false);
+ if ($time) {
+ remove_tree(__DIR__ . "/$time");
+ }
+}
+
+function remove_tree($dir) {
+ $files = array_diff(scandir($dir), array('.', '..'));
+
+ foreach ($files as $file) {
+ is_dir("$dir/$file") ? remove_tree("$dir/$file") : unlink("$dir/$file");
+ }
+
+ return rmdir($dir);
+}
diff --git a/admin/survey/minify/utils.php b/admin/survey/minify/utils.php
new file mode 100644
index 0000000..983cde5
--- /dev/null
+++ b/admin/survey/minify/utils.php
@@ -0,0 +1,78 @@
+<?php
+/**
+ * Utility functions for generating URIs in HTML files
+ *
+ * @warning These functions execute min/groupsConfig.php, sometimes multiple times.
+ * You must make sure that functions are not redefined, and if your use custom sources,
+ * you must require_once __DIR__ . '/lib/Minify/Source.php' so that
+ * class is available.
+ *
+ * @package Minify
+ */
+
+require __DIR__ . '/bootstrap.php';
+
+/*
+ * Get an HTML-escaped Minify URI for a group or set of files. By default, URIs
+ * will contain timestamps to allow far-future Expires headers.
+ *
+ * <code>
+ * <link rel="stylesheet" type="text/css" href="<?= Minify_getUri('css'); ?>" />
+ * <script src="<?= Minify_getUri('js'); ?>"></script>
+ * <script src="<?= Minify_getUri(array(
+ * '//scripts/file1.js'
+ * ,'//scripts/file2.js'
+ * )); ?>"></script>
+ * </code>
+ *
+ * @param mixed $keyOrFiles a group key or array of file paths/URIs
+ * @param array $opts options:
+ * 'farExpires' : (default true) append a modified timestamp for cache revving
+ * 'debug' : (default false) append debug flag
+ * 'charset' : (default 'UTF-8') for htmlspecialchars
+ * 'minAppUri' : (default '/min') URI of min directory
+ * 'rewriteWorks' : (default true) does mod_rewrite work in min app?
+ * 'groupsConfigFile' : specify if different
+ * @return string
+ */
+function Minify_getUri($keyOrFiles, $opts = array())
+{
+ return Minify_HTML_Helper::getUri($keyOrFiles, $opts);
+}
+
+
+/**
+ * Get the last modification time of several source js/css files. If you're
+ * caching the output of Minify_getUri(), you might want to know if one of the
+ * dependent source files has changed so you can update the HTML.
+ *
+ * Since this makes a bunch of stat() calls, you might not want to check this
+ * on every request.
+ *
+ * @param array $keysAndFiles group keys and/or file paths/URIs.
+ * @return int latest modification time of all given keys/files
+ */
+function Minify_mtime($keysAndFiles, $groupsConfigFile = null)
+{
+ $gc = null;
+ if (! $groupsConfigFile) {
+ $groupsConfigFile = Minify_HTML_Helper::app()->groupsConfigPath;
+ }
+ $sources = array();
+ foreach ($keysAndFiles as $keyOrFile) {
+ if (is_object($keyOrFile)
+ || 0 === strpos($keyOrFile, '/')
+ || 1 === strpos($keyOrFile, ':\\')) {
+ // a file/source obj
+ $sources[] = $keyOrFile;
+ } else {
+ if (! $gc) {
+ $gc = (require $groupsConfigFile);
+ }
+ foreach ($gc[$keyOrFile] as $source) {
+ $sources[] = $source;
+ }
+ }
+ }
+ return Minify_HTML_Helper::getLastModified($sources);
+}
diff --git a/admin/survey/minify/vendor/autoload.php b/admin/survey/minify/vendor/autoload.php
new file mode 100644
index 0000000..a214d03
--- /dev/null
+++ b/admin/survey/minify/vendor/autoload.php
@@ -0,0 +1,7 @@
+<?php
+
+// autoload.php @generated by Composer
+
+require_once __DIR__ . '/composer/autoload_real.php';
+
+return ComposerAutoloaderInite67f9495ee4d57806f236874186e3477::getLoader();
diff --git a/admin/survey/minify/vendor/bin/cssmin b/admin/survey/minify/vendor/bin/cssmin
new file mode 100644
index 0000000..b7964ff
--- /dev/null
+++ b/admin/survey/minify/vendor/bin/cssmin
@@ -0,0 +1,17 @@
+#!/usr/bin/env sh
+
+dir=$(d=${0%[/\\]*}; cd "$d" > /dev/null; cd "../tubalmartin/cssmin" && pwd)
+
+# See if we are running in Cygwin by checking for cygpath program
+if command -v 'cygpath' >/dev/null 2>&1; then
+ # Cygwin paths start with /cygdrive/ which will break windows PHP,
+ # so we need to translate the dir path to windows format. However
+ # we could be using cygwin PHP which does not require this, so we
+ # test if the path to PHP starts with /cygdrive/ rather than /usr/bin
+ if [[ $(which php) == /cygdrive/* ]]; then
+ dir=$(cygpath -m "$dir");
+ fi
+fi
+
+dir=$(echo $dir | sed 's/ /\ /g')
+"${dir}/cssmin" "$@"
diff --git a/admin/survey/minify/vendor/bin/cssmin.bat b/admin/survey/minify/vendor/bin/cssmin.bat
new file mode 100644
index 0000000..d862df3
--- /dev/null
+++ b/admin/survey/minify/vendor/bin/cssmin.bat
@@ -0,0 +1,4 @@
+@ECHO OFF
+setlocal DISABLEDELAYEDEXPANSION
+SET BIN_TARGET=%~dp0/../tubalmartin/cssmin/cssmin
+php "%BIN_TARGET%" %*
diff --git a/admin/survey/minify/vendor/composer/ClassLoader.php b/admin/survey/minify/vendor/composer/ClassLoader.php
new file mode 100644
index 0000000..003f7fe
--- /dev/null
+++ b/admin/survey/minify/vendor/composer/ClassLoader.php
@@ -0,0 +1,445 @@
+<?php
+
+/*
+ * This file is part of Composer.
+ *
+ * (c) Nils Adermann <naderman@naderman.de>
+ * Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Composer\Autoload;
+
+/**
+ * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
+ *
+ * $loader = new \Composer\Autoload\ClassLoader();
+ *
+ * // register classes with namespaces
+ * $loader->add('Symfony\Component', __DIR__.'/component');
+ * $loader->add('Symfony', __DIR__.'/framework');
+ *
+ * // activate the autoloader
+ * $loader->register();
+ *
+ * // to enable searching the include path (eg. for PEAR packages)
+ * $loader->setUseIncludePath(true);
+ *
+ * In this example, if you try to use a class in the Symfony\Component
+ * namespace or one of its children (Symfony\Component\Console for instance),
+ * the autoloader will first look for the class under the component/
+ * directory, and it will then fallback to the framework/ directory if not
+ * found before giving up.
+ *
+ * This class is loosely based on the Symfony UniversalClassLoader.
+ *
+ * @author Fabien Potencier <fabien@symfony.com>
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ * @see http://www.php-fig.org/psr/psr-0/
+ * @see http://www.php-fig.org/psr/psr-4/
+ */
+class ClassLoader
+{
+ // PSR-4
+ private $prefixLengthsPsr4 = array();
+ private $prefixDirsPsr4 = array();
+ private $fallbackDirsPsr4 = array();
+
+ // PSR-0
+ private $prefixesPsr0 = array();
+ private $fallbackDirsPsr0 = array();
+
+ private $useIncludePath = false;
+ private $classMap = array();
+ private $classMapAuthoritative = false;
+ private $missingClasses = array();
+ private $apcuPrefix;
+
+ public function getPrefixes()
+ {
+ if (!empty($this->prefixesPsr0)) {
+ return call_user_func_array('array_merge', $this->prefixesPsr0);
+ }
+
+ return array();
+ }
+
+ public function getPrefixesPsr4()
+ {
+ return $this->prefixDirsPsr4;
+ }
+
+ public function getFallbackDirs()
+ {
+ return $this->fallbackDirsPsr0;
+ }
+
+ public function getFallbackDirsPsr4()
+ {
+ return $this->fallbackDirsPsr4;
+ }
+
+ public function getClassMap()
+ {
+ return $this->classMap;
+ }
+
+ /**
+ * @param array $classMap Class to filename map
+ */
+ public function addClassMap(array $classMap)
+ {
+ if ($this->classMap) {
+ $this->classMap = array_merge($this->classMap, $classMap);
+ } else {
+ $this->classMap = $classMap;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix, either
+ * appending or prepending to the ones previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param array|string $paths The PSR-0 root directories
+ * @param bool $prepend Whether to prepend the directories
+ */
+ public function add($prefix, $paths, $prepend = false)
+ {
+ if (!$prefix) {
+ if ($prepend) {
+ $this->fallbackDirsPsr0 = array_merge(
+ (array) $paths,
+ $this->fallbackDirsPsr0
+ );
+ } else {
+ $this->fallbackDirsPsr0 = array_merge(
+ $this->fallbackDirsPsr0,
+ (array) $paths
+ );
+ }
+
+ return;
+ }
+
+ $first = $prefix[0];
+ if (!isset($this->prefixesPsr0[$first][$prefix])) {
+ $this->prefixesPsr0[$first][$prefix] = (array) $paths;
+
+ return;
+ }
+ if ($prepend) {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ (array) $paths,
+ $this->prefixesPsr0[$first][$prefix]
+ );
+ } else {
+ $this->prefixesPsr0[$first][$prefix] = array_merge(
+ $this->prefixesPsr0[$first][$prefix],
+ (array) $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace, either
+ * appending or prepending to the ones previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param array|string $paths The PSR-4 base directories
+ * @param bool $prepend Whether to prepend the directories
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function addPsr4($prefix, $paths, $prepend = false)
+ {
+ if (!$prefix) {
+ // Register directories for the root namespace.
+ if ($prepend) {
+ $this->fallbackDirsPsr4 = array_merge(
+ (array) $paths,
+ $this->fallbackDirsPsr4
+ );
+ } else {
+ $this->fallbackDirsPsr4 = array_merge(
+ $this->fallbackDirsPsr4,
+ (array) $paths
+ );
+ }
+ } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
+ // Register directories for a new namespace.
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ } elseif ($prepend) {
+ // Prepend directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ (array) $paths,
+ $this->prefixDirsPsr4[$prefix]
+ );
+ } else {
+ // Append directories for an already registered namespace.
+ $this->prefixDirsPsr4[$prefix] = array_merge(
+ $this->prefixDirsPsr4[$prefix],
+ (array) $paths
+ );
+ }
+ }
+
+ /**
+ * Registers a set of PSR-0 directories for a given prefix,
+ * replacing any others previously set for this prefix.
+ *
+ * @param string $prefix The prefix
+ * @param array|string $paths The PSR-0 base directories
+ */
+ public function set($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr0 = (array) $paths;
+ } else {
+ $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Registers a set of PSR-4 directories for a given namespace,
+ * replacing any others previously set for this namespace.
+ *
+ * @param string $prefix The prefix/namespace, with trailing '\\'
+ * @param array|string $paths The PSR-4 base directories
+ *
+ * @throws \InvalidArgumentException
+ */
+ public function setPsr4($prefix, $paths)
+ {
+ if (!$prefix) {
+ $this->fallbackDirsPsr4 = (array) $paths;
+ } else {
+ $length = strlen($prefix);
+ if ('\\' !== $prefix[$length - 1]) {
+ throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
+ }
+ $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
+ $this->prefixDirsPsr4[$prefix] = (array) $paths;
+ }
+ }
+
+ /**
+ * Turns on searching the include path for class files.
+ *
+ * @param bool $useIncludePath
+ */
+ public function setUseIncludePath($useIncludePath)
+ {
+ $this->useIncludePath = $useIncludePath;
+ }
+
+ /**
+ * Can be used to check if the autoloader uses the include path to check
+ * for classes.
+ *
+ * @return bool
+ */
+ public function getUseIncludePath()
+ {
+ return $this->useIncludePath;
+ }
+
+ /**
+ * Turns off searching the prefix and fallback directories for classes
+ * that have not been registered with the class map.
+ *
+ * @param bool $classMapAuthoritative
+ */
+ public function setClassMapAuthoritative($classMapAuthoritative)
+ {
+ $this->classMapAuthoritative = $classMapAuthoritative;
+ }
+
+ /**
+ * Should class lookup fail if not found in the current class map?
+ *
+ * @return bool
+ */
+ public function isClassMapAuthoritative()
+ {
+ return $this->classMapAuthoritative;
+ }
+
+ /**
+ * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
+ *
+ * @param string|null $apcuPrefix
+ */
+ public function setApcuPrefix($apcuPrefix)
+ {
+ $this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
+ }
+
+ /**
+ * The APCu prefix in use, or null if APCu caching is not enabled.
+ *
+ * @return string|null
+ */
+ public function getApcuPrefix()
+ {
+ return $this->apcuPrefix;
+ }
+
+ /**
+ * Registers this instance as an autoloader.
+ *
+ * @param bool $prepend Whether to prepend the autoloader or not
+ */
+ public function register($prepend = false)
+ {
+ spl_autoload_register(array($this, 'loadClass'), true, $prepend);
+ }
+
+ /**
+ * Unregisters this instance as an autoloader.
+ */
+ public function unregister()
+ {
+ spl_autoload_unregister(array($this, 'loadClass'));
+ }
+
+ /**
+ * Loads the given class or interface.
+ *
+ * @param string $class The name of the class
+ * @return bool|null True if loaded, null otherwise
+ */
+ public function loadClass($class)
+ {
+ if ($file = $this->findFile($class)) {
+ includeFile($file);
+
+ return true;
+ }
+ }
+
+ /**
+ * Finds the path to the file where the class is defined.
+ *
+ * @param string $class The name of the class
+ *
+ * @return string|false The path if found, false otherwise
+ */
+ public function findFile($class)
+ {
+ // class map lookup
+ if (isset($this->classMap[$class])) {
+ return $this->classMap[$class];
+ }
+ if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
+ return false;
+ }
+ if (null !== $this->apcuPrefix) {
+ $file = apcu_fetch($this->apcuPrefix.$class, $hit);
+ if ($hit) {
+ return $file;
+ }
+ }
+
+ $file = $this->findFileWithExtension($class, '.php');
+
+ // Search for Hack files if we are running on HHVM
+ if (false === $file && defined('HHVM_VERSION')) {
+ $file = $this->findFileWithExtension($class, '.hh');
+ }
+
+ if (null !== $this->apcuPrefix) {
+ apcu_add($this->apcuPrefix.$class, $file);
+ }
+
+ if (false === $file) {
+ // Remember that this class does not exist.
+ $this->missingClasses[$class] = true;
+ }
+
+ return $file;
+ }
+
+ private function findFileWithExtension($class, $ext)
+ {
+ // PSR-4 lookup
+ $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
+
+ $first = $class[0];
+ if (isset($this->prefixLengthsPsr4[$first])) {
+ $subPath = $class;
+ while (false !== $lastPos = strrpos($subPath, '\\')) {
+ $subPath = substr($subPath, 0, $lastPos);
+ $search = $subPath.'\\';
+ if (isset($this->prefixDirsPsr4[$search])) {
+ foreach ($this->prefixDirsPsr4[$search] as $dir) {
+ $length = $this->prefixLengthsPsr4[$first][$search];
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length))) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-4 fallback dirs
+ foreach ($this->fallbackDirsPsr4 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 lookup
+ if (false !== $pos = strrpos($class, '\\')) {
+ // namespaced class name
+ $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
+ . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
+ } else {
+ // PEAR-like class name
+ $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
+ }
+
+ if (isset($this->prefixesPsr0[$first])) {
+ foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
+ if (0 === strpos($class, $prefix)) {
+ foreach ($dirs as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+ }
+ }
+ }
+
+ // PSR-0 fallback dirs
+ foreach ($this->fallbackDirsPsr0 as $dir) {
+ if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
+ return $file;
+ }
+ }
+
+ // PSR-0 include paths.
+ if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
+ return $file;
+ }
+
+ return false;
+ }
+}
+
+/**
+ * Scope isolated include.
+ *
+ * Prevents access to $this/self from included files.
+ */
+function includeFile($file)
+{
+ include $file;
+}
diff --git a/admin/survey/minify/vendor/composer/LICENSE b/admin/survey/minify/vendor/composer/LICENSE
new file mode 100644
index 0000000..6256709
--- /dev/null
+++ b/admin/survey/minify/vendor/composer/LICENSE
@@ -0,0 +1,21 @@
+
+Copyright (c) Nils Adermann, Jordi Boggiano
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/admin/survey/minify/vendor/composer/autoload_classmap.php b/admin/survey/minify/vendor/composer/autoload_classmap.php
new file mode 100644
index 0000000..45f28fd
--- /dev/null
+++ b/admin/survey/minify/vendor/composer/autoload_classmap.php
@@ -0,0 +1,59 @@
+<?php
+
+// autoload_classmap.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+ 'HTTP_ConditionalGet' => $baseDir . '/lib/HTTP/ConditionalGet.php',
+ 'HTTP_Encoder' => $baseDir . '/lib/HTTP/Encoder.php',
+ 'Minify' => $baseDir . '/lib/Minify.php',
+ 'Minify\\App' => $baseDir . '/lib/Minify/App.php',
+ 'Minify\\Config' => $baseDir . '/lib/Minify/Config.php',
+ 'Minify\\JS\\JShrink' => $baseDir . '/lib/Minify/JS/JShrink.php',
+ 'Minify\\Logger\\LegacyHandler' => $baseDir . '/lib/Minify/Logger/LegacyHandler.php',
+ 'Minify_Build' => $baseDir . '/lib/Minify/Build.php',
+ 'Minify_CSS' => $baseDir . '/lib/Minify/CSS.php',
+ 'Minify_CSS_Compressor' => $baseDir . '/lib/Minify/CSS/Compressor.php',
+ 'Minify_CSS_UriRewriter' => $baseDir . '/lib/Minify/CSS/UriRewriter.php',
+ 'Minify_CSSmin' => $baseDir . '/lib/Minify/CSSmin.php',
+ 'Minify_CacheInterface' => $baseDir . '/lib/Minify/CacheInterface.php',
+ 'Minify_Cache_APC' => $baseDir . '/lib/Minify/Cache/APC.php',
+ 'Minify_Cache_File' => $baseDir . '/lib/Minify/Cache/File.php',
+ 'Minify_Cache_Memcache' => $baseDir . '/lib/Minify/Cache/Memcache.php',
+ 'Minify_Cache_Null' => $baseDir . '/lib/Minify/Cache/Null.php',
+ 'Minify_Cache_WinCache' => $baseDir . '/lib/Minify/Cache/WinCache.php',
+ 'Minify_Cache_XCache' => $baseDir . '/lib/Minify/Cache/XCache.php',
+ 'Minify_Cache_ZendPlatform' => $baseDir . '/lib/Minify/Cache/ZendPlatform.php',
+ 'Minify_ClosureCompiler' => $baseDir . '/lib/Minify/ClosureCompiler.php',
+ 'Minify_ClosureCompiler_Exception' => $baseDir . '/lib/Minify/ClosureCompiler.php',
+ 'Minify_CommentPreserver' => $baseDir . '/lib/Minify/CommentPreserver.php',
+ 'Minify_ControllerInterface' => $baseDir . '/lib/Minify/ControllerInterface.php',
+ 'Minify_Controller_Base' => $baseDir . '/lib/Minify/Controller/Base.php',
+ 'Minify_Controller_Files' => $baseDir . '/lib/Minify/Controller/Files.php',
+ 'Minify_Controller_Groups' => $baseDir . '/lib/Minify/Controller/Groups.php',
+ 'Minify_Controller_MinApp' => $baseDir . '/lib/Minify/Controller/MinApp.php',
+ 'Minify_Controller_Page' => $baseDir . '/lib/Minify/Controller/Page.php',
+ 'Minify_DebugDetector' => $baseDir . '/lib/Minify/DebugDetector.php',
+ 'Minify_Env' => $baseDir . '/lib/Minify/Env.php',
+ 'Minify_HTML' => $baseDir . '/lib/Minify/HTML.php',
+ 'Minify_HTML_Helper' => $baseDir . '/lib/Minify/HTML/Helper.php',
+ 'Minify_ImportProcessor' => $baseDir . '/lib/Minify/ImportProcessor.php',
+ 'Minify_JS_ClosureCompiler' => $baseDir . '/lib/Minify/JS/ClosureCompiler.php',
+ 'Minify_JS_ClosureCompiler_Exception' => $baseDir . '/lib/Minify/JS/ClosureCompiler.php',
+ 'Minify_LessCssSource' => $baseDir . '/lib/Minify/LessCssSource.php',
+ 'Minify_Lines' => $baseDir . '/lib/Minify/Lines.php',
+ 'Minify_NailgunClosureCompiler' => $baseDir . '/lib/Minify/NailgunClosureCompiler.php',
+ 'Minify_Packer' => $baseDir . '/lib/Minify/Packer.php',
+ 'Minify_ScssCssSource' => $baseDir . '/lib/Minify/ScssCssSource.php',
+ 'Minify_ServeConfiguration' => $baseDir . '/lib/Minify/ServeConfiguration.php',
+ 'Minify_Source' => $baseDir . '/lib/Minify/Source.php',
+ 'Minify_SourceInterface' => $baseDir . '/lib/Minify/SourceInterface.php',
+ 'Minify_SourceSet' => $baseDir . '/lib/Minify/SourceSet.php',
+ 'Minify_Source_Factory' => $baseDir . '/lib/Minify/Source/Factory.php',
+ 'Minify_Source_FactoryException' => $baseDir . '/lib/Minify/Source/FactoryException.php',
+ 'Minify_YUICompressor' => $baseDir . '/lib/Minify/YUICompressor.php',
+ 'MrClay\\Cli' => $baseDir . '/lib/MrClay/Cli.php',
+ 'MrClay\\Cli\\Arg' => $baseDir . '/lib/MrClay/Cli/Arg.php',
+);
diff --git a/admin/survey/minify/vendor/composer/autoload_namespaces.php b/admin/survey/minify/vendor/composer/autoload_namespaces.php
new file mode 100644
index 0000000..e2d69e7
--- /dev/null
+++ b/admin/survey/minify/vendor/composer/autoload_namespaces.php
@@ -0,0 +1,12 @@
+<?php
+
+// autoload_namespaces.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+ 'Props\\' => array($vendorDir . '/mrclay/props-dic/src', $vendorDir . '/mrclay/props-dic/test'),
+ 'Pimple' => array($vendorDir . '/pimple/pimple/src'),
+ 'JSMin\\' => array($vendorDir . '/mrclay/jsmin-php/src'),
+);
diff --git a/admin/survey/minify/vendor/composer/autoload_psr4.php b/admin/survey/minify/vendor/composer/autoload_psr4.php
new file mode 100644
index 0000000..21a7a82
--- /dev/null
+++ b/admin/survey/minify/vendor/composer/autoload_psr4.php
@@ -0,0 +1,15 @@
+<?php
+
+// autoload_psr4.php @generated by Composer
+
+$vendorDir = dirname(dirname(__FILE__));
+$baseDir = dirname($vendorDir);
+
+return array(
+ 'tubalmartin\\CssMin\\' => array($vendorDir . '/tubalmartin/cssmin/src'),
+ 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'),
+ 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
+ 'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
+ 'Intervention\\Httpauth\\' => array($vendorDir . '/intervention/httpauth/src/Intervention/Httpauth'),
+ 'Interop\\Container\\' => array($vendorDir . '/container-interop/container-interop/src/Interop/Container'),
+);
diff --git a/admin/survey/minify/vendor/composer/autoload_real.php b/admin/survey/minify/vendor/composer/autoload_real.php
new file mode 100644
index 0000000..6f5c9cf
--- /dev/null
+++ b/admin/survey/minify/vendor/composer/autoload_real.php
@@ -0,0 +1,52 @@
+<?php
+
+// autoload_real.php @generated by Composer
+
+class ComposerAutoloaderInite67f9495ee4d57806f236874186e3477
+{
+ private static $loader;
+
+ public static function loadClassLoader($class)
+ {
+ if ('Composer\Autoload\ClassLoader' === $class) {
+ require __DIR__ . '/ClassLoader.php';
+ }
+ }
+
+ public static function getLoader()
+ {
+ if (null !== self::$loader) {
+ return self::$loader;
+ }
+
+ spl_autoload_register(array('ComposerAutoloaderInite67f9495ee4d57806f236874186e3477', 'loadClassLoader'), true, true);
+ self::$loader = $loader = new \Composer\Autoload\ClassLoader();
+ spl_autoload_unregister(array('ComposerAutoloaderInite67f9495ee4d57806f236874186e3477', 'loadClassLoader'));
+
+ $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
+ if ($useStaticLoader) {
+ require_once __DIR__ . '/autoload_static.php';
+
+ call_user_func(\Composer\Autoload\ComposerStaticInite67f9495ee4d57806f236874186e3477::getInitializer($loader));
+ } else {
+ $map = require __DIR__ . '/autoload_namespaces.php';
+ foreach ($map as $namespace => $path) {
+ $loader->set($namespace, $path);
+ }
+
+ $map = require __DIR__ . '/autoload_psr4.php';
+ foreach ($map as $namespace => $path) {
+ $loader->setPsr4($namespace, $path);
+ }
+
+ $classMap = require __DIR__ . '/autoload_classmap.php';
+ if ($classMap) {
+ $loader->addClassMap($classMap);
+ }
+ }
+
+ $loader->register(true);
+
+ return $loader;
+ }
+}
diff --git a/admin/survey/minify/vendor/composer/autoload_static.php b/admin/survey/minify/vendor/composer/autoload_static.php
new file mode 100644
index 0000000..e27e512
--- /dev/null
+++ b/admin/survey/minify/vendor/composer/autoload_static.php
@@ -0,0 +1,142 @@
+<?php
+
+// autoload_static.php @generated by Composer
+
+namespace Composer\Autoload;
+
+class ComposerStaticInite67f9495ee4d57806f236874186e3477
+{
+ public static $prefixLengthsPsr4 = array (
+ 't' =>
+ array (
+ 'tubalmartin\\CssMin\\' => 19,
+ ),
+ 'P' =>
+ array (
+ 'Psr\\Log\\' => 8,
+ 'Psr\\Container\\' => 14,
+ ),
+ 'M' =>
+ array (
+ 'Monolog\\' => 8,
+ ),
+ 'I' =>
+ array (
+ 'Intervention\\Httpauth\\' => 22,
+ 'Interop\\Container\\' => 18,
+ ),
+ );
+
+ public static $prefixDirsPsr4 = array (
+ 'tubalmartin\\CssMin\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/tubalmartin/cssmin/src',
+ ),
+ 'Psr\\Log\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/log/Psr/Log',
+ ),
+ 'Psr\\Container\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/psr/container/src',
+ ),
+ 'Monolog\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/monolog/monolog/src/Monolog',
+ ),
+ 'Intervention\\Httpauth\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/intervention/httpauth/src/Intervention/Httpauth',
+ ),
+ 'Interop\\Container\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/container-interop/container-interop/src/Interop/Container',
+ ),
+ );
+
+ public static $prefixesPsr0 = array (
+ 'P' =>
+ array (
+ 'Props\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/mrclay/props-dic/src',
+ 1 => __DIR__ . '/..' . '/mrclay/props-dic/test',
+ ),
+ 'Pimple' =>
+ array (
+ 0 => __DIR__ . '/..' . '/pimple/pimple/src',
+ ),
+ ),
+ 'J' =>
+ array (
+ 'JSMin\\' =>
+ array (
+ 0 => __DIR__ . '/..' . '/mrclay/jsmin-php/src',
+ ),
+ ),
+ );
+
+ public static $classMap = array (
+ 'HTTP_ConditionalGet' => __DIR__ . '/../..' . '/lib/HTTP/ConditionalGet.php',
+ 'HTTP_Encoder' => __DIR__ . '/../..' . '/lib/HTTP/Encoder.php',
+ 'Minify' => __DIR__ . '/../..' . '/lib/Minify.php',
+ 'Minify\\App' => __DIR__ . '/../..' . '/lib/Minify/App.php',
+ 'Minify\\Config' => __DIR__ . '/../..' . '/lib/Minify/Config.php',
+ 'Minify\\JS\\JShrink' => __DIR__ . '/../..' . '/lib/Minify/JS/JShrink.php',
+ 'Minify\\Logger\\LegacyHandler' => __DIR__ . '/../..' . '/lib/Minify/Logger/LegacyHandler.php',
+ 'Minify_Build' => __DIR__ . '/../..' . '/lib/Minify/Build.php',
+ 'Minify_CSS' => __DIR__ . '/../..' . '/lib/Minify/CSS.php',
+ 'Minify_CSS_Compressor' => __DIR__ . '/../..' . '/lib/Minify/CSS/Compressor.php',
+ 'Minify_CSS_UriRewriter' => __DIR__ . '/../..' . '/lib/Minify/CSS/UriRewriter.php',
+ 'Minify_CSSmin' => __DIR__ . '/../..' . '/lib/Minify/CSSmin.php',
+ 'Minify_CacheInterface' => __DIR__ . '/../..' . '/lib/Minify/CacheInterface.php',
+ 'Minify_Cache_APC' => __DIR__ . '/../..' . '/lib/Minify/Cache/APC.php',
+ 'Minify_Cache_File' => __DIR__ . '/../..' . '/lib/Minify/Cache/File.php',
+ 'Minify_Cache_Memcache' => __DIR__ . '/../..' . '/lib/Minify/Cache/Memcache.php',
+ 'Minify_Cache_Null' => __DIR__ . '/../..' . '/lib/Minify/Cache/Null.php',
+ 'Minify_Cache_WinCache' => __DIR__ . '/../..' . '/lib/Minify/Cache/WinCache.php',
+ 'Minify_Cache_XCache' => __DIR__ . '/../..' . '/lib/Minify/Cache/XCache.php',
+ 'Minify_Cache_ZendPlatform' => __DIR__ . '/../..' . '/lib/Minify/Cache/ZendPlatform.php',
+ 'Minify_ClosureCompiler' => __DIR__ . '/../..' . '/lib/Minify/ClosureCompiler.php',
+ 'Minify_ClosureCompiler_Exception' => __DIR__ . '/../..' . '/lib/Minify/ClosureCompiler.php',
+ 'Minify_CommentPreserver' => __DIR__ . '/../..' . '/lib/Minify/CommentPreserver.php',
+ 'Minify_ControllerInterface' => __DIR__ . '/../..' . '/lib/Minify/ControllerInterface.php',
+ 'Minify_Controller_Base' => __DIR__ . '/../..' . '/lib/Minify/Controller/Base.php',
+ 'Minify_Controller_Files' => __DIR__ . '/../..' . '/lib/Minify/Controller/Files.php',
+ 'Minify_Controller_Groups' => __DIR__ . '/../..' . '/lib/Minify/Controller/Groups.php',
+ 'Minify_Controller_MinApp' => __DIR__ . '/../..' . '/lib/Minify/Controller/MinApp.php',
+ 'Minify_Controller_Page' => __DIR__ . '/../..' . '/lib/Minify/Controller/Page.php',
+ 'Minify_DebugDetector' => __DIR__ . '/../..' . '/lib/Minify/DebugDetector.php',
+ 'Minify_Env' => __DIR__ . '/../..' . '/lib/Minify/Env.php',
+ 'Minify_HTML' => __DIR__ . '/../..' . '/lib/Minify/HTML.php',
+ 'Minify_HTML_Helper' => __DIR__ . '/../..' . '/lib/Minify/HTML/Helper.php',
+ 'Minify_ImportProcessor' => __DIR__ . '/../..' . '/lib/Minify/ImportProcessor.php',
+ 'Minify_JS_ClosureCompiler' => __DIR__ . '/../..' . '/lib/Minify/JS/ClosureCompiler.php',
+ 'Minify_JS_ClosureCompiler_Exception' => __DIR__ . '/../..' . '/lib/Minify/JS/ClosureCompiler.php',
+ 'Minify_LessCssSource' => __DIR__ . '/../..' . '/lib/Minify/LessCssSource.php',
+ 'Minify_Lines' => __DIR__ . '/../..' . '/lib/Minify/Lines.php',
+ 'Minify_NailgunClosureCompiler' => __DIR__ . '/../..' . '/lib/Minify/NailgunClosureCompiler.php',
+ 'Minify_Packer' => __DIR__ . '/../..' . '/lib/Minify/Packer.php',
+ 'Minify_ScssCssSource' => __DIR__ . '/../..' . '/lib/Minify/ScssCssSource.php',
+ 'Minify_ServeConfiguration' => __DIR__ . '/../..' . '/lib/Minify/ServeConfiguration.php',
+ 'Minify_Source' => __DIR__ . '/../..' . '/lib/Minify/Source.php',
+ 'Minify_SourceInterface' => __DIR__ . '/../..' . '/lib/Minify/SourceInterface.php',
+ 'Minify_SourceSet' => __DIR__ . '/../..' . '/lib/Minify/SourceSet.php',
+ 'Minify_Source_Factory' => __DIR__ . '/../..' . '/lib/Minify/Source/Factory.php',
+ 'Minify_Source_FactoryException' => __DIR__ . '/../..' . '/lib/Minify/Source/FactoryException.php',
+ 'Minify_YUICompressor' => __DIR__ . '/../..' . '/lib/Minify/YUICompressor.php',
+ 'MrClay\\Cli' => __DIR__ . '/../..' . '/lib/MrClay/Cli.php',
+ 'MrClay\\Cli\\Arg' => __DIR__ . '/../..' . '/lib/MrClay/Cli/Arg.php',
+ );
+
+ public static function getInitializer(ClassLoader $loader)
+ {
+ return \Closure::bind(function () use ($loader) {
+ $loader->prefixLengthsPsr4 = ComposerStaticInite67f9495ee4d57806f236874186e3477::$prefixLengthsPsr4;
+ $loader->prefixDirsPsr4 = ComposerStaticInite67f9495ee4d57806f236874186e3477::$prefixDirsPsr4;
+ $loader->prefixesPsr0 = ComposerStaticInite67f9495ee4d57806f236874186e3477::$prefixesPsr0;
+ $loader->classMap = ComposerStaticInite67f9495ee4d57806f236874186e3477::$classMap;
+
+ }, null, ClassLoader::class);
+ }
+}
diff --git a/admin/survey/minify/vendor/composer/installed.json b/admin/survey/minify/vendor/composer/installed.json
new file mode 100644
index 0000000..6c9565f
--- /dev/null
+++ b/admin/survey/minify/vendor/composer/installed.json
@@ -0,0 +1,485 @@
+[
+ {
+ "name": "psr/container",
+ "version": "1.0.0",
+ "version_normalized": "1.0.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "time": "2017-02-14T16:28:37+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ]
+ },
+ {
+ "name": "pimple/pimple",
+ "version": "v3.2.3",
+ "version_normalized": "3.2.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/silexphp/Pimple.git",
+ "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/silexphp/Pimple/zipball/9e403941ef9d65d20cba7d54e29fe906db42cf32",
+ "reference": "9e403941ef9d65d20cba7d54e29fe906db42cf32",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/container": "^1.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^3.2"
+ },
+ "time": "2018-01-21T07:42:36+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Pimple": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "description": "Pimple, a simple Dependency Injection Container",
+ "homepage": "http://pimple.sensiolabs.org",
+ "keywords": [
+ "container",
+ "dependency injection"
+ ]
+ },
+ {
+ "name": "container-interop/container-interop",
+ "version": "1.2.0",
+ "version_normalized": "1.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/container-interop/container-interop.git",
+ "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8",
+ "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8",
+ "shasum": ""
+ },
+ "require": {
+ "psr/container": "^1.0"
+ },
+ "time": "2017-02-14T19:40:03+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Interop\\Container\\": "src/Interop/Container/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
+ "homepage": "https://github.com/container-interop/container-interop"
+ },
+ {
+ "name": "mrclay/props-dic",
+ "version": "2.2.0",
+ "version_normalized": "2.2.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mrclay/Props.git",
+ "reference": "9ed6cf3a027f1eab03abdd134ec209467cf9c77e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mrclay/Props/zipball/9ed6cf3a027f1eab03abdd134ec209467cf9c77e",
+ "reference": "9ed6cf3a027f1eab03abdd134ec209467cf9c77e",
+ "shasum": ""
+ },
+ "require": {
+ "container-interop/container-interop": "^1.1",
+ "php": ">=5.3.3",
+ "pimple/pimple": "~3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8"
+ },
+ "time": "2016-02-10T18:59:20+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "Props\\": [
+ "src/",
+ "test/"
+ ]
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Steve Clay",
+ "email": "steve@mrclay.org",
+ "homepage": "http://www.mrclay.org/"
+ }
+ ],
+ "description": "Props is a simple DI container that allows retrieving values via custom property and method names",
+ "keywords": [
+ "container",
+ "dependency injection",
+ "dependency injection container",
+ "di",
+ "di container"
+ ]
+ },
+ {
+ "name": "intervention/httpauth",
+ "version": "2.0.3",
+ "version_normalized": "2.0.3.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Intervention/httpauth.git",
+ "reference": "69d4627c398c2d74b1c70aae7de7121e0b627c17"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Intervention/httpauth/zipball/69d4627c398c2d74b1c70aae7de7121e0b627c17",
+ "reference": "69d4627c398c2d74b1c70aae7de7121e0b627c17",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "time": "2017-06-28T17:37:25+00:00",
+ "type": "library",
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Intervention\\Httpauth\\HttpauthServiceProvider"
+ ],
+ "aliases": {
+ "Httpauth": "Intervention\\Httpauth\\Facades\\Httpauth"
+ }
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Intervention\\Httpauth\\": "src/Intervention/Httpauth"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Oliver Vogel",
+ "email": "oliver@olivervogel.com",
+ "homepage": "http://olivervogel.com/"
+ }
+ ],
+ "description": "HTTP authentication (Basic & Digest) including ServiceProviders for easy Laravel integration",
+ "homepage": "https://github.com/Intervention/httpauth",
+ "keywords": [
+ "Authentication",
+ "http",
+ "laravel"
+ ]
+ },
+ {
+ "name": "psr/log",
+ "version": "1.0.2",
+ "version_normalized": "1.0.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/log.git",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "time": "2016-10-10T12:19:37+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "description": "Common interface for logging libraries",
+ "homepage": "https://github.com/php-fig/log",
+ "keywords": [
+ "log",
+ "psr",
+ "psr-3"
+ ]
+ },
+ {
+ "name": "monolog/monolog",
+ "version": "1.23.0",
+ "version_normalized": "1.23.0.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/Seldaek/monolog.git",
+ "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
+ "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "psr/log": "~1.0"
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "require-dev": {
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
+ "doctrine/couchdb": "~1.0@dev",
+ "graylog2/gelf-php": "~1.0",
+ "jakub-onderka/php-parallel-lint": "0.9",
+ "php-amqplib/php-amqplib": "~2.4",
+ "php-console/php-console": "^3.1.3",
+ "phpunit/phpunit": "~4.5",
+ "phpunit/phpunit-mock-objects": "2.3.0",
+ "ruflin/elastica": ">=0.90 <3.0",
+ "sentry/sentry": "^0.13",
+ "swiftmailer/swiftmailer": "^5.3|^6.0"
+ },
+ "suggest": {
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "php-console/php-console": "Allow sending log messages to Google Chrome",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+ "sentry/sentry": "Allow sending log messages to a Sentry server"
+ },
+ "time": "2017-06-19T01:22:40+00:00",
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "Monolog\\": "src/Monolog"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "homepage": "http://github.com/Seldaek/monolog",
+ "keywords": [
+ "log",
+ "logging",
+ "psr-3"
+ ]
+ },
+ {
+ "name": "mrclay/jsmin-php",
+ "version": "2.3.2",
+ "version_normalized": "2.3.2.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/mrclay/jsmin-php.git",
+ "reference": "932c9633c35b390beb2cfdea69a41ea7dbc8d759"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/mrclay/jsmin-php/zipball/932c9633c35b390beb2cfdea69a41ea7dbc8d759",
+ "reference": "932c9633c35b390beb2cfdea69a41ea7dbc8d759",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pcre": "*",
+ "php": ">=5.3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.2"
+ },
+ "time": "2015-03-30T15:04:42+00:00",
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-0": {
+ "JSMin\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Stephen Clay",
+ "email": "steve@mrclay.org",
+ "role": "Developer"
+ },
+ {
+ "name": "Ryan Grove",
+ "email": "ryan@wonko.com",
+ "role": "Developer"
+ }
+ ],
+ "description": "Provides a modified port of Douglas Crockford's jsmin.c, which removes unnecessary whitespace from JavaScript files.",
+ "homepage": "https://github.com/mrclay/jsmin-php/",
+ "keywords": [
+ "compress",
+ "jsmin",
+ "minify"
+ ]
+ },
+ {
+ "name": "tubalmartin/cssmin",
+ "version": "v4.1.1",
+ "version_normalized": "4.1.1.0",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port.git",
+ "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/tubalmartin/YUI-CSS-compressor-PHP-port/zipball/3cbf557f4079d83a06f9c3ff9b957c022d7805cf",
+ "reference": "3cbf557f4079d83a06f9c3ff9b957c022d7805cf",
+ "shasum": ""
+ },
+ "require": {
+ "ext-pcre": "*",
+ "php": ">=5.3.2"
+ },
+ "require-dev": {
+ "cogpowered/finediff": "0.3.*",
+ "phpunit/phpunit": "4.8.*"
+ },
+ "time": "2018-01-15T15:26:51+00:00",
+ "bin": [
+ "cssmin"
+ ],
+ "type": "library",
+ "installation-source": "dist",
+ "autoload": {
+ "psr-4": {
+ "tubalmartin\\CssMin\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "BSD-3-Clause"
+ ],
+ "authors": [
+ {
+ "name": "Túbal Martín",
+ "homepage": "http://tubalmartin.me/"
+ }
+ ],
+ "description": "A PHP port of the YUI CSS compressor",
+ "homepage": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port",
+ "keywords": [
+ "compress",
+ "compressor",
+ "css",
+ "cssmin",
+ "minify",
+ "yui"
+ ]
+ }
+]
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/.gitignore b/admin/survey/minify/vendor/container-interop/container-interop/.gitignore
new file mode 100644
index 0000000..a40d6f5
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/.gitignore
@@ -0,0 +1,3 @@
+composer.lock
+composer.phar
+/vendor/
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/LICENSE b/admin/survey/minify/vendor/container-interop/container-interop/LICENSE
new file mode 100644
index 0000000..fdcf65b
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/LICENSE
@@ -0,0 +1,20 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 container-interop
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/README.md b/admin/survey/minify/vendor/container-interop/container-interop/README.md
new file mode 100644
index 0000000..e14a93a
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/README.md
@@ -0,0 +1,148 @@
+# Container Interoperability
+
+[![Latest Stable Version](https://poser.pugx.org/container-interop/container-interop/v/stable.png)](https://packagist.org/packages/container-interop/container-interop)
+[![Total Downloads](https://poser.pugx.org/container-interop/container-interop/downloads.svg)](https://packagist.org/packages/container-interop/container-interop)
+
+## Deprecation warning!
+
+Starting Feb. 13th 2017, container-interop is officially deprecated in favor of [PSR-11](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-11-container.md).
+Container-interop has been the test-bed of PSR-11. From v1.2, container-interop directly extends PSR-11 interfaces.
+Therefore, all containers implementing container-interop are now *de-facto* compatible with PSR-11.
+
+- Projects implementing container-interop interfaces are encouraged to directly implement PSR-11 interfaces instead.
+- Projects consuming container-interop interfaces are very strongly encouraged to directly type-hint on PSR-11 interfaces, in order to be compatible with PSR-11 containers that are not compatible with container-interop.
+
+Regarding the delegate lookup feature, that is present in container-interop and not in PSR-11, the feature is actually a design pattern. It is therefore not deprecated. Documentation regarding this design pattern will be migrated from this repository into a separate website in the future.
+
+## About
+
+*container-interop* tries to identify and standardize features in *container* objects (service locators,
+dependency injection containers, etc.) to achieve interoperability.
+
+Through discussions and trials, we try to create a standard, made of common interfaces but also recommendations.
+
+If PHP projects that provide container implementations begin to adopt these common standards, then PHP
+applications and projects that use containers can depend on the common interfaces instead of specific
+implementations. This facilitates a high-level of interoperability and flexibility that allows users to consume
+*any* container implementation that can be adapted to these interfaces.
+
+The work done in this project is not officially endorsed by the [PHP-FIG](http://www.php-fig.org/), but it is being
+worked on by members of PHP-FIG and other good developers. We adhere to the spirit and ideals of PHP-FIG, and hope
+this project will pave the way for one or more future PSRs.
+
+
+## Installation
+
+You can install this package through Composer:
+
+```json
+composer require container-interop/container-interop
+```
+
+The packages adheres to the [SemVer](http://semver.org/) specification, and there will be full backward compatibility
+between minor versions.
+
+## Standards
+
+### Available
+
+- [`ContainerInterface`](src/Interop/Container/ContainerInterface.php).
+[Description](docs/ContainerInterface.md) [Meta Document](docs/ContainerInterface-meta.md).
+Describes the interface of a container that exposes methods to read its entries.
+- [*Delegate lookup feature*](docs/Delegate-lookup.md).
+[Meta Document](docs/Delegate-lookup-meta.md).
+Describes the ability for a container to delegate the lookup of its dependencies to a third-party container. This
+feature lets several containers work together in a single application.
+
+### Proposed
+
+View open [request for comments](https://github.com/container-interop/container-interop/labels/RFC)
+
+## Compatible projects
+
+### Projects implementing `ContainerInterface`
+
+- [Acclimate](https://github.com/jeremeamia/acclimate-container): Adapters for
+ Aura.Di, Laravel, Nette DI, Pimple, Symfony DI, ZF2 Service manager, ZF2
+ Dependency injection and any container using `ArrayAccess`
+- [Aura.Di](https://github.com/auraphp/Aura.Di)
+- [auryn-container-interop](https://github.com/elazar/auryn-container-interop)
+- [Burlap](https://github.com/codeeverything/burlap)
+- [Chernozem](https://github.com/pyrsmk/Chernozem)
+- [Data Manager](https://github.com/chrismichaels84/data-manager)
+- [Disco](https://github.com/bitexpert/disco)
+- [InDI](https://github.com/idealogica/indi)
+- [League/Container](http://container.thephpleague.com/)
+- [Mouf](http://mouf-php.com)
+- [Njasm Container](https://github.com/njasm/container)
+- [PHP-DI](http://php-di.org)
+- [Picotainer](https://github.com/thecodingmachine/picotainer)
+- [PimpleInterop](https://github.com/moufmouf/pimple-interop)
+- [Pimple3-ContainerInterop](https://github.com/Sam-Burns/pimple3-containerinterop) (using Pimple v3)
+- [SitePoint Container](https://github.com/sitepoint/Container)
+- [Thruster Container](https://github.com/ThrusterIO/container) (PHP7 only)
+- [Ultra-Lite Container](https://github.com/ultra-lite/container)
+- [Unbox](https://github.com/mindplay-dk/unbox)
+- [XStatic](https://github.com/jeremeamia/xstatic)
+- [Zend\ServiceManager](https://github.com/zendframework/zend-servicemanager)
+- [Zit](https://github.com/inxilpro/Zit)
+
+### Projects implementing the *delegate lookup* feature
+
+- [Aura.Di](https://github.com/auraphp/Aura.Di)
+- [Burlap](https://github.com/codeeverything/burlap)
+- [Chernozem](https://github.com/pyrsmk/Chernozem)
+- [InDI](https://github.com/idealogica/indi)
+- [League/Container](http://container.thephpleague.com/)
+- [Mouf](http://mouf-php.com)
+- [Picotainer](https://github.com/thecodingmachine/picotainer)
+- [PHP-DI](http://php-di.org)
+- [PimpleInterop](https://github.com/moufmouf/pimple-interop)
+- [Ultra-Lite Container](https://github.com/ultra-lite/container)
+
+### Middlewares implementing `ContainerInterface`
+
+- [Alias-Container](https://github.com/thecodingmachine/alias-container): add
+ aliases support to any container
+- [Prefixer-Container](https://github.com/thecodingmachine/prefixer-container):
+ dynamically prefix identifiers
+- [Lazy-Container](https://github.com/snapshotpl/lazy-container): lazy services
+
+### Projects using `ContainerInterface`
+
+The list below contains only a sample of all the projects consuming `ContainerInterface`. For a more complete list have a look [here](http://packanalyst.com/class?q=Interop%5CContainer%5CContainerInterface).
+
+| | Downloads |
+| --- | --- |
+| [Adroit](https://github.com/bitexpert/adroit) | ![](https://img.shields.io/packagist/dt/bitexpert/adroit.svg) |
+| [Behat](https://github.com/Behat/Behat/pull/974) | ![](https://img.shields.io/packagist/dt/behat/behat.svg) |
+| [blast-facades](https://github.com/phpthinktank/blast-facades): Minimize complexity and represent dependencies as facades. | ![](https://img.shields.io/packagist/dt/blast/facades.svg) |
+| [interop.silex.di](https://github.com/thecodingmachine/interop.silex.di): an extension to [Silex](http://silex.sensiolabs.org/) that adds support for any *container-interop* compatible container | ![](https://img.shields.io/packagist/dt/mouf/interop.silex.di.svg) |
+| [mindplay/walkway](https://github.com/mindplay-dk/walkway): a modular request router | ![](https://img.shields.io/packagist/dt/mindplay/walkway.svg) |
+| [mindplay/middleman](https://github.com/mindplay-dk/middleman): minimalist PSR-7 middleware dispatcher | ![](https://img.shields.io/packagist/dt/mindplay/middleman.svg) |
+| [PHP-DI/Invoker](https://github.com/PHP-DI/Invoker): extensible and configurable invoker/dispatcher | ![](https://img.shields.io/packagist/dt/php-di/invoker.svg) |
+| [Prophiler](https://github.com/fabfuel/prophiler) | ![](https://img.shields.io/packagist/dt/fabfuel/prophiler.svg) |
+| [Silly](https://github.com/mnapoli/silly): CLI micro-framework | ![](https://img.shields.io/packagist/dt/mnapoli/silly.svg) |
+| [Slim v3](https://github.com/slimphp/Slim) | ![](https://img.shields.io/packagist/dt/slim/slim.svg) |
+| [Splash](http://mouf-php.com/packages/mouf/mvc.splash-common/version/8.0-dev/README.md) | ![](https://img.shields.io/packagist/dt/mouf/mvc.splash-common.svg) |
+| [Woohoo Labs. Harmony](https://github.com/woohoolabs/harmony): a flexible micro-framework | ![](https://img.shields.io/packagist/dt/woohoolabs/harmony.svg) |
+| [zend-expressive](https://github.com/zendframework/zend-expressive) | ![](https://img.shields.io/packagist/dt/zendframework/zend-expressive.svg) |
+
+
+## Workflow
+
+Everyone is welcome to join and contribute.
+
+The general workflow looks like this:
+
+1. Someone opens a discussion (GitHub issue) to suggest an interface
+1. Feedback is gathered
+1. The interface is added to a development branch
+1. We release alpha versions so that the interface can be experimented with
+1. Discussions and edits ensue until the interface is deemed stable by a general consensus
+1. A new minor version of the package is released
+
+We try to not break BC by creating new interfaces instead of editing existing ones.
+
+While we currently work on interfaces, we are open to anything that might help towards interoperability, may that
+be code, best practices, etc.
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/composer.json b/admin/survey/minify/vendor/container-interop/container-interop/composer.json
new file mode 100644
index 0000000..a136833
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/composer.json
@@ -0,0 +1,15 @@
+{
+ "name": "container-interop/container-interop",
+ "type": "library",
+ "description": "Promoting the interoperability of container objects (DIC, SL, etc.)",
+ "homepage": "https://github.com/container-interop/container-interop",
+ "license": "MIT",
+ "autoload": {
+ "psr-4": {
+ "Interop\\Container\\": "src/Interop/Container/"
+ }
+ },
+ "require": {
+ "psr/container": "^1.0"
+ }
+}
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/docs/ContainerInterface-meta.md b/admin/survey/minify/vendor/container-interop/container-interop/docs/ContainerInterface-meta.md
new file mode 100644
index 0000000..7ed5811
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/docs/ContainerInterface-meta.md
@@ -0,0 +1,114 @@
+# ContainerInterface Meta Document
+
+## Introduction
+
+This document describes the process and discussions that lead to the `ContainerInterface`.
+Its goal is to explain the reasons behind each decision.
+
+## Goal
+
+The goal set by `ContainerInterface` is to standardize how frameworks and libraries make use of a
+container to obtain objects and parameters.
+
+By standardizing such a behavior, frameworks and libraries using the `ContainerInterface`
+could work with any compatible container.
+That would allow end users to choose their own container based on their own preferences.
+
+It is important to distinguish the two usages of a container:
+
+- configuring entries
+- fetching entries
+
+Most of the time, those two sides are not used by the same party.
+While it is often end users who tend to configure entries, it is generally the framework that fetch
+entries to build the application.
+
+This is why this interface focuses only on how entries can be fetched from a container.
+
+## Interface name
+
+The interface name has been thoroughly discussed and was decided by a vote.
+
+The list of options considered with their respective votes are:
+
+- `ContainerInterface`: +8
+- `ProviderInterface`: +2
+- `LocatorInterface`: 0
+- `ReadableContainerInterface`: -5
+- `ServiceLocatorInterface`: -6
+- `ObjectFactory`: -6
+- `ObjectStore`: -8
+- `ConsumerInterface`: -9
+
+[Full results of the vote](https://github.com/container-interop/container-interop/wiki/%231-interface-name:-Vote)
+
+The complete discussion can be read in [the issue #1](https://github.com/container-interop/container-interop/issues/1).
+
+## Interface methods
+
+The choice of which methods the interface would contain was made after a statistical analysis of existing containers.
+The results of this analysis are available [in this document](https://gist.github.com/mnapoli/6159681).
+
+The summary of the analysis showed that:
+
+- all containers offer a method to get an entry by its id
+- a large majority name such method `get()`
+- for all containers, the `get()` method has 1 mandatory parameter of type string
+- some containers have an optional additional argument for `get()`, but it doesn't have the same purpose between containers
+- a large majority of the containers offer a method to test if it can return an entry by its id
+- a majority name such method `has()`
+- for all containers offering `has()`, the method has exactly 1 parameter of type string
+- a large majority of the containers throw an exception rather than returning null when an entry is not found in `get()`
+- a large majority of the containers don't implement `ArrayAccess`
+
+The question of whether to include methods to define entries has been discussed in
+[issue #1](https://github.com/container-interop/container-interop/issues/1).
+It has been judged that such methods do not belong in the interface described here because it is out of its scope
+(see the "Goal" section).
+
+As a result, the `ContainerInterface` contains two methods:
+
+- `get()`, returning anything, with one mandatory string parameter. Should throw an exception if the entry is not found.
+- `has()`, returning a boolean, with one mandatory string parameter.
+
+### Number of parameters in `get()` method
+
+While `ContainerInterface` only defines one mandatory parameter in `get()`, it is not incompatible with
+existing containers that have additional optional parameters. PHP allows an implementation to offer more parameters
+as long as they are optional, because the implementation *does* satisfy the interface.
+
+This issue has been discussed in [issue #6](https://github.com/container-interop/container-interop/issues/6).
+
+### Type of the `$id` parameter
+
+The type of the `$id` parameter in `get()` and `has()` has been discussed in
+[issue #6](https://github.com/container-interop/container-interop/issues/6).
+While `string` is used in all the containers that were analyzed, it was suggested that allowing
+anything (such as objects) could allow containers to offer a more advanced query API.
+
+An example given was to use the container as an object builder. The `$id` parameter would then be an
+object that would describe how to create an instance.
+
+The conclusion of the discussion was that this was beyond the scope of getting entries from a container without
+knowing how the container provided them, and it was more fit for a factory.
+
+## Contributors
+
+Are listed here all people that contributed in the discussions or votes, by alphabetical order:
+
+- [Amy Stephen](https://github.com/AmyStephen)
+- [David Négrier](https://github.com/moufmouf)
+- [Don Gilbert](https://github.com/dongilbert)
+- [Jason Judge](https://github.com/judgej)
+- [Jeremy Lindblom](https://github.com/jeremeamia)
+- [Marco Pivetta](https://github.com/Ocramius)
+- [Matthieu Napoli](https://github.com/mnapoli)
+- [Paul M. Jones](https://github.com/pmjones)
+- [Stephan Hochdörfer](https://github.com/shochdoerfer)
+- [Taylor Otwell](https://github.com/taylorotwell)
+
+## Relevant links
+
+- [`ContainerInterface.php`](https://github.com/container-interop/container-interop/blob/master/src/Interop/Container/ContainerInterface.php)
+- [List of all issues](https://github.com/container-interop/container-interop/issues?labels=ContainerInterface&milestone=&page=1&state=closed)
+- [Vote for the interface name](https://github.com/container-interop/container-interop/wiki/%231-interface-name:-Vote)
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/docs/ContainerInterface.md b/admin/survey/minify/vendor/container-interop/container-interop/docs/ContainerInterface.md
new file mode 100644
index 0000000..7b9054b
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/docs/ContainerInterface.md
@@ -0,0 +1,158 @@
+Container interface
+===================
+
+This document describes a common interface for dependency injection containers.
+
+The goal set by `ContainerInterface` is to standardize how frameworks and libraries make use of a
+container to obtain objects and parameters (called *entries* in the rest of this document).
+
+The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
+"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
+interpreted as described in [RFC 2119][].
+
+The word `implementor` in this document is to be interpreted as someone
+implementing the `ContainerInterface` in a dependency injection-related library or framework.
+Users of dependency injections containers (DIC) are referred to as `user`.
+
+[RFC 2119]: http://tools.ietf.org/html/rfc2119
+
+1. Specification
+-----------------
+
+### 1.1 Basics
+
+- The `Interop\Container\ContainerInterface` exposes two methods : `get` and `has`.
+
+- `get` takes one mandatory parameter: an entry identifier. It MUST be a string.
+ A call to `get` can return anything (a *mixed* value), or throws an exception if the identifier
+ is not known to the container. Two successive calls to `get` with the same
+ identifier SHOULD return the same value. However, depending on the `implementor`
+ design and/or `user` configuration, different values might be returned, so
+ `user` SHOULD NOT rely on getting the same value on 2 successive calls.
+ While `ContainerInterface` only defines one mandatory parameter in `get()`, implementations
+ MAY accept additional optional parameters.
+
+- `has` takes one unique parameter: an entry identifier. It MUST return `true`
+ if an entry identifier is known to the container and `false` if it is not.
+ `has($id)` returning true does not mean that `get($id)` will not throw an exception.
+ It does however mean that `get($id)` will not throw a `NotFoundException`.
+
+### 1.2 Exceptions
+
+Exceptions directly thrown by the container MUST implement the
+[`Interop\Container\Exception\ContainerException`](../src/Interop/Container/Exception/ContainerException.php).
+
+A call to the `get` method with a non-existing id SHOULD throw a
+[`Interop\Container\Exception\NotFoundException`](../src/Interop/Container/Exception/NotFoundException.php).
+
+### 1.3 Additional features
+
+This section describes additional features that MAY be added to a container. Containers are not
+required to implement these features to respect the ContainerInterface.
+
+#### 1.3.1 Delegate lookup feature
+
+The goal of the *delegate lookup* feature is to allow several containers to share entries.
+Containers implementing this feature can perform dependency lookups in other containers.
+
+Containers implementing this feature will offer a greater lever of interoperability
+with other containers. Implementation of this feature is therefore RECOMMENDED.
+
+A container implementing this feature:
+
+- MUST implement the `ContainerInterface`
+- MUST provide a way to register a delegate container (using a constructor parameter, or a setter,
+ or any possible way). The delegate container MUST implement the `ContainerInterface`.
+
+When a container is configured to use a delegate container for dependencies:
+
+- Calls to the `get` method should only return an entry if the entry is part of the container.
+ If the entry is not part of the container, an exception should be thrown
+ (as requested by the `ContainerInterface`).
+- Calls to the `has` method should only return `true` if the entry is part of the container.
+ If the entry is not part of the container, `false` should be returned.
+- If the fetched entry has dependencies, **instead** of performing
+ the dependency lookup in the container, the lookup is performed on the *delegate container*.
+
+Important! By default, the lookup SHOULD be performed on the delegate container **only**, not on the container itself.
+
+It is however allowed for containers to provide exception cases for special entries, and a way to lookup
+into the same container (or another container) instead of the delegate container.
+
+2. Package
+----------
+
+The interfaces and classes described as well as relevant exception are provided as part of the
+[container-interop/container-interop](https://packagist.org/packages/container-interop/container-interop) package.
+
+3. `Interop\Container\ContainerInterface`
+-----------------------------------------
+
+```php
+<?php
+namespace Interop\Container;
+
+use Interop\Container\Exception\ContainerException;
+use Interop\Container\Exception\NotFoundException;
+
+/**
+ * Describes the interface of a container that exposes methods to read its entries.
+ */
+interface ContainerInterface
+{
+ /**
+ * Finds an entry of the container by its identifier and returns it.
+ *
+ * @param string $id Identifier of the entry to look for.
+ *
+ * @throws NotFoundException No entry was found for this identifier.
+ * @throws ContainerException Error while retrieving the entry.
+ *
+ * @return mixed Entry.
+ */
+ public function get($id);
+
+ /**
+ * Returns true if the container can return an entry for the given identifier.
+ * Returns false otherwise.
+ *
+ * `has($id)` returning true does not mean that `get($id)` will not throw an exception.
+ * It does however mean that `get($id)` will not throw a `NotFoundException`.
+ *
+ * @param string $id Identifier of the entry to look for.
+ *
+ * @return boolean
+ */
+ public function has($id);
+}
+```
+
+4. `Interop\Container\Exception\ContainerException`
+---------------------------------------------------
+
+```php
+<?php
+namespace Interop\Container\Exception;
+
+/**
+ * Base interface representing a generic exception in a container.
+ */
+interface ContainerException
+{
+}
+```
+
+5. `Interop\Container\Exception\NotFoundException`
+---------------------------------------------------
+
+```php
+<?php
+namespace Interop\Container\Exception;
+
+/**
+ * No entry was found in the container.
+ */
+interface NotFoundException extends ContainerException
+{
+}
+```
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/docs/Delegate-lookup-meta.md b/admin/survey/minify/vendor/container-interop/container-interop/docs/Delegate-lookup-meta.md
new file mode 100644
index 0000000..ce5efa7
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/docs/Delegate-lookup-meta.md
@@ -0,0 +1,259 @@
+Delegate lookup feature Meta Document
+=====================================
+
+1. Summary
+----------
+
+This document describes the *delegate lookup feature*.
+Containers are not required to implement this feature to respect the `ContainerInterface`.
+However, containers implementing this feature will offer a greater lever of interoperability
+with other containers, allowing multiple containers to share entries in the same application.
+Implementation of this feature is therefore recommanded.
+
+2. Why Bother?
+--------------
+
+The [`ContainerInterface`](../src/Interop/Container/ContainerInterface.php) ([meta doc](ContainerInterface.md))
+standardizes how frameworks and libraries make use of a container to obtain objects and parameters.
+
+By standardizing such a behavior, frameworks and libraries relying on the `ContainerInterface`
+could work with any compatible container.
+That would allow end users to choose their own container based on their own preferences.
+
+The `ContainerInterface` is also enough if we want to have several containers side-by-side in the same
+application. For instance, this is what the [CompositeContainer](https://github.com/jeremeamia/acclimate-container/blob/master/src/CompositeContainer.php)
+class of [Acclimate](https://github.com/jeremeamia/acclimate-container) is designed for:
+
+![Side by side containers](images/side_by_side_containers.png)
+
+However, an instance in container 1 cannot reference an instance in container 2.
+
+It would be better if an instance of container 1 could reference an instance in container 2,
+and the opposite should be true.
+
+![Interoperating containers](images/interoperating_containers.png)
+
+In the sample above, entry 1 in container 1 is referencing entry 3 in container 2.
+
+3. Scope
+--------
+
+### 3.1 Goals
+
+The goal of the *delegate lookup* feature is to allow several containers to share entries.
+
+4. Approaches
+-------------
+
+### 4.1 Chosen Approach
+
+Containers implementing this feature can perform dependency lookups in other containers.
+
+A container implementing this feature:
+
+- must implement the `ContainerInterface`
+- must provide a way to register a *delegate container* (using a constructor parameter, or a setter, or any
+possible way). The *delegate container* must implement the `ContainerInterface`.
+
+When a *delegate container* is configured on a container:
+
+- Calls to the `get` method should only return an entry if the entry is part of the container.
+If the entry is not part of the container, an exception should be thrown (as required in the `ContainerInterface`).
+- Calls to the `has` method should only return *true* if the entry is part of the container.
+If the entry is not part of the container, *false* should be returned.
+ - Finally, the important part: if the entry we are fetching has dependencies,
+**instead** of perfoming the dependency lookup in the container, the lookup is performed on the *delegate container*.
+
+Important! By default, the lookup should be performed on the delegate container **only**, not on the container itself.
+
+It is however allowed for containers to provide exception cases for special entries, and a way to lookup into
+the same container (or another container) instead of the delegate container.
+
+### 4.2 Typical usage
+
+The *delegate container* will usually be a composite container. A composite container is a container that
+contains several other containers. When performing a lookup on a composite container, the inner containers are
+queried until one container returns an entry.
+An inner container implementing the *delegate lookup feature* will return entries it contains, but if these
+entries have dependencies, the dependencies lookup calls will be performed on the composite container, giving
+a chance to all containers to answer.
+
+Interestingly enough, the order in which containers are added in the composite container matters. Indeed,
+the first containers to be added in the composite container can "override" the entries of containers with
+lower priority.
+
+![Containers priority](images/priority.png)
+
+In the example above, "container 2" contains a controller "myController" and the controller is referencing an
+"entityManager" entry. "Container 1" contains also an entry named "entityManager".
+Without the *delegate lookup* feature, when requesting the "myController" instance to container 2, it would take
+in charge the instanciation of both entries.
+
+However, using the *delegate lookup* feature, here is what happens when we ask the composite container for the
+"myController" instance:
+
+- The composite container asks container 1 if if contains the "myController" instance. The answer is no.
+- The composite container asks container 2 if if contains the "myController" instance. The answer is yes.
+- The composite container performs a `get` call on container 2 for the "myController" instance.
+- Container 2 sees that "myController" has a dependency on "entityManager".
+- Container 2 delegates the lookup of "entityManager" to the composite container.
+- The composite container asks container 1 if if contains the "entityManager" instance. The answer is yes.
+- The composite container performs a `get` call on container 1 for the "entityManager" instance.
+
+In the end, we get a controller instanciated by container 2 that references an entityManager instanciated
+by container 1.
+
+### 4.3 Alternative: the fallback strategy
+
+The first proposed approach we tried was to perform all the lookups in the "local" container,
+and if a lookup fails in the container, to use the delegate container. In this scenario, the
+delegate container is used in "fallback" mode.
+
+This strategy has been described in @moufmouf blog post: http://mouf-php.com/container-interop-whats-next (solution 1).
+It was also discussed [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-33570697) and
+[here](https://github.com/container-interop/container-interop/pull/20#issuecomment-56599631).
+
+Problems with this strategy:
+
+- Heavy problem regarding infinite loops
+- Unable to overload a container entry with the delegate container entry
+
+### 4.4 Alternative: force implementing an interface
+
+The first proposed approach was to develop a `ParentAwareContainerInterface` interface.
+It was proposed here: https://github.com/container-interop/container-interop/pull/8
+
+The interface would have had the behaviour of the delegate lookup feature but would have forced the addition of
+a `setParentContainter` method:
+
+```php
+interface ParentAwareContainerInterface extends ReadableContainerInterface {
+ /**
+ * Sets the parent container associated to that container. This container will call
+ * the parent container to fetch dependencies.
+ *
+ * @param ContainerInterface $container
+ */
+ public function setParentContainer(ContainerInterface $container);
+}
+```
+
+The interface idea was first questioned by @Ocramius [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-51721777).
+@Ocramius expressed the idea that an interface should not contain setters, otherwise, it is forcing implementation
+details on the class implementing the interface.
+Then @mnapoli made a proposal for a "convention" [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-51841079),
+this idea was further discussed until all participants in the discussion agreed to remove the interface idea
+and replace it with a "standard" feature.
+
+**Pros:**
+
+If we had had an interface, we could have delegated the registration of the delegate/composite container to the
+the delegate/composite container itself.
+For instance:
+
+```php
+$containerA = new ContainerA();
+$containerB = new ContainerB();
+
+$compositeContainer = new CompositeContainer([$containerA, $containerB]);
+
+// The call to 'setParentContainer' is delegated to the CompositeContainer
+// It is not the responsibility of the user anymore.
+class CompositeContainer {
+ ...
+
+ public function __construct($containers) {
+ foreach ($containers as $container) {
+ if ($container instanceof ParentAwareContainerInterface) {
+ $container->setParentContainer($this);
+ }
+ }
+ ...
+ }
+}
+
+```
+
+**Cons:**
+
+Cons have been extensively discussed [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-51721777).
+Basically, forcing a setter into an interface is a bad idea. Setters are similar to constructor arguments,
+and it's a bad idea to standardize a constructor: how the delegate container is configured into a container is an implementation detail. This outweights the benefits of the interface.
+
+### 4.4 Alternative: no exception case for delegate lookups
+
+Originally, the proposed wording for delegate lookup calls was:
+
+> Important! The lookup MUST be performed on the delegate container **only**, not on the container itself.
+
+This was later replaced by:
+
+> Important! By default, the lookup SHOULD be performed on the delegate container **only**, not on the container itself.
+>
+> It is however allowed for containers to provide exception cases for special entries, and a way to lookup
+> into the same container (or another container) instead of the delegate container.
+
+Exception cases have been allowed to avoid breaking dependencies with some services that must be provided
+by the container (on @njasm proposal). This was proposed here: https://github.com/container-interop/container-interop/pull/20#issuecomment-56597235
+
+### 4.5 Alternative: having one of the containers act as the composite container
+
+In real-life scenarios, we usually have a big framework (Symfony 2, Zend Framework 2, etc...) and we want to
+add another DI container to this container. Most of the time, the "big" framework will be responsible for
+creating the controller's instances, using it's own DI container. Until *container-interop* is fully adopted,
+the "big" framework will not be aware of the existence of a composite container that it should use instead
+of its own container.
+
+For this real-life use cases, @mnapoli and @moufmouf proposed to extend the "big" framework's DI container
+to make it act as a composite container.
+
+This has been discussed [here](https://github.com/container-interop/container-interop/pull/8#issuecomment-40367194)
+and [here](http://mouf-php.com/container-interop-whats-next#solution4).
+
+This was implemented in Symfony 2 using:
+
+- [interop.symfony.di](https://github.com/thecodingmachine/interop.symfony.di/tree/v0.1.0)
+- [framework interop](https://github.com/mnapoli/framework-interop/)
+
+This was implemented in Silex using:
+
+- [interop.silex.di](https://github.com/thecodingmachine/interop.silex.di)
+
+Having a container act as the composite container is not part of the delegate lookup standard because it is
+simply a temporary design pattern used to make existing frameworks that do not support yet ContainerInterop
+play nice with other DI containers.
+
+
+5. Implementations
+------------------
+
+The following projects already implement the delegate lookup feature:
+
+- [Mouf](http://mouf-php.com), through the [`setDelegateLookupContainer` method](https://github.com/thecodingmachine/mouf/blob/2.0/src/Mouf/MoufManager.php#L2120)
+- [PHP-DI](http://php-di.org/), through the [`$wrapperContainer` parameter of the constructor](https://github.com/mnapoli/PHP-DI/blob/master/src/DI/Container.php#L72)
+- [pimple-interop](https://github.com/moufmouf/pimple-interop), through the [`$container` parameter of the constructor](https://github.com/moufmouf/pimple-interop/blob/master/src/Interop/Container/Pimple/PimpleInterop.php#L62)
+
+6. People
+---------
+
+Are listed here all people that contributed in the discussions, by alphabetical order:
+
+- [Alexandru Pătrănescu](https://github.com/drealecs)
+- [Ben Peachey](https://github.com/potherca)
+- [David Négrier](https://github.com/moufmouf)
+- [Jeremy Lindblom](https://github.com/jeremeamia)
+- [Marco Pivetta](https://github.com/Ocramius)
+- [Matthieu Napoli](https://github.com/mnapoli)
+- [Nelson J Morais](https://github.com/njasm)
+- [Phil Sturgeon](https://github.com/philsturgeon)
+- [Stephan Hochdörfer](https://github.com/shochdoerfer)
+
+7. Relevant Links
+-----------------
+
+_**Note:** Order descending chronologically._
+
+- [Pull request on the delegate lookup feature](https://github.com/container-interop/container-interop/pull/20)
+- [Pull request on the interface idea](https://github.com/container-interop/container-interop/pull/8)
+- [Original article exposing the delegate lookup idea along many others](http://mouf-php.com/container-interop-whats-next)
+
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/docs/Delegate-lookup.md b/admin/survey/minify/vendor/container-interop/container-interop/docs/Delegate-lookup.md
new file mode 100644
index 0000000..96738a9
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/docs/Delegate-lookup.md
@@ -0,0 +1,60 @@
+Delegate lookup feature
+=======================
+
+This document describes a standard for dependency injection containers.
+
+The goal set by the *delegate lookup* feature is to allow several containers to share entries.
+Containers implementing this feature can perform dependency lookups in other containers.
+
+Containers implementing this feature will offer a greater lever of interoperability
+with other containers. Implementation of this feature is therefore RECOMMENDED.
+
+The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD",
+"SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be
+interpreted as described in [RFC 2119][].
+
+The word `implementor` in this document is to be interpreted as someone
+implementing the delegate lookup feature in a dependency injection-related library or framework.
+Users of dependency injections containers (DIC) are referred to as `user`.
+
+[RFC 2119]: http://tools.ietf.org/html/rfc2119
+
+1. Vocabulary
+-------------
+
+In a dependency injection container, the container is used to fetch entries.
+Entries can have dependencies on other entries. Usually, these other entries are fetched by the container.
+
+The *delegate lookup* feature is the ability for a container to fetch dependencies in
+another container. In the rest of the document, the word "container" will reference the container
+implemented by the implementor. The word "delegate container" will reference the container we are
+fetching the dependencies from.
+
+2. Specification
+----------------
+
+A container implementing the *delegate lookup* feature:
+
+- MUST implement the [`ContainerInterface`](ContainerInterface.md)
+- MUST provide a way to register a delegate container (using a constructor parameter, or a setter,
+ or any possible way). The delegate container MUST implement the [`ContainerInterface`](ContainerInterface.md).
+
+When a container is configured to use a delegate container for dependencies:
+
+- Calls to the `get` method should only return an entry if the entry is part of the container.
+ If the entry is not part of the container, an exception should be thrown
+ (as requested by the [`ContainerInterface`](ContainerInterface.md)).
+- Calls to the `has` method should only return `true` if the entry is part of the container.
+ If the entry is not part of the container, `false` should be returned.
+- If the fetched entry has dependencies, **instead** of performing
+ the dependency lookup in the container, the lookup is performed on the *delegate container*.
+
+Important: By default, the dependency lookups SHOULD be performed on the delegate container **only**, not on the container itself.
+
+It is however allowed for containers to provide exception cases for special entries, and a way to lookup
+into the same container (or another container) instead of the delegate container.
+
+3. Package / Interface
+----------------------
+
+This feature is not tied to any code, interface or package.
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/docs/images/interoperating_containers.png b/admin/survey/minify/vendor/container-interop/container-interop/docs/images/interoperating_containers.png
new file mode 100644
index 0000000..1d3fdd0
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/docs/images/interoperating_containers.png
Binary files differ
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/docs/images/priority.png b/admin/survey/minify/vendor/container-interop/container-interop/docs/images/priority.png
new file mode 100644
index 0000000..d02cb7d
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/docs/images/priority.png
Binary files differ
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/docs/images/side_by_side_containers.png b/admin/survey/minify/vendor/container-interop/container-interop/docs/images/side_by_side_containers.png
new file mode 100644
index 0000000..87884bc
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/docs/images/side_by_side_containers.png
Binary files differ
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/src/Interop/Container/ContainerInterface.php b/admin/survey/minify/vendor/container-interop/container-interop/src/Interop/Container/ContainerInterface.php
new file mode 100644
index 0000000..7b7a101
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/src/Interop/Container/ContainerInterface.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
+ */
+
+namespace Interop\Container;
+
+use Psr\Container\ContainerInterface as PsrContainerInterface;
+
+/**
+ * Describes the interface of a container that exposes methods to read its entries.
+ */
+interface ContainerInterface extends PsrContainerInterface
+{
+}
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/src/Interop/Container/Exception/ContainerException.php b/admin/survey/minify/vendor/container-interop/container-interop/src/Interop/Container/Exception/ContainerException.php
new file mode 100644
index 0000000..04a4f18
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/src/Interop/Container/Exception/ContainerException.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
+ */
+
+namespace Interop\Container\Exception;
+
+use Psr\Container\ContainerExceptionInterface as PsrContainerException;
+
+/**
+ * Base interface representing a generic exception in a container.
+ */
+interface ContainerException extends PsrContainerException
+{
+}
diff --git a/admin/survey/minify/vendor/container-interop/container-interop/src/Interop/Container/Exception/NotFoundException.php b/admin/survey/minify/vendor/container-interop/container-interop/src/Interop/Container/Exception/NotFoundException.php
new file mode 100644
index 0000000..09d7b5c
--- /dev/null
+++ b/admin/survey/minify/vendor/container-interop/container-interop/src/Interop/Container/Exception/NotFoundException.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
+ */
+
+namespace Interop\Container\Exception;
+
+use Psr\Container\NotFoundExceptionInterface as PsrNotFoundException;
+
+/**
+ * No entry was found in the container.
+ */
+interface NotFoundException extends ContainerException, PsrNotFoundException
+{
+}
diff --git a/admin/survey/minify/vendor/intervention/httpauth/.gitignore b/admin/survey/minify/vendor/intervention/httpauth/.gitignore
new file mode 100644
index 0000000..750450c
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/.gitignore
@@ -0,0 +1,3 @@
+.DS_Store
+composer.lock
+vendor/ \ No newline at end of file
diff --git a/admin/survey/minify/vendor/intervention/httpauth/.travis.yml b/admin/survey/minify/vendor/intervention/httpauth/.travis.yml
new file mode 100644
index 0000000..0edb59c
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/.travis.yml
@@ -0,0 +1,11 @@
+language: php
+
+php:
+ - 5.3
+ - 5.4
+
+before_script:
+ - curl -s http://getcomposer.org/installer | php
+ - php composer.phar install --dev
+
+script: phpunit \ No newline at end of file
diff --git a/admin/survey/minify/vendor/intervention/httpauth/LICENSE b/admin/survey/minify/vendor/intervention/httpauth/LICENSE
new file mode 100644
index 0000000..6c8e43b
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/LICENSE
@@ -0,0 +1,9 @@
+The MIT License (MIT)
+
+Copyright (c) 2013 Oliver Vogel
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file
diff --git a/admin/survey/minify/vendor/intervention/httpauth/README.md b/admin/survey/minify/vendor/intervention/httpauth/README.md
new file mode 100644
index 0000000..f85b09b
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/README.md
@@ -0,0 +1,102 @@
+# Intervention Httpauth Class
+
+Library to manage HTTP authentication with PHP. Includes ServiceProviders for easy Laravel integration.
+
+## Installation
+
+The easiest way to install this package is via [Composer](https://getcomposer.org/).
+
+Run Composer to install the package.
+
+ $ composer require intervention/httpauth
+
+The Httpauth class is built to work with the Laravel Framework. The integration is done in seconds.
+
+Open your Laravel config file `config/app.php` and add the following lines.
+
+In the `$providers` array add the service providers for this package.
+
+ 'providers' => array(
+
+ ...
+
+ Intervention\Httpauth\HttpauthServiceProvider::class
+
+ ),
+
+
+Add the facade of this package to the `$aliases` array.
+
+ 'aliases' => array(
+
+ ...
+
+ 'Httpauth' => Intervention\Httpauth\Facades\Httpauth::class
+
+ ),
+
+
+## Usage
+
+* Httpauth::__construct - Create new instance of Httpauth class
+* Httpauth::make - Creates new instance of Httpaccess with given config parameters
+* Httpauth::secure - Denies access for not-authenticated users
+
+### Configuration
+
+By default the authentication settings are fetched from `config/httpauth.php`. Please make sure to set your own options.
+
+If you are using Laravel 4, you can extract a configuration file to your app by running the following command:
+
+ $ php artisan config:publish intervention/httpauth
+
+After you published the configuration file for the package you can edit the local configuration file `app/config/packages/intervention/httpauth/httpauth.php`.
+
+Here's a short explanation of the configuration directives.
+
+**type** _string_
+
+ Set the authentication type. Choose between `basic` and `digest` for a more secure type.
+
+**realm** _string_
+
+ The name of the secure resource.
+
+**username** _string_
+
+ The name the user has to enter to login
+
+**password** _string_
+
+ Login password
+
+### Code example
+
+```php
+// create a new instance of Httpauth and call secure method
+$auth = new Intervention\Httpauth\Httpauth;
+$auth->secure();
+
+// You can change the user authentication settings in the config files
+// or change it at runtime like this
+$config = array('username' => 'admin', 'password' => '1234');
+$auth = new Intervention\Httpauth\Httpauth($config);
+$auth->secure();
+```
+
+
+### Code example (Laravel)
+
+```php
+// the most simple way to secure a url is to call the secure method from a route
+Httpauth::secure();
+
+// You can change the user authentication settings in the config files
+// or change it at runtime like this
+$config = array('username' => 'admin', 'password' => '1234');
+Httpauth::make($config)->secure();
+```
+
+## License
+
+Intervention Httpauth Class is licensed under the [MIT License](http://opensource.org/licenses/MIT).
diff --git a/admin/survey/minify/vendor/intervention/httpauth/composer.json b/admin/survey/minify/vendor/intervention/httpauth/composer.json
new file mode 100644
index 0000000..1473284
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/composer.json
@@ -0,0 +1,33 @@
+{
+ "name": "intervention/httpauth",
+ "description": "HTTP authentication (Basic & Digest) including ServiceProviders for easy Laravel integration",
+ "homepage": "https://github.com/Intervention/httpauth",
+ "keywords": ["authentication", "http", "laravel"],
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Oliver Vogel",
+ "email": "oliver@olivervogel.com",
+ "homepage": "http://olivervogel.com/"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Intervention\\Httpauth\\": "src/Intervention/Httpauth"
+ }
+ },
+ "extra": {
+ "laravel": {
+ "providers": [
+ "Intervention\\Httpauth\\HttpauthServiceProvider"
+ ],
+ "aliases": {
+ "Httpauth": "Intervention\\Httpauth\\Facades\\Httpauth"
+ }
+ }
+ },
+ "minimum-stability": "stable"
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/intervention/httpauth/phpunit.xml b/admin/survey/minify/vendor/intervention/httpauth/phpunit.xml
new file mode 100644
index 0000000..71adedc
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/phpunit.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<phpunit backupGlobals="false"
+ backupStaticAttributes="false"
+ bootstrap="vendor/autoload.php"
+ colors="true"
+ convertErrorsToExceptions="true"
+ convertNoticesToExceptions="true"
+ convertWarningsToExceptions="true"
+ processIsolation="false"
+ stopOnFailure="false"
+ syntaxCheck="false"
+>
+ <testsuites>
+ <testsuite name="Package Test Suite">
+ <directory suffix=".php">./tests/</directory>
+ </testsuite>
+ </testsuites>
+</phpunit>
diff --git a/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/BasicUser.php b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/BasicUser.php
new file mode 100644
index 0000000..5d1112b
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/BasicUser.php
@@ -0,0 +1,63 @@
+<?php
+
+namespace Intervention\Httpauth;
+
+class BasicUser implements UserInterface
+{
+ /**
+ * The loginname of the user
+ *
+ * @var string
+ */
+ private $name;
+
+ /**
+ * The password of the user
+ *
+ * @var password
+ */
+ private $password;
+
+ /**
+ * Creates a new instance
+ */
+ public function __construct()
+ {
+ $this->parse();
+ }
+
+ /**
+ * Checks for valid username & password
+ *
+ * @param string $name
+ * @param string $password
+ * @return boolean
+ */
+ public function isValid($name, $password, $realm = null)
+ {
+ return ($name == $this->name) && ($password == $this->password);
+ }
+
+ /**
+ * Parses the User Information from server variables
+
+ * @return void
+ */
+ public function parse()
+ {
+ if(array_key_exists('PHP_AUTH_USER', $_SERVER)) { // mod_php
+
+ $this->name = $_SERVER['PHP_AUTH_USER'];
+ $this->password = array_key_exists('PHP_AUTH_PW', $_SERVER) ? $_SERVER['PHP_AUTH_PW'] : null;
+
+ } elseif(array_key_exists('HTTP_AUTHENTICATION', $_SERVER)) { // most other servers
+
+ if(strpos(strtolower($_SERVER['HTTP_AUTHENTICATION']), 'basic') === 0) {
+
+ $userdata = explode(':', base64_decode(substr($_SERVER['HTTP_AUTHENTICATION'], 6)));
+ list($this->name, $this->password) = $userdata;
+
+ }
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/DigestUser.php b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/DigestUser.php
new file mode 100644
index 0000000..b274904
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/DigestUser.php
@@ -0,0 +1,134 @@
+<?php
+
+namespace Intervention\Httpauth;
+
+class DigestUser implements UserInterface
+{
+ /**
+ * Nonce to discourage cryptanalysis
+ *
+ * @var string
+ */
+ private $nonce;
+
+ /**
+ * nc
+ * @var string
+ */
+ private $nc;
+
+ /**
+ * cnonce
+ * @var string
+ */
+ private $cnonce;
+
+ /**
+ * quality of protection
+ *
+ * @var string
+ */
+ private $qop;
+
+ /**
+ * Name of user
+ *
+ * @var string
+ */
+ private $username;
+
+ /**
+ * Requested uri
+ *
+ * @var string
+ */
+ private $uri;
+
+ /**
+ * Response
+ *
+ * @var string
+ */
+ private $response;
+
+ /**
+ * Creates a new instance
+ */
+ public function __construct()
+ {
+ $this->parse();
+ }
+
+ /**
+ * Checks for valid username & password
+ *
+ * @param string $name
+ * @param string $password
+ * @return boolean
+ */
+ public function isValid($name, $password, $realm)
+ {
+ $request_method = isset($_SERVER['REQUEST_METHOD']) ? $_SERVER['REQUEST_METHOD'] : 'GET';
+ $u1 = md5(sprintf('%s:%s:%s', $this->username, $realm, $password));
+ $u2 = md5(sprintf('%s:%s', $request_method, $this->uri));
+ $response = md5(sprintf('%s:%s:%s:%s:%s:%s', $u1, $this->nonce, $this->nc, $this->cnonce, $this->qop, $u2));
+
+ return ($response == $this->response) && ($name == $this->username);
+ }
+
+ /**
+ * Parses the User Information from server variables
+
+ * @return void
+ */
+ public function parse()
+ {
+ $digest = $this->getDigest();
+ $user = array();
+ $required = array('nonce' => 1, 'nc' => 1, 'cnonce' => 1, 'qop' => 1, 'username' => 1, 'uri' => 1, 'response' => 1);
+
+ preg_match_all('@(\w+)=(?:(?:")([^"]+)"|([^\s,$]+))@', $digest, $matches, PREG_SET_ORDER);
+
+ if (is_array($matches)) {
+ foreach ($matches as $m) {
+ $key = $m[1];
+ $user[$key] = $m[2] ? $m[2] : $m[3];
+ unset($required[$key]);
+ }
+
+ if (count($required) == 0) {
+ $this->nonce = $user['nonce'];
+ $this->nc = $user['nc'];
+ $this->cnonce = $user['cnonce'];
+ $this->qop = $user['qop'];
+ $this->username = $user['username'];
+ $this->uri = $user['uri'];
+ $this->response = $user['response'];
+ }
+ }
+ }
+
+ /**
+ * Fetch digest data from environment information
+ *
+ * @return string
+ */
+ public function getDigest()
+ {
+ $digest = null;
+
+ if (isset($_SERVER['PHP_AUTH_DIGEST'])) {
+
+ $digest = $_SERVER['PHP_AUTH_DIGEST'];
+
+ } elseif (isset($_SERVER['HTTP_AUTHORIZATION'])) {
+
+ if (strpos(strtolower($_SERVER['HTTP_AUTHORIZATION']), 'digest') === 0) {
+
+ $digest = substr($_SERVER['HTTP_AUTHORIZATION'], 7);
+ }
+ }
+
+ return $digest;
+ }
+}
diff --git a/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/Facades/Httpauth.php b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/Facades/Httpauth.php
new file mode 100644
index 0000000..93cf2bd
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/Facades/Httpauth.php
@@ -0,0 +1,13 @@
+<?php
+
+namespace Intervention\Httpauth\Facades;
+
+use Illuminate\Support\Facades\Facade;
+
+class Httpauth extends Facade
+{
+ protected static function getFacadeAccessor()
+ {
+ return 'httpauth';
+ }
+}
diff --git a/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/Httpauth.php b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/Httpauth.php
new file mode 100644
index 0000000..8a0c5a5
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/Httpauth.php
@@ -0,0 +1,159 @@
+<?php
+
+namespace Intervention\Httpauth;
+
+use Exception;
+
+class Httpauth
+{
+ /**
+ * Type of HTTP Authentication
+ *
+ * @var string
+ */
+ public $type = 'basic';
+
+ /**
+ * Realm of HTTP Authentication
+ *
+ * @var string
+ */
+ public $realm = 'Secured resource';
+
+ /**
+ * Username of HTTP Authentication
+ *
+ * @var string
+ */
+ private $username;
+
+ /**
+ * Password of HTTP Authentication
+ *
+ * @var string
+ */
+ private $password;
+
+ /**
+ * Creates new instance of Httpauth
+ *
+ * @param array $parameters set realm, username and/or password as key
+ */
+
+ public function __construct($parameters = null)
+ {
+ // overwrite settings with runtime parameters (optional)
+ if (is_array($parameters)) {
+
+ if (array_key_exists('type', $parameters)) {
+ $this->type = $parameters['type'];
+ }
+
+ if (array_key_exists('realm', $parameters)) {
+ $this->realm = $parameters['realm'];
+ }
+
+ if (array_key_exists('username', $parameters)) {
+ $this->username = $parameters['username'];
+ }
+
+ if (array_key_exists('password', $parameters)) {
+ $this->password = $parameters['password'];
+ }
+ }
+
+ // check if at leat username and password is set
+ if ( ! $this->username || ! $this->password) {
+ throw new Exception('No username or password set for HttpAuthentication.');
+ }
+ }
+
+ /**
+ * Creates new instance of Httpaccess with given parameters
+ *
+ * @param array $parameters set realm, username and/or password
+ * @return Intervention\Httpauth\Httpauth
+ */
+ public static function make($parameters = null)
+ {
+ return new Httpauth($parameters);
+ }
+
+ /**
+ * Denies access for not-authenticated users
+ *
+ * @return void
+ */
+ public function secure()
+ {
+ if ( ! $this->validateUser($this->getUser())) {
+ $this->denyAccess();
+ }
+ }
+
+ /**
+ * Checks for valid user
+ *
+ * @param User $user
+ * @return bool
+ */
+ private function validateUser(UserInterface $user)
+ {
+ return $user->isValid($this->username, $this->password, $this->realm);
+ }
+
+ /**
+ * Checks if username/password combination matches
+ *
+ * @param string $username
+ * @param string $password
+ * @return boolean
+ */
+ public function isValid($username, $password)
+ {
+ return ($username == $this->username) && ($password == $this->password);
+ }
+
+ /**
+ * Sends HTTP 401 Header
+ *
+ * @return void
+ */
+ private function denyAccess()
+ {
+ header('HTTP/1.0 401 Unauthorized');
+
+ switch (strtolower($this->type)) {
+
+ case 'digest':
+ header('WWW-Authenticate: Digest realm="' . $this->realm .'",qop="auth",nonce="' . uniqid() . '",opaque="' . md5($this->realm) . '"');
+ break;
+
+ default:
+ header('WWW-Authenticate: Basic realm="'.$this->realm.'"');
+ break;
+ }
+
+ die('<strong>HTTP/1.0 401 Unauthorized</strong>');
+ }
+
+ /**
+ * Get User according to current auth type
+ *
+ * @return Intervention\Httpauth\UserInterface
+ */
+ private function getUser()
+ {
+ // set user based on authentication type
+ switch (strtolower($this->type)) {
+
+ case 'digest':
+ return new DigestUser;
+ break;
+
+ default:
+ return new BasicUser;
+ break;
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/HttpauthServiceProvider.php b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/HttpauthServiceProvider.php
new file mode 100644
index 0000000..0d7a988
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/HttpauthServiceProvider.php
@@ -0,0 +1,82 @@
+<?php
+
+namespace Intervention\Httpauth;
+
+use Illuminate\Support\ServiceProvider;
+
+class HttpauthServiceProvider extends ServiceProvider
+{
+ /**
+ * Indicates if loading of the provider is deferred.
+ *
+ * @var bool
+ */
+ protected $defer = false;
+
+ /**
+ * Actual provider
+ *
+ * @var \Illuminate\Support\ServiceProvider
+ */
+ protected $provider;
+
+ /**
+ * Create a new service provider instance.
+ *
+ * @param \Illuminate\Contracts\Foundation\Application $app
+ * @return void
+ */
+ public function __construct($app)
+ {
+ parent::__construct($app);
+
+ $this->provider = $this->getProvider();
+ }
+
+ /**
+ * Return ServiceProvider according to Laravel version
+ *
+ * @return \Intervention\Httpauth\Provider\ProviderInterface
+ */
+ private function getProvider()
+ {
+ $app = $this->app;
+ $version = intval($app::VERSION);
+ $provider = sprintf(
+ '\Intervention\Httpauth\HttpauthServiceProviderLaravel%d', $version
+ );
+
+ return new $provider($app);
+ }
+
+ /**
+ * Bootstrap the application events.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ return $this->provider->boot();
+ }
+
+ /**
+ * Register the service provider.
+ *
+ * @return void
+ */
+ public function register()
+ {
+ return $this->provider->register();
+ }
+
+ /**
+ * Get the services provided by the provider.
+ *
+ * @return array
+ */
+ public function provides()
+ {
+ return array('httpauth');
+ }
+
+}
diff --git a/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/HttpauthServiceProviderLaravel4.php b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/HttpauthServiceProviderLaravel4.php
new file mode 100644
index 0000000..31732b0
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/HttpauthServiceProviderLaravel4.php
@@ -0,0 +1,30 @@
+<?php
+
+namespace Intervention\Httpauth;
+
+use Illuminate\Support\ServiceProvider;
+
+class HttpauthServiceProviderLaravel4 extends ServiceProvider
+{
+ /**
+ * Bootstrap the application events.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ $this->package('intervention/httpauth');
+ }
+
+ /**
+ * Register the service provider.
+ *
+ * @return void
+ */
+ public function register()
+ {
+ $this->app['httpauth'] = $this->app->share(function($app) {
+ return new Httpauth($app['config']->get('httpauth::config'));
+ });
+ }
+}
diff --git a/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/HttpauthServiceProviderLaravel5.php b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/HttpauthServiceProviderLaravel5.php
new file mode 100644
index 0000000..e19eee5
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/HttpauthServiceProviderLaravel5.php
@@ -0,0 +1,37 @@
+<?php
+
+namespace Intervention\Httpauth;
+
+use Illuminate\Support\ServiceProvider;
+
+class HttpauthServiceProviderLaravel5 extends ServiceProvider
+{
+ /**
+ * Bootstrap the application events.
+ *
+ * @return void
+ */
+ public function boot()
+ {
+ $this->publishes(array(
+ __DIR__.'/../../config/config.php' => config_path('httpauth.php')
+ ));
+ }
+
+ /**
+ * Register the service provider.
+ *
+ * @return void
+ */
+ public function register()
+ {
+ // merge default config
+ $this->mergeConfigFrom(
+ __DIR__.'/../../config/config.php', 'httpauth'
+ );
+
+ $this->app->singleton('httpauth', function ($app) {
+ return new Httpauth($app['config']->get('httpauth'));
+ });
+ }
+}
diff --git a/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/UserInterface.php b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/UserInterface.php
new file mode 100644
index 0000000..e2bfd8f
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/src/Intervention/Httpauth/UserInterface.php
@@ -0,0 +1,22 @@
+<?php
+
+namespace Intervention\Httpauth;
+
+interface UserInterface
+{
+ /**
+ * Checks for valid username & password
+ *
+ * @param array $credentials
+ * @return boolean
+ */
+ public function isValid($name, $password, $realm);
+
+ /**
+ * Parses the User Information from server variables
+
+ * @return void
+ */
+ public function parse();
+
+}
diff --git a/admin/survey/minify/vendor/intervention/httpauth/src/config/.gitkeep b/admin/survey/minify/vendor/intervention/httpauth/src/config/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/src/config/.gitkeep
diff --git a/admin/survey/minify/vendor/intervention/httpauth/src/config/config.php b/admin/survey/minify/vendor/intervention/httpauth/src/config/config.php
new file mode 100644
index 0000000..0655eab
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/src/config/config.php
@@ -0,0 +1,49 @@
+<?php
+
+return array(
+
+ /*
+ |--------------------------------------------------------------------------
+ | Authentication type
+ |--------------------------------------------------------------------------
+ |
+ | Intervention Httpauth supports "basic" and "digest" authentication
+ | implementations. "Basic" is the simplest technique, while "Digest" applies
+ | hash functions to the password before sending it over the network.
+ |
+ | Supported: "basic", "digest"
+ |
+ */
+ 'type' => 'basic',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Authentication realm
+ |--------------------------------------------------------------------------
+ |
+ | Clients must authenticate itself to each realm.
+ |
+ */
+ 'realm' => 'Secured',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Authentication username
+ |--------------------------------------------------------------------------
+ |
+ | Username to access the secured realm in combination with a password.
+ |
+ */
+ 'username' => 'admin',
+
+ /*
+ |--------------------------------------------------------------------------
+ | Password
+ |--------------------------------------------------------------------------
+ |
+ | Password to access the secured realm in combination with the username.
+ |
+ */
+ 'password' => '1234'
+
+);
diff --git a/admin/survey/minify/vendor/intervention/httpauth/tests/.gitkeep b/admin/survey/minify/vendor/intervention/httpauth/tests/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/tests/.gitkeep
diff --git a/admin/survey/minify/vendor/intervention/httpauth/tests/BasicUserTest.php b/admin/survey/minify/vendor/intervention/httpauth/tests/BasicUserTest.php
new file mode 100644
index 0000000..837a70e
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/tests/BasicUserTest.php
@@ -0,0 +1,30 @@
+<?php
+
+use Intervention\Httpauth\BasicUser;
+
+class BasicUserTest extends PHPUnit_Framework_TestCase
+{
+ public function testBasicUserAuthMod()
+ {
+ $_SERVER['PHP_AUTH_USER'] = 'test_user';
+ $_SERVER['PHP_AUTH_PW'] = 'test_password';
+
+ $user = new BasicUser;
+ $this->assertTrue($user->isValid('test_user', 'test_password'));
+ }
+
+ public function testUserAuth()
+ {
+ $userdata = array('test_user', 'test_password');
+ $userdata = implode(':', $userdata);
+ $userdata = base64_encode($userdata);
+ $userdata = 'basic_'.$userdata;
+
+ unset($_SERVER['PHP_AUTH_USER']);
+ unset($_SERVER['PHP_AUTH_PW']);
+ $_SERVER['HTTP_AUTHENTICATION'] = $userdata;
+
+ $user = new BasicUser;
+ $this->assertTrue($user->isValid('test_user', 'test_password'));
+ }
+}
diff --git a/admin/survey/minify/vendor/intervention/httpauth/tests/DigestUserTest.php b/admin/survey/minify/vendor/intervention/httpauth/tests/DigestUserTest.php
new file mode 100644
index 0000000..7427794
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/tests/DigestUserTest.php
@@ -0,0 +1,12 @@
+<?php
+
+use Intervention\Httpauth\DigestUser;
+
+class DigestUserTest extends PHPUnit_Framework_TestCase
+{
+ public function testDigestUserCreation()
+ {
+ $user = new DigestUser;
+ $this->assertInstanceOf('\Intervention\Httpauth\DigestUser', $user);
+ }
+}
diff --git a/admin/survey/minify/vendor/intervention/httpauth/tests/HttpauthTest.php b/admin/survey/minify/vendor/intervention/httpauth/tests/HttpauthTest.php
new file mode 100644
index 0000000..88230d5
--- /dev/null
+++ b/admin/survey/minify/vendor/intervention/httpauth/tests/HttpauthTest.php
@@ -0,0 +1,49 @@
+<?php
+
+use Intervention\Httpauth\Httpauth;
+
+class HttpauthTest extends PHPUnit_Framework_TestCase
+{
+ private function createTestHttpauth()
+ {
+ $config = array(
+ 'realm' => 'test_realm',
+ 'username' => 'test_user',
+ 'password' => 'test_password'
+ );
+
+ $httpauth = new Httpauth($config);
+ return $httpauth;
+ }
+
+ public function testConstruction()
+ {
+ $httpauth = $this->createTestHttpauth();
+ $this->assertInstanceOf('\Intervention\Httpauth\Httpauth', $httpauth);
+ $this->assertEquals('test_realm', $httpauth->realm);
+ $this->assertTrue($httpauth->isValid('test_user', 'test_password'));
+ }
+
+ public function testStaticCall()
+ {
+ $config = array(
+ 'realm' => '1',
+ 'username' => '2',
+ 'password' => '3'
+ );
+
+ $httpauth = Httpauth::make($config);
+
+ $this->assertInstanceOf('\Intervention\Httpauth\Httpauth', $httpauth);
+ $this->assertEquals('1', $httpauth->realm);
+ $this->assertTrue($httpauth->isValid($config['username'], $config['password']));
+ }
+
+ /**
+ * @expectedException Exception
+ */
+ public function testConstructorWithoutUserPassword()
+ {
+ $httpauth = new Httpauth;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/.php_cs b/admin/survey/minify/vendor/monolog/monolog/.php_cs
new file mode 100644
index 0000000..fb2d498
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/.php_cs
@@ -0,0 +1,59 @@
+<?php
+
+$header = <<<EOF
+This file is part of the Monolog package.
+
+(c) Jordi Boggiano <j.boggiano@seld.be>
+
+For the full copyright and license information, please view the LICENSE
+file that was distributed with this source code.
+EOF;
+
+$finder = Symfony\CS\Finder::create()
+ ->files()
+ ->name('*.php')
+ ->exclude('Fixtures')
+ ->in(__DIR__.'/src')
+ ->in(__DIR__.'/tests')
+;
+
+return Symfony\CS\Config::create()
+ ->setUsingCache(true)
+ //->setUsingLinter(false)
+ ->setRiskyAllowed(true)
+ ->setRules(array(
+ '@PSR2' => true,
+ 'binary_operator_spaces' => true,
+ 'blank_line_before_return' => true,
+ 'header_comment' => array('header' => $header),
+ 'include' => true,
+ 'long_array_syntax' => true,
+ 'method_separation' => true,
+ 'no_blank_lines_after_class_opening' => true,
+ 'no_blank_lines_after_phpdoc' => true,
+ 'no_blank_lines_between_uses' => true,
+ 'no_duplicate_semicolons' => true,
+ 'no_extra_consecutive_blank_lines' => true,
+ 'no_leading_import_slash' => true,
+ 'no_leading_namespace_whitespace' => true,
+ 'no_trailing_comma_in_singleline_array' => true,
+ 'no_unused_imports' => true,
+ 'object_operator_without_whitespace' => true,
+ 'phpdoc_align' => true,
+ 'phpdoc_indent' => true,
+ 'phpdoc_no_access' => true,
+ 'phpdoc_no_package' => true,
+ 'phpdoc_order' => true,
+ 'phpdoc_scalar' => true,
+ 'phpdoc_trim' => true,
+ 'phpdoc_type_to_var' => true,
+ 'psr0' => true,
+ 'single_blank_line_before_namespace' => true,
+ 'spaces_cast' => true,
+ 'standardize_not_equals' => true,
+ 'ternary_operator_spaces' => true,
+ 'trailing_comma_in_multiline_array' => true,
+ 'whitespacy_lines' => true,
+ ))
+ ->finder($finder)
+;
diff --git a/admin/survey/minify/vendor/monolog/monolog/CHANGELOG.md b/admin/survey/minify/vendor/monolog/monolog/CHANGELOG.md
new file mode 100644
index 0000000..1d97bd2
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/CHANGELOG.md
@@ -0,0 +1,342 @@
+### 1.23.0 (2017-06-19)
+
+ * Improved SyslogUdpHandler's support for RFC5424 and added optional `$ident` argument
+ * Fixed GelfHandler truncation to be per field and not per message
+ * Fixed compatibility issue with PHP <5.3.6
+ * Fixed support for headless Chrome in ChromePHPHandler
+ * Fixed support for latest Aws SDK in DynamoDbHandler
+ * Fixed support for SwiftMailer 6.0+ in SwiftMailerHandler
+
+### 1.22.1 (2017-03-13)
+
+ * Fixed lots of minor issues in the new Slack integrations
+ * Fixed support for allowInlineLineBreaks in LineFormatter when formatting exception backtraces
+
+### 1.22.0 (2016-11-26)
+
+ * Added SlackbotHandler and SlackWebhookHandler to set up Slack integration more easily
+ * Added MercurialProcessor to add mercurial revision and branch names to log records
+ * Added support for AWS SDK v3 in DynamoDbHandler
+ * Fixed fatal errors occuring when normalizing generators that have been fully consumed
+ * Fixed RollbarHandler to include a level (rollbar level), monolog_level (original name), channel and datetime (unix)
+ * Fixed RollbarHandler not flushing records automatically, calling close() explicitly is not necessary anymore
+ * Fixed SyslogUdpHandler to avoid sending empty frames
+ * Fixed a few PHP 7.0 and 7.1 compatibility issues
+
+### 1.21.0 (2016-07-29)
+
+ * Break: Reverted the addition of $context when the ErrorHandler handles regular php errors from 1.20.0 as it was causing issues
+ * Added support for more formats in RotatingFileHandler::setFilenameFormat as long as they have Y, m and d in order
+ * Added ability to format the main line of text the SlackHandler sends by explictly setting a formatter on the handler
+ * Added information about SoapFault instances in NormalizerFormatter
+ * Added $handleOnlyReportedErrors option on ErrorHandler::registerErrorHandler (default true) to allow logging of all errors no matter the error_reporting level
+
+### 1.20.0 (2016-07-02)
+
+ * Added FingersCrossedHandler::activate() to manually trigger the handler regardless of the activation policy
+ * Added StreamHandler::getUrl to retrieve the stream's URL
+ * Added ability to override addRow/addTitle in HtmlFormatter
+ * Added the $context to context information when the ErrorHandler handles a regular php error
+ * Deprecated RotatingFileHandler::setFilenameFormat to only support 3 formats: Y, Y-m and Y-m-d
+ * Fixed WhatFailureGroupHandler to work with PHP7 throwables
+ * Fixed a few minor bugs
+
+### 1.19.0 (2016-04-12)
+
+ * Break: StreamHandler will not close streams automatically that it does not own. If you pass in a stream (not a path/url), then it will not close it for you. You can retrieve those using getStream() if needed
+ * Added DeduplicationHandler to remove duplicate records from notifications across multiple requests, useful for email or other notifications on errors
+ * Added ability to use `%message%` and other LineFormatter replacements in the subject line of emails sent with NativeMailHandler and SwiftMailerHandler
+ * Fixed HipChatHandler handling of long messages
+
+### 1.18.2 (2016-04-02)
+
+ * Fixed ElasticaFormatter to use more precise dates
+ * Fixed GelfMessageFormatter sending too long messages
+
+### 1.18.1 (2016-03-13)
+
+ * Fixed SlackHandler bug where slack dropped messages randomly
+ * Fixed RedisHandler issue when using with the PHPRedis extension
+ * Fixed AmqpHandler content-type being incorrectly set when using with the AMQP extension
+ * Fixed BrowserConsoleHandler regression
+
+### 1.18.0 (2016-03-01)
+
+ * Added optional reduction of timestamp precision via `Logger->useMicrosecondTimestamps(false)`, disabling it gets you a bit of performance boost but reduces the precision to the second instead of microsecond
+ * Added possibility to skip some extra stack frames in IntrospectionProcessor if you have some library wrapping Monolog that is always adding frames
+ * Added `Logger->withName` to clone a logger (keeping all handlers) with a new name
+ * Added FluentdFormatter for the Fluentd unix socket protocol
+ * Added HandlerWrapper base class to ease the creation of handler wrappers, just extend it and override as needed
+ * Added support for replacing context sub-keys using `%context.*%` in LineFormatter
+ * Added support for `payload` context value in RollbarHandler
+ * Added setRelease to RavenHandler to describe the application version, sent with every log
+ * Added support for `fingerprint` context value in RavenHandler
+ * Fixed JSON encoding errors that would gobble up the whole log record, we now handle those more gracefully by dropping chars as needed
+ * Fixed write timeouts in SocketHandler and derivatives, set to 10sec by default, lower it with `setWritingTimeout()`
+ * Fixed PHP7 compatibility with regard to Exception/Throwable handling in a few places
+
+### 1.17.2 (2015-10-14)
+
+ * Fixed ErrorHandler compatibility with non-Monolog PSR-3 loggers
+ * Fixed SlackHandler handling to use slack functionalities better
+ * Fixed SwiftMailerHandler bug when sending multiple emails they all had the same id
+ * Fixed 5.3 compatibility regression
+
+### 1.17.1 (2015-08-31)
+
+ * Fixed RollbarHandler triggering PHP notices
+
+### 1.17.0 (2015-08-30)
+
+ * Added support for `checksum` and `release` context/extra values in RavenHandler
+ * Added better support for exceptions in RollbarHandler
+ * Added UidProcessor::getUid
+ * Added support for showing the resource type in NormalizedFormatter
+ * Fixed IntrospectionProcessor triggering PHP notices
+
+### 1.16.0 (2015-08-09)
+
+ * Added IFTTTHandler to notify ifttt.com triggers
+ * Added Logger::setHandlers() to allow setting/replacing all handlers
+ * Added $capSize in RedisHandler to cap the log size
+ * Fixed StreamHandler creation of directory to only trigger when the first log write happens
+ * Fixed bug in the handling of curl failures
+ * Fixed duplicate logging of fatal errors when both error and fatal error handlers are registered in monolog's ErrorHandler
+ * Fixed missing fatal errors records with handlers that need to be closed to flush log records
+ * Fixed TagProcessor::addTags support for associative arrays
+
+### 1.15.0 (2015-07-12)
+
+ * Added addTags and setTags methods to change a TagProcessor
+ * Added automatic creation of directories if they are missing for a StreamHandler to open a log file
+ * Added retry functionality to Loggly, Cube and Mandrill handlers so they retry up to 5 times in case of network failure
+ * Fixed process exit code being incorrectly reset to 0 if ErrorHandler::registerExceptionHandler was used
+ * Fixed HTML/JS escaping in BrowserConsoleHandler
+ * Fixed JSON encoding errors being silently suppressed (PHP 5.5+ only)
+
+### 1.14.0 (2015-06-19)
+
+ * Added PHPConsoleHandler to send record to Chrome's PHP Console extension and library
+ * Added support for objects implementing __toString in the NormalizerFormatter
+ * Added support for HipChat's v2 API in HipChatHandler
+ * Added Logger::setTimezone() to initialize the timezone monolog should use in case date.timezone isn't correct for your app
+ * Added an option to send formatted message instead of the raw record on PushoverHandler via ->useFormattedMessage(true)
+ * Fixed curl errors being silently suppressed
+
+### 1.13.1 (2015-03-09)
+
+ * Fixed regression in HipChat requiring a new token to be created
+
+### 1.13.0 (2015-03-05)
+
+ * Added Registry::hasLogger to check for the presence of a logger instance
+ * Added context.user support to RavenHandler
+ * Added HipChat API v2 support in the HipChatHandler
+ * Added NativeMailerHandler::addParameter to pass params to the mail() process
+ * Added context data to SlackHandler when $includeContextAndExtra is true
+ * Added ability to customize the Swift_Message per-email in SwiftMailerHandler
+ * Fixed SwiftMailerHandler to lazily create message instances if a callback is provided
+ * Fixed serialization of INF and NaN values in Normalizer and LineFormatter
+
+### 1.12.0 (2014-12-29)
+
+ * Break: HandlerInterface::isHandling now receives a partial record containing only a level key. This was always the intent and does not break any Monolog handler but is strictly speaking a BC break and you should check if you relied on any other field in your own handlers.
+ * Added PsrHandler to forward records to another PSR-3 logger
+ * Added SamplingHandler to wrap around a handler and include only every Nth record
+ * Added MongoDBFormatter to support better storage with MongoDBHandler (it must be enabled manually for now)
+ * Added exception codes in the output of most formatters
+ * Added LineFormatter::includeStacktraces to enable exception stack traces in logs (uses more than one line)
+ * Added $useShortAttachment to SlackHandler to minify attachment size and $includeExtra to append extra data
+ * Added $host to HipChatHandler for users of private instances
+ * Added $transactionName to NewRelicHandler and support for a transaction_name context value
+ * Fixed MandrillHandler to avoid outputing API call responses
+ * Fixed some non-standard behaviors in SyslogUdpHandler
+
+### 1.11.0 (2014-09-30)
+
+ * Break: The NewRelicHandler extra and context data are now prefixed with extra_ and context_ to avoid clashes. Watch out if you have scripts reading those from the API and rely on names
+ * Added WhatFailureGroupHandler to suppress any exception coming from the wrapped handlers and avoid chain failures if a logging service fails
+ * Added MandrillHandler to send emails via the Mandrillapp.com API
+ * Added SlackHandler to log records to a Slack.com account
+ * Added FleepHookHandler to log records to a Fleep.io account
+ * Added LogglyHandler::addTag to allow adding tags to an existing handler
+ * Added $ignoreEmptyContextAndExtra to LineFormatter to avoid empty [] at the end
+ * Added $useLocking to StreamHandler and RotatingFileHandler to enable flock() while writing
+ * Added support for PhpAmqpLib in the AmqpHandler
+ * Added FingersCrossedHandler::clear and BufferHandler::clear to reset them between batches in long running jobs
+ * Added support for adding extra fields from $_SERVER in the WebProcessor
+ * Fixed support for non-string values in PrsLogMessageProcessor
+ * Fixed SwiftMailer messages being sent with the wrong date in long running scripts
+ * Fixed minor PHP 5.6 compatibility issues
+ * Fixed BufferHandler::close being called twice
+
+### 1.10.0 (2014-06-04)
+
+ * Added Logger::getHandlers() and Logger::getProcessors() methods
+ * Added $passthruLevel argument to FingersCrossedHandler to let it always pass some records through even if the trigger level is not reached
+ * Added support for extra data in NewRelicHandler
+ * Added $expandNewlines flag to the ErrorLogHandler to create multiple log entries when a message has multiple lines
+
+### 1.9.1 (2014-04-24)
+
+ * Fixed regression in RotatingFileHandler file permissions
+ * Fixed initialization of the BufferHandler to make sure it gets flushed after receiving records
+ * Fixed ChromePHPHandler and FirePHPHandler's activation strategies to be more conservative
+
+### 1.9.0 (2014-04-20)
+
+ * Added LogEntriesHandler to send logs to a LogEntries account
+ * Added $filePermissions to tweak file mode on StreamHandler and RotatingFileHandler
+ * Added $useFormatting flag to MemoryProcessor to make it send raw data in bytes
+ * Added support for table formatting in FirePHPHandler via the table context key
+ * Added a TagProcessor to add tags to records, and support for tags in RavenHandler
+ * Added $appendNewline flag to the JsonFormatter to enable using it when logging to files
+ * Added sound support to the PushoverHandler
+ * Fixed multi-threading support in StreamHandler
+ * Fixed empty headers issue when ChromePHPHandler received no records
+ * Fixed default format of the ErrorLogHandler
+
+### 1.8.0 (2014-03-23)
+
+ * Break: the LineFormatter now strips newlines by default because this was a bug, set $allowInlineLineBreaks to true if you need them
+ * Added BrowserConsoleHandler to send logs to any browser's console via console.log() injection in the output
+ * Added FilterHandler to filter records and only allow those of a given list of levels through to the wrapped handler
+ * Added FlowdockHandler to send logs to a Flowdock account
+ * Added RollbarHandler to send logs to a Rollbar account
+ * Added HtmlFormatter to send prettier log emails with colors for each log level
+ * Added GitProcessor to add the current branch/commit to extra record data
+ * Added a Monolog\Registry class to allow easier global access to pre-configured loggers
+ * Added support for the new official graylog2/gelf-php lib for GelfHandler, upgrade if you can by replacing the mlehner/gelf-php requirement
+ * Added support for HHVM
+ * Added support for Loggly batch uploads
+ * Added support for tweaking the content type and encoding in NativeMailerHandler
+ * Added $skipClassesPartials to tweak the ignored classes in the IntrospectionProcessor
+ * Fixed batch request support in GelfHandler
+
+### 1.7.0 (2013-11-14)
+
+ * Added ElasticSearchHandler to send logs to an Elastic Search server
+ * Added DynamoDbHandler and ScalarFormatter to send logs to Amazon's Dynamo DB
+ * Added SyslogUdpHandler to send logs to a remote syslogd server
+ * Added LogglyHandler to send logs to a Loggly account
+ * Added $level to IntrospectionProcessor so it only adds backtraces when needed
+ * Added $version to LogstashFormatter to allow using the new v1 Logstash format
+ * Added $appName to NewRelicHandler
+ * Added configuration of Pushover notification retries/expiry
+ * Added $maxColumnWidth to NativeMailerHandler to change the 70 chars default
+ * Added chainability to most setters for all handlers
+ * Fixed RavenHandler batch processing so it takes the message from the record with highest priority
+ * Fixed HipChatHandler batch processing so it sends all messages at once
+ * Fixed issues with eAccelerator
+ * Fixed and improved many small things
+
+### 1.6.0 (2013-07-29)
+
+ * Added HipChatHandler to send logs to a HipChat chat room
+ * Added ErrorLogHandler to send logs to PHP's error_log function
+ * Added NewRelicHandler to send logs to NewRelic's service
+ * Added Monolog\ErrorHandler helper class to register a Logger as exception/error/fatal handler
+ * Added ChannelLevelActivationStrategy for the FingersCrossedHandler to customize levels by channel
+ * Added stack traces output when normalizing exceptions (json output & co)
+ * Added Monolog\Logger::API constant (currently 1)
+ * Added support for ChromePHP's v4.0 extension
+ * Added support for message priorities in PushoverHandler, see $highPriorityLevel and $emergencyLevel
+ * Added support for sending messages to multiple users at once with the PushoverHandler
+ * Fixed RavenHandler's support for batch sending of messages (when behind a Buffer or FingersCrossedHandler)
+ * Fixed normalization of Traversables with very large data sets, only the first 1000 items are shown now
+ * Fixed issue in RotatingFileHandler when an open_basedir restriction is active
+ * Fixed minor issues in RavenHandler and bumped the API to Raven 0.5.0
+ * Fixed SyslogHandler issue when many were used concurrently with different facilities
+
+### 1.5.0 (2013-04-23)
+
+ * Added ProcessIdProcessor to inject the PID in log records
+ * Added UidProcessor to inject a unique identifier to all log records of one request/run
+ * Added support for previous exceptions in the LineFormatter exception serialization
+ * Added Monolog\Logger::getLevels() to get all available levels
+ * Fixed ChromePHPHandler so it avoids sending headers larger than Chrome can handle
+
+### 1.4.1 (2013-04-01)
+
+ * Fixed exception formatting in the LineFormatter to be more minimalistic
+ * Fixed RavenHandler's handling of context/extra data, requires Raven client >0.1.0
+ * Fixed log rotation in RotatingFileHandler to work with long running scripts spanning multiple days
+ * Fixed WebProcessor array access so it checks for data presence
+ * Fixed Buffer, Group and FingersCrossed handlers to make use of their processors
+
+### 1.4.0 (2013-02-13)
+
+ * Added RedisHandler to log to Redis via the Predis library or the phpredis extension
+ * Added ZendMonitorHandler to log to the Zend Server monitor
+ * Added the possibility to pass arrays of handlers and processors directly in the Logger constructor
+ * Added `$useSSL` option to the PushoverHandler which is enabled by default
+ * Fixed ChromePHPHandler and FirePHPHandler issue when multiple instances are used simultaneously
+ * Fixed header injection capability in the NativeMailHandler
+
+### 1.3.1 (2013-01-11)
+
+ * Fixed LogstashFormatter to be usable with stream handlers
+ * Fixed GelfMessageFormatter levels on Windows
+
+### 1.3.0 (2013-01-08)
+
+ * Added PSR-3 compliance, the `Monolog\Logger` class is now an instance of `Psr\Log\LoggerInterface`
+ * Added PsrLogMessageProcessor that you can selectively enable for full PSR-3 compliance
+ * Added LogstashFormatter (combine with SocketHandler or StreamHandler to send logs to Logstash)
+ * Added PushoverHandler to send mobile notifications
+ * Added CouchDBHandler and DoctrineCouchDBHandler
+ * Added RavenHandler to send data to Sentry servers
+ * Added support for the new MongoClient class in MongoDBHandler
+ * Added microsecond precision to log records' timestamps
+ * Added `$flushOnOverflow` param to BufferHandler to flush by batches instead of losing
+ the oldest entries
+ * Fixed normalization of objects with cyclic references
+
+### 1.2.1 (2012-08-29)
+
+ * Added new $logopts arg to SyslogHandler to provide custom openlog options
+ * Fixed fatal error in SyslogHandler
+
+### 1.2.0 (2012-08-18)
+
+ * Added AmqpHandler (for use with AMQP servers)
+ * Added CubeHandler
+ * Added NativeMailerHandler::addHeader() to send custom headers in mails
+ * Added the possibility to specify more than one recipient in NativeMailerHandler
+ * Added the possibility to specify float timeouts in SocketHandler
+ * Added NOTICE and EMERGENCY levels to conform with RFC 5424
+ * Fixed the log records to use the php default timezone instead of UTC
+ * Fixed BufferHandler not being flushed properly on PHP fatal errors
+ * Fixed normalization of exotic resource types
+ * Fixed the default format of the SyslogHandler to avoid duplicating datetimes in syslog
+
+### 1.1.0 (2012-04-23)
+
+ * Added Monolog\Logger::isHandling() to check if a handler will
+ handle the given log level
+ * Added ChromePHPHandler
+ * Added MongoDBHandler
+ * Added GelfHandler (for use with Graylog2 servers)
+ * Added SocketHandler (for use with syslog-ng for example)
+ * Added NormalizerFormatter
+ * Added the possibility to change the activation strategy of the FingersCrossedHandler
+ * Added possibility to show microseconds in logs
+ * Added `server` and `referer` to WebProcessor output
+
+### 1.0.2 (2011-10-24)
+
+ * Fixed bug in IE with large response headers and FirePHPHandler
+
+### 1.0.1 (2011-08-25)
+
+ * Added MemoryPeakUsageProcessor and MemoryUsageProcessor
+ * Added Monolog\Logger::getName() to get a logger's channel name
+
+### 1.0.0 (2011-07-06)
+
+ * Added IntrospectionProcessor to get info from where the logger was called
+ * Fixed WebProcessor in CLI
+
+### 1.0.0-RC1 (2011-07-01)
+
+ * Initial release
diff --git a/admin/survey/minify/vendor/monolog/monolog/LICENSE b/admin/survey/minify/vendor/monolog/monolog/LICENSE
new file mode 100644
index 0000000..b5c6644
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2011-2016 Jordi Boggiano
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/admin/survey/minify/vendor/monolog/monolog/README.md b/admin/survey/minify/vendor/monolog/monolog/README.md
new file mode 100644
index 0000000..285295b
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/README.md
@@ -0,0 +1,95 @@
+# Monolog - Logging for PHP [![Build Status](https://img.shields.io/travis/Seldaek/monolog.svg)](https://travis-ci.org/Seldaek/monolog)
+
+[![Total Downloads](https://img.shields.io/packagist/dt/monolog/monolog.svg)](https://packagist.org/packages/monolog/monolog)
+[![Latest Stable Version](https://img.shields.io/packagist/v/monolog/monolog.svg)](https://packagist.org/packages/monolog/monolog)
+[![Reference Status](https://www.versioneye.com/php/monolog:monolog/reference_badge.svg)](https://www.versioneye.com/php/monolog:monolog/references)
+
+
+Monolog sends your logs to files, sockets, inboxes, databases and various
+web services. See the complete list of handlers below. Special handlers
+allow you to build advanced logging strategies.
+
+This library implements the [PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md)
+interface that you can type-hint against in your own libraries to keep
+a maximum of interoperability. You can also use it in your applications to
+make sure you can always use another compatible logger at a later time.
+As of 1.11.0 Monolog public APIs will also accept PSR-3 log levels.
+Internally Monolog still uses its own level scheme since it predates PSR-3.
+
+## Installation
+
+Install the latest version with
+
+```bash
+$ composer require monolog/monolog
+```
+
+## Basic Usage
+
+```php
+<?php
+
+use Monolog\Logger;
+use Monolog\Handler\StreamHandler;
+
+// create a log channel
+$log = new Logger('name');
+$log->pushHandler(new StreamHandler('path/to/your.log', Logger::WARNING));
+
+// add records to the log
+$log->addWarning('Foo');
+$log->addError('Bar');
+```
+
+## Documentation
+
+- [Usage Instructions](doc/01-usage.md)
+- [Handlers, Formatters and Processors](doc/02-handlers-formatters-processors.md)
+- [Utility classes](doc/03-utilities.md)
+- [Extending Monolog](doc/04-extending.md)
+
+## Third Party Packages
+
+Third party handlers, formatters and processors are
+[listed in the wiki](https://github.com/Seldaek/monolog/wiki/Third-Party-Packages). You
+can also add your own there if you publish one.
+
+## About
+
+### Requirements
+
+- Monolog works with PHP 5.3 or above, and is also tested to work with HHVM.
+
+### Submitting bugs and feature requests
+
+Bugs and feature request are tracked on [GitHub](https://github.com/Seldaek/monolog/issues)
+
+### Framework Integrations
+
+- Frameworks and libraries using [PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md)
+ can be used very easily with Monolog since it implements the interface.
+- [Symfony2](http://symfony.com) comes out of the box with Monolog.
+- [Silex](http://silex.sensiolabs.org/) comes out of the box with Monolog.
+- [Laravel 4 & 5](http://laravel.com/) come out of the box with Monolog.
+- [Lumen](http://lumen.laravel.com/) comes out of the box with Monolog.
+- [PPI](http://www.ppi.io/) comes out of the box with Monolog.
+- [CakePHP](http://cakephp.org/) is usable with Monolog via the [cakephp-monolog](https://github.com/jadb/cakephp-monolog) plugin.
+- [Slim](http://www.slimframework.com/) is usable with Monolog via the [Slim-Monolog](https://github.com/Flynsarmy/Slim-Monolog) log writer.
+- [XOOPS 2.6](http://xoops.org/) comes out of the box with Monolog.
+- [Aura.Web_Project](https://github.com/auraphp/Aura.Web_Project) comes out of the box with Monolog.
+- [Nette Framework](http://nette.org/en/) can be used with Monolog via [Kdyby/Monolog](https://github.com/Kdyby/Monolog) extension.
+- [Proton Micro Framework](https://github.com/alexbilbie/Proton) comes out of the box with Monolog.
+
+### Author
+
+Jordi Boggiano - <j.boggiano@seld.be> - <http://twitter.com/seldaek><br />
+See also the list of [contributors](https://github.com/Seldaek/monolog/contributors) which participated in this project.
+
+### License
+
+Monolog is licensed under the MIT License - see the `LICENSE` file for details
+
+### Acknowledgements
+
+This library is heavily inspired by Python's [Logbook](http://packages.python.org/Logbook/)
+library, although most concepts have been adjusted to fit to the PHP world.
diff --git a/admin/survey/minify/vendor/monolog/monolog/composer.json b/admin/survey/minify/vendor/monolog/monolog/composer.json
new file mode 100644
index 0000000..9d23b9c
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/composer.json
@@ -0,0 +1,66 @@
+{
+ "name": "monolog/monolog",
+ "description": "Sends your logs to files, sockets, inboxes, databases and various web services",
+ "keywords": ["log", "logging", "psr-3"],
+ "homepage": "http://github.com/Seldaek/monolog",
+ "type": "library",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Jordi Boggiano",
+ "email": "j.boggiano@seld.be",
+ "homepage": "http://seld.be"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.0",
+ "psr/log": "~1.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.5",
+ "graylog2/gelf-php": "~1.0",
+ "sentry/sentry": "^0.13",
+ "ruflin/elastica": ">=0.90 <3.0",
+ "doctrine/couchdb": "~1.0@dev",
+ "aws/aws-sdk-php": "^2.4.9 || ^3.0",
+ "php-amqplib/php-amqplib": "~2.4",
+ "swiftmailer/swiftmailer": "^5.3|^6.0",
+ "php-console/php-console": "^3.1.3",
+ "phpunit/phpunit-mock-objects": "2.3.0",
+ "jakub-onderka/php-parallel-lint": "0.9"
+ },
+ "_": "phpunit/phpunit-mock-objects required in 2.3.0 due to https://github.com/sebastianbergmann/phpunit-mock-objects/issues/223 - needs hhvm 3.8+ on travis",
+ "suggest": {
+ "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server",
+ "sentry/sentry": "Allow sending log messages to a Sentry server",
+ "doctrine/couchdb": "Allow sending log messages to a CouchDB server",
+ "ruflin/elastica": "Allow sending log messages to an Elastic Search server",
+ "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib",
+ "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)",
+ "ext-mongo": "Allow sending log messages to a MongoDB server",
+ "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver",
+ "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB",
+ "rollbar/rollbar": "Allow sending log messages to Rollbar",
+ "php-console/php-console": "Allow sending log messages to Google Chrome"
+ },
+ "autoload": {
+ "psr-4": {"Monolog\\": "src/Monolog"}
+ },
+ "autoload-dev": {
+ "psr-4": {"Monolog\\": "tests/Monolog"}
+ },
+ "provide": {
+ "psr/log-implementation": "1.0.0"
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "scripts": {
+ "test": [
+ "parallel-lint . --exclude vendor",
+ "phpunit"
+ ]
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/doc/01-usage.md b/admin/survey/minify/vendor/monolog/monolog/doc/01-usage.md
new file mode 100644
index 0000000..b2c577c
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/doc/01-usage.md
@@ -0,0 +1,231 @@
+# Using Monolog
+
+- [Installation](#installation)
+- [Core Concepts](#core-concepts)
+- [Log Levels](#log-levels)
+- [Configuring a logger](#configuring-a-logger)
+- [Adding extra data in the records](#adding-extra-data-in-the-records)
+- [Leveraging channels](#leveraging-channels)
+- [Customizing the log format](#customizing-the-log-format)
+
+## Installation
+
+Monolog is available on Packagist ([monolog/monolog](http://packagist.org/packages/monolog/monolog))
+and as such installable via [Composer](http://getcomposer.org/).
+
+```bash
+composer require monolog/monolog
+```
+
+If you do not use Composer, you can grab the code from GitHub, and use any
+PSR-0 compatible autoloader (e.g. the [Symfony2 ClassLoader component](https://github.com/symfony/ClassLoader))
+to load Monolog classes.
+
+## Core Concepts
+
+Every `Logger` instance has a channel (name) and a stack of handlers. Whenever
+you add a record to the logger, it traverses the handler stack. Each handler
+decides whether it fully handled the record, and if so, the propagation of the
+record ends there.
+
+This allows for flexible logging setups, for example having a `StreamHandler` at
+the bottom of the stack that will log anything to disk, and on top of that add
+a `MailHandler` that will send emails only when an error message is logged.
+Handlers also have a `$bubble` property which defines whether they block the
+record or not if they handled it. In this example, setting the `MailHandler`'s
+`$bubble` argument to false means that records handled by the `MailHandler` will
+not propagate to the `StreamHandler` anymore.
+
+You can create many `Logger`s, each defining a channel (e.g.: db, request,
+router, ..) and each of them combining various handlers, which can be shared
+or not. The channel is reflected in the logs and allows you to easily see or
+filter records.
+
+Each Handler also has a Formatter, a default one with settings that make sense
+will be created if you don't set one. The formatters normalize and format
+incoming records so that they can be used by the handlers to output useful
+information.
+
+Custom severity levels are not available. Only the eight
+[RFC 5424](http://tools.ietf.org/html/rfc5424) levels (debug, info, notice,
+warning, error, critical, alert, emergency) are present for basic filtering
+purposes, but for sorting and other use cases that would require
+flexibility, you should add Processors to the Logger that can add extra
+information (tags, user ip, ..) to the records before they are handled.
+
+## Log Levels
+
+Monolog supports the logging levels described by [RFC 5424](http://tools.ietf.org/html/rfc5424).
+
+- **DEBUG** (100): Detailed debug information.
+
+- **INFO** (200): Interesting events. Examples: User logs in, SQL logs.
+
+- **NOTICE** (250): Normal but significant events.
+
+- **WARNING** (300): Exceptional occurrences that are not errors. Examples:
+ Use of deprecated APIs, poor use of an API, undesirable things that are not
+ necessarily wrong.
+
+- **ERROR** (400): Runtime errors that do not require immediate action but
+ should typically be logged and monitored.
+
+- **CRITICAL** (500): Critical conditions. Example: Application component
+ unavailable, unexpected exception.
+
+- **ALERT** (550): Action must be taken immediately. Example: Entire website
+ down, database unavailable, etc. This should trigger the SMS alerts and wake
+ you up.
+
+- **EMERGENCY** (600): Emergency: system is unusable.
+
+## Configuring a logger
+
+Here is a basic setup to log to a file and to firephp on the DEBUG level:
+
+```php
+<?php
+
+use Monolog\Logger;
+use Monolog\Handler\StreamHandler;
+use Monolog\Handler\FirePHPHandler;
+
+// Create the logger
+$logger = new Logger('my_logger');
+// Now add some handlers
+$logger->pushHandler(new StreamHandler(__DIR__.'/my_app.log', Logger::DEBUG));
+$logger->pushHandler(new FirePHPHandler());
+
+// You can now use your logger
+$logger->addInfo('My logger is now ready');
+```
+
+Let's explain it. The first step is to create the logger instance which will
+be used in your code. The argument is a channel name, which is useful when
+you use several loggers (see below for more details about it).
+
+The logger itself does not know how to handle a record. It delegates it to
+some handlers. The code above registers two handlers in the stack to allow
+handling records in two different ways.
+
+Note that the FirePHPHandler is called first as it is added on top of the
+stack. This allows you to temporarily add a logger with bubbling disabled if
+you want to override other configured loggers.
+
+> If you use Monolog standalone and are looking for an easy way to
+> configure many handlers, the [theorchard/monolog-cascade](https://github.com/theorchard/monolog-cascade)
+> can help you build complex logging configs via PHP arrays, yaml or json configs.
+
+## Adding extra data in the records
+
+Monolog provides two different ways to add extra informations along the simple
+textual message.
+
+### Using the logging context
+
+The first way is the context, allowing to pass an array of data along the
+record:
+
+```php
+<?php
+
+$logger->addInfo('Adding a new user', array('username' => 'Seldaek'));
+```
+
+Simple handlers (like the StreamHandler for instance) will simply format
+the array to a string but richer handlers can take advantage of the context
+(FirePHP is able to display arrays in pretty way for instance).
+
+### Using processors
+
+The second way is to add extra data for all records by using a processor.
+Processors can be any callable. They will get the record as parameter and
+must return it after having eventually changed the `extra` part of it. Let's
+write a processor adding some dummy data in the record:
+
+```php
+<?php
+
+$logger->pushProcessor(function ($record) {
+ $record['extra']['dummy'] = 'Hello world!';
+
+ return $record;
+});
+```
+
+Monolog provides some built-in processors that can be used in your project.
+Look at the [dedicated chapter](https://github.com/Seldaek/monolog/blob/master/doc/02-handlers-formatters-processors.md#processors) for the list.
+
+> Tip: processors can also be registered on a specific handler instead of
+ the logger to apply only for this handler.
+
+## Leveraging channels
+
+Channels are a great way to identify to which part of the application a record
+is related. This is useful in big applications (and is leveraged by
+MonologBundle in Symfony2).
+
+Picture two loggers sharing a handler that writes to a single log file.
+Channels would allow you to identify the logger that issued every record.
+You can easily grep through the log files filtering this or that channel.
+
+```php
+<?php
+
+use Monolog\Logger;
+use Monolog\Handler\StreamHandler;
+use Monolog\Handler\FirePHPHandler;
+
+// Create some handlers
+$stream = new StreamHandler(__DIR__.'/my_app.log', Logger::DEBUG);
+$firephp = new FirePHPHandler();
+
+// Create the main logger of the app
+$logger = new Logger('my_logger');
+$logger->pushHandler($stream);
+$logger->pushHandler($firephp);
+
+// Create a logger for the security-related stuff with a different channel
+$securityLogger = new Logger('security');
+$securityLogger->pushHandler($stream);
+$securityLogger->pushHandler($firephp);
+
+// Or clone the first one to only change the channel
+$securityLogger = $logger->withName('security');
+```
+
+## Customizing the log format
+
+In Monolog it's easy to customize the format of the logs written into files,
+sockets, mails, databases and other handlers. Most of the handlers use the
+
+```php
+$record['formatted']
+```
+
+value to be automatically put into the log device. This value depends on the
+formatter settings. You can choose between predefined formatter classes or
+write your own (e.g. a multiline text file for human-readable output).
+
+To configure a predefined formatter class, just set it as the handler's field:
+
+```php
+// the default date format is "Y-m-d H:i:s"
+$dateFormat = "Y n j, g:i a";
+// the default output format is "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n"
+$output = "%datetime% > %level_name% > %message% %context% %extra%\n";
+// finally, create a formatter
+$formatter = new LineFormatter($output, $dateFormat);
+
+// Create a handler
+$stream = new StreamHandler(__DIR__.'/my_app.log', Logger::DEBUG);
+$stream->setFormatter($formatter);
+// bind it to a logger object
+$securityLogger = new Logger('security');
+$securityLogger->pushHandler($stream);
+```
+
+You may also reuse the same formatter between multiple handlers and share those
+handlers between multiple loggers.
+
+[Handlers, Formatters and Processors](02-handlers-formatters-processors.md) &rarr;
diff --git a/admin/survey/minify/vendor/monolog/monolog/doc/02-handlers-formatters-processors.md b/admin/survey/minify/vendor/monolog/monolog/doc/02-handlers-formatters-processors.md
new file mode 100644
index 0000000..7a0df3b
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/doc/02-handlers-formatters-processors.md
@@ -0,0 +1,157 @@
+# Handlers, Formatters and Processors
+
+- [Handlers](#handlers)
+ - [Log to files and syslog](#log-to-files-and-syslog)
+ - [Send alerts and emails](#send-alerts-and-emails)
+ - [Log specific servers and networked logging](#log-specific-servers-and-networked-logging)
+ - [Logging in development](#logging-in-development)
+ - [Log to databases](#log-to-databases)
+ - [Wrappers / Special Handlers](#wrappers--special-handlers)
+- [Formatters](#formatters)
+- [Processors](#processors)
+- [Third Party Packages](#third-party-packages)
+
+## Handlers
+
+### Log to files and syslog
+
+- _StreamHandler_: Logs records into any PHP stream, use this for log files.
+- _RotatingFileHandler_: Logs records to a file and creates one logfile per day.
+ It will also delete files older than `$maxFiles`. You should use
+ [logrotate](http://linuxcommand.org/man_pages/logrotate8.html) for high profile
+ setups though, this is just meant as a quick and dirty solution.
+- _SyslogHandler_: Logs records to the syslog.
+- _ErrorLogHandler_: Logs records to PHP's
+ [`error_log()`](http://docs.php.net/manual/en/function.error-log.php) function.
+
+### Send alerts and emails
+
+- _NativeMailerHandler_: Sends emails using PHP's
+ [`mail()`](http://php.net/manual/en/function.mail.php) function.
+- _SwiftMailerHandler_: Sends emails using a [`Swift_Mailer`](http://swiftmailer.org/) instance.
+- _PushoverHandler_: Sends mobile notifications via the [Pushover](https://www.pushover.net/) API.
+- _HipChatHandler_: Logs records to a [HipChat](http://hipchat.com) chat room using its API.
+- _FlowdockHandler_: Logs records to a [Flowdock](https://www.flowdock.com/) account.
+- _SlackHandler_: Logs records to a [Slack](https://www.slack.com/) account using the Slack API.
+- _SlackbotHandler_: Logs records to a [Slack](https://www.slack.com/) account using the Slackbot incoming hook.
+- _SlackWebhookHandler_: Logs records to a [Slack](https://www.slack.com/) account using Slack Webhooks.
+- _MandrillHandler_: Sends emails via the Mandrill API using a [`Swift_Message`](http://swiftmailer.org/) instance.
+- _FleepHookHandler_: Logs records to a [Fleep](https://fleep.io/) conversation using Webhooks.
+- _IFTTTHandler_: Notifies an [IFTTT](https://ifttt.com/maker) trigger with the log channel, level name and message.
+
+### Log specific servers and networked logging
+
+- _SocketHandler_: Logs records to [sockets](http://php.net/fsockopen), use this
+ for UNIX and TCP sockets. See an [example](sockets.md).
+- _AmqpHandler_: Logs records to an [amqp](http://www.amqp.org/) compatible
+ server. Requires the [php-amqp](http://pecl.php.net/package/amqp) extension (1.0+).
+- _GelfHandler_: Logs records to a [Graylog2](http://www.graylog2.org) server.
+- _CubeHandler_: Logs records to a [Cube](http://square.github.com/cube/) server.
+- _RavenHandler_: Logs records to a [Sentry](http://getsentry.com/) server using
+ [raven](https://packagist.org/packages/raven/raven).
+- _ZendMonitorHandler_: Logs records to the Zend Monitor present in Zend Server.
+- _NewRelicHandler_: Logs records to a [NewRelic](http://newrelic.com/) application.
+- _LogglyHandler_: Logs records to a [Loggly](http://www.loggly.com/) account.
+- _RollbarHandler_: Logs records to a [Rollbar](https://rollbar.com/) account.
+- _SyslogUdpHandler_: Logs records to a remote [Syslogd](http://www.rsyslog.com/) server.
+- _LogEntriesHandler_: Logs records to a [LogEntries](http://logentries.com/) account.
+
+### Logging in development
+
+- _FirePHPHandler_: Handler for [FirePHP](http://www.firephp.org/), providing
+ inline `console` messages within [FireBug](http://getfirebug.com/).
+- _ChromePHPHandler_: Handler for [ChromePHP](http://www.chromephp.com/), providing
+ inline `console` messages within Chrome.
+- _BrowserConsoleHandler_: Handler to send logs to browser's Javascript `console` with
+ no browser extension required. Most browsers supporting `console` API are supported.
+- _PHPConsoleHandler_: Handler for [PHP Console](https://chrome.google.com/webstore/detail/php-console/nfhmhhlpfleoednkpnnnkolmclajemef), providing
+ inline `console` and notification popup messages within Chrome.
+
+### Log to databases
+
+- _RedisHandler_: Logs records to a [redis](http://redis.io) server.
+- _MongoDBHandler_: Handler to write records in MongoDB via a
+ [Mongo](http://pecl.php.net/package/mongo) extension connection.
+- _CouchDBHandler_: Logs records to a CouchDB server.
+- _DoctrineCouchDBHandler_: Logs records to a CouchDB server via the Doctrine CouchDB ODM.
+- _ElasticSearchHandler_: Logs records to an Elastic Search server.
+- _DynamoDbHandler_: Logs records to a DynamoDB table with the [AWS SDK](https://github.com/aws/aws-sdk-php).
+
+### Wrappers / Special Handlers
+
+- _FingersCrossedHandler_: A very interesting wrapper. It takes a logger as
+ parameter and will accumulate log records of all levels until a record
+ exceeds the defined severity level. At which point it delivers all records,
+ including those of lower severity, to the handler it wraps. This means that
+ until an error actually happens you will not see anything in your logs, but
+ when it happens you will have the full information, including debug and info
+ records. This provides you with all the information you need, but only when
+ you need it.
+- _DeduplicationHandler_: Useful if you are sending notifications or emails
+ when critical errors occur. It takes a logger as parameter and will
+ accumulate log records of all levels until the end of the request (or
+ `flush()` is called). At that point it delivers all records to the handler
+ it wraps, but only if the records are unique over a given time period
+ (60seconds by default). If the records are duplicates they are simply
+ discarded. The main use of this is in case of critical failure like if your
+ database is unreachable for example all your requests will fail and that
+ can result in a lot of notifications being sent. Adding this handler reduces
+ the amount of notifications to a manageable level.
+- _WhatFailureGroupHandler_: This handler extends the _GroupHandler_ ignoring
+ exceptions raised by each child handler. This allows you to ignore issues
+ where a remote tcp connection may have died but you do not want your entire
+ application to crash and may wish to continue to log to other handlers.
+- _BufferHandler_: This handler will buffer all the log records it receives
+ until `close()` is called at which point it will call `handleBatch()` on the
+ handler it wraps with all the log messages at once. This is very useful to
+ send an email with all records at once for example instead of having one mail
+ for every log record.
+- _GroupHandler_: This handler groups other handlers. Every record received is
+ sent to all the handlers it is configured with.
+- _FilterHandler_: This handler only lets records of the given levels through
+ to the wrapped handler.
+- _SamplingHandler_: Wraps around another handler and lets you sample records
+ if you only want to store some of them.
+- _NullHandler_: Any record it can handle will be thrown away. This can be used
+ to put on top of an existing handler stack to disable it temporarily.
+- _PsrHandler_: Can be used to forward log records to an existing PSR-3 logger
+- _TestHandler_: Used for testing, it records everything that is sent to it and
+ has accessors to read out the information.
+- _HandlerWrapper_: A simple handler wrapper you can inherit from to create
+ your own wrappers easily.
+
+## Formatters
+
+- _LineFormatter_: Formats a log record into a one-line string.
+- _HtmlFormatter_: Used to format log records into a human readable html table, mainly suitable for emails.
+- _NormalizerFormatter_: Normalizes objects/resources down to strings so a record can easily be serialized/encoded.
+- _ScalarFormatter_: Used to format log records into an associative array of scalar values.
+- _JsonFormatter_: Encodes a log record into json.
+- _WildfireFormatter_: Used to format log records into the Wildfire/FirePHP protocol, only useful for the FirePHPHandler.
+- _ChromePHPFormatter_: Used to format log records into the ChromePHP format, only useful for the ChromePHPHandler.
+- _GelfMessageFormatter_: Used to format log records into Gelf message instances, only useful for the GelfHandler.
+- _LogstashFormatter_: Used to format log records into [logstash](http://logstash.net/) event json, useful for any handler listed under inputs [here](http://logstash.net/docs/latest).
+- _ElasticaFormatter_: Used to format log records into an Elastica\Document object, only useful for the ElasticSearchHandler.
+- _LogglyFormatter_: Used to format log records into Loggly messages, only useful for the LogglyHandler.
+- _FlowdockFormatter_: Used to format log records into Flowdock messages, only useful for the FlowdockHandler.
+- _MongoDBFormatter_: Converts \DateTime instances to \MongoDate and objects recursively to arrays, only useful with the MongoDBHandler.
+
+## Processors
+
+- _PsrLogMessageProcessor_: Processes a log record's message according to PSR-3 rules, replacing `{foo}` with the value from `$context['foo']`.
+- _IntrospectionProcessor_: Adds the line/file/class/method from which the log call originated.
+- _WebProcessor_: Adds the current request URI, request method and client IP to a log record.
+- _MemoryUsageProcessor_: Adds the current memory usage to a log record.
+- _MemoryPeakUsageProcessor_: Adds the peak memory usage to a log record.
+- _ProcessIdProcessor_: Adds the process id to a log record.
+- _UidProcessor_: Adds a unique identifier to a log record.
+- _GitProcessor_: Adds the current git branch and commit to a log record.
+- _TagProcessor_: Adds an array of predefined tags to a log record.
+
+## Third Party Packages
+
+Third party handlers, formatters and processors are
+[listed in the wiki](https://github.com/Seldaek/monolog/wiki/Third-Party-Packages). You
+can also add your own there if you publish one.
+
+&larr; [Usage](01-usage.md) | [Utility classes](03-utilities.md) &rarr;
diff --git a/admin/survey/minify/vendor/monolog/monolog/doc/03-utilities.md b/admin/survey/minify/vendor/monolog/monolog/doc/03-utilities.md
new file mode 100644
index 0000000..f72479f
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/doc/03-utilities.md
@@ -0,0 +1,13 @@
+# Utilities
+
+- _Registry_: The `Monolog\Registry` class lets you configure global loggers that you
+ can then statically access from anywhere. It is not really a best practice but can
+ help in some older codebases or for ease of use.
+- _ErrorHandler_: The `Monolog\ErrorHandler` class allows you to easily register
+ a Logger instance as an exception handler, error handler or fatal error handler.
+- _ErrorLevelActivationStrategy_: Activates a FingersCrossedHandler when a certain log
+ level is reached.
+- _ChannelLevelActivationStrategy_: Activates a FingersCrossedHandler when a certain
+ log level is reached, depending on which channel received the log record.
+
+&larr; [Handlers, Formatters and Processors](02-handlers-formatters-processors.md) | [Extending Monolog](04-extending.md) &rarr;
diff --git a/admin/survey/minify/vendor/monolog/monolog/doc/04-extending.md b/admin/survey/minify/vendor/monolog/monolog/doc/04-extending.md
new file mode 100644
index 0000000..3b720a8
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/doc/04-extending.md
@@ -0,0 +1,76 @@
+# Extending Monolog
+
+Monolog is fully extensible, allowing you to adapt your logger to your needs.
+
+## Writing your own handler
+
+Monolog provides many built-in handlers. But if the one you need does not
+exist, you can write it and use it in your logger. The only requirement is
+to implement `Monolog\Handler\HandlerInterface`.
+
+Let's write a PDOHandler to log records to a database. We will extend the
+abstract class provided by Monolog to keep things DRY.
+
+```php
+<?php
+
+use Monolog\Logger;
+use Monolog\Handler\AbstractProcessingHandler;
+
+class PDOHandler extends AbstractProcessingHandler
+{
+ private $initialized = false;
+ private $pdo;
+ private $statement;
+
+ public function __construct(PDO $pdo, $level = Logger::DEBUG, $bubble = true)
+ {
+ $this->pdo = $pdo;
+ parent::__construct($level, $bubble);
+ }
+
+ protected function write(array $record)
+ {
+ if (!$this->initialized) {
+ $this->initialize();
+ }
+
+ $this->statement->execute(array(
+ 'channel' => $record['channel'],
+ 'level' => $record['level'],
+ 'message' => $record['formatted'],
+ 'time' => $record['datetime']->format('U'),
+ ));
+ }
+
+ private function initialize()
+ {
+ $this->pdo->exec(
+ 'CREATE TABLE IF NOT EXISTS monolog '
+ .'(channel VARCHAR(255), level INTEGER, message LONGTEXT, time INTEGER UNSIGNED)'
+ );
+ $this->statement = $this->pdo->prepare(
+ 'INSERT INTO monolog (channel, level, message, time) VALUES (:channel, :level, :message, :time)'
+ );
+
+ $this->initialized = true;
+ }
+}
+```
+
+You can now use this handler in your logger:
+
+```php
+<?php
+
+$logger->pushHandler(new PDOHandler(new PDO('sqlite:logs.sqlite')));
+
+// You can now use your logger
+$logger->addInfo('My logger is now ready');
+```
+
+The `Monolog\Handler\AbstractProcessingHandler` class provides most of the
+logic needed for the handler, including the use of processors and the formatting
+of the record (which is why we use ``$record['formatted']`` instead of ``$record['message']``).
+
+&larr; [Utility classes](03-utilities.md)
diff --git a/admin/survey/minify/vendor/monolog/monolog/doc/sockets.md b/admin/survey/minify/vendor/monolog/monolog/doc/sockets.md
new file mode 100644
index 0000000..ceca280
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/doc/sockets.md
@@ -0,0 +1,39 @@
+Sockets Handler
+===============
+
+This handler allows you to write your logs to sockets using [fsockopen](http://php.net/fsockopen)
+or [pfsockopen](http://php.net/pfsockopen).
+
+Persistent sockets are mainly useful in web environments where you gain some performance not closing/opening
+the connections between requests.
+
+You can use a `unix://` prefix to access unix sockets and `udp://` to open UDP sockets instead of the default TCP.
+
+Basic Example
+-------------
+
+```php
+<?php
+
+use Monolog\Logger;
+use Monolog\Handler\SocketHandler;
+
+// Create the logger
+$logger = new Logger('my_logger');
+
+// Create the handler
+$handler = new SocketHandler('unix:///var/log/httpd_app_log.socket');
+$handler->setPersistent(true);
+
+// Now add the handler
+$logger->pushHandler($handler, Logger::DEBUG);
+
+// You can now use your logger
+$logger->addInfo('My logger is now ready');
+
+```
+
+In this example, using syslog-ng, you should see the log on the log server:
+
+ cweb1 [2012-02-26 00:12:03] my_logger.INFO: My logger is now ready [] []
+
diff --git a/admin/survey/minify/vendor/monolog/monolog/phpunit.xml.dist b/admin/survey/minify/vendor/monolog/monolog/phpunit.xml.dist
new file mode 100644
index 0000000..6bba620
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/phpunit.xml.dist
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<phpunit bootstrap="vendor/autoload.php" colors="true">
+ <testsuites>
+ <testsuite name="Monolog Test Suite">
+ <directory>tests/Monolog/</directory>
+ </testsuite>
+ </testsuites>
+
+ <filter>
+ <whitelist>
+ <directory suffix=".php">src/Monolog/</directory>
+ </whitelist>
+ </filter>
+
+ <php>
+ <ini name="date.timezone" value="UTC"/>
+ </php>
+</phpunit>
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/ErrorHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/ErrorHandler.php
new file mode 100644
index 0000000..a257cd9
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/ErrorHandler.php
@@ -0,0 +1,230 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog;
+
+use Psr\Log\LoggerInterface;
+use Psr\Log\LogLevel;
+use Monolog\Handler\AbstractHandler;
+
+/**
+ * Monolog error handler
+ *
+ * A facility to enable logging of runtime errors, exceptions and fatal errors.
+ *
+ * Quick setup: <code>ErrorHandler::register($logger);</code>
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class ErrorHandler
+{
+ private $logger;
+
+ private $previousExceptionHandler;
+ private $uncaughtExceptionLevel;
+
+ private $previousErrorHandler;
+ private $errorLevelMap;
+ private $handleOnlyReportedErrors;
+
+ private $hasFatalErrorHandler;
+ private $fatalLevel;
+ private $reservedMemory;
+ private static $fatalErrors = array(E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR, E_USER_ERROR);
+
+ public function __construct(LoggerInterface $logger)
+ {
+ $this->logger = $logger;
+ }
+
+ /**
+ * Registers a new ErrorHandler for a given Logger
+ *
+ * By default it will handle errors, exceptions and fatal errors
+ *
+ * @param LoggerInterface $logger
+ * @param array|false $errorLevelMap an array of E_* constant to LogLevel::* constant mapping, or false to disable error handling
+ * @param int|false $exceptionLevel a LogLevel::* constant, or false to disable exception handling
+ * @param int|false $fatalLevel a LogLevel::* constant, or false to disable fatal error handling
+ * @return ErrorHandler
+ */
+ public static function register(LoggerInterface $logger, $errorLevelMap = array(), $exceptionLevel = null, $fatalLevel = null)
+ {
+ //Forces the autoloader to run for LogLevel. Fixes an autoload issue at compile-time on PHP5.3. See https://github.com/Seldaek/monolog/pull/929
+ class_exists('\\Psr\\Log\\LogLevel', true);
+
+ $handler = new static($logger);
+ if ($errorLevelMap !== false) {
+ $handler->registerErrorHandler($errorLevelMap);
+ }
+ if ($exceptionLevel !== false) {
+ $handler->registerExceptionHandler($exceptionLevel);
+ }
+ if ($fatalLevel !== false) {
+ $handler->registerFatalHandler($fatalLevel);
+ }
+
+ return $handler;
+ }
+
+ public function registerExceptionHandler($level = null, $callPrevious = true)
+ {
+ $prev = set_exception_handler(array($this, 'handleException'));
+ $this->uncaughtExceptionLevel = $level;
+ if ($callPrevious && $prev) {
+ $this->previousExceptionHandler = $prev;
+ }
+ }
+
+ public function registerErrorHandler(array $levelMap = array(), $callPrevious = true, $errorTypes = -1, $handleOnlyReportedErrors = true)
+ {
+ $prev = set_error_handler(array($this, 'handleError'), $errorTypes);
+ $this->errorLevelMap = array_replace($this->defaultErrorLevelMap(), $levelMap);
+ if ($callPrevious) {
+ $this->previousErrorHandler = $prev ?: true;
+ }
+
+ $this->handleOnlyReportedErrors = $handleOnlyReportedErrors;
+ }
+
+ public function registerFatalHandler($level = null, $reservedMemorySize = 20)
+ {
+ register_shutdown_function(array($this, 'handleFatalError'));
+
+ $this->reservedMemory = str_repeat(' ', 1024 * $reservedMemorySize);
+ $this->fatalLevel = $level;
+ $this->hasFatalErrorHandler = true;
+ }
+
+ protected function defaultErrorLevelMap()
+ {
+ return array(
+ E_ERROR => LogLevel::CRITICAL,
+ E_WARNING => LogLevel::WARNING,
+ E_PARSE => LogLevel::ALERT,
+ E_NOTICE => LogLevel::NOTICE,
+ E_CORE_ERROR => LogLevel::CRITICAL,
+ E_CORE_WARNING => LogLevel::WARNING,
+ E_COMPILE_ERROR => LogLevel::ALERT,
+ E_COMPILE_WARNING => LogLevel::WARNING,
+ E_USER_ERROR => LogLevel::ERROR,
+ E_USER_WARNING => LogLevel::WARNING,
+ E_USER_NOTICE => LogLevel::NOTICE,
+ E_STRICT => LogLevel::NOTICE,
+ E_RECOVERABLE_ERROR => LogLevel::ERROR,
+ E_DEPRECATED => LogLevel::NOTICE,
+ E_USER_DEPRECATED => LogLevel::NOTICE,
+ );
+ }
+
+ /**
+ * @private
+ */
+ public function handleException($e)
+ {
+ $this->logger->log(
+ $this->uncaughtExceptionLevel === null ? LogLevel::ERROR : $this->uncaughtExceptionLevel,
+ sprintf('Uncaught Exception %s: "%s" at %s line %s', get_class($e), $e->getMessage(), $e->getFile(), $e->getLine()),
+ array('exception' => $e)
+ );
+
+ if ($this->previousExceptionHandler) {
+ call_user_func($this->previousExceptionHandler, $e);
+ }
+
+ exit(255);
+ }
+
+ /**
+ * @private
+ */
+ public function handleError($code, $message, $file = '', $line = 0, $context = array())
+ {
+ if ($this->handleOnlyReportedErrors && !(error_reporting() & $code)) {
+ return;
+ }
+
+ // fatal error codes are ignored if a fatal error handler is present as well to avoid duplicate log entries
+ if (!$this->hasFatalErrorHandler || !in_array($code, self::$fatalErrors, true)) {
+ $level = isset($this->errorLevelMap[$code]) ? $this->errorLevelMap[$code] : LogLevel::CRITICAL;
+ $this->logger->log($level, self::codeToString($code).': '.$message, array('code' => $code, 'message' => $message, 'file' => $file, 'line' => $line));
+ }
+
+ if ($this->previousErrorHandler === true) {
+ return false;
+ } elseif ($this->previousErrorHandler) {
+ return call_user_func($this->previousErrorHandler, $code, $message, $file, $line, $context);
+ }
+ }
+
+ /**
+ * @private
+ */
+ public function handleFatalError()
+ {
+ $this->reservedMemory = null;
+
+ $lastError = error_get_last();
+ if ($lastError && in_array($lastError['type'], self::$fatalErrors, true)) {
+ $this->logger->log(
+ $this->fatalLevel === null ? LogLevel::ALERT : $this->fatalLevel,
+ 'Fatal Error ('.self::codeToString($lastError['type']).'): '.$lastError['message'],
+ array('code' => $lastError['type'], 'message' => $lastError['message'], 'file' => $lastError['file'], 'line' => $lastError['line'])
+ );
+
+ if ($this->logger instanceof Logger) {
+ foreach ($this->logger->getHandlers() as $handler) {
+ if ($handler instanceof AbstractHandler) {
+ $handler->close();
+ }
+ }
+ }
+ }
+ }
+
+ private static function codeToString($code)
+ {
+ switch ($code) {
+ case E_ERROR:
+ return 'E_ERROR';
+ case E_WARNING:
+ return 'E_WARNING';
+ case E_PARSE:
+ return 'E_PARSE';
+ case E_NOTICE:
+ return 'E_NOTICE';
+ case E_CORE_ERROR:
+ return 'E_CORE_ERROR';
+ case E_CORE_WARNING:
+ return 'E_CORE_WARNING';
+ case E_COMPILE_ERROR:
+ return 'E_COMPILE_ERROR';
+ case E_COMPILE_WARNING:
+ return 'E_COMPILE_WARNING';
+ case E_USER_ERROR:
+ return 'E_USER_ERROR';
+ case E_USER_WARNING:
+ return 'E_USER_WARNING';
+ case E_USER_NOTICE:
+ return 'E_USER_NOTICE';
+ case E_STRICT:
+ return 'E_STRICT';
+ case E_RECOVERABLE_ERROR:
+ return 'E_RECOVERABLE_ERROR';
+ case E_DEPRECATED:
+ return 'E_DEPRECATED';
+ case E_USER_DEPRECATED:
+ return 'E_USER_DEPRECATED';
+ }
+
+ return 'Unknown PHP error';
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php
new file mode 100644
index 0000000..feef190
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/ChromePHPFormatter.php
@@ -0,0 +1,78 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\Logger;
+
+/**
+ * Formats a log message according to the ChromePHP array format
+ *
+ * @author Christophe Coevoet <stof@notk.org>
+ */
+class ChromePHPFormatter implements FormatterInterface
+{
+ /**
+ * Translates Monolog log levels to Wildfire levels.
+ */
+ private $logLevels = array(
+ Logger::DEBUG => 'log',
+ Logger::INFO => 'info',
+ Logger::NOTICE => 'info',
+ Logger::WARNING => 'warn',
+ Logger::ERROR => 'error',
+ Logger::CRITICAL => 'error',
+ Logger::ALERT => 'error',
+ Logger::EMERGENCY => 'error',
+ );
+
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ // Retrieve the line and file if set and remove them from the formatted extra
+ $backtrace = 'unknown';
+ if (isset($record['extra']['file'], $record['extra']['line'])) {
+ $backtrace = $record['extra']['file'].' : '.$record['extra']['line'];
+ unset($record['extra']['file'], $record['extra']['line']);
+ }
+
+ $message = array('message' => $record['message']);
+ if ($record['context']) {
+ $message['context'] = $record['context'];
+ }
+ if ($record['extra']) {
+ $message['extra'] = $record['extra'];
+ }
+ if (count($message) === 1) {
+ $message = reset($message);
+ }
+
+ return array(
+ $record['channel'],
+ $message,
+ $backtrace,
+ $this->logLevels[$record['level']],
+ );
+ }
+
+ public function formatBatch(array $records)
+ {
+ $formatted = array();
+
+ foreach ($records as $record) {
+ $formatted[] = $this->format($record);
+ }
+
+ return $formatted;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php
new file mode 100644
index 0000000..732c434
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/ElasticaFormatter.php
@@ -0,0 +1,89 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Elastica\Document;
+
+/**
+ * Format a log message into an Elastica Document
+ *
+ * @author Jelle Vink <jelle.vink@gmail.com>
+ */
+class ElasticaFormatter extends NormalizerFormatter
+{
+ /**
+ * @var string Elastic search index name
+ */
+ protected $index;
+
+ /**
+ * @var string Elastic search document type
+ */
+ protected $type;
+
+ /**
+ * @param string $index Elastic Search index name
+ * @param string $type Elastic Search document type
+ */
+ public function __construct($index, $type)
+ {
+ // elasticsearch requires a ISO 8601 format date with optional millisecond precision.
+ parent::__construct('Y-m-d\TH:i:s.uP');
+
+ $this->index = $index;
+ $this->type = $type;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ $record = parent::format($record);
+
+ return $this->getDocument($record);
+ }
+
+ /**
+ * Getter index
+ * @return string
+ */
+ public function getIndex()
+ {
+ return $this->index;
+ }
+
+ /**
+ * Getter type
+ * @return string
+ */
+ public function getType()
+ {
+ return $this->type;
+ }
+
+ /**
+ * Convert a log message into an Elastica Document
+ *
+ * @param array $record Log message
+ * @return Document
+ */
+ protected function getDocument($record)
+ {
+ $document = new Document();
+ $document->setData($record);
+ $document->setType($this->type);
+ $document->setIndex($this->index);
+
+ return $document;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php
new file mode 100644
index 0000000..79ef79e
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/FlowdockFormatter.php
@@ -0,0 +1,116 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+/**
+ * formats the record to be used in the FlowdockHandler
+ *
+ * @author Dominik Liebler <liebler.dominik@gmail.com>
+ */
+class FlowdockFormatter implements FormatterInterface
+{
+ /**
+ * @var string
+ */
+ private $source;
+
+ /**
+ * @var string
+ */
+ private $sourceEmail;
+
+ /**
+ * @param string $source
+ * @param string $sourceEmail
+ */
+ public function __construct($source, $sourceEmail)
+ {
+ $this->source = $source;
+ $this->sourceEmail = $sourceEmail;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ $tags = array(
+ '#logs',
+ '#' . strtolower($record['level_name']),
+ '#' . $record['channel'],
+ );
+
+ foreach ($record['extra'] as $value) {
+ $tags[] = '#' . $value;
+ }
+
+ $subject = sprintf(
+ 'in %s: %s - %s',
+ $this->source,
+ $record['level_name'],
+ $this->getShortMessage($record['message'])
+ );
+
+ $record['flowdock'] = array(
+ 'source' => $this->source,
+ 'from_address' => $this->sourceEmail,
+ 'subject' => $subject,
+ 'content' => $record['message'],
+ 'tags' => $tags,
+ 'project' => $this->source,
+ );
+
+ return $record;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function formatBatch(array $records)
+ {
+ $formatted = array();
+
+ foreach ($records as $record) {
+ $formatted[] = $this->format($record);
+ }
+
+ return $formatted;
+ }
+
+ /**
+ * @param string $message
+ *
+ * @return string
+ */
+ public function getShortMessage($message)
+ {
+ static $hasMbString;
+
+ if (null === $hasMbString) {
+ $hasMbString = function_exists('mb_strlen');
+ }
+
+ $maxLength = 45;
+
+ if ($hasMbString) {
+ if (mb_strlen($message, 'UTF-8') > $maxLength) {
+ $message = mb_substr($message, 0, $maxLength - 4, 'UTF-8') . ' ...';
+ }
+ } else {
+ if (strlen($message) > $maxLength) {
+ $message = substr($message, 0, $maxLength - 4) . ' ...';
+ }
+ }
+
+ return $message;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php
new file mode 100644
index 0000000..ea76f37
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/FluentdFormatter.php
@@ -0,0 +1,85 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+/**
+ * Class FluentdFormatter
+ *
+ * Serializes a log message to Fluentd unix socket protocol
+ *
+ * Fluentd config:
+ *
+ * <source>
+ * type unix
+ * path /var/run/td-agent/td-agent.sock
+ * </source>
+ *
+ * Monolog setup:
+ *
+ * $logger = new Monolog\Logger('fluent.tag');
+ * $fluentHandler = new Monolog\Handler\SocketHandler('unix:///var/run/td-agent/td-agent.sock');
+ * $fluentHandler->setFormatter(new Monolog\Formatter\FluentdFormatter());
+ * $logger->pushHandler($fluentHandler);
+ *
+ * @author Andrius Putna <fordnox@gmail.com>
+ */
+class FluentdFormatter implements FormatterInterface
+{
+ /**
+ * @var bool $levelTag should message level be a part of the fluentd tag
+ */
+ protected $levelTag = false;
+
+ public function __construct($levelTag = false)
+ {
+ if (!function_exists('json_encode')) {
+ throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s FluentdUnixFormatter');
+ }
+
+ $this->levelTag = (bool) $levelTag;
+ }
+
+ public function isUsingLevelsInTag()
+ {
+ return $this->levelTag;
+ }
+
+ public function format(array $record)
+ {
+ $tag = $record['channel'];
+ if ($this->levelTag) {
+ $tag .= '.' . strtolower($record['level_name']);
+ }
+
+ $message = array(
+ 'message' => $record['message'],
+ 'extra' => $record['extra'],
+ );
+
+ if (!$this->levelTag) {
+ $message['level'] = $record['level'];
+ $message['level_name'] = $record['level_name'];
+ }
+
+ return json_encode(array($tag, $record['datetime']->getTimestamp(), $message));
+ }
+
+ public function formatBatch(array $records)
+ {
+ $message = '';
+ foreach ($records as $record) {
+ $message .= $this->format($record);
+ }
+
+ return $message;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php
new file mode 100644
index 0000000..b95ee8e
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/FormatterInterface.php
@@ -0,0 +1,36 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+/**
+ * Interface for formatters
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+interface FormatterInterface
+{
+ /**
+ * Formats a log record.
+ *
+ * @param array $record A record to format
+ * @return mixed The formatted record
+ */
+ public function format(array $record);
+
+ /**
+ * Formats a set of log records.
+ *
+ * @param array $records A set of records to format
+ * @return mixed The formatted set of records
+ */
+ public function formatBatch(array $records);
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php
new file mode 100644
index 0000000..c58424a
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/GelfMessageFormatter.php
@@ -0,0 +1,138 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\Logger;
+use Gelf\Message;
+
+/**
+ * Serializes a log message to GELF
+ * @see http://www.graylog2.org/about/gelf
+ *
+ * @author Matt Lehner <mlehner@gmail.com>
+ */
+class GelfMessageFormatter extends NormalizerFormatter
+{
+ const DEFAULT_MAX_LENGTH = 32766;
+
+ /**
+ * @var string the name of the system for the Gelf log message
+ */
+ protected $systemName;
+
+ /**
+ * @var string a prefix for 'extra' fields from the Monolog record (optional)
+ */
+ protected $extraPrefix;
+
+ /**
+ * @var string a prefix for 'context' fields from the Monolog record (optional)
+ */
+ protected $contextPrefix;
+
+ /**
+ * @var int max length per field
+ */
+ protected $maxLength;
+
+ /**
+ * Translates Monolog log levels to Graylog2 log priorities.
+ */
+ private $logLevels = array(
+ Logger::DEBUG => 7,
+ Logger::INFO => 6,
+ Logger::NOTICE => 5,
+ Logger::WARNING => 4,
+ Logger::ERROR => 3,
+ Logger::CRITICAL => 2,
+ Logger::ALERT => 1,
+ Logger::EMERGENCY => 0,
+ );
+
+ public function __construct($systemName = null, $extraPrefix = null, $contextPrefix = 'ctxt_', $maxLength = null)
+ {
+ parent::__construct('U.u');
+
+ $this->systemName = $systemName ?: gethostname();
+
+ $this->extraPrefix = $extraPrefix;
+ $this->contextPrefix = $contextPrefix;
+ $this->maxLength = is_null($maxLength) ? self::DEFAULT_MAX_LENGTH : $maxLength;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ $record = parent::format($record);
+
+ if (!isset($record['datetime'], $record['message'], $record['level'])) {
+ throw new \InvalidArgumentException('The record should at least contain datetime, message and level keys, '.var_export($record, true).' given');
+ }
+
+ $message = new Message();
+ $message
+ ->setTimestamp($record['datetime'])
+ ->setShortMessage((string) $record['message'])
+ ->setHost($this->systemName)
+ ->setLevel($this->logLevels[$record['level']]);
+
+ // message length + system name length + 200 for padding / metadata
+ $len = 200 + strlen((string) $record['message']) + strlen($this->systemName);
+
+ if ($len > $this->maxLength) {
+ $message->setShortMessage(substr($record['message'], 0, $this->maxLength));
+ }
+
+ if (isset($record['channel'])) {
+ $message->setFacility($record['channel']);
+ }
+ if (isset($record['extra']['line'])) {
+ $message->setLine($record['extra']['line']);
+ unset($record['extra']['line']);
+ }
+ if (isset($record['extra']['file'])) {
+ $message->setFile($record['extra']['file']);
+ unset($record['extra']['file']);
+ }
+
+ foreach ($record['extra'] as $key => $val) {
+ $val = is_scalar($val) || null === $val ? $val : $this->toJson($val);
+ $len = strlen($this->extraPrefix . $key . $val);
+ if ($len > $this->maxLength) {
+ $message->setAdditional($this->extraPrefix . $key, substr($val, 0, $this->maxLength));
+ break;
+ }
+ $message->setAdditional($this->extraPrefix . $key, $val);
+ }
+
+ foreach ($record['context'] as $key => $val) {
+ $val = is_scalar($val) || null === $val ? $val : $this->toJson($val);
+ $len = strlen($this->contextPrefix . $key . $val);
+ if ($len > $this->maxLength) {
+ $message->setAdditional($this->contextPrefix . $key, substr($val, 0, $this->maxLength));
+ break;
+ }
+ $message->setAdditional($this->contextPrefix . $key, $val);
+ }
+
+ if (null === $message->getFile() && isset($record['context']['exception']['file'])) {
+ if (preg_match("/^(.+):([0-9]+)$/", $record['context']['exception']['file'], $matches)) {
+ $message->setFile($matches[1]);
+ $message->setLine($matches[2]);
+ }
+ }
+
+ return $message;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php
new file mode 100644
index 0000000..4625107
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/HtmlFormatter.php
@@ -0,0 +1,141 @@
+<?php
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\Logger;
+
+/**
+ * Formats incoming records into an HTML table
+ *
+ * This is especially useful for html email logging
+ *
+ * @author Tiago Brito <tlfbrito@gmail.com>
+ */
+class HtmlFormatter extends NormalizerFormatter
+{
+ /**
+ * Translates Monolog log levels to html color priorities.
+ */
+ protected $logLevels = array(
+ Logger::DEBUG => '#cccccc',
+ Logger::INFO => '#468847',
+ Logger::NOTICE => '#3a87ad',
+ Logger::WARNING => '#c09853',
+ Logger::ERROR => '#f0ad4e',
+ Logger::CRITICAL => '#FF7708',
+ Logger::ALERT => '#C12A19',
+ Logger::EMERGENCY => '#000000',
+ );
+
+ /**
+ * @param string $dateFormat The format of the timestamp: one supported by DateTime::format
+ */
+ public function __construct($dateFormat = null)
+ {
+ parent::__construct($dateFormat);
+ }
+
+ /**
+ * Creates an HTML table row
+ *
+ * @param string $th Row header content
+ * @param string $td Row standard cell content
+ * @param bool $escapeTd false if td content must not be html escaped
+ * @return string
+ */
+ protected function addRow($th, $td = ' ', $escapeTd = true)
+ {
+ $th = htmlspecialchars($th, ENT_NOQUOTES, 'UTF-8');
+ if ($escapeTd) {
+ $td = '<pre>'.htmlspecialchars($td, ENT_NOQUOTES, 'UTF-8').'</pre>';
+ }
+
+ return "<tr style=\"padding: 4px;spacing: 0;text-align: left;\">\n<th style=\"background: #cccccc\" width=\"100px\">$th:</th>\n<td style=\"padding: 4px;spacing: 0;text-align: left;background: #eeeeee\">".$td."</td>\n</tr>";
+ }
+
+ /**
+ * Create a HTML h1 tag
+ *
+ * @param string $title Text to be in the h1
+ * @param int $level Error level
+ * @return string
+ */
+ protected function addTitle($title, $level)
+ {
+ $title = htmlspecialchars($title, ENT_NOQUOTES, 'UTF-8');
+
+ return '<h1 style="background: '.$this->logLevels[$level].';color: #ffffff;padding: 5px;" class="monolog-output">'.$title.'</h1>';
+ }
+
+ /**
+ * Formats a log record.
+ *
+ * @param array $record A record to format
+ * @return mixed The formatted record
+ */
+ public function format(array $record)
+ {
+ $output = $this->addTitle($record['level_name'], $record['level']);
+ $output .= '<table cellspacing="1" width="100%" class="monolog-output">';
+
+ $output .= $this->addRow('Message', (string) $record['message']);
+ $output .= $this->addRow('Time', $record['datetime']->format($this->dateFormat));
+ $output .= $this->addRow('Channel', $record['channel']);
+ if ($record['context']) {
+ $embeddedTable = '<table cellspacing="1" width="100%">';
+ foreach ($record['context'] as $key => $value) {
+ $embeddedTable .= $this->addRow($key, $this->convertToString($value));
+ }
+ $embeddedTable .= '</table>';
+ $output .= $this->addRow('Context', $embeddedTable, false);
+ }
+ if ($record['extra']) {
+ $embeddedTable = '<table cellspacing="1" width="100%">';
+ foreach ($record['extra'] as $key => $value) {
+ $embeddedTable .= $this->addRow($key, $this->convertToString($value));
+ }
+ $embeddedTable .= '</table>';
+ $output .= $this->addRow('Extra', $embeddedTable, false);
+ }
+
+ return $output.'</table>';
+ }
+
+ /**
+ * Formats a set of log records.
+ *
+ * @param array $records A set of records to format
+ * @return mixed The formatted set of records
+ */
+ public function formatBatch(array $records)
+ {
+ $message = '';
+ foreach ($records as $record) {
+ $message .= $this->format($record);
+ }
+
+ return $message;
+ }
+
+ protected function convertToString($data)
+ {
+ if (null === $data || is_scalar($data)) {
+ return (string) $data;
+ }
+
+ $data = $this->normalize($data);
+ if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
+ return json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
+ }
+
+ return str_replace('\\/', '/', json_encode($data));
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php
new file mode 100644
index 0000000..4bb94dc
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/JsonFormatter.php
@@ -0,0 +1,208 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Exception;
+use Throwable;
+
+/**
+ * Encodes whatever record data is passed to it as json
+ *
+ * This can be useful to log to databases or remote APIs
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class JsonFormatter extends NormalizerFormatter
+{
+ const BATCH_MODE_JSON = 1;
+ const BATCH_MODE_NEWLINES = 2;
+
+ protected $batchMode;
+ protected $appendNewline;
+
+ /**
+ * @var bool
+ */
+ protected $includeStacktraces = false;
+
+ /**
+ * @param int $batchMode
+ * @param bool $appendNewline
+ */
+ public function __construct($batchMode = self::BATCH_MODE_JSON, $appendNewline = true)
+ {
+ $this->batchMode = $batchMode;
+ $this->appendNewline = $appendNewline;
+ }
+
+ /**
+ * The batch mode option configures the formatting style for
+ * multiple records. By default, multiple records will be
+ * formatted as a JSON-encoded array. However, for
+ * compatibility with some API endpoints, alternative styles
+ * are available.
+ *
+ * @return int
+ */
+ public function getBatchMode()
+ {
+ return $this->batchMode;
+ }
+
+ /**
+ * True if newlines are appended to every formatted record
+ *
+ * @return bool
+ */
+ public function isAppendingNewlines()
+ {
+ return $this->appendNewline;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ return $this->toJson($this->normalize($record), true) . ($this->appendNewline ? "\n" : '');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function formatBatch(array $records)
+ {
+ switch ($this->batchMode) {
+ case static::BATCH_MODE_NEWLINES:
+ return $this->formatBatchNewlines($records);
+
+ case static::BATCH_MODE_JSON:
+ default:
+ return $this->formatBatchJson($records);
+ }
+ }
+
+ /**
+ * @param bool $include
+ */
+ public function includeStacktraces($include = true)
+ {
+ $this->includeStacktraces = $include;
+ }
+
+ /**
+ * Return a JSON-encoded array of records.
+ *
+ * @param array $records
+ * @return string
+ */
+ protected function formatBatchJson(array $records)
+ {
+ return $this->toJson($this->normalize($records), true);
+ }
+
+ /**
+ * Use new lines to separate records instead of a
+ * JSON-encoded array.
+ *
+ * @param array $records
+ * @return string
+ */
+ protected function formatBatchNewlines(array $records)
+ {
+ $instance = $this;
+
+ $oldNewline = $this->appendNewline;
+ $this->appendNewline = false;
+ array_walk($records, function (&$value, $key) use ($instance) {
+ $value = $instance->format($value);
+ });
+ $this->appendNewline = $oldNewline;
+
+ return implode("\n", $records);
+ }
+
+ /**
+ * Normalizes given $data.
+ *
+ * @param mixed $data
+ *
+ * @return mixed
+ */
+ protected function normalize($data)
+ {
+ if (is_array($data) || $data instanceof \Traversable) {
+ $normalized = array();
+
+ $count = 1;
+ foreach ($data as $key => $value) {
+ if ($count++ >= 1000) {
+ $normalized['...'] = 'Over 1000 items, aborting normalization';
+ break;
+ }
+ $normalized[$key] = $this->normalize($value);
+ }
+
+ return $normalized;
+ }
+
+ if ($data instanceof Exception || $data instanceof Throwable) {
+ return $this->normalizeException($data);
+ }
+
+ return $data;
+ }
+
+ /**
+ * Normalizes given exception with or without its own stack trace based on
+ * `includeStacktraces` property.
+ *
+ * @param Exception|Throwable $e
+ *
+ * @return array
+ */
+ protected function normalizeException($e)
+ {
+ // TODO 2.0 only check for Throwable
+ if (!$e instanceof Exception && !$e instanceof Throwable) {
+ throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.get_class($e));
+ }
+
+ $data = array(
+ 'class' => get_class($e),
+ 'message' => $e->getMessage(),
+ 'code' => $e->getCode(),
+ 'file' => $e->getFile().':'.$e->getLine(),
+ );
+
+ if ($this->includeStacktraces) {
+ $trace = $e->getTrace();
+ foreach ($trace as $frame) {
+ if (isset($frame['file'])) {
+ $data['trace'][] = $frame['file'].':'.$frame['line'];
+ } elseif (isset($frame['function']) && $frame['function'] === '{closure}') {
+ // We should again normalize the frames, because it might contain invalid items
+ $data['trace'][] = $frame['function'];
+ } else {
+ // We should again normalize the frames, because it might contain invalid items
+ $data['trace'][] = $this->normalize($frame);
+ }
+ }
+ }
+
+ if ($previous = $e->getPrevious()) {
+ $data['previous'] = $this->normalizeException($previous);
+ }
+
+ return $data;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php
new file mode 100644
index 0000000..548bce6
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/LineFormatter.php
@@ -0,0 +1,179 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+/**
+ * Formats incoming records into a one-line string
+ *
+ * This is especially useful for logging to files
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ * @author Christophe Coevoet <stof@notk.org>
+ */
+class LineFormatter extends NormalizerFormatter
+{
+ const SIMPLE_FORMAT = "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n";
+
+ protected $format;
+ protected $allowInlineLineBreaks;
+ protected $ignoreEmptyContextAndExtra;
+ protected $includeStacktraces;
+
+ /**
+ * @param string $format The format of the message
+ * @param string $dateFormat The format of the timestamp: one supported by DateTime::format
+ * @param bool $allowInlineLineBreaks Whether to allow inline line breaks in log entries
+ * @param bool $ignoreEmptyContextAndExtra
+ */
+ public function __construct($format = null, $dateFormat = null, $allowInlineLineBreaks = false, $ignoreEmptyContextAndExtra = false)
+ {
+ $this->format = $format ?: static::SIMPLE_FORMAT;
+ $this->allowInlineLineBreaks = $allowInlineLineBreaks;
+ $this->ignoreEmptyContextAndExtra = $ignoreEmptyContextAndExtra;
+ parent::__construct($dateFormat);
+ }
+
+ public function includeStacktraces($include = true)
+ {
+ $this->includeStacktraces = $include;
+ if ($this->includeStacktraces) {
+ $this->allowInlineLineBreaks = true;
+ }
+ }
+
+ public function allowInlineLineBreaks($allow = true)
+ {
+ $this->allowInlineLineBreaks = $allow;
+ }
+
+ public function ignoreEmptyContextAndExtra($ignore = true)
+ {
+ $this->ignoreEmptyContextAndExtra = $ignore;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ $vars = parent::format($record);
+
+ $output = $this->format;
+
+ foreach ($vars['extra'] as $var => $val) {
+ if (false !== strpos($output, '%extra.'.$var.'%')) {
+ $output = str_replace('%extra.'.$var.'%', $this->stringify($val), $output);
+ unset($vars['extra'][$var]);
+ }
+ }
+
+
+ foreach ($vars['context'] as $var => $val) {
+ if (false !== strpos($output, '%context.'.$var.'%')) {
+ $output = str_replace('%context.'.$var.'%', $this->stringify($val), $output);
+ unset($vars['context'][$var]);
+ }
+ }
+
+ if ($this->ignoreEmptyContextAndExtra) {
+ if (empty($vars['context'])) {
+ unset($vars['context']);
+ $output = str_replace('%context%', '', $output);
+ }
+
+ if (empty($vars['extra'])) {
+ unset($vars['extra']);
+ $output = str_replace('%extra%', '', $output);
+ }
+ }
+
+ foreach ($vars as $var => $val) {
+ if (false !== strpos($output, '%'.$var.'%')) {
+ $output = str_replace('%'.$var.'%', $this->stringify($val), $output);
+ }
+ }
+
+ // remove leftover %extra.xxx% and %context.xxx% if any
+ if (false !== strpos($output, '%')) {
+ $output = preg_replace('/%(?:extra|context)\..+?%/', '', $output);
+ }
+
+ return $output;
+ }
+
+ public function formatBatch(array $records)
+ {
+ $message = '';
+ foreach ($records as $record) {
+ $message .= $this->format($record);
+ }
+
+ return $message;
+ }
+
+ public function stringify($value)
+ {
+ return $this->replaceNewlines($this->convertToString($value));
+ }
+
+ protected function normalizeException($e)
+ {
+ // TODO 2.0 only check for Throwable
+ if (!$e instanceof \Exception && !$e instanceof \Throwable) {
+ throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.get_class($e));
+ }
+
+ $previousText = '';
+ if ($previous = $e->getPrevious()) {
+ do {
+ $previousText .= ', '.get_class($previous).'(code: '.$previous->getCode().'): '.$previous->getMessage().' at '.$previous->getFile().':'.$previous->getLine();
+ } while ($previous = $previous->getPrevious());
+ }
+
+ $str = '[object] ('.get_class($e).'(code: '.$e->getCode().'): '.$e->getMessage().' at '.$e->getFile().':'.$e->getLine().$previousText.')';
+ if ($this->includeStacktraces) {
+ $str .= "\n[stacktrace]\n".$e->getTraceAsString()."\n";
+ }
+
+ return $str;
+ }
+
+ protected function convertToString($data)
+ {
+ if (null === $data || is_bool($data)) {
+ return var_export($data, true);
+ }
+
+ if (is_scalar($data)) {
+ return (string) $data;
+ }
+
+ if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
+ return $this->toJson($data, true);
+ }
+
+ return str_replace('\\/', '/', @json_encode($data));
+ }
+
+ protected function replaceNewlines($str)
+ {
+ if ($this->allowInlineLineBreaks) {
+ if (0 === strpos($str, '{')) {
+ return str_replace(array('\r', '\n'), array("\r", "\n"), $str);
+ }
+
+ return $str;
+ }
+
+ return str_replace(array("\r\n", "\r", "\n"), ' ', $str);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php
new file mode 100644
index 0000000..0191a3b
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/LogglyFormatter.php
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+/**
+ * Encodes message information into JSON in a format compatible with Loggly.
+ *
+ * @author Adam Pancutt <adam@pancutt.com>
+ */
+class LogglyFormatter extends JsonFormatter
+{
+ /**
+ * Overrides the default batch mode to new lines for compatibility with the
+ * Loggly bulk API.
+ *
+ * @param int $batchMode
+ */
+ public function __construct($batchMode = self::BATCH_MODE_NEWLINES, $appendNewline = false)
+ {
+ parent::__construct($batchMode, $appendNewline);
+ }
+
+ /**
+ * Appends the 'timestamp' parameter for indexing by Loggly.
+ *
+ * @see https://www.loggly.com/docs/automated-parsing/#json
+ * @see \Monolog\Formatter\JsonFormatter::format()
+ */
+ public function format(array $record)
+ {
+ if (isset($record["datetime"]) && ($record["datetime"] instanceof \DateTime)) {
+ $record["timestamp"] = $record["datetime"]->format("Y-m-d\TH:i:s.uO");
+ // TODO 2.0 unset the 'datetime' parameter, retained for BC
+ }
+
+ return parent::format($record);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php
new file mode 100644
index 0000000..ef90191
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/LogstashFormatter.php
@@ -0,0 +1,166 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+/**
+ * Serializes a log message to Logstash Event Format
+ *
+ * @see http://logstash.net/
+ * @see https://github.com/logstash/logstash/blob/master/lib/logstash/event.rb
+ *
+ * @author Tim Mower <timothy.mower@gmail.com>
+ */
+class LogstashFormatter extends NormalizerFormatter
+{
+ const V0 = 0;
+ const V1 = 1;
+
+ /**
+ * @var string the name of the system for the Logstash log message, used to fill the @source field
+ */
+ protected $systemName;
+
+ /**
+ * @var string an application name for the Logstash log message, used to fill the @type field
+ */
+ protected $applicationName;
+
+ /**
+ * @var string a prefix for 'extra' fields from the Monolog record (optional)
+ */
+ protected $extraPrefix;
+
+ /**
+ * @var string a prefix for 'context' fields from the Monolog record (optional)
+ */
+ protected $contextPrefix;
+
+ /**
+ * @var int logstash format version to use
+ */
+ protected $version;
+
+ /**
+ * @param string $applicationName the application that sends the data, used as the "type" field of logstash
+ * @param string $systemName the system/machine name, used as the "source" field of logstash, defaults to the hostname of the machine
+ * @param string $extraPrefix prefix for extra keys inside logstash "fields"
+ * @param string $contextPrefix prefix for context keys inside logstash "fields", defaults to ctxt_
+ * @param int $version the logstash format version to use, defaults to 0
+ */
+ public function __construct($applicationName, $systemName = null, $extraPrefix = null, $contextPrefix = 'ctxt_', $version = self::V0)
+ {
+ // logstash requires a ISO 8601 format date with optional millisecond precision.
+ parent::__construct('Y-m-d\TH:i:s.uP');
+
+ $this->systemName = $systemName ?: gethostname();
+ $this->applicationName = $applicationName;
+ $this->extraPrefix = $extraPrefix;
+ $this->contextPrefix = $contextPrefix;
+ $this->version = $version;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ $record = parent::format($record);
+
+ if ($this->version === self::V1) {
+ $message = $this->formatV1($record);
+ } else {
+ $message = $this->formatV0($record);
+ }
+
+ return $this->toJson($message) . "\n";
+ }
+
+ protected function formatV0(array $record)
+ {
+ if (empty($record['datetime'])) {
+ $record['datetime'] = gmdate('c');
+ }
+ $message = array(
+ '@timestamp' => $record['datetime'],
+ '@source' => $this->systemName,
+ '@fields' => array(),
+ );
+ if (isset($record['message'])) {
+ $message['@message'] = $record['message'];
+ }
+ if (isset($record['channel'])) {
+ $message['@tags'] = array($record['channel']);
+ $message['@fields']['channel'] = $record['channel'];
+ }
+ if (isset($record['level'])) {
+ $message['@fields']['level'] = $record['level'];
+ }
+ if ($this->applicationName) {
+ $message['@type'] = $this->applicationName;
+ }
+ if (isset($record['extra']['server'])) {
+ $message['@source_host'] = $record['extra']['server'];
+ }
+ if (isset($record['extra']['url'])) {
+ $message['@source_path'] = $record['extra']['url'];
+ }
+ if (!empty($record['extra'])) {
+ foreach ($record['extra'] as $key => $val) {
+ $message['@fields'][$this->extraPrefix . $key] = $val;
+ }
+ }
+ if (!empty($record['context'])) {
+ foreach ($record['context'] as $key => $val) {
+ $message['@fields'][$this->contextPrefix . $key] = $val;
+ }
+ }
+
+ return $message;
+ }
+
+ protected function formatV1(array $record)
+ {
+ if (empty($record['datetime'])) {
+ $record['datetime'] = gmdate('c');
+ }
+ $message = array(
+ '@timestamp' => $record['datetime'],
+ '@version' => 1,
+ 'host' => $this->systemName,
+ );
+ if (isset($record['message'])) {
+ $message['message'] = $record['message'];
+ }
+ if (isset($record['channel'])) {
+ $message['type'] = $record['channel'];
+ $message['channel'] = $record['channel'];
+ }
+ if (isset($record['level_name'])) {
+ $message['level'] = $record['level_name'];
+ }
+ if ($this->applicationName) {
+ $message['type'] = $this->applicationName;
+ }
+ if (!empty($record['extra'])) {
+ foreach ($record['extra'] as $key => $val) {
+ $message[$this->extraPrefix . $key] = $val;
+ }
+ }
+ if (!empty($record['context'])) {
+ foreach ($record['context'] as $key => $val) {
+ $message[$this->contextPrefix . $key] = $val;
+ }
+ }
+
+ return $message;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php
new file mode 100644
index 0000000..9338b5f
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/MongoDBFormatter.php
@@ -0,0 +1,105 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+/**
+ * Formats a record for use with the MongoDBHandler.
+ *
+ * @author Florian Plattner <me@florianplattner.de>
+ */
+class MongoDBFormatter implements FormatterInterface
+{
+ private $exceptionTraceAsString;
+ private $maxNestingLevel;
+
+ /**
+ * @param int $maxNestingLevel 0 means infinite nesting, the $record itself is level 1, $record['context'] is 2
+ * @param bool $exceptionTraceAsString set to false to log exception traces as a sub documents instead of strings
+ */
+ public function __construct($maxNestingLevel = 3, $exceptionTraceAsString = true)
+ {
+ $this->maxNestingLevel = max($maxNestingLevel, 0);
+ $this->exceptionTraceAsString = (bool) $exceptionTraceAsString;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function format(array $record)
+ {
+ return $this->formatArray($record);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function formatBatch(array $records)
+ {
+ foreach ($records as $key => $record) {
+ $records[$key] = $this->format($record);
+ }
+
+ return $records;
+ }
+
+ protected function formatArray(array $record, $nestingLevel = 0)
+ {
+ if ($this->maxNestingLevel == 0 || $nestingLevel <= $this->maxNestingLevel) {
+ foreach ($record as $name => $value) {
+ if ($value instanceof \DateTime) {
+ $record[$name] = $this->formatDate($value, $nestingLevel + 1);
+ } elseif ($value instanceof \Exception) {
+ $record[$name] = $this->formatException($value, $nestingLevel + 1);
+ } elseif (is_array($value)) {
+ $record[$name] = $this->formatArray($value, $nestingLevel + 1);
+ } elseif (is_object($value)) {
+ $record[$name] = $this->formatObject($value, $nestingLevel + 1);
+ }
+ }
+ } else {
+ $record = '[...]';
+ }
+
+ return $record;
+ }
+
+ protected function formatObject($value, $nestingLevel)
+ {
+ $objectVars = get_object_vars($value);
+ $objectVars['class'] = get_class($value);
+
+ return $this->formatArray($objectVars, $nestingLevel);
+ }
+
+ protected function formatException(\Exception $exception, $nestingLevel)
+ {
+ $formattedException = array(
+ 'class' => get_class($exception),
+ 'message' => $exception->getMessage(),
+ 'code' => $exception->getCode(),
+ 'file' => $exception->getFile() . ':' . $exception->getLine(),
+ );
+
+ if ($this->exceptionTraceAsString === true) {
+ $formattedException['trace'] = $exception->getTraceAsString();
+ } else {
+ $formattedException['trace'] = $exception->getTrace();
+ }
+
+ return $this->formatArray($formattedException, $nestingLevel);
+ }
+
+ protected function formatDate(\DateTime $value, $nestingLevel)
+ {
+ return new \MongoDate($value->getTimestamp());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php
new file mode 100644
index 0000000..7afbf19
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/NormalizerFormatter.php
@@ -0,0 +1,297 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Exception;
+
+/**
+ * Normalizes incoming records to remove objects/resources so it's easier to dump to various targets
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class NormalizerFormatter implements FormatterInterface
+{
+ const SIMPLE_DATE = "Y-m-d H:i:s";
+
+ protected $dateFormat;
+
+ /**
+ * @param string $dateFormat The format of the timestamp: one supported by DateTime::format
+ */
+ public function __construct($dateFormat = null)
+ {
+ $this->dateFormat = $dateFormat ?: static::SIMPLE_DATE;
+ if (!function_exists('json_encode')) {
+ throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s NormalizerFormatter');
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ return $this->normalize($record);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function formatBatch(array $records)
+ {
+ foreach ($records as $key => $record) {
+ $records[$key] = $this->format($record);
+ }
+
+ return $records;
+ }
+
+ protected function normalize($data)
+ {
+ if (null === $data || is_scalar($data)) {
+ if (is_float($data)) {
+ if (is_infinite($data)) {
+ return ($data > 0 ? '' : '-') . 'INF';
+ }
+ if (is_nan($data)) {
+ return 'NaN';
+ }
+ }
+
+ return $data;
+ }
+
+ if (is_array($data)) {
+ $normalized = array();
+
+ $count = 1;
+ foreach ($data as $key => $value) {
+ if ($count++ >= 1000) {
+ $normalized['...'] = 'Over 1000 items ('.count($data).' total), aborting normalization';
+ break;
+ }
+ $normalized[$key] = $this->normalize($value);
+ }
+
+ return $normalized;
+ }
+
+ if ($data instanceof \DateTime) {
+ return $data->format($this->dateFormat);
+ }
+
+ if (is_object($data)) {
+ // TODO 2.0 only check for Throwable
+ if ($data instanceof Exception || (PHP_VERSION_ID > 70000 && $data instanceof \Throwable)) {
+ return $this->normalizeException($data);
+ }
+
+ // non-serializable objects that implement __toString stringified
+ if (method_exists($data, '__toString') && !$data instanceof \JsonSerializable) {
+ $value = $data->__toString();
+ } else {
+ // the rest is json-serialized in some way
+ $value = $this->toJson($data, true);
+ }
+
+ return sprintf("[object] (%s: %s)", get_class($data), $value);
+ }
+
+ if (is_resource($data)) {
+ return sprintf('[resource] (%s)', get_resource_type($data));
+ }
+
+ return '[unknown('.gettype($data).')]';
+ }
+
+ protected function normalizeException($e)
+ {
+ // TODO 2.0 only check for Throwable
+ if (!$e instanceof Exception && !$e instanceof \Throwable) {
+ throw new \InvalidArgumentException('Exception/Throwable expected, got '.gettype($e).' / '.get_class($e));
+ }
+
+ $data = array(
+ 'class' => get_class($e),
+ 'message' => $e->getMessage(),
+ 'code' => $e->getCode(),
+ 'file' => $e->getFile().':'.$e->getLine(),
+ );
+
+ if ($e instanceof \SoapFault) {
+ if (isset($e->faultcode)) {
+ $data['faultcode'] = $e->faultcode;
+ }
+
+ if (isset($e->faultactor)) {
+ $data['faultactor'] = $e->faultactor;
+ }
+
+ if (isset($e->detail)) {
+ $data['detail'] = $e->detail;
+ }
+ }
+
+ $trace = $e->getTrace();
+ foreach ($trace as $frame) {
+ if (isset($frame['file'])) {
+ $data['trace'][] = $frame['file'].':'.$frame['line'];
+ } elseif (isset($frame['function']) && $frame['function'] === '{closure}') {
+ // We should again normalize the frames, because it might contain invalid items
+ $data['trace'][] = $frame['function'];
+ } else {
+ // We should again normalize the frames, because it might contain invalid items
+ $data['trace'][] = $this->toJson($this->normalize($frame), true);
+ }
+ }
+
+ if ($previous = $e->getPrevious()) {
+ $data['previous'] = $this->normalizeException($previous);
+ }
+
+ return $data;
+ }
+
+ /**
+ * Return the JSON representation of a value
+ *
+ * @param mixed $data
+ * @param bool $ignoreErrors
+ * @throws \RuntimeException if encoding fails and errors are not ignored
+ * @return string
+ */
+ protected function toJson($data, $ignoreErrors = false)
+ {
+ // suppress json_encode errors since it's twitchy with some inputs
+ if ($ignoreErrors) {
+ return @$this->jsonEncode($data);
+ }
+
+ $json = $this->jsonEncode($data);
+
+ if ($json === false) {
+ $json = $this->handleJsonError(json_last_error(), $data);
+ }
+
+ return $json;
+ }
+
+ /**
+ * @param mixed $data
+ * @return string JSON encoded data or null on failure
+ */
+ private function jsonEncode($data)
+ {
+ if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
+ return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
+ }
+
+ return json_encode($data);
+ }
+
+ /**
+ * Handle a json_encode failure.
+ *
+ * If the failure is due to invalid string encoding, try to clean the
+ * input and encode again. If the second encoding attempt fails, the
+ * inital error is not encoding related or the input can't be cleaned then
+ * raise a descriptive exception.
+ *
+ * @param int $code return code of json_last_error function
+ * @param mixed $data data that was meant to be encoded
+ * @throws \RuntimeException if failure can't be corrected
+ * @return string JSON encoded data after error correction
+ */
+ private function handleJsonError($code, $data)
+ {
+ if ($code !== JSON_ERROR_UTF8) {
+ $this->throwEncodeError($code, $data);
+ }
+
+ if (is_string($data)) {
+ $this->detectAndCleanUtf8($data);
+ } elseif (is_array($data)) {
+ array_walk_recursive($data, array($this, 'detectAndCleanUtf8'));
+ } else {
+ $this->throwEncodeError($code, $data);
+ }
+
+ $json = $this->jsonEncode($data);
+
+ if ($json === false) {
+ $this->throwEncodeError(json_last_error(), $data);
+ }
+
+ return $json;
+ }
+
+ /**
+ * Throws an exception according to a given code with a customized message
+ *
+ * @param int $code return code of json_last_error function
+ * @param mixed $data data that was meant to be encoded
+ * @throws \RuntimeException
+ */
+ private function throwEncodeError($code, $data)
+ {
+ switch ($code) {
+ case JSON_ERROR_DEPTH:
+ $msg = 'Maximum stack depth exceeded';
+ break;
+ case JSON_ERROR_STATE_MISMATCH:
+ $msg = 'Underflow or the modes mismatch';
+ break;
+ case JSON_ERROR_CTRL_CHAR:
+ $msg = 'Unexpected control character found';
+ break;
+ case JSON_ERROR_UTF8:
+ $msg = 'Malformed UTF-8 characters, possibly incorrectly encoded';
+ break;
+ default:
+ $msg = 'Unknown error';
+ }
+
+ throw new \RuntimeException('JSON encoding failed: '.$msg.'. Encoding: '.var_export($data, true));
+ }
+
+ /**
+ * Detect invalid UTF-8 string characters and convert to valid UTF-8.
+ *
+ * Valid UTF-8 input will be left unmodified, but strings containing
+ * invalid UTF-8 codepoints will be reencoded as UTF-8 with an assumed
+ * original encoding of ISO-8859-15. This conversion may result in
+ * incorrect output if the actual encoding was not ISO-8859-15, but it
+ * will be clean UTF-8 output and will not rely on expensive and fragile
+ * detection algorithms.
+ *
+ * Function converts the input in place in the passed variable so that it
+ * can be used as a callback for array_walk_recursive.
+ *
+ * @param mixed &$data Input to check and convert if needed
+ * @private
+ */
+ public function detectAndCleanUtf8(&$data)
+ {
+ if (is_string($data) && !preg_match('//u', $data)) {
+ $data = preg_replace_callback(
+ '/[\x80-\xFF]+/',
+ function ($m) { return utf8_encode($m[0]); },
+ $data
+ );
+ $data = str_replace(
+ array('¤', '¦', '¨', '´', '¸', '¼', '½', '¾'),
+ array('€', 'Š', 'š', 'Ž', 'ž', 'Œ', 'œ', 'Ÿ'),
+ $data
+ );
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php
new file mode 100644
index 0000000..4a915d4
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/ScalarFormatter.php
@@ -0,0 +1,48 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+/**
+ * Formats data into an associative array of scalar values.
+ * Objects and arrays will be JSON encoded.
+ *
+ * @author Andrew Lawson <adlawson@gmail.com>
+ */
+class ScalarFormatter extends NormalizerFormatter
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ foreach ($record as $key => $value) {
+ $record[$key] = $this->normalizeValue($value);
+ }
+
+ return $record;
+ }
+
+ /**
+ * @param mixed $value
+ * @return mixed
+ */
+ protected function normalizeValue($value)
+ {
+ $normalized = $this->normalize($value);
+
+ if (is_array($normalized) || is_object($normalized)) {
+ return $this->toJson($normalized, true);
+ }
+
+ return $normalized;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php
new file mode 100644
index 0000000..97892dc
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Formatter/WildfireFormatter.php
@@ -0,0 +1,113 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\Logger;
+
+/**
+ * Serializes a log message according to Wildfire's header requirements
+ *
+ * @author Eric Clemmons (@ericclemmons) <eric@uxdriven.com>
+ * @author Christophe Coevoet <stof@notk.org>
+ * @author Kirill chEbba Chebunin <iam@chebba.org>
+ */
+class WildfireFormatter extends NormalizerFormatter
+{
+ const TABLE = 'table';
+
+ /**
+ * Translates Monolog log levels to Wildfire levels.
+ */
+ private $logLevels = array(
+ Logger::DEBUG => 'LOG',
+ Logger::INFO => 'INFO',
+ Logger::NOTICE => 'INFO',
+ Logger::WARNING => 'WARN',
+ Logger::ERROR => 'ERROR',
+ Logger::CRITICAL => 'ERROR',
+ Logger::ALERT => 'ERROR',
+ Logger::EMERGENCY => 'ERROR',
+ );
+
+ /**
+ * {@inheritdoc}
+ */
+ public function format(array $record)
+ {
+ // Retrieve the line and file if set and remove them from the formatted extra
+ $file = $line = '';
+ if (isset($record['extra']['file'])) {
+ $file = $record['extra']['file'];
+ unset($record['extra']['file']);
+ }
+ if (isset($record['extra']['line'])) {
+ $line = $record['extra']['line'];
+ unset($record['extra']['line']);
+ }
+
+ $record = $this->normalize($record);
+ $message = array('message' => $record['message']);
+ $handleError = false;
+ if ($record['context']) {
+ $message['context'] = $record['context'];
+ $handleError = true;
+ }
+ if ($record['extra']) {
+ $message['extra'] = $record['extra'];
+ $handleError = true;
+ }
+ if (count($message) === 1) {
+ $message = reset($message);
+ }
+
+ if (isset($record['context'][self::TABLE])) {
+ $type = 'TABLE';
+ $label = $record['channel'] .': '. $record['message'];
+ $message = $record['context'][self::TABLE];
+ } else {
+ $type = $this->logLevels[$record['level']];
+ $label = $record['channel'];
+ }
+
+ // Create JSON object describing the appearance of the message in the console
+ $json = $this->toJson(array(
+ array(
+ 'Type' => $type,
+ 'File' => $file,
+ 'Line' => $line,
+ 'Label' => $label,
+ ),
+ $message,
+ ), $handleError);
+
+ // The message itself is a serialization of the above JSON object + it's length
+ return sprintf(
+ '%s|%s|',
+ strlen($json),
+ $json
+ );
+ }
+
+ public function formatBatch(array $records)
+ {
+ throw new \BadMethodCallException('Batch formatting does not make sense for the WildfireFormatter');
+ }
+
+ protected function normalize($data)
+ {
+ if (is_object($data) && !$data instanceof \DateTime) {
+ return $data;
+ }
+
+ return parent::normalize($data);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php
new file mode 100644
index 0000000..c020f51
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AbstractHandler.php
@@ -0,0 +1,186 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\Formatter\FormatterInterface;
+use Monolog\Formatter\LineFormatter;
+
+/**
+ * Base Handler class providing the Handler structure
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+abstract class AbstractHandler implements HandlerInterface
+{
+ protected $level = Logger::DEBUG;
+ protected $bubble = true;
+
+ /**
+ * @var FormatterInterface
+ */
+ protected $formatter;
+ protected $processors = array();
+
+ /**
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct($level = Logger::DEBUG, $bubble = true)
+ {
+ $this->setLevel($level);
+ $this->bubble = $bubble;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isHandling(array $record)
+ {
+ return $record['level'] >= $this->level;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handleBatch(array $records)
+ {
+ foreach ($records as $record) {
+ $this->handle($record);
+ }
+ }
+
+ /**
+ * Closes the handler.
+ *
+ * This will be called automatically when the object is destroyed
+ */
+ public function close()
+ {
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function pushProcessor($callback)
+ {
+ if (!is_callable($callback)) {
+ throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given');
+ }
+ array_unshift($this->processors, $callback);
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function popProcessor()
+ {
+ if (!$this->processors) {
+ throw new \LogicException('You tried to pop from an empty processor stack.');
+ }
+
+ return array_shift($this->processors);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setFormatter(FormatterInterface $formatter)
+ {
+ $this->formatter = $formatter;
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getFormatter()
+ {
+ if (!$this->formatter) {
+ $this->formatter = $this->getDefaultFormatter();
+ }
+
+ return $this->formatter;
+ }
+
+ /**
+ * Sets minimum logging level at which this handler will be triggered.
+ *
+ * @param int|string $level Level or level name
+ * @return self
+ */
+ public function setLevel($level)
+ {
+ $this->level = Logger::toMonologLevel($level);
+
+ return $this;
+ }
+
+ /**
+ * Gets minimum logging level at which this handler will be triggered.
+ *
+ * @return int
+ */
+ public function getLevel()
+ {
+ return $this->level;
+ }
+
+ /**
+ * Sets the bubbling behavior.
+ *
+ * @param Boolean $bubble true means that this handler allows bubbling.
+ * false means that bubbling is not permitted.
+ * @return self
+ */
+ public function setBubble($bubble)
+ {
+ $this->bubble = $bubble;
+
+ return $this;
+ }
+
+ /**
+ * Gets the bubbling behavior.
+ *
+ * @return Boolean true means that this handler allows bubbling.
+ * false means that bubbling is not permitted.
+ */
+ public function getBubble()
+ {
+ return $this->bubble;
+ }
+
+ public function __destruct()
+ {
+ try {
+ $this->close();
+ } catch (\Exception $e) {
+ // do nothing
+ } catch (\Throwable $e) {
+ // do nothing
+ }
+ }
+
+ /**
+ * Gets the default formatter.
+ *
+ * @return FormatterInterface
+ */
+ protected function getDefaultFormatter()
+ {
+ return new LineFormatter();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php
new file mode 100644
index 0000000..74e28d0
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AbstractProcessingHandler.php
@@ -0,0 +1,66 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+/**
+ * Base Handler class providing the Handler structure
+ *
+ * Classes extending it should (in most cases) only implement write($record)
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ * @author Christophe Coevoet <stof@notk.org>
+ */
+abstract class AbstractProcessingHandler extends AbstractHandler
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function handle(array $record)
+ {
+ if (!$this->isHandling($record)) {
+ return false;
+ }
+
+ $record = $this->processRecord($record);
+
+ $record['formatted'] = $this->getFormatter()->format($record);
+
+ $this->write($record);
+
+ return false === $this->bubble;
+ }
+
+ /**
+ * Writes the record down to the log of the implementing handler
+ *
+ * @param array $record
+ * @return void
+ */
+ abstract protected function write(array $record);
+
+ /**
+ * Processes a record.
+ *
+ * @param array $record
+ * @return array
+ */
+ protected function processRecord(array $record)
+ {
+ if ($this->processors) {
+ foreach ($this->processors as $processor) {
+ $record = call_user_func($processor, $record);
+ }
+ }
+
+ return $record;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php
new file mode 100644
index 0000000..49334b1
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AbstractSyslogHandler.php
@@ -0,0 +1,101 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\Formatter\LineFormatter;
+
+/**
+ * Common syslog functionality
+ */
+abstract class AbstractSyslogHandler extends AbstractProcessingHandler
+{
+ protected $facility;
+
+ /**
+ * Translates Monolog log levels to syslog log priorities.
+ */
+ protected $logLevels = array(
+ Logger::DEBUG => LOG_DEBUG,
+ Logger::INFO => LOG_INFO,
+ Logger::NOTICE => LOG_NOTICE,
+ Logger::WARNING => LOG_WARNING,
+ Logger::ERROR => LOG_ERR,
+ Logger::CRITICAL => LOG_CRIT,
+ Logger::ALERT => LOG_ALERT,
+ Logger::EMERGENCY => LOG_EMERG,
+ );
+
+ /**
+ * List of valid log facility names.
+ */
+ protected $facilities = array(
+ 'auth' => LOG_AUTH,
+ 'authpriv' => LOG_AUTHPRIV,
+ 'cron' => LOG_CRON,
+ 'daemon' => LOG_DAEMON,
+ 'kern' => LOG_KERN,
+ 'lpr' => LOG_LPR,
+ 'mail' => LOG_MAIL,
+ 'news' => LOG_NEWS,
+ 'syslog' => LOG_SYSLOG,
+ 'user' => LOG_USER,
+ 'uucp' => LOG_UUCP,
+ );
+
+ /**
+ * @param mixed $facility
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct($facility = LOG_USER, $level = Logger::DEBUG, $bubble = true)
+ {
+ parent::__construct($level, $bubble);
+
+ if (!defined('PHP_WINDOWS_VERSION_BUILD')) {
+ $this->facilities['local0'] = LOG_LOCAL0;
+ $this->facilities['local1'] = LOG_LOCAL1;
+ $this->facilities['local2'] = LOG_LOCAL2;
+ $this->facilities['local3'] = LOG_LOCAL3;
+ $this->facilities['local4'] = LOG_LOCAL4;
+ $this->facilities['local5'] = LOG_LOCAL5;
+ $this->facilities['local6'] = LOG_LOCAL6;
+ $this->facilities['local7'] = LOG_LOCAL7;
+ } else {
+ $this->facilities['local0'] = 128; // LOG_LOCAL0
+ $this->facilities['local1'] = 136; // LOG_LOCAL1
+ $this->facilities['local2'] = 144; // LOG_LOCAL2
+ $this->facilities['local3'] = 152; // LOG_LOCAL3
+ $this->facilities['local4'] = 160; // LOG_LOCAL4
+ $this->facilities['local5'] = 168; // LOG_LOCAL5
+ $this->facilities['local6'] = 176; // LOG_LOCAL6
+ $this->facilities['local7'] = 184; // LOG_LOCAL7
+ }
+
+ // convert textual description of facility to syslog constant
+ if (array_key_exists(strtolower($facility), $this->facilities)) {
+ $facility = $this->facilities[strtolower($facility)];
+ } elseif (!in_array($facility, array_values($this->facilities), true)) {
+ throw new \UnexpectedValueException('Unknown facility value "'.$facility.'" given');
+ }
+
+ $this->facility = $facility;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new LineFormatter('%channel%.%level_name%: %message% %context% %extra%');
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php
new file mode 100644
index 0000000..fef4d8d
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/AmqpHandler.php
@@ -0,0 +1,148 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\Formatter\JsonFormatter;
+use PhpAmqpLib\Message\AMQPMessage;
+use PhpAmqpLib\Channel\AMQPChannel;
+use AMQPExchange;
+
+class AmqpHandler extends AbstractProcessingHandler
+{
+ /**
+ * @var AMQPExchange|AMQPChannel $exchange
+ */
+ protected $exchange;
+
+ /**
+ * @var string
+ */
+ protected $exchangeName;
+
+ /**
+ * @param AMQPExchange|AMQPChannel $exchange AMQPExchange (php AMQP ext) or PHP AMQP lib channel, ready for use
+ * @param string $exchangeName
+ * @param int $level
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct($exchange, $exchangeName = 'log', $level = Logger::DEBUG, $bubble = true)
+ {
+ if ($exchange instanceof AMQPExchange) {
+ $exchange->setName($exchangeName);
+ } elseif ($exchange instanceof AMQPChannel) {
+ $this->exchangeName = $exchangeName;
+ } else {
+ throw new \InvalidArgumentException('PhpAmqpLib\Channel\AMQPChannel or AMQPExchange instance required');
+ }
+ $this->exchange = $exchange;
+
+ parent::__construct($level, $bubble);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function write(array $record)
+ {
+ $data = $record["formatted"];
+ $routingKey = $this->getRoutingKey($record);
+
+ if ($this->exchange instanceof AMQPExchange) {
+ $this->exchange->publish(
+ $data,
+ $routingKey,
+ 0,
+ array(
+ 'delivery_mode' => 2,
+ 'content_type' => 'application/json',
+ )
+ );
+ } else {
+ $this->exchange->basic_publish(
+ $this->createAmqpMessage($data),
+ $this->exchangeName,
+ $routingKey
+ );
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function handleBatch(array $records)
+ {
+ if ($this->exchange instanceof AMQPExchange) {
+ parent::handleBatch($records);
+
+ return;
+ }
+
+ foreach ($records as $record) {
+ if (!$this->isHandling($record)) {
+ continue;
+ }
+
+ $record = $this->processRecord($record);
+ $data = $this->getFormatter()->format($record);
+
+ $this->exchange->batch_basic_publish(
+ $this->createAmqpMessage($data),
+ $this->exchangeName,
+ $this->getRoutingKey($record)
+ );
+ }
+
+ $this->exchange->publish_batch();
+ }
+
+ /**
+ * Gets the routing key for the AMQP exchange
+ *
+ * @param array $record
+ * @return string
+ */
+ protected function getRoutingKey(array $record)
+ {
+ $routingKey = sprintf(
+ '%s.%s',
+ // TODO 2.0 remove substr call
+ substr($record['level_name'], 0, 4),
+ $record['channel']
+ );
+
+ return strtolower($routingKey);
+ }
+
+ /**
+ * @param string $data
+ * @return AMQPMessage
+ */
+ private function createAmqpMessage($data)
+ {
+ return new AMQPMessage(
+ (string) $data,
+ array(
+ 'delivery_mode' => 2,
+ 'content_type' => 'application/json',
+ )
+ );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php
new file mode 100644
index 0000000..363fb3c
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/BrowserConsoleHandler.php
@@ -0,0 +1,230 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\LineFormatter;
+
+/**
+ * Handler sending logs to browser's javascript console with no browser extension required
+ *
+ * @author Olivier Poitrey <rs@dailymotion.com>
+ */
+class BrowserConsoleHandler extends AbstractProcessingHandler
+{
+ protected static $initialized = false;
+ protected static $records = array();
+
+ /**
+ * {@inheritDoc}
+ *
+ * Formatted output may contain some formatting markers to be transferred to `console.log` using the %c format.
+ *
+ * Example of formatted string:
+ *
+ * You can do [[blue text]]{color: blue} or [[green background]]{background-color: green; color: white}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new LineFormatter('[[%channel%]]{macro: autolabel} [[%level_name%]]{font-weight: bold} %message%');
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function write(array $record)
+ {
+ // Accumulate records
+ self::$records[] = $record;
+
+ // Register shutdown handler if not already done
+ if (!self::$initialized) {
+ self::$initialized = true;
+ $this->registerShutdownFunction();
+ }
+ }
+
+ /**
+ * Convert records to javascript console commands and send it to the browser.
+ * This method is automatically called on PHP shutdown if output is HTML or Javascript.
+ */
+ public static function send()
+ {
+ $format = self::getResponseFormat();
+ if ($format === 'unknown') {
+ return;
+ }
+
+ if (count(self::$records)) {
+ if ($format === 'html') {
+ self::writeOutput('<script>' . self::generateScript() . '</script>');
+ } elseif ($format === 'js') {
+ self::writeOutput(self::generateScript());
+ }
+ self::reset();
+ }
+ }
+
+ /**
+ * Forget all logged records
+ */
+ public static function reset()
+ {
+ self::$records = array();
+ }
+
+ /**
+ * Wrapper for register_shutdown_function to allow overriding
+ */
+ protected function registerShutdownFunction()
+ {
+ if (PHP_SAPI !== 'cli') {
+ register_shutdown_function(array('Monolog\Handler\BrowserConsoleHandler', 'send'));
+ }
+ }
+
+ /**
+ * Wrapper for echo to allow overriding
+ *
+ * @param string $str
+ */
+ protected static function writeOutput($str)
+ {
+ echo $str;
+ }
+
+ /**
+ * Checks the format of the response
+ *
+ * If Content-Type is set to application/javascript or text/javascript -> js
+ * If Content-Type is set to text/html, or is unset -> html
+ * If Content-Type is anything else -> unknown
+ *
+ * @return string One of 'js', 'html' or 'unknown'
+ */
+ protected static function getResponseFormat()
+ {
+ // Check content type
+ foreach (headers_list() as $header) {
+ if (stripos($header, 'content-type:') === 0) {
+ // This handler only works with HTML and javascript outputs
+ // text/javascript is obsolete in favour of application/javascript, but still used
+ if (stripos($header, 'application/javascript') !== false || stripos($header, 'text/javascript') !== false) {
+ return 'js';
+ }
+ if (stripos($header, 'text/html') === false) {
+ return 'unknown';
+ }
+ break;
+ }
+ }
+
+ return 'html';
+ }
+
+ private static function generateScript()
+ {
+ $script = array();
+ foreach (self::$records as $record) {
+ $context = self::dump('Context', $record['context']);
+ $extra = self::dump('Extra', $record['extra']);
+
+ if (empty($context) && empty($extra)) {
+ $script[] = self::call_array('log', self::handleStyles($record['formatted']));
+ } else {
+ $script = array_merge($script,
+ array(self::call_array('groupCollapsed', self::handleStyles($record['formatted']))),
+ $context,
+ $extra,
+ array(self::call('groupEnd'))
+ );
+ }
+ }
+
+ return "(function (c) {if (c && c.groupCollapsed) {\n" . implode("\n", $script) . "\n}})(console);";
+ }
+
+ private static function handleStyles($formatted)
+ {
+ $args = array(self::quote('font-weight: normal'));
+ $format = '%c' . $formatted;
+ preg_match_all('/\[\[(.*?)\]\]\{([^}]*)\}/s', $format, $matches, PREG_OFFSET_CAPTURE | PREG_SET_ORDER);
+
+ foreach (array_reverse($matches) as $match) {
+ $args[] = self::quote(self::handleCustomStyles($match[2][0], $match[1][0]));
+ $args[] = '"font-weight: normal"';
+
+ $pos = $match[0][1];
+ $format = substr($format, 0, $pos) . '%c' . $match[1][0] . '%c' . substr($format, $pos + strlen($match[0][0]));
+ }
+
+ array_unshift($args, self::quote($format));
+
+ return $args;
+ }
+
+ private static function handleCustomStyles($style, $string)
+ {
+ static $colors = array('blue', 'green', 'red', 'magenta', 'orange', 'black', 'grey');
+ static $labels = array();
+
+ return preg_replace_callback('/macro\s*:(.*?)(?:;|$)/', function ($m) use ($string, &$colors, &$labels) {
+ if (trim($m[1]) === 'autolabel') {
+ // Format the string as a label with consistent auto assigned background color
+ if (!isset($labels[$string])) {
+ $labels[$string] = $colors[count($labels) % count($colors)];
+ }
+ $color = $labels[$string];
+
+ return "background-color: $color; color: white; border-radius: 3px; padding: 0 2px 0 2px";
+ }
+
+ return $m[1];
+ }, $style);
+ }
+
+ private static function dump($title, array $dict)
+ {
+ $script = array();
+ $dict = array_filter($dict);
+ if (empty($dict)) {
+ return $script;
+ }
+ $script[] = self::call('log', self::quote('%c%s'), self::quote('font-weight: bold'), self::quote($title));
+ foreach ($dict as $key => $value) {
+ $value = json_encode($value);
+ if (empty($value)) {
+ $value = self::quote('');
+ }
+ $script[] = self::call('log', self::quote('%s: %o'), self::quote($key), $value);
+ }
+
+ return $script;
+ }
+
+ private static function quote($arg)
+ {
+ return '"' . addcslashes($arg, "\"\n\\") . '"';
+ }
+
+ private static function call()
+ {
+ $args = func_get_args();
+ $method = array_shift($args);
+
+ return self::call_array($method, $args);
+ }
+
+ private static function call_array($method, array $args)
+ {
+ return 'c.' . $method . '(' . implode(', ', $args) . ');';
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php
new file mode 100644
index 0000000..e319786
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/BufferHandler.php
@@ -0,0 +1,117 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * Buffers all records until closing the handler and then pass them as batch.
+ *
+ * This is useful for a MailHandler to send only one mail per request instead of
+ * sending one per log message.
+ *
+ * @author Christophe Coevoet <stof@notk.org>
+ */
+class BufferHandler extends AbstractHandler
+{
+ protected $handler;
+ protected $bufferSize = 0;
+ protected $bufferLimit;
+ protected $flushOnOverflow;
+ protected $buffer = array();
+ protected $initialized = false;
+
+ /**
+ * @param HandlerInterface $handler Handler.
+ * @param int $bufferLimit How many entries should be buffered at most, beyond that the oldest items are removed from the buffer.
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ * @param Boolean $flushOnOverflow If true, the buffer is flushed when the max size has been reached, by default oldest entries are discarded
+ */
+ public function __construct(HandlerInterface $handler, $bufferLimit = 0, $level = Logger::DEBUG, $bubble = true, $flushOnOverflow = false)
+ {
+ parent::__construct($level, $bubble);
+ $this->handler = $handler;
+ $this->bufferLimit = (int) $bufferLimit;
+ $this->flushOnOverflow = $flushOnOverflow;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handle(array $record)
+ {
+ if ($record['level'] < $this->level) {
+ return false;
+ }
+
+ if (!$this->initialized) {
+ // __destructor() doesn't get called on Fatal errors
+ register_shutdown_function(array($this, 'close'));
+ $this->initialized = true;
+ }
+
+ if ($this->bufferLimit > 0 && $this->bufferSize === $this->bufferLimit) {
+ if ($this->flushOnOverflow) {
+ $this->flush();
+ } else {
+ array_shift($this->buffer);
+ $this->bufferSize--;
+ }
+ }
+
+ if ($this->processors) {
+ foreach ($this->processors as $processor) {
+ $record = call_user_func($processor, $record);
+ }
+ }
+
+ $this->buffer[] = $record;
+ $this->bufferSize++;
+
+ return false === $this->bubble;
+ }
+
+ public function flush()
+ {
+ if ($this->bufferSize === 0) {
+ return;
+ }
+
+ $this->handler->handleBatch($this->buffer);
+ $this->clear();
+ }
+
+ public function __destruct()
+ {
+ // suppress the parent behavior since we already have register_shutdown_function()
+ // to call close(), and the reference contained there will prevent this from being
+ // GC'd until the end of the request
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function close()
+ {
+ $this->flush();
+ }
+
+ /**
+ * Clears the buffer without flushing any messages down to the wrapped handler.
+ */
+ public function clear()
+ {
+ $this->bufferSize = 0;
+ $this->buffer = array();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php
new file mode 100644
index 0000000..49eb181
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ChromePHPHandler.php
@@ -0,0 +1,211 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\ChromePHPFormatter;
+use Monolog\Logger;
+
+/**
+ * Handler sending logs to the ChromePHP extension (http://www.chromephp.com/)
+ *
+ * This also works out of the box with Firefox 43+
+ *
+ * @author Christophe Coevoet <stof@notk.org>
+ */
+class ChromePHPHandler extends AbstractProcessingHandler
+{
+ /**
+ * Version of the extension
+ */
+ const VERSION = '4.0';
+
+ /**
+ * Header name
+ */
+ const HEADER_NAME = 'X-ChromeLogger-Data';
+
+ /**
+ * Regular expression to detect supported browsers (matches any Chrome, or Firefox 43+)
+ */
+ const USER_AGENT_REGEX = '{\b(?:Chrome/\d+(?:\.\d+)*|HeadlessChrome|Firefox/(?:4[3-9]|[5-9]\d|\d{3,})(?:\.\d)*)\b}';
+
+ protected static $initialized = false;
+
+ /**
+ * Tracks whether we sent too much data
+ *
+ * Chrome limits the headers to 256KB, so when we sent 240KB we stop sending
+ *
+ * @var Boolean
+ */
+ protected static $overflowed = false;
+
+ protected static $json = array(
+ 'version' => self::VERSION,
+ 'columns' => array('label', 'log', 'backtrace', 'type'),
+ 'rows' => array(),
+ );
+
+ protected static $sendHeaders = true;
+
+ /**
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct($level = Logger::DEBUG, $bubble = true)
+ {
+ parent::__construct($level, $bubble);
+ if (!function_exists('json_encode')) {
+ throw new \RuntimeException('PHP\'s json extension is required to use Monolog\'s ChromePHPHandler');
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handleBatch(array $records)
+ {
+ $messages = array();
+
+ foreach ($records as $record) {
+ if ($record['level'] < $this->level) {
+ continue;
+ }
+ $messages[] = $this->processRecord($record);
+ }
+
+ if (!empty($messages)) {
+ $messages = $this->getFormatter()->formatBatch($messages);
+ self::$json['rows'] = array_merge(self::$json['rows'], $messages);
+ $this->send();
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new ChromePHPFormatter();
+ }
+
+ /**
+ * Creates & sends header for a record
+ *
+ * @see sendHeader()
+ * @see send()
+ * @param array $record
+ */
+ protected function write(array $record)
+ {
+ self::$json['rows'][] = $record['formatted'];
+
+ $this->send();
+ }
+
+ /**
+ * Sends the log header
+ *
+ * @see sendHeader()
+ */
+ protected function send()
+ {
+ if (self::$overflowed || !self::$sendHeaders) {
+ return;
+ }
+
+ if (!self::$initialized) {
+ self::$initialized = true;
+
+ self::$sendHeaders = $this->headersAccepted();
+ if (!self::$sendHeaders) {
+ return;
+ }
+
+ self::$json['request_uri'] = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : '';
+ }
+
+ $json = @json_encode(self::$json);
+ $data = base64_encode(utf8_encode($json));
+ if (strlen($data) > 240 * 1024) {
+ self::$overflowed = true;
+
+ $record = array(
+ 'message' => 'Incomplete logs, chrome header size limit reached',
+ 'context' => array(),
+ 'level' => Logger::WARNING,
+ 'level_name' => Logger::getLevelName(Logger::WARNING),
+ 'channel' => 'monolog',
+ 'datetime' => new \DateTime(),
+ 'extra' => array(),
+ );
+ self::$json['rows'][count(self::$json['rows']) - 1] = $this->getFormatter()->format($record);
+ $json = @json_encode(self::$json);
+ $data = base64_encode(utf8_encode($json));
+ }
+
+ if (trim($data) !== '') {
+ $this->sendHeader(self::HEADER_NAME, $data);
+ }
+ }
+
+ /**
+ * Send header string to the client
+ *
+ * @param string $header
+ * @param string $content
+ */
+ protected function sendHeader($header, $content)
+ {
+ if (!headers_sent() && self::$sendHeaders) {
+ header(sprintf('%s: %s', $header, $content));
+ }
+ }
+
+ /**
+ * Verifies if the headers are accepted by the current user agent
+ *
+ * @return Boolean
+ */
+ protected function headersAccepted()
+ {
+ if (empty($_SERVER['HTTP_USER_AGENT'])) {
+ return false;
+ }
+
+ return preg_match(self::USER_AGENT_REGEX, $_SERVER['HTTP_USER_AGENT']);
+ }
+
+ /**
+ * BC getter for the sendHeaders property that has been made static
+ */
+ public function __get($property)
+ {
+ if ('sendHeaders' !== $property) {
+ throw new \InvalidArgumentException('Undefined property '.$property);
+ }
+
+ return static::$sendHeaders;
+ }
+
+ /**
+ * BC setter for the sendHeaders property that has been made static
+ */
+ public function __set($property, $value)
+ {
+ if ('sendHeaders' !== $property) {
+ throw new \InvalidArgumentException('Undefined property '.$property);
+ }
+
+ static::$sendHeaders = $value;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php
new file mode 100644
index 0000000..0b762ca
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/CouchDBHandler.php
@@ -0,0 +1,72 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\JsonFormatter;
+use Monolog\Logger;
+
+/**
+ * CouchDB handler
+ *
+ * @author Markus Bachmann <markus.bachmann@bachi.biz>
+ */
+class CouchDBHandler extends AbstractProcessingHandler
+{
+ private $options;
+
+ public function __construct(array $options = array(), $level = Logger::DEBUG, $bubble = true)
+ {
+ $this->options = array_merge(array(
+ 'host' => 'localhost',
+ 'port' => 5984,
+ 'dbname' => 'logger',
+ 'username' => null,
+ 'password' => null,
+ ), $options);
+
+ parent::__construct($level, $bubble);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function write(array $record)
+ {
+ $basicAuth = null;
+ if ($this->options['username']) {
+ $basicAuth = sprintf('%s:%s@', $this->options['username'], $this->options['password']);
+ }
+
+ $url = 'http://'.$basicAuth.$this->options['host'].':'.$this->options['port'].'/'.$this->options['dbname'];
+ $context = stream_context_create(array(
+ 'http' => array(
+ 'method' => 'POST',
+ 'content' => $record['formatted'],
+ 'ignore_errors' => true,
+ 'max_redirects' => 0,
+ 'header' => 'Content-type: application/json',
+ ),
+ ));
+
+ if (false === @file_get_contents($url, null, $context)) {
+ throw new \RuntimeException(sprintf('Could not connect to %s', $url));
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php
new file mode 100644
index 0000000..ad8be00
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/CubeHandler.php
@@ -0,0 +1,151 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * Logs to Cube.
+ *
+ * @link http://square.github.com/cube/
+ * @author Wan Chen <kami@kamisama.me>
+ */
+class CubeHandler extends AbstractProcessingHandler
+{
+ private $udpConnection;
+ private $httpConnection;
+ private $scheme;
+ private $host;
+ private $port;
+ private $acceptedSchemes = array('http', 'udp');
+
+ /**
+ * Create a Cube handler
+ *
+ * @throws \UnexpectedValueException when given url is not a valid url.
+ * A valid url must consist of three parts : protocol://host:port
+ * Only valid protocols used by Cube are http and udp
+ */
+ public function __construct($url, $level = Logger::DEBUG, $bubble = true)
+ {
+ $urlInfo = parse_url($url);
+
+ if (!isset($urlInfo['scheme'], $urlInfo['host'], $urlInfo['port'])) {
+ throw new \UnexpectedValueException('URL "'.$url.'" is not valid');
+ }
+
+ if (!in_array($urlInfo['scheme'], $this->acceptedSchemes)) {
+ throw new \UnexpectedValueException(
+ 'Invalid protocol (' . $urlInfo['scheme'] . ').'
+ . ' Valid options are ' . implode(', ', $this->acceptedSchemes));
+ }
+
+ $this->scheme = $urlInfo['scheme'];
+ $this->host = $urlInfo['host'];
+ $this->port = $urlInfo['port'];
+
+ parent::__construct($level, $bubble);
+ }
+
+ /**
+ * Establish a connection to an UDP socket
+ *
+ * @throws \LogicException when unable to connect to the socket
+ * @throws MissingExtensionException when there is no socket extension
+ */
+ protected function connectUdp()
+ {
+ if (!extension_loaded('sockets')) {
+ throw new MissingExtensionException('The sockets extension is required to use udp URLs with the CubeHandler');
+ }
+
+ $this->udpConnection = socket_create(AF_INET, SOCK_DGRAM, 0);
+ if (!$this->udpConnection) {
+ throw new \LogicException('Unable to create a socket');
+ }
+
+ if (!socket_connect($this->udpConnection, $this->host, $this->port)) {
+ throw new \LogicException('Unable to connect to the socket at ' . $this->host . ':' . $this->port);
+ }
+ }
+
+ /**
+ * Establish a connection to a http server
+ * @throws \LogicException when no curl extension
+ */
+ protected function connectHttp()
+ {
+ if (!extension_loaded('curl')) {
+ throw new \LogicException('The curl extension is needed to use http URLs with the CubeHandler');
+ }
+
+ $this->httpConnection = curl_init('http://'.$this->host.':'.$this->port.'/1.0/event/put');
+
+ if (!$this->httpConnection) {
+ throw new \LogicException('Unable to connect to ' . $this->host . ':' . $this->port);
+ }
+
+ curl_setopt($this->httpConnection, CURLOPT_CUSTOMREQUEST, "POST");
+ curl_setopt($this->httpConnection, CURLOPT_RETURNTRANSFER, true);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function write(array $record)
+ {
+ $date = $record['datetime'];
+
+ $data = array('time' => $date->format('Y-m-d\TH:i:s.uO'));
+ unset($record['datetime']);
+
+ if (isset($record['context']['type'])) {
+ $data['type'] = $record['context']['type'];
+ unset($record['context']['type']);
+ } else {
+ $data['type'] = $record['channel'];
+ }
+
+ $data['data'] = $record['context'];
+ $data['data']['level'] = $record['level'];
+
+ if ($this->scheme === 'http') {
+ $this->writeHttp(json_encode($data));
+ } else {
+ $this->writeUdp(json_encode($data));
+ }
+ }
+
+ private function writeUdp($data)
+ {
+ if (!$this->udpConnection) {
+ $this->connectUdp();
+ }
+
+ socket_send($this->udpConnection, $data, strlen($data), 0);
+ }
+
+ private function writeHttp($data)
+ {
+ if (!$this->httpConnection) {
+ $this->connectHttp();
+ }
+
+ curl_setopt($this->httpConnection, CURLOPT_POSTFIELDS, '['.$data.']');
+ curl_setopt($this->httpConnection, CURLOPT_HTTPHEADER, array(
+ 'Content-Type: application/json',
+ 'Content-Length: ' . strlen('['.$data.']'),
+ ));
+
+ Curl\Util::execute($this->httpConnection, 5, false);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php
new file mode 100644
index 0000000..f4649c7
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/Curl/Util.php
@@ -0,0 +1,57 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler\Curl;
+
+class Util
+{
+ private static $retriableErrorCodes = array(
+ CURLE_COULDNT_RESOLVE_HOST,
+ CURLE_COULDNT_CONNECT,
+ CURLE_HTTP_NOT_FOUND,
+ CURLE_READ_ERROR,
+ CURLE_OPERATION_TIMEOUTED,
+ CURLE_HTTP_POST_ERROR,
+ CURLE_SSL_CONNECT_ERROR,
+ );
+
+ /**
+ * Executes a CURL request with optional retries and exception on failure
+ *
+ * @param resource $ch curl handler
+ * @throws \RuntimeException
+ */
+ public static function execute($ch, $retries = 5, $closeAfterDone = true)
+ {
+ while ($retries--) {
+ if (curl_exec($ch) === false) {
+ $curlErrno = curl_errno($ch);
+
+ if (false === in_array($curlErrno, self::$retriableErrorCodes, true) || !$retries) {
+ $curlError = curl_error($ch);
+
+ if ($closeAfterDone) {
+ curl_close($ch);
+ }
+
+ throw new \RuntimeException(sprintf('Curl error (code %s): %s', $curlErrno, $curlError));
+ }
+
+ continue;
+ }
+
+ if ($closeAfterDone) {
+ curl_close($ch);
+ }
+ break;
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php
new file mode 100644
index 0000000..3051f2d
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/DeduplicationHandler.php
@@ -0,0 +1,169 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * Simple handler wrapper that deduplicates log records across multiple requests
+ *
+ * It also includes the BufferHandler functionality and will buffer
+ * all messages until the end of the request or flush() is called.
+ *
+ * This works by storing all log records' messages above $deduplicationLevel
+ * to the file specified by $deduplicationStore. When further logs come in at the end of the
+ * request (or when flush() is called), all those above $deduplicationLevel are checked
+ * against the existing stored logs. If they match and the timestamps in the stored log is
+ * not older than $time seconds, the new log record is discarded. If no log record is new, the
+ * whole data set is discarded.
+ *
+ * This is mainly useful in combination with Mail handlers or things like Slack or HipChat handlers
+ * that send messages to people, to avoid spamming with the same message over and over in case of
+ * a major component failure like a database server being down which makes all requests fail in the
+ * same way.
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class DeduplicationHandler extends BufferHandler
+{
+ /**
+ * @var string
+ */
+ protected $deduplicationStore;
+
+ /**
+ * @var int
+ */
+ protected $deduplicationLevel;
+
+ /**
+ * @var int
+ */
+ protected $time;
+
+ /**
+ * @var bool
+ */
+ private $gc = false;
+
+ /**
+ * @param HandlerInterface $handler Handler.
+ * @param string $deduplicationStore The file/path where the deduplication log should be kept
+ * @param int $deduplicationLevel The minimum logging level for log records to be looked at for deduplication purposes
+ * @param int $time The period (in seconds) during which duplicate entries should be suppressed after a given log is sent through
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct(HandlerInterface $handler, $deduplicationStore = null, $deduplicationLevel = Logger::ERROR, $time = 60, $bubble = true)
+ {
+ parent::__construct($handler, 0, Logger::DEBUG, $bubble, false);
+
+ $this->deduplicationStore = $deduplicationStore === null ? sys_get_temp_dir() . '/monolog-dedup-' . substr(md5(__FILE__), 0, 20) .'.log' : $deduplicationStore;
+ $this->deduplicationLevel = Logger::toMonologLevel($deduplicationLevel);
+ $this->time = $time;
+ }
+
+ public function flush()
+ {
+ if ($this->bufferSize === 0) {
+ return;
+ }
+
+ $passthru = null;
+
+ foreach ($this->buffer as $record) {
+ if ($record['level'] >= $this->deduplicationLevel) {
+
+ $passthru = $passthru || !$this->isDuplicate($record);
+ if ($passthru) {
+ $this->appendRecord($record);
+ }
+ }
+ }
+
+ // default of null is valid as well as if no record matches duplicationLevel we just pass through
+ if ($passthru === true || $passthru === null) {
+ $this->handler->handleBatch($this->buffer);
+ }
+
+ $this->clear();
+
+ if ($this->gc) {
+ $this->collectLogs();
+ }
+ }
+
+ private function isDuplicate(array $record)
+ {
+ if (!file_exists($this->deduplicationStore)) {
+ return false;
+ }
+
+ $store = file($this->deduplicationStore, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
+ if (!is_array($store)) {
+ return false;
+ }
+
+ $yesterday = time() - 86400;
+ $timestampValidity = $record['datetime']->getTimestamp() - $this->time;
+ $expectedMessage = preg_replace('{[\r\n].*}', '', $record['message']);
+
+ for ($i = count($store) - 1; $i >= 0; $i--) {
+ list($timestamp, $level, $message) = explode(':', $store[$i], 3);
+
+ if ($level === $record['level_name'] && $message === $expectedMessage && $timestamp > $timestampValidity) {
+ return true;
+ }
+
+ if ($timestamp < $yesterday) {
+ $this->gc = true;
+ }
+ }
+
+ return false;
+ }
+
+ private function collectLogs()
+ {
+ if (!file_exists($this->deduplicationStore)) {
+ return false;
+ }
+
+ $handle = fopen($this->deduplicationStore, 'rw+');
+ flock($handle, LOCK_EX);
+ $validLogs = array();
+
+ $timestampValidity = time() - $this->time;
+
+ while (!feof($handle)) {
+ $log = fgets($handle);
+ if (substr($log, 0, 10) >= $timestampValidity) {
+ $validLogs[] = $log;
+ }
+ }
+
+ ftruncate($handle, 0);
+ rewind($handle);
+ foreach ($validLogs as $log) {
+ fwrite($handle, $log);
+ }
+
+ flock($handle, LOCK_UN);
+ fclose($handle);
+
+ $this->gc = false;
+ }
+
+ private function appendRecord(array $record)
+ {
+ file_put_contents($this->deduplicationStore, $record['datetime']->getTimestamp() . ':' . $record['level_name'] . ':' . preg_replace('{[\r\n].*}', '', $record['message']) . "\n", FILE_APPEND);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php
new file mode 100644
index 0000000..5b47788
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/DoctrineCouchDBHandler.php
@@ -0,0 +1,45 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\Formatter\NormalizerFormatter;
+use Doctrine\CouchDB\CouchDBClient;
+
+/**
+ * CouchDB handler for Doctrine CouchDB ODM
+ *
+ * @author Markus Bachmann <markus.bachmann@bachi.biz>
+ */
+class DoctrineCouchDBHandler extends AbstractProcessingHandler
+{
+ private $client;
+
+ public function __construct(CouchDBClient $client, $level = Logger::DEBUG, $bubble = true)
+ {
+ $this->client = $client;
+ parent::__construct($level, $bubble);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function write(array $record)
+ {
+ $this->client->postDocument($record['formatted']);
+ }
+
+ protected function getDefaultFormatter()
+ {
+ return new NormalizerFormatter;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php
new file mode 100644
index 0000000..f822332
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/DynamoDbHandler.php
@@ -0,0 +1,107 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Aws\Sdk;
+use Aws\DynamoDb\DynamoDbClient;
+use Aws\DynamoDb\Marshaler;
+use Monolog\Formatter\ScalarFormatter;
+use Monolog\Logger;
+
+/**
+ * Amazon DynamoDB handler (http://aws.amazon.com/dynamodb/)
+ *
+ * @link https://github.com/aws/aws-sdk-php/
+ * @author Andrew Lawson <adlawson@gmail.com>
+ */
+class DynamoDbHandler extends AbstractProcessingHandler
+{
+ const DATE_FORMAT = 'Y-m-d\TH:i:s.uO';
+
+ /**
+ * @var DynamoDbClient
+ */
+ protected $client;
+
+ /**
+ * @var string
+ */
+ protected $table;
+
+ /**
+ * @var int
+ */
+ protected $version;
+
+ /**
+ * @var Marshaler
+ */
+ protected $marshaler;
+
+ /**
+ * @param DynamoDbClient $client
+ * @param string $table
+ * @param int $level
+ * @param bool $bubble
+ */
+ public function __construct(DynamoDbClient $client, $table, $level = Logger::DEBUG, $bubble = true)
+ {
+ if (defined('Aws\Sdk::VERSION') && version_compare(Sdk::VERSION, '3.0', '>=')) {
+ $this->version = 3;
+ $this->marshaler = new Marshaler;
+ } else {
+ $this->version = 2;
+ }
+
+ $this->client = $client;
+ $this->table = $table;
+
+ parent::__construct($level, $bubble);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function write(array $record)
+ {
+ $filtered = $this->filterEmptyFields($record['formatted']);
+ if ($this->version === 3) {
+ $formatted = $this->marshaler->marshalItem($filtered);
+ } else {
+ $formatted = $this->client->formatAttributes($filtered);
+ }
+
+ $this->client->putItem(array(
+ 'TableName' => $this->table,
+ 'Item' => $formatted,
+ ));
+ }
+
+ /**
+ * @param array $record
+ * @return array
+ */
+ protected function filterEmptyFields(array $record)
+ {
+ return array_filter($record, function ($value) {
+ return !empty($value) || false === $value || 0 === $value;
+ });
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new ScalarFormatter(self::DATE_FORMAT);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php
new file mode 100644
index 0000000..069c428
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ElasticSearchHandler.php
@@ -0,0 +1,128 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\FormatterInterface;
+use Monolog\Formatter\ElasticaFormatter;
+use Monolog\Logger;
+use Elastica\Client;
+use Elastica\Exception\ExceptionInterface;
+
+/**
+ * Elastic Search handler
+ *
+ * Usage example:
+ *
+ * $client = new \Elastica\Client();
+ * $options = array(
+ * 'index' => 'elastic_index_name',
+ * 'type' => 'elastic_doc_type',
+ * );
+ * $handler = new ElasticSearchHandler($client, $options);
+ * $log = new Logger('application');
+ * $log->pushHandler($handler);
+ *
+ * @author Jelle Vink <jelle.vink@gmail.com>
+ */
+class ElasticSearchHandler extends AbstractProcessingHandler
+{
+ /**
+ * @var Client
+ */
+ protected $client;
+
+ /**
+ * @var array Handler config options
+ */
+ protected $options = array();
+
+ /**
+ * @param Client $client Elastica Client object
+ * @param array $options Handler configuration
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct(Client $client, array $options = array(), $level = Logger::DEBUG, $bubble = true)
+ {
+ parent::__construct($level, $bubble);
+ $this->client = $client;
+ $this->options = array_merge(
+ array(
+ 'index' => 'monolog', // Elastic index name
+ 'type' => 'record', // Elastic document type
+ 'ignore_error' => false, // Suppress Elastica exceptions
+ ),
+ $options
+ );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function write(array $record)
+ {
+ $this->bulkSend(array($record['formatted']));
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setFormatter(FormatterInterface $formatter)
+ {
+ if ($formatter instanceof ElasticaFormatter) {
+ return parent::setFormatter($formatter);
+ }
+ throw new \InvalidArgumentException('ElasticSearchHandler is only compatible with ElasticaFormatter');
+ }
+
+ /**
+ * Getter options
+ * @return array
+ */
+ public function getOptions()
+ {
+ return $this->options;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new ElasticaFormatter($this->options['index'], $this->options['type']);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handleBatch(array $records)
+ {
+ $documents = $this->getFormatter()->formatBatch($records);
+ $this->bulkSend($documents);
+ }
+
+ /**
+ * Use Elasticsearch bulk API to send list of documents
+ * @param array $documents
+ * @throws \RuntimeException
+ */
+ protected function bulkSend(array $documents)
+ {
+ try {
+ $this->client->addDocuments($documents);
+ } catch (ExceptionInterface $e) {
+ if (!$this->options['ignore_error']) {
+ throw new \RuntimeException("Error sending messages to Elasticsearch", 0, $e);
+ }
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php
new file mode 100644
index 0000000..e419fd6
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ErrorLogHandler.php
@@ -0,0 +1,82 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\LineFormatter;
+use Monolog\Logger;
+
+/**
+ * Stores to PHP error_log() handler.
+ *
+ * @author Elan Ruusamäe <glen@delfi.ee>
+ */
+class ErrorLogHandler extends AbstractProcessingHandler
+{
+ const OPERATING_SYSTEM = 0;
+ const SAPI = 4;
+
+ protected $messageType;
+ protected $expandNewlines;
+
+ /**
+ * @param int $messageType Says where the error should go.
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ * @param Boolean $expandNewlines If set to true, newlines in the message will be expanded to be take multiple log entries
+ */
+ public function __construct($messageType = self::OPERATING_SYSTEM, $level = Logger::DEBUG, $bubble = true, $expandNewlines = false)
+ {
+ parent::__construct($level, $bubble);
+
+ if (false === in_array($messageType, self::getAvailableTypes())) {
+ $message = sprintf('The given message type "%s" is not supported', print_r($messageType, true));
+ throw new \InvalidArgumentException($message);
+ }
+
+ $this->messageType = $messageType;
+ $this->expandNewlines = $expandNewlines;
+ }
+
+ /**
+ * @return array With all available types
+ */
+ public static function getAvailableTypes()
+ {
+ return array(
+ self::OPERATING_SYSTEM,
+ self::SAPI,
+ );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new LineFormatter('[%datetime%] %channel%.%level_name%: %message% %context% %extra%');
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function write(array $record)
+ {
+ if ($this->expandNewlines) {
+ $lines = preg_split('{[\r\n]+}', (string) $record['formatted']);
+ foreach ($lines as $line) {
+ error_log($line, $this->messageType);
+ }
+ } else {
+ error_log((string) $record['formatted'], $this->messageType);
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php
new file mode 100644
index 0000000..688d7e1
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FilterHandler.php
@@ -0,0 +1,140 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * Simple handler wrapper that filters records based on a list of levels
+ *
+ * It can be configured with an exact list of levels to allow, or a min/max level.
+ *
+ * @author Hennadiy Verkh
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class FilterHandler extends AbstractHandler
+{
+ /**
+ * Handler or factory callable($record, $this)
+ *
+ * @var callable|\Monolog\Handler\HandlerInterface
+ */
+ protected $handler;
+
+ /**
+ * Minimum level for logs that are passed to handler
+ *
+ * @var int[]
+ */
+ protected $acceptedLevels;
+
+ /**
+ * Whether the messages that are handled can bubble up the stack or not
+ *
+ * @var Boolean
+ */
+ protected $bubble;
+
+ /**
+ * @param callable|HandlerInterface $handler Handler or factory callable($record, $this).
+ * @param int|array $minLevelOrList A list of levels to accept or a minimum level if maxLevel is provided
+ * @param int $maxLevel Maximum level to accept, only used if $minLevelOrList is not an array
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct($handler, $minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY, $bubble = true)
+ {
+ $this->handler = $handler;
+ $this->bubble = $bubble;
+ $this->setAcceptedLevels($minLevelOrList, $maxLevel);
+
+ if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) {
+ throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object");
+ }
+ }
+
+ /**
+ * @return array
+ */
+ public function getAcceptedLevels()
+ {
+ return array_flip($this->acceptedLevels);
+ }
+
+ /**
+ * @param int|string|array $minLevelOrList A list of levels to accept or a minimum level or level name if maxLevel is provided
+ * @param int|string $maxLevel Maximum level or level name to accept, only used if $minLevelOrList is not an array
+ */
+ public function setAcceptedLevels($minLevelOrList = Logger::DEBUG, $maxLevel = Logger::EMERGENCY)
+ {
+ if (is_array($minLevelOrList)) {
+ $acceptedLevels = array_map('Monolog\Logger::toMonologLevel', $minLevelOrList);
+ } else {
+ $minLevelOrList = Logger::toMonologLevel($minLevelOrList);
+ $maxLevel = Logger::toMonologLevel($maxLevel);
+ $acceptedLevels = array_values(array_filter(Logger::getLevels(), function ($level) use ($minLevelOrList, $maxLevel) {
+ return $level >= $minLevelOrList && $level <= $maxLevel;
+ }));
+ }
+ $this->acceptedLevels = array_flip($acceptedLevels);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isHandling(array $record)
+ {
+ return isset($this->acceptedLevels[$record['level']]);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handle(array $record)
+ {
+ if (!$this->isHandling($record)) {
+ return false;
+ }
+
+ // The same logic as in FingersCrossedHandler
+ if (!$this->handler instanceof HandlerInterface) {
+ $this->handler = call_user_func($this->handler, $record, $this);
+ if (!$this->handler instanceof HandlerInterface) {
+ throw new \RuntimeException("The factory callable should return a HandlerInterface");
+ }
+ }
+
+ if ($this->processors) {
+ foreach ($this->processors as $processor) {
+ $record = call_user_func($processor, $record);
+ }
+ }
+
+ $this->handler->handle($record);
+
+ return false === $this->bubble;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handleBatch(array $records)
+ {
+ $filtered = array();
+ foreach ($records as $record) {
+ if ($this->isHandling($record)) {
+ $filtered[] = $record;
+ }
+ }
+
+ $this->handler->handleBatch($filtered);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php
new file mode 100644
index 0000000..cea0a9c
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ActivationStrategyInterface.php
@@ -0,0 +1,28 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler\FingersCrossed;
+
+/**
+ * Interface for activation strategies for the FingersCrossedHandler.
+ *
+ * @author Johannes M. Schmitt <schmittjoh@gmail.com>
+ */
+interface ActivationStrategyInterface
+{
+ /**
+ * Returns whether the given record activates the handler.
+ *
+ * @param array $record
+ * @return Boolean
+ */
+ public function isHandlerActivated(array $record);
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php
new file mode 100644
index 0000000..0c57ea7
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ChannelLevelActivationStrategy.php
@@ -0,0 +1,59 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler\FingersCrossed;
+
+use Monolog\Logger;
+
+/**
+ * Channel and Error level based monolog activation strategy. Allows to trigger activation
+ * based on level per channel. e.g. trigger activation on level 'ERROR' by default, except
+ * for records of the 'sql' channel; those should trigger activation on level 'WARN'.
+ *
+ * Example:
+ *
+ * <code>
+ * $activationStrategy = new ChannelLevelActivationStrategy(
+ * Logger::CRITICAL,
+ * array(
+ * 'request' => Logger::ALERT,
+ * 'sensitive' => Logger::ERROR,
+ * )
+ * );
+ * $handler = new FingersCrossedHandler(new StreamHandler('php://stderr'), $activationStrategy);
+ * </code>
+ *
+ * @author Mike Meessen <netmikey@gmail.com>
+ */
+class ChannelLevelActivationStrategy implements ActivationStrategyInterface
+{
+ private $defaultActionLevel;
+ private $channelToActionLevel;
+
+ /**
+ * @param int $defaultActionLevel The default action level to be used if the record's category doesn't match any
+ * @param array $channelToActionLevel An array that maps channel names to action levels.
+ */
+ public function __construct($defaultActionLevel, $channelToActionLevel = array())
+ {
+ $this->defaultActionLevel = Logger::toMonologLevel($defaultActionLevel);
+ $this->channelToActionLevel = array_map('Monolog\Logger::toMonologLevel', $channelToActionLevel);
+ }
+
+ public function isHandlerActivated(array $record)
+ {
+ if (isset($this->channelToActionLevel[$record['channel']])) {
+ return $record['level'] >= $this->channelToActionLevel[$record['channel']];
+ }
+
+ return $record['level'] >= $this->defaultActionLevel;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php
new file mode 100644
index 0000000..ee92c18
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossed/ErrorLevelActivationStrategy.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler\FingersCrossed;
+
+use Monolog\Logger;
+
+/**
+ * Error level based activation strategy.
+ *
+ * @author Johannes M. Schmitt <schmittjoh@gmail.com>
+ */
+class ErrorLevelActivationStrategy implements ActivationStrategyInterface
+{
+ private $actionLevel;
+
+ public function __construct($actionLevel)
+ {
+ $this->actionLevel = Logger::toMonologLevel($actionLevel);
+ }
+
+ public function isHandlerActivated(array $record)
+ {
+ return $record['level'] >= $this->actionLevel;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php
new file mode 100644
index 0000000..eb62a24
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FingersCrossedHandler.php
@@ -0,0 +1,163 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy;
+use Monolog\Handler\FingersCrossed\ActivationStrategyInterface;
+use Monolog\Logger;
+
+/**
+ * Buffers all records until a certain level is reached
+ *
+ * The advantage of this approach is that you don't get any clutter in your log files.
+ * Only requests which actually trigger an error (or whatever your actionLevel is) will be
+ * in the logs, but they will contain all records, not only those above the level threshold.
+ *
+ * You can find the various activation strategies in the
+ * Monolog\Handler\FingersCrossed\ namespace.
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class FingersCrossedHandler extends AbstractHandler
+{
+ protected $handler;
+ protected $activationStrategy;
+ protected $buffering = true;
+ protected $bufferSize;
+ protected $buffer = array();
+ protected $stopBuffering;
+ protected $passthruLevel;
+
+ /**
+ * @param callable|HandlerInterface $handler Handler or factory callable($record, $fingersCrossedHandler).
+ * @param int|ActivationStrategyInterface $activationStrategy Strategy which determines when this handler takes action
+ * @param int $bufferSize How many entries should be buffered at most, beyond that the oldest items are removed from the buffer.
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ * @param Boolean $stopBuffering Whether the handler should stop buffering after being triggered (default true)
+ * @param int $passthruLevel Minimum level to always flush to handler on close, even if strategy not triggered
+ */
+ public function __construct($handler, $activationStrategy = null, $bufferSize = 0, $bubble = true, $stopBuffering = true, $passthruLevel = null)
+ {
+ if (null === $activationStrategy) {
+ $activationStrategy = new ErrorLevelActivationStrategy(Logger::WARNING);
+ }
+
+ // convert simple int activationStrategy to an object
+ if (!$activationStrategy instanceof ActivationStrategyInterface) {
+ $activationStrategy = new ErrorLevelActivationStrategy($activationStrategy);
+ }
+
+ $this->handler = $handler;
+ $this->activationStrategy = $activationStrategy;
+ $this->bufferSize = $bufferSize;
+ $this->bubble = $bubble;
+ $this->stopBuffering = $stopBuffering;
+
+ if ($passthruLevel !== null) {
+ $this->passthruLevel = Logger::toMonologLevel($passthruLevel);
+ }
+
+ if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) {
+ throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object");
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isHandling(array $record)
+ {
+ return true;
+ }
+
+ /**
+ * Manually activate this logger regardless of the activation strategy
+ */
+ public function activate()
+ {
+ if ($this->stopBuffering) {
+ $this->buffering = false;
+ }
+ if (!$this->handler instanceof HandlerInterface) {
+ $record = end($this->buffer) ?: null;
+
+ $this->handler = call_user_func($this->handler, $record, $this);
+ if (!$this->handler instanceof HandlerInterface) {
+ throw new \RuntimeException("The factory callable should return a HandlerInterface");
+ }
+ }
+ $this->handler->handleBatch($this->buffer);
+ $this->buffer = array();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handle(array $record)
+ {
+ if ($this->processors) {
+ foreach ($this->processors as $processor) {
+ $record = call_user_func($processor, $record);
+ }
+ }
+
+ if ($this->buffering) {
+ $this->buffer[] = $record;
+ if ($this->bufferSize > 0 && count($this->buffer) > $this->bufferSize) {
+ array_shift($this->buffer);
+ }
+ if ($this->activationStrategy->isHandlerActivated($record)) {
+ $this->activate();
+ }
+ } else {
+ $this->handler->handle($record);
+ }
+
+ return false === $this->bubble;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function close()
+ {
+ if (null !== $this->passthruLevel) {
+ $level = $this->passthruLevel;
+ $this->buffer = array_filter($this->buffer, function ($record) use ($level) {
+ return $record['level'] >= $level;
+ });
+ if (count($this->buffer) > 0) {
+ $this->handler->handleBatch($this->buffer);
+ $this->buffer = array();
+ }
+ }
+ }
+
+ /**
+ * Resets the state of the handler. Stops forwarding records to the wrapped handler.
+ */
+ public function reset()
+ {
+ $this->buffering = true;
+ }
+
+ /**
+ * Clears the buffer without flushing any messages down to the wrapped handler.
+ *
+ * It also resets the handler to its initial buffering state.
+ */
+ public function clear()
+ {
+ $this->buffer = array();
+ $this->reset();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php
new file mode 100644
index 0000000..5945878
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FirePHPHandler.php
@@ -0,0 +1,195 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\WildfireFormatter;
+
+/**
+ * Simple FirePHP Handler (http://www.firephp.org/), which uses the Wildfire protocol.
+ *
+ * @author Eric Clemmons (@ericclemmons) <eric@uxdriven.com>
+ */
+class FirePHPHandler extends AbstractProcessingHandler
+{
+ /**
+ * WildFire JSON header message format
+ */
+ const PROTOCOL_URI = 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2';
+
+ /**
+ * FirePHP structure for parsing messages & their presentation
+ */
+ const STRUCTURE_URI = 'http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1';
+
+ /**
+ * Must reference a "known" plugin, otherwise headers won't display in FirePHP
+ */
+ const PLUGIN_URI = 'http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3';
+
+ /**
+ * Header prefix for Wildfire to recognize & parse headers
+ */
+ const HEADER_PREFIX = 'X-Wf';
+
+ /**
+ * Whether or not Wildfire vendor-specific headers have been generated & sent yet
+ */
+ protected static $initialized = false;
+
+ /**
+ * Shared static message index between potentially multiple handlers
+ * @var int
+ */
+ protected static $messageIndex = 1;
+
+ protected static $sendHeaders = true;
+
+ /**
+ * Base header creation function used by init headers & record headers
+ *
+ * @param array $meta Wildfire Plugin, Protocol & Structure Indexes
+ * @param string $message Log message
+ * @return array Complete header string ready for the client as key and message as value
+ */
+ protected function createHeader(array $meta, $message)
+ {
+ $header = sprintf('%s-%s', self::HEADER_PREFIX, join('-', $meta));
+
+ return array($header => $message);
+ }
+
+ /**
+ * Creates message header from record
+ *
+ * @see createHeader()
+ * @param array $record
+ * @return string
+ */
+ protected function createRecordHeader(array $record)
+ {
+ // Wildfire is extensible to support multiple protocols & plugins in a single request,
+ // but we're not taking advantage of that (yet), so we're using "1" for simplicity's sake.
+ return $this->createHeader(
+ array(1, 1, 1, self::$messageIndex++),
+ $record['formatted']
+ );
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new WildfireFormatter();
+ }
+
+ /**
+ * Wildfire initialization headers to enable message parsing
+ *
+ * @see createHeader()
+ * @see sendHeader()
+ * @return array
+ */
+ protected function getInitHeaders()
+ {
+ // Initial payload consists of required headers for Wildfire
+ return array_merge(
+ $this->createHeader(array('Protocol', 1), self::PROTOCOL_URI),
+ $this->createHeader(array(1, 'Structure', 1), self::STRUCTURE_URI),
+ $this->createHeader(array(1, 'Plugin', 1), self::PLUGIN_URI)
+ );
+ }
+
+ /**
+ * Send header string to the client
+ *
+ * @param string $header
+ * @param string $content
+ */
+ protected function sendHeader($header, $content)
+ {
+ if (!headers_sent() && self::$sendHeaders) {
+ header(sprintf('%s: %s', $header, $content));
+ }
+ }
+
+ /**
+ * Creates & sends header for a record, ensuring init headers have been sent prior
+ *
+ * @see sendHeader()
+ * @see sendInitHeaders()
+ * @param array $record
+ */
+ protected function write(array $record)
+ {
+ if (!self::$sendHeaders) {
+ return;
+ }
+
+ // WildFire-specific headers must be sent prior to any messages
+ if (!self::$initialized) {
+ self::$initialized = true;
+
+ self::$sendHeaders = $this->headersAccepted();
+ if (!self::$sendHeaders) {
+ return;
+ }
+
+ foreach ($this->getInitHeaders() as $header => $content) {
+ $this->sendHeader($header, $content);
+ }
+ }
+
+ $header = $this->createRecordHeader($record);
+ if (trim(current($header)) !== '') {
+ $this->sendHeader(key($header), current($header));
+ }
+ }
+
+ /**
+ * Verifies if the headers are accepted by the current user agent
+ *
+ * @return Boolean
+ */
+ protected function headersAccepted()
+ {
+ if (!empty($_SERVER['HTTP_USER_AGENT']) && preg_match('{\bFirePHP/\d+\.\d+\b}', $_SERVER['HTTP_USER_AGENT'])) {
+ return true;
+ }
+
+ return isset($_SERVER['HTTP_X_FIREPHP_VERSION']);
+ }
+
+ /**
+ * BC getter for the sendHeaders property that has been made static
+ */
+ public function __get($property)
+ {
+ if ('sendHeaders' !== $property) {
+ throw new \InvalidArgumentException('Undefined property '.$property);
+ }
+
+ return static::$sendHeaders;
+ }
+
+ /**
+ * BC setter for the sendHeaders property that has been made static
+ */
+ public function __set($property, $value)
+ {
+ if ('sendHeaders' !== $property) {
+ throw new \InvalidArgumentException('Undefined property '.$property);
+ }
+
+ static::$sendHeaders = $value;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php
new file mode 100644
index 0000000..cd4892e
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FleepHookHandler.php
@@ -0,0 +1,126 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\LineFormatter;
+use Monolog\Logger;
+
+/**
+ * Sends logs to Fleep.io using Webhook integrations
+ *
+ * You'll need a Fleep.io account to use this handler.
+ *
+ * @see https://fleep.io/integrations/webhooks/ Fleep Webhooks Documentation
+ * @author Ando Roots <ando@sqroot.eu>
+ */
+class FleepHookHandler extends SocketHandler
+{
+ const FLEEP_HOST = 'fleep.io';
+
+ const FLEEP_HOOK_URI = '/hook/';
+
+ /**
+ * @var string Webhook token (specifies the conversation where logs are sent)
+ */
+ protected $token;
+
+ /**
+ * Construct a new Fleep.io Handler.
+ *
+ * For instructions on how to create a new web hook in your conversations
+ * see https://fleep.io/integrations/webhooks/
+ *
+ * @param string $token Webhook token
+ * @param bool|int $level The minimum logging level at which this handler will be triggered
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
+ * @throws MissingExtensionException
+ */
+ public function __construct($token, $level = Logger::DEBUG, $bubble = true)
+ {
+ if (!extension_loaded('openssl')) {
+ throw new MissingExtensionException('The OpenSSL PHP extension is required to use the FleepHookHandler');
+ }
+
+ $this->token = $token;
+
+ $connectionString = 'ssl://' . self::FLEEP_HOST . ':443';
+ parent::__construct($connectionString, $level, $bubble);
+ }
+
+ /**
+ * Returns the default formatter to use with this handler
+ *
+ * Overloaded to remove empty context and extra arrays from the end of the log message.
+ *
+ * @return LineFormatter
+ */
+ protected function getDefaultFormatter()
+ {
+ return new LineFormatter(null, null, true, true);
+ }
+
+ /**
+ * Handles a log record
+ *
+ * @param array $record
+ */
+ public function write(array $record)
+ {
+ parent::write($record);
+ $this->closeSocket();
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param array $record
+ * @return string
+ */
+ protected function generateDataStream($record)
+ {
+ $content = $this->buildContent($record);
+
+ return $this->buildHeader($content) . $content;
+ }
+
+ /**
+ * Builds the header of the API Call
+ *
+ * @param string $content
+ * @return string
+ */
+ private function buildHeader($content)
+ {
+ $header = "POST " . self::FLEEP_HOOK_URI . $this->token . " HTTP/1.1\r\n";
+ $header .= "Host: " . self::FLEEP_HOST . "\r\n";
+ $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
+ $header .= "Content-Length: " . strlen($content) . "\r\n";
+ $header .= "\r\n";
+
+ return $header;
+ }
+
+ /**
+ * Builds the body of API call
+ *
+ * @param array $record
+ * @return string
+ */
+ private function buildContent($record)
+ {
+ $dataArray = array(
+ 'message' => $record['formatted'],
+ );
+
+ return http_build_query($dataArray);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php
new file mode 100644
index 0000000..abc3436
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/FlowdockHandler.php
@@ -0,0 +1,127 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\Formatter\FlowdockFormatter;
+use Monolog\Formatter\FormatterInterface;
+
+/**
+ * Sends notifications through the Flowdock push API
+ *
+ * This must be configured with a FlowdockFormatter instance via setFormatter()
+ *
+ * Notes:
+ * API token - Flowdock API token
+ *
+ * @author Dominik Liebler <liebler.dominik@gmail.com>
+ * @see https://www.flowdock.com/api/push
+ */
+class FlowdockHandler extends SocketHandler
+{
+ /**
+ * @var string
+ */
+ protected $apiToken;
+
+ /**
+ * @param string $apiToken
+ * @param bool|int $level The minimum logging level at which this handler will be triggered
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
+ *
+ * @throws MissingExtensionException if OpenSSL is missing
+ */
+ public function __construct($apiToken, $level = Logger::DEBUG, $bubble = true)
+ {
+ if (!extension_loaded('openssl')) {
+ throw new MissingExtensionException('The OpenSSL PHP extension is required to use the FlowdockHandler');
+ }
+
+ parent::__construct('ssl://api.flowdock.com:443', $level, $bubble);
+ $this->apiToken = $apiToken;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setFormatter(FormatterInterface $formatter)
+ {
+ if (!$formatter instanceof FlowdockFormatter) {
+ throw new \InvalidArgumentException('The FlowdockHandler requires an instance of Monolog\Formatter\FlowdockFormatter to function correctly');
+ }
+
+ return parent::setFormatter($formatter);
+ }
+
+ /**
+ * Gets the default formatter.
+ *
+ * @return FormatterInterface
+ */
+ protected function getDefaultFormatter()
+ {
+ throw new \InvalidArgumentException('The FlowdockHandler must be configured (via setFormatter) with an instance of Monolog\Formatter\FlowdockFormatter to function correctly');
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param array $record
+ */
+ protected function write(array $record)
+ {
+ parent::write($record);
+
+ $this->closeSocket();
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param array $record
+ * @return string
+ */
+ protected function generateDataStream($record)
+ {
+ $content = $this->buildContent($record);
+
+ return $this->buildHeader($content) . $content;
+ }
+
+ /**
+ * Builds the body of API call
+ *
+ * @param array $record
+ * @return string
+ */
+ private function buildContent($record)
+ {
+ return json_encode($record['formatted']['flowdock']);
+ }
+
+ /**
+ * Builds the header of the API Call
+ *
+ * @param string $content
+ * @return string
+ */
+ private function buildHeader($content)
+ {
+ $header = "POST /v1/messages/team_inbox/" . $this->apiToken . " HTTP/1.1\r\n";
+ $header .= "Host: api.flowdock.com\r\n";
+ $header .= "Content-Type: application/json\r\n";
+ $header .= "Content-Length: " . strlen($content) . "\r\n";
+ $header .= "\r\n";
+
+ return $header;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php
new file mode 100644
index 0000000..bc2d739
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/GelfHandler.php
@@ -0,0 +1,73 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Gelf\IMessagePublisher;
+use Gelf\PublisherInterface;
+use Gelf\Publisher;
+use InvalidArgumentException;
+use Monolog\Logger;
+use Monolog\Formatter\GelfMessageFormatter;
+
+/**
+ * Handler to send messages to a Graylog2 (http://www.graylog2.org) server
+ *
+ * @author Matt Lehner <mlehner@gmail.com>
+ * @author Benjamin Zikarsky <benjamin@zikarsky.de>
+ */
+class GelfHandler extends AbstractProcessingHandler
+{
+ /**
+ * @var Publisher the publisher object that sends the message to the server
+ */
+ protected $publisher;
+
+ /**
+ * @param PublisherInterface|IMessagePublisher|Publisher $publisher a publisher object
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct($publisher, $level = Logger::DEBUG, $bubble = true)
+ {
+ parent::__construct($level, $bubble);
+
+ if (!$publisher instanceof Publisher && !$publisher instanceof IMessagePublisher && !$publisher instanceof PublisherInterface) {
+ throw new InvalidArgumentException('Invalid publisher, expected a Gelf\Publisher, Gelf\IMessagePublisher or Gelf\PublisherInterface instance');
+ }
+
+ $this->publisher = $publisher;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function close()
+ {
+ $this->publisher = null;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function write(array $record)
+ {
+ $this->publisher->publish($record['formatted']);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new GelfMessageFormatter();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php
new file mode 100644
index 0000000..02ac57e
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/GroupHandler.php
@@ -0,0 +1,104 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\FormatterInterface;
+
+/**
+ * Forwards records to multiple handlers
+ *
+ * @author Lenar Lõhmus <lenar@city.ee>
+ */
+class GroupHandler extends AbstractHandler
+{
+ protected $handlers;
+
+ /**
+ * @param array $handlers Array of Handlers.
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct(array $handlers, $bubble = true)
+ {
+ foreach ($handlers as $handler) {
+ if (!$handler instanceof HandlerInterface) {
+ throw new \InvalidArgumentException('The first argument of the GroupHandler must be an array of HandlerInterface instances.');
+ }
+ }
+
+ $this->handlers = $handlers;
+ $this->bubble = $bubble;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isHandling(array $record)
+ {
+ foreach ($this->handlers as $handler) {
+ if ($handler->isHandling($record)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handle(array $record)
+ {
+ if ($this->processors) {
+ foreach ($this->processors as $processor) {
+ $record = call_user_func($processor, $record);
+ }
+ }
+
+ foreach ($this->handlers as $handler) {
+ $handler->handle($record);
+ }
+
+ return false === $this->bubble;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handleBatch(array $records)
+ {
+ if ($this->processors) {
+ $processed = array();
+ foreach ($records as $record) {
+ foreach ($this->processors as $processor) {
+ $processed[] = call_user_func($processor, $record);
+ }
+ }
+ $records = $processed;
+ }
+
+ foreach ($this->handlers as $handler) {
+ $handler->handleBatch($records);
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setFormatter(FormatterInterface $formatter)
+ {
+ foreach ($this->handlers as $handler) {
+ $handler->setFormatter($formatter);
+ }
+
+ return $this;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php
new file mode 100644
index 0000000..2d3451b
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/HandlerInterface.php
@@ -0,0 +1,90 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\FormatterInterface;
+
+/**
+ * Interface that all Monolog Handlers must implement
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+interface HandlerInterface
+{
+ /**
+ * Checks whether the given record will be handled by this handler.
+ *
+ * This is mostly done for performance reasons, to avoid calling processors for nothing.
+ *
+ * Handlers should still check the record levels within handle(), returning false in isHandling()
+ * is no guarantee that handle() will not be called, and isHandling() might not be called
+ * for a given record.
+ *
+ * @param array $record Partial log record containing only a level key
+ *
+ * @return Boolean
+ */
+ public function isHandling(array $record);
+
+ /**
+ * Handles a record.
+ *
+ * All records may be passed to this method, and the handler should discard
+ * those that it does not want to handle.
+ *
+ * The return value of this function controls the bubbling process of the handler stack.
+ * Unless the bubbling is interrupted (by returning true), the Logger class will keep on
+ * calling further handlers in the stack with a given log record.
+ *
+ * @param array $record The record to handle
+ * @return Boolean true means that this handler handled the record, and that bubbling is not permitted.
+ * false means the record was either not processed or that this handler allows bubbling.
+ */
+ public function handle(array $record);
+
+ /**
+ * Handles a set of records at once.
+ *
+ * @param array $records The records to handle (an array of record arrays)
+ */
+ public function handleBatch(array $records);
+
+ /**
+ * Adds a processor in the stack.
+ *
+ * @param callable $callback
+ * @return self
+ */
+ public function pushProcessor($callback);
+
+ /**
+ * Removes the processor on top of the stack and returns it.
+ *
+ * @return callable
+ */
+ public function popProcessor();
+
+ /**
+ * Sets the formatter.
+ *
+ * @param FormatterInterface $formatter
+ * @return self
+ */
+ public function setFormatter(FormatterInterface $formatter);
+
+ /**
+ * Gets the formatter.
+ *
+ * @return FormatterInterface
+ */
+ public function getFormatter();
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php
new file mode 100644
index 0000000..918678a
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/HandlerWrapper.php
@@ -0,0 +1,108 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\FormatterInterface;
+
+/**
+ * This simple wrapper class can be used to extend handlers functionality.
+ *
+ * Example: A custom filtering that can be applied to any handler.
+ *
+ * Inherit from this class and override handle() like this:
+ *
+ * public function handle(array $record)
+ * {
+ * if ($record meets certain conditions) {
+ * return false;
+ * }
+ * return $this->handler->handle($record);
+ * }
+ *
+ * @author Alexey Karapetov <alexey@karapetov.com>
+ */
+class HandlerWrapper implements HandlerInterface
+{
+ /**
+ * @var HandlerInterface
+ */
+ protected $handler;
+
+ /**
+ * HandlerWrapper constructor.
+ * @param HandlerInterface $handler
+ */
+ public function __construct(HandlerInterface $handler)
+ {
+ $this->handler = $handler;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function isHandling(array $record)
+ {
+ return $this->handler->isHandling($record);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handle(array $record)
+ {
+ return $this->handler->handle($record);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handleBatch(array $records)
+ {
+ return $this->handler->handleBatch($records);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function pushProcessor($callback)
+ {
+ $this->handler->pushProcessor($callback);
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function popProcessor()
+ {
+ return $this->handler->popProcessor();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function setFormatter(FormatterInterface $formatter)
+ {
+ $this->handler->setFormatter($formatter);
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getFormatter()
+ {
+ return $this->handler->getFormatter();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php
new file mode 100644
index 0000000..ede97c9
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/HipChatHandler.php
@@ -0,0 +1,350 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * Sends notifications through the hipchat api to a hipchat room
+ *
+ * Notes:
+ * API token - HipChat API token
+ * Room - HipChat Room Id or name, where messages are sent
+ * Name - Name used to send the message (from)
+ * notify - Should the message trigger a notification in the clients
+ * version - The API version to use (HipChatHandler::API_V1 | HipChatHandler::API_V2)
+ *
+ * @author Rafael Dohms <rafael@doh.ms>
+ * @see https://www.hipchat.com/docs/api
+ */
+class HipChatHandler extends SocketHandler
+{
+ /**
+ * Use API version 1
+ */
+ const API_V1 = 'v1';
+
+ /**
+ * Use API version v2
+ */
+ const API_V2 = 'v2';
+
+ /**
+ * The maximum allowed length for the name used in the "from" field.
+ */
+ const MAXIMUM_NAME_LENGTH = 15;
+
+ /**
+ * The maximum allowed length for the message.
+ */
+ const MAXIMUM_MESSAGE_LENGTH = 9500;
+
+ /**
+ * @var string
+ */
+ private $token;
+
+ /**
+ * @var string
+ */
+ private $room;
+
+ /**
+ * @var string
+ */
+ private $name;
+
+ /**
+ * @var bool
+ */
+ private $notify;
+
+ /**
+ * @var string
+ */
+ private $format;
+
+ /**
+ * @var string
+ */
+ private $host;
+
+ /**
+ * @var string
+ */
+ private $version;
+
+ /**
+ * @param string $token HipChat API Token
+ * @param string $room The room that should be alerted of the message (Id or Name)
+ * @param string $name Name used in the "from" field.
+ * @param bool $notify Trigger a notification in clients or not
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
+ * @param bool $useSSL Whether to connect via SSL.
+ * @param string $format The format of the messages (default to text, can be set to html if you have html in the messages)
+ * @param string $host The HipChat server hostname.
+ * @param string $version The HipChat API version (default HipChatHandler::API_V1)
+ */
+ public function __construct($token, $room, $name = 'Monolog', $notify = false, $level = Logger::CRITICAL, $bubble = true, $useSSL = true, $format = 'text', $host = 'api.hipchat.com', $version = self::API_V1)
+ {
+ if ($version == self::API_V1 && !$this->validateStringLength($name, static::MAXIMUM_NAME_LENGTH)) {
+ throw new \InvalidArgumentException('The supplied name is too long. HipChat\'s v1 API supports names up to 15 UTF-8 characters.');
+ }
+
+ $connectionString = $useSSL ? 'ssl://'.$host.':443' : $host.':80';
+ parent::__construct($connectionString, $level, $bubble);
+
+ $this->token = $token;
+ $this->name = $name;
+ $this->notify = $notify;
+ $this->room = $room;
+ $this->format = $format;
+ $this->host = $host;
+ $this->version = $version;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param array $record
+ * @return string
+ */
+ protected function generateDataStream($record)
+ {
+ $content = $this->buildContent($record);
+
+ return $this->buildHeader($content) . $content;
+ }
+
+ /**
+ * Builds the body of API call
+ *
+ * @param array $record
+ * @return string
+ */
+ private function buildContent($record)
+ {
+ $dataArray = array(
+ 'notify' => $this->version == self::API_V1 ?
+ ($this->notify ? 1 : 0) :
+ ($this->notify ? 'true' : 'false'),
+ 'message' => $record['formatted'],
+ 'message_format' => $this->format,
+ 'color' => $this->getAlertColor($record['level']),
+ );
+
+ if (!$this->validateStringLength($dataArray['message'], static::MAXIMUM_MESSAGE_LENGTH)) {
+ if (function_exists('mb_substr')) {
+ $dataArray['message'] = mb_substr($dataArray['message'], 0, static::MAXIMUM_MESSAGE_LENGTH).' [truncated]';
+ } else {
+ $dataArray['message'] = substr($dataArray['message'], 0, static::MAXIMUM_MESSAGE_LENGTH).' [truncated]';
+ }
+ }
+
+ // if we are using the legacy API then we need to send some additional information
+ if ($this->version == self::API_V1) {
+ $dataArray['room_id'] = $this->room;
+ }
+
+ // append the sender name if it is set
+ // always append it if we use the v1 api (it is required in v1)
+ if ($this->version == self::API_V1 || $this->name !== null) {
+ $dataArray['from'] = (string) $this->name;
+ }
+
+ return http_build_query($dataArray);
+ }
+
+ /**
+ * Builds the header of the API Call
+ *
+ * @param string $content
+ * @return string
+ */
+ private function buildHeader($content)
+ {
+ if ($this->version == self::API_V1) {
+ $header = "POST /v1/rooms/message?format=json&auth_token={$this->token} HTTP/1.1\r\n";
+ } else {
+ // needed for rooms with special (spaces, etc) characters in the name
+ $room = rawurlencode($this->room);
+ $header = "POST /v2/room/{$room}/notification?auth_token={$this->token} HTTP/1.1\r\n";
+ }
+
+ $header .= "Host: {$this->host}\r\n";
+ $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
+ $header .= "Content-Length: " . strlen($content) . "\r\n";
+ $header .= "\r\n";
+
+ return $header;
+ }
+
+ /**
+ * Assigns a color to each level of log records.
+ *
+ * @param int $level
+ * @return string
+ */
+ protected function getAlertColor($level)
+ {
+ switch (true) {
+ case $level >= Logger::ERROR:
+ return 'red';
+ case $level >= Logger::WARNING:
+ return 'yellow';
+ case $level >= Logger::INFO:
+ return 'green';
+ case $level == Logger::DEBUG:
+ return 'gray';
+ default:
+ return 'yellow';
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param array $record
+ */
+ protected function write(array $record)
+ {
+ parent::write($record);
+ $this->closeSocket();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handleBatch(array $records)
+ {
+ if (count($records) == 0) {
+ return true;
+ }
+
+ $batchRecords = $this->combineRecords($records);
+
+ $handled = false;
+ foreach ($batchRecords as $batchRecord) {
+ if ($this->isHandling($batchRecord)) {
+ $this->write($batchRecord);
+ $handled = true;
+ }
+ }
+
+ if (!$handled) {
+ return false;
+ }
+
+ return false === $this->bubble;
+ }
+
+ /**
+ * Combines multiple records into one. Error level of the combined record
+ * will be the highest level from the given records. Datetime will be taken
+ * from the first record.
+ *
+ * @param $records
+ * @return array
+ */
+ private function combineRecords($records)
+ {
+ $batchRecord = null;
+ $batchRecords = array();
+ $messages = array();
+ $formattedMessages = array();
+ $level = 0;
+ $levelName = null;
+ $datetime = null;
+
+ foreach ($records as $record) {
+ $record = $this->processRecord($record);
+
+ if ($record['level'] > $level) {
+ $level = $record['level'];
+ $levelName = $record['level_name'];
+ }
+
+ if (null === $datetime) {
+ $datetime = $record['datetime'];
+ }
+
+ $messages[] = $record['message'];
+ $messageStr = implode(PHP_EOL, $messages);
+ $formattedMessages[] = $this->getFormatter()->format($record);
+ $formattedMessageStr = implode('', $formattedMessages);
+
+ $batchRecord = array(
+ 'message' => $messageStr,
+ 'formatted' => $formattedMessageStr,
+ 'context' => array(),
+ 'extra' => array(),
+ );
+
+ if (!$this->validateStringLength($batchRecord['formatted'], static::MAXIMUM_MESSAGE_LENGTH)) {
+ // Pop the last message and implode the remaining messages
+ $lastMessage = array_pop($messages);
+ $lastFormattedMessage = array_pop($formattedMessages);
+ $batchRecord['message'] = implode(PHP_EOL, $messages);
+ $batchRecord['formatted'] = implode('', $formattedMessages);
+
+ $batchRecords[] = $batchRecord;
+ $messages = array($lastMessage);
+ $formattedMessages = array($lastFormattedMessage);
+
+ $batchRecord = null;
+ }
+ }
+
+ if (null !== $batchRecord) {
+ $batchRecords[] = $batchRecord;
+ }
+
+ // Set the max level and datetime for all records
+ foreach ($batchRecords as &$batchRecord) {
+ $batchRecord = array_merge(
+ $batchRecord,
+ array(
+ 'level' => $level,
+ 'level_name' => $levelName,
+ 'datetime' => $datetime,
+ )
+ );
+ }
+
+ return $batchRecords;
+ }
+
+ /**
+ * Validates the length of a string.
+ *
+ * If the `mb_strlen()` function is available, it will use that, as HipChat
+ * allows UTF-8 characters. Otherwise, it will fall back to `strlen()`.
+ *
+ * Note that this might cause false failures in the specific case of using
+ * a valid name with less than 16 characters, but 16 or more bytes, on a
+ * system where `mb_strlen()` is unavailable.
+ *
+ * @param string $str
+ * @param int $length
+ *
+ * @return bool
+ */
+ private function validateStringLength($str, $length)
+ {
+ if (function_exists('mb_strlen')) {
+ return (mb_strlen($str) <= $length);
+ }
+
+ return (strlen($str) <= $length);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php
new file mode 100644
index 0000000..4ed1759
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/IFTTTHandler.php
@@ -0,0 +1,69 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * IFTTTHandler uses cURL to trigger IFTTT Maker actions
+ *
+ * Register a secret key and trigger/event name at https://ifttt.com/maker
+ *
+ * value1 will be the channel from monolog's Logger constructor,
+ * value2 will be the level name (ERROR, WARNING, ..)
+ * value3 will be the log record's message
+ *
+ * @author Nehal Patel <nehal@nehalpatel.me>
+ */
+class IFTTTHandler extends AbstractProcessingHandler
+{
+ private $eventName;
+ private $secretKey;
+
+ /**
+ * @param string $eventName The name of the IFTTT Maker event that should be triggered
+ * @param string $secretKey A valid IFTTT secret key
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct($eventName, $secretKey, $level = Logger::ERROR, $bubble = true)
+ {
+ $this->eventName = $eventName;
+ $this->secretKey = $secretKey;
+
+ parent::__construct($level, $bubble);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function write(array $record)
+ {
+ $postData = array(
+ "value1" => $record["channel"],
+ "value2" => $record["level_name"],
+ "value3" => $record["message"],
+ );
+ $postString = json_encode($postData);
+
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, "https://maker.ifttt.com/trigger/" . $this->eventName . "/with/key/" . $this->secretKey);
+ curl_setopt($ch, CURLOPT_POST, true);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $postString);
+ curl_setopt($ch, CURLOPT_HTTPHEADER, array(
+ "Content-Type: application/json",
+ ));
+
+ Curl\Util::execute($ch);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php
new file mode 100644
index 0000000..e93875d
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/LogEntriesHandler.php
@@ -0,0 +1,55 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * @author Robert Kaufmann III <rok3@rok3.me>
+ */
+class LogEntriesHandler extends SocketHandler
+{
+ /**
+ * @var string
+ */
+ protected $logToken;
+
+ /**
+ * @param string $token Log token supplied by LogEntries
+ * @param bool $useSSL Whether or not SSL encryption should be used.
+ * @param int $level The minimum logging level to trigger this handler
+ * @param bool $bubble Whether or not messages that are handled should bubble up the stack.
+ *
+ * @throws MissingExtensionException If SSL encryption is set to true and OpenSSL is missing
+ */
+ public function __construct($token, $useSSL = true, $level = Logger::DEBUG, $bubble = true)
+ {
+ if ($useSSL && !extension_loaded('openssl')) {
+ throw new MissingExtensionException('The OpenSSL PHP plugin is required to use SSL encrypted connection for LogEntriesHandler');
+ }
+
+ $endpoint = $useSSL ? 'ssl://data.logentries.com:443' : 'data.logentries.com:80';
+ parent::__construct($endpoint, $level, $bubble);
+ $this->logToken = $token;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param array $record
+ * @return string
+ */
+ protected function generateDataStream($record)
+ {
+ return $this->logToken . ' ' . $record['formatted'];
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php
new file mode 100644
index 0000000..59ccbe5
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/LogglyHandler.php
@@ -0,0 +1,102 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\Formatter\LogglyFormatter;
+
+/**
+ * Sends errors to Loggly.
+ *
+ * @author Przemek Sobstel <przemek@sobstel.org>
+ * @author Adam Pancutt <adam@pancutt.com>
+ * @author Gregory Barchard <gregory@barchard.net>
+ */
+class LogglyHandler extends AbstractProcessingHandler
+{
+ const HOST = 'logs-01.loggly.com';
+ const ENDPOINT_SINGLE = 'inputs';
+ const ENDPOINT_BATCH = 'bulk';
+
+ protected $token;
+
+ protected $tag = array();
+
+ public function __construct($token, $level = Logger::DEBUG, $bubble = true)
+ {
+ if (!extension_loaded('curl')) {
+ throw new \LogicException('The curl extension is needed to use the LogglyHandler');
+ }
+
+ $this->token = $token;
+
+ parent::__construct($level, $bubble);
+ }
+
+ public function setTag($tag)
+ {
+ $tag = !empty($tag) ? $tag : array();
+ $this->tag = is_array($tag) ? $tag : array($tag);
+ }
+
+ public function addTag($tag)
+ {
+ if (!empty($tag)) {
+ $tag = is_array($tag) ? $tag : array($tag);
+ $this->tag = array_unique(array_merge($this->tag, $tag));
+ }
+ }
+
+ protected function write(array $record)
+ {
+ $this->send($record["formatted"], self::ENDPOINT_SINGLE);
+ }
+
+ public function handleBatch(array $records)
+ {
+ $level = $this->level;
+
+ $records = array_filter($records, function ($record) use ($level) {
+ return ($record['level'] >= $level);
+ });
+
+ if ($records) {
+ $this->send($this->getFormatter()->formatBatch($records), self::ENDPOINT_BATCH);
+ }
+ }
+
+ protected function send($data, $endpoint)
+ {
+ $url = sprintf("https://%s/%s/%s/", self::HOST, $endpoint, $this->token);
+
+ $headers = array('Content-Type: application/json');
+
+ if (!empty($this->tag)) {
+ $headers[] = 'X-LOGGLY-TAG: '.implode(',', $this->tag);
+ }
+
+ $ch = curl_init();
+
+ curl_setopt($ch, CURLOPT_URL, $url);
+ curl_setopt($ch, CURLOPT_POST, true);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
+ curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+
+ Curl\Util::execute($ch);
+ }
+
+ protected function getDefaultFormatter()
+ {
+ return new LogglyFormatter();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php
new file mode 100644
index 0000000..41d2e8b
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MailHandler.php
@@ -0,0 +1,67 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+/**
+ * Base class for all mail handlers
+ *
+ * @author Gyula Sallai
+ */
+abstract class MailHandler extends AbstractProcessingHandler
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function handleBatch(array $records)
+ {
+ $messages = array();
+
+ foreach ($records as $record) {
+ if ($record['level'] < $this->level) {
+ continue;
+ }
+ $messages[] = $this->processRecord($record);
+ }
+
+ if (!empty($messages)) {
+ $this->send((string) $this->getFormatter()->formatBatch($messages), $messages);
+ }
+ }
+
+ /**
+ * Send a mail with the given content
+ *
+ * @param string $content formatted email body to be sent
+ * @param array $records the array of log records that formed this content
+ */
+ abstract protected function send($content, array $records);
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function write(array $record)
+ {
+ $this->send((string) $record['formatted'], array($record));
+ }
+
+ protected function getHighestRecord(array $records)
+ {
+ $highestRecord = null;
+ foreach ($records as $record) {
+ if ($highestRecord === null || $highestRecord['level'] < $record['level']) {
+ $highestRecord = $record;
+ }
+ }
+
+ return $highestRecord;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php
new file mode 100644
index 0000000..742b9fd
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MandrillHandler.php
@@ -0,0 +1,68 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * MandrillHandler uses cURL to send the emails to the Mandrill API
+ *
+ * @author Adam Nicholson <adamnicholson10@gmail.com>
+ */
+class MandrillHandler extends MailHandler
+{
+ protected $message;
+ protected $apiKey;
+
+ /**
+ * @param string $apiKey A valid Mandrill API key
+ * @param callable|\Swift_Message $message An example message for real messages, only the body will be replaced
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct($apiKey, $message, $level = Logger::ERROR, $bubble = true)
+ {
+ parent::__construct($level, $bubble);
+
+ if (!$message instanceof \Swift_Message && is_callable($message)) {
+ $message = call_user_func($message);
+ }
+ if (!$message instanceof \Swift_Message) {
+ throw new \InvalidArgumentException('You must provide either a Swift_Message instance or a callable returning it');
+ }
+ $this->message = $message;
+ $this->apiKey = $apiKey;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function send($content, array $records)
+ {
+ $message = clone $this->message;
+ $message->setBody($content);
+ $message->setDate(time());
+
+ $ch = curl_init();
+
+ curl_setopt($ch, CURLOPT_URL, 'https://mandrillapp.com/api/1.0/messages/send-raw.json');
+ curl_setopt($ch, CURLOPT_POST, 1);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array(
+ 'key' => $this->apiKey,
+ 'raw_message' => (string) $message,
+ 'async' => false,
+ )));
+
+ Curl\Util::execute($ch);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php
new file mode 100644
index 0000000..cce6d4a
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MissingExtensionException.php
@@ -0,0 +1,21 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+/**
+ * Exception can be thrown if an extension for an handler is missing
+ *
+ * @author Christian Bergau <cbergau86@gmail.com>
+ */
+class MissingExtensionException extends \Exception
+{
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php
new file mode 100644
index 0000000..46ae7b6
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/MongoDBHandler.php
@@ -0,0 +1,59 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\Formatter\NormalizerFormatter;
+
+/**
+ * Logs to a MongoDB database.
+ *
+ * usage example:
+ *
+ * $log = new Logger('application');
+ * $mongodb = new MongoDBHandler(new \Mongo("mongodb://localhost:27017"), "logs", "prod");
+ * $log->pushHandler($mongodb);
+ *
+ * @author Thomas Tourlourat <thomas@tourlourat.com>
+ */
+class MongoDBHandler extends AbstractProcessingHandler
+{
+ protected $mongoCollection;
+
+ public function __construct($mongo, $database, $collection, $level = Logger::DEBUG, $bubble = true)
+ {
+ if (!($mongo instanceof \MongoClient || $mongo instanceof \Mongo || $mongo instanceof \MongoDB\Client)) {
+ throw new \InvalidArgumentException('MongoClient, Mongo or MongoDB\Client instance required');
+ }
+
+ $this->mongoCollection = $mongo->selectCollection($database, $collection);
+
+ parent::__construct($level, $bubble);
+ }
+
+ protected function write(array $record)
+ {
+ if ($this->mongoCollection instanceof \MongoDB\Collection) {
+ $this->mongoCollection->insertOne($record["formatted"]);
+ } else {
+ $this->mongoCollection->save($record["formatted"]);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new NormalizerFormatter();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php
new file mode 100644
index 0000000..c90b940
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/NativeMailerHandler.php
@@ -0,0 +1,185 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\Formatter\LineFormatter;
+
+/**
+ * NativeMailerHandler uses the mail() function to send the emails
+ *
+ * @author Christophe Coevoet <stof@notk.org>
+ * @author Mark Garrett <mark@moderndeveloperllc.com>
+ */
+class NativeMailerHandler extends MailHandler
+{
+ /**
+ * The email addresses to which the message will be sent
+ * @var array
+ */
+ protected $to;
+
+ /**
+ * The subject of the email
+ * @var string
+ */
+ protected $subject;
+
+ /**
+ * Optional headers for the message
+ * @var array
+ */
+ protected $headers = array();
+
+ /**
+ * Optional parameters for the message
+ * @var array
+ */
+ protected $parameters = array();
+
+ /**
+ * The wordwrap length for the message
+ * @var int
+ */
+ protected $maxColumnWidth;
+
+ /**
+ * The Content-type for the message
+ * @var string
+ */
+ protected $contentType = 'text/plain';
+
+ /**
+ * The encoding for the message
+ * @var string
+ */
+ protected $encoding = 'utf-8';
+
+ /**
+ * @param string|array $to The receiver of the mail
+ * @param string $subject The subject of the mail
+ * @param string $from The sender of the mail
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
+ * @param int $maxColumnWidth The maximum column width that the message lines will have
+ */
+ public function __construct($to, $subject, $from, $level = Logger::ERROR, $bubble = true, $maxColumnWidth = 70)
+ {
+ parent::__construct($level, $bubble);
+ $this->to = is_array($to) ? $to : array($to);
+ $this->subject = $subject;
+ $this->addHeader(sprintf('From: %s', $from));
+ $this->maxColumnWidth = $maxColumnWidth;
+ }
+
+ /**
+ * Add headers to the message
+ *
+ * @param string|array $headers Custom added headers
+ * @return self
+ */
+ public function addHeader($headers)
+ {
+ foreach ((array) $headers as $header) {
+ if (strpos($header, "\n") !== false || strpos($header, "\r") !== false) {
+ throw new \InvalidArgumentException('Headers can not contain newline characters for security reasons');
+ }
+ $this->headers[] = $header;
+ }
+
+ return $this;
+ }
+
+ /**
+ * Add parameters to the message
+ *
+ * @param string|array $parameters Custom added parameters
+ * @return self
+ */
+ public function addParameter($parameters)
+ {
+ $this->parameters = array_merge($this->parameters, (array) $parameters);
+
+ return $this;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function send($content, array $records)
+ {
+ $content = wordwrap($content, $this->maxColumnWidth);
+ $headers = ltrim(implode("\r\n", $this->headers) . "\r\n", "\r\n");
+ $headers .= 'Content-type: ' . $this->getContentType() . '; charset=' . $this->getEncoding() . "\r\n";
+ if ($this->getContentType() == 'text/html' && false === strpos($headers, 'MIME-Version:')) {
+ $headers .= 'MIME-Version: 1.0' . "\r\n";
+ }
+
+ $subject = $this->subject;
+ if ($records) {
+ $subjectFormatter = new LineFormatter($this->subject);
+ $subject = $subjectFormatter->format($this->getHighestRecord($records));
+ }
+
+ $parameters = implode(' ', $this->parameters);
+ foreach ($this->to as $to) {
+ mail($to, $subject, $content, $headers, $parameters);
+ }
+ }
+
+ /**
+ * @return string $contentType
+ */
+ public function getContentType()
+ {
+ return $this->contentType;
+ }
+
+ /**
+ * @return string $encoding
+ */
+ public function getEncoding()
+ {
+ return $this->encoding;
+ }
+
+ /**
+ * @param string $contentType The content type of the email - Defaults to text/plain. Use text/html for HTML
+ * messages.
+ * @return self
+ */
+ public function setContentType($contentType)
+ {
+ if (strpos($contentType, "\n") !== false || strpos($contentType, "\r") !== false) {
+ throw new \InvalidArgumentException('The content type can not contain newline characters to prevent email header injection');
+ }
+
+ $this->contentType = $contentType;
+
+ return $this;
+ }
+
+ /**
+ * @param string $encoding
+ * @return self
+ */
+ public function setEncoding($encoding)
+ {
+ if (strpos($encoding, "\n") !== false || strpos($encoding, "\r") !== false) {
+ throw new \InvalidArgumentException('The encoding can not contain newline characters to prevent email header injection');
+ }
+
+ $this->encoding = $encoding;
+
+ return $this;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php
new file mode 100644
index 0000000..9c1a926
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/NewRelicHandler.php
@@ -0,0 +1,202 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\Formatter\NormalizerFormatter;
+
+/**
+ * Class to record a log on a NewRelic application.
+ * Enabling New Relic High Security mode may prevent capture of useful information.
+ *
+ * @see https://docs.newrelic.com/docs/agents/php-agent
+ * @see https://docs.newrelic.com/docs/accounts-partnerships/accounts/security/high-security
+ */
+class NewRelicHandler extends AbstractProcessingHandler
+{
+ /**
+ * Name of the New Relic application that will receive logs from this handler.
+ *
+ * @var string
+ */
+ protected $appName;
+
+ /**
+ * Name of the current transaction
+ *
+ * @var string
+ */
+ protected $transactionName;
+
+ /**
+ * Some context and extra data is passed into the handler as arrays of values. Do we send them as is
+ * (useful if we are using the API), or explode them for display on the NewRelic RPM website?
+ *
+ * @var bool
+ */
+ protected $explodeArrays;
+
+ /**
+ * {@inheritDoc}
+ *
+ * @param string $appName
+ * @param bool $explodeArrays
+ * @param string $transactionName
+ */
+ public function __construct(
+ $level = Logger::ERROR,
+ $bubble = true,
+ $appName = null,
+ $explodeArrays = false,
+ $transactionName = null
+ ) {
+ parent::__construct($level, $bubble);
+
+ $this->appName = $appName;
+ $this->explodeArrays = $explodeArrays;
+ $this->transactionName = $transactionName;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function write(array $record)
+ {
+ if (!$this->isNewRelicEnabled()) {
+ throw new MissingExtensionException('The newrelic PHP extension is required to use the NewRelicHandler');
+ }
+
+ if ($appName = $this->getAppName($record['context'])) {
+ $this->setNewRelicAppName($appName);
+ }
+
+ if ($transactionName = $this->getTransactionName($record['context'])) {
+ $this->setNewRelicTransactionName($transactionName);
+ unset($record['formatted']['context']['transaction_name']);
+ }
+
+ if (isset($record['context']['exception']) && $record['context']['exception'] instanceof \Exception) {
+ newrelic_notice_error($record['message'], $record['context']['exception']);
+ unset($record['formatted']['context']['exception']);
+ } else {
+ newrelic_notice_error($record['message']);
+ }
+
+ if (isset($record['formatted']['context']) && is_array($record['formatted']['context'])) {
+ foreach ($record['formatted']['context'] as $key => $parameter) {
+ if (is_array($parameter) && $this->explodeArrays) {
+ foreach ($parameter as $paramKey => $paramValue) {
+ $this->setNewRelicParameter('context_' . $key . '_' . $paramKey, $paramValue);
+ }
+ } else {
+ $this->setNewRelicParameter('context_' . $key, $parameter);
+ }
+ }
+ }
+
+ if (isset($record['formatted']['extra']) && is_array($record['formatted']['extra'])) {
+ foreach ($record['formatted']['extra'] as $key => $parameter) {
+ if (is_array($parameter) && $this->explodeArrays) {
+ foreach ($parameter as $paramKey => $paramValue) {
+ $this->setNewRelicParameter('extra_' . $key . '_' . $paramKey, $paramValue);
+ }
+ } else {
+ $this->setNewRelicParameter('extra_' . $key, $parameter);
+ }
+ }
+ }
+ }
+
+ /**
+ * Checks whether the NewRelic extension is enabled in the system.
+ *
+ * @return bool
+ */
+ protected function isNewRelicEnabled()
+ {
+ return extension_loaded('newrelic');
+ }
+
+ /**
+ * Returns the appname where this log should be sent. Each log can override the default appname, set in this
+ * handler's constructor, by providing the appname in it's context.
+ *
+ * @param array $context
+ * @return null|string
+ */
+ protected function getAppName(array $context)
+ {
+ if (isset($context['appname'])) {
+ return $context['appname'];
+ }
+
+ return $this->appName;
+ }
+
+ /**
+ * Returns the name of the current transaction. Each log can override the default transaction name, set in this
+ * handler's constructor, by providing the transaction_name in it's context
+ *
+ * @param array $context
+ *
+ * @return null|string
+ */
+ protected function getTransactionName(array $context)
+ {
+ if (isset($context['transaction_name'])) {
+ return $context['transaction_name'];
+ }
+
+ return $this->transactionName;
+ }
+
+ /**
+ * Sets the NewRelic application that should receive this log.
+ *
+ * @param string $appName
+ */
+ protected function setNewRelicAppName($appName)
+ {
+ newrelic_set_appname($appName);
+ }
+
+ /**
+ * Overwrites the name of the current transaction
+ *
+ * @param string $transactionName
+ */
+ protected function setNewRelicTransactionName($transactionName)
+ {
+ newrelic_name_transaction($transactionName);
+ }
+
+ /**
+ * @param string $key
+ * @param mixed $value
+ */
+ protected function setNewRelicParameter($key, $value)
+ {
+ if (null === $value || is_scalar($value)) {
+ newrelic_add_custom_parameter($key, $value);
+ } else {
+ newrelic_add_custom_parameter($key, @json_encode($value));
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new NormalizerFormatter();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php
new file mode 100644
index 0000000..6032236
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/NullHandler.php
@@ -0,0 +1,45 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * Blackhole
+ *
+ * Any record it can handle will be thrown away. This can be used
+ * to put on top of an existing stack to override it temporarily.
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class NullHandler extends AbstractHandler
+{
+ /**
+ * @param int $level The minimum logging level at which this handler will be triggered
+ */
+ public function __construct($level = Logger::DEBUG)
+ {
+ parent::__construct($level, false);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handle(array $record)
+ {
+ if ($record['level'] < $this->level) {
+ return false;
+ }
+
+ return true;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php
new file mode 100644
index 0000000..91f13a0
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/PHPConsoleHandler.php
@@ -0,0 +1,242 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Exception;
+use Monolog\Formatter\LineFormatter;
+use Monolog\Logger;
+use PhpConsole\Connector;
+use PhpConsole\Handler;
+use PhpConsole\Helper;
+
+/**
+ * Monolog handler for Google Chrome extension "PHP Console"
+ *
+ * Display PHP error/debug log messages in Google Chrome console and notification popups, executes PHP code remotely
+ *
+ * Usage:
+ * 1. Install Google Chrome extension https://chrome.google.com/webstore/detail/php-console/nfhmhhlpfleoednkpnnnkolmclajemef
+ * 2. See overview https://github.com/barbushin/php-console#overview
+ * 3. Install PHP Console library https://github.com/barbushin/php-console#installation
+ * 4. Example (result will looks like http://i.hizliresim.com/vg3Pz4.png)
+ *
+ * $logger = new \Monolog\Logger('all', array(new \Monolog\Handler\PHPConsoleHandler()));
+ * \Monolog\ErrorHandler::register($logger);
+ * echo $undefinedVar;
+ * $logger->addDebug('SELECT * FROM users', array('db', 'time' => 0.012));
+ * PC::debug($_SERVER); // PHP Console debugger for any type of vars
+ *
+ * @author Sergey Barbushin https://www.linkedin.com/in/barbushin
+ */
+class PHPConsoleHandler extends AbstractProcessingHandler
+{
+ private $options = array(
+ 'enabled' => true, // bool Is PHP Console server enabled
+ 'classesPartialsTraceIgnore' => array('Monolog\\'), // array Hide calls of classes started with...
+ 'debugTagsKeysInContext' => array(0, 'tag'), // bool Is PHP Console server enabled
+ 'useOwnErrorsHandler' => false, // bool Enable errors handling
+ 'useOwnExceptionsHandler' => false, // bool Enable exceptions handling
+ 'sourcesBasePath' => null, // string Base path of all project sources to strip in errors source paths
+ 'registerHelper' => true, // bool Register PhpConsole\Helper that allows short debug calls like PC::debug($var, 'ta.g.s')
+ 'serverEncoding' => null, // string|null Server internal encoding
+ 'headersLimit' => null, // int|null Set headers size limit for your web-server
+ 'password' => null, // string|null Protect PHP Console connection by password
+ 'enableSslOnlyMode' => false, // bool Force connection by SSL for clients with PHP Console installed
+ 'ipMasks' => array(), // array Set IP masks of clients that will be allowed to connect to PHP Console: array('192.168.*.*', '127.0.0.1')
+ 'enableEvalListener' => false, // bool Enable eval request to be handled by eval dispatcher(if enabled, 'password' option is also required)
+ 'dumperDetectCallbacks' => false, // bool Convert callback items in dumper vars to (callback SomeClass::someMethod) strings
+ 'dumperLevelLimit' => 5, // int Maximum dumped vars array or object nested dump level
+ 'dumperItemsCountLimit' => 100, // int Maximum dumped var same level array items or object properties number
+ 'dumperItemSizeLimit' => 5000, // int Maximum length of any string or dumped array item
+ 'dumperDumpSizeLimit' => 500000, // int Maximum approximate size of dumped vars result formatted in JSON
+ 'detectDumpTraceAndSource' => false, // bool Autodetect and append trace data to debug
+ 'dataStorage' => null, // PhpConsole\Storage|null Fixes problem with custom $_SESSION handler(see http://goo.gl/Ne8juJ)
+ );
+
+ /** @var Connector */
+ private $connector;
+
+ /**
+ * @param array $options See \Monolog\Handler\PHPConsoleHandler::$options for more details
+ * @param Connector|null $connector Instance of \PhpConsole\Connector class (optional)
+ * @param int $level
+ * @param bool $bubble
+ * @throws Exception
+ */
+ public function __construct(array $options = array(), Connector $connector = null, $level = Logger::DEBUG, $bubble = true)
+ {
+ if (!class_exists('PhpConsole\Connector')) {
+ throw new Exception('PHP Console library not found. See https://github.com/barbushin/php-console#installation');
+ }
+ parent::__construct($level, $bubble);
+ $this->options = $this->initOptions($options);
+ $this->connector = $this->initConnector($connector);
+ }
+
+ private function initOptions(array $options)
+ {
+ $wrongOptions = array_diff(array_keys($options), array_keys($this->options));
+ if ($wrongOptions) {
+ throw new Exception('Unknown options: ' . implode(', ', $wrongOptions));
+ }
+
+ return array_replace($this->options, $options);
+ }
+
+ private function initConnector(Connector $connector = null)
+ {
+ if (!$connector) {
+ if ($this->options['dataStorage']) {
+ Connector::setPostponeStorage($this->options['dataStorage']);
+ }
+ $connector = Connector::getInstance();
+ }
+
+ if ($this->options['registerHelper'] && !Helper::isRegistered()) {
+ Helper::register();
+ }
+
+ if ($this->options['enabled'] && $connector->isActiveClient()) {
+ if ($this->options['useOwnErrorsHandler'] || $this->options['useOwnExceptionsHandler']) {
+ $handler = Handler::getInstance();
+ $handler->setHandleErrors($this->options['useOwnErrorsHandler']);
+ $handler->setHandleExceptions($this->options['useOwnExceptionsHandler']);
+ $handler->start();
+ }
+ if ($this->options['sourcesBasePath']) {
+ $connector->setSourcesBasePath($this->options['sourcesBasePath']);
+ }
+ if ($this->options['serverEncoding']) {
+ $connector->setServerEncoding($this->options['serverEncoding']);
+ }
+ if ($this->options['password']) {
+ $connector->setPassword($this->options['password']);
+ }
+ if ($this->options['enableSslOnlyMode']) {
+ $connector->enableSslOnlyMode();
+ }
+ if ($this->options['ipMasks']) {
+ $connector->setAllowedIpMasks($this->options['ipMasks']);
+ }
+ if ($this->options['headersLimit']) {
+ $connector->setHeadersLimit($this->options['headersLimit']);
+ }
+ if ($this->options['detectDumpTraceAndSource']) {
+ $connector->getDebugDispatcher()->detectTraceAndSource = true;
+ }
+ $dumper = $connector->getDumper();
+ $dumper->levelLimit = $this->options['dumperLevelLimit'];
+ $dumper->itemsCountLimit = $this->options['dumperItemsCountLimit'];
+ $dumper->itemSizeLimit = $this->options['dumperItemSizeLimit'];
+ $dumper->dumpSizeLimit = $this->options['dumperDumpSizeLimit'];
+ $dumper->detectCallbacks = $this->options['dumperDetectCallbacks'];
+ if ($this->options['enableEvalListener']) {
+ $connector->startEvalRequestsListener();
+ }
+ }
+
+ return $connector;
+ }
+
+ public function getConnector()
+ {
+ return $this->connector;
+ }
+
+ public function getOptions()
+ {
+ return $this->options;
+ }
+
+ public function handle(array $record)
+ {
+ if ($this->options['enabled'] && $this->connector->isActiveClient()) {
+ return parent::handle($record);
+ }
+
+ return !$this->bubble;
+ }
+
+ /**
+ * Writes the record down to the log of the implementing handler
+ *
+ * @param array $record
+ * @return void
+ */
+ protected function write(array $record)
+ {
+ if ($record['level'] < Logger::NOTICE) {
+ $this->handleDebugRecord($record);
+ } elseif (isset($record['context']['exception']) && $record['context']['exception'] instanceof Exception) {
+ $this->handleExceptionRecord($record);
+ } else {
+ $this->handleErrorRecord($record);
+ }
+ }
+
+ private function handleDebugRecord(array $record)
+ {
+ $tags = $this->getRecordTags($record);
+ $message = $record['message'];
+ if ($record['context']) {
+ $message .= ' ' . json_encode($this->connector->getDumper()->dump(array_filter($record['context'])));
+ }
+ $this->connector->getDebugDispatcher()->dispatchDebug($message, $tags, $this->options['classesPartialsTraceIgnore']);
+ }
+
+ private function handleExceptionRecord(array $record)
+ {
+ $this->connector->getErrorsDispatcher()->dispatchException($record['context']['exception']);
+ }
+
+ private function handleErrorRecord(array $record)
+ {
+ $context = $record['context'];
+
+ $this->connector->getErrorsDispatcher()->dispatchError(
+ isset($context['code']) ? $context['code'] : null,
+ isset($context['message']) ? $context['message'] : $record['message'],
+ isset($context['file']) ? $context['file'] : null,
+ isset($context['line']) ? $context['line'] : null,
+ $this->options['classesPartialsTraceIgnore']
+ );
+ }
+
+ private function getRecordTags(array &$record)
+ {
+ $tags = null;
+ if (!empty($record['context'])) {
+ $context = & $record['context'];
+ foreach ($this->options['debugTagsKeysInContext'] as $key) {
+ if (!empty($context[$key])) {
+ $tags = $context[$key];
+ if ($key === 0) {
+ array_shift($context);
+ } else {
+ unset($context[$key]);
+ }
+ break;
+ }
+ }
+ }
+
+ return $tags ?: strtolower($record['level_name']);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new LineFormatter('%message%');
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php
new file mode 100644
index 0000000..30cbe23
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/PsrHandler.php
@@ -0,0 +1,56 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Psr\Log\LoggerInterface;
+
+/**
+ * Proxies log messages to an existing PSR-3 compliant logger.
+ *
+ * @author Michael Moussa <michael.moussa@gmail.com>
+ */
+class PsrHandler extends AbstractHandler
+{
+ /**
+ * PSR-3 compliant logger
+ *
+ * @var LoggerInterface
+ */
+ protected $logger;
+
+ /**
+ * @param LoggerInterface $logger The underlying PSR-3 compliant logger to which messages will be proxied
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct(LoggerInterface $logger, $level = Logger::DEBUG, $bubble = true)
+ {
+ parent::__construct($level, $bubble);
+
+ $this->logger = $logger;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ public function handle(array $record)
+ {
+ if (!$this->isHandling($record)) {
+ return false;
+ }
+
+ $this->logger->log(strtolower($record['level_name']), $record['message'], $record['context']);
+
+ return false === $this->bubble;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php
new file mode 100644
index 0000000..f7e1a3c
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/PushoverHandler.php
@@ -0,0 +1,185 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * Sends notifications through the pushover api to mobile phones
+ *
+ * @author Sebastian Göttschkes <sebastian.goettschkes@googlemail.com>
+ * @see https://www.pushover.net/api
+ */
+class PushoverHandler extends SocketHandler
+{
+ private $token;
+ private $users;
+ private $title;
+ private $user;
+ private $retry;
+ private $expire;
+
+ private $highPriorityLevel;
+ private $emergencyLevel;
+ private $useFormattedMessage = false;
+
+ /**
+ * All parameters that can be sent to Pushover
+ * @see https://pushover.net/api
+ * @var array
+ */
+ private $parameterNames = array(
+ 'token' => true,
+ 'user' => true,
+ 'message' => true,
+ 'device' => true,
+ 'title' => true,
+ 'url' => true,
+ 'url_title' => true,
+ 'priority' => true,
+ 'timestamp' => true,
+ 'sound' => true,
+ 'retry' => true,
+ 'expire' => true,
+ 'callback' => true,
+ );
+
+ /**
+ * Sounds the api supports by default
+ * @see https://pushover.net/api#sounds
+ * @var array
+ */
+ private $sounds = array(
+ 'pushover', 'bike', 'bugle', 'cashregister', 'classical', 'cosmic', 'falling', 'gamelan', 'incoming',
+ 'intermission', 'magic', 'mechanical', 'pianobar', 'siren', 'spacealarm', 'tugboat', 'alien', 'climb',
+ 'persistent', 'echo', 'updown', 'none',
+ );
+
+ /**
+ * @param string $token Pushover api token
+ * @param string|array $users Pushover user id or array of ids the message will be sent to
+ * @param string $title Title sent to the Pushover API
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ * @param Boolean $useSSL Whether to connect via SSL. Required when pushing messages to users that are not
+ * the pushover.net app owner. OpenSSL is required for this option.
+ * @param int $highPriorityLevel The minimum logging level at which this handler will start
+ * sending "high priority" requests to the Pushover API
+ * @param int $emergencyLevel The minimum logging level at which this handler will start
+ * sending "emergency" requests to the Pushover API
+ * @param int $retry The retry parameter specifies how often (in seconds) the Pushover servers will send the same notification to the user.
+ * @param int $expire The expire parameter specifies how many seconds your notification will continue to be retried for (every retry seconds).
+ */
+ public function __construct($token, $users, $title = null, $level = Logger::CRITICAL, $bubble = true, $useSSL = true, $highPriorityLevel = Logger::CRITICAL, $emergencyLevel = Logger::EMERGENCY, $retry = 30, $expire = 25200)
+ {
+ $connectionString = $useSSL ? 'ssl://api.pushover.net:443' : 'api.pushover.net:80';
+ parent::__construct($connectionString, $level, $bubble);
+
+ $this->token = $token;
+ $this->users = (array) $users;
+ $this->title = $title ?: gethostname();
+ $this->highPriorityLevel = Logger::toMonologLevel($highPriorityLevel);
+ $this->emergencyLevel = Logger::toMonologLevel($emergencyLevel);
+ $this->retry = $retry;
+ $this->expire = $expire;
+ }
+
+ protected function generateDataStream($record)
+ {
+ $content = $this->buildContent($record);
+
+ return $this->buildHeader($content) . $content;
+ }
+
+ private function buildContent($record)
+ {
+ // Pushover has a limit of 512 characters on title and message combined.
+ $maxMessageLength = 512 - strlen($this->title);
+
+ $message = ($this->useFormattedMessage) ? $record['formatted'] : $record['message'];
+ $message = substr($message, 0, $maxMessageLength);
+
+ $timestamp = $record['datetime']->getTimestamp();
+
+ $dataArray = array(
+ 'token' => $this->token,
+ 'user' => $this->user,
+ 'message' => $message,
+ 'title' => $this->title,
+ 'timestamp' => $timestamp,
+ );
+
+ if (isset($record['level']) && $record['level'] >= $this->emergencyLevel) {
+ $dataArray['priority'] = 2;
+ $dataArray['retry'] = $this->retry;
+ $dataArray['expire'] = $this->expire;
+ } elseif (isset($record['level']) && $record['level'] >= $this->highPriorityLevel) {
+ $dataArray['priority'] = 1;
+ }
+
+ // First determine the available parameters
+ $context = array_intersect_key($record['context'], $this->parameterNames);
+ $extra = array_intersect_key($record['extra'], $this->parameterNames);
+
+ // Least important info should be merged with subsequent info
+ $dataArray = array_merge($extra, $context, $dataArray);
+
+ // Only pass sounds that are supported by the API
+ if (isset($dataArray['sound']) && !in_array($dataArray['sound'], $this->sounds)) {
+ unset($dataArray['sound']);
+ }
+
+ return http_build_query($dataArray);
+ }
+
+ private function buildHeader($content)
+ {
+ $header = "POST /1/messages.json HTTP/1.1\r\n";
+ $header .= "Host: api.pushover.net\r\n";
+ $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
+ $header .= "Content-Length: " . strlen($content) . "\r\n";
+ $header .= "\r\n";
+
+ return $header;
+ }
+
+ protected function write(array $record)
+ {
+ foreach ($this->users as $user) {
+ $this->user = $user;
+
+ parent::write($record);
+ $this->closeSocket();
+ }
+
+ $this->user = null;
+ }
+
+ public function setHighPriorityLevel($value)
+ {
+ $this->highPriorityLevel = $value;
+ }
+
+ public function setEmergencyLevel($value)
+ {
+ $this->emergencyLevel = $value;
+ }
+
+ /**
+ * Use the formatted message?
+ * @param bool $value
+ */
+ public function useFormattedMessage($value)
+ {
+ $this->useFormattedMessage = (boolean) $value;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php
new file mode 100644
index 0000000..f680202
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RavenHandler.php
@@ -0,0 +1,232 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\LineFormatter;
+use Monolog\Formatter\FormatterInterface;
+use Monolog\Logger;
+use Raven_Client;
+
+/**
+ * Handler to send messages to a Sentry (https://github.com/getsentry/sentry) server
+ * using raven-php (https://github.com/getsentry/raven-php)
+ *
+ * @author Marc Abramowitz <marc@marc-abramowitz.com>
+ */
+class RavenHandler extends AbstractProcessingHandler
+{
+ /**
+ * Translates Monolog log levels to Raven log levels.
+ */
+ private $logLevels = array(
+ Logger::DEBUG => Raven_Client::DEBUG,
+ Logger::INFO => Raven_Client::INFO,
+ Logger::NOTICE => Raven_Client::INFO,
+ Logger::WARNING => Raven_Client::WARNING,
+ Logger::ERROR => Raven_Client::ERROR,
+ Logger::CRITICAL => Raven_Client::FATAL,
+ Logger::ALERT => Raven_Client::FATAL,
+ Logger::EMERGENCY => Raven_Client::FATAL,
+ );
+
+ /**
+ * @var string should represent the current version of the calling
+ * software. Can be any string (git commit, version number)
+ */
+ private $release;
+
+ /**
+ * @var Raven_Client the client object that sends the message to the server
+ */
+ protected $ravenClient;
+
+ /**
+ * @var LineFormatter The formatter to use for the logs generated via handleBatch()
+ */
+ protected $batchFormatter;
+
+ /**
+ * @param Raven_Client $ravenClient
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct(Raven_Client $ravenClient, $level = Logger::DEBUG, $bubble = true)
+ {
+ parent::__construct($level, $bubble);
+
+ $this->ravenClient = $ravenClient;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handleBatch(array $records)
+ {
+ $level = $this->level;
+
+ // filter records based on their level
+ $records = array_filter($records, function ($record) use ($level) {
+ return $record['level'] >= $level;
+ });
+
+ if (!$records) {
+ return;
+ }
+
+ // the record with the highest severity is the "main" one
+ $record = array_reduce($records, function ($highest, $record) {
+ if ($record['level'] > $highest['level']) {
+ return $record;
+ }
+
+ return $highest;
+ });
+
+ // the other ones are added as a context item
+ $logs = array();
+ foreach ($records as $r) {
+ $logs[] = $this->processRecord($r);
+ }
+
+ if ($logs) {
+ $record['context']['logs'] = (string) $this->getBatchFormatter()->formatBatch($logs);
+ }
+
+ $this->handle($record);
+ }
+
+ /**
+ * Sets the formatter for the logs generated by handleBatch().
+ *
+ * @param FormatterInterface $formatter
+ */
+ public function setBatchFormatter(FormatterInterface $formatter)
+ {
+ $this->batchFormatter = $formatter;
+ }
+
+ /**
+ * Gets the formatter for the logs generated by handleBatch().
+ *
+ * @return FormatterInterface
+ */
+ public function getBatchFormatter()
+ {
+ if (!$this->batchFormatter) {
+ $this->batchFormatter = $this->getDefaultBatchFormatter();
+ }
+
+ return $this->batchFormatter;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function write(array $record)
+ {
+ $previousUserContext = false;
+ $options = array();
+ $options['level'] = $this->logLevels[$record['level']];
+ $options['tags'] = array();
+ if (!empty($record['extra']['tags'])) {
+ $options['tags'] = array_merge($options['tags'], $record['extra']['tags']);
+ unset($record['extra']['tags']);
+ }
+ if (!empty($record['context']['tags'])) {
+ $options['tags'] = array_merge($options['tags'], $record['context']['tags']);
+ unset($record['context']['tags']);
+ }
+ if (!empty($record['context']['fingerprint'])) {
+ $options['fingerprint'] = $record['context']['fingerprint'];
+ unset($record['context']['fingerprint']);
+ }
+ if (!empty($record['context']['logger'])) {
+ $options['logger'] = $record['context']['logger'];
+ unset($record['context']['logger']);
+ } else {
+ $options['logger'] = $record['channel'];
+ }
+ foreach ($this->getExtraParameters() as $key) {
+ foreach (array('extra', 'context') as $source) {
+ if (!empty($record[$source][$key])) {
+ $options[$key] = $record[$source][$key];
+ unset($record[$source][$key]);
+ }
+ }
+ }
+ if (!empty($record['context'])) {
+ $options['extra']['context'] = $record['context'];
+ if (!empty($record['context']['user'])) {
+ $previousUserContext = $this->ravenClient->context->user;
+ $this->ravenClient->user_context($record['context']['user']);
+ unset($options['extra']['context']['user']);
+ }
+ }
+ if (!empty($record['extra'])) {
+ $options['extra']['extra'] = $record['extra'];
+ }
+
+ if (!empty($this->release) && !isset($options['release'])) {
+ $options['release'] = $this->release;
+ }
+
+ if (isset($record['context']['exception']) && ($record['context']['exception'] instanceof \Exception || (PHP_VERSION_ID >= 70000 && $record['context']['exception'] instanceof \Throwable))) {
+ $options['extra']['message'] = $record['formatted'];
+ $this->ravenClient->captureException($record['context']['exception'], $options);
+ } else {
+ $this->ravenClient->captureMessage($record['formatted'], array(), $options);
+ }
+
+ if ($previousUserContext !== false) {
+ $this->ravenClient->user_context($previousUserContext);
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new LineFormatter('[%channel%] %message%');
+ }
+
+ /**
+ * Gets the default formatter for the logs generated by handleBatch().
+ *
+ * @return FormatterInterface
+ */
+ protected function getDefaultBatchFormatter()
+ {
+ return new LineFormatter();
+ }
+
+ /**
+ * Gets extra parameters supported by Raven that can be found in "extra" and "context"
+ *
+ * @return array
+ */
+ protected function getExtraParameters()
+ {
+ return array('checksum', 'release', 'event_id');
+ }
+
+ /**
+ * @param string $value
+ * @return self
+ */
+ public function setRelease($value)
+ {
+ $this->release = $value;
+
+ return $this;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php
new file mode 100644
index 0000000..cac35a9
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RedisHandler.php
@@ -0,0 +1,97 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\LineFormatter;
+use Monolog\Logger;
+
+/**
+ * Logs to a Redis key using rpush
+ *
+ * usage example:
+ *
+ * $log = new Logger('application');
+ * $redis = new RedisHandler(new Predis\Client("tcp://localhost:6379"), "logs", "prod");
+ * $log->pushHandler($redis);
+ *
+ * @author Thomas Tourlourat <thomas@tourlourat.com>
+ */
+class RedisHandler extends AbstractProcessingHandler
+{
+ private $redisClient;
+ private $redisKey;
+ protected $capSize;
+
+ /**
+ * @param \Predis\Client|\Redis $redis The redis instance
+ * @param string $key The key name to push records to
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
+ * @param int $capSize Number of entries to limit list size to
+ */
+ public function __construct($redis, $key, $level = Logger::DEBUG, $bubble = true, $capSize = false)
+ {
+ if (!(($redis instanceof \Predis\Client) || ($redis instanceof \Redis))) {
+ throw new \InvalidArgumentException('Predis\Client or Redis instance required');
+ }
+
+ $this->redisClient = $redis;
+ $this->redisKey = $key;
+ $this->capSize = $capSize;
+
+ parent::__construct($level, $bubble);
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function write(array $record)
+ {
+ if ($this->capSize) {
+ $this->writeCapped($record);
+ } else {
+ $this->redisClient->rpush($this->redisKey, $record["formatted"]);
+ }
+ }
+
+ /**
+ * Write and cap the collection
+ * Writes the record to the redis list and caps its
+ *
+ * @param array $record associative record array
+ * @return void
+ */
+ protected function writeCapped(array $record)
+ {
+ if ($this->redisClient instanceof \Redis) {
+ $this->redisClient->multi()
+ ->rpush($this->redisKey, $record["formatted"])
+ ->ltrim($this->redisKey, -$this->capSize, -1)
+ ->exec();
+ } else {
+ $redisKey = $this->redisKey;
+ $capSize = $this->capSize;
+ $this->redisClient->transaction(function ($tx) use ($record, $redisKey, $capSize) {
+ $tx->rpush($redisKey, $record["formatted"]);
+ $tx->ltrim($redisKey, -$capSize, -1);
+ });
+ }
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ protected function getDefaultFormatter()
+ {
+ return new LineFormatter();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php
new file mode 100644
index 0000000..774daa6
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RollbarHandler.php
@@ -0,0 +1,132 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use RollbarNotifier;
+use Exception;
+use Monolog\Logger;
+
+/**
+ * Sends errors to Rollbar
+ *
+ * If the context data contains a `payload` key, that is used as an array
+ * of payload options to RollbarNotifier's report_message/report_exception methods.
+ *
+ * Rollbar's context info will contain the context + extra keys from the log record
+ * merged, and then on top of that a few keys:
+ *
+ * - level (rollbar level name)
+ * - monolog_level (monolog level name, raw level, as rollbar only has 5 but monolog 8)
+ * - channel
+ * - datetime (unix timestamp)
+ *
+ * @author Paul Statezny <paulstatezny@gmail.com>
+ */
+class RollbarHandler extends AbstractProcessingHandler
+{
+ /**
+ * Rollbar notifier
+ *
+ * @var RollbarNotifier
+ */
+ protected $rollbarNotifier;
+
+ protected $levelMap = array(
+ Logger::DEBUG => 'debug',
+ Logger::INFO => 'info',
+ Logger::NOTICE => 'info',
+ Logger::WARNING => 'warning',
+ Logger::ERROR => 'error',
+ Logger::CRITICAL => 'critical',
+ Logger::ALERT => 'critical',
+ Logger::EMERGENCY => 'critical',
+ );
+
+ /**
+ * Records whether any log records have been added since the last flush of the rollbar notifier
+ *
+ * @var bool
+ */
+ private $hasRecords = false;
+
+ protected $initialized = false;
+
+ /**
+ * @param RollbarNotifier $rollbarNotifier RollbarNotifier object constructed with valid token
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct(RollbarNotifier $rollbarNotifier, $level = Logger::ERROR, $bubble = true)
+ {
+ $this->rollbarNotifier = $rollbarNotifier;
+
+ parent::__construct($level, $bubble);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function write(array $record)
+ {
+ if (!$this->initialized) {
+ // __destructor() doesn't get called on Fatal errors
+ register_shutdown_function(array($this, 'close'));
+ $this->initialized = true;
+ }
+
+ $context = $record['context'];
+ $payload = array();
+ if (isset($context['payload'])) {
+ $payload = $context['payload'];
+ unset($context['payload']);
+ }
+ $context = array_merge($context, $record['extra'], array(
+ 'level' => $this->levelMap[$record['level']],
+ 'monolog_level' => $record['level_name'],
+ 'channel' => $record['channel'],
+ 'datetime' => $record['datetime']->format('U'),
+ ));
+
+ if (isset($context['exception']) && $context['exception'] instanceof Exception) {
+ $payload['level'] = $context['level'];
+ $exception = $context['exception'];
+ unset($context['exception']);
+
+ $this->rollbarNotifier->report_exception($exception, $context, $payload);
+ } else {
+ $this->rollbarNotifier->report_message(
+ $record['message'],
+ $context['level'],
+ $context,
+ $payload
+ );
+ }
+
+ $this->hasRecords = true;
+ }
+
+ public function flush()
+ {
+ if ($this->hasRecords) {
+ $this->rollbarNotifier->flush();
+ $this->hasRecords = false;
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function close()
+ {
+ $this->flush();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php
new file mode 100644
index 0000000..facfffa
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/RotatingFileHandler.php
@@ -0,0 +1,178 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * Stores logs to files that are rotated every day and a limited number of files are kept.
+ *
+ * This rotation is only intended to be used as a workaround. Using logrotate to
+ * handle the rotation is strongly encouraged when you can use it.
+ *
+ * @author Christophe Coevoet <stof@notk.org>
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class RotatingFileHandler extends StreamHandler
+{
+ const FILE_PER_DAY = 'Y-m-d';
+ const FILE_PER_MONTH = 'Y-m';
+ const FILE_PER_YEAR = 'Y';
+
+ protected $filename;
+ protected $maxFiles;
+ protected $mustRotate;
+ protected $nextRotation;
+ protected $filenameFormat;
+ protected $dateFormat;
+
+ /**
+ * @param string $filename
+ * @param int $maxFiles The maximal amount of files to keep (0 means unlimited)
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write)
+ * @param Boolean $useLocking Try to lock log file before doing any writes
+ */
+ public function __construct($filename, $maxFiles = 0, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false)
+ {
+ $this->filename = $filename;
+ $this->maxFiles = (int) $maxFiles;
+ $this->nextRotation = new \DateTime('tomorrow');
+ $this->filenameFormat = '{filename}-{date}';
+ $this->dateFormat = 'Y-m-d';
+
+ parent::__construct($this->getTimedFilename(), $level, $bubble, $filePermission, $useLocking);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function close()
+ {
+ parent::close();
+
+ if (true === $this->mustRotate) {
+ $this->rotate();
+ }
+ }
+
+ public function setFilenameFormat($filenameFormat, $dateFormat)
+ {
+ if (!preg_match('{^Y(([/_.-]?m)([/_.-]?d)?)?$}', $dateFormat)) {
+ trigger_error(
+ 'Invalid date format - format must be one of '.
+ 'RotatingFileHandler::FILE_PER_DAY ("Y-m-d"), RotatingFileHandler::FILE_PER_MONTH ("Y-m") '.
+ 'or RotatingFileHandler::FILE_PER_YEAR ("Y"), or you can set one of the '.
+ 'date formats using slashes, underscores and/or dots instead of dashes.',
+ E_USER_DEPRECATED
+ );
+ }
+ if (substr_count($filenameFormat, '{date}') === 0) {
+ trigger_error(
+ 'Invalid filename format - format should contain at least `{date}`, because otherwise rotating is impossible.',
+ E_USER_DEPRECATED
+ );
+ }
+ $this->filenameFormat = $filenameFormat;
+ $this->dateFormat = $dateFormat;
+ $this->url = $this->getTimedFilename();
+ $this->close();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function write(array $record)
+ {
+ // on the first record written, if the log is new, we should rotate (once per day)
+ if (null === $this->mustRotate) {
+ $this->mustRotate = !file_exists($this->url);
+ }
+
+ if ($this->nextRotation < $record['datetime']) {
+ $this->mustRotate = true;
+ $this->close();
+ }
+
+ parent::write($record);
+ }
+
+ /**
+ * Rotates the files.
+ */
+ protected function rotate()
+ {
+ // update filename
+ $this->url = $this->getTimedFilename();
+ $this->nextRotation = new \DateTime('tomorrow');
+
+ // skip GC of old logs if files are unlimited
+ if (0 === $this->maxFiles) {
+ return;
+ }
+
+ $logFiles = glob($this->getGlobPattern());
+ if ($this->maxFiles >= count($logFiles)) {
+ // no files to remove
+ return;
+ }
+
+ // Sorting the files by name to remove the older ones
+ usort($logFiles, function ($a, $b) {
+ return strcmp($b, $a);
+ });
+
+ foreach (array_slice($logFiles, $this->maxFiles) as $file) {
+ if (is_writable($file)) {
+ // suppress errors here as unlink() might fail if two processes
+ // are cleaning up/rotating at the same time
+ set_error_handler(function ($errno, $errstr, $errfile, $errline) {});
+ unlink($file);
+ restore_error_handler();
+ }
+ }
+
+ $this->mustRotate = false;
+ }
+
+ protected function getTimedFilename()
+ {
+ $fileInfo = pathinfo($this->filename);
+ $timedFilename = str_replace(
+ array('{filename}', '{date}'),
+ array($fileInfo['filename'], date($this->dateFormat)),
+ $fileInfo['dirname'] . '/' . $this->filenameFormat
+ );
+
+ if (!empty($fileInfo['extension'])) {
+ $timedFilename .= '.'.$fileInfo['extension'];
+ }
+
+ return $timedFilename;
+ }
+
+ protected function getGlobPattern()
+ {
+ $fileInfo = pathinfo($this->filename);
+ $glob = str_replace(
+ array('{filename}', '{date}'),
+ array($fileInfo['filename'], '*'),
+ $fileInfo['dirname'] . '/' . $this->filenameFormat
+ );
+ if (!empty($fileInfo['extension'])) {
+ $glob .= '.'.$fileInfo['extension'];
+ }
+
+ return $glob;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php
new file mode 100644
index 0000000..bb29ef8
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SamplingHandler.php
@@ -0,0 +1,82 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+/**
+ * Sampling handler
+ *
+ * A sampled event stream can be useful for logging high frequency events in
+ * a production environment where you only need an idea of what is happening
+ * and are not concerned with capturing every occurrence. Since the decision to
+ * handle or not handle a particular event is determined randomly, the
+ * resulting sampled log is not guaranteed to contain 1/N of the events that
+ * occurred in the application, but based on the Law of large numbers, it will
+ * tend to be close to this ratio with a large number of attempts.
+ *
+ * @author Bryan Davis <bd808@wikimedia.org>
+ * @author Kunal Mehta <legoktm@gmail.com>
+ */
+class SamplingHandler extends AbstractHandler
+{
+ /**
+ * @var callable|HandlerInterface $handler
+ */
+ protected $handler;
+
+ /**
+ * @var int $factor
+ */
+ protected $factor;
+
+ /**
+ * @param callable|HandlerInterface $handler Handler or factory callable($record, $fingersCrossedHandler).
+ * @param int $factor Sample factor
+ */
+ public function __construct($handler, $factor)
+ {
+ parent::__construct();
+ $this->handler = $handler;
+ $this->factor = $factor;
+
+ if (!$this->handler instanceof HandlerInterface && !is_callable($this->handler)) {
+ throw new \RuntimeException("The given handler (".json_encode($this->handler).") is not a callable nor a Monolog\Handler\HandlerInterface object");
+ }
+ }
+
+ public function isHandling(array $record)
+ {
+ return $this->handler->isHandling($record);
+ }
+
+ public function handle(array $record)
+ {
+ if ($this->isHandling($record) && mt_rand(1, $this->factor) === 1) {
+ // The same logic as in FingersCrossedHandler
+ if (!$this->handler instanceof HandlerInterface) {
+ $this->handler = call_user_func($this->handler, $record, $this);
+ if (!$this->handler instanceof HandlerInterface) {
+ throw new \RuntimeException("The factory callable should return a HandlerInterface");
+ }
+ }
+
+ if ($this->processors) {
+ foreach ($this->processors as $processor) {
+ $record = call_user_func($processor, $record);
+ }
+ }
+
+ $this->handler->handle($record);
+ }
+
+ return false === $this->bubble;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php
new file mode 100644
index 0000000..aa8a918
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/Slack/SlackRecord.php
@@ -0,0 +1,294 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler\Slack;
+
+use Monolog\Logger;
+use Monolog\Formatter\NormalizerFormatter;
+use Monolog\Formatter\FormatterInterface;
+
+/**
+ * Slack record utility helping to log to Slack webhooks or API.
+ *
+ * @author Greg Kedzierski <greg@gregkedzierski.com>
+ * @author Haralan Dobrev <hkdobrev@gmail.com>
+ * @see https://api.slack.com/incoming-webhooks
+ * @see https://api.slack.com/docs/message-attachments
+ */
+class SlackRecord
+{
+ const COLOR_DANGER = 'danger';
+
+ const COLOR_WARNING = 'warning';
+
+ const COLOR_GOOD = 'good';
+
+ const COLOR_DEFAULT = '#e3e4e6';
+
+ /**
+ * Slack channel (encoded ID or name)
+ * @var string|null
+ */
+ private $channel;
+
+ /**
+ * Name of a bot
+ * @var string|null
+ */
+ private $username;
+
+ /**
+ * User icon e.g. 'ghost', 'http://example.com/user.png'
+ * @var string
+ */
+ private $userIcon;
+
+ /**
+ * Whether the message should be added to Slack as attachment (plain text otherwise)
+ * @var bool
+ */
+ private $useAttachment;
+
+ /**
+ * Whether the the context/extra messages added to Slack as attachments are in a short style
+ * @var bool
+ */
+ private $useShortAttachment;
+
+ /**
+ * Whether the attachment should include context and extra data
+ * @var bool
+ */
+ private $includeContextAndExtra;
+
+ /**
+ * Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2']
+ * @var array
+ */
+ private $excludeFields;
+
+ /**
+ * @var FormatterInterface
+ */
+ private $formatter;
+
+ /**
+ * @var NormalizerFormatter
+ */
+ private $normalizerFormatter;
+
+ public function __construct($channel = null, $username = null, $useAttachment = true, $userIcon = null, $useShortAttachment = false, $includeContextAndExtra = false, array $excludeFields = array(), FormatterInterface $formatter = null)
+ {
+ $this->channel = $channel;
+ $this->username = $username;
+ $this->userIcon = trim($userIcon, ':');
+ $this->useAttachment = $useAttachment;
+ $this->useShortAttachment = $useShortAttachment;
+ $this->includeContextAndExtra = $includeContextAndExtra;
+ $this->excludeFields = $excludeFields;
+ $this->formatter = $formatter;
+
+ if ($this->includeContextAndExtra) {
+ $this->normalizerFormatter = new NormalizerFormatter();
+ }
+ }
+
+ public function getSlackData(array $record)
+ {
+ $dataArray = array();
+ $record = $this->excludeFields($record);
+
+ if ($this->username) {
+ $dataArray['username'] = $this->username;
+ }
+
+ if ($this->channel) {
+ $dataArray['channel'] = $this->channel;
+ }
+
+ if ($this->formatter && !$this->useAttachment) {
+ $message = $this->formatter->format($record);
+ } else {
+ $message = $record['message'];
+ }
+
+ if ($this->useAttachment) {
+ $attachment = array(
+ 'fallback' => $message,
+ 'text' => $message,
+ 'color' => $this->getAttachmentColor($record['level']),
+ 'fields' => array(),
+ 'mrkdwn_in' => array('fields'),
+ 'ts' => $record['datetime']->getTimestamp()
+ );
+
+ if ($this->useShortAttachment) {
+ $attachment['title'] = $record['level_name'];
+ } else {
+ $attachment['title'] = 'Message';
+ $attachment['fields'][] = $this->generateAttachmentField('Level', $record['level_name']);
+ }
+
+
+ if ($this->includeContextAndExtra) {
+ foreach (array('extra', 'context') as $key) {
+ if (empty($record[$key])) {
+ continue;
+ }
+
+ if ($this->useShortAttachment) {
+ $attachment['fields'][] = $this->generateAttachmentField(
+ ucfirst($key),
+ $record[$key]
+ );
+ } else {
+ // Add all extra fields as individual fields in attachment
+ $attachment['fields'] = array_merge(
+ $attachment['fields'],
+ $this->generateAttachmentFields($record[$key])
+ );
+ }
+ }
+ }
+
+ $dataArray['attachments'] = array($attachment);
+ } else {
+ $dataArray['text'] = $message;
+ }
+
+ if ($this->userIcon) {
+ if (filter_var($this->userIcon, FILTER_VALIDATE_URL)) {
+ $dataArray['icon_url'] = $this->userIcon;
+ } else {
+ $dataArray['icon_emoji'] = ":{$this->userIcon}:";
+ }
+ }
+
+ return $dataArray;
+ }
+
+ /**
+ * Returned a Slack message attachment color associated with
+ * provided level.
+ *
+ * @param int $level
+ * @return string
+ */
+ public function getAttachmentColor($level)
+ {
+ switch (true) {
+ case $level >= Logger::ERROR:
+ return self::COLOR_DANGER;
+ case $level >= Logger::WARNING:
+ return self::COLOR_WARNING;
+ case $level >= Logger::INFO:
+ return self::COLOR_GOOD;
+ default:
+ return self::COLOR_DEFAULT;
+ }
+ }
+
+ /**
+ * Stringifies an array of key/value pairs to be used in attachment fields
+ *
+ * @param array $fields
+ *
+ * @return string
+ */
+ public function stringify($fields)
+ {
+ $normalized = $this->normalizerFormatter->format($fields);
+ $prettyPrintFlag = defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 128;
+
+ $hasSecondDimension = count(array_filter($normalized, 'is_array'));
+ $hasNonNumericKeys = !count(array_filter(array_keys($normalized), 'is_numeric'));
+
+ return $hasSecondDimension || $hasNonNumericKeys
+ ? json_encode($normalized, $prettyPrintFlag)
+ : json_encode($normalized);
+ }
+
+ /**
+ * Sets the formatter
+ *
+ * @param FormatterInterface $formatter
+ */
+ public function setFormatter(FormatterInterface $formatter)
+ {
+ $this->formatter = $formatter;
+ }
+
+ /**
+ * Generates attachment field
+ *
+ * @param string $title
+ * @param string|array $value\
+ *
+ * @return array
+ */
+ private function generateAttachmentField($title, $value)
+ {
+ $value = is_array($value)
+ ? sprintf('```%s```', $this->stringify($value))
+ : $value;
+
+ return array(
+ 'title' => $title,
+ 'value' => $value,
+ 'short' => false
+ );
+ }
+
+ /**
+ * Generates a collection of attachment fields from array
+ *
+ * @param array $data
+ *
+ * @return array
+ */
+ private function generateAttachmentFields(array $data)
+ {
+ $fields = array();
+ foreach ($data as $key => $value) {
+ $fields[] = $this->generateAttachmentField($key, $value);
+ }
+
+ return $fields;
+ }
+
+ /**
+ * Get a copy of record with fields excluded according to $this->excludeFields
+ *
+ * @param array $record
+ *
+ * @return array
+ */
+ private function excludeFields(array $record)
+ {
+ foreach ($this->excludeFields as $field) {
+ $keys = explode('.', $field);
+ $node = &$record;
+ $lastKey = end($keys);
+ foreach ($keys as $key) {
+ if (!isset($node[$key])) {
+ break;
+ }
+ if ($lastKey === $key) {
+ unset($node[$key]);
+ break;
+ }
+ $node = &$node[$key];
+ }
+ }
+
+ return $record;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php
new file mode 100644
index 0000000..cae28ec
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SlackHandler.php
@@ -0,0 +1,215 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\FormatterInterface;
+use Monolog\Logger;
+use Monolog\Handler\Slack\SlackRecord;
+
+/**
+ * Sends notifications through Slack API
+ *
+ * @author Greg Kedzierski <greg@gregkedzierski.com>
+ * @see https://api.slack.com/
+ */
+class SlackHandler extends SocketHandler
+{
+ /**
+ * Slack API token
+ * @var string
+ */
+ private $token;
+
+ /**
+ * Instance of the SlackRecord util class preparing data for Slack API.
+ * @var SlackRecord
+ */
+ private $slackRecord;
+
+ /**
+ * @param string $token Slack API token
+ * @param string $channel Slack channel (encoded ID or name)
+ * @param string|null $username Name of a bot
+ * @param bool $useAttachment Whether the message should be added to Slack as attachment (plain text otherwise)
+ * @param string|null $iconEmoji The emoji name to use (or null)
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
+ * @param bool $useShortAttachment Whether the the context/extra messages added to Slack as attachments are in a short style
+ * @param bool $includeContextAndExtra Whether the attachment should include context and extra data
+ * @param array $excludeFields Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2']
+ * @throws MissingExtensionException If no OpenSSL PHP extension configured
+ */
+ public function __construct($token, $channel, $username = null, $useAttachment = true, $iconEmoji = null, $level = Logger::CRITICAL, $bubble = true, $useShortAttachment = false, $includeContextAndExtra = false, array $excludeFields = array())
+ {
+ if (!extension_loaded('openssl')) {
+ throw new MissingExtensionException('The OpenSSL PHP extension is required to use the SlackHandler');
+ }
+
+ parent::__construct('ssl://slack.com:443', $level, $bubble);
+
+ $this->slackRecord = new SlackRecord(
+ $channel,
+ $username,
+ $useAttachment,
+ $iconEmoji,
+ $useShortAttachment,
+ $includeContextAndExtra,
+ $excludeFields,
+ $this->formatter
+ );
+
+ $this->token = $token;
+ }
+
+ public function getSlackRecord()
+ {
+ return $this->slackRecord;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param array $record
+ * @return string
+ */
+ protected function generateDataStream($record)
+ {
+ $content = $this->buildContent($record);
+
+ return $this->buildHeader($content) . $content;
+ }
+
+ /**
+ * Builds the body of API call
+ *
+ * @param array $record
+ * @return string
+ */
+ private function buildContent($record)
+ {
+ $dataArray = $this->prepareContentData($record);
+
+ return http_build_query($dataArray);
+ }
+
+ /**
+ * Prepares content data
+ *
+ * @param array $record
+ * @return array
+ */
+ protected function prepareContentData($record)
+ {
+ $dataArray = $this->slackRecord->getSlackData($record);
+ $dataArray['token'] = $this->token;
+
+ if (!empty($dataArray['attachments'])) {
+ $dataArray['attachments'] = json_encode($dataArray['attachments']);
+ }
+
+ return $dataArray;
+ }
+
+ /**
+ * Builds the header of the API Call
+ *
+ * @param string $content
+ * @return string
+ */
+ private function buildHeader($content)
+ {
+ $header = "POST /api/chat.postMessage HTTP/1.1\r\n";
+ $header .= "Host: slack.com\r\n";
+ $header .= "Content-Type: application/x-www-form-urlencoded\r\n";
+ $header .= "Content-Length: " . strlen($content) . "\r\n";
+ $header .= "\r\n";
+
+ return $header;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param array $record
+ */
+ protected function write(array $record)
+ {
+ parent::write($record);
+ $this->finalizeWrite();
+ }
+
+ /**
+ * Finalizes the request by reading some bytes and then closing the socket
+ *
+ * If we do not read some but close the socket too early, slack sometimes
+ * drops the request entirely.
+ */
+ protected function finalizeWrite()
+ {
+ $res = $this->getResource();
+ if (is_resource($res)) {
+ @fread($res, 2048);
+ }
+ $this->closeSocket();
+ }
+
+ /**
+ * Returned a Slack message attachment color associated with
+ * provided level.
+ *
+ * @param int $level
+ * @return string
+ * @deprecated Use underlying SlackRecord instead
+ */
+ protected function getAttachmentColor($level)
+ {
+ trigger_error(
+ 'SlackHandler::getAttachmentColor() is deprecated. Use underlying SlackRecord instead.',
+ E_USER_DEPRECATED
+ );
+
+ return $this->slackRecord->getAttachmentColor($level);
+ }
+
+ /**
+ * Stringifies an array of key/value pairs to be used in attachment fields
+ *
+ * @param array $fields
+ * @return string
+ * @deprecated Use underlying SlackRecord instead
+ */
+ protected function stringify($fields)
+ {
+ trigger_error(
+ 'SlackHandler::stringify() is deprecated. Use underlying SlackRecord instead.',
+ E_USER_DEPRECATED
+ );
+
+ return $this->slackRecord->stringify($fields);
+ }
+
+ public function setFormatter(FormatterInterface $formatter)
+ {
+ parent::setFormatter($formatter);
+ $this->slackRecord->setFormatter($formatter);
+
+ return $this;
+ }
+
+ public function getFormatter()
+ {
+ $formatter = parent::getFormatter();
+ $this->slackRecord->setFormatter($formatter);
+
+ return $formatter;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php
new file mode 100644
index 0000000..a5b0718
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SlackWebhookHandler.php
@@ -0,0 +1,115 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\FormatterInterface;
+use Monolog\Logger;
+use Monolog\Handler\Slack\SlackRecord;
+
+/**
+ * Sends notifications through Slack Webhooks
+ *
+ * @author Haralan Dobrev <hkdobrev@gmail.com>
+ * @see https://api.slack.com/incoming-webhooks
+ */
+class SlackWebhookHandler extends AbstractProcessingHandler
+{
+ /**
+ * Slack Webhook token
+ * @var string
+ */
+ private $webhookUrl;
+
+ /**
+ * Instance of the SlackRecord util class preparing data for Slack API.
+ * @var SlackRecord
+ */
+ private $slackRecord;
+
+ /**
+ * @param string $webhookUrl Slack Webhook URL
+ * @param string|null $channel Slack channel (encoded ID or name)
+ * @param string|null $username Name of a bot
+ * @param bool $useAttachment Whether the message should be added to Slack as attachment (plain text otherwise)
+ * @param string|null $iconEmoji The emoji name to use (or null)
+ * @param bool $useShortAttachment Whether the the context/extra messages added to Slack as attachments are in a short style
+ * @param bool $includeContextAndExtra Whether the attachment should include context and extra data
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
+ * @param array $excludeFields Dot separated list of fields to exclude from slack message. E.g. ['context.field1', 'extra.field2']
+ */
+ public function __construct($webhookUrl, $channel = null, $username = null, $useAttachment = true, $iconEmoji = null, $useShortAttachment = false, $includeContextAndExtra = false, $level = Logger::CRITICAL, $bubble = true, array $excludeFields = array())
+ {
+ parent::__construct($level, $bubble);
+
+ $this->webhookUrl = $webhookUrl;
+
+ $this->slackRecord = new SlackRecord(
+ $channel,
+ $username,
+ $useAttachment,
+ $iconEmoji,
+ $useShortAttachment,
+ $includeContextAndExtra,
+ $excludeFields,
+ $this->formatter
+ );
+ }
+
+ public function getSlackRecord()
+ {
+ return $this->slackRecord;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param array $record
+ */
+ protected function write(array $record)
+ {
+ $postData = $this->slackRecord->getSlackData($record);
+ $postString = json_encode($postData);
+
+ $ch = curl_init();
+ $options = array(
+ CURLOPT_URL => $this->webhookUrl,
+ CURLOPT_POST => true,
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_HTTPHEADER => array('Content-type: application/json'),
+ CURLOPT_POSTFIELDS => $postString
+ );
+ if (defined('CURLOPT_SAFE_UPLOAD')) {
+ $options[CURLOPT_SAFE_UPLOAD] = true;
+ }
+
+ curl_setopt_array($ch, $options);
+
+ Curl\Util::execute($ch);
+ }
+
+ public function setFormatter(FormatterInterface $formatter)
+ {
+ parent::setFormatter($formatter);
+ $this->slackRecord->setFormatter($formatter);
+
+ return $this;
+ }
+
+ public function getFormatter()
+ {
+ $formatter = parent::getFormatter();
+ $this->slackRecord->setFormatter($formatter);
+
+ return $formatter;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php
new file mode 100644
index 0000000..56b7ed8
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SlackbotHandler.php
@@ -0,0 +1,80 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * Sends notifications through Slack's Slackbot
+ *
+ * @author Haralan Dobrev <hkdobrev@gmail.com>
+ * @see https://slack.com/apps/A0F81R8ET-slackbot
+ */
+class SlackbotHandler extends AbstractProcessingHandler
+{
+ /**
+ * The slug of the Slack team
+ * @var string
+ */
+ private $slackTeam;
+
+ /**
+ * Slackbot token
+ * @var string
+ */
+ private $token;
+
+ /**
+ * Slack channel name
+ * @var string
+ */
+ private $channel;
+
+ /**
+ * @param string $slackTeam Slack team slug
+ * @param string $token Slackbot token
+ * @param string $channel Slack channel (encoded ID or name)
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param bool $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct($slackTeam, $token, $channel, $level = Logger::CRITICAL, $bubble = true)
+ {
+ parent::__construct($level, $bubble);
+
+ $this->slackTeam = $slackTeam;
+ $this->token = $token;
+ $this->channel = $channel;
+ }
+
+ /**
+ * {@inheritdoc}
+ *
+ * @param array $record
+ */
+ protected function write(array $record)
+ {
+ $slackbotUrl = sprintf(
+ 'https://%s.slack.com/services/hooks/slackbot?token=%s&channel=%s',
+ $this->slackTeam,
+ $this->token,
+ $this->channel
+ );
+
+ $ch = curl_init();
+ curl_setopt($ch, CURLOPT_URL, $slackbotUrl);
+ curl_setopt($ch, CURLOPT_POST, true);
+ curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $record['message']);
+
+ Curl\Util::execute($ch);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php
new file mode 100644
index 0000000..1d17421
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SocketHandler.php
@@ -0,0 +1,346 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * Stores to any socket - uses fsockopen() or pfsockopen().
+ *
+ * @author Pablo de Leon Belloc <pablolb@gmail.com>
+ * @see http://php.net/manual/en/function.fsockopen.php
+ */
+class SocketHandler extends AbstractProcessingHandler
+{
+ private $connectionString;
+ private $connectionTimeout;
+ private $resource;
+ private $timeout = 0;
+ private $writingTimeout = 10;
+ private $lastSentBytes = null;
+ private $persistent = false;
+ private $errno;
+ private $errstr;
+ private $lastWritingAt;
+
+ /**
+ * @param string $connectionString Socket connection string
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct($connectionString, $level = Logger::DEBUG, $bubble = true)
+ {
+ parent::__construct($level, $bubble);
+ $this->connectionString = $connectionString;
+ $this->connectionTimeout = (float) ini_get('default_socket_timeout');
+ }
+
+ /**
+ * Connect (if necessary) and write to the socket
+ *
+ * @param array $record
+ *
+ * @throws \UnexpectedValueException
+ * @throws \RuntimeException
+ */
+ protected function write(array $record)
+ {
+ $this->connectIfNotConnected();
+ $data = $this->generateDataStream($record);
+ $this->writeToSocket($data);
+ }
+
+ /**
+ * We will not close a PersistentSocket instance so it can be reused in other requests.
+ */
+ public function close()
+ {
+ if (!$this->isPersistent()) {
+ $this->closeSocket();
+ }
+ }
+
+ /**
+ * Close socket, if open
+ */
+ public function closeSocket()
+ {
+ if (is_resource($this->resource)) {
+ fclose($this->resource);
+ $this->resource = null;
+ }
+ }
+
+ /**
+ * Set socket connection to nbe persistent. It only has effect before the connection is initiated.
+ *
+ * @param bool $persistent
+ */
+ public function setPersistent($persistent)
+ {
+ $this->persistent = (boolean) $persistent;
+ }
+
+ /**
+ * Set connection timeout. Only has effect before we connect.
+ *
+ * @param float $seconds
+ *
+ * @see http://php.net/manual/en/function.fsockopen.php
+ */
+ public function setConnectionTimeout($seconds)
+ {
+ $this->validateTimeout($seconds);
+ $this->connectionTimeout = (float) $seconds;
+ }
+
+ /**
+ * Set write timeout. Only has effect before we connect.
+ *
+ * @param float $seconds
+ *
+ * @see http://php.net/manual/en/function.stream-set-timeout.php
+ */
+ public function setTimeout($seconds)
+ {
+ $this->validateTimeout($seconds);
+ $this->timeout = (float) $seconds;
+ }
+
+ /**
+ * Set writing timeout. Only has effect during connection in the writing cycle.
+ *
+ * @param float $seconds 0 for no timeout
+ */
+ public function setWritingTimeout($seconds)
+ {
+ $this->validateTimeout($seconds);
+ $this->writingTimeout = (float) $seconds;
+ }
+
+ /**
+ * Get current connection string
+ *
+ * @return string
+ */
+ public function getConnectionString()
+ {
+ return $this->connectionString;
+ }
+
+ /**
+ * Get persistent setting
+ *
+ * @return bool
+ */
+ public function isPersistent()
+ {
+ return $this->persistent;
+ }
+
+ /**
+ * Get current connection timeout setting
+ *
+ * @return float
+ */
+ public function getConnectionTimeout()
+ {
+ return $this->connectionTimeout;
+ }
+
+ /**
+ * Get current in-transfer timeout
+ *
+ * @return float
+ */
+ public function getTimeout()
+ {
+ return $this->timeout;
+ }
+
+ /**
+ * Get current local writing timeout
+ *
+ * @return float
+ */
+ public function getWritingTimeout()
+ {
+ return $this->writingTimeout;
+ }
+
+ /**
+ * Check to see if the socket is currently available.
+ *
+ * UDP might appear to be connected but might fail when writing. See http://php.net/fsockopen for details.
+ *
+ * @return bool
+ */
+ public function isConnected()
+ {
+ return is_resource($this->resource)
+ && !feof($this->resource); // on TCP - other party can close connection.
+ }
+
+ /**
+ * Wrapper to allow mocking
+ */
+ protected function pfsockopen()
+ {
+ return @pfsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout);
+ }
+
+ /**
+ * Wrapper to allow mocking
+ */
+ protected function fsockopen()
+ {
+ return @fsockopen($this->connectionString, -1, $this->errno, $this->errstr, $this->connectionTimeout);
+ }
+
+ /**
+ * Wrapper to allow mocking
+ *
+ * @see http://php.net/manual/en/function.stream-set-timeout.php
+ */
+ protected function streamSetTimeout()
+ {
+ $seconds = floor($this->timeout);
+ $microseconds = round(($this->timeout - $seconds) * 1e6);
+
+ return stream_set_timeout($this->resource, $seconds, $microseconds);
+ }
+
+ /**
+ * Wrapper to allow mocking
+ */
+ protected function fwrite($data)
+ {
+ return @fwrite($this->resource, $data);
+ }
+
+ /**
+ * Wrapper to allow mocking
+ */
+ protected function streamGetMetadata()
+ {
+ return stream_get_meta_data($this->resource);
+ }
+
+ private function validateTimeout($value)
+ {
+ $ok = filter_var($value, FILTER_VALIDATE_FLOAT);
+ if ($ok === false || $value < 0) {
+ throw new \InvalidArgumentException("Timeout must be 0 or a positive float (got $value)");
+ }
+ }
+
+ private function connectIfNotConnected()
+ {
+ if ($this->isConnected()) {
+ return;
+ }
+ $this->connect();
+ }
+
+ protected function generateDataStream($record)
+ {
+ return (string) $record['formatted'];
+ }
+
+ /**
+ * @return resource|null
+ */
+ protected function getResource()
+ {
+ return $this->resource;
+ }
+
+ private function connect()
+ {
+ $this->createSocketResource();
+ $this->setSocketTimeout();
+ }
+
+ private function createSocketResource()
+ {
+ if ($this->isPersistent()) {
+ $resource = $this->pfsockopen();
+ } else {
+ $resource = $this->fsockopen();
+ }
+ if (!$resource) {
+ throw new \UnexpectedValueException("Failed connecting to $this->connectionString ($this->errno: $this->errstr)");
+ }
+ $this->resource = $resource;
+ }
+
+ private function setSocketTimeout()
+ {
+ if (!$this->streamSetTimeout()) {
+ throw new \UnexpectedValueException("Failed setting timeout with stream_set_timeout()");
+ }
+ }
+
+ private function writeToSocket($data)
+ {
+ $length = strlen($data);
+ $sent = 0;
+ $this->lastSentBytes = $sent;
+ while ($this->isConnected() && $sent < $length) {
+ if (0 == $sent) {
+ $chunk = $this->fwrite($data);
+ } else {
+ $chunk = $this->fwrite(substr($data, $sent));
+ }
+ if ($chunk === false) {
+ throw new \RuntimeException("Could not write to socket");
+ }
+ $sent += $chunk;
+ $socketInfo = $this->streamGetMetadata();
+ if ($socketInfo['timed_out']) {
+ throw new \RuntimeException("Write timed-out");
+ }
+
+ if ($this->writingIsTimedOut($sent)) {
+ throw new \RuntimeException("Write timed-out, no data sent for `{$this->writingTimeout}` seconds, probably we got disconnected (sent $sent of $length)");
+ }
+ }
+ if (!$this->isConnected() && $sent < $length) {
+ throw new \RuntimeException("End-of-file reached, probably we got disconnected (sent $sent of $length)");
+ }
+ }
+
+ private function writingIsTimedOut($sent)
+ {
+ $writingTimeout = (int) floor($this->writingTimeout);
+ if (0 === $writingTimeout) {
+ return false;
+ }
+
+ if ($sent !== $this->lastSentBytes) {
+ $this->lastWritingAt = time();
+ $this->lastSentBytes = $sent;
+
+ return false;
+ } else {
+ usleep(100);
+ }
+
+ if ((time() - $this->lastWritingAt) >= $writingTimeout) {
+ $this->closeSocket();
+
+ return true;
+ }
+
+ return false;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
new file mode 100644
index 0000000..3597abf
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php
@@ -0,0 +1,176 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * Stores to any stream resource
+ *
+ * Can be used to store into php://stderr, remote and local files, etc.
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class StreamHandler extends AbstractProcessingHandler
+{
+ protected $stream;
+ protected $url;
+ private $errorMessage;
+ protected $filePermission;
+ protected $useLocking;
+ private $dirCreated;
+
+ /**
+ * @param resource|string $stream
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ * @param int|null $filePermission Optional file permissions (default (0644) are only for owner read/write)
+ * @param Boolean $useLocking Try to lock log file before doing any writes
+ *
+ * @throws \Exception If a missing directory is not buildable
+ * @throws \InvalidArgumentException If stream is not a resource or string
+ */
+ public function __construct($stream, $level = Logger::DEBUG, $bubble = true, $filePermission = null, $useLocking = false)
+ {
+ parent::__construct($level, $bubble);
+ if (is_resource($stream)) {
+ $this->stream = $stream;
+ } elseif (is_string($stream)) {
+ $this->url = $stream;
+ } else {
+ throw new \InvalidArgumentException('A stream must either be a resource or a string.');
+ }
+
+ $this->filePermission = $filePermission;
+ $this->useLocking = $useLocking;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function close()
+ {
+ if ($this->url && is_resource($this->stream)) {
+ fclose($this->stream);
+ }
+ $this->stream = null;
+ }
+
+ /**
+ * Return the currently active stream if it is open
+ *
+ * @return resource|null
+ */
+ public function getStream()
+ {
+ return $this->stream;
+ }
+
+ /**
+ * Return the stream URL if it was configured with a URL and not an active resource
+ *
+ * @return string|null
+ */
+ public function getUrl()
+ {
+ return $this->url;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function write(array $record)
+ {
+ if (!is_resource($this->stream)) {
+ if (null === $this->url || '' === $this->url) {
+ throw new \LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().');
+ }
+ $this->createDir();
+ $this->errorMessage = null;
+ set_error_handler(array($this, 'customErrorHandler'));
+ $this->stream = fopen($this->url, 'a');
+ if ($this->filePermission !== null) {
+ @chmod($this->url, $this->filePermission);
+ }
+ restore_error_handler();
+ if (!is_resource($this->stream)) {
+ $this->stream = null;
+ throw new \UnexpectedValueException(sprintf('The stream or file "%s" could not be opened: '.$this->errorMessage, $this->url));
+ }
+ }
+
+ if ($this->useLocking) {
+ // ignoring errors here, there's not much we can do about them
+ flock($this->stream, LOCK_EX);
+ }
+
+ $this->streamWrite($this->stream, $record);
+
+ if ($this->useLocking) {
+ flock($this->stream, LOCK_UN);
+ }
+ }
+
+ /**
+ * Write to stream
+ * @param resource $stream
+ * @param array $record
+ */
+ protected function streamWrite($stream, array $record)
+ {
+ fwrite($stream, (string) $record['formatted']);
+ }
+
+ private function customErrorHandler($code, $msg)
+ {
+ $this->errorMessage = preg_replace('{^(fopen|mkdir)\(.*?\): }', '', $msg);
+ }
+
+ /**
+ * @param string $stream
+ *
+ * @return null|string
+ */
+ private function getDirFromStream($stream)
+ {
+ $pos = strpos($stream, '://');
+ if ($pos === false) {
+ return dirname($stream);
+ }
+
+ if ('file://' === substr($stream, 0, 7)) {
+ return dirname(substr($stream, 7));
+ }
+
+ return;
+ }
+
+ private function createDir()
+ {
+ // Do not try to create dir if it has already been tried.
+ if ($this->dirCreated) {
+ return;
+ }
+
+ $dir = $this->getDirFromStream($this->url);
+ if (null !== $dir && !is_dir($dir)) {
+ $this->errorMessage = null;
+ set_error_handler(array($this, 'customErrorHandler'));
+ $status = mkdir($dir, 0777, true);
+ restore_error_handler();
+ if (false === $status) {
+ throw new \UnexpectedValueException(sprintf('There is no existing directory at "%s" and its not buildable: '.$this->errorMessage, $dir));
+ }
+ }
+ $this->dirCreated = true;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php
new file mode 100644
index 0000000..3223fee
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SwiftMailerHandler.php
@@ -0,0 +1,99 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\Formatter\LineFormatter;
+use Swift;
+
+/**
+ * SwiftMailerHandler uses Swift_Mailer to send the emails
+ *
+ * @author Gyula Sallai
+ */
+class SwiftMailerHandler extends MailHandler
+{
+ protected $mailer;
+ private $messageTemplate;
+
+ /**
+ * @param \Swift_Mailer $mailer The mailer to use
+ * @param callable|\Swift_Message $message An example message for real messages, only the body will be replaced
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ */
+ public function __construct(\Swift_Mailer $mailer, $message, $level = Logger::ERROR, $bubble = true)
+ {
+ parent::__construct($level, $bubble);
+
+ $this->mailer = $mailer;
+ $this->messageTemplate = $message;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function send($content, array $records)
+ {
+ $this->mailer->send($this->buildMessage($content, $records));
+ }
+
+ /**
+ * Creates instance of Swift_Message to be sent
+ *
+ * @param string $content formatted email body to be sent
+ * @param array $records Log records that formed the content
+ * @return \Swift_Message
+ */
+ protected function buildMessage($content, array $records)
+ {
+ $message = null;
+ if ($this->messageTemplate instanceof \Swift_Message) {
+ $message = clone $this->messageTemplate;
+ $message->generateId();
+ } elseif (is_callable($this->messageTemplate)) {
+ $message = call_user_func($this->messageTemplate, $content, $records);
+ }
+
+ if (!$message instanceof \Swift_Message) {
+ throw new \InvalidArgumentException('Could not resolve message as instance of Swift_Message or a callable returning it');
+ }
+
+ if ($records) {
+ $subjectFormatter = new LineFormatter($message->getSubject());
+ $message->setSubject($subjectFormatter->format($this->getHighestRecord($records)));
+ }
+
+ $message->setBody($content);
+ if (version_compare(Swift::VERSION, '6.0.0', '>=')) {
+ $message->setDate(new \DateTimeImmutable());
+ } else {
+ $message->setDate(time());
+ }
+
+ return $message;
+ }
+
+ /**
+ * BC getter, to be removed in 2.0
+ */
+ public function __get($name)
+ {
+ if ($name === 'message') {
+ trigger_error('SwiftMailerHandler->message is deprecated, use ->buildMessage() instead to retrieve the message', E_USER_DEPRECATED);
+
+ return $this->buildMessage(null, array());
+ }
+
+ throw new \InvalidArgumentException('Invalid property '.$name);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php
new file mode 100644
index 0000000..94b00cd
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SyslogHandler.php
@@ -0,0 +1,67 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+/**
+ * Logs to syslog service.
+ *
+ * usage example:
+ *
+ * $log = new Logger('application');
+ * $syslog = new SyslogHandler('myfacility', 'local6');
+ * $formatter = new LineFormatter("%channel%.%level_name%: %message% %extra%");
+ * $syslog->setFormatter($formatter);
+ * $log->pushHandler($syslog);
+ *
+ * @author Sven Paulus <sven@karlsruhe.org>
+ */
+class SyslogHandler extends AbstractSyslogHandler
+{
+ protected $ident;
+ protected $logopts;
+
+ /**
+ * @param string $ident
+ * @param mixed $facility
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ * @param int $logopts Option flags for the openlog() call, defaults to LOG_PID
+ */
+ public function __construct($ident, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true, $logopts = LOG_PID)
+ {
+ parent::__construct($facility, $level, $bubble);
+
+ $this->ident = $ident;
+ $this->logopts = $logopts;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function close()
+ {
+ closelog();
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function write(array $record)
+ {
+ if (!openlog($this->ident, $this->logopts, $this->facility)) {
+ throw new \LogicException('Can\'t open syslog for ident "'.$this->ident.'" and facility "'.$this->facility.'"');
+ }
+ syslog($this->logLevels[$record['level']], (string) $record['formatted']);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php
new file mode 100644
index 0000000..85ed9d9
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdp/UdpSocket.php
@@ -0,0 +1,56 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler\SyslogUdp;
+
+class UdpSocket
+{
+ const DATAGRAM_MAX_LENGTH = 65023;
+
+ protected $ip;
+ protected $port;
+ protected $socket;
+
+ public function __construct($ip, $port = 514)
+ {
+ $this->ip = $ip;
+ $this->port = $port;
+ $this->socket = socket_create(AF_INET, SOCK_DGRAM, SOL_UDP);
+ }
+
+ public function write($line, $header = "")
+ {
+ $this->send($this->assembleMessage($line, $header));
+ }
+
+ public function close()
+ {
+ if (is_resource($this->socket)) {
+ socket_close($this->socket);
+ $this->socket = null;
+ }
+ }
+
+ protected function send($chunk)
+ {
+ if (!is_resource($this->socket)) {
+ throw new \LogicException('The UdpSocket to '.$this->ip.':'.$this->port.' has been closed and can not be written to anymore');
+ }
+ socket_sendto($this->socket, $chunk, strlen($chunk), $flags = 0, $this->ip, $this->port);
+ }
+
+ protected function assembleMessage($line, $header)
+ {
+ $chunkSize = self::DATAGRAM_MAX_LENGTH - strlen($header);
+
+ return $header . substr($line, 0, $chunkSize);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php
new file mode 100644
index 0000000..a8d1bf0
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/SyslogUdpHandler.php
@@ -0,0 +1,103 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\Handler\SyslogUdp\UdpSocket;
+
+/**
+ * A Handler for logging to a remote syslogd server.
+ *
+ * @author Jesper Skovgaard Nielsen <nulpunkt@gmail.com>
+ */
+class SyslogUdpHandler extends AbstractSyslogHandler
+{
+ protected $socket;
+ protected $ident;
+
+ /**
+ * @param string $host
+ * @param int $port
+ * @param mixed $facility
+ * @param int $level The minimum logging level at which this handler will be triggered
+ * @param Boolean $bubble Whether the messages that are handled can bubble up the stack or not
+ * @param string $ident Program name or tag for each log message.
+ */
+ public function __construct($host, $port = 514, $facility = LOG_USER, $level = Logger::DEBUG, $bubble = true, $ident = 'php')
+ {
+ parent::__construct($facility, $level, $bubble);
+
+ $this->ident = $ident;
+
+ $this->socket = new UdpSocket($host, $port ?: 514);
+ }
+
+ protected function write(array $record)
+ {
+ $lines = $this->splitMessageIntoLines($record['formatted']);
+
+ $header = $this->makeCommonSyslogHeader($this->logLevels[$record['level']]);
+
+ foreach ($lines as $line) {
+ $this->socket->write($line, $header);
+ }
+ }
+
+ public function close()
+ {
+ $this->socket->close();
+ }
+
+ private function splitMessageIntoLines($message)
+ {
+ if (is_array($message)) {
+ $message = implode("\n", $message);
+ }
+
+ return preg_split('/$\R?^/m', $message, -1, PREG_SPLIT_NO_EMPTY);
+ }
+
+ /**
+ * Make common syslog header (see rfc5424)
+ */
+ protected function makeCommonSyslogHeader($severity)
+ {
+ $priority = $severity + $this->facility;
+
+ if (!$pid = getmypid()) {
+ $pid = '-';
+ }
+
+ if (!$hostname = gethostname()) {
+ $hostname = '-';
+ }
+
+ return "<$priority>1 " .
+ $this->getDateTime() . " " .
+ $hostname . " " .
+ $this->ident . " " .
+ $pid . " - - ";
+ }
+
+ protected function getDateTime()
+ {
+ return date(\DateTime::RFC3339);
+ }
+
+ /**
+ * Inject your own socket, mainly used for testing
+ */
+ public function setSocket($socket)
+ {
+ $this->socket = $socket;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php
new file mode 100644
index 0000000..91b44fe
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/TestHandler.php
@@ -0,0 +1,154 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+/**
+ * Used for testing purposes.
+ *
+ * It records all records and gives you access to them for verification.
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * @method bool hasEmergency($record)
+ * @method bool hasAlert($record)
+ * @method bool hasCritical($record)
+ * @method bool hasError($record)
+ * @method bool hasWarning($record)
+ * @method bool hasNotice($record)
+ * @method bool hasInfo($record)
+ * @method bool hasDebug($record)
+ *
+ * @method bool hasEmergencyRecords()
+ * @method bool hasAlertRecords()
+ * @method bool hasCriticalRecords()
+ * @method bool hasErrorRecords()
+ * @method bool hasWarningRecords()
+ * @method bool hasNoticeRecords()
+ * @method bool hasInfoRecords()
+ * @method bool hasDebugRecords()
+ *
+ * @method bool hasEmergencyThatContains($message)
+ * @method bool hasAlertThatContains($message)
+ * @method bool hasCriticalThatContains($message)
+ * @method bool hasErrorThatContains($message)
+ * @method bool hasWarningThatContains($message)
+ * @method bool hasNoticeThatContains($message)
+ * @method bool hasInfoThatContains($message)
+ * @method bool hasDebugThatContains($message)
+ *
+ * @method bool hasEmergencyThatMatches($message)
+ * @method bool hasAlertThatMatches($message)
+ * @method bool hasCriticalThatMatches($message)
+ * @method bool hasErrorThatMatches($message)
+ * @method bool hasWarningThatMatches($message)
+ * @method bool hasNoticeThatMatches($message)
+ * @method bool hasInfoThatMatches($message)
+ * @method bool hasDebugThatMatches($message)
+ *
+ * @method bool hasEmergencyThatPasses($message)
+ * @method bool hasAlertThatPasses($message)
+ * @method bool hasCriticalThatPasses($message)
+ * @method bool hasErrorThatPasses($message)
+ * @method bool hasWarningThatPasses($message)
+ * @method bool hasNoticeThatPasses($message)
+ * @method bool hasInfoThatPasses($message)
+ * @method bool hasDebugThatPasses($message)
+ */
+class TestHandler extends AbstractProcessingHandler
+{
+ protected $records = array();
+ protected $recordsByLevel = array();
+
+ public function getRecords()
+ {
+ return $this->records;
+ }
+
+ public function clear()
+ {
+ $this->records = array();
+ $this->recordsByLevel = array();
+ }
+
+ public function hasRecords($level)
+ {
+ return isset($this->recordsByLevel[$level]);
+ }
+
+ public function hasRecord($record, $level)
+ {
+ if (is_array($record)) {
+ $record = $record['message'];
+ }
+
+ return $this->hasRecordThatPasses(function ($rec) use ($record) {
+ return $rec['message'] === $record;
+ }, $level);
+ }
+
+ public function hasRecordThatContains($message, $level)
+ {
+ return $this->hasRecordThatPasses(function ($rec) use ($message) {
+ return strpos($rec['message'], $message) !== false;
+ }, $level);
+ }
+
+ public function hasRecordThatMatches($regex, $level)
+ {
+ return $this->hasRecordThatPasses(function ($rec) use ($regex) {
+ return preg_match($regex, $rec['message']) > 0;
+ }, $level);
+ }
+
+ public function hasRecordThatPasses($predicate, $level)
+ {
+ if (!is_callable($predicate)) {
+ throw new \InvalidArgumentException("Expected a callable for hasRecordThatSucceeds");
+ }
+
+ if (!isset($this->recordsByLevel[$level])) {
+ return false;
+ }
+
+ foreach ($this->recordsByLevel[$level] as $i => $rec) {
+ if (call_user_func($predicate, $rec, $i)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function write(array $record)
+ {
+ $this->recordsByLevel[$record['level']][] = $record;
+ $this->records[] = $record;
+ }
+
+ public function __call($method, $args)
+ {
+ if (preg_match('/(.*)(Debug|Info|Notice|Warning|Error|Critical|Alert|Emergency)(.*)/', $method, $matches) > 0) {
+ $genericMethod = $matches[1] . ('Records' !== $matches[3] ? 'Record' : '') . $matches[3];
+ $level = constant('Monolog\Logger::' . strtoupper($matches[2]));
+ if (method_exists($this, $genericMethod)) {
+ $args[] = $level;
+
+ return call_user_func_array(array($this, $genericMethod), $args);
+ }
+ }
+
+ throw new \BadMethodCallException('Call to undefined method ' . get_class($this) . '::' . $method . '()');
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php
new file mode 100644
index 0000000..ce824a2
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/WhatFailureGroupHandler.php
@@ -0,0 +1,61 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+/**
+ * Forwards records to multiple handlers suppressing failures of each handler
+ * and continuing through to give every handler a chance to succeed.
+ *
+ * @author Craig D'Amelio <craig@damelio.ca>
+ */
+class WhatFailureGroupHandler extends GroupHandler
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function handle(array $record)
+ {
+ if ($this->processors) {
+ foreach ($this->processors as $processor) {
+ $record = call_user_func($processor, $record);
+ }
+ }
+
+ foreach ($this->handlers as $handler) {
+ try {
+ $handler->handle($record);
+ } catch (\Exception $e) {
+ // What failure?
+ } catch (\Throwable $e) {
+ // What failure?
+ }
+ }
+
+ return false === $this->bubble;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function handleBatch(array $records)
+ {
+ foreach ($this->handlers as $handler) {
+ try {
+ $handler->handleBatch($records);
+ } catch (\Exception $e) {
+ // What failure?
+ } catch (\Throwable $e) {
+ // What failure?
+ }
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php
new file mode 100644
index 0000000..2e00f9c
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Handler/ZendMonitorHandler.php
@@ -0,0 +1,95 @@
+<?php
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\NormalizerFormatter;
+use Monolog\Logger;
+
+/**
+ * Handler sending logs to Zend Monitor
+ *
+ * @author Christian Bergau <cbergau86@gmail.com>
+ */
+class ZendMonitorHandler extends AbstractProcessingHandler
+{
+ /**
+ * Monolog level / ZendMonitor Custom Event priority map
+ *
+ * @var array
+ */
+ protected $levelMap = array(
+ Logger::DEBUG => 1,
+ Logger::INFO => 2,
+ Logger::NOTICE => 3,
+ Logger::WARNING => 4,
+ Logger::ERROR => 5,
+ Logger::CRITICAL => 6,
+ Logger::ALERT => 7,
+ Logger::EMERGENCY => 0,
+ );
+
+ /**
+ * Construct
+ *
+ * @param int $level
+ * @param bool $bubble
+ * @throws MissingExtensionException
+ */
+ public function __construct($level = Logger::DEBUG, $bubble = true)
+ {
+ if (!function_exists('zend_monitor_custom_event')) {
+ throw new MissingExtensionException('You must have Zend Server installed in order to use this handler');
+ }
+ parent::__construct($level, $bubble);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ protected function write(array $record)
+ {
+ $this->writeZendMonitorCustomEvent(
+ $this->levelMap[$record['level']],
+ $record['message'],
+ $record['formatted']
+ );
+ }
+
+ /**
+ * Write a record to Zend Monitor
+ *
+ * @param int $level
+ * @param string $message
+ * @param array $formatted
+ */
+ protected function writeZendMonitorCustomEvent($level, $message, $formatted)
+ {
+ zend_monitor_custom_event($level, $message, $formatted);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function getDefaultFormatter()
+ {
+ return new NormalizerFormatter();
+ }
+
+ /**
+ * Get the level map
+ *
+ * @return array
+ */
+ public function getLevelMap()
+ {
+ return $this->levelMap;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Logger.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Logger.php
new file mode 100644
index 0000000..c63dfd2
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Logger.php
@@ -0,0 +1,700 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog;
+
+use Monolog\Handler\HandlerInterface;
+use Monolog\Handler\StreamHandler;
+use Psr\Log\LoggerInterface;
+use Psr\Log\InvalidArgumentException;
+
+/**
+ * Monolog log channel
+ *
+ * It contains a stack of Handlers and a stack of Processors,
+ * and uses them to store records that are added to it.
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class Logger implements LoggerInterface
+{
+ /**
+ * Detailed debug information
+ */
+ const DEBUG = 100;
+
+ /**
+ * Interesting events
+ *
+ * Examples: User logs in, SQL logs.
+ */
+ const INFO = 200;
+
+ /**
+ * Uncommon events
+ */
+ const NOTICE = 250;
+
+ /**
+ * Exceptional occurrences that are not errors
+ *
+ * Examples: Use of deprecated APIs, poor use of an API,
+ * undesirable things that are not necessarily wrong.
+ */
+ const WARNING = 300;
+
+ /**
+ * Runtime errors
+ */
+ const ERROR = 400;
+
+ /**
+ * Critical conditions
+ *
+ * Example: Application component unavailable, unexpected exception.
+ */
+ const CRITICAL = 500;
+
+ /**
+ * Action must be taken immediately
+ *
+ * Example: Entire website down, database unavailable, etc.
+ * This should trigger the SMS alerts and wake you up.
+ */
+ const ALERT = 550;
+
+ /**
+ * Urgent alert.
+ */
+ const EMERGENCY = 600;
+
+ /**
+ * Monolog API version
+ *
+ * This is only bumped when API breaks are done and should
+ * follow the major version of the library
+ *
+ * @var int
+ */
+ const API = 1;
+
+ /**
+ * Logging levels from syslog protocol defined in RFC 5424
+ *
+ * @var array $levels Logging levels
+ */
+ protected static $levels = array(
+ self::DEBUG => 'DEBUG',
+ self::INFO => 'INFO',
+ self::NOTICE => 'NOTICE',
+ self::WARNING => 'WARNING',
+ self::ERROR => 'ERROR',
+ self::CRITICAL => 'CRITICAL',
+ self::ALERT => 'ALERT',
+ self::EMERGENCY => 'EMERGENCY',
+ );
+
+ /**
+ * @var \DateTimeZone
+ */
+ protected static $timezone;
+
+ /**
+ * @var string
+ */
+ protected $name;
+
+ /**
+ * The handler stack
+ *
+ * @var HandlerInterface[]
+ */
+ protected $handlers;
+
+ /**
+ * Processors that will process all log records
+ *
+ * To process records of a single handler instead, add the processor on that specific handler
+ *
+ * @var callable[]
+ */
+ protected $processors;
+
+ /**
+ * @var bool
+ */
+ protected $microsecondTimestamps = true;
+
+ /**
+ * @param string $name The logging channel
+ * @param HandlerInterface[] $handlers Optional stack of handlers, the first one in the array is called first, etc.
+ * @param callable[] $processors Optional array of processors
+ */
+ public function __construct($name, array $handlers = array(), array $processors = array())
+ {
+ $this->name = $name;
+ $this->handlers = $handlers;
+ $this->processors = $processors;
+ }
+
+ /**
+ * @return string
+ */
+ public function getName()
+ {
+ return $this->name;
+ }
+
+ /**
+ * Return a new cloned instance with the name changed
+ *
+ * @return static
+ */
+ public function withName($name)
+ {
+ $new = clone $this;
+ $new->name = $name;
+
+ return $new;
+ }
+
+ /**
+ * Pushes a handler on to the stack.
+ *
+ * @param HandlerInterface $handler
+ * @return $this
+ */
+ public function pushHandler(HandlerInterface $handler)
+ {
+ array_unshift($this->handlers, $handler);
+
+ return $this;
+ }
+
+ /**
+ * Pops a handler from the stack
+ *
+ * @return HandlerInterface
+ */
+ public function popHandler()
+ {
+ if (!$this->handlers) {
+ throw new \LogicException('You tried to pop from an empty handler stack.');
+ }
+
+ return array_shift($this->handlers);
+ }
+
+ /**
+ * Set handlers, replacing all existing ones.
+ *
+ * If a map is passed, keys will be ignored.
+ *
+ * @param HandlerInterface[] $handlers
+ * @return $this
+ */
+ public function setHandlers(array $handlers)
+ {
+ $this->handlers = array();
+ foreach (array_reverse($handlers) as $handler) {
+ $this->pushHandler($handler);
+ }
+
+ return $this;
+ }
+
+ /**
+ * @return HandlerInterface[]
+ */
+ public function getHandlers()
+ {
+ return $this->handlers;
+ }
+
+ /**
+ * Adds a processor on to the stack.
+ *
+ * @param callable $callback
+ * @return $this
+ */
+ public function pushProcessor($callback)
+ {
+ if (!is_callable($callback)) {
+ throw new \InvalidArgumentException('Processors must be valid callables (callback or object with an __invoke method), '.var_export($callback, true).' given');
+ }
+ array_unshift($this->processors, $callback);
+
+ return $this;
+ }
+
+ /**
+ * Removes the processor on top of the stack and returns it.
+ *
+ * @return callable
+ */
+ public function popProcessor()
+ {
+ if (!$this->processors) {
+ throw new \LogicException('You tried to pop from an empty processor stack.');
+ }
+
+ return array_shift($this->processors);
+ }
+
+ /**
+ * @return callable[]
+ */
+ public function getProcessors()
+ {
+ return $this->processors;
+ }
+
+ /**
+ * Control the use of microsecond resolution timestamps in the 'datetime'
+ * member of new records.
+ *
+ * Generating microsecond resolution timestamps by calling
+ * microtime(true), formatting the result via sprintf() and then parsing
+ * the resulting string via \DateTime::createFromFormat() can incur
+ * a measurable runtime overhead vs simple usage of DateTime to capture
+ * a second resolution timestamp in systems which generate a large number
+ * of log events.
+ *
+ * @param bool $micro True to use microtime() to create timestamps
+ */
+ public function useMicrosecondTimestamps($micro)
+ {
+ $this->microsecondTimestamps = (bool) $micro;
+ }
+
+ /**
+ * Adds a log record.
+ *
+ * @param int $level The logging level
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function addRecord($level, $message, array $context = array())
+ {
+ if (!$this->handlers) {
+ $this->pushHandler(new StreamHandler('php://stderr', static::DEBUG));
+ }
+
+ $levelName = static::getLevelName($level);
+
+ // check if any handler will handle this message so we can return early and save cycles
+ $handlerKey = null;
+ reset($this->handlers);
+ while ($handler = current($this->handlers)) {
+ if ($handler->isHandling(array('level' => $level))) {
+ $handlerKey = key($this->handlers);
+ break;
+ }
+
+ next($this->handlers);
+ }
+
+ if (null === $handlerKey) {
+ return false;
+ }
+
+ if (!static::$timezone) {
+ static::$timezone = new \DateTimeZone(date_default_timezone_get() ?: 'UTC');
+ }
+
+ // php7.1+ always has microseconds enabled, so we do not need this hack
+ if ($this->microsecondTimestamps && PHP_VERSION_ID < 70100) {
+ $ts = \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true)), static::$timezone);
+ } else {
+ $ts = new \DateTime(null, static::$timezone);
+ }
+ $ts->setTimezone(static::$timezone);
+
+ $record = array(
+ 'message' => (string) $message,
+ 'context' => $context,
+ 'level' => $level,
+ 'level_name' => $levelName,
+ 'channel' => $this->name,
+ 'datetime' => $ts,
+ 'extra' => array(),
+ );
+
+ foreach ($this->processors as $processor) {
+ $record = call_user_func($processor, $record);
+ }
+
+ while ($handler = current($this->handlers)) {
+ if (true === $handler->handle($record)) {
+ break;
+ }
+
+ next($this->handlers);
+ }
+
+ return true;
+ }
+
+ /**
+ * Adds a log record at the DEBUG level.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function addDebug($message, array $context = array())
+ {
+ return $this->addRecord(static::DEBUG, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the INFO level.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function addInfo($message, array $context = array())
+ {
+ return $this->addRecord(static::INFO, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the NOTICE level.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function addNotice($message, array $context = array())
+ {
+ return $this->addRecord(static::NOTICE, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the WARNING level.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function addWarning($message, array $context = array())
+ {
+ return $this->addRecord(static::WARNING, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the ERROR level.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function addError($message, array $context = array())
+ {
+ return $this->addRecord(static::ERROR, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the CRITICAL level.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function addCritical($message, array $context = array())
+ {
+ return $this->addRecord(static::CRITICAL, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the ALERT level.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function addAlert($message, array $context = array())
+ {
+ return $this->addRecord(static::ALERT, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the EMERGENCY level.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function addEmergency($message, array $context = array())
+ {
+ return $this->addRecord(static::EMERGENCY, $message, $context);
+ }
+
+ /**
+ * Gets all supported logging levels.
+ *
+ * @return array Assoc array with human-readable level names => level codes.
+ */
+ public static function getLevels()
+ {
+ return array_flip(static::$levels);
+ }
+
+ /**
+ * Gets the name of the logging level.
+ *
+ * @param int $level
+ * @return string
+ */
+ public static function getLevelName($level)
+ {
+ if (!isset(static::$levels[$level])) {
+ throw new InvalidArgumentException('Level "'.$level.'" is not defined, use one of: '.implode(', ', array_keys(static::$levels)));
+ }
+
+ return static::$levels[$level];
+ }
+
+ /**
+ * Converts PSR-3 levels to Monolog ones if necessary
+ *
+ * @param string|int Level number (monolog) or name (PSR-3)
+ * @return int
+ */
+ public static function toMonologLevel($level)
+ {
+ if (is_string($level) && defined(__CLASS__.'::'.strtoupper($level))) {
+ return constant(__CLASS__.'::'.strtoupper($level));
+ }
+
+ return $level;
+ }
+
+ /**
+ * Checks whether the Logger has a handler that listens on the given level
+ *
+ * @param int $level
+ * @return Boolean
+ */
+ public function isHandling($level)
+ {
+ $record = array(
+ 'level' => $level,
+ );
+
+ foreach ($this->handlers as $handler) {
+ if ($handler->isHandling($record)) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Adds a log record at an arbitrary level.
+ *
+ * This method allows for compatibility with common interfaces.
+ *
+ * @param mixed $level The log level
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function log($level, $message, array $context = array())
+ {
+ $level = static::toMonologLevel($level);
+
+ return $this->addRecord($level, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the DEBUG level.
+ *
+ * This method allows for compatibility with common interfaces.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function debug($message, array $context = array())
+ {
+ return $this->addRecord(static::DEBUG, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the INFO level.
+ *
+ * This method allows for compatibility with common interfaces.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function info($message, array $context = array())
+ {
+ return $this->addRecord(static::INFO, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the NOTICE level.
+ *
+ * This method allows for compatibility with common interfaces.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function notice($message, array $context = array())
+ {
+ return $this->addRecord(static::NOTICE, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the WARNING level.
+ *
+ * This method allows for compatibility with common interfaces.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function warn($message, array $context = array())
+ {
+ return $this->addRecord(static::WARNING, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the WARNING level.
+ *
+ * This method allows for compatibility with common interfaces.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function warning($message, array $context = array())
+ {
+ return $this->addRecord(static::WARNING, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the ERROR level.
+ *
+ * This method allows for compatibility with common interfaces.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function err($message, array $context = array())
+ {
+ return $this->addRecord(static::ERROR, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the ERROR level.
+ *
+ * This method allows for compatibility with common interfaces.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function error($message, array $context = array())
+ {
+ return $this->addRecord(static::ERROR, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the CRITICAL level.
+ *
+ * This method allows for compatibility with common interfaces.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function crit($message, array $context = array())
+ {
+ return $this->addRecord(static::CRITICAL, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the CRITICAL level.
+ *
+ * This method allows for compatibility with common interfaces.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function critical($message, array $context = array())
+ {
+ return $this->addRecord(static::CRITICAL, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the ALERT level.
+ *
+ * This method allows for compatibility with common interfaces.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function alert($message, array $context = array())
+ {
+ return $this->addRecord(static::ALERT, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the EMERGENCY level.
+ *
+ * This method allows for compatibility with common interfaces.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function emerg($message, array $context = array())
+ {
+ return $this->addRecord(static::EMERGENCY, $message, $context);
+ }
+
+ /**
+ * Adds a log record at the EMERGENCY level.
+ *
+ * This method allows for compatibility with common interfaces.
+ *
+ * @param string $message The log message
+ * @param array $context The log context
+ * @return Boolean Whether the record has been processed
+ */
+ public function emergency($message, array $context = array())
+ {
+ return $this->addRecord(static::EMERGENCY, $message, $context);
+ }
+
+ /**
+ * Set the timezone to be used for the timestamp of log records.
+ *
+ * This is stored globally for all Logger instances
+ *
+ * @param \DateTimeZone $tz Timezone object
+ */
+ public static function setTimezone(\DateTimeZone $tz)
+ {
+ self::$timezone = $tz;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php
new file mode 100644
index 0000000..a803514
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/GitProcessor.php
@@ -0,0 +1,64 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\Logger;
+
+/**
+ * Injects Git branch and Git commit SHA in all records
+ *
+ * @author Nick Otter
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class GitProcessor
+{
+ private $level;
+ private static $cache;
+
+ public function __construct($level = Logger::DEBUG)
+ {
+ $this->level = Logger::toMonologLevel($level);
+ }
+
+ /**
+ * @param array $record
+ * @return array
+ */
+ public function __invoke(array $record)
+ {
+ // return if the level is not high enough
+ if ($record['level'] < $this->level) {
+ return $record;
+ }
+
+ $record['extra']['git'] = self::getGitInfo();
+
+ return $record;
+ }
+
+ private static function getGitInfo()
+ {
+ if (self::$cache) {
+ return self::$cache;
+ }
+
+ $branches = `git branch -v --no-abbrev`;
+ if (preg_match('{^\* (.+?)\s+([a-f0-9]{40})(?:\s|$)}m', $branches, $matches)) {
+ return self::$cache = array(
+ 'branch' => $matches[1],
+ 'commit' => $matches[2],
+ );
+ }
+
+ return self::$cache = array();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php
new file mode 100644
index 0000000..9940e49
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/IntrospectionProcessor.php
@@ -0,0 +1,112 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\Logger;
+
+/**
+ * Injects line/file:class/function where the log message came from
+ *
+ * Warning: This only works if the handler processes the logs directly.
+ * If you put the processor on a handler that is behind a FingersCrossedHandler
+ * for example, the processor will only be called once the trigger level is reached,
+ * and all the log records will have the same file/line/.. data from the call that
+ * triggered the FingersCrossedHandler.
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class IntrospectionProcessor
+{
+ private $level;
+
+ private $skipClassesPartials;
+
+ private $skipStackFramesCount;
+
+ private $skipFunctions = array(
+ 'call_user_func',
+ 'call_user_func_array',
+ );
+
+ public function __construct($level = Logger::DEBUG, array $skipClassesPartials = array(), $skipStackFramesCount = 0)
+ {
+ $this->level = Logger::toMonologLevel($level);
+ $this->skipClassesPartials = array_merge(array('Monolog\\'), $skipClassesPartials);
+ $this->skipStackFramesCount = $skipStackFramesCount;
+ }
+
+ /**
+ * @param array $record
+ * @return array
+ */
+ public function __invoke(array $record)
+ {
+ // return if the level is not high enough
+ if ($record['level'] < $this->level) {
+ return $record;
+ }
+
+ /*
+ * http://php.net/manual/en/function.debug-backtrace.php
+ * As of 5.3.6, DEBUG_BACKTRACE_IGNORE_ARGS option was added.
+ * Any version less than 5.3.6 must use the DEBUG_BACKTRACE_IGNORE_ARGS constant value '2'.
+ */
+ $trace = debug_backtrace((PHP_VERSION_ID < 50306) ? 2 : DEBUG_BACKTRACE_IGNORE_ARGS);
+
+ // skip first since it's always the current method
+ array_shift($trace);
+ // the call_user_func call is also skipped
+ array_shift($trace);
+
+ $i = 0;
+
+ while ($this->isTraceClassOrSkippedFunction($trace, $i)) {
+ if (isset($trace[$i]['class'])) {
+ foreach ($this->skipClassesPartials as $part) {
+ if (strpos($trace[$i]['class'], $part) !== false) {
+ $i++;
+ continue 2;
+ }
+ }
+ } elseif (in_array($trace[$i]['function'], $this->skipFunctions)) {
+ $i++;
+ continue;
+ }
+
+ break;
+ }
+
+ $i += $this->skipStackFramesCount;
+
+ // we should have the call source now
+ $record['extra'] = array_merge(
+ $record['extra'],
+ array(
+ 'file' => isset($trace[$i - 1]['file']) ? $trace[$i - 1]['file'] : null,
+ 'line' => isset($trace[$i - 1]['line']) ? $trace[$i - 1]['line'] : null,
+ 'class' => isset($trace[$i]['class']) ? $trace[$i]['class'] : null,
+ 'function' => isset($trace[$i]['function']) ? $trace[$i]['function'] : null,
+ )
+ );
+
+ return $record;
+ }
+
+ private function isTraceClassOrSkippedFunction(array $trace, $index)
+ {
+ if (!isset($trace[$index])) {
+ return false;
+ }
+
+ return isset($trace[$index]['class']) || in_array($trace[$index]['function'], $this->skipFunctions);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php
new file mode 100644
index 0000000..0514e66
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MemoryPeakUsageProcessor.php
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+/**
+ * Injects memory_get_peak_usage in all records
+ *
+ * @see Monolog\Processor\MemoryProcessor::__construct() for options
+ * @author Rob Jensen
+ */
+class MemoryPeakUsageProcessor extends MemoryProcessor
+{
+ /**
+ * @param array $record
+ * @return array
+ */
+ public function __invoke(array $record)
+ {
+ $bytes = memory_get_peak_usage($this->realUsage);
+ $formatted = $this->formatBytes($bytes);
+
+ $record['extra']['memory_peak_usage'] = $formatted;
+
+ return $record;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php
new file mode 100644
index 0000000..193189e
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MemoryProcessor.php
@@ -0,0 +1,63 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+/**
+ * Some methods that are common for all memory processors
+ *
+ * @author Rob Jensen
+ */
+abstract class MemoryProcessor
+{
+ /**
+ * @var bool If true, get the real size of memory allocated from system. Else, only the memory used by emalloc() is reported.
+ */
+ protected $realUsage;
+
+ /**
+ * @var bool If true, then format memory size to human readable string (MB, KB, B depending on size)
+ */
+ protected $useFormatting;
+
+ /**
+ * @param bool $realUsage Set this to true to get the real size of memory allocated from system.
+ * @param bool $useFormatting If true, then format memory size to human readable string (MB, KB, B depending on size)
+ */
+ public function __construct($realUsage = true, $useFormatting = true)
+ {
+ $this->realUsage = (boolean) $realUsage;
+ $this->useFormatting = (boolean) $useFormatting;
+ }
+
+ /**
+ * Formats bytes into a human readable string if $this->useFormatting is true, otherwise return $bytes as is
+ *
+ * @param int $bytes
+ * @return string|int Formatted string if $this->useFormatting is true, otherwise return $bytes as is
+ */
+ protected function formatBytes($bytes)
+ {
+ $bytes = (int) $bytes;
+
+ if (!$this->useFormatting) {
+ return $bytes;
+ }
+
+ if ($bytes > 1024 * 1024) {
+ return round($bytes / 1024 / 1024, 2).' MB';
+ } elseif ($bytes > 1024) {
+ return round($bytes / 1024, 2).' KB';
+ }
+
+ return $bytes . ' B';
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php
new file mode 100644
index 0000000..2bd7596
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MemoryUsageProcessor.php
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+/**
+ * Injects memory_get_usage in all records
+ *
+ * @see Monolog\Processor\MemoryProcessor::__construct() for options
+ * @author Rob Jensen
+ */
+class MemoryUsageProcessor extends MemoryProcessor
+{
+ /**
+ * @param array $record
+ * @return array
+ */
+ public function __invoke(array $record)
+ {
+ $bytes = memory_get_usage($this->realUsage);
+ $formatted = $this->formatBytes($bytes);
+
+ $record['extra']['memory_usage'] = $formatted;
+
+ return $record;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php
new file mode 100644
index 0000000..6811010
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/MercurialProcessor.php
@@ -0,0 +1,63 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jonathan A. Schweder <jonathanschweder@gmail.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\Logger;
+
+/**
+ * Injects Hg branch and Hg revision number in all records
+ *
+ * @author Jonathan A. Schweder <jonathanschweder@gmail.com>
+ */
+class MercurialProcessor
+{
+ private $level;
+ private static $cache;
+
+ public function __construct($level = Logger::DEBUG)
+ {
+ $this->level = Logger::toMonologLevel($level);
+ }
+
+ /**
+ * @param array $record
+ * @return array
+ */
+ public function __invoke(array $record)
+ {
+ // return if the level is not high enough
+ if ($record['level'] < $this->level) {
+ return $record;
+ }
+
+ $record['extra']['hg'] = self::getMercurialInfo();
+
+ return $record;
+ }
+
+ private static function getMercurialInfo()
+ {
+ if (self::$cache) {
+ return self::$cache;
+ }
+
+ $result = explode(' ', trim(`hg id -nb`));
+ if (count($result) >= 3) {
+ return self::$cache = array(
+ 'branch' => $result[1],
+ 'revision' => $result[2],
+ );
+ }
+
+ return self::$cache = array();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php
new file mode 100644
index 0000000..c773d56
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/ProcessIdProcessor.php
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+/**
+ * Adds value of getmypid into records
+ *
+ * @author Andreas Hörnicke
+ */
+class ProcessIdProcessor
+{
+ /**
+ * @param array $record
+ * @return array
+ */
+ public function __invoke(array $record)
+ {
+ $record['extra']['process_id'] = getmypid();
+
+ return $record;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php
new file mode 100644
index 0000000..c731603
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/PsrLogMessageProcessor.php
@@ -0,0 +1,48 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+/**
+ * Processes a record's message according to PSR-3 rules
+ *
+ * It replaces {foo} with the value from $context['foo']
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class PsrLogMessageProcessor
+{
+ /**
+ * @param array $record
+ * @return array
+ */
+ public function __invoke(array $record)
+ {
+ if (false === strpos($record['message'], '{')) {
+ return $record;
+ }
+
+ $replacements = array();
+ foreach ($record['context'] as $key => $val) {
+ if (is_null($val) || is_scalar($val) || (is_object($val) && method_exists($val, "__toString"))) {
+ $replacements['{'.$key.'}'] = $val;
+ } elseif (is_object($val)) {
+ $replacements['{'.$key.'}'] = '[object '.get_class($val).']';
+ } else {
+ $replacements['{'.$key.'}'] = '['.gettype($val).']';
+ }
+ }
+
+ $record['message'] = strtr($record['message'], $replacements);
+
+ return $record;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php
new file mode 100644
index 0000000..82d7b32
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/TagProcessor.php
@@ -0,0 +1,44 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+/**
+ * Adds a tags array into record
+ *
+ * @author Martijn Riemers
+ */
+class TagProcessor
+{
+ private $tags;
+
+ public function __construct(array $tags = array())
+ {
+ $this->setTags($tags);
+ }
+
+ public function addTags(array $tags = array())
+ {
+ $this->tags = array_merge($this->tags, $tags);
+ }
+
+ public function setTags(array $tags = array())
+ {
+ $this->tags = $tags;
+ }
+
+ public function __invoke(array $record)
+ {
+ $record['extra']['tags'] = $this->tags;
+
+ return $record;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php
new file mode 100644
index 0000000..ee07887
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/UidProcessor.php
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+/**
+ * Adds a unique identifier into records
+ *
+ * @author Simon Mönch <sm@webfactory.de>
+ */
+class UidProcessor
+{
+ private $uid;
+
+ public function __construct($length = 7)
+ {
+ if (!is_int($length) || $length > 32 || $length < 1) {
+ throw new \InvalidArgumentException('The uid length must be an integer between 1 and 32');
+ }
+
+ $this->uid = substr(hash('md5', uniqid('', true)), 0, $length);
+ }
+
+ public function __invoke(array $record)
+ {
+ $record['extra']['uid'] = $this->uid;
+
+ return $record;
+ }
+
+ /**
+ * @return string
+ */
+ public function getUid()
+ {
+ return $this->uid;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php
new file mode 100644
index 0000000..e352f34
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Processor/WebProcessor.php
@@ -0,0 +1,113 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+/**
+ * Injects url/method and remote IP of the current web request in all records
+ *
+ * @author Jordi Boggiano <j.boggiano@seld.be>
+ */
+class WebProcessor
+{
+ /**
+ * @var array|\ArrayAccess
+ */
+ protected $serverData;
+
+ /**
+ * Default fields
+ *
+ * Array is structured as [key in record.extra => key in $serverData]
+ *
+ * @var array
+ */
+ protected $extraFields = array(
+ 'url' => 'REQUEST_URI',
+ 'ip' => 'REMOTE_ADDR',
+ 'http_method' => 'REQUEST_METHOD',
+ 'server' => 'SERVER_NAME',
+ 'referrer' => 'HTTP_REFERER',
+ );
+
+ /**
+ * @param array|\ArrayAccess $serverData Array or object w/ ArrayAccess that provides access to the $_SERVER data
+ * @param array|null $extraFields Field names and the related key inside $serverData to be added. If not provided it defaults to: url, ip, http_method, server, referrer
+ */
+ public function __construct($serverData = null, array $extraFields = null)
+ {
+ if (null === $serverData) {
+ $this->serverData = &$_SERVER;
+ } elseif (is_array($serverData) || $serverData instanceof \ArrayAccess) {
+ $this->serverData = $serverData;
+ } else {
+ throw new \UnexpectedValueException('$serverData must be an array or object implementing ArrayAccess.');
+ }
+
+ if (null !== $extraFields) {
+ if (isset($extraFields[0])) {
+ foreach (array_keys($this->extraFields) as $fieldName) {
+ if (!in_array($fieldName, $extraFields)) {
+ unset($this->extraFields[$fieldName]);
+ }
+ }
+ } else {
+ $this->extraFields = $extraFields;
+ }
+ }
+ }
+
+ /**
+ * @param array $record
+ * @return array
+ */
+ public function __invoke(array $record)
+ {
+ // skip processing if for some reason request data
+ // is not present (CLI or wonky SAPIs)
+ if (!isset($this->serverData['REQUEST_URI'])) {
+ return $record;
+ }
+
+ $record['extra'] = $this->appendExtraFields($record['extra']);
+
+ return $record;
+ }
+
+ /**
+ * @param string $extraName
+ * @param string $serverName
+ * @return $this
+ */
+ public function addExtraField($extraName, $serverName)
+ {
+ $this->extraFields[$extraName] = $serverName;
+
+ return $this;
+ }
+
+ /**
+ * @param array $extra
+ * @return array
+ */
+ private function appendExtraFields(array $extra)
+ {
+ foreach ($this->extraFields as $extraName => $serverName) {
+ $extra[$extraName] = isset($this->serverData[$serverName]) ? $this->serverData[$serverName] : null;
+ }
+
+ if (isset($this->serverData['UNIQUE_ID'])) {
+ $extra['unique_id'] = $this->serverData['UNIQUE_ID'];
+ }
+
+ return $extra;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Registry.php b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Registry.php
new file mode 100644
index 0000000..27acd44
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/src/Monolog/Registry.php
@@ -0,0 +1,134 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog;
+
+use InvalidArgumentException;
+
+/**
+ * Monolog log registry
+ *
+ * Allows to get `Logger` instances in the global scope
+ * via static method calls on this class.
+ *
+ * <code>
+ * $application = new Monolog\Logger('application');
+ * $api = new Monolog\Logger('api');
+ *
+ * Monolog\Registry::addLogger($application);
+ * Monolog\Registry::addLogger($api);
+ *
+ * function testLogger()
+ * {
+ * Monolog\Registry::api()->addError('Sent to $api Logger instance');
+ * Monolog\Registry::application()->addError('Sent to $application Logger instance');
+ * }
+ * </code>
+ *
+ * @author Tomas Tatarko <tomas@tatarko.sk>
+ */
+class Registry
+{
+ /**
+ * List of all loggers in the registry (by named indexes)
+ *
+ * @var Logger[]
+ */
+ private static $loggers = array();
+
+ /**
+ * Adds new logging channel to the registry
+ *
+ * @param Logger $logger Instance of the logging channel
+ * @param string|null $name Name of the logging channel ($logger->getName() by default)
+ * @param bool $overwrite Overwrite instance in the registry if the given name already exists?
+ * @throws \InvalidArgumentException If $overwrite set to false and named Logger instance already exists
+ */
+ public static function addLogger(Logger $logger, $name = null, $overwrite = false)
+ {
+ $name = $name ?: $logger->getName();
+
+ if (isset(self::$loggers[$name]) && !$overwrite) {
+ throw new InvalidArgumentException('Logger with the given name already exists');
+ }
+
+ self::$loggers[$name] = $logger;
+ }
+
+ /**
+ * Checks if such logging channel exists by name or instance
+ *
+ * @param string|Logger $logger Name or logger instance
+ */
+ public static function hasLogger($logger)
+ {
+ if ($logger instanceof Logger) {
+ $index = array_search($logger, self::$loggers, true);
+
+ return false !== $index;
+ } else {
+ return isset(self::$loggers[$logger]);
+ }
+ }
+
+ /**
+ * Removes instance from registry by name or instance
+ *
+ * @param string|Logger $logger Name or logger instance
+ */
+ public static function removeLogger($logger)
+ {
+ if ($logger instanceof Logger) {
+ if (false !== ($idx = array_search($logger, self::$loggers, true))) {
+ unset(self::$loggers[$idx]);
+ }
+ } else {
+ unset(self::$loggers[$logger]);
+ }
+ }
+
+ /**
+ * Clears the registry
+ */
+ public static function clear()
+ {
+ self::$loggers = array();
+ }
+
+ /**
+ * Gets Logger instance from the registry
+ *
+ * @param string $name Name of the requested Logger instance
+ * @throws \InvalidArgumentException If named Logger instance is not in the registry
+ * @return Logger Requested instance of Logger
+ */
+ public static function getInstance($name)
+ {
+ if (!isset(self::$loggers[$name])) {
+ throw new InvalidArgumentException(sprintf('Requested "%s" logger instance is not in the registry', $name));
+ }
+
+ return self::$loggers[$name];
+ }
+
+ /**
+ * Gets Logger instance from the registry via static method call
+ *
+ * @param string $name Name of the requested Logger instance
+ * @param array $arguments Arguments passed to static method call
+ * @throws \InvalidArgumentException If named Logger instance is not in the registry
+ * @return Logger Requested instance of Logger
+ */
+ public static function __callStatic($name, $arguments)
+ {
+ return self::getInstance($name);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/ErrorHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/ErrorHandlerTest.php
new file mode 100644
index 0000000..c2f7fc9
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/ErrorHandlerTest.php
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog;
+
+use Monolog\Handler\TestHandler;
+
+class ErrorHandlerTest extends \PHPUnit_Framework_TestCase
+{
+ public function testHandleError()
+ {
+ $logger = new Logger('test', array($handler = new TestHandler));
+ $errHandler = new ErrorHandler($logger);
+
+ $errHandler->registerErrorHandler(array(E_USER_NOTICE => Logger::EMERGENCY), false);
+ trigger_error('Foo', E_USER_ERROR);
+ $this->assertCount(1, $handler->getRecords());
+ $this->assertTrue($handler->hasErrorRecords());
+ trigger_error('Foo', E_USER_NOTICE);
+ $this->assertCount(2, $handler->getRecords());
+ $this->assertTrue($handler->hasEmergencyRecords());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/ChromePHPFormatterTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/ChromePHPFormatterTest.php
new file mode 100644
index 0000000..ca2cb06
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/ChromePHPFormatterTest.php
@@ -0,0 +1,158 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\Logger;
+
+class ChromePHPFormatterTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @covers Monolog\Formatter\ChromePHPFormatter::format
+ */
+ public function testDefaultFormat()
+ {
+ $formatter = new ChromePHPFormatter();
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('ip' => '127.0.0.1'),
+ 'message' => 'log',
+ );
+
+ $message = $formatter->format($record);
+
+ $this->assertEquals(
+ array(
+ 'meh',
+ array(
+ 'message' => 'log',
+ 'context' => array('from' => 'logger'),
+ 'extra' => array('ip' => '127.0.0.1'),
+ ),
+ 'unknown',
+ 'error',
+ ),
+ $message
+ );
+ }
+
+ /**
+ * @covers Monolog\Formatter\ChromePHPFormatter::format
+ */
+ public function testFormatWithFileAndLine()
+ {
+ $formatter = new ChromePHPFormatter();
+ $record = array(
+ 'level' => Logger::CRITICAL,
+ 'level_name' => 'CRITICAL',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('ip' => '127.0.0.1', 'file' => 'test', 'line' => 14),
+ 'message' => 'log',
+ );
+
+ $message = $formatter->format($record);
+
+ $this->assertEquals(
+ array(
+ 'meh',
+ array(
+ 'message' => 'log',
+ 'context' => array('from' => 'logger'),
+ 'extra' => array('ip' => '127.0.0.1'),
+ ),
+ 'test : 14',
+ 'error',
+ ),
+ $message
+ );
+ }
+
+ /**
+ * @covers Monolog\Formatter\ChromePHPFormatter::format
+ */
+ public function testFormatWithoutContext()
+ {
+ $formatter = new ChromePHPFormatter();
+ $record = array(
+ 'level' => Logger::DEBUG,
+ 'level_name' => 'DEBUG',
+ 'channel' => 'meh',
+ 'context' => array(),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(),
+ 'message' => 'log',
+ );
+
+ $message = $formatter->format($record);
+
+ $this->assertEquals(
+ array(
+ 'meh',
+ 'log',
+ 'unknown',
+ 'log',
+ ),
+ $message
+ );
+ }
+
+ /**
+ * @covers Monolog\Formatter\ChromePHPFormatter::formatBatch
+ */
+ public function testBatchFormatThrowException()
+ {
+ $formatter = new ChromePHPFormatter();
+ $records = array(
+ array(
+ 'level' => Logger::INFO,
+ 'level_name' => 'INFO',
+ 'channel' => 'meh',
+ 'context' => array(),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(),
+ 'message' => 'log',
+ ),
+ array(
+ 'level' => Logger::WARNING,
+ 'level_name' => 'WARNING',
+ 'channel' => 'foo',
+ 'context' => array(),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(),
+ 'message' => 'log2',
+ ),
+ );
+
+ $this->assertEquals(
+ array(
+ array(
+ 'meh',
+ 'log',
+ 'unknown',
+ 'info',
+ ),
+ array(
+ 'foo',
+ 'log2',
+ 'unknown',
+ 'warn',
+ ),
+ ),
+ $formatter->formatBatch($records)
+ );
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/ElasticaFormatterTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/ElasticaFormatterTest.php
new file mode 100644
index 0000000..be963e8
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/ElasticaFormatterTest.php
@@ -0,0 +1,79 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\Logger;
+
+class ElasticaFormatterTest extends \PHPUnit_Framework_TestCase
+{
+ public function setUp()
+ {
+ if (!class_exists("Elastica\Document")) {
+ $this->markTestSkipped("ruflin/elastica not installed");
+ }
+ }
+
+ /**
+ * @covers Monolog\Formatter\ElasticaFormatter::__construct
+ * @covers Monolog\Formatter\ElasticaFormatter::format
+ * @covers Monolog\Formatter\ElasticaFormatter::getDocument
+ */
+ public function testFormat()
+ {
+ // test log message
+ $msg = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('foo' => 7, 'bar', 'class' => new \stdClass),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(),
+ 'message' => 'log',
+ );
+
+ // expected values
+ $expected = $msg;
+ $expected['datetime'] = '1970-01-01T00:00:00.000000+00:00';
+ $expected['context'] = array(
+ 'class' => '[object] (stdClass: {})',
+ 'foo' => 7,
+ 0 => 'bar',
+ );
+
+ // format log message
+ $formatter = new ElasticaFormatter('my_index', 'doc_type');
+ $doc = $formatter->format($msg);
+ $this->assertInstanceOf('Elastica\Document', $doc);
+
+ // Document parameters
+ $params = $doc->getParams();
+ $this->assertEquals('my_index', $params['_index']);
+ $this->assertEquals('doc_type', $params['_type']);
+
+ // Document data values
+ $data = $doc->getData();
+ foreach (array_keys($expected) as $key) {
+ $this->assertEquals($expected[$key], $data[$key]);
+ }
+ }
+
+ /**
+ * @covers Monolog\Formatter\ElasticaFormatter::getIndex
+ * @covers Monolog\Formatter\ElasticaFormatter::getType
+ */
+ public function testGetters()
+ {
+ $formatter = new ElasticaFormatter('my_index', 'doc_type');
+ $this->assertEquals('my_index', $formatter->getIndex());
+ $this->assertEquals('doc_type', $formatter->getType());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/FlowdockFormatterTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/FlowdockFormatterTest.php
new file mode 100644
index 0000000..e2cf0bf
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/FlowdockFormatterTest.php
@@ -0,0 +1,55 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\Logger;
+use Monolog\TestCase;
+
+class FlowdockFormatterTest extends TestCase
+{
+ /**
+ * @covers Monolog\Formatter\FlowdockFormatter::format
+ */
+ public function testFormat()
+ {
+ $formatter = new FlowdockFormatter('test_source', 'source@test.com');
+ $record = $this->getRecord();
+
+ $expected = array(
+ 'source' => 'test_source',
+ 'from_address' => 'source@test.com',
+ 'subject' => 'in test_source: WARNING - test',
+ 'content' => 'test',
+ 'tags' => array('#logs', '#warning', '#test'),
+ 'project' => 'test_source',
+ );
+ $formatted = $formatter->format($record);
+
+ $this->assertEquals($expected, $formatted['flowdock']);
+ }
+
+ /**
+ * @ covers Monolog\Formatter\FlowdockFormatter::formatBatch
+ */
+ public function testFormatBatch()
+ {
+ $formatter = new FlowdockFormatter('test_source', 'source@test.com');
+ $records = array(
+ $this->getRecord(Logger::WARNING),
+ $this->getRecord(Logger::DEBUG),
+ );
+ $formatted = $formatter->formatBatch($records);
+
+ $this->assertArrayHasKey('flowdock', $formatted[0]);
+ $this->assertArrayHasKey('flowdock', $formatted[1]);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/FluentdFormatterTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/FluentdFormatterTest.php
new file mode 100644
index 0000000..4e0c012
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/FluentdFormatterTest.php
@@ -0,0 +1,62 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\Logger;
+use Monolog\TestCase;
+
+class FluentdFormatterTest extends TestCase
+{
+ /**
+ * @covers Monolog\Formatter\FluentdFormatter::__construct
+ * @covers Monolog\Formatter\FluentdFormatter::isUsingLevelsInTag
+ */
+ public function testConstruct()
+ {
+ $formatter = new FluentdFormatter();
+ $this->assertEquals(false, $formatter->isUsingLevelsInTag());
+ $formatter = new FluentdFormatter(false);
+ $this->assertEquals(false, $formatter->isUsingLevelsInTag());
+ $formatter = new FluentdFormatter(true);
+ $this->assertEquals(true, $formatter->isUsingLevelsInTag());
+ }
+
+ /**
+ * @covers Monolog\Formatter\FluentdFormatter::format
+ */
+ public function testFormat()
+ {
+ $record = $this->getRecord(Logger::WARNING);
+ $record['datetime'] = new \DateTime("@0");
+
+ $formatter = new FluentdFormatter();
+ $this->assertEquals(
+ '["test",0,{"message":"test","extra":[],"level":300,"level_name":"WARNING"}]',
+ $formatter->format($record)
+ );
+ }
+
+ /**
+ * @covers Monolog\Formatter\FluentdFormatter::format
+ */
+ public function testFormatWithTag()
+ {
+ $record = $this->getRecord(Logger::ERROR);
+ $record['datetime'] = new \DateTime("@0");
+
+ $formatter = new FluentdFormatter(true);
+ $this->assertEquals(
+ '["test.error",0,{"message":"test","extra":[]}]',
+ $formatter->format($record)
+ );
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/GelfMessageFormatterTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/GelfMessageFormatterTest.php
new file mode 100644
index 0000000..6b3645f
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/GelfMessageFormatterTest.php
@@ -0,0 +1,258 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\Logger;
+
+class GelfMessageFormatterTest extends \PHPUnit_Framework_TestCase
+{
+ public function setUp()
+ {
+ if (!class_exists('\Gelf\Message')) {
+ $this->markTestSkipped("graylog2/gelf-php or mlehner/gelf-php is not installed");
+ }
+ }
+
+ /**
+ * @covers Monolog\Formatter\GelfMessageFormatter::format
+ */
+ public function testDefaultFormatter()
+ {
+ $formatter = new GelfMessageFormatter();
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array(),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(),
+ 'message' => 'log',
+ );
+
+ $message = $formatter->format($record);
+
+ $this->assertInstanceOf('Gelf\Message', $message);
+ $this->assertEquals(0, $message->getTimestamp());
+ $this->assertEquals('log', $message->getShortMessage());
+ $this->assertEquals('meh', $message->getFacility());
+ $this->assertEquals(null, $message->getLine());
+ $this->assertEquals(null, $message->getFile());
+ $this->assertEquals($this->isLegacy() ? 3 : 'error', $message->getLevel());
+ $this->assertNotEmpty($message->getHost());
+
+ $formatter = new GelfMessageFormatter('mysystem');
+
+ $message = $formatter->format($record);
+
+ $this->assertInstanceOf('Gelf\Message', $message);
+ $this->assertEquals('mysystem', $message->getHost());
+ }
+
+ /**
+ * @covers Monolog\Formatter\GelfMessageFormatter::format
+ */
+ public function testFormatWithFileAndLine()
+ {
+ $formatter = new GelfMessageFormatter();
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('file' => 'test', 'line' => 14),
+ 'message' => 'log',
+ );
+
+ $message = $formatter->format($record);
+
+ $this->assertInstanceOf('Gelf\Message', $message);
+ $this->assertEquals('test', $message->getFile());
+ $this->assertEquals(14, $message->getLine());
+ }
+
+ /**
+ * @covers Monolog\Formatter\GelfMessageFormatter::format
+ * @expectedException InvalidArgumentException
+ */
+ public function testFormatInvalidFails()
+ {
+ $formatter = new GelfMessageFormatter();
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ );
+
+ $formatter->format($record);
+ }
+
+ /**
+ * @covers Monolog\Formatter\GelfMessageFormatter::format
+ */
+ public function testFormatWithContext()
+ {
+ $formatter = new GelfMessageFormatter();
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('key' => 'pair'),
+ 'message' => 'log',
+ );
+
+ $message = $formatter->format($record);
+
+ $this->assertInstanceOf('Gelf\Message', $message);
+
+ $message_array = $message->toArray();
+
+ $this->assertArrayHasKey('_ctxt_from', $message_array);
+ $this->assertEquals('logger', $message_array['_ctxt_from']);
+
+ // Test with extraPrefix
+ $formatter = new GelfMessageFormatter(null, null, 'CTX');
+ $message = $formatter->format($record);
+
+ $this->assertInstanceOf('Gelf\Message', $message);
+
+ $message_array = $message->toArray();
+
+ $this->assertArrayHasKey('_CTXfrom', $message_array);
+ $this->assertEquals('logger', $message_array['_CTXfrom']);
+ }
+
+ /**
+ * @covers Monolog\Formatter\GelfMessageFormatter::format
+ */
+ public function testFormatWithContextContainingException()
+ {
+ $formatter = new GelfMessageFormatter();
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger', 'exception' => array(
+ 'class' => '\Exception',
+ 'file' => '/some/file/in/dir.php:56',
+ 'trace' => array('/some/file/1.php:23', '/some/file/2.php:3'),
+ )),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(),
+ 'message' => 'log',
+ );
+
+ $message = $formatter->format($record);
+
+ $this->assertInstanceOf('Gelf\Message', $message);
+
+ $this->assertEquals("/some/file/in/dir.php", $message->getFile());
+ $this->assertEquals("56", $message->getLine());
+ }
+
+ /**
+ * @covers Monolog\Formatter\GelfMessageFormatter::format
+ */
+ public function testFormatWithExtra()
+ {
+ $formatter = new GelfMessageFormatter();
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('key' => 'pair'),
+ 'message' => 'log',
+ );
+
+ $message = $formatter->format($record);
+
+ $this->assertInstanceOf('Gelf\Message', $message);
+
+ $message_array = $message->toArray();
+
+ $this->assertArrayHasKey('_key', $message_array);
+ $this->assertEquals('pair', $message_array['_key']);
+
+ // Test with extraPrefix
+ $formatter = new GelfMessageFormatter(null, 'EXT');
+ $message = $formatter->format($record);
+
+ $this->assertInstanceOf('Gelf\Message', $message);
+
+ $message_array = $message->toArray();
+
+ $this->assertArrayHasKey('_EXTkey', $message_array);
+ $this->assertEquals('pair', $message_array['_EXTkey']);
+ }
+
+ public function testFormatWithLargeData()
+ {
+ $formatter = new GelfMessageFormatter();
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('exception' => str_repeat(' ', 32767)),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('key' => str_repeat(' ', 32767)),
+ 'message' => 'log'
+ );
+ $message = $formatter->format($record);
+ $messageArray = $message->toArray();
+
+ // 200 for padding + metadata
+ $length = 200;
+
+ foreach ($messageArray as $key => $value) {
+ if (!in_array($key, array('level', 'timestamp'))) {
+ $length += strlen($value);
+ }
+ }
+
+ $this->assertLessThanOrEqual(65792, $length, 'The message length is no longer than the maximum allowed length');
+ }
+
+ public function testFormatWithUnlimitedLength()
+ {
+ $formatter = new GelfMessageFormatter('LONG_SYSTEM_NAME', null, 'ctxt_', PHP_INT_MAX);
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('exception' => str_repeat(' ', 32767 * 2)),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('key' => str_repeat(' ', 32767 * 2)),
+ 'message' => 'log'
+ );
+ $message = $formatter->format($record);
+ $messageArray = $message->toArray();
+
+ // 200 for padding + metadata
+ $length = 200;
+
+ foreach ($messageArray as $key => $value) {
+ if (!in_array($key, array('level', 'timestamp'))) {
+ $length += strlen($value);
+ }
+ }
+
+ $this->assertGreaterThanOrEqual(131289, $length, 'The message should not be truncated');
+ }
+
+ private function isLegacy()
+ {
+ return interface_exists('\Gelf\IMessagePublisher');
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/JsonFormatterTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/JsonFormatterTest.php
new file mode 100644
index 0000000..6676f67
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/JsonFormatterTest.php
@@ -0,0 +1,183 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\Logger;
+use Monolog\TestCase;
+
+class JsonFormatterTest extends TestCase
+{
+ /**
+ * @covers Monolog\Formatter\JsonFormatter::__construct
+ * @covers Monolog\Formatter\JsonFormatter::getBatchMode
+ * @covers Monolog\Formatter\JsonFormatter::isAppendingNewlines
+ */
+ public function testConstruct()
+ {
+ $formatter = new JsonFormatter();
+ $this->assertEquals(JsonFormatter::BATCH_MODE_JSON, $formatter->getBatchMode());
+ $this->assertEquals(true, $formatter->isAppendingNewlines());
+ $formatter = new JsonFormatter(JsonFormatter::BATCH_MODE_NEWLINES, false);
+ $this->assertEquals(JsonFormatter::BATCH_MODE_NEWLINES, $formatter->getBatchMode());
+ $this->assertEquals(false, $formatter->isAppendingNewlines());
+ }
+
+ /**
+ * @covers Monolog\Formatter\JsonFormatter::format
+ */
+ public function testFormat()
+ {
+ $formatter = new JsonFormatter();
+ $record = $this->getRecord();
+ $this->assertEquals(json_encode($record)."\n", $formatter->format($record));
+
+ $formatter = new JsonFormatter(JsonFormatter::BATCH_MODE_JSON, false);
+ $record = $this->getRecord();
+ $this->assertEquals(json_encode($record), $formatter->format($record));
+ }
+
+ /**
+ * @covers Monolog\Formatter\JsonFormatter::formatBatch
+ * @covers Monolog\Formatter\JsonFormatter::formatBatchJson
+ */
+ public function testFormatBatch()
+ {
+ $formatter = new JsonFormatter();
+ $records = array(
+ $this->getRecord(Logger::WARNING),
+ $this->getRecord(Logger::DEBUG),
+ );
+ $this->assertEquals(json_encode($records), $formatter->formatBatch($records));
+ }
+
+ /**
+ * @covers Monolog\Formatter\JsonFormatter::formatBatch
+ * @covers Monolog\Formatter\JsonFormatter::formatBatchNewlines
+ */
+ public function testFormatBatchNewlines()
+ {
+ $formatter = new JsonFormatter(JsonFormatter::BATCH_MODE_NEWLINES);
+ $records = $expected = array(
+ $this->getRecord(Logger::WARNING),
+ $this->getRecord(Logger::DEBUG),
+ );
+ array_walk($expected, function (&$value, $key) {
+ $value = json_encode($value);
+ });
+ $this->assertEquals(implode("\n", $expected), $formatter->formatBatch($records));
+ }
+
+ public function testDefFormatWithException()
+ {
+ $formatter = new JsonFormatter();
+ $exception = new \RuntimeException('Foo');
+ $formattedException = $this->formatException($exception);
+
+ $message = $this->formatRecordWithExceptionInContext($formatter, $exception);
+
+ $this->assertContextContainsFormattedException($formattedException, $message);
+ }
+
+ public function testDefFormatWithPreviousException()
+ {
+ $formatter = new JsonFormatter();
+ $exception = new \RuntimeException('Foo', 0, new \LogicException('Wut?'));
+ $formattedPrevException = $this->formatException($exception->getPrevious());
+ $formattedException = $this->formatException($exception, $formattedPrevException);
+
+ $message = $this->formatRecordWithExceptionInContext($formatter, $exception);
+
+ $this->assertContextContainsFormattedException($formattedException, $message);
+ }
+
+ public function testDefFormatWithThrowable()
+ {
+ if (!class_exists('Error') || !is_subclass_of('Error', 'Throwable')) {
+ $this->markTestSkipped('Requires PHP >=7');
+ }
+
+ $formatter = new JsonFormatter();
+ $throwable = new \Error('Foo');
+ $formattedThrowable = $this->formatException($throwable);
+
+ $message = $this->formatRecordWithExceptionInContext($formatter, $throwable);
+
+ $this->assertContextContainsFormattedException($formattedThrowable, $message);
+ }
+
+ /**
+ * @param string $expected
+ * @param string $actual
+ *
+ * @internal param string $exception
+ */
+ private function assertContextContainsFormattedException($expected, $actual)
+ {
+ $this->assertEquals(
+ '{"level_name":"CRITICAL","channel":"core","context":{"exception":'.$expected.'},"datetime":null,"extra":[],"message":"foobar"}'."\n",
+ $actual
+ );
+ }
+
+ /**
+ * @param JsonFormatter $formatter
+ * @param \Exception|\Throwable $exception
+ *
+ * @return string
+ */
+ private function formatRecordWithExceptionInContext(JsonFormatter $formatter, $exception)
+ {
+ $message = $formatter->format(array(
+ 'level_name' => 'CRITICAL',
+ 'channel' => 'core',
+ 'context' => array('exception' => $exception),
+ 'datetime' => null,
+ 'extra' => array(),
+ 'message' => 'foobar',
+ ));
+ return $message;
+ }
+
+ /**
+ * @param \Exception|\Throwable $exception
+ *
+ * @return string
+ */
+ private function formatExceptionFilePathWithLine($exception)
+ {
+ $options = 0;
+ if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
+ $options = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE;
+ }
+ $path = substr(json_encode($exception->getFile(), $options), 1, -1);
+ return $path . ':' . $exception->getLine();
+ }
+
+ /**
+ * @param \Exception|\Throwable $exception
+ *
+ * @param null|string $previous
+ *
+ * @return string
+ */
+ private function formatException($exception, $previous = null)
+ {
+ $formattedException =
+ '{"class":"' . get_class($exception) .
+ '","message":"' . $exception->getMessage() .
+ '","code":' . $exception->getCode() .
+ ',"file":"' . $this->formatExceptionFilePathWithLine($exception) .
+ ($previous ? '","previous":' . $previous : '"') .
+ '}';
+ return $formattedException;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/LineFormatterTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/LineFormatterTest.php
new file mode 100644
index 0000000..7d4efb7
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/LineFormatterTest.php
@@ -0,0 +1,222 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+/**
+ * @covers Monolog\Formatter\LineFormatter
+ */
+class LineFormatterTest extends \PHPUnit_Framework_TestCase
+{
+ public function testDefFormatWithString()
+ {
+ $formatter = new LineFormatter(null, 'Y-m-d');
+ $message = $formatter->format(array(
+ 'level_name' => 'WARNING',
+ 'channel' => 'log',
+ 'context' => array(),
+ 'message' => 'foo',
+ 'datetime' => new \DateTime,
+ 'extra' => array(),
+ ));
+ $this->assertEquals('['.date('Y-m-d').'] log.WARNING: foo [] []'."\n", $message);
+ }
+
+ public function testDefFormatWithArrayContext()
+ {
+ $formatter = new LineFormatter(null, 'Y-m-d');
+ $message = $formatter->format(array(
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'message' => 'foo',
+ 'datetime' => new \DateTime,
+ 'extra' => array(),
+ 'context' => array(
+ 'foo' => 'bar',
+ 'baz' => 'qux',
+ 'bool' => false,
+ 'null' => null,
+ ),
+ ));
+ $this->assertEquals('['.date('Y-m-d').'] meh.ERROR: foo {"foo":"bar","baz":"qux","bool":false,"null":null} []'."\n", $message);
+ }
+
+ public function testDefFormatExtras()
+ {
+ $formatter = new LineFormatter(null, 'Y-m-d');
+ $message = $formatter->format(array(
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array(),
+ 'datetime' => new \DateTime,
+ 'extra' => array('ip' => '127.0.0.1'),
+ 'message' => 'log',
+ ));
+ $this->assertEquals('['.date('Y-m-d').'] meh.ERROR: log [] {"ip":"127.0.0.1"}'."\n", $message);
+ }
+
+ public function testFormatExtras()
+ {
+ $formatter = new LineFormatter("[%datetime%] %channel%.%level_name%: %message% %context% %extra.file% %extra%\n", 'Y-m-d');
+ $message = $formatter->format(array(
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array(),
+ 'datetime' => new \DateTime,
+ 'extra' => array('ip' => '127.0.0.1', 'file' => 'test'),
+ 'message' => 'log',
+ ));
+ $this->assertEquals('['.date('Y-m-d').'] meh.ERROR: log [] test {"ip":"127.0.0.1"}'."\n", $message);
+ }
+
+ public function testContextAndExtraOptionallyNotShownIfEmpty()
+ {
+ $formatter = new LineFormatter(null, 'Y-m-d', false, true);
+ $message = $formatter->format(array(
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array(),
+ 'datetime' => new \DateTime,
+ 'extra' => array(),
+ 'message' => 'log',
+ ));
+ $this->assertEquals('['.date('Y-m-d').'] meh.ERROR: log '."\n", $message);
+ }
+
+ public function testContextAndExtraReplacement()
+ {
+ $formatter = new LineFormatter('%context.foo% => %extra.foo%');
+ $message = $formatter->format(array(
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('foo' => 'bar'),
+ 'datetime' => new \DateTime,
+ 'extra' => array('foo' => 'xbar'),
+ 'message' => 'log',
+ ));
+ $this->assertEquals('bar => xbar', $message);
+ }
+
+ public function testDefFormatWithObject()
+ {
+ $formatter = new LineFormatter(null, 'Y-m-d');
+ $message = $formatter->format(array(
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array(),
+ 'datetime' => new \DateTime,
+ 'extra' => array('foo' => new TestFoo, 'bar' => new TestBar, 'baz' => array(), 'res' => fopen('php://memory', 'rb')),
+ 'message' => 'foobar',
+ ));
+
+ $this->assertEquals('['.date('Y-m-d').'] meh.ERROR: foobar [] {"foo":"[object] (Monolog\\\\Formatter\\\\TestFoo: {\\"foo\\":\\"foo\\"})","bar":"[object] (Monolog\\\\Formatter\\\\TestBar: bar)","baz":[],"res":"[resource] (stream)"}'."\n", $message);
+ }
+
+ public function testDefFormatWithException()
+ {
+ $formatter = new LineFormatter(null, 'Y-m-d');
+ $message = $formatter->format(array(
+ 'level_name' => 'CRITICAL',
+ 'channel' => 'core',
+ 'context' => array('exception' => new \RuntimeException('Foo')),
+ 'datetime' => new \DateTime,
+ 'extra' => array(),
+ 'message' => 'foobar',
+ ));
+
+ $path = str_replace('\\/', '/', json_encode(__FILE__));
+
+ $this->assertEquals('['.date('Y-m-d').'] core.CRITICAL: foobar {"exception":"[object] (RuntimeException(code: 0): Foo at '.substr($path, 1, -1).':'.(__LINE__ - 8).')"} []'."\n", $message);
+ }
+
+ public function testDefFormatWithPreviousException()
+ {
+ $formatter = new LineFormatter(null, 'Y-m-d');
+ $previous = new \LogicException('Wut?');
+ $message = $formatter->format(array(
+ 'level_name' => 'CRITICAL',
+ 'channel' => 'core',
+ 'context' => array('exception' => new \RuntimeException('Foo', 0, $previous)),
+ 'datetime' => new \DateTime,
+ 'extra' => array(),
+ 'message' => 'foobar',
+ ));
+
+ $path = str_replace('\\/', '/', json_encode(__FILE__));
+
+ $this->assertEquals('['.date('Y-m-d').'] core.CRITICAL: foobar {"exception":"[object] (RuntimeException(code: 0): Foo at '.substr($path, 1, -1).':'.(__LINE__ - 8).', LogicException(code: 0): Wut? at '.substr($path, 1, -1).':'.(__LINE__ - 12).')"} []'."\n", $message);
+ }
+
+ public function testBatchFormat()
+ {
+ $formatter = new LineFormatter(null, 'Y-m-d');
+ $message = $formatter->formatBatch(array(
+ array(
+ 'level_name' => 'CRITICAL',
+ 'channel' => 'test',
+ 'message' => 'bar',
+ 'context' => array(),
+ 'datetime' => new \DateTime,
+ 'extra' => array(),
+ ),
+ array(
+ 'level_name' => 'WARNING',
+ 'channel' => 'log',
+ 'message' => 'foo',
+ 'context' => array(),
+ 'datetime' => new \DateTime,
+ 'extra' => array(),
+ ),
+ ));
+ $this->assertEquals('['.date('Y-m-d').'] test.CRITICAL: bar [] []'."\n".'['.date('Y-m-d').'] log.WARNING: foo [] []'."\n", $message);
+ }
+
+ public function testFormatShouldStripInlineLineBreaks()
+ {
+ $formatter = new LineFormatter(null, 'Y-m-d');
+ $message = $formatter->format(
+ array(
+ 'message' => "foo\nbar",
+ 'context' => array(),
+ 'extra' => array(),
+ )
+ );
+
+ $this->assertRegExp('/foo bar/', $message);
+ }
+
+ public function testFormatShouldNotStripInlineLineBreaksWhenFlagIsSet()
+ {
+ $formatter = new LineFormatter(null, 'Y-m-d', true);
+ $message = $formatter->format(
+ array(
+ 'message' => "foo\nbar",
+ 'context' => array(),
+ 'extra' => array(),
+ )
+ );
+
+ $this->assertRegExp('/foo\nbar/', $message);
+ }
+}
+
+class TestFoo
+{
+ public $foo = 'foo';
+}
+
+class TestBar
+{
+ public function __toString()
+ {
+ return 'bar';
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/LogglyFormatterTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/LogglyFormatterTest.php
new file mode 100644
index 0000000..0107cf2
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/LogglyFormatterTest.php
@@ -0,0 +1,40 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\TestCase;
+
+class LogglyFormatterTest extends TestCase
+{
+ /**
+ * @covers Monolog\Formatter\LogglyFormatter::__construct
+ */
+ public function testConstruct()
+ {
+ $formatter = new LogglyFormatter();
+ $this->assertEquals(LogglyFormatter::BATCH_MODE_NEWLINES, $formatter->getBatchMode());
+ $formatter = new LogglyFormatter(LogglyFormatter::BATCH_MODE_JSON);
+ $this->assertEquals(LogglyFormatter::BATCH_MODE_JSON, $formatter->getBatchMode());
+ }
+
+ /**
+ * @covers Monolog\Formatter\LogglyFormatter::format
+ */
+ public function testFormat()
+ {
+ $formatter = new LogglyFormatter();
+ $record = $this->getRecord();
+ $formatted_decoded = json_decode($formatter->format($record), true);
+ $this->assertArrayHasKey("timestamp", $formatted_decoded);
+ $this->assertEquals(new \DateTime($formatted_decoded["timestamp"]), $record["datetime"]);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/LogstashFormatterTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/LogstashFormatterTest.php
new file mode 100644
index 0000000..909a321
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/LogstashFormatterTest.php
@@ -0,0 +1,333 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\Logger;
+
+class LogstashFormatterTest extends \PHPUnit_Framework_TestCase
+{
+ public function tearDown()
+ {
+ \PHPUnit_Framework_Error_Warning::$enabled = true;
+
+ return parent::tearDown();
+ }
+
+ /**
+ * @covers Monolog\Formatter\LogstashFormatter::format
+ */
+ public function testDefaultFormatter()
+ {
+ $formatter = new LogstashFormatter('test', 'hostname');
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array(),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(),
+ 'message' => 'log',
+ );
+
+ $message = json_decode($formatter->format($record), true);
+
+ $this->assertEquals("1970-01-01T00:00:00.000000+00:00", $message['@timestamp']);
+ $this->assertEquals('log', $message['@message']);
+ $this->assertEquals('meh', $message['@fields']['channel']);
+ $this->assertContains('meh', $message['@tags']);
+ $this->assertEquals(Logger::ERROR, $message['@fields']['level']);
+ $this->assertEquals('test', $message['@type']);
+ $this->assertEquals('hostname', $message['@source']);
+
+ $formatter = new LogstashFormatter('mysystem');
+
+ $message = json_decode($formatter->format($record), true);
+
+ $this->assertEquals('mysystem', $message['@type']);
+ }
+
+ /**
+ * @covers Monolog\Formatter\LogstashFormatter::format
+ */
+ public function testFormatWithFileAndLine()
+ {
+ $formatter = new LogstashFormatter('test');
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('file' => 'test', 'line' => 14),
+ 'message' => 'log',
+ );
+
+ $message = json_decode($formatter->format($record), true);
+
+ $this->assertEquals('test', $message['@fields']['file']);
+ $this->assertEquals(14, $message['@fields']['line']);
+ }
+
+ /**
+ * @covers Monolog\Formatter\LogstashFormatter::format
+ */
+ public function testFormatWithContext()
+ {
+ $formatter = new LogstashFormatter('test');
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('key' => 'pair'),
+ 'message' => 'log',
+ );
+
+ $message = json_decode($formatter->format($record), true);
+
+ $message_array = $message['@fields'];
+
+ $this->assertArrayHasKey('ctxt_from', $message_array);
+ $this->assertEquals('logger', $message_array['ctxt_from']);
+
+ // Test with extraPrefix
+ $formatter = new LogstashFormatter('test', null, null, 'CTX');
+ $message = json_decode($formatter->format($record), true);
+
+ $message_array = $message['@fields'];
+
+ $this->assertArrayHasKey('CTXfrom', $message_array);
+ $this->assertEquals('logger', $message_array['CTXfrom']);
+ }
+
+ /**
+ * @covers Monolog\Formatter\LogstashFormatter::format
+ */
+ public function testFormatWithExtra()
+ {
+ $formatter = new LogstashFormatter('test');
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('key' => 'pair'),
+ 'message' => 'log',
+ );
+
+ $message = json_decode($formatter->format($record), true);
+
+ $message_array = $message['@fields'];
+
+ $this->assertArrayHasKey('key', $message_array);
+ $this->assertEquals('pair', $message_array['key']);
+
+ // Test with extraPrefix
+ $formatter = new LogstashFormatter('test', null, 'EXT');
+ $message = json_decode($formatter->format($record), true);
+
+ $message_array = $message['@fields'];
+
+ $this->assertArrayHasKey('EXTkey', $message_array);
+ $this->assertEquals('pair', $message_array['EXTkey']);
+ }
+
+ public function testFormatWithApplicationName()
+ {
+ $formatter = new LogstashFormatter('app', 'test');
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('key' => 'pair'),
+ 'message' => 'log',
+ );
+
+ $message = json_decode($formatter->format($record), true);
+
+ $this->assertArrayHasKey('@type', $message);
+ $this->assertEquals('app', $message['@type']);
+ }
+
+ /**
+ * @covers Monolog\Formatter\LogstashFormatter::format
+ */
+ public function testDefaultFormatterV1()
+ {
+ $formatter = new LogstashFormatter('test', 'hostname', null, 'ctxt_', LogstashFormatter::V1);
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array(),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(),
+ 'message' => 'log',
+ );
+
+ $message = json_decode($formatter->format($record), true);
+
+ $this->assertEquals("1970-01-01T00:00:00.000000+00:00", $message['@timestamp']);
+ $this->assertEquals("1", $message['@version']);
+ $this->assertEquals('log', $message['message']);
+ $this->assertEquals('meh', $message['channel']);
+ $this->assertEquals('ERROR', $message['level']);
+ $this->assertEquals('test', $message['type']);
+ $this->assertEquals('hostname', $message['host']);
+
+ $formatter = new LogstashFormatter('mysystem', null, null, 'ctxt_', LogstashFormatter::V1);
+
+ $message = json_decode($formatter->format($record), true);
+
+ $this->assertEquals('mysystem', $message['type']);
+ }
+
+ /**
+ * @covers Monolog\Formatter\LogstashFormatter::format
+ */
+ public function testFormatWithFileAndLineV1()
+ {
+ $formatter = new LogstashFormatter('test', null, null, 'ctxt_', LogstashFormatter::V1);
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('file' => 'test', 'line' => 14),
+ 'message' => 'log',
+ );
+
+ $message = json_decode($formatter->format($record), true);
+
+ $this->assertEquals('test', $message['file']);
+ $this->assertEquals(14, $message['line']);
+ }
+
+ /**
+ * @covers Monolog\Formatter\LogstashFormatter::format
+ */
+ public function testFormatWithContextV1()
+ {
+ $formatter = new LogstashFormatter('test', null, null, 'ctxt_', LogstashFormatter::V1);
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('key' => 'pair'),
+ 'message' => 'log',
+ );
+
+ $message = json_decode($formatter->format($record), true);
+
+ $this->assertArrayHasKey('ctxt_from', $message);
+ $this->assertEquals('logger', $message['ctxt_from']);
+
+ // Test with extraPrefix
+ $formatter = new LogstashFormatter('test', null, null, 'CTX', LogstashFormatter::V1);
+ $message = json_decode($formatter->format($record), true);
+
+ $this->assertArrayHasKey('CTXfrom', $message);
+ $this->assertEquals('logger', $message['CTXfrom']);
+ }
+
+ /**
+ * @covers Monolog\Formatter\LogstashFormatter::format
+ */
+ public function testFormatWithExtraV1()
+ {
+ $formatter = new LogstashFormatter('test', null, null, 'ctxt_', LogstashFormatter::V1);
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('key' => 'pair'),
+ 'message' => 'log',
+ );
+
+ $message = json_decode($formatter->format($record), true);
+
+ $this->assertArrayHasKey('key', $message);
+ $this->assertEquals('pair', $message['key']);
+
+ // Test with extraPrefix
+ $formatter = new LogstashFormatter('test', null, 'EXT', 'ctxt_', LogstashFormatter::V1);
+ $message = json_decode($formatter->format($record), true);
+
+ $this->assertArrayHasKey('EXTkey', $message);
+ $this->assertEquals('pair', $message['EXTkey']);
+ }
+
+ public function testFormatWithApplicationNameV1()
+ {
+ $formatter = new LogstashFormatter('app', 'test', null, 'ctxt_', LogstashFormatter::V1);
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('key' => 'pair'),
+ 'message' => 'log',
+ );
+
+ $message = json_decode($formatter->format($record), true);
+
+ $this->assertArrayHasKey('type', $message);
+ $this->assertEquals('app', $message['type']);
+ }
+
+ public function testFormatWithLatin9Data()
+ {
+ if (version_compare(PHP_VERSION, '5.5.0', '<')) {
+ // Ignore the warning that will be emitted by PHP <5.5.0
+ \PHPUnit_Framework_Error_Warning::$enabled = false;
+ }
+ $formatter = new LogstashFormatter('test', 'hostname');
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => '¯\_(ツ)_/¯',
+ 'context' => array(),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(
+ 'user_agent' => "\xD6WN; FBCR/OrangeEspa\xF1a; Vers\xE3o/4.0; F\xE4rist",
+ ),
+ 'message' => 'log',
+ );
+
+ $message = json_decode($formatter->format($record), true);
+
+ $this->assertEquals("1970-01-01T00:00:00.000000+00:00", $message['@timestamp']);
+ $this->assertEquals('log', $message['@message']);
+ $this->assertEquals('¯\_(ツ)_/¯', $message['@fields']['channel']);
+ $this->assertContains('¯\_(ツ)_/¯', $message['@tags']);
+ $this->assertEquals(Logger::ERROR, $message['@fields']['level']);
+ $this->assertEquals('test', $message['@type']);
+ $this->assertEquals('hostname', $message['@source']);
+ if (version_compare(PHP_VERSION, '5.5.0', '>=')) {
+ $this->assertEquals('ÖWN; FBCR/OrangeEspaña; Versão/4.0; Färist', $message['@fields']['user_agent']);
+ } else {
+ // PHP <5.5 does not return false for an element encoding failure,
+ // instead it emits a warning (possibly) and nulls the value.
+ $this->assertEquals(null, $message['@fields']['user_agent']);
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/MongoDBFormatterTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/MongoDBFormatterTest.php
new file mode 100644
index 0000000..f079ba5
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/MongoDBFormatterTest.php
@@ -0,0 +1,262 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\Logger;
+
+/**
+ * @author Florian Plattner <me@florianplattner.de>
+ */
+class MongoDBFormatterTest extends \PHPUnit_Framework_TestCase
+{
+ public function setUp()
+ {
+ if (!class_exists('MongoDate')) {
+ $this->markTestSkipped('mongo extension not installed');
+ }
+ }
+
+ public function constructArgumentProvider()
+ {
+ return array(
+ array(1, true, 1, true),
+ array(0, false, 0, false),
+ );
+ }
+
+ /**
+ * @param $traceDepth
+ * @param $traceAsString
+ * @param $expectedTraceDepth
+ * @param $expectedTraceAsString
+ *
+ * @dataProvider constructArgumentProvider
+ */
+ public function testConstruct($traceDepth, $traceAsString, $expectedTraceDepth, $expectedTraceAsString)
+ {
+ $formatter = new MongoDBFormatter($traceDepth, $traceAsString);
+
+ $reflTrace = new \ReflectionProperty($formatter, 'exceptionTraceAsString');
+ $reflTrace->setAccessible(true);
+ $this->assertEquals($expectedTraceAsString, $reflTrace->getValue($formatter));
+
+ $reflDepth = new\ReflectionProperty($formatter, 'maxNestingLevel');
+ $reflDepth->setAccessible(true);
+ $this->assertEquals($expectedTraceDepth, $reflDepth->getValue($formatter));
+ }
+
+ public function testSimpleFormat()
+ {
+ $record = array(
+ 'message' => 'some log message',
+ 'context' => array(),
+ 'level' => Logger::WARNING,
+ 'level_name' => Logger::getLevelName(Logger::WARNING),
+ 'channel' => 'test',
+ 'datetime' => new \DateTime('2014-02-01 00:00:00'),
+ 'extra' => array(),
+ );
+
+ $formatter = new MongoDBFormatter();
+ $formattedRecord = $formatter->format($record);
+
+ $this->assertCount(7, $formattedRecord);
+ $this->assertEquals('some log message', $formattedRecord['message']);
+ $this->assertEquals(array(), $formattedRecord['context']);
+ $this->assertEquals(Logger::WARNING, $formattedRecord['level']);
+ $this->assertEquals(Logger::getLevelName(Logger::WARNING), $formattedRecord['level_name']);
+ $this->assertEquals('test', $formattedRecord['channel']);
+ $this->assertInstanceOf('\MongoDate', $formattedRecord['datetime']);
+ $this->assertEquals('0.00000000 1391212800', $formattedRecord['datetime']->__toString());
+ $this->assertEquals(array(), $formattedRecord['extra']);
+ }
+
+ public function testRecursiveFormat()
+ {
+ $someObject = new \stdClass();
+ $someObject->foo = 'something';
+ $someObject->bar = 'stuff';
+
+ $record = array(
+ 'message' => 'some log message',
+ 'context' => array(
+ 'stuff' => new \DateTime('2014-02-01 02:31:33'),
+ 'some_object' => $someObject,
+ 'context_string' => 'some string',
+ 'context_int' => 123456,
+ 'except' => new \Exception('exception message', 987),
+ ),
+ 'level' => Logger::WARNING,
+ 'level_name' => Logger::getLevelName(Logger::WARNING),
+ 'channel' => 'test',
+ 'datetime' => new \DateTime('2014-02-01 00:00:00'),
+ 'extra' => array(),
+ );
+
+ $formatter = new MongoDBFormatter();
+ $formattedRecord = $formatter->format($record);
+
+ $this->assertCount(5, $formattedRecord['context']);
+ $this->assertInstanceOf('\MongoDate', $formattedRecord['context']['stuff']);
+ $this->assertEquals('0.00000000 1391221893', $formattedRecord['context']['stuff']->__toString());
+ $this->assertEquals(
+ array(
+ 'foo' => 'something',
+ 'bar' => 'stuff',
+ 'class' => 'stdClass',
+ ),
+ $formattedRecord['context']['some_object']
+ );
+ $this->assertEquals('some string', $formattedRecord['context']['context_string']);
+ $this->assertEquals(123456, $formattedRecord['context']['context_int']);
+
+ $this->assertCount(5, $formattedRecord['context']['except']);
+ $this->assertEquals('exception message', $formattedRecord['context']['except']['message']);
+ $this->assertEquals(987, $formattedRecord['context']['except']['code']);
+ $this->assertInternalType('string', $formattedRecord['context']['except']['file']);
+ $this->assertInternalType('integer', $formattedRecord['context']['except']['code']);
+ $this->assertInternalType('string', $formattedRecord['context']['except']['trace']);
+ $this->assertEquals('Exception', $formattedRecord['context']['except']['class']);
+ }
+
+ public function testFormatDepthArray()
+ {
+ $record = array(
+ 'message' => 'some log message',
+ 'context' => array(
+ 'nest2' => array(
+ 'property' => 'anything',
+ 'nest3' => array(
+ 'nest4' => 'value',
+ 'property' => 'nothing',
+ ),
+ ),
+ ),
+ 'level' => Logger::WARNING,
+ 'level_name' => Logger::getLevelName(Logger::WARNING),
+ 'channel' => 'test',
+ 'datetime' => new \DateTime('2014-02-01 00:00:00'),
+ 'extra' => array(),
+ );
+
+ $formatter = new MongoDBFormatter(2);
+ $formattedResult = $formatter->format($record);
+
+ $this->assertEquals(
+ array(
+ 'nest2' => array(
+ 'property' => 'anything',
+ 'nest3' => '[...]',
+ ),
+ ),
+ $formattedResult['context']
+ );
+ }
+
+ public function testFormatDepthArrayInfiniteNesting()
+ {
+ $record = array(
+ 'message' => 'some log message',
+ 'context' => array(
+ 'nest2' => array(
+ 'property' => 'something',
+ 'nest3' => array(
+ 'property' => 'anything',
+ 'nest4' => array(
+ 'property' => 'nothing',
+ ),
+ ),
+ ),
+ ),
+ 'level' => Logger::WARNING,
+ 'level_name' => Logger::getLevelName(Logger::WARNING),
+ 'channel' => 'test',
+ 'datetime' => new \DateTime('2014-02-01 00:00:00'),
+ 'extra' => array(),
+ );
+
+ $formatter = new MongoDBFormatter(0);
+ $formattedResult = $formatter->format($record);
+
+ $this->assertEquals(
+ array(
+ 'nest2' => array(
+ 'property' => 'something',
+ 'nest3' => array(
+ 'property' => 'anything',
+ 'nest4' => array(
+ 'property' => 'nothing',
+ ),
+ ),
+ ),
+ ),
+ $formattedResult['context']
+ );
+ }
+
+ public function testFormatDepthObjects()
+ {
+ $someObject = new \stdClass();
+ $someObject->property = 'anything';
+ $someObject->nest3 = new \stdClass();
+ $someObject->nest3->property = 'nothing';
+ $someObject->nest3->nest4 = 'invisible';
+
+ $record = array(
+ 'message' => 'some log message',
+ 'context' => array(
+ 'nest2' => $someObject,
+ ),
+ 'level' => Logger::WARNING,
+ 'level_name' => Logger::getLevelName(Logger::WARNING),
+ 'channel' => 'test',
+ 'datetime' => new \DateTime('2014-02-01 00:00:00'),
+ 'extra' => array(),
+ );
+
+ $formatter = new MongoDBFormatter(2, true);
+ $formattedResult = $formatter->format($record);
+
+ $this->assertEquals(
+ array(
+ 'nest2' => array(
+ 'property' => 'anything',
+ 'nest3' => '[...]',
+ 'class' => 'stdClass',
+ ),
+ ),
+ $formattedResult['context']
+ );
+ }
+
+ public function testFormatDepthException()
+ {
+ $record = array(
+ 'message' => 'some log message',
+ 'context' => array(
+ 'nest2' => new \Exception('exception message', 987),
+ ),
+ 'level' => Logger::WARNING,
+ 'level_name' => Logger::getLevelName(Logger::WARNING),
+ 'channel' => 'test',
+ 'datetime' => new \DateTime('2014-02-01 00:00:00'),
+ 'extra' => array(),
+ );
+
+ $formatter = new MongoDBFormatter(2, false);
+ $formattedRecord = $formatter->format($record);
+
+ $this->assertEquals('exception message', $formattedRecord['context']['nest2']['message']);
+ $this->assertEquals(987, $formattedRecord['context']['nest2']['code']);
+ $this->assertEquals('[...]', $formattedRecord['context']['nest2']['trace']);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/NormalizerFormatterTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/NormalizerFormatterTest.php
new file mode 100644
index 0000000..2f83c44
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/NormalizerFormatterTest.php
@@ -0,0 +1,423 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+/**
+ * @covers Monolog\Formatter\NormalizerFormatter
+ */
+class NormalizerFormatterTest extends \PHPUnit_Framework_TestCase
+{
+ public function tearDown()
+ {
+ \PHPUnit_Framework_Error_Warning::$enabled = true;
+
+ return parent::tearDown();
+ }
+
+ public function testFormat()
+ {
+ $formatter = new NormalizerFormatter('Y-m-d');
+ $formatted = $formatter->format(array(
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'message' => 'foo',
+ 'datetime' => new \DateTime,
+ 'extra' => array('foo' => new TestFooNorm, 'bar' => new TestBarNorm, 'baz' => array(), 'res' => fopen('php://memory', 'rb')),
+ 'context' => array(
+ 'foo' => 'bar',
+ 'baz' => 'qux',
+ 'inf' => INF,
+ '-inf' => -INF,
+ 'nan' => acos(4),
+ ),
+ ));
+
+ $this->assertEquals(array(
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'message' => 'foo',
+ 'datetime' => date('Y-m-d'),
+ 'extra' => array(
+ 'foo' => '[object] (Monolog\\Formatter\\TestFooNorm: {"foo":"foo"})',
+ 'bar' => '[object] (Monolog\\Formatter\\TestBarNorm: bar)',
+ 'baz' => array(),
+ 'res' => '[resource] (stream)',
+ ),
+ 'context' => array(
+ 'foo' => 'bar',
+ 'baz' => 'qux',
+ 'inf' => 'INF',
+ '-inf' => '-INF',
+ 'nan' => 'NaN',
+ ),
+ ), $formatted);
+ }
+
+ public function testFormatExceptions()
+ {
+ $formatter = new NormalizerFormatter('Y-m-d');
+ $e = new \LogicException('bar');
+ $e2 = new \RuntimeException('foo', 0, $e);
+ $formatted = $formatter->format(array(
+ 'exception' => $e2,
+ ));
+
+ $this->assertGreaterThan(5, count($formatted['exception']['trace']));
+ $this->assertTrue(isset($formatted['exception']['previous']));
+ unset($formatted['exception']['trace'], $formatted['exception']['previous']);
+
+ $this->assertEquals(array(
+ 'exception' => array(
+ 'class' => get_class($e2),
+ 'message' => $e2->getMessage(),
+ 'code' => $e2->getCode(),
+ 'file' => $e2->getFile().':'.$e2->getLine(),
+ ),
+ ), $formatted);
+ }
+
+ public function testFormatSoapFaultException()
+ {
+ if (!class_exists('SoapFault')) {
+ $this->markTestSkipped('Requires the soap extension');
+ }
+
+ $formatter = new NormalizerFormatter('Y-m-d');
+ $e = new \SoapFault('foo', 'bar', 'hello', 'world');
+ $formatted = $formatter->format(array(
+ 'exception' => $e,
+ ));
+
+ unset($formatted['exception']['trace']);
+
+ $this->assertEquals(array(
+ 'exception' => array(
+ 'class' => 'SoapFault',
+ 'message' => 'bar',
+ 'code' => 0,
+ 'file' => $e->getFile().':'.$e->getLine(),
+ 'faultcode' => 'foo',
+ 'faultactor' => 'hello',
+ 'detail' => 'world',
+ ),
+ ), $formatted);
+ }
+
+ public function testFormatToStringExceptionHandle()
+ {
+ $formatter = new NormalizerFormatter('Y-m-d');
+ $this->setExpectedException('RuntimeException', 'Could not convert to string');
+ $formatter->format(array(
+ 'myObject' => new TestToStringError(),
+ ));
+ }
+
+ public function testBatchFormat()
+ {
+ $formatter = new NormalizerFormatter('Y-m-d');
+ $formatted = $formatter->formatBatch(array(
+ array(
+ 'level_name' => 'CRITICAL',
+ 'channel' => 'test',
+ 'message' => 'bar',
+ 'context' => array(),
+ 'datetime' => new \DateTime,
+ 'extra' => array(),
+ ),
+ array(
+ 'level_name' => 'WARNING',
+ 'channel' => 'log',
+ 'message' => 'foo',
+ 'context' => array(),
+ 'datetime' => new \DateTime,
+ 'extra' => array(),
+ ),
+ ));
+ $this->assertEquals(array(
+ array(
+ 'level_name' => 'CRITICAL',
+ 'channel' => 'test',
+ 'message' => 'bar',
+ 'context' => array(),
+ 'datetime' => date('Y-m-d'),
+ 'extra' => array(),
+ ),
+ array(
+ 'level_name' => 'WARNING',
+ 'channel' => 'log',
+ 'message' => 'foo',
+ 'context' => array(),
+ 'datetime' => date('Y-m-d'),
+ 'extra' => array(),
+ ),
+ ), $formatted);
+ }
+
+ /**
+ * Test issue #137
+ */
+ public function testIgnoresRecursiveObjectReferences()
+ {
+ // set up the recursion
+ $foo = new \stdClass();
+ $bar = new \stdClass();
+
+ $foo->bar = $bar;
+ $bar->foo = $foo;
+
+ // set an error handler to assert that the error is not raised anymore
+ $that = $this;
+ set_error_handler(function ($level, $message, $file, $line, $context) use ($that) {
+ if (error_reporting() & $level) {
+ restore_error_handler();
+ $that->fail("$message should not be raised");
+ }
+ });
+
+ $formatter = new NormalizerFormatter();
+ $reflMethod = new \ReflectionMethod($formatter, 'toJson');
+ $reflMethod->setAccessible(true);
+ $res = $reflMethod->invoke($formatter, array($foo, $bar), true);
+
+ restore_error_handler();
+
+ $this->assertEquals(@json_encode(array($foo, $bar)), $res);
+ }
+
+ public function testIgnoresInvalidTypes()
+ {
+ // set up the recursion
+ $resource = fopen(__FILE__, 'r');
+
+ // set an error handler to assert that the error is not raised anymore
+ $that = $this;
+ set_error_handler(function ($level, $message, $file, $line, $context) use ($that) {
+ if (error_reporting() & $level) {
+ restore_error_handler();
+ $that->fail("$message should not be raised");
+ }
+ });
+
+ $formatter = new NormalizerFormatter();
+ $reflMethod = new \ReflectionMethod($formatter, 'toJson');
+ $reflMethod->setAccessible(true);
+ $res = $reflMethod->invoke($formatter, array($resource), true);
+
+ restore_error_handler();
+
+ $this->assertEquals(@json_encode(array($resource)), $res);
+ }
+
+ public function testNormalizeHandleLargeArrays()
+ {
+ $formatter = new NormalizerFormatter();
+ $largeArray = range(1, 2000);
+
+ $res = $formatter->format(array(
+ 'level_name' => 'CRITICAL',
+ 'channel' => 'test',
+ 'message' => 'bar',
+ 'context' => array($largeArray),
+ 'datetime' => new \DateTime,
+ 'extra' => array(),
+ ));
+
+ $this->assertCount(1000, $res['context'][0]);
+ $this->assertEquals('Over 1000 items (2000 total), aborting normalization', $res['context'][0]['...']);
+ }
+
+ /**
+ * @expectedException RuntimeException
+ */
+ public function testThrowsOnInvalidEncoding()
+ {
+ if (version_compare(PHP_VERSION, '5.5.0', '<')) {
+ // Ignore the warning that will be emitted by PHP <5.5.0
+ \PHPUnit_Framework_Error_Warning::$enabled = false;
+ }
+ $formatter = new NormalizerFormatter();
+ $reflMethod = new \ReflectionMethod($formatter, 'toJson');
+ $reflMethod->setAccessible(true);
+
+ // send an invalid unicode sequence as a object that can't be cleaned
+ $record = new \stdClass;
+ $record->message = "\xB1\x31";
+ $res = $reflMethod->invoke($formatter, $record);
+ if (PHP_VERSION_ID < 50500 && $res === '{"message":null}') {
+ throw new \RuntimeException('PHP 5.3/5.4 throw a warning and null the value instead of returning false entirely');
+ }
+ }
+
+ public function testConvertsInvalidEncodingAsLatin9()
+ {
+ if (version_compare(PHP_VERSION, '5.5.0', '<')) {
+ // Ignore the warning that will be emitted by PHP <5.5.0
+ \PHPUnit_Framework_Error_Warning::$enabled = false;
+ }
+ $formatter = new NormalizerFormatter();
+ $reflMethod = new \ReflectionMethod($formatter, 'toJson');
+ $reflMethod->setAccessible(true);
+
+ $res = $reflMethod->invoke($formatter, array('message' => "\xA4\xA6\xA8\xB4\xB8\xBC\xBD\xBE"));
+
+ if (version_compare(PHP_VERSION, '5.5.0', '>=')) {
+ $this->assertSame('{"message":"€ŠšŽžŒœŸ"}', $res);
+ } else {
+ // PHP <5.5 does not return false for an element encoding failure,
+ // instead it emits a warning (possibly) and nulls the value.
+ $this->assertSame('{"message":null}', $res);
+ }
+ }
+
+ /**
+ * @param mixed $in Input
+ * @param mixed $expect Expected output
+ * @covers Monolog\Formatter\NormalizerFormatter::detectAndCleanUtf8
+ * @dataProvider providesDetectAndCleanUtf8
+ */
+ public function testDetectAndCleanUtf8($in, $expect)
+ {
+ $formatter = new NormalizerFormatter();
+ $formatter->detectAndCleanUtf8($in);
+ $this->assertSame($expect, $in);
+ }
+
+ public function providesDetectAndCleanUtf8()
+ {
+ $obj = new \stdClass;
+
+ return array(
+ 'null' => array(null, null),
+ 'int' => array(123, 123),
+ 'float' => array(123.45, 123.45),
+ 'bool false' => array(false, false),
+ 'bool true' => array(true, true),
+ 'ascii string' => array('abcdef', 'abcdef'),
+ 'latin9 string' => array("\xB1\x31\xA4\xA6\xA8\xB4\xB8\xBC\xBD\xBE\xFF", '±1€ŠšŽžŒœŸÿ'),
+ 'unicode string' => array('¤¦¨´¸¼½¾€ŠšŽžŒœŸ', '¤¦¨´¸¼½¾€ŠšŽžŒœŸ'),
+ 'empty array' => array(array(), array()),
+ 'array' => array(array('abcdef'), array('abcdef')),
+ 'object' => array($obj, $obj),
+ );
+ }
+
+ /**
+ * @param int $code
+ * @param string $msg
+ * @dataProvider providesHandleJsonErrorFailure
+ */
+ public function testHandleJsonErrorFailure($code, $msg)
+ {
+ $formatter = new NormalizerFormatter();
+ $reflMethod = new \ReflectionMethod($formatter, 'handleJsonError');
+ $reflMethod->setAccessible(true);
+
+ $this->setExpectedException('RuntimeException', $msg);
+ $reflMethod->invoke($formatter, $code, 'faked');
+ }
+
+ public function providesHandleJsonErrorFailure()
+ {
+ return array(
+ 'depth' => array(JSON_ERROR_DEPTH, 'Maximum stack depth exceeded'),
+ 'state' => array(JSON_ERROR_STATE_MISMATCH, 'Underflow or the modes mismatch'),
+ 'ctrl' => array(JSON_ERROR_CTRL_CHAR, 'Unexpected control character found'),
+ 'default' => array(-1, 'Unknown error'),
+ );
+ }
+
+ public function testExceptionTraceWithArgs()
+ {
+ if (defined('HHVM_VERSION')) {
+ $this->markTestSkipped('Not supported in HHVM since it detects errors differently');
+ }
+
+ // This happens i.e. in React promises or Guzzle streams where stream wrappers are registered
+ // and no file or line are included in the trace because it's treated as internal function
+ set_error_handler(function ($errno, $errstr, $errfile, $errline) {
+ throw new \ErrorException($errstr, 0, $errno, $errfile, $errline);
+ });
+
+ try {
+ // This will contain $resource and $wrappedResource as arguments in the trace item
+ $resource = fopen('php://memory', 'rw+');
+ fwrite($resource, 'test_resource');
+ $wrappedResource = new TestFooNorm;
+ $wrappedResource->foo = $resource;
+ // Just do something stupid with a resource/wrapped resource as argument
+ array_keys($wrappedResource);
+ } catch (\Exception $e) {
+ restore_error_handler();
+ }
+
+ $formatter = new NormalizerFormatter();
+ $record = array('context' => array('exception' => $e));
+ $result = $formatter->format($record);
+
+ $this->assertRegExp(
+ '%"resource":"\[resource\] \(stream\)"%',
+ $result['context']['exception']['trace'][0]
+ );
+
+ if (version_compare(PHP_VERSION, '5.5.0', '>=')) {
+ $pattern = '%"wrappedResource":"\[object\] \(Monolog\\\\\\\\Formatter\\\\\\\\TestFooNorm: \)"%';
+ } else {
+ $pattern = '%\\\\"foo\\\\":null%';
+ }
+
+ // Tests that the wrapped resource is ignored while encoding, only works for PHP <= 5.4
+ $this->assertRegExp(
+ $pattern,
+ $result['context']['exception']['trace'][0]
+ );
+ }
+}
+
+class TestFooNorm
+{
+ public $foo = 'foo';
+}
+
+class TestBarNorm
+{
+ public function __toString()
+ {
+ return 'bar';
+ }
+}
+
+class TestStreamFoo
+{
+ public $foo;
+ public $resource;
+
+ public function __construct($resource)
+ {
+ $this->resource = $resource;
+ $this->foo = 'BAR';
+ }
+
+ public function __toString()
+ {
+ fseek($this->resource, 0);
+
+ return $this->foo . ' - ' . (string) stream_get_contents($this->resource);
+ }
+}
+
+class TestToStringError
+{
+ public function __toString()
+ {
+ throw new \RuntimeException('Could not convert to string');
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/ScalarFormatterTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/ScalarFormatterTest.php
new file mode 100644
index 0000000..7313543
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/ScalarFormatterTest.php
@@ -0,0 +1,110 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+class ScalarFormatterTest extends \PHPUnit_Framework_TestCase
+{
+ private $formatter;
+
+ public function setUp()
+ {
+ $this->formatter = new ScalarFormatter();
+ }
+
+ public function buildTrace(\Exception $e)
+ {
+ $data = array();
+ $trace = $e->getTrace();
+ foreach ($trace as $frame) {
+ if (isset($frame['file'])) {
+ $data[] = $frame['file'].':'.$frame['line'];
+ } else {
+ $data[] = json_encode($frame);
+ }
+ }
+
+ return $data;
+ }
+
+ public function encodeJson($data)
+ {
+ if (version_compare(PHP_VERSION, '5.4.0', '>=')) {
+ return json_encode($data, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
+ }
+
+ return json_encode($data);
+ }
+
+ public function testFormat()
+ {
+ $exception = new \Exception('foo');
+ $formatted = $this->formatter->format(array(
+ 'foo' => 'string',
+ 'bar' => 1,
+ 'baz' => false,
+ 'bam' => array(1, 2, 3),
+ 'bat' => array('foo' => 'bar'),
+ 'bap' => \DateTime::createFromFormat(\DateTime::ISO8601, '1970-01-01T00:00:00+0000'),
+ 'ban' => $exception,
+ ));
+
+ $this->assertSame(array(
+ 'foo' => 'string',
+ 'bar' => 1,
+ 'baz' => false,
+ 'bam' => $this->encodeJson(array(1, 2, 3)),
+ 'bat' => $this->encodeJson(array('foo' => 'bar')),
+ 'bap' => '1970-01-01 00:00:00',
+ 'ban' => $this->encodeJson(array(
+ 'class' => get_class($exception),
+ 'message' => $exception->getMessage(),
+ 'code' => $exception->getCode(),
+ 'file' => $exception->getFile() . ':' . $exception->getLine(),
+ 'trace' => $this->buildTrace($exception),
+ )),
+ ), $formatted);
+ }
+
+ public function testFormatWithErrorContext()
+ {
+ $context = array('file' => 'foo', 'line' => 1);
+ $formatted = $this->formatter->format(array(
+ 'context' => $context,
+ ));
+
+ $this->assertSame(array(
+ 'context' => $this->encodeJson($context),
+ ), $formatted);
+ }
+
+ public function testFormatWithExceptionContext()
+ {
+ $exception = new \Exception('foo');
+ $formatted = $this->formatter->format(array(
+ 'context' => array(
+ 'exception' => $exception,
+ ),
+ ));
+
+ $this->assertSame(array(
+ 'context' => $this->encodeJson(array(
+ 'exception' => array(
+ 'class' => get_class($exception),
+ 'message' => $exception->getMessage(),
+ 'code' => $exception->getCode(),
+ 'file' => $exception->getFile() . ':' . $exception->getLine(),
+ 'trace' => $this->buildTrace($exception),
+ ),
+ )),
+ ), $formatted);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/WildfireFormatterTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/WildfireFormatterTest.php
new file mode 100644
index 0000000..cbf671e
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Formatter/WildfireFormatterTest.php
@@ -0,0 +1,142 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+use Monolog\Logger;
+
+class WildfireFormatterTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @covers Monolog\Formatter\WildfireFormatter::format
+ */
+ public function testDefaultFormat()
+ {
+ $wildfire = new WildfireFormatter();
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('ip' => '127.0.0.1'),
+ 'message' => 'log',
+ );
+
+ $message = $wildfire->format($record);
+
+ $this->assertEquals(
+ '125|[{"Type":"ERROR","File":"","Line":"","Label":"meh"},'
+ .'{"message":"log","context":{"from":"logger"},"extra":{"ip":"127.0.0.1"}}]|',
+ $message
+ );
+ }
+
+ /**
+ * @covers Monolog\Formatter\WildfireFormatter::format
+ */
+ public function testFormatWithFileAndLine()
+ {
+ $wildfire = new WildfireFormatter();
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('from' => 'logger'),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array('ip' => '127.0.0.1', 'file' => 'test', 'line' => 14),
+ 'message' => 'log',
+ );
+
+ $message = $wildfire->format($record);
+
+ $this->assertEquals(
+ '129|[{"Type":"ERROR","File":"test","Line":14,"Label":"meh"},'
+ .'{"message":"log","context":{"from":"logger"},"extra":{"ip":"127.0.0.1"}}]|',
+ $message
+ );
+ }
+
+ /**
+ * @covers Monolog\Formatter\WildfireFormatter::format
+ */
+ public function testFormatWithoutContext()
+ {
+ $wildfire = new WildfireFormatter();
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array(),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(),
+ 'message' => 'log',
+ );
+
+ $message = $wildfire->format($record);
+
+ $this->assertEquals(
+ '58|[{"Type":"ERROR","File":"","Line":"","Label":"meh"},"log"]|',
+ $message
+ );
+ }
+
+ /**
+ * @covers Monolog\Formatter\WildfireFormatter::formatBatch
+ * @expectedException BadMethodCallException
+ */
+ public function testBatchFormatThrowException()
+ {
+ $wildfire = new WildfireFormatter();
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array(),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(),
+ 'message' => 'log',
+ );
+
+ $wildfire->formatBatch(array($record));
+ }
+
+ /**
+ * @covers Monolog\Formatter\WildfireFormatter::format
+ */
+ public function testTableFormat()
+ {
+ $wildfire = new WildfireFormatter();
+ $record = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'table-channel',
+ 'context' => array(
+ WildfireFormatter::TABLE => array(
+ array('col1', 'col2', 'col3'),
+ array('val1', 'val2', 'val3'),
+ array('foo1', 'foo2', 'foo3'),
+ array('bar1', 'bar2', 'bar3'),
+ ),
+ ),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(),
+ 'message' => 'table-message',
+ );
+
+ $message = $wildfire->format($record);
+
+ $this->assertEquals(
+ '171|[{"Type":"TABLE","File":"","Line":"","Label":"table-channel: table-message"},[["col1","col2","col3"],["val1","val2","val3"],["foo1","foo2","foo3"],["bar1","bar2","bar3"]]]|',
+ $message
+ );
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/AbstractHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/AbstractHandlerTest.php
new file mode 100644
index 0000000..34c4140
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/AbstractHandlerTest.php
@@ -0,0 +1,115 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+use Monolog\Formatter\LineFormatter;
+use Monolog\Processor\WebProcessor;
+
+class AbstractHandlerTest extends TestCase
+{
+ /**
+ * @covers Monolog\Handler\AbstractHandler::__construct
+ * @covers Monolog\Handler\AbstractHandler::getLevel
+ * @covers Monolog\Handler\AbstractHandler::setLevel
+ * @covers Monolog\Handler\AbstractHandler::getBubble
+ * @covers Monolog\Handler\AbstractHandler::setBubble
+ * @covers Monolog\Handler\AbstractHandler::getFormatter
+ * @covers Monolog\Handler\AbstractHandler::setFormatter
+ */
+ public function testConstructAndGetSet()
+ {
+ $handler = $this->getMockForAbstractClass('Monolog\Handler\AbstractHandler', array(Logger::WARNING, false));
+ $this->assertEquals(Logger::WARNING, $handler->getLevel());
+ $this->assertEquals(false, $handler->getBubble());
+
+ $handler->setLevel(Logger::ERROR);
+ $handler->setBubble(true);
+ $handler->setFormatter($formatter = new LineFormatter);
+ $this->assertEquals(Logger::ERROR, $handler->getLevel());
+ $this->assertEquals(true, $handler->getBubble());
+ $this->assertSame($formatter, $handler->getFormatter());
+ }
+
+ /**
+ * @covers Monolog\Handler\AbstractHandler::handleBatch
+ */
+ public function testHandleBatch()
+ {
+ $handler = $this->getMockForAbstractClass('Monolog\Handler\AbstractHandler');
+ $handler->expects($this->exactly(2))
+ ->method('handle');
+ $handler->handleBatch(array($this->getRecord(), $this->getRecord()));
+ }
+
+ /**
+ * @covers Monolog\Handler\AbstractHandler::isHandling
+ */
+ public function testIsHandling()
+ {
+ $handler = $this->getMockForAbstractClass('Monolog\Handler\AbstractHandler', array(Logger::WARNING, false));
+ $this->assertTrue($handler->isHandling($this->getRecord()));
+ $this->assertFalse($handler->isHandling($this->getRecord(Logger::DEBUG)));
+ }
+
+ /**
+ * @covers Monolog\Handler\AbstractHandler::__construct
+ */
+ public function testHandlesPsrStyleLevels()
+ {
+ $handler = $this->getMockForAbstractClass('Monolog\Handler\AbstractHandler', array('warning', false));
+ $this->assertFalse($handler->isHandling($this->getRecord(Logger::DEBUG)));
+ $handler->setLevel('debug');
+ $this->assertTrue($handler->isHandling($this->getRecord(Logger::DEBUG)));
+ }
+
+ /**
+ * @covers Monolog\Handler\AbstractHandler::getFormatter
+ * @covers Monolog\Handler\AbstractHandler::getDefaultFormatter
+ */
+ public function testGetFormatterInitializesDefault()
+ {
+ $handler = $this->getMockForAbstractClass('Monolog\Handler\AbstractHandler');
+ $this->assertInstanceOf('Monolog\Formatter\LineFormatter', $handler->getFormatter());
+ }
+
+ /**
+ * @covers Monolog\Handler\AbstractHandler::pushProcessor
+ * @covers Monolog\Handler\AbstractHandler::popProcessor
+ * @expectedException LogicException
+ */
+ public function testPushPopProcessor()
+ {
+ $logger = $this->getMockForAbstractClass('Monolog\Handler\AbstractHandler');
+ $processor1 = new WebProcessor;
+ $processor2 = new WebProcessor;
+
+ $logger->pushProcessor($processor1);
+ $logger->pushProcessor($processor2);
+
+ $this->assertEquals($processor2, $logger->popProcessor());
+ $this->assertEquals($processor1, $logger->popProcessor());
+ $logger->popProcessor();
+ }
+
+ /**
+ * @covers Monolog\Handler\AbstractHandler::pushProcessor
+ * @expectedException InvalidArgumentException
+ */
+ public function testPushProcessorWithNonCallable()
+ {
+ $handler = $this->getMockForAbstractClass('Monolog\Handler\AbstractHandler');
+
+ $handler->pushProcessor(new \stdClass());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/AbstractProcessingHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/AbstractProcessingHandlerTest.php
new file mode 100644
index 0000000..407373c
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/AbstractProcessingHandlerTest.php
@@ -0,0 +1,80 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+use Monolog\Processor\WebProcessor;
+
+class AbstractProcessingHandlerTest extends TestCase
+{
+ /**
+ * @covers Monolog\Handler\AbstractProcessingHandler::handle
+ */
+ public function testHandleLowerLevelMessage()
+ {
+ $handler = $this->getMockForAbstractClass('Monolog\Handler\AbstractProcessingHandler', array(Logger::WARNING, true));
+ $this->assertFalse($handler->handle($this->getRecord(Logger::DEBUG)));
+ }
+
+ /**
+ * @covers Monolog\Handler\AbstractProcessingHandler::handle
+ */
+ public function testHandleBubbling()
+ {
+ $handler = $this->getMockForAbstractClass('Monolog\Handler\AbstractProcessingHandler', array(Logger::DEBUG, true));
+ $this->assertFalse($handler->handle($this->getRecord()));
+ }
+
+ /**
+ * @covers Monolog\Handler\AbstractProcessingHandler::handle
+ */
+ public function testHandleNotBubbling()
+ {
+ $handler = $this->getMockForAbstractClass('Monolog\Handler\AbstractProcessingHandler', array(Logger::DEBUG, false));
+ $this->assertTrue($handler->handle($this->getRecord()));
+ }
+
+ /**
+ * @covers Monolog\Handler\AbstractProcessingHandler::handle
+ */
+ public function testHandleIsFalseWhenNotHandled()
+ {
+ $handler = $this->getMockForAbstractClass('Monolog\Handler\AbstractProcessingHandler', array(Logger::WARNING, false));
+ $this->assertTrue($handler->handle($this->getRecord()));
+ $this->assertFalse($handler->handle($this->getRecord(Logger::DEBUG)));
+ }
+
+ /**
+ * @covers Monolog\Handler\AbstractProcessingHandler::processRecord
+ */
+ public function testProcessRecord()
+ {
+ $handler = $this->getMockForAbstractClass('Monolog\Handler\AbstractProcessingHandler');
+ $handler->pushProcessor(new WebProcessor(array(
+ 'REQUEST_URI' => '',
+ 'REQUEST_METHOD' => '',
+ 'REMOTE_ADDR' => '',
+ 'SERVER_NAME' => '',
+ 'UNIQUE_ID' => '',
+ )));
+ $handledRecord = null;
+ $handler->expects($this->once())
+ ->method('write')
+ ->will($this->returnCallback(function ($record) use (&$handledRecord) {
+ $handledRecord = $record;
+ }))
+ ;
+ $handler->handle($this->getRecord());
+ $this->assertEquals(6, count($handledRecord['extra']));
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/AmqpHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/AmqpHandlerTest.php
new file mode 100644
index 0000000..3cbe14a
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/AmqpHandlerTest.php
@@ -0,0 +1,136 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+use PhpAmqpLib\Message\AMQPMessage;
+use PhpAmqpLib\Connection\AMQPConnection;
+
+/**
+ * @covers Monolog\Handler\RotatingFileHandler
+ */
+class AmqpHandlerTest extends TestCase
+{
+ public function testHandleAmqpExt()
+ {
+ if (!class_exists('AMQPConnection') || !class_exists('AMQPExchange')) {
+ $this->markTestSkipped("amqp-php not installed");
+ }
+
+ if (!class_exists('AMQPChannel')) {
+ $this->markTestSkipped("Please update AMQP to version >= 1.0");
+ }
+
+ $messages = array();
+
+ $exchange = $this->getMock('AMQPExchange', array('publish', 'setName'), array(), '', false);
+ $exchange->expects($this->once())
+ ->method('setName')
+ ->with('log')
+ ;
+ $exchange->expects($this->any())
+ ->method('publish')
+ ->will($this->returnCallback(function ($message, $routing_key, $flags = 0, $attributes = array()) use (&$messages) {
+ $messages[] = array($message, $routing_key, $flags, $attributes);
+ }))
+ ;
+
+ $handler = new AmqpHandler($exchange, 'log');
+
+ $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34));
+
+ $expected = array(
+ array(
+ 'message' => 'test',
+ 'context' => array(
+ 'data' => array(),
+ 'foo' => 34,
+ ),
+ 'level' => 300,
+ 'level_name' => 'WARNING',
+ 'channel' => 'test',
+ 'extra' => array(),
+ ),
+ 'warn.test',
+ 0,
+ array(
+ 'delivery_mode' => 2,
+ 'content_type' => 'application/json',
+ ),
+ );
+
+ $handler->handle($record);
+
+ $this->assertCount(1, $messages);
+ $messages[0][0] = json_decode($messages[0][0], true);
+ unset($messages[0][0]['datetime']);
+ $this->assertEquals($expected, $messages[0]);
+ }
+
+ public function testHandlePhpAmqpLib()
+ {
+ if (!class_exists('PhpAmqpLib\Connection\AMQPConnection')) {
+ $this->markTestSkipped("php-amqplib not installed");
+ }
+
+ $messages = array();
+
+ $exchange = $this->getMock('PhpAmqpLib\Channel\AMQPChannel', array('basic_publish', '__destruct'), array(), '', false);
+
+ $exchange->expects($this->any())
+ ->method('basic_publish')
+ ->will($this->returnCallback(function (AMQPMessage $msg, $exchange = "", $routing_key = "", $mandatory = false, $immediate = false, $ticket = null) use (&$messages) {
+ $messages[] = array($msg, $exchange, $routing_key, $mandatory, $immediate, $ticket);
+ }))
+ ;
+
+ $handler = new AmqpHandler($exchange, 'log');
+
+ $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34));
+
+ $expected = array(
+ array(
+ 'message' => 'test',
+ 'context' => array(
+ 'data' => array(),
+ 'foo' => 34,
+ ),
+ 'level' => 300,
+ 'level_name' => 'WARNING',
+ 'channel' => 'test',
+ 'extra' => array(),
+ ),
+ 'log',
+ 'warn.test',
+ false,
+ false,
+ null,
+ array(
+ 'delivery_mode' => 2,
+ 'content_type' => 'application/json',
+ ),
+ );
+
+ $handler->handle($record);
+
+ $this->assertCount(1, $messages);
+
+ /* @var $msg AMQPMessage */
+ $msg = $messages[0][0];
+ $messages[0][0] = json_decode($msg->body, true);
+ $messages[0][] = $msg->get_properties();
+ unset($messages[0][0]['datetime']);
+
+ $this->assertEquals($expected, $messages[0]);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/BrowserConsoleHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/BrowserConsoleHandlerTest.php
new file mode 100644
index 0000000..ecc91fb
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/BrowserConsoleHandlerTest.php
@@ -0,0 +1,130 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+/**
+ * @covers Monolog\Handler\BrowserConsoleHandlerTest
+ */
+class BrowserConsoleHandlerTest extends TestCase
+{
+ protected function setUp()
+ {
+ BrowserConsoleHandler::reset();
+ }
+
+ protected function generateScript()
+ {
+ $reflMethod = new \ReflectionMethod('Monolog\Handler\BrowserConsoleHandler', 'generateScript');
+ $reflMethod->setAccessible(true);
+
+ return $reflMethod->invoke(null);
+ }
+
+ public function testStyling()
+ {
+ $handler = new BrowserConsoleHandler();
+ $handler->setFormatter($this->getIdentityFormatter());
+
+ $handler->handle($this->getRecord(Logger::DEBUG, 'foo[[bar]]{color: red}'));
+
+ $expected = <<<EOF
+(function (c) {if (c && c.groupCollapsed) {
+c.log("%cfoo%cbar%c", "font-weight: normal", "color: red", "font-weight: normal");
+}})(console);
+EOF;
+
+ $this->assertEquals($expected, $this->generateScript());
+ }
+
+ public function testEscaping()
+ {
+ $handler = new BrowserConsoleHandler();
+ $handler->setFormatter($this->getIdentityFormatter());
+
+ $handler->handle($this->getRecord(Logger::DEBUG, "[foo] [[\"bar\n[baz]\"]]{color: red}"));
+
+ $expected = <<<EOF
+(function (c) {if (c && c.groupCollapsed) {
+c.log("%c[foo] %c\"bar\\n[baz]\"%c", "font-weight: normal", "color: red", "font-weight: normal");
+}})(console);
+EOF;
+
+ $this->assertEquals($expected, $this->generateScript());
+ }
+
+ public function testAutolabel()
+ {
+ $handler = new BrowserConsoleHandler();
+ $handler->setFormatter($this->getIdentityFormatter());
+
+ $handler->handle($this->getRecord(Logger::DEBUG, '[[foo]]{macro: autolabel}'));
+ $handler->handle($this->getRecord(Logger::DEBUG, '[[bar]]{macro: autolabel}'));
+ $handler->handle($this->getRecord(Logger::DEBUG, '[[foo]]{macro: autolabel}'));
+
+ $expected = <<<EOF
+(function (c) {if (c && c.groupCollapsed) {
+c.log("%c%cfoo%c", "font-weight: normal", "background-color: blue; color: white; border-radius: 3px; padding: 0 2px 0 2px", "font-weight: normal");
+c.log("%c%cbar%c", "font-weight: normal", "background-color: green; color: white; border-radius: 3px; padding: 0 2px 0 2px", "font-weight: normal");
+c.log("%c%cfoo%c", "font-weight: normal", "background-color: blue; color: white; border-radius: 3px; padding: 0 2px 0 2px", "font-weight: normal");
+}})(console);
+EOF;
+
+ $this->assertEquals($expected, $this->generateScript());
+ }
+
+ public function testContext()
+ {
+ $handler = new BrowserConsoleHandler();
+ $handler->setFormatter($this->getIdentityFormatter());
+
+ $handler->handle($this->getRecord(Logger::DEBUG, 'test', array('foo' => 'bar')));
+
+ $expected = <<<EOF
+(function (c) {if (c && c.groupCollapsed) {
+c.groupCollapsed("%ctest", "font-weight: normal");
+c.log("%c%s", "font-weight: bold", "Context");
+c.log("%s: %o", "foo", "bar");
+c.groupEnd();
+}})(console);
+EOF;
+
+ $this->assertEquals($expected, $this->generateScript());
+ }
+
+ public function testConcurrentHandlers()
+ {
+ $handler1 = new BrowserConsoleHandler();
+ $handler1->setFormatter($this->getIdentityFormatter());
+
+ $handler2 = new BrowserConsoleHandler();
+ $handler2->setFormatter($this->getIdentityFormatter());
+
+ $handler1->handle($this->getRecord(Logger::DEBUG, 'test1'));
+ $handler2->handle($this->getRecord(Logger::DEBUG, 'test2'));
+ $handler1->handle($this->getRecord(Logger::DEBUG, 'test3'));
+ $handler2->handle($this->getRecord(Logger::DEBUG, 'test4'));
+
+ $expected = <<<EOF
+(function (c) {if (c && c.groupCollapsed) {
+c.log("%ctest1", "font-weight: normal");
+c.log("%ctest2", "font-weight: normal");
+c.log("%ctest3", "font-weight: normal");
+c.log("%ctest4", "font-weight: normal");
+}})(console);
+EOF;
+
+ $this->assertEquals($expected, $this->generateScript());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/BufferHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/BufferHandlerTest.php
new file mode 100644
index 0000000..52772bb
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/BufferHandlerTest.php
@@ -0,0 +1,158 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+class BufferHandlerTest extends TestCase
+{
+ private $shutdownCheckHandler;
+
+ /**
+ * @covers Monolog\Handler\BufferHandler::__construct
+ * @covers Monolog\Handler\BufferHandler::handle
+ * @covers Monolog\Handler\BufferHandler::close
+ */
+ public function testHandleBuffers()
+ {
+ $test = new TestHandler();
+ $handler = new BufferHandler($test);
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::INFO));
+ $this->assertFalse($test->hasDebugRecords());
+ $this->assertFalse($test->hasInfoRecords());
+ $handler->close();
+ $this->assertTrue($test->hasInfoRecords());
+ $this->assertTrue(count($test->getRecords()) === 2);
+ }
+
+ /**
+ * @covers Monolog\Handler\BufferHandler::close
+ * @covers Monolog\Handler\BufferHandler::flush
+ */
+ public function testPropagatesRecordsAtEndOfRequest()
+ {
+ $test = new TestHandler();
+ $handler = new BufferHandler($test);
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $this->shutdownCheckHandler = $test;
+ register_shutdown_function(array($this, 'checkPropagation'));
+ }
+
+ public function checkPropagation()
+ {
+ if (!$this->shutdownCheckHandler->hasWarningRecords() || !$this->shutdownCheckHandler->hasDebugRecords()) {
+ echo '!!! BufferHandlerTest::testPropagatesRecordsAtEndOfRequest failed to verify that the messages have been propagated' . PHP_EOL;
+ exit(1);
+ }
+ }
+
+ /**
+ * @covers Monolog\Handler\BufferHandler::handle
+ */
+ public function testHandleBufferLimit()
+ {
+ $test = new TestHandler();
+ $handler = new BufferHandler($test, 2);
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::INFO));
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $handler->close();
+ $this->assertTrue($test->hasWarningRecords());
+ $this->assertTrue($test->hasInfoRecords());
+ $this->assertFalse($test->hasDebugRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\BufferHandler::handle
+ */
+ public function testHandleBufferLimitWithFlushOnOverflow()
+ {
+ $test = new TestHandler();
+ $handler = new BufferHandler($test, 3, Logger::DEBUG, true, true);
+
+ // send two records
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $this->assertFalse($test->hasDebugRecords());
+ $this->assertCount(0, $test->getRecords());
+
+ // overflow
+ $handler->handle($this->getRecord(Logger::INFO));
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertCount(3, $test->getRecords());
+
+ // should buffer again
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $this->assertCount(3, $test->getRecords());
+
+ $handler->close();
+ $this->assertCount(5, $test->getRecords());
+ $this->assertTrue($test->hasWarningRecords());
+ $this->assertTrue($test->hasInfoRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\BufferHandler::handle
+ */
+ public function testHandleLevel()
+ {
+ $test = new TestHandler();
+ $handler = new BufferHandler($test, 0, Logger::INFO);
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::INFO));
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->close();
+ $this->assertTrue($test->hasWarningRecords());
+ $this->assertTrue($test->hasInfoRecords());
+ $this->assertFalse($test->hasDebugRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\BufferHandler::flush
+ */
+ public function testFlush()
+ {
+ $test = new TestHandler();
+ $handler = new BufferHandler($test, 0);
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::INFO));
+ $handler->flush();
+ $this->assertTrue($test->hasInfoRecords());
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertFalse($test->hasWarningRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\BufferHandler::handle
+ */
+ public function testHandleUsesProcessors()
+ {
+ $test = new TestHandler();
+ $handler = new BufferHandler($test);
+ $handler->pushProcessor(function ($record) {
+ $record['extra']['foo'] = true;
+
+ return $record;
+ });
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $handler->flush();
+ $this->assertTrue($test->hasWarningRecords());
+ $records = $test->getRecords();
+ $this->assertTrue($records[0]['extra']['foo']);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ChromePHPHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ChromePHPHandlerTest.php
new file mode 100644
index 0000000..adbfa79
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ChromePHPHandlerTest.php
@@ -0,0 +1,156 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+/**
+ * @covers Monolog\Handler\ChromePHPHandler
+ */
+class ChromePHPHandlerTest extends TestCase
+{
+ protected function setUp()
+ {
+ TestChromePHPHandler::reset();
+ $_SERVER['HTTP_USER_AGENT'] = 'Monolog Test; Chrome/1.0';
+ }
+
+ /**
+ * @dataProvider agentsProvider
+ */
+ public function testHeaders($agent)
+ {
+ $_SERVER['HTTP_USER_AGENT'] = $agent;
+
+ $handler = new TestChromePHPHandler();
+ $handler->setFormatter($this->getIdentityFormatter());
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::WARNING));
+
+ $expected = array(
+ 'X-ChromeLogger-Data' => base64_encode(utf8_encode(json_encode(array(
+ 'version' => ChromePHPHandler::VERSION,
+ 'columns' => array('label', 'log', 'backtrace', 'type'),
+ 'rows' => array(
+ 'test',
+ 'test',
+ ),
+ 'request_uri' => '',
+ )))),
+ );
+
+ $this->assertEquals($expected, $handler->getHeaders());
+ }
+
+ public static function agentsProvider()
+ {
+ return array(
+ array('Monolog Test; Chrome/1.0'),
+ array('Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0'),
+ array('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/56.0.2924.76 Chrome/56.0.2924.76 Safari/537.36'),
+ array('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) HeadlessChrome Safari/537.36'),
+ );
+ }
+
+ public function testHeadersOverflow()
+ {
+ $handler = new TestChromePHPHandler();
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::WARNING, str_repeat('a', 150 * 1024)));
+
+ // overflow chrome headers limit
+ $handler->handle($this->getRecord(Logger::WARNING, str_repeat('a', 100 * 1024)));
+
+ $expected = array(
+ 'X-ChromeLogger-Data' => base64_encode(utf8_encode(json_encode(array(
+ 'version' => ChromePHPHandler::VERSION,
+ 'columns' => array('label', 'log', 'backtrace', 'type'),
+ 'rows' => array(
+ array(
+ 'test',
+ 'test',
+ 'unknown',
+ 'log',
+ ),
+ array(
+ 'test',
+ str_repeat('a', 150 * 1024),
+ 'unknown',
+ 'warn',
+ ),
+ array(
+ 'monolog',
+ 'Incomplete logs, chrome header size limit reached',
+ 'unknown',
+ 'warn',
+ ),
+ ),
+ 'request_uri' => '',
+ )))),
+ );
+
+ $this->assertEquals($expected, $handler->getHeaders());
+ }
+
+ public function testConcurrentHandlers()
+ {
+ $handler = new TestChromePHPHandler();
+ $handler->setFormatter($this->getIdentityFormatter());
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::WARNING));
+
+ $handler2 = new TestChromePHPHandler();
+ $handler2->setFormatter($this->getIdentityFormatter());
+ $handler2->handle($this->getRecord(Logger::DEBUG));
+ $handler2->handle($this->getRecord(Logger::WARNING));
+
+ $expected = array(
+ 'X-ChromeLogger-Data' => base64_encode(utf8_encode(json_encode(array(
+ 'version' => ChromePHPHandler::VERSION,
+ 'columns' => array('label', 'log', 'backtrace', 'type'),
+ 'rows' => array(
+ 'test',
+ 'test',
+ 'test',
+ 'test',
+ ),
+ 'request_uri' => '',
+ )))),
+ );
+
+ $this->assertEquals($expected, $handler2->getHeaders());
+ }
+}
+
+class TestChromePHPHandler extends ChromePHPHandler
+{
+ protected $headers = array();
+
+ public static function reset()
+ {
+ self::$initialized = false;
+ self::$overflowed = false;
+ self::$sendHeaders = true;
+ self::$json['rows'] = array();
+ }
+
+ protected function sendHeader($header, $content)
+ {
+ $this->headers[$header] = $content;
+ }
+
+ public function getHeaders()
+ {
+ return $this->headers;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/CouchDBHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/CouchDBHandlerTest.php
new file mode 100644
index 0000000..75abdd9
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/CouchDBHandlerTest.php
@@ -0,0 +1,31 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+class CouchDBHandlerTest extends TestCase
+{
+ public function testHandle()
+ {
+ $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34));
+
+ $handler = new CouchDBHandler();
+
+ try {
+ $handler->handle($record);
+ } catch (\RuntimeException $e) {
+ $this->markTestSkipped('Could not connect to couchdb server on http://localhost:5984');
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/DeduplicationHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/DeduplicationHandlerTest.php
new file mode 100644
index 0000000..423bfa3
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/DeduplicationHandlerTest.php
@@ -0,0 +1,165 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+class DeduplicationHandlerTest extends TestCase
+{
+ /**
+ * @covers Monolog\Handler\DeduplicationHandler::flush
+ */
+ public function testFlushPassthruIfAllRecordsUnderTrigger()
+ {
+ $test = new TestHandler();
+ @unlink(sys_get_temp_dir().'/monolog_dedup.log');
+ $handler = new DeduplicationHandler($test, sys_get_temp_dir().'/monolog_dedup.log', 0);
+
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::INFO));
+
+ $handler->flush();
+
+ $this->assertTrue($test->hasInfoRecords());
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertFalse($test->hasWarningRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\DeduplicationHandler::flush
+ * @covers Monolog\Handler\DeduplicationHandler::appendRecord
+ */
+ public function testFlushPassthruIfEmptyLog()
+ {
+ $test = new TestHandler();
+ @unlink(sys_get_temp_dir().'/monolog_dedup.log');
+ $handler = new DeduplicationHandler($test, sys_get_temp_dir().'/monolog_dedup.log', 0);
+
+ $handler->handle($this->getRecord(Logger::ERROR, 'Foo:bar'));
+ $handler->handle($this->getRecord(Logger::CRITICAL, "Foo\nbar"));
+
+ $handler->flush();
+
+ $this->assertTrue($test->hasErrorRecords());
+ $this->assertTrue($test->hasCriticalRecords());
+ $this->assertFalse($test->hasWarningRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\DeduplicationHandler::flush
+ * @covers Monolog\Handler\DeduplicationHandler::appendRecord
+ * @covers Monolog\Handler\DeduplicationHandler::isDuplicate
+ * @depends testFlushPassthruIfEmptyLog
+ */
+ public function testFlushSkipsIfLogExists()
+ {
+ $test = new TestHandler();
+ $handler = new DeduplicationHandler($test, sys_get_temp_dir().'/monolog_dedup.log', 0);
+
+ $handler->handle($this->getRecord(Logger::ERROR, 'Foo:bar'));
+ $handler->handle($this->getRecord(Logger::CRITICAL, "Foo\nbar"));
+
+ $handler->flush();
+
+ $this->assertFalse($test->hasErrorRecords());
+ $this->assertFalse($test->hasCriticalRecords());
+ $this->assertFalse($test->hasWarningRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\DeduplicationHandler::flush
+ * @covers Monolog\Handler\DeduplicationHandler::appendRecord
+ * @covers Monolog\Handler\DeduplicationHandler::isDuplicate
+ * @depends testFlushPassthruIfEmptyLog
+ */
+ public function testFlushPassthruIfLogTooOld()
+ {
+ $test = new TestHandler();
+ $handler = new DeduplicationHandler($test, sys_get_temp_dir().'/monolog_dedup.log', 0);
+
+ $record = $this->getRecord(Logger::ERROR);
+ $record['datetime']->modify('+62seconds');
+ $handler->handle($record);
+ $record = $this->getRecord(Logger::CRITICAL);
+ $record['datetime']->modify('+62seconds');
+ $handler->handle($record);
+
+ $handler->flush();
+
+ $this->assertTrue($test->hasErrorRecords());
+ $this->assertTrue($test->hasCriticalRecords());
+ $this->assertFalse($test->hasWarningRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\DeduplicationHandler::flush
+ * @covers Monolog\Handler\DeduplicationHandler::appendRecord
+ * @covers Monolog\Handler\DeduplicationHandler::isDuplicate
+ * @covers Monolog\Handler\DeduplicationHandler::collectLogs
+ */
+ public function testGcOldLogs()
+ {
+ $test = new TestHandler();
+ @unlink(sys_get_temp_dir().'/monolog_dedup.log');
+ $handler = new DeduplicationHandler($test, sys_get_temp_dir().'/monolog_dedup.log', 0);
+
+ // handle two records from yesterday, and one recent
+ $record = $this->getRecord(Logger::ERROR);
+ $record['datetime']->modify('-1day -10seconds');
+ $handler->handle($record);
+ $record2 = $this->getRecord(Logger::CRITICAL);
+ $record2['datetime']->modify('-1day -10seconds');
+ $handler->handle($record2);
+ $record3 = $this->getRecord(Logger::CRITICAL);
+ $record3['datetime']->modify('-30seconds');
+ $handler->handle($record3);
+
+ // log is written as none of them are duplicate
+ $handler->flush();
+ $this->assertSame(
+ $record['datetime']->getTimestamp() . ":ERROR:test\n" .
+ $record2['datetime']->getTimestamp() . ":CRITICAL:test\n" .
+ $record3['datetime']->getTimestamp() . ":CRITICAL:test\n",
+ file_get_contents(sys_get_temp_dir() . '/monolog_dedup.log')
+ );
+ $this->assertTrue($test->hasErrorRecords());
+ $this->assertTrue($test->hasCriticalRecords());
+ $this->assertFalse($test->hasWarningRecords());
+
+ // clear test handler
+ $test->clear();
+ $this->assertFalse($test->hasErrorRecords());
+ $this->assertFalse($test->hasCriticalRecords());
+
+ // log new records, duplicate log gets GC'd at the end of this flush call
+ $handler->handle($record = $this->getRecord(Logger::ERROR));
+ $handler->handle($record2 = $this->getRecord(Logger::CRITICAL));
+ $handler->flush();
+
+ // log should now contain the new errors and the previous one that was recent enough
+ $this->assertSame(
+ $record3['datetime']->getTimestamp() . ":CRITICAL:test\n" .
+ $record['datetime']->getTimestamp() . ":ERROR:test\n" .
+ $record2['datetime']->getTimestamp() . ":CRITICAL:test\n",
+ file_get_contents(sys_get_temp_dir() . '/monolog_dedup.log')
+ );
+ $this->assertTrue($test->hasErrorRecords());
+ $this->assertTrue($test->hasCriticalRecords());
+ $this->assertFalse($test->hasWarningRecords());
+ }
+
+ public static function tearDownAfterClass()
+ {
+ @unlink(sys_get_temp_dir().'/monolog_dedup.log');
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/DoctrineCouchDBHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/DoctrineCouchDBHandlerTest.php
new file mode 100644
index 0000000..a751023
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/DoctrineCouchDBHandlerTest.php
@@ -0,0 +1,52 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+class DoctrineCouchDBHandlerTest extends TestCase
+{
+ protected function setup()
+ {
+ if (!class_exists('Doctrine\CouchDB\CouchDBClient')) {
+ $this->markTestSkipped('The "doctrine/couchdb" package is not installed');
+ }
+ }
+
+ public function testHandle()
+ {
+ $client = $this->getMockBuilder('Doctrine\\CouchDB\\CouchDBClient')
+ ->setMethods(array('postDocument'))
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34));
+
+ $expected = array(
+ 'message' => 'test',
+ 'context' => array('data' => '[object] (stdClass: {})', 'foo' => 34),
+ 'level' => Logger::WARNING,
+ 'level_name' => 'WARNING',
+ 'channel' => 'test',
+ 'datetime' => $record['datetime']->format('Y-m-d H:i:s'),
+ 'extra' => array(),
+ );
+
+ $client->expects($this->once())
+ ->method('postDocument')
+ ->with($expected);
+
+ $handler = new DoctrineCouchDBHandler($client);
+ $handler->handle($record);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/DynamoDbHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/DynamoDbHandlerTest.php
new file mode 100644
index 0000000..d83a839
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/DynamoDbHandlerTest.php
@@ -0,0 +1,82 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+
+class DynamoDbHandlerTest extends TestCase
+{
+ private $client;
+
+ public function setUp()
+ {
+ if (!class_exists('Aws\DynamoDb\DynamoDbClient')) {
+ $this->markTestSkipped('aws/aws-sdk-php not installed');
+ }
+
+ $this->client = $this->getMockBuilder('Aws\DynamoDb\DynamoDbClient')
+ ->setMethods(array('formatAttributes', '__call'))
+ ->disableOriginalConstructor()->getMock();
+ }
+
+ public function testConstruct()
+ {
+ $this->assertInstanceOf('Monolog\Handler\DynamoDbHandler', new DynamoDbHandler($this->client, 'foo'));
+ }
+
+ public function testInterface()
+ {
+ $this->assertInstanceOf('Monolog\Handler\HandlerInterface', new DynamoDbHandler($this->client, 'foo'));
+ }
+
+ public function testGetFormatter()
+ {
+ $handler = new DynamoDbHandler($this->client, 'foo');
+ $this->assertInstanceOf('Monolog\Formatter\ScalarFormatter', $handler->getFormatter());
+ }
+
+ public function testHandle()
+ {
+ $record = $this->getRecord();
+ $formatter = $this->getMock('Monolog\Formatter\FormatterInterface');
+ $formatted = array('foo' => 1, 'bar' => 2);
+ $handler = new DynamoDbHandler($this->client, 'foo');
+ $handler->setFormatter($formatter);
+
+ $isV3 = defined('Aws\Sdk::VERSION') && version_compare(\Aws\Sdk::VERSION, '3.0', '>=');
+ if ($isV3) {
+ $expFormatted = array('foo' => array('N' => 1), 'bar' => array('N' => 2));
+ } else {
+ $expFormatted = $formatted;
+ }
+
+ $formatter
+ ->expects($this->once())
+ ->method('format')
+ ->with($record)
+ ->will($this->returnValue($formatted));
+ $this->client
+ ->expects($isV3 ? $this->never() : $this->once())
+ ->method('formatAttributes')
+ ->with($this->isType('array'))
+ ->will($this->returnValue($formatted));
+ $this->client
+ ->expects($this->once())
+ ->method('__call')
+ ->with('putItem', array(array(
+ 'TableName' => 'foo',
+ 'Item' => $expFormatted,
+ )));
+
+ $handler->handle($record);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ElasticSearchHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ElasticSearchHandlerTest.php
new file mode 100644
index 0000000..08f3c3d
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ElasticSearchHandlerTest.php
@@ -0,0 +1,239 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\ElasticaFormatter;
+use Monolog\Formatter\NormalizerFormatter;
+use Monolog\TestCase;
+use Monolog\Logger;
+use Elastica\Client;
+use Elastica\Request;
+use Elastica\Response;
+
+class ElasticSearchHandlerTest extends TestCase
+{
+ /**
+ * @var Client mock
+ */
+ protected $client;
+
+ /**
+ * @var array Default handler options
+ */
+ protected $options = array(
+ 'index' => 'my_index',
+ 'type' => 'doc_type',
+ );
+
+ public function setUp()
+ {
+ // Elastica lib required
+ if (!class_exists("Elastica\Client")) {
+ $this->markTestSkipped("ruflin/elastica not installed");
+ }
+
+ // base mock Elastica Client object
+ $this->client = $this->getMockBuilder('Elastica\Client')
+ ->setMethods(array('addDocuments'))
+ ->disableOriginalConstructor()
+ ->getMock();
+ }
+
+ /**
+ * @covers Monolog\Handler\ElasticSearchHandler::write
+ * @covers Monolog\Handler\ElasticSearchHandler::handleBatch
+ * @covers Monolog\Handler\ElasticSearchHandler::bulkSend
+ * @covers Monolog\Handler\ElasticSearchHandler::getDefaultFormatter
+ */
+ public function testHandle()
+ {
+ // log message
+ $msg = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('foo' => 7, 'bar', 'class' => new \stdClass),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(),
+ 'message' => 'log',
+ );
+
+ // format expected result
+ $formatter = new ElasticaFormatter($this->options['index'], $this->options['type']);
+ $expected = array($formatter->format($msg));
+
+ // setup ES client mock
+ $this->client->expects($this->any())
+ ->method('addDocuments')
+ ->with($expected);
+
+ // perform tests
+ $handler = new ElasticSearchHandler($this->client, $this->options);
+ $handler->handle($msg);
+ $handler->handleBatch(array($msg));
+ }
+
+ /**
+ * @covers Monolog\Handler\ElasticSearchHandler::setFormatter
+ */
+ public function testSetFormatter()
+ {
+ $handler = new ElasticSearchHandler($this->client);
+ $formatter = new ElasticaFormatter('index_new', 'type_new');
+ $handler->setFormatter($formatter);
+ $this->assertInstanceOf('Monolog\Formatter\ElasticaFormatter', $handler->getFormatter());
+ $this->assertEquals('index_new', $handler->getFormatter()->getIndex());
+ $this->assertEquals('type_new', $handler->getFormatter()->getType());
+ }
+
+ /**
+ * @covers Monolog\Handler\ElasticSearchHandler::setFormatter
+ * @expectedException InvalidArgumentException
+ * @expectedExceptionMessage ElasticSearchHandler is only compatible with ElasticaFormatter
+ */
+ public function testSetFormatterInvalid()
+ {
+ $handler = new ElasticSearchHandler($this->client);
+ $formatter = new NormalizerFormatter();
+ $handler->setFormatter($formatter);
+ }
+
+ /**
+ * @covers Monolog\Handler\ElasticSearchHandler::__construct
+ * @covers Monolog\Handler\ElasticSearchHandler::getOptions
+ */
+ public function testOptions()
+ {
+ $expected = array(
+ 'index' => $this->options['index'],
+ 'type' => $this->options['type'],
+ 'ignore_error' => false,
+ );
+ $handler = new ElasticSearchHandler($this->client, $this->options);
+ $this->assertEquals($expected, $handler->getOptions());
+ }
+
+ /**
+ * @covers Monolog\Handler\ElasticSearchHandler::bulkSend
+ * @dataProvider providerTestConnectionErrors
+ */
+ public function testConnectionErrors($ignore, $expectedError)
+ {
+ $clientOpts = array('host' => '127.0.0.1', 'port' => 1);
+ $client = new Client($clientOpts);
+ $handlerOpts = array('ignore_error' => $ignore);
+ $handler = new ElasticSearchHandler($client, $handlerOpts);
+
+ if ($expectedError) {
+ $this->setExpectedException($expectedError[0], $expectedError[1]);
+ $handler->handle($this->getRecord());
+ } else {
+ $this->assertFalse($handler->handle($this->getRecord()));
+ }
+ }
+
+ /**
+ * @return array
+ */
+ public function providerTestConnectionErrors()
+ {
+ return array(
+ array(false, array('RuntimeException', 'Error sending messages to Elasticsearch')),
+ array(true, false),
+ );
+ }
+
+ /**
+ * Integration test using localhost Elastic Search server
+ *
+ * @covers Monolog\Handler\ElasticSearchHandler::__construct
+ * @covers Monolog\Handler\ElasticSearchHandler::handleBatch
+ * @covers Monolog\Handler\ElasticSearchHandler::bulkSend
+ * @covers Monolog\Handler\ElasticSearchHandler::getDefaultFormatter
+ */
+ public function testHandleIntegration()
+ {
+ $msg = array(
+ 'level' => Logger::ERROR,
+ 'level_name' => 'ERROR',
+ 'channel' => 'meh',
+ 'context' => array('foo' => 7, 'bar', 'class' => new \stdClass),
+ 'datetime' => new \DateTime("@0"),
+ 'extra' => array(),
+ 'message' => 'log',
+ );
+
+ $expected = $msg;
+ $expected['datetime'] = $msg['datetime']->format(\DateTime::ISO8601);
+ $expected['context'] = array(
+ 'class' => '[object] (stdClass: {})',
+ 'foo' => 7,
+ 0 => 'bar',
+ );
+
+ $client = new Client();
+ $handler = new ElasticSearchHandler($client, $this->options);
+ try {
+ $handler->handleBatch(array($msg));
+ } catch (\RuntimeException $e) {
+ $this->markTestSkipped("Cannot connect to Elastic Search server on localhost");
+ }
+
+ // check document id from ES server response
+ $documentId = $this->getCreatedDocId($client->getLastResponse());
+ $this->assertNotEmpty($documentId, 'No elastic document id received');
+
+ // retrieve document source from ES and validate
+ $document = $this->getDocSourceFromElastic(
+ $client,
+ $this->options['index'],
+ $this->options['type'],
+ $documentId
+ );
+ $this->assertEquals($expected, $document);
+
+ // remove test index from ES
+ $client->request("/{$this->options['index']}", Request::DELETE);
+ }
+
+ /**
+ * Return last created document id from ES response
+ * @param Response $response Elastica Response object
+ * @return string|null
+ */
+ protected function getCreatedDocId(Response $response)
+ {
+ $data = $response->getData();
+ if (!empty($data['items'][0]['create']['_id'])) {
+ return $data['items'][0]['create']['_id'];
+ }
+ }
+
+ /**
+ * Retrieve document by id from Elasticsearch
+ * @param Client $client Elastica client
+ * @param string $index
+ * @param string $type
+ * @param string $documentId
+ * @return array
+ */
+ protected function getDocSourceFromElastic(Client $client, $index, $type, $documentId)
+ {
+ $resp = $client->request("/{$index}/{$type}/{$documentId}", Request::GET);
+ $data = $resp->getData();
+ if (!empty($data['_source'])) {
+ return $data['_source'];
+ }
+
+ return array();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ErrorLogHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ErrorLogHandlerTest.php
new file mode 100644
index 0000000..e948d6c
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ErrorLogHandlerTest.php
@@ -0,0 +1,66 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+use Monolog\Formatter\LineFormatter;
+
+function error_log()
+{
+ $GLOBALS['error_log'][] = func_get_args();
+}
+
+class ErrorLogHandlerTest extends TestCase
+{
+ protected function setUp()
+ {
+ $GLOBALS['error_log'] = array();
+ }
+
+ /**
+ * @covers Monolog\Handler\ErrorLogHandler::__construct
+ * @expectedException InvalidArgumentException
+ * @expectedExceptionMessage The given message type "42" is not supported
+ */
+ public function testShouldNotAcceptAnInvalidTypeOnContructor()
+ {
+ new ErrorLogHandler(42);
+ }
+
+ /**
+ * @covers Monolog\Handler\ErrorLogHandler::write
+ */
+ public function testShouldLogMessagesUsingErrorLogFuncion()
+ {
+ $type = ErrorLogHandler::OPERATING_SYSTEM;
+ $handler = new ErrorLogHandler($type);
+ $handler->setFormatter(new LineFormatter('%channel%.%level_name%: %message% %context% %extra%', null, true));
+ $handler->handle($this->getRecord(Logger::ERROR, "Foo\nBar\r\n\r\nBaz"));
+
+ $this->assertSame("test.ERROR: Foo\nBar\r\n\r\nBaz [] []", $GLOBALS['error_log'][0][0]);
+ $this->assertSame($GLOBALS['error_log'][0][1], $type);
+
+ $handler = new ErrorLogHandler($type, Logger::DEBUG, true, true);
+ $handler->setFormatter(new LineFormatter(null, null, true));
+ $handler->handle($this->getRecord(Logger::ERROR, "Foo\nBar\r\n\r\nBaz"));
+
+ $this->assertStringMatchesFormat('[%s] test.ERROR: Foo', $GLOBALS['error_log'][1][0]);
+ $this->assertSame($GLOBALS['error_log'][1][1], $type);
+
+ $this->assertStringMatchesFormat('Bar', $GLOBALS['error_log'][2][0]);
+ $this->assertSame($GLOBALS['error_log'][2][1], $type);
+
+ $this->assertStringMatchesFormat('Baz [] []', $GLOBALS['error_log'][3][0]);
+ $this->assertSame($GLOBALS['error_log'][3][1], $type);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FilterHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FilterHandlerTest.php
new file mode 100644
index 0000000..5a4aec5
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FilterHandlerTest.php
@@ -0,0 +1,170 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\TestCase;
+
+class FilterHandlerTest extends TestCase
+{
+ /**
+ * @covers Monolog\Handler\FilterHandler::isHandling
+ */
+ public function testIsHandling()
+ {
+ $test = new TestHandler();
+ $handler = new FilterHandler($test, Logger::INFO, Logger::NOTICE);
+ $this->assertFalse($handler->isHandling($this->getRecord(Logger::DEBUG)));
+ $this->assertTrue($handler->isHandling($this->getRecord(Logger::INFO)));
+ $this->assertTrue($handler->isHandling($this->getRecord(Logger::NOTICE)));
+ $this->assertFalse($handler->isHandling($this->getRecord(Logger::WARNING)));
+ $this->assertFalse($handler->isHandling($this->getRecord(Logger::ERROR)));
+ $this->assertFalse($handler->isHandling($this->getRecord(Logger::CRITICAL)));
+ $this->assertFalse($handler->isHandling($this->getRecord(Logger::ALERT)));
+ $this->assertFalse($handler->isHandling($this->getRecord(Logger::EMERGENCY)));
+ }
+
+ /**
+ * @covers Monolog\Handler\FilterHandler::handle
+ * @covers Monolog\Handler\FilterHandler::setAcceptedLevels
+ * @covers Monolog\Handler\FilterHandler::isHandling
+ */
+ public function testHandleProcessOnlyNeededLevels()
+ {
+ $test = new TestHandler();
+ $handler = new FilterHandler($test, Logger::INFO, Logger::NOTICE);
+
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $this->assertFalse($test->hasDebugRecords());
+
+ $handler->handle($this->getRecord(Logger::INFO));
+ $this->assertTrue($test->hasInfoRecords());
+ $handler->handle($this->getRecord(Logger::NOTICE));
+ $this->assertTrue($test->hasNoticeRecords());
+
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $this->assertFalse($test->hasWarningRecords());
+ $handler->handle($this->getRecord(Logger::ERROR));
+ $this->assertFalse($test->hasErrorRecords());
+ $handler->handle($this->getRecord(Logger::CRITICAL));
+ $this->assertFalse($test->hasCriticalRecords());
+ $handler->handle($this->getRecord(Logger::ALERT));
+ $this->assertFalse($test->hasAlertRecords());
+ $handler->handle($this->getRecord(Logger::EMERGENCY));
+ $this->assertFalse($test->hasEmergencyRecords());
+
+ $test = new TestHandler();
+ $handler = new FilterHandler($test, array(Logger::INFO, Logger::ERROR));
+
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $this->assertFalse($test->hasDebugRecords());
+ $handler->handle($this->getRecord(Logger::INFO));
+ $this->assertTrue($test->hasInfoRecords());
+ $handler->handle($this->getRecord(Logger::NOTICE));
+ $this->assertFalse($test->hasNoticeRecords());
+ $handler->handle($this->getRecord(Logger::ERROR));
+ $this->assertTrue($test->hasErrorRecords());
+ $handler->handle($this->getRecord(Logger::CRITICAL));
+ $this->assertFalse($test->hasCriticalRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\FilterHandler::setAcceptedLevels
+ * @covers Monolog\Handler\FilterHandler::getAcceptedLevels
+ */
+ public function testAcceptedLevelApi()
+ {
+ $test = new TestHandler();
+ $handler = new FilterHandler($test);
+
+ $levels = array(Logger::INFO, Logger::ERROR);
+ $handler->setAcceptedLevels($levels);
+ $this->assertSame($levels, $handler->getAcceptedLevels());
+
+ $handler->setAcceptedLevels(array('info', 'error'));
+ $this->assertSame($levels, $handler->getAcceptedLevels());
+
+ $levels = array(Logger::CRITICAL, Logger::ALERT, Logger::EMERGENCY);
+ $handler->setAcceptedLevels(Logger::CRITICAL, Logger::EMERGENCY);
+ $this->assertSame($levels, $handler->getAcceptedLevels());
+
+ $handler->setAcceptedLevels('critical', 'emergency');
+ $this->assertSame($levels, $handler->getAcceptedLevels());
+ }
+
+ /**
+ * @covers Monolog\Handler\FilterHandler::handle
+ */
+ public function testHandleUsesProcessors()
+ {
+ $test = new TestHandler();
+ $handler = new FilterHandler($test, Logger::DEBUG, Logger::EMERGENCY);
+ $handler->pushProcessor(
+ function ($record) {
+ $record['extra']['foo'] = true;
+
+ return $record;
+ }
+ );
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $this->assertTrue($test->hasWarningRecords());
+ $records = $test->getRecords();
+ $this->assertTrue($records[0]['extra']['foo']);
+ }
+
+ /**
+ * @covers Monolog\Handler\FilterHandler::handle
+ */
+ public function testHandleRespectsBubble()
+ {
+ $test = new TestHandler();
+
+ $handler = new FilterHandler($test, Logger::INFO, Logger::NOTICE, false);
+ $this->assertTrue($handler->handle($this->getRecord(Logger::INFO)));
+ $this->assertFalse($handler->handle($this->getRecord(Logger::WARNING)));
+
+ $handler = new FilterHandler($test, Logger::INFO, Logger::NOTICE, true);
+ $this->assertFalse($handler->handle($this->getRecord(Logger::INFO)));
+ $this->assertFalse($handler->handle($this->getRecord(Logger::WARNING)));
+ }
+
+ /**
+ * @covers Monolog\Handler\FilterHandler::handle
+ */
+ public function testHandleWithCallback()
+ {
+ $test = new TestHandler();
+ $handler = new FilterHandler(
+ function ($record, $handler) use ($test) {
+ return $test;
+ }, Logger::INFO, Logger::NOTICE, false
+ );
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::INFO));
+ $this->assertFalse($test->hasDebugRecords());
+ $this->assertTrue($test->hasInfoRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\FilterHandler::handle
+ * @expectedException \RuntimeException
+ */
+ public function testHandleWithBadCallbackThrowsException()
+ {
+ $handler = new FilterHandler(
+ function ($record, $handler) {
+ return 'foo';
+ }
+ );
+ $handler->handle($this->getRecord(Logger::WARNING));
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FingersCrossedHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FingersCrossedHandlerTest.php
new file mode 100644
index 0000000..92e2f3c
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FingersCrossedHandlerTest.php
@@ -0,0 +1,279 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+use Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy;
+use Monolog\Handler\FingersCrossed\ChannelLevelActivationStrategy;
+use Psr\Log\LogLevel;
+
+class FingersCrossedHandlerTest extends TestCase
+{
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::__construct
+ * @covers Monolog\Handler\FingersCrossedHandler::handle
+ * @covers Monolog\Handler\FingersCrossedHandler::activate
+ */
+ public function testHandleBuffers()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test);
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::INFO));
+ $this->assertFalse($test->hasDebugRecords());
+ $this->assertFalse($test->hasInfoRecords());
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $handler->close();
+ $this->assertTrue($test->hasInfoRecords());
+ $this->assertTrue(count($test->getRecords()) === 3);
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::handle
+ * @covers Monolog\Handler\FingersCrossedHandler::activate
+ */
+ public function testHandleStopsBufferingAfterTrigger()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test);
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->close();
+ $this->assertTrue($test->hasWarningRecords());
+ $this->assertTrue($test->hasDebugRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::handle
+ * @covers Monolog\Handler\FingersCrossedHandler::activate
+ * @covers Monolog\Handler\FingersCrossedHandler::reset
+ */
+ public function testHandleRestartBufferingAfterReset()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test);
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->reset();
+ $handler->handle($this->getRecord(Logger::INFO));
+ $handler->close();
+ $this->assertTrue($test->hasWarningRecords());
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertFalse($test->hasInfoRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::handle
+ * @covers Monolog\Handler\FingersCrossedHandler::activate
+ */
+ public function testHandleRestartBufferingAfterBeingTriggeredWhenStopBufferingIsDisabled()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test, Logger::WARNING, 0, false, false);
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $handler->handle($this->getRecord(Logger::INFO));
+ $handler->close();
+ $this->assertTrue($test->hasWarningRecords());
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertFalse($test->hasInfoRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::handle
+ * @covers Monolog\Handler\FingersCrossedHandler::activate
+ */
+ public function testHandleBufferLimit()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test, Logger::WARNING, 2);
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::INFO));
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $this->assertTrue($test->hasWarningRecords());
+ $this->assertTrue($test->hasInfoRecords());
+ $this->assertFalse($test->hasDebugRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::handle
+ * @covers Monolog\Handler\FingersCrossedHandler::activate
+ */
+ public function testHandleWithCallback()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler(function ($record, $handler) use ($test) {
+ return $test;
+ });
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::INFO));
+ $this->assertFalse($test->hasDebugRecords());
+ $this->assertFalse($test->hasInfoRecords());
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $this->assertTrue($test->hasInfoRecords());
+ $this->assertTrue(count($test->getRecords()) === 3);
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::handle
+ * @covers Monolog\Handler\FingersCrossedHandler::activate
+ * @expectedException RuntimeException
+ */
+ public function testHandleWithBadCallbackThrowsException()
+ {
+ $handler = new FingersCrossedHandler(function ($record, $handler) {
+ return 'foo';
+ });
+ $handler->handle($this->getRecord(Logger::WARNING));
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::isHandling
+ */
+ public function testIsHandlingAlways()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test, Logger::ERROR);
+ $this->assertTrue($handler->isHandling($this->getRecord(Logger::DEBUG)));
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::__construct
+ * @covers Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy::__construct
+ * @covers Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy::isHandlerActivated
+ */
+ public function testErrorLevelActivationStrategy()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test, new ErrorLevelActivationStrategy(Logger::WARNING));
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $this->assertFalse($test->hasDebugRecords());
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertTrue($test->hasWarningRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::__construct
+ * @covers Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy::__construct
+ * @covers Monolog\Handler\FingersCrossed\ErrorLevelActivationStrategy::isHandlerActivated
+ */
+ public function testErrorLevelActivationStrategyWithPsrLevel()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test, new ErrorLevelActivationStrategy('warning'));
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $this->assertFalse($test->hasDebugRecords());
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertTrue($test->hasWarningRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::__construct
+ * @covers Monolog\Handler\FingersCrossedHandler::activate
+ */
+ public function testOverrideActivationStrategy()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test, new ErrorLevelActivationStrategy('warning'));
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $this->assertFalse($test->hasDebugRecords());
+ $handler->activate();
+ $this->assertTrue($test->hasDebugRecords());
+ $handler->handle($this->getRecord(Logger::INFO));
+ $this->assertTrue($test->hasInfoRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossed\ChannelLevelActivationStrategy::__construct
+ * @covers Monolog\Handler\FingersCrossed\ChannelLevelActivationStrategy::isHandlerActivated
+ */
+ public function testChannelLevelActivationStrategy()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test, new ChannelLevelActivationStrategy(Logger::ERROR, array('othertest' => Logger::DEBUG)));
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $this->assertFalse($test->hasWarningRecords());
+ $record = $this->getRecord(Logger::DEBUG);
+ $record['channel'] = 'othertest';
+ $handler->handle($record);
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertTrue($test->hasWarningRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossed\ChannelLevelActivationStrategy::__construct
+ * @covers Monolog\Handler\FingersCrossed\ChannelLevelActivationStrategy::isHandlerActivated
+ */
+ public function testChannelLevelActivationStrategyWithPsrLevels()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test, new ChannelLevelActivationStrategy('error', array('othertest' => 'debug')));
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $this->assertFalse($test->hasWarningRecords());
+ $record = $this->getRecord(Logger::DEBUG);
+ $record['channel'] = 'othertest';
+ $handler->handle($record);
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertTrue($test->hasWarningRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::handle
+ * @covers Monolog\Handler\FingersCrossedHandler::activate
+ */
+ public function testHandleUsesProcessors()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test, Logger::INFO);
+ $handler->pushProcessor(function ($record) {
+ $record['extra']['foo'] = true;
+
+ return $record;
+ });
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $this->assertTrue($test->hasWarningRecords());
+ $records = $test->getRecords();
+ $this->assertTrue($records[0]['extra']['foo']);
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::close
+ */
+ public function testPassthruOnClose()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test, new ErrorLevelActivationStrategy(Logger::WARNING), 0, true, true, Logger::INFO);
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::INFO));
+ $handler->close();
+ $this->assertFalse($test->hasDebugRecords());
+ $this->assertTrue($test->hasInfoRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\FingersCrossedHandler::close
+ */
+ public function testPsrLevelPassthruOnClose()
+ {
+ $test = new TestHandler();
+ $handler = new FingersCrossedHandler($test, new ErrorLevelActivationStrategy(Logger::WARNING), 0, true, true, LogLevel::INFO);
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::INFO));
+ $handler->close();
+ $this->assertFalse($test->hasDebugRecords());
+ $this->assertTrue($test->hasInfoRecords());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FirePHPHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FirePHPHandlerTest.php
new file mode 100644
index 0000000..c0836be
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FirePHPHandlerTest.php
@@ -0,0 +1,96 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+/**
+ * @covers Monolog\Handler\FirePHPHandler
+ */
+class FirePHPHandlerTest extends TestCase
+{
+ public function setUp()
+ {
+ TestFirePHPHandler::reset();
+ $_SERVER['HTTP_USER_AGENT'] = 'Monolog Test; FirePHP/1.0';
+ }
+
+ public function testHeaders()
+ {
+ $handler = new TestFirePHPHandler;
+ $handler->setFormatter($this->getIdentityFormatter());
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::WARNING));
+
+ $expected = array(
+ 'X-Wf-Protocol-1' => 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2',
+ 'X-Wf-1-Structure-1' => 'http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1',
+ 'X-Wf-1-Plugin-1' => 'http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3',
+ 'X-Wf-1-1-1-1' => 'test',
+ 'X-Wf-1-1-1-2' => 'test',
+ );
+
+ $this->assertEquals($expected, $handler->getHeaders());
+ }
+
+ public function testConcurrentHandlers()
+ {
+ $handler = new TestFirePHPHandler;
+ $handler->setFormatter($this->getIdentityFormatter());
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::WARNING));
+
+ $handler2 = new TestFirePHPHandler;
+ $handler2->setFormatter($this->getIdentityFormatter());
+ $handler2->handle($this->getRecord(Logger::DEBUG));
+ $handler2->handle($this->getRecord(Logger::WARNING));
+
+ $expected = array(
+ 'X-Wf-Protocol-1' => 'http://meta.wildfirehq.org/Protocol/JsonStream/0.2',
+ 'X-Wf-1-Structure-1' => 'http://meta.firephp.org/Wildfire/Structure/FirePHP/FirebugConsole/0.1',
+ 'X-Wf-1-Plugin-1' => 'http://meta.firephp.org/Wildfire/Plugin/FirePHP/Library-FirePHPCore/0.3',
+ 'X-Wf-1-1-1-1' => 'test',
+ 'X-Wf-1-1-1-2' => 'test',
+ );
+
+ $expected2 = array(
+ 'X-Wf-1-1-1-3' => 'test',
+ 'X-Wf-1-1-1-4' => 'test',
+ );
+
+ $this->assertEquals($expected, $handler->getHeaders());
+ $this->assertEquals($expected2, $handler2->getHeaders());
+ }
+}
+
+class TestFirePHPHandler extends FirePHPHandler
+{
+ protected $headers = array();
+
+ public static function reset()
+ {
+ self::$initialized = false;
+ self::$sendHeaders = true;
+ self::$messageIndex = 1;
+ }
+
+ protected function sendHeader($header, $content)
+ {
+ $this->headers[$header] = $content;
+ }
+
+ public function getHeaders()
+ {
+ return $this->headers;
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/Fixtures/.gitkeep b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/Fixtures/.gitkeep
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/Fixtures/.gitkeep
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FleepHookHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FleepHookHandlerTest.php
new file mode 100644
index 0000000..1b7bc5e
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FleepHookHandlerTest.php
@@ -0,0 +1,85 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\LineFormatter;
+use Monolog\Logger;
+use Monolog\TestCase;
+
+/**
+ * @coversDefaultClass \Monolog\Handler\FleepHookHandler
+ */
+class FleepHookHandlerTest extends TestCase
+{
+ /**
+ * Default token to use in tests
+ */
+ const TOKEN = '123abc';
+
+ /**
+ * @var FleepHookHandler
+ */
+ private $handler;
+
+ public function setUp()
+ {
+ parent::setUp();
+
+ if (!extension_loaded('openssl')) {
+ $this->markTestSkipped('This test requires openssl extension to run');
+ }
+
+ // Create instances of the handler and logger for convenience
+ $this->handler = new FleepHookHandler(self::TOKEN);
+ }
+
+ /**
+ * @covers ::__construct
+ */
+ public function testConstructorSetsExpectedDefaults()
+ {
+ $this->assertEquals(Logger::DEBUG, $this->handler->getLevel());
+ $this->assertEquals(true, $this->handler->getBubble());
+ }
+
+ /**
+ * @covers ::getDefaultFormatter
+ */
+ public function testHandlerUsesLineFormatterWhichIgnoresEmptyArrays()
+ {
+ $record = array(
+ 'message' => 'msg',
+ 'context' => array(),
+ 'level' => Logger::DEBUG,
+ 'level_name' => Logger::getLevelName(Logger::DEBUG),
+ 'channel' => 'channel',
+ 'datetime' => new \DateTime(),
+ 'extra' => array(),
+ );
+
+ $expectedFormatter = new LineFormatter(null, null, true, true);
+ $expected = $expectedFormatter->format($record);
+
+ $handlerFormatter = $this->handler->getFormatter();
+ $actual = $handlerFormatter->format($record);
+
+ $this->assertEquals($expected, $actual, 'Empty context and extra arrays should not be rendered');
+ }
+
+ /**
+ * @covers ::__construct
+ */
+ public function testConnectionStringisConstructedCorrectly()
+ {
+ $this->assertEquals('ssl://' . FleepHookHandler::FLEEP_HOST . ':443', $this->handler->getConnectionString());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FlowdockHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FlowdockHandlerTest.php
new file mode 100644
index 0000000..832b8c8
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/FlowdockHandlerTest.php
@@ -0,0 +1,88 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\FlowdockFormatter;
+use Monolog\TestCase;
+use Monolog\Logger;
+
+/**
+ * @author Dominik Liebler <liebler.dominik@gmail.com>
+ * @see https://www.hipchat.com/docs/api
+ */
+class FlowdockHandlerTest extends TestCase
+{
+ /**
+ * @var resource
+ */
+ private $res;
+
+ /**
+ * @var FlowdockHandler
+ */
+ private $handler;
+
+ public function setUp()
+ {
+ if (!extension_loaded('openssl')) {
+ $this->markTestSkipped('This test requires openssl to run');
+ }
+ }
+
+ public function testWriteHeader()
+ {
+ $this->createHandler();
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/POST \/v1\/messages\/team_inbox\/.* HTTP\/1.1\\r\\nHost: api.flowdock.com\\r\\nContent-Type: application\/json\\r\\nContent-Length: \d{2,4}\\r\\n\\r\\n/', $content);
+
+ return $content;
+ }
+
+ /**
+ * @depends testWriteHeader
+ */
+ public function testWriteContent($content)
+ {
+ $this->assertRegexp('/"source":"test_source"/', $content);
+ $this->assertRegexp('/"from_address":"source@test\.com"/', $content);
+ }
+
+ private function createHandler($token = 'myToken')
+ {
+ $constructorArgs = array($token, Logger::DEBUG);
+ $this->res = fopen('php://memory', 'a');
+ $this->handler = $this->getMock(
+ '\Monolog\Handler\FlowdockHandler',
+ array('fsockopen', 'streamSetTimeout', 'closeSocket'),
+ $constructorArgs
+ );
+
+ $reflectionProperty = new \ReflectionProperty('\Monolog\Handler\SocketHandler', 'connectionString');
+ $reflectionProperty->setAccessible(true);
+ $reflectionProperty->setValue($this->handler, 'localhost:1234');
+
+ $this->handler->expects($this->any())
+ ->method('fsockopen')
+ ->will($this->returnValue($this->res));
+ $this->handler->expects($this->any())
+ ->method('streamSetTimeout')
+ ->will($this->returnValue(true));
+ $this->handler->expects($this->any())
+ ->method('closeSocket')
+ ->will($this->returnValue(true));
+
+ $this->handler->setFormatter(new FlowdockFormatter('test_source', 'source@test.com'));
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GelfHandlerLegacyTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GelfHandlerLegacyTest.php
new file mode 100644
index 0000000..13a7784
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GelfHandlerLegacyTest.php
@@ -0,0 +1,95 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Gelf\Message;
+use Monolog\TestCase;
+use Monolog\Logger;
+use Monolog\Formatter\GelfMessageFormatter;
+
+class GelfHandlerLegacyTest extends TestCase
+{
+ public function setUp()
+ {
+ if (!class_exists('Gelf\MessagePublisher') || !class_exists('Gelf\Message')) {
+ $this->markTestSkipped("mlehner/gelf-php not installed");
+ }
+
+ require_once __DIR__ . '/GelfMockMessagePublisher.php';
+ }
+
+ /**
+ * @covers Monolog\Handler\GelfHandler::__construct
+ */
+ public function testConstruct()
+ {
+ $handler = new GelfHandler($this->getMessagePublisher());
+ $this->assertInstanceOf('Monolog\Handler\GelfHandler', $handler);
+ }
+
+ protected function getHandler($messagePublisher)
+ {
+ $handler = new GelfHandler($messagePublisher);
+
+ return $handler;
+ }
+
+ protected function getMessagePublisher()
+ {
+ return new GelfMockMessagePublisher('localhost');
+ }
+
+ public function testDebug()
+ {
+ $messagePublisher = $this->getMessagePublisher();
+ $handler = $this->getHandler($messagePublisher);
+
+ $record = $this->getRecord(Logger::DEBUG, "A test debug message");
+ $handler->handle($record);
+
+ $this->assertEquals(7, $messagePublisher->lastMessage->getLevel());
+ $this->assertEquals('test', $messagePublisher->lastMessage->getFacility());
+ $this->assertEquals($record['message'], $messagePublisher->lastMessage->getShortMessage());
+ $this->assertEquals(null, $messagePublisher->lastMessage->getFullMessage());
+ }
+
+ public function testWarning()
+ {
+ $messagePublisher = $this->getMessagePublisher();
+ $handler = $this->getHandler($messagePublisher);
+
+ $record = $this->getRecord(Logger::WARNING, "A test warning message");
+ $handler->handle($record);
+
+ $this->assertEquals(4, $messagePublisher->lastMessage->getLevel());
+ $this->assertEquals('test', $messagePublisher->lastMessage->getFacility());
+ $this->assertEquals($record['message'], $messagePublisher->lastMessage->getShortMessage());
+ $this->assertEquals(null, $messagePublisher->lastMessage->getFullMessage());
+ }
+
+ public function testInjectedGelfMessageFormatter()
+ {
+ $messagePublisher = $this->getMessagePublisher();
+ $handler = $this->getHandler($messagePublisher);
+
+ $handler->setFormatter(new GelfMessageFormatter('mysystem', 'EXT', 'CTX'));
+
+ $record = $this->getRecord(Logger::WARNING, "A test warning message");
+ $record['extra']['blarg'] = 'yep';
+ $record['context']['from'] = 'logger';
+ $handler->handle($record);
+
+ $this->assertEquals('mysystem', $messagePublisher->lastMessage->getHost());
+ $this->assertArrayHasKey('_EXTblarg', $messagePublisher->lastMessage->toArray());
+ $this->assertArrayHasKey('_CTXfrom', $messagePublisher->lastMessage->toArray());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GelfHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GelfHandlerTest.php
new file mode 100644
index 0000000..469f000
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GelfHandlerTest.php
@@ -0,0 +1,117 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Gelf\Message;
+use Monolog\TestCase;
+use Monolog\Logger;
+use Monolog\Formatter\GelfMessageFormatter;
+
+class GelfHandlerTest extends TestCase
+{
+ public function setUp()
+ {
+ if (!class_exists('Gelf\Publisher') || !class_exists('Gelf\Message')) {
+ $this->markTestSkipped("graylog2/gelf-php not installed");
+ }
+ }
+
+ /**
+ * @covers Monolog\Handler\GelfHandler::__construct
+ */
+ public function testConstruct()
+ {
+ $handler = new GelfHandler($this->getMessagePublisher());
+ $this->assertInstanceOf('Monolog\Handler\GelfHandler', $handler);
+ }
+
+ protected function getHandler($messagePublisher)
+ {
+ $handler = new GelfHandler($messagePublisher);
+
+ return $handler;
+ }
+
+ protected function getMessagePublisher()
+ {
+ return $this->getMock('Gelf\Publisher', array('publish'), array(), '', false);
+ }
+
+ public function testDebug()
+ {
+ $record = $this->getRecord(Logger::DEBUG, "A test debug message");
+ $expectedMessage = new Message();
+ $expectedMessage
+ ->setLevel(7)
+ ->setFacility("test")
+ ->setShortMessage($record['message'])
+ ->setTimestamp($record['datetime'])
+ ;
+
+ $messagePublisher = $this->getMessagePublisher();
+ $messagePublisher->expects($this->once())
+ ->method('publish')
+ ->with($expectedMessage);
+
+ $handler = $this->getHandler($messagePublisher);
+
+ $handler->handle($record);
+ }
+
+ public function testWarning()
+ {
+ $record = $this->getRecord(Logger::WARNING, "A test warning message");
+ $expectedMessage = new Message();
+ $expectedMessage
+ ->setLevel(4)
+ ->setFacility("test")
+ ->setShortMessage($record['message'])
+ ->setTimestamp($record['datetime'])
+ ;
+
+ $messagePublisher = $this->getMessagePublisher();
+ $messagePublisher->expects($this->once())
+ ->method('publish')
+ ->with($expectedMessage);
+
+ $handler = $this->getHandler($messagePublisher);
+
+ $handler->handle($record);
+ }
+
+ public function testInjectedGelfMessageFormatter()
+ {
+ $record = $this->getRecord(Logger::WARNING, "A test warning message");
+ $record['extra']['blarg'] = 'yep';
+ $record['context']['from'] = 'logger';
+
+ $expectedMessage = new Message();
+ $expectedMessage
+ ->setLevel(4)
+ ->setFacility("test")
+ ->setHost("mysystem")
+ ->setShortMessage($record['message'])
+ ->setTimestamp($record['datetime'])
+ ->setAdditional("EXTblarg", 'yep')
+ ->setAdditional("CTXfrom", 'logger')
+ ;
+
+ $messagePublisher = $this->getMessagePublisher();
+ $messagePublisher->expects($this->once())
+ ->method('publish')
+ ->with($expectedMessage);
+
+ $handler = $this->getHandler($messagePublisher);
+ $handler->setFormatter(new GelfMessageFormatter('mysystem', 'EXT', 'CTX'));
+ $handler->handle($record);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GelfMockMessagePublisher.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GelfMockMessagePublisher.php
new file mode 100644
index 0000000..de195b1
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GelfMockMessagePublisher.php
@@ -0,0 +1,25 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Gelf\MessagePublisher;
+use Gelf\Message;
+
+class GelfMockMessagePublisher extends MessagePublisher
+{
+ public function publish(Message $message)
+ {
+ $this->lastMessage = $message;
+ }
+
+ public $lastMessage = null;
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GroupHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GroupHandlerTest.php
new file mode 100644
index 0000000..bc25241
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/GroupHandlerTest.php
@@ -0,0 +1,112 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+class GroupHandlerTest extends TestCase
+{
+ /**
+ * @covers Monolog\Handler\GroupHandler::__construct
+ * @expectedException InvalidArgumentException
+ */
+ public function testConstructorOnlyTakesHandler()
+ {
+ new GroupHandler(array(new TestHandler(), "foo"));
+ }
+
+ /**
+ * @covers Monolog\Handler\GroupHandler::__construct
+ * @covers Monolog\Handler\GroupHandler::handle
+ */
+ public function testHandle()
+ {
+ $testHandlers = array(new TestHandler(), new TestHandler());
+ $handler = new GroupHandler($testHandlers);
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::INFO));
+ foreach ($testHandlers as $test) {
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertTrue($test->hasInfoRecords());
+ $this->assertTrue(count($test->getRecords()) === 2);
+ }
+ }
+
+ /**
+ * @covers Monolog\Handler\GroupHandler::handleBatch
+ */
+ public function testHandleBatch()
+ {
+ $testHandlers = array(new TestHandler(), new TestHandler());
+ $handler = new GroupHandler($testHandlers);
+ $handler->handleBatch(array($this->getRecord(Logger::DEBUG), $this->getRecord(Logger::INFO)));
+ foreach ($testHandlers as $test) {
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertTrue($test->hasInfoRecords());
+ $this->assertTrue(count($test->getRecords()) === 2);
+ }
+ }
+
+ /**
+ * @covers Monolog\Handler\GroupHandler::isHandling
+ */
+ public function testIsHandling()
+ {
+ $testHandlers = array(new TestHandler(Logger::ERROR), new TestHandler(Logger::WARNING));
+ $handler = new GroupHandler($testHandlers);
+ $this->assertTrue($handler->isHandling($this->getRecord(Logger::ERROR)));
+ $this->assertTrue($handler->isHandling($this->getRecord(Logger::WARNING)));
+ $this->assertFalse($handler->isHandling($this->getRecord(Logger::DEBUG)));
+ }
+
+ /**
+ * @covers Monolog\Handler\GroupHandler::handle
+ */
+ public function testHandleUsesProcessors()
+ {
+ $test = new TestHandler();
+ $handler = new GroupHandler(array($test));
+ $handler->pushProcessor(function ($record) {
+ $record['extra']['foo'] = true;
+
+ return $record;
+ });
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $this->assertTrue($test->hasWarningRecords());
+ $records = $test->getRecords();
+ $this->assertTrue($records[0]['extra']['foo']);
+ }
+
+ /**
+ * @covers Monolog\Handler\GroupHandler::handle
+ */
+ public function testHandleBatchUsesProcessors()
+ {
+ $testHandlers = array(new TestHandler(), new TestHandler());
+ $handler = new GroupHandler($testHandlers);
+ $handler->pushProcessor(function ($record) {
+ $record['extra']['foo'] = true;
+
+ return $record;
+ });
+ $handler->handleBatch(array($this->getRecord(Logger::DEBUG), $this->getRecord(Logger::INFO)));
+ foreach ($testHandlers as $test) {
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertTrue($test->hasInfoRecords());
+ $this->assertTrue(count($test->getRecords()) === 2);
+ $records = $test->getRecords();
+ $this->assertTrue($records[0]['extra']['foo']);
+ $this->assertTrue($records[1]['extra']['foo']);
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/HandlerWrapperTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/HandlerWrapperTest.php
new file mode 100644
index 0000000..ff9d90c
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/HandlerWrapperTest.php
@@ -0,0 +1,130 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+
+/**
+ * @author Alexey Karapetov <alexey@karapetov.com>
+ */
+class HandlerWrapperTest extends TestCase
+{
+ /**
+ * @var HandlerWrapper
+ */
+ private $wrapper;
+
+ private $handler;
+
+ public function setUp()
+ {
+ parent::setUp();
+ $this->handler = $this->getMock('Monolog\\Handler\\HandlerInterface');
+ $this->wrapper = new HandlerWrapper($this->handler);
+ }
+
+ /**
+ * @return array
+ */
+ public function trueFalseDataProvider()
+ {
+ return array(
+ array(true),
+ array(false),
+ );
+ }
+
+ /**
+ * @param $result
+ * @dataProvider trueFalseDataProvider
+ */
+ public function testIsHandling($result)
+ {
+ $record = $this->getRecord();
+ $this->handler->expects($this->once())
+ ->method('isHandling')
+ ->with($record)
+ ->willReturn($result);
+
+ $this->assertEquals($result, $this->wrapper->isHandling($record));
+ }
+
+ /**
+ * @param $result
+ * @dataProvider trueFalseDataProvider
+ */
+ public function testHandle($result)
+ {
+ $record = $this->getRecord();
+ $this->handler->expects($this->once())
+ ->method('handle')
+ ->with($record)
+ ->willReturn($result);
+
+ $this->assertEquals($result, $this->wrapper->handle($record));
+ }
+
+ /**
+ * @param $result
+ * @dataProvider trueFalseDataProvider
+ */
+ public function testHandleBatch($result)
+ {
+ $records = $this->getMultipleRecords();
+ $this->handler->expects($this->once())
+ ->method('handleBatch')
+ ->with($records)
+ ->willReturn($result);
+
+ $this->assertEquals($result, $this->wrapper->handleBatch($records));
+ }
+
+ public function testPushProcessor()
+ {
+ $processor = function () {};
+ $this->handler->expects($this->once())
+ ->method('pushProcessor')
+ ->with($processor);
+
+ $this->assertEquals($this->wrapper, $this->wrapper->pushProcessor($processor));
+ }
+
+ public function testPopProcessor()
+ {
+ $processor = function () {};
+ $this->handler->expects($this->once())
+ ->method('popProcessor')
+ ->willReturn($processor);
+
+ $this->assertEquals($processor, $this->wrapper->popProcessor());
+ }
+
+ public function testSetFormatter()
+ {
+ $formatter = $this->getMock('Monolog\\Formatter\\FormatterInterface');
+ $this->handler->expects($this->once())
+ ->method('setFormatter')
+ ->with($formatter);
+
+ $this->assertEquals($this->wrapper, $this->wrapper->setFormatter($formatter));
+ }
+
+ public function testGetFormatter()
+ {
+ $formatter = $this->getMock('Monolog\\Formatter\\FormatterInterface');
+ $this->handler->expects($this->once())
+ ->method('getFormatter')
+ ->willReturn($formatter);
+
+ $this->assertEquals($formatter, $this->wrapper->getFormatter());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/HipChatHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/HipChatHandlerTest.php
new file mode 100644
index 0000000..ff84c2b
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/HipChatHandlerTest.php
@@ -0,0 +1,279 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+/**
+ * @author Rafael Dohms <rafael@doh.ms>
+ * @see https://www.hipchat.com/docs/api
+ */
+class HipChatHandlerTest extends TestCase
+{
+ private $res;
+ /** @var HipChatHandler */
+ private $handler;
+
+ public function testWriteHeader()
+ {
+ $this->createHandler();
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/POST \/v1\/rooms\/message\?format=json&auth_token=.* HTTP\/1.1\\r\\nHost: api.hipchat.com\\r\\nContent-Type: application\/x-www-form-urlencoded\\r\\nContent-Length: \d{2,4}\\r\\n\\r\\n/', $content);
+
+ return $content;
+ }
+
+ public function testWriteCustomHostHeader()
+ {
+ $this->createHandler('myToken', 'room1', 'Monolog', true, 'hipchat.foo.bar');
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/POST \/v1\/rooms\/message\?format=json&auth_token=.* HTTP\/1.1\\r\\nHost: hipchat.foo.bar\\r\\nContent-Type: application\/x-www-form-urlencoded\\r\\nContent-Length: \d{2,4}\\r\\n\\r\\n/', $content);
+
+ return $content;
+ }
+
+ public function testWriteV2()
+ {
+ $this->createHandler('myToken', 'room1', 'Monolog', false, 'hipchat.foo.bar', 'v2');
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/POST \/v2\/room\/room1\/notification\?auth_token=.* HTTP\/1.1\\r\\nHost: hipchat.foo.bar\\r\\nContent-Type: application\/x-www-form-urlencoded\\r\\nContent-Length: \d{2,4}\\r\\n\\r\\n/', $content);
+
+ return $content;
+ }
+
+ public function testWriteV2Notify()
+ {
+ $this->createHandler('myToken', 'room1', 'Monolog', true, 'hipchat.foo.bar', 'v2');
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/POST \/v2\/room\/room1\/notification\?auth_token=.* HTTP\/1.1\\r\\nHost: hipchat.foo.bar\\r\\nContent-Type: application\/x-www-form-urlencoded\\r\\nContent-Length: \d{2,4}\\r\\n\\r\\n/', $content);
+
+ return $content;
+ }
+
+ public function testRoomSpaces()
+ {
+ $this->createHandler('myToken', 'room name', 'Monolog', false, 'hipchat.foo.bar', 'v2');
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/POST \/v2\/room\/room%20name\/notification\?auth_token=.* HTTP\/1.1\\r\\nHost: hipchat.foo.bar\\r\\nContent-Type: application\/x-www-form-urlencoded\\r\\nContent-Length: \d{2,4}\\r\\n\\r\\n/', $content);
+
+ return $content;
+ }
+
+ /**
+ * @depends testWriteHeader
+ */
+ public function testWriteContent($content)
+ {
+ $this->assertRegexp('/notify=0&message=test1&message_format=text&color=red&room_id=room1&from=Monolog$/', $content);
+ }
+
+ public function testWriteContentV1WithoutName()
+ {
+ $this->createHandler('myToken', 'room1', null, false, 'hipchat.foo.bar', 'v1');
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/notify=0&message=test1&message_format=text&color=red&room_id=room1&from=$/', $content);
+
+ return $content;
+ }
+
+ /**
+ * @depends testWriteCustomHostHeader
+ */
+ public function testWriteContentNotify($content)
+ {
+ $this->assertRegexp('/notify=1&message=test1&message_format=text&color=red&room_id=room1&from=Monolog$/', $content);
+ }
+
+ /**
+ * @depends testWriteV2
+ */
+ public function testWriteContentV2($content)
+ {
+ $this->assertRegexp('/notify=false&message=test1&message_format=text&color=red&from=Monolog$/', $content);
+ }
+
+ /**
+ * @depends testWriteV2Notify
+ */
+ public function testWriteContentV2Notify($content)
+ {
+ $this->assertRegexp('/notify=true&message=test1&message_format=text&color=red&from=Monolog$/', $content);
+ }
+
+ public function testWriteContentV2WithoutName()
+ {
+ $this->createHandler('myToken', 'room1', null, false, 'hipchat.foo.bar', 'v2');
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/notify=false&message=test1&message_format=text&color=red$/', $content);
+
+ return $content;
+ }
+
+ public function testWriteWithComplexMessage()
+ {
+ $this->createHandler();
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'Backup of database "example" finished in 16 minutes.'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/message=Backup\+of\+database\+%22example%22\+finished\+in\+16\+minutes\./', $content);
+ }
+
+ public function testWriteTruncatesLongMessage()
+ {
+ $this->createHandler();
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, str_repeat('abcde', 2000)));
+ fseek($this->res, 0);
+ $content = fread($this->res, 12000);
+
+ $this->assertRegexp('/message='.str_repeat('abcde', 1900).'\+%5Btruncated%5D/', $content);
+ }
+
+ /**
+ * @dataProvider provideLevelColors
+ */
+ public function testWriteWithErrorLevelsAndColors($level, $expectedColor)
+ {
+ $this->createHandler();
+ $this->handler->handle($this->getRecord($level, 'Backup of database "example" finished in 16 minutes.'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/color='.$expectedColor.'/', $content);
+ }
+
+ public function provideLevelColors()
+ {
+ return array(
+ array(Logger::DEBUG, 'gray'),
+ array(Logger::INFO, 'green'),
+ array(Logger::WARNING, 'yellow'),
+ array(Logger::ERROR, 'red'),
+ array(Logger::CRITICAL, 'red'),
+ array(Logger::ALERT, 'red'),
+ array(Logger::EMERGENCY,'red'),
+ array(Logger::NOTICE, 'green'),
+ );
+ }
+
+ /**
+ * @dataProvider provideBatchRecords
+ */
+ public function testHandleBatch($records, $expectedColor)
+ {
+ $this->createHandler();
+
+ $this->handler->handleBatch($records);
+
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/color='.$expectedColor.'/', $content);
+ }
+
+ public function provideBatchRecords()
+ {
+ return array(
+ array(
+ array(
+ array('level' => Logger::WARNING, 'message' => 'Oh bugger!', 'level_name' => 'warning', 'datetime' => new \DateTime()),
+ array('level' => Logger::NOTICE, 'message' => 'Something noticeable happened.', 'level_name' => 'notice', 'datetime' => new \DateTime()),
+ array('level' => Logger::CRITICAL, 'message' => 'Everything is broken!', 'level_name' => 'critical', 'datetime' => new \DateTime()),
+ ),
+ 'red',
+ ),
+ array(
+ array(
+ array('level' => Logger::WARNING, 'message' => 'Oh bugger!', 'level_name' => 'warning', 'datetime' => new \DateTime()),
+ array('level' => Logger::NOTICE, 'message' => 'Something noticeable happened.', 'level_name' => 'notice', 'datetime' => new \DateTime()),
+ ),
+ 'yellow',
+ ),
+ array(
+ array(
+ array('level' => Logger::DEBUG, 'message' => 'Just debugging.', 'level_name' => 'debug', 'datetime' => new \DateTime()),
+ array('level' => Logger::NOTICE, 'message' => 'Something noticeable happened.', 'level_name' => 'notice', 'datetime' => new \DateTime()),
+ ),
+ 'green',
+ ),
+ array(
+ array(
+ array('level' => Logger::DEBUG, 'message' => 'Just debugging.', 'level_name' => 'debug', 'datetime' => new \DateTime()),
+ ),
+ 'gray',
+ ),
+ );
+ }
+
+ private function createHandler($token = 'myToken', $room = 'room1', $name = 'Monolog', $notify = false, $host = 'api.hipchat.com', $version = 'v1')
+ {
+ $constructorArgs = array($token, $room, $name, $notify, Logger::DEBUG, true, true, 'text', $host, $version);
+ $this->res = fopen('php://memory', 'a');
+ $this->handler = $this->getMock(
+ '\Monolog\Handler\HipChatHandler',
+ array('fsockopen', 'streamSetTimeout', 'closeSocket'),
+ $constructorArgs
+ );
+
+ $reflectionProperty = new \ReflectionProperty('\Monolog\Handler\SocketHandler', 'connectionString');
+ $reflectionProperty->setAccessible(true);
+ $reflectionProperty->setValue($this->handler, 'localhost:1234');
+
+ $this->handler->expects($this->any())
+ ->method('fsockopen')
+ ->will($this->returnValue($this->res));
+ $this->handler->expects($this->any())
+ ->method('streamSetTimeout')
+ ->will($this->returnValue(true));
+ $this->handler->expects($this->any())
+ ->method('closeSocket')
+ ->will($this->returnValue(true));
+
+ $this->handler->setFormatter($this->getIdentityFormatter());
+ }
+
+ /**
+ * @expectedException InvalidArgumentException
+ */
+ public function testCreateWithTooLongName()
+ {
+ $hipChatHandler = new HipChatHandler('token', 'room', 'SixteenCharsHere');
+ }
+
+ public function testCreateWithTooLongNameV2()
+ {
+ // creating a handler with too long of a name but using the v2 api doesn't matter.
+ $hipChatHandler = new HipChatHandler('token', 'room', 'SixteenCharsHere', false, Logger::CRITICAL, true, true, 'test', 'api.hipchat.com', 'v2');
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/LogEntriesHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/LogEntriesHandlerTest.php
new file mode 100644
index 0000000..96867bc
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/LogEntriesHandlerTest.php
@@ -0,0 +1,84 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+/**
+ * @author Robert Kaufmann III <rok3@rok3.me>
+ */
+class LogEntriesHandlerTest extends TestCase
+{
+ /**
+ * @var resource
+ */
+ private $res;
+
+ /**
+ * @var LogEntriesHandler
+ */
+ private $handler;
+
+ public function testWriteContent()
+ {
+ $this->createHandler();
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'Critical write test'));
+
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/testToken \[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\] test.CRITICAL: Critical write test/', $content);
+ }
+
+ public function testWriteBatchContent()
+ {
+ $records = array(
+ $this->getRecord(),
+ $this->getRecord(),
+ $this->getRecord(),
+ );
+ $this->createHandler();
+ $this->handler->handleBatch($records);
+
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/(testToken \[\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}\] .* \[\] \[\]\n){3}/', $content);
+ }
+
+ private function createHandler()
+ {
+ $useSSL = extension_loaded('openssl');
+ $args = array('testToken', $useSSL, Logger::DEBUG, true);
+ $this->res = fopen('php://memory', 'a');
+ $this->handler = $this->getMock(
+ '\Monolog\Handler\LogEntriesHandler',
+ array('fsockopen', 'streamSetTimeout', 'closeSocket'),
+ $args
+ );
+
+ $reflectionProperty = new \ReflectionProperty('\Monolog\Handler\SocketHandler', 'connectionString');
+ $reflectionProperty->setAccessible(true);
+ $reflectionProperty->setValue($this->handler, 'localhost:1234');
+
+ $this->handler->expects($this->any())
+ ->method('fsockopen')
+ ->will($this->returnValue($this->res));
+ $this->handler->expects($this->any())
+ ->method('streamSetTimeout')
+ ->will($this->returnValue(true));
+ $this->handler->expects($this->any())
+ ->method('closeSocket')
+ ->will($this->returnValue(true));
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/MailHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/MailHandlerTest.php
new file mode 100644
index 0000000..90d9345
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/MailHandlerTest.php
@@ -0,0 +1,75 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\TestCase;
+
+class MailHandlerTest extends TestCase
+{
+ /**
+ * @covers Monolog\Handler\MailHandler::handleBatch
+ */
+ public function testHandleBatch()
+ {
+ $formatter = $this->getMock('Monolog\\Formatter\\FormatterInterface');
+ $formatter->expects($this->once())
+ ->method('formatBatch'); // Each record is formatted
+
+ $handler = $this->getMockForAbstractClass('Monolog\\Handler\\MailHandler');
+ $handler->expects($this->once())
+ ->method('send');
+ $handler->expects($this->never())
+ ->method('write'); // write is for individual records
+
+ $handler->setFormatter($formatter);
+
+ $handler->handleBatch($this->getMultipleRecords());
+ }
+
+ /**
+ * @covers Monolog\Handler\MailHandler::handleBatch
+ */
+ public function testHandleBatchNotSendsMailIfMessagesAreBelowLevel()
+ {
+ $records = array(
+ $this->getRecord(Logger::DEBUG, 'debug message 1'),
+ $this->getRecord(Logger::DEBUG, 'debug message 2'),
+ $this->getRecord(Logger::INFO, 'information'),
+ );
+
+ $handler = $this->getMockForAbstractClass('Monolog\\Handler\\MailHandler');
+ $handler->expects($this->never())
+ ->method('send');
+ $handler->setLevel(Logger::ERROR);
+
+ $handler->handleBatch($records);
+ }
+
+ /**
+ * @covers Monolog\Handler\MailHandler::write
+ */
+ public function testHandle()
+ {
+ $handler = $this->getMockForAbstractClass('Monolog\\Handler\\MailHandler');
+
+ $record = $this->getRecord();
+ $records = array($record);
+ $records[0]['formatted'] = '['.$record['datetime']->format('Y-m-d H:i:s').'] test.WARNING: test [] []'."\n";
+
+ $handler->expects($this->once())
+ ->method('send')
+ ->with($records[0]['formatted'], $records);
+
+ $handler->handle($record);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/MockRavenClient.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/MockRavenClient.php
new file mode 100644
index 0000000..b1a731a
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/MockRavenClient.php
@@ -0,0 +1,27 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Raven_Client;
+
+class MockRavenClient extends Raven_Client
+{
+ public function capture($data, $stack, $vars = null)
+ {
+ $data = array_merge($this->get_user_data(), $data);
+ $this->lastData = $data;
+ $this->lastStack = $stack;
+ }
+
+ public $lastData;
+ public $lastStack;
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/MongoDBHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/MongoDBHandlerTest.php
new file mode 100644
index 0000000..88ae7e6
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/MongoDBHandlerTest.php
@@ -0,0 +1,65 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+class MongoDBHandlerTest extends TestCase
+{
+ /**
+ * @expectedException InvalidArgumentException
+ */
+ public function testConstructorShouldThrowExceptionForInvalidMongo()
+ {
+ new MongoDBHandler(new \stdClass(), 'DB', 'Collection');
+ }
+
+ public function testHandle()
+ {
+ $mongo = $this->getMock('Mongo', array('selectCollection'), array(), '', false);
+ $collection = $this->getMock('stdClass', array('save'));
+
+ $mongo->expects($this->once())
+ ->method('selectCollection')
+ ->with('DB', 'Collection')
+ ->will($this->returnValue($collection));
+
+ $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34));
+
+ $expected = array(
+ 'message' => 'test',
+ 'context' => array('data' => '[object] (stdClass: {})', 'foo' => 34),
+ 'level' => Logger::WARNING,
+ 'level_name' => 'WARNING',
+ 'channel' => 'test',
+ 'datetime' => $record['datetime']->format('Y-m-d H:i:s'),
+ 'extra' => array(),
+ );
+
+ $collection->expects($this->once())
+ ->method('save')
+ ->with($expected);
+
+ $handler = new MongoDBHandler($mongo, 'DB', 'Collection');
+ $handler->handle($record);
+ }
+}
+
+if (!class_exists('Mongo')) {
+ class Mongo
+ {
+ public function selectCollection()
+ {
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/NativeMailerHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/NativeMailerHandlerTest.php
new file mode 100644
index 0000000..7a5a62b
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/NativeMailerHandlerTest.php
@@ -0,0 +1,111 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+use InvalidArgumentException;
+
+function mail($to, $subject, $message, $additional_headers = null, $additional_parameters = null)
+{
+ $GLOBALS['mail'][] = func_get_args();
+}
+
+class NativeMailerHandlerTest extends TestCase
+{
+ protected function setUp()
+ {
+ $GLOBALS['mail'] = array();
+ }
+
+ /**
+ * @expectedException InvalidArgumentException
+ */
+ public function testConstructorHeaderInjection()
+ {
+ $mailer = new NativeMailerHandler('spammer@example.org', 'dear victim', "receiver@example.org\r\nFrom: faked@attacker.org");
+ }
+
+ /**
+ * @expectedException InvalidArgumentException
+ */
+ public function testSetterHeaderInjection()
+ {
+ $mailer = new NativeMailerHandler('spammer@example.org', 'dear victim', 'receiver@example.org');
+ $mailer->addHeader("Content-Type: text/html\r\nFrom: faked@attacker.org");
+ }
+
+ /**
+ * @expectedException InvalidArgumentException
+ */
+ public function testSetterArrayHeaderInjection()
+ {
+ $mailer = new NativeMailerHandler('spammer@example.org', 'dear victim', 'receiver@example.org');
+ $mailer->addHeader(array("Content-Type: text/html\r\nFrom: faked@attacker.org"));
+ }
+
+ /**
+ * @expectedException InvalidArgumentException
+ */
+ public function testSetterContentTypeInjection()
+ {
+ $mailer = new NativeMailerHandler('spammer@example.org', 'dear victim', 'receiver@example.org');
+ $mailer->setContentType("text/html\r\nFrom: faked@attacker.org");
+ }
+
+ /**
+ * @expectedException InvalidArgumentException
+ */
+ public function testSetterEncodingInjection()
+ {
+ $mailer = new NativeMailerHandler('spammer@example.org', 'dear victim', 'receiver@example.org');
+ $mailer->setEncoding("utf-8\r\nFrom: faked@attacker.org");
+ }
+
+ public function testSend()
+ {
+ $to = 'spammer@example.org';
+ $subject = 'dear victim';
+ $from = 'receiver@example.org';
+
+ $mailer = new NativeMailerHandler($to, $subject, $from);
+ $mailer->handleBatch(array());
+
+ // batch is empty, nothing sent
+ $this->assertEmpty($GLOBALS['mail']);
+
+ // non-empty batch
+ $mailer->handle($this->getRecord(Logger::ERROR, "Foo\nBar\r\n\r\nBaz"));
+ $this->assertNotEmpty($GLOBALS['mail']);
+ $this->assertInternalType('array', $GLOBALS['mail']);
+ $this->assertArrayHasKey('0', $GLOBALS['mail']);
+ $params = $GLOBALS['mail'][0];
+ $this->assertCount(5, $params);
+ $this->assertSame($to, $params[0]);
+ $this->assertSame($subject, $params[1]);
+ $this->assertStringEndsWith(" test.ERROR: Foo Bar Baz [] []\n", $params[2]);
+ $this->assertSame("From: $from\r\nContent-type: text/plain; charset=utf-8\r\n", $params[3]);
+ $this->assertSame('', $params[4]);
+ }
+
+ public function testMessageSubjectFormatting()
+ {
+ $mailer = new NativeMailerHandler('to@example.org', 'Alert: %level_name% %message%', 'from@example.org');
+ $mailer->handle($this->getRecord(Logger::ERROR, "Foo\nBar\r\n\r\nBaz"));
+ $this->assertNotEmpty($GLOBALS['mail']);
+ $this->assertInternalType('array', $GLOBALS['mail']);
+ $this->assertArrayHasKey('0', $GLOBALS['mail']);
+ $params = $GLOBALS['mail'][0];
+ $this->assertCount(5, $params);
+ $this->assertSame('Alert: ERROR Foo Bar Baz', $params[1]);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/NewRelicHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/NewRelicHandlerTest.php
new file mode 100644
index 0000000..2ae2ded
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/NewRelicHandlerTest.php
@@ -0,0 +1,200 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Formatter\LineFormatter;
+use Monolog\TestCase;
+use Monolog\Logger;
+
+class NewRelicHandlerTest extends TestCase
+{
+ public static $appname;
+ public static $customParameters;
+ public static $transactionName;
+
+ public function setUp()
+ {
+ self::$appname = null;
+ self::$customParameters = array();
+ self::$transactionName = null;
+ }
+
+ /**
+ * @expectedException Monolog\Handler\MissingExtensionException
+ */
+ public function testThehandlerThrowsAnExceptionIfTheNRExtensionIsNotLoaded()
+ {
+ $handler = new StubNewRelicHandlerWithoutExtension();
+ $handler->handle($this->getRecord(Logger::ERROR));
+ }
+
+ public function testThehandlerCanHandleTheRecord()
+ {
+ $handler = new StubNewRelicHandler();
+ $handler->handle($this->getRecord(Logger::ERROR));
+ }
+
+ public function testThehandlerCanAddContextParamsToTheNewRelicTrace()
+ {
+ $handler = new StubNewRelicHandler();
+ $handler->handle($this->getRecord(Logger::ERROR, 'log message', array('a' => 'b')));
+ $this->assertEquals(array('context_a' => 'b'), self::$customParameters);
+ }
+
+ public function testThehandlerCanAddExplodedContextParamsToTheNewRelicTrace()
+ {
+ $handler = new StubNewRelicHandler(Logger::ERROR, true, self::$appname, true);
+ $handler->handle($this->getRecord(
+ Logger::ERROR,
+ 'log message',
+ array('a' => array('key1' => 'value1', 'key2' => 'value2'))
+ ));
+ $this->assertEquals(
+ array('context_a_key1' => 'value1', 'context_a_key2' => 'value2'),
+ self::$customParameters
+ );
+ }
+
+ public function testThehandlerCanAddExtraParamsToTheNewRelicTrace()
+ {
+ $record = $this->getRecord(Logger::ERROR, 'log message');
+ $record['extra'] = array('c' => 'd');
+
+ $handler = new StubNewRelicHandler();
+ $handler->handle($record);
+
+ $this->assertEquals(array('extra_c' => 'd'), self::$customParameters);
+ }
+
+ public function testThehandlerCanAddExplodedExtraParamsToTheNewRelicTrace()
+ {
+ $record = $this->getRecord(Logger::ERROR, 'log message');
+ $record['extra'] = array('c' => array('key1' => 'value1', 'key2' => 'value2'));
+
+ $handler = new StubNewRelicHandler(Logger::ERROR, true, self::$appname, true);
+ $handler->handle($record);
+
+ $this->assertEquals(
+ array('extra_c_key1' => 'value1', 'extra_c_key2' => 'value2'),
+ self::$customParameters
+ );
+ }
+
+ public function testThehandlerCanAddExtraContextAndParamsToTheNewRelicTrace()
+ {
+ $record = $this->getRecord(Logger::ERROR, 'log message', array('a' => 'b'));
+ $record['extra'] = array('c' => 'd');
+
+ $handler = new StubNewRelicHandler();
+ $handler->handle($record);
+
+ $expected = array(
+ 'context_a' => 'b',
+ 'extra_c' => 'd',
+ );
+
+ $this->assertEquals($expected, self::$customParameters);
+ }
+
+ public function testThehandlerCanHandleTheRecordsFormattedUsingTheLineFormatter()
+ {
+ $handler = new StubNewRelicHandler();
+ $handler->setFormatter(new LineFormatter());
+ $handler->handle($this->getRecord(Logger::ERROR));
+ }
+
+ public function testTheAppNameIsNullByDefault()
+ {
+ $handler = new StubNewRelicHandler();
+ $handler->handle($this->getRecord(Logger::ERROR, 'log message'));
+
+ $this->assertEquals(null, self::$appname);
+ }
+
+ public function testTheAppNameCanBeInjectedFromtheConstructor()
+ {
+ $handler = new StubNewRelicHandler(Logger::DEBUG, false, 'myAppName');
+ $handler->handle($this->getRecord(Logger::ERROR, 'log message'));
+
+ $this->assertEquals('myAppName', self::$appname);
+ }
+
+ public function testTheAppNameCanBeOverriddenFromEachLog()
+ {
+ $handler = new StubNewRelicHandler(Logger::DEBUG, false, 'myAppName');
+ $handler->handle($this->getRecord(Logger::ERROR, 'log message', array('appname' => 'logAppName')));
+
+ $this->assertEquals('logAppName', self::$appname);
+ }
+
+ public function testTheTransactionNameIsNullByDefault()
+ {
+ $handler = new StubNewRelicHandler();
+ $handler->handle($this->getRecord(Logger::ERROR, 'log message'));
+
+ $this->assertEquals(null, self::$transactionName);
+ }
+
+ public function testTheTransactionNameCanBeInjectedFromTheConstructor()
+ {
+ $handler = new StubNewRelicHandler(Logger::DEBUG, false, null, false, 'myTransaction');
+ $handler->handle($this->getRecord(Logger::ERROR, 'log message'));
+
+ $this->assertEquals('myTransaction', self::$transactionName);
+ }
+
+ public function testTheTransactionNameCanBeOverriddenFromEachLog()
+ {
+ $handler = new StubNewRelicHandler(Logger::DEBUG, false, null, false, 'myTransaction');
+ $handler->handle($this->getRecord(Logger::ERROR, 'log message', array('transaction_name' => 'logTransactName')));
+
+ $this->assertEquals('logTransactName', self::$transactionName);
+ }
+}
+
+class StubNewRelicHandlerWithoutExtension extends NewRelicHandler
+{
+ protected function isNewRelicEnabled()
+ {
+ return false;
+ }
+}
+
+class StubNewRelicHandler extends NewRelicHandler
+{
+ protected function isNewRelicEnabled()
+ {
+ return true;
+ }
+}
+
+function newrelic_notice_error()
+{
+ return true;
+}
+
+function newrelic_set_appname($appname)
+{
+ return NewRelicHandlerTest::$appname = $appname;
+}
+
+function newrelic_name_transaction($transactionName)
+{
+ return NewRelicHandlerTest::$transactionName = $transactionName;
+}
+
+function newrelic_add_custom_parameter($key, $value)
+{
+ NewRelicHandlerTest::$customParameters[$key] = $value;
+
+ return true;
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/NullHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/NullHandlerTest.php
new file mode 100644
index 0000000..eb19763
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/NullHandlerTest.php
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+/**
+ * @covers Monolog\Handler\NullHandler::handle
+ */
+class NullHandlerTest extends TestCase
+{
+ public function testHandle()
+ {
+ $handler = new NullHandler();
+ $this->assertTrue($handler->handle($this->getRecord()));
+ }
+
+ public function testHandleLowerLevelRecord()
+ {
+ $handler = new NullHandler(Logger::WARNING);
+ $this->assertFalse($handler->handle($this->getRecord(Logger::DEBUG)));
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/PHPConsoleHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/PHPConsoleHandlerTest.php
new file mode 100644
index 0000000..8b2b235
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/PHPConsoleHandlerTest.php
@@ -0,0 +1,273 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Exception;
+use Monolog\ErrorHandler;
+use Monolog\Logger;
+use Monolog\TestCase;
+use PhpConsole\Connector;
+use PhpConsole\Dispatcher\Debug as DebugDispatcher;
+use PhpConsole\Dispatcher\Errors as ErrorDispatcher;
+use PhpConsole\Handler;
+use PHPUnit_Framework_MockObject_MockObject;
+
+/**
+ * @covers Monolog\Handler\PHPConsoleHandler
+ * @author Sergey Barbushin https://www.linkedin.com/in/barbushin
+ */
+class PHPConsoleHandlerTest extends TestCase
+{
+ /** @var Connector|PHPUnit_Framework_MockObject_MockObject */
+ protected $connector;
+ /** @var DebugDispatcher|PHPUnit_Framework_MockObject_MockObject */
+ protected $debugDispatcher;
+ /** @var ErrorDispatcher|PHPUnit_Framework_MockObject_MockObject */
+ protected $errorDispatcher;
+
+ protected function setUp()
+ {
+ if (!class_exists('PhpConsole\Connector')) {
+ $this->markTestSkipped('PHP Console library not found. See https://github.com/barbushin/php-console#installation');
+ }
+ $this->connector = $this->initConnectorMock();
+
+ $this->debugDispatcher = $this->initDebugDispatcherMock($this->connector);
+ $this->connector->setDebugDispatcher($this->debugDispatcher);
+
+ $this->errorDispatcher = $this->initErrorDispatcherMock($this->connector);
+ $this->connector->setErrorsDispatcher($this->errorDispatcher);
+ }
+
+ protected function initDebugDispatcherMock(Connector $connector)
+ {
+ return $this->getMockBuilder('PhpConsole\Dispatcher\Debug')
+ ->disableOriginalConstructor()
+ ->setMethods(array('dispatchDebug'))
+ ->setConstructorArgs(array($connector, $connector->getDumper()))
+ ->getMock();
+ }
+
+ protected function initErrorDispatcherMock(Connector $connector)
+ {
+ return $this->getMockBuilder('PhpConsole\Dispatcher\Errors')
+ ->disableOriginalConstructor()
+ ->setMethods(array('dispatchError', 'dispatchException'))
+ ->setConstructorArgs(array($connector, $connector->getDumper()))
+ ->getMock();
+ }
+
+ protected function initConnectorMock()
+ {
+ $connector = $this->getMockBuilder('PhpConsole\Connector')
+ ->disableOriginalConstructor()
+ ->setMethods(array(
+ 'sendMessage',
+ 'onShutDown',
+ 'isActiveClient',
+ 'setSourcesBasePath',
+ 'setServerEncoding',
+ 'setPassword',
+ 'enableSslOnlyMode',
+ 'setAllowedIpMasks',
+ 'setHeadersLimit',
+ 'startEvalRequestsListener',
+ ))
+ ->getMock();
+
+ $connector->expects($this->any())
+ ->method('isActiveClient')
+ ->will($this->returnValue(true));
+
+ return $connector;
+ }
+
+ protected function getHandlerDefaultOption($name)
+ {
+ $handler = new PHPConsoleHandler(array(), $this->connector);
+ $options = $handler->getOptions();
+
+ return $options[$name];
+ }
+
+ protected function initLogger($handlerOptions = array(), $level = Logger::DEBUG)
+ {
+ return new Logger('test', array(
+ new PHPConsoleHandler($handlerOptions, $this->connector, $level),
+ ));
+ }
+
+ public function testInitWithDefaultConnector()
+ {
+ $handler = new PHPConsoleHandler();
+ $this->assertEquals(spl_object_hash(Connector::getInstance()), spl_object_hash($handler->getConnector()));
+ }
+
+ public function testInitWithCustomConnector()
+ {
+ $handler = new PHPConsoleHandler(array(), $this->connector);
+ $this->assertEquals(spl_object_hash($this->connector), spl_object_hash($handler->getConnector()));
+ }
+
+ public function testDebug()
+ {
+ $this->debugDispatcher->expects($this->once())->method('dispatchDebug')->with($this->equalTo('test'));
+ $this->initLogger()->addDebug('test');
+ }
+
+ public function testDebugContextInMessage()
+ {
+ $message = 'test';
+ $tag = 'tag';
+ $context = array($tag, 'custom' => mt_rand());
+ $expectedMessage = $message . ' ' . json_encode(array_slice($context, 1));
+ $this->debugDispatcher->expects($this->once())->method('dispatchDebug')->with(
+ $this->equalTo($expectedMessage),
+ $this->equalTo($tag)
+ );
+ $this->initLogger()->addDebug($message, $context);
+ }
+
+ public function testDebugTags($tagsContextKeys = null)
+ {
+ $expectedTags = mt_rand();
+ $logger = $this->initLogger($tagsContextKeys ? array('debugTagsKeysInContext' => $tagsContextKeys) : array());
+ if (!$tagsContextKeys) {
+ $tagsContextKeys = $this->getHandlerDefaultOption('debugTagsKeysInContext');
+ }
+ foreach ($tagsContextKeys as $key) {
+ $debugDispatcher = $this->initDebugDispatcherMock($this->connector);
+ $debugDispatcher->expects($this->once())->method('dispatchDebug')->with(
+ $this->anything(),
+ $this->equalTo($expectedTags)
+ );
+ $this->connector->setDebugDispatcher($debugDispatcher);
+ $logger->addDebug('test', array($key => $expectedTags));
+ }
+ }
+
+ public function testError($classesPartialsTraceIgnore = null)
+ {
+ $code = E_USER_NOTICE;
+ $message = 'message';
+ $file = __FILE__;
+ $line = __LINE__;
+ $this->errorDispatcher->expects($this->once())->method('dispatchError')->with(
+ $this->equalTo($code),
+ $this->equalTo($message),
+ $this->equalTo($file),
+ $this->equalTo($line),
+ $classesPartialsTraceIgnore ?: $this->equalTo($this->getHandlerDefaultOption('classesPartialsTraceIgnore'))
+ );
+ $errorHandler = ErrorHandler::register($this->initLogger($classesPartialsTraceIgnore ? array('classesPartialsTraceIgnore' => $classesPartialsTraceIgnore) : array()), false);
+ $errorHandler->registerErrorHandler(array(), false, E_USER_WARNING);
+ $errorHandler->handleError($code, $message, $file, $line);
+ }
+
+ public function testException()
+ {
+ $e = new Exception();
+ $this->errorDispatcher->expects($this->once())->method('dispatchException')->with(
+ $this->equalTo($e)
+ );
+ $handler = $this->initLogger();
+ $handler->log(
+ \Psr\Log\LogLevel::ERROR,
+ sprintf('Uncaught Exception %s: "%s" at %s line %s', get_class($e), $e->getMessage(), $e->getFile(), $e->getLine()),
+ array('exception' => $e)
+ );
+ }
+
+ /**
+ * @expectedException Exception
+ */
+ public function testWrongOptionsThrowsException()
+ {
+ new PHPConsoleHandler(array('xxx' => 1));
+ }
+
+ public function testOptionEnabled()
+ {
+ $this->debugDispatcher->expects($this->never())->method('dispatchDebug');
+ $this->initLogger(array('enabled' => false))->addDebug('test');
+ }
+
+ public function testOptionClassesPartialsTraceIgnore()
+ {
+ $this->testError(array('Class', 'Namespace\\'));
+ }
+
+ public function testOptionDebugTagsKeysInContext()
+ {
+ $this->testDebugTags(array('key1', 'key2'));
+ }
+
+ public function testOptionUseOwnErrorsAndExceptionsHandler()
+ {
+ $this->initLogger(array('useOwnErrorsHandler' => true, 'useOwnExceptionsHandler' => true));
+ $this->assertEquals(array(Handler::getInstance(), 'handleError'), set_error_handler(function () {
+ }));
+ $this->assertEquals(array(Handler::getInstance(), 'handleException'), set_exception_handler(function () {
+ }));
+ }
+
+ public static function provideConnectorMethodsOptionsSets()
+ {
+ return array(
+ array('sourcesBasePath', 'setSourcesBasePath', __DIR__),
+ array('serverEncoding', 'setServerEncoding', 'cp1251'),
+ array('password', 'setPassword', '******'),
+ array('enableSslOnlyMode', 'enableSslOnlyMode', true, false),
+ array('ipMasks', 'setAllowedIpMasks', array('127.0.0.*')),
+ array('headersLimit', 'setHeadersLimit', 2500),
+ array('enableEvalListener', 'startEvalRequestsListener', true, false),
+ );
+ }
+
+ /**
+ * @dataProvider provideConnectorMethodsOptionsSets
+ */
+ public function testOptionCallsConnectorMethod($option, $method, $value, $isArgument = true)
+ {
+ $expectCall = $this->connector->expects($this->once())->method($method);
+ if ($isArgument) {
+ $expectCall->with($value);
+ }
+ new PHPConsoleHandler(array($option => $value), $this->connector);
+ }
+
+ public function testOptionDetectDumpTraceAndSource()
+ {
+ new PHPConsoleHandler(array('detectDumpTraceAndSource' => true), $this->connector);
+ $this->assertTrue($this->connector->getDebugDispatcher()->detectTraceAndSource);
+ }
+
+ public static function provideDumperOptionsValues()
+ {
+ return array(
+ array('dumperLevelLimit', 'levelLimit', 1001),
+ array('dumperItemsCountLimit', 'itemsCountLimit', 1002),
+ array('dumperItemSizeLimit', 'itemSizeLimit', 1003),
+ array('dumperDumpSizeLimit', 'dumpSizeLimit', 1004),
+ array('dumperDetectCallbacks', 'detectCallbacks', true),
+ );
+ }
+
+ /**
+ * @dataProvider provideDumperOptionsValues
+ */
+ public function testDumperOptions($option, $dumperProperty, $value)
+ {
+ new PHPConsoleHandler(array($option => $value), $this->connector);
+ $this->assertEquals($value, $this->connector->getDumper()->$dumperProperty);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/PsrHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/PsrHandlerTest.php
new file mode 100644
index 0000000..f531ef6
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/PsrHandlerTest.php
@@ -0,0 +1,50 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+/**
+ * @covers Monolog\Handler\PsrHandler::handle
+ */
+class PsrHandlerTest extends TestCase
+{
+ public function logLevelProvider()
+ {
+ $levels = array();
+ $monologLogger = new Logger('');
+
+ foreach ($monologLogger->getLevels() as $levelName => $level) {
+ $levels[] = array($levelName, $level);
+ }
+
+ return $levels;
+ }
+
+ /**
+ * @dataProvider logLevelProvider
+ */
+ public function testHandlesAllLevels($levelName, $level)
+ {
+ $message = 'Hello, world! ' . $level;
+ $context = array('foo' => 'bar', 'level' => $level);
+
+ $psrLogger = $this->getMock('Psr\Log\NullLogger');
+ $psrLogger->expects($this->once())
+ ->method('log')
+ ->with(strtolower($levelName), $message, $context);
+
+ $handler = new PsrHandler($psrLogger);
+ $handler->handle(array('level' => $level, 'level_name' => $levelName, 'message' => $message, 'context' => $context));
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/PushoverHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/PushoverHandlerTest.php
new file mode 100644
index 0000000..f60a69d
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/PushoverHandlerTest.php
@@ -0,0 +1,141 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+/**
+ * Almost all examples (expected header, titles, messages) taken from
+ * https://www.pushover.net/api
+ * @author Sebastian Göttschkes <sebastian.goettschkes@googlemail.com>
+ * @see https://www.pushover.net/api
+ */
+class PushoverHandlerTest extends TestCase
+{
+ private $res;
+ private $handler;
+
+ public function testWriteHeader()
+ {
+ $this->createHandler();
+ $this->handler->setHighPriorityLevel(Logger::EMERGENCY); // skip priority notifications
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/POST \/1\/messages.json HTTP\/1.1\\r\\nHost: api.pushover.net\\r\\nContent-Type: application\/x-www-form-urlencoded\\r\\nContent-Length: \d{2,4}\\r\\n\\r\\n/', $content);
+
+ return $content;
+ }
+
+ /**
+ * @depends testWriteHeader
+ */
+ public function testWriteContent($content)
+ {
+ $this->assertRegexp('/token=myToken&user=myUser&message=test1&title=Monolog&timestamp=\d{10}$/', $content);
+ }
+
+ public function testWriteWithComplexTitle()
+ {
+ $this->createHandler('myToken', 'myUser', 'Backup finished - SQL1');
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/title=Backup\+finished\+-\+SQL1/', $content);
+ }
+
+ public function testWriteWithComplexMessage()
+ {
+ $this->createHandler();
+ $this->handler->setHighPriorityLevel(Logger::EMERGENCY); // skip priority notifications
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'Backup of database "example" finished in 16 minutes.'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/message=Backup\+of\+database\+%22example%22\+finished\+in\+16\+minutes\./', $content);
+ }
+
+ public function testWriteWithTooLongMessage()
+ {
+ $message = str_pad('test', 520, 'a');
+ $this->createHandler();
+ $this->handler->setHighPriorityLevel(Logger::EMERGENCY); // skip priority notifications
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, $message));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $expectedMessage = substr($message, 0, 505);
+
+ $this->assertRegexp('/message=' . $expectedMessage . '&title/', $content);
+ }
+
+ public function testWriteWithHighPriority()
+ {
+ $this->createHandler();
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/token=myToken&user=myUser&message=test1&title=Monolog&timestamp=\d{10}&priority=1$/', $content);
+ }
+
+ public function testWriteWithEmergencyPriority()
+ {
+ $this->createHandler();
+ $this->handler->handle($this->getRecord(Logger::EMERGENCY, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/token=myToken&user=myUser&message=test1&title=Monolog&timestamp=\d{10}&priority=2&retry=30&expire=25200$/', $content);
+ }
+
+ public function testWriteToMultipleUsers()
+ {
+ $this->createHandler('myToken', array('userA', 'userB'));
+ $this->handler->handle($this->getRecord(Logger::EMERGENCY, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/token=myToken&user=userA&message=test1&title=Monolog&timestamp=\d{10}&priority=2&retry=30&expire=25200POST/', $content);
+ $this->assertRegexp('/token=myToken&user=userB&message=test1&title=Monolog&timestamp=\d{10}&priority=2&retry=30&expire=25200$/', $content);
+ }
+
+ private function createHandler($token = 'myToken', $user = 'myUser', $title = 'Monolog')
+ {
+ $constructorArgs = array($token, $user, $title);
+ $this->res = fopen('php://memory', 'a');
+ $this->handler = $this->getMock(
+ '\Monolog\Handler\PushoverHandler',
+ array('fsockopen', 'streamSetTimeout', 'closeSocket'),
+ $constructorArgs
+ );
+
+ $reflectionProperty = new \ReflectionProperty('\Monolog\Handler\SocketHandler', 'connectionString');
+ $reflectionProperty->setAccessible(true);
+ $reflectionProperty->setValue($this->handler, 'localhost:1234');
+
+ $this->handler->expects($this->any())
+ ->method('fsockopen')
+ ->will($this->returnValue($this->res));
+ $this->handler->expects($this->any())
+ ->method('streamSetTimeout')
+ ->will($this->returnValue(true));
+ $this->handler->expects($this->any())
+ ->method('closeSocket')
+ ->will($this->returnValue(true));
+
+ $this->handler->setFormatter($this->getIdentityFormatter());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RavenHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RavenHandlerTest.php
new file mode 100644
index 0000000..d8448a6
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RavenHandlerTest.php
@@ -0,0 +1,255 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+use Monolog\Formatter\LineFormatter;
+
+class RavenHandlerTest extends TestCase
+{
+ public function setUp()
+ {
+ if (!class_exists('Raven_Client')) {
+ $this->markTestSkipped('raven/raven not installed');
+ }
+
+ require_once __DIR__ . '/MockRavenClient.php';
+ }
+
+ /**
+ * @covers Monolog\Handler\RavenHandler::__construct
+ */
+ public function testConstruct()
+ {
+ $handler = new RavenHandler($this->getRavenClient());
+ $this->assertInstanceOf('Monolog\Handler\RavenHandler', $handler);
+ }
+
+ protected function getHandler($ravenClient)
+ {
+ $handler = new RavenHandler($ravenClient);
+
+ return $handler;
+ }
+
+ protected function getRavenClient()
+ {
+ $dsn = 'http://43f6017361224d098402974103bfc53d:a6a0538fc2934ba2bed32e08741b2cd3@marca.python.live.cheggnet.com:9000/1';
+
+ return new MockRavenClient($dsn);
+ }
+
+ public function testDebug()
+ {
+ $ravenClient = $this->getRavenClient();
+ $handler = $this->getHandler($ravenClient);
+
+ $record = $this->getRecord(Logger::DEBUG, 'A test debug message');
+ $handler->handle($record);
+
+ $this->assertEquals($ravenClient::DEBUG, $ravenClient->lastData['level']);
+ $this->assertContains($record['message'], $ravenClient->lastData['message']);
+ }
+
+ public function testWarning()
+ {
+ $ravenClient = $this->getRavenClient();
+ $handler = $this->getHandler($ravenClient);
+
+ $record = $this->getRecord(Logger::WARNING, 'A test warning message');
+ $handler->handle($record);
+
+ $this->assertEquals($ravenClient::WARNING, $ravenClient->lastData['level']);
+ $this->assertContains($record['message'], $ravenClient->lastData['message']);
+ }
+
+ public function testTag()
+ {
+ $ravenClient = $this->getRavenClient();
+ $handler = $this->getHandler($ravenClient);
+
+ $tags = array(1, 2, 'foo');
+ $record = $this->getRecord(Logger::INFO, 'test', array('tags' => $tags));
+ $handler->handle($record);
+
+ $this->assertEquals($tags, $ravenClient->lastData['tags']);
+ }
+
+ public function testExtraParameters()
+ {
+ $ravenClient = $this->getRavenClient();
+ $handler = $this->getHandler($ravenClient);
+
+ $checksum = '098f6bcd4621d373cade4e832627b4f6';
+ $release = '05a671c66aefea124cc08b76ea6d30bb';
+ $eventId = '31423';
+ $record = $this->getRecord(Logger::INFO, 'test', array('checksum' => $checksum, 'release' => $release, 'event_id' => $eventId));
+ $handler->handle($record);
+
+ $this->assertEquals($checksum, $ravenClient->lastData['checksum']);
+ $this->assertEquals($release, $ravenClient->lastData['release']);
+ $this->assertEquals($eventId, $ravenClient->lastData['event_id']);
+ }
+
+ public function testFingerprint()
+ {
+ $ravenClient = $this->getRavenClient();
+ $handler = $this->getHandler($ravenClient);
+
+ $fingerprint = array('{{ default }}', 'other value');
+ $record = $this->getRecord(Logger::INFO, 'test', array('fingerprint' => $fingerprint));
+ $handler->handle($record);
+
+ $this->assertEquals($fingerprint, $ravenClient->lastData['fingerprint']);
+ }
+
+ public function testUserContext()
+ {
+ $ravenClient = $this->getRavenClient();
+ $handler = $this->getHandler($ravenClient);
+
+ $recordWithNoContext = $this->getRecord(Logger::INFO, 'test with default user context');
+ // set user context 'externally'
+
+ $user = array(
+ 'id' => '123',
+ 'email' => 'test@test.com',
+ );
+
+ $recordWithContext = $this->getRecord(Logger::INFO, 'test', array('user' => $user));
+
+ $ravenClient->user_context(array('id' => 'test_user_id'));
+ // handle context
+ $handler->handle($recordWithContext);
+ $this->assertEquals($user, $ravenClient->lastData['user']);
+
+ // check to see if its reset
+ $handler->handle($recordWithNoContext);
+ $this->assertInternalType('array', $ravenClient->context->user);
+ $this->assertSame('test_user_id', $ravenClient->context->user['id']);
+
+ // handle with null context
+ $ravenClient->user_context(null);
+ $handler->handle($recordWithContext);
+ $this->assertEquals($user, $ravenClient->lastData['user']);
+
+ // check to see if its reset
+ $handler->handle($recordWithNoContext);
+ $this->assertNull($ravenClient->context->user);
+ }
+
+ public function testException()
+ {
+ $ravenClient = $this->getRavenClient();
+ $handler = $this->getHandler($ravenClient);
+
+ try {
+ $this->methodThatThrowsAnException();
+ } catch (\Exception $e) {
+ $record = $this->getRecord(Logger::ERROR, $e->getMessage(), array('exception' => $e));
+ $handler->handle($record);
+ }
+
+ $this->assertEquals($record['message'], $ravenClient->lastData['message']);
+ }
+
+ public function testHandleBatch()
+ {
+ $records = $this->getMultipleRecords();
+ $records[] = $this->getRecord(Logger::WARNING, 'warning');
+ $records[] = $this->getRecord(Logger::WARNING, 'warning');
+
+ $logFormatter = $this->getMock('Monolog\\Formatter\\FormatterInterface');
+ $logFormatter->expects($this->once())->method('formatBatch');
+
+ $formatter = $this->getMock('Monolog\\Formatter\\FormatterInterface');
+ $formatter->expects($this->once())->method('format')->with($this->callback(function ($record) {
+ return $record['level'] == 400;
+ }));
+
+ $handler = $this->getHandler($this->getRavenClient());
+ $handler->setBatchFormatter($logFormatter);
+ $handler->setFormatter($formatter);
+ $handler->handleBatch($records);
+ }
+
+ public function testHandleBatchDoNothingIfRecordsAreBelowLevel()
+ {
+ $records = array(
+ $this->getRecord(Logger::DEBUG, 'debug message 1'),
+ $this->getRecord(Logger::DEBUG, 'debug message 2'),
+ $this->getRecord(Logger::INFO, 'information'),
+ );
+
+ $handler = $this->getMock('Monolog\Handler\RavenHandler', null, array($this->getRavenClient()));
+ $handler->expects($this->never())->method('handle');
+ $handler->setLevel(Logger::ERROR);
+ $handler->handleBatch($records);
+ }
+
+ public function testHandleBatchPicksProperMessage()
+ {
+ $records = array(
+ $this->getRecord(Logger::DEBUG, 'debug message 1'),
+ $this->getRecord(Logger::DEBUG, 'debug message 2'),
+ $this->getRecord(Logger::INFO, 'information 1'),
+ $this->getRecord(Logger::ERROR, 'error 1'),
+ $this->getRecord(Logger::WARNING, 'warning'),
+ $this->getRecord(Logger::ERROR, 'error 2'),
+ $this->getRecord(Logger::INFO, 'information 2'),
+ );
+
+ $logFormatter = $this->getMock('Monolog\\Formatter\\FormatterInterface');
+ $logFormatter->expects($this->once())->method('formatBatch');
+
+ $formatter = $this->getMock('Monolog\\Formatter\\FormatterInterface');
+ $formatter->expects($this->once())->method('format')->with($this->callback(function ($record) use ($records) {
+ return $record['message'] == 'error 1';
+ }));
+
+ $handler = $this->getHandler($this->getRavenClient());
+ $handler->setBatchFormatter($logFormatter);
+ $handler->setFormatter($formatter);
+ $handler->handleBatch($records);
+ }
+
+ public function testGetSetBatchFormatter()
+ {
+ $ravenClient = $this->getRavenClient();
+ $handler = $this->getHandler($ravenClient);
+
+ $handler->setBatchFormatter($formatter = new LineFormatter());
+ $this->assertSame($formatter, $handler->getBatchFormatter());
+ }
+
+ public function testRelease()
+ {
+ $ravenClient = $this->getRavenClient();
+ $handler = $this->getHandler($ravenClient);
+ $release = 'v42.42.42';
+ $handler->setRelease($release);
+ $record = $this->getRecord(Logger::INFO, 'test');
+ $handler->handle($record);
+ $this->assertEquals($release, $ravenClient->lastData['release']);
+
+ $localRelease = 'v41.41.41';
+ $record = $this->getRecord(Logger::INFO, 'test', array('release' => $localRelease));
+ $handler->handle($record);
+ $this->assertEquals($localRelease, $ravenClient->lastData['release']);
+ }
+
+ private function methodThatThrowsAnException()
+ {
+ throw new \Exception('This is an exception');
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RedisHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RedisHandlerTest.php
new file mode 100644
index 0000000..91f0392
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RedisHandlerTest.php
@@ -0,0 +1,127 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+use Monolog\Formatter\LineFormatter;
+
+class RedisHandlerTest extends TestCase
+{
+ /**
+ * @expectedException InvalidArgumentException
+ */
+ public function testConstructorShouldThrowExceptionForInvalidRedis()
+ {
+ new RedisHandler(new \stdClass(), 'key');
+ }
+
+ public function testConstructorShouldWorkWithPredis()
+ {
+ $redis = $this->getMock('Predis\Client');
+ $this->assertInstanceof('Monolog\Handler\RedisHandler', new RedisHandler($redis, 'key'));
+ }
+
+ public function testConstructorShouldWorkWithRedis()
+ {
+ $redis = $this->getMock('Redis');
+ $this->assertInstanceof('Monolog\Handler\RedisHandler', new RedisHandler($redis, 'key'));
+ }
+
+ public function testPredisHandle()
+ {
+ $redis = $this->getMock('Predis\Client', array('rpush'));
+
+ // Predis\Client uses rpush
+ $redis->expects($this->once())
+ ->method('rpush')
+ ->with('key', 'test');
+
+ $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34));
+
+ $handler = new RedisHandler($redis, 'key');
+ $handler->setFormatter(new LineFormatter("%message%"));
+ $handler->handle($record);
+ }
+
+ public function testRedisHandle()
+ {
+ $redis = $this->getMock('Redis', array('rpush'));
+
+ // Redis uses rPush
+ $redis->expects($this->once())
+ ->method('rPush')
+ ->with('key', 'test');
+
+ $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34));
+
+ $handler = new RedisHandler($redis, 'key');
+ $handler->setFormatter(new LineFormatter("%message%"));
+ $handler->handle($record);
+ }
+
+ public function testRedisHandleCapped()
+ {
+ $redis = $this->getMock('Redis', array('multi', 'rpush', 'ltrim', 'exec'));
+
+ // Redis uses multi
+ $redis->expects($this->once())
+ ->method('multi')
+ ->will($this->returnSelf());
+
+ $redis->expects($this->once())
+ ->method('rpush')
+ ->will($this->returnSelf());
+
+ $redis->expects($this->once())
+ ->method('ltrim')
+ ->will($this->returnSelf());
+
+ $redis->expects($this->once())
+ ->method('exec')
+ ->will($this->returnSelf());
+
+ $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34));
+
+ $handler = new RedisHandler($redis, 'key', Logger::DEBUG, true, 10);
+ $handler->setFormatter(new LineFormatter("%message%"));
+ $handler->handle($record);
+ }
+
+ public function testPredisHandleCapped()
+ {
+ $redis = $this->getMock('Predis\Client', array('transaction'));
+
+ $redisTransaction = $this->getMock('Predis\Client', array('rpush', 'ltrim'));
+
+ $redisTransaction->expects($this->once())
+ ->method('rpush')
+ ->will($this->returnSelf());
+
+ $redisTransaction->expects($this->once())
+ ->method('ltrim')
+ ->will($this->returnSelf());
+
+ // Redis uses multi
+ $redis->expects($this->once())
+ ->method('transaction')
+ ->will($this->returnCallback(function ($cb) use ($redisTransaction) {
+ $cb($redisTransaction);
+ }));
+
+ $record = $this->getRecord(Logger::WARNING, 'test', array('data' => new \stdClass, 'foo' => 34));
+
+ $handler = new RedisHandler($redis, 'key', Logger::DEBUG, true, 10);
+ $handler->setFormatter(new LineFormatter("%message%"));
+ $handler->handle($record);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RollbarHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RollbarHandlerTest.php
new file mode 100644
index 0000000..0c9fd7b
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RollbarHandlerTest.php
@@ -0,0 +1,84 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Exception;
+use Monolog\TestCase;
+use Monolog\Logger;
+use PHPUnit_Framework_MockObject_MockObject as MockObject;
+
+/**
+ * @author Erik Johansson <erik.pm.johansson@gmail.com>
+ * @see https://rollbar.com/docs/notifier/rollbar-php/
+ *
+ * @coversDefaultClass Monolog\Handler\RollbarHandler
+ */
+class RollbarHandlerTest extends TestCase
+{
+ /**
+ * @var MockObject
+ */
+ private $rollbarNotifier;
+
+ /**
+ * @var array
+ */
+ public $reportedExceptionArguments = null;
+
+ protected function setUp()
+ {
+ parent::setUp();
+
+ $this->setupRollbarNotifierMock();
+ }
+
+ /**
+ * When reporting exceptions to Rollbar the
+ * level has to be set in the payload data
+ */
+ public function testExceptionLogLevel()
+ {
+ $handler = $this->createHandler();
+
+ $handler->handle($this->createExceptionRecord(Logger::DEBUG));
+
+ $this->assertEquals('debug', $this->reportedExceptionArguments['payload']['level']);
+ }
+
+ private function setupRollbarNotifierMock()
+ {
+ $this->rollbarNotifier = $this->getMockBuilder('RollbarNotifier')
+ ->setMethods(array('report_message', 'report_exception', 'flush'))
+ ->getMock();
+
+ $that = $this;
+
+ $this->rollbarNotifier
+ ->expects($this->any())
+ ->method('report_exception')
+ ->willReturnCallback(function ($exception, $context, $payload) use ($that) {
+ $that->reportedExceptionArguments = compact('exception', 'context', 'payload');
+ });
+ }
+
+ private function createHandler()
+ {
+ return new RollbarHandler($this->rollbarNotifier, Logger::DEBUG);
+ }
+
+ private function createExceptionRecord($level = Logger::DEBUG, $message = 'test', $exception = null)
+ {
+ return $this->getRecord($level, $message, array(
+ 'exception' => $exception ?: new Exception()
+ ));
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RotatingFileHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RotatingFileHandlerTest.php
new file mode 100644
index 0000000..7e7aeeb
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/RotatingFileHandlerTest.php
@@ -0,0 +1,211 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use PHPUnit_Framework_Error_Deprecated;
+
+/**
+ * @covers Monolog\Handler\RotatingFileHandler
+ */
+class RotatingFileHandlerTest extends TestCase
+{
+ /**
+ * This var should be private but then the anonymous function
+ * in the `setUp` method won't be able to set it. `$this` cant't
+ * be used in the anonymous function in `setUp` because PHP 5.3
+ * does not support it.
+ */
+ public $lastError;
+
+ public function setUp()
+ {
+ $dir = __DIR__.'/Fixtures';
+ chmod($dir, 0777);
+ if (!is_writable($dir)) {
+ $this->markTestSkipped($dir.' must be writable to test the RotatingFileHandler.');
+ }
+ $this->lastError = null;
+ $self = $this;
+ // workaround with &$self used for PHP 5.3
+ set_error_handler(function($code, $message) use (&$self) {
+ $self->lastError = array(
+ 'code' => $code,
+ 'message' => $message,
+ );
+ });
+ }
+
+ private function assertErrorWasTriggered($code, $message)
+ {
+ if (empty($this->lastError)) {
+ $this->fail(
+ sprintf(
+ 'Failed asserting that error with code `%d` and message `%s` was triggered',
+ $code,
+ $message
+ )
+ );
+ }
+ $this->assertEquals($code, $this->lastError['code'], sprintf('Expected an error with code %d to be triggered, got `%s` instead', $code, $this->lastError['code']));
+ $this->assertEquals($message, $this->lastError['message'], sprintf('Expected an error with message `%d` to be triggered, got `%s` instead', $message, $this->lastError['message']));
+ }
+
+ public function testRotationCreatesNewFile()
+ {
+ touch(__DIR__.'/Fixtures/foo-'.date('Y-m-d', time() - 86400).'.rot');
+
+ $handler = new RotatingFileHandler(__DIR__.'/Fixtures/foo.rot');
+ $handler->setFormatter($this->getIdentityFormatter());
+ $handler->handle($this->getRecord());
+
+ $log = __DIR__.'/Fixtures/foo-'.date('Y-m-d').'.rot';
+ $this->assertTrue(file_exists($log));
+ $this->assertEquals('test', file_get_contents($log));
+ }
+
+ /**
+ * @dataProvider rotationTests
+ */
+ public function testRotation($createFile, $dateFormat, $timeCallback)
+ {
+ touch($old1 = __DIR__.'/Fixtures/foo-'.date($dateFormat, $timeCallback(-1)).'.rot');
+ touch($old2 = __DIR__.'/Fixtures/foo-'.date($dateFormat, $timeCallback(-2)).'.rot');
+ touch($old3 = __DIR__.'/Fixtures/foo-'.date($dateFormat, $timeCallback(-3)).'.rot');
+ touch($old4 = __DIR__.'/Fixtures/foo-'.date($dateFormat, $timeCallback(-4)).'.rot');
+
+ $log = __DIR__.'/Fixtures/foo-'.date($dateFormat).'.rot';
+
+ if ($createFile) {
+ touch($log);
+ }
+
+ $handler = new RotatingFileHandler(__DIR__.'/Fixtures/foo.rot', 2);
+ $handler->setFormatter($this->getIdentityFormatter());
+ $handler->setFilenameFormat('{filename}-{date}', $dateFormat);
+ $handler->handle($this->getRecord());
+
+ $handler->close();
+
+ $this->assertTrue(file_exists($log));
+ $this->assertTrue(file_exists($old1));
+ $this->assertEquals($createFile, file_exists($old2));
+ $this->assertEquals($createFile, file_exists($old3));
+ $this->assertEquals($createFile, file_exists($old4));
+ $this->assertEquals('test', file_get_contents($log));
+ }
+
+ public function rotationTests()
+ {
+ $now = time();
+ $dayCallback = function($ago) use ($now) {
+ return $now + 86400 * $ago;
+ };
+ $monthCallback = function($ago) {
+ return gmmktime(0, 0, 0, date('n') + $ago, 1, date('Y'));
+ };
+ $yearCallback = function($ago) {
+ return gmmktime(0, 0, 0, 1, 1, date('Y') + $ago);
+ };
+
+ return array(
+ 'Rotation is triggered when the file of the current day is not present'
+ => array(true, RotatingFileHandler::FILE_PER_DAY, $dayCallback),
+ 'Rotation is not triggered when the file of the current day is already present'
+ => array(false, RotatingFileHandler::FILE_PER_DAY, $dayCallback),
+
+ 'Rotation is triggered when the file of the current month is not present'
+ => array(true, RotatingFileHandler::FILE_PER_MONTH, $monthCallback),
+ 'Rotation is not triggered when the file of the current month is already present'
+ => array(false, RotatingFileHandler::FILE_PER_MONTH, $monthCallback),
+
+ 'Rotation is triggered when the file of the current year is not present'
+ => array(true, RotatingFileHandler::FILE_PER_YEAR, $yearCallback),
+ 'Rotation is not triggered when the file of the current year is already present'
+ => array(false, RotatingFileHandler::FILE_PER_YEAR, $yearCallback),
+ );
+ }
+
+ /**
+ * @dataProvider dateFormatProvider
+ */
+ public function testAllowOnlyFixedDefinedDateFormats($dateFormat, $valid)
+ {
+ $handler = new RotatingFileHandler(__DIR__.'/Fixtures/foo.rot', 2);
+ $handler->setFilenameFormat('{filename}-{date}', $dateFormat);
+ if (!$valid) {
+ $this->assertErrorWasTriggered(
+ E_USER_DEPRECATED,
+ 'Invalid date format - format must be one of RotatingFileHandler::FILE_PER_DAY ("Y-m-d"), '.
+ 'RotatingFileHandler::FILE_PER_MONTH ("Y-m") or RotatingFileHandler::FILE_PER_YEAR ("Y"), '.
+ 'or you can set one of the date formats using slashes, underscores and/or dots instead of dashes.'
+ );
+ }
+ }
+
+ public function dateFormatProvider()
+ {
+ return array(
+ array(RotatingFileHandler::FILE_PER_DAY, true),
+ array(RotatingFileHandler::FILE_PER_MONTH, true),
+ array(RotatingFileHandler::FILE_PER_YEAR, true),
+ array('m-d-Y', false),
+ array('Y-m-d-h-i', false)
+ );
+ }
+
+ /**
+ * @dataProvider filenameFormatProvider
+ */
+ public function testDisallowFilenameFormatsWithoutDate($filenameFormat, $valid)
+ {
+ $handler = new RotatingFileHandler(__DIR__.'/Fixtures/foo.rot', 2);
+ $handler->setFilenameFormat($filenameFormat, RotatingFileHandler::FILE_PER_DAY);
+ if (!$valid) {
+ $this->assertErrorWasTriggered(
+ E_USER_DEPRECATED,
+ 'Invalid filename format - format should contain at least `{date}`, because otherwise rotating is impossible.'
+ );
+ }
+ }
+
+ public function filenameFormatProvider()
+ {
+ return array(
+ array('{filename}', false),
+ array('{filename}-{date}', true),
+ array('{date}', true),
+ array('foobar-{date}', true),
+ array('foo-{date}-bar', true),
+ array('{date}-foobar', true),
+ array('foobar', false),
+ );
+ }
+
+ public function testReuseCurrentFile()
+ {
+ $log = __DIR__.'/Fixtures/foo-'.date('Y-m-d').'.rot';
+ file_put_contents($log, "foo");
+ $handler = new RotatingFileHandler(__DIR__.'/Fixtures/foo.rot');
+ $handler->setFormatter($this->getIdentityFormatter());
+ $handler->handle($this->getRecord());
+ $this->assertEquals('footest', file_get_contents($log));
+ }
+
+ public function tearDown()
+ {
+ foreach (glob(__DIR__.'/Fixtures/*.rot') as $file) {
+ unlink($file);
+ }
+ restore_error_handler();
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SamplingHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SamplingHandlerTest.php
new file mode 100644
index 0000000..47cde9b
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SamplingHandlerTest.php
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+
+/**
+ * @covers Monolog\Handler\SamplingHandler::handle
+ */
+class SamplingHandlerTest extends TestCase
+{
+ public function testHandle()
+ {
+ $testHandler = new TestHandler();
+ $handler = new SamplingHandler($testHandler, 2);
+ for ($i = 0; $i < 10000; $i++) {
+ $handler->handle($this->getRecord());
+ }
+ $count = count($testHandler->getRecords());
+ // $count should be half of 10k, so between 4k and 6k
+ $this->assertLessThan(6000, $count);
+ $this->assertGreaterThan(4000, $count);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/Slack/SlackRecordTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/Slack/SlackRecordTest.php
new file mode 100644
index 0000000..a1141cf
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/Slack/SlackRecordTest.php
@@ -0,0 +1,387 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler\Slack;
+
+use Monolog\Logger;
+use Monolog\TestCase;
+
+/**
+ * @coversDefaultClass Monolog\Handler\Slack\SlackRecord
+ */
+class SlackRecordTest extends TestCase
+{
+ private $jsonPrettyPrintFlag;
+
+ protected function setUp()
+ {
+ $this->jsonPrettyPrintFlag = defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 128;
+ }
+
+ public function dataGetAttachmentColor()
+ {
+ return array(
+ array(Logger::DEBUG, SlackRecord::COLOR_DEFAULT),
+ array(Logger::INFO, SlackRecord::COLOR_GOOD),
+ array(Logger::NOTICE, SlackRecord::COLOR_GOOD),
+ array(Logger::WARNING, SlackRecord::COLOR_WARNING),
+ array(Logger::ERROR, SlackRecord::COLOR_DANGER),
+ array(Logger::CRITICAL, SlackRecord::COLOR_DANGER),
+ array(Logger::ALERT, SlackRecord::COLOR_DANGER),
+ array(Logger::EMERGENCY, SlackRecord::COLOR_DANGER),
+ );
+ }
+
+ /**
+ * @dataProvider dataGetAttachmentColor
+ * @param int $logLevel
+ * @param string $expectedColour RGB hex color or name of Slack color
+ * @covers ::getAttachmentColor
+ */
+ public function testGetAttachmentColor($logLevel, $expectedColour)
+ {
+ $slackRecord = new SlackRecord();
+ $this->assertSame(
+ $expectedColour,
+ $slackRecord->getAttachmentColor($logLevel)
+ );
+ }
+
+ public function testAddsChannel()
+ {
+ $channel = '#test';
+ $record = new SlackRecord($channel);
+ $data = $record->getSlackData($this->getRecord());
+
+ $this->assertArrayHasKey('channel', $data);
+ $this->assertSame($channel, $data['channel']);
+ }
+
+ public function testNoUsernameByDefault()
+ {
+ $record = new SlackRecord();
+ $data = $record->getSlackData($this->getRecord());
+
+ $this->assertArrayNotHasKey('username', $data);
+ }
+
+ /**
+ * @return array
+ */
+ public function dataStringify()
+ {
+ $jsonPrettyPrintFlag = defined('JSON_PRETTY_PRINT') ? JSON_PRETTY_PRINT : 128;
+
+ $multipleDimensions = array(array(1, 2));
+ $numericKeys = array('library' => 'monolog');
+ $singleDimension = array(1, 'Hello', 'Jordi');
+
+ return array(
+ array(array(), '[]'),
+ array($multipleDimensions, json_encode($multipleDimensions, $jsonPrettyPrintFlag)),
+ array($numericKeys, json_encode($numericKeys, $jsonPrettyPrintFlag)),
+ array($singleDimension, json_encode($singleDimension))
+ );
+ }
+
+ /**
+ * @dataProvider dataStringify
+ */
+ public function testStringify($fields, $expectedResult)
+ {
+ $slackRecord = new SlackRecord(
+ '#test',
+ 'test',
+ true,
+ null,
+ true,
+ true
+ );
+
+ $this->assertSame($expectedResult, $slackRecord->stringify($fields));
+ }
+
+ public function testAddsCustomUsername()
+ {
+ $username = 'Monolog bot';
+ $record = new SlackRecord(null, $username);
+ $data = $record->getSlackData($this->getRecord());
+
+ $this->assertArrayHasKey('username', $data);
+ $this->assertSame($username, $data['username']);
+ }
+
+ public function testNoIcon()
+ {
+ $record = new SlackRecord();
+ $data = $record->getSlackData($this->getRecord());
+
+ $this->assertArrayNotHasKey('icon_emoji', $data);
+ }
+
+ public function testAddsIcon()
+ {
+ $record = $this->getRecord();
+ $slackRecord = new SlackRecord(null, null, false, 'ghost');
+ $data = $slackRecord->getSlackData($record);
+
+ $slackRecord2 = new SlackRecord(null, null, false, 'http://github.com/Seldaek/monolog');
+ $data2 = $slackRecord2->getSlackData($record);
+
+ $this->assertArrayHasKey('icon_emoji', $data);
+ $this->assertSame(':ghost:', $data['icon_emoji']);
+ $this->assertArrayHasKey('icon_url', $data2);
+ $this->assertSame('http://github.com/Seldaek/monolog', $data2['icon_url']);
+ }
+
+ public function testAttachmentsNotPresentIfNoAttachment()
+ {
+ $record = new SlackRecord(null, null, false);
+ $data = $record->getSlackData($this->getRecord());
+
+ $this->assertArrayNotHasKey('attachments', $data);
+ }
+
+ public function testAddsOneAttachment()
+ {
+ $record = new SlackRecord();
+ $data = $record->getSlackData($this->getRecord());
+
+ $this->assertArrayHasKey('attachments', $data);
+ $this->assertArrayHasKey(0, $data['attachments']);
+ $this->assertInternalType('array', $data['attachments'][0]);
+ }
+
+ public function testTextEqualsMessageIfNoAttachment()
+ {
+ $message = 'Test message';
+ $record = new SlackRecord(null, null, false);
+ $data = $record->getSlackData($this->getRecord(Logger::WARNING, $message));
+
+ $this->assertArrayHasKey('text', $data);
+ $this->assertSame($message, $data['text']);
+ }
+
+ public function testTextEqualsFormatterOutput()
+ {
+ $formatter = $this->getMock('Monolog\\Formatter\\FormatterInterface');
+ $formatter
+ ->expects($this->any())
+ ->method('format')
+ ->will($this->returnCallback(function ($record) { return $record['message'] . 'test'; }));
+
+ $formatter2 = $this->getMock('Monolog\\Formatter\\FormatterInterface');
+ $formatter2
+ ->expects($this->any())
+ ->method('format')
+ ->will($this->returnCallback(function ($record) { return $record['message'] . 'test1'; }));
+
+ $message = 'Test message';
+ $record = new SlackRecord(null, null, false, null, false, false, array(), $formatter);
+ $data = $record->getSlackData($this->getRecord(Logger::WARNING, $message));
+
+ $this->assertArrayHasKey('text', $data);
+ $this->assertSame($message . 'test', $data['text']);
+
+ $record->setFormatter($formatter2);
+ $data = $record->getSlackData($this->getRecord(Logger::WARNING, $message));
+
+ $this->assertArrayHasKey('text', $data);
+ $this->assertSame($message . 'test1', $data['text']);
+ }
+
+ public function testAddsFallbackAndTextToAttachment()
+ {
+ $message = 'Test message';
+ $record = new SlackRecord(null);
+ $data = $record->getSlackData($this->getRecord(Logger::WARNING, $message));
+
+ $this->assertSame($message, $data['attachments'][0]['text']);
+ $this->assertSame($message, $data['attachments'][0]['fallback']);
+ }
+
+ public function testMapsLevelToColorAttachmentColor()
+ {
+ $record = new SlackRecord(null);
+ $errorLoggerRecord = $this->getRecord(Logger::ERROR);
+ $emergencyLoggerRecord = $this->getRecord(Logger::EMERGENCY);
+ $warningLoggerRecord = $this->getRecord(Logger::WARNING);
+ $infoLoggerRecord = $this->getRecord(Logger::INFO);
+ $debugLoggerRecord = $this->getRecord(Logger::DEBUG);
+
+ $data = $record->getSlackData($errorLoggerRecord);
+ $this->assertSame(SlackRecord::COLOR_DANGER, $data['attachments'][0]['color']);
+
+ $data = $record->getSlackData($emergencyLoggerRecord);
+ $this->assertSame(SlackRecord::COLOR_DANGER, $data['attachments'][0]['color']);
+
+ $data = $record->getSlackData($warningLoggerRecord);
+ $this->assertSame(SlackRecord::COLOR_WARNING, $data['attachments'][0]['color']);
+
+ $data = $record->getSlackData($infoLoggerRecord);
+ $this->assertSame(SlackRecord::COLOR_GOOD, $data['attachments'][0]['color']);
+
+ $data = $record->getSlackData($debugLoggerRecord);
+ $this->assertSame(SlackRecord::COLOR_DEFAULT, $data['attachments'][0]['color']);
+ }
+
+ public function testAddsShortAttachmentWithoutContextAndExtra()
+ {
+ $level = Logger::ERROR;
+ $levelName = Logger::getLevelName($level);
+ $record = new SlackRecord(null, null, true, null, true);
+ $data = $record->getSlackData($this->getRecord($level, 'test', array('test' => 1)));
+
+ $attachment = $data['attachments'][0];
+ $this->assertArrayHasKey('title', $attachment);
+ $this->assertArrayHasKey('fields', $attachment);
+ $this->assertSame($levelName, $attachment['title']);
+ $this->assertSame(array(), $attachment['fields']);
+ }
+
+ public function testAddsShortAttachmentWithContextAndExtra()
+ {
+ $level = Logger::ERROR;
+ $levelName = Logger::getLevelName($level);
+ $context = array('test' => 1);
+ $extra = array('tags' => array('web'));
+ $record = new SlackRecord(null, null, true, null, true, true);
+ $loggerRecord = $this->getRecord($level, 'test', $context);
+ $loggerRecord['extra'] = $extra;
+ $data = $record->getSlackData($loggerRecord);
+
+ $attachment = $data['attachments'][0];
+ $this->assertArrayHasKey('title', $attachment);
+ $this->assertArrayHasKey('fields', $attachment);
+ $this->assertCount(2, $attachment['fields']);
+ $this->assertSame($levelName, $attachment['title']);
+ $this->assertSame(
+ array(
+ array(
+ 'title' => 'Extra',
+ 'value' => sprintf('```%s```', json_encode($extra, $this->jsonPrettyPrintFlag)),
+ 'short' => false
+ ),
+ array(
+ 'title' => 'Context',
+ 'value' => sprintf('```%s```', json_encode($context, $this->jsonPrettyPrintFlag)),
+ 'short' => false
+ )
+ ),
+ $attachment['fields']
+ );
+ }
+
+ public function testAddsLongAttachmentWithoutContextAndExtra()
+ {
+ $level = Logger::ERROR;
+ $levelName = Logger::getLevelName($level);
+ $record = new SlackRecord(null, null, true, null);
+ $data = $record->getSlackData($this->getRecord($level, 'test', array('test' => 1)));
+
+ $attachment = $data['attachments'][0];
+ $this->assertArrayHasKey('title', $attachment);
+ $this->assertArrayHasKey('fields', $attachment);
+ $this->assertCount(1, $attachment['fields']);
+ $this->assertSame('Message', $attachment['title']);
+ $this->assertSame(
+ array(array(
+ 'title' => 'Level',
+ 'value' => $levelName,
+ 'short' => false
+ )),
+ $attachment['fields']
+ );
+ }
+
+ public function testAddsLongAttachmentWithContextAndExtra()
+ {
+ $level = Logger::ERROR;
+ $levelName = Logger::getLevelName($level);
+ $context = array('test' => 1);
+ $extra = array('tags' => array('web'));
+ $record = new SlackRecord(null, null, true, null, false, true);
+ $loggerRecord = $this->getRecord($level, 'test', $context);
+ $loggerRecord['extra'] = $extra;
+ $data = $record->getSlackData($loggerRecord);
+
+ $expectedFields = array(
+ array(
+ 'title' => 'Level',
+ 'value' => $levelName,
+ 'short' => false,
+ ),
+ array(
+ 'title' => 'tags',
+ 'value' => sprintf('```%s```', json_encode($extra['tags'])),
+ 'short' => false
+ ),
+ array(
+ 'title' => 'test',
+ 'value' => $context['test'],
+ 'short' => false
+ )
+ );
+
+ $attachment = $data['attachments'][0];
+ $this->assertArrayHasKey('title', $attachment);
+ $this->assertArrayHasKey('fields', $attachment);
+ $this->assertCount(3, $attachment['fields']);
+ $this->assertSame('Message', $attachment['title']);
+ $this->assertSame(
+ $expectedFields,
+ $attachment['fields']
+ );
+ }
+
+ public function testAddsTimestampToAttachment()
+ {
+ $record = $this->getRecord();
+ $slackRecord = new SlackRecord();
+ $data = $slackRecord->getSlackData($this->getRecord());
+
+ $attachment = $data['attachments'][0];
+ $this->assertArrayHasKey('ts', $attachment);
+ $this->assertSame($record['datetime']->getTimestamp(), $attachment['ts']);
+ }
+
+ public function testExcludeExtraAndContextFields()
+ {
+ $record = $this->getRecord(
+ Logger::WARNING,
+ 'test',
+ array('info' => array('library' => 'monolog', 'author' => 'Jordi'))
+ );
+ $record['extra'] = array('tags' => array('web', 'cli'));
+
+ $slackRecord = new SlackRecord(null, null, true, null, false, true, array('context.info.library', 'extra.tags.1'));
+ $data = $slackRecord->getSlackData($record);
+ $attachment = $data['attachments'][0];
+
+ $expected = array(
+ array(
+ 'title' => 'info',
+ 'value' => sprintf('```%s```', json_encode(array('author' => 'Jordi'), $this->jsonPrettyPrintFlag)),
+ 'short' => false
+ ),
+ array(
+ 'title' => 'tags',
+ 'value' => sprintf('```%s```', json_encode(array('web'))),
+ 'short' => false
+ ),
+ );
+
+ foreach ($expected as $field) {
+ $this->assertNotFalse(array_search($field, $attachment['fields']));
+ break;
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SlackHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SlackHandlerTest.php
new file mode 100644
index 0000000..7b8145b
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SlackHandlerTest.php
@@ -0,0 +1,155 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+use Monolog\Formatter\LineFormatter;
+use Monolog\Handler\Slack\SlackRecord;
+
+/**
+ * @author Greg Kedzierski <greg@gregkedzierski.com>
+ * @see https://api.slack.com/
+ */
+class SlackHandlerTest extends TestCase
+{
+ /**
+ * @var resource
+ */
+ private $res;
+
+ /**
+ * @var SlackHandler
+ */
+ private $handler;
+
+ public function setUp()
+ {
+ if (!extension_loaded('openssl')) {
+ $this->markTestSkipped('This test requires openssl to run');
+ }
+ }
+
+ public function testWriteHeader()
+ {
+ $this->createHandler();
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/POST \/api\/chat.postMessage HTTP\/1.1\\r\\nHost: slack.com\\r\\nContent-Type: application\/x-www-form-urlencoded\\r\\nContent-Length: \d{2,4}\\r\\n\\r\\n/', $content);
+ }
+
+ public function testWriteContent()
+ {
+ $this->createHandler();
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegExp('/username=Monolog/', $content);
+ $this->assertRegExp('/channel=channel1/', $content);
+ $this->assertRegExp('/token=myToken/', $content);
+ $this->assertRegExp('/attachments/', $content);
+ }
+
+ public function testWriteContentUsesFormatterIfProvided()
+ {
+ $this->createHandler('myToken', 'channel1', 'Monolog', false);
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->createHandler('myToken', 'channel1', 'Monolog', false);
+ $this->handler->setFormatter(new LineFormatter('foo--%message%'));
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test2'));
+ fseek($this->res, 0);
+ $content2 = fread($this->res, 1024);
+
+ $this->assertRegexp('/text=test1/', $content);
+ $this->assertRegexp('/text=foo--test2/', $content2);
+ }
+
+ public function testWriteContentWithEmoji()
+ {
+ $this->createHandler('myToken', 'channel1', 'Monolog', true, 'alien');
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/icon_emoji=%3Aalien%3A/', $content);
+ }
+
+ /**
+ * @dataProvider provideLevelColors
+ */
+ public function testWriteContentWithColors($level, $expectedColor)
+ {
+ $this->createHandler();
+ $this->handler->handle($this->getRecord($level, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/%22color%22%3A%22'.$expectedColor.'/', $content);
+ }
+
+ public function testWriteContentWithPlainTextMessage()
+ {
+ $this->createHandler('myToken', 'channel1', 'Monolog', false);
+ $this->handler->handle($this->getRecord(Logger::CRITICAL, 'test1'));
+ fseek($this->res, 0);
+ $content = fread($this->res, 1024);
+
+ $this->assertRegexp('/text=test1/', $content);
+ }
+
+ public function provideLevelColors()
+ {
+ return array(
+ array(Logger::DEBUG, urlencode(SlackRecord::COLOR_DEFAULT)),
+ array(Logger::INFO, SlackRecord::COLOR_GOOD),
+ array(Logger::NOTICE, SlackRecord::COLOR_GOOD),
+ array(Logger::WARNING, SlackRecord::COLOR_WARNING),
+ array(Logger::ERROR, SlackRecord::COLOR_DANGER),
+ array(Logger::CRITICAL, SlackRecord::COLOR_DANGER),
+ array(Logger::ALERT, SlackRecord::COLOR_DANGER),
+ array(Logger::EMERGENCY,SlackRecord::COLOR_DANGER),
+ );
+ }
+
+ private function createHandler($token = 'myToken', $channel = 'channel1', $username = 'Monolog', $useAttachment = true, $iconEmoji = null, $useShortAttachment = false, $includeExtra = false)
+ {
+ $constructorArgs = array($token, $channel, $username, $useAttachment, $iconEmoji, Logger::DEBUG, true, $useShortAttachment, $includeExtra);
+ $this->res = fopen('php://memory', 'a');
+ $this->handler = $this->getMock(
+ '\Monolog\Handler\SlackHandler',
+ array('fsockopen', 'streamSetTimeout', 'closeSocket'),
+ $constructorArgs
+ );
+
+ $reflectionProperty = new \ReflectionProperty('\Monolog\Handler\SocketHandler', 'connectionString');
+ $reflectionProperty->setAccessible(true);
+ $reflectionProperty->setValue($this->handler, 'localhost:1234');
+
+ $this->handler->expects($this->any())
+ ->method('fsockopen')
+ ->will($this->returnValue($this->res));
+ $this->handler->expects($this->any())
+ ->method('streamSetTimeout')
+ ->will($this->returnValue(true));
+ $this->handler->expects($this->any())
+ ->method('closeSocket')
+ ->will($this->returnValue(true));
+
+ $this->handler->setFormatter($this->getIdentityFormatter());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SlackWebhookHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SlackWebhookHandlerTest.php
new file mode 100644
index 0000000..1c1ae16
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SlackWebhookHandlerTest.php
@@ -0,0 +1,107 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+use Monolog\Formatter\LineFormatter;
+use Monolog\Handler\Slack\SlackRecord;
+
+/**
+ * @author Haralan Dobrev <hkdobrev@gmail.com>
+ * @see https://api.slack.com/incoming-webhooks
+ * @coversDefaultClass Monolog\Handler\SlackWebhookHandler
+ */
+class SlackWebhookHandlerTest extends TestCase
+{
+ const WEBHOOK_URL = 'https://hooks.slack.com/services/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E';
+
+ /**
+ * @covers ::__construct
+ * @covers ::getSlackRecord
+ */
+ public function testConstructorMinimal()
+ {
+ $handler = new SlackWebhookHandler(self::WEBHOOK_URL);
+ $record = $this->getRecord();
+ $slackRecord = $handler->getSlackRecord();
+ $this->assertInstanceOf('Monolog\Handler\Slack\SlackRecord', $slackRecord);
+ $this->assertEquals(array(
+ 'attachments' => array(
+ array(
+ 'fallback' => 'test',
+ 'text' => 'test',
+ 'color' => SlackRecord::COLOR_WARNING,
+ 'fields' => array(
+ array(
+ 'title' => 'Level',
+ 'value' => 'WARNING',
+ 'short' => false,
+ ),
+ ),
+ 'title' => 'Message',
+ 'mrkdwn_in' => array('fields'),
+ 'ts' => $record['datetime']->getTimestamp(),
+ ),
+ ),
+ ), $slackRecord->getSlackData($record));
+ }
+
+ /**
+ * @covers ::__construct
+ * @covers ::getSlackRecord
+ */
+ public function testConstructorFull()
+ {
+ $handler = new SlackWebhookHandler(
+ self::WEBHOOK_URL,
+ 'test-channel',
+ 'test-username',
+ false,
+ ':ghost:',
+ false,
+ false,
+ Logger::DEBUG,
+ false
+ );
+
+ $slackRecord = $handler->getSlackRecord();
+ $this->assertInstanceOf('Monolog\Handler\Slack\SlackRecord', $slackRecord);
+ $this->assertEquals(array(
+ 'username' => 'test-username',
+ 'text' => 'test',
+ 'channel' => 'test-channel',
+ 'icon_emoji' => ':ghost:',
+ ), $slackRecord->getSlackData($this->getRecord()));
+ }
+
+ /**
+ * @covers ::getFormatter
+ */
+ public function testGetFormatter()
+ {
+ $handler = new SlackWebhookHandler(self::WEBHOOK_URL);
+ $formatter = $handler->getFormatter();
+ $this->assertInstanceOf('Monolog\Formatter\FormatterInterface', $formatter);
+ }
+
+ /**
+ * @covers ::setFormatter
+ */
+ public function testSetFormatter()
+ {
+ $handler = new SlackWebhookHandler(self::WEBHOOK_URL);
+ $formatter = new LineFormatter();
+ $handler->setFormatter($formatter);
+ $this->assertSame($formatter, $handler->getFormatter());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SlackbotHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SlackbotHandlerTest.php
new file mode 100644
index 0000000..adf72fd
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SlackbotHandlerTest.php
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+/**
+ * @author Haralan Dobrev <hkdobrev@gmail.com>
+ * @see https://slack.com/apps/A0F81R8ET-slackbot
+ * @coversDefaultClass Monolog\Handler\SlackbotHandler
+ */
+class SlackbotHandlerTest extends TestCase
+{
+ /**
+ * @covers ::__construct
+ */
+ public function testConstructorMinimal()
+ {
+ $handler = new SlackbotHandler('test-team', 'test-token', 'test-channel');
+ $this->assertInstanceOf('Monolog\Handler\AbstractProcessingHandler', $handler);
+ }
+
+ /**
+ * @covers ::__construct
+ */
+ public function testConstructorFull()
+ {
+ $handler = new SlackbotHandler(
+ 'test-team',
+ 'test-token',
+ 'test-channel',
+ Logger::DEBUG,
+ false
+ );
+ $this->assertInstanceOf('Monolog\Handler\AbstractProcessingHandler', $handler);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SocketHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SocketHandlerTest.php
new file mode 100644
index 0000000..519cc42
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SocketHandlerTest.php
@@ -0,0 +1,309 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+/**
+ * @author Pablo de Leon Belloc <pablolb@gmail.com>
+ */
+class SocketHandlerTest extends TestCase
+{
+ /**
+ * @var Monolog\Handler\SocketHandler
+ */
+ private $handler;
+
+ /**
+ * @var resource
+ */
+ private $res;
+
+ /**
+ * @expectedException UnexpectedValueException
+ */
+ public function testInvalidHostname()
+ {
+ $this->createHandler('garbage://here');
+ $this->writeRecord('data');
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ */
+ public function testBadConnectionTimeout()
+ {
+ $this->createHandler('localhost:1234');
+ $this->handler->setConnectionTimeout(-1);
+ }
+
+ public function testSetConnectionTimeout()
+ {
+ $this->createHandler('localhost:1234');
+ $this->handler->setConnectionTimeout(10.1);
+ $this->assertEquals(10.1, $this->handler->getConnectionTimeout());
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ */
+ public function testBadTimeout()
+ {
+ $this->createHandler('localhost:1234');
+ $this->handler->setTimeout(-1);
+ }
+
+ public function testSetTimeout()
+ {
+ $this->createHandler('localhost:1234');
+ $this->handler->setTimeout(10.25);
+ $this->assertEquals(10.25, $this->handler->getTimeout());
+ }
+
+ public function testSetWritingTimeout()
+ {
+ $this->createHandler('localhost:1234');
+ $this->handler->setWritingTimeout(10.25);
+ $this->assertEquals(10.25, $this->handler->getWritingTimeout());
+ }
+
+ public function testSetConnectionString()
+ {
+ $this->createHandler('tcp://localhost:9090');
+ $this->assertEquals('tcp://localhost:9090', $this->handler->getConnectionString());
+ }
+
+ /**
+ * @expectedException UnexpectedValueException
+ */
+ public function testExceptionIsThrownOnFsockopenError()
+ {
+ $this->setMockHandler(array('fsockopen'));
+ $this->handler->expects($this->once())
+ ->method('fsockopen')
+ ->will($this->returnValue(false));
+ $this->writeRecord('Hello world');
+ }
+
+ /**
+ * @expectedException UnexpectedValueException
+ */
+ public function testExceptionIsThrownOnPfsockopenError()
+ {
+ $this->setMockHandler(array('pfsockopen'));
+ $this->handler->expects($this->once())
+ ->method('pfsockopen')
+ ->will($this->returnValue(false));
+ $this->handler->setPersistent(true);
+ $this->writeRecord('Hello world');
+ }
+
+ /**
+ * @expectedException UnexpectedValueException
+ */
+ public function testExceptionIsThrownIfCannotSetTimeout()
+ {
+ $this->setMockHandler(array('streamSetTimeout'));
+ $this->handler->expects($this->once())
+ ->method('streamSetTimeout')
+ ->will($this->returnValue(false));
+ $this->writeRecord('Hello world');
+ }
+
+ /**
+ * @expectedException RuntimeException
+ */
+ public function testWriteFailsOnIfFwriteReturnsFalse()
+ {
+ $this->setMockHandler(array('fwrite'));
+
+ $callback = function ($arg) {
+ $map = array(
+ 'Hello world' => 6,
+ 'world' => false,
+ );
+
+ return $map[$arg];
+ };
+
+ $this->handler->expects($this->exactly(2))
+ ->method('fwrite')
+ ->will($this->returnCallback($callback));
+
+ $this->writeRecord('Hello world');
+ }
+
+ /**
+ * @expectedException RuntimeException
+ */
+ public function testWriteFailsIfStreamTimesOut()
+ {
+ $this->setMockHandler(array('fwrite', 'streamGetMetadata'));
+
+ $callback = function ($arg) {
+ $map = array(
+ 'Hello world' => 6,
+ 'world' => 5,
+ );
+
+ return $map[$arg];
+ };
+
+ $this->handler->expects($this->exactly(1))
+ ->method('fwrite')
+ ->will($this->returnCallback($callback));
+ $this->handler->expects($this->exactly(1))
+ ->method('streamGetMetadata')
+ ->will($this->returnValue(array('timed_out' => true)));
+
+ $this->writeRecord('Hello world');
+ }
+
+ /**
+ * @expectedException RuntimeException
+ */
+ public function testWriteFailsOnIncompleteWrite()
+ {
+ $this->setMockHandler(array('fwrite', 'streamGetMetadata'));
+
+ $res = $this->res;
+ $callback = function ($string) use ($res) {
+ fclose($res);
+
+ return strlen('Hello');
+ };
+
+ $this->handler->expects($this->exactly(1))
+ ->method('fwrite')
+ ->will($this->returnCallback($callback));
+ $this->handler->expects($this->exactly(1))
+ ->method('streamGetMetadata')
+ ->will($this->returnValue(array('timed_out' => false)));
+
+ $this->writeRecord('Hello world');
+ }
+
+ public function testWriteWithMemoryFile()
+ {
+ $this->setMockHandler();
+ $this->writeRecord('test1');
+ $this->writeRecord('test2');
+ $this->writeRecord('test3');
+ fseek($this->res, 0);
+ $this->assertEquals('test1test2test3', fread($this->res, 1024));
+ }
+
+ public function testWriteWithMock()
+ {
+ $this->setMockHandler(array('fwrite'));
+
+ $callback = function ($arg) {
+ $map = array(
+ 'Hello world' => 6,
+ 'world' => 5,
+ );
+
+ return $map[$arg];
+ };
+
+ $this->handler->expects($this->exactly(2))
+ ->method('fwrite')
+ ->will($this->returnCallback($callback));
+
+ $this->writeRecord('Hello world');
+ }
+
+ public function testClose()
+ {
+ $this->setMockHandler();
+ $this->writeRecord('Hello world');
+ $this->assertInternalType('resource', $this->res);
+ $this->handler->close();
+ $this->assertFalse(is_resource($this->res), "Expected resource to be closed after closing handler");
+ }
+
+ public function testCloseDoesNotClosePersistentSocket()
+ {
+ $this->setMockHandler();
+ $this->handler->setPersistent(true);
+ $this->writeRecord('Hello world');
+ $this->assertTrue(is_resource($this->res));
+ $this->handler->close();
+ $this->assertTrue(is_resource($this->res));
+ }
+
+ /**
+ * @expectedException \RuntimeException
+ */
+ public function testAvoidInfiniteLoopWhenNoDataIsWrittenForAWritingTimeoutSeconds()
+ {
+ $this->setMockHandler(array('fwrite', 'streamGetMetadata'));
+
+ $this->handler->expects($this->any())
+ ->method('fwrite')
+ ->will($this->returnValue(0));
+
+ $this->handler->expects($this->any())
+ ->method('streamGetMetadata')
+ ->will($this->returnValue(array('timed_out' => false)));
+
+ $this->handler->setWritingTimeout(1);
+
+ $this->writeRecord('Hello world');
+ }
+
+ private function createHandler($connectionString)
+ {
+ $this->handler = new SocketHandler($connectionString);
+ $this->handler->setFormatter($this->getIdentityFormatter());
+ }
+
+ private function writeRecord($string)
+ {
+ $this->handler->handle($this->getRecord(Logger::WARNING, $string));
+ }
+
+ private function setMockHandler(array $methods = array())
+ {
+ $this->res = fopen('php://memory', 'a');
+
+ $defaultMethods = array('fsockopen', 'pfsockopen', 'streamSetTimeout');
+ $newMethods = array_diff($methods, $defaultMethods);
+
+ $finalMethods = array_merge($defaultMethods, $newMethods);
+
+ $this->handler = $this->getMock(
+ '\Monolog\Handler\SocketHandler', $finalMethods, array('localhost:1234')
+ );
+
+ if (!in_array('fsockopen', $methods)) {
+ $this->handler->expects($this->any())
+ ->method('fsockopen')
+ ->will($this->returnValue($this->res));
+ }
+
+ if (!in_array('pfsockopen', $methods)) {
+ $this->handler->expects($this->any())
+ ->method('pfsockopen')
+ ->will($this->returnValue($this->res));
+ }
+
+ if (!in_array('streamSetTimeout', $methods)) {
+ $this->handler->expects($this->any())
+ ->method('streamSetTimeout')
+ ->will($this->returnValue(true));
+ }
+
+ $this->handler->setFormatter($this->getIdentityFormatter());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/StreamHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/StreamHandlerTest.php
new file mode 100644
index 0000000..ba4c315
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/StreamHandlerTest.php
@@ -0,0 +1,184 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+class StreamHandlerTest extends TestCase
+{
+ /**
+ * @covers Monolog\Handler\StreamHandler::__construct
+ * @covers Monolog\Handler\StreamHandler::write
+ */
+ public function testWrite()
+ {
+ $handle = fopen('php://memory', 'a+');
+ $handler = new StreamHandler($handle);
+ $handler->setFormatter($this->getIdentityFormatter());
+ $handler->handle($this->getRecord(Logger::WARNING, 'test'));
+ $handler->handle($this->getRecord(Logger::WARNING, 'test2'));
+ $handler->handle($this->getRecord(Logger::WARNING, 'test3'));
+ fseek($handle, 0);
+ $this->assertEquals('testtest2test3', fread($handle, 100));
+ }
+
+ /**
+ * @covers Monolog\Handler\StreamHandler::close
+ */
+ public function testCloseKeepsExternalHandlersOpen()
+ {
+ $handle = fopen('php://memory', 'a+');
+ $handler = new StreamHandler($handle);
+ $this->assertTrue(is_resource($handle));
+ $handler->close();
+ $this->assertTrue(is_resource($handle));
+ }
+
+ /**
+ * @covers Monolog\Handler\StreamHandler::close
+ */
+ public function testClose()
+ {
+ $handler = new StreamHandler('php://memory');
+ $handler->handle($this->getRecord(Logger::WARNING, 'test'));
+ $streamProp = new \ReflectionProperty('Monolog\Handler\StreamHandler', 'stream');
+ $streamProp->setAccessible(true);
+ $handle = $streamProp->getValue($handler);
+
+ $this->assertTrue(is_resource($handle));
+ $handler->close();
+ $this->assertFalse(is_resource($handle));
+ }
+
+ /**
+ * @covers Monolog\Handler\StreamHandler::write
+ */
+ public function testWriteCreatesTheStreamResource()
+ {
+ $handler = new StreamHandler('php://memory');
+ $handler->handle($this->getRecord());
+ }
+
+ /**
+ * @covers Monolog\Handler\StreamHandler::__construct
+ * @covers Monolog\Handler\StreamHandler::write
+ */
+ public function testWriteLocking()
+ {
+ $temp = sys_get_temp_dir() . DIRECTORY_SEPARATOR . 'monolog_locked_log';
+ $handler = new StreamHandler($temp, Logger::DEBUG, true, null, true);
+ $handler->handle($this->getRecord());
+ }
+
+ /**
+ * @expectedException LogicException
+ * @covers Monolog\Handler\StreamHandler::__construct
+ * @covers Monolog\Handler\StreamHandler::write
+ */
+ public function testWriteMissingResource()
+ {
+ $handler = new StreamHandler(null);
+ $handler->handle($this->getRecord());
+ }
+
+ public function invalidArgumentProvider()
+ {
+ return array(
+ array(1),
+ array(array()),
+ array(array('bogus://url')),
+ );
+ }
+
+ /**
+ * @dataProvider invalidArgumentProvider
+ * @expectedException InvalidArgumentException
+ * @covers Monolog\Handler\StreamHandler::__construct
+ */
+ public function testWriteInvalidArgument($invalidArgument)
+ {
+ $handler = new StreamHandler($invalidArgument);
+ }
+
+ /**
+ * @expectedException UnexpectedValueException
+ * @covers Monolog\Handler\StreamHandler::__construct
+ * @covers Monolog\Handler\StreamHandler::write
+ */
+ public function testWriteInvalidResource()
+ {
+ $handler = new StreamHandler('bogus://url');
+ $handler->handle($this->getRecord());
+ }
+
+ /**
+ * @expectedException UnexpectedValueException
+ * @covers Monolog\Handler\StreamHandler::__construct
+ * @covers Monolog\Handler\StreamHandler::write
+ */
+ public function testWriteNonExistingResource()
+ {
+ $handler = new StreamHandler('ftp://foo/bar/baz/'.rand(0, 10000));
+ $handler->handle($this->getRecord());
+ }
+
+ /**
+ * @covers Monolog\Handler\StreamHandler::__construct
+ * @covers Monolog\Handler\StreamHandler::write
+ */
+ public function testWriteNonExistingPath()
+ {
+ $handler = new StreamHandler(sys_get_temp_dir().'/bar/'.rand(0, 10000).DIRECTORY_SEPARATOR.rand(0, 10000));
+ $handler->handle($this->getRecord());
+ }
+
+ /**
+ * @covers Monolog\Handler\StreamHandler::__construct
+ * @covers Monolog\Handler\StreamHandler::write
+ */
+ public function testWriteNonExistingFileResource()
+ {
+ $handler = new StreamHandler('file://'.sys_get_temp_dir().'/bar/'.rand(0, 10000).DIRECTORY_SEPARATOR.rand(0, 10000));
+ $handler->handle($this->getRecord());
+ }
+
+ /**
+ * @expectedException Exception
+ * @expectedExceptionMessageRegExp /There is no existing directory at/
+ * @covers Monolog\Handler\StreamHandler::__construct
+ * @covers Monolog\Handler\StreamHandler::write
+ */
+ public function testWriteNonExistingAndNotCreatablePath()
+ {
+ if (defined('PHP_WINDOWS_VERSION_BUILD')) {
+ $this->markTestSkipped('Permissions checks can not run on windows');
+ }
+ $handler = new StreamHandler('/foo/bar/'.rand(0, 10000).DIRECTORY_SEPARATOR.rand(0, 10000));
+ $handler->handle($this->getRecord());
+ }
+
+ /**
+ * @expectedException Exception
+ * @expectedExceptionMessageRegExp /There is no existing directory at/
+ * @covers Monolog\Handler\StreamHandler::__construct
+ * @covers Monolog\Handler\StreamHandler::write
+ */
+ public function testWriteNonExistingAndNotCreatableFileResource()
+ {
+ if (defined('PHP_WINDOWS_VERSION_BUILD')) {
+ $this->markTestSkipped('Permissions checks can not run on windows');
+ }
+ $handler = new StreamHandler('file:///foo/bar/'.rand(0, 10000).DIRECTORY_SEPARATOR.rand(0, 10000));
+ $handler->handle($this->getRecord());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SwiftMailerHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SwiftMailerHandlerTest.php
new file mode 100644
index 0000000..e835816
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SwiftMailerHandlerTest.php
@@ -0,0 +1,113 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+use Monolog\TestCase;
+
+class SwiftMailerHandlerTest extends TestCase
+{
+ /** @var \Swift_Mailer|\PHPUnit_Framework_MockObject_MockObject */
+ private $mailer;
+
+ public function setUp()
+ {
+ $this->mailer = $this
+ ->getMockBuilder('Swift_Mailer')
+ ->disableOriginalConstructor()
+ ->getMock();
+ }
+
+ public function testMessageCreationIsLazyWhenUsingCallback()
+ {
+ $this->mailer->expects($this->never())
+ ->method('send');
+
+ $callback = function () {
+ throw new \RuntimeException('Swift_Message creation callback should not have been called in this test');
+ };
+ $handler = new SwiftMailerHandler($this->mailer, $callback);
+
+ $records = array(
+ $this->getRecord(Logger::DEBUG),
+ $this->getRecord(Logger::INFO),
+ );
+ $handler->handleBatch($records);
+ }
+
+ public function testMessageCanBeCustomizedGivenLoggedData()
+ {
+ // Wire Mailer to expect a specific Swift_Message with a customized Subject
+ $expectedMessage = new \Swift_Message();
+ $this->mailer->expects($this->once())
+ ->method('send')
+ ->with($this->callback(function ($value) use ($expectedMessage) {
+ return $value instanceof \Swift_Message
+ && $value->getSubject() === 'Emergency'
+ && $value === $expectedMessage;
+ }));
+
+ // Callback dynamically changes subject based on number of logged records
+ $callback = function ($content, array $records) use ($expectedMessage) {
+ $subject = count($records) > 0 ? 'Emergency' : 'Normal';
+ $expectedMessage->setSubject($subject);
+
+ return $expectedMessage;
+ };
+ $handler = new SwiftMailerHandler($this->mailer, $callback);
+
+ // Logging 1 record makes this an Emergency
+ $records = array(
+ $this->getRecord(Logger::EMERGENCY),
+ );
+ $handler->handleBatch($records);
+ }
+
+ public function testMessageSubjectFormatting()
+ {
+ // Wire Mailer to expect a specific Swift_Message with a customized Subject
+ $messageTemplate = new \Swift_Message();
+ $messageTemplate->setSubject('Alert: %level_name% %message%');
+ $receivedMessage = null;
+
+ $this->mailer->expects($this->once())
+ ->method('send')
+ ->with($this->callback(function ($value) use (&$receivedMessage) {
+ $receivedMessage = $value;
+ return true;
+ }));
+
+ $handler = new SwiftMailerHandler($this->mailer, $messageTemplate);
+
+ $records = array(
+ $this->getRecord(Logger::EMERGENCY),
+ );
+ $handler->handleBatch($records);
+
+ $this->assertEquals('Alert: EMERGENCY test', $receivedMessage->getSubject());
+ }
+
+ public function testMessageHaveUniqueId()
+ {
+ $messageTemplate = new \Swift_Message();
+ $handler = new SwiftMailerHandler($this->mailer, $messageTemplate);
+
+ $method = new \ReflectionMethod('Monolog\Handler\SwiftMailerHandler', 'buildMessage');
+ $method->setAccessible(true);
+ $method->invokeArgs($handler, array($messageTemplate, array()));
+
+ $builtMessage1 = $method->invoke($handler, $messageTemplate, array());
+ $builtMessage2 = $method->invoke($handler, $messageTemplate, array());
+
+ $this->assertFalse($builtMessage1->getId() === $builtMessage2->getId(), 'Two different messages have the same id');
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SyslogHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SyslogHandlerTest.php
new file mode 100644
index 0000000..b328819
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SyslogHandlerTest.php
@@ -0,0 +1,44 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\Logger;
+
+class SyslogHandlerTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @covers Monolog\Handler\SyslogHandler::__construct
+ */
+ public function testConstruct()
+ {
+ $handler = new SyslogHandler('test');
+ $this->assertInstanceOf('Monolog\Handler\SyslogHandler', $handler);
+
+ $handler = new SyslogHandler('test', LOG_USER);
+ $this->assertInstanceOf('Monolog\Handler\SyslogHandler', $handler);
+
+ $handler = new SyslogHandler('test', 'user');
+ $this->assertInstanceOf('Monolog\Handler\SyslogHandler', $handler);
+
+ $handler = new SyslogHandler('test', LOG_USER, Logger::DEBUG, true, LOG_PERROR);
+ $this->assertInstanceOf('Monolog\Handler\SyslogHandler', $handler);
+ }
+
+ /**
+ * @covers Monolog\Handler\SyslogHandler::__construct
+ */
+ public function testConstructInvalidFacility()
+ {
+ $this->setExpectedException('UnexpectedValueException');
+ $handler = new SyslogHandler('test', 'unknown');
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SyslogUdpHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SyslogUdpHandlerTest.php
new file mode 100644
index 0000000..1a504d4
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/SyslogUdpHandlerTest.php
@@ -0,0 +1,76 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+
+/**
+ * @requires extension sockets
+ */
+class SyslogUdpHandlerTest extends TestCase
+{
+ /**
+ * @expectedException UnexpectedValueException
+ */
+ public function testWeValidateFacilities()
+ {
+ $handler = new SyslogUdpHandler("ip", null, "invalidFacility");
+ }
+
+ public function testWeSplitIntoLines()
+ {
+ $time = '2014-01-07T12:34';
+ $pid = getmypid();
+ $host = gethostname();
+
+ $handler = $this->getMockBuilder('\Monolog\Handler\SyslogUdpHandler')
+ ->setConstructorArgs(array("127.0.0.1", 514, "authpriv"))
+ ->setMethods(array('getDateTime'))
+ ->getMock();
+
+ $handler->method('getDateTime')
+ ->willReturn($time);
+
+ $handler->setFormatter(new \Monolog\Formatter\ChromePHPFormatter());
+
+ $socket = $this->getMock('\Monolog\Handler\SyslogUdp\UdpSocket', array('write'), array('lol', 'lol'));
+ $socket->expects($this->at(0))
+ ->method('write')
+ ->with("lol", "<".(LOG_AUTHPRIV + LOG_WARNING).">1 $time $host php $pid - - ");
+ $socket->expects($this->at(1))
+ ->method('write')
+ ->with("hej", "<".(LOG_AUTHPRIV + LOG_WARNING).">1 $time $host php $pid - - ");
+
+ $handler->setSocket($socket);
+
+ $handler->handle($this->getRecordWithMessage("hej\nlol"));
+ }
+
+ public function testSplitWorksOnEmptyMsg()
+ {
+ $handler = new SyslogUdpHandler("127.0.0.1", 514, "authpriv");
+ $handler->setFormatter($this->getIdentityFormatter());
+
+ $socket = $this->getMock('\Monolog\Handler\SyslogUdp\UdpSocket', array('write'), array('lol', 'lol'));
+ $socket->expects($this->never())
+ ->method('write');
+
+ $handler->setSocket($socket);
+
+ $handler->handle($this->getRecordWithMessage(null));
+ }
+
+ protected function getRecordWithMessage($msg)
+ {
+ return array('message' => $msg, 'level' => \Monolog\Logger::WARNING, 'context' => null, 'extra' => array(), 'channel' => 'lol');
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/TestHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/TestHandlerTest.php
new file mode 100644
index 0000000..531f062
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/TestHandlerTest.php
@@ -0,0 +1,70 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+/**
+ * @covers Monolog\Handler\TestHandler
+ */
+class TestHandlerTest extends TestCase
+{
+ /**
+ * @dataProvider methodProvider
+ */
+ public function testHandler($method, $level)
+ {
+ $handler = new TestHandler;
+ $record = $this->getRecord($level, 'test'.$method);
+ $this->assertFalse($handler->hasRecords($level));
+ $this->assertFalse($handler->hasRecord($record, $level));
+ $this->assertFalse($handler->{'has'.$method}($record), 'has'.$method);
+ $this->assertFalse($handler->{'has'.$method.'ThatContains'}('test'), 'has'.$method.'ThatContains');
+ $this->assertFalse($handler->{'has'.$method.'ThatPasses'}(function ($rec) {
+ return true;
+ }), 'has'.$method.'ThatPasses');
+ $this->assertFalse($handler->{'has'.$method.'ThatMatches'}('/test\w+/'));
+ $this->assertFalse($handler->{'has'.$method.'Records'}(), 'has'.$method.'Records');
+ $handler->handle($record);
+
+ $this->assertFalse($handler->{'has'.$method}('bar'), 'has'.$method);
+ $this->assertTrue($handler->hasRecords($level));
+ $this->assertTrue($handler->hasRecord($record, $level));
+ $this->assertTrue($handler->{'has'.$method}($record), 'has'.$method);
+ $this->assertTrue($handler->{'has'.$method}('test'.$method), 'has'.$method);
+ $this->assertTrue($handler->{'has'.$method.'ThatContains'}('test'), 'has'.$method.'ThatContains');
+ $this->assertTrue($handler->{'has'.$method.'ThatPasses'}(function ($rec) {
+ return true;
+ }), 'has'.$method.'ThatPasses');
+ $this->assertTrue($handler->{'has'.$method.'ThatMatches'}('/test\w+/'));
+ $this->assertTrue($handler->{'has'.$method.'Records'}(), 'has'.$method.'Records');
+
+ $records = $handler->getRecords();
+ unset($records[0]['formatted']);
+ $this->assertEquals(array($record), $records);
+ }
+
+ public function methodProvider()
+ {
+ return array(
+ array('Emergency', Logger::EMERGENCY),
+ array('Alert' , Logger::ALERT),
+ array('Critical' , Logger::CRITICAL),
+ array('Error' , Logger::ERROR),
+ array('Warning' , Logger::WARNING),
+ array('Info' , Logger::INFO),
+ array('Notice' , Logger::NOTICE),
+ array('Debug' , Logger::DEBUG),
+ );
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/UdpSocketTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/UdpSocketTest.php
new file mode 100644
index 0000000..6dc67da
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/UdpSocketTest.php
@@ -0,0 +1,64 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Handler\SyslogUdp\UdpSocket;
+
+/**
+ * @requires extension sockets
+ */
+class UdpSocketTest extends TestCase
+{
+ public function testWeDoNotTruncateShortMessages()
+ {
+ $socket = $this->getMock('\Monolog\Handler\SyslogUdp\UdpSocket', array('send'), array('lol', 'lol'));
+
+ $socket->expects($this->at(0))
+ ->method('send')
+ ->with("HEADER: The quick brown fox jumps over the lazy dog");
+
+ $socket->write("The quick brown fox jumps over the lazy dog", "HEADER: ");
+ }
+
+ public function testLongMessagesAreTruncated()
+ {
+ $socket = $this->getMock('\Monolog\Handler\SyslogUdp\UdpSocket', array('send'), array('lol', 'lol'));
+
+ $truncatedString = str_repeat("derp", 16254).'d';
+
+ $socket->expects($this->exactly(1))
+ ->method('send')
+ ->with("HEADER" . $truncatedString);
+
+ $longString = str_repeat("derp", 20000);
+
+ $socket->write($longString, "HEADER");
+ }
+
+ public function testDoubleCloseDoesNotError()
+ {
+ $socket = new UdpSocket('127.0.0.1', 514);
+ $socket->close();
+ $socket->close();
+ }
+
+ /**
+ * @expectedException LogicException
+ */
+ public function testWriteAfterCloseErrors()
+ {
+ $socket = new UdpSocket('127.0.0.1', 514);
+ $socket->close();
+ $socket->write('foo', "HEADER");
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/WhatFailureGroupHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/WhatFailureGroupHandlerTest.php
new file mode 100644
index 0000000..d7b3286
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/WhatFailureGroupHandlerTest.php
@@ -0,0 +1,121 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+use Monolog\Logger;
+
+class WhatFailureGroupHandlerTest extends TestCase
+{
+ /**
+ * @covers Monolog\Handler\WhatFailureGroupHandler::__construct
+ * @expectedException InvalidArgumentException
+ */
+ public function testConstructorOnlyTakesHandler()
+ {
+ new WhatFailureGroupHandler(array(new TestHandler(), "foo"));
+ }
+
+ /**
+ * @covers Monolog\Handler\WhatFailureGroupHandler::__construct
+ * @covers Monolog\Handler\WhatFailureGroupHandler::handle
+ */
+ public function testHandle()
+ {
+ $testHandlers = array(new TestHandler(), new TestHandler());
+ $handler = new WhatFailureGroupHandler($testHandlers);
+ $handler->handle($this->getRecord(Logger::DEBUG));
+ $handler->handle($this->getRecord(Logger::INFO));
+ foreach ($testHandlers as $test) {
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertTrue($test->hasInfoRecords());
+ $this->assertTrue(count($test->getRecords()) === 2);
+ }
+ }
+
+ /**
+ * @covers Monolog\Handler\WhatFailureGroupHandler::handleBatch
+ */
+ public function testHandleBatch()
+ {
+ $testHandlers = array(new TestHandler(), new TestHandler());
+ $handler = new WhatFailureGroupHandler($testHandlers);
+ $handler->handleBatch(array($this->getRecord(Logger::DEBUG), $this->getRecord(Logger::INFO)));
+ foreach ($testHandlers as $test) {
+ $this->assertTrue($test->hasDebugRecords());
+ $this->assertTrue($test->hasInfoRecords());
+ $this->assertTrue(count($test->getRecords()) === 2);
+ }
+ }
+
+ /**
+ * @covers Monolog\Handler\WhatFailureGroupHandler::isHandling
+ */
+ public function testIsHandling()
+ {
+ $testHandlers = array(new TestHandler(Logger::ERROR), new TestHandler(Logger::WARNING));
+ $handler = new WhatFailureGroupHandler($testHandlers);
+ $this->assertTrue($handler->isHandling($this->getRecord(Logger::ERROR)));
+ $this->assertTrue($handler->isHandling($this->getRecord(Logger::WARNING)));
+ $this->assertFalse($handler->isHandling($this->getRecord(Logger::DEBUG)));
+ }
+
+ /**
+ * @covers Monolog\Handler\WhatFailureGroupHandler::handle
+ */
+ public function testHandleUsesProcessors()
+ {
+ $test = new TestHandler();
+ $handler = new WhatFailureGroupHandler(array($test));
+ $handler->pushProcessor(function ($record) {
+ $record['extra']['foo'] = true;
+
+ return $record;
+ });
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $this->assertTrue($test->hasWarningRecords());
+ $records = $test->getRecords();
+ $this->assertTrue($records[0]['extra']['foo']);
+ }
+
+ /**
+ * @covers Monolog\Handler\WhatFailureGroupHandler::handle
+ */
+ public function testHandleException()
+ {
+ $test = new TestHandler();
+ $exception = new ExceptionTestHandler();
+ $handler = new WhatFailureGroupHandler(array($exception, $test, $exception));
+ $handler->pushProcessor(function ($record) {
+ $record['extra']['foo'] = true;
+
+ return $record;
+ });
+ $handler->handle($this->getRecord(Logger::WARNING));
+ $this->assertTrue($test->hasWarningRecords());
+ $records = $test->getRecords();
+ $this->assertTrue($records[0]['extra']['foo']);
+ }
+}
+
+class ExceptionTestHandler extends TestHandler
+{
+ /**
+ * {@inheritdoc}
+ */
+ public function handle(array $record)
+ {
+ parent::handle($record);
+
+ throw new \Exception("ExceptionTestHandler::handle");
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ZendMonitorHandlerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ZendMonitorHandlerTest.php
new file mode 100644
index 0000000..3897544
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Handler/ZendMonitorHandlerTest.php
@@ -0,0 +1,69 @@
+<?php
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Handler;
+
+use Monolog\TestCase;
+
+class ZendMonitorHandlerTest extends TestCase
+{
+ protected $zendMonitorHandler;
+
+ public function setUp()
+ {
+ if (!function_exists('zend_monitor_custom_event')) {
+ $this->markTestSkipped('ZendServer is not installed');
+ }
+ }
+
+ /**
+ * @covers Monolog\Handler\ZendMonitorHandler::write
+ */
+ public function testWrite()
+ {
+ $record = $this->getRecord();
+ $formatterResult = array(
+ 'message' => $record['message'],
+ );
+
+ $zendMonitor = $this->getMockBuilder('Monolog\Handler\ZendMonitorHandler')
+ ->setMethods(array('writeZendMonitorCustomEvent', 'getDefaultFormatter'))
+ ->getMock();
+
+ $formatterMock = $this->getMockBuilder('Monolog\Formatter\NormalizerFormatter')
+ ->disableOriginalConstructor()
+ ->getMock();
+
+ $formatterMock->expects($this->once())
+ ->method('format')
+ ->will($this->returnValue($formatterResult));
+
+ $zendMonitor->expects($this->once())
+ ->method('getDefaultFormatter')
+ ->will($this->returnValue($formatterMock));
+
+ $levelMap = $zendMonitor->getLevelMap();
+
+ $zendMonitor->expects($this->once())
+ ->method('writeZendMonitorCustomEvent')
+ ->with($levelMap[$record['level']], $record['message'], $formatterResult);
+
+ $zendMonitor->handle($record);
+ }
+
+ /**
+ * @covers Monolog\Handler\ZendMonitorHandler::getDefaultFormatter
+ */
+ public function testGetDefaultFormatterReturnsNormalizerFormatter()
+ {
+ $zendMonitor = new ZendMonitorHandler();
+ $this->assertInstanceOf('Monolog\Formatter\NormalizerFormatter', $zendMonitor->getDefaultFormatter());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/LoggerTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/LoggerTest.php
new file mode 100644
index 0000000..3bb7b90
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/LoggerTest.php
@@ -0,0 +1,548 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog;
+
+use Monolog\Processor\WebProcessor;
+use Monolog\Handler\TestHandler;
+
+class LoggerTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @covers Monolog\Logger::getName
+ */
+ public function testGetName()
+ {
+ $logger = new Logger('foo');
+ $this->assertEquals('foo', $logger->getName());
+ }
+
+ /**
+ * @covers Monolog\Logger::getLevelName
+ */
+ public function testGetLevelName()
+ {
+ $this->assertEquals('ERROR', Logger::getLevelName(Logger::ERROR));
+ }
+
+ /**
+ * @covers Monolog\Logger::withName
+ */
+ public function testWithName()
+ {
+ $first = new Logger('first', array($handler = new TestHandler()));
+ $second = $first->withName('second');
+
+ $this->assertSame('first', $first->getName());
+ $this->assertSame('second', $second->getName());
+ $this->assertSame($handler, $second->popHandler());
+ }
+
+ /**
+ * @covers Monolog\Logger::toMonologLevel
+ */
+ public function testConvertPSR3ToMonologLevel()
+ {
+ $this->assertEquals(Logger::toMonologLevel('debug'), 100);
+ $this->assertEquals(Logger::toMonologLevel('info'), 200);
+ $this->assertEquals(Logger::toMonologLevel('notice'), 250);
+ $this->assertEquals(Logger::toMonologLevel('warning'), 300);
+ $this->assertEquals(Logger::toMonologLevel('error'), 400);
+ $this->assertEquals(Logger::toMonologLevel('critical'), 500);
+ $this->assertEquals(Logger::toMonologLevel('alert'), 550);
+ $this->assertEquals(Logger::toMonologLevel('emergency'), 600);
+ }
+
+ /**
+ * @covers Monolog\Logger::getLevelName
+ * @expectedException InvalidArgumentException
+ */
+ public function testGetLevelNameThrows()
+ {
+ Logger::getLevelName(5);
+ }
+
+ /**
+ * @covers Monolog\Logger::__construct
+ */
+ public function testChannel()
+ {
+ $logger = new Logger('foo');
+ $handler = new TestHandler;
+ $logger->pushHandler($handler);
+ $logger->addWarning('test');
+ list($record) = $handler->getRecords();
+ $this->assertEquals('foo', $record['channel']);
+ }
+
+ /**
+ * @covers Monolog\Logger::addRecord
+ */
+ public function testLog()
+ {
+ $logger = new Logger(__METHOD__);
+
+ $handler = $this->getMock('Monolog\Handler\NullHandler', array('handle'));
+ $handler->expects($this->once())
+ ->method('handle');
+ $logger->pushHandler($handler);
+
+ $this->assertTrue($logger->addWarning('test'));
+ }
+
+ /**
+ * @covers Monolog\Logger::addRecord
+ */
+ public function testLogNotHandled()
+ {
+ $logger = new Logger(__METHOD__);
+
+ $handler = $this->getMock('Monolog\Handler\NullHandler', array('handle'), array(Logger::ERROR));
+ $handler->expects($this->never())
+ ->method('handle');
+ $logger->pushHandler($handler);
+
+ $this->assertFalse($logger->addWarning('test'));
+ }
+
+ public function testHandlersInCtor()
+ {
+ $handler1 = new TestHandler;
+ $handler2 = new TestHandler;
+ $logger = new Logger(__METHOD__, array($handler1, $handler2));
+
+ $this->assertEquals($handler1, $logger->popHandler());
+ $this->assertEquals($handler2, $logger->popHandler());
+ }
+
+ public function testProcessorsInCtor()
+ {
+ $processor1 = new WebProcessor;
+ $processor2 = new WebProcessor;
+ $logger = new Logger(__METHOD__, array(), array($processor1, $processor2));
+
+ $this->assertEquals($processor1, $logger->popProcessor());
+ $this->assertEquals($processor2, $logger->popProcessor());
+ }
+
+ /**
+ * @covers Monolog\Logger::pushHandler
+ * @covers Monolog\Logger::popHandler
+ * @expectedException LogicException
+ */
+ public function testPushPopHandler()
+ {
+ $logger = new Logger(__METHOD__);
+ $handler1 = new TestHandler;
+ $handler2 = new TestHandler;
+
+ $logger->pushHandler($handler1);
+ $logger->pushHandler($handler2);
+
+ $this->assertEquals($handler2, $logger->popHandler());
+ $this->assertEquals($handler1, $logger->popHandler());
+ $logger->popHandler();
+ }
+
+ /**
+ * @covers Monolog\Logger::setHandlers
+ */
+ public function testSetHandlers()
+ {
+ $logger = new Logger(__METHOD__);
+ $handler1 = new TestHandler;
+ $handler2 = new TestHandler;
+
+ $logger->pushHandler($handler1);
+ $logger->setHandlers(array($handler2));
+
+ // handler1 has been removed
+ $this->assertEquals(array($handler2), $logger->getHandlers());
+
+ $logger->setHandlers(array(
+ "AMapKey" => $handler1,
+ "Woop" => $handler2,
+ ));
+
+ // Keys have been scrubbed
+ $this->assertEquals(array($handler1, $handler2), $logger->getHandlers());
+ }
+
+ /**
+ * @covers Monolog\Logger::pushProcessor
+ * @covers Monolog\Logger::popProcessor
+ * @expectedException LogicException
+ */
+ public function testPushPopProcessor()
+ {
+ $logger = new Logger(__METHOD__);
+ $processor1 = new WebProcessor;
+ $processor2 = new WebProcessor;
+
+ $logger->pushProcessor($processor1);
+ $logger->pushProcessor($processor2);
+
+ $this->assertEquals($processor2, $logger->popProcessor());
+ $this->assertEquals($processor1, $logger->popProcessor());
+ $logger->popProcessor();
+ }
+
+ /**
+ * @covers Monolog\Logger::pushProcessor
+ * @expectedException InvalidArgumentException
+ */
+ public function testPushProcessorWithNonCallable()
+ {
+ $logger = new Logger(__METHOD__);
+
+ $logger->pushProcessor(new \stdClass());
+ }
+
+ /**
+ * @covers Monolog\Logger::addRecord
+ */
+ public function testProcessorsAreExecuted()
+ {
+ $logger = new Logger(__METHOD__);
+ $handler = new TestHandler;
+ $logger->pushHandler($handler);
+ $logger->pushProcessor(function ($record) {
+ $record['extra']['win'] = true;
+
+ return $record;
+ });
+ $logger->addError('test');
+ list($record) = $handler->getRecords();
+ $this->assertTrue($record['extra']['win']);
+ }
+
+ /**
+ * @covers Monolog\Logger::addRecord
+ */
+ public function testProcessorsAreCalledOnlyOnce()
+ {
+ $logger = new Logger(__METHOD__);
+ $handler = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler->expects($this->any())
+ ->method('isHandling')
+ ->will($this->returnValue(true))
+ ;
+ $handler->expects($this->any())
+ ->method('handle')
+ ->will($this->returnValue(true))
+ ;
+ $logger->pushHandler($handler);
+
+ $processor = $this->getMockBuilder('Monolog\Processor\WebProcessor')
+ ->disableOriginalConstructor()
+ ->setMethods(array('__invoke'))
+ ->getMock()
+ ;
+ $processor->expects($this->once())
+ ->method('__invoke')
+ ->will($this->returnArgument(0))
+ ;
+ $logger->pushProcessor($processor);
+
+ $logger->addError('test');
+ }
+
+ /**
+ * @covers Monolog\Logger::addRecord
+ */
+ public function testProcessorsNotCalledWhenNotHandled()
+ {
+ $logger = new Logger(__METHOD__);
+ $handler = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler->expects($this->once())
+ ->method('isHandling')
+ ->will($this->returnValue(false))
+ ;
+ $logger->pushHandler($handler);
+ $that = $this;
+ $logger->pushProcessor(function ($record) use ($that) {
+ $that->fail('The processor should not be called');
+ });
+ $logger->addAlert('test');
+ }
+
+ /**
+ * @covers Monolog\Logger::addRecord
+ */
+ public function testHandlersNotCalledBeforeFirstHandling()
+ {
+ $logger = new Logger(__METHOD__);
+
+ $handler1 = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler1->expects($this->never())
+ ->method('isHandling')
+ ->will($this->returnValue(false))
+ ;
+ $handler1->expects($this->once())
+ ->method('handle')
+ ->will($this->returnValue(false))
+ ;
+ $logger->pushHandler($handler1);
+
+ $handler2 = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler2->expects($this->once())
+ ->method('isHandling')
+ ->will($this->returnValue(true))
+ ;
+ $handler2->expects($this->once())
+ ->method('handle')
+ ->will($this->returnValue(false))
+ ;
+ $logger->pushHandler($handler2);
+
+ $handler3 = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler3->expects($this->once())
+ ->method('isHandling')
+ ->will($this->returnValue(false))
+ ;
+ $handler3->expects($this->never())
+ ->method('handle')
+ ;
+ $logger->pushHandler($handler3);
+
+ $logger->debug('test');
+ }
+
+ /**
+ * @covers Monolog\Logger::addRecord
+ */
+ public function testHandlersNotCalledBeforeFirstHandlingWithAssocArray()
+ {
+ $handler1 = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler1->expects($this->never())
+ ->method('isHandling')
+ ->will($this->returnValue(false))
+ ;
+ $handler1->expects($this->once())
+ ->method('handle')
+ ->will($this->returnValue(false))
+ ;
+
+ $handler2 = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler2->expects($this->once())
+ ->method('isHandling')
+ ->will($this->returnValue(true))
+ ;
+ $handler2->expects($this->once())
+ ->method('handle')
+ ->will($this->returnValue(false))
+ ;
+
+ $handler3 = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler3->expects($this->once())
+ ->method('isHandling')
+ ->will($this->returnValue(false))
+ ;
+ $handler3->expects($this->never())
+ ->method('handle')
+ ;
+
+ $logger = new Logger(__METHOD__, array('last' => $handler3, 'second' => $handler2, 'first' => $handler1));
+
+ $logger->debug('test');
+ }
+
+ /**
+ * @covers Monolog\Logger::addRecord
+ */
+ public function testBubblingWhenTheHandlerReturnsFalse()
+ {
+ $logger = new Logger(__METHOD__);
+
+ $handler1 = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler1->expects($this->any())
+ ->method('isHandling')
+ ->will($this->returnValue(true))
+ ;
+ $handler1->expects($this->once())
+ ->method('handle')
+ ->will($this->returnValue(false))
+ ;
+ $logger->pushHandler($handler1);
+
+ $handler2 = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler2->expects($this->any())
+ ->method('isHandling')
+ ->will($this->returnValue(true))
+ ;
+ $handler2->expects($this->once())
+ ->method('handle')
+ ->will($this->returnValue(false))
+ ;
+ $logger->pushHandler($handler2);
+
+ $logger->debug('test');
+ }
+
+ /**
+ * @covers Monolog\Logger::addRecord
+ */
+ public function testNotBubblingWhenTheHandlerReturnsTrue()
+ {
+ $logger = new Logger(__METHOD__);
+
+ $handler1 = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler1->expects($this->any())
+ ->method('isHandling')
+ ->will($this->returnValue(true))
+ ;
+ $handler1->expects($this->never())
+ ->method('handle')
+ ;
+ $logger->pushHandler($handler1);
+
+ $handler2 = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler2->expects($this->any())
+ ->method('isHandling')
+ ->will($this->returnValue(true))
+ ;
+ $handler2->expects($this->once())
+ ->method('handle')
+ ->will($this->returnValue(true))
+ ;
+ $logger->pushHandler($handler2);
+
+ $logger->debug('test');
+ }
+
+ /**
+ * @covers Monolog\Logger::isHandling
+ */
+ public function testIsHandling()
+ {
+ $logger = new Logger(__METHOD__);
+
+ $handler1 = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler1->expects($this->any())
+ ->method('isHandling')
+ ->will($this->returnValue(false))
+ ;
+
+ $logger->pushHandler($handler1);
+ $this->assertFalse($logger->isHandling(Logger::DEBUG));
+
+ $handler2 = $this->getMock('Monolog\Handler\HandlerInterface');
+ $handler2->expects($this->any())
+ ->method('isHandling')
+ ->will($this->returnValue(true))
+ ;
+
+ $logger->pushHandler($handler2);
+ $this->assertTrue($logger->isHandling(Logger::DEBUG));
+ }
+
+ /**
+ * @dataProvider logMethodProvider
+ * @covers Monolog\Logger::addDebug
+ * @covers Monolog\Logger::addInfo
+ * @covers Monolog\Logger::addNotice
+ * @covers Monolog\Logger::addWarning
+ * @covers Monolog\Logger::addError
+ * @covers Monolog\Logger::addCritical
+ * @covers Monolog\Logger::addAlert
+ * @covers Monolog\Logger::addEmergency
+ * @covers Monolog\Logger::debug
+ * @covers Monolog\Logger::info
+ * @covers Monolog\Logger::notice
+ * @covers Monolog\Logger::warn
+ * @covers Monolog\Logger::err
+ * @covers Monolog\Logger::crit
+ * @covers Monolog\Logger::alert
+ * @covers Monolog\Logger::emerg
+ */
+ public function testLogMethods($method, $expectedLevel)
+ {
+ $logger = new Logger('foo');
+ $handler = new TestHandler;
+ $logger->pushHandler($handler);
+ $logger->{$method}('test');
+ list($record) = $handler->getRecords();
+ $this->assertEquals($expectedLevel, $record['level']);
+ }
+
+ public function logMethodProvider()
+ {
+ return array(
+ // monolog methods
+ array('addDebug', Logger::DEBUG),
+ array('addInfo', Logger::INFO),
+ array('addNotice', Logger::NOTICE),
+ array('addWarning', Logger::WARNING),
+ array('addError', Logger::ERROR),
+ array('addCritical', Logger::CRITICAL),
+ array('addAlert', Logger::ALERT),
+ array('addEmergency', Logger::EMERGENCY),
+
+ // ZF/Sf2 compat methods
+ array('debug', Logger::DEBUG),
+ array('info', Logger::INFO),
+ array('notice', Logger::NOTICE),
+ array('warn', Logger::WARNING),
+ array('err', Logger::ERROR),
+ array('crit', Logger::CRITICAL),
+ array('alert', Logger::ALERT),
+ array('emerg', Logger::EMERGENCY),
+ );
+ }
+
+ /**
+ * @dataProvider setTimezoneProvider
+ * @covers Monolog\Logger::setTimezone
+ */
+ public function testSetTimezone($tz)
+ {
+ Logger::setTimezone($tz);
+ $logger = new Logger('foo');
+ $handler = new TestHandler;
+ $logger->pushHandler($handler);
+ $logger->info('test');
+ list($record) = $handler->getRecords();
+ $this->assertEquals($tz, $record['datetime']->getTimezone());
+ }
+
+ public function setTimezoneProvider()
+ {
+ return array_map(
+ function ($tz) { return array(new \DateTimeZone($tz)); },
+ \DateTimeZone::listIdentifiers()
+ );
+ }
+
+ /**
+ * @dataProvider useMicrosecondTimestampsProvider
+ * @covers Monolog\Logger::useMicrosecondTimestamps
+ * @covers Monolog\Logger::addRecord
+ */
+ public function testUseMicrosecondTimestamps($micro, $assert)
+ {
+ $logger = new Logger('foo');
+ $logger->useMicrosecondTimestamps($micro);
+ $handler = new TestHandler;
+ $logger->pushHandler($handler);
+ $logger->info('test');
+ list($record) = $handler->getRecords();
+ $this->{$assert}('000000', $record['datetime']->format('u'));
+ }
+
+ public function useMicrosecondTimestampsProvider()
+ {
+ return array(
+ // this has a very small chance of a false negative (1/10^6)
+ 'with microseconds' => array(true, 'assertNotSame'),
+ 'without microseconds' => array(false, PHP_VERSION_ID >= 70100 ? 'assertNotSame' : 'assertSame'),
+ );
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/GitProcessorTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/GitProcessorTest.php
new file mode 100644
index 0000000..279d149
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/GitProcessorTest.php
@@ -0,0 +1,29 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\TestCase;
+
+class GitProcessorTest extends TestCase
+{
+ /**
+ * @covers Monolog\Processor\GitProcessor::__invoke
+ */
+ public function testProcessor()
+ {
+ $processor = new GitProcessor();
+ $record = $processor($this->getRecord());
+
+ $this->assertArrayHasKey('git', $record['extra']);
+ $this->assertTrue(!is_array($record['extra']['git']['branch']));
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/IntrospectionProcessorTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/IntrospectionProcessorTest.php
new file mode 100644
index 0000000..cd6212f
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/IntrospectionProcessorTest.php
@@ -0,0 +1,123 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Acme;
+
+class Tester
+{
+ public function test($handler, $record)
+ {
+ $handler->handle($record);
+ }
+}
+
+function tester($handler, $record)
+{
+ $handler->handle($record);
+}
+
+namespace Monolog\Processor;
+
+use Monolog\Logger;
+use Monolog\TestCase;
+use Monolog\Handler\TestHandler;
+
+class IntrospectionProcessorTest extends TestCase
+{
+ public function getHandler()
+ {
+ $processor = new IntrospectionProcessor();
+ $handler = new TestHandler();
+ $handler->pushProcessor($processor);
+
+ return $handler;
+ }
+
+ public function testProcessorFromClass()
+ {
+ $handler = $this->getHandler();
+ $tester = new \Acme\Tester;
+ $tester->test($handler, $this->getRecord());
+ list($record) = $handler->getRecords();
+ $this->assertEquals(__FILE__, $record['extra']['file']);
+ $this->assertEquals(18, $record['extra']['line']);
+ $this->assertEquals('Acme\Tester', $record['extra']['class']);
+ $this->assertEquals('test', $record['extra']['function']);
+ }
+
+ public function testProcessorFromFunc()
+ {
+ $handler = $this->getHandler();
+ \Acme\tester($handler, $this->getRecord());
+ list($record) = $handler->getRecords();
+ $this->assertEquals(__FILE__, $record['extra']['file']);
+ $this->assertEquals(24, $record['extra']['line']);
+ $this->assertEquals(null, $record['extra']['class']);
+ $this->assertEquals('Acme\tester', $record['extra']['function']);
+ }
+
+ public function testLevelTooLow()
+ {
+ $input = array(
+ 'level' => Logger::DEBUG,
+ 'extra' => array(),
+ );
+
+ $expected = $input;
+
+ $processor = new IntrospectionProcessor(Logger::CRITICAL);
+ $actual = $processor($input);
+
+ $this->assertEquals($expected, $actual);
+ }
+
+ public function testLevelEqual()
+ {
+ $input = array(
+ 'level' => Logger::CRITICAL,
+ 'extra' => array(),
+ );
+
+ $expected = $input;
+ $expected['extra'] = array(
+ 'file' => null,
+ 'line' => null,
+ 'class' => 'ReflectionMethod',
+ 'function' => 'invokeArgs',
+ );
+
+ $processor = new IntrospectionProcessor(Logger::CRITICAL);
+ $actual = $processor($input);
+
+ $this->assertEquals($expected, $actual);
+ }
+
+ public function testLevelHigher()
+ {
+ $input = array(
+ 'level' => Logger::EMERGENCY,
+ 'extra' => array(),
+ );
+
+ $expected = $input;
+ $expected['extra'] = array(
+ 'file' => null,
+ 'line' => null,
+ 'class' => 'ReflectionMethod',
+ 'function' => 'invokeArgs',
+ );
+
+ $processor = new IntrospectionProcessor(Logger::CRITICAL);
+ $actual = $processor($input);
+
+ $this->assertEquals($expected, $actual);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/MemoryPeakUsageProcessorTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/MemoryPeakUsageProcessorTest.php
new file mode 100644
index 0000000..0a0982f
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/MemoryPeakUsageProcessorTest.php
@@ -0,0 +1,42 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\TestCase;
+
+class MemoryPeakUsageProcessorTest extends TestCase
+{
+ /**
+ * @covers Monolog\Processor\MemoryPeakUsageProcessor::__invoke
+ * @covers Monolog\Processor\MemoryProcessor::formatBytes
+ */
+ public function testProcessor()
+ {
+ $processor = new MemoryPeakUsageProcessor();
+ $record = $processor($this->getRecord());
+ $this->assertArrayHasKey('memory_peak_usage', $record['extra']);
+ $this->assertRegExp('#[0-9.]+ (M|K)?B$#', $record['extra']['memory_peak_usage']);
+ }
+
+ /**
+ * @covers Monolog\Processor\MemoryPeakUsageProcessor::__invoke
+ * @covers Monolog\Processor\MemoryProcessor::formatBytes
+ */
+ public function testProcessorWithoutFormatting()
+ {
+ $processor = new MemoryPeakUsageProcessor(true, false);
+ $record = $processor($this->getRecord());
+ $this->assertArrayHasKey('memory_peak_usage', $record['extra']);
+ $this->assertInternalType('int', $record['extra']['memory_peak_usage']);
+ $this->assertGreaterThan(0, $record['extra']['memory_peak_usage']);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/MemoryUsageProcessorTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/MemoryUsageProcessorTest.php
new file mode 100644
index 0000000..228145e
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/MemoryUsageProcessorTest.php
@@ -0,0 +1,42 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\TestCase;
+
+class MemoryUsageProcessorTest extends TestCase
+{
+ /**
+ * @covers Monolog\Processor\MemoryUsageProcessor::__invoke
+ * @covers Monolog\Processor\MemoryProcessor::formatBytes
+ */
+ public function testProcessor()
+ {
+ $processor = new MemoryUsageProcessor();
+ $record = $processor($this->getRecord());
+ $this->assertArrayHasKey('memory_usage', $record['extra']);
+ $this->assertRegExp('#[0-9.]+ (M|K)?B$#', $record['extra']['memory_usage']);
+ }
+
+ /**
+ * @covers Monolog\Processor\MemoryUsageProcessor::__invoke
+ * @covers Monolog\Processor\MemoryProcessor::formatBytes
+ */
+ public function testProcessorWithoutFormatting()
+ {
+ $processor = new MemoryUsageProcessor(true, false);
+ $record = $processor($this->getRecord());
+ $this->assertArrayHasKey('memory_usage', $record['extra']);
+ $this->assertInternalType('int', $record['extra']['memory_usage']);
+ $this->assertGreaterThan(0, $record['extra']['memory_usage']);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/MercurialProcessorTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/MercurialProcessorTest.php
new file mode 100644
index 0000000..4566b1a
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/MercurialProcessorTest.php
@@ -0,0 +1,41 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jonathan A. Schweder <jonathanschweder@gmail.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\TestCase;
+
+class MercurialProcessorTest extends TestCase
+{
+ /**
+ * @covers Monolog\Processor\MercurialProcessor::__invoke
+ */
+ public function testProcessor()
+ {
+ if (defined('PHP_WINDOWS_VERSION_BUILD')) {
+ exec("where hg 2>NUL", $output, $result);
+ } else {
+ exec("which hg 2>/dev/null >/dev/null", $output, $result);
+ }
+ if ($result != 0) {
+ $this->markTestSkipped('hg is missing');
+ return;
+ }
+
+ `hg init`;
+ $processor = new MercurialProcessor();
+ $record = $processor($this->getRecord());
+
+ $this->assertArrayHasKey('hg', $record['extra']);
+ $this->assertTrue(!is_array($record['extra']['hg']['branch']));
+ $this->assertTrue(!is_array($record['extra']['hg']['revision']));
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/ProcessIdProcessorTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/ProcessIdProcessorTest.php
new file mode 100644
index 0000000..7565dac
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/ProcessIdProcessorTest.php
@@ -0,0 +1,30 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\TestCase;
+
+class ProcessIdProcessorTest extends TestCase
+{
+ /**
+ * @covers Monolog\Processor\ProcessIdProcessor::__invoke
+ */
+ public function testProcessor()
+ {
+ $processor = new ProcessIdProcessor();
+ $record = $processor($this->getRecord());
+ $this->assertArrayHasKey('process_id', $record['extra']);
+ $this->assertInternalType('int', $record['extra']['process_id']);
+ $this->assertGreaterThan(0, $record['extra']['process_id']);
+ $this->assertEquals(getmypid(), $record['extra']['process_id']);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/PsrLogMessageProcessorTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/PsrLogMessageProcessorTest.php
new file mode 100644
index 0000000..b53fe82
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/PsrLogMessageProcessorTest.php
@@ -0,0 +1,43 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+class PsrLogMessageProcessorTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @dataProvider getPairs
+ */
+ public function testReplacement($val, $expected)
+ {
+ $proc = new PsrLogMessageProcessor;
+
+ $message = $proc(array(
+ 'message' => '{foo}',
+ 'context' => array('foo' => $val),
+ ));
+ $this->assertEquals($expected, $message['message']);
+ }
+
+ public function getPairs()
+ {
+ return array(
+ array('foo', 'foo'),
+ array('3', '3'),
+ array(3, '3'),
+ array(null, ''),
+ array(true, '1'),
+ array(false, ''),
+ array(new \stdClass, '[object stdClass]'),
+ array(array(), '[array]'),
+ );
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/TagProcessorTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/TagProcessorTest.php
new file mode 100644
index 0000000..4cbc83d
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/TagProcessorTest.php
@@ -0,0 +1,49 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\TestCase;
+
+class TagProcessorTest extends TestCase
+{
+ /**
+ * @covers Monolog\Processor\TagProcessor::__invoke
+ */
+ public function testProcessor()
+ {
+ $tags = array(1, 2, 3);
+ $processor = new TagProcessor($tags);
+ $record = $processor($this->getRecord());
+
+ $this->assertEquals($tags, $record['extra']['tags']);
+ }
+
+ /**
+ * @covers Monolog\Processor\TagProcessor::__invoke
+ */
+ public function testProcessorTagModification()
+ {
+ $tags = array(1, 2, 3);
+ $processor = new TagProcessor($tags);
+
+ $record = $processor($this->getRecord());
+ $this->assertEquals($tags, $record['extra']['tags']);
+
+ $processor->setTags(array('a', 'b'));
+ $record = $processor($this->getRecord());
+ $this->assertEquals(array('a', 'b'), $record['extra']['tags']);
+
+ $processor->addTags(array('a', 'c', 'foo' => 'bar'));
+ $record = $processor($this->getRecord());
+ $this->assertEquals(array('a', 'b', 'a', 'c', 'foo' => 'bar'), $record['extra']['tags']);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/UidProcessorTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/UidProcessorTest.php
new file mode 100644
index 0000000..d371de8
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/UidProcessorTest.php
@@ -0,0 +1,33 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\TestCase;
+
+class UidProcessorTest extends TestCase
+{
+ /**
+ * @covers Monolog\Processor\UidProcessor::__invoke
+ */
+ public function testProcessor()
+ {
+ $processor = new UidProcessor();
+ $record = $processor($this->getRecord());
+ $this->assertArrayHasKey('uid', $record['extra']);
+ }
+
+ public function testGetUid()
+ {
+ $processor = new UidProcessor(10);
+ $this->assertEquals(10, strlen($processor->getUid()));
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/WebProcessorTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/WebProcessorTest.php
new file mode 100644
index 0000000..8a7c005
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/Processor/WebProcessorTest.php
@@ -0,0 +1,113 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Processor;
+
+use Monolog\TestCase;
+
+class WebProcessorTest extends TestCase
+{
+ public function testProcessor()
+ {
+ $server = array(
+ 'REQUEST_URI' => 'A',
+ 'REMOTE_ADDR' => 'B',
+ 'REQUEST_METHOD' => 'C',
+ 'HTTP_REFERER' => 'D',
+ 'SERVER_NAME' => 'F',
+ 'UNIQUE_ID' => 'G',
+ );
+
+ $processor = new WebProcessor($server);
+ $record = $processor($this->getRecord());
+ $this->assertEquals($server['REQUEST_URI'], $record['extra']['url']);
+ $this->assertEquals($server['REMOTE_ADDR'], $record['extra']['ip']);
+ $this->assertEquals($server['REQUEST_METHOD'], $record['extra']['http_method']);
+ $this->assertEquals($server['HTTP_REFERER'], $record['extra']['referrer']);
+ $this->assertEquals($server['SERVER_NAME'], $record['extra']['server']);
+ $this->assertEquals($server['UNIQUE_ID'], $record['extra']['unique_id']);
+ }
+
+ public function testProcessorDoNothingIfNoRequestUri()
+ {
+ $server = array(
+ 'REMOTE_ADDR' => 'B',
+ 'REQUEST_METHOD' => 'C',
+ );
+ $processor = new WebProcessor($server);
+ $record = $processor($this->getRecord());
+ $this->assertEmpty($record['extra']);
+ }
+
+ public function testProcessorReturnNullIfNoHttpReferer()
+ {
+ $server = array(
+ 'REQUEST_URI' => 'A',
+ 'REMOTE_ADDR' => 'B',
+ 'REQUEST_METHOD' => 'C',
+ 'SERVER_NAME' => 'F',
+ );
+ $processor = new WebProcessor($server);
+ $record = $processor($this->getRecord());
+ $this->assertNull($record['extra']['referrer']);
+ }
+
+ public function testProcessorDoesNotAddUniqueIdIfNotPresent()
+ {
+ $server = array(
+ 'REQUEST_URI' => 'A',
+ 'REMOTE_ADDR' => 'B',
+ 'REQUEST_METHOD' => 'C',
+ 'SERVER_NAME' => 'F',
+ );
+ $processor = new WebProcessor($server);
+ $record = $processor($this->getRecord());
+ $this->assertFalse(isset($record['extra']['unique_id']));
+ }
+
+ public function testProcessorAddsOnlyRequestedExtraFields()
+ {
+ $server = array(
+ 'REQUEST_URI' => 'A',
+ 'REMOTE_ADDR' => 'B',
+ 'REQUEST_METHOD' => 'C',
+ 'SERVER_NAME' => 'F',
+ );
+
+ $processor = new WebProcessor($server, array('url', 'http_method'));
+ $record = $processor($this->getRecord());
+
+ $this->assertSame(array('url' => 'A', 'http_method' => 'C'), $record['extra']);
+ }
+
+ public function testProcessorConfiguringOfExtraFields()
+ {
+ $server = array(
+ 'REQUEST_URI' => 'A',
+ 'REMOTE_ADDR' => 'B',
+ 'REQUEST_METHOD' => 'C',
+ 'SERVER_NAME' => 'F',
+ );
+
+ $processor = new WebProcessor($server, array('url' => 'REMOTE_ADDR'));
+ $record = $processor($this->getRecord());
+
+ $this->assertSame(array('url' => 'B'), $record['extra']);
+ }
+
+ /**
+ * @expectedException UnexpectedValueException
+ */
+ public function testInvalidData()
+ {
+ new WebProcessor(new \stdClass);
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/PsrLogCompatTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/PsrLogCompatTest.php
new file mode 100644
index 0000000..db6e725
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/PsrLogCompatTest.php
@@ -0,0 +1,47 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog;
+
+use Monolog\Handler\TestHandler;
+use Monolog\Formatter\LineFormatter;
+use Monolog\Processor\PsrLogMessageProcessor;
+use Psr\Log\Test\LoggerInterfaceTest;
+
+class PsrLogCompatTest extends LoggerInterfaceTest
+{
+ private $handler;
+
+ public function getLogger()
+ {
+ $logger = new Logger('foo');
+ $logger->pushHandler($handler = new TestHandler);
+ $logger->pushProcessor(new PsrLogMessageProcessor);
+ $handler->setFormatter(new LineFormatter('%level_name% %message%'));
+
+ $this->handler = $handler;
+
+ return $logger;
+ }
+
+ public function getLogs()
+ {
+ $convert = function ($record) {
+ $lower = function ($match) {
+ return strtolower($match[0]);
+ };
+
+ return preg_replace_callback('{^[A-Z]+}', $lower, $record['formatted']);
+ };
+
+ return array_map($convert, $this->handler->getRecords());
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/RegistryTest.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/RegistryTest.php
new file mode 100644
index 0000000..fdca5de
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/RegistryTest.php
@@ -0,0 +1,153 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog;
+
+class RegistryTest extends \PHPUnit_Framework_TestCase
+{
+ protected function setUp()
+ {
+ Registry::clear();
+ }
+
+ /**
+ * @dataProvider hasLoggerProvider
+ * @covers Monolog\Registry::hasLogger
+ */
+ public function testHasLogger(array $loggersToAdd, array $loggersToCheck, array $expectedResult)
+ {
+ foreach ($loggersToAdd as $loggerToAdd) {
+ Registry::addLogger($loggerToAdd);
+ }
+ foreach ($loggersToCheck as $index => $loggerToCheck) {
+ $this->assertSame($expectedResult[$index], Registry::hasLogger($loggerToCheck));
+ }
+ }
+
+ public function hasLoggerProvider()
+ {
+ $logger1 = new Logger('test1');
+ $logger2 = new Logger('test2');
+ $logger3 = new Logger('test3');
+
+ return array(
+ // only instances
+ array(
+ array($logger1),
+ array($logger1, $logger2),
+ array(true, false),
+ ),
+ // only names
+ array(
+ array($logger1),
+ array('test1', 'test2'),
+ array(true, false),
+ ),
+ // mixed case
+ array(
+ array($logger1, $logger2),
+ array('test1', $logger2, 'test3', $logger3),
+ array(true, true, false, false),
+ ),
+ );
+ }
+
+ /**
+ * @covers Monolog\Registry::clear
+ */
+ public function testClearClears()
+ {
+ Registry::addLogger(new Logger('test1'), 'log');
+ Registry::clear();
+
+ $this->setExpectedException('\InvalidArgumentException');
+ Registry::getInstance('log');
+ }
+
+ /**
+ * @dataProvider removedLoggerProvider
+ * @covers Monolog\Registry::addLogger
+ * @covers Monolog\Registry::removeLogger
+ */
+ public function testRemovesLogger($loggerToAdd, $remove)
+ {
+ Registry::addLogger($loggerToAdd);
+ Registry::removeLogger($remove);
+
+ $this->setExpectedException('\InvalidArgumentException');
+ Registry::getInstance($loggerToAdd->getName());
+ }
+
+ public function removedLoggerProvider()
+ {
+ $logger1 = new Logger('test1');
+
+ return array(
+ array($logger1, $logger1),
+ array($logger1, 'test1'),
+ );
+ }
+
+ /**
+ * @covers Monolog\Registry::addLogger
+ * @covers Monolog\Registry::getInstance
+ * @covers Monolog\Registry::__callStatic
+ */
+ public function testGetsSameLogger()
+ {
+ $logger1 = new Logger('test1');
+ $logger2 = new Logger('test2');
+
+ Registry::addLogger($logger1, 'test1');
+ Registry::addLogger($logger2);
+
+ $this->assertSame($logger1, Registry::getInstance('test1'));
+ $this->assertSame($logger2, Registry::test2());
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ * @covers Monolog\Registry::getInstance
+ */
+ public function testFailsOnNonExistantLogger()
+ {
+ Registry::getInstance('test1');
+ }
+
+ /**
+ * @covers Monolog\Registry::addLogger
+ */
+ public function testReplacesLogger()
+ {
+ $log1 = new Logger('test1');
+ $log2 = new Logger('test2');
+
+ Registry::addLogger($log1, 'log');
+
+ Registry::addLogger($log2, 'log', true);
+
+ $this->assertSame($log2, Registry::getInstance('log'));
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ * @covers Monolog\Registry::addLogger
+ */
+ public function testFailsOnUnspecifiedReplacement()
+ {
+ $log1 = new Logger('test1');
+ $log2 = new Logger('test2');
+
+ Registry::addLogger($log1, 'log');
+
+ Registry::addLogger($log2, 'log');
+ }
+}
diff --git a/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/TestCase.php b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/TestCase.php
new file mode 100644
index 0000000..a30038c
--- /dev/null
+++ b/admin/survey/minify/vendor/monolog/monolog/tests/Monolog/TestCase.php
@@ -0,0 +1,58 @@
+<?php
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog;
+
+class TestCase extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @return array Record
+ */
+ protected function getRecord($level = Logger::WARNING, $message = 'test', $context = array())
+ {
+ return array(
+ 'message' => $message,
+ 'context' => $context,
+ 'level' => $level,
+ 'level_name' => Logger::getLevelName($level),
+ 'channel' => 'test',
+ 'datetime' => \DateTime::createFromFormat('U.u', sprintf('%.6F', microtime(true))),
+ 'extra' => array(),
+ );
+ }
+
+ /**
+ * @return array
+ */
+ protected function getMultipleRecords()
+ {
+ return array(
+ $this->getRecord(Logger::DEBUG, 'debug message 1'),
+ $this->getRecord(Logger::DEBUG, 'debug message 2'),
+ $this->getRecord(Logger::INFO, 'information'),
+ $this->getRecord(Logger::WARNING, 'warning'),
+ $this->getRecord(Logger::ERROR, 'error'),
+ );
+ }
+
+ /**
+ * @return Monolog\Formatter\FormatterInterface
+ */
+ protected function getIdentityFormatter()
+ {
+ $formatter = $this->getMock('Monolog\\Formatter\\FormatterInterface');
+ $formatter->expects($this->any())
+ ->method('format')
+ ->will($this->returnCallback(function ($record) { return $record['message']; }));
+
+ return $formatter;
+ }
+}
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/.editorconfig b/admin/survey/minify/vendor/mrclay/jsmin-php/.editorconfig
new file mode 100644
index 0000000..4a017bc
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/.editorconfig
@@ -0,0 +1,19 @@
+# top-most EditorConfig file
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+
+; temporary
+trim_trailing_whitespace = false
+
+[*.php]
+indent_style = space
+indent_size = 4
+insert_final_newline = true
+
+[vendor/**]
+; Use editor default (possible autodetection).
+indent_style =
+indent_size =
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/.gitignore b/admin/survey/minify/vendor/mrclay/jsmin-php/.gitignore
new file mode 100644
index 0000000..8f56454
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/.gitignore
@@ -0,0 +1,5 @@
+.idea/
+.DS_Store
+/vendor
+/composer.lock
+/tests/Resources/*/actual/* \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/HISTORY.txt b/admin/survey/minify/vendor/mrclay/jsmin-php/HISTORY.txt
new file mode 100644
index 0000000..90fcf5b
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/HISTORY.txt
@@ -0,0 +1,24 @@
+JSMin fixes (from Minify)
+
+Version 2.3.0
+ * Removes leading UTF-8 BOM
+
+Version 2.2.0
+ * Fix handling of RegEx in certain situations in JSMin
+ * Fix bug in JSMin exceptions
+
+Version 2.1.6
+ * JSMin fixes
+
+Version 2.1.4
+ * JSMin won't choke on common Closure compiler syntaxes (i+ ++j)
+ * mbstring.func_overload usage is safer
+
+Version 2.1.2
+ * quote characters inside RegExp literals no longer cause exception
+
+Version 2.1.0
+ * JS: preserves IE conditional comments
+
+Version 1.0.1 (2007-05-05)
+ * Replaced old JSMin library with a much faster custom implementation.
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/LICENSE.txt b/admin/survey/minify/vendor/mrclay/jsmin-php/LICENSE.txt
new file mode 100644
index 0000000..d88c1b3
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/LICENSE.txt
@@ -0,0 +1,26 @@
+Copyright (c) 2008 Ryan Grove <ryan@wonko.com>
+Copyright (c) 2008 Steve Clay <steve@mrclay.org>
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ * Neither the name of this project nor the names of its contributors may be
+ used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
+ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/composer.json b/admin/survey/minify/vendor/mrclay/jsmin-php/composer.json
new file mode 100644
index 0000000..202348c
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/composer.json
@@ -0,0 +1,34 @@
+{
+ "name": "mrclay/jsmin-php",
+ "type": "library",
+ "description": "Provides a modified port of Douglas Crockford's jsmin.c, which removes unnecessary whitespace from JavaScript files.",
+ "keywords": ["jsmin", "minify", "compress"],
+ "homepage": "https://github.com/mrclay/jsmin-php/",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Stephen Clay",
+ "email": "steve@mrclay.org",
+ "role": "Developer"
+ },
+ {
+ "name": "Ryan Grove",
+ "email": "ryan@wonko.com",
+ "role": "Developer"
+ }
+ ],
+ "support": {
+ "email": "minify@googlegroups.com",
+ "issues": "https://github.com/mrclay/jsmin-php/issues"
+ },
+ "require": {
+ "php": ">=5.3.0",
+ "ext-pcre": "*"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "4.2"
+ },
+ "autoload": {
+ "psr-0": {"JSMin\\": "src/"}
+ }
+}
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/phpunit.xml.dist b/admin/survey/minify/vendor/mrclay/jsmin-php/phpunit.xml.dist
new file mode 100644
index 0000000..ec53e75
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/phpunit.xml.dist
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<phpunit backupGlobals="false"
+ backupStaticAttributes="false"
+ colors="true"
+ convertErrorsToExceptions="true"
+ convertNoticesToExceptions="true"
+ convertWarningsToExceptions="true"
+ processIsolation="false"
+ bootstrap="tests/bootstrap.php"
+ >
+ <testsuites>
+ <testsuite name="JSMin Test Suite">
+ <directory>./tests/</directory>
+ </testsuite>
+ </testsuites>
+
+ <filter>
+ <whitelist>
+ <directory>./</directory>
+ <exclude>
+ <directory>./tests</directory>
+ <directory>./vendor</directory>
+ </exclude>
+ </whitelist>
+ </filter>
+</phpunit> \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/JSMin.php b/admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/JSMin.php
new file mode 100644
index 0000000..9dc2e20
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/JSMin.php
@@ -0,0 +1,454 @@
+<?php
+
+namespace JSMin;
+
+/**
+ * JSMin.php - modified PHP implementation of Douglas Crockford's JSMin.
+ *
+ * <code>
+ * $minifiedJs = JSMin::minify($js);
+ * </code>
+ *
+ * This is a modified port of jsmin.c. Improvements:
+ *
+ * Does not choke on some regexp literals containing quote characters. E.g. /'/
+ *
+ * Spaces are preserved after some add/sub operators, so they are not mistakenly
+ * converted to post-inc/dec. E.g. a + ++b -> a+ ++b
+ *
+ * Preserves multi-line comments that begin with /*!
+ *
+ * PHP 5 or higher is required.
+ *
+ * Permission is hereby granted to use this version of the library under the
+ * same terms as jsmin.c, which has the following license:
+ *
+ * --
+ * Copyright (c) 2002 Douglas Crockford (www.crockford.com)
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of
+ * this software and associated documentation files (the "Software"), to deal in
+ * the Software without restriction, including without limitation the rights to
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+ * of the Software, and to permit persons to whom the Software is furnished to do
+ * so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * The Software shall be used for Good, not Evil.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+ * --
+ *
+ * @package JSMin
+ * @author Ryan Grove <ryan@wonko.com> (PHP port)
+ * @author Steve Clay <steve@mrclay.org> (modifications + cleanup)
+ * @author Andrea Giammarchi <http://www.3site.eu> (spaceBeforeRegExp)
+ * @copyright 2002 Douglas Crockford <douglas@crockford.com> (jsmin.c)
+ * @copyright 2008 Ryan Grove <ryan@wonko.com> (PHP port)
+ * @license http://opensource.org/licenses/mit-license.php MIT License
+ * @link http://code.google.com/p/jsmin-php/
+ */
+class JSMin {
+ const ORD_LF = 10;
+ const ORD_SPACE = 32;
+ const ACTION_KEEP_A = 1;
+ const ACTION_DELETE_A = 2;
+ const ACTION_DELETE_A_B = 3;
+
+ protected $a = "\n";
+ protected $b = '';
+ protected $input = '';
+ protected $inputIndex = 0;
+ protected $inputLength = 0;
+ protected $lookAhead = null;
+ protected $output = '';
+ protected $lastByteOut = '';
+ protected $keptComment = '';
+
+ /**
+ * Minify Javascript.
+ *
+ * @param string $js Javascript to be minified
+ *
+ * @return string
+ */
+ public static function minify($js)
+ {
+ $jsmin = new JSMin($js);
+ return $jsmin->min();
+ }
+
+ /**
+ * @param string $input
+ */
+ public function __construct($input)
+ {
+ $this->input = $input;
+ }
+
+ /**
+ * Perform minification, return result
+ *
+ * @return string
+ */
+ public function min()
+ {
+ if ($this->output !== '') { // min already run
+ return $this->output;
+ }
+
+ $mbIntEnc = null;
+ if (function_exists('mb_strlen') && ((int)ini_get('mbstring.func_overload') & 2)) {
+ $mbIntEnc = mb_internal_encoding();
+ mb_internal_encoding('8bit');
+ }
+
+ if (isset($this->input[0]) && $this->input[0] === "\xef") {
+ $this->input = substr($this->input, 3);
+ }
+
+ $this->input = str_replace("\r\n", "\n", $this->input);
+ $this->inputLength = strlen($this->input);
+
+ $this->action(self::ACTION_DELETE_A_B);
+
+ while ($this->a !== null) {
+ // determine next command
+ $command = self::ACTION_KEEP_A; // default
+ if ($this->a === ' ') {
+ if (($this->lastByteOut === '+' || $this->lastByteOut === '-')
+ && ($this->b === $this->lastByteOut)) {
+ // Don't delete this space. If we do, the addition/subtraction
+ // could be parsed as a post-increment
+ } elseif (! $this->isAlphaNum($this->b)) {
+ $command = self::ACTION_DELETE_A;
+ }
+ } elseif ($this->a === "\n") {
+ if ($this->b === ' ') {
+ $command = self::ACTION_DELETE_A_B;
+
+ // in case of mbstring.func_overload & 2, must check for null b,
+ // otherwise mb_strpos will give WARNING
+ } elseif ($this->b === null
+ || (false === strpos('{[(+-!~', $this->b)
+ && ! $this->isAlphaNum($this->b))) {
+ $command = self::ACTION_DELETE_A;
+ }
+ } elseif (! $this->isAlphaNum($this->a)) {
+ if ($this->b === ' '
+ || ($this->b === "\n"
+ && (false === strpos('}])+-"\'', $this->a)))) {
+ $command = self::ACTION_DELETE_A_B;
+ }
+ }
+ $this->action($command);
+ }
+ $this->output = trim($this->output);
+
+ if ($mbIntEnc !== null) {
+ mb_internal_encoding($mbIntEnc);
+ }
+ return $this->output;
+ }
+
+ /**
+ * ACTION_KEEP_A = Output A. Copy B to A. Get the next B.
+ * ACTION_DELETE_A = Copy B to A. Get the next B.
+ * ACTION_DELETE_A_B = Get the next B.
+ *
+ * @param int $command
+ * @throws UnterminatedRegExpException|UnterminatedStringException
+ */
+ protected function action($command)
+ {
+ // make sure we don't compress "a + ++b" to "a+++b", etc.
+ if ($command === self::ACTION_DELETE_A_B
+ && $this->b === ' '
+ && ($this->a === '+' || $this->a === '-')) {
+ // Note: we're at an addition/substraction operator; the inputIndex
+ // will certainly be a valid index
+ if ($this->input[$this->inputIndex] === $this->a) {
+ // This is "+ +" or "- -". Don't delete the space.
+ $command = self::ACTION_KEEP_A;
+ }
+ }
+
+ switch ($command) {
+ case self::ACTION_KEEP_A: // 1
+ $this->output .= $this->a;
+
+ if ($this->keptComment) {
+ $this->output = rtrim($this->output, "\n");
+ $this->output .= $this->keptComment;
+ $this->keptComment = '';
+ }
+
+ $this->lastByteOut = $this->a;
+
+ // fallthrough intentional
+ case self::ACTION_DELETE_A: // 2
+ $this->a = $this->b;
+ if ($this->a === "'" || $this->a === '"') { // string literal
+ $str = $this->a; // in case needed for exception
+ for(;;) {
+ $this->output .= $this->a;
+ $this->lastByteOut = $this->a;
+
+ $this->a = $this->get();
+ if ($this->a === $this->b) { // end quote
+ break;
+ }
+ if ($this->isEOF($this->a)) {
+ $byte = $this->inputIndex - 1;
+ throw new UnterminatedStringException(
+ "JSMin: Unterminated String at byte {$byte}: {$str}");
+ }
+ $str .= $this->a;
+ if ($this->a === '\\') {
+ $this->output .= $this->a;
+ $this->lastByteOut = $this->a;
+
+ $this->a = $this->get();
+ $str .= $this->a;
+ }
+ }
+ }
+
+ // fallthrough intentional
+ case self::ACTION_DELETE_A_B: // 3
+ $this->b = $this->next();
+ if ($this->b === '/' && $this->isRegexpLiteral()) {
+ $this->output .= $this->a . $this->b;
+ $pattern = '/'; // keep entire pattern in case we need to report it in the exception
+ for(;;) {
+ $this->a = $this->get();
+ $pattern .= $this->a;
+ if ($this->a === '[') {
+ for(;;) {
+ $this->output .= $this->a;
+ $this->a = $this->get();
+ $pattern .= $this->a;
+ if ($this->a === ']') {
+ break;
+ }
+ if ($this->a === '\\') {
+ $this->output .= $this->a;
+ $this->a = $this->get();
+ $pattern .= $this->a;
+ }
+ if ($this->isEOF($this->a)) {
+ throw new UnterminatedRegExpException(
+ "JSMin: Unterminated set in RegExp at byte "
+ . $this->inputIndex .": {$pattern}");
+ }
+ }
+ }
+
+ if ($this->a === '/') { // end pattern
+ break; // while (true)
+ } elseif ($this->a === '\\') {
+ $this->output .= $this->a;
+ $this->a = $this->get();
+ $pattern .= $this->a;
+ } elseif ($this->isEOF($this->a)) {
+ $byte = $this->inputIndex - 1;
+ throw new UnterminatedRegExpException(
+ "JSMin: Unterminated RegExp at byte {$byte}: {$pattern}");
+ }
+ $this->output .= $this->a;
+ $this->lastByteOut = $this->a;
+ }
+ $this->b = $this->next();
+ }
+ // end case ACTION_DELETE_A_B
+ }
+ }
+
+ /**
+ * @return bool
+ */
+ protected function isRegexpLiteral()
+ {
+ if (false !== strpos("(,=:[!&|?+-~*{;", $this->a)) {
+ // we can't divide after these tokens
+ return true;
+ }
+
+ // check if first non-ws token is "/" (see starts-regex.js)
+ $length = strlen($this->output);
+ if ($this->a === ' ' || $this->a === "\n") {
+ if ($length < 2) { // weird edge case
+ return true;
+ }
+ }
+
+ // if the "/" follows a keyword, it must be a regexp, otherwise it's best to assume division
+
+ $subject = $this->output . trim($this->a);
+ if (!preg_match('/(?:case|else|in|return|typeof)$/', $subject, $m)) {
+ // not a keyword
+ return false;
+ }
+
+ // can't be sure it's a keyword yet (see not-regexp.js)
+ $charBeforeKeyword = substr($subject, 0 - strlen($m[0]) - 1, 1);
+ if ($this->isAlphaNum($charBeforeKeyword)) {
+ // this is really an identifier ending in a keyword, e.g. "xreturn"
+ return false;
+ }
+
+ // it's a regexp. Remove unneeded whitespace after keyword
+ if ($this->a === ' ' || $this->a === "\n") {
+ $this->a = '';
+ }
+
+ return true;
+ }
+
+ /**
+ * Return the next character from stdin. Watch out for lookahead. If the character is a control character,
+ * translate it to a space or linefeed.
+ *
+ * @return string
+ */
+ protected function get()
+ {
+ $c = $this->lookAhead;
+ $this->lookAhead = null;
+ if ($c === null) {
+ // getc(stdin)
+ if ($this->inputIndex < $this->inputLength) {
+ $c = $this->input[$this->inputIndex];
+ $this->inputIndex += 1;
+ } else {
+ $c = null;
+ }
+ }
+ if (ord($c) >= self::ORD_SPACE || $c === "\n" || $c === null) {
+ return $c;
+ }
+ if ($c === "\r") {
+ return "\n";
+ }
+ return ' ';
+ }
+
+ /**
+ * Does $a indicate end of input?
+ *
+ * @param string $a
+ * @return bool
+ */
+ protected function isEOF($a)
+ {
+ return ord($a) <= self::ORD_LF;
+ }
+
+ /**
+ * Get next char (without getting it). If is ctrl character, translate to a space or newline.
+ *
+ * @return string
+ */
+ protected function peek()
+ {
+ $this->lookAhead = $this->get();
+ return $this->lookAhead;
+ }
+
+ /**
+ * Return true if the character is a letter, digit, underscore, dollar sign, or non-ASCII character.
+ *
+ * @param string $c
+ *
+ * @return bool
+ */
+ protected function isAlphaNum($c)
+ {
+ return (preg_match('/^[a-z0-9A-Z_\\$\\\\]$/', $c) || ord($c) > 126);
+ }
+
+ /**
+ * Consume a single line comment from input (possibly retaining it)
+ */
+ protected function consumeSingleLineComment()
+ {
+ $comment = '';
+ while (true) {
+ $get = $this->get();
+ $comment .= $get;
+ if (ord($get) <= self::ORD_LF) { // end of line reached
+ // if IE conditional comment
+ if (preg_match('/^\\/@(?:cc_on|if|elif|else|end)\\b/', $comment)) {
+ $this->keptComment .= "/{$comment}";
+ }
+ return;
+ }
+ }
+ }
+
+ /**
+ * Consume a multiple line comment from input (possibly retaining it)
+ *
+ * @throws UnterminatedCommentException
+ */
+ protected function consumeMultipleLineComment()
+ {
+ $this->get();
+ $comment = '';
+ for(;;) {
+ $get = $this->get();
+ if ($get === '*') {
+ if ($this->peek() === '/') { // end of comment reached
+ $this->get();
+ if (0 === strpos($comment, '!')) {
+ // preserved by YUI Compressor
+ if (!$this->keptComment) {
+ // don't prepend a newline if two comments right after one another
+ $this->keptComment = "\n";
+ }
+ $this->keptComment .= "/*!" . substr($comment, 1) . "*/\n";
+ } else if (preg_match('/^@(?:cc_on|if|elif|else|end)\\b/', $comment)) {
+ // IE conditional
+ $this->keptComment .= "/*{$comment}*/";
+ }
+ return;
+ }
+ } elseif ($get === null) {
+ throw new UnterminatedCommentException(
+ "JSMin: Unterminated comment at byte {$this->inputIndex}: /*{$comment}");
+ }
+ $comment .= $get;
+ }
+ }
+
+ /**
+ * Get the next character, skipping over comments. Some comments may be preserved.
+ *
+ * @return string
+ */
+ protected function next()
+ {
+ $get = $this->get();
+ if ($get === '/') {
+ switch ($this->peek()) {
+ case '/':
+ $this->consumeSingleLineComment();
+ $get = "\n";
+ break;
+ case '*':
+ $this->consumeMultipleLineComment();
+ $get = ' ';
+ break;
+ }
+ }
+ return $get;
+ }
+}
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedCommentException.php b/admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedCommentException.php
new file mode 100644
index 0000000..3ee2b01
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedCommentException.php
@@ -0,0 +1,6 @@
+<?php
+
+namespace JSMin;
+
+class UnterminatedCommentException extends \Exception {
+}
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedRegExpException.php b/admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedRegExpException.php
new file mode 100644
index 0000000..0aaf5f1
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedRegExpException.php
@@ -0,0 +1,6 @@
+<?php
+
+namespace JSMin;
+
+class UnterminatedRegExpException extends \Exception {
+}
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedStringException.php b/admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedStringException.php
new file mode 100644
index 0000000..0da6e48
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/src/JSMin/UnterminatedStringException.php
@@ -0,0 +1,6 @@
+<?php
+
+namespace JSMin;
+
+class UnterminatedStringException extends \Exception {
+}
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/before.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/before.js
new file mode 100644
index 0000000..e63d477
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/before.js
@@ -0,0 +1,27 @@
+/*! is.js
+
+ (c) 2001 Douglas Crockford
+ 2001 June 3
+*/
+var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'}
+/*!*
+ * preserve this comment, too
+ */
+is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;}
+if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}/*@cc_on
+ /*@if (@_win32)
+ if (is.ie && is.win)
+ document.write("PASS: IE/win honored conditional comment.<br>");
+ @else @*/if(is.ie&&is.win)
+document.write("FAIL: IE/win did not honor multi-line conditional comment.<br>");else
+document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.<br>");/*@end
+@*/var recognizesCondComm=true;//@cc_on/*
+recognizesCondComm=false;//@cc_on*/
+if((is.ie&&is.win)==recognizesCondComm)
+document.write("PASS: IE/win honored single-line conditional comment.<br>");else
+document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.<br>");//@cc_on/*
+//@cc_on*/
+//@cc_on/*
+'hello';
+/*!* preserved */
+/*!* preserved */ \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/condcomm.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/condcomm.js
new file mode 100644
index 0000000..ff2c122
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/condcomm.js
@@ -0,0 +1,6 @@
+var isWin;/*@cc_on
+ @if (@_win32)
+ isWin = true;
+ @else @*/isWin=false;/*@end
+@*/isWin=/*@cc_on!*/!1;var recognizesCondComm=true;//@cc_on/*
+recognizesCondComm=false;//@cc_on*/ \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/issue144.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/issue144.js
new file mode 100644
index 0000000..e339d0a
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/issue144.js
@@ -0,0 +1 @@
+a/++b;a*--b;a++-b;a+--b;a-++b;a+-b;a+ ++b;a+--b;a- --b; \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/issue256.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/issue256.js
new file mode 100644
index 0000000..9c3ce2e
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/issue256.js
@@ -0,0 +1,2 @@
+!function(){}(window)
+!function(){}(window) \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/keyword-regex.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/keyword-regex.js
new file mode 100644
index 0000000..02ec79e
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/keyword-regex.js
@@ -0,0 +1 @@
+return/return/; \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/not-regexp.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/not-regexp.js
new file mode 100644
index 0000000..a7516fb
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/not-regexp.js
@@ -0,0 +1 @@
+!function(){return xreturn/foo}();!function(){return xtypeof/foo}(); \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/regexes.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/regexes.js
new file mode 100644
index 0000000..d47fdfc
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/regexes.js
@@ -0,0 +1,2 @@
+function testIssue74(){return/'/;}
+!function(s){return/^[£$€?.]/.test(s);}();typeof/ ' /;x=/ [/] /;1/foo;(2)/foo;function(){return/foo/};function(){return typeof/foo/}; \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/starts-regex.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/starts-regex.js
new file mode 100644
index 0000000..2623624
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/starts-regex.js
@@ -0,0 +1 @@
+/return/.test(bar); \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/token-regexp.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/token-regexp.js
new file mode 100644
index 0000000..13f263c
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/expected/token-regexp.js
@@ -0,0 +1 @@
+typeof[/return/]; \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/before.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/before.js
new file mode 100644
index 0000000..c28fbe9
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/before.js
@@ -0,0 +1,66 @@
+/*! is.js
+
+ (c) 2001 Douglas Crockford
+ 2001 June 3
+*/
+
+// is
+
+// The -is- object is used to identify the browser. Every browser edition
+// identifies itself, but there is no standard way of doing it, and some of
+// the identification is deceptive. This is because the authors of web
+// browsers are liars. For example, Microsoft's IE browsers claim to be
+// Mozilla 4. Netscape 6 claims to be version 5.
+
+var is = {
+ ie: navigator.appName == 'Microsoft Internet Explorer',
+ java: navigator.javaEnabled(),
+ ns: navigator.appName == 'Netscape',
+ ua: navigator.userAgent.toLowerCase(),
+ version: parseFloat(navigator.appVersion.substr(21)) ||
+ parseFloat(navigator.appVersion),
+ win: navigator.platform == 'Win32'
+}
+/*!*
+ * preserve this comment, too
+ */
+is.mac = is.ua.indexOf('mac') >= 0;
+if (is.ua.indexOf('opera') >= 0) {
+ is.ie = is.ns = false;
+ is.opera = true;
+}
+if (is.ua.indexOf('gecko') >= 0) {
+ is.ie = is.ns = false;
+ is.gecko = true;
+}
+
+/*@cc_on
+ /*@if (@_win32)
+ if (is.ie && is.win)
+ document.write("PASS: IE/win honored conditional comment.<br>");
+ @else @*/
+ if (is.ie && is.win)
+ document.write("FAIL: IE/win did not honor multi-line conditional comment.<br>");
+ else
+ document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.<br>");
+ /*@end
+@*/
+
+var recognizesCondComm = true;
+//@cc_on/*
+recognizesCondComm = false;
+//@cc_on*/
+
+if ((is.ie && is.win) == recognizesCondComm)
+ document.write("PASS: IE/win honored single-line conditional comment.<br>");
+else
+ document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.<br>");
+
+// hello
+//@cc_on/*
+// world
+//@cc_on*/
+//@cc_on/*
+'hello';
+/*!* preserved */
+/*!* preserved */ \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/condcomm.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/condcomm.js
new file mode 100644
index 0000000..b603aea
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/condcomm.js
@@ -0,0 +1,14 @@
+var isWin;
+/*@cc_on
+ @if (@_win32)
+ isWin = true;
+ @else @*/ isWin = false;
+ /*@end
+@*/
+
+isWin = /*@cc_on!*/!1;
+
+var recognizesCondComm = true;
+//@cc_on/*
+recognizesCondComm = false;
+//@cc_on*/
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/issue144.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/issue144.js
new file mode 100644
index 0000000..ba1b297
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/issue144.js
@@ -0,0 +1,9 @@
+a / ++b;
+a * --b;
+a++ - b;
+a + --b;
+a - ++b;
+a + -b;
+a + ++b;
+a + --b;
+a - --b; \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/issue256.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/issue256.js
new file mode 100644
index 0000000..df3dd45
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/issue256.js
@@ -0,0 +1,3 @@
+!function(){}(window)
+
+!function(){}(window) \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/keyword-regex.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/keyword-regex.js
new file mode 100644
index 0000000..5b2a47a
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/keyword-regex.js
@@ -0,0 +1,3 @@
+// this is specifically designed so that, if the first "/" is misinterpreted as division,
+// then "/;" will be interpreted as an incomplete regexp, causing a failing test.
+return /return/; \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/not-regexp.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/not-regexp.js
new file mode 100644
index 0000000..26318f6
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/not-regexp.js
@@ -0,0 +1,3 @@
+!function(){return xreturn/foo}();
+
+!function(){return xtypeof/foo}();
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/regexes.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/regexes.js
new file mode 100644
index 0000000..687cbc3
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/regexes.js
@@ -0,0 +1,24 @@
+function testIssue74() {
+ return /'/;
+}
+
+!function(s) {
+ return /^[£$€?.]/.test(s);
+}();
+
+typeof
+ / ' /;
+
+x = / [/] /;
+
+1
+
+/ foo;
+
+(2)
+
+/ foo;
+
+function(){return/foo/};
+
+function(){return typeof/foo/};
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/starts-regex.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/starts-regex.js
new file mode 100644
index 0000000..2e7d08a
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/starts-regex.js
@@ -0,0 +1,3 @@
+// this is specifically designed so that, if the first "/" is misinterpreted as division,
+// then "/.test(bar);" will be interpreted as an incomplete regexp, causing a failing test.
+/return/.test(bar); \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/token-regexp.js b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/token-regexp.js
new file mode 100644
index 0000000..fb38f60
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Resources/minify/input/token-regexp.js
@@ -0,0 +1,3 @@
+// this is specifically designed so that, if the first "/" is misinterpreted as division,
+// then "/[;" will be interpreted as an incomplete regexp, causing a failing test.
+typeof [/return/]; \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Tests/JSMin/JSMinTest.php b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Tests/JSMin/JSMinTest.php
new file mode 100644
index 0000000..1c9e6dc
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/Tests/JSMin/JSMinTest.php
@@ -0,0 +1,168 @@
+<?php
+
+namespace Tests\JSMin;
+
+use JSMin\JSMin;
+
+/**
+ * Copyright (c) 2009, Robert Hafner
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * Neither the name of the Stash Project nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL Robert Hafner BE LIABLE FOR ANY
+ * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ */
+class JSMinTest extends \PHPUnit_Framework_TestCase {
+
+ /**
+ * @group minify
+ * @dataProvider minifyProvider
+ */
+ public function testMinify($testName, $input, $expected, $actualFile)
+ {
+ $actual = JSMin::minify($input);
+ if ($actual !== $expected && is_writable(dirname($actualFile))) {
+ file_put_contents($actualFile, $actual);
+ }
+ $this->assertEquals($expected, $actual, 'Running Minify Test: ' . $testName);
+ }
+
+ public function testWhitespace() {
+ $this->assertEquals("hello;", JSMin::minify("\r\n\r\nhello;\r\n"));
+ }
+
+ public function testBomRemoval() {
+ $this->assertEquals("hello;", JSMin::minify("\xEF\xBB\xBFhello;"));
+ }
+
+ public function testFuncOverload() {
+ if (!function_exists('mb_strlen') || !((int)ini_get('mbstring.func_overload') & 2)) {
+ $this->markTestIncomplete('Cannot be tested unless mbstring.func_overload is used');
+ return;
+ }
+
+ $input = 'function(s) { return /^[£$€?.]/.test(s); }';
+ $expected = 'function(s){return/^[£$€?.]/.test(s);}';
+ $this->assertEquals($expected, JSMin::minify($input));
+ }
+
+ /**
+ * @dataProvider exceptionProvider
+ */
+ public function testExpections($input, $label, $expClass, $expMessage) {
+ $eClass = $eMsg = '';
+ try {
+ JSMin::minify($input);
+ } catch (\Exception $e) {
+ $eClass = get_class($e);
+ $eMsg = $e->getMessage();
+ }
+ $this->assertTrue(
+ $eClass === $expClass && $eMsg === $expMessage,
+ 'JSMin : throw on ' . $label
+ );
+ }
+
+ public function exceptionProvider() {
+ return array(
+ array(
+ '"Hello'
+ ,'Unterminated String'
+ ,'JSMin\\UnterminatedStringException'
+ ,"JSMin: Unterminated String at byte 5: \"Hello"),
+ array(
+ "return /regexp\n}"
+ ,'Unterminated RegExp'
+ ,'JSMin\\UnterminatedRegExpException'
+ ,"JSMin: Unterminated RegExp at byte 14: /regexp\n"),
+ array(
+ "return/regexp\n}"
+ ,'Unterminated RegExp'
+ ,'JSMin\\UnterminatedRegExpException'
+ ,"JSMin: Unterminated RegExp at byte 13: /regexp\n"),
+ array(
+ ";return/regexp\n}"
+ ,'Unterminated RegExp'
+ ,'JSMin\\UnterminatedRegExpException'
+ ,"JSMin: Unterminated RegExp at byte 14: /regexp\n"),
+ array(
+ ";return /regexp\n}"
+ ,'Unterminated RegExp'
+ ,'JSMin\\UnterminatedRegExpException'
+ ,"JSMin: Unterminated RegExp at byte 15: /regexp\n"),
+ array(
+ "typeof/regexp\n}"
+ ,'Unterminated RegExp'
+ ,'JSMin\\UnterminatedRegExpException'
+ ,"JSMin: Unterminated RegExp at byte 13: /regexp\n"),
+ array(
+ "/* Comment "
+ ,'Unterminated Comment'
+ ,'JSMin\\UnterminatedCommentException'
+ ,"JSMin: Unterminated comment at byte 11: /* Comment "),
+ );
+ }
+
+ /**
+ * This function loads all of the test cases from the specified group.
+ * Groups are created simply by populating the appropriate directories:
+ *
+ * /tests/Resources/GROUPNAME/input/
+ * /tests/Resources/GROUPNAME/output/
+ *
+ * Each test case should have two identically named files, with the raw
+ * javascript going in the test folder and the expected results to be in
+ * the output folder.
+ *
+ * @param $group string
+ * @return array
+ */
+ public function getTestFiles($group)
+ {
+ $baseDir = __DIR__ . '/../../Resources/' . $group . '/';
+ $testDir = $baseDir . 'input/';
+ $expectDir = $baseDir . 'expected/';
+ $actualDir = $baseDir . 'actual/';
+
+ $returnData = array();
+
+ $testFiles = scandir($testDir);
+ foreach ($testFiles as $testFile) {
+ if (substr($testFile, -3) !== '.js' || !file_exists(($expectDir . $testFile))) {
+ continue;
+ }
+
+ $testInput = file_get_contents($testDir . $testFile);
+ $expectedOutput = file_get_contents($expectDir . $testFile);
+ $actualFile = $actualDir . $testFile;
+
+ $returnData[] = array($testFile, $testInput, $expectedOutput, $actualFile);
+ }
+
+ return $returnData;
+ }
+
+ public function minifyProvider()
+ {
+ return $this->getTestFiles('minify');
+ }
+}
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/tests/bootstrap.php b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/bootstrap.php
new file mode 100644
index 0000000..6fd199e
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/tests/bootstrap.php
@@ -0,0 +1 @@
+<?php
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/web/README.txt b/admin/survey/minify/vendor/mrclay/jsmin-php/web/README.txt
new file mode 100644
index 0000000..fbf0238
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/web/README.txt
@@ -0,0 +1,2 @@
+This can be placed in webroot to allow easy direct testing of JSMin.
+
diff --git a/admin/survey/minify/vendor/mrclay/jsmin-php/web/index.php b/admin/survey/minify/vendor/mrclay/jsmin-php/web/index.php
new file mode 100644
index 0000000..5b50068
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/jsmin-php/web/index.php
@@ -0,0 +1,92 @@
+<?php
+
+require __DIR__ . '/../vendor/autoload.php';
+
+function h($txt) {
+ return htmlspecialchars($txt, ENT_QUOTES, 'UTF-8');
+}
+
+$tpl = array();
+
+if (isset($_POST['textIn'])) {
+ $textIn = str_replace("\r\n", "\n", $_POST['textIn']);
+
+ $tpl['inBytes'] = strlen($textIn);
+ $startTime = microtime(true);
+ try {
+ $tpl['output'] = \JSMin\JSMin::minify($textIn);
+ } catch (Exception $e) {
+ $tpl['exceptionMsg'] = getExceptionMsg($e, $textIn);
+ $tpl['output'] = $textIn;
+ sendPage($tpl);
+ }
+ $tpl['time'] = microtime(true) - $startTime;
+ $tpl['outBytes'] = strlen($tpl['output']);
+}
+
+sendPage($tpl);
+
+
+/**
+ * @param Exception $e
+ * @param string $input
+ * @return string HTML
+ */
+function getExceptionMsg(Exception $e, $input) {
+ $msg = "<p>" . h($e->getMessage()) . "</p>";
+
+ if (0 !== strpos(get_class($e), 'JSMin\\Unterminated')
+ || !preg_match('~byte (\d+)~', $e->getMessage(), $m)) {
+ return $msg;
+ }
+
+ $msg .= "<pre>";
+ if ($m[1] > 200) {
+ $msg .= h(substr($input, ($m[1] - 200), 200));
+ } else {
+ $msg .= h(substr($input, 0, $m[1]));
+ }
+ $highlighted = isset($input[$m[1]]) ? h($input[$m[1]]) : '&#9220;';
+ if ($highlighted === "\n") {
+ $highlighted = "&#9166;\n";
+ }
+ $msg .= "<span style='background:#c00;color:#fff'>$highlighted</span>";
+ $msg .= h(substr($input, $m[1] + 1, 200)) . "</span></pre>";
+
+ return $msg;
+}
+
+/**
+ * Draw page
+ *
+ * @param array $vars
+ */
+function sendPage($vars) {
+ header('Content-Type: text/html; charset=utf-8');
+
+ ?>
+ <!DOCTYPE html><head><title>JSMin</title></head>
+ <?php
+ if (isset($vars['exceptionMsg'])) {
+ echo $vars['exceptionMsg'];
+ }
+ if (isset($vars['time'])) {
+ echo "
+<table>
+ <tr><th>Bytes in</th><td>{$vars['inBytes']} (after line endings normalized to <code>\\n</code>)</td></tr>
+ <tr><th>Bytes out</th><td>{$vars['outBytes']} (reduced " . round(100 - (100 * $vars['outBytes'] / $vars['inBytes'])) . "%)</td></tr>
+ <tr><th>Time (s)</th><td>" . round($vars['time'], 5) . "</td></tr>
+</table>
+ ";
+ }
+ ?>
+ <form action="?2" method="post">
+ <p><label>Content<br><textarea name="textIn" cols="80" rows="35" style="width:99%"><?php
+ if (isset($vars['output'])) {
+ echo h($vars['output']);
+ }
+ ?></textarea></label></p>
+ <p><input type="submit" name="method" value="JSMin::minify()"></p>
+ </form><?php
+ exit;
+}
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/.gitignore b/admin/survey/minify/vendor/mrclay/props-dic/.gitignore
new file mode 100644
index 0000000..160ebc0
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/.gitignore
@@ -0,0 +1,21 @@
+# ignore IDE/hidden/OS cache files
+.*
+*~
+nbproject
+nb-configuration.xml
+Session.vim
+*.tmproj
+*.tmproject
+tmtags
+Thumbs.db
+Desktop.ini
+
+# ignore Composer downloads
+/vendor/*
+
+# keep some hiddens
+!.htaccess
+!/.gitignore
+!/.travis.yml
+
+/composer.lock
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/.travis.yml b/admin/survey/minify/vendor/mrclay/props-dic/.travis.yml
new file mode 100644
index 0000000..79f80a3
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/.travis.yml
@@ -0,0 +1,30 @@
+language: php
+
+sudo: false
+
+php:
+ - 5.3
+ - 5.4
+ - 5.5
+ - 5.6
+ - 7.0
+ - hhvm
+
+matrix:
+ allow_failures:
+ - php: hhvm
+ fast_finish: true
+
+branches:
+ only:
+ - master
+ - 2.x
+
+before_install:
+ - composer self-update
+
+install:
+ - composer install
+
+script:
+ - phpunit
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/LICENSE b/admin/survey/minify/vendor/mrclay/props-dic/LICENSE
new file mode 100644
index 0000000..adf65b7
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2013 The Authors
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/README.md b/admin/survey/minify/vendor/mrclay/props-dic/README.md
new file mode 100644
index 0000000..a01f55b
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/README.md
@@ -0,0 +1,165 @@
+# Props [![Build Status](https://travis-ci.org/mrclay/Props.png)](https://travis-ci.org/mrclay/Props)
+
+Most [Dependency Injection](http://www.mrclay.org/2014/04/06/dependency-injection-ask-for-what-you-need/) containers have fetch operations, like `$di->get('foo')` or `$di['foo']`, which don't allow your IDE to know the type of value received, nor offer you any help remembering/typing key names.
+
+With **Props**, you access values via custom property reads `$di->foo` or method calls `$di->new_foo()`. This allows you to subclass the container and provide `@property` and/or `@method` PHPDoc declarations, giving your IDE and static analysis tools valuable runtime type information.
+
+An example will help:
+
+```php
+/**
+ * @property-read Foo $foo
+ * @method Foo new_foo()
+ */
+class MyContainer extends \Props\Container {
+ public function __construct() {
+ $this->foo = function (MyContainer $c) {
+ return new Foo();
+ };
+ }
+}
+
+$c = new MyContainer();
+
+$foo1 = $c->foo; // your IDE knows this is a Foo instance
+
+$foo2 = $c->new_foo(); // A fresh Foo instance
+
+$foo3 = $c->foo; // same as $foo1
+```
+
+Here's a more complex example:
+
+```php
+/**
+ * @property-read string $style
+ * @property-read Dough $dough
+ * @property-read Cheese $cheese
+ * @property-read Pizza $pizza
+ * @method Slice new_slice()
+ */
+class PizzaServices extends \Props\Container {
+ public function __construct() {
+ $this->style = 'deluxe';
+
+ $this->dough = function (PizzaServices $c) {
+ return new Dough();
+ };
+
+ $this->setFactory('cheese', 'CheeseFactory::getCheese');
+
+ $this->pizza = function (PizzaServices $c) {
+ $pizza = new Pizza($c->style, $c->cheese);
+ $pizza->setDough($c->dough);
+ return $pizza;
+ };
+
+ $this->slice = function (PizzaServices $c) {
+ return $c->pizza->getSlice();
+ };
+ }
+}
+
+$c = new PizzaServices;
+
+$c->pizza; // This first resolves and caches the cheese and dough.
+
+$c->pizza; // The same pizza instance as above (no factories called).
+```
+
+Since "slice" has a factory function set, we can call `new_slice()` to get fresh instances from it:
+
+```php
+$c->new_slice(); // a new Slice instance
+$c->new_slice(); // a new Slice instance
+```
+
+Your IDE sees the container as a plain old class of typed properties, allowing it to offer suggestions of available properties, autocomplete their names, and autocomplete the objects returned. It gives you much more power when providing static analysis and automated refactoring.
+
+## Compatibility
+
+`Props\Container` implements [`ContainerInterface`](https://github.com/container-interop/container-interop).
+
+## Overview
+
+You can specify dependencies via direct setting:
+
+```php
+$c->aaa = new AAA();
+```
+
+You can specify factories by setting a `Closure`, or by using the `setFactory()` method. These are functionally equivalent:
+
+```php
+$c->bbb = function ($c) {
+ return BBB::factory($c);
+};
+
+$c->setFactory('bbb', 'BBB::factory');
+```
+
+Resolved dependencies are cached, returning the same instance:
+
+```php
+$c->bbb === $c->bbb; // true
+```
+
+### Using factories
+
+If you don't want a cached value, use `new_PROPERTYNAME()` to always fetch a fresh instance:
+
+```php
+$c->new_bbb() === $c->new_bbb(); // false
+```
+
+Regular value sets do not store a factory, so you may want to check `hasFactory()` before you use `new_PROPERTYNAME()`:
+
+```php
+// store a value
+$c->ccc = new CCC();
+$c->hasFactory('ccc'); // false
+
+// store a factory
+$c->ccc = function () {
+ return new CCC();
+};
+$c->hasFactory('ccc'); // true
+```
+
+You can also get access to a set factory:
+
+```php
+$callable = $c->getFactory('ccc');
+```
+
+### Extending a factory
+
+Use `extend` to have the return value of a factory filtered before it's returned:
+
+```php
+$c->foo = function ($c) {
+ return new Foo($c->bar);
+};
+
+$c->extend('foo', function ($value, Container $c) {
+ return array($value, $c->bing);
+});
+
+$c->foo; // [Foo, "bing"]
+
+$c->new_foo(); // re-call original foo factory and re-extend output (`bar` and `bing` will be re-read)
+```
+
+## Pimple with property access
+
+If you're used to the [Pimple](http://pimple.sensiolabs.org/) API, try `Props\Pimple`, which just adds property access. With that you can add `@property` declarations and get the same typing benefits.
+
+You can see an [example](https://github.com/mrclay/Props/blob/master/scripts/example-pimple.php) that's similar to the Pimple docs.
+
+## Requirements
+
+ * PHP 5.3
+
+### License (MIT)
+
+See [LICENSE](https://github.com/mrclay/Props/blob/master/src/LICENSE).
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/composer.json b/admin/survey/minify/vendor/mrclay/props-dic/composer.json
new file mode 100644
index 0000000..78f64dd
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/composer.json
@@ -0,0 +1,27 @@
+{
+ "name": "mrclay/props-dic",
+ "type": "library",
+ "description": "Props is a simple DI container that allows retrieving values via custom property and method names",
+ "keywords": ["container", "dependency injection", "di", "di container", "dependency injection container"],
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Steve Clay",
+ "email": "steve@mrclay.org",
+ "homepage": "http://www.mrclay.org/"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.3",
+ "container-interop/container-interop": "^1.1",
+ "pimple/pimple": "~3.0"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "~4.8"
+ },
+ "autoload": {
+ "psr-0": {
+ "Props\\": ["src/", "test/"]
+ }
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/phpunit.xml b/admin/survey/minify/vendor/mrclay/props-dic/phpunit.xml
new file mode 100644
index 0000000..4fc4d1b
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/phpunit.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<phpunit backupGlobals="false"
+ backupStaticAttributes="false"
+ colors="true"
+ convertErrorsToExceptions="true"
+ convertNoticesToExceptions="true"
+ convertWarningsToExceptions="true"
+ processIsolation="false"
+ bootstrap="vendor/autoload.php"
+ >
+ <testsuites>
+ <testsuite name="Props Test Suite">
+ <directory>./test/</directory>
+ </testsuite>
+ </testsuites>
+
+ <filter>
+ <whitelist>
+ <directory>./</directory>
+ <exclude>
+ <directory>./test</directory>
+ <directory>./vendor</directory>
+ </exclude>
+ </whitelist>
+ </filter>
+</phpunit>
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/scripts/example-pimple.php b/admin/survey/minify/vendor/mrclay/props-dic/scripts/example-pimple.php
new file mode 100644
index 0000000..23bfee5
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/scripts/example-pimple.php
@@ -0,0 +1,75 @@
+<?php
+/**
+ * Example of Props\Pimple based on official Pimple docs
+ */
+
+namespace {
+ require __DIR__ . '/../vendor/autoload.php';
+}
+
+namespace PropsExample {
+
+ class SessionStorage {
+ public function __construct($cookieName) { $this->cookieName = $cookieName; }
+ }
+ class Session {
+ public function __construct($storage) { $this->storage = $storage; }
+ }
+ class Zend_Mail {
+ public function setFrom($from) { $this->from = $from; }
+ }
+
+ /**
+ * @property-read string $cookie_name
+ * @property-read string $session_storage_class
+ * @property-read Session $session
+ * @property-read \Closure $random
+ * @property-read Zend_Mail $mail
+ */
+ class MyContainer2 extends \Props\Pimple {
+ public function __construct() {
+ parent::__construct();
+
+ $this->cookie_name = 'SESSION_ID';
+
+ $this->session_storage_class = 'PropsExample\\SessionStorage';
+
+ $this->session_storage = function (MyContainer2 $c) {
+ $class = $c->session_storage_class;
+ return new $class($c->cookie_name);
+ };
+
+ $this->session = $this->factory(function (MyContainer2 $c) {
+ return new Session($c->session_storage);
+ });
+
+ $this->random = $this->protect(function () { return rand(); });
+
+ $this->mail = function (MyContainer2 $c) {
+ return new Zend_Mail();
+ };
+
+ $this->{'mail.default_from'} = 'foo@example.com';
+
+ $this->extend('mail', function($mail, MyContainer2 $c) {
+ $mail->setFrom($c->{'mail.default_from'});
+ return $mail;
+ });
+ }
+ }
+
+ $c = new MyContainer2;
+
+ $r1 = $c->random;
+ $r2 = $c->random;
+
+ echo (int)($r1 === $r2) . "<br>";
+
+ echo $r1() . "<br>";
+
+ echo get_class($c->raw('session')) . '<br>';
+
+ echo var_export($c->session, true) . '<br>';
+
+ echo var_export($c->mail, true) . '<br>';
+}
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/scripts/example.php b/admin/survey/minify/vendor/mrclay/props-dic/scripts/example.php
new file mode 100644
index 0000000..7778860
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/scripts/example.php
@@ -0,0 +1,71 @@
+<?php
+
+require __DIR__ . '/../vendor/autoload.php';
+
+class AAA {}
+class BBB {}
+class CCC {
+ public function __construct(BBB $bbb) {}
+ public function setBbb(BBB $bbb) {}
+ public $aaa;
+}
+class DDD {}
+function get_a_bbb() { return new BBB; }
+
+/**
+ * @property-read AAA $aaa
+ * @property-read BBB $bbb1
+ * @property-read BBB $bbb2
+ * @property-read BBB $bbb3
+ * @property-read CCC $ccc
+ * @property-read DDD $ddd
+ *
+ * @method AAA new_aaa()
+ */
+class MyContainer extends \Props\Container {
+ public function __construct() {
+ // store plain old values
+ $this->ddd = new DDD;
+ $this->{'bbb.class'} = 'BBB';
+
+ // set a factory, which will construct an object on demand
+ $this->aaa = function () {
+ return new AAA();
+ };
+
+ // alternative factory syntax, and using a reference to specify the class name
+ $this->setFactory('bbb1', function (MyContainer $c) {
+ return new $c->{'bbb.class'};
+ });
+
+ // fetch with a callback
+ $this->setFactory('bbb2', 'get_a_bbb');
+
+ // Closures automatically used as factories
+ $this->bbb3 = function (MyContainer $c) {
+ return $c->bbb2;
+ };
+
+ // more advanced factory
+ $this->ccc = function (MyContainer $c) {
+ $val = new CCC($c->bbb1);
+ $val->setBbb($c->bbb2);
+ $val->aaa = $c->aaa;
+ return $val;
+ };
+ }
+}
+
+$c = new MyContainer;
+
+$c->aaa; // factory builds a AAA
+$c->aaa; // the same AAA
+$c->new_aaa(); // always a freshly-built AAA
+
+$c->bbb1; // factory resolves bar.class, builds a BBB
+$c->bbb2; // invoker calls get_a_bbb()
+$c->bbb3; // invoker executes anon func, returning the already-cached $c->bbb2 instance
+
+$c->ccc; // factory creates CCC, passing a new BBB object,
+ // calls setBbb(), passing in $c->bbb2,
+ // and sets the aaa property to $c->aaa
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/scripts/pizza.php b/admin/survey/minify/vendor/mrclay/props-dic/scripts/pizza.php
new file mode 100644
index 0000000..fcb30b0
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/scripts/pizza.php
@@ -0,0 +1,55 @@
+<?php
+
+require __DIR__ . '/../vendor/autoload.php';
+
+class Dough {}
+class Cheese {}
+class Slice {}
+class Pizza {
+ function __construct($style, Cheese $cheese) {}
+ function setDough(Dough $dough) {}
+ function getSlice() { return new Slice(); }
+}
+class CheeseFactory {
+ static function getCheese() { return new Cheese(); }
+}
+
+/**
+ * @property-read string $style
+ * @property-read Dough $dough
+ * @property-read Cheese $cheese
+ * @property-read Pizza $pizza
+ * @method Slice new_slice()
+ */
+class MyDI extends \Props\Container {
+ public function __construct() {
+ $this->style = 'deluxe';
+
+ $this->dough = function (MyContainer $c) {
+ return new Dough();
+ };
+
+ $this->setFactory('cheese', 'CheeseFactory::getCheese');
+
+ $this->pizza = function (MyContainer $c) {
+ $pizza = new Pizza($c->style, $c->cheese);
+ $pizza->setDough($c->dough);
+ return $pizza;
+ };
+
+ // note 3rd argument $shared is false
+ $this->slice = function (MyContainer $c) {
+ return $c->pizza->getSlice();
+ };
+ }
+}
+
+$c = new MyContainer;
+
+// You can request dependencies in any order. They're resolved as needed.
+
+$slice1 = $c->new_slice(); // This first resolves and caches the cheese, dough, and pizza.
+$slice2 = $c->new_slice(); // This just gets a new slice from the existing pizza.
+
+assert($slice1 !== $slice2);
+assert($c->pizza === $c->pizza);
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/src/Props/BadMethodCallException.php b/admin/survey/minify/vendor/mrclay/props-dic/src/Props/BadMethodCallException.php
new file mode 100644
index 0000000..d91f5f0
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/src/Props/BadMethodCallException.php
@@ -0,0 +1,9 @@
+<?php
+
+namespace Props;
+
+use Interop\Container\Exception\ContainerException;
+
+class BadMethodCallException extends \Exception implements ContainerException
+{
+}
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/src/Props/Container.php b/admin/survey/minify/vendor/mrclay/props-dic/src/Props/Container.php
new file mode 100644
index 0000000..e1c5789
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/src/Props/Container.php
@@ -0,0 +1,249 @@
+<?php
+
+namespace Props;
+
+use Interop\Container\ContainerInterface;
+
+/**
+ * Container holding values which can be resolved upon reading and optionally stored and shared
+ * across reads.
+ *
+ * Values are read/set as properties.
+ *
+ * @note see scripts/example.php
+ */
+class Container implements ContainerInterface
+{
+ /**
+ * @var callable[]
+ */
+ private $factories = array();
+
+ /**
+ * @var array
+ */
+ private $cache = array();
+
+ /**
+ * Fetch a value.
+ *
+ * @param string $name
+ * @return mixed
+ * @throws FactoryUncallableException|ValueUnresolvableException|NotFoundException
+ */
+ public function __get($name)
+ {
+ if (array_key_exists($name, $this->cache)) {
+ return $this->cache[$name];
+ }
+ $value = $this->build($name);
+ $this->cache[$name] = $value;
+ return $value;
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($name)
+ {
+ return $this->__get($name);
+ }
+
+ /**
+ * Set a value.
+ *
+ * @param string $name
+ * @param mixed $value
+ * @throws \InvalidArgumentException
+ */
+ public function __set($name, $value)
+ {
+ if ($value instanceof \Closure) {
+ $this->setFactory($name, $value);
+ return;
+ }
+
+ $this->cache[$name] = $value;
+ unset($this->factories[$name]);
+ }
+
+ /**
+ * Set a value to be later returned as is. You only need to use this if you wish to store
+ * a Closure.
+ *
+ * @param string $name
+ * @param mixed $value
+ * @throws \InvalidArgumentException
+ */
+ public function setValue($name, $value)
+ {
+ unset($this->factories[$name]);
+ $this->cache[$name] = $value;
+ }
+
+ /**
+ * @param string $name
+ */
+ public function __unset($name)
+ {
+ unset($this->cache[$name]);
+ unset($this->factories[$name]);
+ }
+
+ /**
+ * @param string $name
+ * @return bool
+ */
+ public function __isset($name)
+ {
+ return array_key_exists($name, $this->factories) || array_key_exists($name, $this->cache);
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function has($name)
+ {
+ return $this->__isset($name);
+ }
+
+ /**
+ * Fetch a freshly-resolved value.
+ *
+ * @param string $method method name must start with "new_"
+ * @param array $args
+ * @return mixed
+ * @throws BadMethodCallException
+ */
+ public function __call($method, $args)
+ {
+ if (0 !== strpos($method, 'new_')) {
+ throw new BadMethodCallException("Method name must begin with 'new_'");
+ }
+
+ return $this->build(substr($method, 4));
+ }
+
+ /**
+ * Can we fetch a new value via new_$name()?
+ *
+ * @param string $name
+ * @return bool
+ */
+ public function hasFactory($name)
+ {
+ return array_key_exists($name, $this->factories);
+ }
+
+ /**
+ * Set a factory to generate a value when the container is read.
+ *
+ * @param string $name The name of the value
+ * @param callable $factory Factory for the value
+ * @throws FactoryUncallableException
+ */
+ public function setFactory($name, $factory)
+ {
+ if (!is_callable($factory, true)) {
+ throw new FactoryUncallableException('$factory must appear callable');
+ }
+
+ unset($this->cache[$name]);
+ $this->factories[$name] = $factory;
+ }
+
+ /**
+ * Get an already-set factory callable (Closure, invokable, or callback)
+ *
+ * @param string $name The name of the value
+ * @return callable
+ * @throws NotFoundException
+ */
+ public function getFactory($name)
+ {
+ if (!array_key_exists($name, $this->factories)) {
+ throw new NotFoundException("No factory available for: $name");
+ }
+
+ return $this->factories[$name];
+ }
+
+ /**
+ * Add a function that gets applied to the return value of an existing factory
+ *
+ * @note A cached value (from a previous property read) will thrown away. The next property read
+ * (and all new_NAME() calls) will call the original factory.
+ *
+ * @param string $name The name of the value
+ * @param callable $extender Function that is applied to extend the returned value
+ * @return \Closure
+ * @throws FactoryUncallableException|NotFoundException
+ */
+ public function extend($name, $extender)
+ {
+ if (!is_callable($extender, true)) {
+ throw new FactoryUncallableException('$extender must appear callable');
+ }
+
+ if (!array_key_exists($name, $this->factories)) {
+ throw new NotFoundException("No factory available for: $name");
+ }
+
+ $factory = $this->factories[$name];
+
+ $newFactory = function (Container $c) use ($extender, $factory) {
+ return call_user_func($extender, call_user_func($factory, $c), $c);
+ };
+
+ $this->setFactory($name, $newFactory);
+
+ return $newFactory;
+ }
+
+ /**
+ * Get all keys available
+ *
+ * @return string[]
+ */
+ public function getKeys()
+ {
+ $keys = array_keys($this->cache) + array_keys($this->factories);
+ return array_unique($keys);
+ }
+
+ /**
+ * Build a value
+ *
+ * @param string $name
+ * @return mixed
+ * @throws FactoryUncallableException|ValueUnresolvableException|NotFoundException
+ */
+ private function build($name)
+ {
+ if (!array_key_exists($name, $this->factories)) {
+ throw new NotFoundException("Missing value: $name");
+ }
+
+ $factory = $this->factories[$name];
+
+ if (is_callable($factory)) {
+ try {
+ return call_user_func($factory, $this);
+ } catch (\Exception $e) {
+ throw new ValueUnresolvableException("Factory for '$name' threw an exception.", 0, $e);
+ }
+ }
+
+ $msg = "Factory for '$name' was uncallable";
+ if (is_string($factory)) {
+ $msg .= ": '$factory'";
+ } elseif (is_array($factory)) {
+ if (is_string($factory[0])) {
+ $msg .= ": '{$factory[0]}::{$factory[1]}'";
+ } else {
+ $msg .= ": " . get_class($factory[0]) . "->{$factory[1]}";
+ }
+ }
+ throw new FactoryUncallableException($msg);
+ }
+}
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/src/Props/FactoryUncallableException.php b/admin/survey/minify/vendor/mrclay/props-dic/src/Props/FactoryUncallableException.php
new file mode 100644
index 0000000..58c813e
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/src/Props/FactoryUncallableException.php
@@ -0,0 +1,9 @@
+<?php
+
+namespace Props;
+
+use Interop\Container\Exception\ContainerException;
+
+class FactoryUncallableException extends \Exception implements ContainerException
+{
+}
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/src/Props/NotFoundException.php b/admin/survey/minify/vendor/mrclay/props-dic/src/Props/NotFoundException.php
new file mode 100644
index 0000000..570cb68
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/src/Props/NotFoundException.php
@@ -0,0 +1,9 @@
+<?php
+
+namespace Props;
+
+use Interop\Container\Exception\NotFoundException as NotFound;
+
+class NotFoundException extends \Exception implements NotFound
+{
+}
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/src/Props/Pimple.php b/admin/survey/minify/vendor/mrclay/props-dic/src/Props/Pimple.php
new file mode 100644
index 0000000..a3b1abf
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/src/Props/Pimple.php
@@ -0,0 +1,56 @@
+<?php
+
+namespace Props;
+
+/**
+ * A version of Pimple that uses property access instead of array access
+ *
+ * @author Steve Clay <steve@mrclay.org>
+ */
+class Pimple extends \Pimple\Container
+{
+ /**
+ * Sets a parameter or an object.
+ *
+ * @param string $id The unique identifier for the parameter or object
+ * @param mixed $value The value of the parameter or a closure to define an object
+ * @throws \RuntimeException Prevent override of a frozen service
+ */
+ public function __set($id, $value)
+ {
+ $this->offsetSet($id, $value);
+ }
+
+ /**
+ * Gets a parameter or an object.
+ *
+ * @param string $id The unique identifier for the parameter or object
+ * @return mixed The value of the parameter or an object
+ * @throws \InvalidArgumentException if the identifier is not defined
+ */
+ public function __get($id)
+ {
+ return $this->offsetGet($id);
+ }
+
+ /**
+ * Checks if a parameter or an object is set.
+ *
+ * @param string $id The unique identifier for the parameter or object
+ * @return Boolean
+ */
+ public function __isset($id)
+ {
+ return $this->offsetExists($id);
+ }
+
+ /**
+ * Unsets a parameter or an object.
+ *
+ * @param string $id The unique identifier for the parameter or object
+ */
+ public function __unset($id)
+ {
+ $this->offsetUnset($id);
+ }
+}
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/src/Props/ValueUnresolvableException.php b/admin/survey/minify/vendor/mrclay/props-dic/src/Props/ValueUnresolvableException.php
new file mode 100644
index 0000000..76bba96
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/src/Props/ValueUnresolvableException.php
@@ -0,0 +1,9 @@
+<?php
+
+namespace Props;
+
+use Interop\Container\Exception\ContainerException;
+
+class ValueUnresolvableException extends \Exception implements ContainerException
+{
+}
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/test/Props/ContainerTest.php b/admin/survey/minify/vendor/mrclay/props-dic/test/Props/ContainerTest.php
new file mode 100644
index 0000000..d61a206
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/test/Props/ContainerTest.php
@@ -0,0 +1,324 @@
+<?php
+
+namespace Props;
+
+class ContainerTest extends \PHPUnit_Framework_TestCase
+{
+ const TEST_CLASS = 'Props\ContainerTestObject';
+
+ public function testBasicInterop()
+ {
+ $di = new Container();
+ $this->assertInstanceOf('Interop\Container\ContainerInterface', $di);
+
+ $this->assertFalse($di->has('foo'));
+ $di->foo = 'bar';
+ $this->assertTrue($di->has('foo'));
+ }
+
+ /**
+ * @expectedException \Interop\Container\Exception\NotFoundException
+ */
+ public function testInteropNotFound()
+ {
+ $di = new Container();
+ $di->get('foo');
+ }
+
+ /**
+ * @expectedException \Interop\Container\Exception\ContainerException
+ */
+ public function testInteropException1()
+ {
+ $di = new Container();
+ $di->setFactory('foo', null);
+ }
+
+ /**
+ * @expectedException \Interop\Container\Exception\ContainerException
+ */
+ public function testInteropException2()
+ {
+ $di = new Container();
+ $di->setFactory('foo', function () {
+ throw new \Exception();
+ });
+ $di->foo;
+ }
+
+ public function testEmpty()
+ {
+ $di = new Container();
+ $this->assertFalse(isset($di->foo));
+ $this->assertFalse($di->has('foo'));
+ }
+
+ public function testValueSetRemovesFactory()
+ {
+ $di = new Container();
+ $di->foo = function () {
+ return 'Bar';
+ };
+ $di->foo = 'Foo';
+ $this->assertTrue(isset($di->foo));
+ $this->assertFalse($di->hasFactory('foo'));
+ }
+
+ public function testSetResolvable()
+ {
+ $di = new Container();
+ $di->foo = function () {
+ return new ContainerTestObject();
+ };
+
+ $this->assertTrue(isset($di->foo));
+ $this->assertTrue($di->has('foo'));
+ $this->assertTrue($di->hasFactory('foo'));
+ }
+
+ /**
+ * @expectedException \Props\NotFoundException
+ */
+ public function testReadMissingValue()
+ {
+ $di = new Container();
+ $di->foo;
+ }
+
+ /**
+ * @expectedException \Props\NotFoundException
+ */
+ public function testGetMissingValue()
+ {
+ $di = new Container();
+ $di->get('foo');
+ }
+
+ public function testGetNewUnresolvableValue()
+ {
+ $di = new Container();
+ $di->foo = 'Foo';
+
+ $this->setExpectedException('Props\NotFoundException');
+ $di->new_foo();
+ }
+
+ public function testSetAfterRead()
+ {
+ $di = new Container();
+
+ $di->foo = 'Foo';
+ $di->foo = 'Foo2';
+ $this->assertEquals('Foo2', $di->foo);
+ }
+
+ public function testHandlesNullValue()
+ {
+ $di = new Container();
+ $di->null = null;
+ $this->assertTrue(isset($di->null));
+ $this->assertTrue($di->has('null'));
+ $this->assertNull($di->null);
+ $this->assertNull($di->get('null'));
+ }
+
+ public function testFactoryReceivesContainer()
+ {
+ $di = new Container();
+ $di->foo = function () {
+ return func_get_args();
+ };
+ $foo = $di->foo;
+ $this->assertSame($foo[0], $di);
+ $this->assertEquals(count($foo), 1);
+ }
+
+ public function testGetResolvables()
+ {
+ $di = new Container();
+
+ $di->foo = function () {
+ return new ContainerTestObject();
+ };
+ $foo1 = $di->foo;
+ $foo2 = $di->foo;
+ $this->assertInstanceOf(self::TEST_CLASS, $foo1);
+ $this->assertSame($foo1, $foo2);
+
+ $foo3 = $di->new_foo();
+ $foo4 = $di->new_foo();
+ $this->assertInstanceOf(self::TEST_CLASS, $foo3);
+ $this->assertInstanceOf(self::TEST_CLASS, $foo4);
+ $this->assertNotSame($foo3, $foo4);
+ $this->assertNotSame($foo1, $foo3);
+ }
+
+ public function testKeyNamespace()
+ {
+ $di = new Container();
+ $di->foo = function () {
+ return new ContainerTestObject();
+ };
+ $di->new_foo = 'Foo';
+
+ $this->assertInstanceOf(self::TEST_CLASS, $di->new_foo());
+ $this->assertEquals('Foo', $di->new_foo);
+ }
+
+ public function testUnset()
+ {
+ $di = new Container();
+ $di->foo = 'Foo';
+
+ unset($di->foo);
+ $this->assertFalse(isset($di->foo));
+ }
+
+ public function testAccessUnsetValue()
+ {
+ $di = new Container();
+ $di->foo = 'Foo';
+ unset($di->foo);
+
+ $this->setExpectedException('Props\NotFoundException');
+ $di->foo;
+ }
+
+ public function testSetFactory()
+ {
+ $di = new Container();
+ $di->setFactory('foo', function () {
+ $obj = new ContainerTestObject();
+ $obj->bar = 'bar';
+ return $obj;
+ });
+
+ $foo = $di->foo;
+
+ $this->assertInstanceOf(self::TEST_CLASS, $foo);
+ $this->assertEquals('bar', $foo->bar);
+ }
+
+ public function testSetValue()
+ {
+ $di = new Container();
+ $di->setValue('foo', function () {});
+
+ $this->assertInstanceOf('Closure', $di->foo);
+ }
+
+ /**
+ * @expectedException \Props\NotFoundException
+ */
+ public function testCannotExtendValue()
+ {
+ $di = new Container();
+ $di->foo = 1;
+ $di->extend('foo', function ($value, Container $c) {
+ return $value + 1;
+ });
+ }
+
+ public function testExtend()
+ {
+ $di = new Container();
+ $di->key = 'count';
+
+ $di->counter = function (Container $c) {
+ static $i = 0;
+ $i++;
+ return (object)array(
+ $c->key => $i,
+ );
+ };
+
+ $c1 = $di->counter; // cached with $i = 1
+
+ $di->extend('counter', function ($value, Container $c) {
+ static $i = 0;
+ $i++;
+ $value->one = $i;
+ return $value;
+ });
+
+ $c2 = $di->counter; // because of extension, doesn't use original cached value
+ $this->assertEquals((object)array('count' => 2, 'one' => 1), $c2);
+ $this->assertNotSame($c1, $c2);
+
+ $di->key = 'total';
+
+ $c3 = $di->counter; // but caches repeat reads
+ $this->assertEquals((object)array('count' => 2, 'one' => 1), $c3);
+ $this->assertSame($c2, $c3);
+
+ $c4 = $di->new_counter();
+ $this->assertEquals((object)array('total' => 3, 'one' => 2), $c4);
+ $this->assertNotSame($c3, $c4);
+
+ $di->extend('counter', function ($value, Container $c) {
+ static $i = 0;
+ $i++;
+ $value->two = $i;
+ return $value;
+ });
+
+ $c5 = $di->counter; // going deep!
+ $this->assertEquals((object)array('total' => 4, 'one' => 3, 'two' => 1), $c5);
+
+ $c6 = $di->new_counter();
+ $this->assertEquals((object)array('total' => 5, 'one' => 4, 'two' => 2), $c6);
+ }
+
+ /**
+ * @expectedException \Props\NotFoundException
+ */
+ public function testGetFactoryForValue()
+ {
+ $di = new Container();
+ $di->key = 'count';
+ $di->getFactory('key');
+ }
+
+ /**
+ * @expectedException \Props\NotFoundException
+ */
+ public function testGetMissingFactory()
+ {
+ $di = new Container();
+ $di->getFactory('key');
+ }
+
+ public function testGetFactory()
+ {
+ $di = new Container();
+ $factory = function () {};
+ $di->foo = $factory;
+ $factory2 = $di->getFactory('foo');
+ $this->assertSame($factory, $factory2);
+ }
+
+ public function testGetKeys()
+ {
+ $di = new Container();
+ $di->foo = 'foo';
+ $di->bar = function () {};
+ $di->bar;
+ $this->assertEquals(array('foo', 'bar'), $di->getKeys());
+ }
+}
+
+class ContainerTestObject
+{
+ public $calls;
+ public $args;
+
+ public function __construct()
+ {
+ $this->args = func_get_args();
+ }
+
+ public function __call($name, $args)
+ {
+ $this->calls[$name] = $args[0];
+ }
+}
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/Invokable.php b/admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/Invokable.php
new file mode 100644
index 0000000..0b87de9
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/Invokable.php
@@ -0,0 +1,38 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Props\Pimple\Tests;
+
+class Invokable
+{
+ public function __invoke($value = null)
+ {
+ $service = new Service();
+ $service->value = $value;
+
+ return $service;
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/NonInvokable.php b/admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/NonInvokable.php
new file mode 100644
index 0000000..5d0b7c1
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/NonInvokable.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Props\Pimple\Tests;
+
+class NonInvokable
+{
+ public function __call($a, $b)
+ {
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/PimpleTest.php b/admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/PimpleTest.php
new file mode 100644
index 0000000..2a29660
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/PimpleTest.php
@@ -0,0 +1,452 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Props\Pimple\Tests;
+
+use Props\Pimple;
+
+/**
+ * Pimple Test
+ *
+ * @package pimple
+ * @author Igor Wiedler <igor@wiedler.ch>
+ */
+class PimpleTest extends \PHPUnit_Framework_TestCase
+{
+ public function testWithString()
+ {
+ $pimple = new Pimple();
+ $pimple->param = 'value';
+
+ $this->assertEquals('value', $pimple->param);
+ }
+
+ public function testWithClosure()
+ {
+ $pimple = new Pimple();
+ $pimple->service = function () {
+ return new Service();
+ };
+
+ $this->assertInstanceOf('Props\Pimple\Tests\Service', $pimple->service);
+ }
+
+ public function testServicesShouldBeDifferent()
+ {
+ $pimple = new Pimple();
+ $pimple->service = $pimple->factory(function () {
+ return new Service();
+ });
+
+ $serviceOne = $pimple->service;
+ $this->assertInstanceOf('Props\Pimple\Tests\Service', $serviceOne);
+
+ $serviceTwo = $pimple->service;
+ $this->assertInstanceOf('Props\Pimple\Tests\Service', $serviceTwo);
+
+ $this->assertNotSame($serviceOne, $serviceTwo);
+ }
+
+ public function testShouldPassContainerAsParameter()
+ {
+ $pimple = new Pimple();
+ $pimple->service = function () {
+ return new Service();
+ };
+ $pimple->container = function ($container) {
+ return $container;
+ };
+
+ $this->assertNotSame($pimple, $pimple->service);
+ $this->assertSame($pimple, $pimple->container);
+ }
+
+ public function testIsset()
+ {
+ $pimple = new Pimple();
+ $pimple->param = 'value';
+ $pimple->service = function () {
+ return new Service();
+ };
+
+ $pimple->null = null;
+
+ $this->assertTrue(isset($pimple->param));
+ $this->assertTrue(isset($pimple->service));
+ $this->assertTrue(isset($pimple->null));
+ $this->assertFalse(isset($pimple->non_existent));
+ }
+
+ public function testConstructorInjection()
+ {
+ $params = array("param" => "value");
+ $pimple = new Pimple($params);
+
+ $this->assertSame($pimple->param, $pimple->param);
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Identifier "foo" is not defined.
+ */
+ public function testOffsetGetValidatesKeyIsPresent()
+ {
+ $pimple = new Pimple();
+ echo $pimple->foo;
+ }
+
+ public function testOffsetGetHonorsNullValues()
+ {
+ $pimple = new Pimple();
+ $pimple->foo = null;
+ $this->assertNull($pimple->foo);
+ }
+
+ public function testUnset()
+ {
+ $pimple = new Pimple();
+ $pimple->param = 'value';
+ $pimple->service = function () {
+ return new Service();
+ };
+
+ unset($pimple->param, $pimple->service);
+ $this->assertFalse(isset($pimple->param));
+ $this->assertFalse(isset($pimple->service));
+ }
+
+ /**
+ * @dataProvider serviceDefinitionProvider
+ */
+ public function testShare($service)
+ {
+ $pimple = new Pimple();
+ $pimple->shared_service = $service;
+
+ $serviceOne = $pimple->shared_service;
+ $this->assertInstanceOf('Props\Pimple\Tests\Service', $serviceOne);
+
+ $serviceTwo = $pimple->shared_service;
+ $this->assertInstanceOf('Props\Pimple\Tests\Service', $serviceTwo);
+
+ $this->assertSame($serviceOne, $serviceTwo);
+ }
+
+ /**
+ * @dataProvider serviceDefinitionProvider
+ */
+ public function testProtect($service)
+ {
+ $pimple = new Pimple();
+ $pimple->protected = $pimple->protect($service);
+
+ $this->assertSame($service, $pimple->protected);
+ }
+
+ public function testGlobalFunctionNameAsParameterValue()
+ {
+ $pimple = new Pimple();
+ $pimple->global_function = 'strlen';
+ $this->assertSame('strlen', $pimple->global_function);
+ }
+
+ public function testRaw()
+ {
+ $pimple = new Pimple();
+ $pimple->service = $definition = $pimple->factory(function () { return 'foo'; });
+ $this->assertSame($definition, $pimple->raw('service'));
+ }
+
+ public function testRawHonorsNullValues()
+ {
+ $pimple = new Pimple();
+ $pimple->foo = null;
+ $this->assertNull($pimple->raw('foo'));
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Identifier "foo" is not defined.
+ */
+ public function testRawValidatesKeyIsPresent()
+ {
+ $pimple = new Pimple();
+ $pimple->raw('foo');
+ }
+
+ /**
+ * @dataProvider serviceDefinitionProvider
+ */
+ public function testExtend($service)
+ {
+ $pimple = new Pimple();
+ $pimple->shared_service = function () {
+ return new Service();
+ };
+ $pimple->factory_service = $pimple->factory(function () {
+ return new Service();
+ });
+
+ $pimple->extend('shared_service', $service);
+ $serviceOne = $pimple->shared_service;
+ $this->assertInstanceOf('Props\Pimple\Tests\Service', $serviceOne);
+ $serviceTwo = $pimple->shared_service;
+ $this->assertInstanceOf('Props\Pimple\Tests\Service', $serviceTwo);
+ $this->assertSame($serviceOne, $serviceTwo);
+ $this->assertSame($serviceOne->value, $serviceTwo->value);
+
+ $pimple->extend('factory_service', $service);
+ $serviceOne = $pimple->factory_service;
+ $this->assertInstanceOf('Props\Pimple\Tests\Service', $serviceOne);
+ $serviceTwo = $pimple->factory_service;
+ $this->assertInstanceOf('Props\Pimple\Tests\Service', $serviceTwo);
+ $this->assertNotSame($serviceOne, $serviceTwo);
+ $this->assertNotSame($serviceOne->value, $serviceTwo->value);
+ }
+
+ public function testExtendDoesNotLeakWithFactories()
+ {
+ $pimple = new Pimple();
+
+ $pimple->foo = $pimple->factory(function () { return; });
+ $pimple->foo = $pimple->extend('foo', function ($foo, $pimple) { return; });
+ unset($pimple->foo);
+
+ $class = new \ReflectionClass($pimple);
+ $class = $class->getParentClass();
+ $p = $class->getProperty('values');
+ $p->setAccessible(true);
+ $this->assertEmpty($p->getValue($pimple));
+
+ $p = $class->getProperty('factories');
+ $p->setAccessible(true);
+ $this->assertCount(0, $p->getValue($pimple));
+ }
+
+ /**
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Identifier "foo" is not defined.
+ */
+ public function testExtendValidatesKeyIsPresent()
+ {
+ $pimple = new Pimple();
+ $pimple->extend('foo', function () {});
+ }
+
+ public function testKeys()
+ {
+ $pimple = new Pimple();
+ $pimple->foo = 123;
+ $pimple->bar = 123;
+
+ $this->assertEquals(array('foo', 'bar'), $pimple->keys());
+ }
+
+ /** @test */
+ public function settingAnInvokableObjectShouldTreatItAsFactory()
+ {
+ $pimple = new Pimple();
+ $pimple->invokable = new Invokable();
+
+ $this->assertInstanceOf('Props\Pimple\Tests\Service', $pimple->invokable);
+ }
+
+ /** @test */
+ public function settingNonInvokableObjectShouldTreatItAsParameter()
+ {
+ $pimple = new Pimple();
+ $pimple->non_invokable = new NonInvokable();
+
+ $this->assertInstanceOf('Props\Pimple\Tests\NonInvokable', $pimple->non_invokable);
+ }
+
+ /**
+ * @dataProvider badServiceDefinitionProvider
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Service definition is not a Closure or invokable object.
+ */
+ public function testFactoryFailsForInvalidServiceDefinitions($service)
+ {
+ $pimple = new Pimple();
+ $pimple->factory($service);
+ }
+
+ /**
+ * @dataProvider badServiceDefinitionProvider
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Callable is not a Closure or invokable object.
+ */
+ public function testProtectFailsForInvalidServiceDefinitions($service)
+ {
+ $pimple = new Pimple();
+ $pimple->protect($service);
+ }
+
+ /**
+ * @dataProvider badServiceDefinitionProvider
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Identifier "foo" does not contain an object definition.
+ */
+ public function testExtendFailsForKeysNotContainingServiceDefinitions($service)
+ {
+ $pimple = new Pimple();
+ $pimple->foo = $service;
+ $pimple->extend('foo', function () {});
+ }
+
+ /**
+ * @dataProvider badServiceDefinitionProvider
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Extension service definition is not a Closure or invokable object.
+ */
+ public function testExtendFailsForInvalidServiceDefinitions($service)
+ {
+ $pimple = new Pimple();
+ $pimple->foo = function () {};
+ $pimple->extend('foo', $service);
+ }
+
+ /**
+ * Provider for invalid service definitions
+ */
+ public function badServiceDefinitionProvider()
+ {
+ return array(
+ array(123),
+ array(new NonInvokable())
+ );
+ }
+
+ /**
+ * Provider for service definitions
+ */
+ public function serviceDefinitionProvider()
+ {
+ return array(
+ array(function ($value) {
+ $service = new Service();
+ $service->value = $value;
+
+ return $service;
+ }),
+ array(new Invokable())
+ );
+ }
+
+ public function testDefiningNewServiceAfterFreeze()
+ {
+ $pimple = new Pimple();
+ $pimple->foo = function () {
+ return 'foo';
+ };
+ $foo = $pimple->foo;
+
+ $pimple->bar = function () {
+ return 'bar';
+ };
+ $this->assertSame('bar', $pimple->bar);
+ }
+
+ /**
+ * @expectedException \RuntimeException
+ * @expectedExceptionMessage Cannot override frozen service "foo".
+ */
+ public function testOverridingServiceAfterFreeze()
+ {
+ $pimple = new Pimple();
+ $pimple->foo = function () {
+ return 'foo';
+ };
+ $foo = $pimple->foo;
+
+ $pimple->foo = function () {
+ return 'bar';
+ };
+ }
+
+ public function testRemovingServiceAfterFreeze()
+ {
+ $pimple = new Pimple();
+ $pimple->foo = function () {
+ return 'foo';
+ };
+ $foo = $pimple->foo;
+
+ unset($pimple->foo);
+ $pimple->foo = function () {
+ return 'bar';
+ };
+ $this->assertSame('bar', $pimple->foo);
+ }
+
+ public function testExtendingService()
+ {
+ $pimple = new Pimple();
+ $pimple->foo = function () {
+ return 'foo';
+ };
+ $pimple->foo = $pimple->extend('foo', function ($foo, $app) {
+ return "$foo.bar";
+ });
+ $pimple->foo = $pimple->extend('foo', function ($foo, $app) {
+ return "$foo.baz";
+ });
+ $this->assertSame('foo.bar.baz', $pimple->foo);
+ }
+
+ public function testExtendingServiceAfterOtherServiceFreeze()
+ {
+ $pimple = new Pimple();
+ $pimple->foo = function () {
+ return 'foo';
+ };
+ $pimple->bar = function () {
+ return 'bar';
+ };
+ $foo = $pimple->foo;
+
+ $pimple->bar = $pimple->extend('bar', function ($bar, $app) {
+ return "$bar.baz";
+ });
+ $this->assertSame('bar.baz', $pimple->bar);
+ }
+
+ public function testNoPrivateAccess()
+ {
+ $check = new AccessCheck();
+ $this->assertTrue(isset($check['values']));
+ $this->assertEquals('values', $check['values']);
+ }
+}
+
+class AccessCheck extends Pimple {
+ function __construct()
+ {
+ $this->values = 'values';
+
+ parent::__construct();
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/Service.php b/admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/Service.php
new file mode 100644
index 0000000..9784ed3
--- /dev/null
+++ b/admin/survey/minify/vendor/mrclay/props-dic/test/Props/Pimple/Tests/Service.php
@@ -0,0 +1,38 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Props\Pimple\Tests;
+
+/**
+ * Pimple Test Service
+ *
+ * @package pimple
+ * @author Igor Wiedler <igor@wiedler.ch>
+ */
+class Service
+{
+ public $value;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/.gitignore b/admin/survey/minify/vendor/pimple/pimple/.gitignore
new file mode 100644
index 0000000..cce3329
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/.gitignore
@@ -0,0 +1,3 @@
+phpunit.xml
+composer.lock
+/vendor/
diff --git a/admin/survey/minify/vendor/pimple/pimple/.travis.yml b/admin/survey/minify/vendor/pimple/pimple/.travis.yml
new file mode 100644
index 0000000..b4eb013
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/.travis.yml
@@ -0,0 +1,40 @@
+language: php
+
+env:
+ matrix:
+ - PIMPLE_EXT=no
+ - PIMPLE_EXT=yes
+ global:
+ - REPORT_EXIT_STATUS=1
+
+php:
+ - 5.3
+ - 5.4
+ - 5.5
+ - 5.6
+ - 7.0
+ - 7.1
+
+before_script:
+ - composer self-update
+ - COMPOSER_ROOT_VERSION=dev-master composer install
+ - if [ "$PIMPLE_EXT" == "yes" ]; then sh -c "cd ext/pimple && phpize && ./configure && make && sudo make install"; fi
+ - if [ "$PIMPLE_EXT" == "yes" ]; then echo "extension=pimple.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`; fi
+
+script:
+ - cd ext/pimple
+ - if [ "$PIMPLE_EXT" == "yes" ]; then yes n | make test | tee output ; grep -E 'Tests failed +. +0' output; fi
+ - if [ "$PIMPLE_EXT" == "yes" ]; then export SYMFONY_DEPRECATIONS_HELPER=weak; fi
+ - cd ../..
+ - ./vendor/bin/simple-phpunit
+
+matrix:
+ include:
+ - php: hhvm
+ dist: trusty
+ env: PIMPLE_EXT=no
+ exclude:
+ - php: 7.0
+ env: PIMPLE_EXT=yes
+ - php: 7.1
+ env: PIMPLE_EXT=yes
diff --git a/admin/survey/minify/vendor/pimple/pimple/CHANGELOG b/admin/survey/minify/vendor/pimple/pimple/CHANGELOG
new file mode 100644
index 0000000..af4cb1c
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/CHANGELOG
@@ -0,0 +1,59 @@
+* 3.2.3 (2017-XX-XX)
+
+ * n/a
+
+* 3.2.2 (2017-07-23)
+
+ * reverted extending a protected closure throws an exception (deprecated it instead)
+
+* 3.2.1 (2017-07-17)
+
+ * fixed PHP error
+
+* 3.2.0 (2017-07-17)
+
+ * added a PSR-11 service locator
+ * added a PSR-11 wrapper
+ * added ServiceIterator
+ * fixed extending a protected closure (now throws InvalidServiceIdentifierException)
+
+* 3.1.0 (2017-07-03)
+
+ * deprecated the C extension
+ * added support for PSR-11 exceptions
+
+* 3.0.2 (2015-09-11)
+
+ * refactored the C extension
+ * minor non-significant changes
+
+* 3.0.1 (2015-07-30)
+
+ * simplified some code
+ * fixed a segfault in the C extension
+
+* 3.0.0 (2014-07-24)
+
+ * removed the Pimple class alias (use Pimple\Container instead)
+
+* 2.1.1 (2014-07-24)
+
+ * fixed compiler warnings for the C extension
+ * fixed code when dealing with circular references
+
+* 2.1.0 (2014-06-24)
+
+ * moved the Pimple to Pimple\Container (with a BC layer -- Pimple is now a
+ deprecated alias which will be removed in Pimple 3.0)
+ * added Pimple\ServiceProviderInterface (and Pimple::register())
+
+* 2.0.0 (2014-02-10)
+
+ * changed extend to automatically re-assign the extended service and keep it as shared or factory
+ (to keep BC, extend still returns the extended service)
+ * changed services to be shared by default (use factory() for factory
+ services)
+
+* 1.0.0
+
+ * initial version
diff --git a/admin/survey/minify/vendor/pimple/pimple/LICENSE b/admin/survey/minify/vendor/pimple/pimple/LICENSE
new file mode 100644
index 0000000..5e8bd1b
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2009-2017 Fabien Potencier
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is furnished
+to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/admin/survey/minify/vendor/pimple/pimple/README.rst b/admin/survey/minify/vendor/pimple/pimple/README.rst
new file mode 100644
index 0000000..2a1335c
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/README.rst
@@ -0,0 +1,326 @@
+Pimple
+======
+
+.. caution::
+
+ This is the documentation for Pimple 3.x. If you are using Pimple 1.x, read
+ the `Pimple 1.x documentation`_. Reading the Pimple 1.x code is also a good
+ way to learn more about how to create a simple Dependency Injection
+ Container (recent versions of Pimple are more focused on performance).
+
+Pimple is a small Dependency Injection Container for PHP.
+
+Installation
+------------
+
+Before using Pimple in your project, add it to your ``composer.json`` file:
+
+.. code-block:: bash
+
+ $ ./composer.phar require pimple/pimple "^3.0"
+
+Usage
+-----
+
+Creating a container is a matter of creating a ``Container`` instance:
+
+.. code-block:: php
+
+ use Pimple\Container;
+
+ $container = new Container();
+
+As many other dependency injection containers, Pimple manages two different
+kind of data: **services** and **parameters**.
+
+Defining Services
+~~~~~~~~~~~~~~~~~
+
+A service is an object that does something as part of a larger system. Examples
+of services: a database connection, a templating engine, or a mailer. Almost
+any **global** object can be a service.
+
+Services are defined by **anonymous functions** that return an instance of an
+object:
+
+.. code-block:: php
+
+ // define some services
+ $container['session_storage'] = function ($c) {
+ return new SessionStorage('SESSION_ID');
+ };
+
+ $container['session'] = function ($c) {
+ return new Session($c['session_storage']);
+ };
+
+Notice that the anonymous function has access to the current container
+instance, allowing references to other services or parameters.
+
+As objects are only created when you get them, the order of the definitions
+does not matter.
+
+Using the defined services is also very easy:
+
+.. code-block:: php
+
+ // get the session object
+ $session = $container['session'];
+
+ // the above call is roughly equivalent to the following code:
+ // $storage = new SessionStorage('SESSION_ID');
+ // $session = new Session($storage);
+
+Defining Factory Services
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+By default, each time you get a service, Pimple returns the **same instance**
+of it. If you want a different instance to be returned for all calls, wrap your
+anonymous function with the ``factory()`` method
+
+.. code-block:: php
+
+ $container['session'] = $container->factory(function ($c) {
+ return new Session($c['session_storage']);
+ });
+
+Now, each call to ``$container['session']`` returns a new instance of the
+session.
+
+Defining Parameters
+~~~~~~~~~~~~~~~~~~~
+
+Defining a parameter allows to ease the configuration of your container from
+the outside and to store global values:
+
+.. code-block:: php
+
+ // define some parameters
+ $container['cookie_name'] = 'SESSION_ID';
+ $container['session_storage_class'] = 'SessionStorage';
+
+If you change the ``session_storage`` service definition like below:
+
+.. code-block:: php
+
+ $container['session_storage'] = function ($c) {
+ return new $c['session_storage_class']($c['cookie_name']);
+ };
+
+You can now easily change the cookie name by overriding the
+``cookie_name`` parameter instead of redefining the service
+definition.
+
+Protecting Parameters
+~~~~~~~~~~~~~~~~~~~~~
+
+Because Pimple sees anonymous functions as service definitions, you need to
+wrap anonymous functions with the ``protect()`` method to store them as
+parameters:
+
+.. code-block:: php
+
+ $container['random_func'] = $container->protect(function () {
+ return rand();
+ });
+
+Modifying Services after Definition
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+In some cases you may want to modify a service definition after it has been
+defined. You can use the ``extend()`` method to define additional code to be
+run on your service just after it is created:
+
+.. code-block:: php
+
+ $container['session_storage'] = function ($c) {
+ return new $c['session_storage_class']($c['cookie_name']);
+ };
+
+ $container->extend('session_storage', function ($storage, $c) {
+ $storage->...();
+
+ return $storage;
+ });
+
+The first argument is the name of the service to extend, the second a function
+that gets access to the object instance and the container.
+
+Extending a Container
+~~~~~~~~~~~~~~~~~~~~~
+
+If you use the same libraries over and over, you might want to reuse some
+services from one project to the next one; package your services into a
+**provider** by implementing ``Pimple\ServiceProviderInterface``:
+
+.. code-block:: php
+
+ use Pimple\Container;
+
+ class FooProvider implements Pimple\ServiceProviderInterface
+ {
+ public function register(Container $pimple)
+ {
+ // register some services and parameters
+ // on $pimple
+ }
+ }
+
+Then, register the provider on a Container:
+
+.. code-block:: php
+
+ $pimple->register(new FooProvider());
+
+Fetching the Service Creation Function
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+When you access an object, Pimple automatically calls the anonymous function
+that you defined, which creates the service object for you. If you want to get
+raw access to this function, you can use the ``raw()`` method:
+
+.. code-block:: php
+
+ $container['session'] = function ($c) {
+ return new Session($c['session_storage']);
+ };
+
+ $sessionFunction = $container->raw('session');
+
+PSR-11 compatibility
+--------------------
+
+For historical reasons, the ``Container`` class does not implement the PSR-11
+``ContainerInterface``. However, Pimple provides a helper class that will let
+you decouple your code from the Pimple container class.
+
+The PSR-11 container class
+~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+The ``Pimple\Psr11\Container`` class lets you access the content of an
+underlying Pimple container using ``Psr\Container\ContainerInterface``
+methods:
+
+.. code-block:: php
+
+ use Pimple\Container;
+ use Pimple\Psr11\Container as PsrContainer;
+
+ $container = new Container();
+ $container['service'] = function ($c) {
+ return new Service();
+ };
+ $psr11 = new PsrContainer($container);
+
+ $controller = function (PsrContainer $container) {
+ $service = $container->get('service');
+ };
+ $controller($psr11);
+
+Using the PSR-11 ServiceLocator
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Sometimes, a service needs access to several other services without being sure
+that all of them will actually be used. In those cases, you may want the
+instantiation of the services to be lazy.
+
+The traditional solution is to inject the entire service container to get only
+the services really needed. However, this is not recommended because it gives
+services a too broad access to the rest of the application and it hides their
+actual dependencies.
+
+The ``ServiceLocator`` is intended to solve this problem by giving access to a
+set of predefined services while instantiating them only when actually needed.
+
+It also allows you to make your services available under a different name than
+the one used to register them. For instance, you may want to use an object
+that expects an instance of ``EventDispatcherInterface`` to be available under
+the name ``event_dispatcher`` while your event dispatcher has been
+registered under the name ``dispatcher``:
+
+.. code-block:: php
+
+ use Monolog\Logger;
+ use Pimple\Psr11\ServiceLocator;
+ use Psr\Container\ContainerInterface;
+ use Symfony\Component\EventDispatcher\EventDispatcher;
+
+ class MyService
+ {
+ /**
+ * "logger" must be an instance of Psr\Log\LoggerInterface
+ * "event_dispatcher" must be an instance of Symfony\Component\EventDispatcher\EventDispatcherInterface
+ */
+ private $services;
+
+ public function __construct(ContainerInterface $services)
+ {
+ $this->services = $services;
+ }
+ }
+
+ $container['logger'] = function ($c) {
+ return new Monolog\Logger();
+ };
+ $container['dispatcher'] = function () {
+ return new EventDispatcher();
+ };
+
+ $container['service'] = function ($c) {
+ $locator = new ServiceLocator($c, array('logger', 'event_dispatcher' => 'dispatcher'));
+
+ return new MyService($locator);
+ };
+
+Referencing a Collection of Services Lazily
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Passing a collection of services instances in an array may prove inefficient
+if the class that consumes the collection only needs to iterate over it at a
+later stage, when one of its method is called. It can also lead to problems
+if there is a circular dependency between one of the services stored in the
+collection and the class that consumes it.
+
+The ``ServiceIterator`` class helps you solve these issues. It receives a
+list of service names during instantiation and will retrieve the services
+when iterated over:
+
+.. code-block:: php
+
+ use Pimple\Container;
+ use Pimple\ServiceIterator;
+
+ class AuthorizationService
+ {
+ private $voters;
+
+ public function __construct($voters)
+ {
+ $this->voters = $voters;
+ }
+
+ public function canAccess($resource)
+ {
+ foreach ($this->voters as $voter) {
+ if (true === $voter->canAccess($resource) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+ }
+
+ $container = new Container();
+
+ $container['voter1'] = function ($c) {
+ return new SomeVoter();
+ }
+ $container['voter2'] = function ($c) {
+ return new SomeOtherVoter($c['auth']);
+ }
+ $container['auth'] = function ($c) {
+ return new AuthorizationService(new ServiceIterator($c, array('voter1', 'voter2'));
+ }
+
+.. _Pimple 1.x documentation: https://github.com/silexphp/Pimple/tree/1.1
diff --git a/admin/survey/minify/vendor/pimple/pimple/composer.json b/admin/survey/minify/vendor/pimple/pimple/composer.json
new file mode 100644
index 0000000..3bb6af8
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/composer.json
@@ -0,0 +1,29 @@
+{
+ "name": "pimple/pimple",
+ "type": "library",
+ "description": "Pimple, a simple Dependency Injection Container",
+ "keywords": ["dependency injection", "container"],
+ "homepage": "http://pimple.sensiolabs.org",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "Fabien Potencier",
+ "email": "fabien@symfony.com"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.0",
+ "psr/container": "^1.0"
+ },
+ "require-dev": {
+ "symfony/phpunit-bridge": "^3.2"
+ },
+ "autoload": {
+ "psr-0": { "Pimple": "src/" }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "3.2.x-dev"
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/.gitignore b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/.gitignore
new file mode 100644
index 0000000..5e3c56d
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/.gitignore
@@ -0,0 +1,30 @@
+*.sw*
+.deps
+Makefile
+Makefile.fragments
+Makefile.global
+Makefile.objects
+acinclude.m4
+aclocal.m4
+build/
+config.cache
+config.guess
+config.h
+config.h.in
+config.log
+config.nice
+config.status
+config.sub
+configure
+configure.in
+install-sh
+libtool
+ltmain.sh
+missing
+mkinstalldirs
+run-tests.php
+*.loT
+.libs/
+modules/
+*.la
+*.lo
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/README.md b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/README.md
new file mode 100644
index 0000000..5a0f349
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/README.md
@@ -0,0 +1,12 @@
+This is Pimple 2 implemented in C
+
+* PHP >= 5.3
+* Not tested under Windows, might work
+
+Install
+=======
+
+ > phpize
+ > ./configure
+ > make
+ > make install
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/config.m4 b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/config.m4
new file mode 100644
index 0000000..2e373c1
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/config.m4
@@ -0,0 +1,63 @@
+dnl $Id$
+dnl config.m4 for extension pimple
+
+dnl Comments in this file start with the string 'dnl'.
+dnl Remove where necessary. This file will not work
+dnl without editing.
+
+dnl If your extension references something external, use with:
+
+dnl PHP_ARG_WITH(pimple, for pimple support,
+dnl Make sure that the comment is aligned:
+dnl [ --with-pimple Include pimple support])
+
+dnl Otherwise use enable:
+
+PHP_ARG_ENABLE(pimple, whether to enable pimple support,
+dnl Make sure that the comment is aligned:
+[ --enable-pimple Enable pimple support])
+
+if test "$PHP_PIMPLE" != "no"; then
+ dnl Write more examples of tests here...
+
+ dnl # --with-pimple -> check with-path
+ dnl SEARCH_PATH="/usr/local /usr" # you might want to change this
+ dnl SEARCH_FOR="/include/pimple.h" # you most likely want to change this
+ dnl if test -r $PHP_PIMPLE/$SEARCH_FOR; then # path given as parameter
+ dnl PIMPLE_DIR=$PHP_PIMPLE
+ dnl else # search default path list
+ dnl AC_MSG_CHECKING([for pimple files in default path])
+ dnl for i in $SEARCH_PATH ; do
+ dnl if test -r $i/$SEARCH_FOR; then
+ dnl PIMPLE_DIR=$i
+ dnl AC_MSG_RESULT(found in $i)
+ dnl fi
+ dnl done
+ dnl fi
+ dnl
+ dnl if test -z "$PIMPLE_DIR"; then
+ dnl AC_MSG_RESULT([not found])
+ dnl AC_MSG_ERROR([Please reinstall the pimple distribution])
+ dnl fi
+
+ dnl # --with-pimple -> add include path
+ dnl PHP_ADD_INCLUDE($PIMPLE_DIR/include)
+
+ dnl # --with-pimple -> check for lib and symbol presence
+ dnl LIBNAME=pimple # you may want to change this
+ dnl LIBSYMBOL=pimple # you most likely want to change this
+
+ dnl PHP_CHECK_LIBRARY($LIBNAME,$LIBSYMBOL,
+ dnl [
+ dnl PHP_ADD_LIBRARY_WITH_PATH($LIBNAME, $PIMPLE_DIR/lib, PIMPLE_SHARED_LIBADD)
+ dnl AC_DEFINE(HAVE_PIMPLELIB,1,[ ])
+ dnl ],[
+ dnl AC_MSG_ERROR([wrong pimple lib version or lib not found])
+ dnl ],[
+ dnl -L$PIMPLE_DIR/lib -lm
+ dnl ])
+ dnl
+ dnl PHP_SUBST(PIMPLE_SHARED_LIBADD)
+
+ PHP_NEW_EXTENSION(pimple, pimple.c, $ext_shared)
+fi
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/config.w32 b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/config.w32
new file mode 100644
index 0000000..c50ce71
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/config.w32
@@ -0,0 +1,13 @@
+// $Id$
+// vim:ft=javascript
+
+// If your extension references something external, use ARG_WITH
+// ARG_WITH("pimple", "for pimple support", "no");
+
+// Otherwise, use ARG_ENABLE
+// ARG_ENABLE("pimple", "enable pimple support", "no");
+
+if (PHP_PIMPLE != "no") {
+ EXTENSION("pimple", "pimple.c");
+}
+
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/php_pimple.h b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/php_pimple.h
new file mode 100644
index 0000000..db193e2
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/php_pimple.h
@@ -0,0 +1,137 @@
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2014 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef PHP_PIMPLE_H
+#define PHP_PIMPLE_H
+
+extern zend_module_entry pimple_module_entry;
+#define phpext_pimple_ptr &pimple_module_entry
+
+#ifdef PHP_WIN32
+# define PHP_PIMPLE_API __declspec(dllexport)
+#elif defined(__GNUC__) && __GNUC__ >= 4
+# define PHP_PIMPLE_API __attribute__ ((visibility("default")))
+#else
+# define PHP_PIMPLE_API
+#endif
+
+#ifdef ZTS
+#include "TSRM.h"
+#endif
+
+#define PIMPLE_VERSION "3.2.3-DEV"
+
+#define PIMPLE_NS "Pimple"
+#define PSR_CONTAINER_NS "Psr\\Container"
+#define PIMPLE_EXCEPTION_NS "Pimple\\Exception"
+
+#define PIMPLE_DEFAULT_ZVAL_CACHE_NUM 5
+#define PIMPLE_DEFAULT_ZVAL_VALUES_NUM 10
+
+#define PIMPLE_DEPRECATE do { \
+ int er = EG(error_reporting); \
+ EG(error_reporting) = 0;\
+ php_error(E_DEPRECATED, "The Pimple C extension is deprecated since version 3.1 and will be removed in 4.0."); \
+ EG(error_reporting) = er; \
+} while (0);
+
+zend_module_entry *get_module(void);
+
+PHP_MINIT_FUNCTION(pimple);
+PHP_MINFO_FUNCTION(pimple);
+
+PHP_METHOD(FrozenServiceException, __construct);
+PHP_METHOD(InvalidServiceIdentifierException, __construct);
+PHP_METHOD(UnknownIdentifierException, __construct);
+
+PHP_METHOD(Pimple, __construct);
+PHP_METHOD(Pimple, factory);
+PHP_METHOD(Pimple, protect);
+PHP_METHOD(Pimple, raw);
+PHP_METHOD(Pimple, extend);
+PHP_METHOD(Pimple, keys);
+PHP_METHOD(Pimple, register);
+PHP_METHOD(Pimple, offsetSet);
+PHP_METHOD(Pimple, offsetUnset);
+PHP_METHOD(Pimple, offsetGet);
+PHP_METHOD(Pimple, offsetExists);
+
+PHP_METHOD(PimpleClosure, invoker);
+
+typedef struct _pimple_bucket_value {
+ zval *value; /* Must be the first element */
+ zval *raw;
+ zend_object_handle handle_num;
+ enum {
+ PIMPLE_IS_PARAM = 0,
+ PIMPLE_IS_SERVICE = 2
+ } type;
+ zend_bool initialized;
+ zend_fcall_info_cache fcc;
+} pimple_bucket_value;
+
+typedef struct _pimple_object {
+ zend_object zobj;
+ HashTable values;
+ HashTable factories;
+ HashTable protected;
+} pimple_object;
+
+typedef struct _pimple_closure_object {
+ zend_object zobj;
+ zval *callable;
+ zval *factory;
+} pimple_closure_object;
+
+static const char sensiolabs_logo[] = "<img src=\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHYAAAAUCAMAAABvRTlyAAAAz1BMVEUAAAAAAAAAAAAsThWB5j4AAACD6T8AAACC6D+C6D6C6D+C6D4AAAAAAACC6D4AAAAAAACC6D8AAAAAAAAAAAAAAAAAAAAAAACC6D4AAAAAAAAAAACC6D4AAAAAAAAAAAAAAAAAAAAAAACC6D8AAACC6D4AAAAAAAAAAAAAAAAAAACC6D8AAACC6D6C6D+B6D+C6D+C6D+C6D8AAACC6D6C6D4AAACC6D/K/2KC6D+B6D6C6D6C6D+C6D8sTxUyWRhEeiEAAACC6D+C5z6B6D7drnEVAAAAQXRSTlMAE3oCNSUuDHFHzxaF9UFsu+irX+zlKzYimaJXktyOSFD6BolxqT7QGMMdarMIpuO28r9EolXKgR16OphfXYd4V14GtB4AAAMpSURBVEjHvVSJctowEF1jjME2RziMwUCoMfd9heZqG4n//6buLpJjkmYm03byZmxJa2nf6u2uQcG2bfhqRN4LoTKBzyGDm68M7mAwcOEdjo4zhA/Rf9Go/CVtTgiRhXfIC3EDH8F/eUX1/9KexRo+QgOdtHDsEe/sM7QT32/+K61Z1LFXcXJxN4pTbu1aTQUzuy2PIA0rDo0/0Aa5XFaJvKaVTrubywXvaa1Wq4Vu/Snr3Y7Aojh4VccwykW2N2oQ8wmjyut6+Q1t5ywIG5Npj1sh5E0B7YOzFDjfuRfaOh3O+MbbVNfTWS9COZk3Obd2su5d0a6IU9KLREbw8gEehWSr1r2sPWciXLG38r5NdW0xu9eioU87omjC9yNaMi5GNf6WppVSOqXCFkmCvMB3p9SROLoYQn5pDgQOujA1xjYvqH+plUdkwnmII8VxR/PKYkrfLLomhVlE3b/LhNbNr7hp0H2JaOc4v8dFB58HSsFTSafaqtY1sT3GO8wsy5rhokYPlRJdjPMajyYqTt1EHF/2uqSWQWmAjCUSmQ1MS3g8Btf1XOsy7YIC0CB1b5Xw1Vhba0zbxiCAQLH9TNPmHJXQUtJAN0KcDsoqLxsNvJrJExa7mKIdp2lRE2WexiS4pqWk/0jROlw6K6bV9YOBDGAuqMJ0bnuUKGB0L27bxgRhGEbzihbhxxXaQC88Vkwq8ldCi86RApWUb0Q+4VDosBCc+1s81lUdnBavH4Zp2mm3O44USwOfvSo9oBiwpFg71lMS1VKJLKljS3j9p+fOTvXXlsSNuEv6YPaZda9uRope0VJfKdo7fPiYfSmvFjXQbkhY0d9hCbBWIktRgEDieDhf1N3wbbkmNNgRy8hyl620yGQat/grV3HMpc2HDKTVmOPFz6ylPCKt/nXcAyV260jaAowwIW0YuBzrOgb/KrddZS9OmJaLgpWK4JX2DDuklcLZSDGcn8Vmx9YDNvT6UsjyBApRyFQVX7Vxm9TGxE16nmfRd8/zQoDmggQOTRh5Hv8pMt9Q/L2JmSwkMCE7dA4BuDjHJwfu0Om4QAhOjrN5XkIatglfiN/bUPdCQFjTYgAAAABJRU5ErkJggg==\">";
+
+static void pimple_exception_call_parent_constructor(zval *this_ptr, const char *format, const char *arg1 TSRMLS_DC);
+
+static int pimple_zval_to_pimpleval(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC);
+static int pimple_zval_is_valid_callback(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC);
+
+static void pimple_bucket_dtor(pimple_bucket_value *bucket);
+static void pimple_free_bucket(pimple_bucket_value *bucket);
+
+static zval *pimple_object_read_dimension(zval *object, zval *offset, int type TSRMLS_DC);
+static void pimple_object_write_dimension(zval *object, zval *offset, zval *value TSRMLS_DC);
+static int pimple_object_has_dimension(zval *object, zval *offset, int check_empty TSRMLS_DC);
+static void pimple_object_unset_dimension(zval *object, zval *offset TSRMLS_DC);
+static zend_object_value pimple_object_create(zend_class_entry *ce TSRMLS_DC);
+static void pimple_free_object_storage(pimple_object *obj TSRMLS_DC);
+
+static void pimple_closure_free_object_storage(pimple_closure_object *obj TSRMLS_DC);
+static zend_object_value pimple_closure_object_create(zend_class_entry *ce TSRMLS_DC);
+static zend_function *pimple_closure_get_constructor(zval * TSRMLS_DC);
+static int pimple_closure_get_closure(zval *obj, zend_class_entry **ce_ptr, union _zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC);
+
+#ifdef ZTS
+#define PIMPLE_G(v) TSRMG(pimple_globals_id, zend_pimple_globals *, v)
+#else
+#define PIMPLE_G(v) (pimple_globals.v)
+#endif
+
+#endif /* PHP_PIMPLE_H */
+
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/pimple.c b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/pimple.c
new file mode 100644
index 0000000..37068d0
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/pimple.c
@@ -0,0 +1,1114 @@
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2014 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "php.h"
+#include "php_ini.h"
+#include "ext/standard/info.h"
+#include "php_pimple.h"
+#include "pimple_compat.h"
+#include "zend_interfaces.h"
+#include "zend.h"
+#include "Zend/zend_closures.h"
+#include "ext/spl/spl_exceptions.h"
+#include "Zend/zend_exceptions.h"
+#include "main/php_output.h"
+#include "SAPI.h"
+
+static zend_class_entry *pimple_ce_PsrContainerInterface;
+static zend_class_entry *pimple_ce_PsrContainerExceptionInterface;
+static zend_class_entry *pimple_ce_PsrNotFoundExceptionInterface;
+
+static zend_class_entry *pimple_ce_ExpectedInvokableException;
+static zend_class_entry *pimple_ce_FrozenServiceException;
+static zend_class_entry *pimple_ce_InvalidServiceIdentifierException;
+static zend_class_entry *pimple_ce_UnknownIdentifierException;
+
+static zend_class_entry *pimple_ce;
+static zend_object_handlers pimple_object_handlers;
+static zend_class_entry *pimple_closure_ce;
+static zend_class_entry *pimple_serviceprovider_ce;
+static zend_object_handlers pimple_closure_object_handlers;
+static zend_internal_function pimple_closure_invoker_function;
+
+#define FETCH_DIM_HANDLERS_VARS pimple_object *pimple_obj = NULL; \
+ ulong index; \
+ pimple_obj = (pimple_object *)zend_object_store_get_object(object TSRMLS_CC); \
+
+#define PIMPLE_OBJECT_HANDLE_INHERITANCE_OBJECT_HANDLERS do { \
+ if (ce != pimple_ce) { \
+ zend_hash_find(&ce->function_table, ZEND_STRS("offsetget"), (void **)&function); \
+ if (function->common.scope != ce) { /* if the function is not defined in this actual class */ \
+ pimple_object_handlers.read_dimension = pimple_object_read_dimension; /* then overwrite the handler to use custom one */ \
+ } \
+ zend_hash_find(&ce->function_table, ZEND_STRS("offsetset"), (void **)&function); \
+ if (function->common.scope != ce) { \
+ pimple_object_handlers.write_dimension = pimple_object_write_dimension; \
+ } \
+ zend_hash_find(&ce->function_table, ZEND_STRS("offsetexists"), (void **)&function); \
+ if (function->common.scope != ce) { \
+ pimple_object_handlers.has_dimension = pimple_object_has_dimension; \
+ } \
+ zend_hash_find(&ce->function_table, ZEND_STRS("offsetunset"), (void **)&function); \
+ if (function->common.scope != ce) { \
+ pimple_object_handlers.unset_dimension = pimple_object_unset_dimension; \
+ } \
+ } else { \
+ pimple_object_handlers.read_dimension = pimple_object_read_dimension; \
+ pimple_object_handlers.write_dimension = pimple_object_write_dimension; \
+ pimple_object_handlers.has_dimension = pimple_object_has_dimension; \
+ pimple_object_handlers.unset_dimension = pimple_object_unset_dimension; \
+ }\
+ } while(0);
+
+#define PIMPLE_CALL_CB do { \
+ zend_fcall_info_argn(&fci TSRMLS_CC, 1, &object); \
+ fci.size = sizeof(fci); \
+ fci.object_ptr = retval->fcc.object_ptr; \
+ fci.function_name = retval->value; \
+ fci.no_separation = 1; \
+ fci.retval_ptr_ptr = &retval_ptr_ptr; \
+\
+ zend_call_function(&fci, &retval->fcc TSRMLS_CC); \
+ efree(fci.params); \
+ if (EG(exception)) { \
+ return EG(uninitialized_zval_ptr); \
+ } \
+ } while(0);
+
+
+/* Psr\Container\ContainerInterface */
+ZEND_BEGIN_ARG_INFO_EX(arginfo_pimple_PsrContainerInterface_get, 0, 0, 1)
+ZEND_ARG_INFO(0, id)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_pimple_PsrContainerInterface_has, 0, 0, 1)
+ZEND_ARG_INFO(0, id)
+ZEND_END_ARG_INFO()
+
+static const zend_function_entry pimple_ce_PsrContainerInterface_functions[] = {
+ PHP_ABSTRACT_ME(ContainerInterface, get, arginfo_pimple_PsrContainerInterface_get)
+ PHP_ABSTRACT_ME(ContainerInterface, has, arginfo_pimple_PsrContainerInterface_has)
+ PHP_FE_END
+};
+
+/* Psr\Container\ContainerExceptionInterface */
+static const zend_function_entry pimple_ce_PsrContainerExceptionInterface_functions[] = {
+ PHP_FE_END
+};
+
+/* Psr\Container\NotFoundExceptionInterface */
+static const zend_function_entry pimple_ce_PsrNotFoundExceptionInterface_functions[] = {
+ PHP_FE_END
+};
+
+/* Pimple\Exception\FrozenServiceException */
+ZEND_BEGIN_ARG_INFO_EX(arginfo_FrozenServiceException___construct, 0, 0, 1)
+ZEND_ARG_INFO(0, id)
+ZEND_END_ARG_INFO()
+
+static const zend_function_entry pimple_ce_FrozenServiceException_functions[] = {
+ PHP_ME(FrozenServiceException, __construct, arginfo_FrozenServiceException___construct, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+};
+
+/* Pimple\Exception\InvalidServiceIdentifierException */
+ZEND_BEGIN_ARG_INFO_EX(arginfo_InvalidServiceIdentifierException___construct, 0, 0, 1)
+ZEND_ARG_INFO(0, id)
+ZEND_END_ARG_INFO()
+
+static const zend_function_entry pimple_ce_InvalidServiceIdentifierException_functions[] = {
+ PHP_ME(InvalidServiceIdentifierException, __construct, arginfo_InvalidServiceIdentifierException___construct, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+};
+
+/* Pimple\Exception\UnknownIdentifierException */
+ZEND_BEGIN_ARG_INFO_EX(arginfo_UnknownIdentifierException___construct, 0, 0, 1)
+ZEND_ARG_INFO(0, id)
+ZEND_END_ARG_INFO()
+
+static const zend_function_entry pimple_ce_UnknownIdentifierException_functions[] = {
+ PHP_ME(UnknownIdentifierException, __construct, arginfo_UnknownIdentifierException___construct, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+};
+
+/* Pimple\Container */
+ZEND_BEGIN_ARG_INFO_EX(arginfo___construct, 0, 0, 0)
+ZEND_ARG_ARRAY_INFO(0, value, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetset, 0, 0, 2)
+ZEND_ARG_INFO(0, offset)
+ZEND_ARG_INFO(0, value)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetget, 0, 0, 1)
+ZEND_ARG_INFO(0, offset)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetexists, 0, 0, 1)
+ZEND_ARG_INFO(0, offset)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_offsetunset, 0, 0, 1)
+ZEND_ARG_INFO(0, offset)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_factory, 0, 0, 1)
+ZEND_ARG_INFO(0, callable)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_protect, 0, 0, 1)
+ZEND_ARG_INFO(0, callable)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_raw, 0, 0, 1)
+ZEND_ARG_INFO(0, id)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_extend, 0, 0, 2)
+ZEND_ARG_INFO(0, id)
+ZEND_ARG_INFO(0, callable)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_keys, 0, 0, 0)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_register, 0, 0, 1)
+ZEND_ARG_OBJ_INFO(0, provider, Pimple\\ServiceProviderInterface, 0)
+ZEND_ARG_ARRAY_INFO(0, values, 1)
+ZEND_END_ARG_INFO()
+
+static const zend_function_entry pimple_ce_functions[] = {
+ PHP_ME(Pimple, __construct, arginfo___construct, ZEND_ACC_PUBLIC)
+ PHP_ME(Pimple, factory, arginfo_factory, ZEND_ACC_PUBLIC)
+ PHP_ME(Pimple, protect, arginfo_protect, ZEND_ACC_PUBLIC)
+ PHP_ME(Pimple, raw, arginfo_raw, ZEND_ACC_PUBLIC)
+ PHP_ME(Pimple, extend, arginfo_extend, ZEND_ACC_PUBLIC)
+ PHP_ME(Pimple, keys, arginfo_keys, ZEND_ACC_PUBLIC)
+ PHP_ME(Pimple, register, arginfo_register, ZEND_ACC_PUBLIC)
+
+ PHP_ME(Pimple, offsetSet, arginfo_offsetset, ZEND_ACC_PUBLIC)
+ PHP_ME(Pimple, offsetGet, arginfo_offsetget, ZEND_ACC_PUBLIC)
+ PHP_ME(Pimple, offsetExists, arginfo_offsetexists, ZEND_ACC_PUBLIC)
+ PHP_ME(Pimple, offsetUnset, arginfo_offsetunset, ZEND_ACC_PUBLIC)
+ PHP_FE_END
+};
+
+/* Pimple\ServiceProviderInterface */
+ZEND_BEGIN_ARG_INFO_EX(arginfo_serviceprovider_register, 0, 0, 1)
+ZEND_ARG_OBJ_INFO(0, pimple, Pimple\\Container, 0)
+ZEND_END_ARG_INFO()
+
+static const zend_function_entry pimple_serviceprovider_iface_ce_functions[] = {
+ PHP_ABSTRACT_ME(ServiceProviderInterface, register, arginfo_serviceprovider_register)
+ PHP_FE_END
+};
+
+/* parent::__construct(sprintf("Something with %s", $arg1)) */
+static void pimple_exception_call_parent_constructor(zval *this_ptr, const char *format, const char *arg1 TSRMLS_DC)
+{
+ zend_class_entry *ce = Z_OBJCE_P(this_ptr);
+ char *message = NULL;
+ int message_len;
+ zval *constructor_arg;
+
+ message_len = spprintf(&message, 0, format, arg1);
+ ALLOC_INIT_ZVAL(constructor_arg);
+ ZVAL_STRINGL(constructor_arg, message, message_len, 1);
+
+ zend_call_method_with_1_params(&this_ptr, ce, &ce->parent->constructor, "__construct", NULL, constructor_arg);
+
+ efree(message);
+ zval_ptr_dtor(&constructor_arg);
+}
+
+/**
+ * Pass a single string parameter to exception constructor and throw
+ */
+static void pimple_throw_exception_string(zend_class_entry *ce, const char *message, zend_uint message_len TSRMLS_DC)
+{
+ zval *exception, *param;
+
+ ALLOC_INIT_ZVAL(exception);
+ object_init_ex(exception, ce);
+
+ ALLOC_INIT_ZVAL(param);
+ ZVAL_STRINGL(param, message, message_len, 1);
+
+ zend_call_method_with_1_params(&exception, ce, &ce->constructor, "__construct", NULL, param);
+
+ zend_throw_exception_object(exception TSRMLS_CC);
+
+ zval_ptr_dtor(&param);
+}
+
+static void pimple_closure_free_object_storage(pimple_closure_object *obj TSRMLS_DC)
+{
+ zend_object_std_dtor(&obj->zobj TSRMLS_CC);
+ if (obj->factory) {
+ zval_ptr_dtor(&obj->factory);
+ }
+ if (obj->callable) {
+ zval_ptr_dtor(&obj->callable);
+ }
+ efree(obj);
+}
+
+static void pimple_free_object_storage(pimple_object *obj TSRMLS_DC)
+{
+ zend_hash_destroy(&obj->factories);
+ zend_hash_destroy(&obj->protected);
+ zend_hash_destroy(&obj->values);
+ zend_object_std_dtor(&obj->zobj TSRMLS_CC);
+ efree(obj);
+}
+
+static void pimple_free_bucket(pimple_bucket_value *bucket)
+{
+ if (bucket->raw) {
+ zval_ptr_dtor(&bucket->raw);
+ }
+}
+
+static zend_object_value pimple_closure_object_create(zend_class_entry *ce TSRMLS_DC)
+{
+ zend_object_value retval;
+ pimple_closure_object *pimple_closure_obj = NULL;
+
+ pimple_closure_obj = ecalloc(1, sizeof(pimple_closure_object));
+ ZEND_OBJ_INIT(&pimple_closure_obj->zobj, ce);
+
+ pimple_closure_object_handlers.get_constructor = pimple_closure_get_constructor;
+ retval.handlers = &pimple_closure_object_handlers;
+ retval.handle = zend_objects_store_put(pimple_closure_obj, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) pimple_closure_free_object_storage, NULL TSRMLS_CC);
+
+ return retval;
+}
+
+static zend_function *pimple_closure_get_constructor(zval *obj TSRMLS_DC)
+{
+ zend_error(E_ERROR, "Pimple\\ContainerClosure is an internal class and cannot be instantiated");
+
+ return NULL;
+}
+
+static int pimple_closure_get_closure(zval *obj, zend_class_entry **ce_ptr, union _zend_function **fptr_ptr, zval **zobj_ptr TSRMLS_DC)
+{
+ *zobj_ptr = obj;
+ *ce_ptr = Z_OBJCE_P(obj);
+ *fptr_ptr = (zend_function *)&pimple_closure_invoker_function;
+
+ return SUCCESS;
+}
+
+static zend_object_value pimple_object_create(zend_class_entry *ce TSRMLS_DC)
+{
+ zend_object_value retval;
+ pimple_object *pimple_obj = NULL;
+ zend_function *function = NULL;
+
+ pimple_obj = emalloc(sizeof(pimple_object));
+ ZEND_OBJ_INIT(&pimple_obj->zobj, ce);
+
+ PIMPLE_OBJECT_HANDLE_INHERITANCE_OBJECT_HANDLERS
+
+ retval.handlers = &pimple_object_handlers;
+ retval.handle = zend_objects_store_put(pimple_obj, (zend_objects_store_dtor_t) zend_objects_destroy_object, (zend_objects_free_object_storage_t) pimple_free_object_storage, NULL TSRMLS_CC);
+
+ zend_hash_init(&pimple_obj->factories, PIMPLE_DEFAULT_ZVAL_CACHE_NUM, NULL, (dtor_func_t)pimple_bucket_dtor, 0);
+ zend_hash_init(&pimple_obj->protected, PIMPLE_DEFAULT_ZVAL_CACHE_NUM, NULL, (dtor_func_t)pimple_bucket_dtor, 0);
+ zend_hash_init(&pimple_obj->values, PIMPLE_DEFAULT_ZVAL_VALUES_NUM, NULL, (dtor_func_t)pimple_bucket_dtor, 0);
+
+ return retval;
+}
+
+static void pimple_object_write_dimension(zval *object, zval *offset, zval *value TSRMLS_DC)
+{
+ FETCH_DIM_HANDLERS_VARS
+
+ pimple_bucket_value pimple_value = {0}, *found_value = NULL;
+ ulong hash;
+
+ pimple_zval_to_pimpleval(value, &pimple_value TSRMLS_CC);
+
+ if (!offset) {/* $p[] = 'foo' when not overloaded */
+ zend_hash_next_index_insert(&pimple_obj->values, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL);
+ Z_ADDREF_P(value);
+ return;
+ }
+
+ switch (Z_TYPE_P(offset)) {
+ case IS_STRING:
+ hash = zend_hash_func(Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
+ zend_hash_quick_find(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hash, (void **)&found_value);
+ if (found_value && found_value->type == PIMPLE_IS_SERVICE && found_value->initialized == 1) {
+ pimple_free_bucket(&pimple_value);
+ pimple_throw_exception_string(pimple_ce_FrozenServiceException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
+ return;
+ }
+ if (zend_hash_quick_update(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, hash, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL) == FAILURE) {
+ pimple_free_bucket(&pimple_value);
+ return;
+ }
+ Z_ADDREF_P(value);
+ break;
+ case IS_DOUBLE:
+ case IS_BOOL:
+ case IS_LONG:
+ if (Z_TYPE_P(offset) == IS_DOUBLE) {
+ index = (ulong)Z_DVAL_P(offset);
+ } else {
+ index = Z_LVAL_P(offset);
+ }
+ zend_hash_index_find(&pimple_obj->values, index, (void **)&found_value);
+ if (found_value && found_value->type == PIMPLE_IS_SERVICE && found_value->initialized == 1) {
+ pimple_free_bucket(&pimple_value);
+ convert_to_string(offset);
+ pimple_throw_exception_string(pimple_ce_FrozenServiceException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
+ return;
+ }
+ if (zend_hash_index_update(&pimple_obj->values, index, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL) == FAILURE) {
+ pimple_free_bucket(&pimple_value);
+ return;
+ }
+ Z_ADDREF_P(value);
+ break;
+ case IS_NULL: /* $p[] = 'foo' when overloaded */
+ zend_hash_next_index_insert(&pimple_obj->values, (void *)&pimple_value, sizeof(pimple_bucket_value), NULL);
+ Z_ADDREF_P(value);
+ break;
+ default:
+ pimple_free_bucket(&pimple_value);
+ zend_error(E_WARNING, "Unsupported offset type");
+ }
+}
+
+static void pimple_object_unset_dimension(zval *object, zval *offset TSRMLS_DC)
+{
+ FETCH_DIM_HANDLERS_VARS
+
+ switch (Z_TYPE_P(offset)) {
+ case IS_STRING:
+ zend_symtable_del(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
+ zend_symtable_del(&pimple_obj->factories, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
+ zend_symtable_del(&pimple_obj->protected, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1);
+ break;
+ case IS_DOUBLE:
+ case IS_BOOL:
+ case IS_LONG:
+ if (Z_TYPE_P(offset) == IS_DOUBLE) {
+ index = (ulong)Z_DVAL_P(offset);
+ } else {
+ index = Z_LVAL_P(offset);
+ }
+ zend_hash_index_del(&pimple_obj->values, index);
+ zend_hash_index_del(&pimple_obj->factories, index);
+ zend_hash_index_del(&pimple_obj->protected, index);
+ break;
+ default:
+ zend_error(E_WARNING, "Unsupported offset type");
+ }
+}
+
+static int pimple_object_has_dimension(zval *object, zval *offset, int check_empty TSRMLS_DC)
+{
+ FETCH_DIM_HANDLERS_VARS
+
+ pimple_bucket_value *retval = NULL;
+
+ switch (Z_TYPE_P(offset)) {
+ case IS_STRING:
+ if (zend_symtable_find(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **)&retval) == SUCCESS) {
+ switch (check_empty) {
+ case 0: /* isset */
+ return 1; /* Differs from PHP behavior (Z_TYPE_P(retval->value) != IS_NULL;) */
+ case 1: /* empty */
+ default:
+ return zend_is_true(retval->value);
+ }
+ }
+ return 0;
+ break;
+ case IS_DOUBLE:
+ case IS_BOOL:
+ case IS_LONG:
+ if (Z_TYPE_P(offset) == IS_DOUBLE) {
+ index = (ulong)Z_DVAL_P(offset);
+ } else {
+ index = Z_LVAL_P(offset);
+ }
+ if (zend_hash_index_find(&pimple_obj->values, index, (void **)&retval) == SUCCESS) {
+ switch (check_empty) {
+ case 0: /* isset */
+ return 1; /* Differs from PHP behavior (Z_TYPE_P(retval->value) != IS_NULL;)*/
+ case 1: /* empty */
+ default:
+ return zend_is_true(retval->value);
+ }
+ }
+ return 0;
+ break;
+ default:
+ zend_error(E_WARNING, "Unsupported offset type");
+ return 0;
+ }
+}
+
+static zval *pimple_object_read_dimension(zval *object, zval *offset, int type TSRMLS_DC)
+{
+ FETCH_DIM_HANDLERS_VARS
+
+ pimple_bucket_value *retval = NULL;
+ zend_fcall_info fci = {0};
+ zval *retval_ptr_ptr = NULL;
+
+ switch (Z_TYPE_P(offset)) {
+ case IS_STRING:
+ if (zend_symtable_find(&pimple_obj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void **)&retval) == FAILURE) {
+ pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
+
+ return EG(uninitialized_zval_ptr);
+ }
+ break;
+ case IS_DOUBLE:
+ case IS_BOOL:
+ case IS_LONG:
+ if (Z_TYPE_P(offset) == IS_DOUBLE) {
+ index = (ulong)Z_DVAL_P(offset);
+ } else {
+ index = Z_LVAL_P(offset);
+ }
+ if (zend_hash_index_find(&pimple_obj->values, index, (void **)&retval) == FAILURE) {
+ return EG(uninitialized_zval_ptr);
+ }
+ break;
+ case IS_NULL: /* $p[][3] = 'foo' first dim access */
+ return EG(uninitialized_zval_ptr);
+ break;
+ default:
+ zend_error(E_WARNING, "Unsupported offset type");
+ return EG(uninitialized_zval_ptr);
+ }
+
+ if(retval->type == PIMPLE_IS_PARAM) {
+ return retval->value;
+ }
+
+ if (zend_hash_index_exists(&pimple_obj->protected, retval->handle_num)) {
+ /* Service is protected, return the value every time */
+ return retval->value;
+ }
+
+ if (zend_hash_index_exists(&pimple_obj->factories, retval->handle_num)) {
+ /* Service is a factory, call it every time and never cache its result */
+ PIMPLE_CALL_CB
+ Z_DELREF_P(retval_ptr_ptr); /* fetch dim addr will increment refcount */
+ return retval_ptr_ptr;
+ }
+
+ if (retval->initialized == 1) {
+ /* Service has already been called, return its cached value */
+ return retval->value;
+ }
+
+ ALLOC_INIT_ZVAL(retval->raw);
+ MAKE_COPY_ZVAL(&retval->value, retval->raw);
+
+ PIMPLE_CALL_CB
+
+ retval->initialized = 1;
+ zval_ptr_dtor(&retval->value);
+ retval->value = retval_ptr_ptr;
+
+ return retval->value;
+}
+
+static int pimple_zval_is_valid_callback(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC)
+{
+ if (Z_TYPE_P(_zval) != IS_OBJECT) {
+ return FAILURE;
+ }
+
+ if (_pimple_bucket_value->fcc.called_scope) {
+ return SUCCESS;
+ }
+
+ if (Z_OBJ_HANDLER_P(_zval, get_closure) && Z_OBJ_HANDLER_P(_zval, get_closure)(_zval, &_pimple_bucket_value->fcc.calling_scope, &_pimple_bucket_value->fcc.function_handler, &_pimple_bucket_value->fcc.object_ptr TSRMLS_CC) == SUCCESS) {
+ _pimple_bucket_value->fcc.called_scope = _pimple_bucket_value->fcc.calling_scope;
+ return SUCCESS;
+ } else {
+ return FAILURE;
+ }
+}
+
+static int pimple_zval_to_pimpleval(zval *_zval, pimple_bucket_value *_pimple_bucket_value TSRMLS_DC)
+{
+ _pimple_bucket_value->value = _zval;
+
+ if (Z_TYPE_P(_zval) != IS_OBJECT) {
+ return PIMPLE_IS_PARAM;
+ }
+
+ if (pimple_zval_is_valid_callback(_zval, _pimple_bucket_value TSRMLS_CC) == SUCCESS) {
+ _pimple_bucket_value->type = PIMPLE_IS_SERVICE;
+ _pimple_bucket_value->handle_num = Z_OBJ_HANDLE_P(_zval);
+ }
+
+ return PIMPLE_IS_SERVICE;
+}
+
+static void pimple_bucket_dtor(pimple_bucket_value *bucket)
+{
+ zval_ptr_dtor(&bucket->value);
+ pimple_free_bucket(bucket);
+}
+
+PHP_METHOD(FrozenServiceException, __construct)
+{
+ char *id = NULL;
+ int id_len;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &id, &id_len) == FAILURE) {
+ return;
+ }
+ pimple_exception_call_parent_constructor(getThis(), "Cannot override frozen service \"%s\".", id TSRMLS_CC);
+}
+
+PHP_METHOD(InvalidServiceIdentifierException, __construct)
+{
+ char *id = NULL;
+ int id_len;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &id, &id_len) == FAILURE) {
+ return;
+ }
+ pimple_exception_call_parent_constructor(getThis(), "Identifier \"%s\" does not contain an object definition.", id TSRMLS_CC);
+}
+
+PHP_METHOD(UnknownIdentifierException, __construct)
+{
+ char *id = NULL;
+ int id_len;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &id, &id_len) == FAILURE) {
+ return;
+ }
+ pimple_exception_call_parent_constructor(getThis(), "Identifier \"%s\" is not defined.", id TSRMLS_CC);
+}
+
+PHP_METHOD(Pimple, protect)
+{
+ zval *protected = NULL;
+ pimple_object *pobj = NULL;
+ pimple_bucket_value bucket = {0};
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &protected) == FAILURE) {
+ return;
+ }
+
+ if (pimple_zval_is_valid_callback(protected, &bucket TSRMLS_CC) == FAILURE) {
+ pimple_free_bucket(&bucket);
+ zend_throw_exception(pimple_ce_ExpectedInvokableException, "Callable is not a Closure or invokable object.", 0 TSRMLS_CC);
+ return;
+ }
+
+ pimple_zval_to_pimpleval(protected, &bucket TSRMLS_CC);
+ pobj = (pimple_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ if (zend_hash_index_update(&pobj->protected, bucket.handle_num, (void *)&bucket, sizeof(pimple_bucket_value), NULL) == SUCCESS) {
+ Z_ADDREF_P(protected);
+ RETURN_ZVAL(protected, 1 , 0);
+ } else {
+ pimple_free_bucket(&bucket);
+ }
+ RETURN_FALSE;
+}
+
+PHP_METHOD(Pimple, raw)
+{
+ zval *offset = NULL;
+ pimple_object *pobj = NULL;
+ pimple_bucket_value *value = NULL;
+ ulong index;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
+ return;
+ }
+
+ pobj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ switch (Z_TYPE_P(offset)) {
+ case IS_STRING:
+ if (zend_symtable_find(&pobj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void *)&value) == FAILURE) {
+ pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
+ RETURN_NULL();
+ }
+ break;
+ case IS_DOUBLE:
+ case IS_BOOL:
+ case IS_LONG:
+ if (Z_TYPE_P(offset) == IS_DOUBLE) {
+ index = (ulong)Z_DVAL_P(offset);
+ } else {
+ index = Z_LVAL_P(offset);
+ }
+ if (zend_hash_index_find(&pobj->values, index, (void *)&value) == FAILURE) {
+ RETURN_NULL();
+ }
+ break;
+ case IS_NULL:
+ default:
+ zend_error(E_WARNING, "Unsupported offset type");
+ }
+
+ if (value->raw) {
+ RETVAL_ZVAL(value->raw, 1, 0);
+ } else {
+ RETVAL_ZVAL(value->value, 1, 0);
+ }
+}
+
+PHP_METHOD(Pimple, extend)
+{
+ zval *offset = NULL, *callable = NULL, *pimple_closure_obj = NULL;
+ pimple_bucket_value bucket = {0}, *value = NULL;
+ pimple_object *pobj = NULL;
+ pimple_closure_object *pcobj = NULL;
+ ulong index;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &offset, &callable) == FAILURE) {
+ return;
+ }
+
+ pobj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ switch (Z_TYPE_P(offset)) {
+ case IS_STRING:
+ if (zend_symtable_find(&pobj->values, Z_STRVAL_P(offset), Z_STRLEN_P(offset)+1, (void *)&value) == FAILURE) {
+ pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
+ RETURN_NULL();
+ }
+
+ if (value->type != PIMPLE_IS_SERVICE) {
+ pimple_throw_exception_string(pimple_ce_InvalidServiceIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
+ RETURN_NULL();
+ }
+ if (zend_hash_index_exists(&pobj->protected, value->handle_num)) {
+ int er = EG(error_reporting);
+ EG(error_reporting) = 0;
+ php_error(E_DEPRECATED, "How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure \"%s\" should be protected?", Z_STRVAL_P(offset));
+ EG(error_reporting) = er;
+ }
+ break;
+ case IS_DOUBLE:
+ case IS_BOOL:
+ case IS_LONG:
+ if (Z_TYPE_P(offset) == IS_DOUBLE) {
+ index = (ulong)Z_DVAL_P(offset);
+ } else {
+ index = Z_LVAL_P(offset);
+ }
+ if (zend_hash_index_find(&pobj->values, index, (void *)&value) == FAILURE) {
+ convert_to_string(offset);
+ pimple_throw_exception_string(pimple_ce_UnknownIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
+ RETURN_NULL();
+ }
+ if (value->type != PIMPLE_IS_SERVICE) {
+ convert_to_string(offset);
+ pimple_throw_exception_string(pimple_ce_InvalidServiceIdentifierException, Z_STRVAL_P(offset), Z_STRLEN_P(offset) TSRMLS_CC);
+ RETURN_NULL();
+ }
+ if (zend_hash_index_exists(&pobj->protected, value->handle_num)) {
+ int er = EG(error_reporting);
+ EG(error_reporting) = 0;
+ php_error(E_DEPRECATED, "How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure \"%ld\" should be protected?", index);
+ EG(error_reporting) = er;
+ }
+ break;
+ case IS_NULL:
+ default:
+ zend_error(E_WARNING, "Unsupported offset type");
+ }
+
+ if (pimple_zval_is_valid_callback(callable, &bucket TSRMLS_CC) == FAILURE) {
+ pimple_free_bucket(&bucket);
+ zend_throw_exception(pimple_ce_ExpectedInvokableException, "Extension service definition is not a Closure or invokable object.", 0 TSRMLS_CC);
+ RETURN_NULL();
+ }
+ pimple_free_bucket(&bucket);
+
+ ALLOC_INIT_ZVAL(pimple_closure_obj);
+ object_init_ex(pimple_closure_obj, pimple_closure_ce);
+
+ pcobj = zend_object_store_get_object(pimple_closure_obj TSRMLS_CC);
+ pcobj->callable = callable;
+ pcobj->factory = value->value;
+ Z_ADDREF_P(callable);
+ Z_ADDREF_P(value->value);
+
+ if (zend_hash_index_exists(&pobj->factories, value->handle_num)) {
+ pimple_zval_to_pimpleval(pimple_closure_obj, &bucket TSRMLS_CC);
+ zend_hash_index_del(&pobj->factories, value->handle_num);
+ zend_hash_index_update(&pobj->factories, bucket.handle_num, (void *)&bucket, sizeof(pimple_bucket_value), NULL);
+ Z_ADDREF_P(pimple_closure_obj);
+ }
+
+ pimple_object_write_dimension(getThis(), offset, pimple_closure_obj TSRMLS_CC);
+
+ RETVAL_ZVAL(pimple_closure_obj, 1, 1);
+}
+
+PHP_METHOD(Pimple, keys)
+{
+ HashPosition pos;
+ pimple_object *pobj = NULL;
+ zval **value = NULL;
+ zval *endval = NULL;
+ char *str_index = NULL;
+ int str_len;
+ ulong num_index;
+
+ if (zend_parse_parameters_none() == FAILURE) {
+ return;
+ }
+
+ pobj = zend_object_store_get_object(getThis() TSRMLS_CC);
+ array_init_size(return_value, zend_hash_num_elements(&pobj->values));
+
+ zend_hash_internal_pointer_reset_ex(&pobj->values, &pos);
+
+ while(zend_hash_get_current_data_ex(&pobj->values, (void **)&value, &pos) == SUCCESS) {
+ MAKE_STD_ZVAL(endval);
+ switch (zend_hash_get_current_key_ex(&pobj->values, &str_index, (uint *)&str_len, &num_index, 0, &pos)) {
+ case HASH_KEY_IS_STRING:
+ ZVAL_STRINGL(endval, str_index, str_len - 1, 1);
+ zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &endval, sizeof(zval *), NULL);
+ break;
+ case HASH_KEY_IS_LONG:
+ ZVAL_LONG(endval, num_index);
+ zend_hash_next_index_insert(Z_ARRVAL_P(return_value), &endval, sizeof(zval *), NULL);
+ break;
+ }
+ zend_hash_move_forward_ex(&pobj->values, &pos);
+ }
+}
+
+PHP_METHOD(Pimple, factory)
+{
+ zval *factory = NULL;
+ pimple_object *pobj = NULL;
+ pimple_bucket_value bucket = {0};
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &factory) == FAILURE) {
+ return;
+ }
+
+ if (pimple_zval_is_valid_callback(factory, &bucket TSRMLS_CC) == FAILURE) {
+ pimple_free_bucket(&bucket);
+ zend_throw_exception(pimple_ce_ExpectedInvokableException, "Service definition is not a Closure or invokable object.", 0 TSRMLS_CC);
+ return;
+ }
+
+ pimple_zval_to_pimpleval(factory, &bucket TSRMLS_CC);
+ pobj = (pimple_object *)zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ if (zend_hash_index_update(&pobj->factories, bucket.handle_num, (void *)&bucket, sizeof(pimple_bucket_value), NULL) == SUCCESS) {
+ Z_ADDREF_P(factory);
+ RETURN_ZVAL(factory, 1 , 0);
+ } else {
+ pimple_free_bucket(&bucket);
+ }
+
+ RETURN_FALSE;
+}
+
+PHP_METHOD(Pimple, offsetSet)
+{
+ zval *offset = NULL, *value = NULL;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "zz", &offset, &value) == FAILURE) {
+ return;
+ }
+
+ pimple_object_write_dimension(getThis(), offset, value TSRMLS_CC);
+}
+
+PHP_METHOD(Pimple, offsetGet)
+{
+ zval *offset = NULL, *retval = NULL;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
+ return;
+ }
+
+ retval = pimple_object_read_dimension(getThis(), offset, 0 TSRMLS_CC);
+
+ RETVAL_ZVAL(retval, 1, 0);
+}
+
+PHP_METHOD(Pimple, offsetUnset)
+{
+ zval *offset = NULL;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
+ return;
+ }
+
+ pimple_object_unset_dimension(getThis(), offset TSRMLS_CC);
+}
+
+PHP_METHOD(Pimple, offsetExists)
+{
+ zval *offset = NULL;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &offset) == FAILURE) {
+ return;
+ }
+
+ RETVAL_BOOL(pimple_object_has_dimension(getThis(), offset, 1 TSRMLS_CC));
+}
+
+PHP_METHOD(Pimple, register)
+{
+ zval *provider;
+ zval **data;
+ zval *retval = NULL;
+ zval key;
+
+ HashTable *array = NULL;
+ HashPosition pos;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "O|h", &provider, pimple_serviceprovider_ce, &array) == FAILURE) {
+ return;
+ }
+
+ RETVAL_ZVAL(getThis(), 1, 0);
+
+ zend_call_method_with_1_params(&provider, Z_OBJCE_P(provider), NULL, "register", &retval, getThis());
+
+ if (retval) {
+ zval_ptr_dtor(&retval);
+ }
+
+ if (!array) {
+ return;
+ }
+
+ zend_hash_internal_pointer_reset_ex(array, &pos);
+
+ while(zend_hash_get_current_data_ex(array, (void **)&data, &pos) == SUCCESS) {
+ zend_hash_get_current_key_zval_ex(array, &key, &pos);
+ pimple_object_write_dimension(getThis(), &key, *data TSRMLS_CC);
+ zend_hash_move_forward_ex(array, &pos);
+ }
+}
+
+PHP_METHOD(Pimple, __construct)
+{
+ zval *values = NULL, **pData = NULL, offset;
+ HashPosition pos;
+ char *str_index = NULL;
+ zend_uint str_length;
+ ulong num_index;
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|a!", &values) == FAILURE) {
+ return;
+ }
+
+ PIMPLE_DEPRECATE
+
+ if (!values) {
+ return;
+ }
+
+ zend_hash_internal_pointer_reset_ex(Z_ARRVAL_P(values), &pos);
+ while (zend_hash_has_more_elements_ex(Z_ARRVAL_P(values), &pos) == SUCCESS) {
+ zend_hash_get_current_data_ex(Z_ARRVAL_P(values), (void **)&pData, &pos);
+ zend_hash_get_current_key_ex(Z_ARRVAL_P(values), &str_index, &str_length, &num_index, 0, &pos);
+ INIT_ZVAL(offset);
+ if (zend_hash_get_current_key_type_ex(Z_ARRVAL_P(values), &pos) == HASH_KEY_IS_LONG) {
+ ZVAL_LONG(&offset, num_index);
+ } else {
+ ZVAL_STRINGL(&offset, str_index, (str_length - 1), 0);
+ }
+ pimple_object_write_dimension(getThis(), &offset, *pData TSRMLS_CC);
+ zend_hash_move_forward_ex(Z_ARRVAL_P(values), &pos);
+ }
+}
+
+/*
+ * This is PHP code snippet handling extend()s calls :
+
+ $extended = function ($c) use ($callable, $factory) {
+ return $callable($factory($c), $c);
+ };
+
+ */
+PHP_METHOD(PimpleClosure, invoker)
+{
+ pimple_closure_object *pcobj = NULL;
+ zval *arg = NULL, *retval = NULL, *newretval = NULL;
+ zend_fcall_info fci = {0};
+ zval **args[2];
+
+ if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &arg) == FAILURE) {
+ return;
+ }
+
+ pcobj = zend_object_store_get_object(getThis() TSRMLS_CC);
+
+ fci.function_name = pcobj->factory;
+ args[0] = &arg;
+ zend_fcall_info_argp(&fci TSRMLS_CC, 1, args);
+ fci.retval_ptr_ptr = &retval;
+ fci.size = sizeof(fci);
+
+ if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE || EG(exception)) {
+ efree(fci.params);
+ return; /* Should here return default zval */
+ }
+
+ efree(fci.params);
+ memset(&fci, 0, sizeof(fci));
+ fci.size = sizeof(fci);
+
+ fci.function_name = pcobj->callable;
+ args[0] = &retval;
+ args[1] = &arg;
+ zend_fcall_info_argp(&fci TSRMLS_CC, 2, args);
+ fci.retval_ptr_ptr = &newretval;
+
+ if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE || EG(exception)) {
+ efree(fci.params);
+ zval_ptr_dtor(&retval);
+ return;
+ }
+
+ efree(fci.params);
+ zval_ptr_dtor(&retval);
+
+ RETVAL_ZVAL(newretval, 1 ,1);
+}
+
+PHP_MINIT_FUNCTION(pimple)
+{
+ zend_class_entry tmp_ce_PsrContainerInterface, tmp_ce_PsrContainerExceptionInterface, tmp_ce_PsrNotFoundExceptionInterface;
+ zend_class_entry tmp_ce_ExpectedInvokableException, tmp_ce_FrozenServiceException, tmp_ce_InvalidServiceIdentifierException, tmp_ce_UnknownIdentifierException;
+ zend_class_entry tmp_pimple_ce, tmp_pimple_closure_ce, tmp_pimple_serviceprovider_iface_ce;
+
+ /* Psr\Container namespace */
+ INIT_NS_CLASS_ENTRY(tmp_ce_PsrContainerInterface, PSR_CONTAINER_NS, "ContainerInterface", pimple_ce_PsrContainerInterface_functions);
+ INIT_NS_CLASS_ENTRY(tmp_ce_PsrContainerExceptionInterface, PSR_CONTAINER_NS, "ContainerExceptionInterface", pimple_ce_PsrContainerExceptionInterface_functions);
+ INIT_NS_CLASS_ENTRY(tmp_ce_PsrNotFoundExceptionInterface, PSR_CONTAINER_NS, "NotFoundExceptionInterface", pimple_ce_PsrNotFoundExceptionInterface_functions);
+
+ pimple_ce_PsrContainerInterface = zend_register_internal_interface(&tmp_ce_PsrContainerInterface TSRMLS_CC);
+ pimple_ce_PsrContainerExceptionInterface = zend_register_internal_interface(&tmp_ce_PsrContainerExceptionInterface TSRMLS_CC);
+ pimple_ce_PsrNotFoundExceptionInterface = zend_register_internal_interface(&tmp_ce_PsrNotFoundExceptionInterface TSRMLS_CC);
+
+ zend_class_implements(pimple_ce_PsrNotFoundExceptionInterface TSRMLS_CC, 1, pimple_ce_PsrContainerExceptionInterface);
+
+ /* Pimple\Exception namespace */
+ INIT_NS_CLASS_ENTRY(tmp_ce_ExpectedInvokableException, PIMPLE_EXCEPTION_NS, "ExpectedInvokableException", NULL);
+ INIT_NS_CLASS_ENTRY(tmp_ce_FrozenServiceException, PIMPLE_EXCEPTION_NS, "FrozenServiceException", pimple_ce_FrozenServiceException_functions);
+ INIT_NS_CLASS_ENTRY(tmp_ce_InvalidServiceIdentifierException, PIMPLE_EXCEPTION_NS, "InvalidServiceIdentifierException", pimple_ce_InvalidServiceIdentifierException_functions);
+ INIT_NS_CLASS_ENTRY(tmp_ce_UnknownIdentifierException, PIMPLE_EXCEPTION_NS, "UnknownIdentifierException", pimple_ce_UnknownIdentifierException_functions);
+
+ pimple_ce_ExpectedInvokableException = zend_register_internal_class_ex(&tmp_ce_ExpectedInvokableException, spl_ce_InvalidArgumentException, NULL TSRMLS_CC);
+ pimple_ce_FrozenServiceException = zend_register_internal_class_ex(&tmp_ce_FrozenServiceException, spl_ce_RuntimeException, NULL TSRMLS_CC);
+ pimple_ce_InvalidServiceIdentifierException = zend_register_internal_class_ex(&tmp_ce_InvalidServiceIdentifierException, spl_ce_InvalidArgumentException, NULL TSRMLS_CC);
+ pimple_ce_UnknownIdentifierException = zend_register_internal_class_ex(&tmp_ce_UnknownIdentifierException, spl_ce_InvalidArgumentException, NULL TSRMLS_CC);
+
+ zend_class_implements(pimple_ce_ExpectedInvokableException TSRMLS_CC, 1, pimple_ce_PsrContainerExceptionInterface);
+ zend_class_implements(pimple_ce_FrozenServiceException TSRMLS_CC, 1, pimple_ce_PsrContainerExceptionInterface);
+ zend_class_implements(pimple_ce_InvalidServiceIdentifierException TSRMLS_CC, 1, pimple_ce_PsrContainerExceptionInterface);
+ zend_class_implements(pimple_ce_UnknownIdentifierException TSRMLS_CC, 1, pimple_ce_PsrNotFoundExceptionInterface);
+
+ /* Pimple namespace */
+ INIT_NS_CLASS_ENTRY(tmp_pimple_ce, PIMPLE_NS, "Container", pimple_ce_functions);
+ INIT_NS_CLASS_ENTRY(tmp_pimple_closure_ce, PIMPLE_NS, "ContainerClosure", NULL);
+ INIT_NS_CLASS_ENTRY(tmp_pimple_serviceprovider_iface_ce, PIMPLE_NS, "ServiceProviderInterface", pimple_serviceprovider_iface_ce_functions);
+
+ tmp_pimple_ce.create_object = pimple_object_create;
+ tmp_pimple_closure_ce.create_object = pimple_closure_object_create;
+
+ pimple_ce = zend_register_internal_class(&tmp_pimple_ce TSRMLS_CC);
+ zend_class_implements(pimple_ce TSRMLS_CC, 1, zend_ce_arrayaccess);
+
+ pimple_closure_ce = zend_register_internal_class(&tmp_pimple_closure_ce TSRMLS_CC);
+ pimple_closure_ce->ce_flags |= ZEND_ACC_FINAL_CLASS;
+
+ pimple_serviceprovider_ce = zend_register_internal_interface(&tmp_pimple_serviceprovider_iface_ce TSRMLS_CC);
+
+ memcpy(&pimple_closure_object_handlers, zend_get_std_object_handlers(), sizeof(*zend_get_std_object_handlers()));
+ pimple_object_handlers = std_object_handlers;
+ pimple_closure_object_handlers.get_closure = pimple_closure_get_closure;
+
+ pimple_closure_invoker_function.function_name = "Pimple closure internal invoker";
+ pimple_closure_invoker_function.fn_flags |= ZEND_ACC_CLOSURE;
+ pimple_closure_invoker_function.handler = ZEND_MN(PimpleClosure_invoker);
+ pimple_closure_invoker_function.num_args = 1;
+ pimple_closure_invoker_function.required_num_args = 1;
+ pimple_closure_invoker_function.scope = pimple_closure_ce;
+ pimple_closure_invoker_function.type = ZEND_INTERNAL_FUNCTION;
+ pimple_closure_invoker_function.module = &pimple_module_entry;
+
+ return SUCCESS;
+}
+
+PHP_MINFO_FUNCTION(pimple)
+{
+ php_info_print_table_start();
+ php_info_print_table_header(2, "SensioLabs Pimple C support", "enabled");
+ php_info_print_table_row(2, "Pimple supported version", PIMPLE_VERSION);
+ php_info_print_table_end();
+
+ php_info_print_box_start(0);
+ php_write((void *)ZEND_STRL("SensioLabs Pimple C support developed by Julien Pauli") TSRMLS_CC);
+ if (!sapi_module.phpinfo_as_text) {
+ php_write((void *)ZEND_STRL(sensiolabs_logo) TSRMLS_CC);
+ }
+ php_info_print_box_end();
+}
+
+zend_module_entry pimple_module_entry = {
+ STANDARD_MODULE_HEADER,
+ "pimple",
+ NULL,
+ PHP_MINIT(pimple),
+ NULL,
+ NULL,
+ NULL,
+ PHP_MINFO(pimple),
+ PIMPLE_VERSION,
+ STANDARD_MODULE_PROPERTIES
+};
+
+#ifdef COMPILE_DL_PIMPLE
+ZEND_GET_MODULE(pimple)
+#endif
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/pimple_compat.h b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/pimple_compat.h
new file mode 100644
index 0000000..2c0979a
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/pimple_compat.h
@@ -0,0 +1,81 @@
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2014 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+#ifndef PIMPLE_COMPAT_H_
+#define PIMPLE_COMPAT_H_
+
+#include "Zend/zend_extensions.h" /* for ZEND_EXTENSION_API_NO */
+
+#define PHP_5_0_X_API_NO 220040412
+#define PHP_5_1_X_API_NO 220051025
+#define PHP_5_2_X_API_NO 220060519
+#define PHP_5_3_X_API_NO 220090626
+#define PHP_5_4_X_API_NO 220100525
+#define PHP_5_5_X_API_NO 220121212
+#define PHP_5_6_X_API_NO 220131226
+
+#define IS_PHP_56 ZEND_EXTENSION_API_NO == PHP_5_6_X_API_NO
+#define IS_AT_LEAST_PHP_56 ZEND_EXTENSION_API_NO >= PHP_5_6_X_API_NO
+
+#define IS_PHP_55 ZEND_EXTENSION_API_NO == PHP_5_5_X_API_NO
+#define IS_AT_LEAST_PHP_55 ZEND_EXTENSION_API_NO >= PHP_5_5_X_API_NO
+
+#define IS_PHP_54 ZEND_EXTENSION_API_NO == PHP_5_4_X_API_NO
+#define IS_AT_LEAST_PHP_54 ZEND_EXTENSION_API_NO >= PHP_5_4_X_API_NO
+
+#define IS_PHP_53 ZEND_EXTENSION_API_NO == PHP_5_3_X_API_NO
+#define IS_AT_LEAST_PHP_53 ZEND_EXTENSION_API_NO >= PHP_5_3_X_API_NO
+
+#if IS_PHP_53
+#define object_properties_init(obj, ce) do { \
+ zend_hash_copy(obj->properties, &ce->default_properties, zval_copy_property_ctor(ce), NULL, sizeof(zval *)); \
+ } while (0);
+#endif
+
+#define ZEND_OBJ_INIT(obj, ce) do { \
+ zend_object_std_init(obj, ce TSRMLS_CC); \
+ object_properties_init((obj), (ce)); \
+ } while(0);
+
+#if IS_PHP_53 || IS_PHP_54
+static void zend_hash_get_current_key_zval_ex(const HashTable *ht, zval *key, HashPosition *pos) {
+ Bucket *p;
+
+ p = pos ? (*pos) : ht->pInternalPointer;
+
+ if (!p) {
+ Z_TYPE_P(key) = IS_NULL;
+ } else if (p->nKeyLength) {
+ Z_TYPE_P(key) = IS_STRING;
+ Z_STRVAL_P(key) = estrndup(p->arKey, p->nKeyLength - 1);
+ Z_STRLEN_P(key) = p->nKeyLength - 1;
+ } else {
+ Z_TYPE_P(key) = IS_LONG;
+ Z_LVAL_P(key) = p->h;
+ }
+}
+#endif
+
+#endif /* PIMPLE_COMPAT_H_ */
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/001.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/001.phpt
new file mode 100644
index 0000000..e559c17
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/001.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test for read_dim/write_dim handlers
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+$p = new Pimple\Container();
+$p[42] = 'foo';
+$p['foo'] = 42;
+
+echo $p[42];
+echo "\n";
+echo $p['foo'];
+echo "\n";
+try {
+ var_dump($p['nonexistant']);
+ echo "Exception excpected";
+} catch (InvalidArgumentException $e) { }
+
+$p[54.2] = 'foo2';
+echo $p[54];
+echo "\n";
+$p[242.99] = 'foo99';
+echo $p[242];
+
+echo "\n";
+
+$p[5] = 'bar';
+$p[5] = 'baz';
+echo $p[5];
+
+echo "\n";
+
+$p['str'] = 'str';
+$p['str'] = 'strstr';
+echo $p['str'];
+?>
+
+--EXPECTF--
+foo
+42
+foo2
+foo99
+baz
+strstr \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/002.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/002.phpt
new file mode 100644
index 0000000..53d71b6
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/002.phpt
@@ -0,0 +1,15 @@
+--TEST--
+Test for constructor
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+$p = new Pimple\Container();
+var_dump($p[42]);
+
+$p = new Pimple\Container(array(42=>'foo'));
+var_dump($p[42]);
+?>
+--EXPECT--
+NULL
+string(3) "foo"
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/003.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/003.phpt
new file mode 100644
index 0000000..27afc06
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/003.phpt
@@ -0,0 +1,16 @@
+--TEST--
+Test empty dimensions
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+$p = new Pimple\Container();
+$p[] = 42;
+var_dump($p[0]);
+$p[41] = 'foo';
+$p[] = 'bar';
+var_dump($p[42]);
+?>
+--EXPECT--
+int(42)
+string(3) "bar" \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/004.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/004.phpt
new file mode 100644
index 0000000..2e35ee2
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/004.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test has/unset dim handlers
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+$p = new Pimple\Container();
+$p[] = 42;
+var_dump($p[0]);
+unset($p[0]);
+var_dump($p[0]);
+$p['foo'] = 'bar';
+var_dump(isset($p['foo']));
+unset($p['foo']);
+try {
+ var_dump($p['foo']);
+ echo "Excpected exception";
+} catch (InvalidArgumentException $e) { }
+var_dump(isset($p['bar']));
+$p['bar'] = NULL;
+var_dump(isset($p['bar']));
+var_dump(empty($p['bar']));
+?>
+--EXPECT--
+int(42)
+NULL
+bool(true)
+bool(false)
+bool(true)
+bool(true) \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/005.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/005.phpt
new file mode 100644
index 0000000..0911e55
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/005.phpt
@@ -0,0 +1,27 @@
+--TEST--
+Test simple class inheritance
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+class MyPimple extends Pimple\Container
+{
+ public $someAttr = 'fooAttr';
+
+ public function offsetget($o)
+ {
+ var_dump("hit");
+ return parent::offsetget($o);
+ }
+}
+
+$p = new MyPimple;
+$p[42] = 'foo';
+echo $p[42];
+echo "\n";
+echo $p->someAttr;
+?>
+--EXPECT--
+string(3) "hit"
+foo
+fooAttr \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/006.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/006.phpt
new file mode 100644
index 0000000..7ff2a5e
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/006.phpt
@@ -0,0 +1,51 @@
+--TEST--
+Test complex class inheritance
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+class MyPimple extends Pimple\Container
+{
+ public function offsetget($o)
+ {
+ var_dump("hit offsetget in " . __CLASS__);
+ return parent::offsetget($o);
+ }
+}
+
+class TestPimple extends MyPimple
+{
+ public function __construct($values)
+ {
+ array_shift($values);
+ parent::__construct($values);
+ }
+
+ public function offsetget($o)
+ {
+ var_dump('hit offsetget in ' . __CLASS__);
+ return parent::offsetget($o);
+ }
+
+ public function offsetset($o, $v)
+ {
+ var_dump('hit offsetset');
+ return parent::offsetset($o, $v);
+ }
+}
+
+$defaultValues = array('foo' => 'bar', 88 => 'baz');
+
+$p = new TestPimple($defaultValues);
+$p[42] = 'foo';
+var_dump($p[42]);
+var_dump($p[0]);
+?>
+--EXPECT--
+string(13) "hit offsetset"
+string(27) "hit offsetget in TestPimple"
+string(25) "hit offsetget in MyPimple"
+string(3) "foo"
+string(27) "hit offsetget in TestPimple"
+string(25) "hit offsetget in MyPimple"
+string(3) "baz" \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/007.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/007.phpt
new file mode 100644
index 0000000..5eeb05c
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/007.phpt
@@ -0,0 +1,22 @@
+--TEST--
+Test for read_dim/write_dim handlers
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+$p = new Pimple\Container();
+$p[42] = 'foo';
+$p['foo'] = 42;
+
+echo $p[42];
+echo "\n";
+echo $p['foo'];
+echo "\n";
+try {
+ var_dump($p['nonexistant']);
+ echo "Exception excpected";
+} catch (InvalidArgumentException $e) { }
+?>
+--EXPECTF--
+foo
+42 \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/008.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/008.phpt
new file mode 100644
index 0000000..986c778
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/008.phpt
@@ -0,0 +1,29 @@
+--TEST--
+Test frozen services
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+$p = new Pimple\Container();
+$p[42] = 'foo';
+$p[42] = 'bar';
+
+$p['foo'] = function () { };
+$p['foo'] = function () { };
+
+$a = $p['foo'];
+
+try {
+ $p['foo'] = function () { };
+ echo "Exception excpected";
+} catch (RuntimeException $e) { }
+
+$p[42] = function() { };
+$a = $p[42];
+
+try {
+ $p[42] = function () { };
+ echo "Exception excpected";
+} catch (RuntimeException $e) { }
+?>
+--EXPECTF--
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/009.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/009.phpt
new file mode 100644
index 0000000..2e65d29
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/009.phpt
@@ -0,0 +1,13 @@
+--TEST--
+Test service is called as callback, and only once
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+$p = new Pimple\Container();
+$p['foo'] = function($arg) use ($p) { var_dump($p === $arg); };
+$a = $p['foo'];
+$b = $p['foo']; /* should return not calling the callback */
+?>
+--EXPECTF--
+bool(true) \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/010.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/010.phpt
new file mode 100644
index 0000000..69836bb
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/010.phpt
@@ -0,0 +1,45 @@
+--TEST--
+Test service is called as callback for every callback type
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+function callme()
+{
+ return 'called';
+}
+
+$a = function() { return 'called'; };
+
+class Foo
+{
+ public static function bar()
+ {
+ return 'called';
+ }
+}
+
+$p = new Pimple\Container();
+$p['foo'] = 'callme';
+echo $p['foo'] . "\n";
+
+$p['bar'] = $a;
+echo $p['bar'] . "\n";
+
+$p['baz'] = "Foo::bar";
+echo $p['baz'] . "\n";
+
+$p['foobar'] = array('Foo', 'bar');
+var_dump($p['foobar']);
+
+?>
+--EXPECTF--
+callme
+called
+Foo::bar
+array(2) {
+ [0]=>
+ string(3) "Foo"
+ [1]=>
+ string(3) "bar"
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/011.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/011.phpt
new file mode 100644
index 0000000..32d3681
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/011.phpt
@@ -0,0 +1,19 @@
+--TEST--
+Test service callback throwing an exception
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+class CallBackException extends RuntimeException { }
+
+$p = new Pimple\Container();
+$p['foo'] = function () { throw new CallBackException; };
+try {
+ echo $p['foo'] . "\n";
+ echo "should not come here";
+} catch (CallBackException $e) {
+ echo "all right!";
+}
+?>
+--EXPECTF--
+all right! \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/012.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/012.phpt
new file mode 100644
index 0000000..428dfc9
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/012.phpt
@@ -0,0 +1,28 @@
+--TEST--
+Test service factory
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+
+$p = new Pimple\Container();
+
+$p->factory($f = function() { var_dump('called-1'); return 'ret-1';});
+
+$p[] = $f;
+
+$p[] = function () { var_dump('called-2'); return 'ret-2'; };
+
+var_dump($p[0]);
+var_dump($p[0]);
+var_dump($p[1]);
+var_dump($p[1]);
+?>
+--EXPECTF--
+string(8) "called-1"
+string(5) "ret-1"
+string(8) "called-1"
+string(5) "ret-1"
+string(8) "called-2"
+string(5) "ret-2"
+string(5) "ret-2" \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/013.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/013.phpt
new file mode 100644
index 0000000..970a79c
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/013.phpt
@@ -0,0 +1,33 @@
+--TEST--
+Test keys()
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+
+$p = new Pimple\Container();
+
+var_dump($p->keys());
+
+$p['foo'] = 'bar';
+$p[] = 'foo';
+
+var_dump($p->keys());
+
+unset($p['foo']);
+
+var_dump($p->keys());
+?>
+--EXPECTF--
+array(0) {
+}
+array(2) {
+ [0]=>
+ string(3) "foo"
+ [1]=>
+ int(0)
+}
+array(1) {
+ [0]=>
+ int(0)
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/014.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/014.phpt
new file mode 100644
index 0000000..4f1768d
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/014.phpt
@@ -0,0 +1,30 @@
+--TEST--
+Test raw()
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+
+$p = new Pimple\Container();
+$f = function () { var_dump('called-2'); return 'ret-2'; };
+
+$p['foo'] = $f;
+$p[42] = $f;
+
+var_dump($p['foo']);
+var_dump($p->raw('foo'));
+var_dump($p[42]);
+
+unset($p['foo']);
+
+try {
+ $p->raw('foo');
+ echo "expected exception";
+} catch (InvalidArgumentException $e) { }
+--EXPECTF--
+string(8) "called-2"
+string(5) "ret-2"
+object(Closure)#%i (0) {
+}
+string(8) "called-2"
+string(5) "ret-2" \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/015.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/015.phpt
new file mode 100644
index 0000000..f3f72ea
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/015.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test protect()
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+
+$p = new Pimple\Container();
+$f = function () { return 'foo'; };
+$p['foo'] = $f;
+
+$p->protect($f);
+
+var_dump($p['foo']);
+--EXPECTF--
+object(Closure)#%i (0) {
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/016.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/016.phpt
new file mode 100644
index 0000000..9fd8255
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/016.phpt
@@ -0,0 +1,24 @@
+--TEST--
+Test extend()
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+/*
+ This is part of Pimple::extend() code :
+
+ $extended = function ($c) use ($callable, $factory) {
+ return $callable($factory($c), $c);
+ };
+*/
+
+$p = new Pimple\Container();
+$p[12] = function ($v) { var_dump($v); return 'foo';}; /* $factory in code above */
+
+$c = $p->extend(12, function ($w) { var_dump($w); return 'bar'; }); /* $callable in code above */
+
+var_dump($c('param'));
+--EXPECTF--
+string(5) "param"
+string(3) "foo"
+string(3) "bar" \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/017.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/017.phpt
new file mode 100644
index 0000000..39795f6
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/017.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test extend() with exception in service extension
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+
+$p = new Pimple\Container();
+$p[12] = function ($v) { return 'foo';};
+
+$c = $p->extend(12, function ($w) { throw new BadMethodCallException; });
+
+try {
+ $p[12];
+ echo "Exception expected";
+} catch (BadMethodCallException $e) { }
+--EXPECTF--
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt
new file mode 100644
index 0000000..fc67901
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt
@@ -0,0 +1,17 @@
+--TEST--
+Test extend() with exception in service factory
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+
+$p = new Pimple\Container();
+$p[12] = function ($v) { throw new BadMethodCallException; };
+
+$c = $p->extend(12, function ($w) { return 'foobar'; });
+
+try {
+ $p[12];
+ echo "Exception expected";
+} catch (BadMethodCallException $e) { }
+--EXPECTF--
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/018.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/018.phpt
new file mode 100644
index 0000000..f1af3ee
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/018.phpt
@@ -0,0 +1,23 @@
+--TEST--
+Test register()
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+
+class Foo implements Pimple\ServiceProviderInterface
+{
+ public function register(Pimple\Container $p)
+ {
+ var_dump($p);
+ }
+}
+
+$p = new Pimple\Container();
+$p->register(new Foo, array(42 => 'bar'));
+
+var_dump($p[42]);
+--EXPECTF--
+object(Pimple\Container)#1 (0) {
+}
+string(3) "bar" \ No newline at end of file
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/019.phpt b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/019.phpt
new file mode 100644
index 0000000..5f7fec5
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/019.phpt
@@ -0,0 +1,18 @@
+--TEST--
+Test register() returns static and is a fluent interface
+--SKIPIF--
+<?php if (!extension_loaded("pimple")) print "skip"; ?>
+--FILE--
+<?php
+
+class Foo implements Pimple\ServiceProviderInterface
+{
+ public function register(Pimple\Container $p)
+ {
+ }
+}
+
+$p = new Pimple\Container();
+var_dump($p === $p->register(new Foo));
+--EXPECTF--
+bool(true)
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/bench.phpb b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/bench.phpb
new file mode 100644
index 0000000..ae5cfc7
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/bench.phpb
@@ -0,0 +1,51 @@
+<?php
+
+if (!class_exists('Pimple\Container')) {
+ require_once __DIR__ . '/../../../src/Pimple/Container.php';
+} else {
+ echo "pimple-c extension detected, using...\n\n";
+}
+
+$time = microtime(true);
+
+function foo() { }
+$factory = function () { };
+
+for ($i=0; $i<10000; $i++) {
+
+$p = new Pimple\Container;
+
+$p['foo'] = 'bar';
+
+if (!isset($p[3])) {
+ $p[3] = $p['foo'];
+ $p[] = 'bar';
+}
+
+$p[2] = 42;
+
+if (isset($p[2])) {
+ unset($p[2]);
+}
+
+$p[42] = $p['foo'];
+
+$p['cb'] = function($arg) { };
+
+$p[] = $p['cb'];
+
+echo $p['cb'];
+echo $p['cb'];
+echo $p['cb'];
+
+//$p->factory($factory);
+
+$p['factory'] = $factory;
+
+echo $p['factory'];
+echo $p['factory'];
+echo $p['factory'];
+
+}
+
+echo microtime(true) - $time;
diff --git a/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb
new file mode 100644
index 0000000..0848c20
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb
@@ -0,0 +1,25 @@
+<?php
+
+if (!class_exists('Pimple\Container')) {
+ require_once __DIR__ . '/../../../src/Pimple/Container.php';
+} else {
+ echo "pimple-c extension detected, using...\n\n";
+}
+
+$time = microtime(true);
+
+
+$service = function ($arg) { return "I'm a service"; };
+
+for ($i=0; $i<10000; $i++) {
+
+$p = new Pimple\Container;
+$p['my_service'] = $service;
+
+$a = $p['my_service'];
+$b = $p['my_service'];
+
+}
+
+echo microtime(true) - $time;
+?>
diff --git a/admin/survey/minify/vendor/pimple/pimple/phpunit.xml.dist b/admin/survey/minify/vendor/pimple/pimple/phpunit.xml.dist
new file mode 100644
index 0000000..b493529
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/phpunit.xml.dist
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.1/phpunit.xsd"
+ backupGlobals="false"
+ colors="true"
+ bootstrap="vendor/autoload.php"
+>
+ <testsuites>
+ <testsuite name="Pimple Test Suite">
+ <directory>./src/Pimple/Tests</directory>
+ </testsuite>
+ </testsuites>
+</phpunit>
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Container.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Container.php
new file mode 100644
index 0000000..40ebfb2
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Container.php
@@ -0,0 +1,298 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple;
+
+use Pimple\Exception\ExpectedInvokableException;
+use Pimple\Exception\FrozenServiceException;
+use Pimple\Exception\InvalidServiceIdentifierException;
+use Pimple\Exception\UnknownIdentifierException;
+
+/**
+ * Container main class.
+ *
+ * @author Fabien Potencier
+ */
+class Container implements \ArrayAccess
+{
+ private $values = array();
+ private $factories;
+ private $protected;
+ private $frozen = array();
+ private $raw = array();
+ private $keys = array();
+
+ /**
+ * Instantiates the container.
+ *
+ * Objects and parameters can be passed as argument to the constructor.
+ *
+ * @param array $values The parameters or objects
+ */
+ public function __construct(array $values = array())
+ {
+ $this->factories = new \SplObjectStorage();
+ $this->protected = new \SplObjectStorage();
+
+ foreach ($values as $key => $value) {
+ $this->offsetSet($key, $value);
+ }
+ }
+
+ /**
+ * Sets a parameter or an object.
+ *
+ * Objects must be defined as Closures.
+ *
+ * Allowing any PHP callable leads to difficult to debug problems
+ * as function names (strings) are callable (creating a function with
+ * the same name as an existing parameter would break your container).
+ *
+ * @param string $id The unique identifier for the parameter or object
+ * @param mixed $value The value of the parameter or a closure to define an object
+ *
+ * @throws FrozenServiceException Prevent override of a frozen service
+ */
+ public function offsetSet($id, $value)
+ {
+ if (isset($this->frozen[$id])) {
+ throw new FrozenServiceException($id);
+ }
+
+ $this->values[$id] = $value;
+ $this->keys[$id] = true;
+ }
+
+ /**
+ * Gets a parameter or an object.
+ *
+ * @param string $id The unique identifier for the parameter or object
+ *
+ * @return mixed The value of the parameter or an object
+ *
+ * @throws UnknownIdentifierException If the identifier is not defined
+ */
+ public function offsetGet($id)
+ {
+ if (!isset($this->keys[$id])) {
+ throw new UnknownIdentifierException($id);
+ }
+
+ if (
+ isset($this->raw[$id])
+ || !\is_object($this->values[$id])
+ || isset($this->protected[$this->values[$id]])
+ || !\method_exists($this->values[$id], '__invoke')
+ ) {
+ return $this->values[$id];
+ }
+
+ if (isset($this->factories[$this->values[$id]])) {
+ return $this->values[$id]($this);
+ }
+
+ $raw = $this->values[$id];
+ $val = $this->values[$id] = $raw($this);
+ $this->raw[$id] = $raw;
+
+ $this->frozen[$id] = true;
+
+ return $val;
+ }
+
+ /**
+ * Checks if a parameter or an object is set.
+ *
+ * @param string $id The unique identifier for the parameter or object
+ *
+ * @return bool
+ */
+ public function offsetExists($id)
+ {
+ return isset($this->keys[$id]);
+ }
+
+ /**
+ * Unsets a parameter or an object.
+ *
+ * @param string $id The unique identifier for the parameter or object
+ */
+ public function offsetUnset($id)
+ {
+ if (isset($this->keys[$id])) {
+ if (\is_object($this->values[$id])) {
+ unset($this->factories[$this->values[$id]], $this->protected[$this->values[$id]]);
+ }
+
+ unset($this->values[$id], $this->frozen[$id], $this->raw[$id], $this->keys[$id]);
+ }
+ }
+
+ /**
+ * Marks a callable as being a factory service.
+ *
+ * @param callable $callable A service definition to be used as a factory
+ *
+ * @return callable The passed callable
+ *
+ * @throws ExpectedInvokableException Service definition has to be a closure or an invokable object
+ */
+ public function factory($callable)
+ {
+ if (!\method_exists($callable, '__invoke')) {
+ throw new ExpectedInvokableException('Service definition is not a Closure or invokable object.');
+ }
+
+ $this->factories->attach($callable);
+
+ return $callable;
+ }
+
+ /**
+ * Protects a callable from being interpreted as a service.
+ *
+ * This is useful when you want to store a callable as a parameter.
+ *
+ * @param callable $callable A callable to protect from being evaluated
+ *
+ * @return callable The passed callable
+ *
+ * @throws ExpectedInvokableException Service definition has to be a closure or an invokable object
+ */
+ public function protect($callable)
+ {
+ if (!\method_exists($callable, '__invoke')) {
+ throw new ExpectedInvokableException('Callable is not a Closure or invokable object.');
+ }
+
+ $this->protected->attach($callable);
+
+ return $callable;
+ }
+
+ /**
+ * Gets a parameter or the closure defining an object.
+ *
+ * @param string $id The unique identifier for the parameter or object
+ *
+ * @return mixed The value of the parameter or the closure defining an object
+ *
+ * @throws UnknownIdentifierException If the identifier is not defined
+ */
+ public function raw($id)
+ {
+ if (!isset($this->keys[$id])) {
+ throw new UnknownIdentifierException($id);
+ }
+
+ if (isset($this->raw[$id])) {
+ return $this->raw[$id];
+ }
+
+ return $this->values[$id];
+ }
+
+ /**
+ * Extends an object definition.
+ *
+ * Useful when you want to extend an existing object definition,
+ * without necessarily loading that object.
+ *
+ * @param string $id The unique identifier for the object
+ * @param callable $callable A service definition to extend the original
+ *
+ * @return callable The wrapped callable
+ *
+ * @throws UnknownIdentifierException If the identifier is not defined
+ * @throws FrozenServiceException If the service is frozen
+ * @throws InvalidServiceIdentifierException If the identifier belongs to a parameter
+ * @throws ExpectedInvokableException If the extension callable is not a closure or an invokable object
+ */
+ public function extend($id, $callable)
+ {
+ if (!isset($this->keys[$id])) {
+ throw new UnknownIdentifierException($id);
+ }
+
+ if (isset($this->frozen[$id])) {
+ throw new FrozenServiceException($id);
+ }
+
+ if (!\is_object($this->values[$id]) || !\method_exists($this->values[$id], '__invoke')) {
+ throw new InvalidServiceIdentifierException($id);
+ }
+
+ if (isset($this->protected[$this->values[$id]])) {
+ @\trigger_error(\sprintf('How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "%s" should be protected?', $id), \E_USER_DEPRECATED);
+ }
+
+ if (!\is_object($callable) || !\method_exists($callable, '__invoke')) {
+ throw new ExpectedInvokableException('Extension service definition is not a Closure or invokable object.');
+ }
+
+ $factory = $this->values[$id];
+
+ $extended = function ($c) use ($callable, $factory) {
+ return $callable($factory($c), $c);
+ };
+
+ if (isset($this->factories[$factory])) {
+ $this->factories->detach($factory);
+ $this->factories->attach($extended);
+ }
+
+ return $this[$id] = $extended;
+ }
+
+ /**
+ * Returns all defined value names.
+ *
+ * @return array An array of value names
+ */
+ public function keys()
+ {
+ return \array_keys($this->values);
+ }
+
+ /**
+ * Registers a service provider.
+ *
+ * @param ServiceProviderInterface $provider A ServiceProviderInterface instance
+ * @param array $values An array of values that customizes the provider
+ *
+ * @return static
+ */
+ public function register(ServiceProviderInterface $provider, array $values = array())
+ {
+ $provider->register($this);
+
+ foreach ($values as $key => $value) {
+ $this[$key] = $value;
+ }
+
+ return $this;
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php
new file mode 100644
index 0000000..c09bc1e
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/ExpectedInvokableException.php
@@ -0,0 +1,38 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Exception;
+
+use Psr\Container\ContainerExceptionInterface;
+
+/**
+ * A closure or invokable object was expected.
+ *
+ * @author Pascal Luna <skalpa@zetareticuli.org>
+ */
+class ExpectedInvokableException extends \InvalidArgumentException implements ContainerExceptionInterface
+{
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php
new file mode 100644
index 0000000..a6989c1
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/FrozenServiceException.php
@@ -0,0 +1,45 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Exception;
+
+use Psr\Container\ContainerExceptionInterface;
+
+/**
+ * An attempt to modify a frozen service was made.
+ *
+ * @author Pascal Luna <skalpa@zetareticuli.org>
+ */
+class FrozenServiceException extends \RuntimeException implements ContainerExceptionInterface
+{
+ /**
+ * @param string $id Identifier of the frozen service
+ */
+ public function __construct($id)
+ {
+ parent::__construct(\sprintf('Cannot override frozen service "%s".', $id));
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php
new file mode 100644
index 0000000..a3ad813
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/InvalidServiceIdentifierException.php
@@ -0,0 +1,45 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Exception;
+
+use Psr\Container\NotFoundExceptionInterface;
+
+/**
+ * An attempt to perform an operation that requires a service identifier was made.
+ *
+ * @author Pascal Luna <skalpa@zetareticuli.org>
+ */
+class InvalidServiceIdentifierException extends \InvalidArgumentException implements NotFoundExceptionInterface
+{
+ /**
+ * @param string $id The invalid identifier
+ */
+ public function __construct($id)
+ {
+ parent::__construct(\sprintf('Identifier "%s" does not contain an object definition.', $id));
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php
new file mode 100644
index 0000000..5649746
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Exception/UnknownIdentifierException.php
@@ -0,0 +1,45 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Exception;
+
+use Psr\Container\NotFoundExceptionInterface;
+
+/**
+ * The identifier of a valid service or parameter was expected.
+ *
+ * @author Pascal Luna <skalpa@zetareticuli.org>
+ */
+class UnknownIdentifierException extends \InvalidArgumentException implements NotFoundExceptionInterface
+{
+ /**
+ * @param string $id The unknown identifier
+ */
+ public function __construct($id)
+ {
+ parent::__construct(\sprintf('Identifier "%s" is not defined.', $id));
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Psr11/Container.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Psr11/Container.php
new file mode 100644
index 0000000..ac2f50a
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Psr11/Container.php
@@ -0,0 +1,55 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009-2017 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Psr11;
+
+use Pimple\Container as PimpleContainer;
+use Psr\Container\ContainerInterface;
+
+/**
+ * PSR-11 compliant wrapper.
+ *
+ * @author Pascal Luna <skalpa@zetareticuli.org>
+ */
+final class Container implements ContainerInterface
+{
+ private $pimple;
+
+ public function __construct(PimpleContainer $pimple)
+ {
+ $this->pimple = $pimple;
+ }
+
+ public function get($id)
+ {
+ return $this->pimple[$id];
+ }
+
+ public function has($id)
+ {
+ return isset($this->pimple[$id]);
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
new file mode 100644
index 0000000..413a12d
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Psr11/ServiceLocator.php
@@ -0,0 +1,75 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Psr11;
+
+use Pimple\Container as PimpleContainer;
+use Pimple\Exception\UnknownIdentifierException;
+use Psr\Container\ContainerInterface;
+
+/**
+ * Pimple PSR-11 service locator.
+ *
+ * @author Pascal Luna <skalpa@zetareticuli.org>
+ */
+class ServiceLocator implements ContainerInterface
+{
+ private $container;
+ private $aliases = array();
+
+ /**
+ * @param PimpleContainer $container The Container instance used to locate services
+ * @param array $ids Array of service ids that can be located. String keys can be used to define aliases
+ */
+ public function __construct(PimpleContainer $container, array $ids)
+ {
+ $this->container = $container;
+
+ foreach ($ids as $key => $id) {
+ $this->aliases[\is_int($key) ? $id : $key] = $id;
+ }
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function get($id)
+ {
+ if (!isset($this->aliases[$id])) {
+ throw new UnknownIdentifierException($id);
+ }
+
+ return $this->container[$this->aliases[$id]];
+ }
+
+ /**
+ * {@inheritdoc}
+ */
+ public function has($id)
+ {
+ return isset($this->aliases[$id]) && isset($this->container[$this->aliases[$id]]);
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/ServiceIterator.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/ServiceIterator.php
new file mode 100644
index 0000000..28e8bf6
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/ServiceIterator.php
@@ -0,0 +1,69 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple;
+
+/**
+ * Lazy service iterator.
+ *
+ * @author Pascal Luna <skalpa@zetareticuli.org>
+ */
+final class ServiceIterator implements \Iterator
+{
+ private $container;
+ private $ids;
+
+ public function __construct(Container $container, array $ids)
+ {
+ $this->container = $container;
+ $this->ids = $ids;
+ }
+
+ public function rewind()
+ {
+ \reset($this->ids);
+ }
+
+ public function current()
+ {
+ return $this->container[\current($this->ids)];
+ }
+
+ public function key()
+ {
+ return \current($this->ids);
+ }
+
+ public function next()
+ {
+ \next($this->ids);
+ }
+
+ public function valid()
+ {
+ return null !== \key($this->ids);
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php
new file mode 100644
index 0000000..94d422b
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php
@@ -0,0 +1,46 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple;
+
+/**
+ * Pimple service provider interface.
+ *
+ * @author Fabien Potencier
+ * @author Dominik Zogg
+ */
+interface ServiceProviderInterface
+{
+ /**
+ * Registers services on the given container.
+ *
+ * This method should only be used to configure services and parameters.
+ * It should not get services.
+ *
+ * @param Container $pimple A container instance
+ */
+ public function register(Container $pimple);
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php
new file mode 100644
index 0000000..9297d7d
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php
@@ -0,0 +1,38 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Tests\Fixtures;
+
+class Invokable
+{
+ public function __invoke($value = null)
+ {
+ $service = new Service();
+ $service->value = $value;
+
+ return $service;
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php
new file mode 100644
index 0000000..6844805
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php
@@ -0,0 +1,34 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Tests\Fixtures;
+
+class NonInvokable
+{
+ public function __call($a, $b)
+ {
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php
new file mode 100644
index 0000000..576a9bd
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php
@@ -0,0 +1,54 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Tests\Fixtures;
+
+use Pimple\Container;
+use Pimple\ServiceProviderInterface;
+
+class PimpleServiceProvider implements ServiceProviderInterface
+{
+ /**
+ * Registers services on the given container.
+ *
+ * This method should only be used to configure services and parameters.
+ * It should not get services.
+ *
+ * @param Container $pimple An Container instance
+ */
+ public function register(Container $pimple)
+ {
+ $pimple['param'] = 'value';
+
+ $pimple['service'] = function () {
+ return new Service();
+ };
+
+ $pimple['factory'] = $pimple->factory(function () {
+ return new Service();
+ });
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php
new file mode 100644
index 0000000..2d782b1
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Tests\Fixtures;
+
+/**
+ * @author Igor Wiedler <igor@wiedler.ch>
+ */
+class Service
+{
+ public $value;
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
new file mode 100644
index 0000000..f911e2c
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php
@@ -0,0 +1,76 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Tests;
+
+use Pimple\Container;
+
+/**
+ * @author Dominik Zogg <dominik.zogg@gmail.com>
+ */
+class PimpleServiceProviderInterfaceTest extends \PHPUnit_Framework_TestCase
+{
+ public function testProvider()
+ {
+ $pimple = new Container();
+
+ $pimpleServiceProvider = new Fixtures\PimpleServiceProvider();
+ $pimpleServiceProvider->register($pimple);
+
+ $this->assertEquals('value', $pimple['param']);
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
+
+ $serviceOne = $pimple['factory'];
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
+
+ $serviceTwo = $pimple['factory'];
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
+
+ $this->assertNotSame($serviceOne, $serviceTwo);
+ }
+
+ public function testProviderWithRegisterMethod()
+ {
+ $pimple = new Container();
+
+ $pimple->register(new Fixtures\PimpleServiceProvider(), array(
+ 'anotherParameter' => 'anotherValue',
+ ));
+
+ $this->assertEquals('value', $pimple['param']);
+ $this->assertEquals('anotherValue', $pimple['anotherParameter']);
+
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
+
+ $serviceOne = $pimple['factory'];
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
+
+ $serviceTwo = $pimple['factory'];
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
+
+ $this->assertNotSame($serviceOne, $serviceTwo);
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
new file mode 100644
index 0000000..6f866c9
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php
@@ -0,0 +1,589 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Tests;
+
+use Pimple\Container;
+
+/**
+ * @author Igor Wiedler <igor@wiedler.ch>
+ */
+class PimpleTest extends \PHPUnit_Framework_TestCase
+{
+ public function testWithString()
+ {
+ $pimple = new Container();
+ $pimple['param'] = 'value';
+
+ $this->assertEquals('value', $pimple['param']);
+ }
+
+ public function testWithClosure()
+ {
+ $pimple = new Container();
+ $pimple['service'] = function () {
+ return new Fixtures\Service();
+ };
+
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['service']);
+ }
+
+ public function testServicesShouldBeDifferent()
+ {
+ $pimple = new Container();
+ $pimple['service'] = $pimple->factory(function () {
+ return new Fixtures\Service();
+ });
+
+ $serviceOne = $pimple['service'];
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
+
+ $serviceTwo = $pimple['service'];
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
+
+ $this->assertNotSame($serviceOne, $serviceTwo);
+ }
+
+ public function testShouldPassContainerAsParameter()
+ {
+ $pimple = new Container();
+ $pimple['service'] = function () {
+ return new Fixtures\Service();
+ };
+ $pimple['container'] = function ($container) {
+ return $container;
+ };
+
+ $this->assertNotSame($pimple, $pimple['service']);
+ $this->assertSame($pimple, $pimple['container']);
+ }
+
+ public function testIsset()
+ {
+ $pimple = new Container();
+ $pimple['param'] = 'value';
+ $pimple['service'] = function () {
+ return new Fixtures\Service();
+ };
+
+ $pimple['null'] = null;
+
+ $this->assertTrue(isset($pimple['param']));
+ $this->assertTrue(isset($pimple['service']));
+ $this->assertTrue(isset($pimple['null']));
+ $this->assertFalse(isset($pimple['non_existent']));
+ }
+
+ public function testConstructorInjection()
+ {
+ $params = array('param' => 'value');
+ $pimple = new Container($params);
+
+ $this->assertSame($params['param'], $pimple['param']);
+ }
+
+ /**
+ * @expectedException \Pimple\Exception\UnknownIdentifierException
+ * @expectedExceptionMessage Identifier "foo" is not defined.
+ */
+ public function testOffsetGetValidatesKeyIsPresent()
+ {
+ $pimple = new Container();
+ echo $pimple['foo'];
+ }
+
+ /**
+ * @group legacy
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Identifier "foo" is not defined.
+ */
+ public function testLegacyOffsetGetValidatesKeyIsPresent()
+ {
+ $pimple = new Container();
+ echo $pimple['foo'];
+ }
+
+ public function testOffsetGetHonorsNullValues()
+ {
+ $pimple = new Container();
+ $pimple['foo'] = null;
+ $this->assertNull($pimple['foo']);
+ }
+
+ public function testUnset()
+ {
+ $pimple = new Container();
+ $pimple['param'] = 'value';
+ $pimple['service'] = function () {
+ return new Fixtures\Service();
+ };
+
+ unset($pimple['param'], $pimple['service']);
+ $this->assertFalse(isset($pimple['param']));
+ $this->assertFalse(isset($pimple['service']));
+ }
+
+ /**
+ * @dataProvider serviceDefinitionProvider
+ */
+ public function testShare($service)
+ {
+ $pimple = new Container();
+ $pimple['shared_service'] = $service;
+
+ $serviceOne = $pimple['shared_service'];
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
+
+ $serviceTwo = $pimple['shared_service'];
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
+
+ $this->assertSame($serviceOne, $serviceTwo);
+ }
+
+ /**
+ * @dataProvider serviceDefinitionProvider
+ */
+ public function testProtect($service)
+ {
+ $pimple = new Container();
+ $pimple['protected'] = $pimple->protect($service);
+
+ $this->assertSame($service, $pimple['protected']);
+ }
+
+ public function testGlobalFunctionNameAsParameterValue()
+ {
+ $pimple = new Container();
+ $pimple['global_function'] = 'strlen';
+ $this->assertSame('strlen', $pimple['global_function']);
+ }
+
+ public function testRaw()
+ {
+ $pimple = new Container();
+ $pimple['service'] = $definition = $pimple->factory(function () { return 'foo'; });
+ $this->assertSame($definition, $pimple->raw('service'));
+ }
+
+ public function testRawHonorsNullValues()
+ {
+ $pimple = new Container();
+ $pimple['foo'] = null;
+ $this->assertNull($pimple->raw('foo'));
+ }
+
+ public function testFluentRegister()
+ {
+ $pimple = new Container();
+ $this->assertSame($pimple, $pimple->register($this->getMockBuilder('Pimple\ServiceProviderInterface')->getMock()));
+ }
+
+ /**
+ * @expectedException \Pimple\Exception\UnknownIdentifierException
+ * @expectedExceptionMessage Identifier "foo" is not defined.
+ */
+ public function testRawValidatesKeyIsPresent()
+ {
+ $pimple = new Container();
+ $pimple->raw('foo');
+ }
+
+ /**
+ * @group legacy
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Identifier "foo" is not defined.
+ */
+ public function testLegacyRawValidatesKeyIsPresent()
+ {
+ $pimple = new Container();
+ $pimple->raw('foo');
+ }
+
+ /**
+ * @dataProvider serviceDefinitionProvider
+ */
+ public function testExtend($service)
+ {
+ $pimple = new Container();
+ $pimple['shared_service'] = function () {
+ return new Fixtures\Service();
+ };
+ $pimple['factory_service'] = $pimple->factory(function () {
+ return new Fixtures\Service();
+ });
+
+ $pimple->extend('shared_service', $service);
+ $serviceOne = $pimple['shared_service'];
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
+ $serviceTwo = $pimple['shared_service'];
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
+ $this->assertSame($serviceOne, $serviceTwo);
+ $this->assertSame($serviceOne->value, $serviceTwo->value);
+
+ $pimple->extend('factory_service', $service);
+ $serviceOne = $pimple['factory_service'];
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceOne);
+ $serviceTwo = $pimple['factory_service'];
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $serviceTwo);
+ $this->assertNotSame($serviceOne, $serviceTwo);
+ $this->assertNotSame($serviceOne->value, $serviceTwo->value);
+ }
+
+ public function testExtendDoesNotLeakWithFactories()
+ {
+ if (extension_loaded('pimple')) {
+ $this->markTestSkipped('Pimple extension does not support this test');
+ }
+ $pimple = new Container();
+
+ $pimple['foo'] = $pimple->factory(function () { return; });
+ $pimple['foo'] = $pimple->extend('foo', function ($foo, $pimple) { return; });
+ unset($pimple['foo']);
+
+ $p = new \ReflectionProperty($pimple, 'values');
+ $p->setAccessible(true);
+ $this->assertEmpty($p->getValue($pimple));
+
+ $p = new \ReflectionProperty($pimple, 'factories');
+ $p->setAccessible(true);
+ $this->assertCount(0, $p->getValue($pimple));
+ }
+
+ /**
+ * @expectedException \Pimple\Exception\UnknownIdentifierException
+ * @expectedExceptionMessage Identifier "foo" is not defined.
+ */
+ public function testExtendValidatesKeyIsPresent()
+ {
+ $pimple = new Container();
+ $pimple->extend('foo', function () {});
+ }
+
+ /**
+ * @group legacy
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Identifier "foo" is not defined.
+ */
+ public function testLegacyExtendValidatesKeyIsPresent()
+ {
+ $pimple = new Container();
+ $pimple->extend('foo', function () {});
+ }
+
+ public function testKeys()
+ {
+ $pimple = new Container();
+ $pimple['foo'] = 123;
+ $pimple['bar'] = 123;
+
+ $this->assertEquals(array('foo', 'bar'), $pimple->keys());
+ }
+
+ /** @test */
+ public function settingAnInvokableObjectShouldTreatItAsFactory()
+ {
+ $pimple = new Container();
+ $pimple['invokable'] = new Fixtures\Invokable();
+
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\Service', $pimple['invokable']);
+ }
+
+ /** @test */
+ public function settingNonInvokableObjectShouldTreatItAsParameter()
+ {
+ $pimple = new Container();
+ $pimple['non_invokable'] = new Fixtures\NonInvokable();
+
+ $this->assertInstanceOf('Pimple\Tests\Fixtures\NonInvokable', $pimple['non_invokable']);
+ }
+
+ /**
+ * @dataProvider badServiceDefinitionProvider
+ * @expectedException \Pimple\Exception\ExpectedInvokableException
+ * @expectedExceptionMessage Service definition is not a Closure or invokable object.
+ */
+ public function testFactoryFailsForInvalidServiceDefinitions($service)
+ {
+ $pimple = new Container();
+ $pimple->factory($service);
+ }
+
+ /**
+ * @group legacy
+ * @dataProvider badServiceDefinitionProvider
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Service definition is not a Closure or invokable object.
+ */
+ public function testLegacyFactoryFailsForInvalidServiceDefinitions($service)
+ {
+ $pimple = new Container();
+ $pimple->factory($service);
+ }
+
+ /**
+ * @dataProvider badServiceDefinitionProvider
+ * @expectedException \Pimple\Exception\ExpectedInvokableException
+ * @expectedExceptionMessage Callable is not a Closure or invokable object.
+ */
+ public function testProtectFailsForInvalidServiceDefinitions($service)
+ {
+ $pimple = new Container();
+ $pimple->protect($service);
+ }
+
+ /**
+ * @group legacy
+ * @dataProvider badServiceDefinitionProvider
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Callable is not a Closure or invokable object.
+ */
+ public function testLegacyProtectFailsForInvalidServiceDefinitions($service)
+ {
+ $pimple = new Container();
+ $pimple->protect($service);
+ }
+
+ /**
+ * @dataProvider badServiceDefinitionProvider
+ * @expectedException \Pimple\Exception\InvalidServiceIdentifierException
+ * @expectedExceptionMessage Identifier "foo" does not contain an object definition.
+ */
+ public function testExtendFailsForKeysNotContainingServiceDefinitions($service)
+ {
+ $pimple = new Container();
+ $pimple['foo'] = $service;
+ $pimple->extend('foo', function () {});
+ }
+
+ /**
+ * @group legacy
+ * @dataProvider badServiceDefinitionProvider
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Identifier "foo" does not contain an object definition.
+ */
+ public function testLegacyExtendFailsForKeysNotContainingServiceDefinitions($service)
+ {
+ $pimple = new Container();
+ $pimple['foo'] = $service;
+ $pimple->extend('foo', function () {});
+ }
+
+ /**
+ * @group legacy
+ * @expectedDeprecation How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "foo" should be protected?
+ */
+ public function testExtendingProtectedClosureDeprecation()
+ {
+ $pimple = new Container();
+ $pimple['foo'] = $pimple->protect(function () {
+ return 'bar';
+ });
+
+ $pimple->extend('foo', function ($value) {
+ return $value.'-baz';
+ });
+
+ $this->assertSame('bar-baz', $pimple['foo']);
+ }
+
+ /**
+ * @dataProvider badServiceDefinitionProvider
+ * @expectedException \Pimple\Exception\ExpectedInvokableException
+ * @expectedExceptionMessage Extension service definition is not a Closure or invokable object.
+ */
+ public function testExtendFailsForInvalidServiceDefinitions($service)
+ {
+ $pimple = new Container();
+ $pimple['foo'] = function () {};
+ $pimple->extend('foo', $service);
+ }
+
+ /**
+ * @group legacy
+ * @dataProvider badServiceDefinitionProvider
+ * @expectedException \InvalidArgumentException
+ * @expectedExceptionMessage Extension service definition is not a Closure or invokable object.
+ */
+ public function testLegacyExtendFailsForInvalidServiceDefinitions($service)
+ {
+ $pimple = new Container();
+ $pimple['foo'] = function () {};
+ $pimple->extend('foo', $service);
+ }
+
+ /**
+ * @expectedException \Pimple\Exception\FrozenServiceException
+ * @expectedExceptionMessage Cannot override frozen service "foo".
+ */
+ public function testExtendFailsIfFrozenServiceIsNonInvokable()
+ {
+ $pimple = new Container();
+ $pimple['foo'] = function () {
+ return new Fixtures\NonInvokable();
+ };
+ $foo = $pimple['foo'];
+
+ $pimple->extend('foo', function () {});
+ }
+
+ /**
+ * @expectedException \Pimple\Exception\FrozenServiceException
+ * @expectedExceptionMessage Cannot override frozen service "foo".
+ */
+ public function testExtendFailsIfFrozenServiceIsInvokable()
+ {
+ $pimple = new Container();
+ $pimple['foo'] = function () {
+ return new Fixtures\Invokable();
+ };
+ $foo = $pimple['foo'];
+
+ $pimple->extend('foo', function () {});
+ }
+
+ /**
+ * Provider for invalid service definitions.
+ */
+ public function badServiceDefinitionProvider()
+ {
+ return array(
+ array(123),
+ array(new Fixtures\NonInvokable()),
+ );
+ }
+
+ /**
+ * Provider for service definitions.
+ */
+ public function serviceDefinitionProvider()
+ {
+ return array(
+ array(function ($value) {
+ $service = new Fixtures\Service();
+ $service->value = $value;
+
+ return $service;
+ }),
+ array(new Fixtures\Invokable()),
+ );
+ }
+
+ public function testDefiningNewServiceAfterFreeze()
+ {
+ $pimple = new Container();
+ $pimple['foo'] = function () {
+ return 'foo';
+ };
+ $foo = $pimple['foo'];
+
+ $pimple['bar'] = function () {
+ return 'bar';
+ };
+ $this->assertSame('bar', $pimple['bar']);
+ }
+
+ /**
+ * @expectedException \Pimple\Exception\FrozenServiceException
+ * @expectedExceptionMessage Cannot override frozen service "foo".
+ */
+ public function testOverridingServiceAfterFreeze()
+ {
+ $pimple = new Container();
+ $pimple['foo'] = function () {
+ return 'foo';
+ };
+ $foo = $pimple['foo'];
+
+ $pimple['foo'] = function () {
+ return 'bar';
+ };
+ }
+
+ /**
+ * @group legacy
+ * @expectedException \RuntimeException
+ * @expectedExceptionMessage Cannot override frozen service "foo".
+ */
+ public function testLegacyOverridingServiceAfterFreeze()
+ {
+ $pimple = new Container();
+ $pimple['foo'] = function () {
+ return 'foo';
+ };
+ $foo = $pimple['foo'];
+
+ $pimple['foo'] = function () {
+ return 'bar';
+ };
+ }
+
+ public function testRemovingServiceAfterFreeze()
+ {
+ $pimple = new Container();
+ $pimple['foo'] = function () {
+ return 'foo';
+ };
+ $foo = $pimple['foo'];
+
+ unset($pimple['foo']);
+ $pimple['foo'] = function () {
+ return 'bar';
+ };
+ $this->assertSame('bar', $pimple['foo']);
+ }
+
+ public function testExtendingService()
+ {
+ $pimple = new Container();
+ $pimple['foo'] = function () {
+ return 'foo';
+ };
+ $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) {
+ return "$foo.bar";
+ });
+ $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) {
+ return "$foo.baz";
+ });
+ $this->assertSame('foo.bar.baz', $pimple['foo']);
+ }
+
+ public function testExtendingServiceAfterOtherServiceFreeze()
+ {
+ $pimple = new Container();
+ $pimple['foo'] = function () {
+ return 'foo';
+ };
+ $pimple['bar'] = function () {
+ return 'bar';
+ };
+ $foo = $pimple['foo'];
+
+ $pimple['bar'] = $pimple->extend('bar', function ($bar, $app) {
+ return "$bar.baz";
+ });
+ $this->assertSame('bar.baz', $pimple['bar']);
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php
new file mode 100644
index 0000000..da52688
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ContainerTest.php
@@ -0,0 +1,77 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009-2017 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Tests\Psr11;
+
+use PHPUnit\Framework\TestCase;
+use Pimple\Container;
+use Pimple\Psr11\Container as PsrContainer;
+use Pimple\Tests\Fixtures\Service;
+
+class ContainerTest extends TestCase
+{
+ public function testGetReturnsExistingService()
+ {
+ $pimple = new Container();
+ $pimple['service'] = function () {
+ return new Service();
+ };
+ $psr = new PsrContainer($pimple);
+
+ $this->assertSame($pimple['service'], $psr->get('service'));
+ }
+
+ /**
+ * @expectedException \Psr\Container\NotFoundExceptionInterface
+ * @expectedExceptionMessage Identifier "service" is not defined.
+ */
+ public function testGetThrowsExceptionIfServiceIsNotFound()
+ {
+ $pimple = new Container();
+ $psr = new PsrContainer($pimple);
+
+ $psr->get('service');
+ }
+
+ public function testHasReturnsTrueIfServiceExists()
+ {
+ $pimple = new Container();
+ $pimple['service'] = function () {
+ return new Service();
+ };
+ $psr = new PsrContainer($pimple);
+
+ $this->assertTrue($psr->has('service'));
+ }
+
+ public function testHasReturnsFalseIfServiceDoesNotExist()
+ {
+ $pimple = new Container();
+ $psr = new PsrContainer($pimple);
+
+ $this->assertFalse($psr->has('service'));
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php
new file mode 100644
index 0000000..61fea78
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/Psr11/ServiceLocatorTest.php
@@ -0,0 +1,134 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Tests\Psr11;
+
+use PHPUnit\Framework\TestCase;
+use Pimple\Container;
+use Pimple\Psr11\ServiceLocator;
+use Pimple\Tests\Fixtures;
+
+/**
+ * ServiceLocator test case.
+ *
+ * @author Pascal Luna <skalpa@zetareticuli.org>
+ */
+class ServiceLocatorTest extends TestCase
+{
+ public function testCanAccessServices()
+ {
+ $pimple = new Container();
+ $pimple['service'] = function () {
+ return new Fixtures\Service();
+ };
+ $locator = new ServiceLocator($pimple, array('service'));
+
+ $this->assertSame($pimple['service'], $locator->get('service'));
+ }
+
+ public function testCanAccessAliasedServices()
+ {
+ $pimple = new Container();
+ $pimple['service'] = function () {
+ return new Fixtures\Service();
+ };
+ $locator = new ServiceLocator($pimple, array('alias' => 'service'));
+
+ $this->assertSame($pimple['service'], $locator->get('alias'));
+ }
+
+ /**
+ * @expectedException \Pimple\Exception\UnknownIdentifierException
+ * @expectedExceptionMessage Identifier "service" is not defined.
+ */
+ public function testCannotAccessAliasedServiceUsingRealIdentifier()
+ {
+ $pimple = new Container();
+ $pimple['service'] = function () {
+ return new Fixtures\Service();
+ };
+ $locator = new ServiceLocator($pimple, array('alias' => 'service'));
+
+ $service = $locator->get('service');
+ }
+
+ /**
+ * @expectedException \Pimple\Exception\UnknownIdentifierException
+ * @expectedExceptionMessage Identifier "foo" is not defined.
+ */
+ public function testGetValidatesServiceCanBeLocated()
+ {
+ $pimple = new Container();
+ $pimple['service'] = function () {
+ return new Fixtures\Service();
+ };
+ $locator = new ServiceLocator($pimple, array('alias' => 'service'));
+
+ $service = $locator->get('foo');
+ }
+
+ /**
+ * @expectedException \Pimple\Exception\UnknownIdentifierException
+ * @expectedExceptionMessage Identifier "invalid" is not defined.
+ */
+ public function testGetValidatesTargetServiceExists()
+ {
+ $pimple = new Container();
+ $pimple['service'] = function () {
+ return new Fixtures\Service();
+ };
+ $locator = new ServiceLocator($pimple, array('alias' => 'invalid'));
+
+ $service = $locator->get('alias');
+ }
+
+ public function testHasValidatesServiceCanBeLocated()
+ {
+ $pimple = new Container();
+ $pimple['service1'] = function () {
+ return new Fixtures\Service();
+ };
+ $pimple['service2'] = function () {
+ return new Fixtures\Service();
+ };
+ $locator = new ServiceLocator($pimple, array('service1'));
+
+ $this->assertTrue($locator->has('service1'));
+ $this->assertFalse($locator->has('service2'));
+ }
+
+ public function testHasChecksIfTargetServiceExists()
+ {
+ $pimple = new Container();
+ $pimple['service'] = function () {
+ return new Fixtures\Service();
+ };
+ $locator = new ServiceLocator($pimple, array('foo' => 'service', 'bar' => 'invalid'));
+
+ $this->assertTrue($locator->has('foo'));
+ $this->assertFalse($locator->has('bar'));
+ }
+}
diff --git a/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php
new file mode 100644
index 0000000..f798ed5
--- /dev/null
+++ b/admin/survey/minify/vendor/pimple/pimple/src/Pimple/Tests/ServiceIteratorTest.php
@@ -0,0 +1,52 @@
+<?php
+
+/*
+ * This file is part of Pimple.
+ *
+ * Copyright (c) 2009 Fabien Potencier
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is furnished
+ * to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+namespace Pimple\Tests;
+
+use PHPUnit\Framework\TestCase;
+use Pimple\Container;
+use Pimple\ServiceIterator;
+use Pimple\Tests\Fixtures\Service;
+
+class ServiceIteratorTest extends TestCase
+{
+ public function testIsIterable()
+ {
+ $pimple = new Container();
+ $pimple['service1'] = function () {
+ return new Service();
+ };
+ $pimple['service2'] = function () {
+ return new Service();
+ };
+ $pimple['service3'] = function () {
+ return new Service();
+ };
+ $iterator = new ServiceIterator($pimple, array('service1', 'service2'));
+
+ $this->assertSame(array('service1' => $pimple['service1'], 'service2' => $pimple['service2']), iterator_to_array($iterator));
+ }
+}
diff --git a/admin/survey/minify/vendor/psr/container/.gitignore b/admin/survey/minify/vendor/psr/container/.gitignore
new file mode 100644
index 0000000..a40d6f5
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/container/.gitignore
@@ -0,0 +1,3 @@
+composer.lock
+composer.phar
+/vendor/
diff --git a/admin/survey/minify/vendor/psr/container/LICENSE b/admin/survey/minify/vendor/psr/container/LICENSE
new file mode 100644
index 0000000..9fbca17
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/container/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2013-2016 container-interop
+Copyright (c) 2016 PHP Framework Interoperability Group
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+the Software, and to permit persons to whom the Software is furnished to do so,
+subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/admin/survey/minify/vendor/psr/container/README.md b/admin/survey/minify/vendor/psr/container/README.md
new file mode 100644
index 0000000..bbecc31
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/container/README.md
@@ -0,0 +1,5 @@
+# PSR Container
+
+This repository holds all interfaces/classes/traits related to [PSR-11](https://github.com/container-interop/fig-standards/blob/master/proposed/container.md).
+
+Note that this is not a container implementation of its own. See the specification for more details.
diff --git a/admin/survey/minify/vendor/psr/container/composer.json b/admin/survey/minify/vendor/psr/container/composer.json
new file mode 100644
index 0000000..d9dab68
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/container/composer.json
@@ -0,0 +1,27 @@
+{
+ "name": "psr/container",
+ "type": "library",
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "keywords": ["psr", "psr-11", "container", "container-interop", "container-interface"],
+ "homepage": "https://github.com/php-fig/container",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/psr/container/src/ContainerExceptionInterface.php b/admin/survey/minify/vendor/psr/container/src/ContainerExceptionInterface.php
new file mode 100644
index 0000000..30d09d9
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/container/src/ContainerExceptionInterface.php
@@ -0,0 +1,13 @@
+<?php
+/**
+ * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
+ */
+
+namespace Psr\Container;
+
+/**
+ * Base interface representing a generic exception in a container.
+ */
+interface ContainerExceptionInterface
+{
+}
diff --git a/admin/survey/minify/vendor/psr/container/src/ContainerInterface.php b/admin/survey/minify/vendor/psr/container/src/ContainerInterface.php
new file mode 100644
index 0000000..7483ff6
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/container/src/ContainerInterface.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
+ */
+
+namespace Psr\Container;
+
+/**
+ * Describes the interface of a container that exposes methods to read its entries.
+ */
+interface ContainerInterface
+{
+ /**
+ * Finds an entry of the container by its identifier and returns it.
+ *
+ * @param string $id Identifier of the entry to look for.
+ *
+ * @throws NotFoundExceptionInterface No entry was found for **this** identifier.
+ * @throws ContainerExceptionInterface Error while retrieving the entry.
+ *
+ * @return mixed Entry.
+ */
+ public function get($id);
+
+ /**
+ * Returns true if the container can return an entry for the given identifier.
+ * Returns false otherwise.
+ *
+ * `has($id)` returning true does not mean that `get($id)` will not throw an exception.
+ * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
+ *
+ * @param string $id Identifier of the entry to look for.
+ *
+ * @return bool
+ */
+ public function has($id);
+}
diff --git a/admin/survey/minify/vendor/psr/container/src/NotFoundExceptionInterface.php b/admin/survey/minify/vendor/psr/container/src/NotFoundExceptionInterface.php
new file mode 100644
index 0000000..1f88e74
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/container/src/NotFoundExceptionInterface.php
@@ -0,0 +1,13 @@
+<?php
+/**
+ * @license http://www.opensource.org/licenses/mit-license.php MIT (see the LICENSE file)
+ */
+
+namespace Psr\Container;
+
+/**
+ * No entry was found in the container.
+ */
+interface NotFoundExceptionInterface extends ContainerExceptionInterface
+{
+}
diff --git a/admin/survey/minify/vendor/psr/log/.gitignore b/admin/survey/minify/vendor/psr/log/.gitignore
new file mode 100644
index 0000000..9cbe7ba
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/log/.gitignore
@@ -0,0 +1 @@
+vendor
diff --git a/admin/survey/minify/vendor/psr/log/LICENSE b/admin/survey/minify/vendor/psr/log/LICENSE
new file mode 100644
index 0000000..8a71cf7
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/log/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2012 PHP Framework Interoperability Group
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/admin/survey/minify/vendor/psr/log/Psr/Log/AbstractLogger.php b/admin/survey/minify/vendor/psr/log/Psr/Log/AbstractLogger.php
new file mode 100644
index 0000000..e33e75a
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/log/Psr/Log/AbstractLogger.php
@@ -0,0 +1,128 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * This is a simple Logger implementation that other Loggers can inherit from.
+ *
+ * It simply delegates all log-level-specific methods to the `log` method to
+ * reduce boilerplate code that a simple Logger that does the same thing with
+ * messages regardless of the error level has to implement.
+ */
+abstract class AbstractLogger implements LoggerInterface
+{
+ /**
+ * System is unusable.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function emergency($message, array $context = array())
+ {
+ $this->log(LogLevel::EMERGENCY, $message, $context);
+ }
+
+ /**
+ * Action must be taken immediately.
+ *
+ * Example: Entire website down, database unavailable, etc. This should
+ * trigger the SMS alerts and wake you up.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function alert($message, array $context = array())
+ {
+ $this->log(LogLevel::ALERT, $message, $context);
+ }
+
+ /**
+ * Critical conditions.
+ *
+ * Example: Application component unavailable, unexpected exception.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function critical($message, array $context = array())
+ {
+ $this->log(LogLevel::CRITICAL, $message, $context);
+ }
+
+ /**
+ * Runtime errors that do not require immediate action but should typically
+ * be logged and monitored.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function error($message, array $context = array())
+ {
+ $this->log(LogLevel::ERROR, $message, $context);
+ }
+
+ /**
+ * Exceptional occurrences that are not errors.
+ *
+ * Example: Use of deprecated APIs, poor use of an API, undesirable things
+ * that are not necessarily wrong.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function warning($message, array $context = array())
+ {
+ $this->log(LogLevel::WARNING, $message, $context);
+ }
+
+ /**
+ * Normal but significant events.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function notice($message, array $context = array())
+ {
+ $this->log(LogLevel::NOTICE, $message, $context);
+ }
+
+ /**
+ * Interesting events.
+ *
+ * Example: User logs in, SQL logs.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function info($message, array $context = array())
+ {
+ $this->log(LogLevel::INFO, $message, $context);
+ }
+
+ /**
+ * Detailed debug information.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function debug($message, array $context = array())
+ {
+ $this->log(LogLevel::DEBUG, $message, $context);
+ }
+}
diff --git a/admin/survey/minify/vendor/psr/log/Psr/Log/InvalidArgumentException.php b/admin/survey/minify/vendor/psr/log/Psr/Log/InvalidArgumentException.php
new file mode 100644
index 0000000..8e76d23
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/log/Psr/Log/InvalidArgumentException.php
@@ -0,0 +1,7 @@
+<?php
+
+namespace Psr\Log;
+
+class InvalidArgumentException extends \InvalidArgumentException
+{
+}
diff --git a/admin/survey/minify/vendor/psr/log/Psr/Log/LogLevel.php b/admin/survey/minify/vendor/psr/log/Psr/Log/LogLevel.php
new file mode 100644
index 0000000..1c53d75
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/log/Psr/Log/LogLevel.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * Describes log levels.
+ */
+class LogLevel
+{
+ const EMERGENCY = 'emergency';
+ const ALERT = 'alert';
+ const CRITICAL = 'critical';
+ const ERROR = 'error';
+ const WARNING = 'warning';
+ const NOTICE = 'notice';
+ const INFO = 'info';
+ const DEBUG = 'debug';
+}
diff --git a/admin/survey/minify/vendor/psr/log/Psr/Log/LoggerAwareInterface.php b/admin/survey/minify/vendor/psr/log/Psr/Log/LoggerAwareInterface.php
new file mode 100644
index 0000000..01e1327
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/log/Psr/Log/LoggerAwareInterface.php
@@ -0,0 +1,18 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * Describes a logger-aware instance.
+ */
+interface LoggerAwareInterface
+{
+ /**
+ * Sets a logger instance on the object.
+ *
+ * @param LoggerInterface $logger
+ *
+ * @return void
+ */
+ public function setLogger(LoggerInterface $logger);
+}
diff --git a/admin/survey/minify/vendor/psr/log/Psr/Log/LoggerAwareTrait.php b/admin/survey/minify/vendor/psr/log/Psr/Log/LoggerAwareTrait.php
new file mode 100644
index 0000000..e619e61
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/log/Psr/Log/LoggerAwareTrait.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * Basic Implementation of LoggerAwareInterface.
+ */
+trait LoggerAwareTrait
+{
+ /**
+ * The logger instance.
+ *
+ * @var LoggerInterface
+ */
+ protected $logger;
+
+ /**
+ * Sets a logger.
+ *
+ * @param LoggerInterface $logger
+ */
+ public function setLogger(LoggerInterface $logger)
+ {
+ $this->logger = $logger;
+ }
+}
diff --git a/admin/survey/minify/vendor/psr/log/Psr/Log/LoggerInterface.php b/admin/survey/minify/vendor/psr/log/Psr/Log/LoggerInterface.php
new file mode 100644
index 0000000..ba0a694
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/log/Psr/Log/LoggerInterface.php
@@ -0,0 +1,123 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * Describes a logger instance.
+ *
+ * The message MUST be a string or object implementing __toString().
+ *
+ * The message MAY contain placeholders in the form: {foo} where foo
+ * will be replaced by the context data in key "foo".
+ *
+ * The context array can contain arbitrary data. The only assumption that
+ * can be made by implementors is that if an Exception instance is given
+ * to produce a stack trace, it MUST be in a key named "exception".
+ *
+ * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md
+ * for the full interface specification.
+ */
+interface LoggerInterface
+{
+ /**
+ * System is unusable.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function emergency($message, array $context = array());
+
+ /**
+ * Action must be taken immediately.
+ *
+ * Example: Entire website down, database unavailable, etc. This should
+ * trigger the SMS alerts and wake you up.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function alert($message, array $context = array());
+
+ /**
+ * Critical conditions.
+ *
+ * Example: Application component unavailable, unexpected exception.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function critical($message, array $context = array());
+
+ /**
+ * Runtime errors that do not require immediate action but should typically
+ * be logged and monitored.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function error($message, array $context = array());
+
+ /**
+ * Exceptional occurrences that are not errors.
+ *
+ * Example: Use of deprecated APIs, poor use of an API, undesirable things
+ * that are not necessarily wrong.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function warning($message, array $context = array());
+
+ /**
+ * Normal but significant events.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function notice($message, array $context = array());
+
+ /**
+ * Interesting events.
+ *
+ * Example: User logs in, SQL logs.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function info($message, array $context = array());
+
+ /**
+ * Detailed debug information.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function debug($message, array $context = array());
+
+ /**
+ * Logs with an arbitrary level.
+ *
+ * @param mixed $level
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function log($level, $message, array $context = array());
+}
diff --git a/admin/survey/minify/vendor/psr/log/Psr/Log/LoggerTrait.php b/admin/survey/minify/vendor/psr/log/Psr/Log/LoggerTrait.php
new file mode 100644
index 0000000..e9cdd13
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/log/Psr/Log/LoggerTrait.php
@@ -0,0 +1,140 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * This is a simple Logger trait that classes unable to extend AbstractLogger
+ * (because they extend another class, etc) can include.
+ *
+ * It simply delegates all log-level-specific methods to the `log` method to
+ * reduce boilerplate code that a simple Logger that does the same thing with
+ * messages regardless of the error level has to implement.
+ */
+trait LoggerTrait
+{
+ /**
+ * System is unusable.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function emergency($message, array $context = array())
+ {
+ $this->log(LogLevel::EMERGENCY, $message, $context);
+ }
+
+ /**
+ * Action must be taken immediately.
+ *
+ * Example: Entire website down, database unavailable, etc. This should
+ * trigger the SMS alerts and wake you up.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function alert($message, array $context = array())
+ {
+ $this->log(LogLevel::ALERT, $message, $context);
+ }
+
+ /**
+ * Critical conditions.
+ *
+ * Example: Application component unavailable, unexpected exception.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function critical($message, array $context = array())
+ {
+ $this->log(LogLevel::CRITICAL, $message, $context);
+ }
+
+ /**
+ * Runtime errors that do not require immediate action but should typically
+ * be logged and monitored.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function error($message, array $context = array())
+ {
+ $this->log(LogLevel::ERROR, $message, $context);
+ }
+
+ /**
+ * Exceptional occurrences that are not errors.
+ *
+ * Example: Use of deprecated APIs, poor use of an API, undesirable things
+ * that are not necessarily wrong.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function warning($message, array $context = array())
+ {
+ $this->log(LogLevel::WARNING, $message, $context);
+ }
+
+ /**
+ * Normal but significant events.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function notice($message, array $context = array())
+ {
+ $this->log(LogLevel::NOTICE, $message, $context);
+ }
+
+ /**
+ * Interesting events.
+ *
+ * Example: User logs in, SQL logs.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function info($message, array $context = array())
+ {
+ $this->log(LogLevel::INFO, $message, $context);
+ }
+
+ /**
+ * Detailed debug information.
+ *
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function debug($message, array $context = array())
+ {
+ $this->log(LogLevel::DEBUG, $message, $context);
+ }
+
+ /**
+ * Logs with an arbitrary level.
+ *
+ * @param mixed $level
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ abstract public function log($level, $message, array $context = array());
+}
diff --git a/admin/survey/minify/vendor/psr/log/Psr/Log/NullLogger.php b/admin/survey/minify/vendor/psr/log/Psr/Log/NullLogger.php
new file mode 100644
index 0000000..c3d0af7
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/log/Psr/Log/NullLogger.php
@@ -0,0 +1,28 @@
+<?php
+
+namespace Psr\Log;
+
+/**
+ * This Logger can be used to avoid conditional log calls.
+ *
+ * Logging should always be optional, and if no logger is provided to your
+ * library creating a NullLogger instance to have something to throw logs at
+ * is a good way to avoid littering your code with `if ($this->logger) { }`
+ * blocks.
+ */
+class NullLogger extends AbstractLogger
+{
+ /**
+ * Logs with an arbitrary level.
+ *
+ * @param mixed $level
+ * @param string $message
+ * @param array $context
+ *
+ * @return void
+ */
+ public function log($level, $message, array $context = array())
+ {
+ // noop
+ }
+}
diff --git a/admin/survey/minify/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php b/admin/survey/minify/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
new file mode 100644
index 0000000..1a03880
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/log/Psr/Log/Test/LoggerInterfaceTest.php
@@ -0,0 +1,140 @@
+<?php
+
+namespace Psr\Log\Test;
+
+use Psr\Log\LoggerInterface;
+use Psr\Log\LogLevel;
+
+/**
+ * Provides a base test class for ensuring compliance with the LoggerInterface.
+ *
+ * Implementors can extend the class and implement abstract methods to run this
+ * as part of their test suite.
+ */
+abstract class LoggerInterfaceTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @return LoggerInterface
+ */
+ abstract public function getLogger();
+
+ /**
+ * This must return the log messages in order.
+ *
+ * The simple formatting of the messages is: "<LOG LEVEL> <MESSAGE>".
+ *
+ * Example ->error('Foo') would yield "error Foo".
+ *
+ * @return string[]
+ */
+ abstract public function getLogs();
+
+ public function testImplements()
+ {
+ $this->assertInstanceOf('Psr\Log\LoggerInterface', $this->getLogger());
+ }
+
+ /**
+ * @dataProvider provideLevelsAndMessages
+ */
+ public function testLogsAtAllLevels($level, $message)
+ {
+ $logger = $this->getLogger();
+ $logger->{$level}($message, array('user' => 'Bob'));
+ $logger->log($level, $message, array('user' => 'Bob'));
+
+ $expected = array(
+ $level.' message of level '.$level.' with context: Bob',
+ $level.' message of level '.$level.' with context: Bob',
+ );
+ $this->assertEquals($expected, $this->getLogs());
+ }
+
+ public function provideLevelsAndMessages()
+ {
+ return array(
+ LogLevel::EMERGENCY => array(LogLevel::EMERGENCY, 'message of level emergency with context: {user}'),
+ LogLevel::ALERT => array(LogLevel::ALERT, 'message of level alert with context: {user}'),
+ LogLevel::CRITICAL => array(LogLevel::CRITICAL, 'message of level critical with context: {user}'),
+ LogLevel::ERROR => array(LogLevel::ERROR, 'message of level error with context: {user}'),
+ LogLevel::WARNING => array(LogLevel::WARNING, 'message of level warning with context: {user}'),
+ LogLevel::NOTICE => array(LogLevel::NOTICE, 'message of level notice with context: {user}'),
+ LogLevel::INFO => array(LogLevel::INFO, 'message of level info with context: {user}'),
+ LogLevel::DEBUG => array(LogLevel::DEBUG, 'message of level debug with context: {user}'),
+ );
+ }
+
+ /**
+ * @expectedException \Psr\Log\InvalidArgumentException
+ */
+ public function testThrowsOnInvalidLevel()
+ {
+ $logger = $this->getLogger();
+ $logger->log('invalid level', 'Foo');
+ }
+
+ public function testContextReplacement()
+ {
+ $logger = $this->getLogger();
+ $logger->info('{Message {nothing} {user} {foo.bar} a}', array('user' => 'Bob', 'foo.bar' => 'Bar'));
+
+ $expected = array('info {Message {nothing} Bob Bar a}');
+ $this->assertEquals($expected, $this->getLogs());
+ }
+
+ public function testObjectCastToString()
+ {
+ if (method_exists($this, 'createPartialMock')) {
+ $dummy = $this->createPartialMock('Psr\Log\Test\DummyTest', array('__toString'));
+ } else {
+ $dummy = $this->getMock('Psr\Log\Test\DummyTest', array('__toString'));
+ }
+ $dummy->expects($this->once())
+ ->method('__toString')
+ ->will($this->returnValue('DUMMY'));
+
+ $this->getLogger()->warning($dummy);
+
+ $expected = array('warning DUMMY');
+ $this->assertEquals($expected, $this->getLogs());
+ }
+
+ public function testContextCanContainAnything()
+ {
+ $context = array(
+ 'bool' => true,
+ 'null' => null,
+ 'string' => 'Foo',
+ 'int' => 0,
+ 'float' => 0.5,
+ 'nested' => array('with object' => new DummyTest),
+ 'object' => new \DateTime,
+ 'resource' => fopen('php://memory', 'r'),
+ );
+
+ $this->getLogger()->warning('Crazy context data', $context);
+
+ $expected = array('warning Crazy context data');
+ $this->assertEquals($expected, $this->getLogs());
+ }
+
+ public function testContextExceptionKeyCanBeExceptionOrOtherValues()
+ {
+ $logger = $this->getLogger();
+ $logger->warning('Random message', array('exception' => 'oops'));
+ $logger->critical('Uncaught Exception!', array('exception' => new \LogicException('Fail')));
+
+ $expected = array(
+ 'warning Random message',
+ 'critical Uncaught Exception!'
+ );
+ $this->assertEquals($expected, $this->getLogs());
+ }
+}
+
+class DummyTest
+{
+ public function __toString()
+ {
+ }
+}
diff --git a/admin/survey/minify/vendor/psr/log/README.md b/admin/survey/minify/vendor/psr/log/README.md
new file mode 100644
index 0000000..4098052
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/log/README.md
@@ -0,0 +1,45 @@
+PSR Log
+=======
+
+This repository holds all interfaces/classes/traits related to
+[PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md).
+
+Note that this is not a logger of its own. It is merely an interface that
+describes a logger. See the specification for more details.
+
+Usage
+-----
+
+If you need a logger, you can use the interface like this:
+
+```php
+<?php
+
+use Psr\Log\LoggerInterface;
+
+class Foo
+{
+ private $logger;
+
+ public function __construct(LoggerInterface $logger = null)
+ {
+ $this->logger = $logger;
+ }
+
+ public function doSomething()
+ {
+ if ($this->logger) {
+ $this->logger->info('Doing work');
+ }
+
+ // do something useful
+ }
+}
+```
+
+You can then pick one of the implementations of the interface to get a logger.
+
+If you want to implement the interface, you can require this package and
+implement `Psr\Log\LoggerInterface` in your code. Please read the
+[specification text](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md)
+for details.
diff --git a/admin/survey/minify/vendor/psr/log/composer.json b/admin/survey/minify/vendor/psr/log/composer.json
new file mode 100644
index 0000000..6422e41
--- /dev/null
+++ b/admin/survey/minify/vendor/psr/log/composer.json
@@ -0,0 +1,26 @@
+{
+ "name": "psr/log",
+ "description": "Common interface for logging libraries",
+ "keywords": ["psr", "psr-3", "log"],
+ "homepage": "https://github.com/php-fig/log",
+ "license": "MIT",
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "http://www.php-fig.org/"
+ }
+ ],
+ "require": {
+ "php": ">=5.3.0"
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Log\\": "Psr/Log/"
+ }
+ },
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.0.x-dev"
+ }
+ }
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/.gitignore b/admin/survey/minify/vendor/tubalmartin/cssmin/.gitignore
new file mode 100644
index 0000000..429fac3
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/.gitignore
@@ -0,0 +1,5 @@
+.*
+!/.gitignore
+/vendor
+composer.lock
+composer.phar \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/README.md b/admin/survey/minify/vendor/tubalmartin/cssmin/README.md
new file mode 100644
index 0000000..341139d
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/README.md
@@ -0,0 +1,461 @@
+# A PHP port of the YUI CSS compressor
+
+[![Latest Stable Version](https://poser.pugx.org/tubalmartin/cssmin/v/stable)](https://packagist.org/packages/tubalmartin/cssmin) [![Total Downloads](https://poser.pugx.org/tubalmartin/cssmin/downloads)](https://packagist.org/packages/tubalmartin/cssmin) [![Daily Downloads](https://poser.pugx.org/tubalmartin/cssmin/d/daily)](https://packagist.org/packages/tubalmartin/cssmin) [![License](https://poser.pugx.org/tubalmartin/cssmin/license)](https://packagist.org/packages/tubalmartin/cssmin)
+
+This port is based on version 2.4.8 (Jun 12, 2013) of the [YUI compressor](https://github.com/yui/yuicompressor).
+This port contains fixes & features not present in the original YUI compressor.
+
+**Table of Contents**
+
+1. [Installation & requirements](#install)
+2. [How to use](#howtouse)
+3. [Tests](#tests)
+4. [API Reference](#api)
+5. [Who uses this?](#whousesit)
+6. [Changelog](#changelog)
+
+<a name="install"></a>
+
+## 1. Installation & requirements
+
+### Installation
+
+Use [Composer](http://getcomposer.org/) to include the library into your project:
+
+ $ composer.phar require tubalmartin/cssmin
+
+Require Composer's autoloader file:
+
+```php
+<?php
+
+require './vendor/autoload.php';
+
+use tubalmartin\CssMin\Minifier as CSSmin;
+
+// Use it!
+$compressor = new CSSmin;
+```
+
+### Requirements
+
+* PHP 5.3.2 or newer with PCRE extension.
+
+<a name="howtouse"></a>
+
+## 2. How to use
+
+There are three ways you can use this library:
+
+1. [PHP](#php)
+2. [CLI](#cli)
+3. [GUI](#gui)
+
+<a name="php"></a>
+
+### PHP
+
+```php
+<?php
+
+// Autoload libraries
+require './vendor/autoload.php';
+
+use tubalmartin\CssMin\Minifier as CSSmin;
+
+// Extract the CSS code you want to compress from your CSS files
+$input_css = file_get_contents('test.css');
+
+// Create a new CSSmin object.
+// By default CSSmin will try to raise PHP settings.
+// If you don't want CSSmin to raise the PHP settings pass FALSE to
+// the constructor i.e. $compressor = new CSSmin(false);
+$compressor = new CSSmin;
+
+// Set the compressor up before compressing (global setup):
+
+// Keep sourcemap comment in the output.
+// Default behavior removes it.
+$compressor->keepSourceMapComment();
+
+// Remove important comments from output.
+$compressor->removeImportantComments();
+
+// Split long lines in the output approximately every 1000 chars.
+$compressor->setLineBreakPosition(1000);
+
+// Override any PHP configuration options before calling run() (optional)
+$compressor->setMemoryLimit('256M');
+$compressor->setMaxExecutionTime(120);
+$compressor->setPcreBacktrackLimit(3000000);
+$compressor->setPcreRecursionLimit(150000);
+
+// Compress the CSS code!
+$output_css = $compressor->run($input_css);
+
+// You can override any setup between runs without having to create another CSSmin object.
+// Let's say you want to remove the sourcemap comment from the output and
+// disable splitting long lines in the output.
+// You can achieve that using the methods `keepSourceMap` and `setLineBreakPosition`:
+$compressor->keepSourceMapComment(false);
+$compressor->setLineBreakPosition(0);
+$output_css = $compressor->run($input_css);
+
+// Do whatever you need with the compressed CSS code
+echo $output_css;
+```
+
+<a name="cli"></a>
+
+### CLI
+
+A binary file named `cssmin` will be created after installation in `./vendor/bin` folder.
+
+Output help:
+```
+./vendor/bin/cssmin -h
+```
+Output compression result to the command line:
+```
+./vendor/bin/cssmin -i ./my-css-file.css
+```
+Output compression result to another file:
+```
+./vendor/bin/cssmin -i ./my-css-file.css -o ./my-css-file.min.css
+```
+Output compression result to another file and keep sourcemap comment in the output:
+```
+./vendor/bin/cssmin -i ./my-css-file.css -o ./my-css-file.min.css --keep-sourcemap
+```
+See the binary help for all available CLI options.
+
+<a name="gui"></a>
+
+### GUI
+
+We've made a simple web based GUI to use the compressor, it's in the `gui` folder.
+
+GUI features:
+
+* Optional on-the-fly LESS compilation before compression with error reporting included.
+* Absolute control of the library.
+
+How to use the GUI:
+
+* You need a server with PHP 5.3.2+ installed.
+* Download the repository and upload it to a folder in your server.
+* Run `php composer.phar install` in project's root to install dependencies.
+* Open your favourite browser and enter the URL to the `/gui` folder.
+
+<a name="tests"></a>
+
+## 3. Tests
+
+Tests from YUI compressor have been modified to fit this port.
+
+How to run the test suite:
+
+* Run `php composer.phar install` in project's root to install dependencies. `phpunit` will be installed locally.
+* After that, run `phpunit` in the command line:
+
+```
+./vendor/bin/phpunit
+```
+
+PHPUnit diffing is too simple so when a test fails it's hard to see the actual diff, that's why I've created a
+test runner that displays inline coloured diffs for a failing test. Only one test can be run at a time.
+
+Here's how to use it:
+
+```
+./tests/bin/runner -t <expectation-name> [-f <fixture-name>] [--keep-sourcemap] [--remove-important-comments] [--linebreak-position <pos>]
+```
+
+<a name="api"></a>
+
+## 4. API Reference
+
+### __construct ([ bool *$raisePhpLimits* ])
+
+Class constructor, creates a new CSSmin object.
+
+**Parameters**
+
+*raisePhpLimits*
+
+If TRUE, CSSmin will try to raise the values of some php configuration options.
+Set to FALSE to keep the values of your php configuration options.
+Defaults to TRUE.
+
+### run (string *$css*)
+
+Minifies a string of uncompressed CSS code.
+`run()` may be called multiple times on a single CSSmin instance.
+
+**Parameters**
+
+*css*
+
+A string of uncompressed CSS code.
+CSSmin default value: `''` (empty string).
+
+**Return Values**
+
+A string of compressed CSS code or an empty string if no string is passed.
+
+### keepSourceMapComment (bool *$keepSourceMap*)
+
+Sets whether to keep sourcemap comment `/*# sourceMappingURL=<path> */`in the output.
+CSSmin default behavior: Sourcemap comment gets removed from output.
+
+### removeImportantComments (bool *$removeImportantComments*)
+
+Sets whether to remove important comments from output.
+CSSmin default behavior: Important comments outside declaration blocks are kept in the output.
+
+### setLinebreakPosition (int *$position*)
+
+Some source control tools don't like it when files containing lines longer than, say 8000 characters, are checked in.
+The linebreak option is used in that case to split long lines after a specific column.
+
+CSSmin default value: `0` (all CSS code in 1 long line).
+Minimum value supported: `1`.
+
+### setMaxExecutionTime (int *$seconds*)
+
+Sets the `max_execution_time` configuration option for this script
+
+CSSmin default value: `60`
+Values & notes: [max_execution_time documentation](http://php.net/manual/en/info.configuration.php#ini.max-execution-time)
+
+### setMemoryLimit (mixed *$limit*)
+
+Sets the `memory_limit` configuration option for this script
+
+CSSmin default value: `128M`
+Values & notes: [memory_limit documentation](http://php.net/manual/en/ini.core.php#ini.memory-limit)
+
+### setPcreBacktrackLimit (int *$limit*)
+
+Sets the `pcre.backtrack_limit` configuration option for this script
+
+CSSmin default value: `1000000`
+Values & notes: [pcre.backtrack_limit documentation](http://php.net/manual/en/pcre.configuration.php#ini.pcre.backtrack-limit)
+
+### setPcreRecursionLimit (int *$limit*)
+
+Sets the `pcre.recursion_limit` configuration option for this script.
+
+CSSmin default value: `500000`
+Values & notes: [pcre.recursion_limit documentation](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit)
+
+
+<a name="whousesit"></a>
+
+## 5. Who uses this port
+
+* [Magento](https://magento.com/) eCommerce platforms and solutions for selling online.
+* [Minify](https://github.com/mrclay/minify) Minify is an HTTP content server. It compresses sources of content (usually files), combines the result and serves it with appropriate HTTP headers.
+* [Autoptimize](http://wordpress.org/plugins/autoptimize/) is a Wordpress plugin. Autoptimize speeds up your website and helps you save bandwidth by aggregating and minimizing JS, CSS and HTML.
+* [IMPRESSPAGES](http://www.impresspages.org/) PHP framework with content editor.
+* [Other dependent Composer packages](https://packagist.org/packages/tubalmartin/cssmin/dependents).
+
+<a name="changelog"></a>
+
+## 6. Changelog
+
+### v4.1.1 15 Jan 2018
+
+FIXED:
+* Breakage when minifying at-import rule with unquoted urls containing semicolons [#45](https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues/45)
+
+### v4.1.0 16 May 2017
+
+* NEW:
+ * `--dry-run` CLI argument to perform a dry run and display statistics.
+* IMPROVED:
+ * Performance: 2x times faster than v4.0.0 after code profiling:
+ * A 1MB file takes 1.8s with PHP 5.3.29 and 350ms with PHP 7.0.18 (on average).
+ * A full Bootstrap v3.3.7 CSS suite takes 330ms with PHP 5.3.29 and 50ms with PHP 7.0.18 (on average).
+
+### v4.0.0 15 May 2017
+
+NEW:
+* API:
+ * Removed: `setChunkLength()` method and `--chunk-length` CLI argument.
+ * Modified: `keepSourceMap()` method is now named `keepSourceMapComment()`. CLI argument `--keep-sourcemap` stays the same but we've added `--keep-sourcemap-comment` too.
+ * Modified: `run()` method signature. It only accepts one argument now.
+ * Added: `removeImportantComments()` method & `--keep-important-comments` CLI argument.
+* Important comments `/*! ... */` can be optionally removed from output too calling `removeImportantComments()` method.
+
+### v3.3.1 16 May 2017
+
+* Backported performance improvements made in v4.1.0
+
+### v3.3.0 13 May 2017
+
+NEW:
+* CLI binary displays some useful stats after execution.
+* A concatenated file can be safely compressed now: `@charset`, `@import` & `@namespace` at-rules will be placed correctly.
+* Conditional group rules fully and safely supported, that is, unlimited rule nesting levels. Previously only one nesting level was fully supported.
+
+NOTES:
+* Pretty big refactor done for two main reasons:
+ * Make minified output even more reliable even when a potential scenario has not been tested beforehand.
+ * Make development, testing and contribution a bit easier due to simplified logic.
+* As a consequence of this refactor, stylesheet chunking is not needed anymore. `setChunkLength` method and `--chunk-length` CLI argument
+ still exist for backwards compatibility reasons but have no effect at all.
+
+### v3.2.0 10 May 2017
+
+NEW:
+* PHPUnit added as test runner.
+* CLI binary provided.
+* CSS Sourcemap special comment supported.
+* `ms` unit compression: from `300ms` to `.3s`.
+* Shortable double colon (CSS3) pseudo-elements are now shortened to single colon (CSS2): from `::after` to `:after`.
+* `background: none` & `background: transparent` are shortened to `background:0 0`.
+
+IMPROVED:
+* Some regular expressions.
+* Long line splitting algorithm.
+* Lowercasing pseudo-classes, pseudo-elements and functions to cover more cases.
+* Shortening of suitable shorthand properties with repeated values. All cases are covered now.
+* Tests.
+
+FIXED:
+* When splitting long lines in the output, if a comment or string contained closing curly braces `}`, the curly brace
+ could be recognised as a selector or at-rule closing curly brace resulting in an unexpected newline being added.
+
+### v3.1.2 17 Apr 2017
+
+* Improved compression of long named colors: now all long named colors get compressed to their shorter HEX counterpart.
+* Fixes cases such as [#39](https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues/39)
+* Huge performance improvement after code profiling. See table below for results when running the whole test suite:
+
+PHP version used: 5.3.29
+
+| chunkLength | v3.1.1 | v3.1.2 |
+| --- | --- | --- |
+| 100 | 6.8s | 2.6s |
+| 1000 | 5.3s | 2s |
+| 2000 | 5.2s | 1.95s |
+| 5000 | 5.1s | 1.9s |
+
+PHP version used: 7.0.8
+
+| chunkLength | v3.1.1 | v3.1.2 |
+| --- | --- | --- |
+| 100 | 2s | 0.72s |
+| 1000 | 1s | 0.37s |
+| 2000 | 0.8s | 0.33s |
+| 5000 | 0.7s | 0.3s |
+
+
+### v3.1.1 11 Apr 2017
+
+* Regexes improved.
+* Small performance improvements.
+* Blocks such as `@media` blocks with empty rules are removed too.
+* Quoted unquotable attribute selectors get unquoted now i.e. from `col[class*="col-"]` to `col[class*=col-]`. Covers most common cases. Safe approach.
+
+### v3.1.0 9 Apr 2017
+
+* Code deeply analyzed. Some areas rewritten from the ground up with maximum performance in mind. No change in compressor behavior.
+* Fixed some hidden bugs discovered along the way that affected performance negatively.
+* IE5/Mac comment hack removed from minifier logic. Those comments will no longer be preserved.
+* The table below displays the performance optimization done in this version in comparison with the previous one running the whole test suite:
+
+PHP version used: 5.3.29
+
+| chunkLength | v3.0.0 | v3.1.0 |
+| --- | --- | --- |
+| 100 | 38s | 6.9s |
+| 1000 | 8.5s | 5.4s |
+| 2000 | 7.3s | 5.3s |
+| 5000 | 5.8s | 5.2s |
+
+PHP version used: 7.0.8
+
+| chunkLength | v3.0.0 | v3.1.0 |
+| --- | --- | --- |
+| 100 | 22.8s | 2.1s |
+| 1000 | 2.9s | 1.1s |
+| 2000 | 2s | 0.9s |
+| 5000 | 1.3s | 0.8s |
+
+### v3.0.0 4 Apr 2017
+
+* New API compliant with PSR-1, PSR-2 & PSR-4. PHP 5.3.2+ required. I think it was time!
+* Many tests added, strengthened and fixed. Big, real life, stylesheets included such as Bootstrap or Foundation.
+* Fixed some critical and minor issues, such as:
+ * Chunking system breaking some stylesheets (broken at rules block) or leaving some bits off.
+ * Backreferences in replacement strings breaking stylesheets.
+ * [#23](https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues/23)
+ * Others...
+* Color compression improved. Now all named colors are supported i.e. from `white` to `#fff`.
+* Shortening zero values is back but in a safe manner, shortening values assigned to "safe" properties only i.e. from `margin: 1px 0.0em 0rem 0%` to `margin:1px 0 0`. Check the code to see the list of "safe" properties.
+* `padding` and `margin` properties are shortened to the bare minimum i.e. from `margin: 3px 2.1em 3px 2.1em` => `margin:3px 2.1em`
+* Upgrading to v3 is strongly recommended for users enjoying PHP 5.3.2+.
+
+### v2.4.8-p10 4 Apr 2017
+
+* This is the last v2 release. v3 onwards will only support PHP 5.3.2+.
+* This patch has all improvements and fixes v3.0.0 has. See v3.0.0 notes for further info (no API change in this version of course).
+* Updating to this patch is strongly recommended for users stuck with PHP versions lower than PHP 5.3.
+
+### v2.4.8-p9 28 Mar 2017
+
+* Rolling back property declaration with scalar expressions (>= PHP 5.6) introduced in v2.4.8-p8 to support PHP 5.0. No change in compressor behavior.
+
+### v2.4.8-p8 27 Mar 2017
+
+* Fixed issue [#18](https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/pull/18)
+* Added `set_chunk_length` method.
+* `bold` & `normal` values get compressed to `700` & `400` respectively for `font-weight` property.
+* GUI updated.
+* FineDiff library loaded through Composer.
+* README updated.
+
+### v2.4.8-p7 26 Mar 2017
+
+* Fixed many issues [#20](https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues/20), [#22](https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues/22), [#24](https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues/24), [#25](https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues/25), [#26](https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues/26) reported by contributors and others that I'm sure haven't been reported, at least yet. Sorry for the long delay guys.
+* This release is all about stability and reliability and as such I've had to take some controversial decisions such as:
+ * Not minifying `none` property value to `0` because in some subtle scenarios the resulting output may render some styles differently.
+ * Not removing units from zero length values because in many cases the output will break the intended behavior. Patching every single case after someone finds a new breaking case is not good IMHO taking into account CSS is a live spec and browsers differ in some cases.
+* Hope you agree with me removing those conflicting parts. Enjoy this release :)
+
+### v2.4.8-p6 21 Mar 2017
+
+* Fixed PHP CLI issues. See [#36](https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/pull/36)
+
+### v2.4.8-p5 27 Feb 2017
+
+* Fixed PHP 7 issues.
+
+### v2.4.8-p4 22 Sep 2014
+
+* Composer support. The package is [tubalmartin/cssmin](https://packagist.org/packages/tubalmartin/cssmin)
+* Fixed issue [#17]
+
+### v2.4.8-p3 26 Apr 2014
+
+* Fixed all reported bugs: See issues [#11], [#13] (first case only) and [#14].
+* LESS compiler upgraded to version 1.7.0
+
+### v2.4.8-p2 13 Nov 2013
+
+* Chunk length reduced to 5000 chars (previously 25.000 chars) in an effort to avoid PCRE backtrack limits (needs feedback).
+* Improvements for the `@keyframes 0%` step bug. Tests improved.
+* Fix IE7 issue on matrix filters which browser accept whitespaces between Matrix parameters
+* LESS compiler upgraded to version 1.4.2
+
+### v2.4.8-p1 8 Aug 2013
+
+* Fix for the `@keyframes 0%` step bug. Tests added.
+* LESS compiler upgraded to version 1.4.1
+
+[#11]: https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues/11
+[#13]: https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues/13
+[#14]: https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues/14
+[#17]: https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues/17
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/composer.json b/admin/survey/minify/vendor/tubalmartin/cssmin/composer.json
new file mode 100644
index 0000000..f9c3ebf
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/composer.json
@@ -0,0 +1,38 @@
+{
+ "name": "tubalmartin/cssmin",
+ "description": "A PHP port of the YUI CSS compressor",
+ "keywords": ["yui", "compressor", "css", "cssmin", "compress", "minify"],
+ "homepage": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port",
+ "license": "BSD-3-Clause",
+ "authors": [
+ {
+ "name": "Túbal Martín",
+ "homepage": "http://tubalmartin.me/"
+ }
+ ],
+ "support": {
+ "issues": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port/issues",
+ "source": "https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port"
+ },
+ "autoload": {
+ "psr-4": {
+ "tubalmartin\\CssMin\\": "src"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "tubalmartin\\CssMin\\Tests\\": "tests"
+ }
+ },
+ "bin": [
+ "cssmin"
+ ],
+ "require": {
+ "php": ">=5.3.2",
+ "ext-pcre": "*"
+ },
+ "require-dev": {
+ "cogpowered/finediff": "0.3.*",
+ "phpunit/phpunit": "4.8.*"
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/cssmin b/admin/survey/minify/vendor/tubalmartin/cssmin/cssmin
new file mode 100644
index 0000000..2ad4580
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/cssmin
@@ -0,0 +1,37 @@
+#!/usr/bin/env php
+<?php
+
+use tubalmartin\CssMin\Command;
+
+$autoloadPath = null;
+$autoloadPaths = array(
+ __DIR__ . '/../../autoload.php',
+ __DIR__ . '/../vendor/autoload.php',
+ __DIR__ . '/vendor/autoload.php'
+);
+
+foreach ($autoloadPaths as $file) {
+ if (file_exists($file)) {
+ $autoloadPath = $file;
+ break;
+ }
+}
+
+unset($file);
+unset($autoloadPaths);
+
+if (is_null($autoloadPath)) {
+ fwrite(
+ STDERR,
+ 'You need to set up the project dependencies using Composer:' . PHP_EOL . PHP_EOL .
+ ' composer install' . PHP_EOL . PHP_EOL .
+ 'You can learn all about Composer on https://getcomposer.org/.' . PHP_EOL
+ );
+ die(1);
+}
+
+require $autoloadPath;
+
+unset($autoloadPath);
+
+Command::main();
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/gui/index.php b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/index.php
new file mode 100644
index 0000000..17648ce
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/index.php
@@ -0,0 +1,209 @@
+<?php
+
+require '../vendor/autoload.php';
+
+use tubalmartin\CssMin\Minifier as CSSmin;
+
+mb_internal_encoding('UTF-8');
+
+/**
+ * Navigates through an array and removes slashes from the values.
+ *
+ * If an array is passed, the array_map() function causes a callback to pass the
+ * value back to the function. The slashes from this value will removed.
+ *
+ * @param array|string $value The array or string to be stripped.
+ * @return array|string Stripped array (or string in the callback).
+ */
+function stripslashes_deep($value)
+{
+ if (is_array($value)) {
+ $value = array_map('stripslashes_deep', $value);
+ } elseif (is_object($value)) {
+ $vars = get_object_vars($value);
+ foreach ($vars as $key => $data) {
+ $value->{$key} = stripslashes_deep($data);
+ }
+ } else {
+ $value = stripslashes($value);
+ }
+
+ return $value;
+}
+
+// Disable magic quotes at runtime.
+if (function_exists('ini_set')) {
+ ini_set('magic_quotes_sybase', 0);
+ ini_set('get_magic_quotes_runtime', 0);
+}
+
+// If get_magic_quotes_gpc is active, strip slashes
+if (function_exists('get_magic_quotes_gpc') && get_magic_quotes_gpc()) {
+ $_POST = stripslashes_deep($_POST);
+}
+
+
+if (!empty($_POST)) :
+ // Form options
+ parse_str($_POST['options']);
+
+ $linebreak_pos = trim($linebreak_pos) !== '' ? $linebreak_pos : false;
+ $raise_php = isset($raise_php) ? true : false;
+
+ // Create a new CSSmin object and try to raise PHP settings
+ $compressor = new CSSmin($raise_php);
+
+ if ($linebreak_pos !== false) {
+ $compressor->setLineBreakPosition($linebreak_pos);
+ }
+
+ if (isset($keep_sourcemap)) {
+ $compressor->keepSourceMapComment();
+ }
+
+ if (isset($remove_important_comments)) {
+ $compressor->removeImportantComments();
+ }
+
+ if ($raise_php) {
+ $compressor->setMemoryLimit($memory_limit);
+ $compressor->setMaxExecutionTime($max_execution_time);
+ $compressor->setPcreBacktrackLimit(1000 * $pcre_backtrack_limit);
+ $compressor->setPcreRecursionLimit(1000 * $pcre_recursion_limit);
+ }
+
+ // Compress the CSS code and store data
+ $output = array();
+ $output['css'] = $compressor->run($_POST['css']);
+ $output['originalSize'] = mb_strlen($_POST['css'], '8bit');
+ $output['compressedSize'] = mb_strlen($output['css'], '8bit');
+ $output['bytesSaved'] = $output['originalSize'] - $output['compressedSize'];
+ $output['compressionRatio'] = round(($output['bytesSaved'] * 100) /
+ ($output['originalSize'] === 0 ? 1 : $output['originalSize']), 2);
+
+ // Output data
+ echo json_encode($output);
+else :
+?>
+<!DOCTYPE HTML>
+<html lang="en-US">
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <title>YUI CSS compressor - PHP</title>
+ <link rel="stylesheet" type="text/css" href="third-party/bootstrap/css/bootstrap.min.css">
+ <link rel="stylesheet" type="text/css" href="styles.css">
+ <link rel="stylesheet/less" type="text/css" href="styles.less">
+</head>
+<body>
+ <div class="navbar">
+ <div class="navbar-inner">
+ <div class="container-fluid">
+ <a class="brand" href="https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port">YUI CSS compressor PHP port</a>
+ </div>
+ </div>
+ </div>
+ <div class="container-fluid">
+ <div class="row-fluid">
+ <div id="body" class="span9">
+ <!--Body content-->
+ <div id="less-error-message" class="less-error-message"></div>
+ <div class="well">
+ <div id="input-container">
+ <label for="input-css">Paste a block of CSS to compress in the area below:</label>
+ <textarea id="input-css" class="input-block-level" rows="10"></textarea>
+ </div>
+ <div id="output-container" class="hide">
+ <label for="output-css">Here's your compressed CSS code:</label>
+ <span class="help-block">Original size: <span id="original-size"></span> bytes | Compressed size: <span id="compressed-size"></span> bytes | Bytes saved: <span id="bytes-saved"></span> | Compression ratio: <span id="compression-ratio"></span>%</span>
+ <textarea id="output-css" class="input-block-level" rows="10"></textarea>
+ </div>
+ </div>
+ </div>
+ <div id="sidebar" class="span3">
+ <form id="options-form">
+ <p class="submit">
+ <button type="submit" id="compress-btn" class="btn btn-primary btn-large" data-loading-text="Compressing...">Compress!</button>
+ </p>
+ <fieldset>
+ <legend>LESS</legend>
+ <p class="control-group">
+ <label class="checkbox">
+ <input type="checkbox" id="enable-less" value="1"> Enable compiler <span class="version">v1.7.5</span>
+ </label>
+ </p>
+ </fieldset>
+ <fieldset>
+ <legend>Compressor options</legend>
+ <div class="control-group">
+ <label>Linebreak after <i>n</i> columns</label>
+ <input type="text" name="linebreak_pos" class="span1">
+ </div>
+ <div class="control-group">
+ <label class="checkbox">
+ <input type="checkbox" name="keep_sourcemap" value="1"> Keep CSS Sourcemap comment
+ </label>
+ </div>
+ <div class="control-group">
+ <label class="checkbox">
+ <input type="checkbox" name="remove_important_comments" value="1"> Remove important comments
+ </label>
+ </div>
+ </fieldset>
+ <fieldset>
+ <legend>PHP configuration options</legend>
+ <div class="control-group">
+ <label class="checkbox">
+ <input type="checkbox" name="raise_php" value="1" checked="checked"> Raise PHP configuration options
+ </label>
+ <label>Memory limit</label>
+ <select name="memory_limit" class="span2">
+ <option value="32M">32M</option>
+ <option value="64M">64M</option>
+ <option value="128M" selected="selected">128M</option>
+ <option value="256M">256M</option>
+ <option value="512M">512M</option>
+ <option value="1G">1G</option>
+ <option value="-1">No limit</option>
+ </select>
+ <label>Max execution time</label>
+ <select name="max_execution_time" class="span2">
+ <option value="30">30 secs</option>
+ <option value="60" selected="selected">1 min</option>
+ <option value="120">2 mins</option>
+ <option value="300">5 mins</option>
+ </select>
+ <label>PCRE backtrack limit</label>
+ <select name="pcre_backtrack_limit" class="span2">
+ <option value="100">100.000</option>
+ <option value="1000" selected="selected">1.000.000</option>
+ <option value="2000">2.000.000</option>
+ <option value="5000">5.000.000</option>
+ </select>
+ <label>PCRE recursion limit</label>
+ <select name="pcre_recursion_limit" class="span2">
+ <option value="100">100.000</option>
+ <option value="250">250.000</option>
+ <option value="500" selected="selected">500.000</option>
+ <option value="1000">1.000.000</option>
+ </select>
+ </div>
+ </fieldset>
+ </form>
+ </div>
+ </div>
+ </div>
+ <script type="text/javascript">
+ less = {
+ env: 'development'
+ };
+ </script>
+ <script type="text/javascript" src="third-party/less-1.7.5.min.js"></script>
+ <script type="text/javascript" src="third-party/jquery-1.12.4.min.js"></script>
+ <script type="text/javascript" src="third-party/bootstrap/js/bootstrap.min.js"></script>
+ <script type="text/javascript" src="scripts.js"></script>
+</body>
+</html>
+<?php
+endif;
+?>
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/gui/scripts.js b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/scripts.js
new file mode 100644
index 0000000..e4d06ff
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/scripts.js
@@ -0,0 +1,104 @@
+$(function(){
+
+ var inputCss = $('#input-css')
+ , outputCss = $('#output-css')
+ , outputContainer = $('#output-container')
+ , originalSize = $('#original-size')
+ , compressedSize = $('#compressed-size')
+ , bytesSaved = $('#bytes-saved')
+ , compressionRatio = $('#compression-ratio')
+ , compressBtn = $('#compress-btn')
+ , lessConsole = $('#less-error-message')
+
+ /**
+ * Prints LESS compilation errors
+ */
+ , lessError = function(e) {
+ var content, errorline
+ , template = '<li><label>{line}</label><pre class="{class}">{content}</pre></li>'
+ , error = [];
+
+ content = '<h3>' + (e.type || "Syntax") + "Error: " + (e.message || 'There is an error in your .less file') +
+ '</h3>' + '<p>';
+
+ errorline = function (e, i, classname) {
+ if (e.extract[i] != undefined) {
+ error.push(template.replace(/\{line\}/, (parseInt(e.line) || 0) + (i - 1))
+ .replace(/\{class\}/, classname)
+ .replace(/\{content\}/, e.extract[i]));
+ }
+ };
+
+ if (e.stack) {
+ content += '<br/>' + e.stack.split('\n').slice(1).join('<br/>');
+ } else if (e.extract) {
+ errorline(e, 0, '');
+ errorline(e, 1, 'line');
+ errorline(e, 2, '');
+ content += 'on line ' + e.line + ', column ' + (e.column + 1) + ':</p>' +
+ '<ul>' + error.join('') + '</ul>';
+ }
+
+ lessConsole.html(content).slideDown('fast');
+ }
+
+ /**
+ * Compresses user's CSS with the PHP port of the YUI compressor
+ */
+ , compress = function(formData) {
+ $.post(window.location.href, formData, function(data, textStatus, jqXHR){
+ // Hide LESS error console
+ lessConsole.slideUp('fast');
+
+ // Fill output & show
+ outputCss.val(data.css);
+ originalSize.html(data.originalSize);
+ compressedSize.html(data.compressedSize);
+ bytesSaved.html(data.bytesSaved);
+ compressionRatio.html(data.compressionRatio);
+
+ outputContainer.slideDown('fast');
+
+ // Restore button state
+ compressBtn.button('reset');
+ }, 'json');
+ };
+
+
+
+ /**
+ * Controller
+ */
+ $('#options-form').on('submit', function(e){
+ e && e.preventDefault();
+
+ var data = {
+ css: inputCss.val(),
+ options: $(this).serialize()
+ };
+
+ // Change button state
+ compressBtn.button('loading');
+
+ // If LESS enabled, precompile CSS with LESS and then compress
+ if (!!$('#enable-less:checked').val()) {
+ try {
+ new(less.Parser)().parse(data.css, function (err, tree) {
+ if (err) {
+ lessError(err);
+ compressBtn.button('reset');
+ } else {
+ data.css = tree.toCSS();
+ compress(data);
+ }
+ });
+ } catch (err) {
+ lessError(err);
+ compressBtn.button('reset');
+ }
+ } else {
+ compress(data);
+ }
+ });
+
+}); \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/gui/styles.css b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/styles.css
new file mode 100644
index 0000000..414c9ca
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/styles.css
@@ -0,0 +1,68 @@
+/* LESS error report styles */
+.less-error-message {
+ font-family: Arial, sans-serif;
+ border: 1px solid #e00;
+ border: 1px solid rgba(238,0,0, 0.5);
+ background-color: whiteSmoke;
+ border-radius: 4px;
+ -webkit-border-radius: 4px;
+ -moz-border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0, 0.05);
+ -moz-box-shadow: inset 0 1px 1px rgba(0,0,0, 0.05);
+ box-shadow: inset 0 1px 1px rgba(0,0,0, 0.05);
+ color: #e00;
+ padding: 18px;
+ margin-bottom: 18px;
+ display:none;
+}
+.less-error-message ul, .less-error-message li {
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+}
+.less-error-message label {
+ font-size: 12px;
+ margin-right: 15px;
+ padding: 4px 0;
+ color: #cc7777;
+ display: inline;
+}
+.less-error-message pre {
+ color: #dd6666;
+ padding: 4px 0;
+ margin: 0;
+ display: inline-block;
+}
+.less-error-message pre.line {
+ color: red;
+}
+.less-error-message h3 {
+ font-size: 20px;
+ font-weight: bold;
+ padding: 0 0 5px 0;
+ margin: 0;
+}
+.less-error-message a {
+ color: #10a;
+}
+.less-error-message .error {
+ color: red;
+ font-weight: bold;
+ padding-bottom: 2px;
+ border-bottom: 1px dashed red;
+}
+
+pre {
+ white-space: pre-wrap; /* css-3 */
+ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
+}
+
+/* APP styles */
+.version{font-size:10px;font-style: italic;letter-spacing: 2px}
+
+legend{font-size: 15px; line-height: 20px; margin-bottom:0}
+.control-group{margin-bottom:12px;}
+#output-container{margin-top:18px} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/bootstrap/css/bootstrap.min.css b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/bootstrap/css/bootstrap.min.css
new file mode 100644
index 0000000..ba3f412
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/bootstrap/css/bootstrap.min.css
@@ -0,0 +1,339 @@
+/*!
+ * Bootstrap v2.0.2
+ *
+ * Copyright 2012 Twitter, Inc
+ * Licensed under the Apache License v2.0
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ */
+.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";}
+.clearfix:after{clear:both;}
+.hide-text{overflow:hidden;text-indent:100%;white-space:nowrap;}
+.input-block-level{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;}
+article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{display:block;}
+audio,canvas,video{display:inline-block;*display:inline;*zoom:1;}
+audio:not([controls]){display:none;}
+html{font-size:100%;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;}
+a:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
+a:hover,a:active{outline:0;}
+sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline;}
+sup{top:-0.5em;}
+sub{bottom:-0.25em;}
+img{height:auto;border:0;-ms-interpolation-mode:bicubic;vertical-align:middle;}
+button,input,select,textarea{margin:0;font-size:100%;vertical-align:middle;}
+button,input{*overflow:visible;line-height:normal;}
+button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0;}
+button,input[type="button"],input[type="reset"],input[type="submit"]{cursor:pointer;-webkit-appearance:button;}
+input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;}
+input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none;}
+textarea{overflow:auto;vertical-align:top;}
+body{margin:0;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;color:#333333;background-color:#ffffff;}
+a{color:#0088cc;text-decoration:none;}
+a:hover{color:#005580;text-decoration:underline;}
+.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";}
+.row:after{clear:both;}
+[class*="span"]{float:left;margin-left:20px;}
+.container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
+.span12{width:940px;}
+.span11{width:860px;}
+.span10{width:780px;}
+.span9{width:700px;}
+.span8{width:620px;}
+.span7{width:540px;}
+.span6{width:460px;}
+.span5{width:380px;}
+.span4{width:300px;}
+.span3{width:220px;}
+.span2{width:140px;}
+.span1{width:60px;}
+.offset12{margin-left:980px;}
+.offset11{margin-left:900px;}
+.offset10{margin-left:820px;}
+.offset9{margin-left:740px;}
+.offset8{margin-left:660px;}
+.offset7{margin-left:580px;}
+.offset6{margin-left:500px;}
+.offset5{margin-left:420px;}
+.offset4{margin-left:340px;}
+.offset3{margin-left:260px;}
+.offset2{margin-left:180px;}
+.offset1{margin-left:100px;}
+.row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";}
+.row-fluid:after{clear:both;}
+.row-fluid>[class*="span"]{float:left;margin-left:2.127659574%;}
+.row-fluid>[class*="span"]:first-child{margin-left:0;}
+.row-fluid > .span12{width:99.99999998999999%;}
+.row-fluid > .span11{width:91.489361693%;}
+.row-fluid > .span10{width:82.97872339599999%;}
+.row-fluid > .span9{width:74.468085099%;}
+.row-fluid > .span8{width:65.95744680199999%;}
+.row-fluid > .span7{width:57.446808505%;}
+.row-fluid > .span6{width:48.93617020799999%;}
+.row-fluid > .span5{width:40.425531911%;}
+.row-fluid > .span4{width:31.914893614%;}
+.row-fluid > .span3{width:23.404255317%;}
+.row-fluid > .span2{width:14.89361702%;}
+.row-fluid > .span1{width:6.382978723%;}
+.container{margin-left:auto;margin-right:auto;*zoom:1;}.container:before,.container:after{display:table;content:"";}
+.container:after{clear:both;}
+.container-fluid{padding-left:20px;padding-right:20px;*zoom:1;}.container-fluid:before,.container-fluid:after{display:table;content:"";}
+.container-fluid:after{clear:both;}
+p{margin:0 0 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;line-height:18px;}p small{font-size:11px;color:#999999;}
+.lead{margin-bottom:18px;font-size:20px;font-weight:200;line-height:27px;}
+h1,h2,h3,h4,h5,h6{margin:0;font-family:inherit;font-weight:bold;color:inherit;text-rendering:optimizelegibility;}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{font-weight:normal;color:#999999;}
+h1{font-size:30px;line-height:36px;}h1 small{font-size:18px;}
+h2{font-size:24px;line-height:36px;}h2 small{font-size:18px;}
+h3{line-height:27px;font-size:18px;}h3 small{font-size:14px;}
+h4,h5,h6{line-height:18px;}
+h4{font-size:14px;}h4 small{font-size:12px;}
+h5{font-size:12px;}
+h6{font-size:11px;color:#999999;text-transform:uppercase;}
+.page-header{padding-bottom:17px;margin:18px 0;border-bottom:1px solid #eeeeee;}
+.page-header h1{line-height:1;}
+ul,ol{padding:0;margin:0 0 9px 25px;}
+ul ul,ul ol,ol ol,ol ul{margin-bottom:0;}
+ul{list-style:disc;}
+ol{list-style:decimal;}
+li{line-height:18px;}
+ul.unstyled,ol.unstyled{margin-left:0;list-style:none;}
+dl{margin-bottom:18px;}
+dt,dd{line-height:18px;}
+dt{font-weight:bold;line-height:17px;}
+dd{margin-left:9px;}
+.dl-horizontal dt{float:left;clear:left;width:120px;text-align:right;}
+.dl-horizontal dd{margin-left:130px;}
+hr{margin:18px 0;border:0;border-top:1px solid #eeeeee;border-bottom:1px solid #ffffff;}
+strong{font-weight:bold;}
+em{font-style:italic;}
+.muted{color:#999999;}
+abbr[title]{border-bottom:1px dotted #ddd;cursor:help;}
+abbr.initialism{font-size:90%;text-transform:uppercase;}
+blockquote{padding:0 0 0 15px;margin:0 0 18px;border-left:5px solid #eeeeee;}blockquote p{margin-bottom:0;font-size:16px;font-weight:300;line-height:22.5px;}
+blockquote small{display:block;line-height:18px;color:#999999;}blockquote small:before{content:'\2014 \00A0';}
+blockquote.pull-right{float:right;padding-left:0;padding-right:15px;border-left:0;border-right:5px solid #eeeeee;}blockquote.pull-right p,blockquote.pull-right small{text-align:right;}
+q:before,q:after,blockquote:before,blockquote:after{content:"";}
+address{display:block;margin-bottom:18px;line-height:18px;font-style:normal;}
+small{font-size:100%;}
+cite{font-style:normal;}
+.label{padding:1px 4px 2px;font-size:10.998px;font-weight:bold;line-height:13px;color:#ffffff;vertical-align:middle;white-space:nowrap;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);background-color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+.label:hover{color:#ffffff;text-decoration:none;}
+.label-important{background-color:#b94a48;}
+.label-important:hover{background-color:#953b39;}
+.label-warning{background-color:#f89406;}
+.label-warning:hover{background-color:#c67605;}
+.label-success{background-color:#468847;}
+.label-success:hover{background-color:#356635;}
+.label-info{background-color:#3a87ad;}
+.label-info:hover{background-color:#2d6987;}
+.label-inverse{background-color:#333333;}
+.label-inverse:hover{background-color:#1a1a1a;}
+form{margin:0 0 18px;}
+fieldset{padding:0;margin:0;border:0;}
+legend{display:block;width:100%;padding:0;margin-bottom:27px;font-size:19.5px;line-height:36px;color:#333333;border:0;border-bottom:1px solid #eee;}legend small{font-size:13.5px;color:#999999;}
+label,input,button,select,textarea{font-size:13px;font-weight:normal;line-height:18px;}
+input,button,select,textarea{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;}
+label{display:block;margin-bottom:5px;color:#333333;}
+input,textarea,select,.uneditable-input{display:inline-block;width:210px;height:18px;padding:4px;margin-bottom:9px;font-size:13px;line-height:18px;color:#555555;border:1px solid #cccccc;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+.uneditable-textarea{width:auto;height:auto;}
+label input,label textarea,label select{display:block;}
+input[type="image"],input[type="checkbox"],input[type="radio"]{width:auto;height:auto;padding:0;margin:3px 0;*margin-top:0;line-height:normal;cursor:pointer;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;border:0 \9;}
+input[type="image"]{border:0;}
+input[type="file"]{width:auto;padding:initial;line-height:initial;border:initial;background-color:#ffffff;background-color:initial;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
+input[type="button"],input[type="reset"],input[type="submit"]{width:auto;height:auto;}
+select,input[type="file"]{height:28px;*margin-top:4px;line-height:28px;}
+input[type="file"]{line-height:18px \9;}
+select{width:220px;background-color:#ffffff;}
+select[multiple],select[size]{height:auto;}
+input[type="image"]{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
+textarea{height:auto;}
+input[type="hidden"]{display:none;}
+.radio,.checkbox{padding-left:18px;}
+.radio input[type="radio"],.checkbox input[type="checkbox"]{float:left;margin-left:-18px;}
+.controls>.radio:first-child,.controls>.checkbox:first-child{padding-top:5px;}
+.radio.inline,.checkbox.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;}
+.radio.inline+.radio.inline,.checkbox.inline+.checkbox.inline{margin-left:10px;}
+input,textarea{-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075);-webkit-transition:border linear 0.2s,box-shadow linear 0.2s;-moz-transition:border linear 0.2s,box-shadow linear 0.2s;-ms-transition:border linear 0.2s,box-shadow linear 0.2s;-o-transition:border linear 0.2s,box-shadow linear 0.2s;transition:border linear 0.2s,box-shadow linear 0.2s;}
+input:focus,textarea:focus{border-color:rgba(82, 168, 236, 0.8);-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.075),0 0 8px rgba(82, 168, 236, 0.6);outline:0;outline:thin dotted \9;}
+input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus,select:focus{-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
+.input-mini{width:60px;}
+.input-small{width:90px;}
+.input-medium{width:150px;}
+.input-large{width:210px;}
+.input-xlarge{width:270px;}
+.input-xxlarge{width:530px;}
+input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{float:none;margin-left:0;}
+input,textarea,.uneditable-input{margin-left:0;}
+input.span12, textarea.span12, .uneditable-input.span12{width:930px;}
+input.span11, textarea.span11, .uneditable-input.span11{width:850px;}
+input.span10, textarea.span10, .uneditable-input.span10{width:770px;}
+input.span9, textarea.span9, .uneditable-input.span9{width:690px;}
+input.span8, textarea.span8, .uneditable-input.span8{width:610px;}
+input.span7, textarea.span7, .uneditable-input.span7{width:530px;}
+input.span6, textarea.span6, .uneditable-input.span6{width:450px;}
+input.span5, textarea.span5, .uneditable-input.span5{width:370px;}
+input.span4, textarea.span4, .uneditable-input.span4{width:290px;}
+input.span3, textarea.span3, .uneditable-input.span3{width:210px;}
+input.span2, textarea.span2, .uneditable-input.span2{width:130px;}
+input.span1, textarea.span1, .uneditable-input.span1{width:50px;}
+input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{background-color:#eeeeee;border-color:#ddd;cursor:not-allowed;}
+.control-group.warning>label,.control-group.warning .help-block,.control-group.warning .help-inline{color:#c09853;}
+.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853;border-color:#c09853;}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;-webkit-box-shadow:0 0 6px #dbc59e;-moz-box-shadow:0 0 6px #dbc59e;box-shadow:0 0 6px #dbc59e;}
+.control-group.warning .input-prepend .add-on,.control-group.warning .input-append .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853;}
+.control-group.error>label,.control-group.error .help-block,.control-group.error .help-inline{color:#b94a48;}
+.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48;border-color:#b94a48;}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;-webkit-box-shadow:0 0 6px #d59392;-moz-box-shadow:0 0 6px #d59392;box-shadow:0 0 6px #d59392;}
+.control-group.error .input-prepend .add-on,.control-group.error .input-append .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48;}
+.control-group.success>label,.control-group.success .help-block,.control-group.success .help-inline{color:#468847;}
+.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847;border-color:#468847;}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;-webkit-box-shadow:0 0 6px #7aba7b;-moz-box-shadow:0 0 6px #7aba7b;box-shadow:0 0 6px #7aba7b;}
+.control-group.success .input-prepend .add-on,.control-group.success .input-append .add-on{color:#468847;background-color:#dff0d8;border-color:#468847;}
+input:focus:required:invalid,textarea:focus:required:invalid,select:focus:required:invalid{color:#b94a48;border-color:#ee5f5b;}input:focus:required:invalid:focus,textarea:focus:required:invalid:focus,select:focus:required:invalid:focus{border-color:#e9322d;-webkit-box-shadow:0 0 6px #f8b9b7;-moz-box-shadow:0 0 6px #f8b9b7;box-shadow:0 0 6px #f8b9b7;}
+.form-actions{padding:17px 20px 18px;margin-top:18px;margin-bottom:18px;background-color:#eeeeee;border-top:1px solid #ddd;*zoom:1;}.form-actions:before,.form-actions:after{display:table;content:"";}
+.form-actions:after{clear:both;}
+.uneditable-input{display:block;background-color:#ffffff;border-color:#eee;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.025);cursor:not-allowed;}
+:-moz-placeholder{color:#999999;}
+::-webkit-input-placeholder{color:#999999;}
+.help-block,.help-inline{color:#555555;}
+.help-block{display:block;margin-bottom:9px;}
+.help-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding-left:5px;}
+.input-prepend,.input-append{margin-bottom:5px;}.input-prepend input,.input-append input,.input-prepend select,.input-append select,.input-prepend .uneditable-input,.input-append .uneditable-input{*margin-left:0;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}.input-prepend input:focus,.input-append input:focus,.input-prepend select:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-append .uneditable-input:focus{position:relative;z-index:2;}
+.input-prepend .uneditable-input,.input-append .uneditable-input{border-left-color:#ccc;}
+.input-prepend .add-on,.input-append .add-on{display:inline-block;width:auto;min-width:16px;height:18px;padding:4px 5px;font-weight:normal;line-height:18px;text-align:center;text-shadow:0 1px 0 #ffffff;vertical-align:middle;background-color:#eeeeee;border:1px solid #ccc;}
+.input-prepend .add-on,.input-append .add-on,.input-prepend .btn,.input-append .btn{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
+.input-prepend .active,.input-append .active{background-color:#a9dba9;border-color:#46a546;}
+.input-prepend .add-on,.input-prepend .btn{margin-right:-1px;}
+.input-append input,.input-append select .uneditable-input{-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
+.input-append .uneditable-input{border-left-color:#eee;border-right-color:#ccc;}
+.input-append .add-on,.input-append .btn{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
+.input-prepend.input-append input,.input-prepend.input-append select,.input-prepend.input-append .uneditable-input{-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
+.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;-webkit-border-radius:3px 0 0 3px;-moz-border-radius:3px 0 0 3px;border-radius:3px 0 0 3px;}
+.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;-webkit-border-radius:0 3px 3px 0;-moz-border-radius:0 3px 3px 0;border-radius:0 3px 3px 0;}
+.search-query{padding-left:14px;padding-right:14px;margin-bottom:0;-webkit-border-radius:14px;-moz-border-radius:14px;border-radius:14px;}
+.form-search input,.form-inline input,.form-horizontal input,.form-search textarea,.form-inline textarea,.form-horizontal textarea,.form-search select,.form-inline select,.form-horizontal select,.form-search .help-inline,.form-inline .help-inline,.form-horizontal .help-inline,.form-search .uneditable-input,.form-inline .uneditable-input,.form-horizontal .uneditable-input,.form-search .input-prepend,.form-inline .input-prepend,.form-horizontal .input-prepend,.form-search .input-append,.form-inline .input-append,.form-horizontal .input-append{display:inline-block;margin-bottom:0;}
+.form-search .hide,.form-inline .hide,.form-horizontal .hide{display:none;}
+.form-search label,.form-inline label{display:inline-block;}
+.form-search .input-append,.form-inline .input-append,.form-search .input-prepend,.form-inline .input-prepend{margin-bottom:0;}
+.form-search .radio,.form-search .checkbox,.form-inline .radio,.form-inline .checkbox{padding-left:0;margin-bottom:0;vertical-align:middle;}
+.form-search .radio input[type="radio"],.form-search .checkbox input[type="checkbox"],.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{float:left;margin-left:0;margin-right:3px;}
+.control-group{margin-bottom:9px;}
+legend+.control-group{margin-top:18px;-webkit-margin-top-collapse:separate;}
+.form-horizontal .control-group{margin-bottom:18px;*zoom:1;}.form-horizontal .control-group:before,.form-horizontal .control-group:after{display:table;content:"";}
+.form-horizontal .control-group:after{clear:both;}
+.form-horizontal .control-label{float:left;width:140px;padding-top:5px;text-align:right;}
+.form-horizontal .controls{margin-left:160px;*display:inline-block;*margin-left:0;*padding-left:20px;}
+.form-horizontal .help-block{margin-top:9px;margin-bottom:0;}
+.form-horizontal .form-actions{padding-left:160px;}
+.btn{display:inline-block;*display:inline;*zoom:1;padding:4px 10px 4px;margin-bottom:0;font-size:13px;line-height:18px;color:#333333;text-align:center;text-shadow:0 1px 1px rgba(255, 255, 255, 0.75);vertical-align:middle;background-color:#f5f5f5;background-image:-moz-linear-gradient(top, #ffffff, #e6e6e6);background-image:-ms-linear-gradient(top, #ffffff, #e6e6e6);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));background-image:-webkit-linear-gradient(top, #ffffff, #e6e6e6);background-image:-o-linear-gradient(top, #ffffff, #e6e6e6);background-image:linear-gradient(top, #ffffff, #e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#e6e6e6', GradientType=0);border-color:#e6e6e6 #e6e6e6 #bfbfbf;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);border:1px solid #cccccc;border-bottom-color:#b3b3b3;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);cursor:pointer;*margin-left:.3em;}.btn:hover,.btn:active,.btn.active,.btn.disabled,.btn[disabled]{background-color:#e6e6e6;}
+.btn:active,.btn.active{background-color:#cccccc \9;}
+.btn:first-child{*margin-left:0;}
+.btn:hover{color:#333333;text-decoration:none;background-color:#e6e6e6;background-position:0 -15px;-webkit-transition:background-position 0.1s linear;-moz-transition:background-position 0.1s linear;-ms-transition:background-position 0.1s linear;-o-transition:background-position 0.1s linear;transition:background-position 0.1s linear;}
+.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px;}
+.btn.active,.btn:active{background-image:none;-webkit-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 2px 4px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);background-color:#e6e6e6;background-color:#d9d9d9 \9;outline:0;}
+.btn.disabled,.btn[disabled]{cursor:default;background-image:none;background-color:#e6e6e6;opacity:0.65;filter:alpha(opacity=65);-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
+.btn-large{padding:9px 14px;font-size:15px;line-height:normal;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
+.btn-large [class^="icon-"]{margin-top:1px;}
+.btn-small{padding:5px 9px;font-size:11px;line-height:16px;}
+.btn-small [class^="icon-"]{margin-top:-1px;}
+.btn-mini{padding:2px 6px;font-size:11px;line-height:14px;}
+.btn-primary,.btn-primary:hover,.btn-warning,.btn-warning:hover,.btn-danger,.btn-danger:hover,.btn-success,.btn-success:hover,.btn-info,.btn-info:hover,.btn-inverse,.btn-inverse:hover{text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);color:#ffffff;}
+.btn-primary.active,.btn-warning.active,.btn-danger.active,.btn-success.active,.btn-info.active,.btn-inverse.active{color:rgba(255, 255, 255, 0.75);}
+.btn-primary{background-color:#0074cc;background-image:-moz-linear-gradient(top, #0088cc, #0055cc);background-image:-ms-linear-gradient(top, #0088cc, #0055cc);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0055cc));background-image:-webkit-linear-gradient(top, #0088cc, #0055cc);background-image:-o-linear-gradient(top, #0088cc, #0055cc);background-image:linear-gradient(top, #0088cc, #0055cc);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#0088cc', endColorstr='#0055cc', GradientType=0);border-color:#0055cc #0055cc #003580;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-primary:hover,.btn-primary:active,.btn-primary.active,.btn-primary.disabled,.btn-primary[disabled]{background-color:#0055cc;}
+.btn-primary:active,.btn-primary.active{background-color:#004099 \9;}
+.btn-warning{background-color:#faa732;background-image:-moz-linear-gradient(top, #fbb450, #f89406);background-image:-ms-linear-gradient(top, #fbb450, #f89406);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));background-image:-webkit-linear-gradient(top, #fbb450, #f89406);background-image:-o-linear-gradient(top, #fbb450, #f89406);background-image:linear-gradient(top, #fbb450, #f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fbb450', endColorstr='#f89406', GradientType=0);border-color:#f89406 #f89406 #ad6704;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-warning:hover,.btn-warning:active,.btn-warning.active,.btn-warning.disabled,.btn-warning[disabled]{background-color:#f89406;}
+.btn-warning:active,.btn-warning.active{background-color:#c67605 \9;}
+.btn-danger{background-color:#da4f49;background-image:-moz-linear-gradient(top, #ee5f5b, #bd362f);background-image:-ms-linear-gradient(top, #ee5f5b, #bd362f);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));background-image:-webkit-linear-gradient(top, #ee5f5b, #bd362f);background-image:-o-linear-gradient(top, #ee5f5b, #bd362f);background-image:linear-gradient(top, #ee5f5b, #bd362f);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ee5f5b', endColorstr='#bd362f', GradientType=0);border-color:#bd362f #bd362f #802420;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-danger:hover,.btn-danger:active,.btn-danger.active,.btn-danger.disabled,.btn-danger[disabled]{background-color:#bd362f;}
+.btn-danger:active,.btn-danger.active{background-color:#942a25 \9;}
+.btn-success{background-color:#5bb75b;background-image:-moz-linear-gradient(top, #62c462, #51a351);background-image:-ms-linear-gradient(top, #62c462, #51a351);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));background-image:-webkit-linear-gradient(top, #62c462, #51a351);background-image:-o-linear-gradient(top, #62c462, #51a351);background-image:linear-gradient(top, #62c462, #51a351);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#62c462', endColorstr='#51a351', GradientType=0);border-color:#51a351 #51a351 #387038;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-success:hover,.btn-success:active,.btn-success.active,.btn-success.disabled,.btn-success[disabled]{background-color:#51a351;}
+.btn-success:active,.btn-success.active{background-color:#408140 \9;}
+.btn-info{background-color:#49afcd;background-image:-moz-linear-gradient(top, #5bc0de, #2f96b4);background-image:-ms-linear-gradient(top, #5bc0de, #2f96b4);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));background-image:-webkit-linear-gradient(top, #5bc0de, #2f96b4);background-image:-o-linear-gradient(top, #5bc0de, #2f96b4);background-image:linear-gradient(top, #5bc0de, #2f96b4);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#5bc0de', endColorstr='#2f96b4', GradientType=0);border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-info:hover,.btn-info:active,.btn-info.active,.btn-info.disabled,.btn-info[disabled]{background-color:#2f96b4;}
+.btn-info:active,.btn-info.active{background-color:#24748c \9;}
+.btn-inverse{background-color:#414141;background-image:-moz-linear-gradient(top, #555555, #222222);background-image:-ms-linear-gradient(top, #555555, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#555555), to(#222222));background-image:-webkit-linear-gradient(top, #555555, #222222);background-image:-o-linear-gradient(top, #555555, #222222);background-image:linear-gradient(top, #555555, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#555555', endColorstr='#222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);}.btn-inverse:hover,.btn-inverse:active,.btn-inverse.active,.btn-inverse.disabled,.btn-inverse[disabled]{background-color:#222222;}
+.btn-inverse:active,.btn-inverse.active{background-color:#080808 \9;}
+button.btn,input[type="submit"].btn{*padding-top:2px;*padding-bottom:2px;}button.btn::-moz-focus-inner,input[type="submit"].btn::-moz-focus-inner{padding:0;border:0;}
+button.btn.btn-large,input[type="submit"].btn.btn-large{*padding-top:7px;*padding-bottom:7px;}
+button.btn.btn-small,input[type="submit"].btn.btn-small{*padding-top:3px;*padding-bottom:3px;}
+button.btn.btn-mini,input[type="submit"].btn.btn-mini{*padding-top:1px;*padding-bottom:1px;}
+.btn-group{position:relative;*zoom:1;*margin-left:.3em;}.btn-group:before,.btn-group:after{display:table;content:"";}
+.btn-group:after{clear:both;}
+.btn-group:first-child{*margin-left:0;}
+.btn-group+.btn-group{margin-left:5px;}
+.btn-toolbar{margin-top:9px;margin-bottom:9px;}.btn-toolbar .btn-group{display:inline-block;*display:inline;*zoom:1;}
+.btn-group .btn{position:relative;float:left;margin-left:-1px;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
+.btn-group .btn:first-child{margin-left:0;-webkit-border-top-left-radius:4px;-moz-border-radius-topleft:4px;border-top-left-radius:4px;-webkit-border-bottom-left-radius:4px;-moz-border-radius-bottomleft:4px;border-bottom-left-radius:4px;}
+.btn-group .btn:last-child,.btn-group .dropdown-toggle{-webkit-border-top-right-radius:4px;-moz-border-radius-topright:4px;border-top-right-radius:4px;-webkit-border-bottom-right-radius:4px;-moz-border-radius-bottomright:4px;border-bottom-right-radius:4px;}
+.btn-group .btn.large:first-child{margin-left:0;-webkit-border-top-left-radius:6px;-moz-border-radius-topleft:6px;border-top-left-radius:6px;-webkit-border-bottom-left-radius:6px;-moz-border-radius-bottomleft:6px;border-bottom-left-radius:6px;}
+.btn-group .btn.large:last-child,.btn-group .large.dropdown-toggle{-webkit-border-top-right-radius:6px;-moz-border-radius-topright:6px;border-top-right-radius:6px;-webkit-border-bottom-right-radius:6px;-moz-border-radius-bottomright:6px;border-bottom-right-radius:6px;}
+.btn-group .btn:hover,.btn-group .btn:focus,.btn-group .btn:active,.btn-group .btn.active{z-index:2;}
+.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0;}
+.btn-group .dropdown-toggle{padding-left:8px;padding-right:8px;-webkit-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 1px 0 0 rgba(255, 255, 255, 0.125),inset 0 1px 0 rgba(255, 255, 255, 0.2),0 1px 2px rgba(0, 0, 0, 0.05);*padding-top:3px;*padding-bottom:3px;}
+.btn-group .btn-mini.dropdown-toggle{padding-left:5px;padding-right:5px;*padding-top:1px;*padding-bottom:1px;}
+.btn-group .btn-small.dropdown-toggle{*padding-top:4px;*padding-bottom:4px;}
+.btn-group .btn-large.dropdown-toggle{padding-left:12px;padding-right:12px;}
+.btn-group.open{*z-index:1000;}.btn-group.open .dropdown-menu{display:block;margin-top:1px;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;}
+.btn-group.open .dropdown-toggle{background-image:none;-webkit-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 6px rgba(0, 0, 0, 0.15),0 1px 2px rgba(0, 0, 0, 0.05);}
+.btn .caret{margin-top:7px;margin-left:0;}
+.btn:hover .caret,.open.btn-group .caret{opacity:1;filter:alpha(opacity=100);}
+.btn-mini .caret{margin-top:5px;}
+.btn-small .caret{margin-top:6px;}
+.btn-large .caret{margin-top:6px;border-left:5px solid transparent;border-right:5px solid transparent;border-top:5px solid #000000;}
+.btn-primary .caret,.btn-warning .caret,.btn-danger .caret,.btn-info .caret,.btn-success .caret,.btn-inverse .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;opacity:0.75;filter:alpha(opacity=75);}
+.navbar{*position:relative;*z-index:2;overflow:visible;margin-bottom:18px;}
+.navbar-inner{padding-left:20px;padding-right:20px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);-moz-box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);box-shadow:0 1px 3px rgba(0, 0, 0, 0.25),inset 0 -1px 0 rgba(0, 0, 0, 0.1);}
+.navbar .container{width:auto;}
+.btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;background-color:#2c2c2c;background-image:-moz-linear-gradient(top, #333333, #222222);background-image:-ms-linear-gradient(top, #333333, #222222);background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#333333), to(#222222));background-image:-webkit-linear-gradient(top, #333333, #222222);background-image:-o-linear-gradient(top, #333333, #222222);background-image:linear-gradient(top, #333333, #222222);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#333333', endColorstr='#222222', GradientType=0);border-color:#222222 #222222 #000000;border-color:rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);filter:progid:dximagetransform.microsoft.gradient(enabled=false);-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.075);}.btn-navbar:hover,.btn-navbar:active,.btn-navbar.active,.btn-navbar.disabled,.btn-navbar[disabled]{background-color:#222222;}
+.btn-navbar:active,.btn-navbar.active{background-color:#080808 \9;}
+.btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;-webkit-border-radius:1px;-moz-border-radius:1px;border-radius:1px;-webkit-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);-moz-box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);box-shadow:0 1px 0 rgba(0, 0, 0, 0.25);}
+.btn-navbar .icon-bar+.icon-bar{margin-top:3px;}
+.nav-collapse.collapse{height:auto;}
+.navbar{color:#999999;}.navbar .brand:hover{text-decoration:none;}
+.navbar .brand{float:left;display:block;padding:8px 20px 12px;margin-left:-20px;font-size:20px;font-weight:200;line-height:1;color:#ffffff;}
+.navbar .navbar-text{margin-bottom:0;line-height:40px;}
+.navbar .btn,.navbar .btn-group{margin-top:5px;}
+.navbar .btn-group .btn{margin-top:0;}
+.navbar-form{margin-bottom:0;*zoom:1;}.navbar-form:before,.navbar-form:after{display:table;content:"";}
+.navbar-form:after{clear:both;}
+.navbar-form input,.navbar-form select,.navbar-form .radio,.navbar-form .checkbox{margin-top:5px;}
+.navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0;}
+.navbar-form input[type="image"],.navbar-form input[type="checkbox"],.navbar-form input[type="radio"]{margin-top:3px;}
+.navbar-form .input-append,.navbar-form .input-prepend{margin-top:6px;white-space:nowrap;}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0;}
+.navbar-search{position:relative;float:left;margin-top:6px;margin-bottom:0;}.navbar-search .search-query{padding:4px 9px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:13px;font-weight:normal;line-height:1;color:#ffffff;background-color:#626262;border:1px solid #151515;-webkit-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-moz-box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);box-shadow:inset 0 1px 2px rgba(0, 0, 0, 0.1),0 1px 0px rgba(255, 255, 255, 0.15);-webkit-transition:none;-moz-transition:none;-ms-transition:none;-o-transition:none;transition:none;}.navbar-search .search-query:-moz-placeholder{color:#cccccc;}
+.navbar-search .search-query::-webkit-input-placeholder{color:#cccccc;}
+.navbar-search .search-query:focus,.navbar-search .search-query.focused{padding:5px 10px;color:#333333;text-shadow:0 1px 0 #ffffff;background-color:#ffffff;border:0;-webkit-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);-moz-box-shadow:0 0 3px rgba(0, 0, 0, 0.15);box-shadow:0 0 3px rgba(0, 0, 0, 0.15);outline:0;}
+.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0;}
+.navbar-fixed-top .navbar-inner,.navbar-fixed-bottom .navbar-inner{padding-left:0;padding-right:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;}
+.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:940px;}
+.navbar-fixed-top{top:0;}
+.navbar-fixed-bottom{bottom:0;}
+.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0;}
+.navbar .nav.pull-right{float:right;}
+.navbar .nav>li{display:block;float:left;}
+.navbar .nav>li>a{float:none;padding:10px 10px 11px;line-height:19px;color:#999999;text-decoration:none;text-shadow:0 -1px 0 rgba(0, 0, 0, 0.25);}
+.navbar .nav>li>a:hover{background-color:transparent;color:#ffffff;text-decoration:none;}
+.navbar .nav .active>a,.navbar .nav .active>a:hover{color:#ffffff;text-decoration:none;background-color:#222222;}
+.navbar .divider-vertical{height:40px;width:1px;margin:0 9px;overflow:hidden;background-color:#222222;border-right:1px solid #333333;}
+.navbar .nav.pull-right{margin-left:10px;margin-right:0;}
+.navbar .dropdown-menu{margin-top:1px;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;}.navbar .dropdown-menu:before{content:'';display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0, 0, 0, 0.2);position:absolute;top:-7px;left:9px;}
+.navbar .dropdown-menu:after{content:'';display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #ffffff;position:absolute;top:-6px;left:10px;}
+.navbar-fixed-bottom .dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0, 0, 0, 0.2);border-bottom:0;bottom:-7px;top:auto;}
+.navbar-fixed-bottom .dropdown-menu:after{border-top:6px solid #ffffff;border-bottom:0;bottom:-6px;top:auto;}
+.navbar .nav .dropdown-toggle .caret,.navbar .nav .open.dropdown .caret{border-top-color:#ffffff;border-bottom-color:#ffffff;}
+.navbar .nav .active .caret{opacity:1;filter:alpha(opacity=100);}
+.navbar .nav .open>.dropdown-toggle,.navbar .nav .active>.dropdown-toggle,.navbar .nav .open.active>.dropdown-toggle{background-color:transparent;}
+.navbar .nav .active>.dropdown-toggle:hover{color:#ffffff;}
+.navbar .nav.pull-right .dropdown-menu,.navbar .nav .dropdown-menu.pull-right{left:auto;right:0;}.navbar .nav.pull-right .dropdown-menu:before,.navbar .nav .dropdown-menu.pull-right:before{left:auto;right:12px;}
+.navbar .nav.pull-right .dropdown-menu:after,.navbar .nav .dropdown-menu.pull-right:after{left:auto;right:13px;}
+.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #eee;border:1px solid rgba(0, 0, 0, 0.05);-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);-moz-box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);box-shadow:inset 0 1px 1px rgba(0, 0, 0, 0.05);}.well blockquote{border-color:#ddd;border-color:rgba(0, 0, 0, 0.15);}
+.well-large{padding:24px;-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;}
+.well-small{padding:9px;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;}
+.pull-right{float:right;}
+.pull-left{float:left;}
+.hide{display:none;}
+.show{display:block;}
+.invisible{visibility:hidden;}
+.hidden{display:none;visibility:hidden;}
+.visible-phone{display:none;}
+.visible-tablet{display:none;}
+.visible-desktop{display:block;}
+.hidden-phone{display:block;}
+.hidden-tablet{display:block;}
+.hidden-desktop{display:none;}
+@media (max-width:767px){.visible-phone{display:block;} .hidden-phone{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}@media (min-width:768px) and (max-width:979px){.visible-tablet{display:block;} .hidden-tablet{display:none;} .hidden-desktop{display:block;} .visible-desktop{display:none;}}@media (max-width:480px){.nav-collapse{-webkit-transform:translate3d(0, 0, 0);} .page-header h1 small{display:block;line-height:18px;} input[type="checkbox"],input[type="radio"]{border:1px solid #ccc;} .form-horizontal .control-group>label{float:none;width:auto;padding-top:0;text-align:left;} .form-horizontal .controls{margin-left:0;} .form-horizontal .control-list{padding-top:0;} .form-horizontal .form-actions{padding-left:10px;padding-right:10px;} .modal{position:absolute;top:10px;left:10px;right:10px;width:auto;margin:0;}.modal.fade.in{top:auto;} .modal-header .close{padding:10px;margin:-10px;} .carousel-caption{position:static;}}@media (max-width:767px){body{padding-left:20px;padding-right:20px;} .navbar-fixed-top{margin-left:-20px;margin-right:-20px;} .container{width:auto;} .row-fluid{width:100%;} .row{margin-left:0;} .row>[class*="span"],.row-fluid>[class*="span"]{float:none;display:block;width:auto;margin:0;} .thumbnails [class*="span"]{width:auto;} input[class*="span"],select[class*="span"],textarea[class*="span"],.uneditable-input{display:block;width:100%;min-height:28px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;-ms-box-sizing:border-box;box-sizing:border-box;} .input-prepend input[class*="span"],.input-append input[class*="span"]{width:auto;}}@media (min-width:768px) and (max-width:979px){.row{margin-left:-20px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:20px;} .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:724px;} .span12{width:724px;} .span11{width:662px;} .span10{width:600px;} .span9{width:538px;} .span8{width:476px;} .span7{width:414px;} .span6{width:352px;} .span5{width:290px;} .span4{width:228px;} .span3{width:166px;} .span2{width:104px;} .span1{width:42px;} .offset12{margin-left:764px;} .offset11{margin-left:702px;} .offset10{margin-left:640px;} .offset9{margin-left:578px;} .offset8{margin-left:516px;} .offset7{margin-left:454px;} .offset6{margin-left:392px;} .offset5{margin-left:330px;} .offset4{margin-left:268px;} .offset3{margin-left:206px;} .offset2{margin-left:144px;} .offset1{margin-left:82px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.762430939%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid > .span12{width:99.999999993%;} .row-fluid > .span11{width:91.436464082%;} .row-fluid > .span10{width:82.87292817100001%;} .row-fluid > .span9{width:74.30939226%;} .row-fluid > .span8{width:65.74585634900001%;} .row-fluid > .span7{width:57.182320438000005%;} .row-fluid > .span6{width:48.618784527%;} .row-fluid > .span5{width:40.055248616%;} .row-fluid > .span4{width:31.491712705%;} .row-fluid > .span3{width:22.928176794%;} .row-fluid > .span2{width:14.364640883%;} .row-fluid > .span1{width:5.801104972%;} input,textarea,.uneditable-input{margin-left:0;} input.span12, textarea.span12, .uneditable-input.span12{width:714px;} input.span11, textarea.span11, .uneditable-input.span11{width:652px;} input.span10, textarea.span10, .uneditable-input.span10{width:590px;} input.span9, textarea.span9, .uneditable-input.span9{width:528px;} input.span8, textarea.span8, .uneditable-input.span8{width:466px;} input.span7, textarea.span7, .uneditable-input.span7{width:404px;} input.span6, textarea.span6, .uneditable-input.span6{width:342px;} input.span5, textarea.span5, .uneditable-input.span5{width:280px;} input.span4, textarea.span4, .uneditable-input.span4{width:218px;} input.span3, textarea.span3, .uneditable-input.span3{width:156px;} input.span2, textarea.span2, .uneditable-input.span2{width:94px;} input.span1, textarea.span1, .uneditable-input.span1{width:32px;}}@media (max-width:979px){body{padding-top:0;} .navbar-fixed-top{position:static;margin-bottom:18px;} .navbar-fixed-top .navbar-inner{padding:5px;} .navbar .container{width:auto;padding:0;} .navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px;} .navbar .nav-collapse{clear:left;} .navbar .nav{float:none;margin:0 0 9px;} .navbar .nav>li{float:none;} .navbar .nav>li>a{margin-bottom:2px;} .navbar .nav>.divider-vertical{display:none;} .navbar .nav .nav-header{color:#999999;text-shadow:none;} .navbar .nav>li>a,.navbar .dropdown-menu a{padding:6px 15px;font-weight:bold;color:#999999;-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px;} .navbar .dropdown-menu li+li a{margin-bottom:2px;} .navbar .nav>li>a:hover,.navbar .dropdown-menu a:hover{background-color:#222222;} .navbar .dropdown-menu{position:static;top:auto;left:auto;float:none;display:block;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;} .navbar .dropdown-menu:before,.navbar .dropdown-menu:after{display:none;} .navbar .dropdown-menu .divider{display:none;} .navbar-form,.navbar-search{float:none;padding:9px 15px;margin:9px 0;border-top:1px solid #222222;border-bottom:1px solid #222222;-webkit-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);-moz-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.1),0 1px 0 rgba(255, 255, 255, 0.1);} .navbar .nav.pull-right{float:none;margin-left:0;} .navbar-static .navbar-inner{padding-left:10px;padding-right:10px;} .btn-navbar{display:block;} .nav-collapse{overflow:hidden;height:0;}}@media (min-width:980px){.nav-collapse.collapse{height:auto !important;overflow:visible !important;}}@media (min-width:1200px){.row{margin-left:-30px;*zoom:1;}.row:before,.row:after{display:table;content:"";} .row:after{clear:both;} [class*="span"]{float:left;margin-left:30px;} .container,.navbar-fixed-top .container,.navbar-fixed-bottom .container{width:1170px;} .span12{width:1170px;} .span11{width:1070px;} .span10{width:970px;} .span9{width:870px;} .span8{width:770px;} .span7{width:670px;} .span6{width:570px;} .span5{width:470px;} .span4{width:370px;} .span3{width:270px;} .span2{width:170px;} .span1{width:70px;} .offset12{margin-left:1230px;} .offset11{margin-left:1130px;} .offset10{margin-left:1030px;} .offset9{margin-left:930px;} .offset8{margin-left:830px;} .offset7{margin-left:730px;} .offset6{margin-left:630px;} .offset5{margin-left:530px;} .offset4{margin-left:430px;} .offset3{margin-left:330px;} .offset2{margin-left:230px;} .offset1{margin-left:130px;} .row-fluid{width:100%;*zoom:1;}.row-fluid:before,.row-fluid:after{display:table;content:"";} .row-fluid:after{clear:both;} .row-fluid>[class*="span"]{float:left;margin-left:2.564102564%;} .row-fluid>[class*="span"]:first-child{margin-left:0;} .row-fluid > .span12{width:100%;} .row-fluid > .span11{width:91.45299145300001%;} .row-fluid > .span10{width:82.905982906%;} .row-fluid > .span9{width:74.358974359%;} .row-fluid > .span8{width:65.81196581200001%;} .row-fluid > .span7{width:57.264957265%;} .row-fluid > .span6{width:48.717948718%;} .row-fluid > .span5{width:40.170940171000005%;} .row-fluid > .span4{width:31.623931624%;} .row-fluid > .span3{width:23.076923077%;} .row-fluid > .span2{width:14.529914530000001%;} .row-fluid > .span1{width:5.982905983%;} input,textarea,.uneditable-input{margin-left:0;} input.span12, textarea.span12, .uneditable-input.span12{width:1160px;} input.span11, textarea.span11, .uneditable-input.span11{width:1060px;} input.span10, textarea.span10, .uneditable-input.span10{width:960px;} input.span9, textarea.span9, .uneditable-input.span9{width:860px;} input.span8, textarea.span8, .uneditable-input.span8{width:760px;} input.span7, textarea.span7, .uneditable-input.span7{width:660px;} input.span6, textarea.span6, .uneditable-input.span6{width:560px;} input.span5, textarea.span5, .uneditable-input.span5{width:460px;} input.span4, textarea.span4, .uneditable-input.span4{width:360px;} input.span3, textarea.span3, .uneditable-input.span3{width:260px;} input.span2, textarea.span2, .uneditable-input.span2{width:160px;} input.span1, textarea.span1, .uneditable-input.span1{width:60px;} .thumbnails{margin-left:-30px;} .thumbnails>li{margin-left:30px;}}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/bootstrap/js/bootstrap.min.js b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/bootstrap/js/bootstrap.min.js
new file mode 100644
index 0000000..395a3d8
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/bootstrap/js/bootstrap.min.js
@@ -0,0 +1,7 @@
+/**
+* Bootstrap.js by @fat & @mdo
+* plugins: bootstrap-button.js
+* Copyright 2012 Twitter, Inc.
+* http://www.apache.org/licenses/LICENSE-2.0.txt
+*/
+!function(a){var b=function(b,c){this.$element=a(b),this.options=a.extend({},a.fn.button.defaults,c)};b.prototype={constructor:b,setState:function(a){var b="disabled",c=this.$element,d=c.data(),e=c.is("input")?"val":"html";a+="Text",d.resetText||c.data("resetText",c[e]()),c[e](d[a]||this.options[a]),setTimeout(function(){a=="loadingText"?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},toggle:function(){var a=this.$element.parent('[data-toggle="buttons-radio"]');a&&a.find(".active").removeClass("active"),this.$element.toggleClass("active")}},a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("button"),f=typeof c=="object"&&c;e||d.data("button",e=new b(this,f)),c=="toggle"?e.toggle():c&&e.setState(c)})},a.fn.button.defaults={loadingText:"loading..."},a.fn.button.Constructor=b,a(function(){a("body").on("click.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle")})})}(window.jQuery) \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/jquery-1.12.4.min.js b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/jquery-1.12.4.min.js
new file mode 100644
index 0000000..441b9a1
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/jquery-1.12.4.min.js
@@ -0,0 +1,5 @@
+/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */
+!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=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.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 e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.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()},push:g,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!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));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||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},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){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[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):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[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,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"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=ga(),z=ga(),A=ga(),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="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),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")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=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)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){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 fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(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 la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(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 oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.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]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);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"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' 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(".#.+[+~]")}),ia(function(a){var b=n.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=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.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===n||a.ownerDocument===v&&t(v,a)?-1:b===n||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,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!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 fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.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},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.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=fa.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=fa.selectors={cacheLength:50,createPseudo:ha,match:W,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(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===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]||fa.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]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.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(ba,ca).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=fa.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(P," ")+" ").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,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(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:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(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:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).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 Y.test(a.nodeName)},input:function(a){return X.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:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(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]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.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=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[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?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(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,k=[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(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(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 ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(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 va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(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=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(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=[ra(sa(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 va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.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(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.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(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(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}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=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},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(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(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==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=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.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.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&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 u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document: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&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},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().progress(c.notify).done(c.resolve).fail(c.reject):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=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;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||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(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){}n.data(a,b,c)}else c=void 0;
+}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),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=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){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])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(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 n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,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=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.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",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=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)Y(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},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="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 ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={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:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=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(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.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=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(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.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!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&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(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)>-1: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},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},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(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(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){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},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?pa:qa):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={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,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}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,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=qa),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 ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(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 Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}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 Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=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},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.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%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.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+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(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}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(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+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,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":l.cssFloat?"cssFloat":"styleFloat"},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;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{
+ marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":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+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(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 cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.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):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.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},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(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++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(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 qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),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:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),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.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,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(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.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(W).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=qb(this,n.extend({},a),f);(e||n._data(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=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.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=n._data(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(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("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=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=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(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/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(rb,""):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)).replace(sb," ")}},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)&&(l.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--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(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(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(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){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),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)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;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 Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(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:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,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":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},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(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var 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.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(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()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(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)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},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")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.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(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},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",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.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(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.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(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.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||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),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||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,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};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}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)&&n.inArray("auto",[f,i])>-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,n.extend({},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={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.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 Y(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.extend({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)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n}); \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/less-1.7.5.min.js b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/less-1.7.5.min.js
new file mode 100644
index 0000000..1d17693
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/gui/third-party/less-1.7.5.min.js
@@ -0,0 +1,16 @@
+/*!
+ * Less - Leaner CSS v1.7.5
+ * http://lesscss.org
+ *
+ * Copyright (c) 2009-2014, Alexis Sellier <self@cloudhead.net>
+ * Licensed under the Apache v2 License.
+ *
+ */
+
+ /** * @license Apache v2
+ */
+
+!function(a,b){function c(b){return a.less[b.split("/")[1]]}function d(a,b){"undefined"!=typeof console&&w.logLevel>=b&&console.log("less: "+a)}function e(a){return a.replace(/^[a-z-]+:\/+?[^\/]+/,"").replace(/^\//,"").replace(/\.[a-zA-Z]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")}function f(a,c){var e="{line} {content}",f=a.filename||c,g=[],h=(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+" in "+f+" ",i=function(a,c,d){a.extract[c]!==b&&g.push(e.replace(/\{line\}/,(parseInt(a.line,10)||0)+(c-1)).replace(/\{class\}/,d).replace(/\{content\}/,a.extract[c]))};a.extract?(i(a,0,""),i(a,1,"line"),i(a,2,""),h+="on line "+a.line+", column "+(a.column+1)+":\n"+g.join("\n")):a.stack&&(h+=a.stack),d(h,z.errors)}function g(a,b,c){var f=b.href||"",g="less:"+(b.title||e(f)),h=document.getElementById(g),i=!1,j=document.createElement("style");j.setAttribute("type","text/css"),b.media&&j.setAttribute("media",b.media),j.id=g,j.styleSheet||(j.appendChild(document.createTextNode(a)),i=null!==h&&h.childNodes.length>0&&j.childNodes.length>0&&h.firstChild.nodeValue===j.firstChild.nodeValue);var k=document.getElementsByTagName("head")[0];if(null===h||i===!1){var l=b&&b.nextSibling||null;l?l.parentNode.insertBefore(j,l):k.appendChild(j)}if(h&&i===!1&&h.parentNode.removeChild(h),j.styleSheet)try{j.styleSheet.cssText=a}catch(m){throw new Error("Couldn't reassign styleSheet.cssText.")}if(c&&D){d("saving "+f+" to cache.",z.info);try{D.setItem(f,a),D.setItem(f+":timestamp",c)}catch(m){d("failed to save",z.errors)}}}function h(a){return w.postProcessor&&"function"==typeof w.postProcessor&&(a=w.postProcessor.call(a,a)||a),a}function i(a,c){var d,f,h="less-error-message:"+e(c||""),i='<li><label>{line}</label><pre class="{class}">{content}</pre></li>',j=document.createElement("div"),k=[],l=a.filename||c,m=l.match(/([^\/]+(\?.*)?)$/)[1];j.id=h,j.className="less-error-message",f="<h3>"+(a.type||"Syntax")+"Error: "+(a.message||"There is an error in your .less file")+'</h3><p>in <a href="'+l+'">'+m+"</a> ";var n=function(a,c,d){a.extract[c]!==b&&k.push(i.replace(/\{line\}/,(parseInt(a.line,10)||0)+(c-1)).replace(/\{class\}/,d).replace(/\{content\}/,a.extract[c]))};a.extract?(n(a,0,""),n(a,1,"line"),n(a,2,""),f+="on line "+a.line+", column "+(a.column+1)+":</p><ul>"+k.join("")+"</ul>"):a.stack&&(f+="<br/>"+a.stack.split("\n").slice(1).join("<br/>")),j.innerHTML=f,g([".less-error-message ul, .less-error-message li {","list-style-type: none;","margin-right: 15px;","padding: 4px 0;","margin: 0;","}",".less-error-message label {","font-size: 12px;","margin-right: 15px;","padding: 4px 0;","color: #cc7777;","}",".less-error-message pre {","color: #dd6666;","padding: 4px 0;","margin: 0;","display: inline-block;","}",".less-error-message pre.line {","color: #ff0000;","}",".less-error-message h3 {","font-size: 20px;","font-weight: bold;","padding: 15px 0 5px 0;","margin: 0;","}",".less-error-message a {","color: #10a","}",".less-error-message .error {","color: red;","font-weight: bold;","padding-bottom: 2px;","border-bottom: 1px dashed red;","}"].join("\n"),{title:"error-message"}),j.style.cssText=["font-family: Arial, sans-serif","border: 1px solid #e00","background-color: #eee","border-radius: 5px","-webkit-border-radius: 5px","-moz-border-radius: 5px","color: #e00","padding: 15px","margin-bottom: 15px"].join(";"),"development"==w.env&&(d=setInterval(function(){document.body&&(document.getElementById(h)?document.body.replaceChild(j,document.getElementById(h)):document.body.insertBefore(j,document.body.firstChild),clearInterval(d))},10))}function j(a,b){w.errorReporting&&"html"!==w.errorReporting?"console"===w.errorReporting?f(a,b):"function"==typeof w.errorReporting&&w.errorReporting("add",a,b):i(a,b)}function k(a){var b=document.getElementById("less-error-message:"+e(a));b&&b.parentNode.removeChild(b)}function l(){}function m(a){w.errorReporting&&"html"!==w.errorReporting?"console"===w.errorReporting?l(a):"function"==typeof w.errorReporting&&w.errorReporting("remove",a):k(a)}function n(a){for(var b,c=document.getElementsByTagName("style"),d=0;d<c.length;d++)if(b=c[d],b.type.match(C)){var e=new w.tree.parseEnv(w),f=b.innerHTML||"";e.filename=document.location.href.replace(/#.*$/,""),(a||w.globalVars)&&(e.useFileCache=!0);var g=function(a){return function(b,c){if(b)return j(b,"inline");var d=c.toCSS(w);a.type="text/css",a.styleSheet?a.styleSheet.cssText=d:a.innerHTML=d}}(b);new w.Parser(e).parse(f,g,{globalVars:w.globalVars,modifyVars:a})}}function o(a,b){var c,d,e=/^((?:[a-z-]+:)?\/+?(?:[^\/\?#]*\/)|([\/\\]))?((?:[^\/\\\?#]*[\/\\])*)([^\/\\\?#]*)([#\?].*)?$/i,f=a.match(e),g={},h=[];if(!f)throw new Error("Could not parse sheet href - '"+a+"'");if(!f[1]||f[2]){if(d=b.match(e),!d)throw new Error("Could not parse page url - '"+b+"'");f[1]=f[1]||d[1]||"",f[2]||(f[3]=d[3]+f[3])}if(f[3]){for(h=f[3].replace(/\\/g,"/").split("/"),c=0;c<h.length;c++)"."===h[c]&&(h.splice(c,1),c-=1);for(c=0;c<h.length;c++)".."===h[c]&&c>0&&(h.splice(c-1,2),c-=2)}return g.hostPart=f[1],g.directories=h,g.path=f[1]+h.join("/"),g.fileUrl=g.path+(f[4]||""),g.url=g.fileUrl+(f[5]||""),g}function p(a,b){var c,d,e,f,g=o(a),h=o(b),i="";if(g.hostPart!==h.hostPart)return"";for(d=Math.max(h.directories.length,g.directories.length),c=0;d>c&&h.directories[c]===g.directories[c];c++);for(f=h.directories.slice(c),e=g.directories.slice(c),c=0;c<f.length-1;c++)i+="../";for(c=0;c<e.length-1;c++)i+=e[c]+"/";return i}function q(){if(a.XMLHttpRequest&&!("file:"===a.location.protocol&&"ActiveXObject"in a))return new XMLHttpRequest;try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(b){return d("browser doesn't support AJAX.",z.errors),null}}function r(a,b,c,e){function f(b,c,d){b.status>=200&&b.status<300?c(b.responseText,b.getResponseHeader("Last-Modified")):"function"==typeof d&&d(b.status,a)}var g=q(),h=y?w.fileAsync:w.async;"function"==typeof g.overrideMimeType&&g.overrideMimeType("text/css"),d("XHR: Getting '"+a+"'",z.debug),g.open("GET",a,h),g.setRequestHeader("Accept",b||"text/x-less, text/css; q=0.9, */*; q=0.5"),g.send(null),y&&!w.fileAsync?0===g.status||g.status>=200&&g.status<300?c(g.responseText):e(g.status,a):h?g.onreadystatechange=function(){4==g.readyState&&f(g,c,e)}:f(g,c,e)}function s(b,c,d,e){c&&c.currentDirectory&&!/^([A-Za-z-]+:)?\//.test(b)&&(b=c.currentDirectory+b);var f=o(b,a.location.href),g=f.url,h={currentDirectory:f.path,filename:g};if(c?(h.entryPath=c.entryPath,h.rootpath=c.rootpath,h.rootFilename=c.rootFilename,h.relativeUrls=c.relativeUrls):(h.entryPath=f.path,h.rootpath=w.rootpath||f.path,h.rootFilename=g,h.relativeUrls=e.relativeUrls),h.relativeUrls&&(h.rootpath=e.rootpath?o(e.rootpath+p(f.path,h.entryPath)).path:f.path),e.useFileCache&&E[g])try{var i=E[g];d(null,i,g,h,{lastModified:new Date})}catch(j){d(j,null,g)}else r(g,e.mime,function(a,b){E[g]=a;try{d(null,a,g,h,{lastModified:b})}catch(c){d(c,null,g)}},function(a,b){d({type:"File",message:"'"+b+"' wasn't found ("+a+")"},null,g)})}function t(a,b,c,d,e){var f=new w.tree.parseEnv(w);f.mime=a.type,(e||w.globalVars)&&(f.useFileCache=!0),s(a.href,null,function(h,i,j,k,l){if(l){l.remaining=d;var n=D&&D.getItem(j),o=D&&D.getItem(j+":timestamp");if(!c&&o&&l.lastModified&&new Date(l.lastModified).valueOf()===new Date(o).valueOf())return g(n,a),l.local=!0,void b(null,null,i,a,l,j)}m(j),i?(f.currentFileInfo=k,new w.Parser(f).parse(i,function(c,d){if(c)return b(c,null,null,a);try{b(c,d,i,a,l,j)}catch(c){b(c,null,null,a)}},{modifyVars:e,globalVars:w.globalVars})):b(h,null,null,a,l,j)},f,e)}function u(a,b,c){for(var d=0;d<w.sheets.length;d++)t(w.sheets[d],a,b,w.sheets.length-(d+1),c)}function v(){"development"===w.env?(w.optimization=0,w.watchTimer=setInterval(function(){w.watchMode&&u(function(a,b,c,d,e){if(a)j(a,d.href);else if(b){var f=b.toCSS(w);f=h(f),g(f,d,e.lastModified)}})},w.poll)):w.optimization=3}("undefined"==typeof a.less||"undefined"!=typeof a.less.nodeType)&&(a.less={}),w=a.less,x=a.less.tree={},w.mode="browser";var w,x;w===b&&(w=exports,x=c("./tree"),w.mode="node"),w.Parser=function(a){function d(){D=y,G.push({current:C,i:y,j:z})}function e(){var a=G.pop();C=a.current,D=y=a.i,z=a.j}function f(){G.pop()}function g(){y>D&&(C=C.slice(y-D),D=y)}function h(a,b){var c=a.charCodeAt(0|b);return 32>=c&&(32===c||10===c||9===c)}function i(a){var b,c,d=typeof a;return"string"===d?v.charAt(y)!==a?null:(l(1),a):(g(),(b=a.exec(C))?(c=b[0].length,l(c),"string"==typeof b?b:1===b.length?b[0]:b):null)}function j(a){y>D&&(C=C.slice(y-D),D=y);var b=a.exec(C);return b?(l(b[0].length),"string"==typeof b?b:1===b.length?b[0]:b):null}function k(a){return v.charAt(y)!==a?null:(l(1),a)}function l(a){for(var b,c=y,d=z,e=y-D,f=y+C.length-e,g=y+=a,h=v;f>y&&(b=h.charCodeAt(y),!(b>32))&&(32===b||10===b||9===b||13===b);y++);return C=C.slice(a+y-g+e),D=y,!C.length&&z<B.length-1?(C=B[++z],l(0),!0):c!==y||d!==z}function m(a,b){var c="[object Function]"===Object.prototype.toString.call(a)?a.call(F):i(a);return c?c:void o(b||("string"==typeof a?"expected '"+a+"' got '"+v.charAt(y)+"'":"unexpected token"))}function n(a,b){return v.charAt(y)===a?(l(1),a):void o(b||"expected '"+a+"' got '"+v.charAt(y)+"'")}function o(a,b){var c=new Error(a);throw c.index=y,c.type=b||"Syntax",c}function p(a){return"string"==typeof a?v.charAt(y)===a:a.test(C)}function q(a){return v.charAt(y)===a}function r(a,b){return a.filename&&b.currentFileInfo.filename&&a.filename!==b.currentFileInfo.filename?E.imports.contents[a.filename]:v}function s(a,b){for(var c=a+1,d=null,e=-1;--c>=0&&"\n"!==b.charAt(c);)e++;return"number"==typeof a&&(d=(b.slice(0,a).match(/\n/g)||"").length),{line:d,column:e}}function t(a,b,d){var e=d.currentFileInfo.filename;return"browser"!==w.mode&&"rhino"!==w.mode&&(e=c("path").resolve(e)),{lineNumber:s(a,b).line+1,fileName:e}}function u(a,b){var c=r(a,b),d=s(a.index,c),e=d.line,f=d.column,g=a.call&&s(a.call,c).line,h=c.split("\n");this.type=a.type||"Syntax",this.message=a.message,this.filename=a.filename||b.currentFileInfo.filename,this.index=a.index,this.line="number"==typeof e?e+1:null,this.callLine=g+1,this.callExtract=h[g],this.stack=a.stack,this.column=f,this.extract=[h[e-1],h[e],h[e+1]]}var v,y,z,A,B,C,D,E,F,G=[],H=a&&a.filename;a instanceof x.parseEnv||(a=new x.parseEnv(a));var I=this.imports={paths:a.paths||[],queue:[],files:a.files,contents:a.contents,contentsIgnoredChars:a.contentsIgnoredChars,mime:a.mime,error:null,push:function(b,c,d,e){var f=this;this.queue.push(b);var g=function(a,c,d){f.queue.splice(f.queue.indexOf(b),1);var g=d===H;f.files[d]=c,a&&!f.error&&(f.error=a),e(a,c,g,d)};w.Parser.importer?w.Parser.importer(b,c,g,a):w.Parser.fileLoader(b,c,function(b,e,f,h){if(b)return void g(b);var i=new x.parseEnv(a);i.currentFileInfo=h,i.processImports=!1,i.contents[f]=e,(c.reference||d.reference)&&(h.reference=!0),d.inline?g(null,e,f):new w.Parser(i).parse(e,function(a,b){g(a,b,f)})},a)}},J=j;return u.prototype=new Error,u.prototype.constructor=u,this.env=a=a||{},this.optimization="optimization"in this.env?this.env.optimization:1,E={imports:I,parse:function(d,e,f){var g,h,i,j,k,l=null,m="";if(y=z=D=A=0,j=f&&f.globalVars?w.Parser.serializeVars(f.globalVars)+"\n":"",k=f&&f.modifyVars?"\n"+w.Parser.serializeVars(f.modifyVars):"",(j||f&&f.banner)&&(m=(f&&f.banner?f.banner:"")+j,E.imports.contentsIgnoredChars[a.currentFileInfo.filename]=m.length),d=d.replace(/\r\n/g,"\n"),v=d=m+d.replace(/^\uFEFF/,"")+k,E.imports.contents[a.currentFileInfo.filename]=d,B=function(b){function c(b,c){l=new u({index:c||i,type:"Parse",message:b,filename:a.currentFileInfo.filename},a)}function d(a){var c=i-s;512>c&&!a||!c||(r.push(b.slice(s,i+1)),s=i+1)}var e,f,g,h,i,j,k,m,n,o=b.length,p=0,q=0,r=[],s=0;for(i=0;o>i;i++)if(k=b.charCodeAt(i),!(k>=97&&122>=k||34>k))switch(k){case 40:q++,f=i;continue;case 41:if(--q<0)return c("missing opening `(`");continue;case 59:q||d();continue;case 123:p++,e=i;continue;case 125:if(--p<0)return c("missing opening `{`");p||q||d();continue;case 92:if(o-1>i){i++;continue}return c("unescaped `\\`");case 34:case 39:case 96:for(n=0,j=i,i+=1;o>i;i++)if(m=b.charCodeAt(i),!(m>96)){if(m==k){n=1;break}if(92==m){if(i==o-1)return c("unescaped `\\`");i++}}if(n)continue;return c("unmatched `"+String.fromCharCode(k)+"`",j);case 47:if(q||i==o-1)continue;if(m=b.charCodeAt(i+1),47==m)for(i+=2;o>i&&(m=b.charCodeAt(i),!(13>=m)||10!=m&&13!=m);i++);else if(42==m){for(g=j=i,i+=2;o-1>i&&(m=b.charCodeAt(i),125==m&&(h=i),42!=m||47!=b.charCodeAt(i+1));i++);if(i==o-1)return c("missing closing `*/`",j);i++}continue;case 42:if(o-1>i&&47==b.charCodeAt(i+1))return c("unmatched `/*`");continue}return 0!==p?g>e&&h>g?c("missing closing `}` or `*/`",e):c("missing closing `}`",e):0!==q?c("missing closing `)`",f):(d(!0),r)}(d),l)return e(new u(l,a));C=B[0];try{g=new x.Ruleset(null,this.parsers.primary()),g.root=!0,g.firstRoot=!0}catch(n){return e(new u(n,a))}if(g.toCSS=function(d){return function(e,f){e=e||{};var g,h,i=new x.evalEnv(e);"object"!=typeof f||Array.isArray(f)||(f=Object.keys(f).map(function(a){var b=f[a];return b instanceof x.Value||(b instanceof x.Expression||(b=new x.Expression([b])),b=new x.Value([b])),new x.Rule("@"+a,b,!1,null,0)}),i.frames=[new x.Ruleset(null,f)]);try{var j,k=[],l=[new x.joinSelectorVisitor,new x.processExtendsVisitor,new x.toCSSVisitor({compress:Boolean(e.compress)})],m=this;if(e.plugins)for(j=0;j<e.plugins.length;j++)e.plugins[j].isPreEvalVisitor?k.push(e.plugins[j]):e.plugins[j].isPreVisitor?l.splice(0,0,e.plugins[j]):l.push(e.plugins[j]);for(j=0;j<k.length;j++)k[j].run(m);for(g=d.call(m,i),j=0;j<l.length;j++)l[j].run(g);e.sourceMap&&(g=new x.sourceMapOutput({contentsIgnoredCharsMap:E.imports.contentsIgnoredChars,writeSourceMap:e.writeSourceMap,rootNode:g,contentsMap:E.imports.contents,sourceMapFilename:e.sourceMapFilename,sourceMapURL:e.sourceMapURL,outputFilename:e.sourceMapOutputFilename,sourceMapBasepath:e.sourceMapBasepath,sourceMapRootpath:e.sourceMapRootpath,outputSourceFiles:e.outputSourceFiles,sourceMapGenerator:e.sourceMapGenerator})),h=g.toCSS({compress:Boolean(e.compress),dumpLineNumbers:a.dumpLineNumbers,strictUnits:Boolean(e.strictUnits),numPrecision:8})}catch(n){throw new u(n,a)}if(e.cleancss&&"node"===w.mode){var o=c("clean-css"),p=e.cleancssOptions||{};return p.keepSpecialComments===b&&(p.keepSpecialComments="*"),p.processImport=!1,p.noRebase=!0,p.noAdvanced===b&&(p.noAdvanced=!0),new o(p).minify(h)}return e.compress?h.replace(/(^(\s)+)|((\s)+$)/g,""):h}}(g.eval),y<v.length-1){y=A;var o=s(y,v);i=v.split("\n"),h=o.line+1,l={type:"Parse",message:"Unrecognised input",index:y,filename:a.currentFileInfo.filename,line:h,column:o.column,extract:[i[h-2],i[h-1],i[h]]}}var p=function(b){return b=l||b||E.imports.error,b?(b instanceof u||(b=new u(b,a)),e(b)):e(null,g)};return a.processImports===!1?p():void new x.importVisitor(this.imports,p).run(g)},parsers:F={primary:function(){for(var a,b=this.mixin,c=J,d=[];C;){if(a=this.extendRule()||b.definition()||this.rule()||this.ruleset()||b.call()||this.comment()||this.rulesetCall()||this.directive())d.push(a);else if(!c(/^[\s\n]+/)&&!c(/^;+/))break;if(q("}"))break}return d},comment:function(){var b;if("/"===v.charAt(y))return"/"===v.charAt(y+1)?new x.Comment(j(/^\/\/.*/),!0,y,a.currentFileInfo):(b=j(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/),b?new x.Comment(b,!1,y,a.currentFileInfo):void 0)},comments:function(){for(var a,b=[];;){if(a=this.comment(),!a)break;b.push(a)}return b},entities:{quoted:function(){var b,c,d=y,e=y;return"~"===v.charAt(d)&&(d++,c=!0),'"'===v.charAt(d)||"'"===v.charAt(d)?(c&&k("~"),b=j(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/),b?new x.Quoted(b[0],b[1]||b[2],c,e,a.currentFileInfo):void 0):void 0},keyword:function(){var a;if(a=j(/^%|^[_A-Za-z-][_A-Za-z0-9-]*/)){var b=x.Color.fromKeyword(a);return b?b:new x.Keyword(a)}},call:function(){var b,c,d,e,f=y;if(b=/^([\w-]+|%|progid:[\w\.]+)\(/.exec(C)){if(b=b[1],c=b.toLowerCase(),"url"===c)return null;if(y+=b.length,"alpha"===c&&(e=F.alpha(),"undefined"!=typeof e))return e;if(k("("),d=this.arguments(),k(")"))return b?new x.Call(b,d,f,a.currentFileInfo):void 0}},arguments:function(){for(var a,b=[];;){if(a=this.assignment()||F.expression(),!a)break;if(b.push(a),!k(","))break}return b},literal:function(){return this.dimension()||this.color()||this.quoted()||this.unicodeDescriptor()},assignment:function(){var a,b;return a=j(/^\w+(?=\s?=)/i),a&&k("=")?(b=F.entity(),b?new x.Assignment(a,b):void 0):void 0},url:function(){var b;if("u"===v.charAt(y)&&j(/^url\(/))return b=this.quoted()||this.variable()||j(/^(?:(?:\\[\(\)'"])|[^\(\)'"])+/)||"",n(")"),new x.URL(null!=b.value||b instanceof x.Variable?b:new x.Anonymous(b),a.currentFileInfo)},variable:function(){var b,c=y;return"@"===v.charAt(y)&&(b=j(/^@@?[\w-]+/))?new x.Variable(b,c,a.currentFileInfo):void 0},variableCurly:function(){var b,c=y;return"@"===v.charAt(y)&&(b=j(/^@\{([\w-]+)\}/))?new x.Variable("@"+b[1],c,a.currentFileInfo):void 0},color:function(){var a;if("#"===v.charAt(y)&&(a=j(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/))){var b=a.input.match(/^#([\w]+).*/);return b=b[1],b.match(/^[A-Fa-f0-9]+$/)||o("Invalid HEX color code"),new x.Color(a[1])}},dimension:function(){var a,b=v.charCodeAt(y);if(!(b>57||43>b||47===b||44==b))return a=j(/^([+-]?\d*\.?\d+)(%|[a-z]+)?/),a?new x.Dimension(a[1],a[2]):void 0},unicodeDescriptor:function(){var a;return a=j(/^U\+[0-9a-fA-F?]+(\-[0-9a-fA-F?]+)?/),a?new x.UnicodeDescriptor(a[0]):void 0},javascript:function(){var c,d,e=y;return"~"===v.charAt(e)&&(e++,d=!0),"`"===v.charAt(e)?(a.javascriptEnabled===b||a.javascriptEnabled||o("You are using JavaScript, which has been disabled."),d&&k("~"),c=j(/^`([^`]*)`/),c?new x.JavaScript(c[1],y,d):void 0):void 0}},variable:function(){var a;return"@"===v.charAt(y)&&(a=j(/^(@[\w-]+)\s*:/))?a[1]:void 0},rulesetCall:function(){var a;return"@"===v.charAt(y)&&(a=j(/^(@[\w-]+)\s*\(\s*\)\s*;/))?new x.RulesetCall(a[1]):void 0},extend:function(a){var b,c,d,e,f,g=y;if(j(a?/^&:extend\(/:/^:extend\(/)){do{for(d=null,b=null;!(d=j(/^(all)(?=\s*(\)|,))/))&&(c=this.element());)b?b.push(c):b=[c];d=d&&d[1],b||o("Missing target selector for :extend()."),f=new x.Extend(new x.Selector(b),d,g),e?e.push(f):e=[f]}while(k(","));return m(/^\)/),a&&m(/^;/),e}},extendRule:function(){return this.extend(!0)},mixin:{call:function(){var b,c,g,h,i,l,m=v.charAt(y),o=!1,p=y;if("."===m||"#"===m){for(d();;){if(b=y,h=j(/^[#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/),!h)break;g=new x.Element(i,h,b,a.currentFileInfo),c?c.push(g):c=[g],i=k(">")}return c&&(k("(")&&(l=this.args(!0).args,n(")")),F.important()&&(o=!0),F.end())?(f(),new x.mixin.Call(c,l,p,a.currentFileInfo,o)):void e()}},args:function(a){var b,c,g,h,i,l,m=E.parsers,n=m.entities,p={args:null,variadic:!1},q=[],r=[],s=[];for(d();;){if(a)l=m.detachedRuleset()||m.expression();else{if(m.comments(),"."===v.charAt(y)&&j(/^\.{3}/)){p.variadic=!0,k(";")&&!b&&(b=!0),(b?r:s).push({variadic:!0});break}l=n.variable()||n.literal()||n.keyword()}if(!l)break;h=null,l.throwAwayComments&&l.throwAwayComments(),i=l;var t=null;if(a?l.value&&1==l.value.length&&(t=l.value[0]):t=l,t&&t instanceof x.Variable)if(k(":")){if(q.length>0&&(b&&o("Cannot mix ; and , as delimiter types"),c=!0),i=a&&m.detachedRuleset()||m.expression(),!i){if(!a)return e(),p.args=[],p;o("could not understand value for named argument")}h=g=t.name}else{if(!a&&j(/^\.{3}/)){p.variadic=!0,k(";")&&!b&&(b=!0),(b?r:s).push({name:l.name,variadic:!0});break}a||(g=h=t.name,i=null)}i&&q.push(i),s.push({name:h,value:i}),k(",")||(k(";")||b)&&(c&&o("Cannot mix ; and , as delimiter types"),b=!0,q.length>1&&(i=new x.Value(q)),r.push({name:g,value:i}),g=null,q=[],c=!1)}return f(),p.args=b?r:s,p},definition:function(){var a,b,c,g,h=[],i=!1;if(!("."!==v.charAt(y)&&"#"!==v.charAt(y)||p(/^[^{]*\}/)))if(d(),b=j(/^([#.](?:[\w-]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+)\s*\(/)){a=b[1];var l=this.args(!1);if(h=l.args,i=l.variadic,!k(")"))return A=y,void e();if(F.comments(),j(/^when/)&&(g=m(F.conditions,"expected condition")),c=F.block())return f(),new x.mixin.Definition(a,h,c,g,i);e()}else f()}},entity:function(){var a=this.entities;return a.literal()||a.variable()||a.url()||a.call()||a.keyword()||a.javascript()||this.comment()},end:function(){return k(";")||q("}")},alpha:function(){var a;if(j(/^\(opacity=/i))return a=j(/^\d+/)||this.entities.variable(),a?(n(")"),new x.Alpha(a)):void 0},element:function(){var b,c,g,h=y;return c=this.combinator(),b=j(/^(?:\d+\.\d+|\d+)%/)||j(/^(?:[.#]?|:*)(?:[\w-]|[^\x00-\x9f]|\\(?:[A-Fa-f0-9]{1,6} ?|[^A-Fa-f0-9]))+/)||k("*")||k("&")||this.attribute()||j(/^\([^()@]+\)/)||j(/^[\.#](?=@)/)||this.entities.variableCurly(),b||(d(),k("(")?(g=this.selector())&&k(")")?(b=new x.Paren(g),f()):e():f()),b?new x.Element(c,b,h,a.currentFileInfo):void 0},combinator:function(){var a=v.charAt(y);if("/"===a){d();var b=j(/^\/[a-z]+\//i);if(b)return f(),new x.Combinator(b);e()}if(">"===a||"+"===a||"~"===a||"|"===a||"^"===a){for(y++,"^"===a&&"^"===v.charAt(y)&&(a="^^",y++);h(v,y);)y++;return new x.Combinator(a)}return new x.Combinator(h(v,y-1)?" ":null)},lessSelector:function(){return this.selector(!0)},selector:function(b){for(var c,d,e,f,g,h,i,j=y,k=J;(b&&(g=this.extend())||b&&(h=k(/^when/))||(f=this.element()))&&(h?i=m(this.conditions,"expected condition"):i?o("CSS guard can only be used at the end of selector"):g?d?d.push(g):d=[g]:(d&&o("Extend can only be used at the end of selector"),e=v.charAt(y),c?c.push(f):c=[f],f=null),"{"!==e&&"}"!==e&&";"!==e&&","!==e&&")"!==e););return c?new x.Selector(c,d,i,j,a.currentFileInfo):void(d&&o("Extend must be used to extend a selector, it cannot be used on its own"))},attribute:function(){if(k("[")){var a,b,c,d=this.entities;return(a=d.variableCurly())||(a=m(/^(?:[_A-Za-z0-9-\*]*\|)?(?:[_A-Za-z0-9-]|\\.)+/)),c=j(/^[|~*$^]?=/),c&&(b=d.quoted()||j(/^[0-9]+%/)||j(/^[\w-]+/)||d.variableCurly()),n("]"),new x.Attribute(a,c,b)}},block:function(){var a;return k("{")&&(a=this.primary())&&k("}")?a:void 0},blockRuleset:function(){var a=this.block();return a&&(a=new x.Ruleset(null,a)),a},detachedRuleset:function(){var a=this.blockRuleset();return a?new x.DetachedRuleset(a):void 0},ruleset:function(){var b,c,g,h;for(d(),a.dumpLineNumbers&&(h=t(y,v,a));;){if(c=this.lessSelector(),!c)break;if(b?b.push(c):b=[c],this.comments(),c.condition&&b.length>1&&o("Guards are only currently allowed on a single selector."),!k(","))break;c.condition&&o("Guards are only currently allowed on a single selector."),this.comments()}if(b&&(g=this.block())){f();var i=new x.Ruleset(b,g,a.strictImports);return a.dumpLineNumbers&&(i.debugInfo=h),i}A=y,e()},rule:function(b){var c,g,h,i,j,k=y,l=v.charAt(k);if("."!==l&&"#"!==l&&"&"!==l)if(d(),c=this.variable()||this.ruleProperty()){if(j="string"==typeof c,j&&(g=this.detachedRuleset()),this.comments(),g||(g=b||!a.compress&&!j?this.anonymousValue()||this.value():this.value()||this.anonymousValue(),h=this.important(),i=!j&&c.pop().value),g&&this.end())return f(),new x.Rule(c,g,h,i,k,a.currentFileInfo);if(A=y,e(),g&&!b)return this.rule(!0)}else f()},anonymousValue:function(){var a;return a=/^([^@+\/'"*`(;{}-]*);/.exec(C),a?(y+=a[0].length-1,new x.Anonymous(a[1])):void 0},"import":function(){var b,c,d=y,e=j(/^@import?\s+/);if(e){var f=(e?this.importOptions():null)||{};if(b=this.entities.quoted()||this.entities.url())return c=this.mediaFeatures(),i(";")||(y=d,o("missing semi-colon or unrecognised media features on import")),c=c&&new x.Value(c),new x.Import(b,c,f,d,a.currentFileInfo);y=d,o("malformed import statement")}},importOptions:function(){var a,b,c,d={};if(!k("("))return null;do if(a=this.importOption()){switch(b=a,c=!0,b){case"css":b="less",c=!1;break;case"once":b="multiple",c=!1}if(d[b]=c,!k(","))break}while(a);return n(")"),d},importOption:function(){var a=j(/^(less|css|multiple|once|inline|reference)/);return a?a[1]:void 0},mediaFeature:function(){var b,c,d=this.entities,e=[];do if(b=d.keyword()||d.variable())e.push(b);else if(k("(")){if(c=this.property(),b=this.value(),!k(")"))return null;if(c&&b)e.push(new x.Paren(new x.Rule(c,b,null,null,y,a.currentFileInfo,!0)));else{if(!b)return null;e.push(new x.Paren(b))}}while(b);return e.length>0?new x.Expression(e):void 0},mediaFeatures:function(){var a,b=this.entities,c=[];do if(a=this.mediaFeature()){if(c.push(a),!k(","))break}else if(a=b.variable(),a&&(c.push(a),!k(",")))break;while(a);return c.length>0?c:null},media:function(){var b,c,d,e;return a.dumpLineNumbers&&(e=t(y,v,a)),j(/^@media/)&&(b=this.mediaFeatures(),c=this.block())?(d=new x.Media(c,b,y,a.currentFileInfo),a.dumpLineNumbers&&(d.debugInfo=e),d):void 0},directive:function(){var b,c,g,h,i,l,m,n=y,p=!0;if("@"===v.charAt(y)){if(c=this["import"]()||this.media())return c;if(d(),b=j(/^@[a-z-]+/)){switch(h=b,"-"==b.charAt(1)&&b.indexOf("-",2)>0&&(h="@"+b.slice(b.indexOf("-",2)+1)),h){case"@charset":i=!0,p=!1;break;case"@namespace":l=!0,p=!1;break;case"@keyframes":i=!0;break;case"@host":case"@page":case"@document":case"@supports":m=!0}return this.comments(),i?(c=this.entity(),c||o("expected "+b+" identifier")):l?(c=this.expression(),c||o("expected "+b+" expression")):m&&(c=(j(/^[^{;]+/)||"").trim(),c&&(c=new x.Anonymous(c))),this.comments(),p&&(g=this.blockRuleset()),g||!p&&c&&k(";")?(f(),new x.Directive(b,c,g,n,a.currentFileInfo,a.dumpLineNumbers?t(n,v,a):null)):void e()}}},value:function(){var a,b=[];do if(a=this.expression(),a&&(b.push(a),!k(",")))break;while(a);return b.length>0?new x.Value(b):void 0},important:function(){return"!"===v.charAt(y)?j(/^! *important/):void 0},sub:function(){var a,b;return k("(")&&(a=this.addition())?(b=new x.Expression([a]),n(")"),b.parens=!0,b):void 0},multiplication:function(){var a,b,c,g,i;if(a=this.operand()){for(i=h(v,y-1);;){if(p(/^\/[*\/]/))break;if(d(),c=k("/")||k("*"),!c){f();break}if(b=this.operand(),!b){e();break}f(),a.parensInOp=!0,b.parensInOp=!0,g=new x.Operation(c,[g||a,b],i),i=h(v,y-1)}return g||a}},addition:function(){var a,b,c,d,e;if(a=this.multiplication()){for(e=h(v,y-1);;){if(c=j(/^[-+]\s+/)||!e&&(k("+")||k("-")),!c)break;if(b=this.multiplication(),!b)break;a.parensInOp=!0,b.parensInOp=!0,d=new x.Operation(c,[d||a,b],e),e=h(v,y-1)}return d||a}},conditions:function(){var a,b,c,d=y;if(a=this.condition()){for(;;){if(!p(/^,\s*(not\s*)?\(/)||!k(","))break;if(b=this.condition(),!b)break;c=new x.Condition("or",c||a,b,d)}return c||a}},condition:function(){var a,b,c,d,e=this.entities,f=y,g=!1;return j(/^not/)&&(g=!0),n("("),a=this.addition()||e.keyword()||e.quoted(),a?(d=j(/^(?:>=|<=|=<|[<=>])/),d?(b=this.addition()||e.keyword()||e.quoted(),b?c=new x.Condition(d,a,b,f,g):o("expected expression")):c=new x.Condition("=",a,new x.Keyword("true"),f,g),n(")"),j(/^and/)?new x.Condition("and",c,this.condition()):c):void 0},operand:function(){var a,b=this.entities,c=v.charAt(y+1);"-"!==v.charAt(y)||"@"!==c&&"("!==c||(a=k("-"));var d=this.sub()||b.dimension()||b.color()||b.variable()||b.call();return a&&(d.parensInOp=!0,d=new x.Negative(d)),d},expression:function(){var a,b,c=[];do a=this.addition()||this.entity(),a&&(c.push(a),p(/^\/[\/*]/)||(b=k("/"),b&&c.push(new x.Anonymous(b))));while(a);return c.length>0?new x.Expression(c):void 0},property:function(){var a=j(/^(\*?-?[_a-zA-Z0-9-]+)\s*:/);return a?a[1]:void 0},ruleProperty:function(){function b(a){var b=a.exec(f);return b?(h.push(y+i),i+=b[0].length,f=f.slice(b[1].length),g.push(b[1])):void 0}function c(){var a=/^\s*\/\*(?:[^*]|\*+[^\/*])*\*+\//.exec(f);return a?(i+=a[0].length,f=f.slice(a[0].length),!0):!1}var d,e,f=C,g=[],h=[],i=0;for(b(/^(\*?)/);b(/^((?:[\w-]+)|(?:@\{[\w-]+\}))/););for(;c(););if(g.length>1&&b(/^\s*((?:\+_|\+)?)\s*:/)){for(l(i),""===g[0]&&(g.shift(),h.shift()),e=0;e<g.length;e++)d=g[e],g[e]="@"!==d.charAt(0)?new x.Keyword(d):new x.Variable("@"+d.slice(2,-1),h[e],a.currentFileInfo);return g}}}}},w.Parser.serializeVars=function(a){var b="";for(var c in a)if(Object.hasOwnProperty.call(a,c)){var d=a[c];b+=("@"===c[0]?"":"@")+c+": "+d+(";"===(""+d).slice(-1)?"":";")}return b},function(d){function e(a,b,c){if(!(c instanceof d.Dimension))throw{type:"Argument",message:"argument must be a number"};return null==b?b=c.unit:c=c.unify(),new d.Dimension(a(parseFloat(c.value)),b)}function f(a,b,c){var e,f,g,h,i=b.alpha,j=c.alpha,k=[];g=j+i*(1-j);for(var l=0;3>l;l++)e=b.rgb[l]/255,f=c.rgb[l]/255,h=a(e,f),g&&(h=(j*f+i*(e-j*(e+f-h)))/g),k[l]=255*h;return new d.Color(k,g)}function g(){var a,b=d.functions;for(a in l)l.hasOwnProperty(a)&&(b[a]=e.bind(null,Math[a],l[a]));for(a in m)m.hasOwnProperty(a)&&(b[a]=f.bind(null,m[a]));a=d.defaultFunc,b["default"]=a.eval.bind(a)}function h(a){return d.functions.hsla(a.h,a.s,a.l,a.a)}function i(a,b){return a instanceof d.Dimension&&a.unit.is("%")?parseFloat(a.value*b/100):j(a)}function j(a){if(a instanceof d.Dimension)return parseFloat(a.unit.is("%")?a.value/100:a.value);if("number"==typeof a)return a;throw{error:"RuntimeError",message:"color functions take numbers as parameters"}}function k(a){return Math.min(1,Math.max(0,a))}d.functions={rgb:function(a,b,c){return this.rgba(a,b,c,1)},rgba:function(a,b,c,e){var f=[a,b,c].map(function(a){return i(a,255)});return e=j(e),new d.Color(f,e)},hsl:function(a,b,c){return this.hsla(a,b,c,1)},hsla:function(a,b,c,d){function e(a){return a=0>a?a+1:a>1?a-1:a,1>6*a?g+(f-g)*a*6:1>2*a?f:2>3*a?g+(f-g)*(2/3-a)*6:g}a=j(a)%360/360,b=k(j(b)),c=k(j(c)),d=k(j(d));var f=.5>=c?c*(b+1):c+b-c*b,g=2*c-f;return this.rgba(255*e(a+1/3),255*e(a),255*e(a-1/3),d)},hsv:function(a,b,c){return this.hsva(a,b,c,1)},hsva:function(a,b,c,d){a=j(a)%360/360*360,b=j(b),c=j(c),d=j(d);var e,f;e=Math.floor(a/60%6),f=a/60-e;var g=[c,c*(1-b),c*(1-f*b),c*(1-(1-f)*b)],h=[[0,3,1],[2,0,1],[1,0,3],[1,2,0],[3,1,0],[0,1,2]];return this.rgba(255*g[h[e][0]],255*g[h[e][1]],255*g[h[e][2]],d)},hue:function(a){return new d.Dimension(a.toHSL().h)},saturation:function(a){return new d.Dimension(100*a.toHSL().s,"%")},lightness:function(a){return new d.Dimension(100*a.toHSL().l,"%")},hsvhue:function(a){return new d.Dimension(a.toHSV().h)},hsvsaturation:function(a){return new d.Dimension(100*a.toHSV().s,"%")},hsvvalue:function(a){return new d.Dimension(100*a.toHSV().v,"%")},red:function(a){return new d.Dimension(a.rgb[0])},green:function(a){return new d.Dimension(a.rgb[1])},blue:function(a){return new d.Dimension(a.rgb[2])},alpha:function(a){return new d.Dimension(a.toHSL().a)},luma:function(a){return new d.Dimension(a.luma()*a.alpha*100,"%")},luminance:function(a){var b=.2126*a.rgb[0]/255+.7152*a.rgb[1]/255+.0722*a.rgb[2]/255;return new d.Dimension(b*a.alpha*100,"%")},saturate:function(a,b){if(!a.rgb)return null;var c=a.toHSL();return c.s+=b.value/100,c.s=k(c.s),h(c)},desaturate:function(a,b){var c=a.toHSL();return c.s-=b.value/100,c.s=k(c.s),h(c)},lighten:function(a,b){var c=a.toHSL();return c.l+=b.value/100,c.l=k(c.l),h(c)},darken:function(a,b){var c=a.toHSL();return c.l-=b.value/100,c.l=k(c.l),h(c)},fadein:function(a,b){var c=a.toHSL();return c.a+=b.value/100,c.a=k(c.a),h(c)},fadeout:function(a,b){var c=a.toHSL();return c.a-=b.value/100,c.a=k(c.a),h(c)},fade:function(a,b){var c=a.toHSL();return c.a=b.value/100,c.a=k(c.a),h(c)},spin:function(a,b){var c=a.toHSL(),d=(c.h+b.value)%360;return c.h=0>d?360+d:d,h(c)},mix:function(a,b,c){c||(c=new d.Dimension(50));var e=c.value/100,f=2*e-1,g=a.toHSL().a-b.toHSL().a,h=((f*g==-1?f:(f+g)/(1+f*g))+1)/2,i=1-h,j=[a.rgb[0]*h+b.rgb[0]*i,a.rgb[1]*h+b.rgb[1]*i,a.rgb[2]*h+b.rgb[2]*i],k=a.alpha*e+b.alpha*(1-e);return new d.Color(j,k)},greyscale:function(a){return this.desaturate(a,new d.Dimension(100))},contrast:function(a,b,c,d){if(!a.rgb)return null;if("undefined"==typeof c&&(c=this.rgba(255,255,255,1)),"undefined"==typeof b&&(b=this.rgba(0,0,0,1)),b.luma()>c.luma()){var e=c;c=b,b=e}return d="undefined"==typeof d?.43:j(d),a.luma()<d?c:b},e:function(a){return new d.Anonymous(a instanceof d.JavaScript?a.evaluated:a.value)},escape:function(a){return new d.Anonymous(encodeURI(a.value).replace(/=/g,"%3D").replace(/:/g,"%3A").replace(/#/g,"%23").replace(/;/g,"%3B").replace(/\(/g,"%28").replace(/\)/g,"%29"))
+},replace:function(a,b,c,e){var f=a.value;return f=f.replace(new RegExp(b.value,e?e.value:""),c.value),new d.Quoted(a.quote||"",f,a.escaped)},"%":function(a){for(var b=Array.prototype.slice.call(arguments,1),c=a.value,e=0;e<b.length;e++)c=c.replace(/%[sda]/i,function(a){var c=a.match(/s/i)?b[e].value:b[e].toCSS();return a.match(/[A-Z]$/)?encodeURIComponent(c):c});return c=c.replace(/%%/g,"%"),new d.Quoted(a.quote||"",c,a.escaped)},unit:function(a,b){if(!(a instanceof d.Dimension))throw{type:"Argument",message:"the first argument to unit must be a number"+(a instanceof d.Operation?". Have you forgotten parenthesis?":"")};return b=b?b instanceof d.Keyword?b.value:b.toCSS():"",new d.Dimension(a.value,b)},convert:function(a,b){return a.convertTo(b.value)},round:function(a,b){var c="undefined"==typeof b?0:b.value;return e(function(a){return a.toFixed(c)},null,a)},pi:function(){return new d.Dimension(Math.PI)},mod:function(a,b){return new d.Dimension(a.value%b.value,a.unit)},pow:function(a,b){if("number"==typeof a&&"number"==typeof b)a=new d.Dimension(a),b=new d.Dimension(b);else if(!(a instanceof d.Dimension&&b instanceof d.Dimension))throw{type:"Argument",message:"arguments must be numbers"};return new d.Dimension(Math.pow(a.value,b.value),a.unit)},_minmax:function(a,c){switch(c=Array.prototype.slice.call(c),c.length){case 0:throw{type:"Argument",message:"one or more arguments required"}}var e,f,g,h,i,j,k,l,m=[],n={};for(e=0;e<c.length;e++)if(g=c[e],g instanceof d.Dimension)if(h=""===g.unit.toString()&&l!==b?new d.Dimension(g.value,l).unify():g.unify(),j=""===h.unit.toString()&&k!==b?k:h.unit.toString(),k=""!==j&&k===b||""!==j&&""===m[0].unify().unit.toString()?j:k,l=""!==j&&l===b?g.unit.toString():l,f=n[""]!==b&&""!==j&&j===k?n[""]:n[j],f!==b)i=""===m[f].unit.toString()&&l!==b?new d.Dimension(m[f].value,l).unify():m[f].unify(),(a&&h.value<i.value||!a&&h.value>i.value)&&(m[f]=g);else{if(k!==b&&j!==k)throw{type:"Argument",message:"incompatible types"};n[j]=m.length,m.push(g)}else Array.isArray(c[e].value)&&Array.prototype.push.apply(c,Array.prototype.slice.call(c[e].value));return 1==m.length?m[0]:(c=m.map(function(a){return a.toCSS(this.env)}).join(this.env.compress?",":", "),new d.Anonymous((a?"min":"max")+"("+c+")"))},min:function(){return this._minmax(!0,arguments)},max:function(){return this._minmax(!1,arguments)},"get-unit":function(a){return new d.Anonymous(a.unit)},argb:function(a){return new d.Anonymous(a.toARGB())},percentage:function(a){return new d.Dimension(100*a.value,"%")},color:function(a){if(a instanceof d.Quoted){var b,c=a.value;if(b=d.Color.fromKeyword(c))return b;if(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})/.test(c))return new d.Color(c.slice(1));throw{type:"Argument",message:"argument must be a color keyword or 3/6 digit hex e.g. #FFF"}}throw{type:"Argument",message:"argument must be a string"}},iscolor:function(a){return this._isa(a,d.Color)},isnumber:function(a){return this._isa(a,d.Dimension)},isstring:function(a){return this._isa(a,d.Quoted)},iskeyword:function(a){return this._isa(a,d.Keyword)},isurl:function(a){return this._isa(a,d.URL)},ispixel:function(a){return this.isunit(a,"px")},ispercentage:function(a){return this.isunit(a,"%")},isem:function(a){return this.isunit(a,"em")},isunit:function(a,b){return a instanceof d.Dimension&&a.unit.is(b.value||b)?d.True:d.False},_isa:function(a,b){return a instanceof b?d.True:d.False},tint:function(a,b){return this.mix(this.rgb(255,255,255),a,b)},shade:function(a,b){return this.mix(this.rgb(0,0,0),a,b)},extract:function(a,b){return b=b.value-1,Array.isArray(a.value)?a.value[b]:Array(a)[b]},length:function(a){var b=Array.isArray(a.value)?a.value.length:1;return new d.Dimension(b)},"data-uri":function(b,e){if("undefined"!=typeof a)return new d.URL(e||b,this.currentFileInfo).eval(this.env);var f=b.value,g=e&&e.value,h=c("./fs"),i=c("path"),j=!1;arguments.length<2&&(g=f);var k=g.indexOf("#"),l="";if(-1!==k&&(l=g.slice(k),g=g.slice(0,k)),this.env.isPathRelative(g)&&(g=this.currentFileInfo.relativeUrls?i.join(this.currentFileInfo.currentDirectory,g):i.join(this.currentFileInfo.entryPath,g)),arguments.length<2){var m;try{m=c("mime")}catch(n){m=d._mime}f=m.lookup(g);var o=m.charsets.lookup(f);j=["US-ASCII","UTF-8"].indexOf(o)<0,j&&(f+=";base64")}else j=/;base64$/.test(f);var p=h.readFileSync(g),q=32,r=parseInt(p.length/1024,10);if(r>=q&&this.env.ieCompat!==!1)return this.env.silent||console.warn("Skipped data-uri embedding of %s because its size (%dKB) exceeds IE8-safe %dKB!",g,r,q),new d.URL(e||b,this.currentFileInfo).eval(this.env);p=j?p.toString("base64"):encodeURIComponent(p);var s='"data:'+f+","+p+l+'"';return new d.URL(new d.Anonymous(s))},"svg-gradient":function(a){function e(){throw{type:"Argument",message:"svg-gradient expects direction, start_color [start_position], [color position,]..., end_color [end_position]"}}arguments.length<3&&e();var f,g,h,i,j,k,l,m=Array.prototype.slice.call(arguments,1),n="linear",o='x="0" y="0" width="1" height="1"',p=!0,q={compress:!1},r=a.toCSS(q);switch(r){case"to bottom":f='x1="0%" y1="0%" x2="0%" y2="100%"';break;case"to right":f='x1="0%" y1="0%" x2="100%" y2="0%"';break;case"to bottom right":f='x1="0%" y1="0%" x2="100%" y2="100%"';break;case"to top right":f='x1="0%" y1="100%" x2="100%" y2="0%"';break;case"ellipse":case"ellipse at center":n="radial",f='cx="50%" cy="50%" r="75%"',o='x="-50" y="-50" width="101" height="101"';break;default:throw{type:"Argument",message:"svg-gradient direction must be 'to bottom', 'to right', 'to bottom right', 'to top right' or 'ellipse at center'"}}for(g='<?xml version="1.0" ?><svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="100%" height="100%" viewBox="0 0 1 1" preserveAspectRatio="none"><'+n+'Gradient id="gradient" gradientUnits="userSpaceOnUse" '+f+">",h=0;h<m.length;h+=1)m[h].value?(i=m[h].value[0],j=m[h].value[1]):(i=m[h],j=b),i instanceof d.Color&&((0===h||h+1===m.length)&&j===b||j instanceof d.Dimension)||e(),k=j?j.toCSS(q):0===h?"0%":"100%",l=i.alpha,g+='<stop offset="'+k+'" stop-color="'+i.toRGB()+'"'+(1>l?' stop-opacity="'+l+'"':"")+"/>";if(g+="</"+n+"Gradient><rect "+o+' fill="url(#gradient)" /></svg>',p)try{g=c("./encoder").encodeBase64(g)}catch(s){p=!1}return g="'data:image/svg+xml"+(p?";base64":"")+","+g+"'",new d.URL(new d.Anonymous(g))}},d._mime={_types:{".htm":"text/html",".html":"text/html",".gif":"image/gif",".jpg":"image/jpeg",".jpeg":"image/jpeg",".png":"image/png"},lookup:function(a){var e=c("path").extname(a),f=d._mime._types[e];if(f===b)throw new Error('Optional dependency "mime" is required for '+e);return f},charsets:{lookup:function(a){return a&&/^text\//.test(a)?"UTF-8":""}}};var l={ceil:null,floor:null,sqrt:null,abs:null,tan:"",sin:"",cos:"",atan:"rad",asin:"rad",acos:"rad"},m={multiply:function(a,b){return a*b},screen:function(a,b){return a+b-a*b},overlay:function(a,b){return a*=2,1>=a?m.multiply(a,b):m.screen(a-1,b)},softlight:function(a,b){var c=1,d=a;return b>.5&&(d=1,c=a>.25?Math.sqrt(a):((16*a-12)*a+4)*a),a-(1-2*b)*d*(c-a)},hardlight:function(a,b){return m.overlay(b,a)},difference:function(a,b){return Math.abs(a-b)},exclusion:function(a,b){return a+b-2*a*b},average:function(a,b){return(a+b)/2},negation:function(a,b){return 1-Math.abs(a+b-1)}};d.defaultFunc={eval:function(){var a=this.value_,b=this.error_;if(b)throw b;return null!=a?a?d.True:d.False:void 0},value:function(a){this.value_=a},error:function(a){this.error_=a},reset:function(){this.value_=this.error_=null}},g(),d.fround=function(a,b){var c=a&&a.numPrecision;return null==c?b:Number((b+2e-16).toFixed(c))},d.functionCall=function(a,b){this.env=a,this.currentFileInfo=b},d.functionCall.prototype=d.functions}(c("./tree")),function(a){a.colors={aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",black:"#000000",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgrey:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkslategrey:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dimgrey:"#696969",dodgerblue:"#1e90ff",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgray:"#d3d3d3",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslategray:"#778899",lightslategrey:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",slategrey:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",wheat:"#f5deb3",white:"#ffffff",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}}(c("./tree")),function(a){a.debugInfo=function(b,c,d){var e="";if(b.dumpLineNumbers&&!b.compress)switch(b.dumpLineNumbers){case"comments":e=a.debugInfo.asComment(c);break;case"mediaquery":e=a.debugInfo.asMediaQuery(c);break;case"all":e=a.debugInfo.asComment(c)+(d||"")+a.debugInfo.asMediaQuery(c)}return e},a.debugInfo.asComment=function(a){return"/* line "+a.debugInfo.lineNumber+", "+a.debugInfo.fileName+" */\n"},a.debugInfo.asMediaQuery=function(a){return"@media -sass-debug-info{filename{font-family:"+("file://"+a.debugInfo.fileName).replace(/([.:\/\\])/g,function(a){return"\\"==a&&(a="/"),"\\"+a})+"}line{font-family:\\00003"+a.debugInfo.lineNumber+"}}\n"},a.find=function(a,b){for(var c,d=0;d<a.length;d++)if(c=b.call(a,a[d]))return c;return null},a.jsify=function(a){return Array.isArray(a.value)&&a.value.length>1?"["+a.value.map(function(a){return a.toCSS()}).join(", ")+"]":a.toCSS()},a.toCSS=function(a){var b=[];return this.genCSS(a,{add:function(a){b.push(a)},isEmpty:function(){return 0===b.length}}),b.join("")},a.outputRuleset=function(a,b,c){var d,e=c.length;if(a.tabLevel=(0|a.tabLevel)+1,a.compress){for(b.add("{"),d=0;e>d;d++)c[d].genCSS(a,b);return b.add("}"),void a.tabLevel--}var f="\n"+Array(a.tabLevel).join(" "),g=f+" ";if(e){for(b.add(" {"+g),c[0].genCSS(a,b),d=1;e>d;d++)b.add(g),c[d].genCSS(a,b);b.add(f+"}")}else b.add(" {"+f+"}");a.tabLevel--}}(c("./tree")),function(a){a.Alpha=function(a){this.value=a},a.Alpha.prototype={type:"Alpha",accept:function(a){this.value=a.visit(this.value)},eval:function(b){return this.value.eval?new a.Alpha(this.value.eval(b)):this},genCSS:function(a,b){b.add("alpha(opacity="),this.value.genCSS?this.value.genCSS(a,b):b.add(this.value),b.add(")")},toCSS:a.toCSS}}(c("../tree")),function(a){a.Anonymous=function(a,b,c,d,e){this.value=a,this.index=b,this.mapLines=d,this.currentFileInfo=c,this.rulesetLike="undefined"==typeof e?!1:e},a.Anonymous.prototype={type:"Anonymous",eval:function(){return new a.Anonymous(this.value,this.index,this.currentFileInfo,this.mapLines,this.rulesetLike)},compare:function(a){if(!a.toCSS)return-1;var b=this.toCSS(),c=a.toCSS();return b===c?0:c>b?-1:1},isRulesetLike:function(){return this.rulesetLike},genCSS:function(a,b){b.add(this.value,this.currentFileInfo,this.index,this.mapLines)},toCSS:a.toCSS}}(c("../tree")),function(a){a.Assignment=function(a,b){this.key=a,this.value=b},a.Assignment.prototype={type:"Assignment",accept:function(a){this.value=a.visit(this.value)},eval:function(b){return this.value.eval?new a.Assignment(this.key,this.value.eval(b)):this},genCSS:function(a,b){b.add(this.key+"="),this.value.genCSS?this.value.genCSS(a,b):b.add(this.value)},toCSS:a.toCSS}}(c("../tree")),function(a){a.Call=function(a,b,c,d){this.name=a,this.args=b,this.index=c,this.currentFileInfo=d},a.Call.prototype={type:"Call",accept:function(a){this.args&&(this.args=a.visitArray(this.args))},eval:function(b){var c,d,e=this.args.map(function(a){return a.eval(b)}),f=this.name.toLowerCase();if(f in a.functions)try{if(d=new a.functionCall(b,this.currentFileInfo),c=d[f].apply(d,e),null!=c)return c}catch(g){throw{type:g.type||"Runtime",message:"error evaluating function `"+this.name+"`"+(g.message?": "+g.message:""),index:this.index,filename:this.currentFileInfo.filename}}return new a.Call(this.name,e,this.index,this.currentFileInfo)},genCSS:function(a,b){b.add(this.name+"(",this.currentFileInfo,this.index);for(var c=0;c<this.args.length;c++)this.args[c].genCSS(a,b),c+1<this.args.length&&b.add(", ");b.add(")")},toCSS:a.toCSS}}(c("../tree")),function(a){function b(a){return"#"+a.map(function(a){return a=c(Math.round(a),255),(16>a?"0":"")+a.toString(16)}).join("")}function c(a,b){return Math.min(Math.max(a,0),b)}a.Color=function(a,b){this.rgb=Array.isArray(a)?a:6==a.length?a.match(/.{2}/g).map(function(a){return parseInt(a,16)}):a.split("").map(function(a){return parseInt(a+a,16)}),this.alpha="number"==typeof b?b:1};var d="transparent";a.Color.prototype={type:"Color",eval:function(){return this},luma:function(){var a=this.rgb[0]/255,b=this.rgb[1]/255,c=this.rgb[2]/255;return a=.03928>=a?a/12.92:Math.pow((a+.055)/1.055,2.4),b=.03928>=b?b/12.92:Math.pow((b+.055)/1.055,2.4),c=.03928>=c?c/12.92:Math.pow((c+.055)/1.055,2.4),.2126*a+.7152*b+.0722*c},genCSS:function(a,b){b.add(this.toCSS(a))},toCSS:function(b,e){var f=b&&b.compress&&!e,g=a.fround(b,this.alpha);if(1>g)return 0===g&&this.isTransparentKeyword?d:"rgba("+this.rgb.map(function(a){return c(Math.round(a),255)}).concat(c(g,1)).join(","+(f?"":" "))+")";var h=this.toRGB();if(f){var i=h.split("");i[1]===i[2]&&i[3]===i[4]&&i[5]===i[6]&&(h="#"+i[1]+i[3]+i[5])}return h},operate:function(b,c,d){for(var e=[],f=this.alpha*(1-d.alpha)+d.alpha,g=0;3>g;g++)e[g]=a.operate(b,c,this.rgb[g],d.rgb[g]);return new a.Color(e,f)},toRGB:function(){return b(this.rgb)},toHSL:function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=(g+h)/2,j=g-h;if(g===h)a=b=0;else{switch(b=i>.5?j/(2-g-h):j/(g+h),g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,l:i,a:f}},toHSV:function(){var a,b,c=this.rgb[0]/255,d=this.rgb[1]/255,e=this.rgb[2]/255,f=this.alpha,g=Math.max(c,d,e),h=Math.min(c,d,e),i=g,j=g-h;if(b=0===g?0:j/g,g===h)a=0;else{switch(g){case c:a=(d-e)/j+(e>d?6:0);break;case d:a=(e-c)/j+2;break;case e:a=(c-d)/j+4}a/=6}return{h:360*a,s:b,v:i,a:f}},toARGB:function(){return b([255*this.alpha].concat(this.rgb))},compare:function(a){return a.rgb&&a.rgb[0]===this.rgb[0]&&a.rgb[1]===this.rgb[1]&&a.rgb[2]===this.rgb[2]&&a.alpha===this.alpha?0:-1}},a.Color.fromKeyword=function(b){if(b=b.toLowerCase(),a.colors.hasOwnProperty(b))return new a.Color(a.colors[b].slice(1));if(b===d){var c=new a.Color([0,0,0],0);return c.isTransparentKeyword=!0,c}}}(c("../tree")),function(a){a.Comment=function(a,b,c,d){this.value=a,this.silent=!!b,this.currentFileInfo=d},a.Comment.prototype={type:"Comment",genCSS:function(b,c){this.debugInfo&&c.add(a.debugInfo(b,this),this.currentFileInfo,this.index),c.add(this.value.trim())},toCSS:a.toCSS,isSilent:function(a){var b=this.currentFileInfo&&this.currentFileInfo.reference&&!this.isReferenced,c=a.compress&&!this.value.match(/^\/\*!/);return this.silent||b||c},eval:function(){return this},markReferenced:function(){this.isReferenced=!0}}}(c("../tree")),function(a){a.Condition=function(a,b,c,d,e){this.op=a.trim(),this.lvalue=b,this.rvalue=c,this.index=d,this.negate=e},a.Condition.prototype={type:"Condition",accept:function(a){this.lvalue=a.visit(this.lvalue),this.rvalue=a.visit(this.rvalue)},eval:function(a){var b,c=this.lvalue.eval(a),d=this.rvalue.eval(a),e=this.index;return b=function(a){switch(a){case"and":return c&&d;case"or":return c||d;default:if(c.compare)b=c.compare(d);else{if(!d.compare)throw{type:"Type",message:"Unable to perform comparison",index:e};b=d.compare(c)}switch(b){case-1:return"<"===a||"=<"===a||"<="===a;case 0:return"="===a||">="===a||"=<"===a||"<="===a;case 1:return">"===a||">="===a}}}(this.op),this.negate?!b:b}}}(c("../tree")),function(a){a.DetachedRuleset=function(a,b){this.ruleset=a,this.frames=b},a.DetachedRuleset.prototype={type:"DetachedRuleset",accept:function(a){this.ruleset=a.visit(this.ruleset)},eval:function(b){var c=this.frames||b.frames.slice(0);return new a.DetachedRuleset(this.ruleset,c)},callEval:function(b){return this.ruleset.eval(this.frames?new a.evalEnv(b,this.frames.concat(b.frames)):b)}}}(c("../tree")),function(a){a.Dimension=function(c,d){this.value=parseFloat(c),this.unit=d&&d instanceof a.Unit?d:new a.Unit(d?[d]:b)},a.Dimension.prototype={type:"Dimension",accept:function(a){this.unit=a.visit(this.unit)},eval:function(){return this},toColor:function(){return new a.Color([this.value,this.value,this.value])},genCSS:function(b,c){if(b&&b.strictUnits&&!this.unit.isSingular())throw new Error("Multiple units in dimension. Correct the units or use the unit function. Bad unit: "+this.unit.toString());var d=a.fround(b,this.value),e=String(d);if(0!==d&&1e-6>d&&d>-1e-6&&(e=d.toFixed(20).replace(/0+$/,"")),b&&b.compress){if(0===d&&this.unit.isLength())return void c.add(e);d>0&&1>d&&(e=e.substr(1))}c.add(e),this.unit.genCSS(b,c)},toCSS:a.toCSS,operate:function(b,c,d){var e=a.operate(b,c,this.value,d.value),f=this.unit.clone();if("+"===c||"-"===c)if(0===f.numerator.length&&0===f.denominator.length)f.numerator=d.unit.numerator.slice(0),f.denominator=d.unit.denominator.slice(0);else if(0===d.unit.numerator.length&&0===f.denominator.length);else{if(d=d.convertTo(this.unit.usedUnits()),b.strictUnits&&d.unit.toString()!==f.toString())throw new Error("Incompatible units. Change the units or use the unit function. Bad units: '"+f.toString()+"' and '"+d.unit.toString()+"'.");e=a.operate(b,c,this.value,d.value)}else"*"===c?(f.numerator=f.numerator.concat(d.unit.numerator).sort(),f.denominator=f.denominator.concat(d.unit.denominator).sort(),f.cancel()):"/"===c&&(f.numerator=f.numerator.concat(d.unit.denominator).sort(),f.denominator=f.denominator.concat(d.unit.numerator).sort(),f.cancel());return new a.Dimension(e,f)},compare:function(b){if(b instanceof a.Dimension){var c,d,e,f;if(this.unit.isEmpty()||b.unit.isEmpty())c=this,d=b;else if(c=this.unify(),d=b.unify(),0!==c.unit.compare(d.unit))return-1;return e=c.value,f=d.value,f>e?-1:e>f?1:0}return-1},unify:function(){return this.convertTo({length:"px",duration:"s",angle:"rad"})},convertTo:function(b){var c,d,e,f,g,h=this.value,i=this.unit.clone(),j={};if("string"==typeof b){for(c in a.UnitConversions)a.UnitConversions[c].hasOwnProperty(b)&&(j={},j[c]=b);b=j}g=function(a,b){return e.hasOwnProperty(a)?(b?h/=e[a]/e[f]:h*=e[a]/e[f],f):a};for(d in b)b.hasOwnProperty(d)&&(f=b[d],e=a.UnitConversions[d],i.map(g));return i.cancel(),new a.Dimension(h,i)}},a.UnitConversions={length:{m:1,cm:.01,mm:.001,"in":.0254,px:.0254/96,pt:.0254/72,pc:.0254/72*12},duration:{s:1,ms:.001},angle:{rad:1/(2*Math.PI),deg:1/360,grad:.0025,turn:1}},a.Unit=function(a,b,c){this.numerator=a?a.slice(0).sort():[],this.denominator=b?b.slice(0).sort():[],this.backupUnit=c},a.Unit.prototype={type:"Unit",clone:function(){return new a.Unit(this.numerator.slice(0),this.denominator.slice(0),this.backupUnit)},genCSS:function(a,b){this.numerator.length>=1?b.add(this.numerator[0]):this.denominator.length>=1?b.add(this.denominator[0]):a&&a.strictUnits||!this.backupUnit||b.add(this.backupUnit)},toCSS:a.toCSS,toString:function(){var a,b=this.numerator.join("*");for(a=0;a<this.denominator.length;a++)b+="/"+this.denominator[a];return b},compare:function(a){return this.is(a.toString())?0:-1},is:function(a){return this.toString()===a},isLength:function(){return Boolean(this.toCSS().match(/px|em|%|in|cm|mm|pc|pt|ex/))},isEmpty:function(){return 0===this.numerator.length&&0===this.denominator.length},isSingular:function(){return this.numerator.length<=1&&0===this.denominator.length},map:function(a){var b;for(b=0;b<this.numerator.length;b++)this.numerator[b]=a(this.numerator[b],!1);for(b=0;b<this.denominator.length;b++)this.denominator[b]=a(this.denominator[b],!0)},usedUnits:function(){var b,c,d={};c=function(a){return b.hasOwnProperty(a)&&!d[e]&&(d[e]=a),a};for(var e in a.UnitConversions)a.UnitConversions.hasOwnProperty(e)&&(b=a.UnitConversions[e],this.map(c));return d},cancel:function(){var a,b,c,d={};for(b=0;b<this.numerator.length;b++)a=this.numerator[b],c||(c=a),d[a]=(d[a]||0)+1;for(b=0;b<this.denominator.length;b++)a=this.denominator[b],c||(c=a),d[a]=(d[a]||0)-1;this.numerator=[],this.denominator=[];for(a in d)if(d.hasOwnProperty(a)){var e=d[a];if(e>0)for(b=0;e>b;b++)this.numerator.push(a);else if(0>e)for(b=0;-e>b;b++)this.denominator.push(a)}0===this.numerator.length&&0===this.denominator.length&&c&&(this.backupUnit=c),this.numerator.sort(),this.denominator.sort()}}}(c("../tree")),function(a){a.Directive=function(a,b,c,d,e,f){this.name=a,this.value=b,c&&(this.rules=c,this.rules.allowImports=!0),this.index=d,this.currentFileInfo=e,this.debugInfo=f},a.Directive.prototype={type:"Directive",accept:function(a){var b=this.value,c=this.rules;c&&(c=a.visit(c)),b&&(b=a.visit(b))},isRulesetLike:function(){return!this.isCharset()},isCharset:function(){return"@charset"===this.name},genCSS:function(b,c){var d=this.value,e=this.rules;c.add(this.name,this.currentFileInfo,this.index),d&&(c.add(" "),d.genCSS(b,c)),e?a.outputRuleset(b,c,[e]):c.add(";")},toCSS:a.toCSS,eval:function(b){var c=this.value,d=this.rules;return c&&(c=c.eval(b)),d&&(d=d.eval(b),d.root=!0),new a.Directive(this.name,c,d,this.index,this.currentFileInfo,this.debugInfo)},variable:function(b){return this.rules?a.Ruleset.prototype.variable.call(this.rules,b):void 0},find:function(){return this.rules?a.Ruleset.prototype.find.apply(this.rules,arguments):void 0},rulesets:function(){return this.rules?a.Ruleset.prototype.rulesets.apply(this.rules):void 0},markReferenced:function(){var a,b;if(this.isReferenced=!0,this.rules)for(b=this.rules.rules,a=0;a<b.length;a++)b[a].markReferenced&&b[a].markReferenced()}}}(c("../tree")),function(a){a.Element=function(b,c,d,e){this.combinator=b instanceof a.Combinator?b:new a.Combinator(b),this.value="string"==typeof c?c.trim():c?c:"",this.index=d,this.currentFileInfo=e},a.Element.prototype={type:"Element",accept:function(a){var b=this.value;this.combinator=a.visit(this.combinator),"object"==typeof b&&(this.value=a.visit(b))},eval:function(b){return new a.Element(this.combinator,this.value.eval?this.value.eval(b):this.value,this.index,this.currentFileInfo)},genCSS:function(a,b){b.add(this.toCSS(a),this.currentFileInfo,this.index)},toCSS:function(a){var b=this.value.toCSS?this.value.toCSS(a):this.value;return""===b&&"&"===this.combinator.value.charAt(0)?"":this.combinator.toCSS(a||{})+b}},a.Attribute=function(a,b,c){this.key=a,this.op=b,this.value=c},a.Attribute.prototype={type:"Attribute",eval:function(b){return new a.Attribute(this.key.eval?this.key.eval(b):this.key,this.op,this.value&&this.value.eval?this.value.eval(b):this.value)},genCSS:function(a,b){b.add(this.toCSS(a))},toCSS:function(a){var b=this.key.toCSS?this.key.toCSS(a):this.key;return this.op&&(b+=this.op,b+=this.value.toCSS?this.value.toCSS(a):this.value),"["+b+"]"}},a.Combinator=function(a){this.value=" "===a?" ":a?a.trim():""},a.Combinator.prototype={type:"Combinator",_noSpaceCombinators:{"":!0," ":!0,"|":!0},genCSS:function(a,b){var c=a.compress||this._noSpaceCombinators[this.value]?"":" ";b.add(c+this.value+c)},toCSS:a.toCSS}}(c("../tree")),function(a){a.Expression=function(a){this.value=a},a.Expression.prototype={type:"Expression",accept:function(a){this.value&&(this.value=a.visitArray(this.value))},eval:function(b){var c,d=this.parens&&!this.parensInOp,e=!1;return d&&b.inParenthesis(),this.value.length>1?c=new a.Expression(this.value.map(function(a){return a.eval(b)})):1===this.value.length?(this.value[0].parens&&!this.value[0].parensInOp&&(e=!0),c=this.value[0].eval(b)):c=this,d&&b.outOfParenthesis(),this.parens&&this.parensInOp&&!b.isMathOn()&&!e&&(c=new a.Paren(c)),c},genCSS:function(a,b){for(var c=0;c<this.value.length;c++)this.value[c].genCSS(a,b),c+1<this.value.length&&b.add(" ")},toCSS:a.toCSS,throwAwayComments:function(){this.value=this.value.filter(function(b){return!(b instanceof a.Comment)})}}}(c("../tree")),function(a){a.Extend=function(b,c,d){switch(this.selector=b,this.option=c,this.index=d,this.object_id=a.Extend.next_id++,this.parent_ids=[this.object_id],c){case"all":this.allowBefore=!0,this.allowAfter=!0;break;default:this.allowBefore=!1,this.allowAfter=!1}},a.Extend.next_id=0,a.Extend.prototype={type:"Extend",accept:function(a){this.selector=a.visit(this.selector)},eval:function(b){return new a.Extend(this.selector.eval(b),this.option,this.index)},clone:function(){return new a.Extend(this.selector,this.option,this.index)},findSelfSelectors:function(a){var b,c,d=[];for(b=0;b<a.length;b++)c=a[b].elements,b>0&&c.length&&""===c[0].combinator.value&&(c[0].combinator.value=" "),d=d.concat(a[b].elements);this.selfSelectors=[{elements:d}]}}}(c("../tree")),function(a){a.Import=function(a,c,d,e,f){if(this.options=d,this.index=e,this.path=a,this.features=c,this.currentFileInfo=f,this.options.less!==b||this.options.inline)this.css=!this.options.less||this.options.inline;else{var g=this.getPath();g&&/css([\?;].*)?$/.test(g)&&(this.css=!0)}},a.Import.prototype={type:"Import",accept:function(a){this.features&&(this.features=a.visit(this.features)),this.path=a.visit(this.path),!this.options.inline&&this.root&&(this.root=a.visit(this.root))},genCSS:function(a,b){this.css&&(b.add("@import ",this.currentFileInfo,this.index),this.path.genCSS(a,b),this.features&&(b.add(" "),this.features.genCSS(a,b)),b.add(";"))},toCSS:a.toCSS,getPath:function(){if(this.path instanceof a.Quoted){var c=this.path.value;return this.css!==b||/(\.[a-z]*$)|([\?;].*)$/.test(c)?c:c+".less"}return this.path instanceof a.URL?this.path.value.value:null},evalForImport:function(b){return new a.Import(this.path.eval(b),this.features,this.options,this.index,this.currentFileInfo)},evalPath:function(b){var c=this.path.eval(b),d=this.currentFileInfo&&this.currentFileInfo.rootpath;if(!(c instanceof a.URL)){if(d){var e=c.value;e&&b.isPathRelative(e)&&(c.value=d+e)}c.value=b.normalizePath(c.value)}return c},eval:function(b){var c,d=this.features&&this.features.eval(b);if(this.skip&&("function"==typeof this.skip&&(this.skip=this.skip()),this.skip))return[];if(this.options.inline){var e=new a.Anonymous(this.root,0,{filename:this.importedFilename},!0,!0);return this.features?new a.Media([e],this.features.value):[e]}if(this.css){var f=new a.Import(this.evalPath(b),d,this.options,this.index);if(!f.css&&this.error)throw this.error;return f}return c=new a.Ruleset(null,this.root.rules.slice(0)),c.evalImports(b),this.features?new a.Media(c.rules,this.features.value):c.rules}}}(c("../tree")),function(a){a.JavaScript=function(a,b,c){this.escaped=c,this.expression=a,this.index=b},a.JavaScript.prototype={type:"JavaScript",eval:function(b){var c,d=this,e={},f=this.expression.replace(/@\{([\w-]+)\}/g,function(c,e){return a.jsify(new a.Variable("@"+e,d.index).eval(b))});try{f=new Function("return ("+f+")")}catch(g){throw{message:"JavaScript evaluation error: "+g.message+" from `"+f+"`",index:this.index}}var h=b.frames[0].variables();for(var i in h)h.hasOwnProperty(i)&&(e[i.slice(1)]={value:h[i].value,toJS:function(){return this.value.eval(b).toCSS()}});try{c=f.call(e)}catch(g){throw{message:"JavaScript evaluation error: '"+g.name+": "+g.message.replace(/["]/g,"'")+"'",index:this.index}}return"number"==typeof c?new a.Dimension(c):"string"==typeof c?new a.Quoted('"'+c+'"',c,this.escaped,this.index):new a.Anonymous(Array.isArray(c)?c.join(", "):c)}}}(c("../tree")),function(a){a.Keyword=function(a){this.value=a},a.Keyword.prototype={type:"Keyword",eval:function(){return this},genCSS:function(a,b){if("%"===this.value)throw{type:"Syntax",message:"Invalid % without number"};b.add(this.value)},toCSS:a.toCSS,compare:function(b){return b instanceof a.Keyword?b.value===this.value?0:1:-1}},a.True=new a.Keyword("true"),a.False=new a.Keyword("false")}(c("../tree")),function(a){a.Media=function(b,c,d,e){this.index=d,this.currentFileInfo=e;var f=this.emptySelectors();this.features=new a.Value(c),this.rules=[new a.Ruleset(f,b)],this.rules[0].allowImports=!0},a.Media.prototype={type:"Media",accept:function(a){this.features&&(this.features=a.visit(this.features)),this.rules&&(this.rules=a.visitArray(this.rules))},genCSS:function(b,c){c.add("@media ",this.currentFileInfo,this.index),this.features.genCSS(b,c),a.outputRuleset(b,c,this.rules)},toCSS:a.toCSS,eval:function(b){b.mediaBlocks||(b.mediaBlocks=[],b.mediaPath=[]);var c=new a.Media(null,[],this.index,this.currentFileInfo);this.debugInfo&&(this.rules[0].debugInfo=this.debugInfo,c.debugInfo=this.debugInfo);var d=!1;b.strictMath||(d=!0,b.strictMath=!0);try{c.features=this.features.eval(b)}finally{d&&(b.strictMath=!1)}return b.mediaPath.push(c),b.mediaBlocks.push(c),b.frames.unshift(this.rules[0]),c.rules=[this.rules[0].eval(b)],b.frames.shift(),b.mediaPath.pop(),0===b.mediaPath.length?c.evalTop(b):c.evalNested(b)},variable:function(b){return a.Ruleset.prototype.variable.call(this.rules[0],b)},find:function(){return a.Ruleset.prototype.find.apply(this.rules[0],arguments)},rulesets:function(){return a.Ruleset.prototype.rulesets.apply(this.rules[0])},emptySelectors:function(){var b=new a.Element("","&",this.index,this.currentFileInfo),c=[new a.Selector([b],null,null,this.index,this.currentFileInfo)];return c[0].mediaEmpty=!0,c},markReferenced:function(){var a,b=this.rules[0].rules;for(this.rules[0].markReferenced(),this.isReferenced=!0,a=0;a<b.length;a++)b[a].markReferenced&&b[a].markReferenced()},evalTop:function(b){var c=this;if(b.mediaBlocks.length>1){var d=this.emptySelectors();c=new a.Ruleset(d,b.mediaBlocks),c.multiMedia=!0}return delete b.mediaBlocks,delete b.mediaPath,c},evalNested:function(b){var c,d,e=b.mediaPath.concat([this]);for(c=0;c<e.length;c++)d=e[c].features instanceof a.Value?e[c].features.value:e[c].features,e[c]=Array.isArray(d)?d:[d];return this.features=new a.Value(this.permute(e).map(function(b){for(b=b.map(function(b){return b.toCSS?b:new a.Anonymous(b)}),c=b.length-1;c>0;c--)b.splice(c,0,new a.Anonymous("and"));return new a.Expression(b)})),new a.Ruleset([],[])},permute:function(a){if(0===a.length)return[];
+if(1===a.length)return a[0];for(var b=[],c=this.permute(a.slice(1)),d=0;d<c.length;d++)for(var e=0;e<a[0].length;e++)b.push([a[0][e]].concat(c[d]));return b},bubbleSelectors:function(b){b&&(this.rules=[new a.Ruleset(b.slice(0),[this.rules[0]])])}}}(c("../tree")),function(a){a.mixin={},a.mixin.Call=function(b,c,d,e,f){this.selector=new a.Selector(b),this.arguments=c&&c.length?c:null,this.index=d,this.currentFileInfo=e,this.important=f},a.mixin.Call.prototype={type:"MixinCall",accept:function(a){this.selector&&(this.selector=a.visit(this.selector)),this.arguments&&(this.arguments=a.visitArray(this.arguments))},eval:function(b){var c,d,e,f,g,h,i,j,k,l,m,n,o,p=[],q=!1,r=[],s=[],t=a.defaultFunc,u=0,v=1,w=2;for(e=this.arguments&&this.arguments.map(function(a){return{name:a.name,value:a.value.eval(b)}}),f=0;f<b.frames.length;f++)if((c=b.frames[f].find(this.selector)).length>0){for(j=!0,g=0;g<c.length;g++){for(d=c[g],i=!1,h=0;h<b.frames.length;h++)if(!(d instanceof a.mixin.Definition)&&d===(b.frames[h].originalRuleset||b.frames[h])){i=!0;break}if(!i&&d.matchArgs(e,b)){if(l={mixin:d,group:u},d.matchCondition){for(h=0;2>h;h++)t.value(h),s[h]=d.matchCondition(e,b);(s[0]||s[1])&&(s[0]!=s[1]&&(l.group=s[1]?v:w),r.push(l))}else r.push(l);q=!0}}for(t.reset(),n=[0,0,0],g=0;g<r.length;g++)n[r[g].group]++;if(n[u]>0)m=w;else if(m=v,n[v]+n[w]>1)throw{type:"Runtime",message:"Ambiguous use of `default()` found when matching for `"+this.format(e)+"`",index:this.index,filename:this.currentFileInfo.filename};for(g=0;g<r.length;g++)if(l=r[g].group,l===u||l===m)try{d=r[g].mixin,d instanceof a.mixin.Definition||(o=d.originalRuleset||d,d=new a.mixin.Definition("",[],d.rules,null,!1),d.originalRuleset=o),Array.prototype.push.apply(p,d.evalCall(b,e,this.important).rules)}catch(x){throw{message:x.message,index:this.index,filename:this.currentFileInfo.filename,stack:x.stack}}if(q){if(!this.currentFileInfo||!this.currentFileInfo.reference)for(f=0;f<p.length;f++)k=p[f],k.markReferenced&&k.markReferenced();return p}}throw j?{type:"Runtime",message:"No matching definition was found for `"+this.format(e)+"`",index:this.index,filename:this.currentFileInfo.filename}:{type:"Name",message:this.selector.toCSS().trim()+" is undefined",index:this.index,filename:this.currentFileInfo.filename}},format:function(a){return this.selector.toCSS().trim()+"("+(a?a.map(function(a){var b="";return a.name&&(b+=a.name+":"),b+=a.value.toCSS?a.value.toCSS():"???"}).join(", "):"")+")"}},a.mixin.Definition=function(b,c,d,e,f,g){this.name=b,this.selectors=[new a.Selector([new a.Element(null,b,this.index,this.currentFileInfo)])],this.params=c,this.condition=e,this.variadic=f,this.arity=c.length,this.rules=d,this._lookups={},this.required=c.reduce(function(a,b){return!b.name||b.name&&!b.value?a+1:a},0),this.parent=a.Ruleset.prototype,this.frames=g},a.mixin.Definition.prototype={type:"MixinDefinition",accept:function(a){this.params&&this.params.length&&(this.params=a.visitArray(this.params)),this.rules=a.visitArray(this.rules),this.condition&&(this.condition=a.visit(this.condition))},variable:function(a){return this.parent.variable.call(this,a)},variables:function(){return this.parent.variables.call(this)},find:function(){return this.parent.find.apply(this,arguments)},rulesets:function(){return this.parent.rulesets.apply(this)},evalParams:function(b,c,d,e){var f,g,h,i,j,k,l,m,n=new a.Ruleset(null,null),o=this.params.slice(0),p=0;if(c=new a.evalEnv(c,[n].concat(c.frames)),d)for(d=d.slice(0),p=d.length,h=0;p>h;h++)if(g=d[h],k=g&&g.name){for(l=!1,i=0;i<o.length;i++)if(!e[i]&&k===o[i].name){e[i]=g.value.eval(b),n.prependRule(new a.Rule(k,g.value.eval(b))),l=!0;break}if(l){d.splice(h,1),h--;continue}throw{type:"Runtime",message:"Named argument for "+this.name+" "+d[h].name+" not found"}}for(m=0,h=0;h<o.length;h++)if(!e[h]){if(g=d&&d[m],k=o[h].name)if(o[h].variadic){for(f=[],i=m;p>i;i++)f.push(d[i].value.eval(b));n.prependRule(new a.Rule(k,new a.Expression(f).eval(b)))}else{if(j=g&&g.value)j=j.eval(b);else{if(!o[h].value)throw{type:"Runtime",message:"wrong number of arguments for "+this.name+" ("+p+" for "+this.arity+")"};j=o[h].value.eval(c),n.resetCache()}n.prependRule(new a.Rule(k,j)),e[h]=j}if(o[h].variadic&&d)for(i=m;p>i;i++)e[i]=d[i].value.eval(b);m++}return n},eval:function(b){return new a.mixin.Definition(this.name,this.params,this.rules,this.condition,this.variadic,this.frames||b.frames.slice(0))},evalCall:function(b,c,d){var e,f,g=[],h=this.frames?this.frames.concat(b.frames):b.frames,i=this.evalParams(b,new a.evalEnv(b,h),c,g);return i.prependRule(new a.Rule("@arguments",new a.Expression(g).eval(b))),e=this.rules.slice(0),f=new a.Ruleset(null,e),f.originalRuleset=this,f=f.eval(new a.evalEnv(b,[this,i].concat(h))),d&&(f=this.parent.makeImportant.apply(f)),f},matchCondition:function(b,c){return this.condition&&!this.condition.eval(new a.evalEnv(c,[this.evalParams(c,new a.evalEnv(c,this.frames?this.frames.concat(c.frames):c.frames),b,[])].concat(this.frames).concat(c.frames)))?!1:!0},matchArgs:function(a,b){var c,d=a&&a.length||0;if(this.variadic){if(d<this.required-1)return!1}else{if(d<this.required)return!1;if(d>this.params.length)return!1}c=Math.min(d,this.arity);for(var e=0;c>e;e++)if(!this.params[e].name&&!this.params[e].variadic&&a[e].value.eval(b).toCSS()!=this.params[e].value.eval(b).toCSS())return!1;return!0}}}(c("../tree")),function(a){a.Negative=function(a){this.value=a},a.Negative.prototype={type:"Negative",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add("-"),this.value.genCSS(a,b)},toCSS:a.toCSS,eval:function(b){return b.isMathOn()?new a.Operation("*",[new a.Dimension(-1),this.value]).eval(b):new a.Negative(this.value.eval(b))}}}(c("../tree")),function(a){a.Operation=function(a,b,c){this.op=a.trim(),this.operands=b,this.isSpaced=c},a.Operation.prototype={type:"Operation",accept:function(a){this.operands=a.visit(this.operands)},eval:function(b){var c=this.operands[0].eval(b),d=this.operands[1].eval(b);if(b.isMathOn()){if(c instanceof a.Dimension&&d instanceof a.Color&&(c=c.toColor()),d instanceof a.Dimension&&c instanceof a.Color&&(d=d.toColor()),!c.operate)throw{type:"Operation",message:"Operation on an invalid type"};return c.operate(b,this.op,d)}return new a.Operation(this.op,[c,d],this.isSpaced)},genCSS:function(a,b){this.operands[0].genCSS(a,b),this.isSpaced&&b.add(" "),b.add(this.op),this.isSpaced&&b.add(" "),this.operands[1].genCSS(a,b)},toCSS:a.toCSS},a.operate=function(a,b,c,d){switch(b){case"+":return c+d;case"-":return c-d;case"*":return c*d;case"/":return c/d}}}(c("../tree")),function(a){a.Paren=function(a){this.value=a},a.Paren.prototype={type:"Paren",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add("("),this.value.genCSS(a,b),b.add(")")},toCSS:a.toCSS,eval:function(b){return new a.Paren(this.value.eval(b))}}}(c("../tree")),function(a){a.Quoted=function(a,b,c,d,e){this.escaped=c,this.value=b||"",this.quote=a.charAt(0),this.index=d,this.currentFileInfo=e},a.Quoted.prototype={type:"Quoted",genCSS:function(a,b){this.escaped||b.add(this.quote,this.currentFileInfo,this.index),b.add(this.value),this.escaped||b.add(this.quote)},toCSS:a.toCSS,eval:function(b){var c=this,d=this.value.replace(/`([^`]+)`/g,function(d,e){return new a.JavaScript(e,c.index,!0).eval(b).value}).replace(/@\{([\w-]+)\}/g,function(d,e){var f=new a.Variable("@"+e,c.index,c.currentFileInfo).eval(b,!0);return f instanceof a.Quoted?f.value:f.toCSS()});return new a.Quoted(this.quote+d+this.quote,d,this.escaped,this.index,this.currentFileInfo)},compare:function(a){if(!a.toCSS)return-1;var b,c;return"Quoted"!==a.type||this.escaped||a.escaped?(b=this.toCSS(),c=a.toCSS()):(b=a.value,c=this.value),b===c?0:c>b?-1:1}}}(c("../tree")),function(a){function c(a,b){var c,d="",e=b.length,f={add:function(a){d+=a}};for(c=0;e>c;c++)b[c].eval(a).genCSS(a,f);return d}a.Rule=function(c,d,e,f,g,h,i,j){this.name=c,this.value=d instanceof a.Value||d instanceof a.Ruleset?d:new a.Value([d]),this.important=e?" "+e.trim():"",this.merge=f,this.index=g,this.currentFileInfo=h,this.inline=i||!1,this.variable=j!==b?j:c.charAt&&"@"===c.charAt(0)},a.Rule.prototype={type:"Rule",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add(this.name+(a.compress?":":": "),this.currentFileInfo,this.index);try{this.value.genCSS(a,b)}catch(c){throw c.index=this.index,c.filename=this.currentFileInfo.filename,c}b.add(this.important+(this.inline||a.lastRule&&a.compress?"":";"),this.currentFileInfo,this.index)},toCSS:a.toCSS,eval:function(b){var d,e=!1,f=this.name,g=this.variable;"string"!=typeof f&&(f=1===f.length&&f[0]instanceof a.Keyword?f[0].value:c(b,f),g=!1),"font"!==f||b.strictMath||(e=!0,b.strictMath=!0);try{if(d=this.value.eval(b),!this.variable&&"DetachedRuleset"===d.type)throw{message:"Rulesets cannot be evaluated on a property.",index:this.index,filename:this.currentFileInfo.filename};return new a.Rule(f,d,this.important,this.merge,this.index,this.currentFileInfo,this.inline,g)}catch(h){throw"number"!=typeof h.index&&(h.index=this.index,h.filename=this.currentFileInfo.filename),h}finally{e&&(b.strictMath=!1)}},makeImportant:function(){return new a.Rule(this.name,this.value,"!important",this.merge,this.index,this.currentFileInfo,this.inline)}}}(c("../tree")),function(a){a.RulesetCall=function(a){this.variable=a},a.RulesetCall.prototype={type:"RulesetCall",accept:function(){},eval:function(b){var c=new a.Variable(this.variable).eval(b);return c.callEval(b)}}}(c("../tree")),function(a){a.Ruleset=function(a,b,c){this.selectors=a,this.rules=b,this._lookups={},this.strictImports=c},a.Ruleset.prototype={type:"Ruleset",accept:function(a){this.paths?a.visitArray(this.paths,!0):this.selectors&&(this.selectors=a.visitArray(this.selectors)),this.rules&&this.rules.length&&(this.rules=a.visitArray(this.rules))},eval:function(b){var c,d,e,f,g=this.selectors,h=a.defaultFunc,i=!1;if(g&&(d=g.length)){for(c=[],h.error({type:"Syntax",message:"it is currently only allowed in parametric mixin guards,"}),f=0;d>f;f++)e=g[f].eval(b),c.push(e),e.evaldCondition&&(i=!0);h.reset()}else i=!0;var j,k,l=this.rules?this.rules.slice(0):null,m=new a.Ruleset(c,l,this.strictImports);m.originalRuleset=this,m.root=this.root,m.firstRoot=this.firstRoot,m.allowImports=this.allowImports,this.debugInfo&&(m.debugInfo=this.debugInfo),i||(l.length=0);var n=b.frames;n.unshift(m);var o=b.selectors;o||(b.selectors=o=[]),o.unshift(this.selectors),(m.root||m.allowImports||!m.strictImports)&&m.evalImports(b);var p=m.rules,q=p?p.length:0;for(f=0;q>f;f++)(p[f]instanceof a.mixin.Definition||p[f]instanceof a.DetachedRuleset)&&(p[f]=p[f].eval(b));var r=b.mediaBlocks&&b.mediaBlocks.length||0;for(f=0;q>f;f++)p[f]instanceof a.mixin.Call?(l=p[f].eval(b).filter(function(b){return b instanceof a.Rule&&b.variable?!m.variable(b.name):!0}),p.splice.apply(p,[f,1].concat(l)),q+=l.length-1,f+=l.length-1,m.resetCache()):p[f]instanceof a.RulesetCall&&(l=p[f].eval(b).rules.filter(function(b){return b instanceof a.Rule&&b.variable?!1:!0}),p.splice.apply(p,[f,1].concat(l)),q+=l.length-1,f+=l.length-1,m.resetCache());for(f=0;f<p.length;f++)j=p[f],j instanceof a.mixin.Definition||j instanceof a.DetachedRuleset||(p[f]=j=j.eval?j.eval(b):j);for(f=0;f<p.length;f++)if(j=p[f],j instanceof a.Ruleset&&j.selectors&&1===j.selectors.length&&j.selectors[0].isJustParentSelector()){p.splice(f--,1);for(var s=0;s<j.rules.length;s++)k=j.rules[s],k instanceof a.Rule&&k.variable||p.splice(++f,0,k)}if(n.shift(),o.shift(),b.mediaBlocks)for(f=r;f<b.mediaBlocks.length;f++)b.mediaBlocks[f].bubbleSelectors(c);return m},evalImports:function(b){var c,d,e=this.rules;if(e)for(c=0;c<e.length;c++)e[c]instanceof a.Import&&(d=e[c].eval(b),d&&d.length?(e.splice.apply(e,[c,1].concat(d)),c+=d.length-1):e.splice(c,1,d),this.resetCache())},makeImportant:function(){return new a.Ruleset(this.selectors,this.rules.map(function(a){return a.makeImportant?a.makeImportant():a}),this.strictImports)},matchArgs:function(a){return!a||0===a.length},matchCondition:function(b,c){var d=this.selectors[this.selectors.length-1];return d.evaldCondition?d.condition&&!d.condition.eval(new a.evalEnv(c,c.frames))?!1:!0:!1},resetCache:function(){this._rulesets=null,this._variables=null,this._lookups={}},variables:function(){return this._variables||(this._variables=this.rules?this.rules.reduce(function(b,c){return c instanceof a.Rule&&c.variable===!0&&(b[c.name]=c),b},{}):{}),this._variables},variable:function(a){return this.variables()[a]},rulesets:function(){if(!this.rules)return null;var b,c,d=a.Ruleset,e=a.mixin.Definition,f=[],g=this.rules,h=g.length;for(b=0;h>b;b++)c=g[b],(c instanceof d||c instanceof e)&&f.push(c);return f},prependRule:function(a){var b=this.rules;b?b.unshift(a):this.rules=[a]},find:function(b,c){c=c||this;var d,e=[],f=b.toCSS();return f in this._lookups?this._lookups[f]:(this.rulesets().forEach(function(f){if(f!==c)for(var g=0;g<f.selectors.length;g++)if(d=b.match(f.selectors[g])){b.elements.length>d?Array.prototype.push.apply(e,f.find(new a.Selector(b.elements.slice(d)),c)):e.push(f);break}}),this._lookups[f]=e,e)},genCSS:function(b,c){function d(b,c){return b.rules?!0:b instanceof a.Media||c&&b instanceof a.Comment?!0:b instanceof a.Directive||b instanceof a.Anonymous?b.isRulesetLike():!1}var e,f,g,h,i,j,k=[],l=[],m=[];b.tabLevel=b.tabLevel||0,this.root||b.tabLevel++;var n,o=b.compress?"":Array(b.tabLevel+1).join(" "),p=b.compress?"":Array(b.tabLevel).join(" ");for(e=0;e<this.rules.length;e++)i=this.rules[e],d(i,this.root)?m.push(i):i.isCharset&&i.isCharset()?k.push(i):l.push(i);if(l=k.concat(l),!this.root){h=a.debugInfo(b,this,p),h&&(c.add(h),c.add(p));var q,r=this.paths,s=r.length;for(n=b.compress?",":",\n"+p,e=0;s>e;e++)if(j=r[e],q=j.length)for(e>0&&c.add(n),b.firstSelector=!0,j[0].genCSS(b,c),b.firstSelector=!1,f=1;q>f;f++)j[f].genCSS(b,c);c.add((b.compress?"{":" {\n")+o)}for(e=0;e<l.length;e++)i=l[e],e+1!==l.length||this.root&&0!==m.length&&!this.firstRoot||(b.lastRule=!0),i.genCSS?i.genCSS(b,c):i.value&&c.add(i.value.toString()),b.lastRule?b.lastRule=!1:c.add(b.compress?"":"\n"+o);if(this.root||(c.add(b.compress?"}":"\n"+p+"}"),b.tabLevel--),n=(b.compress?"":"\n")+(this.root?o:p),g=m.length)for(l.length&&n&&c.add(n),m[0].genCSS(b,c),e=1;g>e;e++)n&&c.add(n),m[e].genCSS(b,c);c.isEmpty()||b.compress||!this.firstRoot||c.add("\n")},toCSS:a.toCSS,markReferenced:function(){if(this.selectors)for(var a=0;a<this.selectors.length;a++)this.selectors[a].markReferenced()},joinSelectors:function(a,b,c){for(var d=0;d<c.length;d++)this.joinSelector(a,b,c[d])},joinSelector:function(b,c,d){var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s;for(e=0;e<d.elements.length;e++)j=d.elements[e],"&"===j.value&&(h=!0);if(h){for(r=[],i=[[]],e=0;e<d.elements.length;e++)if(j=d.elements[e],"&"!==j.value)r.push(j);else{for(s=[],r.length>0&&this.mergeElementsOnToSelectors(r,i),f=0;f<i.length;f++)if(k=i[f],0===c.length)k.length>0&&(k[0].elements=k[0].elements.slice(0),k[0].elements.push(new a.Element(j.combinator,"",j.index,j.currentFileInfo))),s.push(k);else for(g=0;g<c.length;g++)l=c[g],m=[],n=[],p=!0,k.length>0?(m=k.slice(0),q=m.pop(),o=d.createDerived(q.elements.slice(0)),p=!1):o=d.createDerived([]),l.length>1&&(n=n.concat(l.slice(1))),l.length>0&&(p=!1,o.elements.push(new a.Element(j.combinator,l[0].elements[0].value,j.index,j.currentFileInfo)),o.elements=o.elements.concat(l[0].elements.slice(1))),p||m.push(o),m=m.concat(n),s.push(m);i=s,r=[]}for(r.length>0&&this.mergeElementsOnToSelectors(r,i),e=0;e<i.length;e++)i[e].length>0&&b.push(i[e])}else if(c.length>0)for(e=0;e<c.length;e++)b.push(c[e].concat(d));else b.push([d])},mergeElementsOnToSelectors:function(b,c){var d,e;if(0===c.length)return void c.push([new a.Selector(b)]);for(d=0;d<c.length;d++)e=c[d],e.length>0?e[e.length-1]=e[e.length-1].createDerived(e[e.length-1].elements.concat(b)):e.push(new a.Selector(b))}}}(c("../tree")),function(a){a.Selector=function(a,b,c,d,e,f){this.elements=a,this.extendList=b,this.condition=c,this.currentFileInfo=e||{},this.isReferenced=f,c||(this.evaldCondition=!0)},a.Selector.prototype={type:"Selector",accept:function(a){this.elements&&(this.elements=a.visitArray(this.elements)),this.extendList&&(this.extendList=a.visitArray(this.extendList)),this.condition&&(this.condition=a.visit(this.condition))},createDerived:function(b,c,d){d=null!=d?d:this.evaldCondition;var e=new a.Selector(b,c||this.extendList,null,this.index,this.currentFileInfo,this.isReferenced);return e.evaldCondition=d,e.mediaEmpty=this.mediaEmpty,e},match:function(a){var b,c,d=this.elements,e=d.length;if(a.CacheElements(),b=a._elements.length,0===b||b>e)return 0;for(c=0;b>c;c++)if(d[c].value!==a._elements[c])return 0;return b},CacheElements:function(){var a,b,c,d="";if(!this._elements){for(a=this.elements.length,c=0;a>c;c++)if(b=this.elements[c],d+=b.combinator.value,b.value.value){if("string"!=typeof b.value.value){d="";break}d+=b.value.value}else d+=b.value;this._elements=d.match(/[,&#\*\.\w-]([\w-]|(\\.))*/g),this._elements?"&"===this._elements[0]&&this._elements.shift():this._elements=[]}},isJustParentSelector:function(){return!this.mediaEmpty&&1===this.elements.length&&"&"===this.elements[0].value&&(" "===this.elements[0].combinator.value||""===this.elements[0].combinator.value)},eval:function(a){var b=this.condition&&this.condition.eval(a),c=this.elements,d=this.extendList;return c=c&&c.map(function(b){return b.eval(a)}),d=d&&d.map(function(b){return b.eval(a)}),this.createDerived(c,d,b)},genCSS:function(a,b){var c,d;if(a&&a.firstSelector||""!==this.elements[0].combinator.value||b.add(" ",this.currentFileInfo,this.index),!this._css)for(c=0;c<this.elements.length;c++)d=this.elements[c],d.genCSS(a,b)},toCSS:a.toCSS,markReferenced:function(){this.isReferenced=!0},getIsReferenced:function(){return!this.currentFileInfo.reference||this.isReferenced},getIsOutput:function(){return this.evaldCondition}}}(c("../tree")),function(a){a.UnicodeDescriptor=function(a){this.value=a},a.UnicodeDescriptor.prototype={type:"UnicodeDescriptor",genCSS:function(a,b){b.add(this.value)},toCSS:a.toCSS,eval:function(){return this}}}(c("../tree")),function(a){a.URL=function(a,b,c){this.value=a,this.currentFileInfo=b,this.isEvald=c},a.URL.prototype={type:"Url",accept:function(a){this.value=a.visit(this.value)},genCSS:function(a,b){b.add("url("),this.value.genCSS(a,b),b.add(")")},toCSS:a.toCSS,eval:function(b){var c,d=this.value.eval(b);if(!this.isEvald&&(c=this.currentFileInfo&&this.currentFileInfo.rootpath,c&&"string"==typeof d.value&&b.isPathRelative(d.value)&&(d.quote||(c=c.replace(/[\(\)'"\s]/g,function(a){return"\\"+a})),d.value=c+d.value),d.value=b.normalizePath(d.value),b.urlArgs&&!d.value.match(/^\s*data:/))){var e=-1===d.value.indexOf("?")?"?":"&",f=e+b.urlArgs;-1!==d.value.indexOf("#")?d.value=d.value.replace("#",f+"#"):d.value+=f}return new a.URL(d,this.currentFileInfo,!0)}}}(c("../tree")),function(a){a.Value=function(a){this.value=a},a.Value.prototype={type:"Value",accept:function(a){this.value&&(this.value=a.visitArray(this.value))},eval:function(b){return 1===this.value.length?this.value[0].eval(b):new a.Value(this.value.map(function(a){return a.eval(b)}))},genCSS:function(a,b){var c;for(c=0;c<this.value.length;c++)this.value[c].genCSS(a,b),c+1<this.value.length&&b.add(a&&a.compress?",":", ")},toCSS:a.toCSS}}(c("../tree")),function(a){a.Variable=function(a,b,c){this.name=a,this.index=b,this.currentFileInfo=c||{}},a.Variable.prototype={type:"Variable",eval:function(b){var c,d=this.name;if(0===d.indexOf("@@")&&(d="@"+new a.Variable(d.slice(1)).eval(b).value),this.evaluating)throw{type:"Name",message:"Recursive variable definition for "+d,filename:this.currentFileInfo.file,index:this.index};if(this.evaluating=!0,c=a.find(b.frames,function(a){var c=a.variable(d);return c?c.value.eval(b):void 0}))return this.evaluating=!1,c;throw{type:"Name",message:"variable "+d+" is undefined",filename:this.currentFileInfo.filename,index:this.index}}}}(c("../tree")),function(a){var b=["paths","optimization","files","contents","contentsIgnoredChars","relativeUrls","rootpath","strictImports","insecure","dumpLineNumbers","compress","processImports","syncImport","javascriptEnabled","mime","useFileCache","currentFileInfo"];a.parseEnv=function(a){if(d(a,this,b),this.contents||(this.contents={}),this.contentsIgnoredChars||(this.contentsIgnoredChars={}),this.files||(this.files={}),"string"==typeof this.paths&&(this.paths=[this.paths]),!this.currentFileInfo){var c=a&&a.filename||"input",e=c.replace(/[^\/\\]*$/,"");a&&(a.filename=null),this.currentFileInfo={filename:c,relativeUrls:this.relativeUrls,rootpath:a&&a.rootpath||"",currentDirectory:e,entryPath:e,rootFilename:c}}};var c=["silent","verbose","compress","yuicompress","ieCompat","strictMath","strictUnits","cleancss","sourceMap","importMultiple","urlArgs"];a.evalEnv=function(a,b){d(a,this,c),this.frames=b||[]},a.evalEnv.prototype.inParenthesis=function(){this.parensStack||(this.parensStack=[]),this.parensStack.push(!0)},a.evalEnv.prototype.outOfParenthesis=function(){this.parensStack.pop()},a.evalEnv.prototype.isMathOn=function(){return this.strictMath?this.parensStack&&this.parensStack.length:!0},a.evalEnv.prototype.isPathRelative=function(a){return!/^(?:[a-z-]+:|\/)/.test(a)},a.evalEnv.prototype.normalizePath=function(a){var b,c=a.split("/").reverse();for(a=[];0!==c.length;)switch(b=c.pop()){case".":break;case"..":0===a.length||".."===a[a.length-1]?a.push(b):a.pop();break;default:a.push(b)}return a.join("/")};var d=function(a,b,c){if(a)for(var d=0;d<c.length;d++)a.hasOwnProperty(c[d])&&(b[c[d]]=a[c[d]])}}(c("./tree")),function(a){function b(a){return a}function c(a,b){var d,e;for(d in a)if(a.hasOwnProperty(d))switch(e=a[d],typeof e){case"function":e.prototype&&e.prototype.type&&(e.prototype.typeIndex=b++);break;case"object":b=c(e,b)}return b}var d={visitDeeper:!0},e=!1;a.visitor=function(b){this._implementation=b,this._visitFnCache=[],e||(c(a,1),e=!0)},a.visitor.prototype={visit:function(a){if(!a)return a;var c=a.typeIndex;if(!c)return a;var e,f=this._visitFnCache,g=this._implementation,h=c<<1,i=1|h,j=f[h],k=f[i],l=d;if(l.visitDeeper=!0,j||(e="visit"+a.type,j=g[e]||b,k=g[e+"Out"]||b,f[h]=j,f[i]=k),j!==b){var m=j.call(g,a,l);g.isReplacing&&(a=m)}return l.visitDeeper&&a&&a.accept&&a.accept(this),k!=b&&k.call(g,a),a},visitArray:function(a,b){if(!a)return a;var c,d=a.length;if(b||!this._implementation.isReplacing){for(c=0;d>c;c++)this.visit(a[c]);return a}var e=[];for(c=0;d>c;c++){var f=this.visit(a[c]);f.splice?f.length&&this.flatten(f,e):e.push(f)}return e},flatten:function(a,b){b||(b=[]);var c,d,e,f,g,h;for(d=0,c=a.length;c>d;d++)if(e=a[d],e.splice)for(g=0,f=e.length;f>g;g++)h=e[g],h.splice?h.length&&this.flatten(h,b):b.push(h);else b.push(e);return b}}}(c("./tree")),function(a){a.importVisitor=function(b,c,d,e,f){if(this._visitor=new a.visitor(this),this._importer=b,this._finish=c,this.env=d||new a.evalEnv,this.importCount=0,this.onceFileDetectionMap=e||{},this.recursionDetector={},f)for(var g in f)f.hasOwnProperty(g)&&(this.recursionDetector[g]=!0)},a.importVisitor.prototype={isReplacing:!0,run:function(a){var b;try{this._visitor.visit(a)}catch(c){b=c}this.isFinished=!0,0===this.importCount&&this._finish(b)},visitImport:function(b,c){var d,e=this,f=b.options.inline;if(!b.css||f){try{d=b.evalForImport(this.env)}catch(g){g.filename||(g.index=b.index,g.filename=b.currentFileInfo.filename),b.css=!0,b.error=g}if(d&&(!d.css||f)){b=d,this.importCount++;var h=new a.evalEnv(this.env,this.env.frames.slice(0));b.options.multiple&&(h.importMultiple=!0),this._importer.push(b.getPath(),b.currentFileInfo,b.options,function(c,d,g,i){c&&!c.filename&&(c.index=b.index,c.filename=b.currentFileInfo.filename);var j=g||i in e.recursionDetector;h.importMultiple||(b.skip=j?!0:function(){return i in e.onceFileDetectionMap?!0:(e.onceFileDetectionMap[i]=!0,!1)});var k=function(a){e.importCount--,0===e.importCount&&e.isFinished&&e._finish(a)};return!d||(b.root=d,b.importedFilename=i,f||!h.importMultiple&&j)?void k():(e.recursionDetector[i]=!0,void new a.importVisitor(e._importer,k,h,e.onceFileDetectionMap,e.recursionDetector).run(d))})}}return c.visitDeeper=!1,b},visitRule:function(a,b){return b.visitDeeper=!1,a},visitDirective:function(a){return this.env.frames.unshift(a),a},visitDirectiveOut:function(){this.env.frames.shift()},visitMixinDefinition:function(a){return this.env.frames.unshift(a),a},visitMixinDefinitionOut:function(){this.env.frames.shift()},visitRuleset:function(a){return this.env.frames.unshift(a),a},visitRulesetOut:function(){this.env.frames.shift()},visitMedia:function(a){return this.env.frames.unshift(a.rules[0]),a},visitMediaOut:function(){this.env.frames.shift()}}}(c("./tree")),function(a){a.joinSelectorVisitor=function(){this.contexts=[[]],this._visitor=new a.visitor(this)},a.joinSelectorVisitor.prototype={run:function(a){return this._visitor.visit(a)},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitRuleset:function(a){var b,c=this.contexts[this.contexts.length-1],d=[];this.contexts.push(d),a.root||(b=a.selectors,b&&(b=b.filter(function(a){return a.getIsOutput()}),a.selectors=b.length?b:b=null,b&&a.joinSelectors(d,c,b)),b||(a.rules=null),a.paths=d)},visitRulesetOut:function(){this.contexts.length=this.contexts.length-1},visitMedia:function(a){var b=this.contexts[this.contexts.length-1];a.rules[0].root=0===b.length||b[0].multiMedia}}}(c("./tree")),function(a){a.toCSSVisitor=function(b){this._visitor=new a.visitor(this),this._env=b},a.toCSSVisitor.prototype={isReplacing:!0,run:function(a){return this._visitor.visit(a)},visitRule:function(a){return a.variable?[]:a},visitMixinDefinition:function(a){return a.frames=[],[]},visitExtend:function(){return[]},visitComment:function(a){return a.isSilent(this._env)?[]:a},visitMedia:function(a,b){return a.accept(this._visitor),b.visitDeeper=!1,a.rules.length?a:[]},visitDirective:function(b){if(b.currentFileInfo.reference&&!b.isReferenced)return[];if("@charset"===b.name){if(this.charset){if(b.debugInfo){var c=new a.Comment("/* "+b.toCSS(this._env).replace(/\n/g,"")+" */\n");return c.debugInfo=b.debugInfo,this._visitor.visit(c)}return[]}this.charset=!0}return b.rules&&b.rules.rules&&this._mergeRules(b.rules.rules),b},checkPropertiesInRoot:function(b){for(var c,d=0;d<b.length;d++)if(c=b[d],c instanceof a.Rule&&!c.variable)throw{message:"properties must be inside selector blocks, they cannot be in the root.",index:c.index,filename:c.currentFileInfo?c.currentFileInfo.filename:null}},visitRuleset:function(b,c){var d,e=[];if(b.firstRoot&&this.checkPropertiesInRoot(b.rules),b.root)b.accept(this._visitor),c.visitDeeper=!1,(b.firstRoot||b.rules&&b.rules.length>0)&&e.splice(0,0,b);else{b.paths&&(b.paths=b.paths.filter(function(b){var c;for(" "===b[0].elements[0].combinator.value&&(b[0].elements[0].combinator=new a.Combinator("")),c=0;c<b.length;c++)if(b[c].getIsReferenced()&&b[c].getIsOutput())return!0;return!1}));for(var f=b.rules,g=f?f.length:0,h=0;g>h;)d=f[h],d&&d.rules?(e.push(this._visitor.visit(d)),f.splice(h,1),g--):h++;g>0?b.accept(this._visitor):b.rules=null,c.visitDeeper=!1,f=b.rules,f&&(this._mergeRules(f),f=b.rules),f&&(this._removeDuplicateRules(f),f=b.rules),f&&f.length>0&&b.paths.length>0&&e.splice(0,0,b)}return 1===e.length?e[0]:e},_removeDuplicateRules:function(b){if(b){var c,d,e,f={};for(e=b.length-1;e>=0;e--)if(d=b[e],d instanceof a.Rule)if(f[d.name]){c=f[d.name],c instanceof a.Rule&&(c=f[d.name]=[f[d.name].toCSS(this._env)]);var g=d.toCSS(this._env);-1!==c.indexOf(g)?b.splice(e,1):c.push(g)}else f[d.name]=d}},_mergeRules:function(b){if(b){for(var c,d,e,f={},g=0;g<b.length;g++)d=b[g],d instanceof a.Rule&&d.merge&&(e=[d.name,d.important?"!":""].join(","),f[e]?b.splice(g--,1):f[e]=[],f[e].push(d));Object.keys(f).map(function(b){function e(b){return new a.Expression(b.map(function(a){return a.value}))}function g(b){return new a.Value(b.map(function(a){return a}))}if(c=f[b],c.length>1){d=c[0];var h=[],i=[];c.map(function(a){"+"===a.merge&&(i.length>0&&h.push(e(i)),i=[]),i.push(a)}),h.push(e(i)),d.value=g(h)}})}}}}(c("./tree")),function(a){a.extendFinderVisitor=function(){this._visitor=new a.visitor(this),this.contexts=[],this.allExtendsStack=[[]]},a.extendFinderVisitor.prototype={run:function(a){return a=this._visitor.visit(a),a.allExtends=this.allExtendsStack[0],a},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitRuleset:function(b){if(!b.root){var c,d,e,f,g=[],h=b.rules,i=h?h.length:0;for(c=0;i>c;c++)b.rules[c]instanceof a.Extend&&(g.push(h[c]),b.extendOnEveryPath=!0);var j=b.paths;for(c=0;c<j.length;c++){var k=j[c],l=k[k.length-1],m=l.extendList;for(f=m?m.slice(0).concat(g):g,f&&(f=f.map(function(a){return a.clone()})),d=0;d<f.length;d++)this.foundExtends=!0,e=f[d],e.findSelfSelectors(k),e.ruleset=b,0===d&&(e.firstExtendOnThisSelectorPath=!0),this.allExtendsStack[this.allExtendsStack.length-1].push(e)}this.contexts.push(b.selectors)}},visitRulesetOut:function(a){a.root||(this.contexts.length=this.contexts.length-1)},visitMedia:function(a){a.allExtends=[],this.allExtendsStack.push(a.allExtends)},visitMediaOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1},visitDirective:function(a){a.allExtends=[],this.allExtendsStack.push(a.allExtends)},visitDirectiveOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1}},a.processExtendsVisitor=function(){this._visitor=new a.visitor(this)},a.processExtendsVisitor.prototype={run:function(b){var c=new a.extendFinderVisitor;return c.run(b),c.foundExtends?(b.allExtends=b.allExtends.concat(this.doExtendChaining(b.allExtends,b.allExtends)),this.allExtendsStack=[b.allExtends],this._visitor.visit(b)):b},doExtendChaining:function(b,c,d){var e,f,g,h,i,j,k,l,m=[],n=this;for(d=d||0,e=0;e<b.length;e++)for(f=0;f<c.length;f++)j=b[e],k=c[f],j.parent_ids.indexOf(k.object_id)>=0||(i=[k.selfSelectors[0]],g=n.findMatch(j,i),g.length&&j.selfSelectors.forEach(function(b){h=n.extendSelector(g,i,b),l=new a.Extend(k.selector,k.option,0),l.selfSelectors=h,h[h.length-1].extendList=[l],m.push(l),l.ruleset=k.ruleset,l.parent_ids=l.parent_ids.concat(k.parent_ids,j.parent_ids),k.firstExtendOnThisSelectorPath&&(l.firstExtendOnThisSelectorPath=!0,k.ruleset.paths.push(h))}));if(m.length){if(this.extendChainCount++,d>100){var o="{unable to calculate}",p="{unable to calculate}";try{o=m[0].selfSelectors[0].toCSS(),p=m[0].selector.toCSS()}catch(q){}throw{message:"extend circular reference detected. One of the circular extends is currently:"+o+":extend("+p+")"}}return m.concat(n.doExtendChaining(m,c,d+1))}return m},visitRule:function(a,b){b.visitDeeper=!1},visitMixinDefinition:function(a,b){b.visitDeeper=!1},visitSelector:function(a,b){b.visitDeeper=!1},visitRuleset:function(a){if(!a.root){var b,c,d,e,f=this.allExtendsStack[this.allExtendsStack.length-1],g=[],h=this;for(d=0;d<f.length;d++)for(c=0;c<a.paths.length;c++)if(e=a.paths[c],!a.extendOnEveryPath){var i=e[e.length-1].extendList;i&&i.length||(b=this.findMatch(f[d],e),b.length&&f[d].selfSelectors.forEach(function(a){g.push(h.extendSelector(b,e,a))}))}a.paths=a.paths.concat(g)}},findMatch:function(a,b){var c,d,e,f,g,h,i,j=this,k=a.selector.elements,l=[],m=[];for(c=0;c<b.length;c++)for(d=b[c],e=0;e<d.elements.length;e++)for(f=d.elements[e],(a.allowBefore||0===c&&0===e)&&l.push({pathIndex:c,index:e,matched:0,initialCombinator:f.combinator}),h=0;h<l.length;h++)i=l[h],g=f.combinator.value,""===g&&0===e&&(g=" "),!j.isElementValuesEqual(k[i.matched].value,f.value)||i.matched>0&&k[i.matched].combinator.value!==g?i=null:i.matched++,i&&(i.finished=i.matched===k.length,i.finished&&!a.allowAfter&&(e+1<d.elements.length||c+1<b.length)&&(i=null)),i?i.finished&&(i.length=k.length,i.endPathIndex=c,i.endPathElementIndex=e+1,l.length=0,m.push(i)):(l.splice(h,1),h--);return m},isElementValuesEqual:function(b,c){if("string"==typeof b||"string"==typeof c)return b===c;if(b instanceof a.Attribute)return b.op!==c.op||b.key!==c.key?!1:b.value&&c.value?(b=b.value.value||b.value,c=c.value.value||c.value,b===c):b.value||c.value?!1:!0;
+if(b=b.value,c=c.value,b instanceof a.Selector){if(!(c instanceof a.Selector)||b.elements.length!==c.elements.length)return!1;for(var d=0;d<b.elements.length;d++){if(b.elements[d].combinator.value!==c.elements[d].combinator.value&&(0!==d||(b.elements[d].combinator.value||" ")!==(c.elements[d].combinator.value||" ")))return!1;if(!this.isElementValuesEqual(b.elements[d].value,c.elements[d].value))return!1}return!0}return!1},extendSelector:function(b,c,d){var e,f,g,h,i,j=0,k=0,l=[];for(e=0;e<b.length;e++)h=b[e],f=c[h.pathIndex],g=new a.Element(h.initialCombinator,d.elements[0].value,d.elements[0].index,d.elements[0].currentFileInfo),h.pathIndex>j&&k>0&&(l[l.length-1].elements=l[l.length-1].elements.concat(c[j].elements.slice(k)),k=0,j++),i=f.elements.slice(k,h.index).concat([g]).concat(d.elements.slice(1)),j===h.pathIndex&&e>0?l[l.length-1].elements=l[l.length-1].elements.concat(i):(l=l.concat(c.slice(j,h.pathIndex)),l.push(new a.Selector(i))),j=h.endPathIndex,k=h.endPathElementIndex,k>=c[j].elements.length&&(k=0,j++);return j<c.length&&k>0&&(l[l.length-1].elements=l[l.length-1].elements.concat(c[j].elements.slice(k)),j++),l=l.concat(c.slice(j,c.length))},visitRulesetOut:function(){},visitMedia:function(a){var b=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);b=b.concat(this.doExtendChaining(b,a.allExtends)),this.allExtendsStack.push(b)},visitMediaOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1},visitDirective:function(a){var b=a.allExtends.concat(this.allExtendsStack[this.allExtendsStack.length-1]);b=b.concat(this.doExtendChaining(b,a.allExtends)),this.allExtendsStack.push(b)},visitDirectiveOut:function(){this.allExtendsStack.length=this.allExtendsStack.length-1}}}(c("./tree")),function(a){a.sourceMapOutput=function(a){this._css=[],this._rootNode=a.rootNode,this._writeSourceMap=a.writeSourceMap,this._contentsMap=a.contentsMap,this._contentsIgnoredCharsMap=a.contentsIgnoredCharsMap,this._sourceMapFilename=a.sourceMapFilename,this._outputFilename=a.outputFilename,this._sourceMapURL=a.sourceMapURL,a.sourceMapBasepath&&(this._sourceMapBasepath=a.sourceMapBasepath.replace(/\\/g,"/")),this._sourceMapRootpath=a.sourceMapRootpath,this._outputSourceFiles=a.outputSourceFiles,this._sourceMapGeneratorConstructor=a.sourceMapGenerator||c("source-map").SourceMapGenerator,this._sourceMapRootpath&&"/"!==this._sourceMapRootpath.charAt(this._sourceMapRootpath.length-1)&&(this._sourceMapRootpath+="/"),this._lineNumber=0,this._column=0},a.sourceMapOutput.prototype.normalizeFilename=function(a){return a=a.replace(/\\/g,"/"),this._sourceMapBasepath&&0===a.indexOf(this._sourceMapBasepath)&&(a=a.substring(this._sourceMapBasepath.length),("\\"===a.charAt(0)||"/"===a.charAt(0))&&(a=a.substring(1))),(this._sourceMapRootpath||"")+a},a.sourceMapOutput.prototype.add=function(a,b,c,d){if(a){var e,f,g,h,i;if(b){var j=this._contentsMap[b.filename];this._contentsIgnoredCharsMap[b.filename]&&(c-=this._contentsIgnoredCharsMap[b.filename],0>c&&(c=0),j=j.slice(this._contentsIgnoredCharsMap[b.filename])),j=j.substring(0,c),f=j.split("\n"),h=f[f.length-1]}if(e=a.split("\n"),g=e[e.length-1],b)if(d)for(i=0;i<e.length;i++)this._sourceMapGenerator.addMapping({generated:{line:this._lineNumber+i+1,column:0===i?this._column:0},original:{line:f.length+i,column:0===i?h.length:0},source:this.normalizeFilename(b.filename)});else this._sourceMapGenerator.addMapping({generated:{line:this._lineNumber+1,column:this._column},original:{line:f.length,column:h.length},source:this.normalizeFilename(b.filename)});1===e.length?this._column+=g.length:(this._lineNumber+=e.length-1,this._column=g.length),this._css.push(a)}},a.sourceMapOutput.prototype.isEmpty=function(){return 0===this._css.length},a.sourceMapOutput.prototype.toCSS=function(a){if(this._sourceMapGenerator=new this._sourceMapGeneratorConstructor({file:this._outputFilename,sourceRoot:null}),this._outputSourceFiles)for(var b in this._contentsMap)if(this._contentsMap.hasOwnProperty(b)){var d=this._contentsMap[b];this._contentsIgnoredCharsMap[b]&&(d=d.slice(this._contentsIgnoredCharsMap[b])),this._sourceMapGenerator.setSourceContent(this.normalizeFilename(b),d)}if(this._rootNode.genCSS(a,this),this._css.length>0){var e,f=JSON.stringify(this._sourceMapGenerator.toJSON());this._sourceMapURL?e=this._sourceMapURL:this._sourceMapFilename&&(e=this.normalizeFilename(this._sourceMapFilename)),this._writeSourceMap?this._writeSourceMap(f):e="data:application/json;base64,"+c("./encoder.js").encodeBase64(f),e&&this._css.push("/*# sourceMappingURL="+e+" */")}return this._css.join("")}}(c("./tree"));var y=/^(file|chrome(-extension)?|resource|qrc|app):/.test(location.protocol);w.env=w.env||("127.0.0.1"==location.hostname||"0.0.0.0"==location.hostname||"localhost"==location.hostname||location.port&&location.port.length>0||y?"development":"production");var z={debug:3,info:2,errors:1,none:0};if(w.logLevel="undefined"!=typeof w.logLevel?w.logLevel:"development"===w.env?z.debug:z.errors,w.async=w.async||!1,w.fileAsync=w.fileAsync||!1,w.poll=w.poll||(y?1e3:1500),w.functions)for(var A in w.functions)w.functions.hasOwnProperty(A)&&(w.tree.functions[A]=w.functions[A]);var B=/!dumpLineNumbers:(comments|mediaquery|all)/.exec(location.hash);B&&(w.dumpLineNumbers=B[1]);var C=/^text\/(x-)?less$/,D=null,E={};if(w.watch=function(){return w.watchMode||(w.env="development",v()),this.watchMode=!0,!0},w.unwatch=function(){return clearInterval(w.watchTimer),this.watchMode=!1,!1},/!watch/.test(location.hash)&&w.watch(),"development"!=w.env)try{D="undefined"==typeof a.localStorage?null:a.localStorage}catch(F){}var G=document.getElementsByTagName("link");w.sheets=[];for(var H=0;H<G.length;H++)("stylesheet/less"===G[H].rel||G[H].rel.match(/stylesheet/)&&G[H].type.match(C))&&w.sheets.push(G[H]);w.modifyVars=function(a){w.refresh(!1,a)},w.refresh=function(a,b){var c,e;c=e=new Date,u(function(a,b,f,i,k){if(a)return j(a,i.href);if(k.local)d("loading "+i.href+" from cache.",z.info);else{d("parsed "+i.href+" successfully.",z.debug);var l=b.toCSS(w);l=h(l),g(l,i,k.lastModified)}d("css for "+i.href+" generated in "+(new Date-e)+"ms",z.info),0===k.remaining&&d("less has finished. css generated in "+(new Date-c)+"ms",z.info),e=new Date},a,b),n(b)},w.refreshStyles=n,w.Parser.fileLoader=s,w.refresh("development"===w.env),"function"==typeof define&&define.amd&&define(function(){return w})}(window); \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/phpunit.xml b/admin/survey/minify/vendor/tubalmartin/cssmin/phpunit.xml
new file mode 100644
index 0000000..725801c
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/phpunit.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<phpunit
+ bootstrap="./vendor/autoload.php"
+ colors="true"
+ convertNoticesToExceptions="true"
+ convertWarningsToExceptions="true"
+ stopOnError="false"
+ stopOnFailure="false"
+ stopOnIncomplete="false">
+ <testsuites>
+ <testsuite name="Minifier">
+ <directory>tests</directory>
+ </testsuite>
+ </testsuites>
+</phpunit> \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/src/Colors.php b/admin/survey/minify/vendor/tubalmartin/cssmin/src/Colors.php
new file mode 100644
index 0000000..0d0cd31
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/src/Colors.php
@@ -0,0 +1,155 @@
+<?php
+
+namespace tubalmartin\CssMin;
+
+class Colors
+{
+ public static function getHexToNamedMap()
+ {
+ // Hex colors longer than named counterpart
+ return array(
+ '#f0ffff' => 'azure',
+ '#f5f5dc' => 'beige',
+ '#ffe4c4' => 'bisque',
+ '#a52a2a' => 'brown',
+ '#ff7f50' => 'coral',
+ '#ffd700' => 'gold',
+ '#808080' => 'gray',
+ '#008000' => 'green',
+ '#4b0082' => 'indigo',
+ '#fffff0' => 'ivory',
+ '#f0e68c' => 'khaki',
+ '#faf0e6' => 'linen',
+ '#800000' => 'maroon',
+ '#000080' => 'navy',
+ '#fdf5e6' => 'oldlace',
+ '#808000' => 'olive',
+ '#ffa500' => 'orange',
+ '#da70d6' => 'orchid',
+ '#cd853f' => 'peru',
+ '#ffc0cb' => 'pink',
+ '#dda0dd' => 'plum',
+ '#800080' => 'purple',
+ '#f00' => 'red',
+ '#fa8072' => 'salmon',
+ '#a0522d' => 'sienna',
+ '#c0c0c0' => 'silver',
+ '#fffafa' => 'snow',
+ '#d2b48c' => 'tan',
+ '#008080' => 'teal',
+ '#ff6347' => 'tomato',
+ '#ee82ee' => 'violet',
+ '#f5deb3' => 'wheat'
+ );
+ }
+
+ public static function getNamedToHexMap()
+ {
+ // Named colors longer than hex counterpart
+ return array(
+ 'aliceblue' => '#f0f8ff',
+ 'antiquewhite' => '#faebd7',
+ 'aquamarine' => '#7fffd4',
+ 'black' => '#000',
+ 'blanchedalmond' => '#ffebcd',
+ 'blueviolet' => '#8a2be2',
+ 'burlywood' => '#deb887',
+ 'cadetblue' => '#5f9ea0',
+ 'chartreuse' => '#7fff00',
+ 'chocolate' => '#d2691e',
+ 'cornflowerblue' => '#6495ed',
+ 'cornsilk' => '#fff8dc',
+ 'darkblue' => '#00008b',
+ 'darkcyan' => '#008b8b',
+ 'darkgoldenrod' => '#b8860b',
+ 'darkgray' => '#a9a9a9',
+ 'darkgreen' => '#006400',
+ 'darkgrey' => '#a9a9a9',
+ 'darkkhaki' => '#bdb76b',
+ 'darkmagenta' => '#8b008b',
+ 'darkolivegreen' => '#556b2f',
+ 'darkorange' => '#ff8c00',
+ 'darkorchid' => '#9932cc',
+ 'darksalmon' => '#e9967a',
+ 'darkseagreen' => '#8fbc8f',
+ 'darkslateblue' => '#483d8b',
+ 'darkslategray' => '#2f4f4f',
+ 'darkslategrey' => '#2f4f4f',
+ 'darkturquoise' => '#00ced1',
+ 'darkviolet' => '#9400d3',
+ 'deeppink' => '#ff1493',
+ 'deepskyblue' => '#00bfff',
+ 'dodgerblue' => '#1e90ff',
+ 'firebrick' => '#b22222',
+ 'floralwhite' => '#fffaf0',
+ 'forestgreen' => '#228b22',
+ 'fuchsia' => '#f0f',
+ 'gainsboro' => '#dcdcdc',
+ 'ghostwhite' => '#f8f8ff',
+ 'goldenrod' => '#daa520',
+ 'greenyellow' => '#adff2f',
+ 'honeydew' => '#f0fff0',
+ 'indianred' => '#cd5c5c',
+ 'lavender' => '#e6e6fa',
+ 'lavenderblush' => '#fff0f5',
+ 'lawngreen' => '#7cfc00',
+ 'lemonchiffon' => '#fffacd',
+ 'lightblue' => '#add8e6',
+ 'lightcoral' => '#f08080',
+ 'lightcyan' => '#e0ffff',
+ 'lightgoldenrodyellow' => '#fafad2',
+ 'lightgray' => '#d3d3d3',
+ 'lightgreen' => '#90ee90',
+ 'lightgrey' => '#d3d3d3',
+ 'lightpink' => '#ffb6c1',
+ 'lightsalmon' => '#ffa07a',
+ 'lightseagreen' => '#20b2aa',
+ 'lightskyblue' => '#87cefa',
+ 'lightslategray' => '#778899',
+ 'lightslategrey' => '#778899',
+ 'lightsteelblue' => '#b0c4de',
+ 'lightyellow' => '#ffffe0',
+ 'limegreen' => '#32cd32',
+ 'mediumaquamarine' => '#66cdaa',
+ 'mediumblue' => '#0000cd',
+ 'mediumorchid' => '#ba55d3',
+ 'mediumpurple' => '#9370db',
+ 'mediumseagreen' => '#3cb371',
+ 'mediumslateblue' => '#7b68ee',
+ 'mediumspringgreen' => '#00fa9a',
+ 'mediumturquoise' => '#48d1cc',
+ 'mediumvioletred' => '#c71585',
+ 'midnightblue' => '#191970',
+ 'mintcream' => '#f5fffa',
+ 'mistyrose' => '#ffe4e1',
+ 'moccasin' => '#ffe4b5',
+ 'navajowhite' => '#ffdead',
+ 'olivedrab' => '#6b8e23',
+ 'orangered' => '#ff4500',
+ 'palegoldenrod' => '#eee8aa',
+ 'palegreen' => '#98fb98',
+ 'paleturquoise' => '#afeeee',
+ 'palevioletred' => '#db7093',
+ 'papayawhip' => '#ffefd5',
+ 'peachpuff' => '#ffdab9',
+ 'powderblue' => '#b0e0e6',
+ 'rebeccapurple' => '#663399',
+ 'rosybrown' => '#bc8f8f',
+ 'royalblue' => '#4169e1',
+ 'saddlebrown' => '#8b4513',
+ 'sandybrown' => '#f4a460',
+ 'seagreen' => '#2e8b57',
+ 'seashell' => '#fff5ee',
+ 'slateblue' => '#6a5acd',
+ 'slategray' => '#708090',
+ 'slategrey' => '#708090',
+ 'springgreen' => '#00ff7f',
+ 'steelblue' => '#4682b4',
+ 'turquoise' => '#40e0d0',
+ 'white' => '#fff',
+ 'whitesmoke' => '#f5f5f5',
+ 'yellow' => '#ff0',
+ 'yellowgreen' => '#9acd32'
+ );
+ }
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/src/Command.php b/admin/survey/minify/vendor/tubalmartin/cssmin/src/Command.php
new file mode 100644
index 0000000..b75d9be
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/src/Command.php
@@ -0,0 +1,223 @@
+<?php
+
+namespace tubalmartin\CssMin;
+
+class Command
+{
+ const SUCCESS_EXIT = 0;
+ const FAILURE_EXIT = 1;
+
+ protected $stats = array();
+
+ public static function main()
+ {
+ $command = new self;
+ $command->run();
+ }
+
+ public function run()
+ {
+ $opts = getopt(
+ 'hi:o:',
+ array(
+ 'help',
+ 'input:',
+ 'output:',
+ 'dry-run',
+ 'keep-sourcemap',
+ 'keep-sourcemap-comment',
+ 'linebreak-position:',
+ 'memory-limit:',
+ 'pcre-backtrack-limit:',
+ 'pcre-recursion-limit:',
+ 'remove-important-comments'
+ )
+ );
+
+ $help = $this->getOpt(array('h', 'help'), $opts);
+ $input = $this->getOpt(array('i', 'input'), $opts);
+ $output = $this->getOpt(array('o', 'output'), $opts);
+ $dryrun = $this->getOpt('dry-run', $opts);
+ $keepSourceMapComment = $this->getOpt(array('keep-sourcemap', 'keep-sourcemap-comment'), $opts);
+ $linebreakPosition = $this->getOpt('linebreak-position', $opts);
+ $memoryLimit = $this->getOpt('memory-limit', $opts);
+ $backtrackLimit = $this->getOpt('pcre-backtrack-limit', $opts);
+ $recursionLimit = $this->getOpt('pcre-recursion-limit', $opts);
+ $removeImportantComments = $this->getOpt('remove-important-comments', $opts);
+
+ if (!is_null($help)) {
+ $this->showHelp();
+ die(self::SUCCESS_EXIT);
+ }
+
+ if (is_null($input)) {
+ fwrite(STDERR, '-i <file> argument is missing' . PHP_EOL);
+ $this->showHelp();
+ die(self::FAILURE_EXIT);
+ }
+
+ if (!is_readable($input)) {
+ fwrite(STDERR, 'Input file is not readable' . PHP_EOL);
+ die(self::FAILURE_EXIT);
+ }
+
+ $css = file_get_contents($input);
+
+ if ($css === false) {
+ fwrite(STDERR, 'Input CSS code could not be retrieved from input file' . PHP_EOL);
+ die(self::FAILURE_EXIT);
+ }
+
+ $this->setStat('original-size', strlen($css));
+
+ $cssmin = new Minifier;
+
+ if (!is_null($keepSourceMapComment)) {
+ $cssmin->keepSourceMapComment();
+ }
+
+ if (!is_null($removeImportantComments)) {
+ $cssmin->removeImportantComments();
+ }
+
+ if (!is_null($linebreakPosition)) {
+ $cssmin->setLineBreakPosition($linebreakPosition);
+ }
+
+ if (!is_null($memoryLimit)) {
+ $cssmin->setMemoryLimit($memoryLimit);
+ }
+
+ if (!is_null($backtrackLimit)) {
+ $cssmin->setPcreBacktrackLimit($backtrackLimit);
+ }
+
+ if (!is_null($recursionLimit)) {
+ $cssmin->setPcreRecursionLimit($recursionLimit);
+ }
+
+ $this->setStat('compression-time-start', microtime(true));
+
+ $css = $cssmin->run($css);
+
+ $this->setStat('compression-time-end', microtime(true));
+ $this->setStat('peak-memory-usage', memory_get_peak_usage(true));
+ $this->setStat('compressed-size', strlen($css));
+
+ if (!is_null($dryrun)) {
+ $this->showStats();
+ die(self::SUCCESS_EXIT);
+ }
+
+ if (is_null($output)) {
+ fwrite(STDOUT, $css . PHP_EOL);
+ $this->showStats();
+ die(self::SUCCESS_EXIT);
+ }
+
+ if (!is_writable(dirname($output))) {
+ fwrite(STDERR, 'Output file is not writable' . PHP_EOL);
+ die(self::FAILURE_EXIT);
+ }
+
+ if (file_put_contents($output, $css) === false) {
+ fwrite(STDERR, 'Compressed CSS code could not be saved to output file' . PHP_EOL);
+ die(self::FAILURE_EXIT);
+ }
+
+ $this->showStats();
+
+ die(self::SUCCESS_EXIT);
+ }
+
+ protected function getOpt($opts, $options)
+ {
+ $value = null;
+
+ if (is_string($opts)) {
+ $opts = array($opts);
+ }
+
+ foreach ($opts as $opt) {
+ if (array_key_exists($opt, $options)) {
+ $value = $options[$opt];
+ break;
+ }
+ }
+
+ return $value;
+ }
+
+ protected function setStat($statName, $statValue)
+ {
+ $this->stats[$statName] = $statValue;
+ }
+
+ protected function formatBytes($size, $precision = 2)
+ {
+ $base = log($size, 1024);
+ $suffixes = array('B', 'K', 'M', 'G', 'T');
+ return round(pow(1024, $base - floor($base)), $precision) .' '. $suffixes[floor($base)];
+ }
+
+ protected function formatMicroSeconds($microSecs, $precision = 2)
+ {
+ // ms
+ $time = round($microSecs * 1000, $precision);
+
+ if ($time >= 60 * 1000) {
+ $time = round($time / 60 * 1000, $precision) .' m'; // m
+ } elseif ($time >= 1000) {
+ $time = round($time / 1000, $precision) .' s'; // s
+ } else {
+ $time .= ' ms';
+ }
+
+ return $time;
+ }
+
+ protected function showStats()
+ {
+ $spaceSavings = round((1 - ($this->stats['compressed-size'] / $this->stats['original-size'])) * 100, 2);
+ $compressionRatio = round($this->stats['original-size'] / $this->stats['compressed-size'], 2);
+ $compressionTime = $this->formatMicroSeconds(
+ $this->stats['compression-time-end'] - $this->stats['compression-time-start']
+ );
+ $peakMemoryUsage = $this->formatBytes($this->stats['peak-memory-usage']);
+
+ print <<<EOT
+
+------------------------------
+CSSMIN STATS
+------------------------------
+Space savings: {$spaceSavings} %
+Compression ratio: {$compressionRatio}:1
+Compression time: $compressionTime
+Peak memory usage: $peakMemoryUsage
+
+
+EOT;
+ }
+
+ protected function showHelp()
+ {
+ print <<<'EOT'
+Usage: cssmin [options] -i <file> [-o <file>]
+
+ -i|--input <file> File containing uncompressed CSS code.
+ -o|--output <file> File to use to save compressed CSS code.
+
+Options:
+
+ -h|--help Prints this usage information.
+ --dry-run Performs a dry run displaying statistics.
+ --keep-sourcemap[-comment] Keeps the sourcemap special comment in the output.
+ --linebreak-position <pos> Splits long lines after a specific column in the output.
+ --memory-limit <limit> Sets the memory limit for this script.
+ --pcre-backtrack-limit <limit> Sets the PCRE backtrack limit for this script.
+ --pcre-recursion-limit <limit> Sets the PCRE recursion limit for this script.
+ --remove-important-comments Removes !important comments from output.
+
+EOT;
+ }
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/src/Minifier.php b/admin/survey/minify/vendor/tubalmartin/cssmin/src/Minifier.php
new file mode 100644
index 0000000..9ec2274
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/src/Minifier.php
@@ -0,0 +1,895 @@
+<?php
+
+/*!
+ * CssMin
+ * Author: Tubal Martin - http://tubalmartin.me/
+ * Repo: https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port
+ *
+ * This is a PHP port of the CSS minification tool distributed with YUICompressor,
+ * itself a port of the cssmin utility by Isaac Schlueter - http://foohack.com/
+ * Permission is hereby granted to use the PHP version under the same
+ * conditions as the YUICompressor.
+ */
+
+/*!
+ * YUI Compressor
+ * http://developer.yahoo.com/yui/compressor/
+ * Author: Julien Lecomte - http://www.julienlecomte.net/
+ * Copyright (c) 2013 Yahoo! Inc. All rights reserved.
+ * The copyrights embodied in the content of this file are licensed
+ * by Yahoo! Inc. under the BSD (revised) open source license.
+ */
+
+namespace tubalmartin\CssMin;
+
+class Minifier
+{
+ const QUERY_FRACTION = '_CSSMIN_QF_';
+ const COMMENT_TOKEN = '_CSSMIN_CMT_%d_';
+ const COMMENT_TOKEN_START = '_CSSMIN_CMT_';
+ const RULE_BODY_TOKEN = '_CSSMIN_RBT_%d_';
+ const PRESERVED_TOKEN = '_CSSMIN_PTK_%d_';
+
+ // Token lists
+ private $comments = array();
+ private $ruleBodies = array();
+ private $preservedTokens = array();
+
+ // Output options
+ private $keepImportantComments = true;
+ private $keepSourceMapComment = false;
+ private $linebreakPosition = 0;
+
+ // PHP ini limits
+ private $raisePhpLimits;
+ private $memoryLimit;
+ private $maxExecutionTime = 60; // 1 min
+ private $pcreBacktrackLimit;
+ private $pcreRecursionLimit;
+
+ // Color maps
+ private $hexToNamedColorsMap;
+ private $namedToHexColorsMap;
+
+ // Regexes
+ private $numRegex;
+ private $charsetRegex = '/@charset [^;]+;/Si';
+ private $importRegex = '/@import [^;]+;/Si';
+ private $namespaceRegex = '/@namespace [^;]+;/Si';
+ private $namedToHexColorsRegex;
+ private $shortenOneZeroesRegex;
+ private $shortenTwoZeroesRegex;
+ private $shortenThreeZeroesRegex;
+ private $shortenFourZeroesRegex;
+ private $unitsGroupRegex = '(?:ch|cm|em|ex|gd|in|mm|px|pt|pc|q|rem|vh|vmax|vmin|vw|%)';
+
+ /**
+ * @param bool|int $raisePhpLimits If true, PHP settings will be raised if needed
+ */
+ public function __construct($raisePhpLimits = true)
+ {
+ $this->raisePhpLimits = (bool) $raisePhpLimits;
+ $this->memoryLimit = 128 * 1048576; // 128MB in bytes
+ $this->pcreBacktrackLimit = 1000 * 1000;
+ $this->pcreRecursionLimit = 500 * 1000;
+ $this->hexToNamedColorsMap = Colors::getHexToNamedMap();
+ $this->namedToHexColorsMap = Colors::getNamedToHexMap();
+ $this->namedToHexColorsRegex = sprintf(
+ '/([:,( ])(%s)( |,|\)|;|$)/Si',
+ implode('|', array_keys($this->namedToHexColorsMap))
+ );
+ $this->numRegex = sprintf('-?\d*\.?\d+%s?', $this->unitsGroupRegex);
+ $this->setShortenZeroValuesRegexes();
+ }
+
+ /**
+ * Parses & minifies the given input CSS string
+ * @param string $css
+ * @return string
+ */
+ public function run($css = '')
+ {
+ if (empty($css) || !is_string($css)) {
+ return '';
+ }
+
+ $this->resetRunProperties();
+
+ if ($this->raisePhpLimits) {
+ $this->doRaisePhpLimits();
+ }
+
+ return $this->minify($css);
+ }
+
+ /**
+ * Sets whether to keep or remove sourcemap special comment.
+ * Sourcemap comments are removed by default.
+ * @param bool $keepSourceMapComment
+ */
+ public function keepSourceMapComment($keepSourceMapComment = true)
+ {
+ $this->keepSourceMapComment = (bool) $keepSourceMapComment;
+ }
+
+ /**
+ * Sets whether to keep or remove important comments.
+ * Important comments outside of a declaration block are kept by default.
+ * @param bool $removeImportantComments
+ */
+ public function removeImportantComments($removeImportantComments = true)
+ {
+ $this->keepImportantComments = !(bool) $removeImportantComments;
+ }
+
+ /**
+ * Sets the approximate column after which long lines will be splitted in the output
+ * with a linebreak.
+ * @param int $position
+ */
+ public function setLineBreakPosition($position)
+ {
+ $this->linebreakPosition = (int) $position;
+ }
+
+ /**
+ * Sets the memory limit for this script
+ * @param int|string $limit
+ */
+ public function setMemoryLimit($limit)
+ {
+ $this->memoryLimit = Utils::normalizeInt($limit);
+ }
+
+ /**
+ * Sets the maximum execution time for this script
+ * @param int|string $seconds
+ */
+ public function setMaxExecutionTime($seconds)
+ {
+ $this->maxExecutionTime = (int) $seconds;
+ }
+
+ /**
+ * Sets the PCRE backtrack limit for this script
+ * @param int $limit
+ */
+ public function setPcreBacktrackLimit($limit)
+ {
+ $this->pcreBacktrackLimit = (int) $limit;
+ }
+
+ /**
+ * Sets the PCRE recursion limit for this script
+ * @param int $limit
+ */
+ public function setPcreRecursionLimit($limit)
+ {
+ $this->pcreRecursionLimit = (int) $limit;
+ }
+
+ /**
+ * Builds regular expressions needed for shortening zero values
+ */
+ private function setShortenZeroValuesRegexes()
+ {
+ $zeroRegex = '0'. $this->unitsGroupRegex;
+ $numOrPosRegex = '('. $this->numRegex .'|top|left|bottom|right|center) ';
+ $oneZeroSafeProperties = array(
+ '(?:line-)?height',
+ '(?:(?:min|max)-)?width',
+ 'top',
+ 'left',
+ 'background-position',
+ 'bottom',
+ 'right',
+ 'border(?:-(?:top|left|bottom|right))?(?:-width)?',
+ 'border-(?:(?:top|bottom)-(?:left|right)-)?radius',
+ 'column-(?:gap|width)',
+ 'margin(?:-(?:top|left|bottom|right))?',
+ 'outline-width',
+ 'padding(?:-(?:top|left|bottom|right))?'
+ );
+
+ // First zero regex
+ $regex = '/(^|;)('. implode('|', $oneZeroSafeProperties) .'):%s/Si';
+ $this->shortenOneZeroesRegex = sprintf($regex, $zeroRegex);
+
+ // Multiple zeroes regexes
+ $regex = '/(^|;)(margin|padding|border-(?:width|radius)|background-position):%s/Si';
+ $this->shortenTwoZeroesRegex = sprintf($regex, $numOrPosRegex . $zeroRegex);
+ $this->shortenThreeZeroesRegex = sprintf($regex, $numOrPosRegex . $numOrPosRegex . $zeroRegex);
+ $this->shortenFourZeroesRegex = sprintf($regex, $numOrPosRegex . $numOrPosRegex . $numOrPosRegex . $zeroRegex);
+ }
+
+ /**
+ * Resets properties whose value may change between runs
+ */
+ private function resetRunProperties()
+ {
+ $this->comments = array();
+ $this->ruleBodies = array();
+ $this->preservedTokens = array();
+ }
+
+ /**
+ * Tries to configure PHP to use at least the suggested minimum settings
+ * @return void
+ */
+ private function doRaisePhpLimits()
+ {
+ $phpLimits = array(
+ 'memory_limit' => $this->memoryLimit,
+ 'max_execution_time' => $this->maxExecutionTime,
+ 'pcre.backtrack_limit' => $this->pcreBacktrackLimit,
+ 'pcre.recursion_limit' => $this->pcreRecursionLimit
+ );
+
+ // If current settings are higher respect them.
+ foreach ($phpLimits as $name => $suggested) {
+ $current = Utils::normalizeInt(ini_get($name));
+
+ if ($current >= $suggested) {
+ continue;
+ }
+
+ // memoryLimit exception: allow -1 for "no memory limit".
+ if ($name === 'memory_limit' && $current === -1) {
+ continue;
+ }
+
+ // maxExecutionTime exception: allow 0 for "no memory limit".
+ if ($name === 'max_execution_time' && $current === 0) {
+ continue;
+ }
+
+ ini_set($name, $suggested);
+ }
+ }
+
+ /**
+ * Registers a preserved token
+ * @param string $token
+ * @return string The token ID string
+ */
+ private function registerPreservedToken($token)
+ {
+ $tokenId = sprintf(self::PRESERVED_TOKEN, count($this->preservedTokens));
+ $this->preservedTokens[$tokenId] = $token;
+ return $tokenId;
+ }
+
+ /**
+ * Registers a candidate comment token
+ * @param string $comment
+ * @return string The comment token ID string
+ */
+ private function registerCommentToken($comment)
+ {
+ $tokenId = sprintf(self::COMMENT_TOKEN, count($this->comments));
+ $this->comments[$tokenId] = $comment;
+ return $tokenId;
+ }
+
+ /**
+ * Registers a rule body token
+ * @param string $body the minified rule body
+ * @return string The rule body token ID string
+ */
+ private function registerRuleBodyToken($body)
+ {
+ if (empty($body)) {
+ return '';
+ }
+
+ $tokenId = sprintf(self::RULE_BODY_TOKEN, count($this->ruleBodies));
+ $this->ruleBodies[$tokenId] = $body;
+ return $tokenId;
+ }
+
+ /**
+ * Parses & minifies the given input CSS string
+ * @param string $css
+ * @return string
+ */
+ private function minify($css)
+ {
+ // Process data urls
+ $css = $this->processDataUrls($css);
+
+ // Process comments
+ $css = preg_replace_callback(
+ '/(?<!\\\\)\/\*(.*?)\*(?<!\\\\)\//Ss',
+ array($this, 'processCommentsCallback'),
+ $css
+ );
+
+ // IE7: Process Microsoft matrix filters (whitespaces between Matrix parameters). Can contain strings inside.
+ $css = preg_replace_callback(
+ '/filter:\s*progid:DXImageTransform\.Microsoft\.Matrix\(([^)]+)\)/Ss',
+ array($this, 'processOldIeSpecificMatrixDefinitionCallback'),
+ $css
+ );
+
+ // Process quoted unquotable attribute selectors to unquote them. Covers most common cases.
+ // Likelyhood of a quoted attribute selector being a substring in a string: Very very low.
+ $css = preg_replace(
+ '/\[\s*([a-z][a-z-]+)\s*([\*\|\^\$~]?=)\s*[\'"](-?[a-z_][a-z0-9-_]+)[\'"]\s*\]/Ssi',
+ '[$1$2$3]',
+ $css
+ );
+
+ // Process strings so their content doesn't get accidentally minified
+ $css = preg_replace_callback(
+ '/(?:"(?:[^\\\\"]|\\\\.|\\\\)*")|'."(?:'(?:[^\\\\']|\\\\.|\\\\)*')/S",
+ array($this, 'processStringsCallback'),
+ $css
+ );
+
+ // Normalize all whitespace strings to single spaces. Easier to work with that way.
+ $css = preg_replace('/\s+/S', ' ', $css);
+
+ // Process import At-rules with unquoted URLs so URI reserved characters such as a semicolon may be used safely.
+ $css = preg_replace_callback(
+ '/@import url\(([^\'"]+?)\)( |;)/Si',
+ array($this, 'processImportUnquotedUrlAtRulesCallback'),
+ $css
+ );
+
+ // Process comments
+ $css = $this->processComments($css);
+
+ // Process rule bodies
+ $css = $this->processRuleBodies($css);
+
+ // Process at-rules and selectors
+ $css = $this->processAtRulesAndSelectors($css);
+
+ // Restore preserved rule bodies before splitting
+ $css = strtr($css, $this->ruleBodies);
+
+ // Split long lines in output if required
+ $css = $this->processLongLineSplitting($css);
+
+ // Restore preserved comments and strings
+ $css = strtr($css, $this->preservedTokens);
+
+ return trim($css);
+ }
+
+ /**
+ * Searches & replaces all data urls with tokens before we start compressing,
+ * to avoid performance issues running some of the subsequent regexes against large string chunks.
+ * @param string $css
+ * @return string
+ */
+ private function processDataUrls($css)
+ {
+ $ret = '';
+ $searchOffset = $substrOffset = 0;
+
+ // Since we need to account for non-base64 data urls, we need to handle
+ // ' and ) being part of the data string.
+ while (preg_match('/url\(\s*(["\']?)data:/Si', $css, $m, PREG_OFFSET_CAPTURE, $searchOffset)) {
+ $matchStartIndex = $m[0][1];
+ $dataStartIndex = $matchStartIndex + 4; // url( length
+ $searchOffset = $matchStartIndex + strlen($m[0][0]);
+ $terminator = $m[1][0]; // ', " or empty (not quoted)
+ $terminatorRegex = '/(?<!\\\\)'. (strlen($terminator) === 0 ? '' : $terminator.'\s*') .'(\))/S';
+
+ $ret .= substr($css, $substrOffset, $matchStartIndex - $substrOffset);
+
+ // Terminator found
+ if (preg_match($terminatorRegex, $css, $matches, PREG_OFFSET_CAPTURE, $searchOffset)) {
+ $matchEndIndex = $matches[1][1];
+ $searchOffset = $matchEndIndex + 1;
+ $token = substr($css, $dataStartIndex, $matchEndIndex - $dataStartIndex);
+
+ // Remove all spaces only for base64 encoded URLs.
+ if (stripos($token, 'base64,') !== false) {
+ $token = preg_replace('/\s+/S', '', $token);
+ }
+
+ $ret .= 'url('. $this->registerPreservedToken(trim($token)) .')';
+ // No end terminator found, re-add the whole match. Should we throw/warn here?
+ } else {
+ $ret .= substr($css, $matchStartIndex, $searchOffset - $matchStartIndex);
+ }
+
+ $substrOffset = $searchOffset;
+ }
+
+ $ret .= substr($css, $substrOffset);
+
+ return $ret;
+ }
+
+ /**
+ * Registers all comments found as candidates to be preserved.
+ * @param array $matches
+ * @return string
+ */
+ private function processCommentsCallback($matches)
+ {
+ return '/*'. $this->registerCommentToken($matches[1]) .'*/';
+ }
+
+ /**
+ * Preserves old IE Matrix string definition
+ * @param array $matches
+ * @return string
+ */
+ private function processOldIeSpecificMatrixDefinitionCallback($matches)
+ {
+ return 'filter:progid:DXImageTransform.Microsoft.Matrix('. $this->registerPreservedToken($matches[1]) .')';
+ }
+
+ /**
+ * Preserves strings found
+ * @param array $matches
+ * @return string
+ */
+ private function processStringsCallback($matches)
+ {
+ $match = $matches[0];
+ $quote = substr($match, 0, 1);
+ $match = substr($match, 1, -1);
+
+ // maybe the string contains a comment-like substring?
+ // one, maybe more? put'em back then
+ if (strpos($match, self::COMMENT_TOKEN_START) !== false) {
+ $match = strtr($match, $this->comments);
+ }
+
+ // minify alpha opacity in filter strings
+ $match = str_ireplace('progid:DXImageTransform.Microsoft.Alpha(Opacity=', 'alpha(opacity=', $match);
+
+ return $quote . $this->registerPreservedToken($match) . $quote;
+ }
+
+ /**
+ * Searches & replaces all import at-rule unquoted urls with tokens so URI reserved characters such as a semicolon
+ * may be used safely in a URL.
+ * @param array $matches
+ * @return string
+ */
+ private function processImportUnquotedUrlAtRulesCallback($matches)
+ {
+ return '@import url('. $this->registerPreservedToken($matches[1]) .')'. $matches[2];
+ }
+
+ /**
+ * Preserves or removes comments found.
+ * @param string $css
+ * @return string
+ */
+ private function processComments($css)
+ {
+ foreach ($this->comments as $commentId => $comment) {
+ $commentIdString = '/*'. $commentId .'*/';
+
+ // ! in the first position of the comment means preserve
+ // so push to the preserved tokens keeping the !
+ if ($this->keepImportantComments && strpos($comment, '!') === 0) {
+ $preservedTokenId = $this->registerPreservedToken($comment);
+ // Put new lines before and after /*! important comments
+ $css = str_replace($commentIdString, "\n/*$preservedTokenId*/\n", $css);
+ continue;
+ }
+
+ // # sourceMappingURL= in the first position of the comment means sourcemap
+ // so push to the preserved tokens if {$this->keepSourceMapComment} is truthy.
+ if ($this->keepSourceMapComment && strpos($comment, '# sourceMappingURL=') === 0) {
+ $preservedTokenId = $this->registerPreservedToken($comment);
+ // Add new line before the sourcemap comment
+ $css = str_replace($commentIdString, "\n/*$preservedTokenId*/", $css);
+ continue;
+ }
+
+ // Keep empty comments after child selectors (IE7 hack)
+ // e.g. html >/**/ body
+ if (strlen($comment) === 0 && strpos($css, '>/*'.$commentId) !== false) {
+ $css = str_replace($commentId, $this->registerPreservedToken(''), $css);
+ continue;
+ }
+
+ // in all other cases kill the comment
+ $css = str_replace($commentIdString, '', $css);
+ }
+
+ // Normalize whitespace again
+ $css = preg_replace('/ +/S', ' ', $css);
+
+ return $css;
+ }
+
+ /**
+ * Finds, minifies & preserves all rule bodies.
+ * @param string $css the whole stylesheet.
+ * @return string
+ */
+ private function processRuleBodies($css)
+ {
+ $ret = '';
+ $searchOffset = $substrOffset = 0;
+
+ while (($blockStartPos = strpos($css, '{', $searchOffset)) !== false) {
+ $blockEndPos = strpos($css, '}', $blockStartPos);
+ $nextBlockStartPos = strpos($css, '{', $blockStartPos + 1);
+ $ret .= substr($css, $substrOffset, $blockStartPos - $substrOffset);
+
+ if ($nextBlockStartPos !== false && $nextBlockStartPos < $blockEndPos) {
+ $ret .= substr($css, $blockStartPos, $nextBlockStartPos - $blockStartPos);
+ $searchOffset = $nextBlockStartPos;
+ } else {
+ $ruleBody = substr($css, $blockStartPos + 1, $blockEndPos - $blockStartPos - 1);
+ $ruleBodyToken = $this->registerRuleBodyToken($this->processRuleBody($ruleBody));
+ $ret .= '{'. $ruleBodyToken .'}';
+ $searchOffset = $blockEndPos + 1;
+ }
+
+ $substrOffset = $searchOffset;
+ }
+
+ $ret .= substr($css, $substrOffset);
+
+ return $ret;
+ }
+
+ /**
+ * Compresses non-group rule bodies.
+ * @param string $body The rule body without curly braces
+ * @return string
+ */
+ private function processRuleBody($body)
+ {
+ $body = trim($body);
+
+ // Remove spaces before the things that should not have spaces before them.
+ $body = preg_replace('/ ([:=,)*\/;\n])/S', '$1', $body);
+
+ // Remove the spaces after the things that should not have spaces after them.
+ $body = preg_replace('/([:=,(*\/!;\n]) /S', '$1', $body);
+
+ // Replace multiple semi-colons in a row by a single one
+ $body = preg_replace('/;;+/S', ';', $body);
+
+ // Remove semicolon before closing brace except when:
+ // - The last property is prefixed with a `*` (lte IE7 hack) to avoid issues on Symbian S60 3.x browsers.
+ if (!preg_match('/\*[a-z0-9-]+:[^;]+;$/Si', $body)) {
+ $body = rtrim($body, ';');
+ }
+
+ // Remove important comments inside a rule body (because they make no sense here).
+ if (strpos($body, '/*') !== false) {
+ $body = preg_replace('/\n?\/\*[A-Z0-9_]+\*\/\n?/S', '', $body);
+ }
+
+ // Empty rule body? Exit :)
+ if (empty($body)) {
+ return '';
+ }
+
+ // Shorten font-weight values
+ $body = preg_replace(
+ array('/(font-weight:)bold\b/Si', '/(font-weight:)normal\b/Si'),
+ array('${1}700', '${1}400'),
+ $body
+ );
+
+ // Shorten background property
+ $body = preg_replace('/(background:)(?:none|transparent)( !|;|$)/Si', '${1}0 0$2', $body);
+
+ // Shorten opacity IE filter
+ $body = str_ireplace('progid:DXImageTransform.Microsoft.Alpha(Opacity=', 'alpha(opacity=', $body);
+
+ // Shorten colors from rgb(51,102,153) to #336699, rgb(100%,0%,0%) to #ff0000 (sRGB color space)
+ // Shorten colors from hsl(0, 100%, 50%) to #ff0000 (sRGB color space)
+ // This makes it more likely that it'll get further compressed in the next step.
+ $body = preg_replace_callback(
+ '/(rgb|hsl)\(([0-9,.% -]+)\)(.|$)/Si',
+ array($this, 'shortenHslAndRgbToHexCallback'),
+ $body
+ );
+
+ // Shorten colors from #AABBCC to #ABC or shorter color name:
+ // - Look for hex colors which don't have a "=" in front of them (to avoid MSIE filters)
+ $body = preg_replace_callback(
+ '/(?<!=)#([0-9a-f]{3,6})( |,|\)|;|$)/Si',
+ array($this, 'shortenHexColorsCallback'),
+ $body
+ );
+
+ // Shorten long named colors with a shorter HEX counterpart: white -> #fff.
+ // Run at least 2 times to cover most cases
+ $body = preg_replace_callback(
+ array($this->namedToHexColorsRegex, $this->namedToHexColorsRegex),
+ array($this, 'shortenNamedColorsCallback'),
+ $body
+ );
+
+ // Replace positive sign from numbers before the leading space is removed.
+ // +1.2em to 1.2em, +.8px to .8px, +2% to 2%
+ $body = preg_replace('/([ :,(])\+(\.?\d+)/S', '$1$2', $body);
+
+ // shorten ms to s
+ $body = preg_replace_callback('/([ :,(])(-?)(\d{3,})ms/Si', function ($matches) {
+ return $matches[1] . $matches[2] . ((int) $matches[3] / 1000) .'s';
+ }, $body);
+
+ // Remove leading zeros from integer and float numbers.
+ // 000.6 to .6, -0.8 to -.8, 0050 to 50, -01.05 to -1.05
+ $body = preg_replace('/([ :,(])(-?)0+([1-9]?\.?\d+)/S', '$1$2$3', $body);
+
+ // Remove trailing zeros from float numbers.
+ // -6.0100em to -6.01em, .0100 to .01, 1.200px to 1.2px
+ $body = preg_replace('/([ :,(])(-?\d?\.\d+?)0+([^\d])/S', '$1$2$3', $body);
+
+ // Remove trailing .0 -> -9.0 to -9
+ $body = preg_replace('/([ :,(])(-?\d+)\.0([^\d])/S', '$1$2$3', $body);
+
+ // Replace 0 length numbers with 0
+ $body = preg_replace('/([ :,(])-?\.?0+([^\d])/S', '${1}0$2', $body);
+
+ // Shorten zero values for safe properties only
+ $body = preg_replace(
+ array(
+ $this->shortenOneZeroesRegex,
+ $this->shortenTwoZeroesRegex,
+ $this->shortenThreeZeroesRegex,
+ $this->shortenFourZeroesRegex
+ ),
+ array(
+ '$1$2:0',
+ '$1$2:$3 0',
+ '$1$2:$3 $4 0',
+ '$1$2:$3 $4 $5 0'
+ ),
+ $body
+ );
+
+ // Replace 0 0 0; or 0 0 0 0; with 0 0 for background-position property.
+ $body = preg_replace('/(background-position):0(?: 0){2,3}( !|;|$)/Si', '$1:0 0$2', $body);
+
+ // Shorten suitable shorthand properties with repeated values
+ $body = preg_replace(
+ array(
+ '/(margin|padding|border-(?:width|radius)):('.$this->numRegex.')(?: \2)+( !|;|$)/Si',
+ '/(border-(?:style|color)):([#a-z0-9]+)(?: \2)+( !|;|$)/Si'
+ ),
+ '$1:$2$3',
+ $body
+ );
+ $body = preg_replace(
+ array(
+ '/(margin|padding|border-(?:width|radius)):'.
+ '('.$this->numRegex.') ('.$this->numRegex.') \2 \3( !|;|$)/Si',
+ '/(border-(?:style|color)):([#a-z0-9]+) ([#a-z0-9]+) \2 \3( !|;|$)/Si'
+ ),
+ '$1:$2 $3$4',
+ $body
+ );
+ $body = preg_replace(
+ array(
+ '/(margin|padding|border-(?:width|radius)):'.
+ '('.$this->numRegex.') ('.$this->numRegex.') ('.$this->numRegex.') \3( !|;|$)/Si',
+ '/(border-(?:style|color)):([#a-z0-9]+) ([#a-z0-9]+) ([#a-z0-9]+) \3( !|;|$)/Si'
+ ),
+ '$1:$2 $3 $4$5',
+ $body
+ );
+
+ // Lowercase some common functions that can be values
+ $body = preg_replace_callback(
+ '/(?:attr|blur|brightness|circle|contrast|cubic-bezier|drop-shadow|ellipse|from|grayscale|'.
+ 'hsla?|hue-rotate|inset|invert|local|minmax|opacity|perspective|polygon|rgba?|rect|repeat|saturate|sepia|'.
+ 'steps|to|url|var|-webkit-gradient|'.
+ '(?:-(?:atsc|khtml|moz|ms|o|wap|webkit)-)?(?:calc|(?:repeating-)?(?:linear|radial)-gradient))\(/Si',
+ array($this, 'strtolowerCallback'),
+ $body
+ );
+
+ // Lowercase all uppercase properties
+ $body = preg_replace_callback('/(?:^|;)[A-Z-]+:/S', array($this, 'strtolowerCallback'), $body);
+
+ return $body;
+ }
+
+ /**
+ * Compresses At-rules and selectors.
+ * @param string $css the whole stylesheet with rule bodies tokenized.
+ * @return string
+ */
+ private function processAtRulesAndSelectors($css)
+ {
+ $charset = '';
+ $imports = '';
+ $namespaces = '';
+
+ // Remove spaces before the things that should not have spaces before them.
+ $css = preg_replace('/ ([@{};>+)\]~=,\/\n])/S', '$1', $css);
+
+ // Remove the spaces after the things that should not have spaces after them.
+ $css = preg_replace('/([{}:;>+(\[~=,\/\n]) /S', '$1', $css);
+
+ // Shorten shortable double colon (CSS3) pseudo-elements to single colon (CSS2)
+ $css = preg_replace('/::(before|after|first-(?:line|letter))(\{|,)/Si', ':$1$2', $css);
+
+ // Retain space for special IE6 cases
+ $css = preg_replace_callback('/:first-(line|letter)(\{|,)/Si', function ($matches) {
+ return ':first-'. strtolower($matches[1]) .' '. $matches[2];
+ }, $css);
+
+ // Find a fraction that may used in some @media queries such as: (min-aspect-ratio: 1/1)
+ // Add token to add the "/" back in later
+ $css = preg_replace('/\(([a-z-]+):([0-9]+)\/([0-9]+)\)/Si', '($1:$2'. self::QUERY_FRACTION .'$3)', $css);
+
+ // Remove empty rule blocks up to 2 levels deep.
+ $css = preg_replace(array_fill(0, 2, '/(\{)[^{};\/\n]+\{\}/S'), '$1', $css);
+ $css = preg_replace('/[^{};\/\n]+\{\}/S', '', $css);
+
+ // Two important comments next to each other? Remove extra newline.
+ if ($this->keepImportantComments) {
+ $css = str_replace("\n\n", "\n", $css);
+ }
+
+ // Restore fraction
+ $css = str_replace(self::QUERY_FRACTION, '/', $css);
+
+ // Lowercase some popular @directives
+ $css = preg_replace_callback(
+ '/(?<!\\\\)@(?:charset|document|font-face|import|(?:-(?:atsc|khtml|moz|ms|o|wap|webkit)-)?keyframes|media|'.
+ 'namespace|page|supports|viewport)/Si',
+ array($this, 'strtolowerCallback'),
+ $css
+ );
+
+ // Lowercase some popular media types
+ $css = preg_replace_callback(
+ '/[ ,](?:all|aural|braille|handheld|print|projection|screen|tty|tv|embossed|speech)[ ,;{]/Si',
+ array($this, 'strtolowerCallback'),
+ $css
+ );
+
+ // Lowercase some common pseudo-classes & pseudo-elements
+ $css = preg_replace_callback(
+ '/(?<!\\\\):(?:active|after|before|checked|default|disabled|empty|enabled|first-(?:child|of-type)|'.
+ 'focus(?:-within)?|hover|indeterminate|in-range|invalid|lang\(|last-(?:child|of-type)|left|link|not\(|'.
+ 'nth-(?:child|of-type)\(|nth-last-(?:child|of-type)\(|only-(?:child|of-type)|optional|out-of-range|'.
+ 'read-(?:only|write)|required|right|root|:selection|target|valid|visited)/Si',
+ array($this, 'strtolowerCallback'),
+ $css
+ );
+
+ // @charset handling
+ if (preg_match($this->charsetRegex, $css, $matches)) {
+ // Keep the first @charset at-rule found
+ $charset = $matches[0];
+ // Delete all @charset at-rules
+ $css = preg_replace($this->charsetRegex, '', $css);
+ }
+
+ // @import handling
+ $css = preg_replace_callback($this->importRegex, function ($matches) use (&$imports) {
+ // Keep all @import at-rules found for later
+ $imports .= $matches[0];
+ // Delete all @import at-rules
+ return '';
+ }, $css);
+
+ // @namespace handling
+ $css = preg_replace_callback($this->namespaceRegex, function ($matches) use (&$namespaces) {
+ // Keep all @namespace at-rules found for later
+ $namespaces .= $matches[0];
+ // Delete all @namespace at-rules
+ return '';
+ }, $css);
+
+ // Order critical at-rules:
+ // 1. @charset first
+ // 2. @imports below @charset
+ // 3. @namespaces below @imports
+ $css = $charset . $imports . $namespaces . $css;
+
+ return $css;
+ }
+
+ /**
+ * Splits long lines after a specific column.
+ *
+ * Some source control tools don't like it when files containing lines longer
+ * than, say 8000 characters, are checked in. The linebreak option is used in
+ * that case to split long lines after a specific column.
+ *
+ * @param string $css the whole stylesheet.
+ * @return string
+ */
+ private function processLongLineSplitting($css)
+ {
+ if ($this->linebreakPosition > 0) {
+ $l = strlen($css);
+ $offset = $this->linebreakPosition;
+ while (preg_match('/(?<!\\\\)\}(?!\n)/S', $css, $matches, PREG_OFFSET_CAPTURE, $offset)) {
+ $matchIndex = $matches[0][1];
+ $css = substr_replace($css, "\n", $matchIndex + 1, 0);
+ $offset = $matchIndex + 2 + $this->linebreakPosition;
+ $l += 1;
+ if ($offset > $l) {
+ break;
+ }
+ }
+ }
+
+ return $css;
+ }
+
+ /**
+ * Converts hsl() & rgb() colors to HEX format.
+ * @param $matches
+ * @return string
+ */
+ private function shortenHslAndRgbToHexCallback($matches)
+ {
+ $type = $matches[1];
+ $values = explode(',', $matches[2]);
+ $terminator = $matches[3];
+
+ if ($type === 'hsl') {
+ $values = Utils::hslToRgb($values);
+ }
+
+ $hexColors = Utils::rgbToHex($values);
+
+ // Restore space after rgb() or hsl() function in some cases such as:
+ // background-image: linear-gradient(to bottom, rgb(210,180,140) 10%, rgb(255,0,0) 90%);
+ if (!empty($terminator) && !preg_match('/[ ,);]/S', $terminator)) {
+ $terminator = ' '. $terminator;
+ }
+
+ return '#'. implode('', $hexColors) . $terminator;
+ }
+
+ /**
+ * Compresses HEX color values of the form #AABBCC to #ABC or short color name.
+ * @param $matches
+ * @return string
+ */
+ private function shortenHexColorsCallback($matches)
+ {
+ $hex = $matches[1];
+
+ // Shorten suitable 6 chars HEX colors
+ if (strlen($hex) === 6 && preg_match('/^([0-9a-f])\1([0-9a-f])\2([0-9a-f])\3$/Si', $hex, $m)) {
+ $hex = $m[1] . $m[2] . $m[3];
+ }
+
+ // Lowercase
+ $hex = '#'. strtolower($hex);
+
+ // Replace Hex colors with shorter color names
+ $color = array_key_exists($hex, $this->hexToNamedColorsMap) ? $this->hexToNamedColorsMap[$hex] : $hex;
+
+ return $color . $matches[2];
+ }
+
+ /**
+ * Shortens all named colors with a shorter HEX counterpart for a set of safe properties
+ * e.g. white -> #fff
+ * @param array $matches
+ * @return string
+ */
+ private function shortenNamedColorsCallback($matches)
+ {
+ return $matches[1] . $this->namedToHexColorsMap[strtolower($matches[2])] . $matches[3];
+ }
+
+ /**
+ * Makes a string lowercase
+ * @param array $matches
+ * @return string
+ */
+ private function strtolowerCallback($matches)
+ {
+ return strtolower($matches[0]);
+ }
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/src/Utils.php b/admin/survey/minify/vendor/tubalmartin/cssmin/src/Utils.php
new file mode 100644
index 0000000..d05f375
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/src/Utils.php
@@ -0,0 +1,149 @@
+<?php
+
+namespace tubalmartin\CssMin;
+
+class Utils
+{
+ /**
+ * Clamps a number between a minimum and a maximum value.
+ * @param int|float $n the number to clamp
+ * @param int|float $min the lower end number allowed
+ * @param int|float $max the higher end number allowed
+ * @return int|float
+ */
+ public static function clampNumber($n, $min, $max)
+ {
+ return min(max($n, $min), $max);
+ }
+
+ /**
+ * Clamps a RGB color number outside the sRGB color space
+ * @param int|float $n the number to clamp
+ * @return int|float
+ */
+ public static function clampNumberSrgb($n)
+ {
+ return self::clampNumber($n, 0, 255);
+ }
+
+ /**
+ * Converts a HSL color into a RGB color
+ * @param array $hslValues
+ * @return array
+ */
+ public static function hslToRgb($hslValues)
+ {
+ $h = floatval($hslValues[0]);
+ $s = floatval(str_replace('%', '', $hslValues[1]));
+ $l = floatval(str_replace('%', '', $hslValues[2]));
+
+ // Wrap and clamp, then fraction!
+ $h = ((($h % 360) + 360) % 360) / 360;
+ $s = self::clampNumber($s, 0, 100) / 100;
+ $l = self::clampNumber($l, 0, 100) / 100;
+
+ if ($s == 0) {
+ $r = $g = $b = self::roundNumber(255 * $l);
+ } else {
+ $v2 = $l < 0.5 ? $l * (1 + $s) : ($l + $s) - ($s * $l);
+ $v1 = (2 * $l) - $v2;
+ $r = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h + (1/3)));
+ $g = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h));
+ $b = self::roundNumber(255 * self::hueToRgb($v1, $v2, $h - (1/3)));
+ }
+
+ return array($r, $g, $b);
+ }
+
+ /**
+ * Tests and selects the correct formula for each RGB color channel
+ * @param $v1
+ * @param $v2
+ * @param $vh
+ * @return mixed
+ */
+ public static function hueToRgb($v1, $v2, $vh)
+ {
+ $vh = $vh < 0 ? $vh + 1 : ($vh > 1 ? $vh - 1 : $vh);
+
+ if ($vh * 6 < 1) {
+ return $v1 + ($v2 - $v1) * 6 * $vh;
+ }
+
+ if ($vh * 2 < 1) {
+ return $v2;
+ }
+
+ if ($vh * 3 < 2) {
+ return $v1 + ($v2 - $v1) * ((2 / 3) - $vh) * 6;
+ }
+
+ return $v1;
+ }
+
+ /**
+ * Convert strings like "64M" or "30" to int values
+ * @param mixed $size
+ * @return int
+ */
+ public static function normalizeInt($size)
+ {
+ if (is_string($size)) {
+ $letter = substr($size, -1);
+ $size = intval($size);
+ switch ($letter) {
+ case 'M':
+ case 'm':
+ return (int) $size * 1048576;
+ case 'K':
+ case 'k':
+ return (int) $size * 1024;
+ case 'G':
+ case 'g':
+ return (int) $size * 1073741824;
+ }
+ }
+ return (int) $size;
+ }
+
+ /**
+ * Converts a string containing and RGB percentage value into a RGB integer value i.e. '90%' -> 229.5
+ * @param $rgbPercentage
+ * @return int
+ */
+ public static function rgbPercentageToRgbInteger($rgbPercentage)
+ {
+ if (strpos($rgbPercentage, '%') !== false) {
+ $rgbPercentage = self::roundNumber(floatval(str_replace('%', '', $rgbPercentage)) * 2.55);
+ }
+
+ return intval($rgbPercentage, 10);
+ }
+
+ /**
+ * Converts a RGB color into a HEX color
+ * @param array $rgbColors
+ * @return array
+ */
+ public static function rgbToHex($rgbColors)
+ {
+ $hexColors = array();
+
+ // Values outside the sRGB color space should be clipped (0-255)
+ for ($i = 0, $l = count($rgbColors); $i < $l; $i++) {
+ $hexColors[$i] = sprintf("%02x", self::clampNumberSrgb(self::rgbPercentageToRgbInteger($rgbColors[$i])));
+ }
+
+ return $hexColors;
+ }
+
+ /**
+ * Rounds a number to its closest integer
+ * @param $n
+ * @return int
+ */
+ public static function roundNumber($n)
+ {
+ return intval(round(floatval($n)), 10);
+ }
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/FineDiff/Render/Cli.php b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/FineDiff/Render/Cli.php
new file mode 100644
index 0000000..86dcbba
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/FineDiff/Render/Cli.php
@@ -0,0 +1,27 @@
+<?php
+
+namespace tubalmartin\CssMin\Tests\FineDiff\Render;
+
+use cogpowered\FineDiff\Render\Renderer;
+
+class Cli extends Renderer
+{
+ public function callback($opcode, $from, $from_offset, $from_len)
+ {
+ if ($opcode === 'c') {
+ $text = substr($from, $from_offset, $from_len);
+ } elseif ($opcode === 'd') {
+ $deletion = substr($from, $from_offset, $from_len);
+
+ if (strcspn($deletion, " \n\r") === 0) {
+ $deletion = str_replace(array("\n","\r"), array('\n','\r'), $deletion);
+ }
+
+ $text = "\x1b[97m\x1b[41m".$deletion."\x1b[0m";
+ } else /* if ( $opcode === 'i' ) */ {
+ $text = "\x1b[97m\x1b[42m".substr($from, $from_offset, $from_len)."\x1b[0m";
+ }
+
+ return $text;
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/MinifierTest.php b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/MinifierTest.php
new file mode 100644
index 0000000..327ed34
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/MinifierTest.php
@@ -0,0 +1,312 @@
+<?php
+
+namespace tubalmartin\CssMin\Tests;
+
+use tubalmartin\CssMin\Minifier;
+use PHPUnit_Framework_TestCase;
+
+class MinifierTest extends PHPUnit_Framework_TestCase
+{
+ protected $cssmin;
+
+ protected function setUp()
+ {
+ $this->cssmin = new Minifier;
+ }
+
+ protected function getExpectation($name)
+ {
+ return file_get_contents(__DIR__ .'/expectations/'. $name .'.css');
+ }
+
+ protected function getFixture($name)
+ {
+ return file_get_contents(__DIR__ .'/fixtures/'. $name .'.css');
+ }
+
+ protected function execTest($expectationName, $fixtureName = null)
+ {
+ $this->assertEquals(
+ $this->getExpectation($expectationName),
+ $this->cssmin->run($this->getFixture(is_null($fixtureName) ? $expectationName : $fixtureName))
+ );
+ }
+
+ public function testAtRules()
+ {
+ $this->execTest('at-rules');
+ }
+
+ public function testAttributeSelectors()
+ {
+ $this->execTest('attribute-selectors');
+ }
+
+ public function testBackgroundProperty()
+ {
+ $this->execTest('background');
+ }
+
+ public function testBackgroundPositionProperty()
+ {
+ $this->execTest('background-position');
+ }
+
+ public function testBorderProperty()
+ {
+ $this->execTest('border');
+ }
+
+ public function testCalcFunction()
+ {
+ $this->execTest('calc');
+ }
+
+ public function testColors()
+ {
+ $this->execTest('colors');
+ }
+
+ public function testComments()
+ {
+ $this->execTest('comments');
+ }
+
+ public function testDataUrlBase64DoubleQuotes()
+ {
+ $this->execTest('dataurl-base64-doublequotes');
+ }
+
+ public function testDataUrlBase64Eof()
+ {
+ $this->execTest('dataurl-base64-eof');
+ }
+
+ public function testDataUrlBase64LineBreakInData()
+ {
+ $this->execTest('dataurl-base64-linebreakindata');
+ }
+
+ public function testDataUrlBase64NoQuotes()
+ {
+ $this->execTest('dataurl-base64-noquotes');
+ }
+
+ public function testDataUrlBase64SingleQuotes()
+ {
+ $this->execTest('dataurl-base64-singlequotes');
+ }
+
+ public function testDataUrlBase64TwoUrls()
+ {
+ $this->execTest('dataurl-base64-twourls');
+ }
+
+ public function testDataUrlDbQuoteFont()
+ {
+ $this->execTest('dataurl-dbquote-font');
+ }
+
+ public function testDataUrlInlineSvg()
+ {
+ $this->execTest('dataurl-inline-svg');
+ }
+
+ public function testDataUrlNonBase64DoubleQuotes()
+ {
+ $this->execTest('dataurl-nonbase64-doublequotes');
+ }
+
+ public function testDataUrlNonBase64NoQuotes()
+ {
+ $this->execTest('dataurl-nonbase64-noquotes');
+ }
+
+ public function testDataUrlNonBase64SingleQuotes()
+ {
+ $this->execTest('dataurl-nonbase64-singlequotes');
+ }
+
+ public function testDataUrlNoQuoteMultilineFont()
+ {
+ $this->execTest('dataurl-noquote-multiline-font');
+ }
+
+ public function testDataUrlRealDataDoubleQuotes()
+ {
+ $this->execTest('dataurl-realdata-doublequotes');
+ }
+
+ public function testDataUrlRealDataNoQuotes()
+ {
+ $this->execTest('dataurl-realdata-noquotes');
+ }
+
+ public function testDataUrlRealDataSingleQuotes()
+ {
+ $this->execTest('dataurl-realdata-singlequotes');
+ }
+
+ public function testDataUrlRealDataYuiApp()
+ {
+ $this->execTest('dataurl-realdata-yuiapp');
+ }
+
+ public function testDataUrlSingleQuoteFont()
+ {
+ $this->execTest('dataurl-singlequote-font');
+ }
+
+ public function testEmptyRules()
+ {
+ $this->execTest('empty-rules');
+ }
+
+ public function testFlexProperty()
+ {
+ $this->execTest('flex');
+ }
+
+ public function testFontWeightProperty()
+ {
+ $this->execTest('font-weight');
+ }
+
+ public function testImportantRule()
+ {
+ $this->execTest('important');
+ }
+
+ public function testKeepSourcemapComment()
+ {
+ $this->cssmin->keepSourceMapComment();
+ $this->execTest('sourcemap-comment-preserve', 'sourcemap-comment');
+ }
+
+ public function testLinebreakPosition()
+ {
+ $this->cssmin->setLineBreakPosition(10);
+ $this->execTest('linebreak-position');
+ }
+
+ public function testLinebreakPositionDoubleNewline()
+ {
+ $this->cssmin->setLineBreakPosition(1);
+ $this->cssmin->keepSourceMapComment();
+ $this->execTest('sourcemap-comment-preserve', 'sourcemap-comment');
+ }
+
+ public function testLowercasing()
+ {
+ $this->execTest('lowercasing');
+ }
+
+ public function testNumbers()
+ {
+ $this->execTest('numbers');
+ }
+
+ public function testOldIeFilters()
+ {
+ $this->execTest('old-ie-filters');
+ }
+
+ public function testPreserveCase()
+ {
+ $this->execTest('preserve-case');
+ }
+
+ public function testPseudoClasses()
+ {
+ $this->execTest('pseudo-classes');
+ }
+
+ public function testPseudoElements()
+ {
+ $this->execTest('pseudo-elements');
+ }
+
+ public function testRemoveImportantComments()
+ {
+ $this->cssmin->removeImportantComments();
+ $this->execTest('important-comments-remove', 'comments');
+ }
+
+ public function testRemoveSourcemapComment()
+ {
+ $this->execTest('sourcemap-comment-remove', 'sourcemap-comment');
+ }
+
+ public function testSemicolons()
+ {
+ $this->execTest('semicolons');
+ }
+
+ public function testShortenableProperties()
+ {
+ $this->execTest('shortenable-properties');
+ }
+
+ public function testStarUnderscoreHacks()
+ {
+ $this->execTest('star-underscore-hacks');
+ }
+
+ public function testStrings()
+ {
+ $this->execTest('strings');
+ }
+
+ public function testTextShadowProperty()
+ {
+ $this->execTest('text-shadow');
+ }
+
+ public function testUnitMs()
+ {
+ $this->execTest('unit-ms');
+ }
+
+ public function testWebkitTransformOrigin()
+ {
+ $this->execTest('webkit-transform-origin');
+ }
+
+ // Frameworks
+
+ public function testBootstrap()
+ {
+ $this->execTest('bootstrap');
+ }
+
+ public function testBulma()
+ {
+ $this->execTest('bulma');
+ }
+
+ public function testFoundation()
+ {
+ $this->execTest('foundation');
+ }
+
+ public function testKube()
+ {
+ $this->execTest('kube');
+ }
+
+ public function testMaterialize()
+ {
+ $this->execTest('materialize');
+ }
+
+ public function testMui()
+ {
+ $this->execTest('mui');
+ }
+
+ public function testPure()
+ {
+ $this->execTest('pure');
+ }
+
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/bin/runner b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/bin/runner
new file mode 100644
index 0000000..0f43f02
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/bin/runner
@@ -0,0 +1,77 @@
+#!/usr/bin/env php
+<?php
+
+require __DIR__ . '/../../vendor/autoload.php';
+
+use tubalmartin\CssMin\Minifier;
+use tubalmartin\CssMin\Tests\FineDiff\Render\Cli as CliRenderer;
+use cogpowered\FineDiff\Diff;
+
+$opts = getopt(
+ 't:f:',
+ array('keep-sourcemap', 'keep-sourcemap-comment', 'remove-important-comments', 'linebreak-position:')
+);
+
+if (empty($opts['t'])) {
+ fwrite(
+ STDERR,
+ 'You need to provide -t argument to run the specified test i.e. "php ./tests/bin/runner -t mui"' . PHP_EOL
+ );
+ die(1);
+}
+
+$expectation = $opts['t'];
+$fixture = $expectation;
+
+if (!empty($opts['f'])) {
+ $fixture = $opts['f'];
+}
+
+$fixtureFile = __DIR__ .'/../fixtures/'. $fixture .'.css';
+$expectationFile = __DIR__ .'/../expectations/'. $expectation .'.css';
+
+if (!is_readable($fixtureFile) || !is_readable($expectationFile)) {
+ fwrite(
+ STDERR,
+ 'Either test fixture or expectation is missing or not readable' . PHP_EOL
+ );
+ die(1);
+}
+
+$minifier = new Minifier;
+
+if (isset($opts['keep-sourcemap']) || isset($opts['keep-sourcemap-comment'])) {
+ $minifier->keepSourceMapComment();
+}
+
+if (isset($opts['remove-important-comments'])) {
+ $minifier->removeImportantComments();
+}
+
+if (!empty($opts['linebreak-position'])) {
+ $minifier->setLineBreakPosition($opts['linebreak-position']);
+}
+
+$fixture = file_get_contents($fixtureFile);
+$expectation = file_get_contents($expectationFile);
+$output = $minifier->run($fixture);
+
+if (strcmp($output, $expectation) === 0) {
+ fwrite(
+ STDOUT,
+ "\x1b[30m\x1b[42m OK \x1b[0m" . PHP_EOL
+ );
+ die(0);
+} else {
+ $diff = new Diff;
+ $cliRenderer = new CliRenderer;
+ $diffString = $cliRenderer->process($expectation, $diff->getOpcodes($expectation, $output));
+ fwrite(
+ STDERR,
+ "\x1b[37m\x1b[41m FAILURE \x1b[0m" . PHP_EOL .
+ '---' . PHP_EOL .
+ $diffString . PHP_EOL .
+ '---' . PHP_EOL
+ );
+ die(1);
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/at-rules.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/at-rules.css
new file mode 100644
index 0000000..e6bab1e
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/at-rules.css
@@ -0,0 +1 @@
+@charset "utf-8";@import url("fineprint.css") print;@import url("bluish.css") projection,tv;@import 'custom.css';@import url("chrome://communicator/skin/");@import "common.css" screen,projection;@import url('landscape.css') screen and (orientation:landscape);@import url(//example.org/foo.css?a;b;c;d) screen,projection;@import url(//example.org/foo.css?a;b;c;d);@import url(//example.org/bar.css);@namespace svg url(http://www.w3.org/2000/svg);@namespace url(http://www.w3.org/1999/xhtml);@document url(http://www.w3.org/),url-prefix(http://www.w3.org/Style/),domain(mozilla.org),regexp("https:.*"){body{color:purple;background:#ff0}}@media all,BRAILLE{body{background-color:gold}}@page :first{margin-left:50%;margin-top:50%}@viewport{min-width:640px;max-width:800px}#foo{border-width:1px}@keyframes identifier{0%{top:0;left:0}30%{top:50px}68%,72%{left:50px}100%{top:100px;left:100%}}@media print{#navigation{display:none}@media (max-width:12cm){.note,a[type="{{}{}{"]{float:none}@media (min-height:2px){.bar{width:10px}}.foo{align-content:center}}}@supports (box-shadow:0 0 2px black inset) or (-moz-box-shadow:0 0 2px black inset) or (-webkit-box-shadow:0 0 2px black inset) or (-o-box-shadow:0 0 2px black inset){.noticebox{-moz-box-shadow:0 0 2px #000 inset;-webkit-box-shadow:0 0 2px #000 inset;-o-box-shadow:0 0 2px #000 inset;box-shadow:0 0 2px #000 inset;border:none;padding:2px}}@supports NOT (display:flex){body{width:100%;height:100%;background:#fff;color:#000}#navigation{width:25%}#article{width:75%}}@font-face{font-family:'gzipper';src:url(yanone.eot);src:local('gzipper'),url(yanone.ttf) format('truetype')}#bar{border-width:10px}@viewport{zoom:.75;min-zoom:.5;max-zoom:.9}@viewport{orientation:landscape}@page :left{margin:2in 3in}@media (min-width:700px) and (orientation:landscape){a{color:red}}@supports not ((text-align-last:justify) or (-moz-text-align-last:justify)){p{text-align:justify}}@media only all and (max-width:50em),only all and (max-device-width:800px),only all and (max-width:780px){a{height:1px}}@media screen AND (-webkit-min-device-pixel-ratio:0){div,p{margin:2px}}@media only screen and (-webkit-min-device-pixel-ratio:1.5),only screen and (-o-min-device-pixel-ratio:3/2),only screen and (min--moz-device-pixel-ratio:1.5),only screen and (min-device-pixel-ratio:1.5){a{width:100px}}@media not all and (monochrome){a{border:none}}@media not screen and (color),print and (color){a{display:block}}@media (-webkit-min-device-pixel-ratio:0){a{border:none}}@media handheld and (grid) and (max-width:15em){a{border-width:4px}}@media screen and (min-aspect-ratio:1/1){a{border:none}}.something{top:0}@keyframes anim{0%{opacity:0}100%{opacity:1}}@-o-keyframes anim{0%{opacity:0}100%{opacity:1}}@keyframes test{0%,100%{opacity:0}}@keyframes test2{0%,100%{opacity:0}}@keyframes test3{50%{opacity:50}100%,0%{opacity:0}}@-webkit-keyframes test4{0%{transform:rotate3d(0,0,1,30deg)}100%{transform:rotate3d(0,0,1,10deg)}} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/attribute-selectors.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/attribute-selectors.css
new file mode 100644
index 0000000..8480493
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/attribute-selectors.css
@@ -0,0 +1 @@
+input[type=button],span[lang|=en-],div[class~=-hey]{color:#fff}input[type=-_2test],input[TYPE$=_2tEst_],a[alt],span[lang^=PT],a[href*=example2-test-]{color:#fff}a[aria-hidden=false],[data-toggle=buttons]{color:blue}input[type=""],input[type="-"],input[type="--test"],input[type="-2test"],input[type="2test"],a[href ^="http:"],a[href $='#'],img[src^="http://"]{color:#000}a[href*='a%a'],a[href *='b/b'],a[href*="asd$sdd!"]{color:#000} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/background-position.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/background-position.css
new file mode 100644
index 0000000..382152d
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/background-position.css
@@ -0,0 +1 @@
+a{background-position:0 0}b{background-position:0 0}c{background-position:0 0}d{background-position:0 50%;background-position:0 0;background-position:0 0;background-position:center top 0;background-position:left 0 bottom 0} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/background.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/background.css
new file mode 100644
index 0000000..d0a8c85
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/background.css
@@ -0,0 +1 @@
+a{background:0 0;background:0 0 !important}b{background:0 0;background:0 0}c{background:0 0} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/bootstrap.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/bootstrap.css
new file mode 100644
index 0000000..80f18c7
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/bootstrap.css
@@ -0,0 +1,15 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+html{font-family:sans-serif;-webkit-text-size-adjust:100%;-ms-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:700}dfn{font-style:italic}h1{margin:.67em 0;font-size:2em}mark{color:#000;background:#ff0}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{height:0;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;font:inherit;color:inherit}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input[type=checkbox],input[type=radio]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;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-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{padding:.35em .625em .75em;margin:0 2px;border:1px solid silver}legend{padding:0;border:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print{*,*:before,*:after{color:#000 !important;text-shadow:none !important;background:0 0 !important;-webkit-box-shadow:none !important;box-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}@font-face{font-family:'Glyphicons Halflings';src:url('../fonts/glyphicons-halflings-regular.eot');src:url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'),url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'),url('../fonts/glyphicons-halflings-regular.woff') format('woff'),url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'),url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg')}.glyphicon{position:relative;top:1px;display:inline-block;font-family:'Glyphicons Halflings';font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.glyphicon-asterisk:before{content:"\002a"}.glyphicon-plus:before{content:"\002b"}.glyphicon-euro:before,.glyphicon-eur:before{content:"\20ac"}.glyphicon-minus:before{content:"\2212"}.glyphicon-cloud:before{content:"\2601"}.glyphicon-envelope:before{content:"\2709"}.glyphicon-pencil:before{content:"\270f"}.glyphicon-glass:before{content:"\e001"}.glyphicon-music:before{content:"\e002"}.glyphicon-search:before{content:"\e003"}.glyphicon-heart:before{content:"\e005"}.glyphicon-star:before{content:"\e006"}.glyphicon-star-empty:before{content:"\e007"}.glyphicon-user:before{content:"\e008"}.glyphicon-film:before{content:"\e009"}.glyphicon-th-large:before{content:"\e010"}.glyphicon-th:before{content:"\e011"}.glyphicon-th-list:before{content:"\e012"}.glyphicon-ok:before{content:"\e013"}.glyphicon-remove:before{content:"\e014"}.glyphicon-zoom-in:before{content:"\e015"}.glyphicon-zoom-out:before{content:"\e016"}.glyphicon-off:before{content:"\e017"}.glyphicon-signal:before{content:"\e018"}.glyphicon-cog:before{content:"\e019"}.glyphicon-trash:before{content:"\e020"}.glyphicon-home:before{content:"\e021"}.glyphicon-file:before{content:"\e022"}.glyphicon-time:before{content:"\e023"}.glyphicon-road:before{content:"\e024"}.glyphicon-download-alt:before{content:"\e025"}.glyphicon-download:before{content:"\e026"}.glyphicon-upload:before{content:"\e027"}.glyphicon-inbox:before{content:"\e028"}.glyphicon-play-circle:before{content:"\e029"}.glyphicon-repeat:before{content:"\e030"}.glyphicon-refresh:before{content:"\e031"}.glyphicon-list-alt:before{content:"\e032"}.glyphicon-lock:before{content:"\e033"}.glyphicon-flag:before{content:"\e034"}.glyphicon-headphones:before{content:"\e035"}.glyphicon-volume-off:before{content:"\e036"}.glyphicon-volume-down:before{content:"\e037"}.glyphicon-volume-up:before{content:"\e038"}.glyphicon-qrcode:before{content:"\e039"}.glyphicon-barcode:before{content:"\e040"}.glyphicon-tag:before{content:"\e041"}.glyphicon-tags:before{content:"\e042"}.glyphicon-book:before{content:"\e043"}.glyphicon-bookmark:before{content:"\e044"}.glyphicon-print:before{content:"\e045"}.glyphicon-camera:before{content:"\e046"}.glyphicon-font:before{content:"\e047"}.glyphicon-bold:before{content:"\e048"}.glyphicon-italic:before{content:"\e049"}.glyphicon-text-height:before{content:"\e050"}.glyphicon-text-width:before{content:"\e051"}.glyphicon-align-left:before{content:"\e052"}.glyphicon-align-center:before{content:"\e053"}.glyphicon-align-right:before{content:"\e054"}.glyphicon-align-justify:before{content:"\e055"}.glyphicon-list:before{content:"\e056"}.glyphicon-indent-left:before{content:"\e057"}.glyphicon-indent-right:before{content:"\e058"}.glyphicon-facetime-video:before{content:"\e059"}.glyphicon-picture:before{content:"\e060"}.glyphicon-map-marker:before{content:"\e062"}.glyphicon-adjust:before{content:"\e063"}.glyphicon-tint:before{content:"\e064"}.glyphicon-edit:before{content:"\e065"}.glyphicon-share:before{content:"\e066"}.glyphicon-check:before{content:"\e067"}.glyphicon-move:before{content:"\e068"}.glyphicon-step-backward:before{content:"\e069"}.glyphicon-fast-backward:before{content:"\e070"}.glyphicon-backward:before{content:"\e071"}.glyphicon-play:before{content:"\e072"}.glyphicon-pause:before{content:"\e073"}.glyphicon-stop:before{content:"\e074"}.glyphicon-forward:before{content:"\e075"}.glyphicon-fast-forward:before{content:"\e076"}.glyphicon-step-forward:before{content:"\e077"}.glyphicon-eject:before{content:"\e078"}.glyphicon-chevron-left:before{content:"\e079"}.glyphicon-chevron-right:before{content:"\e080"}.glyphicon-plus-sign:before{content:"\e081"}.glyphicon-minus-sign:before{content:"\e082"}.glyphicon-remove-sign:before{content:"\e083"}.glyphicon-ok-sign:before{content:"\e084"}.glyphicon-question-sign:before{content:"\e085"}.glyphicon-info-sign:before{content:"\e086"}.glyphicon-screenshot:before{content:"\e087"}.glyphicon-remove-circle:before{content:"\e088"}.glyphicon-ok-circle:before{content:"\e089"}.glyphicon-ban-circle:before{content:"\e090"}.glyphicon-arrow-left:before{content:"\e091"}.glyphicon-arrow-right:before{content:"\e092"}.glyphicon-arrow-up:before{content:"\e093"}.glyphicon-arrow-down:before{content:"\e094"}.glyphicon-share-alt:before{content:"\e095"}.glyphicon-resize-full:before{content:"\e096"}.glyphicon-resize-small:before{content:"\e097"}.glyphicon-exclamation-sign:before{content:"\e101"}.glyphicon-gift:before{content:"\e102"}.glyphicon-leaf:before{content:"\e103"}.glyphicon-fire:before{content:"\e104"}.glyphicon-eye-open:before{content:"\e105"}.glyphicon-eye-close:before{content:"\e106"}.glyphicon-warning-sign:before{content:"\e107"}.glyphicon-plane:before{content:"\e108"}.glyphicon-calendar:before{content:"\e109"}.glyphicon-random:before{content:"\e110"}.glyphicon-comment:before{content:"\e111"}.glyphicon-magnet:before{content:"\e112"}.glyphicon-chevron-up:before{content:"\e113"}.glyphicon-chevron-down:before{content:"\e114"}.glyphicon-retweet:before{content:"\e115"}.glyphicon-shopping-cart:before{content:"\e116"}.glyphicon-folder-close:before{content:"\e117"}.glyphicon-folder-open:before{content:"\e118"}.glyphicon-resize-vertical:before{content:"\e119"}.glyphicon-resize-horizontal:before{content:"\e120"}.glyphicon-hdd:before{content:"\e121"}.glyphicon-bullhorn:before{content:"\e122"}.glyphicon-bell:before{content:"\e123"}.glyphicon-certificate:before{content:"\e124"}.glyphicon-thumbs-up:before{content:"\e125"}.glyphicon-thumbs-down:before{content:"\e126"}.glyphicon-hand-right:before{content:"\e127"}.glyphicon-hand-left:before{content:"\e128"}.glyphicon-hand-up:before{content:"\e129"}.glyphicon-hand-down:before{content:"\e130"}.glyphicon-circle-arrow-right:before{content:"\e131"}.glyphicon-circle-arrow-left:before{content:"\e132"}.glyphicon-circle-arrow-up:before{content:"\e133"}.glyphicon-circle-arrow-down:before{content:"\e134"}.glyphicon-globe:before{content:"\e135"}.glyphicon-wrench:before{content:"\e136"}.glyphicon-tasks:before{content:"\e137"}.glyphicon-filter:before{content:"\e138"}.glyphicon-briefcase:before{content:"\e139"}.glyphicon-fullscreen:before{content:"\e140"}.glyphicon-dashboard:before{content:"\e141"}.glyphicon-paperclip:before{content:"\e142"}.glyphicon-heart-empty:before{content:"\e143"}.glyphicon-link:before{content:"\e144"}.glyphicon-phone:before{content:"\e145"}.glyphicon-pushpin:before{content:"\e146"}.glyphicon-usd:before{content:"\e148"}.glyphicon-gbp:before{content:"\e149"}.glyphicon-sort:before{content:"\e150"}.glyphicon-sort-by-alphabet:before{content:"\e151"}.glyphicon-sort-by-alphabet-alt:before{content:"\e152"}.glyphicon-sort-by-order:before{content:"\e153"}.glyphicon-sort-by-order-alt:before{content:"\e154"}.glyphicon-sort-by-attributes:before{content:"\e155"}.glyphicon-sort-by-attributes-alt:before{content:"\e156"}.glyphicon-unchecked:before{content:"\e157"}.glyphicon-expand:before{content:"\e158"}.glyphicon-collapse-down:before{content:"\e159"}.glyphicon-collapse-up:before{content:"\e160"}.glyphicon-log-in:before{content:"\e161"}.glyphicon-flash:before{content:"\e162"}.glyphicon-log-out:before{content:"\e163"}.glyphicon-new-window:before{content:"\e164"}.glyphicon-record:before{content:"\e165"}.glyphicon-save:before{content:"\e166"}.glyphicon-open:before{content:"\e167"}.glyphicon-saved:before{content:"\e168"}.glyphicon-import:before{content:"\e169"}.glyphicon-export:before{content:"\e170"}.glyphicon-send:before{content:"\e171"}.glyphicon-floppy-disk:before{content:"\e172"}.glyphicon-floppy-saved:before{content:"\e173"}.glyphicon-floppy-remove:before{content:"\e174"}.glyphicon-floppy-save:before{content:"\e175"}.glyphicon-floppy-open:before{content:"\e176"}.glyphicon-credit-card:before{content:"\e177"}.glyphicon-transfer:before{content:"\e178"}.glyphicon-cutlery:before{content:"\e179"}.glyphicon-header:before{content:"\e180"}.glyphicon-compressed:before{content:"\e181"}.glyphicon-earphone:before{content:"\e182"}.glyphicon-phone-alt:before{content:"\e183"}.glyphicon-tower:before{content:"\e184"}.glyphicon-stats:before{content:"\e185"}.glyphicon-sd-video:before{content:"\e186"}.glyphicon-hd-video:before{content:"\e187"}.glyphicon-subtitles:before{content:"\e188"}.glyphicon-sound-stereo:before{content:"\e189"}.glyphicon-sound-dolby:before{content:"\e190"}.glyphicon-sound-5-1:before{content:"\e191"}.glyphicon-sound-6-1:before{content:"\e192"}.glyphicon-sound-7-1:before{content:"\e193"}.glyphicon-copyright-mark:before{content:"\e194"}.glyphicon-registration-mark:before{content:"\e195"}.glyphicon-cloud-download:before{content:"\e197"}.glyphicon-cloud-upload:before{content:"\e198"}.glyphicon-tree-conifer:before{content:"\e199"}.glyphicon-tree-deciduous:before{content:"\e200"}.glyphicon-cd:before{content:"\e201"}.glyphicon-save-file:before{content:"\e202"}.glyphicon-open-file:before{content:"\e203"}.glyphicon-level-up:before{content:"\e204"}.glyphicon-copy:before{content:"\e205"}.glyphicon-paste:before{content:"\e206"}.glyphicon-alert:before{content:"\e209"}.glyphicon-equalizer:before{content:"\e210"}.glyphicon-king:before{content:"\e211"}.glyphicon-queen:before{content:"\e212"}.glyphicon-pawn:before{content:"\e213"}.glyphicon-bishop:before{content:"\e214"}.glyphicon-knight:before{content:"\e215"}.glyphicon-baby-formula:before{content:"\e216"}.glyphicon-tent:before{content:"\26fa"}.glyphicon-blackboard:before{content:"\e218"}.glyphicon-bed:before{content:"\e219"}.glyphicon-apple:before{content:"\f8ff"}.glyphicon-erase:before{content:"\e221"}.glyphicon-hourglass:before{content:"\231b"}.glyphicon-lamp:before{content:"\e223"}.glyphicon-duplicate:before{content:"\e224"}.glyphicon-piggy-bank:before{content:"\e225"}.glyphicon-scissors:before{content:"\e226"}.glyphicon-bitcoin:before{content:"\e227"}.glyphicon-btc:before{content:"\e227"}.glyphicon-xbt:before{content:"\e227"}.glyphicon-yen:before{content:"\00a5"}.glyphicon-jpy:before{content:"\00a5"}.glyphicon-ruble:before{content:"\20bd"}.glyphicon-rub:before{content:"\20bd"}.glyphicon-scale:before{content:"\e230"}.glyphicon-ice-lolly:before{content:"\e231"}.glyphicon-ice-lolly-tasted:before{content:"\e232"}.glyphicon-education:before{content:"\e233"}.glyphicon-option-horizontal:before{content:"\e234"}.glyphicon-option-vertical:before{content:"\e235"}.glyphicon-menu-hamburger:before{content:"\e236"}.glyphicon-modal-window:before{content:"\e237"}.glyphicon-oil:before{content:"\e238"}.glyphicon-grain:before{content:"\e239"}.glyphicon-sunglasses:before{content:"\e240"}.glyphicon-text-size:before{content:"\e241"}.glyphicon-text-color:before{content:"\e242"}.glyphicon-text-background:before{content:"\e243"}.glyphicon-object-align-top:before{content:"\e244"}.glyphicon-object-align-bottom:before{content:"\e245"}.glyphicon-object-align-horizontal:before{content:"\e246"}.glyphicon-object-align-left:before{content:"\e247"}.glyphicon-object-align-vertical:before{content:"\e248"}.glyphicon-object-align-right:before{content:"\e249"}.glyphicon-triangle-right:before{content:"\e250"}.glyphicon-triangle-left:before{content:"\e251"}.glyphicon-triangle-bottom:before{content:"\e252"}.glyphicon-triangle-top:before{content:"\e253"}.glyphicon-console:before{content:"\e254"}.glyphicon-superscript:before{content:"\e255"}.glyphicon-subscript:before{content:"\e256"}.glyphicon-menu-left:before{content:"\e257"}.glyphicon-menu-right:before{content:"\e258"}.glyphicon-menu-down:before{content:"\e259"}.glyphicon-menu-up:before{content:"\e260"}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{display:inline-block;max-width:100%;height:auto;padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role=button]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:400;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{padding:.2em;background-color:#fcf8e3}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover,a.text-primary:focus{color:#286090}.text-success{color:#3c763d}a.text-success:hover,a.text-success:focus{color:#2b542c}.text-info{color:#31708f}a.text-info:hover,a.text-info:focus{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover,a.text-warning:focus{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover,a.text-danger:focus{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover,a.bg-primary:focus{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;margin-left:-5px;list-style:none}.list-inline>li{display:inline-block;padding-right:5px;padding-left:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:700}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;overflow:hidden;clear:left;text-align:right;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;text-align:right;border-right:5px solid #eee;border-left:0}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,.25)}kbd kbd{padding:0;font-size:100%;font-weight:700;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;color:#333;word-break:break-all;word-wrap:break-word;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*=col-]{position:static;display:table-column;float:none}table td[class*=col-],table th[class*=col-]{position:static;display:table-cell;float:none}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{min-height:.01%;overflow-x:auto}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:700}input[type=search]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type=radio],input[type=checkbox]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type=file]{display:block}input[type=range]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type=file]:focus,input[type=radio]:focus,input[type=checkbox]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075);-webkit-transition:border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{background-color:transparent;border:0}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type=search]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type=date].form-control,input[type=time].form-control,input[type=datetime-local].form-control,input[type=month].form-control{line-height:34px}input[type=date].input-sm,input[type=time].input-sm,input[type=datetime-local].input-sm,input[type=month].input-sm,.input-group-sm input[type=date],.input-group-sm input[type=time],.input-group-sm input[type=datetime-local],.input-group-sm input[type=month]{line-height:30px}input[type=date].input-lg,input[type=time].input-lg,input[type=datetime-local].input-lg,input[type=month].input-lg,.input-group-lg input[type=date],.input-group-lg input[type=time],.input-group-lg input[type=datetime-local],.input-group-lg input[type=month]{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.radio input[type=radio],.radio-inline input[type=radio],.checkbox input[type=checkbox],.checkbox-inline input[type=checkbox]{position:absolute;margin-top:4px \9;margin-left:-20px}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;font-weight:400;vertical-align:middle;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type=radio][disabled],input[type=checkbox][disabled],input[type=radio].disabled,input[type=checkbox].disabled,fieldset[disabled] input[type=radio],fieldset[disabled] input[type=checkbox]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{min-height:34px;padding-top:7px;padding-bottom:7px;margin-bottom:0}.form-control-static.input-lg,.form-control-static.input-sm{padding-right:0;padding-left:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;background-color:#dff0d8;border-color:#3c763d}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;background-color:#fcf8e3;border-color:#8a6d3b}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;background-color:#f2dede;border-color:#a94442}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type=radio],.form-inline .checkbox input[type=checkbox]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{padding-top:7px;margin-top:0;margin-bottom:0}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.form-horizontal .control-label{padding-top:7px;margin-bottom:0;text-align:right}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;padding:6px 12px;margin-bottom:0;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-image:none;border:1px solid transparent;border-radius:4px}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{background-image:none;outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none;opacity:.65}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#fff;background-color:#398439;border-color:#255625}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{font-weight:400;color:#337ab7;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type=submit].btn-block,input[type=reset].btn-block,input[type=button].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-property:height,visibility;-o-transition-property:height,visibility;transition-property:height,visibility}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;font-size:14px;text-align:left;list-style:none;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,.175);box-shadow:0 6px 12px rgba(0,0,0,.175)}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{color:#262626;text-decoration:none;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;background-color:#337ab7;outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;cursor:not-allowed;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{right:0;left:auto}.dropdown-menu-left{right:auto;left:0}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{content:"";border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{right:0;left:auto}.navbar-right .dropdown-menu-left{right:auto;left:0}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-bottom-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-right:8px;padding-left:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-right:12px;padding-left:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-left-radius:0;border-top-right-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-left-radius:0;border-top-right-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{display:table-cell;float:none;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle=buttons]>.btn input[type=radio],[data-toggle=buttons]>.btn-group>.btn input[type=radio],[data-toggle=buttons]>.btn input[type=checkbox],[data-toggle=buttons]>.btn-group>.btn input[type=checkbox]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*=col-]{float:none;padding-right:0;padding-left:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:400;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type=radio],.input-group-addon input[type=checkbox]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-top-right-radius:0;border-bottom-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{padding-left:0;margin-bottom:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;cursor:not-allowed;background-color:transparent}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;cursor:default;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{margin-bottom:5px;text-align:center}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{padding-right:15px;padding-left:15px;overflow-x:visible;-webkit-overflow-scrolling:touch;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1)}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-right:0;padding-left:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;height:50px;padding:15px;font-size:18px;line-height:20px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;padding:9px 10px;margin-top:8px;margin-right:15px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{padding:10px 15px;margin-top:8px;margin-right:-15px;margin-bottom:8px;margin-left:-15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 0 rgba(255,255,255,.1),0 1px 0 rgba(255,255,255,.1)}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type=radio],.navbar-form .checkbox input[type=checkbox]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;padding-top:0;padding-bottom:0;margin-right:0;margin-left:0;border:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-left-radius:0;border-top-right-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-left-radius:4px;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-right:15px;margin-left:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{color:#555;background-color:#e7e7e7}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{color:#fff;background-color:#080808}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{padding:0 5px;color:#ccc;content:"/\00a0"}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;margin-left:-1px;line-height:1.42857143;color:#337ab7;text-decoration:none;background-color:#fff;border:1px solid #ddd}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#fff;cursor:default;background-color:#337ab7;border-color:#337ab7}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;cursor:not-allowed;background-color:#fff;border-color:#ddd}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pager{padding-left:0;margin:20px 0;text-align:center;list-style:none}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;cursor:not-allowed;background-color:#fff}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:middle;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{padding-right:15px;padding-left:15px;border-radius:6px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-right:60px;padding-left:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-right:auto;margin-left:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:700}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{height:20px;margin-bottom:20px;overflow:hidden;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,.1);box-shadow:inset 0 1px 2px rgba(0,0,0,.1)}.progress-bar{float:left;width:0;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{overflow:hidden;zoom:1}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{padding-left:0;margin-bottom:20px}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{color:#555;text-decoration:none;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{color:#777;cursor:not-allowed;background-color:#eee}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,.05);box-shadow:0 1px 1px rgba(0,0,0,.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-left-radius:3px;border-top-right-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-left-radius:3px;border-top-right-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-left-radius:0;border-top-right-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-right:15px;padding-left:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{margin-bottom:0;border:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.05);box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;filter:alpha(opacity=20);opacity:.2}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;filter:alpha(opacity=50);opacity:.5}button.close{-webkit-appearance:none;padding:0;cursor:pointer;background:0 0;border:0}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transition:-webkit-transform .3s ease-out;-o-transition:-o-transform .3s ease-out;transition:transform .3s ease-out;-webkit-transform:translate(0,-25%);-ms-transform:translate(0,-25%);-o-transform:translate(0,-25%);transform:translate(0,-25%)}.modal.in .modal-dialog{-webkit-transform:translate(0,0);-ms-transform:translate(0,0);-o-transform:translate(0,0);transform:translate(0,0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #999;border:1px solid rgba(0,0,0,.2);border-radius:6px;outline:0;-webkit-box-shadow:0 3px 9px rgba(0,0,0,.5);box-shadow:0 3px 9px rgba(0,0,0,.5)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{filter:alpha(opacity=0);opacity:0}.modal-backdrop.in{filter:alpha(opacity=50);opacity:.5}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-bottom:0;margin-left:5px}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,.5);box-shadow:0 5px 15px rgba(0,0,0,.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;filter:alpha(opacity=0);opacity:0;line-break:auto}.tooltip.in{filter:alpha(opacity=90);opacity:.9}.tooltip.top{padding:5px 0;margin-top:-3px}.tooltip.right{padding:0 5px;margin-left:3px}.tooltip.bottom{padding:5px 0;margin-top:3px}.tooltip.left{padding:0 5px;margin-left:-3px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{right:5px;bottom:0;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;font-style:normal;font-weight:400;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;word-wrap:normal;white-space:normal;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);line-break:auto}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{padding:8px 14px;margin:0;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{content:"";border-width:10px}.popover.top>.arrow{bottom:-11px;left:50%;margin-left:-11px;border-top-color:#999;border-top-color:rgba(0,0,0,.25);border-bottom-width:0}.popover.top>.arrow:after{bottom:1px;margin-left:-10px;content:" ";border-top-color:#fff;border-bottom-width:0}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-right-color:#999;border-right-color:rgba(0,0,0,.25);border-left-width:0}.popover.right>.arrow:after{bottom:-10px;left:1px;content:" ";border-right-color:#fff;border-left-width:0}.popover.bottom>.arrow{top:-11px;left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25)}.popover.bottom>.arrow:after{top:1px;margin-left:-10px;content:" ";border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left>.arrow:after{right:1px;bottom:-10px;content:" ";border-right-width:0;border-left-color:#fff}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-inner>.item{position:relative;display:none;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform .6s ease-in-out;-o-transition:-o-transform .6s ease-in-out;transition:transform .6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{left:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{left:0;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;bottom:0;left:0;width:15%;font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6);background-color:rgba(0,0,0,0);filter:alpha(opacity=50);opacity:.5}.carousel-control.left{background-image:-webkit-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.5)),to(rgba(0,0,0,.0001)));background-image:linear-gradient(to right,rgba(0,0,0,.5) 0%,rgba(0,0,0,.0001) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000',endColorstr='#00000000',GradientType=1);background-repeat:repeat-x}.carousel-control.right{right:0;left:auto;background-image:-webkit-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:-o-linear-gradient(left,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);background-image:-webkit-gradient(linear,left top,right top,from(rgba(0,0,0,.0001)),to(rgba(0,0,0,.5)));background-image:linear-gradient(to right,rgba(0,0,0,.0001) 0%,rgba(0,0,0,.5) 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000',endColorstr='#80000000',GradientType=1);background-repeat:repeat-x}.carousel-control:hover,.carousel-control:focus{color:#fff;text-decoration:none;filter:alpha(opacity=90);outline:0;opacity:.9}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;z-index:5;display:inline-block;margin-top:-10px}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;font-family:serif;line-height:1}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;padding-left:0;margin-left:-30%;text-align:center;list-style:none}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0);border:1px solid #fff;border-radius:10px}.carousel-indicators .active{width:12px;height:12px;margin:0;background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{right:20%;left:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{display:table;content:" "}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-right:auto;margin-left:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}}
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+.btn-default,.btn-primary,.btn-success,.btn-info,.btn-warning,.btn-danger{text-shadow:0 -1px 0 rgba(0,0,0,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 1px rgba(0,0,0,.075)}.btn-default:active,.btn-primary:active,.btn-success:active,.btn-info:active,.btn-warning:active,.btn-danger:active,.btn-default.active,.btn-primary.active,.btn-success.active,.btn-info.active,.btn-warning.active,.btn-danger.active{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}.btn-default.disabled,.btn-primary.disabled,.btn-success.disabled,.btn-info.disabled,.btn-warning.disabled,.btn-danger.disabled,.btn-default[disabled],.btn-primary[disabled],.btn-success[disabled],.btn-info[disabled],.btn-warning[disabled],.btn-danger[disabled],fieldset[disabled] .btn-default,fieldset[disabled] .btn-primary,fieldset[disabled] .btn-success,fieldset[disabled] .btn-info,fieldset[disabled] .btn-warning,fieldset[disabled] .btn-danger{-webkit-box-shadow:none;box-shadow:none}.btn-default .badge,.btn-primary .badge,.btn-success .badge,.btn-info .badge,.btn-warning .badge,.btn-danger .badge{text-shadow:none}.btn:active,.btn.active{background-image:none}.btn-default{text-shadow:0 1px 0 #fff;background-image:-webkit-linear-gradient(top,#fff 0%,#e0e0e0 100%);background-image:-o-linear-gradient(top,#fff 0%,#e0e0e0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e0e0e0));background-image:linear-gradient(to bottom,#fff 0%,#e0e0e0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffe0e0e0',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#dbdbdb;border-color:#ccc}.btn-default:hover,.btn-default:focus{background-color:#e0e0e0;background-position:0 -15px}.btn-default:active,.btn-default.active{background-color:#e0e0e0;border-color:#dbdbdb}.btn-default.disabled,.btn-default[disabled],fieldset[disabled] .btn-default,.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus,.btn-default.disabled:active,.btn-default[disabled]:active,fieldset[disabled] .btn-default:active,.btn-default.disabled.active,.btn-default[disabled].active,fieldset[disabled] .btn-default.active{background-color:#e0e0e0;background-image:none}.btn-primary{background-image:-webkit-linear-gradient(top,#337ab7 0%,#265a88 100%);background-image:-o-linear-gradient(top,#337ab7 0%,#265a88 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#265a88));background-image:linear-gradient(to bottom,#337ab7 0%,#265a88 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7',endColorstr='#ff265a88',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#245580}.btn-primary:hover,.btn-primary:focus{background-color:#265a88;background-position:0 -15px}.btn-primary:active,.btn-primary.active{background-color:#265a88;border-color:#245580}.btn-primary.disabled,.btn-primary[disabled],fieldset[disabled] .btn-primary,.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus,.btn-primary.disabled:active,.btn-primary[disabled]:active,fieldset[disabled] .btn-primary:active,.btn-primary.disabled.active,.btn-primary[disabled].active,fieldset[disabled] .btn-primary.active{background-color:#265a88;background-image:none}.btn-success{background-image:-webkit-linear-gradient(top,#5cb85c 0%,#419641 100%);background-image:-o-linear-gradient(top,#5cb85c 0%,#419641 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#419641));background-image:linear-gradient(to bottom,#5cb85c 0%,#419641 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff419641',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#3e8f3e}.btn-success:hover,.btn-success:focus{background-color:#419641;background-position:0 -15px}.btn-success:active,.btn-success.active{background-color:#419641;border-color:#3e8f3e}.btn-success.disabled,.btn-success[disabled],fieldset[disabled] .btn-success,.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus,.btn-success.disabled:active,.btn-success[disabled]:active,fieldset[disabled] .btn-success:active,.btn-success.disabled.active,.btn-success[disabled].active,fieldset[disabled] .btn-success.active{background-color:#419641;background-image:none}.btn-info{background-image:-webkit-linear-gradient(top,#5bc0de 0%,#2aabd2 100%);background-image:-o-linear-gradient(top,#5bc0de 0%,#2aabd2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#2aabd2));background-image:linear-gradient(to bottom,#5bc0de 0%,#2aabd2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff2aabd2',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#28a4c9}.btn-info:hover,.btn-info:focus{background-color:#2aabd2;background-position:0 -15px}.btn-info:active,.btn-info.active{background-color:#2aabd2;border-color:#28a4c9}.btn-info.disabled,.btn-info[disabled],fieldset[disabled] .btn-info,.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus,.btn-info.disabled:active,.btn-info[disabled]:active,fieldset[disabled] .btn-info:active,.btn-info.disabled.active,.btn-info[disabled].active,fieldset[disabled] .btn-info.active{background-color:#2aabd2;background-image:none}.btn-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0%,#eb9316 100%);background-image:-o-linear-gradient(top,#f0ad4e 0%,#eb9316 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#eb9316));background-image:linear-gradient(to bottom,#f0ad4e 0%,#eb9316 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffeb9316',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#e38d13}.btn-warning:hover,.btn-warning:focus{background-color:#eb9316;background-position:0 -15px}.btn-warning:active,.btn-warning.active{background-color:#eb9316;border-color:#e38d13}.btn-warning.disabled,.btn-warning[disabled],fieldset[disabled] .btn-warning,.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus,.btn-warning.disabled:active,.btn-warning[disabled]:active,fieldset[disabled] .btn-warning:active,.btn-warning.disabled.active,.btn-warning[disabled].active,fieldset[disabled] .btn-warning.active{background-color:#eb9316;background-image:none}.btn-danger{background-image:-webkit-linear-gradient(top,#d9534f 0%,#c12e2a 100%);background-image:-o-linear-gradient(top,#d9534f 0%,#c12e2a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c12e2a));background-image:linear-gradient(to bottom,#d9534f 0%,#c12e2a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc12e2a',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-color:#b92c28}.btn-danger:hover,.btn-danger:focus{background-color:#c12e2a;background-position:0 -15px}.btn-danger:active,.btn-danger.active{background-color:#c12e2a;border-color:#b92c28}.btn-danger.disabled,.btn-danger[disabled],fieldset[disabled] .btn-danger,.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus,.btn-danger.disabled:active,.btn-danger[disabled]:active,fieldset[disabled] .btn-danger:active,.btn-danger.disabled.active,.btn-danger[disabled].active,fieldset[disabled] .btn-danger.active{background-color:#c12e2a;background-image:none}.thumbnail,.img-thumbnail{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{background-color:#e8e8e8;background-image:-webkit-linear-gradient(top,#f5f5f5 0%,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0%,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0%,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0);background-repeat:repeat-x}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{background-color:#2e6da4;background-image:-webkit-linear-gradient(top,#337ab7 0%,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0%,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0%,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7',endColorstr='#ff2e6da4',GradientType=0);background-repeat:repeat-x}.navbar-default{background-image:-webkit-linear-gradient(top,#fff 0%,#f8f8f8 100%);background-image:-o-linear-gradient(top,#fff 0%,#f8f8f8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#f8f8f8));background-image:linear-gradient(to bottom,#fff 0%,#f8f8f8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#fff8f8f8',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075);box-shadow:inset 0 1px 0 rgba(255,255,255,.15),0 1px 5px rgba(0,0,0,.075)}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#dbdbdb 0%,#e2e2e2 100%);background-image:-o-linear-gradient(top,#dbdbdb 0%,#e2e2e2 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dbdbdb),to(#e2e2e2));background-image:linear-gradient(to bottom,#dbdbdb 0%,#e2e2e2 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb',endColorstr='#ffe2e2e2',GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.075);box-shadow:inset 0 3px 9px rgba(0,0,0,.075)}.navbar-brand,.navbar-nav>li>a{text-shadow:0 1px 0 rgba(255,255,255,.25)}.navbar-inverse{background-image:-webkit-linear-gradient(top,#3c3c3c 0%,#222 100%);background-image:-o-linear-gradient(top,#3c3c3c 0%,#222 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#3c3c3c),to(#222));background-image:linear-gradient(to bottom,#3c3c3c 0%,#222 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c',endColorstr='#ff222222',GradientType=0);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);background-repeat:repeat-x;border-radius:4px}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.active>a{background-image:-webkit-linear-gradient(top,#080808 0%,#0f0f0f 100%);background-image:-o-linear-gradient(top,#080808 0%,#0f0f0f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#080808),to(#0f0f0f));background-image:linear-gradient(to bottom,#080808 0%,#0f0f0f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808',endColorstr='#ff0f0f0f',GradientType=0);background-repeat:repeat-x;-webkit-box-shadow:inset 0 3px 9px rgba(0,0,0,.25);box-shadow:inset 0 3px 9px rgba(0,0,0,.25)}.navbar-inverse .navbar-brand,.navbar-inverse .navbar-nav>li>a{text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-static-top,.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}@media (max-width:767px){.navbar .navbar-nav .open .dropdown-menu>.active>a,.navbar .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-image:-webkit-linear-gradient(top,#337ab7 0%,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0%,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0%,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7',endColorstr='#ff2e6da4',GradientType=0);background-repeat:repeat-x}}.alert{text-shadow:0 1px 0 rgba(255,255,255,.2);-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05);box-shadow:inset 0 1px 0 rgba(255,255,255,.25),0 1px 2px rgba(0,0,0,.05)}.alert-success{background-image:-webkit-linear-gradient(top,#dff0d8 0%,#c8e5bc 100%);background-image:-o-linear-gradient(top,#dff0d8 0%,#c8e5bc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#c8e5bc));background-image:linear-gradient(to bottom,#dff0d8 0%,#c8e5bc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffc8e5bc',GradientType=0);background-repeat:repeat-x;border-color:#b2dba1}.alert-info{background-image:-webkit-linear-gradient(top,#d9edf7 0%,#b9def0 100%);background-image:-o-linear-gradient(top,#d9edf7 0%,#b9def0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#b9def0));background-image:linear-gradient(to bottom,#d9edf7 0%,#b9def0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffb9def0',GradientType=0);background-repeat:repeat-x;border-color:#9acfea}.alert-warning{background-image:-webkit-linear-gradient(top,#fcf8e3 0%,#f8efc0 100%);background-image:-o-linear-gradient(top,#fcf8e3 0%,#f8efc0 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#f8efc0));background-image:linear-gradient(to bottom,#fcf8e3 0%,#f8efc0 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fff8efc0',GradientType=0);background-repeat:repeat-x;border-color:#f5e79e}.alert-danger{background-image:-webkit-linear-gradient(top,#f2dede 0%,#e7c3c3 100%);background-image:-o-linear-gradient(top,#f2dede 0%,#e7c3c3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#e7c3c3));background-image:linear-gradient(to bottom,#f2dede 0%,#e7c3c3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffe7c3c3',GradientType=0);background-repeat:repeat-x;border-color:#dca7a7}.progress{background-image:-webkit-linear-gradient(top,#ebebeb 0%,#f5f5f5 100%);background-image:-o-linear-gradient(top,#ebebeb 0%,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#f5f5f5));background-image:linear-gradient(to bottom,#ebebeb 0%,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb',endColorstr='#fff5f5f5',GradientType=0);background-repeat:repeat-x}.progress-bar{background-image:-webkit-linear-gradient(top,#337ab7 0%,#286090 100%);background-image:-o-linear-gradient(top,#337ab7 0%,#286090 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#286090));background-image:linear-gradient(to bottom,#337ab7 0%,#286090 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7',endColorstr='#ff286090',GradientType=0);background-repeat:repeat-x}.progress-bar-success{background-image:-webkit-linear-gradient(top,#5cb85c 0%,#449d44 100%);background-image:-o-linear-gradient(top,#5cb85c 0%,#449d44 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5cb85c),to(#449d44));background-image:linear-gradient(to bottom,#5cb85c 0%,#449d44 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c',endColorstr='#ff449d44',GradientType=0);background-repeat:repeat-x}.progress-bar-info{background-image:-webkit-linear-gradient(top,#5bc0de 0%,#31b0d5 100%);background-image:-o-linear-gradient(top,#5bc0de 0%,#31b0d5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#5bc0de),to(#31b0d5));background-image:linear-gradient(to bottom,#5bc0de 0%,#31b0d5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de',endColorstr='#ff31b0d5',GradientType=0);background-repeat:repeat-x}.progress-bar-warning{background-image:-webkit-linear-gradient(top,#f0ad4e 0%,#ec971f 100%);background-image:-o-linear-gradient(top,#f0ad4e 0%,#ec971f 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f0ad4e),to(#ec971f));background-image:linear-gradient(to bottom,#f0ad4e 0%,#ec971f 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e',endColorstr='#ffec971f',GradientType=0);background-repeat:repeat-x}.progress-bar-danger{background-image:-webkit-linear-gradient(top,#d9534f 0%,#c9302c 100%);background-image:-o-linear-gradient(top,#d9534f 0%,#c9302c 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9534f),to(#c9302c));background-image:linear-gradient(to bottom,#d9534f 0%,#c9302c 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f',endColorstr='#ffc9302c',GradientType=0);background-repeat:repeat-x}.progress-bar-striped{background-image:-webkit-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:-o-linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent)}.list-group{border-radius:4px;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.075);box-shadow:0 1px 2px rgba(0,0,0,.075)}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{text-shadow:0 -1px 0 #286090;background-image:-webkit-linear-gradient(top,#337ab7 0%,#2b669a 100%);background-image:-o-linear-gradient(top,#337ab7 0%,#2b669a 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2b669a));background-image:linear-gradient(to bottom,#337ab7 0%,#2b669a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7',endColorstr='#ff2b669a',GradientType=0);background-repeat:repeat-x;border-color:#2b669a}.list-group-item.active .badge,.list-group-item.active:hover .badge,.list-group-item.active:focus .badge{text-shadow:none}.panel{-webkit-box-shadow:0 1px 2px rgba(0,0,0,.05);box-shadow:0 1px 2px rgba(0,0,0,.05)}.panel-default>.panel-heading{background-image:-webkit-linear-gradient(top,#f5f5f5 0%,#e8e8e8 100%);background-image:-o-linear-gradient(top,#f5f5f5 0%,#e8e8e8 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#e8e8e8));background-image:linear-gradient(to bottom,#f5f5f5 0%,#e8e8e8 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5',endColorstr='#ffe8e8e8',GradientType=0);background-repeat:repeat-x}.panel-primary>.panel-heading{background-image:-webkit-linear-gradient(top,#337ab7 0%,#2e6da4 100%);background-image:-o-linear-gradient(top,#337ab7 0%,#2e6da4 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#337ab7),to(#2e6da4));background-image:linear-gradient(to bottom,#337ab7 0%,#2e6da4 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7',endColorstr='#ff2e6da4',GradientType=0);background-repeat:repeat-x}.panel-success>.panel-heading{background-image:-webkit-linear-gradient(top,#dff0d8 0%,#d0e9c6 100%);background-image:-o-linear-gradient(top,#dff0d8 0%,#d0e9c6 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#dff0d8),to(#d0e9c6));background-image:linear-gradient(to bottom,#dff0d8 0%,#d0e9c6 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8',endColorstr='#ffd0e9c6',GradientType=0);background-repeat:repeat-x}.panel-info>.panel-heading{background-image:-webkit-linear-gradient(top,#d9edf7 0%,#c4e3f3 100%);background-image:-o-linear-gradient(top,#d9edf7 0%,#c4e3f3 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#d9edf7),to(#c4e3f3));background-image:linear-gradient(to bottom,#d9edf7 0%,#c4e3f3 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7',endColorstr='#ffc4e3f3',GradientType=0);background-repeat:repeat-x}.panel-warning>.panel-heading{background-image:-webkit-linear-gradient(top,#fcf8e3 0%,#faf2cc 100%);background-image:-o-linear-gradient(top,#fcf8e3 0%,#faf2cc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#fcf8e3),to(#faf2cc));background-image:linear-gradient(to bottom,#fcf8e3 0%,#faf2cc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3',endColorstr='#fffaf2cc',GradientType=0);background-repeat:repeat-x}.panel-danger>.panel-heading{background-image:-webkit-linear-gradient(top,#f2dede 0%,#ebcccc 100%);background-image:-o-linear-gradient(top,#f2dede 0%,#ebcccc 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#f2dede),to(#ebcccc));background-image:linear-gradient(to bottom,#f2dede 0%,#ebcccc 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede',endColorstr='#ffebcccc',GradientType=0);background-repeat:repeat-x}.well{background-image:-webkit-linear-gradient(top,#e8e8e8 0%,#f5f5f5 100%);background-image:-o-linear-gradient(top,#e8e8e8 0%,#f5f5f5 100%);background-image:-webkit-gradient(linear,left top,left bottom,from(#e8e8e8),to(#f5f5f5));background-image:linear-gradient(to bottom,#e8e8e8 0%,#f5f5f5 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8',endColorstr='#fff5f5f5',GradientType=0);background-repeat:repeat-x;border-color:#dcdcdc;-webkit-box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1);box-shadow:inset 0 1px 3px rgba(0,0,0,.05),0 1px 0 rgba(255,255,255,.1)} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/border.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/border.css
new file mode 100644
index 0000000..4edbe67
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/border.css
@@ -0,0 +1 @@
+a{border:none;border-top:none;border-right:none;border-bottom:none;border-left:none} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/bulma.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/bulma.css
new file mode 100644
index 0000000..7ec8d9b
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/bulma.css
@@ -0,0 +1,4 @@
+/*! bulma.io v0.4.0 | MIT License | github.com/jgthms/bulma */
+@-webkit-keyframes spinAround{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes spinAround{from{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}
+/*! minireset.css v0.0.2 | MIT License | github.com/jgthms/minireset.css */
+html,body,p,ol,ul,li,dl,dt,dd,blockquote,figure,fieldset,legend,textarea,pre,iframe,hr,h1,h2,h3,h4,h5,h6{margin:0;padding:0}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:400}ul{list-style:none}button,input,select,textarea{margin:0}html{box-sizing:border-box}*{box-sizing:inherit}*:before,*:after{box-sizing:inherit}img,embed,object,audio,video{height:auto;max-width:100%}iframe{border:0}table{border-collapse:collapse;border-spacing:0}td,th{padding:0;text-align:left}html{background-color:#fff;font-size:16px;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;min-width:300px;overflow-x:hidden;overflow-y:scroll;text-rendering:optimizeLegibility}article,aside,figure,footer,header,hgroup,section{display:block}body,button,input,select,textarea{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue","Helvetica","Arial",sans-serif}code,pre{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:auto;font-family:monospace}body{color:#4a4a4a;font-size:1rem;font-weight:400;line-height:1.5}a{color:#00d1b2;cursor:pointer;text-decoration:none;-webkit-transition:none 86ms ease-out;transition:none 86ms ease-out}a:hover{color:#363636}code{background-color:#f5f5f5;color:#ff3860;font-size:.8em;font-weight:400;padding:.25em .5em .25em}hr{background-color:#dbdbdb;border:none;display:block;height:1px;margin:1.5rem 0}img{max-width:100%}input[type=checkbox],input[type=radio]{vertical-align:baseline}small{font-size:.8em}span{font-style:inherit;font-weight:inherit}strong{color:#363636;font-weight:700}pre{background-color:#f5f5f5;color:#4a4a4a;font-size:.8em;white-space:pre;word-wrap:normal}pre code{background:0 0;color:inherit;display:block;font-size:1em;overflow-x:auto;padding:1.25rem 1.5rem}table{width:100%}table td,table th{text-align:left;vertical-align:top}table th{color:#363636}.is-block{display:block}@media screen and (max-width:768px){.is-block-mobile{display:block !important}}@media screen and (min-width:769px){.is-block-tablet{display:block !important}}@media screen and (min-width:769px) and (max-width:999px){.is-block-tablet-only{display:block !important}}@media screen and (max-width:999px){.is-block-touch{display:block !important}}@media screen and (min-width:1000px){.is-block-desktop{display:block !important}}@media screen and (min-width:1000px) and (max-width:1191px){.is-block-desktop-only{display:block !important}}@media screen and (min-width:1192px){.is-block-widescreen{display:block !important}}.is-flex{display:-webkit-box;display:-ms-flexbox;display:flex}@media screen and (max-width:768px){.is-flex-mobile{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (min-width:769px){.is-flex-tablet{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (min-width:769px) and (max-width:999px){.is-flex-tablet-only{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (max-width:999px){.is-flex-touch{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (min-width:1000px){.is-flex-desktop{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (min-width:1000px) and (max-width:1191px){.is-flex-desktop-only{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}@media screen and (min-width:1192px){.is-flex-widescreen{display:-webkit-box !important;display:-ms-flexbox !important;display:flex !important}}.is-inline{display:inline}@media screen and (max-width:768px){.is-inline-mobile{display:inline !important}}@media screen and (min-width:769px){.is-inline-tablet{display:inline !important}}@media screen and (min-width:769px) and (max-width:999px){.is-inline-tablet-only{display:inline !important}}@media screen and (max-width:999px){.is-inline-touch{display:inline !important}}@media screen and (min-width:1000px){.is-inline-desktop{display:inline !important}}@media screen and (min-width:1000px) and (max-width:1191px){.is-inline-desktop-only{display:inline !important}}@media screen and (min-width:1192px){.is-inline-widescreen{display:inline !important}}.is-inline-block{display:inline-block}@media screen and (max-width:768px){.is-inline-block-mobile{display:inline-block !important}}@media screen and (min-width:769px){.is-inline-block-tablet{display:inline-block !important}}@media screen and (min-width:769px) and (max-width:999px){.is-inline-block-tablet-only{display:inline-block !important}}@media screen and (max-width:999px){.is-inline-block-touch{display:inline-block !important}}@media screen and (min-width:1000px){.is-inline-block-desktop{display:inline-block !important}}@media screen and (min-width:1000px) and (max-width:1191px){.is-inline-block-desktop-only{display:inline-block !important}}@media screen and (min-width:1192px){.is-inline-block-widescreen{display:inline-block !important}}.is-inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}@media screen and (max-width:768px){.is-inline-flex-mobile{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (min-width:769px){.is-inline-flex-tablet{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (min-width:769px) and (max-width:999px){.is-inline-flex-tablet-only{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (max-width:999px){.is-inline-flex-touch{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (min-width:1000px){.is-inline-flex-desktop{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (min-width:1000px) and (max-width:1191px){.is-inline-flex-desktop-only{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}@media screen and (min-width:1192px){.is-inline-flex-widescreen{display:-webkit-inline-box !important;display:-ms-inline-flexbox !important;display:inline-flex !important}}.is-clearfix:after{clear:both;content:" ";display:table}.is-pulled-left{float:left}.is-pulled-right{float:right}.is-clipped{overflow:hidden !important}.is-overlay{bottom:0;left:0;position:absolute;right:0;top:0}.has-text-centered{text-align:center}.has-text-left{text-align:left}.has-text-right{text-align:right}.is-hidden{display:none !important}@media screen and (max-width:768px){.is-hidden-mobile{display:none !important}}@media screen and (min-width:769px){.is-hidden-tablet{display:none !important}}@media screen and (min-width:769px) and (max-width:999px){.is-hidden-tablet-only{display:none !important}}@media screen and (max-width:999px){.is-hidden-touch{display:none !important}}@media screen and (min-width:1000px){.is-hidden-desktop{display:none !important}}@media screen and (min-width:1000px) and (max-width:1191px){.is-hidden-desktop-only{display:none !important}}@media screen and (min-width:1192px){.is-hidden-widescreen{display:none !important}}.is-disabled{pointer-events:none}.is-marginless{margin:0 !important}.is-paddingless{padding:0 !important}.is-unselectable{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.box{background-color:#fff;border-radius:5px;box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);display:block;padding:1.25rem}.box:not(:last-child){margin-bottom:1.5rem}a.box:hover,a.box:focus{box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px #00d1b2}a.box:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2),0 0 0 1px #00d1b2}.button{-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none;border-radius:3px;box-shadow:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:1rem;height:2.25em;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;line-height:1.5;padding-bottom:.375em;padding-left:.625em;padding-right:.625em;padding-top:.375em;position:relative;vertical-align:top;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#fff;border:1px solid #dbdbdb;color:#363636;cursor:pointer;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:.75em;padding-right:.75em;text-align:center;white-space:nowrap}.button:focus,.button.is-focused,.button:active,.button.is-active{outline:none}.button[disabled],.button.is-disabled{pointer-events:none}.button strong{color:inherit}.button .icon,.button .icon.is-small,.button .icon.is-medium,.button .icon.is-large{height:1.5em;width:1.5em}.button .icon:first-child:not(:last-child){margin-left:calc(-.375em - 1px);margin-right:.1875em}.button .icon:last-child:not(:first-child){margin-left:.1875em;margin-right:calc(-.375em - 1px)}.button .icon:first-child:last-child{margin-left:calc(-.375em - 1px);margin-right:calc(-.375em - 1px)}.button:hover,.button.is-hovered{border-color:#b5b5b5;color:#363636}.button:focus,.button.is-focused{border-color:#00d1b2;box-shadow:0 0 .5em rgba(0,209,178,.25);color:#363636}.button:active,.button.is-active{border-color:#4a4a4a;box-shadow:inset 0 1px 2px rgba(10,10,10,.2);color:#363636}.button.is-link{background-color:transparent;border-color:transparent;color:#4a4a4a;text-decoration:underline}.button.is-link:hover,.button.is-link.is-hovered,.button.is-link:focus,.button.is-link.is-focused,.button.is-link:active,.button.is-link.is-active{background-color:#f5f5f5;color:#363636}.button.is-white{background-color:#fff;border-color:transparent;color:#0a0a0a}.button.is-white:hover,.button.is-white.is-hovered{background-color:#f9f9f9;border-color:transparent;color:#0a0a0a}.button.is-white:focus,.button.is-white.is-focused{border-color:transparent;box-shadow:0 0 .5em rgba(255,255,255,.25);color:#0a0a0a}.button.is-white:active,.button.is-white.is-active{background-color:#f2f2f2;border-color:transparent;box-shadow:inset 0 1px 2px rgba(10,10,10,.2);color:#0a0a0a}.button.is-white.is-inverted{background-color:#0a0a0a;color:#fff}.button.is-white.is-inverted:hover{background-color:#000}.button.is-white.is-loading:after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-white.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-white.is-outlined:hover,.button.is-white.is-outlined:focus{background-color:#fff;border-color:#fff;color:#0a0a0a}.button.is-white.is-outlined.is-loading:after{border-color:transparent transparent #fff #fff !important}.button.is-white.is-inverted.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-white.is-inverted.is-outlined:hover,.button.is-white.is-inverted.is-outlined:focus{background-color:#0a0a0a;color:#fff}.button.is-black{background-color:#0a0a0a;border-color:transparent;color:#fff}.button.is-black:hover,.button.is-black.is-hovered{background-color:#040404;border-color:transparent;color:#fff}.button.is-black:focus,.button.is-black.is-focused{border-color:transparent;box-shadow:0 0 .5em rgba(10,10,10,.25);color:#fff}.button.is-black:active,.button.is-black.is-active{background-color:#000;border-color:transparent;box-shadow:inset 0 1px 2px rgba(10,10,10,.2);color:#fff}.button.is-black.is-inverted{background-color:#fff;color:#0a0a0a}.button.is-black.is-inverted:hover{background-color:#f2f2f2}.button.is-black.is-loading:after{border-color:transparent transparent #fff #fff !important}.button.is-black.is-outlined{background-color:transparent;border-color:#0a0a0a;color:#0a0a0a}.button.is-black.is-outlined:hover,.button.is-black.is-outlined:focus{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.button.is-black.is-outlined.is-loading:after{border-color:transparent transparent #0a0a0a #0a0a0a !important}.button.is-black.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-black.is-inverted.is-outlined:hover,.button.is-black.is-inverted.is-outlined:focus{background-color:#fff;color:#0a0a0a}.button.is-light{background-color:#f5f5f5;border-color:transparent;color:#363636}.button.is-light:hover,.button.is-light.is-hovered{background-color:#eee;border-color:transparent;color:#363636}.button.is-light:focus,.button.is-light.is-focused{border-color:transparent;box-shadow:0 0 .5em rgba(245,245,245,.25);color:#363636}.button.is-light:active,.button.is-light.is-active{background-color:#e8e8e8;border-color:transparent;box-shadow:inset 0 1px 2px rgba(10,10,10,.2);color:#363636}.button.is-light.is-inverted{background-color:#363636;color:#f5f5f5}.button.is-light.is-inverted:hover{background-color:#292929}.button.is-light.is-loading:after{border-color:transparent transparent #363636 #363636 !important}.button.is-light.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-light.is-outlined:hover,.button.is-light.is-outlined:focus{background-color:#f5f5f5;border-color:#f5f5f5;color:#363636}.button.is-light.is-outlined.is-loading:after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-light.is-inverted.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-light.is-inverted.is-outlined:hover,.button.is-light.is-inverted.is-outlined:focus{background-color:#363636;color:#f5f5f5}.button.is-dark{background-color:#363636;border-color:transparent;color:#f5f5f5}.button.is-dark:hover,.button.is-dark.is-hovered{background-color:#2f2f2f;border-color:transparent;color:#f5f5f5}.button.is-dark:focus,.button.is-dark.is-focused{border-color:transparent;box-shadow:0 0 .5em rgba(54,54,54,.25);color:#f5f5f5}.button.is-dark:active,.button.is-dark.is-active{background-color:#292929;border-color:transparent;box-shadow:inset 0 1px 2px rgba(10,10,10,.2);color:#f5f5f5}.button.is-dark.is-inverted{background-color:#f5f5f5;color:#363636}.button.is-dark.is-inverted:hover{background-color:#e8e8e8}.button.is-dark.is-loading:after{border-color:transparent transparent #f5f5f5 #f5f5f5 !important}.button.is-dark.is-outlined{background-color:transparent;border-color:#363636;color:#363636}.button.is-dark.is-outlined:hover,.button.is-dark.is-outlined:focus{background-color:#363636;border-color:#363636;color:#f5f5f5}.button.is-dark.is-outlined.is-loading:after{border-color:transparent transparent #363636 #363636 !important}.button.is-dark.is-inverted.is-outlined{background-color:transparent;border-color:#f5f5f5;color:#f5f5f5}.button.is-dark.is-inverted.is-outlined:hover,.button.is-dark.is-inverted.is-outlined:focus{background-color:#f5f5f5;color:#363636}.button.is-primary{background-color:#00d1b2;border-color:transparent;color:#fff}.button.is-primary:hover,.button.is-primary.is-hovered{background-color:#00c4a7;border-color:transparent;color:#fff}.button.is-primary:focus,.button.is-primary.is-focused{border-color:transparent;box-shadow:0 0 .5em rgba(0,209,178,.25);color:#fff}.button.is-primary:active,.button.is-primary.is-active{background-color:#00b89c;border-color:transparent;box-shadow:inset 0 1px 2px rgba(10,10,10,.2);color:#fff}.button.is-primary.is-inverted{background-color:#fff;color:#00d1b2}.button.is-primary.is-inverted:hover{background-color:#f2f2f2}.button.is-primary.is-loading:after{border-color:transparent transparent #fff #fff !important}.button.is-primary.is-outlined{background-color:transparent;border-color:#00d1b2;color:#00d1b2}.button.is-primary.is-outlined:hover,.button.is-primary.is-outlined:focus{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.button.is-primary.is-outlined.is-loading:after{border-color:transparent transparent #00d1b2 #00d1b2 !important}.button.is-primary.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-primary.is-inverted.is-outlined:hover,.button.is-primary.is-inverted.is-outlined:focus{background-color:#fff;color:#00d1b2}.button.is-info{background-color:#3273dc;border-color:transparent;color:#fff}.button.is-info:hover,.button.is-info.is-hovered{background-color:#276cda;border-color:transparent;color:#fff}.button.is-info:focus,.button.is-info.is-focused{border-color:transparent;box-shadow:0 0 .5em rgba(50,115,220,.25);color:#fff}.button.is-info:active,.button.is-info.is-active{background-color:#2366d1;border-color:transparent;box-shadow:inset 0 1px 2px rgba(10,10,10,.2);color:#fff}.button.is-info.is-inverted{background-color:#fff;color:#3273dc}.button.is-info.is-inverted:hover{background-color:#f2f2f2}.button.is-info.is-loading:after{border-color:transparent transparent #fff #fff !important}.button.is-info.is-outlined{background-color:transparent;border-color:#3273dc;color:#3273dc}.button.is-info.is-outlined:hover,.button.is-info.is-outlined:focus{background-color:#3273dc;border-color:#3273dc;color:#fff}.button.is-info.is-outlined.is-loading:after{border-color:transparent transparent #3273dc #3273dc !important}.button.is-info.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-info.is-inverted.is-outlined:hover,.button.is-info.is-inverted.is-outlined:focus{background-color:#fff;color:#3273dc}.button.is-success{background-color:#23d160;border-color:transparent;color:#fff}.button.is-success:hover,.button.is-success.is-hovered{background-color:#22c65b;border-color:transparent;color:#fff}.button.is-success:focus,.button.is-success.is-focused{border-color:transparent;box-shadow:0 0 .5em rgba(35,209,96,.25);color:#fff}.button.is-success:active,.button.is-success.is-active{background-color:#20bc56;border-color:transparent;box-shadow:inset 0 1px 2px rgba(10,10,10,.2);color:#fff}.button.is-success.is-inverted{background-color:#fff;color:#23d160}.button.is-success.is-inverted:hover{background-color:#f2f2f2}.button.is-success.is-loading:after{border-color:transparent transparent #fff #fff !important}.button.is-success.is-outlined{background-color:transparent;border-color:#23d160;color:#23d160}.button.is-success.is-outlined:hover,.button.is-success.is-outlined:focus{background-color:#23d160;border-color:#23d160;color:#fff}.button.is-success.is-outlined.is-loading:after{border-color:transparent transparent #23d160 #23d160 !important}.button.is-success.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-success.is-inverted.is-outlined:hover,.button.is-success.is-inverted.is-outlined:focus{background-color:#fff;color:#23d160}.button.is-warning{background-color:#ffdd57;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:hover,.button.is-warning.is-hovered{background-color:#ffdb4a;border-color:transparent;color:rgba(0,0,0,.7)}.button.is-warning:focus,.button.is-warning.is-focused{border-color:transparent;box-shadow:0 0 .5em rgba(255,221,87,.25);color:rgba(0,0,0,.7)}.button.is-warning:active,.button.is-warning.is-active{background-color:#ffd83d;border-color:transparent;box-shadow:inset 0 1px 2px rgba(10,10,10,.2);color:rgba(0,0,0,.7)}.button.is-warning.is-inverted{background-color:rgba(0,0,0,.7);color:#ffdd57}.button.is-warning.is-inverted:hover{background-color:rgba(0,0,0,.7)}.button.is-warning.is-loading:after{border-color:transparent transparent rgba(0,0,0,.7) rgba(0,0,0,.7) !important}.button.is-warning.is-outlined{background-color:transparent;border-color:#ffdd57;color:#ffdd57}.button.is-warning.is-outlined:hover,.button.is-warning.is-outlined:focus{background-color:#ffdd57;border-color:#ffdd57;color:rgba(0,0,0,.7)}.button.is-warning.is-outlined.is-loading:after{border-color:transparent transparent #ffdd57 #ffdd57 !important}.button.is-warning.is-inverted.is-outlined{background-color:transparent;border-color:rgba(0,0,0,.7);color:rgba(0,0,0,.7)}.button.is-warning.is-inverted.is-outlined:hover,.button.is-warning.is-inverted.is-outlined:focus{background-color:rgba(0,0,0,.7);color:#ffdd57}.button.is-danger{background-color:#ff3860;border-color:transparent;color:#fff}.button.is-danger:hover,.button.is-danger.is-hovered{background-color:#ff2b56;border-color:transparent;color:#fff}.button.is-danger:focus,.button.is-danger.is-focused{border-color:transparent;box-shadow:0 0 .5em rgba(255,56,96,.25);color:#fff}.button.is-danger:active,.button.is-danger.is-active{background-color:#ff1f4b;border-color:transparent;box-shadow:inset 0 1px 2px rgba(10,10,10,.2);color:#fff}.button.is-danger.is-inverted{background-color:#fff;color:#ff3860}.button.is-danger.is-inverted:hover{background-color:#f2f2f2}.button.is-danger.is-loading:after{border-color:transparent transparent #fff #fff !important}.button.is-danger.is-outlined{background-color:transparent;border-color:#ff3860;color:#ff3860}.button.is-danger.is-outlined:hover,.button.is-danger.is-outlined:focus{background-color:#ff3860;border-color:#ff3860;color:#fff}.button.is-danger.is-outlined.is-loading:after{border-color:transparent transparent #ff3860 #ff3860 !important}.button.is-danger.is-inverted.is-outlined{background-color:transparent;border-color:#fff;color:#fff}.button.is-danger.is-inverted.is-outlined:hover,.button.is-danger.is-inverted.is-outlined:focus{background-color:#fff;color:#ff3860}.button.is-small{border-radius:2px;font-size:.75rem}.button.is-medium{font-size:1.25rem}.button.is-large{font-size:1.5rem}.button[disabled],.button.is-disabled{opacity:.5}.button.is-fullwidth{display:-webkit-box;display:-ms-flexbox;display:flex;width:100%}.button.is-loading{color:transparent !important;pointer-events:none}.button.is-loading:after{-webkit-animation:spinAround .5s infinite linear;animation:spinAround .5s infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em;left:50%;margin-left:-.5em;margin-top:-.5em;position:absolute;top:50%;position:absolute !important}button.button,input[type=submit].button{line-height:1;padding-bottom:.4em;padding-top:.35em}.content{color:#4a4a4a}.content:not(:last-child){margin-bottom:1.5rem}.content li+li{margin-top:.25em}.content p:not(:last-child),.content ol:not(:last-child),.content ul:not(:last-child),.content blockquote:not(:last-child),.content table:not(:last-child){margin-bottom:1em}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{color:#363636;font-weight:400;line-height:1.125}.content h1{font-size:2em;margin-bottom:.5em}.content h1:not(:first-child){margin-top:1em}.content h2{font-size:1.75em;margin-bottom:.5714em}.content h2:not(:first-child){margin-top:1.1428em}.content h3{font-size:1.5em;margin-bottom:.6666em}.content h3:not(:first-child){margin-top:1.3333em}.content h4{font-size:1.25em;margin-bottom:.8em}.content h5{font-size:1.125em;margin-bottom:.8888em}.content h6{font-size:1em;margin-bottom:1em}.content blockquote{background-color:#f5f5f5;border-left:5px solid #dbdbdb;padding:1.25em 1.5em}.content ol{list-style:decimal outside;margin-left:2em;margin-right:2em;margin-top:1em}.content ul{list-style:disc outside;margin-left:2em;margin-right:2em;margin-top:1em}.content ul ul{list-style-type:circle;margin-top:.5em}.content ul ul ul{list-style-type:square}.content table{width:100%}.content table td,.content table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.content table th{color:#363636;text-align:left}.content table tr:hover{background-color:#f5f5f5}.content table thead td,.content table thead th{border-width:0 0 2px;color:#363636}.content table tfoot td,.content table tfoot th{border-width:2px 0 0;color:#363636}.content table tbody tr:last-child td,.content table tbody tr:last-child th{border-bottom-width:0}.content.is-small{font-size:.75rem}.content.is-medium{font-size:1.25rem}.content.is-large{font-size:1.5rem}.input,.textarea{-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none;border-radius:3px;box-shadow:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:1rem;height:2.25em;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;line-height:1.5;padding-bottom:.375em;padding-left:.625em;padding-right:.625em;padding-top:.375em;position:relative;vertical-align:top;background-color:#fff;border:1px solid #dbdbdb;color:#363636;box-shadow:inset 0 1px 2px rgba(10,10,10,.1);max-width:100%;width:100%}.input:focus,.input.is-focused,.input:active,.input.is-active,.textarea:focus,.textarea.is-focused,.textarea:active,.textarea.is-active{outline:none}.input[disabled],.input.is-disabled,.textarea[disabled],.textarea.is-disabled{pointer-events:none}.input:hover,.input.is-hovered,.textarea:hover,.textarea.is-hovered{border-color:#b5b5b5}.input:focus,.input.is-focused,.input:active,.input.is-active,.textarea:focus,.textarea.is-focused,.textarea:active,.textarea.is-active{border-color:#00d1b2}.input[disabled],.input.is-disabled,.textarea[disabled],.textarea.is-disabled{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#7a7a7a}.input[disabled]::-moz-placeholder,.input.is-disabled::-moz-placeholder,.textarea[disabled]::-moz-placeholder,.textarea.is-disabled::-moz-placeholder{color:rgba(54,54,54,.3)}.input[disabled]::-webkit-input-placeholder,.input.is-disabled::-webkit-input-placeholder,.textarea[disabled]::-webkit-input-placeholder,.textarea.is-disabled::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.input[disabled]:-moz-placeholder,.input.is-disabled:-moz-placeholder,.textarea[disabled]:-moz-placeholder,.textarea.is-disabled:-moz-placeholder{color:rgba(54,54,54,.3)}.input[disabled]:-ms-input-placeholder,.input.is-disabled:-ms-input-placeholder,.textarea[disabled]:-ms-input-placeholder,.textarea.is-disabled:-ms-input-placeholder{color:rgba(54,54,54,.3)}.input[type=search],.textarea[type=search]{border-radius:290486px}.input.is-white,.textarea.is-white{border-color:#fff}.input.is-black,.textarea.is-black{border-color:#0a0a0a}.input.is-light,.textarea.is-light{border-color:#f5f5f5}.input.is-dark,.textarea.is-dark{border-color:#363636}.input.is-primary,.textarea.is-primary{border-color:#00d1b2}.input.is-info,.textarea.is-info{border-color:#3273dc}.input.is-success,.textarea.is-success{border-color:#23d160}.input.is-warning,.textarea.is-warning{border-color:#ffdd57}.input.is-danger,.textarea.is-danger{border-color:#ff3860}.input.is-small,.textarea.is-small{border-radius:2px;font-size:.75rem}.input.is-medium,.textarea.is-medium{font-size:1.25rem}.input.is-large,.textarea.is-large{font-size:1.5rem}.input.is-fullwidth,.textarea.is-fullwidth{display:block;width:100%}.input.is-inline,.textarea.is-inline{display:inline;width:auto}.textarea{display:block;max-height:600px;max-width:100%;min-height:120px;min-width:100%;padding:.625em;resize:vertical}.checkbox,.radio{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;line-height:1.5;position:relative;vertical-align:top}.checkbox input,.radio input{cursor:pointer;margin-right:.5em}.checkbox:hover,.radio:hover{color:#363636}.checkbox.is-disabled,.radio.is-disabled{color:#7a7a7a;pointer-events:none}.checkbox.is-disabled input,.radio.is-disabled input{pointer-events:none}.radio+.radio{margin-left:.5em}.select{display:inline-block;height:2.25em;position:relative;vertical-align:top}.select:after{border:1px solid #00d1b2;border-right:0;border-top:0;content:" ";display:block;height:.5em;pointer-events:none;position:absolute;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);width:.5em;margin-top:-.375em;right:1.125em;top:50%;z-index:4}.select select{-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none;border-radius:3px;box-shadow:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:1rem;height:2.25em;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;line-height:1.5;padding-bottom:.375em;padding-left:.625em;padding-right:.625em;padding-top:.375em;position:relative;vertical-align:top;background-color:#fff;border:1px solid #dbdbdb;color:#363636;cursor:pointer;display:block;font-size:1em;outline:none;padding-right:2.5em}.select select:focus,.select select.is-focused,.select select:active,.select select.is-active{outline:none}.select select[disabled],.select select.is-disabled{pointer-events:none}.select select:hover,.select select.is-hovered{border-color:#b5b5b5}.select select:focus,.select select.is-focused,.select select:active,.select select.is-active{border-color:#00d1b2}.select select[disabled],.select select.is-disabled{background-color:#f5f5f5;border-color:#f5f5f5;box-shadow:none;color:#7a7a7a}.select select[disabled]::-moz-placeholder,.select select.is-disabled::-moz-placeholder{color:rgba(54,54,54,.3)}.select select[disabled]::-webkit-input-placeholder,.select select.is-disabled::-webkit-input-placeholder{color:rgba(54,54,54,.3)}.select select[disabled]:-moz-placeholder,.select select.is-disabled:-moz-placeholder{color:rgba(54,54,54,.3)}.select select[disabled]:-ms-input-placeholder,.select select.is-disabled:-ms-input-placeholder{color:rgba(54,54,54,.3)}.select select:hover{border-color:#b5b5b5}.select select::ms-expand{display:none}.select:hover:after{border-color:#363636}.select.is-small{border-radius:2px;font-size:.75rem}.select.is-medium{font-size:1.25rem}.select.is-large{font-size:1.5rem}.select.is-fullwidth{width:100%}.select.is-fullwidth select{width:100%}.label{color:#363636;display:block;font-size:1rem;font-weight:700}.label:not(:last-child){margin-bottom:.5em}.help{display:block;font-size:.75rem;margin-top:.25rem}.help.is-white{color:#fff}.help.is-black{color:#0a0a0a}.help.is-light{color:#f5f5f5}.help.is-dark{color:#363636}.help.is-primary{color:#00d1b2}.help.is-info{color:#3273dc}.help.is-success{color:#23d160}.help.is-warning{color:#ffdd57}.help.is-danger{color:#ff3860}.select select{line-height:1}.field:not(:last-child){margin-bottom:.75rem}.field.has-addons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.field.has-addons .control{margin-right:-1px}.field.has-addons .control:first-child .button,.field.has-addons .control:first-child .input,.field.has-addons .control:first-child .select select{border-bottom-left-radius:3px;border-top-left-radius:3px}.field.has-addons .control:last-child .button,.field.has-addons .control:last-child .input,.field.has-addons .control:last-child .select select{border-bottom-right-radius:3px;border-top-right-radius:3px}.field.has-addons .control .button,.field.has-addons .control .input,.field.has-addons .control .select select{border-radius:0}.field.has-addons .control .button:hover,.field.has-addons .control .input:hover,.field.has-addons .control .select select:hover{z-index:2}.field.has-addons .control .button:focus,.field.has-addons .control .button:active,.field.has-addons .control .input:focus,.field.has-addons .control .input:active,.field.has-addons .control .select select:focus,.field.has-addons .control .select select:active{z-index:3}.field.has-addons .control.is-expanded{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.field.has-addons.has-addons-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.field.has-addons.has-addons-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.field.has-addons.has-addons-fullwidth .control{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.field.is-grouped{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.field.is-grouped>.control{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-negative:0;flex-shrink:0}.field.is-grouped>.control:not(:last-child){margin-bottom:0;margin-right:.75rem}.field.is-grouped>.control.is-expanded{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.field.is-grouped.is-grouped-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.field.is-grouped.is-grouped-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}@media screen and (min-width:769px){.field.is-horizontal{display:-webkit-box;display:-ms-flexbox;display:flex}}.field-label .label{font-size:inherit}@media screen and (max-width:768px){.field-label{margin-bottom:.5rem}}@media screen and (min-width:769px){.field-label{-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;margin-right:1.5rem;text-align:right}.field-label.is-small{font-size:.75rem;padding-top:.375em}.field-label.is-normal{padding-top:.375em}.field-label.is-medium{font-size:1.25rem;padding-top:.375em}.field-label.is-large{font-size:1.5rem;padding-top:.375em}}@media screen and (min-width:769px){.field-body{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:5;-ms-flex-positive:5;flex-grow:5;-ms-flex-negative:1;flex-shrink:1}.field-body .field{-ms-flex-negative:1;flex-shrink:1}.field-body .field:not(.is-narrow){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.field-body .field:not(:last-child){margin-bottom:0;margin-right:.75rem}}.control{font-size:1rem;position:relative;text-align:left}.control.has-icon .icon{color:#dbdbdb;height:2.25em;pointer-events:none;position:absolute;top:0;width:2.25em;z-index:4}.control.has-icon .input:focus+.icon{color:#7a7a7a}.control.has-icon .input.is-small+.icon{font-size:.75rem}.control.has-icon .input.is-medium+.icon{font-size:1.25rem}.control.has-icon .input.is-large+.icon{font-size:1.5rem}.control.has-icon:not(.has-icon-right) .icon{left:0}.control.has-icon:not(.has-icon-right) .input{padding-left:2.25em}.control.has-icon.has-icon-right .icon{right:0}.control.has-icon.has-icon-right .input{padding-right:2.25em}.control.is-loading:after{-webkit-animation:spinAround .5s infinite linear;animation:spinAround .5s infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em;position:absolute !important;right:.625em;top:.625em}.icon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;height:1.5rem;vertical-align:top;width:1.5rem}.icon .fa{font-size:21px}.icon.is-small{height:1rem;width:1rem}.icon.is-small .fa{font-size:14px}.icon.is-medium{height:2rem;width:2rem}.icon.is-medium .fa{font-size:28px}.icon.is-large{height:3rem;width:3rem}.icon.is-large .fa{font-size:42px}.image{display:block;position:relative}.image img{display:block;height:auto;width:100%}.image.is-square img,.image.is-1by1 img,.image.is-4by3 img,.image.is-3by2 img,.image.is-16by9 img,.image.is-2by1 img{bottom:0;left:0;position:absolute;right:0;top:0;height:100%;width:100%}.image.is-square,.image.is-1by1{padding-top:100%}.image.is-4by3{padding-top:75%}.image.is-3by2{padding-top:66.6666%}.image.is-16by9{padding-top:56.25%}.image.is-2by1{padding-top:50%}.image.is-16x16{height:16px;width:16px}.image.is-24x24{height:24px;width:24px}.image.is-32x32{height:32px;width:32px}.image.is-48x48{height:48px;width:48px}.image.is-64x64{height:64px;width:64px}.image.is-96x96{height:96px;width:96px}.image.is-128x128{height:128px;width:128px}.notification{background-color:#f5f5f5;border-radius:3px;padding:1.25rem 2.5rem 1.25rem 1.5rem;position:relative}.notification:not(:last-child){margin-bottom:1.5rem}.notification code,.notification pre{background:#fff}.notification pre code{background:0 0}.notification .delete{position:absolute;right:.5em;top:.5em}.notification .title,.notification .subtitle,.notification .content{color:inherit}.notification.is-white{background-color:#fff;color:#0a0a0a}.notification.is-black{background-color:#0a0a0a;color:#fff}.notification.is-light{background-color:#f5f5f5;color:#363636}.notification.is-dark{background-color:#363636;color:#f5f5f5}.notification.is-primary{background-color:#00d1b2;color:#fff}.notification.is-info{background-color:#3273dc;color:#fff}.notification.is-success{background-color:#23d160;color:#fff}.notification.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.notification.is-danger{background-color:#ff3860;color:#fff}.progress{-moz-appearance:none;-webkit-appearance:none;border:none;border-radius:290486px;display:block;height:1rem;overflow:hidden;padding:0;width:100%}.progress:not(:last-child){margin-bottom:1.5rem}.progress::-webkit-progress-bar{background-color:#dbdbdb}.progress::-webkit-progress-value{background-color:#4a4a4a}.progress::-moz-progress-bar{background-color:#4a4a4a}.progress.is-white::-webkit-progress-value{background-color:#fff}.progress.is-white::-moz-progress-bar{background-color:#fff}.progress.is-black::-webkit-progress-value{background-color:#0a0a0a}.progress.is-black::-moz-progress-bar{background-color:#0a0a0a}.progress.is-light::-webkit-progress-value{background-color:#f5f5f5}.progress.is-light::-moz-progress-bar{background-color:#f5f5f5}.progress.is-dark::-webkit-progress-value{background-color:#363636}.progress.is-dark::-moz-progress-bar{background-color:#363636}.progress.is-primary::-webkit-progress-value{background-color:#00d1b2}.progress.is-primary::-moz-progress-bar{background-color:#00d1b2}.progress.is-info::-webkit-progress-value{background-color:#3273dc}.progress.is-info::-moz-progress-bar{background-color:#3273dc}.progress.is-success::-webkit-progress-value{background-color:#23d160}.progress.is-success::-moz-progress-bar{background-color:#23d160}.progress.is-warning::-webkit-progress-value{background-color:#ffdd57}.progress.is-warning::-moz-progress-bar{background-color:#ffdd57}.progress.is-danger::-webkit-progress-value{background-color:#ff3860}.progress.is-danger::-moz-progress-bar{background-color:#ff3860}.progress.is-small{height:.75rem}.progress.is-medium{height:1.25rem}.progress.is-large{height:1.5rem}.table{background-color:#fff;color:#363636;margin-bottom:1.5rem;width:100%}.table td,.table th{border:1px solid #dbdbdb;border-width:0 0 1px;padding:.5em .75em;vertical-align:top}.table td.is-narrow,.table th.is-narrow{white-space:nowrap;width:1%}.table th{color:#363636;text-align:left}.table tr:hover{background-color:#fafafa}.table thead td,.table thead th{border-width:0 0 2px;color:#7a7a7a}.table tfoot td,.table tfoot th{border-width:2px 0 0;color:#7a7a7a}.table tbody tr:last-child td,.table tbody tr:last-child th{border-bottom-width:0}.table.is-bordered td,.table.is-bordered th{border-width:1px}.table.is-bordered tr:last-child td,.table.is-bordered tr:last-child th{border-bottom-width:1px}.table.is-narrow td,.table.is-narrow th{padding:.25em .5em}.table.is-striped tbody tr:nth-child(even){background-color:#fafafa}.table.is-striped tbody tr:nth-child(even):hover{background-color:#f5f5f5}.tag{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f5f5f5;border-radius:290486px;color:#4a4a4a;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:.75rem;height:2em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:1.5;padding-left:.875em;padding-right:.875em;vertical-align:top;white-space:nowrap}.tag .delete{margin-left:.25em;margin-right:-.375em}.tag.is-white{background-color:#fff;color:#0a0a0a}.tag.is-black{background-color:#0a0a0a;color:#fff}.tag.is-light{background-color:#f5f5f5;color:#363636}.tag.is-dark{background-color:#363636;color:#f5f5f5}.tag.is-primary{background-color:#00d1b2;color:#fff}.tag.is-info{background-color:#3273dc;color:#fff}.tag.is-success{background-color:#23d160;color:#fff}.tag.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.tag.is-danger{background-color:#ff3860;color:#fff}.tag.is-medium{font-size:1rem}.tag.is-large{font-size:1.25rem}.title,.subtitle{word-break:break-word}.title:not(:last-child),.subtitle:not(:last-child){margin-bottom:1.5rem}.title em,.title span,.subtitle em,.subtitle span{font-weight:300}.title strong,.subtitle strong{font-weight:500}.title .tag,.subtitle .tag{vertical-align:middle}.title{color:#363636;font-size:2rem;font-weight:300;line-height:1.125}.title strong{color:inherit}.title+.highlight{margin-top:-.75rem}.title:not(.is-spaced)+.subtitle{margin-top:-1.5rem}.title.is-1{font-size:3rem}.title.is-2{font-size:2.5rem}.title.is-3{font-size:2rem}.title.is-4{font-size:1.5rem}.title.is-5{font-size:1.25rem}.title.is-6{font-size:1rem}.subtitle{color:#4a4a4a;font-size:1.25rem;font-weight:300;line-height:1.25}.subtitle strong{color:#363636}.subtitle:not(.is-spaced)+.title{margin-top:-1.5rem}.subtitle.is-1{font-size:3rem}.subtitle.is-2{font-size:2.5rem}.subtitle.is-3{font-size:2rem}.subtitle.is-4{font-size:1.5rem}.subtitle.is-5{font-size:1.25rem}.subtitle.is-6{font-size:1rem}.block:not(:last-child){margin-bottom:1.5rem}.container{position:relative}@media screen and (min-width:1000px){.container{margin:0 auto;max-width:960px;width:960px}.container.is-fluid{margin:0 20px;max-width:none;width:auto}}@media screen and (min-width:1192px){.container{max-width:1152px;width:1152px}}@media screen and (min-width:1384px){.container{max-width:1344px;width:1344px}}.delete{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,.2);border:none;border-radius:290486px;cursor:pointer;display:inline-block;font-size:1rem;height:20px;outline:none;position:relative;vertical-align:top;width:20px}.delete:before,.delete:after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);-webkit-transform-origin:center center;transform-origin:center center}.delete:before{height:2px;width:50%}.delete:after{height:50%;width:2px}.delete:hover,.delete:focus{background-color:rgba(10,10,10,.3)}.delete:active{background-color:rgba(10,10,10,.4)}.delete.is-small{height:16px;width:16px}.delete.is-medium{height:24px;width:24px}.delete.is-large{height:32px;width:32px}.fa{font-size:21px;text-align:center;vertical-align:top}.heading{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px;text-transform:uppercase}.highlight{font-weight:400;max-width:100%;overflow:hidden;padding:0}.highlight:not(:last-child){margin-bottom:1.5rem}.highlight pre{overflow:auto;max-width:100%}.loader{-webkit-animation:spinAround .5s infinite linear;animation:spinAround .5s infinite linear;border:2px solid #dbdbdb;border-radius:290486px;border-right-color:transparent;border-top-color:transparent;content:"";display:block;height:1em;position:relative;width:1em}.number{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f5f5f5;border-radius:290486px;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:1.25rem;height:2em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-right:1.5rem;min-width:2.5em;padding:.25rem .5rem;text-align:center;vertical-align:top}.card-header{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;box-shadow:0 1px 2px rgba(10,10,10,.1);display:-webkit-box;display:-ms-flexbox;display:flex}.card-header-title{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#363636;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;font-weight:700;padding:.75rem}.card-header-icon{-webkit-box-align:center;-ms-flex-align:center;align-items:center;cursor:pointer;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:.75rem}.card-image{display:block;position:relative}.card-content{padding:1.5rem}.card-footer{border-top:1px solid #dbdbdb;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex}.card-footer-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding:.75rem}.card-footer-item:not(:last-child){border-right:1px solid #dbdbdb}.card{background-color:#fff;box-shadow:0 2px 3px rgba(10,10,10,.1),0 0 0 1px rgba(10,10,10,.1);color:#4a4a4a;max-width:100%;position:relative}.card .media:not(:last-child){margin-bottom:.75rem}.level-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.level-item .title,.level-item .subtitle{margin-bottom:0}@media screen and (max-width:768px){.level-item:not(:last-child){margin-bottom:.75rem}}.level-left,.level-right{-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.level-left .level-item:not(:last-child),.level-right .level-item:not(:last-child){margin-right:.75rem}.level-left .level-item.is-flexible,.level-right .level-item.is-flexible{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.level-left{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}@media screen and (max-width:768px){.level-left+.level-right{margin-top:1.5rem}}@media screen and (min-width:769px){.level-left{display:-webkit-box;display:-ms-flexbox;display:flex}}.level-right{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}@media screen and (min-width:769px){.level-right{display:-webkit-box;display:-ms-flexbox;display:flex}}.level{-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.level:not(:last-child){margin-bottom:1.5rem}.level code{border-radius:3px}.level img{display:inline-block;vertical-align:top}.level.is-mobile{display:-webkit-box;display:-ms-flexbox;display:flex}.level.is-mobile .level-left,.level.is-mobile .level-right{display:-webkit-box;display:-ms-flexbox;display:flex}.level.is-mobile .level-left+.level-right{margin-top:0}.level.is-mobile .level-item:not(:last-child){margin-bottom:0}.level.is-mobile .level-item:not(.is-narrow){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}@media screen and (min-width:769px){.level{display:-webkit-box;display:-ms-flexbox;display:flex}.level>.level-item:not(.is-narrow){-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}}.media-left,.media-right{-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.media-left{margin-right:1rem}.media-right{margin-left:1rem}.media-content{-ms-flex-preferred-size:auto;flex-basis:auto;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;text-align:left}.media{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start;display:-webkit-box;display:-ms-flexbox;display:flex;text-align:left}.media .content:not(:last-child){margin-bottom:.75rem}.media .media{border-top:1px solid rgba(219,219,219,.5);display:-webkit-box;display:-ms-flexbox;display:flex;padding-top:.75rem}.media .media .content:not(:last-child),.media .media .control:not(:last-child){margin-bottom:.5rem}.media .media .media{padding-top:.5rem}.media .media .media+.media{margin-top:.5rem}.media+.media{border-top:1px solid rgba(219,219,219,.5);margin-top:1rem;padding-top:1rem}.media.is-large+.media{margin-top:1.5rem;padding-top:1.5rem}.menu{font-size:1rem}.menu-list{line-height:1.25}.menu-list a{border-radius:2px;color:#4a4a4a;display:block;padding:.5em .75em}.menu-list a:hover{background-color:#f5f5f5;color:#00d1b2}.menu-list a.is-active{background-color:#00d1b2;color:#fff}.menu-list li ul{border-left:1px solid #dbdbdb;margin:.75em;padding-left:.75em}.menu-label{color:#7a7a7a;font-size:.8em;letter-spacing:.1em;text-transform:uppercase}.menu-label:not(:first-child){margin-top:1em}.menu-label:not(:last-child){margin-bottom:1em}.message{background-color:#f5f5f5;border-radius:3px;font-size:1rem}.message:not(:last-child){margin-bottom:1.5rem}.message.is-white{background-color:#fff}.message.is-white .message-header{background-color:#fff;color:#0a0a0a}.message.is-white .message-body{border-color:#fff;color:#4d4d4d}.message.is-black{background-color:#fafafa}.message.is-black .message-header{background-color:#0a0a0a;color:#fff}.message.is-black .message-body{border-color:#0a0a0a;color:#090909}.message.is-light{background-color:#fafafa}.message.is-light .message-header{background-color:#f5f5f5;color:#363636}.message.is-light .message-body{border-color:#f5f5f5;color:#505050}.message.is-dark{background-color:#fafafa}.message.is-dark .message-header{background-color:#363636;color:#f5f5f5}.message.is-dark .message-body{border-color:#363636;color:#2a2a2a}.message.is-primary{background-color:#f5fffd}.message.is-primary .message-header{background-color:#00d1b2;color:#fff}.message.is-primary .message-body{border-color:#00d1b2;color:#021310}.message.is-info{background-color:#f6f9fe}.message.is-info .message-header{background-color:#3273dc;color:#fff}.message.is-info .message-body{border-color:#3273dc;color:#22509a}.message.is-success{background-color:#f6fef9}.message.is-success .message-header{background-color:#23d160;color:#fff}.message.is-success .message-body{border-color:#23d160;color:#0e301a}.message.is-warning{background-color:#fffdf5}.message.is-warning .message-header{background-color:#ffdd57;color:rgba(0,0,0,.7)}.message.is-warning .message-body{border-color:#ffdd57;color:#3b3108}.message.is-danger{background-color:#fff5f7}.message.is-danger .message-header{background-color:#ff3860;color:#fff}.message.is-danger .message-body{border-color:#ff3860;color:#cd0930}.message-header{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#4a4a4a;border-radius:3px 3px 0 0;color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;line-height:1.25;padding:.5em .75em;position:relative}.message-header a,.message-header strong{color:inherit}.message-header a{text-decoration:underline}.message-header .delete{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;margin-left:.75em}.message-header+.message-body{border-top-left-radius:0;border-top-right-radius:0;border-top:none}.message-body{border:1px solid #dbdbdb;border-radius:3px;color:#4a4a4a;padding:1em 1.25em}.message-body a,.message-body strong{color:inherit}.message-body a{text-decoration:underline}.message-body code,.message-body pre{background:#fff}.message-body pre code{background:0 0}.modal-background{bottom:0;left:0;position:absolute;right:0;top:0;background-color:rgba(10,10,10,.86)}.modal-content,.modal-card{margin:0 20px;max-height:calc(100vh - 160px);overflow:auto;position:relative;width:100%}@media screen and (min-width:769px){.modal-content,.modal-card{margin:0 auto;max-height:calc(100vh - 40px);width:640px}}.modal-close{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-moz-appearance:none;-webkit-appearance:none;background-color:rgba(10,10,10,.2);border:none;border-radius:290486px;cursor:pointer;display:inline-block;font-size:1rem;height:20px;outline:none;position:relative;vertical-align:top;width:20px;background:0 0;height:40px;position:fixed;right:20px;top:20px;width:40px}.modal-close:before,.modal-close:after{background-color:#fff;content:"";display:block;left:50%;position:absolute;top:50%;-webkit-transform:translateX(-50%) translateY(-50%) rotate(45deg);transform:translateX(-50%) translateY(-50%) rotate(45deg);-webkit-transform-origin:center center;transform-origin:center center}.modal-close:before{height:2px;width:50%}.modal-close:after{height:50%;width:2px}.modal-close:hover,.modal-close:focus{background-color:rgba(10,10,10,.3)}.modal-close:active{background-color:rgba(10,10,10,.4)}.modal-close.is-small{height:16px;width:16px}.modal-close.is-medium{height:24px;width:24px}.modal-close.is-large{height:32px;width:32px}.modal-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;max-height:calc(100vh - 40px);overflow:hidden}.modal-card-head,.modal-card-foot{-webkit-box-align:center;-ms-flex-align:center;align-items:center;background-color:#f5f5f5;display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;padding:20px;position:relative}.modal-card-head{border-bottom:1px solid #dbdbdb;border-top-left-radius:5px;border-top-right-radius:5px}.modal-card-title{color:#363636;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;font-size:1.5rem;line-height:1}.modal-card-foot{border-bottom-left-radius:5px;border-bottom-right-radius:5px;border-top:1px solid #dbdbdb}.modal-card-foot .button:not(:last-child){margin-right:10px}.modal-card-body{-webkit-overflow-scrolling:touch;background-color:#fff;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;overflow:auto;padding:20px}.modal{bottom:0;left:0;position:absolute;right:0;top:0;-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;overflow:hidden;position:fixed;z-index:1986}.modal.is-active{display:-webkit-box;display:-ms-flexbox;display:flex}.nav-toggle{cursor:pointer;display:block;height:3.25rem;position:relative;width:3.25rem}.nav-toggle span{background-color:#4a4a4a;display:block;height:1px;left:50%;margin-left:-7px;position:absolute;top:50%;-webkit-transition:none 86ms ease-out;transition:none 86ms ease-out;-webkit-transition-property:background,left,opacity,-webkit-transform;transition-property:background,left,opacity,-webkit-transform;transition-property:background,left,opacity,transform;transition-property:background,left,opacity,transform,-webkit-transform;width:15px}.nav-toggle span:nth-child(1){margin-top:-6px}.nav-toggle span:nth-child(2){margin-top:-1px}.nav-toggle span:nth-child(3){margin-top:4px}.nav-toggle:hover{background-color:#f5f5f5}.nav-toggle.is-active span{background-color:#00d1b2}.nav-toggle.is-active span:nth-child(1){margin-left:-5px;-webkit-transform:rotate(45deg);transform:rotate(45deg);-webkit-transform-origin:left top;transform-origin:left top}.nav-toggle.is-active span:nth-child(2){opacity:0}.nav-toggle.is-active span:nth-child(3){margin-left:-5px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);-webkit-transform-origin:left bottom;transform-origin:left bottom}@media screen and (min-width:769px){.nav-toggle{display:none}}.nav-item{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;font-size:1rem;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;line-height:1.5;padding:.5rem .75rem}.nav-item a{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.nav-item img{max-height:1.75rem}.nav-item .button+.button{margin-left:.75rem}.nav-item .tag:first-child:not(:last-child){margin-right:.5rem}.nav-item .tag:last-child:not(:first-child){margin-left:.5rem}@media screen and (max-width:768px){.nav-item{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}}.nav-item a,a.nav-item{color:#7a7a7a}.nav-item a:hover,a.nav-item:hover{color:#363636}.nav-item a.is-active,a.nav-item.is-active{color:#363636}.nav-item a.is-tab,a.nav-item.is-tab{border-bottom:1px solid transparent;border-top:1px solid transparent;padding-bottom:calc(.75rem - 1px);padding-left:1rem;padding-right:1rem;padding-top:calc(.75rem - 1px)}.nav-item a.is-tab:hover,a.nav-item.is-tab:hover{border-bottom-color:#00d1b2;border-top-color:transparent}.nav-item a.is-tab.is-active,a.nav-item.is-tab.is-active{border-bottom:3px solid #00d1b2;color:#00d1b2;padding-bottom:calc(.75rem - 3px)}@media screen and (min-width:1000px){.nav-item a.is-brand,a.nav-item.is-brand{padding-left:0}}@media screen and (max-width:768px){.nav-menu{background-color:#fff;box-shadow:0 4px 7px rgba(10,10,10,.1);left:0;display:none;right:0;top:100%;position:absolute}.nav-menu .nav-item{border-top:1px solid rgba(219,219,219,.5);padding:.75rem}.nav-menu.is-active{display:block}}@media screen and (min-width:769px) and (max-width:999px){.nav-menu{padding-right:1.5rem}}.nav-left,.nav-right{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.nav-left{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;overflow:hidden;overflow-x:auto;white-space:nowrap}.nav-center{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-left:auto;margin-right:auto}.nav-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}@media screen and (min-width:769px){.nav-right{display:-webkit-box;display:-ms-flexbox;display:flex}}.nav{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;min-height:3.25rem;position:relative;text-align:center;z-index:2}.nav>.container{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;min-height:3.25rem}.nav.has-shadow{box-shadow:0 2px 3px rgba(10,10,10,.1)}@media screen and (max-width:768px){.nav>.container{width:100%}}.pagination{font-size:1rem}.pagination.is-small{font-size:.75rem}.pagination.is-medium{font-size:1.25rem}.pagination.is-large{font-size:1.5rem}.pagination,.pagination-list{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.pagination-previous,.pagination-next,.pagination-link,.pagination-ellipsis{-moz-appearance:none;-webkit-appearance:none;-webkit-box-align:center;-ms-flex-align:center;align-items:center;border:none;border-radius:3px;box-shadow:none;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:1rem;height:2.25em;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;line-height:1.5;padding-bottom:.375em;padding-left:.625em;padding-right:.625em;padding-top:.375em;position:relative;vertical-align:top;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:1em;padding-left:.5em;padding-right:.5em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;text-align:center}.pagination-previous:focus,.pagination-previous.is-focused,.pagination-previous:active,.pagination-previous.is-active,.pagination-next:focus,.pagination-next.is-focused,.pagination-next:active,.pagination-next.is-active,.pagination-link:focus,.pagination-link.is-focused,.pagination-link:active,.pagination-link.is-active,.pagination-ellipsis:focus,.pagination-ellipsis.is-focused,.pagination-ellipsis:active,.pagination-ellipsis.is-active{outline:none}.pagination-previous[disabled],.pagination-previous.is-disabled,.pagination-next[disabled],.pagination-next.is-disabled,.pagination-link[disabled],.pagination-link.is-disabled,.pagination-ellipsis[disabled],.pagination-ellipsis.is-disabled{pointer-events:none}.pagination-previous,.pagination-next,.pagination-link{border:1px solid #dbdbdb;min-width:2.25em}.pagination-previous:hover,.pagination-next:hover,.pagination-link:hover{border-color:#b5b5b5;color:#363636}.pagination-previous:focus,.pagination-next:focus,.pagination-link:focus{border-color:#00d1b2}.pagination-previous:active,.pagination-next:active,.pagination-link:active{box-shadow:inset 0 1px 2px rgba(10,10,10,.2)}.pagination-previous[disabled],.pagination-previous.is-disabled,.pagination-next[disabled],.pagination-next.is-disabled,.pagination-link[disabled],.pagination-link.is-disabled{background:#dbdbdb;color:#7a7a7a;opacity:.5;pointer-events:none}.pagination-previous,.pagination-next{padding-left:.75em;padding-right:.75em}.pagination-link.is-current{background-color:#00d1b2;border-color:#00d1b2;color:#fff}.pagination-ellipsis{color:#b5b5b5;pointer-events:none}.pagination-list li:not(:first-child){margin-left:.375rem}@media screen and (max-width:768px){.pagination{-ms-flex-wrap:wrap;flex-wrap:wrap}.pagination-previous,.pagination-next{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;width:calc(50% - .375rem)}.pagination-next{margin-left:.75rem}.pagination-list{margin-top:.75rem}.pagination-list li{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}}@media screen and (min-width:769px){.pagination-list{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.pagination-previous,.pagination-next{margin-left:.75rem}.pagination-previous{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.pagination-next{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.pagination{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.pagination.is-centered .pagination-previous{margin-left:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.pagination.is-centered .pagination-list{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2}.pagination.is-centered .pagination-next{-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}.pagination.is-right .pagination-previous{margin-left:0;-webkit-box-ordinal-group:2;-ms-flex-order:1;order:1}.pagination.is-right .pagination-next{-webkit-box-ordinal-group:3;-ms-flex-order:2;order:2;margin-right:.75rem}.pagination.is-right .pagination-list{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;-webkit-box-ordinal-group:4;-ms-flex-order:3;order:3}}.panel{font-size:1rem}.panel:not(:last-child){margin-bottom:1.5rem}.panel-heading,.panel-tabs,.panel-block{border-bottom:1px solid #dbdbdb;border-left:1px solid #dbdbdb;border-right:1px solid #dbdbdb}.panel-heading:first-child,.panel-tabs:first-child,.panel-block:first-child{border-top:1px solid #dbdbdb}.panel-heading{background-color:#f5f5f5;border-radius:3px 3px 0 0;color:#363636;font-size:1.25em;font-weight:300;line-height:1.25;padding:.5em .75em}.panel-tabs{-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:.875em;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.panel-tabs a{border-bottom:1px solid #dbdbdb;margin-bottom:-1px;padding:.5em}.panel-tabs a.is-active{border-bottom-color:#4a4a4a;color:#363636}.panel-list a{color:#4a4a4a}.panel-list a:hover{color:#00d1b2}.panel-block{-webkit-box-align:center;-ms-flex-align:center;align-items:center;color:#363636;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start;padding:.5em .75em}.panel-block input[type=checkbox]{margin-right:.75em}.panel-block>.control{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;width:100%}.panel-block.is-active{border-left-color:#00d1b2;color:#363636}.panel-block.is-active .panel-icon{color:#00d1b2}a.panel-block,label.panel-block{cursor:pointer}a.panel-block:hover,label.panel-block:hover{background-color:#f5f5f5}.panel-icon{display:inline-block;font-size:14px;height:1em;line-height:1em;text-align:center;vertical-align:top;width:1em;color:#7a7a7a;margin-right:.75em}.panel-icon .fa{font-size:inherit;line-height:inherit}.tabs{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:-webkit-box;display:-ms-flexbox;display:flex;font-size:1rem;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;overflow:hidden;overflow-x:auto;white-space:nowrap}.tabs:not(:last-child){margin-bottom:1.5rem}.tabs a{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #dbdbdb;color:#4a4a4a;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-bottom:-1px;padding:.5em 1em;vertical-align:top}.tabs a:hover{border-bottom-color:#363636;color:#363636}.tabs li{display:block}.tabs li.is-active a{border-bottom-color:#00d1b2;color:#00d1b2}.tabs ul{-webkit-box-align:center;-ms-flex-align:center;align-items:center;border-bottom:1px solid #dbdbdb;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.tabs ul.is-left{padding-right:.75em}.tabs ul.is-center{-webkit-box-flex:0;-ms-flex:none;flex:none;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-left:.75em;padding-right:.75em}.tabs ul.is-right{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end;padding-left:.75em}.tabs .icon:first-child{margin-right:.5em}.tabs .icon:last-child{margin-left:.5em}.tabs.is-centered ul{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.tabs.is-right ul{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.tabs.is-boxed a{border:1px solid transparent;border-radius:3px 3px 0 0}.tabs.is-boxed a:hover{background-color:#f5f5f5;border-bottom-color:#dbdbdb}.tabs.is-boxed li.is-active a{background-color:#fff;border-color:#dbdbdb;border-bottom-color:transparent !important}.tabs.is-fullwidth li{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0}.tabs.is-toggle a{border:1px solid #dbdbdb;margin-bottom:0;position:relative}.tabs.is-toggle a:hover{background-color:#f5f5f5;border-color:#b5b5b5;z-index:2}.tabs.is-toggle li+li{margin-left:-1px}.tabs.is-toggle li:first-child a{border-radius:3px 0 0 3px}.tabs.is-toggle li:last-child a{border-radius:0 3px 3px 0}.tabs.is-toggle li.is-active a{background-color:#00d1b2;border-color:#00d1b2;color:#fff;z-index:1}.tabs.is-toggle ul{border-bottom:none}.tabs.is-small{font-size:.75rem}.tabs.is-medium{font-size:1.25rem}.tabs.is-large{font-size:1.5rem}.column{display:block;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;padding:.75rem}.columns.is-mobile>.column.is-narrow{-webkit-box-flex:0;-ms-flex:none;flex:none}.columns.is-mobile>.column.is-full{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.columns.is-mobile>.column.is-three-quarters{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.columns.is-mobile>.column.is-two-thirds{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.columns.is-mobile>.column.is-half{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.columns.is-mobile>.column.is-one-third{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.columns.is-mobile>.column.is-one-quarter{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.columns.is-mobile>.column.is-offset-three-quarters{margin-left:75%}.columns.is-mobile>.column.is-offset-two-thirds{margin-left:66.6666%}.columns.is-mobile>.column.is-offset-half{margin-left:50%}.columns.is-mobile>.column.is-offset-one-third{margin-left:33.3333%}.columns.is-mobile>.column.is-offset-one-quarter{margin-left:25%}.columns.is-mobile>.column.is-1{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.columns.is-mobile>.column.is-offset-1{margin-left:8.33333%}.columns.is-mobile>.column.is-2{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.columns.is-mobile>.column.is-offset-2{margin-left:16.66667%}.columns.is-mobile>.column.is-3{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.columns.is-mobile>.column.is-offset-3{margin-left:25%}.columns.is-mobile>.column.is-4{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.columns.is-mobile>.column.is-offset-4{margin-left:33.33333%}.columns.is-mobile>.column.is-5{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.columns.is-mobile>.column.is-offset-5{margin-left:41.66667%}.columns.is-mobile>.column.is-6{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.columns.is-mobile>.column.is-offset-6{margin-left:50%}.columns.is-mobile>.column.is-7{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.columns.is-mobile>.column.is-offset-7{margin-left:58.33333%}.columns.is-mobile>.column.is-8{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.columns.is-mobile>.column.is-offset-8{margin-left:66.66667%}.columns.is-mobile>.column.is-9{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.columns.is-mobile>.column.is-offset-9{margin-left:75%}.columns.is-mobile>.column.is-10{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.columns.is-mobile>.column.is-offset-10{margin-left:83.33333%}.columns.is-mobile>.column.is-11{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.columns.is-mobile>.column.is-offset-11{margin-left:91.66667%}.columns.is-mobile>.column.is-12{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.columns.is-mobile>.column.is-offset-12{margin-left:100%}@media screen and (max-width:768px){.column.is-narrow-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-three-quarters-mobile{margin-left:75%}.column.is-offset-two-thirds-mobile{margin-left:66.6666%}.column.is-offset-half-mobile{margin-left:50%}.column.is-offset-one-third-mobile{margin-left:33.3333%}.column.is-offset-one-quarter-mobile{margin-left:25%}.column.is-1-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1-mobile{margin-left:8.33333%}.column.is-2-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2-mobile{margin-left:16.66667%}.column.is-3-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3-mobile{margin-left:25%}.column.is-4-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4-mobile{margin-left:33.33333%}.column.is-5-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5-mobile{margin-left:41.66667%}.column.is-6-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6-mobile{margin-left:50%}.column.is-7-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7-mobile{margin-left:58.33333%}.column.is-8-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8-mobile{margin-left:66.66667%}.column.is-9-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9-mobile{margin-left:75%}.column.is-10-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10-mobile{margin-left:83.33333%}.column.is-11-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11-mobile{margin-left:91.66667%}.column.is-12-mobile{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12-mobile{margin-left:100%}}@media screen and (min-width:769px){.column.is-narrow,.column.is-narrow-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full,.column.is-full-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters,.column.is-three-quarters-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds,.column.is-two-thirds-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half,.column.is-half-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third,.column.is-one-third-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter,.column.is-one-quarter-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-three-quarters,.column.is-offset-three-quarters-tablet{margin-left:75%}.column.is-offset-two-thirds,.column.is-offset-two-thirds-tablet{margin-left:66.6666%}.column.is-offset-half,.column.is-offset-half-tablet{margin-left:50%}.column.is-offset-one-third,.column.is-offset-one-third-tablet{margin-left:33.3333%}.column.is-offset-one-quarter,.column.is-offset-one-quarter-tablet{margin-left:25%}.column.is-1,.column.is-1-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1,.column.is-offset-1-tablet{margin-left:8.33333%}.column.is-2,.column.is-2-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2,.column.is-offset-2-tablet{margin-left:16.66667%}.column.is-3,.column.is-3-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3,.column.is-offset-3-tablet{margin-left:25%}.column.is-4,.column.is-4-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4,.column.is-offset-4-tablet{margin-left:33.33333%}.column.is-5,.column.is-5-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5,.column.is-offset-5-tablet{margin-left:41.66667%}.column.is-6,.column.is-6-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6,.column.is-offset-6-tablet{margin-left:50%}.column.is-7,.column.is-7-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7,.column.is-offset-7-tablet{margin-left:58.33333%}.column.is-8,.column.is-8-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8,.column.is-offset-8-tablet{margin-left:66.66667%}.column.is-9,.column.is-9-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9,.column.is-offset-9-tablet{margin-left:75%}.column.is-10,.column.is-10-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10,.column.is-offset-10-tablet{margin-left:83.33333%}.column.is-11,.column.is-11-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11,.column.is-offset-11-tablet{margin-left:91.66667%}.column.is-12,.column.is-12-tablet{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12,.column.is-offset-12-tablet{margin-left:100%}}@media screen and (min-width:1000px){.column.is-narrow-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-three-quarters-desktop{margin-left:75%}.column.is-offset-two-thirds-desktop{margin-left:66.6666%}.column.is-offset-half-desktop{margin-left:50%}.column.is-offset-one-third-desktop{margin-left:33.3333%}.column.is-offset-one-quarter-desktop{margin-left:25%}.column.is-1-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1-desktop{margin-left:8.33333%}.column.is-2-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2-desktop{margin-left:16.66667%}.column.is-3-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3-desktop{margin-left:25%}.column.is-4-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4-desktop{margin-left:33.33333%}.column.is-5-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5-desktop{margin-left:41.66667%}.column.is-6-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6-desktop{margin-left:50%}.column.is-7-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7-desktop{margin-left:58.33333%}.column.is-8-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8-desktop{margin-left:66.66667%}.column.is-9-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9-desktop{margin-left:75%}.column.is-10-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10-desktop{margin-left:83.33333%}.column.is-11-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11-desktop{margin-left:91.66667%}.column.is-12-desktop{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12-desktop{margin-left:100%}}@media screen and (min-width:1192px){.column.is-narrow-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none}.column.is-full-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-three-quarters-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-two-thirds-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.6666%}.column.is-half-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-one-third-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.3333%}.column.is-one-quarter-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-three-quarters-widescreen{margin-left:75%}.column.is-offset-two-thirds-widescreen{margin-left:66.6666%}.column.is-offset-half-widescreen{margin-left:50%}.column.is-offset-one-third-widescreen{margin-left:33.3333%}.column.is-offset-one-quarter-widescreen{margin-left:25%}.column.is-1-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.column.is-offset-1-widescreen{margin-left:8.33333%}.column.is-2-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.column.is-offset-2-widescreen{margin-left:16.66667%}.column.is-3-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.column.is-offset-3-widescreen{margin-left:25%}.column.is-4-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.column.is-offset-4-widescreen{margin-left:33.33333%}.column.is-5-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.column.is-offset-5-widescreen{margin-left:41.66667%}.column.is-6-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.column.is-offset-6-widescreen{margin-left:50%}.column.is-7-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.column.is-offset-7-widescreen{margin-left:58.33333%}.column.is-8-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.column.is-offset-8-widescreen{margin-left:66.66667%}.column.is-9-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.column.is-offset-9-widescreen{margin-left:75%}.column.is-10-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.column.is-offset-10-widescreen{margin-left:83.33333%}.column.is-11-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.column.is-offset-11-widescreen{margin-left:91.66667%}.column.is-12-widescreen{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}.column.is-offset-12-widescreen{margin-left:100%}}.columns{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.columns:last-child{margin-bottom:-.75rem}.columns:not(:last-child){margin-bottom:.75rem}.columns.is-centered{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.columns.is-gapless{margin-left:0;margin-right:0;margin-top:0}.columns.is-gapless:last-child{margin-bottom:0}.columns.is-gapless:not(:last-child){margin-bottom:1.5rem}.columns.is-gapless>.column{margin:0;padding:0}@media screen and (min-width:769px){.columns.is-grid{-ms-flex-wrap:wrap;flex-wrap:wrap}.columns.is-grid>.column{max-width:33.3333%;padding:.75rem;width:33.3333%}.columns.is-grid>.column+.column{margin-left:0}}.columns.is-mobile{display:-webkit-box;display:-ms-flexbox;display:flex}.columns.is-multiline{-ms-flex-wrap:wrap;flex-wrap:wrap}.columns.is-vcentered{-webkit-box-align:center;-ms-flex-align:center;align-items:center}@media screen and (min-width:769px){.columns:not(.is-desktop){display:-webkit-box;display:-ms-flexbox;display:flex}}@media screen and (min-width:1000px){.columns.is-desktop{display:-webkit-box;display:-ms-flexbox;display:flex}}.tile{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;display:block;-ms-flex-preferred-size:0;flex-basis:0;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1;min-height:-webkit-min-content;min-height:-moz-min-content;min-height:min-content}.tile.is-ancestor{margin-left:-.75rem;margin-right:-.75rem;margin-top:-.75rem}.tile.is-ancestor:last-child{margin-bottom:-.75rem}.tile.is-ancestor:not(:last-child){margin-bottom:.75rem}.tile.is-child{margin:0 !important}.tile.is-parent{padding:.75rem}.tile.is-vertical{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.tile.is-vertical>.tile.is-child:not(:last-child){margin-bottom:1.5rem !important}@media screen and (min-width:769px){.tile:not(.is-child){display:-webkit-box;display:-ms-flexbox;display:flex}.tile.is-1{-webkit-box-flex:0;-ms-flex:none;flex:none;width:8.33333%}.tile.is-2{-webkit-box-flex:0;-ms-flex:none;flex:none;width:16.66667%}.tile.is-3{-webkit-box-flex:0;-ms-flex:none;flex:none;width:25%}.tile.is-4{-webkit-box-flex:0;-ms-flex:none;flex:none;width:33.33333%}.tile.is-5{-webkit-box-flex:0;-ms-flex:none;flex:none;width:41.66667%}.tile.is-6{-webkit-box-flex:0;-ms-flex:none;flex:none;width:50%}.tile.is-7{-webkit-box-flex:0;-ms-flex:none;flex:none;width:58.33333%}.tile.is-8{-webkit-box-flex:0;-ms-flex:none;flex:none;width:66.66667%}.tile.is-9{-webkit-box-flex:0;-ms-flex:none;flex:none;width:75%}.tile.is-10{-webkit-box-flex:0;-ms-flex:none;flex:none;width:83.33333%}.tile.is-11{-webkit-box-flex:0;-ms-flex:none;flex:none;width:91.66667%}.tile.is-12{-webkit-box-flex:0;-ms-flex:none;flex:none;width:100%}}.hero-video{bottom:0;left:0;position:absolute;right:0;top:0;overflow:hidden}.hero-video video{left:50%;min-height:100%;min-width:100%;position:absolute;top:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.hero-video.is-transparent{opacity:.3}@media screen and (max-width:768px){.hero-video{display:none}}.hero-buttons{margin-top:1.5rem}@media screen and (max-width:768px){.hero-buttons .button{display:-webkit-box;display:-ms-flexbox;display:flex}.hero-buttons .button:not(:last-child){margin-bottom:.75rem}}@media screen and (min-width:769px){.hero-buttons{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.hero-buttons .button:not(:last-child){margin-right:1.5rem}}.hero-head,.hero-foot{-webkit-box-flex:0;-ms-flex-positive:0;flex-grow:0;-ms-flex-negative:0;flex-shrink:0}.hero-body{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:0;flex-shrink:0;padding:3rem 1.5rem}@media screen and (min-width:1192px){.hero-body{padding-left:0;padding-right:0}}.hero{-webkit-box-align:stretch;-ms-flex-align:stretch;align-items:stretch;background-color:#fff;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.hero .nav{background:0 0;box-shadow:0 1px 0 rgba(219,219,219,.3)}.hero .tabs ul{border-bottom:none}.hero.is-white{background-color:#fff;color:#0a0a0a}.hero.is-white a,.hero.is-white strong{color:inherit}.hero.is-white .title{color:#0a0a0a}.hero.is-white .subtitle{color:rgba(10,10,10,.9)}.hero.is-white .subtitle a,.hero.is-white .subtitle strong{color:#0a0a0a}.hero.is-white .nav{box-shadow:0 1px 0 rgba(10,10,10,.2)}@media screen and (max-width:768px){.hero.is-white .nav-menu{background-color:#fff}}.hero.is-white a.nav-item,.hero.is-white .nav-item a:not(.button){color:rgba(10,10,10,.7)}.hero.is-white a.nav-item:hover,.hero.is-white a.nav-item.is-active,.hero.is-white .nav-item a:not(.button):hover,.hero.is-white .nav-item a:not(.button).is-active{color:#0a0a0a}.hero.is-white .tabs a{color:#0a0a0a;opacity:.9}.hero.is-white .tabs a:hover{opacity:1}.hero.is-white .tabs li.is-active a{opacity:1}.hero.is-white .tabs.is-boxed a,.hero.is-white .tabs.is-toggle a{color:#0a0a0a}.hero.is-white .tabs.is-boxed a:hover,.hero.is-white .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-white .tabs.is-boxed li.is-active a,.hero.is-white .tabs.is-boxed li.is-active a:hover,.hero.is-white .tabs.is-toggle li.is-active a,.hero.is-white .tabs.is-toggle li.is-active a:hover{background-color:#0a0a0a;border-color:#0a0a0a;color:#fff}.hero.is-white.is-bold{background-image:-webkit-linear-gradient(309deg,#e6e6e6 0%,#fff 71%,#fff 100%);background-image:linear-gradient(141deg,#e6e6e6 0%,#fff 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-white .nav-toggle span{background-color:#0a0a0a}.hero.is-white .nav-toggle:hover{background-color:rgba(10,10,10,.1)}.hero.is-white .nav-toggle.is-active span{background-color:#0a0a0a}.hero.is-white .nav-menu .nav-item{border-top-color:rgba(10,10,10,.2)}}.hero.is-black{background-color:#0a0a0a;color:#fff}.hero.is-black a,.hero.is-black strong{color:inherit}.hero.is-black .title{color:#fff}.hero.is-black .subtitle{color:rgba(255,255,255,.9)}.hero.is-black .subtitle a,.hero.is-black .subtitle strong{color:#fff}.hero.is-black .nav{box-shadow:0 1px 0 rgba(255,255,255,.2)}@media screen and (max-width:768px){.hero.is-black .nav-menu{background-color:#0a0a0a}}.hero.is-black a.nav-item,.hero.is-black .nav-item a:not(.button){color:rgba(255,255,255,.7)}.hero.is-black a.nav-item:hover,.hero.is-black a.nav-item.is-active,.hero.is-black .nav-item a:not(.button):hover,.hero.is-black .nav-item a:not(.button).is-active{color:#fff}.hero.is-black .tabs a{color:#fff;opacity:.9}.hero.is-black .tabs a:hover{opacity:1}.hero.is-black .tabs li.is-active a{opacity:1}.hero.is-black .tabs.is-boxed a,.hero.is-black .tabs.is-toggle a{color:#fff}.hero.is-black .tabs.is-boxed a:hover,.hero.is-black .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-black .tabs.is-boxed li.is-active a,.hero.is-black .tabs.is-boxed li.is-active a:hover,.hero.is-black .tabs.is-toggle li.is-active a,.hero.is-black .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#0a0a0a}.hero.is-black.is-bold{background-image:-webkit-linear-gradient(309deg,#000 0%,#0a0a0a 71%,#181616 100%);background-image:linear-gradient(141deg,#000 0%,#0a0a0a 71%,#181616 100%)}@media screen and (max-width:768px){.hero.is-black .nav-toggle span{background-color:#fff}.hero.is-black .nav-toggle:hover{background-color:rgba(10,10,10,.1)}.hero.is-black .nav-toggle.is-active span{background-color:#fff}.hero.is-black .nav-menu .nav-item{border-top-color:rgba(255,255,255,.2)}}.hero.is-light{background-color:#f5f5f5;color:#363636}.hero.is-light a,.hero.is-light strong{color:inherit}.hero.is-light .title{color:#363636}.hero.is-light .subtitle{color:rgba(54,54,54,.9)}.hero.is-light .subtitle a,.hero.is-light .subtitle strong{color:#363636}.hero.is-light .nav{box-shadow:0 1px 0 rgba(54,54,54,.2)}@media screen and (max-width:768px){.hero.is-light .nav-menu{background-color:#f5f5f5}}.hero.is-light a.nav-item,.hero.is-light .nav-item a:not(.button){color:rgba(54,54,54,.7)}.hero.is-light a.nav-item:hover,.hero.is-light a.nav-item.is-active,.hero.is-light .nav-item a:not(.button):hover,.hero.is-light .nav-item a:not(.button).is-active{color:#363636}.hero.is-light .tabs a{color:#363636;opacity:.9}.hero.is-light .tabs a:hover{opacity:1}.hero.is-light .tabs li.is-active a{opacity:1}.hero.is-light .tabs.is-boxed a,.hero.is-light .tabs.is-toggle a{color:#363636}.hero.is-light .tabs.is-boxed a:hover,.hero.is-light .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-light .tabs.is-boxed li.is-active a,.hero.is-light .tabs.is-boxed li.is-active a:hover,.hero.is-light .tabs.is-toggle li.is-active a,.hero.is-light .tabs.is-toggle li.is-active a:hover{background-color:#363636;border-color:#363636;color:#f5f5f5}.hero.is-light.is-bold{background-image:-webkit-linear-gradient(309deg,#dfd8d8 0%,#f5f5f5 71%,#fff 100%);background-image:linear-gradient(141deg,#dfd8d8 0%,#f5f5f5 71%,#fff 100%)}@media screen and (max-width:768px){.hero.is-light .nav-toggle span{background-color:#363636}.hero.is-light .nav-toggle:hover{background-color:rgba(10,10,10,.1)}.hero.is-light .nav-toggle.is-active span{background-color:#363636}.hero.is-light .nav-menu .nav-item{border-top-color:rgba(54,54,54,.2)}}.hero.is-dark{background-color:#363636;color:#f5f5f5}.hero.is-dark a,.hero.is-dark strong{color:inherit}.hero.is-dark .title{color:#f5f5f5}.hero.is-dark .subtitle{color:rgba(245,245,245,.9)}.hero.is-dark .subtitle a,.hero.is-dark .subtitle strong{color:#f5f5f5}.hero.is-dark .nav{box-shadow:0 1px 0 rgba(245,245,245,.2)}@media screen and (max-width:768px){.hero.is-dark .nav-menu{background-color:#363636}}.hero.is-dark a.nav-item,.hero.is-dark .nav-item a:not(.button){color:rgba(245,245,245,.7)}.hero.is-dark a.nav-item:hover,.hero.is-dark a.nav-item.is-active,.hero.is-dark .nav-item a:not(.button):hover,.hero.is-dark .nav-item a:not(.button).is-active{color:#f5f5f5}.hero.is-dark .tabs a{color:#f5f5f5;opacity:.9}.hero.is-dark .tabs a:hover{opacity:1}.hero.is-dark .tabs li.is-active a{opacity:1}.hero.is-dark .tabs.is-boxed a,.hero.is-dark .tabs.is-toggle a{color:#f5f5f5}.hero.is-dark .tabs.is-boxed a:hover,.hero.is-dark .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-dark .tabs.is-boxed li.is-active a,.hero.is-dark .tabs.is-boxed li.is-active a:hover,.hero.is-dark .tabs.is-toggle li.is-active a,.hero.is-dark .tabs.is-toggle li.is-active a:hover{background-color:#f5f5f5;border-color:#f5f5f5;color:#363636}.hero.is-dark.is-bold{background-image:-webkit-linear-gradient(309deg,#1f1919 0%,#363636 71%,#463f3f 100%);background-image:linear-gradient(141deg,#1f1919 0%,#363636 71%,#463f3f 100%)}@media screen and (max-width:768px){.hero.is-dark .nav-toggle span{background-color:#f5f5f5}.hero.is-dark .nav-toggle:hover{background-color:rgba(10,10,10,.1)}.hero.is-dark .nav-toggle.is-active span{background-color:#f5f5f5}.hero.is-dark .nav-menu .nav-item{border-top-color:rgba(245,245,245,.2)}}.hero.is-primary{background-color:#00d1b2;color:#fff}.hero.is-primary a,.hero.is-primary strong{color:inherit}.hero.is-primary .title{color:#fff}.hero.is-primary .subtitle{color:rgba(255,255,255,.9)}.hero.is-primary .subtitle a,.hero.is-primary .subtitle strong{color:#fff}.hero.is-primary .nav{box-shadow:0 1px 0 rgba(255,255,255,.2)}@media screen and (max-width:768px){.hero.is-primary .nav-menu{background-color:#00d1b2}}.hero.is-primary a.nav-item,.hero.is-primary .nav-item a:not(.button){color:rgba(255,255,255,.7)}.hero.is-primary a.nav-item:hover,.hero.is-primary a.nav-item.is-active,.hero.is-primary .nav-item a:not(.button):hover,.hero.is-primary .nav-item a:not(.button).is-active{color:#fff}.hero.is-primary .tabs a{color:#fff;opacity:.9}.hero.is-primary .tabs a:hover{opacity:1}.hero.is-primary .tabs li.is-active a{opacity:1}.hero.is-primary .tabs.is-boxed a,.hero.is-primary .tabs.is-toggle a{color:#fff}.hero.is-primary .tabs.is-boxed a:hover,.hero.is-primary .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-primary .tabs.is-boxed li.is-active a,.hero.is-primary .tabs.is-boxed li.is-active a:hover,.hero.is-primary .tabs.is-toggle li.is-active a,.hero.is-primary .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#00d1b2}.hero.is-primary.is-bold{background-image:-webkit-linear-gradient(309deg,#009e6c 0%,#00d1b2 71%,#00e7eb 100%);background-image:linear-gradient(141deg,#009e6c 0%,#00d1b2 71%,#00e7eb 100%)}@media screen and (max-width:768px){.hero.is-primary .nav-toggle span{background-color:#fff}.hero.is-primary .nav-toggle:hover{background-color:rgba(10,10,10,.1)}.hero.is-primary .nav-toggle.is-active span{background-color:#fff}.hero.is-primary .nav-menu .nav-item{border-top-color:rgba(255,255,255,.2)}}.hero.is-info{background-color:#3273dc;color:#fff}.hero.is-info a,.hero.is-info strong{color:inherit}.hero.is-info .title{color:#fff}.hero.is-info .subtitle{color:rgba(255,255,255,.9)}.hero.is-info .subtitle a,.hero.is-info .subtitle strong{color:#fff}.hero.is-info .nav{box-shadow:0 1px 0 rgba(255,255,255,.2)}@media screen and (max-width:768px){.hero.is-info .nav-menu{background-color:#3273dc}}.hero.is-info a.nav-item,.hero.is-info .nav-item a:not(.button){color:rgba(255,255,255,.7)}.hero.is-info a.nav-item:hover,.hero.is-info a.nav-item.is-active,.hero.is-info .nav-item a:not(.button):hover,.hero.is-info .nav-item a:not(.button).is-active{color:#fff}.hero.is-info .tabs a{color:#fff;opacity:.9}.hero.is-info .tabs a:hover{opacity:1}.hero.is-info .tabs li.is-active a{opacity:1}.hero.is-info .tabs.is-boxed a,.hero.is-info .tabs.is-toggle a{color:#fff}.hero.is-info .tabs.is-boxed a:hover,.hero.is-info .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-info .tabs.is-boxed li.is-active a,.hero.is-info .tabs.is-boxed li.is-active a:hover,.hero.is-info .tabs.is-toggle li.is-active a,.hero.is-info .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#3273dc}.hero.is-info.is-bold{background-image:-webkit-linear-gradient(309deg,#1577c6 0%,#3273dc 71%,#4366e5 100%);background-image:linear-gradient(141deg,#1577c6 0%,#3273dc 71%,#4366e5 100%)}@media screen and (max-width:768px){.hero.is-info .nav-toggle span{background-color:#fff}.hero.is-info .nav-toggle:hover{background-color:rgba(10,10,10,.1)}.hero.is-info .nav-toggle.is-active span{background-color:#fff}.hero.is-info .nav-menu .nav-item{border-top-color:rgba(255,255,255,.2)}}.hero.is-success{background-color:#23d160;color:#fff}.hero.is-success a,.hero.is-success strong{color:inherit}.hero.is-success .title{color:#fff}.hero.is-success .subtitle{color:rgba(255,255,255,.9)}.hero.is-success .subtitle a,.hero.is-success .subtitle strong{color:#fff}.hero.is-success .nav{box-shadow:0 1px 0 rgba(255,255,255,.2)}@media screen and (max-width:768px){.hero.is-success .nav-menu{background-color:#23d160}}.hero.is-success a.nav-item,.hero.is-success .nav-item a:not(.button){color:rgba(255,255,255,.7)}.hero.is-success a.nav-item:hover,.hero.is-success a.nav-item.is-active,.hero.is-success .nav-item a:not(.button):hover,.hero.is-success .nav-item a:not(.button).is-active{color:#fff}.hero.is-success .tabs a{color:#fff;opacity:.9}.hero.is-success .tabs a:hover{opacity:1}.hero.is-success .tabs li.is-active a{opacity:1}.hero.is-success .tabs.is-boxed a,.hero.is-success .tabs.is-toggle a{color:#fff}.hero.is-success .tabs.is-boxed a:hover,.hero.is-success .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-success .tabs.is-boxed li.is-active a,.hero.is-success .tabs.is-boxed li.is-active a:hover,.hero.is-success .tabs.is-toggle li.is-active a,.hero.is-success .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#23d160}.hero.is-success.is-bold{background-image:-webkit-linear-gradient(309deg,#12af2f 0%,#23d160 71%,#2ce28a 100%);background-image:linear-gradient(141deg,#12af2f 0%,#23d160 71%,#2ce28a 100%)}@media screen and (max-width:768px){.hero.is-success .nav-toggle span{background-color:#fff}.hero.is-success .nav-toggle:hover{background-color:rgba(10,10,10,.1)}.hero.is-success .nav-toggle.is-active span{background-color:#fff}.hero.is-success .nav-menu .nav-item{border-top-color:rgba(255,255,255,.2)}}.hero.is-warning{background-color:#ffdd57;color:rgba(0,0,0,.7)}.hero.is-warning a,.hero.is-warning strong{color:inherit}.hero.is-warning .title{color:rgba(0,0,0,.7)}.hero.is-warning .subtitle{color:rgba(0,0,0,.9)}.hero.is-warning .subtitle a,.hero.is-warning .subtitle strong{color:rgba(0,0,0,.7)}.hero.is-warning .nav{box-shadow:0 1px 0 rgba(0,0,0,.2)}@media screen and (max-width:768px){.hero.is-warning .nav-menu{background-color:#ffdd57}}.hero.is-warning a.nav-item,.hero.is-warning .nav-item a:not(.button){color:rgba(0,0,0,.7)}.hero.is-warning a.nav-item:hover,.hero.is-warning a.nav-item.is-active,.hero.is-warning .nav-item a:not(.button):hover,.hero.is-warning .nav-item a:not(.button).is-active{color:rgba(0,0,0,.7)}.hero.is-warning .tabs a{color:rgba(0,0,0,.7);opacity:.9}.hero.is-warning .tabs a:hover{opacity:1}.hero.is-warning .tabs li.is-active a{opacity:1}.hero.is-warning .tabs.is-boxed a,.hero.is-warning .tabs.is-toggle a{color:rgba(0,0,0,.7)}.hero.is-warning .tabs.is-boxed a:hover,.hero.is-warning .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-warning .tabs.is-boxed li.is-active a,.hero.is-warning .tabs.is-boxed li.is-active a:hover,.hero.is-warning .tabs.is-toggle li.is-active a,.hero.is-warning .tabs.is-toggle li.is-active a:hover{background-color:rgba(0,0,0,.7);border-color:rgba(0,0,0,.7);color:#ffdd57}.hero.is-warning.is-bold{background-image:-webkit-linear-gradient(309deg,#ffaf24 0%,#ffdd57 71%,#fffa70 100%);background-image:linear-gradient(141deg,#ffaf24 0%,#ffdd57 71%,#fffa70 100%)}@media screen and (max-width:768px){.hero.is-warning .nav-toggle span{background-color:rgba(0,0,0,.7)}.hero.is-warning .nav-toggle:hover{background-color:rgba(10,10,10,.1)}.hero.is-warning .nav-toggle.is-active span{background-color:rgba(0,0,0,.7)}.hero.is-warning .nav-menu .nav-item{border-top-color:rgba(0,0,0,.2)}}.hero.is-danger{background-color:#ff3860;color:#fff}.hero.is-danger a,.hero.is-danger strong{color:inherit}.hero.is-danger .title{color:#fff}.hero.is-danger .subtitle{color:rgba(255,255,255,.9)}.hero.is-danger .subtitle a,.hero.is-danger .subtitle strong{color:#fff}.hero.is-danger .nav{box-shadow:0 1px 0 rgba(255,255,255,.2)}@media screen and (max-width:768px){.hero.is-danger .nav-menu{background-color:#ff3860}}.hero.is-danger a.nav-item,.hero.is-danger .nav-item a:not(.button){color:rgba(255,255,255,.7)}.hero.is-danger a.nav-item:hover,.hero.is-danger a.nav-item.is-active,.hero.is-danger .nav-item a:not(.button):hover,.hero.is-danger .nav-item a:not(.button).is-active{color:#fff}.hero.is-danger .tabs a{color:#fff;opacity:.9}.hero.is-danger .tabs a:hover{opacity:1}.hero.is-danger .tabs li.is-active a{opacity:1}.hero.is-danger .tabs.is-boxed a,.hero.is-danger .tabs.is-toggle a{color:#fff}.hero.is-danger .tabs.is-boxed a:hover,.hero.is-danger .tabs.is-toggle a:hover{background-color:rgba(10,10,10,.1)}.hero.is-danger .tabs.is-boxed li.is-active a,.hero.is-danger .tabs.is-boxed li.is-active a:hover,.hero.is-danger .tabs.is-toggle li.is-active a,.hero.is-danger .tabs.is-toggle li.is-active a:hover{background-color:#fff;border-color:#fff;color:#ff3860}.hero.is-danger.is-bold{background-image:-webkit-linear-gradient(309deg,#ff0561 0%,#ff3860 71%,#ff5257 100%);background-image:linear-gradient(141deg,#ff0561 0%,#ff3860 71%,#ff5257 100%)}@media screen and (max-width:768px){.hero.is-danger .nav-toggle span{background-color:#fff}.hero.is-danger .nav-toggle:hover{background-color:rgba(10,10,10,.1)}.hero.is-danger .nav-toggle.is-active span{background-color:#fff}.hero.is-danger .nav-menu .nav-item{border-top-color:rgba(255,255,255,.2)}}@media screen and (min-width:769px){.hero.is-medium .hero-body{padding-bottom:9rem;padding-top:9rem}}@media screen and (min-width:769px){.hero.is-large .hero-body{padding-bottom:18rem;padding-top:18rem}}.hero.is-fullheight{min-height:100vh}.hero.is-fullheight .hero-body{-webkit-box-align:center;-ms-flex-align:center;align-items:center;display:-webkit-box;display:-ms-flexbox;display:flex}.hero.is-fullheight .hero-body>.container{-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;-ms-flex-negative:1;flex-shrink:1}.section{background-color:#fff;padding:3rem 1.5rem}@media screen and (min-width:1000px){.section.is-medium{padding:9rem 1.5rem}.section.is-large{padding:18rem 1.5rem}}.footer{background-color:#f5f5f5;padding:3rem 1.5rem 6rem} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/calc.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/calc.css
new file mode 100644
index 0000000..b595a50
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/calc.css
@@ -0,0 +1 @@
+.foo{margin-right:calc(-.375em - 1px);width:calc(100%/3 - 2*1em - 2*1px + 10 mod 2);margin:calc(1rem - 2px) calc(1rem + 1px)}.bar{margin:calc(5*calc(10px + 2em)) calc(10 + (5px + 10px - (10em - 3em)));padding-top:calc(5*(2em + -1px))}input{width:calc(100% - (1em*1.5))}p{font-size:-webkit-calc(20px + 1vw);font-size:-moz-calc(20px + 1vw);font-size:calc(20px + 1vw)} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/colors.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/colors.css
new file mode 100644
index 0000000..0ffbb04
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/colors.css
@@ -0,0 +1 @@
+#\:white a[black=":white;"]{background-image:url(assets/images/white.png);color:#fff;white-space:normal;color:#f5f5f5;background:#fff;background:border-box #f0f;background:linear-gradient(to left top,#000,pink 60%,#8a2be2);background-color:#000;text-shadow:1px 1px 2px #000;text-shadow:#fff 2px 5px;box-shadow:3px 3px #ff0,-1em 0 .4em #f0f;outline:1px solid #fff;outline-color:#ff0;box:#000 #fff,#ff0;utline-color:#000 #fff,#ff0;border:1px dotted #663399;border-color:#9acd32;border-bottom:3px solid #ffffe0;border-right-color:#f8f8ff}b{color:ivory;color:red}.color{impressed:#fed;again:#abcdef;andagain:#a6c;background-color:#aa66ccc;filter:chroma(color="#FFFFFF");color:#12a}.foo,#AABBCC{background-color:#abc;border-color:#e6a #abcdef #feab2c;filter:chroma(color=#FFFFFF);filter:chroma(color="#AABBCC");filter:chroma(color='#BBDDEE');color:#123}#AABBCC,#ffffff,#f0f0f0,#f00{background-color:#fe1;filter:chroma(color=#FFFFFF);color:#412;foo:#0f1 #abc #abc #123344;border-color:#aa66ccC}.foo #AABBCC{background-color:#fe1;color:#412;border-color:#abc;filter:chroma(color=#FFFFFF)}.bar,#AABBCC{background-color:#fe1;border-color:#0f1 #abcdef;filter:chroma(color=#11FFFFFF);color:#412}.foo,#AABBCC.foobar{background-color:#fe1;border-color:#0f1 #abcdef #abc;color:#412}@media screen{.bar,#AABBCC{background-color:#fe1;color:#412}}a{background:none repeat scroll 0 0 red;alpha:rgba(1,2,3,4);background-image:linear-gradient(to bottom,tan 10%,red 90%);background-image:linear-gradient(to bottom,red 10%,red 90%);background:linear-gradient(to bottom,red,red);color:#e6ccc3;color:red;color:red;test-overflow:#fff}d{alpha:rgba(1,2,3,4);border-color:rgba(1,2,3,4)}*{color:red;color:#03ff03;color:#1c1c24;color:#e4e4f1;color:#212121} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/comments.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/comments.css
new file mode 100644
index 0000000..a80f165
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/comments.css
@@ -0,0 +1,28 @@
+/*! test */
+/*! $LastChangedRevision: 81 $ $LastChangedDate: 2009-05-27 17:41:02 +0100 (Wed, 27 May 2009) $ */
+/*!
+$Header: /temp/dirname/filename.css 3 2/02/08 3:37p JSmith $
+*/
+/*! special */
+/*! special */
+a{color:blue;width:5px;height:5px;margin:0}
+/*!************88****
+ Preserving comments
+ as they are
+ ********************
+ Keep the initial !
+ *******************/
+#yo{ma:"ma"}
+/*!
+I said
+pre-
+serve! */
+a{color:red}
+/*! imp*/
+b{test:foo}
+/*! imp */
+html>/**/body p{color:blue;*width:auto;height:2%}a{a:1}
+/*!"preserve" me*/
+b{content:"/**/"}c{c:3}
+/*! imp */
+/* unclosed comment at EOF issue \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-doublequotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-doublequotes.css
new file mode 100644
index 0000000..7193517
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-doublequotes.css
@@ -0,0 +1 @@
+.yui3-skin-night .yui3-dial-ring-vml,.yui3-skin-night .yui3-dial-center-button-vml,.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,.yui3-skin-night v\:oval.yui3-dial-marker-max-min,.yui3-skin-night .yui3-dial-marker-vml,.yui3-skin-night .yui3-dial-handle-vml{background:0 0;opacity:1}div.base64-doublequotes{width:100px;height:100px;background-image:url("data:image/jpeg;base64,%2F9j%2F4AAQSkZJRgABAgEAZABkAAD%2F4RfJRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAAD0JAAAAnEAAPQkAAACcQQWRvYmUgUGhvdG9zaG9wIENTMiBNYWNpbnRvc2gAMjAwODowNzoxOSAxNDo1ODowNQAAA6ABAAMAAAAB%2F%2F8AAKACAAQAAAABAAABwqADAAQAAAABAAABRQAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABaTAAAAAAAAAEgAAAABAAAASAAAAAH%2F2P%2FgABBKRklGAAECAABIAEgAAP%2FtAAxBZG9iZV9DTQAC%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgAdACgAwEiAAIRAQMRAf%2FdAAQACv%2FEAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5%2FcRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14%2FNGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x%2F%2FaAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkklKSSSSUs4uDSWiXRoOJKFi3Ovx2Wvbse4e5gMwRo5soypdOyN9mTSRHpWvj4Oc4%2FwDVf9WkpupJJJKUkkkkpSSSSSlJJJJKUkkkkp%2F%2F0PVUklCqxttbbG%2FReA4fApKZpJJJKUo2WNrrdY8w1gLnHyAlVOsWvowXZDZ%2FQOZa8D9xrmm3%2FNr3PUswm%2FpmQGamyl4bHiWuhJTYqsFtTLBw9od94U1Q6FkfaOk4tszuqYfwV9JSll1%2FoOt2sOguDXgeTm7f%2FPmN%2FwCCLUWZ1VhrysbKA%2Bjua7zgtuZ%2F1FqIUXTSQcvKZi47sh7XOY0tBDYJhzms3akfR3blVd13prMtuI%2Bwse%2F6L3Ahm7n0%2FU%2Bi2zafzkFOgq9%2Bdj0ZFOM4k3ZDtrGNEnhzt7v3WbWPU8bJpyavVpduZuc2eNWONb2%2F2XtXOY2VU7rA6hnO9RuJS%2Br1hO1lguGJbuYz2extvv3fzLPU%2FwCESU9QkkkkpSSSSSlJJJJKf%2F%2FR9VWf0iwiu3Ff9LGsewT%2B6D7P%2FAyxy0FmunH6xPDMpgd%2FbZFT%2FwDoOx%2F%2B20Qp0lC02CtxqALwDtB4J8FNJBTVovx%2Bo4jvbLLGlltTuRMssrf%2FANJiz%2BhZDqMO%2FEyCX2dOc6t%2Bkuc1gmt%2B3%2FhaPTeoZ5s6R1IZrBGDlkNvI%2BjXcYYyx%2F7tWV9B%2FwDw%2FwDwlyD1LqWH0jq2N1O55rxOogY1rwC4C9uuP6mzdt9Wl1v6T%2Bb%2FAFdFS%2F1Myq%2F2VThusa%2B2tst2k6sPuY73Brm%2Fo3Vv2fy%2F3F0S4TAzq%2Bm%2FWDquKGnbhWOya62DUUlrcmyulktZ6f2ey19Wz8%2F2Ls2Z%2BFYx1jL6yxgBe%2FcIAI3CXfNIqZX3ursqqrZ6j7TqJgNY2PUsPP0dypfWJ%2Fo9NOT2xrarHTxs3tZkf%2By77VR6v9bejdNsbkb3Zbqm2sfVjgOOhrdZFljqsffXs%2FmvV9V%2F%2BDXHdZ%2BuvU8zA6i%2Bj02Y1zawaZLt2LY21tltb7XOb6j6%2FwDR1V%2FzV36v6rPVYFU%2BiCs5PS7cd43O2WUOB77d1X%2FT27lwvVnNyKK8d15q6hij207o9dg3DHdW9m9zLv8AQ%2F4Wu71K%2FTtr9aqzJ%2BuHV8tmR0zNoyLvsXU8Nr7cdtjmtN1J9K%2B2podsbk1%2Fo%2F8A0YsnG6te%2BnLZbdXXY6pttADNwucwmhv2cWbv0tnr%2FpKnfpKbKf8AtsqD1DvrjnfV70cKlldgzgbqjf7QHB3p2sG0sb6lv0%2FfZ6TEcZg630xz2vezK6jVbfhVtf6biQ%2BxltmNY7a2z9Js3Vu%2FwayvrHh1%2BhhdKv3XubjBhY9wDbHtPpOdXkOH6t1Dd%2FRsl%2F6C%2FwDomV7Fg9Wc%2FF%2Bq3RL6biben5WVjh4lljdxbexltf06La9vvp%2FM%2FwAFZ%2FhEuqn0r6lfXM9WYzpvVoo6wxvcbBcGj9Ltr09LLoj9bxf%2BvU%2Fof5mz9avrJd0%2B2jBwHAZTrcd17iA7bVZa2nY0H%2FCXw9v%2FAAdf%2FWl5zidQZ9ZcY3l3oddwg2z1mHZ6zWfQv3t2%2Bnk0%2FwCn%2FwDRf8xf6Df1DqvXGZ%2Be5tzsi7Gd6lm2kPsqNbqqOG1%2F4Cuxnpt%2FS7%2F9I9ALjR1Gh7f96%2BuJJpA1KZj2WNDmODmnhwMhJaySSSSU%2FwD%2F0vVVn9airFGYSGjEcLXuOkV%2Fzd5J%2FdZU%2FwBX%2Fra0EHM9D7Jf9pE4%2Fpv9YHX2bT6mn9RIKcE9U6lgXnJDv2l0jN%2FS497S39C530sOyxn%2BBc%2F%2Bh5P83%2F2kyfS%2FR5NlPrv16uwczExsPHFozLBRWHz6rriWM9Ouv6Hs9T3vseue6B9buoZF5xBU84BDC%2BtoZYW1PczG%2B02Gxm71Gb2XP2fod7P5mtct167q%2FT87Gdfk%2FbscWHI6V1NrQNGu3O2NZ6fp5FN9dTcrH3epR6f9RKwRYXzhKEuGYo%2FxfSMvM6lZlF%2FVfSobU11Q9MGyqLfa%2BrP9PJsr9Kz09n6bGq%2F7dWN1z9VxC3KfZT0%2B%2BPUyGg5NIaPdU7ezZe7KxPR%2FR5Gyr1sX9Db6%2FwDguZx%2Bv352be4WNwft%2B9tb2n21mza%2F07Xn2%2Fp7qmVep6dbP0vqfolqZD7mY91eDmXh9pBAZDGjT9awvb%2Bkp3W%2Fp2Mdkfpav1b%2BXUb0WulTeP23h5Di3JL3UYWTYzlzbKn1sc5rN7baM3FZ9pw8xrvSvr%2FQf0im6uvH6vY7G6hfS2mx1WFYaq7bnk%2Bo2r0rKPTa7bustxX20%2Bz%2Blf4RW%2FqPXeM403s%2FQ9LpdbQ4v97Wl4DcW1nud6PqfrH2e9nszMavNx%2Fs9%2F2hA6i5r77HZLH24Tn1W4%2BUwj2Pva3Jdj5bfzaHb8n7Fk%2F4P9YxP0tX8wulqaWfb1CzZ6GaM30622WDD%2FSV1mp3sfY6tjWOsY1tf8776a%2FTQ7s27qFNVIrqwAfUsbZRXt9S0N9Ky1tX83%2Bgre%2F1sej%2FAE1lzKltdDtbi9ZJsqqbTaBXdS0TbW68PycUxNj8qrIbR%2FpPU%2FSb6%2FTyv6VWf0qvOrzmsYasnGzHmk7gx1Za6K2XR7sd%2B5v6K79JXi3bPU%2FV8i71RRU5%2FWaLMv6kYj7SGX9L6g%2BqK%2Fosrymeux1cf4B17fYsrpuPmNxftz63Pcwl9DWDQ2sIqZkNJ%2FNZe6luR6f%2FAAX%2FAAS1f2pXX0vq%2BJln7LfkVVta3ZAfl4929myn%2FA76rLq86r%2Bbo%2F4qyhVruoZfSek4ldmM12Pe227D9XQBtvptu3%2B7d6Vr66Xf2PU%2FwiSnsuqnDyLMfFtMZORj%2BrXSPeHFseo2l7g31La%2FV%2Bh%2F2oq%2FwfqfpFznVcd9uDZivaxzDZXa1zztZaXB1LW%2Bv%2Fgb%2FZVXi5tv83%2FRsj9AsLqfXv2j0%2FpXqPFedgNurfa10F3uqsx8lv8Ao3Obvrf%2FAMT6n%2BFQquq59%2FURec1zb7CHXMc8htmw7n47v8BtucPUb6v6P9Ld69iNoS9H6Vk0Zzcpj3tqqeW1AAtuc%2F8Am7Meyhv6WvZ%2FNZX%2FAIEugzuk14eLiN69fbi49u6wgBjyWNb6dP6IOa52V6vt247P0dD%2FAFP0ajjdc6kBeekYQd1DIs2tsZVZbdVXt9tYqsG9%2B3%2FTPZ%2Bl%2FwBCsajpXV%2BtX2Zwo%2Fal7Wuvv9S0Mea2%2FT2%2BvZ7m1e1j6GV76PZ%2FpK0NE7avpH1Z69ndU6Ti4mP6mVZktBdbkP3uqbWTRkjKuYGb9t1e6v2776rP9Iuyw8VuJjtoaS8tkueeXOcdz3%2F2nLyb6vdZv6DjDKwmVt3lzbsZz3VsZcHluTgX499hfRYxuzJwn%2FznsyKrLLv8H2vT%2Fr9hODK%2BsM%2FZuSWkvrtFjC1wLmvr%2FWKqW%2Fm%2BzbZ%2BkRR4vVpKn03q%2FTeq47Mnp%2BQy%2Bt7WvG0%2B4Bw3N9Ss%2FpK%2F%2BuNVxBT%2FAP%2FT9VTOa17SxwDmuBDmnUEHsU6SSnxf6x9CzPqt1ECix7GMeben5Q0caneyylzvouto3MruZ%2Fhav0np%2FpFUryaMjFvrzps6dkPbZmUsHvx7zFber4f7rbLP6Wz%2FAEln%2BivYvY%2Bu9L6f1Xpl2H1GG0OG71SQ01uH0b2Pd9B7P%2FUb%2FwBGvH8vpF3T7%2FQpcH5NIea7az6leXSd2%2BzHjdW70qHbMnE%2FwlSZrE2NuzfjKHMY%2BGfpzR2n%2FL9H95wM%2FByOk5hxsgiyuwb6rm613VH6N1X%2FAKMrW10jqbrmHDyHl8MhjY3G6sHd6PO318dv6eiz07fW9P0v%2BOHiPxc6n9j552Ydh3YmVy7FtP5%2Bvvfiu%2Fw%2F%2FB%2Fpf5zehYv1a6pVk5WLnh%2BJZhML6rmiWvsBY6t1Fn0n1NY77Tvp%2FSf8WnijqNWnOEscjGQ4ZB7Oig0fV7Lf01rr8rqR2tez3XPbBx67XsYzayxjbMl9m38%2F9J%2Bl%2FS%2BpzrvUxMWqvqNVuJksx3402zW5oosbdScig725OHd9qY6v%2Bc2ZOLT6Nn88y3e6X1uyk9NexznYd%2BPdi2Mc1lTxl4ztznWu3bKfWZZXbs9T06f0ypdY6J1Hr%2FVH9Wrtpsx6mMqFDS%2F1WisF30XNa5%2B577bf0eyz%2FRV%2BqnHwW1RotDF6xay49Tviks9OHNBAc9g2sfc1m7Zu2%2FoG%2FQxv3PST9Lw2dTblM%2B1W1sdDixoM2vu3f0936Ot3pOZsurp%2FQ5H%2Bj%2FwaJj4GXf052ZjepRjbmOrywNzNjHulh9Meg5zN%2B1lrn%2F4R9fp%2FpFYxcHD6ey6nItdSGAOtdlFwhlh%2FRuHpN3Ppbv8A5xnqemgFOZ1%2FDyMW77T1DIOQy4vra91bqC00en%2BiYx%2F06Nrqnev%2FAIf%2FAEj1WxaG2sxKOo9Mu6iK32UYeOLHML3vLrNrrmu3%2Blv%2FAPRi1cvpl1PUqW3Nfh5VJ34%2BNmO9XEurHu%2FV7t1jGMsYf0noP9n%2FAANqv9Q6W84w630hn2cuFd1jcYGysjS6qzLxmiu3Fyadv896NX%2Bl%2B2eqhSSBQ1u%2Fwed6z9X%2BrtFJH1dZj1agENsqZuIB9EPsvbkW7Wj6eS%2F6fq%2Bj%2BjWOcbNw8hnqdNxq3tizZYXOa4Ty7fkWbmNd%2FObfof4RdpT1fqHUs1rc%2FLfktyRU2vGa4bSHNePtFL3el6VmLlVejZ7f0m%2F1cj%2BZ%2B0WbvSfqn0%2Fq1eTjdRIdlVspsqcxwBqc8PbfW%2BrX376%2FTtf%2FAKH0bcS6v2WJXqulj4YCXEDZqurxn1dxXdRosuw78hnXcR5dSWu22OrY2bqsdn03ZFTt932Oz2ZWL6lVLPWoXS19Hzup9Pq%2BsfTMYty8kn7ZRXDCy5hdVb1DEre%2F9NU79LvxHbLclj7Kf5rIspXE5mPm9J6q%2FLqa82YrmvfVJHqUsd%2BgyqLatln0a%2F03pP8AWxLmerV%2B5j%2Bz%2FU7qvR%2Bp9Cot6QNlLJbZQ5xdZXb9O1l73S99jnu3%2Bq7%2Be%2FnEmN57qv1X6b9c%2Fq99oxWNx%2BuYxcyx7g9rjc2PXxM5t36x6djmt9H1v02L%2Bi9L%2FCVWcz9VPr51npPWX9H%2Bsxuy8bItFNoyDvtot9tIcN%2F06He316P%2FAEKo%2FwAJ9p9hbXW17ntaA98b3AQXQIbuP5y43%2FGB9Q2dfp%2FaXTWtZ1iloEGGjIY3%2FAPe7%2BayG%2F8AafJ%2F6zb%2Bi%2FSUJT2TK66xtraGAAABoAEAbW8fyVJecfUbqP8AjHPV31dXxMjJ6c%2Fay27LaMd1JaNgsoDxX9o9rf0zaW2%2Br%2FPep%2FpPR0lP%2F9T1VJJJJSDNL%2Fsr9geXGABW1rnakD6F36P%2BsuAwumV%2FWXNrxHvcymqh2S7IqLnRa%2B7Jfj2UPcGtqdvyfVspZ7K%2FQ%2By1%2FoaV6Ffj05FZqvYLKyQS13Eg7m%2F9JKimvHprorEV1NDGDwDRtakkEg2NCNnxDqdGb0Lru3qFDHX41rLTWGxVeyR7626tdVmNa%2F1P3LPWr9i2cmzrpY5tdB6gzpL7Kq7WGXPqqf6D8HIc1gZ9upo%2F7T%2FzmVX%2FADXqr0brOF0%2B4135bWVFgc05kD1WMP06ari17q25P81Z%2B%2FX%2Bi%2BnauTysfqnQeoM6h06l91eW2H4jwf1uhgc70Lq3DdV1XGxm78d7%2FwCfo%2FQXfpK7GIRFX4s2fN7vAeGpRjwk93IyOj5VDnN6U5%2FUMa%2FflYlLGuLm%2BqxnpfadrG1tdk302Ufav%2Bs2en%2FNrQ%2Brd9%2BNlNdfS%2FDuDXMy8e7R1bmjfJ%2FkNhl9Nv59KtOeLbMDO6FktJte%2B%2FCstLh%2Bhcaxm4mY5oc5tLMr08XK3st9H7TRd%2FSqPWW11fA%2Fa%2BOOpdOc6jqeMNllYjcdvudjWt9zfVr3b8d%2F%2Fom%2F1E%2B2F5jpf1u6Dj9RyLKcqu3peaf1rF1aGh%2Bhym0XMr91TfZksr%2Fncb%2FSWY9bFTwftfUOpdQwRZvxsDLOLh2uBexrLH21YzLLAHv9K3ZX%2FwAH%2FOLUw%2BnfU%2F6xVDB6lg4%2FTutEFrLaG%2BgLXD%2FC42zY2x%2F%2Blw7f01f8ur9On%2BroyPqllZfThhMsqBZblWhxFjahFLLWE%2B27HZv3sbsr9H9N63%2FBjW1L9J9PDa%2F6udcx%2FU6Ta7bSH6uxLT7W0Oc0%2Fo6HT6mFl1fzX%2BnV9n1R6v07bbhZv2za4w149K0Vk6enkMeWPu2fzn8xVb%2Fwf0F1GVh4mdSW3MD2vbAfA3AH9xyoYmRZ0o%2FY894%2BztBNGS7QbR%2Ba8n6Oz%2FwH%2FttLyRbyPUcXMqzznY2Nfh9TrbZbkkVyxzQBvzm%2Bm04vr7f0d%2Fo2frX%2BD%2FTV2rc%2BrmH0bqHT8fcW%2Fb2Ned1FrmWsaXOZLfRLH01W%2Bpu9L%2BaXUiCJHBWGegM6d1IdU6WzbJi%2FFbAaWuPvdV%2FV%2FnPTStN6U4%2FWfqPk5jhRj2BorDrMXLOjqnge2m1rNrnV3e1lnpf8b%2FO1Urm%2FqLlZH1a%2BseT03IwLa7s97K8nFrY%2Bx9fp%2Bp6OfjupZ6VvT3%2BrY3I%2F0P6Oyn9F%2BjXrKSCFJJJJKUkkkkp%2F%2F9X1VJJJJSkkkklKQM3Dpzcd2PbuAdBa9hLXscNWWVPb9CxjkdJJTxHVfq4Ol5bc%2Bq55dlvLLq2Dax1lprY7IFbP5i63b77Kf9H%2Bk%2FQrpPq%2FcLMAVlgrupcWXM4duBj9I0y7f%2F1f00vrB0hnVunPo%2BjkMmzFtGjq7QC1tlb9Njvd%2FqxS6dWMj0upH9FfbXsyqwIabGwx30%2Ff%2BifW9n9RHopwvrBh4eF1V%2BXkU%2FqmZQQLSB6deYxwux7HAfpGvs9L%2FB%2F8J6ivWVZ2dj4vV8FgfbkY%2Fo5WO8hosrdr3%2Bi6t7nrefWx8b2h20hzZEwR9Fw%2FlIOLg4%2BI652OCxt7vUfWD7Q4%2FScxv5m%2F89K1IujYj8PpWLjWDa%2BusB7SZIcfc5u6XfnFW31seIe0OEzBE6%2FNSSQUpJJJJSkkkklKSSSSUpJJJJT%2FAP%2FW9VSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2F%2FZ%2F%2B01IlBob3Rvc2hvcCAzLjAAOEJJTQQlAAAAAAAQAAAAAAAAAAAAAAAAAAAAADhCSU0D6gAAAAAYEDw%2FeG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8%2BCjwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgo8cGxpc3QgdmVyc2lvbj0iMS4wIj4KPGRpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNSG9yaXpvbnRhbFJlczwva2V5PgoJPGRpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk%2BCgkJCQk8cmVhbD43MjwvcmVhbD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk%2BCgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk%2BCgkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJPGRpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk%2BCgkJCQk8cmVhbD4xPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk%2BCgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q%2BCgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk%2BCgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5PgoJCQkJPHJlYWw%2BMTwvcmVhbD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuc3ViVGlja2V0LnBhcGVyX2luZm9fdGlja2V0PC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PlBNUFBEUGFwZXJDb2RlTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PlBNUFBEUGFwZXJDb2RlTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc%2BTGV0dGVyPC9zdHJpbmc%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BUE1UaW9nYVBhcGVyTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PlBNVGlvZ2FQYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPm5hLWxldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BMC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw%2BCgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTc2PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk%2BCgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw%2BLTE4PC9yZWFsPgoJCQkJCQk8cmVhbD43NzQ8L3JlYWw%2BCgkJCQkJCTxyZWFsPjU5NDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk%2BCgkJCQkJPHN0cmluZz5uYS1sZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk%2BCgkJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhZ2VSZWN0PC9rZXk%2BCgkJPGRpY3Q%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk%2BCgkJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BMC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw%2BCgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTc2PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BLTE4PC9yZWFsPgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw%2BCgkJCQkJCTxyZWFsPjc3NDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTk0PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLnBwZC5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc%2BVVMgTGV0dGVyPC9zdHJpbmc%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5BUElWZXJzaW9uPC9rZXk%2BCgkJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk%2BCgkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvVGlja2V0PC9zdHJpbmc%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuQVBJVmVyc2lvbjwva2V5PgoJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnR5cGU8L2tleT4KCTxzdHJpbmc%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXRUaWNrZXQ8L3N0cmluZz4KPC9kaWN0Pgo8L3BsaXN0Pgo4QklNA%2BkAAAAAAHgAAwAAAEgASAAAAAAC3gJA%2F%2B7%2F7gMGAlIDZwUoA%2FwAAgAAAEgASAAAAAAC2AIoAAEAAABkAAAAAQADAwMAAAABf%2F8AAQABAAAAAAAAAAAAAAAAaAgAGQGQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4QklNA%2B0AAAAAABAAZAAAAAEAAQBkAAAAAQABOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD%2BAAAA4QklNBA0AAAAAAAQAAAAeOEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgABAAAAAAAAAAE4QklNA%2FUAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA%2FgAAAAAAHAAAP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8D6AAAAAD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FA%2BgAAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwPoAAAAAP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA1UAAAAGAAAAAAAAAAAAAAFFAAABwgAAABAAcwB3AGkAcwBzAF8AYQByAG0AeQBfAGsAbgBpAGYAZQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABwgAAAUUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAUUAAAAAUmdodGxvbmcAAAHCAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAFFAAAAAFJnaHRsb25nAAABwgAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAAAQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hUTUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAAC2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91dHNldGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRzZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAAAAE%2F8AAAAAAAADhCSU0EEQAAAAAAAQEAOEJJTQQUAAAAAAAEAAAAAThCSU0EDAAAAAAWrwAAAAEAAACgAAAAdAAAAeAAANmAAAAWkwAYAAH%2F2P%2FgABBKRklGAAECAABIAEgAAP%2FtAAxBZG9iZV9DTQAC%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgAdACgAwEiAAIRAQMRAf%2FdAAQACv%2FEAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5%2FcRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14%2FNGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x%2F%2FaAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkklKSSSSUs4uDSWiXRoOJKFi3Ovx2Wvbse4e5gMwRo5soypdOyN9mTSRHpWvj4Oc4%2FwDVf9WkpupJJJKUkkkkpSSSSSlJJJJKUkkkkp%2F%2F0PVUklCqxttbbG%2FReA4fApKZpJJJKUo2WNrrdY8w1gLnHyAlVOsWvowXZDZ%2FQOZa8D9xrmm3%2FNr3PUswm%2FpmQGamyl4bHiWuhJTYqsFtTLBw9od94U1Q6FkfaOk4tszuqYfwV9JSll1%2FoOt2sOguDXgeTm7f%2FPmN%2FwCCLUWZ1VhrysbKA%2Bjua7zgtuZ%2F1FqIUXTSQcvKZi47sh7XOY0tBDYJhzms3akfR3blVd13prMtuI%2Bwse%2F6L3Ahm7n0%2FU%2Bi2zafzkFOgq9%2Bdj0ZFOM4k3ZDtrGNEnhzt7v3WbWPU8bJpyavVpduZuc2eNWONb2%2F2XtXOY2VU7rA6hnO9RuJS%2Br1hO1lguGJbuYz2extvv3fzLPU%2FwCESU9QkkkkpSSSSSlJJJJKf%2F%2FR9VWf0iwiu3Ff9LGsewT%2B6D7P%2FAyxy0FmunH6xPDMpgd%2FbZFT%2FwDoOx%2F%2B20Qp0lC02CtxqALwDtB4J8FNJBTVovx%2Bo4jvbLLGlltTuRMssrf%2FANJiz%2BhZDqMO%2FEyCX2dOc6t%2Bkuc1gmt%2B3%2FhaPTeoZ5s6R1IZrBGDlkNvI%2BjXcYYyx%2F7tWV9B%2FwDw%2FwDwlyD1LqWH0jq2N1O55rxOogY1rwC4C9uuP6mzdt9Wl1v6T%2Bb%2FAFdFS%2F1Myq%2F2VThusa%2B2tst2k6sPuY73Brm%2Fo3Vv2fy%2F3F0S4TAzq%2Bm%2FWDquKGnbhWOya62DUUlrcmyulktZ6f2ey19Wz8%2F2Ls2Z%2BFYx1jL6yxgBe%2FcIAI3CXfNIqZX3ursqqrZ6j7TqJgNY2PUsPP0dypfWJ%2Fo9NOT2xrarHTxs3tZkf%2By77VR6v9bejdNsbkb3Zbqm2sfVjgOOhrdZFljqsffXs%2FmvV9V%2F%2BDXHdZ%2BuvU8zA6i%2Bj02Y1zawaZLt2LY21tltb7XOb6j6%2FwDR1V%2FzV36v6rPVYFU%2BiCs5PS7cd43O2WUOB77d1X%2FT27lwvVnNyKK8d15q6hij207o9dg3DHdW9m9zLv8AQ%2F4Wu71K%2FTtr9aqzJ%2BuHV8tmR0zNoyLvsXU8Nr7cdtjmtN1J9K%2B2podsbk1%2Fo%2F8A0YsnG6te%2BnLZbdXXY6pttADNwucwmhv2cWbv0tnr%2FpKnfpKbKf8AtsqD1DvrjnfV70cKlldgzgbqjf7QHB3p2sG0sb6lv0%2FfZ6TEcZg630xz2vezK6jVbfhVtf6biQ%2BxltmNY7a2z9Js3Vu%2FwayvrHh1%2BhhdKv3XubjBhY9wDbHtPpOdXkOH6t1Dd%2FRsl%2F6C%2FwDomV7Fg9Wc%2FF%2Bq3RL6biben5WVjh4lljdxbexltf06La9vvp%2FM%2FwAFZ%2FhEuqn0r6lfXM9WYzpvVoo6wxvcbBcGj9Ltr09LLoj9bxf%2BvU%2Fof5mz9avrJd0%2B2jBwHAZTrcd17iA7bVZa2nY0H%2FCXw9v%2FAAdf%2FWl5zidQZ9ZcY3l3oddwg2z1mHZ6zWfQv3t2%2Bnk0%2FwCn%2FwDRf8xf6Df1DqvXGZ%2Be5tzsi7Gd6lm2kPsqNbqqOG1%2F4Cuxnpt%2FS7%2F9I9ALjR1Gh7f96%2BuJJpA1KZj2WNDmODmnhwMhJaySSSSU%2FwD%2F0vVVn9airFGYSGjEcLXuOkV%2Fzd5J%2FdZU%2FwBX%2Fra0EHM9D7Jf9pE4%2Fpv9YHX2bT6mn9RIKcE9U6lgXnJDv2l0jN%2FS497S39C530sOyxn%2BBc%2F%2Bh5P83%2F2kyfS%2FR5NlPrv16uwczExsPHFozLBRWHz6rriWM9Ouv6Hs9T3vseue6B9buoZF5xBU84BDC%2BtoZYW1PczG%2B02Gxm71Gb2XP2fod7P5mtct167q%2FT87Gdfk%2FbscWHI6V1NrQNGu3O2NZ6fp5FN9dTcrH3epR6f9RKwRYXzhKEuGYo%2FxfSMvM6lZlF%2FVfSobU11Q9MGyqLfa%2BrP9PJsr9Kz09n6bGq%2F7dWN1z9VxC3KfZT0%2B%2BPUyGg5NIaPdU7ezZe7KxPR%2FR5Gyr1sX9Db6%2FwDguZx%2Bv352be4WNwft%2B9tb2n21mza%2F07Xn2%2Fp7qmVep6dbP0vqfolqZD7mY91eDmXh9pBAZDGjT9awvb%2Bkp3W%2Fp2Mdkfpav1b%2BXUb0WulTeP23h5Di3JL3UYWTYzlzbKn1sc5rN7baM3FZ9pw8xrvSvr%2FQf0im6uvH6vY7G6hfS2mx1WFYaq7bnk%2Bo2r0rKPTa7bustxX20%2Bz%2Blf4RW%2FqPXeM403s%2FQ9LpdbQ4v97Wl4DcW1nud6PqfrH2e9nszMavNx%2Fs9%2F2hA6i5r77HZLH24Tn1W4%2BUwj2Pva3Jdj5bfzaHb8n7Fk%2F4P9YxP0tX8wulqaWfb1CzZ6GaM30622WDD%2FSV1mp3sfY6tjWOsY1tf8776a%2FTQ7s27qFNVIrqwAfUsbZRXt9S0N9Ky1tX83%2Bgre%2F1sej%2FAE1lzKltdDtbi9ZJsqqbTaBXdS0TbW68PycUxNj8qrIbR%2FpPU%2FSb6%2FTyv6VWf0qvOrzmsYasnGzHmk7gx1Za6K2XR7sd%2B5v6K79JXi3bPU%2FV8i71RRU5%2FWaLMv6kYj7SGX9L6g%2BqK%2Fosrymeux1cf4B17fYsrpuPmNxftz63Pcwl9DWDQ2sIqZkNJ%2FNZe6luR6f%2FAAX%2FAAS1f2pXX0vq%2BJln7LfkVVta3ZAfl4929myn%2FA76rLq86r%2Bbo%2F4qyhVruoZfSek4ldmM12Pe227D9XQBtvptu3%2B7d6Vr66Xf2PU%2FwiSnsuqnDyLMfFtMZORj%2BrXSPeHFseo2l7g31La%2FV%2Bh%2F2oq%2FwfqfpFznVcd9uDZivaxzDZXa1zztZaXB1LW%2Bv%2Fgb%2FZVXi5tv83%2FRsj9AsLqfXv2j0%2FpXqPFedgNurfa10F3uqsx8lv8Ao3Obvrf%2FAMT6n%2BFQquq59%2FURec1zb7CHXMc8htmw7n47v8BtucPUb6v6P9Ld69iNoS9H6Vk0Zzcpj3tqqeW1AAtuc%2F8Am7Meyhv6WvZ%2FNZX%2FAIEugzuk14eLiN69fbi49u6wgBjyWNb6dP6IOa52V6vt247P0dD%2FAFP0ajjdc6kBeekYQd1DIs2tsZVZbdVXt9tYqsG9%2B3%2FTPZ%2Bl%2FwBCsajpXV%2BtX2Zwo%2Fal7Wuvv9S0Mea2%2FT2%2BvZ7m1e1j6GV76PZ%2FpK0NE7avpH1Z69ndU6Ti4mP6mVZktBdbkP3uqbWTRkjKuYGb9t1e6v2776rP9Iuyw8VuJjtoaS8tkueeXOcdz3%2F2nLyb6vdZv6DjDKwmVt3lzbsZz3VsZcHluTgX499hfRYxuzJwn%2FznsyKrLLv8H2vT%2Fr9hODK%2BsM%2FZuSWkvrtFjC1wLmvr%2FWKqW%2Fm%2BzbZ%2BkRR4vVpKn03q%2FTeq47Mnp%2BQy%2Bt7WvG0%2B4Bw3N9Ss%2FpK%2F%2BuNVxBT%2FAP%2FT9VTOa17SxwDmuBDmnUEHsU6SSnxf6x9CzPqt1ECix7GMeben5Q0caneyylzvouto3MruZ%2Fhav0np%2FpFUryaMjFvrzps6dkPbZmUsHvx7zFber4f7rbLP6Wz%2FAEln%2BivYvY%2Bu9L6f1Xpl2H1GG0OG71SQ01uH0b2Pd9B7P%2FUb%2FwBGvH8vpF3T7%2FQpcH5NIea7az6leXSd2%2BzHjdW70qHbMnE%2FwlSZrE2NuzfjKHMY%2BGfpzR2n%2FL9H95wM%2FByOk5hxsgiyuwb6rm613VH6N1X%2FAKMrW10jqbrmHDyHl8MhjY3G6sHd6PO318dv6eiz07fW9P0v%2BOHiPxc6n9j552Ydh3YmVy7FtP5%2Bvvfiu%2Fw%2F%2FB%2Fpf5zehYv1a6pVk5WLnh%2BJZhML6rmiWvsBY6t1Fn0n1NY77Tvp%2FSf8WnijqNWnOEscjGQ4ZB7Oig0fV7Lf01rr8rqR2tez3XPbBx67XsYzayxjbMl9m38%2F9J%2Bl%2FS%2BpzrvUxMWqvqNVuJksx3402zW5oosbdScig725OHd9qY6v%2Bc2ZOLT6Nn88y3e6X1uyk9NexznYd%2BPdi2Mc1lTxl4ztznWu3bKfWZZXbs9T06f0ypdY6J1Hr%2FVH9Wrtpsx6mMqFDS%2F1WisF30XNa5%2B577bf0eyz%2FRV%2BqnHwW1RotDF6xay49Tviks9OHNBAc9g2sfc1m7Zu2%2FoG%2FQxv3PST9Lw2dTblM%2B1W1sdDixoM2vu3f0936Ot3pOZsurp%2FQ5H%2Bj%2FwaJj4GXf052ZjepRjbmOrywNzNjHulh9Meg5zN%2B1lrn%2F4R9fp%2FpFYxcHD6ey6nItdSGAOtdlFwhlh%2FRuHpN3Ppbv8A5xnqemgFOZ1%2FDyMW77T1DIOQy4vra91bqC00en%2BiYx%2F06Nrqnev%2FAIf%2FAEj1WxaG2sxKOo9Mu6iK32UYeOLHML3vLrNrrmu3%2Blv%2FAPRi1cvpl1PUqW3Nfh5VJ34%2BNmO9XEurHu%2FV7t1jGMsYf0noP9n%2FAANqv9Q6W84w630hn2cuFd1jcYGysjS6qzLxmiu3Fyadv896NX%2Bl%2B2eqhSSBQ1u%2Fwed6z9X%2BrtFJH1dZj1agENsqZuIB9EPsvbkW7Wj6eS%2F6fq%2Bj%2BjWOcbNw8hnqdNxq3tizZYXOa4Ty7fkWbmNd%2FObfof4RdpT1fqHUs1rc%2FLfktyRU2vGa4bSHNePtFL3el6VmLlVejZ7f0m%2F1cj%2BZ%2B0WbvSfqn0%2Fq1eTjdRIdlVspsqcxwBqc8PbfW%2BrX376%2FTtf%2FAKH0bcS6v2WJXqulj4YCXEDZqurxn1dxXdRosuw78hnXcR5dSWu22OrY2bqsdn03ZFTt932Oz2ZWL6lVLPWoXS19Hzup9Pq%2BsfTMYty8kn7ZRXDCy5hdVb1DEre%2F9NU79LvxHbLclj7Kf5rIspXE5mPm9J6q%2FLqa82YrmvfVJHqUsd%2BgyqLatln0a%2F03pP8AWxLmerV%2B5j%2Bz%2FU7qvR%2Bp9Cot6QNlLJbZQ5xdZXb9O1l73S99jnu3%2Bq7%2Be%2FnEmN57qv1X6b9c%2Fq99oxWNx%2BuYxcyx7g9rjc2PXxM5t36x6djmt9H1v02L%2Bi9L%2FCVWcz9VPr51npPWX9H%2Bsxuy8bItFNoyDvtot9tIcN%2F06He316P%2FAEKo%2FwAJ9p9hbXW17ntaA98b3AQXQIbuP5y43%2FGB9Q2dfp%2FaXTWtZ1iloEGGjIY3%2FAPe7%2BayG%2F8AafJ%2F6zb%2Bi%2FSUJT2TK66xtraGAAABoAEAbW8fyVJecfUbqP8AjHPV31dXxMjJ6c%2Fay27LaMd1JaNgsoDxX9o9rf0zaW2%2Br%2FPep%2FpPR0lP%2F9T1VJJJJSDNL%2Fsr9geXGABW1rnakD6F36P%2BsuAwumV%2FWXNrxHvcymqh2S7IqLnRa%2B7Jfj2UPcGtqdvyfVspZ7K%2FQ%2By1%2FoaV6Ffj05FZqvYLKyQS13Eg7m%2F9JKimvHprorEV1NDGDwDRtakkEg2NCNnxDqdGb0Lru3qFDHX41rLTWGxVeyR7626tdVmNa%2F1P3LPWr9i2cmzrpY5tdB6gzpL7Kq7WGXPqqf6D8HIc1gZ9upo%2F7T%2FzmVX%2FADXqr0brOF0%2B4135bWVFgc05kD1WMP06ari17q25P81Z%2B%2FX%2Bi%2BnauTysfqnQeoM6h06l91eW2H4jwf1uhgc70Lq3DdV1XGxm78d7%2FwCfo%2FQXfpK7GIRFX4s2fN7vAeGpRjwk93IyOj5VDnN6U5%2FUMa%2FflYlLGuLm%2BqxnpfadrG1tdk302Ufav%2Bs2en%2FNrQ%2Brd9%2BNlNdfS%2FDuDXMy8e7R1bmjfJ%2FkNhl9Nv59KtOeLbMDO6FktJte%2B%2FCstLh%2Bhcaxm4mY5oc5tLMr08XK3st9H7TRd%2FSqPWW11fA%2Fa%2BOOpdOc6jqeMNllYjcdvudjWt9zfVr3b8d%2F%2Fom%2F1E%2B2F5jpf1u6Dj9RyLKcqu3peaf1rF1aGh%2Bhym0XMr91TfZksr%2Fncb%2FSWY9bFTwftfUOpdQwRZvxsDLOLh2uBexrLH21YzLLAHv9K3ZX%2FwAH%2FOLUw%2BnfU%2F6xVDB6lg4%2FTutEFrLaG%2BgLXD%2FC42zY2x%2F%2Blw7f01f8ur9On%2BroyPqllZfThhMsqBZblWhxFjahFLLWE%2B27HZv3sbsr9H9N63%2FBjW1L9J9PDa%2F6udcx%2FU6Ta7bSH6uxLT7W0Oc0%2Fo6HT6mFl1fzX%2BnV9n1R6v07bbhZv2za4w149K0Vk6enkMeWPu2fzn8xVb%2Fwf0F1GVh4mdSW3MD2vbAfA3AH9xyoYmRZ0o%2FY894%2BztBNGS7QbR%2Ba8n6Oz%2FwH%2FttLyRbyPUcXMqzznY2Nfh9TrbZbkkVyxzQBvzm%2Bm04vr7f0d%2Fo2frX%2BD%2FTV2rc%2BrmH0bqHT8fcW%2Fb2Ned1FrmWsaXOZLfRLH01W%2Bpu9L%2BaXUiCJHBWGegM6d1IdU6WzbJi%2FFbAaWuPvdV%2FV%2FnPTStN6U4%2FWfqPk5jhRj2BorDrMXLOjqnge2m1rNrnV3e1lnpf8b%2FO1Urm%2FqLlZH1a%2BseT03IwLa7s97K8nFrY%2Bx9fp%2Bp6OfjupZ6VvT3%2BrY3I%2F0P6Oyn9F%2BjXrKSCFJJJJKUkkkkp%2F%2F9X1VJJJJSkkkklKQM3Dpzcd2PbuAdBa9hLXscNWWVPb9CxjkdJJTxHVfq4Ol5bc%2Bq55dlvLLq2Dax1lprY7IFbP5i63b77Kf9H%2Bk%2FQrpPq%2FcLMAVlgrupcWXM4duBj9I0y7f%2F1f00vrB0hnVunPo%2BjkMmzFtGjq7QC1tlb9Njvd%2FqxS6dWMj0upH9FfbXsyqwIabGwx30%2Ff%2BifW9n9RHopwvrBh4eF1V%2BXkU%2FqmZQQLSB6deYxwux7HAfpGvs9L%2FB%2F8J6ivWVZ2dj4vV8FgfbkY%2Fo5WO8hosrdr3%2Bi6t7nrefWx8b2h20hzZEwR9Fw%2FlIOLg4%2BI652OCxt7vUfWD7Q4%2FScxv5m%2F89K1IujYj8PpWLjWDa%2BusB7SZIcfc5u6XfnFW31seIe0OEzBE6%2FNSSQUpJJJJSkkkklKSSSSUpJJJJT%2FAP%2FW9VSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2F%2FZADhCSU0EIQAAAAAAVQAAAAEBAAAADwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAAABMAQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAIABDAFMAMgAAAAEAOEJJTQQGAAAAAAAHAAIAAAABAQD%2F4TkjaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSIzLjEuMS0xMTIiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI%2BCiAgICAgICAgIDx4YXBNTTpEb2N1bWVudElEPnV1aWQ6RTcxOTVFNTY1NzMzMTFERDlFNzJGQ0E2QjkwQUZBRjU8L3hhcE1NOkRvY3VtZW50SUQ%2BCiAgICAgICAgIDx4YXBNTTpJbnN0YW5jZUlEPnV1aWQ6RTcxOTVFNTc1NzMzMTFERDlFNzJGQ0E2QjkwQUZBRjU8L3hhcE1NOkluc3RhbmNlSUQ%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU%2BMjAwOC0wNy0xOVQxNDo1Nzo0MS0wNTowMDwveGFwOkNyZWF0ZURhdGU%2BCiAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA4LTA3LTE5VDE0OjU4OjA1LTA1OjAwPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhhcDpNZXRhZGF0YURhdGU%2BMjAwOC0wNy0xOVQxNDo1ODowNS0wNTowMDwveGFwOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhhcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ1MyIE1hY2ludG9zaDwveGFwOkNyZWF0b3JUb29sPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9qcGVnPC9kYzpmb3JtYXQ%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOkhpc3RvcnkvPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj4xMDAwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4xMDAwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8dGlmZjpOYXRpdmVEaWdlc3Q%2BMjU2LDI1NywyNTgsMjU5LDI2MiwyNzQsMjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5LDUyOSw1MzIsMzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7QzA1QTE5MDRGRjAwQUJEQzA1MUJERkFGMDIwNEVBNTE8L3RpZmY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24%2BNDUwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjMyNTwvZXhpZjpQaXhlbFlEaW1lbnNpb24%2BCiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U%2BLTE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6TmF0aXZlRGlnZXN0PjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDtENDYzN0NCOUQ0MUExMEJBN0VGNUVCQ0RCNjMxODMyOTwvZXhpZjpOYXRpdmVEaWdlc3Q%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY%2BCjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8%2B%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQACAYGBgYGCAYGCAwIBwgMDgoICAoOEA0NDg0NEBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEJCAgJCgkLCQkLDgsNCw4RDg4ODhERDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgBRQHCAwEiAAIRAQMRAf%2FdAAQAHf%2FEAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPBUtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4%2FPE1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1%2Bf3OEhYaHiImKi4yNjo%2BCk5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEyobHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp0%2BPzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1%2Bf3OEhYaHiImKi4yNjo%2BDlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq%2Bv%2FaAAwDAQACEQMRAD8A7%2FmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmrlHI2utXn6WltnFESb0RFSp41WjD5q3LCBaslzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Dv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2E2rj0LuzvF7PxftUf8AXPLDnC3XI0ewdpOkTK4P08T%2FAMK2Ec1TLNgaxmE9pFIDy%2BEAn3GxwTgV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV%2F%2F0e%2F5s2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXYUeZpfR0a4kpUAx19h6i74b4X65CbjR76FV5FoJKKe5C1GIVLdDuGhuXs2IKOX4gfsvGdx%2FskKtkiyD6bctHHbXgPImOC4qOpXj6E1ff4Mm4Ndxkpc770BvNmzZFLs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F9Lv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVokKCT0G%2F3ZgaioNQemANZuhaWLyE0LlY1%2BbGn6sWspA8QA%2FZ%2FUcVRWbNmxV2bNmxV2bNmxV2NZQwKnodj9OOzYqwDT4iiPZsa%2FVLm5sj7I%2F76L%2BOTXTpjPZQSt9pkAb5r8JyKXqfUvMOpIQOFxFDfoP8qFvTl%2F4Q5INDkrFPAf8AdUhI%2FwBV%2FiH8cnLeAPcxHMprmzZsgydmzZsVdmzZsVdmzZsVdmzYyWRIo2kkYKiirMdgAMVX5sjTeaGl1CzsbSAOLuX0w7k14KCzyAD%2BUZJBirebNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV%2F9Pv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVo4CXUFa9e0CbJRWkr%2B0RWlMHZEJ5WtPMtzE5%2BGYJKnyK0%2F4kuEC1ZeM2IW0okjFT8S7H%2BuL4FYz52mMWn2tDTlcpX6FbDHR5ecCH%2BZevywl%2FMM8dJtn7LdJ%2BKvgry9ccrOJ69KVw9E9GS5s2bAh2bNmxV2bNmxV2bNmxVi3miFU1LSbxvsStJYzH%2FJnSi%2F8ADYpoEzLcxq1T68FGr%2FvyE8GrgjzdC0mhXEsY%2Fe2pS5i%2F1omDf8RwttJRHdrcDaNbhZVI6endIG%2F4mcnHeJCDzDL82bNkEuzZs2KuzZs2KuzZs2KurkZ843Zhs4bVTQzvVqfyrvg3zHNPb2UMsLtGBPGJSpIqjEqRUb9ch%2BvSSvp0JlcvJCLyMuxJb4JNvi%2F1SuEBVvkaX9L%2BZbm8Sv1fTbf0Y6%2F78lPxH%2FgFzpeRvyPbWcXlyyubWBIXuoxJOUG7uKjk5%2FaOSSoxPNXZs2bArs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F%2FU7%2FmzZsVQ2osyWM7o3FlQkMOxGPtZhPBHKCDyUE08e%2BM1Bedjcr4xPT%2FgThV5cvBJbpGergEfMDcYa2PkqfZs2bArs2bNirs2bNirs2bNirshfnRGtb7T9TX7LcoJD2qDzSv3vk0wl81WDajodzDGKzRj1oR35R%2FFT6RthHNXaVcrKsUtftDi304dZz7yrqPrQCIncdMnsEnqRK%2Fcjf54yVjP5gwtJ5ckcD%2B5mik%2BivH%2FAI3wD5RnEtpwrWgw983RGby1qiqKlYGkA%2F4x%2FvP%2BNchnke5BIUGoPQ%2FPEJHJ6XG3JFbxAOPxOA1iX7sUwIdmzZsVdmzZsVdmzZsVUbqBbq2mtm%2BzMjRn5MKZDLP4rC2UVq9qYj7SWshWn%2BtxOTnIVG4ttWvdNaiiK7FxGDtWG6Ti%2FwDwMuShzRLky%2B1lE9vFMP8AdiK33gYscKtBmDWhtq%2FHbOyMp68SeSH5UOGpyJ5pYde3moWPmW5KzH0pIo2WNt0A3Wv0ts2D73zJ6FgzxqqXpKpHG9eDMx7EYXed45VeC4gPCdYyqua0I5q5VgOv2cAW8sWo2QMqhwwoyHcVyQFhVOLzvrNrdf6fFHLFX4kVeBH%2Br1%2F4bJlp%2Bt2GqWrXFnICyKWeJtnUgV3XOP67qFjaFLHUrprecy%2BlZajxPDmN1jn8Dv8Aa%2By%2BIaXrclrdtZ34NrfR1USofgeo2K06c%2F8AgcBCXr%2FlvXRrdnzk4rcoSJFXYfMbnDzOV%2BTr82eqAOQIpaBq7AV2r%2BOdTriRSEp8z8RoN9I5AWJPV5HYD0yHr%2BGQg3Ntq1lcLazx3CiZviiYOKzQo9Kjb7YzoWqRevpt5AOskEij5lCOmc60%2BWCK0j9ONYo5IYp%2BEahQWBeNjRafEcMVTvTb%2B80fyHZ3FugE9vSORJBUqPVZW%2BEHw3yVaXeC%2FsobulGkX41HQMNmH%2FBZzC%2B1iTTbadZUkjtJjzkQqSKqNm5fsdMPfyr1%2FRdT8vra2E5N5C8kl3bSMTKpkctz%2BL7SP9peOA7fFkIkgkCwOfkz7NlA1y8DF2bNmxV2bEJLy1injtpJVWeavpREjk3Hc8V64virs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F9Xv%2BbNmxVplDqUbcMKH5HIPokjWsstqx%2BK2lZPf4Wpk5yF6nF9R8xswHGO8QSj%2FAFh8D%2Fqrkoc6VmSMHUOOjAEfTjsAaZMXhMRPxRnYf5J6YPyJV2bNmxV2bNmxVQuzOtu729PVUclBFa07U98DafqsF6i9EkI6ePywwyF6vG2i6oJRUWl6xZCP2JOrr%2FsvtLhG6s0yiK4X6Zfi4QI7Vb9lv5h%2FXDHrgV5c8B0LzLc2Q%2BGF29WDw4SfF%2Fwp%2BHOg6ZMHi4j2YfTkZ%2FMGwpFaazGDytm9GYj%2FAH25%2BEn%2FAFX%2FAOJ4N8uXwliicnps305LmFZDewrc2dxbt0lieNvkylc45%2BX10UCQzHjLATE4P%2BQeNc6L55e5i0J57WVonikRmZDSq7jf2yB2Op%2FVYor2%2FwBNjktpAGjv7ZvU%2BInoy8Vao%2Fa44xCQ9as25RVBqKnfBGRby9rBEsljcIY0aQ%2Bg5FCCQD6bj9lslGAikN5s2bArs2bGyOI0aRuiAsfoFcVS%2B%2F1q2sJltyrSytuyp%2ByDsC3zwxBqAfHfI%2Fodmt2z6pcjnJK5dAexPT%2FgRkhxV2c782mSy82WUgNIdUhNs4PTmlXQ%2FwDBDOiZAvzLb6nHpOrlFkjs7lWdG9yvxVG%2FwiuGJ3Up3YTJFr7op%2BC8t1ljHjxodv8AYtkiyHbxx6XfKx%2FcXBilJ3%2BAsVUV8FRlyYA4Z80DkkPmq3EtlHJSpR%2BJPgHBH66ZBtIufqt9Np8pALHnEpO5p1oM6Xq0P1jTriPoePIfNdxnLtZtrGZluBcG3vF%2BFJYuJfx40IIxHJKzzb5et9ZtZYp1LwygcgPtKy%2FZkT%2FKWuRKKCOC6tNH1CblcWiILDUWHH6wg6wyDejx9Fw4sfOMjEBY5biH1HgLy8VYulOfJV%2By38q4ndH9LlL219K4iilHrWzLxlhI6SgE1%2F2SnFKo0Czxy28zMqcSzspIYBPj2I%2F1cd%2FytnVZdNQ2D1I%2BESMoPw%2FzMftdMG20TSQyyblmjenzoc4TY6ld6ddyKwMUsbFZoHqNwd1KnGXRXs9n5%2Fv7lg98GlWhMjwk1A%2Fm4k%2FF7jDSwSPULTTJI3PGBphGNwG4OHVW%2BgnONX%2BsWFpDFPaSSJcTESG3TcRlf2uRK%2Fazq%2BkR3aeT7e%2BjnX6yoW8ibht%2B9i9Tg%2B%2FQ98QVZHqstutowuSPSdSpV91IPVWzif1i98t%2BZ7m40FjbSWUrNCqEmkex4EH7acT9lv2c6lonmbTvMUTWdwgiumWktrLQhge6H9of6uRLzd5ZurDVP8Q2KetYFUW7jXeSKi%2Bm0hH7UZH7X7OCY4g2YM0sMrjvexB5SHcXsnkPz3Y%2BcdPqKQ6lAB9bta%2F8lI69Y2%2F4XJeDXPJlvPe6JqMeq6NMYLuE842To6ntToyuv2k%2Faz0J5E8%2B2HnGyI2t9VgA%2Bt2ZP0epH%2FNEf%2BEyESeUuff3tmbFAx8bB9H8Uf4sZ8%2F6P82TMMLNb1iDRrQ3EpBkkPC3j7s5%2FwCNV%2B0%2BGVc4n5m8yfpnzJcsr%2F6HYsLe232PBv3j0%2Fy3%2BH%2FY5JxkLourX175%2Ftb28maSZrloqsdlQ1Tgo%2FZUDO755%2B8uxlvPcMI6i6LAe2zZ6BwlS7NmzYFdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVf%2FW7%2FmzZsVdkb83W5%2BrW1%2Bg%2BK1kAc%2F5D%2FCf%2BG45JMC6jare2FxaEf3qMo%2BdPh%2F4bCNiqV6VOOcTV%2BGReB37%2FaX9WHoyFaJMz23BqiWE7juCh%2FsyaRsHRXHRgCPpwy52gLs2bNkUuzZs2Kuwu1rS49W06Wzb4XI5Qv8Ayuu6nDHMemKvONE1KWGVrG7rHPCxRgeqsppk7sb0XC8W2lUbjxHiMhnnnTHtLmPXrZfgakd1TsR9iQ%2FP7LYtomq%2FWI0Iakybof4H55LmFZdqNlFqNjcWMwqk6FD8z9k%2FQc515XuZbW4l0%2B5%2BGWFzE6n%2BZTTOlW063EQkXY9GXwPhnO%2FNsS6T5qtbofBHqaniexmi%2B2v%2BsU4v%2FlfFgHcrPTFbanZNb3caywyApLE3Qj3zjutwW%2FljzBc6Pp6fV9JHpsLNSSgR1HIorV3Vvizq2jXQk%2BAndlBA9xnNvzRiWPzJBJWnr2gJP%2FGNyv8AHAdikJ3YGf0o5pZDIboSD1GJJ9aAgh6%2F5aUzoFnN9YtYZ6gmRFY06VI3zlXk%2FVI5bi2hnlBgdBuxFFahhfr0rSNsnHlXU4JI5NJaSt1avIQm%2B8RaquD0I%2BLjkpbgIZJmzZsirsDagC1jcqvUxOB%2FwJwTjXUMrK32WBB%2BWKpfofE6Xb8f5d%2FnhjkMPmvR%2FKlrJBqkxBSVkjC0PIDpTfI15s%2FMNbu3jbR5plsZVp69swRi9N0eSjMnH%2BRcVpm669cWWtXGnatwjgKma2uPsj0x%2FNXw%2FayOfmLr%2BhX3l%2BPTYrkXM%2BpGtm1uPUUceX7yRx8KLtx%2F1s5xoN%2FefpVr6C8muVVfUuLO8kMrEIeTem7faRk5Iy5FdTuZ9B169trGZvqkc5eFD8SmJzzUcTtsrceWHzTT3fRJv0p5UZvtOYYrgCu%2FJV4P%2FwANHnPrj83vM2lX9zpWoBJYInaJ540pOi1%2BGRQDxf4cln5Z3qT2stjWrK0iexEgE60%2F2XLOUfmHYNZeZbhWP94Ayn%2FV%2BD%2FjVclLlbEdQn955q1wTiU3huLadeQCsfSljO9VNev%2FAA0bYHub1Z7V5yWkhHxpcVHJNwGiuP8AKStVk%2FbyGafqLQxyafO5S2lPJWUAmGQ%2F7uiB8f8Ad0X%2B7F%2Fy8Ctd6jpl3Lb3v%2BkQTpxniqTDcQn7LoR%2FwUb%2FALDZCyyekWl9ZyaFLPelZGN2tqDEtZJHenEs67ckpVXwq1bU7G1iKWvqtcCR4bkkhFYx%2FCHXhvvX48C%2BU7H1SbK3k9Wya5hv4HchSBF8FxBL2WeOJ1k%2F4s9P4cu%2F0j%2Fc1FphmFxPLeOhZBxAiL8jt40%2Fa5YegV6PprvLpcE8sfpTNbh3QVoGK12zluoQ2PnZih42fmWIVt5z8Md4q9I5P5J17Z2A8YrWVl%2BERoaDwoNvupnLtb02LzREdR0hBba7bVe4tEPFZwpr6sH%2FABb%2FAJOSkgPNLqGaG7e3v42iuoTwlicUIK9iM755KnGoeT7ZX6m1CH%2FYSNCf%2BFOctnuIfNkSWeqEWuu249OC8ccfW47elcd%2Bf%2BVnQ%2FyyS5t9Dk067jMVzaSXMLK3hRJlp4r9rjkQl5PbalcaRd%2BlI7PbwysI5lNJIirU%2BH%2FmnOueV%2FOUeo%2BnY6hIpuWX9xPtwnU%2Fhz%2FnTOPeY4zY%2BYNTgpVBcSVQ9CrHkP14Gsb9rFgRWSzY1K1%2BKNh%2B0p%2FZcY2Qdlev%2BZ%2FLKxK19pcdYBUzWqdYx1Lwj%2BT%2BaP8AZ%2FZyHW9xe6ZfQ6ppk7QXsBDRTIevsR%2B0p%2FlyY%2BUPNR1KJLK5lD3KrW3m6esg67f79T9pMD%2BZtCjTnqVilIW%2BKeFRshPWVAP2P9%2BJ%2BzkZRB3DPFlljlxRPz5Edx8mcw%2Fm3aXvkzULyUC3122jET2oNA8kh9NZYT%2FJvzb%2BTOZabIhnWkgaOQcwxO577%2F5fjhKIYndoZvgaUD05v5SN1J%2FyG6YI0RZ4tS%2BoyKQS1HTwYHsffALrdOQwM%2BLGOEHfhu6PWvJ6f5FsfrXnqW8K%2FDBEZD4cmAVf1Z2fOSeSLmfT9RrHEWlvDSZaVagNR0%2BztnW8mWsuzZs2BDs2bNirs2bNirs2bNirs2bNirs2bNir%2F9fv%2BbNmxV2Y5so4qw6WL9HeYLiLpFcUnjHQfH9r%2FhuWSbTnBgMXeJiv0H4l%2FA4T%2Ba4fTW01FRvDJ6chA%2FYfpX5MMGaXcBmHxbSrsCdi6%2F2f8RyZ3j7kdU4zZzrTfO2qQa3eaHrkax6haux%2Br9FkgJ%2FdT2790ZP%2BGydWWoWt%2BnK3erAfHGdmX5rkSEovNm2yiQASTQDqcCt5sL5dZ06Ko9YSMNqRAv8Aiu2Iv5i0qJecsrKo%2FwAkk%2FctTho9yo69htbi2e2vApgmHB1cgA1%2BffOYX%2BnXflXUghJezkNbabxH8jH%2BdcPPN82l65b2j213DN9WdmmtefCRkdeJaNSVb1I%2FtYXWM8cVk2javM95pUv9zcPvLB%2FI3LvwwhIT2x12KCBrxjyjRS06jrxG5YD%2BZcrzzpkXmjyhLPpzCSaFVv8ATZozuXjHP4GH%2B%2FE5JkUmju9BujaTsJYHHKC4G6Sxn9r%2FAJqwJH5g1fyjDaw2KrcaE0zSNE27RiQmtuXPSJ6%2FuW%2FYkxI6hUg8ia9qulatHe3s0k8DgxGKZywBk%2By3%2BTkn%2FN63a8ttG1a3rHL%2B9hIB%2BIdGK%2F8ABA5DNbS0tL%2B4ksJOenzETWrjYiOT4gjD9l4WqjL%2FAJOTTU9XtNc8r6dDP8E8rc4iSP71RwkTfcP%2FALsX%2Bflgq09zFvKeoTMwV2NeCsB0BaNqf8a5N9Zu59K83W2pWb%2Bn9cjBo24ZXUNxI%2F1lyCWsL6fNb3LLxid24tSgINA9Puyb67pd%2Fr2kaPc6bxN5b8owWYKAYW%2BGpP8Ak4RyQU8ufOF7JLD9XRLaAj96ZPiYv4A9An%2FDYOfz9oEbtA0kjXSqG%2Brqh5NtU%2BkW4iQL%2Fk5yK%2FiuNagjEcpTU7Rj6YqaSAbtG3%2FFin4om%2Fa%2BxhXcGeWxlDgpPbfvUFaPDKpFXiI%2FYk%2Fk%2FmwFXr0n5hfXBJFpVtxmC84jOa81%2FaKqv7Sfy5GL7zJq2rwXFhqF40AlWiSQfAEPVW%2BH7Sfz%2FwCRkTl1dLW3t7xi8108C3g9EBArCnI8jtVvtNRcR1zzTdJcQvYwRW7y28dwzFfUblIvI05fAo%2F2OGxSt3zSW9LPXITMlCjiuzofsyRt2YfsPkd0iabTtQksp1Zra4U84X6SJ%2Bw4%2FwAoD7Ei5dzqV7LFCt7KZnVAY%2BRqyg9aj%2BX%2BTJdouuaHrltb2PmCNfrkKmO2vKcT%2FkgsP2v5cjtapfo0Jt%2FMllFGHltZvVeK4ptwWNi6yU%2BzIvRlwm1mUarpNtJHEWutOkuIbh0FSbfkGiZ2%2Fb4MxH%2Bpk6uZNM8saddywStNK605tsKnYcF%2FmbOZy3s2nWaLE%2FG4e4%2BsK43HELxowOzK%2FL4lx5fFWb%2FlprP1TWLQMaLMFRh%2FlRtxr%2FwLYn%2BfNjLp%2Bp2WpwghWLxuf2SGoRX%2FAIDI9peo2kMtjfWQMUi3JM9u24j5rT4D%2B1G5qyfyfYzp%2FwCcdimr%2BUra%2FG%2FwpISOoIpXJDcIPN4HDcR3Scl2I6qeoOGNvcQyw%2Fo%2B%2FJWGpNvP1aBz%2B0PGFv8Adkf%2BzXIxSaym2NCOh7MMNYLhLlOS7H9pfA5FU30vUNQ8uaqjIqsaqHiO8UsZ6EeKsrfA%2BS3yUr6p5iudTl2S1RvRTchTKeCgV%2FlTlkOsvUveOn8VkdatauxoyN%2FID%2B0r%2FwAmTfyYHsrnTdPasc1%2FNczXMZArwhT04g3%2FAD05Yjml6Fditlcmu%2FpvX%2FgTnK5bS4sp1mDtFID6kLioPXZgc61NGTBNH4o1PpUjIpNbyX0Ulvcw%2FV9Tst7i2IqHWn99EP2kZf7xF%2F18nMX1pANMR1TTYfMkRuYYlt%2FMEY5EfYW7UftL%2FwAXjDf8u%2FMFzM8mnX6MJLWRFkMh4yiqtGUYU%2FZP82IzW%2FH4DVQG%2FduPtRP1FG%2Flb9lsG6ZJDJfPcvGI9WCoJZwPhmRGHF2X%2Ffi4AP2peafmBE8Hmq8LgATCOVaeBUL%2BtcjauUPip6qe%2BdJ82x293Pb2GtyL9ZmWRoL5QAUZZGQK47p9nOd39hdaZctaXScXXdSN1YHoynupwFCL0zUX0y4SVGf6uWDqybPG46On%2BWv%2FAA652nRtY%2FTdqJbfjLdqnK4gjpSVen1iBf5G%2FwB3Rf7qfOCxycaqwqjfaH8ck%2Fk%2B61K11AC1kZYIT6gmB%2Bxy2oP%2BMi%2FC6f7LEGlZCbBr%2B%2Bu%2FqqpBCjP6cbtxHwn4ljrX%2FgckOj2EMcC6lK6yTRKYmkIoYl6gE9xT7L5HhcTJqM1jJCEjjQSQsK7qT3rgi%2FuJ7PTDKQ31S5f03ZPi3SrfGP5RiKG6bej%2BQPzB0CG%2BuNHvB9VeZx9WvZKBX7cCf2P8jOvghgGU1B3BHfPHaQrfuEt3DHkAJakKhP8AO37A%2BedX8i%2BYPOen6dNp2qK5t4JFjs5HClyoNJfTdieUaL8S%2FwDCZEcRNEc%2BrfOOKWMTgeGUaEoHfi%2FpRP8Aunt2Ab3UorWqAc5QK8egHzOPhuoTYrdesJYgnJptgDTqdu%2FtkT1C9XnLPIwofjLduJ6fhkgLcYsi0vVRfSSRSUWRd1UeGGgyN%2BVrCSkmrXKlXnHC3RtuMXXlT%2BaTJKMTV7JdmzZsCuzZs2KuzZs2KuzZs2Kv%2F9Dv%2BbNmxV2bNmxVB6rafXtOuLXvIh4HwYbr%2BORbRL%2BsMTMaSQsOSnrseLZNDnIdfXXtP8zXtnZGC2tJWEsUz8pH4yAE8Y14rs3JfibJRPMKyf8AMXye3mKyh1LTH%2Bra1px9S0ulFSV6mNwPtRnIb5e8wXlw%2FwCj9VR9N1u12PGoD9vUgfpJG%2F7UedN8uapcXsH1e7C%2BrAi%2FvV6OPs1K%2FsttgLzP5Ysr%2B3NzHFxmjPMlNj%2FrLTdWHtiNtlU9I82sxa11lAssf2bmMfA9PFf2G%2F4XIt501y81SykEEjRQRMGEaMV5L0%2BKn2sq4ke3j9O4asuyLNSnMduX%2BV%2FxLCfVZ%2FS0u8cDkVhYhfGgxodGQDDZPMculusTzpwryMT7mneh%2B0uTVNL1e%2Bsob1tLmmtJlEkbFW5FGFR8NfUzi2iQ%2FXNXtLjUAXWe6hE3L%2BQyKHG%2FbjnqzzP5ok0H0baxgWVyodi5IRU6KBx74ASrzOzsfL1tcH69ppMtdxM0h4%2F883OS2GLS7239K1pGpGwj%2BEr%2FALHphVcecBcyrc6vBFdabL%2B7lV0UPbt12KDnx%2FlYYGvrWKwP1nTp3kirsT0BpWgcdf8AZDJg%2FFjSanSb8xC2ursXtpG5kt7dkVRGaU4g%2FETy%2FwBbIzc60xSeylsgphDJeafNtIY%2BnqREfCygYcWPmV14x3qkqQDzAo4X%2BYr%2B0ME6h%2BidZZImjM90FLQzQj40BFNn2%2B1X7DYkd2yi%2BrHNIh8uXbLp7yLJdToZbZJDX1EU0NOXxCeL9tf%2BJ4PhbTLya58sXqqt3EoKlV9MSoRUMn8ssf7XH%2FXyD%2BcfKFzoWnRatFqUUU%2BnSGSGAsBcFXZaFeHJVZDu2HOn3See9Kt1%2BsCx8x2y%2BpaXabB2TxH8pP21%2FZwAnu3VQuV1CC2iW9cx%2FwCkS28kMtA5dKLHL1%2B00TJyZPhk%2B1nS%2FKN59Z0GSNno6yI6e1V4v%2Fwy5z9pv8YWj6Hrcf6P836EWmiiHSfiv2ox%2B2kwH7P2ftLk28uxrbeXYLhYXV7gMzxkE0IqPiqNq%2Fy4gb%2BSk7PNdX1m%2BHmqaytJ%2FTtTdx%2FBGoSu6swZqcj8YbCnRmM97drKxKXcslu7tXb1%2BSBq%2FwCSzZK9c06xuNUutStkBls5IFkAIAMoHqUUfzNRkbCPW5Xs70rZcVtL0%2BtCoAFVc1oK%2FwArni2RIShdD0rU9Z0g2UNW1DR5JLG%2BirRlQuXhmp1ZP72M%2FwCph75g0K2sra21G8ch5baGJUpt6yARuvL6OWEQk1eJrq9s55YLxBzuGhJEjr3LKvxSqv7WISanq2oQRXGryvd2MtVhuSQ8aNQch8OyNjsqElhK1hbcr%2Fcv3K%2FyV%2FycRSQBmUiifsfQM6FpfljSbrR0mCy3EjDlDIzN9sGnphU%2FZ%2FlbIrqnl%2F6jM3Cb1VRqOoU8078XoOHPISIiQCd5ckgE3tyS4StK6xSy%2FDJ%2B7HqseO%2FYVw0W2thatp10he2b7YH21cfZljP86f8AD%2FYxO4tbO4so4I7ZUvG5Lpl3PssprUws392JD%2Fut%2FwCbAOh6sLuU6VqYMF4hKRu2x5DrFID0YY7rsh4tMn06%2FkspjzjniaS1nQfDIE%2BJWXwdafEv7Od0ugnmL8tmYipWEOB1oGWp%2FwCH5Zy4hoT9WuU5BTzj7FHp%2FeIe3%2BX%2FADrnR%2FysvRfaHeaJIwZ4RJGo8QDzQ%2F8AAy5OPVBfPNxbpMpifYqaBu4IwFYWlx9fEIJU7lmH7S%2F83ZJ9e0x7K9unRg8azMkoHWJySVR%2F9YH4W%2Bzj%2FKtvFdaxBDLQKzAVO243G%2F8ArYPJUXb2NvDZtdyWxe3B4meCQ%2BtG37Jkjb9lafaXHRXl9q2r6etnWJ7Yxx28h%2B1UNyMjt%2FlH4myX6lp1poPm57CIFLG8jikCsKisqqXWncc2%2BzhLZW0Om35hCuLiCeSgIHFY67KT9rl4YaV63IwMVSakg1pt27eGRuzvrTWILdYbnlcIWXSdQc8W5pXlp91%2FLIP91M%2F94mG9tcfW3AQ14xgsPH4c4Zp%2Btz6HqN2rJ61nNIy3loTTkA54yIf91zR%2FailyRNUinpV0iXqyyxw%2BjdW5Md%2FaN1iPdqf74f8A5Jtka1ZZ4LWYxsySKpaCRT8QI%2BIxkj2Hw5KLe6%2FTsUF%2Fp1wsmrRRk2l0QAL6Fft290g%2Fu7uP7Lo395hFquqaL9XZmmWCRwySWTgs8MgG6Oo%2FY5fZbAUhC%2BZ9JsfMl1SKYW%2BqyQRT2DMf3UvJeTwt4M5%2BJchKyrOr6D5gQwTQEpFK%2FwDeQv8Ayn%2BZDk%2B1Gyj1ew0SaC4gS5ntmCtX0ELQtQAM%2FEcv5Fwv1bQxr%2Bnhr4oms2ymP6xuCStSIbof6v8AdzYOaGAQ%2BXdTm1NdLjj5SN8QkG6FOvqBu%2BTjTrS2sbZLCMcVUmkpFGLn7Rf%2FAFv%2BFxTTme102DTuILIwZpKksW%2BzxWtW41%2FZyU2XlW41HhcahytOQJZVHKaXw%2Fd%2F7rY%2FzviAqQ21ldXtytrDG0k524qKmnj8sO736roNmNIltfVv7hFeaMnkUqTwpxNA2S2MaT5etS9w6WdtEvx1b42A7Symh%2F2C5zTzb%2BZun3swOjacGVKwrqMgoajeiJSr%2FOTDVdVZPYa3pOj%2BW7u31uKKzuZGP1dePP1Iz1UovxtJ%2FlYU%2Fl%2F5hOtyS%2BWrlis1Gm0pyfiR4%2Fi9Kv7SumcrvNYnu5DcXH7yToamrfSf6YL8ratLZ%2BZtJvoT6bwXMbEjuCwVh8uJauPFuFe%2Bx%2BYJ4NMawQiOFzyZOlDX4h%2FwQyQeVtAn1BY9R1QN9WU1toG%2Fa3qGYeGE3lnRLPVfM19LdAyWkTtcW8a7xOGaq1kGz7k%2FAM6moAACigA2AxJ7lojn72wANgKAbDLzZsirs2bNirs2bNirs2bNirs2bNir%2F9Hv%2BbNmxV2bNmxV2Qzz3p3P6rqKbFKwyt%2Fkn4lJPseWTPOVfnX5gmstNtdBtnMbajykuXHX0YyPh%2F2b%2FwDEcbrfm24MRzZI447GR59w6pMfNyWl7EdD1KM3Cp6dwoKldj%2B1zHE%2FRko0rz1rUtz9SvLe2lm2Hp8jC7BhWqV5xvUb%2FDnn01jPEin8pHgckemXmsTaHcxANw05o57O7IIKxliJYll%2FaRT%2B84%2FsNkIZhIkSjRDl6zs%2FwIjJCXFHkb5gp3%2Ba2r%2BbdPuEvYLVbLRpiFL27c2EvWkj0%2Fd8v2VpkGsfN2p3Kra3V2XicgEsQeQJ3qSNs7d%2BkdO1rSbKw1LhN%2BlbRXVJKFZyq8ZV3%2F3YGHLOEecvKFx5TvTLDym0idv3EvdG%2FwB9yf5a%2Fst%2B3lpHUOvsua4iNwbWCruHK%2FB0qN9j0zoy%2BarW48r2Oq3l1Le2sSizuGkqk6zgUVXMda8F%2FwCDTOO2M01rIs0XCRQ4kHqCqGnZl74NgkTlMqSOIZpPVNrXjGG8Qvfj2wXzSyqz1eO%2FtNSjQM8sVubhFbbkIpPiI%2BUR5Yca3q17IdPmtZ2js7yztriONNhyAKSciPtMJUfIZaXDWL%2Bra0jcq0ZYAV4yAq6mv8ynJf5Yex1PRjpUsfO%2F0pnuLJWNPUgkNZ4l%2Fm9Nh6vH%2BVpMRa2uvBcXej2Gp2rSC5tJJbOZkqW4v%2B%2FgY%2Bx%2FeJhtBB5sOi313boLa9ihMlo3EB5ClGkULy%2B16XJk4rhlZarBFAbZljtrS5Tg%2FoIF4fyOT1JjbC1L%2BbSbowyMwu4WrzJryX9h1PQpxw%2FFWFXNut9PB6srS6frlqI4JZHJ%2Br30bCsbOf5phx3%2FAN1T%2FwCRgPQbtreVrEFrW8gfnDU0dJUPF09unHD%2FAFeygjjvbi2haTQbpxcXlpHvLp9x9n6xClfjtjXi1P2P3b%2FGseE99ol9qtyjIKamYlktb6Mn0L5QKJ8Zp6d3x%2BH4vt8OD%2FvciTXPZaZ%2Bkdp5%2Bgt19Yad5p0%2Fe0vU2Y8T0NPiaM%2FtJ%2FuvOj6lcGysFaRlYxJWUjfkUXk3z5MM5p%2BV2l3U2pPdalFHK1sOLyqQxSZaFOdDWOT7W%2F7eTTzK8UdlcxREhXBTf%2BdzWg%2B7JxNji70HnTz%2B51GXyrrFxaapD69nfcRqSftqxHL1oj%2FOjPjtQ0GNYCfrCXWi3QMtlelhyjkYbFfdvsyx4M87Wy6zqemTq4X9KwQnmegkK%2Bmf%2BSi5G9M1PVfLUt3od3CJIGDEQS7iKUD4Zov8%2FjyErqrruPNkK58%2FJN7Sx0%2B0sDe3k0k9xA6JBJACGqwPHiKp8S8fts2F0mrDS3nubPThH6ZLa5YcQsnBvs3kSsCnJeXJuK%2FB%2FwAYmwQ%2FrXdjEsQRizhvjKCrUp8If4uW%2FwCyuK3Fs893p1nezfVdeDCOxmHFi8ZH%2B89wSeBjP2YuX%2BVFiYggA70Pmt9QzfyjdxXeiPeaY3rNYt9ZjdKUkgP2gyj7L8ftL%2FPgTz2tuLdJIT6cN1JFcxzJ2U7Sb%2Fs%2Fa5BsKfLEMvlPXby2sJI40uF%2F0izVuUcb05n0z3gkTlw%2F3237vHeddXN5pEMdnbmOys4BFcy0qDcF6GJa%2FwDFacmyX8Pu2R1QOi6Yupabd2F78dj6xjLVFUlpySaHwkUf7F0%2BDIrrvl6dr42N0eOtRIHs7ldkv4B9ijf8tKgfB%2FP%2FAHX28mPluyb0Vs7OdTL6SSReoK8%2FTZqN%2FrqOPL%2FJwTqdhFr9m1lqUhjnhcm2uv8AdltN%2FMKf7pb9tP8AZrjVhWHaHrEWqxjTb9gt9GKQytsXptxNf2sl35d3J0jznJbCojuQlR26cT%2Btc55qthdyXcyyJ9X8wWfx3ESbC6UbrcwfzS8fjfj%2FAHyfvPt88N%2FKuq3F3q1hqBIEyc4pWZuCkoAwck9MA50VPJV%2FMq2k0TznfCJQUmPJom%2BzJG%2FxcW9t%2FwDY4Q6cILa6ZY2eKRwslv6goaDfjy%2FaK4f%2FAJleadM80a8t1pcZ9GCJYmuG2MrD7TAfsqv2V%2Fmwr0WyuNXUw%2FVxci1%2BKLt%2Fw23wrg6qGVanr1vrK2t3csIry1aESBjxJEYYOQff4cjvm3zLbpZXLWTGC5vr%2FwCswRjfjBGoC8yfi%2BIjCPX2vNMu%2FqZDRNGKSAgUqxqgqKruF%2BH4sjsyPPIZZSXJ7knfG1e9%2Flxrdt5ksbqdSFu7eMLcW5O4%2BE0cV6xvnF75uVzcb14yyBW7%2FaO2KeS9RutC8yWd7DMYLfn6d3L%2Bx6D7SLJ7YhdkNd3UkRDRSXErxMDUFGclT9IwndCtpWrz6ZN8MskcDsGdojxkjcfZmip%2B2v8AL%2B3iWoySfXbiHUmFy14frKXqH4nL14zK%2FVuX7cbYEeJWDPQVpU0Pj0x6yqLL0pJUW4tXE1o5O9SaSRbeP28Cob1Z1T6vPKzxjeNSSQK9aV%2BznXLfUrdtDt9T1U%2BjeRxpa3iMvF5V41jcg%2Ftrx%2BLOd6VbaTqJlS7lMl5Iri3hHwRiQj920snhzODppWsii6zcGeSZg3po3NSy%2FD%2Fen4K9V542r0LyheaXcm5uaCCWNhxkl%2FvClOqcvs4rrn5g2enI9tpKi4uqlWck0rSvxP8Atf7HITazpccriNaLGD%2FozGnBVIJkZP261%2BFuWE4juLqSZo2pbJMjyitAQeVPwrjxbUE01reuXGvCKPUZJ2Cs0iqgUgFtunw%2FCKfDhWLXSzayW73jxuGElWgJUbUoSDhkLcXEjJDSJqkoSd%2BH7OGlh5a1HzDONIit%2FWvZEMkJRlQtGlKsCxVX4%2Fy%2FawWtILTLTTmeMmbTrm1jXe0nmMLOwH2nZlrWv%2BVhlBb6Lql09zpemrbx2cJe5WNqiRi3EKrfyj%2BZR8WJ6x%2BVPnXQrK41i9sljsrUB5pBLGzAVCgiNWLNufs4I8h6hp738sNxRBexei5BoBJWscg%2F2Xw4VZjoMllFbx635Y52k9mvPUdKaRjHIF%2B08PInhJQV6%2Fa%2BHOq6d5%2F0G7toZzK%2FBwKzBCVrTo3GpQ%2F62cYW21DQ%2FMUVrFH%2B5vyInPSIqzfE1f2afawkmtp42klt0f6uzuInWoDqrFQRQjkMJV9Q2ms6VfitpeRS%2BwYV%2FwCBNDg2ozzr5Y1vTI7V9L1PnbTDk8E4Qs7M1KKHBDp9GTfQfOdosSxw6txkp8UN0DxBG37WNea09UzZBNY%2FM3SfLcVrLrDIyXZKwm2bmW40DsF3%2BFa%2FF8eTW1uoby2iu7ducMyCSNh3VhUYEK2bNXNirs2bNirs2bNir%2F%2FS7%2FmzZsVdmzZsVdnE%2FwA9rKYXmj6jT9w0ctuT4OpEgB%2F1lOdsyO%2Bd%2FLUfmvy%2FcaXstxtNZyHosybofk32G%2F1sB5ORpMoxZ4TPIGj7pbPl%2BNPrERi%2FaG6H38MkPlXzh%2BjhHo%2BrmunCqwXFKmDmfiSRf27d%2FwBv9pMJBDcWN7JaXcRhuYHKTRPsVdT0P%2FNWB9RiWO6ag%2FdygSL7cuv3HKpkwImPcXoM2KGaHhy3B3BHf3h6B5qslXQooNOVof0a7Xdi6fDxBPKQQ78vT35xNl6Fr1l5s0yXSNZRHujHxlRhtMv%2B%2FE8JB9r%2FAIfILo2pT6XfLd8mmiKehPAzE8oT%2ByvKtOPWP%2BXKvrafSpl1XT2L6ez84LqLrE1a8WH7PH7NDlkMoluPiHRarRz05F%2BqJ5SHf1CT%2BZ%2FLlz5WvvTUmXT5jW2nP%2FEH%2FwCLB%2Fw2FauD8Sn6c67a3Vh5x0p7G%2BRfrAWskY6EHpLFXp%2FxpnLdc0S88t3ptrir27msE3ZlH6nX9pcmR1HJxFS3uA4oftDBlvcz2lxHc2sjQzxMGjlTYgjCVG6Mh%2BWD4ZRIvv3GC1Z7pdxHraNJCViukq13aswVAO9xCW%2F3Uf8Adkf%2B6%2F8AVw1t5NPkKabe3SyqKG2uIquYDX7Jc7ei37a%2FZ%2Fazm9tdT2dxHdWzcJYzyQ9R4UI7qw%2BFhkwhvDqECTaZbExyHhPbqKmCYivBf%2BKZPtR%2F8DgIkSDxVHqK%2FSyBFbjfvR8k1xY6gVtLb6vJbVWZbhvVLo38yAemYZF%2F4XCjW0McX986%2BX72Uem6V56bekVAYLu0D%2F8AJSL%2FAItjw7W0utVgj0%2B7k9DULc%2BnaSMaFkrvaz%2F8yXP%2Bpgq00iztbkaVcP8AWBer6NzEworLWjRsoJ4yRv8AEjr9jGOMDbn5y3UyJ8vcyfyHpl1puhy31zEE1e9cJfKxXjK8JMaTqfGZCrt%2FN9rCX8wda%2BqyabAGAM85aYA9FUcV%2FwCGyZXElvb20VgHb1LeNDEKmpKDhGS%2FfOK%2BcrhtU1G8vLZ%2BYsz6M0Q%2B0nBh6cwH%2B%2B5af7F8slsAAxG5tkesTm68saddo3GbTZ5bb1B1G%2FrRfrxGTW7LzPpcrahALfzDpir9biI4tJESAZowftJ8Svx%2FY%2F1cD6VMb3RNTsShJmhju4gVP2ovtH%2FgG%2BLBVnb6b5g0ux1JGWDXNDj4SEiongQcGjk%2F34hX7LfsYBukt%2BWba4gWHWmj%2BsWdpK0Dwqy%2BoWkonJE%2FvHZOfNcKdasnk80288TN6EEqxOXNWSOJiS7n2p8eB4bySw1ilv8Au4OQk47kKo%2BLv%2FLX7WK6jr4u9Uee1jItndiIiasyv9sV%2Fl3wWAFZBbvYajqsV%2FDSP1yITPUgSKH9SSinYcIRw%2BH7TSJhr%2BYOr2sOkWmnhHSK6YiRolFF5A%2Bn6ngJif8AWyP2ML6dbiRI%2FrqsAI3SRAsMY%2BxHKrlGhfl%2FefB%2B8%2F3XgXXYppJG1m2unkbj6Op2pUSKVAqksSNsif5L%2FFH9vHoUlrytdtDCgdmV7d5I2boU%2BINGT%2FLhpr3nLTKJ9UT19TB4zNHtCe3Jj3b2XIssp1Y8bUfFOQsix7SCSlAXpTmj4av5OnsdM%2BuzB3Zm9OWaNGD2%2FMgRTolP3sXP4Zv92fyYi6oITDVrG28x6NBeBvqWoWS1ivSeIikU8jFI%2BzLA6%2FGn%2B%2B3yFaq1pcXix28ZUGi3U2wadx%2FuziAEWv8Aq%2FH9vDLV7TzXeWrqbaWO4VhHeNHtFdCP7EhX5D4v9%2BfbwpC3liGgvIoVdSqt6pLPGr0pTj%2Bz8Xw4CUkEGil7RwRu9ZzwjPx8UZiKePShyb%2BRfMdhHM2kLEV%2BsDlDLQFncUCxcRX7WEF1DCs63zCs6r6c1Nkencr7rgXSpFsb5zCForepC9PiUEfZr4DADRVD%2BddUkPmPU4lUgVNtNG4qDw2Bof2kP2GyK1LECpY%2BAqTnUFhsta1Ce%2B1G3inuZCrySsgqwqFNRkwu9R8m%2BWIwscEHrharDBGjSH5tT4f9kcIoop4da6Vqt2GW0tbiQHbikbkH57UwHNFLbSvb3CNFLExSSJxxKsuzKwPQjOu3%2Fmq%2B1mFo1C2NmFMjhTQLGu%2FKRtumQfU%2FMWh3uoTXx0r1pJePKSWSnJlVU5lQNufHnhQxmOYxklSPiFCDvUZQKUIpUn7Jr0%2B7D8eYrBP7nRbUf61W%2FhmPmtkBFvptnEezCMkj78CpRZOY5w%2FBmWhBCjseuSyyn0pIpIr2CSr2gtbYTQt6aylufPp8PBWbCZPNurROskYgVkYOv7tSAVNRtg2780%2BYPNd5CdWuRJHEWkWONFjRaih%2BFAPljsqLeRrVh%2BjQt3GBRoXBBKAfFwag%2BLJ15B17yfealE2taTHcXMG63Eq%2FvbYL%2FvyH%2B6eFK%2F3iJyT9vAXkPygPNEuoxx3KQ3VrAHtYWP8AeOxpv%2FxWqijMv2WZMLdS8vBLx4pg9jqVqTFJIvwup6fvP5lP%2FDLillv5i%2BStPtL867pEEcem6hxkivLWjIk%2FevHb05ftZF9Okd5Et5mayvoWEtrdRmnCUfYmhYfzftp%2B3k3%2FAC68zLfx%2FwCFdWt1eElrbUoW%2BwGIrDPGv7CyU%2BLj%2B18eIeavKM3lq7WqfWNOkYizuXFeNesE9P8AiX7WNbqCncfm2fzRoUmg6zEqa7ZPDPPCv93eQRMC00A%2Fa%2FZaWLCHzf8Al7oOra5b6h5KuBHe3rj61Ywr%2B5Xlu0%2FL%2FdDfzx%2F8Qwpup4VWBrORhfW7iS0YkrJbkdRLKv2om%2FY4fbzsvkXU7fWNHju3jhj1ZAI9UEKhSJvEmg%2BF1%2BPEhXgPm%2B98y%2BWriTyxrM0iCMBo5VVW9aDoJIZm%2BLif5ftRthN5X8zxWXm%2FTZ9dHq6HH%2Foz2z1eNLd1Kq4TvwY%2Bo2el%2FPXkjTPPGkNY3n7q7hq9jeqPjikp%2FwANE%2F8AuxM8mazo%2Bq%2BV9UuNI1KL07y2PFlbdWU%2FZljP7UTfstih9Jy6d%2BVV3f2dja3ltHe6ipezS2mrzAFfh%2B2iMf2K%2FE2Xcfk5ojoTZ311bz1JEjFXG%2FitE%2F4lnlh3USLKCY7lSGLQ7UI3DA9mz0L%2BVP5wLqxi8s%2BaZRHqIpHZX0hAE9NljlPaf%2FK%2F3Z%2FrYqqal%2BS%2BoXb2EYvraWG3kcyvLG3IRuwY%2BkgPFW2PfJjZ%2BRruwuFa21iRYFACKFKsKf6r%2Bmf%2BReTUDxy6Yqo20LQQpE8rzso3lkpyb58QBi2bNirs2bNirs2bNir%2FAP%2FT7%2FmzZsVdmzZsVdlEA9cvNirzb8zvIf6bhOu6REP0tbL%2B%2BjUb3EQ%2FZ%2F4yp%2Bx%2FP9jOHagvqWsMw%2B1ETGwPWh33z1znI%2FzL8hqEutf0qP4JRzvrdR9lwR%2FpCDw%2F37%2FweRnGxTtNBreExw5DsD6Sen9F4gpphto2prYSSQ3Ketp11RbyAiu3QSoP50%2F4ZcK5YzG5Q7eGPEUyRpMykRSEhH7MV2IzGAkDY5h3OSEMkDjyCxL8beaZaglxoOpxTW7qLSWkmn3cX2eJ34nx%2FwApclMsen%2BcdIeC4QCZQPXjH2kanwyxe2RjT7%2B2e0bRtVHLT5SWhl%2Fat5Ozr%2FxWx%2B2uJWtxe6HqSw8wtxDvBL%2BxLGegP8yOMyceQEbcuo7nnNVpZ4JmMtwd4y%2FnD9bENU0y80C%2BazuRyTrHIPsunZh%2FTKil4kSIaj%2BGdZ1HTtM846SXUenKv2gN3glp1%2FykP%2FD5yO9s7vRb2SxvU4sh3I6MOzp7NkyOo5OKmSuGUMvQ9MMdF1m40S%2FjvoAHUfDPA32ZIz9pGH%2FDIf2Gwjt5Qh3%2Bw3%2BdcFnrir0GW5Kyx6hav6ltfqDHddW5Dbi1do5V%2Bw6%2FzZLPLbQ6nP8AWrpAby3oJGI2kXqkrfyyqR9rOU6HrKWHq2N8Gl0y6p66Lu0bjZZ4v%2BLF%2FaX%2FAHYmda8p2i2tk8sjrI7miTITxkj%2B1HJQ7huJ%2BLJR3K3snuq3fo2ruoqQC3idvsgD%2FWpnMJ%2FJ%2Fme4Msq2jC9tuUaXcXER3drJ1japH72NW%2BFmX%2Fit%2FwB5nTdIksyzW0c%2FryxVZgzBmCsa4eCZAKHDIWgbPDvK9jquh6xaW%2BtW81rDL6lozTKaFJQVAB%2BKtfhwvs47myvL%2BNQfTs2kD9UK8gQKlv2Xp8StnR%2FzQ1GW08u%2BlZO0d3dTxxQshKsKHm7hh9jiq%2Fazi6MxEiI5YOa3NyxJMjVrux%2BIrlctmQ3TS91E3jCG2jHI09R1qOdOgFf91r%2Fw2CLKFYxyJBIFZJOwHgMC2NryG3wRnq56t%2FZhusZiihu7cMWt5ir2zpyikUAU9T%2BYcuWR5pdPqiacQrWqXCzR1USVBAb%2FAHYp%2FnwutdVhtdTa%2FgWVBOAk8BcNG9BTqyk4c6rc2dxe2F3c2kcKJGI7qx4kUjpyR0B6Vr%2FNhBqc9haSxpHERaXRaWIt%2FuvcoTRa75PlyQn%2FAJZvYI%2FMUS2SNELiVTEygUjnVW9OlftI8hVWVsnSXVxfTGS6laSViCS2wodjsNs5%2Fo8rrL69qwd6pIrqAw%2Fd%2FYPw9OmSua51GVJ762swQXLCD1AiryNQrMfi2%2FyVwxKkIjW7%2BezjR7PTpr%2BUbv6WyUH8zfa6duOEPnjT7SEWmrxxkSXatazowA5KY%2BScgD9qIrxwQ3mPX7EetqFhAtqPtegzySAewA45F%2FMHm1dcRIGjMdvC%2FqRIKcuVCvJ2%2BR%2BzglLY2yhjnLaESfcEquburW8M5HpzKvIr1FaDl79cRbRr6S8%2Br245GCoac%2FCjKp67%2FwAww%2F8AL3li01qBLgPJO8f7t4wP7s%2FsE9fhOHer%2BVtfgg%2BvabcJe1FJrPjwZVUU%2Fdy%2FR9llyIFixuEzjKEjCYojmGM6jaajZ28RjBiEisJzULTi3iSKR0wboHkTXdWt21OLT5ru2A5RlN1k8SrsVWT%2FAGD5ena1aXA%2Bo6pD%2B9J2WcenL%2FlBJR8D%2FwCrnSfy880W%2Flyzl0m7uJZtJR%2BVmXSsltyNXhYD7cP7ScfiT%2BXDXcxosR1D8rvP2qWUdlZadHZW7kPcPcXEYeSn2EKR8%2BKJ9rh%2FNkRu%2FwArtc026ey1FooJo9yKs4IP7StQclz0brf5jeXtKhR7eYX0sieoiQHYL29Rv2Cf5T8WQ7W%2FMj%2BZrOKd0t1Ct%2B6eDk7xMaj05CaNxb%2FVwEgCy249PlyECMefJ4235fXQ63Uf%2FAt%2FXC7VvKsmkfV7iab1dPlISW7jTeFz%2BxJHWoPg37edQ5kyNDIvpyx%2FbQ%2B%2FQg91OB7hFCurIssUq8JoHFUdD%2Byw%2FU2IIIsMMmKeOZhkiYyHMF5g%2BhCNipcyFf3nwD7cH%2B%2FoT%2B1x%2FwB2J%2BziNyW01%2BNseVtMoMc4G7VH82TCbyxfWMxtUMlnDIPrOli55JIh%2FwCK2ZeMqthYYOMVxBNb%2Fu2HK%2Fsl6JU7Xlp%2B1xDfbT%2FdeFgmPknW7q0eC%2FsZ%2BOoWTck5ftRnrG9PtIfstnatY0iw%2FMfQ4%2FMWh8bfXbdSjxnbmyD47S4%2F5ky55gWcaZqDPp1yZo42Ppz8SvIePHOn%2BTfO2qaXML%2FSHiPqcRf2M9fTYf78Xj8XIfs4qoWsGsQ64Tpp%2Bo31zGbK9WYfFE8Z9TceI4FP9lnpNbWDVdGit9RRbiO4gT1g3QkqCW9jX4lzksE1z5382DU7WzEKoqq5UVAoOIeV9uR%2BL%2Fgc7RDGsMMcS%2FZjUIPkopj0UvHtQ%2FKnV9H1F9X8vXCajyYt9TuQoYLSijkx9OTj%2FlcMS8q%2BaLny95guoNYs2s%2FrfEXsLLxKyJXjLH4pxOdpwl1zy1p%2BvCOSctDcw19K5ioHAOxU1HxJ%2Fk4otNoZYriJJoWDxSKGRh0II2IyF%2FmN%2BXll550z4OMGs2oJsLynfr6Mv80L%2FwDCfayU6RYNplhDYNMZxACqyEBSVqSoIH8uDj0xV8NappV7pd7Np%2BoQNbX9qxSaJuoYfrr9pWwuSNg4NSHBqKbEHxrnrL80Py2g86WX1%2BwCw69aJS3kOyzoN%2Fq8x%2F5NP%2Bw2eXm0q8guZoblGglicpNA4pIroaMjfy0OKvpf8lvMusa5ol1ZazOLqXS3jiiuTvIyOvJRIf2ylKc86eM8y%2Fk35usfK2r3FtfyMtjqoRZZ3qRFNGT6bP4IQ7I%2F%2BxztF1%2BaHke01SDR31aN7mZ%2FTLRVeKNu3qTD4F5dMVZlmylIZQwNQdwRuMvFXZs2bFXZs2bFX%2F%2FU7%2FmzZsVdmzZsVdmzZsVdjXVXVlYclIIIPQg47GSOsaNI5oqgsx9h1xV4R%2BZvkA6VK2r6VH%2FuPlarIv8Aulz%2Bz%2Fxjb%2Fdf%2FA5EoJLK%2FwBFh0yOJU1AyrH6oABboqJItebtyJkjZP8AKVs73qnm%2FwAsyW89les7xzwtSMxMRKG%2BHghpx55w%2FwAy%2BWpbIHWNNjeGKFkDjlVw5%2BIPGwp8S%2FtcfsZGUauQHvdvpNWJxjhyyMZA%2BiXQ%2BUmMXNtcWVzJaXSGOeJisiHsRtll1uLf6rcMeKb20vVoW%2F6pP%2B0v7GHsLr5ptvq7mOPU4ElmEhHH1eCII4kp%2Bz6aO7%2FtephBNBPbytDcRtFNGaPG4oR7EZVKJHrhz%2B92JjDPA4cw3HMdR%2FSiiNG1m7028EiEC4j%2BGWMn4JU7qf8AjVslmvaBp3nLSFvbCiTKCY2P2opP24pKfs%2F9d5BTFFIys5ZGX9pKch9B65JvKmrSaVdevxea1m%2BCcEFQyj9tR%2FvxMtxZBIV8x3Oi1eknp5Ud4n6Zd%2F7XmskVxp11JY3sZikjbiyHsf8Amk%2Fs4caPay6peQadE6rJMwVXboF6k%2B%2FEDOn%2BdPIkfmSyGp6QA12qc4JFpSVPtcG9%2FwDjfI35a8qzaFNa3urKrXLmscfI1gP7NSv2n%2FmywxouIN1DWPKDW95DY6K0t5IfgnaUKgD05cl49I6H7TZ0bynBAmmjSVvhcz2qEM60%2BHnVRw9om%2BH%2FAFsItfhndg1q%2FpNdxmIuDQVU%2FECf8oYReSLk6R5nWBw1bmT6sSD8FGBb4h%2FNyXDyPvbsWITE9%2FVGJkB30jPKV1PpOsrBduRLFcPb3JY9VditW%2F2XxZ0%2B91O2spIoJWL3E54wW0Y5SOf9UdF%2Fmdvhzm%2Fm2w%2BoeapJlBVdRjWdCDsZE2cfeuHdvfQW0BngZptVvEH1u%2FlG6gj%2B5hH7Kr0xHc0pD%2BYg8wa1NDFZWjSWtsrCRoiGJcn46b1YdF2yFWemzxsW1CN4Ej%2FZlUofubOs2WpxpNGl2oMP2eSbEe5yTXGkadqFpJaT26T2860YEVBB6EHx8MeCzdpunlEtpHYQ38GqRrFNaPA8EgJcFa%2FGqhadao2XBGlmbe2uCzevbGeRo2PcNJx%2F2S%2FDht51s3sLpYLoH6ncIq21wRU1UceLt9Hxf8Hhj5f8pXerWc%2Bq2VrHqE1oqQWdvNLwUoijmJB%2FO9W4%2Fs8cjVH3LezEvM2mXWqyabNozB7SS1WJ5SwBrHWnLv8A3ZUbfy4onlazmtrKC%2BJlNoHFFNFbmQaHvtTJ9rPlzU7GOO6vrRbeNioQQMrRxmn938IXj4YE0fQLnXBdQ2062l1CP3SSry9Xav7og0%2F4LDsikps7C3s1WK2iWJB%2Bygpg5lNOX0YAVr7TL0xXsxcxsVlhktwpFPtLVWwbf%2Ban0e8tp7LTYrmyILlpyT6hoRw2%2Fu%2FTbdlw3taoK4v7a1dY2dW5GjQ1qVHj%2FwA24Vah5a03VlNxZEQTtvyX7LH%2FAClyfjyfo3nrTrbV9PRNI1i6gM8qRENC8gb05OUI%2BNR6nR1%2F4HIRqOj655Vu%2FQ1SBogT%2B7mU1ikA7pJ0%2FwBi3xZGwdizhOeOXFCRBSPSZNX8maml1MhNsfgldPijdD1H%2BS37S8s6ZLrEEZt2uEe1W6VWtLsg%2BlKGHIGOReS%2F6wOR9dWtRp11dSQ%2FWHt4Wk%2Br93IGyU%2Fysk%2Fk%2FW5INATT9Z0eAWczGT6gr%2BoIlfcgBxsf2vT%2FAGMYxMSeE2D07m7PqBmjEzjWSO3EOUo%2BY72M%2BYfLcd3FJeQRxyo7EzQU792GQ60bU9Hkf9HTAwts1jdVeNl%2FyX%2B2n%2FEc7ZL5XstVSS58p6kYZqVbTrysif6tWPrRr%2FspVzmuvaDq2jzsup2JtA5NCfjtmNf91Tjb%2FYyccJ8tmgJPqV4JJLJpI3sYLqJ2uY%2FtBgP91q6jpIy8Vw0sNNn8tG11m8KWNnqTrAums5YhTvyct%2B0R8fw%2FYb%2FWwLdRpfaVEkkPO50r1HhjJALRSg9HpX92%2FwCzgSW4TV9Hga5uppdVspFt7a0FOMNshHJm3VuZY8fV%2B0zfBlZHq3BNigOnm52LIfDHCYwMCJmVXI8IqMYnzI4f85l%2BsRQc7eSKVRPHKts4ruUkPAcv9R%2FiwbZaY1p5gtrHUoipjnjWZOo4lhRv8pGwcPL9pcROZo2S6ZkaXgyqoaFVk4hn%2BJ9uPqNxwVrmsWupvYzalF9S1K1lTi6GscsYYMpV%2FFWUNx%2FlwYoSjd8jybO0suLMcUsdmUQROxRrnH75PQtd8vaT5itBZapAJI0YPE6njJGw%2FajcfZzg%2FwCZWh3GhW%2Fr2wH1vSZ0DXlPia1m%2FuZuK7MV%2FuLj%2BbPQ1pdR3ltHcxGqyCtOtD3H0HIF%2BZFnb3k8EMqhxPBJHOh6MnIUDfSdssDq3zfqWmR6lFJqenRCO6iHK%2Fsk3FD0ng%2FmjfC3SNVudJuUvrKQJdQOrxc1DoafaSRGqrK%2FRlyU32i3XlnU4RHOYrF2Isr1hy9Jm%2F495%2F8AimT%2FACsKte0Zp%2FW1Kxg9KaL%2FAI6Nipr6bH%2Fd0X88En2lfFX0%2FwDlz5x0fzbpAlsIYrO%2BgAF%2FYxBVCOR%2FeIBTlE%2F7Lf7HJpniLyz5m1TyrqVtq2ly8ZYzuvVWX9qOQftI37WeufJnnHTfOekJqViwSZaLd2pNXhk7qf8AJP7D%2FtYFZJmzZsVdmzZsVaOct%2FNj8sx5ntJNb0NfT1uBayxrt9ajUfY%2F4zqP7tv2vsZ1PKOKvhz0CsbwMzqSSHPRgw2%2BL3%2FmwrlheB%2BD9exHQjxGeqfPH5Oad5lupdW0icabqU3xTqV5QTN%2FOyr8SOf2nX%2FgM59H%2BQfmu5nWC9ns4rbl8U6OzMB%2FkpwGKr%2Fyk%2FOBtOMPlnzTMWsyRHY6g5qYq9I5j3i%2Flf8A3XnoxWV1VkIZWAKsNwQehGc68sfkv5Q8vBZriE6rdrQ%2BpdAemCO6wj4f%2BD550VVCqFUUVRQAbAAYq3mzZsVdmzZsVf%2FV7%2FmzZsVdmzZsVdmzZsVdiNzNDbwSTXLBIUUmRj0A98WwNfPaJbSm%2BKi2pSUv9mh2pirAPON5pMWiStoiPJfM1bVI4yy1G8jDkCnwrhDrD6jFb%2BWbC7Wt36Ecl%2BCP%2BKiZHbtyJajf5WDvP9xZRaNCfKtxKb4zj04IOR403JKkfAOfH%2FWws84ajNd3EEklFuSOUtK%2FDRVXiKduQOFIeeatpk0F5PeaUj%2BlATLIYwSYhXd%2Fh%2ByleuLP9U12ykmiWO2vrWOW4n3PxgcAFXmaty3cf77%2Bx9jO1%2Flvo0EejT388SvJqDMjFxXlEvw8TX9ls5h%2BY%2FkSTyne%2FpHTVY6LdsVUj%2FdDt1hf%2Fitv91t%2FsMgRW4dxo9X4vDiySqcfon%2FO%2FoyYJsQGHfJL5FsrXUdZk0m6uTbR3UTvHQAgzRjkONSODla5GgcX0%2FUJNL1S0v41DPFINm8G%2BE%2Frym%2BHMD0k52txeLppjqPUPfF6l5X8xWlm995evZlguLSdkjR9gTWjrXovP4XTEPM6wwzKSKCT4tuoIO%2B3vke80xXU2tW13ZQ%2Bo15bq8npJ8UlELVp%2B3sMBWOsXOtWy2iEyXNuCyIw5Myf8VsaseFP7tvizL4tq%2BTzNUfvT%2BOU6npky9ZrciVAO5Xw%2Ba8sis01rp%2FmC01O5YrSWJ4kXcyFiB9nsK%2Ft5fljzLXzMlg0bRQujQESbVlDcl5IenL4kyeebPIp8y6j5e1DSEjX0XWO4QsqKYk%2FfRgV%2Fb5gx8cHMe5lGUom4mjuPnzSW%2F1OfVL6R7sJW2keKFUGygGhIJ3PKmNVy%2FTAk1pdWc9zBdrwuElcTIezA%2FEMj%2FmjXbvQtaW3tEBgCJM6PuCHFQExtizSKI1DHJv5VuxKrWMp%2BwC8JPh%2B0v0ZCNLvrfUrGG9tjWOVQfkf2lP%2BqcPdHme3vIZV24sKn2Ox%2FDJBSyzzBplrqWnSQSxLI0P76EsoIDqO3%2BsMgmlaxceUdRXU7ZS9jJRb62XoUP7QH80f2k%2F4HOgXdyVYgHp1%2BWQW8g4TzQyoQpJIVh1VuhGJCh7FG9hrempKhW4sryMMp6hlYV%2B%2FOWa%2FbXfk%2FU0ZJOEL1ayu2%2By1P91udv3if8OuCPJ%2FmhPL1xaaJetx0y4rFFMx2imJJSvhHLXj%2Fr4N%2FO9G%2FwAJ28o%2FYvY69%2BqOMgdlYzqPmWy8xr615aouoxAA3dk4dJB0%2FfRGjofBl54U%2BnCySRNSa1l%2B2vQq3861%2By65GPKcztqxjY7NEw4jYbU32zoNppF1qfrw2JX6yierHExoJivWIf5fH7DYYnZaY3pN9N5N1n9JJEbuIwyRoisY1kDbpVu3F%2FidM7xpl3Y%2BadFt7m5tle3vIUkaCYBx8Qowof5WB%2BPONG0jvLY28qlRUgqwoyOOu37LpiXl3XbjyZqk7XglmtZIfTEKNQGh5REFvsxr8XLjgIrdWQedvy7GiQPrfl4SNaxVe5s1q7Rp3ki%2FaaNf20%2B1kT07WGCqwcMjdJFNQc9C2N9BqNvHc29WiljSVGI2KyCopkFv%2FwAotHu9cOq2d1JYW0x53dhAo4O53JQt8MYf9ocMFyB23ZwGOQIkeCQGxqwfIsatNQSQrIrmOUbrIhoQfEEb5LLHzPP6X1TV4RqFo4ozFVL0%2FwApD8EmFms%2FlxeWBNxoEpuIhubSQj1B%2FqPsHwo0%2B4ltUmW7Ro5ojRo3BVhT2OWCi1t%2BbPJ1pFCfMXlJgtl%2Fx92VCyRHuwjb4kX%2Bdf2ciOlG2huhcX2n8JI2BE8FHHzMTb%2F8TVc6FpWutaySPblJEmHGeCQVVwP1ZGtcsIbe5N3p0Ui2MlWaM7mB%2FwBpQ4%2B1F%2FLkTGulhnDIYnYprf6tYaxaxxCDlxIaG7iko8Z7kGtWr%2B3ywxsdGl1WwitzGbkgkRzugDGnRm34R0%2FZbIJBZwxv9YhAVx8Qp0JPiBnafJl1eXekLNdyrKOXGNgADQD4g3Gg%2BE7Y8WyTLfiHNJbbQvNHle%2Fe50eQX%2BnXAD3Vg53EoWnKImhQmn7Pwv8AyYRX9xql1dmXWOS3XHiqMnp0QEkKq%2BA5fazrQwHqOmWmqQGC7j5D9lxsynxVsFsLeO39hb39tJbXMYlhlHGSNuhB%2FUffOZXy3%2Fl7UV05n5MgrpN1LTjLCT8VncEj%2FYf5Odt1nQbzR3JcerasfgnA2%2BT%2FAMrYB%2F5V3Y%2BdtAvhefubrn%2FuNux1jkQUYkD7Ubnir%2F6uEq8D1rTFk9XUdNgaHix%2Bu2XVoHPcD%2FfbfstnQfyAeb%2FFktC%2FptaSF1VgFNGTiXFfiA%2BLj%2FlZC9WuNd8p6kNM1e04anYsY2mY7TW%2FZG2pKjfsS4K003mkCHzl5WmDLazercWoB9WCvX1FB%2FeQt9lv8nIofYNRl5FPI3njTfO2li7taRXkQUXlp3Rj0Zf5on%2FYbJXirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F%2FW7%2FmzZsVdmzZsVdmzZsVdgHVY9PmtHi1JlW3cgEuQBUbr1wdgPUdNttTtzb3IJWoZSOoYdxirzHztP%2Bi20aTyvdm6uDcJSCMJIPTVhRWKj7Bbbi2B9b8keZrnV3FvberbsQsVwHUKFJ6tU8hSvhk%2B%2FwAPGy1GwvLOkqK5ju0cIP3YQ%2BnItAPiif8A4nkkphKQaQOk6eml6ba6fGQVt4whPif2j%2FwWO1LTbPVrGfTr%2BITWtyhSWMjqD%2FEfs4MzEVwIsg2Ni%2BVPOHlm58p65NpU1XhP72znP%2B7IWPwn%2FXX7En%2BVgW28s63f2kWr29m76Ys6xyXQpxUggNUfa4iv2uOen9c8t6J5it0t9as0uo4zyjLVDKf8l1oy5EL7TriGW30Lytp7Q6Dbs0d7xI4Oz%2FFWPlycmNvib%2BfKziufETs7WXahOn8Ph9dVIn6a7%2FewDzPd3ukNplzYtxtEhW2adVBKzRktTkalOdf%2BBw60bydZ%2BaNR%2FwARaPq0VjOIw509bcLIkw%2B16yh%2FjRm%2F3an28de6dLYTXGk6xDztpx8aHoyn7Lqfb9nI3YX%2BreQ9ThS3pcWhcvazMBWSE%2FbgaQ%2FF8P8AJlrrDvunvmryB9buFvzAtnrkQD84z%2B6mKHkGRtu%2F82HWnO%2BoadLpU5aC4ZeUL9Gil%2B0jKR0aOYZOLO80jzho0d3Zv6kMn2WFPUhlGxVh%2By6H7WQWaO80rV1hvwBMjcfUAoskTbLIP%2BNsIr5oSu10tfOt7Ikt4th5ijQC6hkSsdz6fwfWIiCCr7UmTj%2Fl5JG%2FKTSdTjg%2FxDILh4UCUgHD7P8Axafj45GPMdkYtRkvbWf6jewEXNhcr9ppT9pEVatJWnxJx%2BznRPIfmz%2FFujfW5Y%2FSvLZ%2Fq94gBCmQCvNQfiVX%2B1xb7OA2NleaX%2Fkr%2FA19Jb2rO%2BlXbc7UvuFbuvL%2Bb%2FiWC7M7HOuarpdrq9jLY3i8o5Bse6t2df8AKXOP6jbaj5dvpLK5USBd0fcB07Ov8cMT3qkP5l6trkWp2kNi8sVr6CShoyVDyH7RJHXj8OQpfNfmCN1%2BsXcsnBeCrOfUAUdFHP4uP052ny%2Fq2g6veR6T5hgX94Almsp%2Fdsw%2F3W%2F%2BU37GSHUfyp8n6hUpavZse8DkD%2FgH5p%2BGCXNeTwM%2BbzeWxtr%2B3SVHFGMZKMP8oBqr%2FwANh9qv5gpr3kVfLV9zk1O3uIjFOwrzt4w1GZhUeqn2P8rJD5i%2FJJrK2lvNKufrSx%2FEYCnCXiOtCpKPx%2F1M503lq7tpDxDNUUUGlPwyJtWQflfpMWseaFtLgssZtZnDJ1VhxCn3651e38qanp%2Bs2ZX95brKG%2BtR7UVfio6%2Fs16YS%2Fk3pGmWxvNR%2BspJqfEW7WnR4kryLFW3PqN%2FL%2FLnW8I2UsW8x%2BVo71n1LT0CXp3mjGwlp3%2F4yD%2Fhsgl9oyXUaxX1u8LoCY2dStV%2FaG%2Fgc7JTEbiztrr0zcRrIYmDxlhWjDJCXQoeVeW9Rv8Ay1PKL25kuNO9ELEo%2BIjgaoKk%2FAqJyzqtrdQXkCXNs3qQyqGjcdCCK7ZFPMPl1Yg95aLWA7zQjfjXqw%2FycB6JrNzY3BW7uAbARKgUqSQVIC8KfCq8K8vhxq9wlntK4DvtJ07UgBfW6TU6FhvTwqN8FRyRyoHiYOjCoZTUEHH5FDC9Y%2FL6wuSZ9Ic2M3X0tzEfo6p%2FscL9B%2FLy8XVJNS8y3Yuo41aKz0%2BEkQrGwoWlO3N2zomVTDZV4l5n8s3Plq94oS%2BnTk%2FVZj27%2Bk5%2FnX%2FhsMNI893Wj2ht2thNVSEp8PGSlBK%2F%2BSf286nqOnWmqWcllexiSGQbg9QezKf2WGco13yhdaVMUT95A39zL0DDwPg%2BIZc3pPlzU5dStGa4IaeNgGZaAFWHJWoMOc5v5E1B7Wf6tcAoD%2B5PLb3jP0fYzo4xIYrZIo5UaOVQ6MKMrCoIPtidrZ29lAttaoI4UrxQdBU1OL5sCsO8%2FwD5e6V5708RXNINQgB%2Bp3oFStf2JAKc4m%2F4XOIWX5R%2FmVoOpummwIySAxNMssZhZG2q3Mqen80eeoKZqYq8l8h%2Fk%2FceW9Qt9Z1DU3W4gPJLS0JCEGvwTytT1U3%2Bx6arnWs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F1%2B%2F5s2bFXZs2bFXZs2bFXZs2bFXUzZs2KuzZs2KoXUjILG49E0k4EKetK43TYkhsoQp5EqGZvEnvgp1DKVbdW2I9jhDdaDqT%2FuLLWJbOzP8AulEVnAPVVkb4hiqB8wWUXmS%2BXTYWQi3ikZphuUlqOKmn7P8ANnOtRsiPW0TWUKqD9ofajYfZkQ%2B3%2FDLnYtH0Wy0W3aC0BJc8pJHPJ2J8ThV5u8tJrdoZrdQL6EH0z0Lj%2BQ%2F8a4bTbxXQPMGq%2Fl9r7mSs9jcUN3Cv2Zo%2B1xD4Sp%2FzZnaNYhtfNmgRaho7JcMwE1pKCASP246%2Fsn%2BZf58gsugWWtaPFp1xRL21qFkFCyP3U96YR%2BUfMt7%2BX%2BqvpmqEtpUsnGeOtQjE0FxD%2FwAzUxOy%2B5kHmGCOa1s7%2BVeEsFYpHI3SvwyBvDi647RtH1by3qEXmPT5VlgnWmo2C1Amj6rIrH4RMnVcCz3FvJ5x1pIqX2h30cVy3ouv2nQEeka9XZW5ZJNPult7dbZpTLasP9HlYUalP7uVf2JlH2v%2BEw891ZzY3tvqNtHdWz84pBUHoQe6sP2WX9rC7zJoEOu2Xp7LdRVa3lPY90b%2FACHwi0IahBqtdOo9hKf9LjY0Vf8ALU%2F78ybZFD591jS3R3gnRo5Ymp4MjA9snHkr8weRi0LzJII7pQEtdQc0SYdFWQ%2Fsy%2F5X7eH%2FAJw8uLqMDX9qg%2BtRL%2B8Uf7sQf8bLnJbuyjcNFKnND1U%2Fw8Dh5pfQo3Gc487eVFhMmq2KfuHNbmNR%2Fdsf92KP5G%2Fa%2FlyPeXPM%2Fmfy2Y4pmk1PRqfBBKpNwiDr6E3%2B7OH8j51%2B1ubXU7JLiKklvcJWjDqrDdWH%2FEsV5PntoFiuUuQOFxFvHKpKsPpWnLJZ5b8w65p1xEguXuIp3q8d07P1%2FZVm%2Bx%2Fkccbr%2Bhm2125sbPggX95AZq8FRhy3p%2FL8Srk181aDHqempqtvRLu2hDngPheMDmV%2F2P2ozjsrKLW5ju4Eni%2By4rQ9Qe4OL5D%2FACp5hgu7iOwkkUXFxD6yx9DWM8HNMmGJFFDRFRQioPUHIhrmgrAXubdK2z19WOleFepH%2BRkwymCkUIqD1BxBpWIaNq09o31WURrZoiem32ePEheCIB8VV%2BLJcGB3BBHtka1LQXVne0XnC9eUQ%2B0tevHxXA2lxazHfW620rx2atW4gkSqFOPCgdvjDClVwkA7hWYZswzZFXYnNBFPG0UyCSNvtKwqDimbFWE6voE1hIbu0Be3BrQVLIP8rxXJRo92b3T4Z2%2B1Ti3zG1cGkAih3B7ZSRpGvCNQqjsooN8NquzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Dv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxViPmbyo91cfpvQiINVT%2B%2Bh6RXSD9iXwl%2F33N%2FwWQzW9AXXo%2FXaFg7L%2B%2BhK0mjdBuafzACjrnYcDTWNrPKk8kYMsZDI42NR40w3tRW3z1p2l6ho%2BotLAfXVE5OgDVljA%2BLj%2FxZGv7OS2BbeaRbscpI5YuLQq3ETIfiQcv2ZVP90%2F8AsMk3mi1FjqBnt0CpcIHIUU%2BNT8RFP5tuWRDTFEulwPaP9YjVSfVjBIFGPM%2F7BvHCOSXqXlu6trnTI1t7Y2Zj%2BGW1YhmQ%2BJcfb5fzYcZBPKl1I7GRXHKGi3AY%2FajPRvdsnQNd8BFFDjnL%2FPWhJaXguIKRw33KngklPi%2F2Pxcs6jkY892Ul3onqwoZJLWRZeAHIlT8D7fJsAVBaLpUeueS9PtriYPcWykQXkfZ4yVDD%2FJP2WwX5X1NJ2NrQIGXkoXpzQ8JP65GPJfmOTR5G0zXLmGCzlYmzhZPSeE05ceP7UTjfliOhagkWs3CW0gkUXbPZjoZVkY8kQHr8OSHUJZD540vmYtVRBIAvoTo260JrGzU7cvhzaJ5jgm0t9O1u7giu%2FRdY%2BJ48oyCg%2Fd9QyfZ%2FwArJhPBFcwvbzqHikBV0PQg9sgt%2FwCSLpJy9pxniPRiQsgH8rfzYB5ql%2Fkq1hXU4ZigNwjsizftemU3Uf5Jzp%2BRXyloF%2Fpj3FzqYiR3YraxREsyx%2FzTOaL6j%2Fyp8CZKsSUOzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Hv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVg35iPrMEFld6XbR3CRM%2Fro1fUIIHwx%2Fs4U%2FlrqOkz3c1lYQmENFJI8DCgRzIDIg5b1JavTOiajZLf2cls1KsKofBh9k5ydpJPL%2FmzT9ZcBIWY2t5sFoD8Ls5C1%2FwCDkyQ5KyjWdLGi6ml3brSyvKxuo6I58P8AJPVclOiXZurPi5rLAfTf5fsn7sE3drBqFq9vLR4pV2I7dwy%2B%2BF2j6Xf2F5dS3EqNbyhViVa8iV%2Fbfag6%2FZXBdj3KnWURXLzYFYV5n8n3us6ut7btEITGsbc6hl418B8WFd75Ym8svHqVqPrQiCsJSPiikH2jQfsNnScayhwVYBlOxB3BGG1Sby7rf6YgZ5KCZftIBSmHeFllodlp95LeWqlDMKGIfYB7kDDPE%2BSuzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F%2F0u%2F5s2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZFfM%2BipLW%2BSJZAf71CtaMPsygf8SyVZRAIIO4PbCDW6pP5YvDd6Wiu1Zbc%2Bi%2B9Tt9mv%2Bxw5xG3tbe1Vlt41jDHkwUUqfE4tgPNXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Pv%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV%2F%2FZ");background-position:center center;border:1px solid #0a0}.yui-skin-sam .yui-h-slider{background:url(bg-h.gif) no-repeat 5px 0;height:28px;width:228px} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-eof.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-eof.css
new file mode 100644
index 0000000..1f6d2e2
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-eof.css
@@ -0,0 +1 @@
+div.base64-singlequotes{width:100px;height:100px;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAAAAAAAD5Q7t%2FAAAACXBIWXMAAA3WAAAN1gGQb3mcAAAFrUlEQVRYw%2B2Xz28kRxXHP%2B9Vdc8vj2fG9uIkm2yUeFGEhNCKQwBpj1yRUBAnpJU4ceZP4MxfkBxy2GO45bQXuEGQohUKigQ%2BsBBE1sbYXv8Yz%2FRMd9fjUN09PV5nFZA4kZZa79W3quu9er%2FqNfy%2FPwJgZty%2Ffz%2FZ29vrpmmqhlWTgmFg1UpbfWhYhG6Yq2cFi%2FNrj9nJyWnx%2BPHjeafbMTEzPvjVB9%2B6d%2B%2FezweDwV1BfHubivkC3lZya%2F4m7Np8UZYXhweHH7733rvvC0Kyv7%2F%2F7p07d34qIjyvr63RNb4l4CbsRUrNrq6OfvfRRz%2FxDx486A%2F6g7vXhX9ZIf%2Bp4JomaToZj8d7Pk1SFRFXb1aWodq09l%2F9YZu%2FCWMVL9e%2FaVFVQVUREEG8r3VUEZ4cX%2FHL30%2B5shRtAhFq4wggNb6GrXgVa2K2jYtACIHv7Sz54TfHjWWagBOBy0Xgt%2BcjLtwQxVCpNwURQat1DdYaT7pwdwKDFA6ncHgFizJmSb3WLPDa7PMIVlb2daqZxdONUnAetEojEdBGiXXhTmAjhZ0%2B3N6AlzeEROH1TXiWGf%2BcwmkWZYnAfAkdx1pq%2BhUbT9z3IElUJlVhI4WsgCLUyggi4MQYd4VXNmCYRqXOspV7UoHbQ3hpEMeLAk5mkFYRYlWI%2BHZ6CTDwkKSQqrA7gFeHMF3C6VyYLmFZGiKCE6GrMFsaWb7yuVOh66N1FkUUpBJ3TyvFovToBl9XMbNY2bZ70BsKfW94hbyErosmXpQwy4VgkCjMizjvRRik0EtiLNwagBf465lwOqtkETEn60XT1%2BlTazrpKlR%2BKkooy3Xfb3Wj3wGWJRQhnni7B53q5FqZ4%2FUR7PYhGMxyuMwgWVqTxrYWAwZYQX78J5i8ie9txSAkoOqqQAqk3pBgKLDhlY5XVKPCi3w97YRoKSFaceCgF2hqSXRBPQAIOcXRH8hP%2F0y6%2BRpWLrEyg3SbS9tmzggzJQSLQZo4xoOE8UbCsJfQ7zi6iaIizZ5OBVfXDKPireWC%2BvAYWOBqeszl9Jg03afbH6OqGH%2FBSUrqbrFIXiHoiEDC%2FPySi2d9nnZHJE7opY7dcY%2FdcZej84zpPGfY9Uw2ErYGCf2O4mUVEzELWtqUxZKjf3zK2cURzicMRy%2BzvbuH8ylFPqXIPqNczClKY1mUZFcnSDKkv%2FUNuptbWG%2BLw%2FMh%2FzrYpKBHKV3ONOXzYxeV20z49qhs7gaMWIjqQQiBxVXB4irg05yz4u%2FMpieoJuTLjDJfUJYBzBAFUUHkhMvLvzFPuvQ2JvQ3duh0R%2FjuiDQdIn6MJdvkxTafZUPuaN6UaOo6UNtgNl9weboguwqoA5fCjEusNCzE8LJQFRuNrzpQD%2BrmZNM55%2F4A5z1J2iHtDEg6fZK0j0uHlDrh2N4i3Ptuc%2BH5tjp5HliWQmmOUAhlYe0rqUqWSEOhcZ05AvE1UdColSQJaHWlSUYgJy%2FO2fFfo%2F34piphFOZ4OrvNdL5EJZbcmE8OQzFxIJEGEgIeE1%2FhrjJLxZcOrIVpVC7TW00WmLWyAMDEs%2Bi9wVJDtG17Y21vVmNxLKqIOkQqqoq2qHORmgj9UQcza7mgFm4GmiDjO5C72DSoQ6uPVTW%2BzuFUcQ2teKd4pzhd8b6Nu6jg7vZsrb1rClEIxhu7Q37x47fIy3j%2Fi8iqqlUuEWTFN%2FOrMU3fEEuhUM8FIPDqZgcRIVhsAXxtjGDGS5M%2BP%2Fv%2Bm7yopVrRVsPabsW%2BYG1T%2Fy3KahqSg6cHRb5cTmt5ZXhxQ7nS6yZsVWOajDFbw2JSCSGEIsuyC%2F%2Fo0aPp%2Fv7%2Br9NO5%2F5gMOhJLNn%2FpQLrLfw6tkKKorCDg4NPP%2Fnkjx%2FLOz96h2enzyZvf%2BftH9za2fm6qLrnO9tGk2vY86f%2FMliWZRdPnjz5zcOHDz%2B%2B%2Fifimorzv31C9X718G%2FYrCYSNJa5LgAAACJ6VFh0U29mdHdhcmUAAHjaKy8v18vMyy5OTixI1csvSgcANtgGWBBTylwAAAAASUVORK5CYII%3D');background-position:center center;border:1px solid #0a0}div.otherdataurl{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFBQ0WDWwqwjwAAANMSURBVEjHrdZbaFxVFAbgb2aSTG6GTi6mVIwxNxF9qFI0RQnFUqiYamutVutLa2t9EY0oPggFoYgPRR%2FaghYviA%2BiIAYvmBJKoYWiiBCigVTT1FisbUhrEtNkJpc5PuQkjGEmJqkLFmdz2Hv%2Fa%2F3rX3tvlm95oS%2FLokuZtIpbdvAs7KFtL22wjb3V1C41upy2ke1DXC2k%2FBjv1HHXDrbkEamg7lX2P8QTldQ2UtfOB8uiJsHNiB%2Fik0GmO%2BgZIxgnGA59nGCMoJPeQaYP047iBDXZEohkAYof4%2FNyKlZRdR%2F1ASZCnoOMhWkUheMz9F1laJSRZ3gEqVw1ipZQjcoBRrbT3Ez9OJLhZkHG5CD8l8Q47qXhMZp%2FYxhVFaxBLBtQejdtA%2FTtZPMIJnOknI2WSYzicTYN8OtTvICZbECxdr5Pkm6iPL0C3c%2BgkfIJgi%2F4LnP%2FudRKD3K4jf1VJGLEAiuz6VnA4AGam1h7gpNIzSFe66D3NurLKVhJNkHo07N9V9BE3XHOYmyeuirqG1l9mdHgOkDSGd8%2FGWtg9Roa56lrYdchDtRQPLlCkEywKVRScDfrurnwC2diiPTRe47iVtbnLZDxckGCkKYpPM%2FRr3kbyRhsYOtRDiQonFoBSHrBOI18rOeOPvr76YrCeUbf5fTvjOddJ0gQ1uMPku9z6hwjiEZhgOMn%2BaaUeHQJIOkMD7KMA5QQP01HP18hPbfvDTvZPETqb2YiS1BWrozM6jk9SPJJHkZZ5qFagtoaNnbyZg1FE4sUPRdlAQpwkdSjvDZAJ%2FoxNt%2Bw6NlGbQVFl5iKLKKsXCAwyFQZ8S3ciu65ho1lBJ5%2FkZk3OBGjpJWGmVCmsjTkQvA8JHCUU7s5eImevzg%2Fd7BGFhzCARIf8uVN3J5Heh1VM%2BHlko2y%2FHBxF0NJolfo38eDuJJxbf0ro%2FnMurh8hM%2FupH4tdT8zciOFsTC8SAgQoJfRxKzCuvfw0k%2F8MDx7xqUyez%2BS48ESIN7Ky6OUpfAtrxzhx03UR4m0c%2FZF7tnKW2mma4l9yuthTSIZIvxPi6EcpZW0PM0xtOzjo%2Bf4GPfv4r1qNqAUFYs9diJLBC1CIa7FZx8fUlwI22LuNv%2FfLbKMAOftH9TwRXg6%2FiCDAAAAAElFTkSuQmCC")} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-linebreakindata.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-linebreakindata.css
new file mode 100644
index 0000000..ca593dd
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-linebreakindata.css
@@ -0,0 +1 @@
+.yui3-skin-night .yui3-dial-ring-vml,.yui3-skin-night .yui3-dial-center-button-vml,.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,.yui3-skin-night v\:oval.yui3-dial-marker-max-min,.yui3-skin-night .yui3-dial-marker-vml,.yui3-skin-night .yui3-dial-handle-vml{background:0 0;opacity:1}div.base64-doublequotes{width:100px;height:100px;background-image:url("data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFBQ0WDWwqwjwAAANMSURBVEjHrdZbaFxVFAbgb2aSTG6GTi6mVIwxNxF9qFI0RQnFUqiYamutVutLa2t9EY0oPggFoYgPRR%2FaghYviA%2BiIAYvmBJKoYWiiBCigVTT1FisbUhrEtNkJpc5PuQkjGEmJqkLFmdz2Hv%2Fa%2F3rX3tvlm95oS%2FLokuZtIpbdvAs7KFtL22wjb3V1C41upy2ke1DXC2k%2FBjv1HHXDrbkEamg7lX2P8QTldQ2UtfOB8uiJsHNiB%2Fik0GmO%2BgZIxgnGA59nGCMoJPeQaYP047iBDXZEohkAYof4%2FNyKlZRdR%2F1ASZCnoOMhWkUheMz9F1laJSRZ3gEqVw1ipZQjcoBRrbT3Ez9OJLhZkHG5CD8l8Q47qXhMZp%2FYxhVFaxBLBtQejdtA%2FTtZPMIJnOknI2WSYzicTYN8OtTvICZbECxdr5Pkm6iPL0C3c%2BgkfIJgi%2F4LnP%2FudRKD3K4jf1VJGLEAiuz6VnA4AGam1h7gpNIzSFe66D3NurLKVhJNkHo07N9V9BE3XHOYmyeuirqG1l9mdHgOkDSGd8%2FGWtg9Roa56lrYdchDtRQPLlCkEywKVRScDfrurnwC2diiPTRe47iVtbnLZDxckGCkKYpPM%2FRr3kbyRhsYOtRDiQonFoBSHrBOI18rOeOPvr76YrCeUbf5fTvjOddJ0gQ1uMPku9z6hwjiEZhgOMn%2BaaUeHQJIOkMD7KMA5QQP01HP18hPbfvDTvZPETqb2YiS1BWrozM6jk9SPJJHkZZ5qFagtoaNnbyZg1FE4sUPRdlAQpwkdSjvDZAJ%2FoxNt%2Bw6NlGbQVFl5iKLKKsXCAwyFQZ8S3ciu65ho1lBJ5%2FkZk3OBGjpJWGmVCmsjTkQvA8JHCUU7s5eImevzg%2Fd7BGFhzCARIf8uVN3J5Heh1VM%2BHlko2y%2FHBxF0NJolfo38eDuJJxbf0ro%2FnMurh8hM%2FupH4tdT8zciOFsTC8SAgQoJfRxKzCuvfw0k%2F8MDx7xqUyez%2BS48ESIN7Ky6OUpfAtrxzhx03UR4m0c%2FZF7tnKW2mma4l9yuthTSIZIvxPi6EcpZW0PM0xtOzjo%2Bf4GPfv4r1qNqAUFYs9diJLBC1CIa7FZx8fUlwI22LuNv%2FfLbKMAOftH9TwRXg6%2FiCDAAAAAElFTkSuQmCC");background-position:center center;border:1px solid #0a0}.yui-skin-sam .yui-h-slider{background:url(bg-h.gif) no-repeat 5px 0;height:28px;width:228px} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-noquotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-noquotes.css
new file mode 100644
index 0000000..516ee02
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-noquotes.css
@@ -0,0 +1 @@
+.yui3-skin-night .yui3-dial-ring-vml,.yui3-skin-night .yui3-dial-center-button-vml,.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,.yui3-skin-night v\:oval.yui3-dial-marker-max-min,.yui3-skin-night .yui3-dial-marker-vml,.yui3-skin-night .yui3-dial-handle-vml{background:0 0;opacity:1}div.base64-noquotes{width:100px;height:100px;background-image:url(data:image/jpeg;base64,%2F9j%2F4AAQSkZJRgABAgEAZABkAAD%2F4RfJRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAAD0JAAAAnEAAPQkAAACcQQWRvYmUgUGhvdG9zaG9wIENTMiBNYWNpbnRvc2gAMjAwODowNzoxOSAxNDo1ODowNQAAA6ABAAMAAAAB%2F%2F8AAKACAAQAAAABAAABwqADAAQAAAABAAABRQAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABaTAAAAAAAAAEgAAAABAAAASAAAAAH%2F2P%2FgABBKRklGAAECAABIAEgAAP%2FtAAxBZG9iZV9DTQAC%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgAdACgAwEiAAIRAQMRAf%2FdAAQACv%2FEAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5%2FcRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14%2FNGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x%2F%2FaAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkklKSSSSUs4uDSWiXRoOJKFi3Ovx2Wvbse4e5gMwRo5soypdOyN9mTSRHpWvj4Oc4%2FwDVf9WkpupJJJKUkkkkpSSSSSlJJJJKUkkkkp%2F%2F0PVUklCqxttbbG%2FReA4fApKZpJJJKUo2WNrrdY8w1gLnHyAlVOsWvowXZDZ%2FQOZa8D9xrmm3%2FNr3PUswm%2FpmQGamyl4bHiWuhJTYqsFtTLBw9od94U1Q6FkfaOk4tszuqYfwV9JSll1%2FoOt2sOguDXgeTm7f%2FPmN%2FwCCLUWZ1VhrysbKA%2Bjua7zgtuZ%2F1FqIUXTSQcvKZi47sh7XOY0tBDYJhzms3akfR3blVd13prMtuI%2Bwse%2F6L3Ahm7n0%2FU%2Bi2zafzkFOgq9%2Bdj0ZFOM4k3ZDtrGNEnhzt7v3WbWPU8bJpyavVpduZuc2eNWONb2%2F2XtXOY2VU7rA6hnO9RuJS%2Br1hO1lguGJbuYz2extvv3fzLPU%2FwCESU9QkkkkpSSSSSlJJJJKf%2F%2FR9VWf0iwiu3Ff9LGsewT%2B6D7P%2FAyxy0FmunH6xPDMpgd%2FbZFT%2FwDoOx%2F%2B20Qp0lC02CtxqALwDtB4J8FNJBTVovx%2Bo4jvbLLGlltTuRMssrf%2FANJiz%2BhZDqMO%2FEyCX2dOc6t%2Bkuc1gmt%2B3%2FhaPTeoZ5s6R1IZrBGDlkNvI%2BjXcYYyx%2F7tWV9B%2FwDw%2FwDwlyD1LqWH0jq2N1O55rxOogY1rwC4C9uuP6mzdt9Wl1v6T%2Bb%2FAFdFS%2F1Myq%2F2VThusa%2B2tst2k6sPuY73Brm%2Fo3Vv2fy%2F3F0S4TAzq%2Bm%2FWDquKGnbhWOya62DUUlrcmyulktZ6f2ey19Wz8%2F2Ls2Z%2BFYx1jL6yxgBe%2FcIAI3CXfNIqZX3ursqqrZ6j7TqJgNY2PUsPP0dypfWJ%2Fo9NOT2xrarHTxs3tZkf%2By77VR6v9bejdNsbkb3Zbqm2sfVjgOOhrdZFljqsffXs%2FmvV9V%2F%2BDXHdZ%2BuvU8zA6i%2Bj02Y1zawaZLt2LY21tltb7XOb6j6%2FwDR1V%2FzV36v6rPVYFU%2BiCs5PS7cd43O2WUOB77d1X%2FT27lwvVnNyKK8d15q6hij207o9dg3DHdW9m9zLv8AQ%2F4Wu71K%2FTtr9aqzJ%2BuHV8tmR0zNoyLvsXU8Nr7cdtjmtN1J9K%2B2podsbk1%2Fo%2F8A0YsnG6te%2BnLZbdXXY6pttADNwucwmhv2cWbv0tnr%2FpKnfpKbKf8AtsqD1DvrjnfV70cKlldgzgbqjf7QHB3p2sG0sb6lv0%2FfZ6TEcZg630xz2vezK6jVbfhVtf6biQ%2BxltmNY7a2z9Js3Vu%2FwayvrHh1%2BhhdKv3XubjBhY9wDbHtPpOdXkOH6t1Dd%2FRsl%2F6C%2FwDomV7Fg9Wc%2FF%2Bq3RL6biben5WVjh4lljdxbexltf06La9vvp%2FM%2FwAFZ%2FhEuqn0r6lfXM9WYzpvVoo6wxvcbBcGj9Ltr09LLoj9bxf%2BvU%2Fof5mz9avrJd0%2B2jBwHAZTrcd17iA7bVZa2nY0H%2FCXw9v%2FAAdf%2FWl5zidQZ9ZcY3l3oddwg2z1mHZ6zWfQv3t2%2Bnk0%2FwCn%2FwDRf8xf6Df1DqvXGZ%2Be5tzsi7Gd6lm2kPsqNbqqOG1%2F4Cuxnpt%2FS7%2F9I9ALjR1Gh7f96%2BuJJpA1KZj2WNDmODmnhwMhJaySSSSU%2FwD%2F0vVVn9airFGYSGjEcLXuOkV%2Fzd5J%2FdZU%2FwBX%2Fra0EHM9D7Jf9pE4%2Fpv9YHX2bT6mn9RIKcE9U6lgXnJDv2l0jN%2FS497S39C530sOyxn%2BBc%2F%2Bh5P83%2F2kyfS%2FR5NlPrv16uwczExsPHFozLBRWHz6rriWM9Ouv6Hs9T3vseue6B9buoZF5xBU84BDC%2BtoZYW1PczG%2B02Gxm71Gb2XP2fod7P5mtct167q%2FT87Gdfk%2FbscWHI6V1NrQNGu3O2NZ6fp5FN9dTcrH3epR6f9RKwRYXzhKEuGYo%2FxfSMvM6lZlF%2FVfSobU11Q9MGyqLfa%2BrP9PJsr9Kz09n6bGq%2F7dWN1z9VxC3KfZT0%2B%2BPUyGg5NIaPdU7ezZe7KxPR%2FR5Gyr1sX9Db6%2FwDguZx%2Bv352be4WNwft%2B9tb2n21mza%2F07Xn2%2Fp7qmVep6dbP0vqfolqZD7mY91eDmXh9pBAZDGjT9awvb%2Bkp3W%2Fp2Mdkfpav1b%2BXUb0WulTeP23h5Di3JL3UYWTYzlzbKn1sc5rN7baM3FZ9pw8xrvSvr%2FQf0im6uvH6vY7G6hfS2mx1WFYaq7bnk%2Bo2r0rKPTa7bustxX20%2Bz%2Blf4RW%2FqPXeM403s%2FQ9LpdbQ4v97Wl4DcW1nud6PqfrH2e9nszMavNx%2Fs9%2F2hA6i5r77HZLH24Tn1W4%2BUwj2Pva3Jdj5bfzaHb8n7Fk%2F4P9YxP0tX8wulqaWfb1CzZ6GaM30622WDD%2FSV1mp3sfY6tjWOsY1tf8776a%2FTQ7s27qFNVIrqwAfUsbZRXt9S0N9Ky1tX83%2Bgre%2F1sej%2FAE1lzKltdDtbi9ZJsqqbTaBXdS0TbW68PycUxNj8qrIbR%2FpPU%2FSb6%2FTyv6VWf0qvOrzmsYasnGzHmk7gx1Za6K2XR7sd%2B5v6K79JXi3bPU%2FV8i71RRU5%2FWaLMv6kYj7SGX9L6g%2BqK%2Fosrymeux1cf4B17fYsrpuPmNxftz63Pcwl9DWDQ2sIqZkNJ%2FNZe6luR6f%2FAAX%2FAAS1f2pXX0vq%2BJln7LfkVVta3ZAfl4929myn%2FA76rLq86r%2Bbo%2F4qyhVruoZfSek4ldmM12Pe227D9XQBtvptu3%2B7d6Vr66Xf2PU%2FwiSnsuqnDyLMfFtMZORj%2BrXSPeHFseo2l7g31La%2FV%2Bh%2F2oq%2FwfqfpFznVcd9uDZivaxzDZXa1zztZaXB1LW%2Bv%2Fgb%2FZVXi5tv83%2FRsj9AsLqfXv2j0%2FpXqPFedgNurfa10F3uqsx8lv8Ao3Obvrf%2FAMT6n%2BFQquq59%2FURec1zb7CHXMc8htmw7n47v8BtucPUb6v6P9Ld69iNoS9H6Vk0Zzcpj3tqqeW1AAtuc%2F8Am7Meyhv6WvZ%2FNZX%2FAIEugzuk14eLiN69fbi49u6wgBjyWNb6dP6IOa52V6vt247P0dD%2FAFP0ajjdc6kBeekYQd1DIs2tsZVZbdVXt9tYqsG9%2B3%2FTPZ%2Bl%2FwBCsajpXV%2BtX2Zwo%2Fal7Wuvv9S0Mea2%2FT2%2BvZ7m1e1j6GV76PZ%2FpK0NE7avpH1Z69ndU6Ti4mP6mVZktBdbkP3uqbWTRkjKuYGb9t1e6v2776rP9Iuyw8VuJjtoaS8tkueeXOcdz3%2F2nLyb6vdZv6DjDKwmVt3lzbsZz3VsZcHluTgX499hfRYxuzJwn%2FznsyKrLLv8H2vT%2Fr9hODK%2BsM%2FZuSWkvrtFjC1wLmvr%2FWKqW%2Fm%2BzbZ%2BkRR4vVpKn03q%2FTeq47Mnp%2BQy%2Bt7WvG0%2B4Bw3N9Ss%2FpK%2F%2BuNVxBT%2FAP%2FT9VTOa17SxwDmuBDmnUEHsU6SSnxf6x9CzPqt1ECix7GMeben5Q0caneyylzvouto3MruZ%2Fhav0np%2FpFUryaMjFvrzps6dkPbZmUsHvx7zFber4f7rbLP6Wz%2FAEln%2BivYvY%2Bu9L6f1Xpl2H1GG0OG71SQ01uH0b2Pd9B7P%2FUb%2FwBGvH8vpF3T7%2FQpcH5NIea7az6leXSd2%2BzHjdW70qHbMnE%2FwlSZrE2NuzfjKHMY%2BGfpzR2n%2FL9H95wM%2FByOk5hxsgiyuwb6rm613VH6N1X%2FAKMrW10jqbrmHDyHl8MhjY3G6sHd6PO318dv6eiz07fW9P0v%2BOHiPxc6n9j552Ydh3YmVy7FtP5%2Bvvfiu%2Fw%2F%2FB%2Fpf5zehYv1a6pVk5WLnh%2BJZhML6rmiWvsBY6t1Fn0n1NY77Tvp%2FSf8WnijqNWnOEscjGQ4ZB7Oig0fV7Lf01rr8rqR2tez3XPbBx67XsYzayxjbMl9m38%2F9J%2Bl%2FS%2BpzrvUxMWqvqNVuJksx3402zW5oosbdScig725OHd9qY6v%2Bc2ZOLT6Nn88y3e6X1uyk9NexznYd%2BPdi2Mc1lTxl4ztznWu3bKfWZZXbs9T06f0ypdY6J1Hr%2FVH9Wrtpsx6mMqFDS%2F1WisF30XNa5%2B577bf0eyz%2FRV%2BqnHwW1RotDF6xay49Tviks9OHNBAc9g2sfc1m7Zu2%2FoG%2FQxv3PST9Lw2dTblM%2B1W1sdDixoM2vu3f0936Ot3pOZsurp%2FQ5H%2Bj%2FwaJj4GXf052ZjepRjbmOrywNzNjHulh9Meg5zN%2B1lrn%2F4R9fp%2FpFYxcHD6ey6nItdSGAOtdlFwhlh%2FRuHpN3Ppbv8A5xnqemgFOZ1%2FDyMW77T1DIOQy4vra91bqC00en%2BiYx%2F06Nrqnev%2FAIf%2FAEj1WxaG2sxKOo9Mu6iK32UYeOLHML3vLrNrrmu3%2Blv%2FAPRi1cvpl1PUqW3Nfh5VJ34%2BNmO9XEurHu%2FV7t1jGMsYf0noP9n%2FAANqv9Q6W84w630hn2cuFd1jcYGysjS6qzLxmiu3Fyadv896NX%2Bl%2B2eqhSSBQ1u%2Fwed6z9X%2BrtFJH1dZj1agENsqZuIB9EPsvbkW7Wj6eS%2F6fq%2Bj%2BjWOcbNw8hnqdNxq3tizZYXOa4Ty7fkWbmNd%2FObfof4RdpT1fqHUs1rc%2FLfktyRU2vGa4bSHNePtFL3el6VmLlVejZ7f0m%2F1cj%2BZ%2B0WbvSfqn0%2Fq1eTjdRIdlVspsqcxwBqc8PbfW%2BrX376%2FTtf%2FAKH0bcS6v2WJXqulj4YCXEDZqurxn1dxXdRosuw78hnXcR5dSWu22OrY2bqsdn03ZFTt932Oz2ZWL6lVLPWoXS19Hzup9Pq%2BsfTMYty8kn7ZRXDCy5hdVb1DEre%2F9NU79LvxHbLclj7Kf5rIspXE5mPm9J6q%2FLqa82YrmvfVJHqUsd%2BgyqLatln0a%2F03pP8AWxLmerV%2B5j%2Bz%2FU7qvR%2Bp9Cot6QNlLJbZQ5xdZXb9O1l73S99jnu3%2Bq7%2Be%2FnEmN57qv1X6b9c%2Fq99oxWNx%2BuYxcyx7g9rjc2PXxM5t36x6djmt9H1v02L%2Bi9L%2FCVWcz9VPr51npPWX9H%2Bsxuy8bItFNoyDvtot9tIcN%2F06He316P%2FAEKo%2FwAJ9p9hbXW17ntaA98b3AQXQIbuP5y43%2FGB9Q2dfp%2FaXTWtZ1iloEGGjIY3%2FAPe7%2BayG%2F8AafJ%2F6zb%2Bi%2FSUJT2TK66xtraGAAABoAEAbW8fyVJecfUbqP8AjHPV31dXxMjJ6c%2Fay27LaMd1JaNgsoDxX9o9rf0zaW2%2Br%2FPep%2FpPR0lP%2F9T1VJJJJSDNL%2Fsr9geXGABW1rnakD6F36P%2BsuAwumV%2FWXNrxHvcymqh2S7IqLnRa%2B7Jfj2UPcGtqdvyfVspZ7K%2FQ%2By1%2FoaV6Ffj05FZqvYLKyQS13Eg7m%2F9JKimvHprorEV1NDGDwDRtakkEg2NCNnxDqdGb0Lru3qFDHX41rLTWGxVeyR7626tdVmNa%2F1P3LPWr9i2cmzrpY5tdB6gzpL7Kq7WGXPqqf6D8HIc1gZ9upo%2F7T%2FzmVX%2FADXqr0brOF0%2B4135bWVFgc05kD1WMP06ari17q25P81Z%2B%2FX%2Bi%2BnauTysfqnQeoM6h06l91eW2H4jwf1uhgc70Lq3DdV1XGxm78d7%2FwCfo%2FQXfpK7GIRFX4s2fN7vAeGpRjwk93IyOj5VDnN6U5%2FUMa%2FflYlLGuLm%2BqxnpfadrG1tdk302Ufav%2Bs2en%2FNrQ%2Brd9%2BNlNdfS%2FDuDXMy8e7R1bmjfJ%2FkNhl9Nv59KtOeLbMDO6FktJte%2B%2FCstLh%2Bhcaxm4mY5oc5tLMr08XK3st9H7TRd%2FSqPWW11fA%2Fa%2BOOpdOc6jqeMNllYjcdvudjWt9zfVr3b8d%2F%2Fom%2F1E%2B2F5jpf1u6Dj9RyLKcqu3peaf1rF1aGh%2Bhym0XMr91TfZksr%2Fncb%2FSWY9bFTwftfUOpdQwRZvxsDLOLh2uBexrLH21YzLLAHv9K3ZX%2FwAH%2FOLUw%2BnfU%2F6xVDB6lg4%2FTutEFrLaG%2BgLXD%2FC42zY2x%2F%2Blw7f01f8ur9On%2BroyPqllZfThhMsqBZblWhxFjahFLLWE%2B27HZv3sbsr9H9N63%2FBjW1L9J9PDa%2F6udcx%2FU6Ta7bSH6uxLT7W0Oc0%2Fo6HT6mFl1fzX%2BnV9n1R6v07bbhZv2za4w149K0Vk6enkMeWPu2fzn8xVb%2Fwf0F1GVh4mdSW3MD2vbAfA3AH9xyoYmRZ0o%2FY894%2BztBNGS7QbR%2Ba8n6Oz%2FwH%2FttLyRbyPUcXMqzznY2Nfh9TrbZbkkVyxzQBvzm%2Bm04vr7f0d%2Fo2frX%2BD%2FTV2rc%2BrmH0bqHT8fcW%2Fb2Ned1FrmWsaXOZLfRLH01W%2Bpu9L%2BaXUiCJHBWGegM6d1IdU6WzbJi%2FFbAaWuPvdV%2FV%2FnPTStN6U4%2FWfqPk5jhRj2BorDrMXLOjqnge2m1rNrnV3e1lnpf8b%2FO1Urm%2FqLlZH1a%2BseT03IwLa7s97K8nFrY%2Bx9fp%2Bp6OfjupZ6VvT3%2BrY3I%2F0P6Oyn9F%2BjXrKSCFJJJJKUkkkkp%2F%2F9X1VJJJJSkkkklKQM3Dpzcd2PbuAdBa9hLXscNWWVPb9CxjkdJJTxHVfq4Ol5bc%2Bq55dlvLLq2Dax1lprY7IFbP5i63b77Kf9H%2Bk%2FQrpPq%2FcLMAVlgrupcWXM4duBj9I0y7f%2F1f00vrB0hnVunPo%2BjkMmzFtGjq7QC1tlb9Njvd%2FqxS6dWMj0upH9FfbXsyqwIabGwx30%2Ff%2BifW9n9RHopwvrBh4eF1V%2BXkU%2FqmZQQLSB6deYxwux7HAfpGvs9L%2FB%2F8J6ivWVZ2dj4vV8FgfbkY%2Fo5WO8hosrdr3%2Bi6t7nrefWx8b2h20hzZEwR9Fw%2FlIOLg4%2BI652OCxt7vUfWD7Q4%2FScxv5m%2F89K1IujYj8PpWLjWDa%2BusB7SZIcfc5u6XfnFW31seIe0OEzBE6%2FNSSQUpJJJJSkkkklKSSSSUpJJJJT%2FAP%2FW9VSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2F%2FZ%2F%2B01IlBob3Rvc2hvcCAzLjAAOEJJTQQlAAAAAAAQAAAAAAAAAAAAAAAAAAAAADhCSU0D6gAAAAAYEDw%2FeG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8%2BCjwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgo8cGxpc3QgdmVyc2lvbj0iMS4wIj4KPGRpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNSG9yaXpvbnRhbFJlczwva2V5PgoJPGRpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk%2BCgkJCQk8cmVhbD43MjwvcmVhbD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk%2BCgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk%2BCgkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJPGRpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk%2BCgkJCQk8cmVhbD4xPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk%2BCgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q%2BCgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk%2BCgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5PgoJCQkJPHJlYWw%2BMTwvcmVhbD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuc3ViVGlja2V0LnBhcGVyX2luZm9fdGlja2V0PC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PlBNUFBEUGFwZXJDb2RlTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PlBNUFBEUGFwZXJDb2RlTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc%2BTGV0dGVyPC9zdHJpbmc%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BUE1UaW9nYVBhcGVyTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PlBNVGlvZ2FQYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPm5hLWxldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BMC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw%2BCgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTc2PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk%2BCgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw%2BLTE4PC9yZWFsPgoJCQkJCQk8cmVhbD43NzQ8L3JlYWw%2BCgkJCQkJCTxyZWFsPjU5NDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk%2BCgkJCQkJPHN0cmluZz5uYS1sZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk%2BCgkJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhZ2VSZWN0PC9rZXk%2BCgkJPGRpY3Q%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk%2BCgkJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BMC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw%2BCgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTc2PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BLTE4PC9yZWFsPgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw%2BCgkJCQkJCTxyZWFsPjc3NDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTk0PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLnBwZC5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc%2BVVMgTGV0dGVyPC9zdHJpbmc%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5BUElWZXJzaW9uPC9rZXk%2BCgkJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk%2BCgkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvVGlja2V0PC9zdHJpbmc%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuQVBJVmVyc2lvbjwva2V5PgoJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnR5cGU8L2tleT4KCTxzdHJpbmc%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXRUaWNrZXQ8L3N0cmluZz4KPC9kaWN0Pgo8L3BsaXN0Pgo4QklNA%2BkAAAAAAHgAAwAAAEgASAAAAAAC3gJA%2F%2B7%2F7gMGAlIDZwUoA%2FwAAgAAAEgASAAAAAAC2AIoAAEAAABkAAAAAQADAwMAAAABf%2F8AAQABAAAAAAAAAAAAAAAAaAgAGQGQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4QklNA%2B0AAAAAABAAZAAAAAEAAQBkAAAAAQABOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD%2BAAAA4QklNBA0AAAAAAAQAAAAeOEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgABAAAAAAAAAAE4QklNA%2FUAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA%2FgAAAAAAHAAAP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8D6AAAAAD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FA%2BgAAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwPoAAAAAP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA1UAAAAGAAAAAAAAAAAAAAFFAAABwgAAABAAcwB3AGkAcwBzAF8AYQByAG0AeQBfAGsAbgBpAGYAZQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABwgAAAUUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAUUAAAAAUmdodGxvbmcAAAHCAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAFFAAAAAFJnaHRsb25nAAABwgAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAAAQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hUTUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAAC2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91dHNldGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRzZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAAAAE%2F8AAAAAAAADhCSU0EEQAAAAAAAQEAOEJJTQQUAAAAAAAEAAAAAThCSU0EDAAAAAAWrwAAAAEAAACgAAAAdAAAAeAAANmAAAAWkwAYAAH%2F2P%2FgABBKRklGAAECAABIAEgAAP%2FtAAxBZG9iZV9DTQAC%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgAdACgAwEiAAIRAQMRAf%2FdAAQACv%2FEAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5%2FcRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14%2FNGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x%2F%2FaAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkklKSSSSUs4uDSWiXRoOJKFi3Ovx2Wvbse4e5gMwRo5soypdOyN9mTSRHpWvj4Oc4%2FwDVf9WkpupJJJKUkkkkpSSSSSlJJJJKUkkkkp%2F%2F0PVUklCqxttbbG%2FReA4fApKZpJJJKUo2WNrrdY8w1gLnHyAlVOsWvowXZDZ%2FQOZa8D9xrmm3%2FNr3PUswm%2FpmQGamyl4bHiWuhJTYqsFtTLBw9od94U1Q6FkfaOk4tszuqYfwV9JSll1%2FoOt2sOguDXgeTm7f%2FPmN%2FwCCLUWZ1VhrysbKA%2Bjua7zgtuZ%2F1FqIUXTSQcvKZi47sh7XOY0tBDYJhzms3akfR3blVd13prMtuI%2Bwse%2F6L3Ahm7n0%2FU%2Bi2zafzkFOgq9%2Bdj0ZFOM4k3ZDtrGNEnhzt7v3WbWPU8bJpyavVpduZuc2eNWONb2%2F2XtXOY2VU7rA6hnO9RuJS%2Br1hO1lguGJbuYz2extvv3fzLPU%2FwCESU9QkkkkpSSSSSlJJJJKf%2F%2FR9VWf0iwiu3Ff9LGsewT%2B6D7P%2FAyxy0FmunH6xPDMpgd%2FbZFT%2FwDoOx%2F%2B20Qp0lC02CtxqALwDtB4J8FNJBTVovx%2Bo4jvbLLGlltTuRMssrf%2FANJiz%2BhZDqMO%2FEyCX2dOc6t%2Bkuc1gmt%2B3%2FhaPTeoZ5s6R1IZrBGDlkNvI%2BjXcYYyx%2F7tWV9B%2FwDw%2FwDwlyD1LqWH0jq2N1O55rxOogY1rwC4C9uuP6mzdt9Wl1v6T%2Bb%2FAFdFS%2F1Myq%2F2VThusa%2B2tst2k6sPuY73Brm%2Fo3Vv2fy%2F3F0S4TAzq%2Bm%2FWDquKGnbhWOya62DUUlrcmyulktZ6f2ey19Wz8%2F2Ls2Z%2BFYx1jL6yxgBe%2FcIAI3CXfNIqZX3ursqqrZ6j7TqJgNY2PUsPP0dypfWJ%2Fo9NOT2xrarHTxs3tZkf%2By77VR6v9bejdNsbkb3Zbqm2sfVjgOOhrdZFljqsffXs%2FmvV9V%2F%2BDXHdZ%2BuvU8zA6i%2Bj02Y1zawaZLt2LY21tltb7XOb6j6%2FwDR1V%2FzV36v6rPVYFU%2BiCs5PS7cd43O2WUOB77d1X%2FT27lwvVnNyKK8d15q6hij207o9dg3DHdW9m9zLv8AQ%2F4Wu71K%2FTtr9aqzJ%2BuHV8tmR0zNoyLvsXU8Nr7cdtjmtN1J9K%2B2podsbk1%2Fo%2F8A0YsnG6te%2BnLZbdXXY6pttADNwucwmhv2cWbv0tnr%2FpKnfpKbKf8AtsqD1DvrjnfV70cKlldgzgbqjf7QHB3p2sG0sb6lv0%2FfZ6TEcZg630xz2vezK6jVbfhVtf6biQ%2BxltmNY7a2z9Js3Vu%2FwayvrHh1%2BhhdKv3XubjBhY9wDbHtPpOdXkOH6t1Dd%2FRsl%2F6C%2FwDomV7Fg9Wc%2FF%2Bq3RL6biben5WVjh4lljdxbexltf06La9vvp%2FM%2FwAFZ%2FhEuqn0r6lfXM9WYzpvVoo6wxvcbBcGj9Ltr09LLoj9bxf%2BvU%2Fof5mz9avrJd0%2B2jBwHAZTrcd17iA7bVZa2nY0H%2FCXw9v%2FAAdf%2FWl5zidQZ9ZcY3l3oddwg2z1mHZ6zWfQv3t2%2Bnk0%2FwCn%2FwDRf8xf6Df1DqvXGZ%2Be5tzsi7Gd6lm2kPsqNbqqOG1%2F4Cuxnpt%2FS7%2F9I9ALjR1Gh7f96%2BuJJpA1KZj2WNDmODmnhwMhJaySSSSU%2FwD%2F0vVVn9airFGYSGjEcLXuOkV%2Fzd5J%2FdZU%2FwBX%2Fra0EHM9D7Jf9pE4%2Fpv9YHX2bT6mn9RIKcE9U6lgXnJDv2l0jN%2FS497S39C530sOyxn%2BBc%2F%2Bh5P83%2F2kyfS%2FR5NlPrv16uwczExsPHFozLBRWHz6rriWM9Ouv6Hs9T3vseue6B9buoZF5xBU84BDC%2BtoZYW1PczG%2B02Gxm71Gb2XP2fod7P5mtct167q%2FT87Gdfk%2FbscWHI6V1NrQNGu3O2NZ6fp5FN9dTcrH3epR6f9RKwRYXzhKEuGYo%2FxfSMvM6lZlF%2FVfSobU11Q9MGyqLfa%2BrP9PJsr9Kz09n6bGq%2F7dWN1z9VxC3KfZT0%2B%2BPUyGg5NIaPdU7ezZe7KxPR%2FR5Gyr1sX9Db6%2FwDguZx%2Bv352be4WNwft%2B9tb2n21mza%2F07Xn2%2Fp7qmVep6dbP0vqfolqZD7mY91eDmXh9pBAZDGjT9awvb%2Bkp3W%2Fp2Mdkfpav1b%2BXUb0WulTeP23h5Di3JL3UYWTYzlzbKn1sc5rN7baM3FZ9pw8xrvSvr%2FQf0im6uvH6vY7G6hfS2mx1WFYaq7bnk%2Bo2r0rKPTa7bustxX20%2Bz%2Blf4RW%2FqPXeM403s%2FQ9LpdbQ4v97Wl4DcW1nud6PqfrH2e9nszMavNx%2Fs9%2F2hA6i5r77HZLH24Tn1W4%2BUwj2Pva3Jdj5bfzaHb8n7Fk%2F4P9YxP0tX8wulqaWfb1CzZ6GaM30622WDD%2FSV1mp3sfY6tjWOsY1tf8776a%2FTQ7s27qFNVIrqwAfUsbZRXt9S0N9Ky1tX83%2Bgre%2F1sej%2FAE1lzKltdDtbi9ZJsqqbTaBXdS0TbW68PycUxNj8qrIbR%2FpPU%2FSb6%2FTyv6VWf0qvOrzmsYasnGzHmk7gx1Za6K2XR7sd%2B5v6K79JXi3bPU%2FV8i71RRU5%2FWaLMv6kYj7SGX9L6g%2BqK%2Fosrymeux1cf4B17fYsrpuPmNxftz63Pcwl9DWDQ2sIqZkNJ%2FNZe6luR6f%2FAAX%2FAAS1f2pXX0vq%2BJln7LfkVVta3ZAfl4929myn%2FA76rLq86r%2Bbo%2F4qyhVruoZfSek4ldmM12Pe227D9XQBtvptu3%2B7d6Vr66Xf2PU%2FwiSnsuqnDyLMfFtMZORj%2BrXSPeHFseo2l7g31La%2FV%2Bh%2F2oq%2FwfqfpFznVcd9uDZivaxzDZXa1zztZaXB1LW%2Bv%2Fgb%2FZVXi5tv83%2FRsj9AsLqfXv2j0%2FpXqPFedgNurfa10F3uqsx8lv8Ao3Obvrf%2FAMT6n%2BFQquq59%2FURec1zb7CHXMc8htmw7n47v8BtucPUb6v6P9Ld69iNoS9H6Vk0Zzcpj3tqqeW1AAtuc%2F8Am7Meyhv6WvZ%2FNZX%2FAIEugzuk14eLiN69fbi49u6wgBjyWNb6dP6IOa52V6vt247P0dD%2FAFP0ajjdc6kBeekYQd1DIs2tsZVZbdVXt9tYqsG9%2B3%2FTPZ%2Bl%2FwBCsajpXV%2BtX2Zwo%2Fal7Wuvv9S0Mea2%2FT2%2BvZ7m1e1j6GV76PZ%2FpK0NE7avpH1Z69ndU6Ti4mP6mVZktBdbkP3uqbWTRkjKuYGb9t1e6v2776rP9Iuyw8VuJjtoaS8tkueeXOcdz3%2F2nLyb6vdZv6DjDKwmVt3lzbsZz3VsZcHluTgX499hfRYxuzJwn%2FznsyKrLLv8H2vT%2Fr9hODK%2BsM%2FZuSWkvrtFjC1wLmvr%2FWKqW%2Fm%2BzbZ%2BkRR4vVpKn03q%2FTeq47Mnp%2BQy%2Bt7WvG0%2B4Bw3N9Ss%2FpK%2F%2BuNVxBT%2FAP%2FT9VTOa17SxwDmuBDmnUEHsU6SSnxf6x9CzPqt1ECix7GMeben5Q0caneyylzvouto3MruZ%2Fhav0np%2FpFUryaMjFvrzps6dkPbZmUsHvx7zFber4f7rbLP6Wz%2FAEln%2BivYvY%2Bu9L6f1Xpl2H1GG0OG71SQ01uH0b2Pd9B7P%2FUb%2FwBGvH8vpF3T7%2FQpcH5NIea7az6leXSd2%2BzHjdW70qHbMnE%2FwlSZrE2NuzfjKHMY%2BGfpzR2n%2FL9H95wM%2FByOk5hxsgiyuwb6rm613VH6N1X%2FAKMrW10jqbrmHDyHl8MhjY3G6sHd6PO318dv6eiz07fW9P0v%2BOHiPxc6n9j552Ydh3YmVy7FtP5%2Bvvfiu%2Fw%2F%2FB%2Fpf5zehYv1a6pVk5WLnh%2BJZhML6rmiWvsBY6t1Fn0n1NY77Tvp%2FSf8WnijqNWnOEscjGQ4ZB7Oig0fV7Lf01rr8rqR2tez3XPbBx67XsYzayxjbMl9m38%2F9J%2Bl%2FS%2BpzrvUxMWqvqNVuJksx3402zW5oosbdScig725OHd9qY6v%2Bc2ZOLT6Nn88y3e6X1uyk9NexznYd%2BPdi2Mc1lTxl4ztznWu3bKfWZZXbs9T06f0ypdY6J1Hr%2FVH9Wrtpsx6mMqFDS%2F1WisF30XNa5%2B577bf0eyz%2FRV%2BqnHwW1RotDF6xay49Tviks9OHNBAc9g2sfc1m7Zu2%2FoG%2FQxv3PST9Lw2dTblM%2B1W1sdDixoM2vu3f0936Ot3pOZsurp%2FQ5H%2Bj%2FwaJj4GXf052ZjepRjbmOrywNzNjHulh9Meg5zN%2B1lrn%2F4R9fp%2FpFYxcHD6ey6nItdSGAOtdlFwhlh%2FRuHpN3Ppbv8A5xnqemgFOZ1%2FDyMW77T1DIOQy4vra91bqC00en%2BiYx%2F06Nrqnev%2FAIf%2FAEj1WxaG2sxKOo9Mu6iK32UYeOLHML3vLrNrrmu3%2Blv%2FAPRi1cvpl1PUqW3Nfh5VJ34%2BNmO9XEurHu%2FV7t1jGMsYf0noP9n%2FAANqv9Q6W84w630hn2cuFd1jcYGysjS6qzLxmiu3Fyadv896NX%2Bl%2B2eqhSSBQ1u%2Fwed6z9X%2BrtFJH1dZj1agENsqZuIB9EPsvbkW7Wj6eS%2F6fq%2Bj%2BjWOcbNw8hnqdNxq3tizZYXOa4Ty7fkWbmNd%2FObfof4RdpT1fqHUs1rc%2FLfktyRU2vGa4bSHNePtFL3el6VmLlVejZ7f0m%2F1cj%2BZ%2B0WbvSfqn0%2Fq1eTjdRIdlVspsqcxwBqc8PbfW%2BrX376%2FTtf%2FAKH0bcS6v2WJXqulj4YCXEDZqurxn1dxXdRosuw78hnXcR5dSWu22OrY2bqsdn03ZFTt932Oz2ZWL6lVLPWoXS19Hzup9Pq%2BsfTMYty8kn7ZRXDCy5hdVb1DEre%2F9NU79LvxHbLclj7Kf5rIspXE5mPm9J6q%2FLqa82YrmvfVJHqUsd%2BgyqLatln0a%2F03pP8AWxLmerV%2B5j%2Bz%2FU7qvR%2Bp9Cot6QNlLJbZQ5xdZXb9O1l73S99jnu3%2Bq7%2Be%2FnEmN57qv1X6b9c%2Fq99oxWNx%2BuYxcyx7g9rjc2PXxM5t36x6djmt9H1v02L%2Bi9L%2FCVWcz9VPr51npPWX9H%2Bsxuy8bItFNoyDvtot9tIcN%2F06He316P%2FAEKo%2FwAJ9p9hbXW17ntaA98b3AQXQIbuP5y43%2FGB9Q2dfp%2FaXTWtZ1iloEGGjIY3%2FAPe7%2BayG%2F8AafJ%2F6zb%2Bi%2FSUJT2TK66xtraGAAABoAEAbW8fyVJecfUbqP8AjHPV31dXxMjJ6c%2Fay27LaMd1JaNgsoDxX9o9rf0zaW2%2Br%2FPep%2FpPR0lP%2F9T1VJJJJSDNL%2Fsr9geXGABW1rnakD6F36P%2BsuAwumV%2FWXNrxHvcymqh2S7IqLnRa%2B7Jfj2UPcGtqdvyfVspZ7K%2FQ%2By1%2FoaV6Ffj05FZqvYLKyQS13Eg7m%2F9JKimvHprorEV1NDGDwDRtakkEg2NCNnxDqdGb0Lru3qFDHX41rLTWGxVeyR7626tdVmNa%2F1P3LPWr9i2cmzrpY5tdB6gzpL7Kq7WGXPqqf6D8HIc1gZ9upo%2F7T%2FzmVX%2FADXqr0brOF0%2B4135bWVFgc05kD1WMP06ari17q25P81Z%2B%2FX%2Bi%2BnauTysfqnQeoM6h06l91eW2H4jwf1uhgc70Lq3DdV1XGxm78d7%2FwCfo%2FQXfpK7GIRFX4s2fN7vAeGpRjwk93IyOj5VDnN6U5%2FUMa%2FflYlLGuLm%2BqxnpfadrG1tdk302Ufav%2Bs2en%2FNrQ%2Brd9%2BNlNdfS%2FDuDXMy8e7R1bmjfJ%2FkNhl9Nv59KtOeLbMDO6FktJte%2B%2FCstLh%2Bhcaxm4mY5oc5tLMr08XK3st9H7TRd%2FSqPWW11fA%2Fa%2BOOpdOc6jqeMNllYjcdvudjWt9zfVr3b8d%2F%2Fom%2F1E%2B2F5jpf1u6Dj9RyLKcqu3peaf1rF1aGh%2Bhym0XMr91TfZksr%2Fncb%2FSWY9bFTwftfUOpdQwRZvxsDLOLh2uBexrLH21YzLLAHv9K3ZX%2FwAH%2FOLUw%2BnfU%2F6xVDB6lg4%2FTutEFrLaG%2BgLXD%2FC42zY2x%2F%2Blw7f01f8ur9On%2BroyPqllZfThhMsqBZblWhxFjahFLLWE%2B27HZv3sbsr9H9N63%2FBjW1L9J9PDa%2F6udcx%2FU6Ta7bSH6uxLT7W0Oc0%2Fo6HT6mFl1fzX%2BnV9n1R6v07bbhZv2za4w149K0Vk6enkMeWPu2fzn8xVb%2Fwf0F1GVh4mdSW3MD2vbAfA3AH9xyoYmRZ0o%2FY894%2BztBNGS7QbR%2Ba8n6Oz%2FwH%2FttLyRbyPUcXMqzznY2Nfh9TrbZbkkVyxzQBvzm%2Bm04vr7f0d%2Fo2frX%2BD%2FTV2rc%2BrmH0bqHT8fcW%2Fb2Ned1FrmWsaXOZLfRLH01W%2Bpu9L%2BaXUiCJHBWGegM6d1IdU6WzbJi%2FFbAaWuPvdV%2FV%2FnPTStN6U4%2FWfqPk5jhRj2BorDrMXLOjqnge2m1rNrnV3e1lnpf8b%2FO1Urm%2FqLlZH1a%2BseT03IwLa7s97K8nFrY%2Bx9fp%2Bp6OfjupZ6VvT3%2BrY3I%2F0P6Oyn9F%2BjXrKSCFJJJJKUkkkkp%2F%2F9X1VJJJJSkkkklKQM3Dpzcd2PbuAdBa9hLXscNWWVPb9CxjkdJJTxHVfq4Ol5bc%2Bq55dlvLLq2Dax1lprY7IFbP5i63b77Kf9H%2Bk%2FQrpPq%2FcLMAVlgrupcWXM4duBj9I0y7f%2F1f00vrB0hnVunPo%2BjkMmzFtGjq7QC1tlb9Njvd%2FqxS6dWMj0upH9FfbXsyqwIabGwx30%2Ff%2BifW9n9RHopwvrBh4eF1V%2BXkU%2FqmZQQLSB6deYxwux7HAfpGvs9L%2FB%2F8J6ivWVZ2dj4vV8FgfbkY%2Fo5WO8hosrdr3%2Bi6t7nrefWx8b2h20hzZEwR9Fw%2FlIOLg4%2BI652OCxt7vUfWD7Q4%2FScxv5m%2F89K1IujYj8PpWLjWDa%2BusB7SZIcfc5u6XfnFW31seIe0OEzBE6%2FNSSQUpJJJJSkkkklKSSSSUpJJJJT%2FAP%2FW9VSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2F%2FZADhCSU0EIQAAAAAAVQAAAAEBAAAADwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAAABMAQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAIABDAFMAMgAAAAEAOEJJTQQGAAAAAAAHAAIAAAABAQD%2F4TkjaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSIzLjEuMS0xMTIiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI%2BCiAgICAgICAgIDx4YXBNTTpEb2N1bWVudElEPnV1aWQ6RTcxOTVFNTY1NzMzMTFERDlFNzJGQ0E2QjkwQUZBRjU8L3hhcE1NOkRvY3VtZW50SUQ%2BCiAgICAgICAgIDx4YXBNTTpJbnN0YW5jZUlEPnV1aWQ6RTcxOTVFNTc1NzMzMTFERDlFNzJGQ0E2QjkwQUZBRjU8L3hhcE1NOkluc3RhbmNlSUQ%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU%2BMjAwOC0wNy0xOVQxNDo1Nzo0MS0wNTowMDwveGFwOkNyZWF0ZURhdGU%2BCiAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA4LTA3LTE5VDE0OjU4OjA1LTA1OjAwPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhhcDpNZXRhZGF0YURhdGU%2BMjAwOC0wNy0xOVQxNDo1ODowNS0wNTowMDwveGFwOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhhcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ1MyIE1hY2ludG9zaDwveGFwOkNyZWF0b3JUb29sPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9qcGVnPC9kYzpmb3JtYXQ%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOkhpc3RvcnkvPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj4xMDAwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4xMDAwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8dGlmZjpOYXRpdmVEaWdlc3Q%2BMjU2LDI1NywyNTgsMjU5LDI2MiwyNzQsMjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5LDUyOSw1MzIsMzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7QzA1QTE5MDRGRjAwQUJEQzA1MUJERkFGMDIwNEVBNTE8L3RpZmY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24%2BNDUwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjMyNTwvZXhpZjpQaXhlbFlEaW1lbnNpb24%2BCiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U%2BLTE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6TmF0aXZlRGlnZXN0PjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDtENDYzN0NCOUQ0MUExMEJBN0VGNUVCQ0RCNjMxODMyOTwvZXhpZjpOYXRpdmVEaWdlc3Q%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY%2BCjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8%2B%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQACAYGBgYGCAYGCAwIBwgMDgoICAoOEA0NDg0NEBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEJCAgJCgkLCQkLDgsNCw4RDg4ODhERDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgBRQHCAwEiAAIRAQMRAf%2FdAAQAHf%2FEAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPBUtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4%2FPE1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1%2Bf3OEhYaHiImKi4yNjo%2BCk5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEyobHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp0%2BPzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1%2Bf3OEhYaHiImKi4yNjo%2BDlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq%2Bv%2FaAAwDAQACEQMRAD8A7%2FmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmrlHI2utXn6WltnFESb0RFSp41WjD5q3LCBaslzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Dv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2E2rj0LuzvF7PxftUf8AXPLDnC3XI0ewdpOkTK4P08T%2FAMK2Ec1TLNgaxmE9pFIDy%2BEAn3GxwTgV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV%2F%2F0e%2F5s2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXYUeZpfR0a4kpUAx19h6i74b4X65CbjR76FV5FoJKKe5C1GIVLdDuGhuXs2IKOX4gfsvGdx%2FskKtkiyD6bctHHbXgPImOC4qOpXj6E1ff4Mm4Ndxkpc770BvNmzZFLs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F9Lv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVokKCT0G%2F3ZgaioNQemANZuhaWLyE0LlY1%2BbGn6sWspA8QA%2FZ%2FUcVRWbNmxV2bNmxV2bNmxV2NZQwKnodj9OOzYqwDT4iiPZsa%2FVLm5sj7I%2F76L%2BOTXTpjPZQSt9pkAb5r8JyKXqfUvMOpIQOFxFDfoP8qFvTl%2F4Q5INDkrFPAf8AdUhI%2FwBV%2FiH8cnLeAPcxHMprmzZsgydmzZsVdmzZsVdmzZsVdmzYyWRIo2kkYKiirMdgAMVX5sjTeaGl1CzsbSAOLuX0w7k14KCzyAD%2BUZJBirebNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV%2F9Pv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVo4CXUFa9e0CbJRWkr%2B0RWlMHZEJ5WtPMtzE5%2BGYJKnyK0%2F4kuEC1ZeM2IW0okjFT8S7H%2BuL4FYz52mMWn2tDTlcpX6FbDHR5ecCH%2BZevywl%2FMM8dJtn7LdJ%2BKvgry9ccrOJ69KVw9E9GS5s2bAh2bNmxV2bNmxV2bNmxVi3miFU1LSbxvsStJYzH%2FJnSi%2F8ADYpoEzLcxq1T68FGr%2FvyE8GrgjzdC0mhXEsY%2Fe2pS5i%2F1omDf8RwttJRHdrcDaNbhZVI6endIG%2F4mcnHeJCDzDL82bNkEuzZs2KuzZs2KuzZs2KurkZ843Zhs4bVTQzvVqfyrvg3zHNPb2UMsLtGBPGJSpIqjEqRUb9ch%2BvSSvp0JlcvJCLyMuxJb4JNvi%2F1SuEBVvkaX9L%2BZbm8Sv1fTbf0Y6%2F78lPxH%2FgFzpeRvyPbWcXlyyubWBIXuoxJOUG7uKjk5%2FaOSSoxPNXZs2bArs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F%2FU7%2FmzZsVQ2osyWM7o3FlQkMOxGPtZhPBHKCDyUE08e%2BM1Bedjcr4xPT%2FgThV5cvBJbpGergEfMDcYa2PkqfZs2bArs2bNirs2bNirs2bNirshfnRGtb7T9TX7LcoJD2qDzSv3vk0wl81WDajodzDGKzRj1oR35R%2FFT6RthHNXaVcrKsUtftDi304dZz7yrqPrQCIncdMnsEnqRK%2Fcjf54yVjP5gwtJ5ckcD%2B5mik%2BivH%2FAI3wD5RnEtpwrWgw983RGby1qiqKlYGkA%2F4x%2FvP%2BNchnke5BIUGoPQ%2FPEJHJ6XG3JFbxAOPxOA1iX7sUwIdmzZsVdmzZsVdmzZsVUbqBbq2mtm%2BzMjRn5MKZDLP4rC2UVq9qYj7SWshWn%2BtxOTnIVG4ttWvdNaiiK7FxGDtWG6Ti%2FwDwMuShzRLky%2B1lE9vFMP8AdiK33gYscKtBmDWhtq%2FHbOyMp68SeSH5UOGpyJ5pYde3moWPmW5KzH0pIo2WNt0A3Wv0ts2D73zJ6FgzxqqXpKpHG9eDMx7EYXed45VeC4gPCdYyqua0I5q5VgOv2cAW8sWo2QMqhwwoyHcVyQFhVOLzvrNrdf6fFHLFX4kVeBH%2Br1%2F4bJlp%2Bt2GqWrXFnICyKWeJtnUgV3XOP67qFjaFLHUrprecy%2BlZajxPDmN1jn8Dv8Aa%2By%2BIaXrclrdtZ34NrfR1USofgeo2K06c%2F8AgcBCXr%2FlvXRrdnzk4rcoSJFXYfMbnDzOV%2BTr82eqAOQIpaBq7AV2r%2BOdTriRSEp8z8RoN9I5AWJPV5HYD0yHr%2BGQg3Ntq1lcLazx3CiZviiYOKzQo9Kjb7YzoWqRevpt5AOskEij5lCOmc60%2BWCK0j9ONYo5IYp%2BEahQWBeNjRafEcMVTvTb%2B80fyHZ3FugE9vSORJBUqPVZW%2BEHw3yVaXeC%2FsobulGkX41HQMNmH%2FBZzC%2B1iTTbadZUkjtJjzkQqSKqNm5fsdMPfyr1%2FRdT8vra2E5N5C8kl3bSMTKpkctz%2BL7SP9peOA7fFkIkgkCwOfkz7NlA1y8DF2bNmxV2bEJLy1injtpJVWeavpREjk3Hc8V64virs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F9Xv%2BbNmxVplDqUbcMKH5HIPokjWsstqx%2BK2lZPf4Wpk5yF6nF9R8xswHGO8QSj%2FAFh8D%2Fqrkoc6VmSMHUOOjAEfTjsAaZMXhMRPxRnYf5J6YPyJV2bNmxV2bNmxVQuzOtu729PVUclBFa07U98DafqsF6i9EkI6ePywwyF6vG2i6oJRUWl6xZCP2JOrr%2FsvtLhG6s0yiK4X6Zfi4QI7Vb9lv5h%2FXDHrgV5c8B0LzLc2Q%2BGF29WDw4SfF%2Fwp%2BHOg6ZMHi4j2YfTkZ%2FMGwpFaazGDytm9GYj%2FAH25%2BEn%2FAFX%2FAOJ4N8uXwliicnps305LmFZDewrc2dxbt0lieNvkylc45%2BX10UCQzHjLATE4P%2BQeNc6L55e5i0J57WVonikRmZDSq7jf2yB2Op%2FVYor2%2FwBNjktpAGjv7ZvU%2BInoy8Vao%2Fa44xCQ9as25RVBqKnfBGRby9rBEsljcIY0aQ%2Bg5FCCQD6bj9lslGAikN5s2bArs2bGyOI0aRuiAsfoFcVS%2B%2F1q2sJltyrSytuyp%2ByDsC3zwxBqAfHfI%2Fodmt2z6pcjnJK5dAexPT%2FgRkhxV2c782mSy82WUgNIdUhNs4PTmlXQ%2FwDBDOiZAvzLb6nHpOrlFkjs7lWdG9yvxVG%2FwiuGJ3Up3YTJFr7op%2BC8t1ljHjxodv8AYtkiyHbxx6XfKx%2FcXBilJ3%2BAsVUV8FRlyYA4Z80DkkPmq3EtlHJSpR%2BJPgHBH66ZBtIufqt9Np8pALHnEpO5p1oM6Xq0P1jTriPoePIfNdxnLtZtrGZluBcG3vF%2BFJYuJfx40IIxHJKzzb5et9ZtZYp1LwygcgPtKy%2FZkT%2FKWuRKKCOC6tNH1CblcWiILDUWHH6wg6wyDejx9Fw4sfOMjEBY5biH1HgLy8VYulOfJV%2By38q4ndH9LlL219K4iilHrWzLxlhI6SgE1%2F2SnFKo0Czxy28zMqcSzspIYBPj2I%2F1cd%2FytnVZdNQ2D1I%2BESMoPw%2FzMftdMG20TSQyyblmjenzoc4TY6ld6ddyKwMUsbFZoHqNwd1KnGXRXs9n5%2Fv7lg98GlWhMjwk1A%2Fm4k%2FF7jDSwSPULTTJI3PGBphGNwG4OHVW%2BgnONX%2BsWFpDFPaSSJcTESG3TcRlf2uRK%2Fazq%2BkR3aeT7e%2BjnX6yoW8ibht%2B9i9Tg%2B%2FQ98QVZHqstutowuSPSdSpV91IPVWzif1i98t%2BZ7m40FjbSWUrNCqEmkex4EH7acT9lv2c6lonmbTvMUTWdwgiumWktrLQhge6H9of6uRLzd5ZurDVP8Q2KetYFUW7jXeSKi%2Bm0hH7UZH7X7OCY4g2YM0sMrjvexB5SHcXsnkPz3Y%2BcdPqKQ6lAB9bta%2F8lI69Y2%2F4XJeDXPJlvPe6JqMeq6NMYLuE842To6ntToyuv2k%2Faz0J5E8%2B2HnGyI2t9VgA%2Bt2ZP0epH%2FNEf%2BEyESeUuff3tmbFAx8bB9H8Uf4sZ8%2F6P82TMMLNb1iDRrQ3EpBkkPC3j7s5%2FwCNV%2B0%2BGVc4n5m8yfpnzJcsr%2F6HYsLe232PBv3j0%2Fy3%2BH%2FY5JxkLourX175%2Ftb28maSZrloqsdlQ1Tgo%2FZUDO755%2B8uxlvPcMI6i6LAe2zZ6BwlS7NmzYFdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVf%2FW7%2FmzZsVdkb83W5%2BrW1%2Bg%2BK1kAc%2F5D%2FCf%2BG45JMC6jare2FxaEf3qMo%2BdPh%2F4bCNiqV6VOOcTV%2BGReB37%2FaX9WHoyFaJMz23BqiWE7juCh%2FsyaRsHRXHRgCPpwy52gLs2bNkUuzZs2Kuwu1rS49W06Wzb4XI5Qv8Ayuu6nDHMemKvONE1KWGVrG7rHPCxRgeqsppk7sb0XC8W2lUbjxHiMhnnnTHtLmPXrZfgakd1TsR9iQ%2FP7LYtomq%2FWI0Iakybof4H55LmFZdqNlFqNjcWMwqk6FD8z9k%2FQc515XuZbW4l0%2B5%2BGWFzE6n%2BZTTOlW063EQkXY9GXwPhnO%2FNsS6T5qtbofBHqaniexmi%2B2v%2BsU4v%2FlfFgHcrPTFbanZNb3caywyApLE3Qj3zjutwW%2FljzBc6Pp6fV9JHpsLNSSgR1HIorV3Vvizq2jXQk%2BAndlBA9xnNvzRiWPzJBJWnr2gJP%2FGNyv8AHAdikJ3YGf0o5pZDIboSD1GJJ9aAgh6%2F5aUzoFnN9YtYZ6gmRFY06VI3zlXk%2FVI5bi2hnlBgdBuxFFahhfr0rSNsnHlXU4JI5NJaSt1avIQm%2B8RaquD0I%2BLjkpbgIZJmzZsirsDagC1jcqvUxOB%2FwJwTjXUMrK32WBB%2BWKpfofE6Xb8f5d%2FnhjkMPmvR%2FKlrJBqkxBSVkjC0PIDpTfI15s%2FMNbu3jbR5plsZVp69swRi9N0eSjMnH%2BRcVpm669cWWtXGnatwjgKma2uPsj0x%2FNXw%2FayOfmLr%2BhX3l%2BPTYrkXM%2BpGtm1uPUUceX7yRx8KLtx%2F1s5xoN%2FefpVr6C8muVVfUuLO8kMrEIeTem7faRk5Iy5FdTuZ9B169trGZvqkc5eFD8SmJzzUcTtsrceWHzTT3fRJv0p5UZvtOYYrgCu%2FJV4P%2FwANHnPrj83vM2lX9zpWoBJYInaJ540pOi1%2BGRQDxf4cln5Z3qT2stjWrK0iexEgE60%2F2XLOUfmHYNZeZbhWP94Ayn%2FV%2BD%2FjVclLlbEdQn955q1wTiU3huLadeQCsfSljO9VNev%2FAA0bYHub1Z7V5yWkhHxpcVHJNwGiuP8AKStVk%2FbyGafqLQxyafO5S2lPJWUAmGQ%2F7uiB8f8Ad0X%2B7F%2Fy8Ctd6jpl3Lb3v%2BkQTpxniqTDcQn7LoR%2FwUb%2FALDZCyyekWl9ZyaFLPelZGN2tqDEtZJHenEs67ckpVXwq1bU7G1iKWvqtcCR4bkkhFYx%2FCHXhvvX48C%2BU7H1SbK3k9Wya5hv4HchSBF8FxBL2WeOJ1k%2F4s9P4cu%2F0j%2Fc1FphmFxPLeOhZBxAiL8jt40%2Fa5YegV6PprvLpcE8sfpTNbh3QVoGK12zluoQ2PnZih42fmWIVt5z8Md4q9I5P5J17Z2A8YrWVl%2BERoaDwoNvupnLtb02LzREdR0hBba7bVe4tEPFZwpr6sH%2FABb%2FAJOSkgPNLqGaG7e3v42iuoTwlicUIK9iM755KnGoeT7ZX6m1CH%2FYSNCf%2BFOctnuIfNkSWeqEWuu249OC8ccfW47elcd%2Bf%2BVnQ%2FyyS5t9Dk067jMVzaSXMLK3hRJlp4r9rjkQl5PbalcaRd%2BlI7PbwysI5lNJIirU%2BH%2FmnOueV%2FOUeo%2BnY6hIpuWX9xPtwnU%2Fhz%2FnTOPeY4zY%2BYNTgpVBcSVQ9CrHkP14Gsb9rFgRWSzY1K1%2BKNh%2B0p%2FZcY2Qdlev%2BZ%2FLKxK19pcdYBUzWqdYx1Lwj%2BT%2BaP8AZ%2FZyHW9xe6ZfQ6ppk7QXsBDRTIevsR%2B0p%2FlyY%2BUPNR1KJLK5lD3KrW3m6esg67f79T9pMD%2BZtCjTnqVilIW%2BKeFRshPWVAP2P9%2BJ%2BzkZRB3DPFlljlxRPz5Edx8mcw%2Fm3aXvkzULyUC3122jET2oNA8kh9NZYT%2FJvzb%2BTOZabIhnWkgaOQcwxO577%2F5fjhKIYndoZvgaUD05v5SN1J%2FyG6YI0RZ4tS%2BoyKQS1HTwYHsffALrdOQwM%2BLGOEHfhu6PWvJ6f5FsfrXnqW8K%2FDBEZD4cmAVf1Z2fOSeSLmfT9RrHEWlvDSZaVagNR0%2BztnW8mWsuzZs2BDs2bNirs2bNirs2bNirs2bNirs2bNir%2F9fv%2BbNmxV2Y5so4qw6WL9HeYLiLpFcUnjHQfH9r%2FhuWSbTnBgMXeJiv0H4l%2FA4T%2Ba4fTW01FRvDJ6chA%2FYfpX5MMGaXcBmHxbSrsCdi6%2F2f8RyZ3j7kdU4zZzrTfO2qQa3eaHrkax6haux%2Br9FkgJ%2FdT2790ZP%2BGydWWoWt%2BnK3erAfHGdmX5rkSEovNm2yiQASTQDqcCt5sL5dZ06Ko9YSMNqRAv8Aiu2Iv5i0qJecsrKo%2FwAkk%2FctTho9yo69htbi2e2vApgmHB1cgA1%2BffOYX%2BnXflXUghJezkNbabxH8jH%2BdcPPN82l65b2j213DN9WdmmtefCRkdeJaNSVb1I%2FtYXWM8cVk2javM95pUv9zcPvLB%2FI3LvwwhIT2x12KCBrxjyjRS06jrxG5YD%2BZcrzzpkXmjyhLPpzCSaFVv8ATZozuXjHP4GH%2B%2FE5JkUmju9BujaTsJYHHKC4G6Sxn9r%2FAJqwJH5g1fyjDaw2KrcaE0zSNE27RiQmtuXPSJ6%2FuW%2FYkxI6hUg8ia9qulatHe3s0k8DgxGKZywBk%2By3%2BTkn%2FN63a8ttG1a3rHL%2B9hIB%2BIdGK%2F8ABA5DNbS0tL%2B4ksJOenzETWrjYiOT4gjD9l4WqjL%2FAJOTTU9XtNc8r6dDP8E8rc4iSP71RwkTfcP%2FALsX%2Bflgq09zFvKeoTMwV2NeCsB0BaNqf8a5N9Zu59K83W2pWb%2Bn9cjBo24ZXUNxI%2F1lyCWsL6fNb3LLxid24tSgINA9Puyb67pd%2Fr2kaPc6bxN5b8owWYKAYW%2BGpP8Ak4RyQU8ufOF7JLD9XRLaAj96ZPiYv4A9An%2FDYOfz9oEbtA0kjXSqG%2Brqh5NtU%2BkW4iQL%2Fk5yK%2FiuNagjEcpTU7Rj6YqaSAbtG3%2FFin4om%2Fa%2BxhXcGeWxlDgpPbfvUFaPDKpFXiI%2FYk%2Fk%2FmwFXr0n5hfXBJFpVtxmC84jOa81%2FaKqv7Sfy5GL7zJq2rwXFhqF40AlWiSQfAEPVW%2BH7Sfz%2FwCRkTl1dLW3t7xi8108C3g9EBArCnI8jtVvtNRcR1zzTdJcQvYwRW7y28dwzFfUblIvI05fAo%2F2OGxSt3zSW9LPXITMlCjiuzofsyRt2YfsPkd0iabTtQksp1Zra4U84X6SJ%2Bw4%2FwAoD7Ei5dzqV7LFCt7KZnVAY%2BRqyg9aj%2BX%2BTJdouuaHrltb2PmCNfrkKmO2vKcT%2FkgsP2v5cjtapfo0Jt%2FMllFGHltZvVeK4ptwWNi6yU%2BzIvRlwm1mUarpNtJHEWutOkuIbh0FSbfkGiZ2%2Fb4MxH%2Bpk6uZNM8saddywStNK605tsKnYcF%2FmbOZy3s2nWaLE%2FG4e4%2BsK43HELxowOzK%2FL4lx5fFWb%2FlprP1TWLQMaLMFRh%2FlRtxr%2FwLYn%2BfNjLp%2Bp2WpwghWLxuf2SGoRX%2FAIDI9peo2kMtjfWQMUi3JM9u24j5rT4D%2B1G5qyfyfYzp%2FwCcdimr%2BUra%2FG%2FwpISOoIpXJDcIPN4HDcR3Scl2I6qeoOGNvcQyw%2Fo%2B%2FJWGpNvP1aBz%2B0PGFv8Adkf%2BzXIxSaym2NCOh7MMNYLhLlOS7H9pfA5FU30vUNQ8uaqjIqsaqHiO8UsZ6EeKsrfA%2BS3yUr6p5iudTl2S1RvRTchTKeCgV%2FlTlkOsvUveOn8VkdatauxoyN%2FID%2B0r%2FwAmTfyYHsrnTdPasc1%2FNczXMZArwhT04g3%2FAD05Yjml6Fditlcmu%2FpvX%2FgTnK5bS4sp1mDtFID6kLioPXZgc61NGTBNH4o1PpUjIpNbyX0Ulvcw%2FV9Tst7i2IqHWn99EP2kZf7xF%2F18nMX1pANMR1TTYfMkRuYYlt%2FMEY5EfYW7UftL%2FwAXjDf8u%2FMFzM8mnX6MJLWRFkMh4yiqtGUYU%2FZP82IzW%2FH4DVQG%2FduPtRP1FG%2Flb9lsG6ZJDJfPcvGI9WCoJZwPhmRGHF2X%2Ffi4AP2peafmBE8Hmq8LgATCOVaeBUL%2BtcjauUPip6qe%2BdJ82x293Pb2GtyL9ZmWRoL5QAUZZGQK47p9nOd39hdaZctaXScXXdSN1YHoynupwFCL0zUX0y4SVGf6uWDqybPG46On%2BWv%2FAA652nRtY%2FTdqJbfjLdqnK4gjpSVen1iBf5G%2FwB3Rf7qfOCxycaqwqjfaH8ck%2Fk%2B61K11AC1kZYIT6gmB%2Bxy2oP%2BMi%2FC6f7LEGlZCbBr%2B%2Bu%2FqqpBCjP6cbtxHwn4ljrX%2FgckOj2EMcC6lK6yTRKYmkIoYl6gE9xT7L5HhcTJqM1jJCEjjQSQsK7qT3rgi%2FuJ7PTDKQ31S5f03ZPi3SrfGP5RiKG6bej%2BQPzB0CG%2BuNHvB9VeZx9WvZKBX7cCf2P8jOvghgGU1B3BHfPHaQrfuEt3DHkAJakKhP8AO37A%2BedX8i%2BYPOen6dNp2qK5t4JFjs5HClyoNJfTdieUaL8S%2FwDCZEcRNEc%2BrfOOKWMTgeGUaEoHfi%2FpRP8Aunt2Ab3UorWqAc5QK8egHzOPhuoTYrdesJYgnJptgDTqdu%2FtkT1C9XnLPIwofjLduJ6fhkgLcYsi0vVRfSSRSUWRd1UeGGgyN%2BVrCSkmrXKlXnHC3RtuMXXlT%2BaTJKMTV7JdmzZsCuzZs2KuzZs2KuzZs2Kv%2F9Dv%2BbNmxV2bNmxVB6rafXtOuLXvIh4HwYbr%2BORbRL%2BsMTMaSQsOSnrseLZNDnIdfXXtP8zXtnZGC2tJWEsUz8pH4yAE8Y14rs3JfibJRPMKyf8AMXye3mKyh1LTH%2Bra1px9S0ulFSV6mNwPtRnIb5e8wXlw%2FwCj9VR9N1u12PGoD9vUgfpJG%2F7UedN8uapcXsH1e7C%2BrAi%2FvV6OPs1K%2FsttgLzP5Ysr%2B3NzHFxmjPMlNj%2FrLTdWHtiNtlU9I82sxa11lAssf2bmMfA9PFf2G%2F4XIt501y81SykEEjRQRMGEaMV5L0%2BKn2sq4ke3j9O4asuyLNSnMduX%2BV%2FxLCfVZ%2FS0u8cDkVhYhfGgxodGQDDZPMculusTzpwryMT7mneh%2B0uTVNL1e%2Bsob1tLmmtJlEkbFW5FGFR8NfUzi2iQ%2FXNXtLjUAXWe6hE3L%2BQyKHG%2FbjnqzzP5ok0H0baxgWVyodi5IRU6KBx74ASrzOzsfL1tcH69ppMtdxM0h4%2F883OS2GLS7239K1pGpGwj%2BEr%2FALHphVcecBcyrc6vBFdabL%2B7lV0UPbt12KDnx%2FlYYGvrWKwP1nTp3kirsT0BpWgcdf8AZDJg%2FFjSanSb8xC2ursXtpG5kt7dkVRGaU4g%2FETy%2FwBbIzc60xSeylsgphDJeafNtIY%2BnqREfCygYcWPmV14x3qkqQDzAo4X%2BYr%2B0ME6h%2BidZZImjM90FLQzQj40BFNn2%2B1X7DYkd2yi%2BrHNIh8uXbLp7yLJdToZbZJDX1EU0NOXxCeL9tf%2BJ4PhbTLya58sXqqt3EoKlV9MSoRUMn8ssf7XH%2FXyD%2BcfKFzoWnRatFqUUU%2BnSGSGAsBcFXZaFeHJVZDu2HOn3See9Kt1%2BsCx8x2y%2BpaXabB2TxH8pP21%2FZwAnu3VQuV1CC2iW9cx%2FwCkS28kMtA5dKLHL1%2B00TJyZPhk%2B1nS%2FKN59Z0GSNno6yI6e1V4v%2Fwy5z9pv8YWj6Hrcf6P836EWmiiHSfiv2ox%2B2kwH7P2ftLk28uxrbeXYLhYXV7gMzxkE0IqPiqNq%2Fy4gb%2BSk7PNdX1m%2BHmqaytJ%2FTtTdx%2FBGoSu6swZqcj8YbCnRmM97drKxKXcslu7tXb1%2BSBq%2FwCSzZK9c06xuNUutStkBls5IFkAIAMoHqUUfzNRkbCPW5Xs70rZcVtL0%2BtCoAFVc1oK%2FwArni2RIShdD0rU9Z0g2UNW1DR5JLG%2BirRlQuXhmp1ZP72M%2FwCph75g0K2sra21G8ch5baGJUpt6yARuvL6OWEQk1eJrq9s55YLxBzuGhJEjr3LKvxSqv7WISanq2oQRXGryvd2MtVhuSQ8aNQch8OyNjsqElhK1hbcr%2Fcv3K%2FyV%2FycRSQBmUiifsfQM6FpfljSbrR0mCy3EjDlDIzN9sGnphU%2FZ%2FlbIrqnl%2F6jM3Cb1VRqOoU8078XoOHPISIiQCd5ckgE3tyS4StK6xSy%2FDJ%2B7HqseO%2FYVw0W2thatp10he2b7YH21cfZljP86f8AD%2FYxO4tbO4so4I7ZUvG5Lpl3PssprUws392JD%2Fut%2FwCbAOh6sLuU6VqYMF4hKRu2x5DrFID0YY7rsh4tMn06%2FkspjzjniaS1nQfDIE%2BJWXwdafEv7Od0ugnmL8tmYipWEOB1oGWp%2FwCH5Zy4hoT9WuU5BTzj7FHp%2FeIe3%2BX%2FADrnR%2FysvRfaHeaJIwZ4RJGo8QDzQ%2F8AAy5OPVBfPNxbpMpifYqaBu4IwFYWlx9fEIJU7lmH7S%2F83ZJ9e0x7K9unRg8azMkoHWJySVR%2F9YH4W%2Bzj%2FKtvFdaxBDLQKzAVO243G%2F8ArYPJUXb2NvDZtdyWxe3B4meCQ%2BtG37Jkjb9lafaXHRXl9q2r6etnWJ7Yxx28h%2B1UNyMjt%2FlH4myX6lp1poPm57CIFLG8jikCsKisqqXWncc2%2BzhLZW0Om35hCuLiCeSgIHFY67KT9rl4YaV63IwMVSakg1pt27eGRuzvrTWILdYbnlcIWXSdQc8W5pXlp91%2FLIP91M%2F94mG9tcfW3AQ14xgsPH4c4Zp%2Btz6HqN2rJ61nNIy3loTTkA54yIf91zR%2FailyRNUinpV0iXqyyxw%2BjdW5Md%2FaN1iPdqf74f8A5Jtka1ZZ4LWYxsySKpaCRT8QI%2BIxkj2Hw5KLe6%2FTsUF%2Fp1wsmrRRk2l0QAL6Fft290g%2Fu7uP7Lo395hFquqaL9XZmmWCRwySWTgs8MgG6Oo%2FY5fZbAUhC%2BZ9JsfMl1SKYW%2BqyQRT2DMf3UvJeTwt4M5%2BJchKyrOr6D5gQwTQEpFK%2FwDeQv8Ayn%2BZDk%2B1Gyj1ew0SaC4gS5ntmCtX0ELQtQAM%2FEcv5Fwv1bQxr%2Bnhr4oms2ymP6xuCStSIbof6v8AdzYOaGAQ%2BXdTm1NdLjj5SN8QkG6FOvqBu%2BTjTrS2sbZLCMcVUmkpFGLn7Rf%2FAFv%2BFxTTme102DTuILIwZpKksW%2BzxWtW41%2FZyU2XlW41HhcahytOQJZVHKaXw%2Fd%2F7rY%2FzviAqQ21ldXtytrDG0k524qKmnj8sO736roNmNIltfVv7hFeaMnkUqTwpxNA2S2MaT5etS9w6WdtEvx1b42A7Symh%2F2C5zTzb%2BZun3swOjacGVKwrqMgoajeiJSr%2FOTDVdVZPYa3pOj%2BW7u31uKKzuZGP1dePP1Iz1UovxtJ%2FlYU%2Fl%2F5hOtyS%2BWrlis1Gm0pyfiR4%2Fi9Kv7SumcrvNYnu5DcXH7yToamrfSf6YL8ratLZ%2BZtJvoT6bwXMbEjuCwVh8uJauPFuFe%2Bx%2BYJ4NMawQiOFzyZOlDX4h%2FwQyQeVtAn1BY9R1QN9WU1toG%2Fa3qGYeGE3lnRLPVfM19LdAyWkTtcW8a7xOGaq1kGz7k%2FAM6moAACigA2AxJ7lojn72wANgKAbDLzZsirs2bNirs2bNirs2bNirs2bNir%2F9Hv%2BbNmxV2bNmxV2Qzz3p3P6rqKbFKwyt%2Fkn4lJPseWTPOVfnX5gmstNtdBtnMbajykuXHX0YyPh%2F2b%2FwDEcbrfm24MRzZI447GR59w6pMfNyWl7EdD1KM3Cp6dwoKldj%2B1zHE%2FRko0rz1rUtz9SvLe2lm2Hp8jC7BhWqV5xvUb%2FDnn01jPEin8pHgckemXmsTaHcxANw05o57O7IIKxliJYll%2FaRT%2B84%2FsNkIZhIkSjRDl6zs%2FwIjJCXFHkb5gp3%2Ba2r%2BbdPuEvYLVbLRpiFL27c2EvWkj0%2Fd8v2VpkGsfN2p3Kra3V2XicgEsQeQJ3qSNs7d%2BkdO1rSbKw1LhN%2BlbRXVJKFZyq8ZV3%2F3YGHLOEecvKFx5TvTLDym0idv3EvdG%2FwB9yf5a%2Fst%2B3lpHUOvsua4iNwbWCruHK%2FB0qN9j0zoy%2BarW48r2Oq3l1Le2sSizuGkqk6zgUVXMda8F%2FwCDTOO2M01rIs0XCRQ4kHqCqGnZl74NgkTlMqSOIZpPVNrXjGG8Qvfj2wXzSyqz1eO%2FtNSjQM8sVubhFbbkIpPiI%2BUR5Yca3q17IdPmtZ2js7yztriONNhyAKSciPtMJUfIZaXDWL%2Bra0jcq0ZYAV4yAq6mv8ynJf5Yex1PRjpUsfO%2F0pnuLJWNPUgkNZ4l%2Fm9Nh6vH%2BVpMRa2uvBcXej2Gp2rSC5tJJbOZkqW4v%2B%2FgY%2Bx%2FeJhtBB5sOi313boLa9ihMlo3EB5ClGkULy%2B16XJk4rhlZarBFAbZljtrS5Tg%2FoIF4fyOT1JjbC1L%2BbSbowyMwu4WrzJryX9h1PQpxw%2FFWFXNut9PB6srS6frlqI4JZHJ%2Br30bCsbOf5phx3%2FAN1T%2FwCRgPQbtreVrEFrW8gfnDU0dJUPF09unHD%2FAFeygjjvbi2haTQbpxcXlpHvLp9x9n6xClfjtjXi1P2P3b%2FGseE99ol9qtyjIKamYlktb6Mn0L5QKJ8Zp6d3x%2BH4vt8OD%2FvciTXPZaZ%2Bkdp5%2Bgt19Yad5p0%2Fe0vU2Y8T0NPiaM%2FtJ%2FuvOj6lcGysFaRlYxJWUjfkUXk3z5MM5p%2BV2l3U2pPdalFHK1sOLyqQxSZaFOdDWOT7W%2F7eTTzK8UdlcxREhXBTf%2BdzWg%2B7JxNji70HnTz%2B51GXyrrFxaapD69nfcRqSftqxHL1oj%2FOjPjtQ0GNYCfrCXWi3QMtlelhyjkYbFfdvsyx4M87Wy6zqemTq4X9KwQnmegkK%2Bmf%2BSi5G9M1PVfLUt3od3CJIGDEQS7iKUD4Zov8%2FjyErqrruPNkK58%2FJN7Sx0%2B0sDe3k0k9xA6JBJACGqwPHiKp8S8fts2F0mrDS3nubPThH6ZLa5YcQsnBvs3kSsCnJeXJuK%2FB%2FwAYmwQ%2FrXdjEsQRizhvjKCrUp8If4uW%2FwCyuK3Fs893p1nezfVdeDCOxmHFi8ZH%2B89wSeBjP2YuX%2BVFiYggA70Pmt9QzfyjdxXeiPeaY3rNYt9ZjdKUkgP2gyj7L8ftL%2FPgTz2tuLdJIT6cN1JFcxzJ2U7Sb%2Fs%2Fa5BsKfLEMvlPXby2sJI40uF%2F0izVuUcb05n0z3gkTlw%2F3237vHeddXN5pEMdnbmOys4BFcy0qDcF6GJa%2FwDFacmyX8Pu2R1QOi6Yupabd2F78dj6xjLVFUlpySaHwkUf7F0%2BDIrrvl6dr42N0eOtRIHs7ldkv4B9ijf8tKgfB%2FP%2FAHX28mPluyb0Vs7OdTL6SSReoK8%2FTZqN%2FrqOPL%2FJwTqdhFr9m1lqUhjnhcm2uv8AdltN%2FMKf7pb9tP8AZrjVhWHaHrEWqxjTb9gt9GKQytsXptxNf2sl35d3J0jznJbCojuQlR26cT%2Btc55qthdyXcyyJ9X8wWfx3ESbC6UbrcwfzS8fjfj%2FAHyfvPt88N%2FKuq3F3q1hqBIEyc4pWZuCkoAwck9MA50VPJV%2FMq2k0TznfCJQUmPJom%2BzJG%2FxcW9t%2FwDY4Q6cILa6ZY2eKRwslv6goaDfjy%2FaK4f%2FAJleadM80a8t1pcZ9GCJYmuG2MrD7TAfsqv2V%2Fmwr0WyuNXUw%2FVxci1%2BKLt%2Fw23wrg6qGVanr1vrK2t3csIry1aESBjxJEYYOQff4cjvm3zLbpZXLWTGC5vr%2FwCswRjfjBGoC8yfi%2BIjCPX2vNMu%2FqZDRNGKSAgUqxqgqKruF%2BH4sjsyPPIZZSXJ7knfG1e9%2Flxrdt5ksbqdSFu7eMLcW5O4%2BE0cV6xvnF75uVzcb14yyBW7%2FaO2KeS9RutC8yWd7DMYLfn6d3L%2Bx6D7SLJ7YhdkNd3UkRDRSXErxMDUFGclT9IwndCtpWrz6ZN8MskcDsGdojxkjcfZmip%2B2v8AL%2B3iWoySfXbiHUmFy14frKXqH4nL14zK%2FVuX7cbYEeJWDPQVpU0Pj0x6yqLL0pJUW4tXE1o5O9SaSRbeP28Cob1Z1T6vPKzxjeNSSQK9aV%2BznXLfUrdtDt9T1U%2BjeRxpa3iMvF5V41jcg%2Ftrx%2BLOd6VbaTqJlS7lMl5Iri3hHwRiQj920snhzODppWsii6zcGeSZg3po3NSy%2FD%2Fen4K9V542r0LyheaXcm5uaCCWNhxkl%2FvClOqcvs4rrn5g2enI9tpKi4uqlWck0rSvxP8Atf7HITazpccriNaLGD%2FozGnBVIJkZP261%2BFuWE4juLqSZo2pbJMjyitAQeVPwrjxbUE01reuXGvCKPUZJ2Cs0iqgUgFtunw%2FCKfDhWLXSzayW73jxuGElWgJUbUoSDhkLcXEjJDSJqkoSd%2BH7OGlh5a1HzDONIit%2FWvZEMkJRlQtGlKsCxVX4%2Fy%2FawWtILTLTTmeMmbTrm1jXe0nmMLOwH2nZlrWv%2BVhlBb6Lql09zpemrbx2cJe5WNqiRi3EKrfyj%2BZR8WJ6x%2BVPnXQrK41i9sljsrUB5pBLGzAVCgiNWLNufs4I8h6hp738sNxRBexei5BoBJWscg%2F2Xw4VZjoMllFbx635Y52k9mvPUdKaRjHIF%2B08PInhJQV6%2Fa%2BHOq6d5%2F0G7toZzK%2FBwKzBCVrTo3GpQ%2F62cYW21DQ%2FMUVrFH%2B5vyInPSIqzfE1f2afawkmtp42klt0f6uzuInWoDqrFQRQjkMJV9Q2ms6VfitpeRS%2BwYV%2FwCBNDg2ozzr5Y1vTI7V9L1PnbTDk8E4Qs7M1KKHBDp9GTfQfOdosSxw6txkp8UN0DxBG37WNea09UzZBNY%2FM3SfLcVrLrDIyXZKwm2bmW40DsF3%2BFa%2FF8eTW1uoby2iu7ducMyCSNh3VhUYEK2bNXNirs2bNirs2bNir%2F%2FS7%2FmzZsVdmzZsVdnE%2FwA9rKYXmj6jT9w0ctuT4OpEgB%2F1lOdsyO%2Bd%2FLUfmvy%2FcaXstxtNZyHosybofk32G%2F1sB5ORpMoxZ4TPIGj7pbPl%2BNPrERi%2FaG6H38MkPlXzh%2BjhHo%2BrmunCqwXFKmDmfiSRf27d%2FwBv9pMJBDcWN7JaXcRhuYHKTRPsVdT0P%2FNWB9RiWO6ag%2FdygSL7cuv3HKpkwImPcXoM2KGaHhy3B3BHf3h6B5qslXQooNOVof0a7Xdi6fDxBPKQQ78vT35xNl6Fr1l5s0yXSNZRHujHxlRhtMv%2B%2FE8JB9r%2FAIfILo2pT6XfLd8mmiKehPAzE8oT%2ByvKtOPWP%2BXKvrafSpl1XT2L6ez84LqLrE1a8WH7PH7NDlkMoluPiHRarRz05F%2BqJ5SHf1CT%2BZ%2FLlz5WvvTUmXT5jW2nP%2FEH%2FwCLB%2Fw2FauD8Sn6c67a3Vh5x0p7G%2BRfrAWskY6EHpLFXp%2FxpnLdc0S88t3ptrir27msE3ZlH6nX9pcmR1HJxFS3uA4oftDBlvcz2lxHc2sjQzxMGjlTYgjCVG6Mh%2BWD4ZRIvv3GC1Z7pdxHraNJCViukq13aswVAO9xCW%2F3Uf8Adkf%2B6%2F8AVw1t5NPkKabe3SyqKG2uIquYDX7Jc7ei37a%2FZ%2Fazm9tdT2dxHdWzcJYzyQ9R4UI7qw%2BFhkwhvDqECTaZbExyHhPbqKmCYivBf%2BKZPtR%2F8DgIkSDxVHqK%2FSyBFbjfvR8k1xY6gVtLb6vJbVWZbhvVLo38yAemYZF%2F4XCjW0McX986%2BX72Uem6V56bekVAYLu0D%2F8AJSL%2FAItjw7W0utVgj0%2B7k9DULc%2BnaSMaFkrvaz%2F8yXP%2Bpgq00iztbkaVcP8AWBer6NzEworLWjRsoJ4yRv8AEjr9jGOMDbn5y3UyJ8vcyfyHpl1puhy31zEE1e9cJfKxXjK8JMaTqfGZCrt%2FN9rCX8wda%2BqyabAGAM85aYA9FUcV%2FwCGyZXElvb20VgHb1LeNDEKmpKDhGS%2FfOK%2BcrhtU1G8vLZ%2BYsz6M0Q%2B0nBh6cwH%2B%2B5af7F8slsAAxG5tkesTm68saddo3GbTZ5bb1B1G%2FrRfrxGTW7LzPpcrahALfzDpir9biI4tJESAZowftJ8Svx%2FY%2F1cD6VMb3RNTsShJmhju4gVP2ovtH%2FgG%2BLBVnb6b5g0ux1JGWDXNDj4SEiongQcGjk%2F34hX7LfsYBukt%2BWba4gWHWmj%2BsWdpK0Dwqy%2BoWkonJE%2FvHZOfNcKdasnk80288TN6EEqxOXNWSOJiS7n2p8eB4bySw1ilv8Au4OQk47kKo%2BLv%2FLX7WK6jr4u9Uee1jItndiIiasyv9sV%2Fl3wWAFZBbvYajqsV%2FDSP1yITPUgSKH9SSinYcIRw%2BH7TSJhr%2BYOr2sOkWmnhHSK6YiRolFF5A%2Bn6ngJif8AWyP2ML6dbiRI%2FrqsAI3SRAsMY%2BxHKrlGhfl%2FefB%2B8%2F3XgXXYppJG1m2unkbj6Op2pUSKVAqksSNsif5L%2FFH9vHoUlrytdtDCgdmV7d5I2boU%2BINGT%2FLhpr3nLTKJ9UT19TB4zNHtCe3Jj3b2XIssp1Y8bUfFOQsix7SCSlAXpTmj4av5OnsdM%2BuzB3Zm9OWaNGD2%2FMgRTolP3sXP4Zv92fyYi6oITDVrG28x6NBeBvqWoWS1ivSeIikU8jFI%2BzLA6%2FGn%2B%2B3yFaq1pcXix28ZUGi3U2wadx%2FuziAEWv8Aq%2FH9vDLV7TzXeWrqbaWO4VhHeNHtFdCP7EhX5D4v9%2BfbwpC3liGgvIoVdSqt6pLPGr0pTj%2Bz8Xw4CUkEGil7RwRu9ZzwjPx8UZiKePShyb%2BRfMdhHM2kLEV%2BsDlDLQFncUCxcRX7WEF1DCs63zCs6r6c1Nkencr7rgXSpFsb5zCForepC9PiUEfZr4DADRVD%2BddUkPmPU4lUgVNtNG4qDw2Bof2kP2GyK1LECpY%2BAqTnUFhsta1Ce%2B1G3inuZCrySsgqwqFNRkwu9R8m%2BWIwscEHrharDBGjSH5tT4f9kcIoop4da6Vqt2GW0tbiQHbikbkH57UwHNFLbSvb3CNFLExSSJxxKsuzKwPQjOu3%2Fmq%2B1mFo1C2NmFMjhTQLGu%2FKRtumQfU%2FMWh3uoTXx0r1pJePKSWSnJlVU5lQNufHnhQxmOYxklSPiFCDvUZQKUIpUn7Jr0%2B7D8eYrBP7nRbUf61W%2FhmPmtkBFvptnEezCMkj78CpRZOY5w%2FBmWhBCjseuSyyn0pIpIr2CSr2gtbYTQt6aylufPp8PBWbCZPNurROskYgVkYOv7tSAVNRtg2780%2BYPNd5CdWuRJHEWkWONFjRaih%2BFAPljsqLeRrVh%2BjQt3GBRoXBBKAfFwag%2BLJ15B17yfealE2taTHcXMG63Eq%2FvbYL%2FvyH%2B6eFK%2F3iJyT9vAXkPygPNEuoxx3KQ3VrAHtYWP8AeOxpv%2FxWqijMv2WZMLdS8vBLx4pg9jqVqTFJIvwup6fvP5lP%2FDLillv5i%2BStPtL867pEEcem6hxkivLWjIk%2FevHb05ftZF9Okd5Et5mayvoWEtrdRmnCUfYmhYfzftp%2B3k3%2FAC68zLfx%2FwCFdWt1eElrbUoW%2BwGIrDPGv7CyU%2BLj%2B18eIeavKM3lq7WqfWNOkYizuXFeNesE9P8AiX7WNbqCncfm2fzRoUmg6zEqa7ZPDPPCv93eQRMC00A%2Fa%2FZaWLCHzf8Al7oOra5b6h5KuBHe3rj61Ywr%2B5Xlu0%2FL%2FdDfzx%2F8Qwpup4VWBrORhfW7iS0YkrJbkdRLKv2om%2FY4fbzsvkXU7fWNHju3jhj1ZAI9UEKhSJvEmg%2BF1%2BPEhXgPm%2B98y%2BWriTyxrM0iCMBo5VVW9aDoJIZm%2BLif5ftRthN5X8zxWXm%2FTZ9dHq6HH%2Foz2z1eNLd1Kq4TvwY%2Bo2el%2FPXkjTPPGkNY3n7q7hq9jeqPjikp%2FwANE%2F8AuxM8mazo%2Bq%2BV9UuNI1KL07y2PFlbdWU%2FZljP7UTfstih9Jy6d%2BVV3f2dja3ltHe6ipezS2mrzAFfh%2B2iMf2K%2FE2Xcfk5ojoTZ311bz1JEjFXG%2FitE%2F4lnlh3USLKCY7lSGLQ7UI3DA9mz0L%2BVP5wLqxi8s%2BaZRHqIpHZX0hAE9NljlPaf%2FK%2F3Z%2FrYqqal%2BS%2BoXb2EYvraWG3kcyvLG3IRuwY%2BkgPFW2PfJjZ%2BRruwuFa21iRYFACKFKsKf6r%2Bmf%2BReTUDxy6Yqo20LQQpE8rzso3lkpyb58QBi2bNirs2bNirs2bNir%2FAP%2FT7%2FmzZsVdmzZsVdlEA9cvNirzb8zvIf6bhOu6REP0tbL%2B%2BjUb3EQ%2FZ%2F4yp%2Bx%2FP9jOHagvqWsMw%2B1ETGwPWh33z1znI%2FzL8hqEutf0qP4JRzvrdR9lwR%2FpCDw%2F37%2FweRnGxTtNBreExw5DsD6Sen9F4gpphto2prYSSQ3Ketp11RbyAiu3QSoP50%2F4ZcK5YzG5Q7eGPEUyRpMykRSEhH7MV2IzGAkDY5h3OSEMkDjyCxL8beaZaglxoOpxTW7qLSWkmn3cX2eJ34nx%2FwApclMsen%2BcdIeC4QCZQPXjH2kanwyxe2RjT7%2B2e0bRtVHLT5SWhl%2Fat5Ozr%2FxWx%2B2uJWtxe6HqSw8wtxDvBL%2BxLGegP8yOMyceQEbcuo7nnNVpZ4JmMtwd4y%2FnD9bENU0y80C%2BazuRyTrHIPsunZh%2FTKil4kSIaj%2BGdZ1HTtM846SXUenKv2gN3glp1%2FykP%2FD5yO9s7vRb2SxvU4sh3I6MOzp7NkyOo5OKmSuGUMvQ9MMdF1m40S%2FjvoAHUfDPA32ZIz9pGH%2FDIf2Gwjt5Qh3%2Bw3%2BdcFnrir0GW5Kyx6hav6ltfqDHddW5Dbi1do5V%2Bw6%2FzZLPLbQ6nP8AWrpAby3oJGI2kXqkrfyyqR9rOU6HrKWHq2N8Gl0y6p66Lu0bjZZ4v%2BLF%2FaX%2FAHYmda8p2i2tk8sjrI7miTITxkj%2B1HJQ7huJ%2BLJR3K3snuq3fo2ruoqQC3idvsgD%2FWpnMJ%2FJ%2Fme4Msq2jC9tuUaXcXER3drJ1japH72NW%2BFmX%2Fit%2FwB5nTdIksyzW0c%2FryxVZgzBmCsa4eCZAKHDIWgbPDvK9jquh6xaW%2BtW81rDL6lozTKaFJQVAB%2BKtfhwvs47myvL%2BNQfTs2kD9UK8gQKlv2Xp8StnR%2FzQ1GW08u%2BlZO0d3dTxxQshKsKHm7hh9jiq%2Fazi6MxEiI5YOa3NyxJMjVrux%2BIrlctmQ3TS91E3jCG2jHI09R1qOdOgFf91r%2Fw2CLKFYxyJBIFZJOwHgMC2NryG3wRnq56t%2FZhusZiihu7cMWt5ir2zpyikUAU9T%2BYcuWR5pdPqiacQrWqXCzR1USVBAb%2FAHYp%2FnwutdVhtdTa%2FgWVBOAk8BcNG9BTqyk4c6rc2dxe2F3c2kcKJGI7qx4kUjpyR0B6Vr%2FNhBqc9haSxpHERaXRaWIt%2FuvcoTRa75PlyQn%2FAJZvYI%2FMUS2SNELiVTEygUjnVW9OlftI8hVWVsnSXVxfTGS6laSViCS2wodjsNs5%2Fo8rrL69qwd6pIrqAw%2Fd%2FYPw9OmSua51GVJ762swQXLCD1AiryNQrMfi2%2FyVwxKkIjW7%2BezjR7PTpr%2BUbv6WyUH8zfa6duOEPnjT7SEWmrxxkSXatazowA5KY%2BScgD9qIrxwQ3mPX7EetqFhAtqPtegzySAewA45F%2FMHm1dcRIGjMdvC%2FqRIKcuVCvJ2%2BR%2BzglLY2yhjnLaESfcEquburW8M5HpzKvIr1FaDl79cRbRr6S8%2Br245GCoac%2FCjKp67%2FwAww%2F8AL3li01qBLgPJO8f7t4wP7s%2FsE9fhOHer%2BVtfgg%2BvabcJe1FJrPjwZVUU%2Fdy%2FR9llyIFixuEzjKEjCYojmGM6jaajZ28RjBiEisJzULTi3iSKR0wboHkTXdWt21OLT5ru2A5RlN1k8SrsVWT%2FAGD5ena1aXA%2Bo6pD%2B9J2WcenL%2FlBJR8D%2FwCrnSfy880W%2Flyzl0m7uJZtJR%2BVmXSsltyNXhYD7cP7ScfiT%2BXDXcxosR1D8rvP2qWUdlZadHZW7kPcPcXEYeSn2EKR8%2BKJ9rh%2FNkRu%2FwArtc026ey1FooJo9yKs4IP7StQclz0brf5jeXtKhR7eYX0sieoiQHYL29Rv2Cf5T8WQ7W%2FMj%2BZrOKd0t1Ct%2B6eDk7xMaj05CaNxb%2FVwEgCy249PlyECMefJ4235fXQ63Uf%2FAt%2FXC7VvKsmkfV7iab1dPlISW7jTeFz%2BxJHWoPg37edQ5kyNDIvpyx%2FbQ%2B%2FQg91OB7hFCurIssUq8JoHFUdD%2Byw%2FU2IIIsMMmKeOZhkiYyHMF5g%2BhCNipcyFf3nwD7cH%2B%2FoT%2B1x%2FwB2J%2BziNyW01%2BNseVtMoMc4G7VH82TCbyxfWMxtUMlnDIPrOli55JIh%2FwCK2ZeMqthYYOMVxBNb%2Fu2HK%2Fsl6JU7Xlp%2B1xDfbT%2FdeFgmPknW7q0eC%2FsZ%2BOoWTck5ftRnrG9PtIfstnatY0iw%2FMfQ4%2FMWh8bfXbdSjxnbmyD47S4%2F5ky55gWcaZqDPp1yZo42Ppz8SvIePHOn%2BTfO2qaXML%2FSHiPqcRf2M9fTYf78Xj8XIfs4qoWsGsQ64Tpp%2Bo31zGbK9WYfFE8Z9TceI4FP9lnpNbWDVdGit9RRbiO4gT1g3QkqCW9jX4lzksE1z5382DU7WzEKoqq5UVAoOIeV9uR%2BL%2Fgc7RDGsMMcS%2FZjUIPkopj0UvHtQ%2FKnV9H1F9X8vXCajyYt9TuQoYLSijkx9OTj%2FlcMS8q%2BaLny95guoNYs2s%2FrfEXsLLxKyJXjLH4pxOdpwl1zy1p%2BvCOSctDcw19K5ioHAOxU1HxJ%2Fk4otNoZYriJJoWDxSKGRh0II2IyF%2FmN%2BXll550z4OMGs2oJsLynfr6Mv80L%2FwDCfayU6RYNplhDYNMZxACqyEBSVqSoIH8uDj0xV8NappV7pd7Np%2BoQNbX9qxSaJuoYfrr9pWwuSNg4NSHBqKbEHxrnrL80Py2g86WX1%2BwCw69aJS3kOyzoN%2Fq8x%2F5NP%2Bw2eXm0q8guZoblGglicpNA4pIroaMjfy0OKvpf8lvMusa5ol1ZazOLqXS3jiiuTvIyOvJRIf2ylKc86eM8y%2Fk35usfK2r3FtfyMtjqoRZZ3qRFNGT6bP4IQ7I%2F%2BxztF1%2BaHke01SDR31aN7mZ%2FTLRVeKNu3qTD4F5dMVZlmylIZQwNQdwRuMvFXZs2bFXZs2bFX%2F%2FU7%2FmzZsVdmzZsVdmzZsVdjXVXVlYclIIIPQg47GSOsaNI5oqgsx9h1xV4R%2BZvkA6VK2r6VH%2FuPlarIv8Aulz%2Bz%2Fxjb%2Fdf%2FA5EoJLK%2FwBFh0yOJU1AyrH6oABboqJItebtyJkjZP8AKVs73qnm%2FwAsyW89les7xzwtSMxMRKG%2BHghpx55w%2FwAy%2BWpbIHWNNjeGKFkDjlVw5%2BIPGwp8S%2FtcfsZGUauQHvdvpNWJxjhyyMZA%2BiXQ%2BUmMXNtcWVzJaXSGOeJisiHsRtll1uLf6rcMeKb20vVoW%2F6pP%2B0v7GHsLr5ptvq7mOPU4ElmEhHH1eCII4kp%2Bz6aO7%2FtephBNBPbytDcRtFNGaPG4oR7EZVKJHrhz%2B92JjDPA4cw3HMdR%2FSiiNG1m7028EiEC4j%2BGWMn4JU7qf8AjVslmvaBp3nLSFvbCiTKCY2P2opP24pKfs%2F9d5BTFFIys5ZGX9pKch9B65JvKmrSaVdevxea1m%2BCcEFQyj9tR%2FvxMtxZBIV8x3Oi1eknp5Ud4n6Zd%2F7XmskVxp11JY3sZikjbiyHsf8Amk%2Fs4caPay6peQadE6rJMwVXboF6k%2B%2FEDOn%2BdPIkfmSyGp6QA12qc4JFpSVPtcG9%2FwDjfI35a8qzaFNa3urKrXLmscfI1gP7NSv2n%2FmywxouIN1DWPKDW95DY6K0t5IfgnaUKgD05cl49I6H7TZ0bynBAmmjSVvhcz2qEM60%2BHnVRw9om%2BH%2FAFsItfhndg1q%2FpNdxmIuDQVU%2FECf8oYReSLk6R5nWBw1bmT6sSD8FGBb4h%2FNyXDyPvbsWITE9%2FVGJkB30jPKV1PpOsrBduRLFcPb3JY9VditW%2F2XxZ0%2B91O2spIoJWL3E54wW0Y5SOf9UdF%2Fmdvhzm%2Fm2w%2BoeapJlBVdRjWdCDsZE2cfeuHdvfQW0BngZptVvEH1u%2FlG6gj%2B5hH7Kr0xHc0pD%2BYg8wa1NDFZWjSWtsrCRoiGJcn46b1YdF2yFWemzxsW1CN4Ej%2FZlUofubOs2WpxpNGl2oMP2eSbEe5yTXGkadqFpJaT26T2860YEVBB6EHx8MeCzdpunlEtpHYQ38GqRrFNaPA8EgJcFa%2FGqhadao2XBGlmbe2uCzevbGeRo2PcNJx%2F2S%2FDht51s3sLpYLoH6ncIq21wRU1UceLt9Hxf8Hhj5f8pXerWc%2Bq2VrHqE1oqQWdvNLwUoijmJB%2FO9W4%2Fs8cjVH3LezEvM2mXWqyabNozB7SS1WJ5SwBrHWnLv8A3ZUbfy4onlazmtrKC%2BJlNoHFFNFbmQaHvtTJ9rPlzU7GOO6vrRbeNioQQMrRxmn938IXj4YE0fQLnXBdQ2062l1CP3SSry9Xav7og0%2F4LDsikps7C3s1WK2iWJB%2Bygpg5lNOX0YAVr7TL0xXsxcxsVlhktwpFPtLVWwbf%2Ban0e8tp7LTYrmyILlpyT6hoRw2%2Fu%2FTbdlw3taoK4v7a1dY2dW5GjQ1qVHj%2FwA24Vah5a03VlNxZEQTtvyX7LH%2FAClyfjyfo3nrTrbV9PRNI1i6gM8qRENC8gb05OUI%2BNR6nR1%2F4HIRqOj655Vu%2FQ1SBogT%2B7mU1ikA7pJ0%2FwBi3xZGwdizhOeOXFCRBSPSZNX8maml1MhNsfgldPijdD1H%2BS37S8s6ZLrEEZt2uEe1W6VWtLsg%2BlKGHIGOReS%2F6wOR9dWtRp11dSQ%2FWHt4Wk%2Br93IGyU%2Fysk%2Fk%2FW5INATT9Z0eAWczGT6gr%2BoIlfcgBxsf2vT%2FAGMYxMSeE2D07m7PqBmjEzjWSO3EOUo%2BY72M%2BYfLcd3FJeQRxyo7EzQU792GQ60bU9Hkf9HTAwts1jdVeNl%2FyX%2B2n%2FEc7ZL5XstVSS58p6kYZqVbTrysif6tWPrRr%2FspVzmuvaDq2jzsup2JtA5NCfjtmNf91Tjb%2FYyccJ8tmgJPqV4JJLJpI3sYLqJ2uY%2FtBgP91q6jpIy8Vw0sNNn8tG11m8KWNnqTrAums5YhTvyct%2B0R8fw%2FYb%2FWwLdRpfaVEkkPO50r1HhjJALRSg9HpX92%2FwCzgSW4TV9Hga5uppdVspFt7a0FOMNshHJm3VuZY8fV%2B0zfBlZHq3BNigOnm52LIfDHCYwMCJmVXI8IqMYnzI4f85l%2BsRQc7eSKVRPHKts4ruUkPAcv9R%2FiwbZaY1p5gtrHUoipjnjWZOo4lhRv8pGwcPL9pcROZo2S6ZkaXgyqoaFVk4hn%2BJ9uPqNxwVrmsWupvYzalF9S1K1lTi6GscsYYMpV%2FFWUNx%2FlwYoSjd8jybO0suLMcUsdmUQROxRrnH75PQtd8vaT5itBZapAJI0YPE6njJGw%2FajcfZzg%2FwCZWh3GhW%2Fr2wH1vSZ0DXlPia1m%2FuZuK7MV%2FuLj%2BbPQ1pdR3ltHcxGqyCtOtD3H0HIF%2BZFnb3k8EMqhxPBJHOh6MnIUDfSdssDq3zfqWmR6lFJqenRCO6iHK%2Fsk3FD0ng%2FmjfC3SNVudJuUvrKQJdQOrxc1DoafaSRGqrK%2FRlyU32i3XlnU4RHOYrF2Isr1hy9Jm%2F495%2F8AimT%2FACsKte0Zp%2FW1Kxg9KaL%2FAI6Nipr6bH%2Fd0X88En2lfFX0%2FwDlz5x0fzbpAlsIYrO%2BgAF%2FYxBVCOR%2FeIBTlE%2F7Lf7HJpniLyz5m1TyrqVtq2ly8ZYzuvVWX9qOQftI37WeufJnnHTfOekJqViwSZaLd2pNXhk7qf8AJP7D%2FtYFZJmzZsVdmzZsVaOct%2FNj8sx5ntJNb0NfT1uBayxrt9ajUfY%2F4zqP7tv2vsZ1PKOKvhz0CsbwMzqSSHPRgw2%2BL3%2FmwrlheB%2BD9exHQjxGeqfPH5Oad5lupdW0icabqU3xTqV5QTN%2FOyr8SOf2nX%2FgM59H%2BQfmu5nWC9ns4rbl8U6OzMB%2FkpwGKr%2Fyk%2FOBtOMPlnzTMWsyRHY6g5qYq9I5j3i%2Flf8A3XnoxWV1VkIZWAKsNwQehGc68sfkv5Q8vBZriE6rdrQ%2BpdAemCO6wj4f%2BD550VVCqFUUVRQAbAAYq3mzZsVdmzZsVf%2FV7%2FmzZsVdmzZsVdmzZsVdiNzNDbwSTXLBIUUmRj0A98WwNfPaJbSm%2BKi2pSUv9mh2pirAPON5pMWiStoiPJfM1bVI4yy1G8jDkCnwrhDrD6jFb%2BWbC7Wt36Ecl%2BCP%2BKiZHbtyJajf5WDvP9xZRaNCfKtxKb4zj04IOR403JKkfAOfH%2FWws84ajNd3EEklFuSOUtK%2FDRVXiKduQOFIeeatpk0F5PeaUj%2BlATLIYwSYhXd%2Fh%2ByleuLP9U12ykmiWO2vrWOW4n3PxgcAFXmaty3cf77%2Bx9jO1%2Flvo0EejT388SvJqDMjFxXlEvw8TX9ls5h%2BY%2FkSTyne%2FpHTVY6LdsVUj%2FdDt1hf%2Fitv91t%2FsMgRW4dxo9X4vDiySqcfon%2FO%2FoyYJsQGHfJL5FsrXUdZk0m6uTbR3UTvHQAgzRjkONSODla5GgcX0%2FUJNL1S0v41DPFINm8G%2BE%2Frym%2BHMD0k52txeLppjqPUPfF6l5X8xWlm995evZlguLSdkjR9gTWjrXovP4XTEPM6wwzKSKCT4tuoIO%2B3vke80xXU2tW13ZQ%2Bo15bq8npJ8UlELVp%2B3sMBWOsXOtWy2iEyXNuCyIw5Myf8VsaseFP7tvizL4tq%2BTzNUfvT%2BOU6npky9ZrciVAO5Xw%2Ba8sis01rp%2FmC01O5YrSWJ4kXcyFiB9nsK%2Ft5fljzLXzMlg0bRQujQESbVlDcl5IenL4kyeebPIp8y6j5e1DSEjX0XWO4QsqKYk%2FfRgV%2Fb5gx8cHMe5lGUom4mjuPnzSW%2F1OfVL6R7sJW2keKFUGygGhIJ3PKmNVy%2FTAk1pdWc9zBdrwuElcTIezA%2FEMj%2FmjXbvQtaW3tEBgCJM6PuCHFQExtizSKI1DHJv5VuxKrWMp%2BwC8JPh%2B0v0ZCNLvrfUrGG9tjWOVQfkf2lP%2BqcPdHme3vIZV24sKn2Ox%2FDJBSyzzBplrqWnSQSxLI0P76EsoIDqO3%2BsMgmlaxceUdRXU7ZS9jJRb62XoUP7QH80f2k%2F4HOgXdyVYgHp1%2BWQW8g4TzQyoQpJIVh1VuhGJCh7FG9hrempKhW4sryMMp6hlYV%2B%2FOWa%2FbXfk%2FU0ZJOEL1ayu2%2By1P91udv3if8OuCPJ%2FmhPL1xaaJetx0y4rFFMx2imJJSvhHLXj%2Fr4N%2FO9G%2FwAJ28o%2FYvY69%2BqOMgdlYzqPmWy8xr615aouoxAA3dk4dJB0%2FfRGjofBl54U%2BnCySRNSa1l%2B2vQq3861%2By65GPKcztqxjY7NEw4jYbU32zoNppF1qfrw2JX6yierHExoJivWIf5fH7DYYnZaY3pN9N5N1n9JJEbuIwyRoisY1kDbpVu3F%2FidM7xpl3Y%2BadFt7m5tle3vIUkaCYBx8Qowof5WB%2BPONG0jvLY28qlRUgqwoyOOu37LpiXl3XbjyZqk7XglmtZIfTEKNQGh5REFvsxr8XLjgIrdWQedvy7GiQPrfl4SNaxVe5s1q7Rp3ki%2FaaNf20%2B1kT07WGCqwcMjdJFNQc9C2N9BqNvHc29WiljSVGI2KyCopkFv%2FwAotHu9cOq2d1JYW0x53dhAo4O53JQt8MYf9ocMFyB23ZwGOQIkeCQGxqwfIsatNQSQrIrmOUbrIhoQfEEb5LLHzPP6X1TV4RqFo4ozFVL0%2FwApD8EmFms%2FlxeWBNxoEpuIhubSQj1B%2FqPsHwo0%2B4ltUmW7Ro5ojRo3BVhT2OWCi1t%2BbPJ1pFCfMXlJgtl%2Fx92VCyRHuwjb4kX%2Bdf2ciOlG2huhcX2n8JI2BE8FHHzMTb%2F8TVc6FpWutaySPblJEmHGeCQVVwP1ZGtcsIbe5N3p0Ui2MlWaM7mB%2FwBpQ4%2B1F%2FLkTGulhnDIYnYprf6tYaxaxxCDlxIaG7iko8Z7kGtWr%2B3ywxsdGl1WwitzGbkgkRzugDGnRm34R0%2FZbIJBZwxv9YhAVx8Qp0JPiBnafJl1eXekLNdyrKOXGNgADQD4g3Gg%2BE7Y8WyTLfiHNJbbQvNHle%2Fe50eQX%2BnXAD3Vg53EoWnKImhQmn7Pwv8AyYRX9xql1dmXWOS3XHiqMnp0QEkKq%2BA5fazrQwHqOmWmqQGC7j5D9lxsynxVsFsLeO39hb39tJbXMYlhlHGSNuhB%2FUffOZXy3%2Fl7UV05n5MgrpN1LTjLCT8VncEj%2FYf5Odt1nQbzR3JcerasfgnA2%2BT%2FAMrYB%2F5V3Y%2BdtAvhefubrn%2FuNux1jkQUYkD7Ubnir%2F6uEq8D1rTFk9XUdNgaHix%2Bu2XVoHPcD%2FfbfstnQfyAeb%2FFktC%2FptaSF1VgFNGTiXFfiA%2BLj%2FlZC9WuNd8p6kNM1e04anYsY2mY7TW%2FZG2pKjfsS4K003mkCHzl5WmDLazercWoB9WCvX1FB%2FeQt9lv8nIofYNRl5FPI3njTfO2li7taRXkQUXlp3Rj0Zf5on%2FYbJXirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F%2FW7%2FmzZsVdmzZsVdmzZsVdgHVY9PmtHi1JlW3cgEuQBUbr1wdgPUdNttTtzb3IJWoZSOoYdxirzHztP%2Bi20aTyvdm6uDcJSCMJIPTVhRWKj7Bbbi2B9b8keZrnV3FvberbsQsVwHUKFJ6tU8hSvhk%2B%2FwAPGy1GwvLOkqK5ju0cIP3YQ%2BnItAPiif8A4nkkphKQaQOk6eml6ba6fGQVt4whPif2j%2FwWO1LTbPVrGfTr%2BITWtyhSWMjqD%2FEfs4MzEVwIsg2Ni%2BVPOHlm58p65NpU1XhP72znP%2B7IWPwn%2FXX7En%2BVgW28s63f2kWr29m76Ys6xyXQpxUggNUfa4iv2uOen9c8t6J5it0t9as0uo4zyjLVDKf8l1oy5EL7TriGW30Lytp7Q6Dbs0d7xI4Oz%2FFWPlycmNvib%2BfKziufETs7WXahOn8Ph9dVIn6a7%2FewDzPd3ukNplzYtxtEhW2adVBKzRktTkalOdf%2BBw60bydZ%2BaNR%2FwARaPq0VjOIw509bcLIkw%2B16yh%2FjRm%2F3an28de6dLYTXGk6xDztpx8aHoyn7Lqfb9nI3YX%2BreQ9ThS3pcWhcvazMBWSE%2FbgaQ%2FF8P8AJlrrDvunvmryB9buFvzAtnrkQD84z%2B6mKHkGRtu%2F82HWnO%2BoadLpU5aC4ZeUL9Gil%2B0jKR0aOYZOLO80jzho0d3Zv6kMn2WFPUhlGxVh%2By6H7WQWaO80rV1hvwBMjcfUAoskTbLIP%2BNsIr5oSu10tfOt7Ikt4th5ijQC6hkSsdz6fwfWIiCCr7UmTj%2Fl5JG%2FKTSdTjg%2FxDILh4UCUgHD7P8Axafj45GPMdkYtRkvbWf6jewEXNhcr9ppT9pEVatJWnxJx%2BznRPIfmz%2FFujfW5Y%2FSvLZ%2Fq94gBCmQCvNQfiVX%2B1xb7OA2NleaX%2Fkr%2FA19Jb2rO%2BlXbc7UvuFbuvL%2Bb%2FiWC7M7HOuarpdrq9jLY3i8o5Bse6t2df8AKXOP6jbaj5dvpLK5USBd0fcB07Ov8cMT3qkP5l6trkWp2kNi8sVr6CShoyVDyH7RJHXj8OQpfNfmCN1%2BsXcsnBeCrOfUAUdFHP4uP052ny%2Fq2g6veR6T5hgX94Almsp%2Fdsw%2F3W%2F%2BU37GSHUfyp8n6hUpavZse8DkD%2FgH5p%2BGCXNeTwM%2BbzeWxtr%2B3SVHFGMZKMP8oBqr%2FwANh9qv5gpr3kVfLV9zk1O3uIjFOwrzt4w1GZhUeqn2P8rJD5i%2FJJrK2lvNKufrSx%2FEYCnCXiOtCpKPx%2F1M503lq7tpDxDNUUUGlPwyJtWQflfpMWseaFtLgssZtZnDJ1VhxCn3651e38qanp%2Bs2ZX95brKG%2BtR7UVfio6%2Fs16YS%2Fk3pGmWxvNR%2BspJqfEW7WnR4kryLFW3PqN%2FL%2FLnW8I2UsW8x%2BVo71n1LT0CXp3mjGwlp3%2F4yD%2Fhsgl9oyXUaxX1u8LoCY2dStV%2FaG%2Fgc7JTEbiztrr0zcRrIYmDxlhWjDJCXQoeVeW9Rv8Ay1PKL25kuNO9ELEo%2BIjgaoKk%2FAqJyzqtrdQXkCXNs3qQyqGjcdCCK7ZFPMPl1Yg95aLWA7zQjfjXqw%2FycB6JrNzY3BW7uAbARKgUqSQVIC8KfCq8K8vhxq9wlntK4DvtJ07UgBfW6TU6FhvTwqN8FRyRyoHiYOjCoZTUEHH5FDC9Y%2FL6wuSZ9Ic2M3X0tzEfo6p%2FscL9B%2FLy8XVJNS8y3Yuo41aKz0%2BEkQrGwoWlO3N2zomVTDZV4l5n8s3Plq94oS%2BnTk%2FVZj27%2Bk5%2FnX%2FhsMNI893Wj2ht2thNVSEp8PGSlBK%2F%2BSf286nqOnWmqWcllexiSGQbg9QezKf2WGco13yhdaVMUT95A39zL0DDwPg%2BIZc3pPlzU5dStGa4IaeNgGZaAFWHJWoMOc5v5E1B7Wf6tcAoD%2B5PLb3jP0fYzo4xIYrZIo5UaOVQ6MKMrCoIPtidrZ29lAttaoI4UrxQdBU1OL5sCsO8%2FwD5e6V5708RXNINQgB%2Bp3oFStf2JAKc4m%2F4XOIWX5R%2FmVoOpummwIySAxNMssZhZG2q3Mqen80eeoKZqYq8l8h%2Fk%2FceW9Qt9Z1DU3W4gPJLS0JCEGvwTytT1U3%2Bx6arnWs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F1%2B%2F5s2bFXZs2bFXZs2bFXZs2bFXUzZs2KuzZs2KoXUjILG49E0k4EKetK43TYkhsoQp5EqGZvEnvgp1DKVbdW2I9jhDdaDqT%2FuLLWJbOzP8AulEVnAPVVkb4hiqB8wWUXmS%2BXTYWQi3ikZphuUlqOKmn7P8ANnOtRsiPW0TWUKqD9ofajYfZkQ%2B3%2FDLnYtH0Wy0W3aC0BJc8pJHPJ2J8ThV5u8tJrdoZrdQL6EH0z0Lj%2BQ%2F8a4bTbxXQPMGq%2Fl9r7mSs9jcUN3Cv2Zo%2B1xD4Sp%2FzZnaNYhtfNmgRaho7JcMwE1pKCASP246%2Fsn%2BZf58gsugWWtaPFp1xRL21qFkFCyP3U96YR%2BUfMt7%2BX%2BqvpmqEtpUsnGeOtQjE0FxD%2FwAzUxOy%2B5kHmGCOa1s7%2BVeEsFYpHI3SvwyBvDi647RtH1by3qEXmPT5VlgnWmo2C1Amj6rIrH4RMnVcCz3FvJ5x1pIqX2h30cVy3ouv2nQEeka9XZW5ZJNPult7dbZpTLasP9HlYUalP7uVf2JlH2v%2BEw891ZzY3tvqNtHdWz84pBUHoQe6sP2WX9rC7zJoEOu2Xp7LdRVa3lPY90b%2FACHwi0IahBqtdOo9hKf9LjY0Vf8ALU%2F78ybZFD591jS3R3gnRo5Ymp4MjA9snHkr8weRi0LzJII7pQEtdQc0SYdFWQ%2Fsy%2F5X7eH%2FAJw8uLqMDX9qg%2BtRL%2B8Uf7sQf8bLnJbuyjcNFKnND1U%2Fw8Dh5pfQo3Gc487eVFhMmq2KfuHNbmNR%2Fdsf92KP5G%2Fa%2FlyPeXPM%2Fmfy2Y4pmk1PRqfBBKpNwiDr6E3%2B7OH8j51%2B1ubXU7JLiKklvcJWjDqrDdWH%2FEsV5PntoFiuUuQOFxFvHKpKsPpWnLJZ5b8w65p1xEguXuIp3q8d07P1%2FZVm%2Bx%2Fkccbr%2Bhm2125sbPggX95AZq8FRhy3p%2FL8Srk181aDHqempqtvRLu2hDngPheMDmV%2F2P2ozjsrKLW5ju4Eni%2By4rQ9Qe4OL5D%2FACp5hgu7iOwkkUXFxD6yx9DWM8HNMmGJFFDRFRQioPUHIhrmgrAXubdK2z19WOleFepH%2BRkwymCkUIqD1BxBpWIaNq09o31WURrZoiem32ePEheCIB8VV%2BLJcGB3BBHtka1LQXVne0XnC9eUQ%2B0tevHxXA2lxazHfW620rx2atW4gkSqFOPCgdvjDClVwkA7hWYZswzZFXYnNBFPG0UyCSNvtKwqDimbFWE6voE1hIbu0Be3BrQVLIP8rxXJRo92b3T4Z2%2B1Ti3zG1cGkAih3B7ZSRpGvCNQqjsooN8NquzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Dv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxViPmbyo91cfpvQiINVT%2B%2Bh6RXSD9iXwl%2F33N%2FwWQzW9AXXo%2FXaFg7L%2B%2BhK0mjdBuafzACjrnYcDTWNrPKk8kYMsZDI42NR40w3tRW3z1p2l6ho%2BotLAfXVE5OgDVljA%2BLj%2FxZGv7OS2BbeaRbscpI5YuLQq3ETIfiQcv2ZVP90%2F8AsMk3mi1FjqBnt0CpcIHIUU%2BNT8RFP5tuWRDTFEulwPaP9YjVSfVjBIFGPM%2F7BvHCOSXqXlu6trnTI1t7Y2Zj%2BGW1YhmQ%2BJcfb5fzYcZBPKl1I7GRXHKGi3AY%2FajPRvdsnQNd8BFFDjnL%2FPWhJaXguIKRw33KngklPi%2F2Pxcs6jkY892Ul3onqwoZJLWRZeAHIlT8D7fJsAVBaLpUeueS9PtriYPcWykQXkfZ4yVDD%2FJP2WwX5X1NJ2NrQIGXkoXpzQ8JP65GPJfmOTR5G0zXLmGCzlYmzhZPSeE05ceP7UTjfliOhagkWs3CW0gkUXbPZjoZVkY8kQHr8OSHUJZD540vmYtVRBIAvoTo260JrGzU7cvhzaJ5jgm0t9O1u7giu%2FRdY%2BJ48oyCg%2Fd9QyfZ%2FwArJhPBFcwvbzqHikBV0PQg9sgt%2FwCSLpJy9pxniPRiQsgH8rfzYB5ql%2Fkq1hXU4ZigNwjsizftemU3Uf5Jzp%2BRXyloF%2Fpj3FzqYiR3YraxREsyx%2FzTOaL6j%2Fyp8CZKsSUOzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Hv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVg35iPrMEFld6XbR3CRM%2Fro1fUIIHwx%2Fs4U%2FlrqOkz3c1lYQmENFJI8DCgRzIDIg5b1JavTOiajZLf2cls1KsKofBh9k5ydpJPL%2FmzT9ZcBIWY2t5sFoD8Ls5C1%2FwCDkyQ5KyjWdLGi6ml3brSyvKxuo6I58P8AJPVclOiXZurPi5rLAfTf5fsn7sE3drBqFq9vLR4pV2I7dwy%2B%2BF2j6Xf2F5dS3EqNbyhViVa8iV%2Fbfag6%2FZXBdj3KnWURXLzYFYV5n8n3us6ut7btEITGsbc6hl418B8WFd75Ym8svHqVqPrQiCsJSPiikH2jQfsNnScayhwVYBlOxB3BGG1Sby7rf6YgZ5KCZftIBSmHeFllodlp95LeWqlDMKGIfYB7kDDPE%2BSuzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F%2F0u%2F5s2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZFfM%2BipLW%2BSJZAf71CtaMPsygf8SyVZRAIIO4PbCDW6pP5YvDd6Wiu1Zbc%2Bi%2B9Tt9mv%2Bxw5xG3tbe1Vlt41jDHkwUUqfE4tgPNXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Pv%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV%2F%2FZ);background-position:center center;border:1px solid #0a0}.yui-skin-sam .yui-h-slider{background:url(bg-h.gif) no-repeat 5px 0;height:28px;width:228px} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-singlequotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-singlequotes.css
new file mode 100644
index 0000000..670b347
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-singlequotes.css
@@ -0,0 +1 @@
+.yui3-skin-night .yui3-dial-ring-vml,.yui3-skin-night .yui3-dial-center-button-vml,.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,.yui3-skin-night v\:oval.yui3-dial-marker-max-min,.yui3-skin-night .yui3-dial-marker-vml,.yui3-skin-night .yui3-dial-handle-vml{background:0 0;opacity:1}div.base64-singlequotes{width:100px;height:100px;background-image:url('data:image/jpeg;base64,%2F9j%2F4AAQSkZJRgABAgEAZABkAAD%2F4RfJRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAAD0JAAAAnEAAPQkAAACcQQWRvYmUgUGhvdG9zaG9wIENTMiBNYWNpbnRvc2gAMjAwODowNzoxOSAxNDo1ODowNQAAA6ABAAMAAAAB%2F%2F8AAKACAAQAAAABAAABwqADAAQAAAABAAABRQAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABaTAAAAAAAAAEgAAAABAAAASAAAAAH%2F2P%2FgABBKRklGAAECAABIAEgAAP%2FtAAxBZG9iZV9DTQAC%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgAdACgAwEiAAIRAQMRAf%2FdAAQACv%2FEAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5%2FcRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14%2FNGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x%2F%2FaAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkklKSSSSUs4uDSWiXRoOJKFi3Ovx2Wvbse4e5gMwRo5soypdOyN9mTSRHpWvj4Oc4%2FwDVf9WkpupJJJKUkkkkpSSSSSlJJJJKUkkkkp%2F%2F0PVUklCqxttbbG%2FReA4fApKZpJJJKUo2WNrrdY8w1gLnHyAlVOsWvowXZDZ%2FQOZa8D9xrmm3%2FNr3PUswm%2FpmQGamyl4bHiWuhJTYqsFtTLBw9od94U1Q6FkfaOk4tszuqYfwV9JSll1%2FoOt2sOguDXgeTm7f%2FPmN%2FwCCLUWZ1VhrysbKA%2Bjua7zgtuZ%2F1FqIUXTSQcvKZi47sh7XOY0tBDYJhzms3akfR3blVd13prMtuI%2Bwse%2F6L3Ahm7n0%2FU%2Bi2zafzkFOgq9%2Bdj0ZFOM4k3ZDtrGNEnhzt7v3WbWPU8bJpyavVpduZuc2eNWONb2%2F2XtXOY2VU7rA6hnO9RuJS%2Br1hO1lguGJbuYz2extvv3fzLPU%2FwCESU9QkkkkpSSSSSlJJJJKf%2F%2FR9VWf0iwiu3Ff9LGsewT%2B6D7P%2FAyxy0FmunH6xPDMpgd%2FbZFT%2FwDoOx%2F%2B20Qp0lC02CtxqALwDtB4J8FNJBTVovx%2Bo4jvbLLGlltTuRMssrf%2FANJiz%2BhZDqMO%2FEyCX2dOc6t%2Bkuc1gmt%2B3%2FhaPTeoZ5s6R1IZrBGDlkNvI%2BjXcYYyx%2F7tWV9B%2FwDw%2FwDwlyD1LqWH0jq2N1O55rxOogY1rwC4C9uuP6mzdt9Wl1v6T%2Bb%2FAFdFS%2F1Myq%2F2VThusa%2B2tst2k6sPuY73Brm%2Fo3Vv2fy%2F3F0S4TAzq%2Bm%2FWDquKGnbhWOya62DUUlrcmyulktZ6f2ey19Wz8%2F2Ls2Z%2BFYx1jL6yxgBe%2FcIAI3CXfNIqZX3ursqqrZ6j7TqJgNY2PUsPP0dypfWJ%2Fo9NOT2xrarHTxs3tZkf%2By77VR6v9bejdNsbkb3Zbqm2sfVjgOOhrdZFljqsffXs%2FmvV9V%2F%2BDXHdZ%2BuvU8zA6i%2Bj02Y1zawaZLt2LY21tltb7XOb6j6%2FwDR1V%2FzV36v6rPVYFU%2BiCs5PS7cd43O2WUOB77d1X%2FT27lwvVnNyKK8d15q6hij207o9dg3DHdW9m9zLv8AQ%2F4Wu71K%2FTtr9aqzJ%2BuHV8tmR0zNoyLvsXU8Nr7cdtjmtN1J9K%2B2podsbk1%2Fo%2F8A0YsnG6te%2BnLZbdXXY6pttADNwucwmhv2cWbv0tnr%2FpKnfpKbKf8AtsqD1DvrjnfV70cKlldgzgbqjf7QHB3p2sG0sb6lv0%2FfZ6TEcZg630xz2vezK6jVbfhVtf6biQ%2BxltmNY7a2z9Js3Vu%2FwayvrHh1%2BhhdKv3XubjBhY9wDbHtPpOdXkOH6t1Dd%2FRsl%2F6C%2FwDomV7Fg9Wc%2FF%2Bq3RL6biben5WVjh4lljdxbexltf06La9vvp%2FM%2FwAFZ%2FhEuqn0r6lfXM9WYzpvVoo6wxvcbBcGj9Ltr09LLoj9bxf%2BvU%2Fof5mz9avrJd0%2B2jBwHAZTrcd17iA7bVZa2nY0H%2FCXw9v%2FAAdf%2FWl5zidQZ9ZcY3l3oddwg2z1mHZ6zWfQv3t2%2Bnk0%2FwCn%2FwDRf8xf6Df1DqvXGZ%2Be5tzsi7Gd6lm2kPsqNbqqOG1%2F4Cuxnpt%2FS7%2F9I9ALjR1Gh7f96%2BuJJpA1KZj2WNDmODmnhwMhJaySSSSU%2FwD%2F0vVVn9airFGYSGjEcLXuOkV%2Fzd5J%2FdZU%2FwBX%2Fra0EHM9D7Jf9pE4%2Fpv9YHX2bT6mn9RIKcE9U6lgXnJDv2l0jN%2FS497S39C530sOyxn%2BBc%2F%2Bh5P83%2F2kyfS%2FR5NlPrv16uwczExsPHFozLBRWHz6rriWM9Ouv6Hs9T3vseue6B9buoZF5xBU84BDC%2BtoZYW1PczG%2B02Gxm71Gb2XP2fod7P5mtct167q%2FT87Gdfk%2FbscWHI6V1NrQNGu3O2NZ6fp5FN9dTcrH3epR6f9RKwRYXzhKEuGYo%2FxfSMvM6lZlF%2FVfSobU11Q9MGyqLfa%2BrP9PJsr9Kz09n6bGq%2F7dWN1z9VxC3KfZT0%2B%2BPUyGg5NIaPdU7ezZe7KxPR%2FR5Gyr1sX9Db6%2FwDguZx%2Bv352be4WNwft%2B9tb2n21mza%2F07Xn2%2Fp7qmVep6dbP0vqfolqZD7mY91eDmXh9pBAZDGjT9awvb%2Bkp3W%2Fp2Mdkfpav1b%2BXUb0WulTeP23h5Di3JL3UYWTYzlzbKn1sc5rN7baM3FZ9pw8xrvSvr%2FQf0im6uvH6vY7G6hfS2mx1WFYaq7bnk%2Bo2r0rKPTa7bustxX20%2Bz%2Blf4RW%2FqPXeM403s%2FQ9LpdbQ4v97Wl4DcW1nud6PqfrH2e9nszMavNx%2Fs9%2F2hA6i5r77HZLH24Tn1W4%2BUwj2Pva3Jdj5bfzaHb8n7Fk%2F4P9YxP0tX8wulqaWfb1CzZ6GaM30622WDD%2FSV1mp3sfY6tjWOsY1tf8776a%2FTQ7s27qFNVIrqwAfUsbZRXt9S0N9Ky1tX83%2Bgre%2F1sej%2FAE1lzKltdDtbi9ZJsqqbTaBXdS0TbW68PycUxNj8qrIbR%2FpPU%2FSb6%2FTyv6VWf0qvOrzmsYasnGzHmk7gx1Za6K2XR7sd%2B5v6K79JXi3bPU%2FV8i71RRU5%2FWaLMv6kYj7SGX9L6g%2BqK%2Fosrymeux1cf4B17fYsrpuPmNxftz63Pcwl9DWDQ2sIqZkNJ%2FNZe6luR6f%2FAAX%2FAAS1f2pXX0vq%2BJln7LfkVVta3ZAfl4929myn%2FA76rLq86r%2Bbo%2F4qyhVruoZfSek4ldmM12Pe227D9XQBtvptu3%2B7d6Vr66Xf2PU%2FwiSnsuqnDyLMfFtMZORj%2BrXSPeHFseo2l7g31La%2FV%2Bh%2F2oq%2FwfqfpFznVcd9uDZivaxzDZXa1zztZaXB1LW%2Bv%2Fgb%2FZVXi5tv83%2FRsj9AsLqfXv2j0%2FpXqPFedgNurfa10F3uqsx8lv8Ao3Obvrf%2FAMT6n%2BFQquq59%2FURec1zb7CHXMc8htmw7n47v8BtucPUb6v6P9Ld69iNoS9H6Vk0Zzcpj3tqqeW1AAtuc%2F8Am7Meyhv6WvZ%2FNZX%2FAIEugzuk14eLiN69fbi49u6wgBjyWNb6dP6IOa52V6vt247P0dD%2FAFP0ajjdc6kBeekYQd1DIs2tsZVZbdVXt9tYqsG9%2B3%2FTPZ%2Bl%2FwBCsajpXV%2BtX2Zwo%2Fal7Wuvv9S0Mea2%2FT2%2BvZ7m1e1j6GV76PZ%2FpK0NE7avpH1Z69ndU6Ti4mP6mVZktBdbkP3uqbWTRkjKuYGb9t1e6v2776rP9Iuyw8VuJjtoaS8tkueeXOcdz3%2F2nLyb6vdZv6DjDKwmVt3lzbsZz3VsZcHluTgX499hfRYxuzJwn%2FznsyKrLLv8H2vT%2Fr9hODK%2BsM%2FZuSWkvrtFjC1wLmvr%2FWKqW%2Fm%2BzbZ%2BkRR4vVpKn03q%2FTeq47Mnp%2BQy%2Bt7WvG0%2B4Bw3N9Ss%2FpK%2F%2BuNVxBT%2FAP%2FT9VTOa17SxwDmuBDmnUEHsU6SSnxf6x9CzPqt1ECix7GMeben5Q0caneyylzvouto3MruZ%2Fhav0np%2FpFUryaMjFvrzps6dkPbZmUsHvx7zFber4f7rbLP6Wz%2FAEln%2BivYvY%2Bu9L6f1Xpl2H1GG0OG71SQ01uH0b2Pd9B7P%2FUb%2FwBGvH8vpF3T7%2FQpcH5NIea7az6leXSd2%2BzHjdW70qHbMnE%2FwlSZrE2NuzfjKHMY%2BGfpzR2n%2FL9H95wM%2FByOk5hxsgiyuwb6rm613VH6N1X%2FAKMrW10jqbrmHDyHl8MhjY3G6sHd6PO318dv6eiz07fW9P0v%2BOHiPxc6n9j552Ydh3YmVy7FtP5%2Bvvfiu%2Fw%2F%2FB%2Fpf5zehYv1a6pVk5WLnh%2BJZhML6rmiWvsBY6t1Fn0n1NY77Tvp%2FSf8WnijqNWnOEscjGQ4ZB7Oig0fV7Lf01rr8rqR2tez3XPbBx67XsYzayxjbMl9m38%2F9J%2Bl%2FS%2BpzrvUxMWqvqNVuJksx3402zW5oosbdScig725OHd9qY6v%2Bc2ZOLT6Nn88y3e6X1uyk9NexznYd%2BPdi2Mc1lTxl4ztznWu3bKfWZZXbs9T06f0ypdY6J1Hr%2FVH9Wrtpsx6mMqFDS%2F1WisF30XNa5%2B577bf0eyz%2FRV%2BqnHwW1RotDF6xay49Tviks9OHNBAc9g2sfc1m7Zu2%2FoG%2FQxv3PST9Lw2dTblM%2B1W1sdDixoM2vu3f0936Ot3pOZsurp%2FQ5H%2Bj%2FwaJj4GXf052ZjepRjbmOrywNzNjHulh9Meg5zN%2B1lrn%2F4R9fp%2FpFYxcHD6ey6nItdSGAOtdlFwhlh%2FRuHpN3Ppbv8A5xnqemgFOZ1%2FDyMW77T1DIOQy4vra91bqC00en%2BiYx%2F06Nrqnev%2FAIf%2FAEj1WxaG2sxKOo9Mu6iK32UYeOLHML3vLrNrrmu3%2Blv%2FAPRi1cvpl1PUqW3Nfh5VJ34%2BNmO9XEurHu%2FV7t1jGMsYf0noP9n%2FAANqv9Q6W84w630hn2cuFd1jcYGysjS6qzLxmiu3Fyadv896NX%2Bl%2B2eqhSSBQ1u%2Fwed6z9X%2BrtFJH1dZj1agENsqZuIB9EPsvbkW7Wj6eS%2F6fq%2Bj%2BjWOcbNw8hnqdNxq3tizZYXOa4Ty7fkWbmNd%2FObfof4RdpT1fqHUs1rc%2FLfktyRU2vGa4bSHNePtFL3el6VmLlVejZ7f0m%2F1cj%2BZ%2B0WbvSfqn0%2Fq1eTjdRIdlVspsqcxwBqc8PbfW%2BrX376%2FTtf%2FAKH0bcS6v2WJXqulj4YCXEDZqurxn1dxXdRosuw78hnXcR5dSWu22OrY2bqsdn03ZFTt932Oz2ZWL6lVLPWoXS19Hzup9Pq%2BsfTMYty8kn7ZRXDCy5hdVb1DEre%2F9NU79LvxHbLclj7Kf5rIspXE5mPm9J6q%2FLqa82YrmvfVJHqUsd%2BgyqLatln0a%2F03pP8AWxLmerV%2B5j%2Bz%2FU7qvR%2Bp9Cot6QNlLJbZQ5xdZXb9O1l73S99jnu3%2Bq7%2Be%2FnEmN57qv1X6b9c%2Fq99oxWNx%2BuYxcyx7g9rjc2PXxM5t36x6djmt9H1v02L%2Bi9L%2FCVWcz9VPr51npPWX9H%2Bsxuy8bItFNoyDvtot9tIcN%2F06He316P%2FAEKo%2FwAJ9p9hbXW17ntaA98b3AQXQIbuP5y43%2FGB9Q2dfp%2FaXTWtZ1iloEGGjIY3%2FAPe7%2BayG%2F8AafJ%2F6zb%2Bi%2FSUJT2TK66xtraGAAABoAEAbW8fyVJecfUbqP8AjHPV31dXxMjJ6c%2Fay27LaMd1JaNgsoDxX9o9rf0zaW2%2Br%2FPep%2FpPR0lP%2F9T1VJJJJSDNL%2Fsr9geXGABW1rnakD6F36P%2BsuAwumV%2FWXNrxHvcymqh2S7IqLnRa%2B7Jfj2UPcGtqdvyfVspZ7K%2FQ%2By1%2FoaV6Ffj05FZqvYLKyQS13Eg7m%2F9JKimvHprorEV1NDGDwDRtakkEg2NCNnxDqdGb0Lru3qFDHX41rLTWGxVeyR7626tdVmNa%2F1P3LPWr9i2cmzrpY5tdB6gzpL7Kq7WGXPqqf6D8HIc1gZ9upo%2F7T%2FzmVX%2FADXqr0brOF0%2B4135bWVFgc05kD1WMP06ari17q25P81Z%2B%2FX%2Bi%2BnauTysfqnQeoM6h06l91eW2H4jwf1uhgc70Lq3DdV1XGxm78d7%2FwCfo%2FQXfpK7GIRFX4s2fN7vAeGpRjwk93IyOj5VDnN6U5%2FUMa%2FflYlLGuLm%2BqxnpfadrG1tdk302Ufav%2Bs2en%2FNrQ%2Brd9%2BNlNdfS%2FDuDXMy8e7R1bmjfJ%2FkNhl9Nv59KtOeLbMDO6FktJte%2B%2FCstLh%2Bhcaxm4mY5oc5tLMr08XK3st9H7TRd%2FSqPWW11fA%2Fa%2BOOpdOc6jqeMNllYjcdvudjWt9zfVr3b8d%2F%2Fom%2F1E%2B2F5jpf1u6Dj9RyLKcqu3peaf1rF1aGh%2Bhym0XMr91TfZksr%2Fncb%2FSWY9bFTwftfUOpdQwRZvxsDLOLh2uBexrLH21YzLLAHv9K3ZX%2FwAH%2FOLUw%2BnfU%2F6xVDB6lg4%2FTutEFrLaG%2BgLXD%2FC42zY2x%2F%2Blw7f01f8ur9On%2BroyPqllZfThhMsqBZblWhxFjahFLLWE%2B27HZv3sbsr9H9N63%2FBjW1L9J9PDa%2F6udcx%2FU6Ta7bSH6uxLT7W0Oc0%2Fo6HT6mFl1fzX%2BnV9n1R6v07bbhZv2za4w149K0Vk6enkMeWPu2fzn8xVb%2Fwf0F1GVh4mdSW3MD2vbAfA3AH9xyoYmRZ0o%2FY894%2BztBNGS7QbR%2Ba8n6Oz%2FwH%2FttLyRbyPUcXMqzznY2Nfh9TrbZbkkVyxzQBvzm%2Bm04vr7f0d%2Fo2frX%2BD%2FTV2rc%2BrmH0bqHT8fcW%2Fb2Ned1FrmWsaXOZLfRLH01W%2Bpu9L%2BaXUiCJHBWGegM6d1IdU6WzbJi%2FFbAaWuPvdV%2FV%2FnPTStN6U4%2FWfqPk5jhRj2BorDrMXLOjqnge2m1rNrnV3e1lnpf8b%2FO1Urm%2FqLlZH1a%2BseT03IwLa7s97K8nFrY%2Bx9fp%2Bp6OfjupZ6VvT3%2BrY3I%2F0P6Oyn9F%2BjXrKSCFJJJJKUkkkkp%2F%2F9X1VJJJJSkkkklKQM3Dpzcd2PbuAdBa9hLXscNWWVPb9CxjkdJJTxHVfq4Ol5bc%2Bq55dlvLLq2Dax1lprY7IFbP5i63b77Kf9H%2Bk%2FQrpPq%2FcLMAVlgrupcWXM4duBj9I0y7f%2F1f00vrB0hnVunPo%2BjkMmzFtGjq7QC1tlb9Njvd%2FqxS6dWMj0upH9FfbXsyqwIabGwx30%2Ff%2BifW9n9RHopwvrBh4eF1V%2BXkU%2FqmZQQLSB6deYxwux7HAfpGvs9L%2FB%2F8J6ivWVZ2dj4vV8FgfbkY%2Fo5WO8hosrdr3%2Bi6t7nrefWx8b2h20hzZEwR9Fw%2FlIOLg4%2BI652OCxt7vUfWD7Q4%2FScxv5m%2F89K1IujYj8PpWLjWDa%2BusB7SZIcfc5u6XfnFW31seIe0OEzBE6%2FNSSQUpJJJJSkkkklKSSSSUpJJJJT%2FAP%2FW9VSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2F%2FZ%2F%2B01IlBob3Rvc2hvcCAzLjAAOEJJTQQlAAAAAAAQAAAAAAAAAAAAAAAAAAAAADhCSU0D6gAAAAAYEDw%2FeG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8%2BCjwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgo8cGxpc3QgdmVyc2lvbj0iMS4wIj4KPGRpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNSG9yaXpvbnRhbFJlczwva2V5PgoJPGRpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk%2BCgkJCQk8cmVhbD43MjwvcmVhbD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk%2BCgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk%2BCgkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJPGRpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk%2BCgkJCQk8cmVhbD4xPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk%2BCgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q%2BCgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk%2BCgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5PgoJCQkJPHJlYWw%2BMTwvcmVhbD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuc3ViVGlja2V0LnBhcGVyX2luZm9fdGlja2V0PC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PlBNUFBEUGFwZXJDb2RlTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PlBNUFBEUGFwZXJDb2RlTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc%2BTGV0dGVyPC9zdHJpbmc%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BUE1UaW9nYVBhcGVyTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PlBNVGlvZ2FQYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPm5hLWxldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BMC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw%2BCgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTc2PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk%2BCgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw%2BLTE4PC9yZWFsPgoJCQkJCQk8cmVhbD43NzQ8L3JlYWw%2BCgkJCQkJCTxyZWFsPjU5NDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk%2BCgkJCQkJPHN0cmluZz5uYS1sZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk%2BCgkJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhZ2VSZWN0PC9rZXk%2BCgkJPGRpY3Q%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk%2BCgkJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BMC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw%2BCgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTc2PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BLTE4PC9yZWFsPgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw%2BCgkJCQkJCTxyZWFsPjc3NDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTk0PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLnBwZC5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc%2BVVMgTGV0dGVyPC9zdHJpbmc%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5BUElWZXJzaW9uPC9rZXk%2BCgkJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk%2BCgkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvVGlja2V0PC9zdHJpbmc%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuQVBJVmVyc2lvbjwva2V5PgoJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnR5cGU8L2tleT4KCTxzdHJpbmc%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXRUaWNrZXQ8L3N0cmluZz4KPC9kaWN0Pgo8L3BsaXN0Pgo4QklNA%2BkAAAAAAHgAAwAAAEgASAAAAAAC3gJA%2F%2B7%2F7gMGAlIDZwUoA%2FwAAgAAAEgASAAAAAAC2AIoAAEAAABkAAAAAQADAwMAAAABf%2F8AAQABAAAAAAAAAAAAAAAAaAgAGQGQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4QklNA%2B0AAAAAABAAZAAAAAEAAQBkAAAAAQABOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD%2BAAAA4QklNBA0AAAAAAAQAAAAeOEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgABAAAAAAAAAAE4QklNA%2FUAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA%2FgAAAAAAHAAAP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8D6AAAAAD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FA%2BgAAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwPoAAAAAP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA1UAAAAGAAAAAAAAAAAAAAFFAAABwgAAABAAcwB3AGkAcwBzAF8AYQByAG0AeQBfAGsAbgBpAGYAZQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABwgAAAUUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAUUAAAAAUmdodGxvbmcAAAHCAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAFFAAAAAFJnaHRsb25nAAABwgAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAAAQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hUTUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAAC2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91dHNldGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRzZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAAAAE%2F8AAAAAAAADhCSU0EEQAAAAAAAQEAOEJJTQQUAAAAAAAEAAAAAThCSU0EDAAAAAAWrwAAAAEAAACgAAAAdAAAAeAAANmAAAAWkwAYAAH%2F2P%2FgABBKRklGAAECAABIAEgAAP%2FtAAxBZG9iZV9DTQAC%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgAdACgAwEiAAIRAQMRAf%2FdAAQACv%2FEAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5%2FcRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14%2FNGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x%2F%2FaAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkklKSSSSUs4uDSWiXRoOJKFi3Ovx2Wvbse4e5gMwRo5soypdOyN9mTSRHpWvj4Oc4%2FwDVf9WkpupJJJKUkkkkpSSSSSlJJJJKUkkkkp%2F%2F0PVUklCqxttbbG%2FReA4fApKZpJJJKUo2WNrrdY8w1gLnHyAlVOsWvowXZDZ%2FQOZa8D9xrmm3%2FNr3PUswm%2FpmQGamyl4bHiWuhJTYqsFtTLBw9od94U1Q6FkfaOk4tszuqYfwV9JSll1%2FoOt2sOguDXgeTm7f%2FPmN%2FwCCLUWZ1VhrysbKA%2Bjua7zgtuZ%2F1FqIUXTSQcvKZi47sh7XOY0tBDYJhzms3akfR3blVd13prMtuI%2Bwse%2F6L3Ahm7n0%2FU%2Bi2zafzkFOgq9%2Bdj0ZFOM4k3ZDtrGNEnhzt7v3WbWPU8bJpyavVpduZuc2eNWONb2%2F2XtXOY2VU7rA6hnO9RuJS%2Br1hO1lguGJbuYz2extvv3fzLPU%2FwCESU9QkkkkpSSSSSlJJJJKf%2F%2FR9VWf0iwiu3Ff9LGsewT%2B6D7P%2FAyxy0FmunH6xPDMpgd%2FbZFT%2FwDoOx%2F%2B20Qp0lC02CtxqALwDtB4J8FNJBTVovx%2Bo4jvbLLGlltTuRMssrf%2FANJiz%2BhZDqMO%2FEyCX2dOc6t%2Bkuc1gmt%2B3%2FhaPTeoZ5s6R1IZrBGDlkNvI%2BjXcYYyx%2F7tWV9B%2FwDw%2FwDwlyD1LqWH0jq2N1O55rxOogY1rwC4C9uuP6mzdt9Wl1v6T%2Bb%2FAFdFS%2F1Myq%2F2VThusa%2B2tst2k6sPuY73Brm%2Fo3Vv2fy%2F3F0S4TAzq%2Bm%2FWDquKGnbhWOya62DUUlrcmyulktZ6f2ey19Wz8%2F2Ls2Z%2BFYx1jL6yxgBe%2FcIAI3CXfNIqZX3ursqqrZ6j7TqJgNY2PUsPP0dypfWJ%2Fo9NOT2xrarHTxs3tZkf%2By77VR6v9bejdNsbkb3Zbqm2sfVjgOOhrdZFljqsffXs%2FmvV9V%2F%2BDXHdZ%2BuvU8zA6i%2Bj02Y1zawaZLt2LY21tltb7XOb6j6%2FwDR1V%2FzV36v6rPVYFU%2BiCs5PS7cd43O2WUOB77d1X%2FT27lwvVnNyKK8d15q6hij207o9dg3DHdW9m9zLv8AQ%2F4Wu71K%2FTtr9aqzJ%2BuHV8tmR0zNoyLvsXU8Nr7cdtjmtN1J9K%2B2podsbk1%2Fo%2F8A0YsnG6te%2BnLZbdXXY6pttADNwucwmhv2cWbv0tnr%2FpKnfpKbKf8AtsqD1DvrjnfV70cKlldgzgbqjf7QHB3p2sG0sb6lv0%2FfZ6TEcZg630xz2vezK6jVbfhVtf6biQ%2BxltmNY7a2z9Js3Vu%2FwayvrHh1%2BhhdKv3XubjBhY9wDbHtPpOdXkOH6t1Dd%2FRsl%2F6C%2FwDomV7Fg9Wc%2FF%2Bq3RL6biben5WVjh4lljdxbexltf06La9vvp%2FM%2FwAFZ%2FhEuqn0r6lfXM9WYzpvVoo6wxvcbBcGj9Ltr09LLoj9bxf%2BvU%2Fof5mz9avrJd0%2B2jBwHAZTrcd17iA7bVZa2nY0H%2FCXw9v%2FAAdf%2FWl5zidQZ9ZcY3l3oddwg2z1mHZ6zWfQv3t2%2Bnk0%2FwCn%2FwDRf8xf6Df1DqvXGZ%2Be5tzsi7Gd6lm2kPsqNbqqOG1%2F4Cuxnpt%2FS7%2F9I9ALjR1Gh7f96%2BuJJpA1KZj2WNDmODmnhwMhJaySSSSU%2FwD%2F0vVVn9airFGYSGjEcLXuOkV%2Fzd5J%2FdZU%2FwBX%2Fra0EHM9D7Jf9pE4%2Fpv9YHX2bT6mn9RIKcE9U6lgXnJDv2l0jN%2FS497S39C530sOyxn%2BBc%2F%2Bh5P83%2F2kyfS%2FR5NlPrv16uwczExsPHFozLBRWHz6rriWM9Ouv6Hs9T3vseue6B9buoZF5xBU84BDC%2BtoZYW1PczG%2B02Gxm71Gb2XP2fod7P5mtct167q%2FT87Gdfk%2FbscWHI6V1NrQNGu3O2NZ6fp5FN9dTcrH3epR6f9RKwRYXzhKEuGYo%2FxfSMvM6lZlF%2FVfSobU11Q9MGyqLfa%2BrP9PJsr9Kz09n6bGq%2F7dWN1z9VxC3KfZT0%2B%2BPUyGg5NIaPdU7ezZe7KxPR%2FR5Gyr1sX9Db6%2FwDguZx%2Bv352be4WNwft%2B9tb2n21mza%2F07Xn2%2Fp7qmVep6dbP0vqfolqZD7mY91eDmXh9pBAZDGjT9awvb%2Bkp3W%2Fp2Mdkfpav1b%2BXUb0WulTeP23h5Di3JL3UYWTYzlzbKn1sc5rN7baM3FZ9pw8xrvSvr%2FQf0im6uvH6vY7G6hfS2mx1WFYaq7bnk%2Bo2r0rKPTa7bustxX20%2Bz%2Blf4RW%2FqPXeM403s%2FQ9LpdbQ4v97Wl4DcW1nud6PqfrH2e9nszMavNx%2Fs9%2F2hA6i5r77HZLH24Tn1W4%2BUwj2Pva3Jdj5bfzaHb8n7Fk%2F4P9YxP0tX8wulqaWfb1CzZ6GaM30622WDD%2FSV1mp3sfY6tjWOsY1tf8776a%2FTQ7s27qFNVIrqwAfUsbZRXt9S0N9Ky1tX83%2Bgre%2F1sej%2FAE1lzKltdDtbi9ZJsqqbTaBXdS0TbW68PycUxNj8qrIbR%2FpPU%2FSb6%2FTyv6VWf0qvOrzmsYasnGzHmk7gx1Za6K2XR7sd%2B5v6K79JXi3bPU%2FV8i71RRU5%2FWaLMv6kYj7SGX9L6g%2BqK%2Fosrymeux1cf4B17fYsrpuPmNxftz63Pcwl9DWDQ2sIqZkNJ%2FNZe6luR6f%2FAAX%2FAAS1f2pXX0vq%2BJln7LfkVVta3ZAfl4929myn%2FA76rLq86r%2Bbo%2F4qyhVruoZfSek4ldmM12Pe227D9XQBtvptu3%2B7d6Vr66Xf2PU%2FwiSnsuqnDyLMfFtMZORj%2BrXSPeHFseo2l7g31La%2FV%2Bh%2F2oq%2FwfqfpFznVcd9uDZivaxzDZXa1zztZaXB1LW%2Bv%2Fgb%2FZVXi5tv83%2FRsj9AsLqfXv2j0%2FpXqPFedgNurfa10F3uqsx8lv8Ao3Obvrf%2FAMT6n%2BFQquq59%2FURec1zb7CHXMc8htmw7n47v8BtucPUb6v6P9Ld69iNoS9H6Vk0Zzcpj3tqqeW1AAtuc%2F8Am7Meyhv6WvZ%2FNZX%2FAIEugzuk14eLiN69fbi49u6wgBjyWNb6dP6IOa52V6vt247P0dD%2FAFP0ajjdc6kBeekYQd1DIs2tsZVZbdVXt9tYqsG9%2B3%2FTPZ%2Bl%2FwBCsajpXV%2BtX2Zwo%2Fal7Wuvv9S0Mea2%2FT2%2BvZ7m1e1j6GV76PZ%2FpK0NE7avpH1Z69ndU6Ti4mP6mVZktBdbkP3uqbWTRkjKuYGb9t1e6v2776rP9Iuyw8VuJjtoaS8tkueeXOcdz3%2F2nLyb6vdZv6DjDKwmVt3lzbsZz3VsZcHluTgX499hfRYxuzJwn%2FznsyKrLLv8H2vT%2Fr9hODK%2BsM%2FZuSWkvrtFjC1wLmvr%2FWKqW%2Fm%2BzbZ%2BkRR4vVpKn03q%2FTeq47Mnp%2BQy%2Bt7WvG0%2B4Bw3N9Ss%2FpK%2F%2BuNVxBT%2FAP%2FT9VTOa17SxwDmuBDmnUEHsU6SSnxf6x9CzPqt1ECix7GMeben5Q0caneyylzvouto3MruZ%2Fhav0np%2FpFUryaMjFvrzps6dkPbZmUsHvx7zFber4f7rbLP6Wz%2FAEln%2BivYvY%2Bu9L6f1Xpl2H1GG0OG71SQ01uH0b2Pd9B7P%2FUb%2FwBGvH8vpF3T7%2FQpcH5NIea7az6leXSd2%2BzHjdW70qHbMnE%2FwlSZrE2NuzfjKHMY%2BGfpzR2n%2FL9H95wM%2FByOk5hxsgiyuwb6rm613VH6N1X%2FAKMrW10jqbrmHDyHl8MhjY3G6sHd6PO318dv6eiz07fW9P0v%2BOHiPxc6n9j552Ydh3YmVy7FtP5%2Bvvfiu%2Fw%2F%2FB%2Fpf5zehYv1a6pVk5WLnh%2BJZhML6rmiWvsBY6t1Fn0n1NY77Tvp%2FSf8WnijqNWnOEscjGQ4ZB7Oig0fV7Lf01rr8rqR2tez3XPbBx67XsYzayxjbMl9m38%2F9J%2Bl%2FS%2BpzrvUxMWqvqNVuJksx3402zW5oosbdScig725OHd9qY6v%2Bc2ZOLT6Nn88y3e6X1uyk9NexznYd%2BPdi2Mc1lTxl4ztznWu3bKfWZZXbs9T06f0ypdY6J1Hr%2FVH9Wrtpsx6mMqFDS%2F1WisF30XNa5%2B577bf0eyz%2FRV%2BqnHwW1RotDF6xay49Tviks9OHNBAc9g2sfc1m7Zu2%2FoG%2FQxv3PST9Lw2dTblM%2B1W1sdDixoM2vu3f0936Ot3pOZsurp%2FQ5H%2Bj%2FwaJj4GXf052ZjepRjbmOrywNzNjHulh9Meg5zN%2B1lrn%2F4R9fp%2FpFYxcHD6ey6nItdSGAOtdlFwhlh%2FRuHpN3Ppbv8A5xnqemgFOZ1%2FDyMW77T1DIOQy4vra91bqC00en%2BiYx%2F06Nrqnev%2FAIf%2FAEj1WxaG2sxKOo9Mu6iK32UYeOLHML3vLrNrrmu3%2Blv%2FAPRi1cvpl1PUqW3Nfh5VJ34%2BNmO9XEurHu%2FV7t1jGMsYf0noP9n%2FAANqv9Q6W84w630hn2cuFd1jcYGysjS6qzLxmiu3Fyadv896NX%2Bl%2B2eqhSSBQ1u%2Fwed6z9X%2BrtFJH1dZj1agENsqZuIB9EPsvbkW7Wj6eS%2F6fq%2Bj%2BjWOcbNw8hnqdNxq3tizZYXOa4Ty7fkWbmNd%2FObfof4RdpT1fqHUs1rc%2FLfktyRU2vGa4bSHNePtFL3el6VmLlVejZ7f0m%2F1cj%2BZ%2B0WbvSfqn0%2Fq1eTjdRIdlVspsqcxwBqc8PbfW%2BrX376%2FTtf%2FAKH0bcS6v2WJXqulj4YCXEDZqurxn1dxXdRosuw78hnXcR5dSWu22OrY2bqsdn03ZFTt932Oz2ZWL6lVLPWoXS19Hzup9Pq%2BsfTMYty8kn7ZRXDCy5hdVb1DEre%2F9NU79LvxHbLclj7Kf5rIspXE5mPm9J6q%2FLqa82YrmvfVJHqUsd%2BgyqLatln0a%2F03pP8AWxLmerV%2B5j%2Bz%2FU7qvR%2Bp9Cot6QNlLJbZQ5xdZXb9O1l73S99jnu3%2Bq7%2Be%2FnEmN57qv1X6b9c%2Fq99oxWNx%2BuYxcyx7g9rjc2PXxM5t36x6djmt9H1v02L%2Bi9L%2FCVWcz9VPr51npPWX9H%2Bsxuy8bItFNoyDvtot9tIcN%2F06He316P%2FAEKo%2FwAJ9p9hbXW17ntaA98b3AQXQIbuP5y43%2FGB9Q2dfp%2FaXTWtZ1iloEGGjIY3%2FAPe7%2BayG%2F8AafJ%2F6zb%2Bi%2FSUJT2TK66xtraGAAABoAEAbW8fyVJecfUbqP8AjHPV31dXxMjJ6c%2Fay27LaMd1JaNgsoDxX9o9rf0zaW2%2Br%2FPep%2FpPR0lP%2F9T1VJJJJSDNL%2Fsr9geXGABW1rnakD6F36P%2BsuAwumV%2FWXNrxHvcymqh2S7IqLnRa%2B7Jfj2UPcGtqdvyfVspZ7K%2FQ%2By1%2FoaV6Ffj05FZqvYLKyQS13Eg7m%2F9JKimvHprorEV1NDGDwDRtakkEg2NCNnxDqdGb0Lru3qFDHX41rLTWGxVeyR7626tdVmNa%2F1P3LPWr9i2cmzrpY5tdB6gzpL7Kq7WGXPqqf6D8HIc1gZ9upo%2F7T%2FzmVX%2FADXqr0brOF0%2B4135bWVFgc05kD1WMP06ari17q25P81Z%2B%2FX%2Bi%2BnauTysfqnQeoM6h06l91eW2H4jwf1uhgc70Lq3DdV1XGxm78d7%2FwCfo%2FQXfpK7GIRFX4s2fN7vAeGpRjwk93IyOj5VDnN6U5%2FUMa%2FflYlLGuLm%2BqxnpfadrG1tdk302Ufav%2Bs2en%2FNrQ%2Brd9%2BNlNdfS%2FDuDXMy8e7R1bmjfJ%2FkNhl9Nv59KtOeLbMDO6FktJte%2B%2FCstLh%2Bhcaxm4mY5oc5tLMr08XK3st9H7TRd%2FSqPWW11fA%2Fa%2BOOpdOc6jqeMNllYjcdvudjWt9zfVr3b8d%2F%2Fom%2F1E%2B2F5jpf1u6Dj9RyLKcqu3peaf1rF1aGh%2Bhym0XMr91TfZksr%2Fncb%2FSWY9bFTwftfUOpdQwRZvxsDLOLh2uBexrLH21YzLLAHv9K3ZX%2FwAH%2FOLUw%2BnfU%2F6xVDB6lg4%2FTutEFrLaG%2BgLXD%2FC42zY2x%2F%2Blw7f01f8ur9On%2BroyPqllZfThhMsqBZblWhxFjahFLLWE%2B27HZv3sbsr9H9N63%2FBjW1L9J9PDa%2F6udcx%2FU6Ta7bSH6uxLT7W0Oc0%2Fo6HT6mFl1fzX%2BnV9n1R6v07bbhZv2za4w149K0Vk6enkMeWPu2fzn8xVb%2Fwf0F1GVh4mdSW3MD2vbAfA3AH9xyoYmRZ0o%2FY894%2BztBNGS7QbR%2Ba8n6Oz%2FwH%2FttLyRbyPUcXMqzznY2Nfh9TrbZbkkVyxzQBvzm%2Bm04vr7f0d%2Fo2frX%2BD%2FTV2rc%2BrmH0bqHT8fcW%2Fb2Ned1FrmWsaXOZLfRLH01W%2Bpu9L%2BaXUiCJHBWGegM6d1IdU6WzbJi%2FFbAaWuPvdV%2FV%2FnPTStN6U4%2FWfqPk5jhRj2BorDrMXLOjqnge2m1rNrnV3e1lnpf8b%2FO1Urm%2FqLlZH1a%2BseT03IwLa7s97K8nFrY%2Bx9fp%2Bp6OfjupZ6VvT3%2BrY3I%2F0P6Oyn9F%2BjXrKSCFJJJJKUkkkkp%2F%2F9X1VJJJJSkkkklKQM3Dpzcd2PbuAdBa9hLXscNWWVPb9CxjkdJJTxHVfq4Ol5bc%2Bq55dlvLLq2Dax1lprY7IFbP5i63b77Kf9H%2Bk%2FQrpPq%2FcLMAVlgrupcWXM4duBj9I0y7f%2F1f00vrB0hnVunPo%2BjkMmzFtGjq7QC1tlb9Njvd%2FqxS6dWMj0upH9FfbXsyqwIabGwx30%2Ff%2BifW9n9RHopwvrBh4eF1V%2BXkU%2FqmZQQLSB6deYxwux7HAfpGvs9L%2FB%2F8J6ivWVZ2dj4vV8FgfbkY%2Fo5WO8hosrdr3%2Bi6t7nrefWx8b2h20hzZEwR9Fw%2FlIOLg4%2BI652OCxt7vUfWD7Q4%2FScxv5m%2F89K1IujYj8PpWLjWDa%2BusB7SZIcfc5u6XfnFW31seIe0OEzBE6%2FNSSQUpJJJJSkkkklKSSSSUpJJJJT%2FAP%2FW9VSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2F%2FZADhCSU0EIQAAAAAAVQAAAAEBAAAADwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAAABMAQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAIABDAFMAMgAAAAEAOEJJTQQGAAAAAAAHAAIAAAABAQD%2F4TkjaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSIzLjEuMS0xMTIiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI%2BCiAgICAgICAgIDx4YXBNTTpEb2N1bWVudElEPnV1aWQ6RTcxOTVFNTY1NzMzMTFERDlFNzJGQ0E2QjkwQUZBRjU8L3hhcE1NOkRvY3VtZW50SUQ%2BCiAgICAgICAgIDx4YXBNTTpJbnN0YW5jZUlEPnV1aWQ6RTcxOTVFNTc1NzMzMTFERDlFNzJGQ0E2QjkwQUZBRjU8L3hhcE1NOkluc3RhbmNlSUQ%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU%2BMjAwOC0wNy0xOVQxNDo1Nzo0MS0wNTowMDwveGFwOkNyZWF0ZURhdGU%2BCiAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA4LTA3LTE5VDE0OjU4OjA1LTA1OjAwPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhhcDpNZXRhZGF0YURhdGU%2BMjAwOC0wNy0xOVQxNDo1ODowNS0wNTowMDwveGFwOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhhcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ1MyIE1hY2ludG9zaDwveGFwOkNyZWF0b3JUb29sPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9qcGVnPC9kYzpmb3JtYXQ%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOkhpc3RvcnkvPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj4xMDAwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4xMDAwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8dGlmZjpOYXRpdmVEaWdlc3Q%2BMjU2LDI1NywyNTgsMjU5LDI2MiwyNzQsMjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5LDUyOSw1MzIsMzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7QzA1QTE5MDRGRjAwQUJEQzA1MUJERkFGMDIwNEVBNTE8L3RpZmY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24%2BNDUwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjMyNTwvZXhpZjpQaXhlbFlEaW1lbnNpb24%2BCiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U%2BLTE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6TmF0aXZlRGlnZXN0PjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDtENDYzN0NCOUQ0MUExMEJBN0VGNUVCQ0RCNjMxODMyOTwvZXhpZjpOYXRpdmVEaWdlc3Q%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY%2BCjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8%2B%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQACAYGBgYGCAYGCAwIBwgMDgoICAoOEA0NDg0NEBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEJCAgJCgkLCQkLDgsNCw4RDg4ODhERDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgBRQHCAwEiAAIRAQMRAf%2FdAAQAHf%2FEAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPBUtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4%2FPE1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1%2Bf3OEhYaHiImKi4yNjo%2BCk5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEyobHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp0%2BPzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1%2Bf3OEhYaHiImKi4yNjo%2BDlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq%2Bv%2FaAAwDAQACEQMRAD8A7%2FmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmrlHI2utXn6WltnFESb0RFSp41WjD5q3LCBaslzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Dv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2E2rj0LuzvF7PxftUf8AXPLDnC3XI0ewdpOkTK4P08T%2FAMK2Ec1TLNgaxmE9pFIDy%2BEAn3GxwTgV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV%2F%2F0e%2F5s2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXYUeZpfR0a4kpUAx19h6i74b4X65CbjR76FV5FoJKKe5C1GIVLdDuGhuXs2IKOX4gfsvGdx%2FskKtkiyD6bctHHbXgPImOC4qOpXj6E1ff4Mm4Ndxkpc770BvNmzZFLs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F9Lv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVokKCT0G%2F3ZgaioNQemANZuhaWLyE0LlY1%2BbGn6sWspA8QA%2FZ%2FUcVRWbNmxV2bNmxV2bNmxV2NZQwKnodj9OOzYqwDT4iiPZsa%2FVLm5sj7I%2F76L%2BOTXTpjPZQSt9pkAb5r8JyKXqfUvMOpIQOFxFDfoP8qFvTl%2F4Q5INDkrFPAf8AdUhI%2FwBV%2FiH8cnLeAPcxHMprmzZsgydmzZsVdmzZsVdmzZsVdmzYyWRIo2kkYKiirMdgAMVX5sjTeaGl1CzsbSAOLuX0w7k14KCzyAD%2BUZJBirebNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV%2F9Pv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVo4CXUFa9e0CbJRWkr%2B0RWlMHZEJ5WtPMtzE5%2BGYJKnyK0%2F4kuEC1ZeM2IW0okjFT8S7H%2BuL4FYz52mMWn2tDTlcpX6FbDHR5ecCH%2BZevywl%2FMM8dJtn7LdJ%2BKvgry9ccrOJ69KVw9E9GS5s2bAh2bNmxV2bNmxV2bNmxVi3miFU1LSbxvsStJYzH%2FJnSi%2F8ADYpoEzLcxq1T68FGr%2FvyE8GrgjzdC0mhXEsY%2Fe2pS5i%2F1omDf8RwttJRHdrcDaNbhZVI6endIG%2F4mcnHeJCDzDL82bNkEuzZs2KuzZs2KuzZs2KurkZ843Zhs4bVTQzvVqfyrvg3zHNPb2UMsLtGBPGJSpIqjEqRUb9ch%2BvSSvp0JlcvJCLyMuxJb4JNvi%2F1SuEBVvkaX9L%2BZbm8Sv1fTbf0Y6%2F78lPxH%2FgFzpeRvyPbWcXlyyubWBIXuoxJOUG7uKjk5%2FaOSSoxPNXZs2bArs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F%2FU7%2FmzZsVQ2osyWM7o3FlQkMOxGPtZhPBHKCDyUE08e%2BM1Bedjcr4xPT%2FgThV5cvBJbpGergEfMDcYa2PkqfZs2bArs2bNirs2bNirs2bNirshfnRGtb7T9TX7LcoJD2qDzSv3vk0wl81WDajodzDGKzRj1oR35R%2FFT6RthHNXaVcrKsUtftDi304dZz7yrqPrQCIncdMnsEnqRK%2Fcjf54yVjP5gwtJ5ckcD%2B5mik%2BivH%2FAI3wD5RnEtpwrWgw983RGby1qiqKlYGkA%2F4x%2FvP%2BNchnke5BIUGoPQ%2FPEJHJ6XG3JFbxAOPxOA1iX7sUwIdmzZsVdmzZsVdmzZsVUbqBbq2mtm%2BzMjRn5MKZDLP4rC2UVq9qYj7SWshWn%2BtxOTnIVG4ttWvdNaiiK7FxGDtWG6Ti%2FwDwMuShzRLky%2B1lE9vFMP8AdiK33gYscKtBmDWhtq%2FHbOyMp68SeSH5UOGpyJ5pYde3moWPmW5KzH0pIo2WNt0A3Wv0ts2D73zJ6FgzxqqXpKpHG9eDMx7EYXed45VeC4gPCdYyqua0I5q5VgOv2cAW8sWo2QMqhwwoyHcVyQFhVOLzvrNrdf6fFHLFX4kVeBH%2Br1%2F4bJlp%2Bt2GqWrXFnICyKWeJtnUgV3XOP67qFjaFLHUrprecy%2BlZajxPDmN1jn8Dv8Aa%2By%2BIaXrclrdtZ34NrfR1USofgeo2K06c%2F8AgcBCXr%2FlvXRrdnzk4rcoSJFXYfMbnDzOV%2BTr82eqAOQIpaBq7AV2r%2BOdTriRSEp8z8RoN9I5AWJPV5HYD0yHr%2BGQg3Ntq1lcLazx3CiZviiYOKzQo9Kjb7YzoWqRevpt5AOskEij5lCOmc60%2BWCK0j9ONYo5IYp%2BEahQWBeNjRafEcMVTvTb%2B80fyHZ3FugE9vSORJBUqPVZW%2BEHw3yVaXeC%2FsobulGkX41HQMNmH%2FBZzC%2B1iTTbadZUkjtJjzkQqSKqNm5fsdMPfyr1%2FRdT8vra2E5N5C8kl3bSMTKpkctz%2BL7SP9peOA7fFkIkgkCwOfkz7NlA1y8DF2bNmxV2bEJLy1injtpJVWeavpREjk3Hc8V64virs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F9Xv%2BbNmxVplDqUbcMKH5HIPokjWsstqx%2BK2lZPf4Wpk5yF6nF9R8xswHGO8QSj%2FAFh8D%2Fqrkoc6VmSMHUOOjAEfTjsAaZMXhMRPxRnYf5J6YPyJV2bNmxV2bNmxVQuzOtu729PVUclBFa07U98DafqsF6i9EkI6ePywwyF6vG2i6oJRUWl6xZCP2JOrr%2FsvtLhG6s0yiK4X6Zfi4QI7Vb9lv5h%2FXDHrgV5c8B0LzLc2Q%2BGF29WDw4SfF%2Fwp%2BHOg6ZMHi4j2YfTkZ%2FMGwpFaazGDytm9GYj%2FAH25%2BEn%2FAFX%2FAOJ4N8uXwliicnps305LmFZDewrc2dxbt0lieNvkylc45%2BX10UCQzHjLATE4P%2BQeNc6L55e5i0J57WVonikRmZDSq7jf2yB2Op%2FVYor2%2FwBNjktpAGjv7ZvU%2BInoy8Vao%2Fa44xCQ9as25RVBqKnfBGRby9rBEsljcIY0aQ%2Bg5FCCQD6bj9lslGAikN5s2bArs2bGyOI0aRuiAsfoFcVS%2B%2F1q2sJltyrSytuyp%2ByDsC3zwxBqAfHfI%2Fodmt2z6pcjnJK5dAexPT%2FgRkhxV2c782mSy82WUgNIdUhNs4PTmlXQ%2FwDBDOiZAvzLb6nHpOrlFkjs7lWdG9yvxVG%2FwiuGJ3Up3YTJFr7op%2BC8t1ljHjxodv8AYtkiyHbxx6XfKx%2FcXBilJ3%2BAsVUV8FRlyYA4Z80DkkPmq3EtlHJSpR%2BJPgHBH66ZBtIufqt9Np8pALHnEpO5p1oM6Xq0P1jTriPoePIfNdxnLtZtrGZluBcG3vF%2BFJYuJfx40IIxHJKzzb5et9ZtZYp1LwygcgPtKy%2FZkT%2FKWuRKKCOC6tNH1CblcWiILDUWHH6wg6wyDejx9Fw4sfOMjEBY5biH1HgLy8VYulOfJV%2By38q4ndH9LlL219K4iilHrWzLxlhI6SgE1%2F2SnFKo0Czxy28zMqcSzspIYBPj2I%2F1cd%2FytnVZdNQ2D1I%2BESMoPw%2FzMftdMG20TSQyyblmjenzoc4TY6ld6ddyKwMUsbFZoHqNwd1KnGXRXs9n5%2Fv7lg98GlWhMjwk1A%2Fm4k%2FF7jDSwSPULTTJI3PGBphGNwG4OHVW%2BgnONX%2BsWFpDFPaSSJcTESG3TcRlf2uRK%2Fazq%2BkR3aeT7e%2BjnX6yoW8ibht%2B9i9Tg%2B%2FQ98QVZHqstutowuSPSdSpV91IPVWzif1i98t%2BZ7m40FjbSWUrNCqEmkex4EH7acT9lv2c6lonmbTvMUTWdwgiumWktrLQhge6H9of6uRLzd5ZurDVP8Q2KetYFUW7jXeSKi%2Bm0hH7UZH7X7OCY4g2YM0sMrjvexB5SHcXsnkPz3Y%2BcdPqKQ6lAB9bta%2F8lI69Y2%2F4XJeDXPJlvPe6JqMeq6NMYLuE842To6ntToyuv2k%2Faz0J5E8%2B2HnGyI2t9VgA%2Bt2ZP0epH%2FNEf%2BEyESeUuff3tmbFAx8bB9H8Uf4sZ8%2F6P82TMMLNb1iDRrQ3EpBkkPC3j7s5%2FwCNV%2B0%2BGVc4n5m8yfpnzJcsr%2F6HYsLe232PBv3j0%2Fy3%2BH%2FY5JxkLourX175%2Ftb28maSZrloqsdlQ1Tgo%2FZUDO755%2B8uxlvPcMI6i6LAe2zZ6BwlS7NmzYFdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVf%2FW7%2FmzZsVdkb83W5%2BrW1%2Bg%2BK1kAc%2F5D%2FCf%2BG45JMC6jare2FxaEf3qMo%2BdPh%2F4bCNiqV6VOOcTV%2BGReB37%2FaX9WHoyFaJMz23BqiWE7juCh%2FsyaRsHRXHRgCPpwy52gLs2bNkUuzZs2Kuwu1rS49W06Wzb4XI5Qv8Ayuu6nDHMemKvONE1KWGVrG7rHPCxRgeqsppk7sb0XC8W2lUbjxHiMhnnnTHtLmPXrZfgakd1TsR9iQ%2FP7LYtomq%2FWI0Iakybof4H55LmFZdqNlFqNjcWMwqk6FD8z9k%2FQc515XuZbW4l0%2B5%2BGWFzE6n%2BZTTOlW063EQkXY9GXwPhnO%2FNsS6T5qtbofBHqaniexmi%2B2v%2BsU4v%2FlfFgHcrPTFbanZNb3caywyApLE3Qj3zjutwW%2FljzBc6Pp6fV9JHpsLNSSgR1HIorV3Vvizq2jXQk%2BAndlBA9xnNvzRiWPzJBJWnr2gJP%2FGNyv8AHAdikJ3YGf0o5pZDIboSD1GJJ9aAgh6%2F5aUzoFnN9YtYZ6gmRFY06VI3zlXk%2FVI5bi2hnlBgdBuxFFahhfr0rSNsnHlXU4JI5NJaSt1avIQm%2B8RaquD0I%2BLjkpbgIZJmzZsirsDagC1jcqvUxOB%2FwJwTjXUMrK32WBB%2BWKpfofE6Xb8f5d%2FnhjkMPmvR%2FKlrJBqkxBSVkjC0PIDpTfI15s%2FMNbu3jbR5plsZVp69swRi9N0eSjMnH%2BRcVpm669cWWtXGnatwjgKma2uPsj0x%2FNXw%2FayOfmLr%2BhX3l%2BPTYrkXM%2BpGtm1uPUUceX7yRx8KLtx%2F1s5xoN%2FefpVr6C8muVVfUuLO8kMrEIeTem7faRk5Iy5FdTuZ9B169trGZvqkc5eFD8SmJzzUcTtsrceWHzTT3fRJv0p5UZvtOYYrgCu%2FJV4P%2FwANHnPrj83vM2lX9zpWoBJYInaJ540pOi1%2BGRQDxf4cln5Z3qT2stjWrK0iexEgE60%2F2XLOUfmHYNZeZbhWP94Ayn%2FV%2BD%2FjVclLlbEdQn955q1wTiU3huLadeQCsfSljO9VNev%2FAA0bYHub1Z7V5yWkhHxpcVHJNwGiuP8AKStVk%2FbyGafqLQxyafO5S2lPJWUAmGQ%2F7uiB8f8Ad0X%2B7F%2Fy8Ctd6jpl3Lb3v%2BkQTpxniqTDcQn7LoR%2FwUb%2FALDZCyyekWl9ZyaFLPelZGN2tqDEtZJHenEs67ckpVXwq1bU7G1iKWvqtcCR4bkkhFYx%2FCHXhvvX48C%2BU7H1SbK3k9Wya5hv4HchSBF8FxBL2WeOJ1k%2F4s9P4cu%2F0j%2Fc1FphmFxPLeOhZBxAiL8jt40%2Fa5YegV6PprvLpcE8sfpTNbh3QVoGK12zluoQ2PnZih42fmWIVt5z8Md4q9I5P5J17Z2A8YrWVl%2BERoaDwoNvupnLtb02LzREdR0hBba7bVe4tEPFZwpr6sH%2FABb%2FAJOSkgPNLqGaG7e3v42iuoTwlicUIK9iM755KnGoeT7ZX6m1CH%2FYSNCf%2BFOctnuIfNkSWeqEWuu249OC8ccfW47elcd%2Bf%2BVnQ%2FyyS5t9Dk067jMVzaSXMLK3hRJlp4r9rjkQl5PbalcaRd%2BlI7PbwysI5lNJIirU%2BH%2FmnOueV%2FOUeo%2BnY6hIpuWX9xPtwnU%2Fhz%2FnTOPeY4zY%2BYNTgpVBcSVQ9CrHkP14Gsb9rFgRWSzY1K1%2BKNh%2B0p%2FZcY2Qdlev%2BZ%2FLKxK19pcdYBUzWqdYx1Lwj%2BT%2BaP8AZ%2FZyHW9xe6ZfQ6ppk7QXsBDRTIevsR%2B0p%2FlyY%2BUPNR1KJLK5lD3KrW3m6esg67f79T9pMD%2BZtCjTnqVilIW%2BKeFRshPWVAP2P9%2BJ%2BzkZRB3DPFlljlxRPz5Edx8mcw%2Fm3aXvkzULyUC3122jET2oNA8kh9NZYT%2FJvzb%2BTOZabIhnWkgaOQcwxO577%2F5fjhKIYndoZvgaUD05v5SN1J%2FyG6YI0RZ4tS%2BoyKQS1HTwYHsffALrdOQwM%2BLGOEHfhu6PWvJ6f5FsfrXnqW8K%2FDBEZD4cmAVf1Z2fOSeSLmfT9RrHEWlvDSZaVagNR0%2BztnW8mWsuzZs2BDs2bNirs2bNirs2bNirs2bNirs2bNir%2F9fv%2BbNmxV2Y5so4qw6WL9HeYLiLpFcUnjHQfH9r%2FhuWSbTnBgMXeJiv0H4l%2FA4T%2Ba4fTW01FRvDJ6chA%2FYfpX5MMGaXcBmHxbSrsCdi6%2F2f8RyZ3j7kdU4zZzrTfO2qQa3eaHrkax6haux%2Br9FkgJ%2FdT2790ZP%2BGydWWoWt%2BnK3erAfHGdmX5rkSEovNm2yiQASTQDqcCt5sL5dZ06Ko9YSMNqRAv8Aiu2Iv5i0qJecsrKo%2FwAkk%2FctTho9yo69htbi2e2vApgmHB1cgA1%2BffOYX%2BnXflXUghJezkNbabxH8jH%2BdcPPN82l65b2j213DN9WdmmtefCRkdeJaNSVb1I%2FtYXWM8cVk2javM95pUv9zcPvLB%2FI3LvwwhIT2x12KCBrxjyjRS06jrxG5YD%2BZcrzzpkXmjyhLPpzCSaFVv8ATZozuXjHP4GH%2B%2FE5JkUmju9BujaTsJYHHKC4G6Sxn9r%2FAJqwJH5g1fyjDaw2KrcaE0zSNE27RiQmtuXPSJ6%2FuW%2FYkxI6hUg8ia9qulatHe3s0k8DgxGKZywBk%2By3%2BTkn%2FN63a8ttG1a3rHL%2B9hIB%2BIdGK%2F8ABA5DNbS0tL%2B4ksJOenzETWrjYiOT4gjD9l4WqjL%2FAJOTTU9XtNc8r6dDP8E8rc4iSP71RwkTfcP%2FALsX%2Bflgq09zFvKeoTMwV2NeCsB0BaNqf8a5N9Zu59K83W2pWb%2Bn9cjBo24ZXUNxI%2F1lyCWsL6fNb3LLxid24tSgINA9Puyb67pd%2Fr2kaPc6bxN5b8owWYKAYW%2BGpP8Ak4RyQU8ufOF7JLD9XRLaAj96ZPiYv4A9An%2FDYOfz9oEbtA0kjXSqG%2Brqh5NtU%2BkW4iQL%2Fk5yK%2FiuNagjEcpTU7Rj6YqaSAbtG3%2FFin4om%2Fa%2BxhXcGeWxlDgpPbfvUFaPDKpFXiI%2FYk%2Fk%2FmwFXr0n5hfXBJFpVtxmC84jOa81%2FaKqv7Sfy5GL7zJq2rwXFhqF40AlWiSQfAEPVW%2BH7Sfz%2FwCRkTl1dLW3t7xi8108C3g9EBArCnI8jtVvtNRcR1zzTdJcQvYwRW7y28dwzFfUblIvI05fAo%2F2OGxSt3zSW9LPXITMlCjiuzofsyRt2YfsPkd0iabTtQksp1Zra4U84X6SJ%2Bw4%2FwAoD7Ei5dzqV7LFCt7KZnVAY%2BRqyg9aj%2BX%2BTJdouuaHrltb2PmCNfrkKmO2vKcT%2FkgsP2v5cjtapfo0Jt%2FMllFGHltZvVeK4ptwWNi6yU%2BzIvRlwm1mUarpNtJHEWutOkuIbh0FSbfkGiZ2%2Fb4MxH%2Bpk6uZNM8saddywStNK605tsKnYcF%2FmbOZy3s2nWaLE%2FG4e4%2BsK43HELxowOzK%2FL4lx5fFWb%2FlprP1TWLQMaLMFRh%2FlRtxr%2FwLYn%2BfNjLp%2Bp2WpwghWLxuf2SGoRX%2FAIDI9peo2kMtjfWQMUi3JM9u24j5rT4D%2B1G5qyfyfYzp%2FwCcdimr%2BUra%2FG%2FwpISOoIpXJDcIPN4HDcR3Scl2I6qeoOGNvcQyw%2Fo%2B%2FJWGpNvP1aBz%2B0PGFv8Adkf%2BzXIxSaym2NCOh7MMNYLhLlOS7H9pfA5FU30vUNQ8uaqjIqsaqHiO8UsZ6EeKsrfA%2BS3yUr6p5iudTl2S1RvRTchTKeCgV%2FlTlkOsvUveOn8VkdatauxoyN%2FID%2B0r%2FwAmTfyYHsrnTdPasc1%2FNczXMZArwhT04g3%2FAD05Yjml6Fditlcmu%2FpvX%2FgTnK5bS4sp1mDtFID6kLioPXZgc61NGTBNH4o1PpUjIpNbyX0Ulvcw%2FV9Tst7i2IqHWn99EP2kZf7xF%2F18nMX1pANMR1TTYfMkRuYYlt%2FMEY5EfYW7UftL%2FwAXjDf8u%2FMFzM8mnX6MJLWRFkMh4yiqtGUYU%2FZP82IzW%2FH4DVQG%2FduPtRP1FG%2Flb9lsG6ZJDJfPcvGI9WCoJZwPhmRGHF2X%2Ffi4AP2peafmBE8Hmq8LgATCOVaeBUL%2BtcjauUPip6qe%2BdJ82x293Pb2GtyL9ZmWRoL5QAUZZGQK47p9nOd39hdaZctaXScXXdSN1YHoynupwFCL0zUX0y4SVGf6uWDqybPG46On%2BWv%2FAA652nRtY%2FTdqJbfjLdqnK4gjpSVen1iBf5G%2FwB3Rf7qfOCxycaqwqjfaH8ck%2Fk%2B61K11AC1kZYIT6gmB%2Bxy2oP%2BMi%2FC6f7LEGlZCbBr%2B%2Bu%2FqqpBCjP6cbtxHwn4ljrX%2FgckOj2EMcC6lK6yTRKYmkIoYl6gE9xT7L5HhcTJqM1jJCEjjQSQsK7qT3rgi%2FuJ7PTDKQ31S5f03ZPi3SrfGP5RiKG6bej%2BQPzB0CG%2BuNHvB9VeZx9WvZKBX7cCf2P8jOvghgGU1B3BHfPHaQrfuEt3DHkAJakKhP8AO37A%2BedX8i%2BYPOen6dNp2qK5t4JFjs5HClyoNJfTdieUaL8S%2FwDCZEcRNEc%2BrfOOKWMTgeGUaEoHfi%2FpRP8Aunt2Ab3UorWqAc5QK8egHzOPhuoTYrdesJYgnJptgDTqdu%2FtkT1C9XnLPIwofjLduJ6fhkgLcYsi0vVRfSSRSUWRd1UeGGgyN%2BVrCSkmrXKlXnHC3RtuMXXlT%2BaTJKMTV7JdmzZsCuzZs2KuzZs2KuzZs2Kv%2F9Dv%2BbNmxV2bNmxVB6rafXtOuLXvIh4HwYbr%2BORbRL%2BsMTMaSQsOSnrseLZNDnIdfXXtP8zXtnZGC2tJWEsUz8pH4yAE8Y14rs3JfibJRPMKyf8AMXye3mKyh1LTH%2Bra1px9S0ulFSV6mNwPtRnIb5e8wXlw%2FwCj9VR9N1u12PGoD9vUgfpJG%2F7UedN8uapcXsH1e7C%2BrAi%2FvV6OPs1K%2FsttgLzP5Ysr%2B3NzHFxmjPMlNj%2FrLTdWHtiNtlU9I82sxa11lAssf2bmMfA9PFf2G%2F4XIt501y81SykEEjRQRMGEaMV5L0%2BKn2sq4ke3j9O4asuyLNSnMduX%2BV%2FxLCfVZ%2FS0u8cDkVhYhfGgxodGQDDZPMculusTzpwryMT7mneh%2B0uTVNL1e%2Bsob1tLmmtJlEkbFW5FGFR8NfUzi2iQ%2FXNXtLjUAXWe6hE3L%2BQyKHG%2FbjnqzzP5ok0H0baxgWVyodi5IRU6KBx74ASrzOzsfL1tcH69ppMtdxM0h4%2F883OS2GLS7239K1pGpGwj%2BEr%2FALHphVcecBcyrc6vBFdabL%2B7lV0UPbt12KDnx%2FlYYGvrWKwP1nTp3kirsT0BpWgcdf8AZDJg%2FFjSanSb8xC2ursXtpG5kt7dkVRGaU4g%2FETy%2FwBbIzc60xSeylsgphDJeafNtIY%2BnqREfCygYcWPmV14x3qkqQDzAo4X%2BYr%2B0ME6h%2BidZZImjM90FLQzQj40BFNn2%2B1X7DYkd2yi%2BrHNIh8uXbLp7yLJdToZbZJDX1EU0NOXxCeL9tf%2BJ4PhbTLya58sXqqt3EoKlV9MSoRUMn8ssf7XH%2FXyD%2BcfKFzoWnRatFqUUU%2BnSGSGAsBcFXZaFeHJVZDu2HOn3See9Kt1%2BsCx8x2y%2BpaXabB2TxH8pP21%2FZwAnu3VQuV1CC2iW9cx%2FwCkS28kMtA5dKLHL1%2B00TJyZPhk%2B1nS%2FKN59Z0GSNno6yI6e1V4v%2Fwy5z9pv8YWj6Hrcf6P836EWmiiHSfiv2ox%2B2kwH7P2ftLk28uxrbeXYLhYXV7gMzxkE0IqPiqNq%2Fy4gb%2BSk7PNdX1m%2BHmqaytJ%2FTtTdx%2FBGoSu6swZqcj8YbCnRmM97drKxKXcslu7tXb1%2BSBq%2FwCSzZK9c06xuNUutStkBls5IFkAIAMoHqUUfzNRkbCPW5Xs70rZcVtL0%2BtCoAFVc1oK%2FwArni2RIShdD0rU9Z0g2UNW1DR5JLG%2BirRlQuXhmp1ZP72M%2FwCph75g0K2sra21G8ch5baGJUpt6yARuvL6OWEQk1eJrq9s55YLxBzuGhJEjr3LKvxSqv7WISanq2oQRXGryvd2MtVhuSQ8aNQch8OyNjsqElhK1hbcr%2Fcv3K%2FyV%2FycRSQBmUiifsfQM6FpfljSbrR0mCy3EjDlDIzN9sGnphU%2FZ%2FlbIrqnl%2F6jM3Cb1VRqOoU8078XoOHPISIiQCd5ckgE3tyS4StK6xSy%2FDJ%2B7HqseO%2FYVw0W2thatp10he2b7YH21cfZljP86f8AD%2FYxO4tbO4so4I7ZUvG5Lpl3PssprUws392JD%2Fut%2FwCbAOh6sLuU6VqYMF4hKRu2x5DrFID0YY7rsh4tMn06%2FkspjzjniaS1nQfDIE%2BJWXwdafEv7Od0ugnmL8tmYipWEOB1oGWp%2FwCH5Zy4hoT9WuU5BTzj7FHp%2FeIe3%2BX%2FADrnR%2FysvRfaHeaJIwZ4RJGo8QDzQ%2F8AAy5OPVBfPNxbpMpifYqaBu4IwFYWlx9fEIJU7lmH7S%2F83ZJ9e0x7K9unRg8azMkoHWJySVR%2F9YH4W%2Bzj%2FKtvFdaxBDLQKzAVO243G%2F8ArYPJUXb2NvDZtdyWxe3B4meCQ%2BtG37Jkjb9lafaXHRXl9q2r6etnWJ7Yxx28h%2B1UNyMjt%2FlH4myX6lp1poPm57CIFLG8jikCsKisqqXWncc2%2BzhLZW0Om35hCuLiCeSgIHFY67KT9rl4YaV63IwMVSakg1pt27eGRuzvrTWILdYbnlcIWXSdQc8W5pXlp91%2FLIP91M%2F94mG9tcfW3AQ14xgsPH4c4Zp%2Btz6HqN2rJ61nNIy3loTTkA54yIf91zR%2FailyRNUinpV0iXqyyxw%2BjdW5Md%2FaN1iPdqf74f8A5Jtka1ZZ4LWYxsySKpaCRT8QI%2BIxkj2Hw5KLe6%2FTsUF%2Fp1wsmrRRk2l0QAL6Fft290g%2Fu7uP7Lo395hFquqaL9XZmmWCRwySWTgs8MgG6Oo%2FY5fZbAUhC%2BZ9JsfMl1SKYW%2BqyQRT2DMf3UvJeTwt4M5%2BJchKyrOr6D5gQwTQEpFK%2FwDeQv8Ayn%2BZDk%2B1Gyj1ew0SaC4gS5ntmCtX0ELQtQAM%2FEcv5Fwv1bQxr%2Bnhr4oms2ymP6xuCStSIbof6v8AdzYOaGAQ%2BXdTm1NdLjj5SN8QkG6FOvqBu%2BTjTrS2sbZLCMcVUmkpFGLn7Rf%2FAFv%2BFxTTme102DTuILIwZpKksW%2BzxWtW41%2FZyU2XlW41HhcahytOQJZVHKaXw%2Fd%2F7rY%2FzviAqQ21ldXtytrDG0k524qKmnj8sO736roNmNIltfVv7hFeaMnkUqTwpxNA2S2MaT5etS9w6WdtEvx1b42A7Symh%2F2C5zTzb%2BZun3swOjacGVKwrqMgoajeiJSr%2FOTDVdVZPYa3pOj%2BW7u31uKKzuZGP1dePP1Iz1UovxtJ%2FlYU%2Fl%2F5hOtyS%2BWrlis1Gm0pyfiR4%2Fi9Kv7SumcrvNYnu5DcXH7yToamrfSf6YL8ratLZ%2BZtJvoT6bwXMbEjuCwVh8uJauPFuFe%2Bx%2BYJ4NMawQiOFzyZOlDX4h%2FwQyQeVtAn1BY9R1QN9WU1toG%2Fa3qGYeGE3lnRLPVfM19LdAyWkTtcW8a7xOGaq1kGz7k%2FAM6moAACigA2AxJ7lojn72wANgKAbDLzZsirs2bNirs2bNirs2bNirs2bNir%2F9Hv%2BbNmxV2bNmxV2Qzz3p3P6rqKbFKwyt%2Fkn4lJPseWTPOVfnX5gmstNtdBtnMbajykuXHX0YyPh%2F2b%2FwDEcbrfm24MRzZI447GR59w6pMfNyWl7EdD1KM3Cp6dwoKldj%2B1zHE%2FRko0rz1rUtz9SvLe2lm2Hp8jC7BhWqV5xvUb%2FDnn01jPEin8pHgckemXmsTaHcxANw05o57O7IIKxliJYll%2FaRT%2B84%2FsNkIZhIkSjRDl6zs%2FwIjJCXFHkb5gp3%2Ba2r%2BbdPuEvYLVbLRpiFL27c2EvWkj0%2Fd8v2VpkGsfN2p3Kra3V2XicgEsQeQJ3qSNs7d%2BkdO1rSbKw1LhN%2BlbRXVJKFZyq8ZV3%2F3YGHLOEecvKFx5TvTLDym0idv3EvdG%2FwB9yf5a%2Fst%2B3lpHUOvsua4iNwbWCruHK%2FB0qN9j0zoy%2BarW48r2Oq3l1Le2sSizuGkqk6zgUVXMda8F%2FwCDTOO2M01rIs0XCRQ4kHqCqGnZl74NgkTlMqSOIZpPVNrXjGG8Qvfj2wXzSyqz1eO%2FtNSjQM8sVubhFbbkIpPiI%2BUR5Yca3q17IdPmtZ2js7yztriONNhyAKSciPtMJUfIZaXDWL%2Bra0jcq0ZYAV4yAq6mv8ynJf5Yex1PRjpUsfO%2F0pnuLJWNPUgkNZ4l%2Fm9Nh6vH%2BVpMRa2uvBcXej2Gp2rSC5tJJbOZkqW4v%2B%2FgY%2Bx%2FeJhtBB5sOi313boLa9ihMlo3EB5ClGkULy%2B16XJk4rhlZarBFAbZljtrS5Tg%2FoIF4fyOT1JjbC1L%2BbSbowyMwu4WrzJryX9h1PQpxw%2FFWFXNut9PB6srS6frlqI4JZHJ%2Br30bCsbOf5phx3%2FAN1T%2FwCRgPQbtreVrEFrW8gfnDU0dJUPF09unHD%2FAFeygjjvbi2haTQbpxcXlpHvLp9x9n6xClfjtjXi1P2P3b%2FGseE99ol9qtyjIKamYlktb6Mn0L5QKJ8Zp6d3x%2BH4vt8OD%2FvciTXPZaZ%2Bkdp5%2Bgt19Yad5p0%2Fe0vU2Y8T0NPiaM%2FtJ%2FuvOj6lcGysFaRlYxJWUjfkUXk3z5MM5p%2BV2l3U2pPdalFHK1sOLyqQxSZaFOdDWOT7W%2F7eTTzK8UdlcxREhXBTf%2BdzWg%2B7JxNji70HnTz%2B51GXyrrFxaapD69nfcRqSftqxHL1oj%2FOjPjtQ0GNYCfrCXWi3QMtlelhyjkYbFfdvsyx4M87Wy6zqemTq4X9KwQnmegkK%2Bmf%2BSi5G9M1PVfLUt3od3CJIGDEQS7iKUD4Zov8%2FjyErqrruPNkK58%2FJN7Sx0%2B0sDe3k0k9xA6JBJACGqwPHiKp8S8fts2F0mrDS3nubPThH6ZLa5YcQsnBvs3kSsCnJeXJuK%2FB%2FwAYmwQ%2FrXdjEsQRizhvjKCrUp8If4uW%2FwCyuK3Fs893p1nezfVdeDCOxmHFi8ZH%2B89wSeBjP2YuX%2BVFiYggA70Pmt9QzfyjdxXeiPeaY3rNYt9ZjdKUkgP2gyj7L8ftL%2FPgTz2tuLdJIT6cN1JFcxzJ2U7Sb%2Fs%2Fa5BsKfLEMvlPXby2sJI40uF%2F0izVuUcb05n0z3gkTlw%2F3237vHeddXN5pEMdnbmOys4BFcy0qDcF6GJa%2FwDFacmyX8Pu2R1QOi6Yupabd2F78dj6xjLVFUlpySaHwkUf7F0%2BDIrrvl6dr42N0eOtRIHs7ldkv4B9ijf8tKgfB%2FP%2FAHX28mPluyb0Vs7OdTL6SSReoK8%2FTZqN%2FrqOPL%2FJwTqdhFr9m1lqUhjnhcm2uv8AdltN%2FMKf7pb9tP8AZrjVhWHaHrEWqxjTb9gt9GKQytsXptxNf2sl35d3J0jznJbCojuQlR26cT%2Btc55qthdyXcyyJ9X8wWfx3ESbC6UbrcwfzS8fjfj%2FAHyfvPt88N%2FKuq3F3q1hqBIEyc4pWZuCkoAwck9MA50VPJV%2FMq2k0TznfCJQUmPJom%2BzJG%2FxcW9t%2FwDY4Q6cILa6ZY2eKRwslv6goaDfjy%2FaK4f%2FAJleadM80a8t1pcZ9GCJYmuG2MrD7TAfsqv2V%2Fmwr0WyuNXUw%2FVxci1%2BKLt%2Fw23wrg6qGVanr1vrK2t3csIry1aESBjxJEYYOQff4cjvm3zLbpZXLWTGC5vr%2FwCswRjfjBGoC8yfi%2BIjCPX2vNMu%2FqZDRNGKSAgUqxqgqKruF%2BH4sjsyPPIZZSXJ7knfG1e9%2Flxrdt5ksbqdSFu7eMLcW5O4%2BE0cV6xvnF75uVzcb14yyBW7%2FaO2KeS9RutC8yWd7DMYLfn6d3L%2Bx6D7SLJ7YhdkNd3UkRDRSXErxMDUFGclT9IwndCtpWrz6ZN8MskcDsGdojxkjcfZmip%2B2v8AL%2B3iWoySfXbiHUmFy14frKXqH4nL14zK%2FVuX7cbYEeJWDPQVpU0Pj0x6yqLL0pJUW4tXE1o5O9SaSRbeP28Cob1Z1T6vPKzxjeNSSQK9aV%2BznXLfUrdtDt9T1U%2BjeRxpa3iMvF5V41jcg%2Ftrx%2BLOd6VbaTqJlS7lMl5Iri3hHwRiQj920snhzODppWsii6zcGeSZg3po3NSy%2FD%2Fen4K9V542r0LyheaXcm5uaCCWNhxkl%2FvClOqcvs4rrn5g2enI9tpKi4uqlWck0rSvxP8Atf7HITazpccriNaLGD%2FozGnBVIJkZP261%2BFuWE4juLqSZo2pbJMjyitAQeVPwrjxbUE01reuXGvCKPUZJ2Cs0iqgUgFtunw%2FCKfDhWLXSzayW73jxuGElWgJUbUoSDhkLcXEjJDSJqkoSd%2BH7OGlh5a1HzDONIit%2FWvZEMkJRlQtGlKsCxVX4%2Fy%2FawWtILTLTTmeMmbTrm1jXe0nmMLOwH2nZlrWv%2BVhlBb6Lql09zpemrbx2cJe5WNqiRi3EKrfyj%2BZR8WJ6x%2BVPnXQrK41i9sljsrUB5pBLGzAVCgiNWLNufs4I8h6hp738sNxRBexei5BoBJWscg%2F2Xw4VZjoMllFbx635Y52k9mvPUdKaRjHIF%2B08PInhJQV6%2Fa%2BHOq6d5%2F0G7toZzK%2FBwKzBCVrTo3GpQ%2F62cYW21DQ%2FMUVrFH%2B5vyInPSIqzfE1f2afawkmtp42klt0f6uzuInWoDqrFQRQjkMJV9Q2ms6VfitpeRS%2BwYV%2FwCBNDg2ozzr5Y1vTI7V9L1PnbTDk8E4Qs7M1KKHBDp9GTfQfOdosSxw6txkp8UN0DxBG37WNea09UzZBNY%2FM3SfLcVrLrDIyXZKwm2bmW40DsF3%2BFa%2FF8eTW1uoby2iu7ducMyCSNh3VhUYEK2bNXNirs2bNirs2bNir%2F%2FS7%2FmzZsVdmzZsVdnE%2FwA9rKYXmj6jT9w0ctuT4OpEgB%2F1lOdsyO%2Bd%2FLUfmvy%2FcaXstxtNZyHosybofk32G%2F1sB5ORpMoxZ4TPIGj7pbPl%2BNPrERi%2FaG6H38MkPlXzh%2BjhHo%2BrmunCqwXFKmDmfiSRf27d%2FwBv9pMJBDcWN7JaXcRhuYHKTRPsVdT0P%2FNWB9RiWO6ag%2FdygSL7cuv3HKpkwImPcXoM2KGaHhy3B3BHf3h6B5qslXQooNOVof0a7Xdi6fDxBPKQQ78vT35xNl6Fr1l5s0yXSNZRHujHxlRhtMv%2B%2FE8JB9r%2FAIfILo2pT6XfLd8mmiKehPAzE8oT%2ByvKtOPWP%2BXKvrafSpl1XT2L6ez84LqLrE1a8WH7PH7NDlkMoluPiHRarRz05F%2BqJ5SHf1CT%2BZ%2FLlz5WvvTUmXT5jW2nP%2FEH%2FwCLB%2Fw2FauD8Sn6c67a3Vh5x0p7G%2BRfrAWskY6EHpLFXp%2FxpnLdc0S88t3ptrir27msE3ZlH6nX9pcmR1HJxFS3uA4oftDBlvcz2lxHc2sjQzxMGjlTYgjCVG6Mh%2BWD4ZRIvv3GC1Z7pdxHraNJCViukq13aswVAO9xCW%2F3Uf8Adkf%2B6%2F8AVw1t5NPkKabe3SyqKG2uIquYDX7Jc7ei37a%2FZ%2Fazm9tdT2dxHdWzcJYzyQ9R4UI7qw%2BFhkwhvDqECTaZbExyHhPbqKmCYivBf%2BKZPtR%2F8DgIkSDxVHqK%2FSyBFbjfvR8k1xY6gVtLb6vJbVWZbhvVLo38yAemYZF%2F4XCjW0McX986%2BX72Uem6V56bekVAYLu0D%2F8AJSL%2FAItjw7W0utVgj0%2B7k9DULc%2BnaSMaFkrvaz%2F8yXP%2Bpgq00iztbkaVcP8AWBer6NzEworLWjRsoJ4yRv8AEjr9jGOMDbn5y3UyJ8vcyfyHpl1puhy31zEE1e9cJfKxXjK8JMaTqfGZCrt%2FN9rCX8wda%2BqyabAGAM85aYA9FUcV%2FwCGyZXElvb20VgHb1LeNDEKmpKDhGS%2FfOK%2BcrhtU1G8vLZ%2BYsz6M0Q%2B0nBh6cwH%2B%2B5af7F8slsAAxG5tkesTm68saddo3GbTZ5bb1B1G%2FrRfrxGTW7LzPpcrahALfzDpir9biI4tJESAZowftJ8Svx%2FY%2F1cD6VMb3RNTsShJmhju4gVP2ovtH%2FgG%2BLBVnb6b5g0ux1JGWDXNDj4SEiongQcGjk%2F34hX7LfsYBukt%2BWba4gWHWmj%2BsWdpK0Dwqy%2BoWkonJE%2FvHZOfNcKdasnk80288TN6EEqxOXNWSOJiS7n2p8eB4bySw1ilv8Au4OQk47kKo%2BLv%2FLX7WK6jr4u9Uee1jItndiIiasyv9sV%2Fl3wWAFZBbvYajqsV%2FDSP1yITPUgSKH9SSinYcIRw%2BH7TSJhr%2BYOr2sOkWmnhHSK6YiRolFF5A%2Bn6ngJif8AWyP2ML6dbiRI%2FrqsAI3SRAsMY%2BxHKrlGhfl%2FefB%2B8%2F3XgXXYppJG1m2unkbj6Op2pUSKVAqksSNsif5L%2FFH9vHoUlrytdtDCgdmV7d5I2boU%2BINGT%2FLhpr3nLTKJ9UT19TB4zNHtCe3Jj3b2XIssp1Y8bUfFOQsix7SCSlAXpTmj4av5OnsdM%2BuzB3Zm9OWaNGD2%2FMgRTolP3sXP4Zv92fyYi6oITDVrG28x6NBeBvqWoWS1ivSeIikU8jFI%2BzLA6%2FGn%2B%2B3yFaq1pcXix28ZUGi3U2wadx%2FuziAEWv8Aq%2FH9vDLV7TzXeWrqbaWO4VhHeNHtFdCP7EhX5D4v9%2BfbwpC3liGgvIoVdSqt6pLPGr0pTj%2Bz8Xw4CUkEGil7RwRu9ZzwjPx8UZiKePShyb%2BRfMdhHM2kLEV%2BsDlDLQFncUCxcRX7WEF1DCs63zCs6r6c1Nkencr7rgXSpFsb5zCForepC9PiUEfZr4DADRVD%2BddUkPmPU4lUgVNtNG4qDw2Bof2kP2GyK1LECpY%2BAqTnUFhsta1Ce%2B1G3inuZCrySsgqwqFNRkwu9R8m%2BWIwscEHrharDBGjSH5tT4f9kcIoop4da6Vqt2GW0tbiQHbikbkH57UwHNFLbSvb3CNFLExSSJxxKsuzKwPQjOu3%2Fmq%2B1mFo1C2NmFMjhTQLGu%2FKRtumQfU%2FMWh3uoTXx0r1pJePKSWSnJlVU5lQNufHnhQxmOYxklSPiFCDvUZQKUIpUn7Jr0%2B7D8eYrBP7nRbUf61W%2FhmPmtkBFvptnEezCMkj78CpRZOY5w%2FBmWhBCjseuSyyn0pIpIr2CSr2gtbYTQt6aylufPp8PBWbCZPNurROskYgVkYOv7tSAVNRtg2780%2BYPNd5CdWuRJHEWkWONFjRaih%2BFAPljsqLeRrVh%2BjQt3GBRoXBBKAfFwag%2BLJ15B17yfealE2taTHcXMG63Eq%2FvbYL%2FvyH%2B6eFK%2F3iJyT9vAXkPygPNEuoxx3KQ3VrAHtYWP8AeOxpv%2FxWqijMv2WZMLdS8vBLx4pg9jqVqTFJIvwup6fvP5lP%2FDLillv5i%2BStPtL867pEEcem6hxkivLWjIk%2FevHb05ftZF9Okd5Et5mayvoWEtrdRmnCUfYmhYfzftp%2B3k3%2FAC68zLfx%2FwCFdWt1eElrbUoW%2BwGIrDPGv7CyU%2BLj%2B18eIeavKM3lq7WqfWNOkYizuXFeNesE9P8AiX7WNbqCncfm2fzRoUmg6zEqa7ZPDPPCv93eQRMC00A%2Fa%2FZaWLCHzf8Al7oOra5b6h5KuBHe3rj61Ywr%2B5Xlu0%2FL%2FdDfzx%2F8Qwpup4VWBrORhfW7iS0YkrJbkdRLKv2om%2FY4fbzsvkXU7fWNHju3jhj1ZAI9UEKhSJvEmg%2BF1%2BPEhXgPm%2B98y%2BWriTyxrM0iCMBo5VVW9aDoJIZm%2BLif5ftRthN5X8zxWXm%2FTZ9dHq6HH%2Foz2z1eNLd1Kq4TvwY%2Bo2el%2FPXkjTPPGkNY3n7q7hq9jeqPjikp%2FwANE%2F8AuxM8mazo%2Bq%2BV9UuNI1KL07y2PFlbdWU%2FZljP7UTfstih9Jy6d%2BVV3f2dja3ltHe6ipezS2mrzAFfh%2B2iMf2K%2FE2Xcfk5ojoTZ311bz1JEjFXG%2FitE%2F4lnlh3USLKCY7lSGLQ7UI3DA9mz0L%2BVP5wLqxi8s%2BaZRHqIpHZX0hAE9NljlPaf%2FK%2F3Z%2FrYqqal%2BS%2BoXb2EYvraWG3kcyvLG3IRuwY%2BkgPFW2PfJjZ%2BRruwuFa21iRYFACKFKsKf6r%2Bmf%2BReTUDxy6Yqo20LQQpE8rzso3lkpyb58QBi2bNirs2bNirs2bNir%2FAP%2FT7%2FmzZsVdmzZsVdlEA9cvNirzb8zvIf6bhOu6REP0tbL%2B%2BjUb3EQ%2FZ%2F4yp%2Bx%2FP9jOHagvqWsMw%2B1ETGwPWh33z1znI%2FzL8hqEutf0qP4JRzvrdR9lwR%2FpCDw%2F37%2FweRnGxTtNBreExw5DsD6Sen9F4gpphto2prYSSQ3Ketp11RbyAiu3QSoP50%2F4ZcK5YzG5Q7eGPEUyRpMykRSEhH7MV2IzGAkDY5h3OSEMkDjyCxL8beaZaglxoOpxTW7qLSWkmn3cX2eJ34nx%2FwApclMsen%2BcdIeC4QCZQPXjH2kanwyxe2RjT7%2B2e0bRtVHLT5SWhl%2Fat5Ozr%2FxWx%2B2uJWtxe6HqSw8wtxDvBL%2BxLGegP8yOMyceQEbcuo7nnNVpZ4JmMtwd4y%2FnD9bENU0y80C%2BazuRyTrHIPsunZh%2FTKil4kSIaj%2BGdZ1HTtM846SXUenKv2gN3glp1%2FykP%2FD5yO9s7vRb2SxvU4sh3I6MOzp7NkyOo5OKmSuGUMvQ9MMdF1m40S%2FjvoAHUfDPA32ZIz9pGH%2FDIf2Gwjt5Qh3%2Bw3%2BdcFnrir0GW5Kyx6hav6ltfqDHddW5Dbi1do5V%2Bw6%2FzZLPLbQ6nP8AWrpAby3oJGI2kXqkrfyyqR9rOU6HrKWHq2N8Gl0y6p66Lu0bjZZ4v%2BLF%2FaX%2FAHYmda8p2i2tk8sjrI7miTITxkj%2B1HJQ7huJ%2BLJR3K3snuq3fo2ruoqQC3idvsgD%2FWpnMJ%2FJ%2Fme4Msq2jC9tuUaXcXER3drJ1japH72NW%2BFmX%2Fit%2FwB5nTdIksyzW0c%2FryxVZgzBmCsa4eCZAKHDIWgbPDvK9jquh6xaW%2BtW81rDL6lozTKaFJQVAB%2BKtfhwvs47myvL%2BNQfTs2kD9UK8gQKlv2Xp8StnR%2FzQ1GW08u%2BlZO0d3dTxxQshKsKHm7hh9jiq%2Fazi6MxEiI5YOa3NyxJMjVrux%2BIrlctmQ3TS91E3jCG2jHI09R1qOdOgFf91r%2Fw2CLKFYxyJBIFZJOwHgMC2NryG3wRnq56t%2FZhusZiihu7cMWt5ir2zpyikUAU9T%2BYcuWR5pdPqiacQrWqXCzR1USVBAb%2FAHYp%2FnwutdVhtdTa%2FgWVBOAk8BcNG9BTqyk4c6rc2dxe2F3c2kcKJGI7qx4kUjpyR0B6Vr%2FNhBqc9haSxpHERaXRaWIt%2FuvcoTRa75PlyQn%2FAJZvYI%2FMUS2SNELiVTEygUjnVW9OlftI8hVWVsnSXVxfTGS6laSViCS2wodjsNs5%2Fo8rrL69qwd6pIrqAw%2Fd%2FYPw9OmSua51GVJ762swQXLCD1AiryNQrMfi2%2FyVwxKkIjW7%2BezjR7PTpr%2BUbv6WyUH8zfa6duOEPnjT7SEWmrxxkSXatazowA5KY%2BScgD9qIrxwQ3mPX7EetqFhAtqPtegzySAewA45F%2FMHm1dcRIGjMdvC%2FqRIKcuVCvJ2%2BR%2BzglLY2yhjnLaESfcEquburW8M5HpzKvIr1FaDl79cRbRr6S8%2Br245GCoac%2FCjKp67%2FwAww%2F8AL3li01qBLgPJO8f7t4wP7s%2FsE9fhOHer%2BVtfgg%2BvabcJe1FJrPjwZVUU%2Fdy%2FR9llyIFixuEzjKEjCYojmGM6jaajZ28RjBiEisJzULTi3iSKR0wboHkTXdWt21OLT5ru2A5RlN1k8SrsVWT%2FAGD5ena1aXA%2Bo6pD%2B9J2WcenL%2FlBJR8D%2FwCrnSfy880W%2Flyzl0m7uJZtJR%2BVmXSsltyNXhYD7cP7ScfiT%2BXDXcxosR1D8rvP2qWUdlZadHZW7kPcPcXEYeSn2EKR8%2BKJ9rh%2FNkRu%2FwArtc026ey1FooJo9yKs4IP7StQclz0brf5jeXtKhR7eYX0sieoiQHYL29Rv2Cf5T8WQ7W%2FMj%2BZrOKd0t1Ct%2B6eDk7xMaj05CaNxb%2FVwEgCy249PlyECMefJ4235fXQ63Uf%2FAt%2FXC7VvKsmkfV7iab1dPlISW7jTeFz%2BxJHWoPg37edQ5kyNDIvpyx%2FbQ%2B%2FQg91OB7hFCurIssUq8JoHFUdD%2Byw%2FU2IIIsMMmKeOZhkiYyHMF5g%2BhCNipcyFf3nwD7cH%2B%2FoT%2B1x%2FwB2J%2BziNyW01%2BNseVtMoMc4G7VH82TCbyxfWMxtUMlnDIPrOli55JIh%2FwCK2ZeMqthYYOMVxBNb%2Fu2HK%2Fsl6JU7Xlp%2B1xDfbT%2FdeFgmPknW7q0eC%2FsZ%2BOoWTck5ftRnrG9PtIfstnatY0iw%2FMfQ4%2FMWh8bfXbdSjxnbmyD47S4%2F5ky55gWcaZqDPp1yZo42Ppz8SvIePHOn%2BTfO2qaXML%2FSHiPqcRf2M9fTYf78Xj8XIfs4qoWsGsQ64Tpp%2Bo31zGbK9WYfFE8Z9TceI4FP9lnpNbWDVdGit9RRbiO4gT1g3QkqCW9jX4lzksE1z5382DU7WzEKoqq5UVAoOIeV9uR%2BL%2Fgc7RDGsMMcS%2FZjUIPkopj0UvHtQ%2FKnV9H1F9X8vXCajyYt9TuQoYLSijkx9OTj%2FlcMS8q%2BaLny95guoNYs2s%2FrfEXsLLxKyJXjLH4pxOdpwl1zy1p%2BvCOSctDcw19K5ioHAOxU1HxJ%2Fk4otNoZYriJJoWDxSKGRh0II2IyF%2FmN%2BXll550z4OMGs2oJsLynfr6Mv80L%2FwDCfayU6RYNplhDYNMZxACqyEBSVqSoIH8uDj0xV8NappV7pd7Np%2BoQNbX9qxSaJuoYfrr9pWwuSNg4NSHBqKbEHxrnrL80Py2g86WX1%2BwCw69aJS3kOyzoN%2Fq8x%2F5NP%2Bw2eXm0q8guZoblGglicpNA4pIroaMjfy0OKvpf8lvMusa5ol1ZazOLqXS3jiiuTvIyOvJRIf2ylKc86eM8y%2Fk35usfK2r3FtfyMtjqoRZZ3qRFNGT6bP4IQ7I%2F%2BxztF1%2BaHke01SDR31aN7mZ%2FTLRVeKNu3qTD4F5dMVZlmylIZQwNQdwRuMvFXZs2bFXZs2bFX%2F%2FU7%2FmzZsVdmzZsVdmzZsVdjXVXVlYclIIIPQg47GSOsaNI5oqgsx9h1xV4R%2BZvkA6VK2r6VH%2FuPlarIv8Aulz%2Bz%2Fxjb%2Fdf%2FA5EoJLK%2FwBFh0yOJU1AyrH6oABboqJItebtyJkjZP8AKVs73qnm%2FwAsyW89les7xzwtSMxMRKG%2BHghpx55w%2FwAy%2BWpbIHWNNjeGKFkDjlVw5%2BIPGwp8S%2FtcfsZGUauQHvdvpNWJxjhyyMZA%2BiXQ%2BUmMXNtcWVzJaXSGOeJisiHsRtll1uLf6rcMeKb20vVoW%2F6pP%2B0v7GHsLr5ptvq7mOPU4ElmEhHH1eCII4kp%2Bz6aO7%2FtephBNBPbytDcRtFNGaPG4oR7EZVKJHrhz%2B92JjDPA4cw3HMdR%2FSiiNG1m7028EiEC4j%2BGWMn4JU7qf8AjVslmvaBp3nLSFvbCiTKCY2P2opP24pKfs%2F9d5BTFFIys5ZGX9pKch9B65JvKmrSaVdevxea1m%2BCcEFQyj9tR%2FvxMtxZBIV8x3Oi1eknp5Ud4n6Zd%2F7XmskVxp11JY3sZikjbiyHsf8Amk%2Fs4caPay6peQadE6rJMwVXboF6k%2B%2FEDOn%2BdPIkfmSyGp6QA12qc4JFpSVPtcG9%2FwDjfI35a8qzaFNa3urKrXLmscfI1gP7NSv2n%2FmywxouIN1DWPKDW95DY6K0t5IfgnaUKgD05cl49I6H7TZ0bynBAmmjSVvhcz2qEM60%2BHnVRw9om%2BH%2FAFsItfhndg1q%2FpNdxmIuDQVU%2FECf8oYReSLk6R5nWBw1bmT6sSD8FGBb4h%2FNyXDyPvbsWITE9%2FVGJkB30jPKV1PpOsrBduRLFcPb3JY9VditW%2F2XxZ0%2B91O2spIoJWL3E54wW0Y5SOf9UdF%2Fmdvhzm%2Fm2w%2BoeapJlBVdRjWdCDsZE2cfeuHdvfQW0BngZptVvEH1u%2FlG6gj%2B5hH7Kr0xHc0pD%2BYg8wa1NDFZWjSWtsrCRoiGJcn46b1YdF2yFWemzxsW1CN4Ej%2FZlUofubOs2WpxpNGl2oMP2eSbEe5yTXGkadqFpJaT26T2860YEVBB6EHx8MeCzdpunlEtpHYQ38GqRrFNaPA8EgJcFa%2FGqhadao2XBGlmbe2uCzevbGeRo2PcNJx%2F2S%2FDht51s3sLpYLoH6ncIq21wRU1UceLt9Hxf8Hhj5f8pXerWc%2Bq2VrHqE1oqQWdvNLwUoijmJB%2FO9W4%2Fs8cjVH3LezEvM2mXWqyabNozB7SS1WJ5SwBrHWnLv8A3ZUbfy4onlazmtrKC%2BJlNoHFFNFbmQaHvtTJ9rPlzU7GOO6vrRbeNioQQMrRxmn938IXj4YE0fQLnXBdQ2062l1CP3SSry9Xav7og0%2F4LDsikps7C3s1WK2iWJB%2Bygpg5lNOX0YAVr7TL0xXsxcxsVlhktwpFPtLVWwbf%2Ban0e8tp7LTYrmyILlpyT6hoRw2%2Fu%2FTbdlw3taoK4v7a1dY2dW5GjQ1qVHj%2FwA24Vah5a03VlNxZEQTtvyX7LH%2FAClyfjyfo3nrTrbV9PRNI1i6gM8qRENC8gb05OUI%2BNR6nR1%2F4HIRqOj655Vu%2FQ1SBogT%2B7mU1ikA7pJ0%2FwBi3xZGwdizhOeOXFCRBSPSZNX8maml1MhNsfgldPijdD1H%2BS37S8s6ZLrEEZt2uEe1W6VWtLsg%2BlKGHIGOReS%2F6wOR9dWtRp11dSQ%2FWHt4Wk%2Br93IGyU%2Fysk%2Fk%2FW5INATT9Z0eAWczGT6gr%2BoIlfcgBxsf2vT%2FAGMYxMSeE2D07m7PqBmjEzjWSO3EOUo%2BY72M%2BYfLcd3FJeQRxyo7EzQU792GQ60bU9Hkf9HTAwts1jdVeNl%2FyX%2B2n%2FEc7ZL5XstVSS58p6kYZqVbTrysif6tWPrRr%2FspVzmuvaDq2jzsup2JtA5NCfjtmNf91Tjb%2FYyccJ8tmgJPqV4JJLJpI3sYLqJ2uY%2FtBgP91q6jpIy8Vw0sNNn8tG11m8KWNnqTrAums5YhTvyct%2B0R8fw%2FYb%2FWwLdRpfaVEkkPO50r1HhjJALRSg9HpX92%2FwCzgSW4TV9Hga5uppdVspFt7a0FOMNshHJm3VuZY8fV%2B0zfBlZHq3BNigOnm52LIfDHCYwMCJmVXI8IqMYnzI4f85l%2BsRQc7eSKVRPHKts4ruUkPAcv9R%2FiwbZaY1p5gtrHUoipjnjWZOo4lhRv8pGwcPL9pcROZo2S6ZkaXgyqoaFVk4hn%2BJ9uPqNxwVrmsWupvYzalF9S1K1lTi6GscsYYMpV%2FFWUNx%2FlwYoSjd8jybO0suLMcUsdmUQROxRrnH75PQtd8vaT5itBZapAJI0YPE6njJGw%2FajcfZzg%2FwCZWh3GhW%2Fr2wH1vSZ0DXlPia1m%2FuZuK7MV%2FuLj%2BbPQ1pdR3ltHcxGqyCtOtD3H0HIF%2BZFnb3k8EMqhxPBJHOh6MnIUDfSdssDq3zfqWmR6lFJqenRCO6iHK%2Fsk3FD0ng%2FmjfC3SNVudJuUvrKQJdQOrxc1DoafaSRGqrK%2FRlyU32i3XlnU4RHOYrF2Isr1hy9Jm%2F495%2F8AimT%2FACsKte0Zp%2FW1Kxg9KaL%2FAI6Nipr6bH%2Fd0X88En2lfFX0%2FwDlz5x0fzbpAlsIYrO%2BgAF%2FYxBVCOR%2FeIBTlE%2F7Lf7HJpniLyz5m1TyrqVtq2ly8ZYzuvVWX9qOQftI37WeufJnnHTfOekJqViwSZaLd2pNXhk7qf8AJP7D%2FtYFZJmzZsVdmzZsVaOct%2FNj8sx5ntJNb0NfT1uBayxrt9ajUfY%2F4zqP7tv2vsZ1PKOKvhz0CsbwMzqSSHPRgw2%2BL3%2FmwrlheB%2BD9exHQjxGeqfPH5Oad5lupdW0icabqU3xTqV5QTN%2FOyr8SOf2nX%2FgM59H%2BQfmu5nWC9ns4rbl8U6OzMB%2FkpwGKr%2Fyk%2FOBtOMPlnzTMWsyRHY6g5qYq9I5j3i%2Flf8A3XnoxWV1VkIZWAKsNwQehGc68sfkv5Q8vBZriE6rdrQ%2BpdAemCO6wj4f%2BD550VVCqFUUVRQAbAAYq3mzZsVdmzZsVf%2FV7%2FmzZsVdmzZsVdmzZsVdiNzNDbwSTXLBIUUmRj0A98WwNfPaJbSm%2BKi2pSUv9mh2pirAPON5pMWiStoiPJfM1bVI4yy1G8jDkCnwrhDrD6jFb%2BWbC7Wt36Ecl%2BCP%2BKiZHbtyJajf5WDvP9xZRaNCfKtxKb4zj04IOR403JKkfAOfH%2FWws84ajNd3EEklFuSOUtK%2FDRVXiKduQOFIeeatpk0F5PeaUj%2BlATLIYwSYhXd%2Fh%2ByleuLP9U12ykmiWO2vrWOW4n3PxgcAFXmaty3cf77%2Bx9jO1%2Flvo0EejT388SvJqDMjFxXlEvw8TX9ls5h%2BY%2FkSTyne%2FpHTVY6LdsVUj%2FdDt1hf%2Fitv91t%2FsMgRW4dxo9X4vDiySqcfon%2FO%2FoyYJsQGHfJL5FsrXUdZk0m6uTbR3UTvHQAgzRjkONSODla5GgcX0%2FUJNL1S0v41DPFINm8G%2BE%2Frym%2BHMD0k52txeLppjqPUPfF6l5X8xWlm995evZlguLSdkjR9gTWjrXovP4XTEPM6wwzKSKCT4tuoIO%2B3vke80xXU2tW13ZQ%2Bo15bq8npJ8UlELVp%2B3sMBWOsXOtWy2iEyXNuCyIw5Myf8VsaseFP7tvizL4tq%2BTzNUfvT%2BOU6npky9ZrciVAO5Xw%2Ba8sis01rp%2FmC01O5YrSWJ4kXcyFiB9nsK%2Ft5fljzLXzMlg0bRQujQESbVlDcl5IenL4kyeebPIp8y6j5e1DSEjX0XWO4QsqKYk%2FfRgV%2Fb5gx8cHMe5lGUom4mjuPnzSW%2F1OfVL6R7sJW2keKFUGygGhIJ3PKmNVy%2FTAk1pdWc9zBdrwuElcTIezA%2FEMj%2FmjXbvQtaW3tEBgCJM6PuCHFQExtizSKI1DHJv5VuxKrWMp%2BwC8JPh%2B0v0ZCNLvrfUrGG9tjWOVQfkf2lP%2BqcPdHme3vIZV24sKn2Ox%2FDJBSyzzBplrqWnSQSxLI0P76EsoIDqO3%2BsMgmlaxceUdRXU7ZS9jJRb62XoUP7QH80f2k%2F4HOgXdyVYgHp1%2BWQW8g4TzQyoQpJIVh1VuhGJCh7FG9hrempKhW4sryMMp6hlYV%2B%2FOWa%2FbXfk%2FU0ZJOEL1ayu2%2By1P91udv3if8OuCPJ%2FmhPL1xaaJetx0y4rFFMx2imJJSvhHLXj%2Fr4N%2FO9G%2FwAJ28o%2FYvY69%2BqOMgdlYzqPmWy8xr615aouoxAA3dk4dJB0%2FfRGjofBl54U%2BnCySRNSa1l%2B2vQq3861%2By65GPKcztqxjY7NEw4jYbU32zoNppF1qfrw2JX6yierHExoJivWIf5fH7DYYnZaY3pN9N5N1n9JJEbuIwyRoisY1kDbpVu3F%2FidM7xpl3Y%2BadFt7m5tle3vIUkaCYBx8Qowof5WB%2BPONG0jvLY28qlRUgqwoyOOu37LpiXl3XbjyZqk7XglmtZIfTEKNQGh5REFvsxr8XLjgIrdWQedvy7GiQPrfl4SNaxVe5s1q7Rp3ki%2FaaNf20%2B1kT07WGCqwcMjdJFNQc9C2N9BqNvHc29WiljSVGI2KyCopkFv%2FwAotHu9cOq2d1JYW0x53dhAo4O53JQt8MYf9ocMFyB23ZwGOQIkeCQGxqwfIsatNQSQrIrmOUbrIhoQfEEb5LLHzPP6X1TV4RqFo4ozFVL0%2FwApD8EmFms%2FlxeWBNxoEpuIhubSQj1B%2FqPsHwo0%2B4ltUmW7Ro5ojRo3BVhT2OWCi1t%2BbPJ1pFCfMXlJgtl%2Fx92VCyRHuwjb4kX%2Bdf2ciOlG2huhcX2n8JI2BE8FHHzMTb%2F8TVc6FpWutaySPblJEmHGeCQVVwP1ZGtcsIbe5N3p0Ui2MlWaM7mB%2FwBpQ4%2B1F%2FLkTGulhnDIYnYprf6tYaxaxxCDlxIaG7iko8Z7kGtWr%2B3ywxsdGl1WwitzGbkgkRzugDGnRm34R0%2FZbIJBZwxv9YhAVx8Qp0JPiBnafJl1eXekLNdyrKOXGNgADQD4g3Gg%2BE7Y8WyTLfiHNJbbQvNHle%2Fe50eQX%2BnXAD3Vg53EoWnKImhQmn7Pwv8AyYRX9xql1dmXWOS3XHiqMnp0QEkKq%2BA5fazrQwHqOmWmqQGC7j5D9lxsynxVsFsLeO39hb39tJbXMYlhlHGSNuhB%2FUffOZXy3%2Fl7UV05n5MgrpN1LTjLCT8VncEj%2FYf5Odt1nQbzR3JcerasfgnA2%2BT%2FAMrYB%2F5V3Y%2BdtAvhefubrn%2FuNux1jkQUYkD7Ubnir%2F6uEq8D1rTFk9XUdNgaHix%2Bu2XVoHPcD%2FfbfstnQfyAeb%2FFktC%2FptaSF1VgFNGTiXFfiA%2BLj%2FlZC9WuNd8p6kNM1e04anYsY2mY7TW%2FZG2pKjfsS4K003mkCHzl5WmDLazercWoB9WCvX1FB%2FeQt9lv8nIofYNRl5FPI3njTfO2li7taRXkQUXlp3Rj0Zf5on%2FYbJXirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F%2FW7%2FmzZsVdmzZsVdmzZsVdgHVY9PmtHi1JlW3cgEuQBUbr1wdgPUdNttTtzb3IJWoZSOoYdxirzHztP%2Bi20aTyvdm6uDcJSCMJIPTVhRWKj7Bbbi2B9b8keZrnV3FvberbsQsVwHUKFJ6tU8hSvhk%2B%2FwAPGy1GwvLOkqK5ju0cIP3YQ%2BnItAPiif8A4nkkphKQaQOk6eml6ba6fGQVt4whPif2j%2FwWO1LTbPVrGfTr%2BITWtyhSWMjqD%2FEfs4MzEVwIsg2Ni%2BVPOHlm58p65NpU1XhP72znP%2B7IWPwn%2FXX7En%2BVgW28s63f2kWr29m76Ys6xyXQpxUggNUfa4iv2uOen9c8t6J5it0t9as0uo4zyjLVDKf8l1oy5EL7TriGW30Lytp7Q6Dbs0d7xI4Oz%2FFWPlycmNvib%2BfKziufETs7WXahOn8Ph9dVIn6a7%2FewDzPd3ukNplzYtxtEhW2adVBKzRktTkalOdf%2BBw60bydZ%2BaNR%2FwARaPq0VjOIw509bcLIkw%2B16yh%2FjRm%2F3an28de6dLYTXGk6xDztpx8aHoyn7Lqfb9nI3YX%2BreQ9ThS3pcWhcvazMBWSE%2FbgaQ%2FF8P8AJlrrDvunvmryB9buFvzAtnrkQD84z%2B6mKHkGRtu%2F82HWnO%2BoadLpU5aC4ZeUL9Gil%2B0jKR0aOYZOLO80jzho0d3Zv6kMn2WFPUhlGxVh%2By6H7WQWaO80rV1hvwBMjcfUAoskTbLIP%2BNsIr5oSu10tfOt7Ikt4th5ijQC6hkSsdz6fwfWIiCCr7UmTj%2Fl5JG%2FKTSdTjg%2FxDILh4UCUgHD7P8Axafj45GPMdkYtRkvbWf6jewEXNhcr9ppT9pEVatJWnxJx%2BznRPIfmz%2FFujfW5Y%2FSvLZ%2Fq94gBCmQCvNQfiVX%2B1xb7OA2NleaX%2Fkr%2FA19Jb2rO%2BlXbc7UvuFbuvL%2Bb%2FiWC7M7HOuarpdrq9jLY3i8o5Bse6t2df8AKXOP6jbaj5dvpLK5USBd0fcB07Ov8cMT3qkP5l6trkWp2kNi8sVr6CShoyVDyH7RJHXj8OQpfNfmCN1%2BsXcsnBeCrOfUAUdFHP4uP052ny%2Fq2g6veR6T5hgX94Almsp%2Fdsw%2F3W%2F%2BU37GSHUfyp8n6hUpavZse8DkD%2FgH5p%2BGCXNeTwM%2BbzeWxtr%2B3SVHFGMZKMP8oBqr%2FwANh9qv5gpr3kVfLV9zk1O3uIjFOwrzt4w1GZhUeqn2P8rJD5i%2FJJrK2lvNKufrSx%2FEYCnCXiOtCpKPx%2F1M503lq7tpDxDNUUUGlPwyJtWQflfpMWseaFtLgssZtZnDJ1VhxCn3651e38qanp%2Bs2ZX95brKG%2BtR7UVfio6%2Fs16YS%2Fk3pGmWxvNR%2BspJqfEW7WnR4kryLFW3PqN%2FL%2FLnW8I2UsW8x%2BVo71n1LT0CXp3mjGwlp3%2F4yD%2Fhsgl9oyXUaxX1u8LoCY2dStV%2FaG%2Fgc7JTEbiztrr0zcRrIYmDxlhWjDJCXQoeVeW9Rv8Ay1PKL25kuNO9ELEo%2BIjgaoKk%2FAqJyzqtrdQXkCXNs3qQyqGjcdCCK7ZFPMPl1Yg95aLWA7zQjfjXqw%2FycB6JrNzY3BW7uAbARKgUqSQVIC8KfCq8K8vhxq9wlntK4DvtJ07UgBfW6TU6FhvTwqN8FRyRyoHiYOjCoZTUEHH5FDC9Y%2FL6wuSZ9Ic2M3X0tzEfo6p%2FscL9B%2FLy8XVJNS8y3Yuo41aKz0%2BEkQrGwoWlO3N2zomVTDZV4l5n8s3Plq94oS%2BnTk%2FVZj27%2Bk5%2FnX%2FhsMNI893Wj2ht2thNVSEp8PGSlBK%2F%2BSf286nqOnWmqWcllexiSGQbg9QezKf2WGco13yhdaVMUT95A39zL0DDwPg%2BIZc3pPlzU5dStGa4IaeNgGZaAFWHJWoMOc5v5E1B7Wf6tcAoD%2B5PLb3jP0fYzo4xIYrZIo5UaOVQ6MKMrCoIPtidrZ29lAttaoI4UrxQdBU1OL5sCsO8%2FwD5e6V5708RXNINQgB%2Bp3oFStf2JAKc4m%2F4XOIWX5R%2FmVoOpummwIySAxNMssZhZG2q3Mqen80eeoKZqYq8l8h%2Fk%2FceW9Qt9Z1DU3W4gPJLS0JCEGvwTytT1U3%2Bx6arnWs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F1%2B%2F5s2bFXZs2bFXZs2bFXZs2bFXUzZs2KuzZs2KoXUjILG49E0k4EKetK43TYkhsoQp5EqGZvEnvgp1DKVbdW2I9jhDdaDqT%2FuLLWJbOzP8AulEVnAPVVkb4hiqB8wWUXmS%2BXTYWQi3ikZphuUlqOKmn7P8ANnOtRsiPW0TWUKqD9ofajYfZkQ%2B3%2FDLnYtH0Wy0W3aC0BJc8pJHPJ2J8ThV5u8tJrdoZrdQL6EH0z0Lj%2BQ%2F8a4bTbxXQPMGq%2Fl9r7mSs9jcUN3Cv2Zo%2B1xD4Sp%2FzZnaNYhtfNmgRaho7JcMwE1pKCASP246%2Fsn%2BZf58gsugWWtaPFp1xRL21qFkFCyP3U96YR%2BUfMt7%2BX%2BqvpmqEtpUsnGeOtQjE0FxD%2FwAzUxOy%2B5kHmGCOa1s7%2BVeEsFYpHI3SvwyBvDi647RtH1by3qEXmPT5VlgnWmo2C1Amj6rIrH4RMnVcCz3FvJ5x1pIqX2h30cVy3ouv2nQEeka9XZW5ZJNPult7dbZpTLasP9HlYUalP7uVf2JlH2v%2BEw891ZzY3tvqNtHdWz84pBUHoQe6sP2WX9rC7zJoEOu2Xp7LdRVa3lPY90b%2FACHwi0IahBqtdOo9hKf9LjY0Vf8ALU%2F78ybZFD591jS3R3gnRo5Ymp4MjA9snHkr8weRi0LzJII7pQEtdQc0SYdFWQ%2Fsy%2F5X7eH%2FAJw8uLqMDX9qg%2BtRL%2B8Uf7sQf8bLnJbuyjcNFKnND1U%2Fw8Dh5pfQo3Gc487eVFhMmq2KfuHNbmNR%2Fdsf92KP5G%2Fa%2FlyPeXPM%2Fmfy2Y4pmk1PRqfBBKpNwiDr6E3%2B7OH8j51%2B1ubXU7JLiKklvcJWjDqrDdWH%2FEsV5PntoFiuUuQOFxFvHKpKsPpWnLJZ5b8w65p1xEguXuIp3q8d07P1%2FZVm%2Bx%2Fkccbr%2Bhm2125sbPggX95AZq8FRhy3p%2FL8Srk181aDHqempqtvRLu2hDngPheMDmV%2F2P2ozjsrKLW5ju4Eni%2By4rQ9Qe4OL5D%2FACp5hgu7iOwkkUXFxD6yx9DWM8HNMmGJFFDRFRQioPUHIhrmgrAXubdK2z19WOleFepH%2BRkwymCkUIqD1BxBpWIaNq09o31WURrZoiem32ePEheCIB8VV%2BLJcGB3BBHtka1LQXVne0XnC9eUQ%2B0tevHxXA2lxazHfW620rx2atW4gkSqFOPCgdvjDClVwkA7hWYZswzZFXYnNBFPG0UyCSNvtKwqDimbFWE6voE1hIbu0Be3BrQVLIP8rxXJRo92b3T4Z2%2B1Ti3zG1cGkAih3B7ZSRpGvCNQqjsooN8NquzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Dv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxViPmbyo91cfpvQiINVT%2B%2Bh6RXSD9iXwl%2F33N%2FwWQzW9AXXo%2FXaFg7L%2B%2BhK0mjdBuafzACjrnYcDTWNrPKk8kYMsZDI42NR40w3tRW3z1p2l6ho%2BotLAfXVE5OgDVljA%2BLj%2FxZGv7OS2BbeaRbscpI5YuLQq3ETIfiQcv2ZVP90%2F8AsMk3mi1FjqBnt0CpcIHIUU%2BNT8RFP5tuWRDTFEulwPaP9YjVSfVjBIFGPM%2F7BvHCOSXqXlu6trnTI1t7Y2Zj%2BGW1YhmQ%2BJcfb5fzYcZBPKl1I7GRXHKGi3AY%2FajPRvdsnQNd8BFFDjnL%2FPWhJaXguIKRw33KngklPi%2F2Pxcs6jkY892Ul3onqwoZJLWRZeAHIlT8D7fJsAVBaLpUeueS9PtriYPcWykQXkfZ4yVDD%2FJP2WwX5X1NJ2NrQIGXkoXpzQ8JP65GPJfmOTR5G0zXLmGCzlYmzhZPSeE05ceP7UTjfliOhagkWs3CW0gkUXbPZjoZVkY8kQHr8OSHUJZD540vmYtVRBIAvoTo260JrGzU7cvhzaJ5jgm0t9O1u7giu%2FRdY%2BJ48oyCg%2Fd9QyfZ%2FwArJhPBFcwvbzqHikBV0PQg9sgt%2FwCSLpJy9pxniPRiQsgH8rfzYB5ql%2Fkq1hXU4ZigNwjsizftemU3Uf5Jzp%2BRXyloF%2Fpj3FzqYiR3YraxREsyx%2FzTOaL6j%2Fyp8CZKsSUOzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Hv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVg35iPrMEFld6XbR3CRM%2Fro1fUIIHwx%2Fs4U%2FlrqOkz3c1lYQmENFJI8DCgRzIDIg5b1JavTOiajZLf2cls1KsKofBh9k5ydpJPL%2FmzT9ZcBIWY2t5sFoD8Ls5C1%2FwCDkyQ5KyjWdLGi6ml3brSyvKxuo6I58P8AJPVclOiXZurPi5rLAfTf5fsn7sE3drBqFq9vLR4pV2I7dwy%2B%2BF2j6Xf2F5dS3EqNbyhViVa8iV%2Fbfag6%2FZXBdj3KnWURXLzYFYV5n8n3us6ut7btEITGsbc6hl418B8WFd75Ym8svHqVqPrQiCsJSPiikH2jQfsNnScayhwVYBlOxB3BGG1Sby7rf6YgZ5KCZftIBSmHeFllodlp95LeWqlDMKGIfYB7kDDPE%2BSuzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F%2F0u%2F5s2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZFfM%2BipLW%2BSJZAf71CtaMPsygf8SyVZRAIIO4PbCDW6pP5YvDd6Wiu1Zbc%2Bi%2B9Tt9mv%2Bxw5xG3tbe1Vlt41jDHkwUUqfE4tgPNXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Pv%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV%2F%2FZ');background-position:center center;border:1px solid #0a0}.yui-skin-sam .yui-h-slider{background:url(bg-h.gif) no-repeat 5px 0;height:28px;width:228px} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-twourls.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-twourls.css
new file mode 100644
index 0000000..bf61ebb
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-base64-twourls.css
@@ -0,0 +1 @@
+.yui3-skin-night .yui3-dial-ring-vml,.yui3-skin-night .yui3-dial-center-button-vml,.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,.yui3-skin-night v\:oval.yui3-dial-marker-max-min,.yui3-skin-night .yui3-dial-marker-vml,.yui3-skin-night .yui3-dial-handle-vml{background:0 0;opacity:1}div.base64-singlequotes{width:100px;height:100px;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAAAAAAAD5Q7t%2FAAAACXBIWXMAAA3WAAAN1gGQb3mcAAAFrUlEQVRYw%2B2Xz28kRxXHP%2B9Vdc8vj2fG9uIkm2yUeFGEhNCKQwBpj1yRUBAnpJU4ceZP4MxfkBxy2GO45bQXuEGQohUKigQ%2BsBBE1sbYXv8Yz%2FRMd9fjUN09PV5nFZA4kZZa79W3quu9er%2FqNfy%2FPwJgZty%2Ffz%2FZ29vrpmmqhlWTgmFg1UpbfWhYhG6Yq2cFi%2FNrj9nJyWnx%2BPHjeafbMTEzPvjVB9%2B6d%2B%2FezweDwV1BfHubivkC3lZya%2F4m7Np8UZYXhweHH7733rvvC0Kyv7%2F%2F7p07d34qIjyvr63RNb4l4CbsRUrNrq6OfvfRRz%2FxDx486A%2F6g7vXhX9ZIf%2Bp4JomaToZj8d7Pk1SFRFXb1aWodq09l%2F9YZu%2FCWMVL9e%2FaVFVQVUREEG8r3VUEZ4cX%2FHL30%2B5shRtAhFq4wggNb6GrXgVa2K2jYtACIHv7Sz54TfHjWWagBOBy0Xgt%2BcjLtwQxVCpNwURQat1DdYaT7pwdwKDFA6ncHgFizJmSb3WLPDa7PMIVlb2daqZxdONUnAetEojEdBGiXXhTmAjhZ0%2B3N6AlzeEROH1TXiWGf%2BcwmkWZYnAfAkdx1pq%2BhUbT9z3IElUJlVhI4WsgCLUyggi4MQYd4VXNmCYRqXOspV7UoHbQ3hpEMeLAk5mkFYRYlWI%2BHZ6CTDwkKSQqrA7gFeHMF3C6VyYLmFZGiKCE6GrMFsaWb7yuVOh66N1FkUUpBJ3TyvFovToBl9XMbNY2bZ70BsKfW94hbyErosmXpQwy4VgkCjMizjvRRik0EtiLNwagBf465lwOqtkETEn60XT1%2BlTazrpKlR%2BKkooy3Xfb3Wj3wGWJRQhnni7B53q5FqZ4%2FUR7PYhGMxyuMwgWVqTxrYWAwZYQX78J5i8ie9txSAkoOqqQAqk3pBgKLDhlY5XVKPCi3w97YRoKSFaceCgF2hqSXRBPQAIOcXRH8hP%2F0y6%2BRpWLrEyg3SbS9tmzggzJQSLQZo4xoOE8UbCsJfQ7zi6iaIizZ5OBVfXDKPireWC%2BvAYWOBqeszl9Jg03afbH6OqGH%2FBSUrqbrFIXiHoiEDC%2FPySi2d9nnZHJE7opY7dcY%2FdcZej84zpPGfY9Uw2ErYGCf2O4mUVEzELWtqUxZKjf3zK2cURzicMRy%2BzvbuH8ylFPqXIPqNczClKY1mUZFcnSDKkv%2FUNuptbWG%2BLw%2FMh%2FzrYpKBHKV3ONOXzYxeV20z49qhs7gaMWIjqQQiBxVXB4irg05yz4u%2FMpieoJuTLjDJfUJYBzBAFUUHkhMvLvzFPuvQ2JvQ3duh0R%2FjuiDQdIn6MJdvkxTafZUPuaN6UaOo6UNtgNl9weboguwqoA5fCjEusNCzE8LJQFRuNrzpQD%2BrmZNM55%2F4A5z1J2iHtDEg6fZK0j0uHlDrh2N4i3Ptuc%2BH5tjp5HliWQmmOUAhlYe0rqUqWSEOhcZ05AvE1UdColSQJaHWlSUYgJy%2FO2fFfo%2F34piphFOZ4OrvNdL5EJZbcmE8OQzFxIJEGEgIeE1%2FhrjJLxZcOrIVpVC7TW00WmLWyAMDEs%2Bi9wVJDtG17Y21vVmNxLKqIOkQqqoq2qHORmgj9UQcza7mgFm4GmiDjO5C72DSoQ6uPVTW%2BzuFUcQ2teKd4pzhd8b6Nu6jg7vZsrb1rClEIxhu7Q37x47fIy3j%2Fi8iqqlUuEWTFN%2FOrMU3fEEuhUM8FIPDqZgcRIVhsAXxtjGDGS5M%2BP%2Fv%2Bm7yopVrRVsPabsW%2BYG1T%2Fy3KahqSg6cHRb5cTmt5ZXhxQ7nS6yZsVWOajDFbw2JSCSGEIsuyC%2F%2Fo0aPp%2Fv7%2Br9NO5%2F5gMOhJLNn%2FpQLrLfw6tkKKorCDg4NPP%2Fnkjx%2FLOz96h2enzyZvf%2BftH9za2fm6qLrnO9tGk2vY86f%2FMliWZRdPnjz5zcOHDz%2B%2B%2Fifimorzv31C9X718G%2FYrCYSNJa5LgAAACJ6VFh0U29mdHdhcmUAAHjaKy8v18vMyy5OTixI1csvSgcANtgGWBBTylwAAAAASUVORK5CYII%3D');background-position:center center;border:1px solid #0a0}div.otherdataurl{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFBQ0WDWwqwjwAAANMSURBVEjHrdZbaFxVFAbgb2aSTG6GTi6mVIwxNxF9qFI0RQnFUqiYamutVutLa2t9EY0oPggFoYgPRR%2FaghYviA%2BiIAYvmBJKoYWiiBCigVTT1FisbUhrEtNkJpc5PuQkjGEmJqkLFmdz2Hv%2Fa%2F3rX3tvlm95oS%2FLokuZtIpbdvAs7KFtL22wjb3V1C41upy2ke1DXC2k%2FBjv1HHXDrbkEamg7lX2P8QTldQ2UtfOB8uiJsHNiB%2Fik0GmO%2BgZIxgnGA59nGCMoJPeQaYP047iBDXZEohkAYof4%2FNyKlZRdR%2F1ASZCnoOMhWkUheMz9F1laJSRZ3gEqVw1ipZQjcoBRrbT3Ez9OJLhZkHG5CD8l8Q47qXhMZp%2FYxhVFaxBLBtQejdtA%2FTtZPMIJnOknI2WSYzicTYN8OtTvICZbECxdr5Pkm6iPL0C3c%2BgkfIJgi%2F4LnP%2FudRKD3K4jf1VJGLEAiuz6VnA4AGam1h7gpNIzSFe66D3NurLKVhJNkHo07N9V9BE3XHOYmyeuirqG1l9mdHgOkDSGd8%2FGWtg9Roa56lrYdchDtRQPLlCkEywKVRScDfrurnwC2diiPTRe47iVtbnLZDxckGCkKYpPM%2FRr3kbyRhsYOtRDiQonFoBSHrBOI18rOeOPvr76YrCeUbf5fTvjOddJ0gQ1uMPku9z6hwjiEZhgOMn%2BaaUeHQJIOkMD7KMA5QQP01HP18hPbfvDTvZPETqb2YiS1BWrozM6jk9SPJJHkZZ5qFagtoaNnbyZg1FE4sUPRdlAQpwkdSjvDZAJ%2FoxNt%2Bw6NlGbQVFl5iKLKKsXCAwyFQZ8S3ciu65ho1lBJ5%2FkZk3OBGjpJWGmVCmsjTkQvA8JHCUU7s5eImevzg%2Fd7BGFhzCARIf8uVN3J5Heh1VM%2BHlko2y%2FHBxF0NJolfo38eDuJJxbf0ro%2FnMurh8hM%2FupH4tdT8zciOFsTC8SAgQoJfRxKzCuvfw0k%2F8MDx7xqUyez%2BS48ESIN7Ky6OUpfAtrxzhx03UR4m0c%2FZF7tnKW2mma4l9yuthTSIZIvxPi6EcpZW0PM0xtOzjo%2Bf4GPfv4r1qNqAUFYs9diJLBC1CIa7FZx8fUlwI22LuNv%2FfLbKMAOftH9TwRXg6%2FiCDAAAAAElFTkSuQmCC")}.yui-skin-sam .yui-h-slider{background:url(bg-h.gif) no-repeat 5px 0;height:28px;width:228px} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-dbquote-font.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-dbquote-font.css
new file mode 100644
index 0000000..d8946d2
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-dbquote-font.css
@@ -0,0 +1 @@
+.y-ff-1{font-family:"Foo Bar",Helvetica,Arial;text-rendering:optimizeLegibility}.ua-op .y-ff-1{font-family:Helvetica,Arial}@font-face{font-family:"Foo Bar";src:url("data:font/truetype;base64,gRbIUFAIrsQNGditEWbAUKwAA") format("truetype"),url("http://yuilibrary.com/fonts/foo-bar.svg#webfontse22fewwr") format("svg");font-weight:400;font-style:normal} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-inline-svg.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-inline-svg.css
new file mode 100644
index 0000000..cc496e6
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-inline-svg.css
@@ -0,0 +1 @@
+a#mobile-menu-btn{background:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="9.125" height="9.137" viewBox="4.437 4.431 9.125 9.137"><path d="M9.282 8.712h4.125c.12 0 .155.047.155.168v.252c0 .12-.035.154-.155.154H9.282v4.127c0 .12-.036.155-.156.155h-.252c-.12 0-.156-.037-.156-.156V9.286H4.593c-.12 0-.156-.035-.156-.154V8.88c0-.12.036-.168.156-.168h4.125V4.585c0-.107.037-.154.156-.154h.252c.12 0 .156.05.156.156v4.126z"/></svg>') 0 0 no-repeat}a#mobile-menu-btn{background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='9.125' height='9.137' viewBox='4.437 4.431 9.125 9.137'><path d='M9.282 8.712h4.125c.12 0 .155.047.155.168v.252c0 .12-.035.154-.155.154H9.282v4.127c0 .12-.036.155-.156.155h-.252c-.12 0-.156-.037-.156-.156V9.286H4.593c-.12 0-.156-.035-.156-.154V8.88c0-.12.036-.168.156-.168h4.125V4.585c0-.107.037-.154.156-.154h.252c.12 0 .156.05.156.156v4.126z'/></svg>") 0 0 no-repeat} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-nonbase64-doublequotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-nonbase64-doublequotes.css
new file mode 100644
index 0000000..8f12344
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-nonbase64-doublequotes.css
@@ -0,0 +1 @@
+div.nonbase64-doublequotes{width:100px;height:100px;background-image:url("data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0C%00%00%00%0E%08%03%00%00%00%2Cc%0D%DE%00%00%00%A2PLTEQQQ%FA%FA%FA%FC%FC%FC%EE%EE%EE%A9%A9%A9%E9%E9%E9%0A%0A%0A%0D%0D%0D444PPP%CD%CD%CD%CC%CC%CC%F5%F5%F5UUU%D0%D0%D0'''%F9%F9%F9%A6%A6%A6%40%40%40FFF%A0%A0%A0%89%89%89%8D%8D%8D%20%20%20%14%14%14%DA%DA%DA%B6%B6%B6%02%02%02%87%87%87%81%81%81%AC%AC%AC%0E%0E%0E111%7D%7D%7D%92%92%92333%B9%B9%B9%BC%BC%BChhh)))%E1%E1%E1%03%03%03%CB%CB%CB%EB%EB%EB%FD%FD%FD%A3%A3%A3(((%04%04%04%CA%CA%CAttt%2C%2C%2C%F4%F4%F4%00%00%00%FF%FF%FF%D6%DE%02%C3%00%00%006tRNS%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%00%A1%8FN1%00%00%00iIDAT%08%D7E%C7E%16%02Q%10%C5%D0j%C3%DD%BDqw%5E%F6%BF5%06%D4%3Fd%94kx%BDf%DE6%FFIA%AB%C8qYj%1F%E3Xk%93%E0%C8JZ%10%90%9E%3A1%60%BBY%85%A8%AE%14%C0%5E%1A6%8E%C5w%02%60%99%C9%FA%9A%03%60%8C%EFz%8C%CE%0EnSu%3F%01%AD%B2%06%04%F0%3CT%FF%B8nk%3F%7C%01%C5z%1B%F9%26%2F%3Az%00%00%00%00IEND%AEB%60%82");border:1px solid #0a0}span.othercss{font-family:"Times New Roman";font-weight:inherit} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-nonbase64-noquotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-nonbase64-noquotes.css
new file mode 100644
index 0000000..9696a17
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-nonbase64-noquotes.css
@@ -0,0 +1 @@
+div.nonbase64-noquotes{width:100px;height:100px;background-image:url(data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0C%00%00%00%0E%08%03%00%00%00%2Cc%0D%DE%00%00%00%A2PLTEQQQ%FA%FA%FA%FC%FC%FC%EE%EE%EE%A9%A9%A9%E9%E9%E9%0A%0A%0A%0D%0D%0D444PPP%CD%CD%CD%CC%CC%CC%F5%F5%F5UUU%D0%D0%D0\'\'\'%F9%F9%F9%A6%A6%A6%40%40%40FFF%A0%A0%A0%89%89%89%8D%8D%8D%20%20%20%14%14%14%DA%DA%DA%B6%B6%B6%02%02%02%87%87%87%81%81%81%AC%AC%AC%0E%0E%0E111%7D%7D%7D%92%92%92333%B9%B9%B9%BC%BC%BChhh\)\)\)%E1%E1%E1%03%03%03%CB%CB%CB%EB%EB%EB%FD%FD%FD%A3%A3%A3\(\(\(%04%04%04%CA%CA%CAttt%2C%2C%2C%F4%F4%F4%00%00%00%FF%FF%FF%D6%DE%02%C3%00%00%006tRNS%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%00%A1%8FN1%00%00%00iIDAT%08%D7E%C7E%16%02Q%10%C5%D0j%C3%DD%BDqw%5E%F6%BF5%06%D4%3Fd%94kx%BDf%DE6%FFIA%AB%C8qYj%1F%E3Xk%93%E0%C8JZ%10%90%9E%3A1%60%BBY%85%A8%AE%14%C0%5E%1A6%8E%C5w%02%60%99%C9%FA%9A%03%60%8C%EFz%8C%CE%0EnSu%3F%01%AD%B2%06%04%F0%3CT%FF%B8nk%3F%7C%01%C5z%1B%F9%26%2F%3Az%00%00%00%00IEND%AEB%60%82);border:1px solid red}span.othercss{font-family:"Times New Roman";font-weight:inherit} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-nonbase64-singlequotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-nonbase64-singlequotes.css
new file mode 100644
index 0000000..2835c87
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-nonbase64-singlequotes.css
@@ -0,0 +1 @@
+div.nonbase64-singlequotes{width:100px;height:100px;background-image:url('data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0C%00%00%00%0E%08%03%00%00%00%2Cc%0D%DE%00%00%00%A2PLTEQQQ%FA%FA%FA%FC%FC%FC%EE%EE%EE%A9%A9%A9%E9%E9%E9%0A%0A%0A%0D%0D%0D444PPP%CD%CD%CD%CC%CC%CC%F5%F5%F5UUU%D0%D0%D0\'\'\'%F9%F9%F9%A6%A6%A6%40%40%40FFF%A0%A0%A0%89%89%89%8D%8D%8D%20%20%20%14%14%14%DA%DA%DA%B6%B6%B6%02%02%02%87%87%87%81%81%81%AC%AC%AC%0E%0E%0E111%7D%7D%7D%92%92%92333%B9%B9%B9%BC%BC%BChhh)))%E1%E1%E1%03%03%03%CB%CB%CB%EB%EB%EB%FD%FD%FD%A3%A3%A3(((%04%04%04%CA%CA%CAttt%2C%2C%2C%F4%F4%F4%00%00%00%FF%FF%FF%D6%DE%02%C3%00%00%006tRNS%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%00%A1%8FN1%00%00%00iIDAT%08%D7E%C7E%16%02Q%10%C5%D0j%C3%DD%BDqw%5E%F6%BF5%06%D4%3Fd%94kx%BDf%DE6%FFIA%AB%C8qYj%1F%E3Xk%93%E0%C8JZ%10%90%9E%3A1%60%BBY%85%A8%AE%14%C0%5E%1A6%8E%C5w%02%60%99%C9%FA%9A%03%60%8C%EFz%8C%CE%0EnSu%3F%01%AD%B2%06%04%F0%3CT%FF%B8nk%3F%7C%01%C5z%1B%F9%26%2F%3Az%00%00%00%00IEND%AEB%60%82');border:1px solid #00a}span.othercss{font-family:"Times New Roman";font-weight:inherit} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-noquote-multiline-font.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-noquote-multiline-font.css
new file mode 100644
index 0000000..b4508b3
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-noquote-multiline-font.css
@@ -0,0 +1 @@
+.y-ff-1{font-family:"Foo Bar",Helvetica,Arial;text-rendering:optimizeLegibility}.ua-op .y-ff-1{font-family:Helvetica,Arial}@font-face{font-family:"Foo Bar";src:url(data:font/truetype;base64,gRbIUFAIrsQNGditEWbAUKwAA) format("truetype"),url("http://yuilibrary.com/fonts/foo-bar.svg#webfontse22fewwr") format("svg");font-weight:400;font-style:normal} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-doublequotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-doublequotes.css
new file mode 100644
index 0000000..c345c41
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-doublequotes.css
@@ -0,0 +1 @@
+.yui3-skin-sam .yui3-scrollview-scrollbar{-webkit-transform:translate3d(0,0,0);-moz-transform:translate(0,0)}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle,.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last{border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUeNpiZGBgSGPAAgACDAAIkABoFyloZQAAAABJRU5ErkJggg==")}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last{border-bottom-right-radius:0;border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last{border-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;-webkit-border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;-webkit-transform:translate3d(0,0,0);-moz-border-radius:0;-moz-border-radius-bottomright:3px;-moz-border-radius-bottomleft:3px;-moz-transform:translate(0,0)}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle{border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;-webkit-transform:translate3d(0,0,0) scaleY(1);-webkit-transform-origin-y:0;-moz-transform:translate(0,0) scaleY(1);-moz-transform-origin:0 0}.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-first,.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last{border-top-right-radius:0;border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-bottom-left-radius:3px;-moz-border-radius-topright:0;-moz-border-radius-bottomleft:3px}.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last{border-bottom-left-radius:0;border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-top-right-radius:3px;-moz-border-radius-bottomleft:0;-moz-border-radius-topright:3px}.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-middle{-webkit-transform:translate3d(0,0,0) scaleX(1);-webkit-transform-origin:0 0;-moz-transform:translate(0,0) scaleX(1);-moz-transform-origin:0 0}.yui3-skin-sam .yui3-scrollview-scrollbar-vert-basic .yui3-scrollview-child,.yui3-skin-sam .yui3-scrollview-scrollbar-horiz-basic .yui3-scrollview-child{background-color:#aaa;background-image:none} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-noquotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-noquotes.css
new file mode 100644
index 0000000..110f9fc
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-noquotes.css
@@ -0,0 +1 @@
+.yui3-skin-sam .yui3-scrollview-scrollbar{-webkit-transform:translate3d(0,0,0);-moz-transform:translate(0,0)}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle,.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last{border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUeNpiZGBgSGPAAgACDAAIkABoFyloZQAAAABJRU5ErkJggg==)}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last{border-bottom-right-radius:0;border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last{border-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;-webkit-border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;-webkit-transform:translate3d(0,0,0);-moz-border-radius:0;-moz-border-radius-bottomright:3px;-moz-border-radius-bottomleft:3px;-moz-transform:translate(0,0)}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle{border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;-webkit-transform:translate3d(0,0,0) scaleY(1);-webkit-transform-origin-y:0;-moz-transform:translate(0,0) scaleY(1);-moz-transform-origin:0 0}.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-first,.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last{border-top-right-radius:0;border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-bottom-left-radius:3px;-moz-border-radius-topright:0;-moz-border-radius-bottomleft:3px}.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last{border-bottom-left-radius:0;border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-top-right-radius:3px;-moz-border-radius-bottomleft:0;-moz-border-radius-topright:3px}.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-middle{-webkit-transform:translate3d(0,0,0) scaleX(1);-webkit-transform-origin:0 0;-moz-transform:translate(0,0) scaleX(1);-moz-transform-origin:0 0}.yui3-skin-sam .yui3-scrollview-scrollbar-vert-basic .yui3-scrollview-child,.yui3-skin-sam .yui3-scrollview-scrollbar-horiz-basic .yui3-scrollview-child{background-color:#aaa;background-image:none} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-singlequotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-singlequotes.css
new file mode 100644
index 0000000..1a4e2c6
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-singlequotes.css
@@ -0,0 +1 @@
+.yui3-skin-sam .yui3-scrollview-scrollbar{-webkit-transform:translate3d(0,0,0);-moz-transform:translate(0,0)}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle,.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last{border-radius:3px;-webkit-border-radius:3px;-moz-border-radius:3px;background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUeNpiZGBgSGPAAgACDAAIkABoFyloZQAAAABJRU5ErkJggg==')}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last{border-bottom-right-radius:0;border-bottom-left-radius:0;-webkit-border-bottom-right-radius:0;-webkit-border-bottom-left-radius:0;-moz-border-radius-bottomright:0;-moz-border-radius-bottomleft:0}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last{border-radius:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px;-webkit-border-radius:0;-webkit-border-bottom-right-radius:3px;-webkit-border-bottom-left-radius:3px;-webkit-transform:translate3d(0,0,0);-moz-border-radius:0;-moz-border-radius-bottomright:3px;-moz-border-radius-bottomleft:3px;-moz-transform:translate(0,0)}.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle{border-radius:0;-webkit-border-radius:0;-moz-border-radius:0;-webkit-transform:translate3d(0,0,0) scaleY(1);-webkit-transform-origin-y:0;-moz-transform:translate(0,0) scaleY(1);-moz-transform-origin:0 0}.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-first,.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last{border-top-right-radius:0;border-bottom-left-radius:3px;-webkit-border-top-right-radius:0;-webkit-border-bottom-left-radius:3px;-moz-border-radius-topright:0;-moz-border-radius-bottomleft:3px}.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last{border-bottom-left-radius:0;border-top-right-radius:3px;-webkit-border-bottom-left-radius:0;-webkit-border-top-right-radius:3px;-moz-border-radius-bottomleft:0;-moz-border-radius-topright:3px}.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-middle{-webkit-transform:translate3d(0,0,0) scaleX(1);-webkit-transform-origin:0 0;-moz-transform:translate(0,0) scaleX(1);-moz-transform-origin:0 0}.yui3-skin-sam .yui3-scrollview-scrollbar-vert-basic .yui3-scrollview-child,.yui3-skin-sam .yui3-scrollview-scrollbar-horiz-basic .yui3-scrollview-child{background-color:#aaa;background-image:none} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-yuiapp.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-yuiapp.css
new file mode 100644
index 0000000..dfccb74
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-realdata-yuiapp.css
@@ -0,0 +1 @@
+html{background:#fff;color:#555;height:100%}#hd,#bd,#ft{padding:0 50px}#bd{padding-bottom:50px;border-bottom:1px solid #006e9c}#ft{background:transparent no-repeat 0% 100%;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADcAAAAeCAMAAAC/pnaKAAAAwFBMVEUkXIAoYYQoYYQoYYQyao02bpE6cpQ6cpREe51LgqNUiqtUiqtUiqtZj7BckrNlmrtlmrtlmrtroMB3qsp3qsp3qsp+sdCHudiHudiHudiHudiPwN+YyOaYyOaYyOaf0O2g0O6n1vOn1vOn1vOn1vOw3vu45f245f245f3B7f7K9f7K9f7K9f7X/v7X/v7p//7p//79//79//4AAABhAGMAbwBzAC4AcwB0AHIAaQBuAGcAcwABAAAAwIwmGwEAAABQQKFUAAAAQHRSTlP///////////////////////////////////////////////////////////////////8A////////////////0pfSbwAAAdtJREFUOI2NlNGqgzAMhv/ClDlQQcFdKOx4McFCKcH3f7eTtLWr07mFiUvbzz9Nk2LZGRH5937qZTiGyEx0Cr5xQpEd6xzNueCGc9SzUmAzP8cplO1zgRRutBAlM9EhZwknWj1LKXkwbOVojTqMEpKZOfeUD3OnR24VWeJf1OOBTnTgw8zZr3LyOlbdrWrdGlpG6Alz4Ni3RcT4Ldm8wHpOo9Yo5CPsdngM6D3HmLlESrgHD+YvrtEuUeLeMf7x7j23GJVgbJoHs0/cI3B7TNkfON5btsEUrvSdY694U0P9nXMp2mDsdbLmY14CN8XDjtzgo9CuqpYnGoMscDUmn08qsbOn/3Lte6rgP1eM7qQ1YMP+yPhiTmx2laDQspytgJI1MbIzZ7yHfj2/hYYtZ1xMM4dc3iTukjgJyKsrUBEH4uqFXNUh3aXxtWjbC3DpH8LRVPJ8MXLoA8fsz51ue73Q+1z7RkTEF0dWa1o5a8001C6ZbGuzh0bSTo9iS8X+C/NWbfTW5uZ9Vu4QaL20Xv3uhgyrZUXVtI2NfS3fbzgP75dNek/YbrL+k/EykecuZf6ZOzDJYsf9PCV3xhFHq7043mw+H1ylW+5Ab5jpADuPM2Z1P3POLWnUG/sHnIDsqkOjlqoAAAAASUVORK5CYII=);padding:0 0 40px;margin:50px}#hd,#bd{background:#f9f9f9}body{margin:0;padding:0;font:12px "Helvetica Nueue",Arial,sans-serif}#hd{color:#fff;padding-top:50px;margin:0}#hd,h1,h2,p,.color{margin:auto}h1,h2,a{color:#006e9c}h1,h2{margin-top:0}h4 .title{font-weight:700;letter-spacing:-2px;font-size:47px;text-shadow:0 1px 0 #369;background:#006e9d;color:#fff;padding:0 10px}h4{display:block;float:right;margin:0 0 0 20px}h4 .what{display:block;padding:4px;text-align:center;font-weight:400}h4 .version{font-size:11px;color:#ccc}h2{font-size:40px;font-family:"HelveticaNeue-Light","Helvetica Neue Light","Helvetica Neue",sans-serif;font-weight:300}h4,p{padding:6px 0 6px}#ft p.fine,#ft p.fine a{color:#999}#ft p.intro{font-size:12px}#bd{font-size:14px;color:#666}#ft p{font-size:11px} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-singlequote-font.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-singlequote-font.css
new file mode 100644
index 0000000..31e469b
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/dataurl-singlequote-font.css
@@ -0,0 +1 @@
+.y-ff-1{font-family:"Foo Bar",Helvetica,Arial;text-rendering:optimizeLegibility}.ua-op .y-ff-1{font-family:Helvetica,Arial}@font-face{font-family:"Foo Bar";src:url('data:font/truetype;base64,gRbIUFAIrsQNGditEWbAUKwAA') format("truetype"),url("http://yuilibrary.com/fonts/foo-bar.svg#webfontse22fewwr") format("svg");font-weight:400;font-style:normal} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/empty-rules.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/empty-rules.css
new file mode 100644
index 0000000..78cb62e
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/empty-rules.css
@@ -0,0 +1,5 @@
+@import "another.css";
+/*! dont delete me */
+.test{color:red}@media screen{.printonly{display:none}}@media print{
+/*! imp: weird but it may happen */
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/flex.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/flex.css
new file mode 100644
index 0000000..0fcd50c
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/flex.css
@@ -0,0 +1 @@
+div{flex:1 1 0%}div{flex:1 1 0px} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/font-weight.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/font-weight.css
new file mode 100644
index 0000000..49988eb
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/font-weight.css
@@ -0,0 +1 @@
+a{font-weight:700;font-weight:bolder}section{font-weight:400 !important} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/foundation.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/foundation.css
new file mode 100644
index 0000000..49415c1
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/foundation.css
@@ -0,0 +1,3 @@
+@charset "UTF-8";
+/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */
+html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}main{display:block}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}input{overflow:visible}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;display:table;max-width:100%;padding:0;color:inherit;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}details{display:block}summary{display:list-item}menu{display:block}canvas{display:inline-block}template{display:none}[hidden]{display:none}.foundation-mq{font-family:"small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"}html{box-sizing:border-box;font-size:100%}*,*:before,*:after{box-sizing:inherit}body{margin:0;padding:0;background:#fefefe;font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-weight:400;line-height:1.5;color:#0a0a0a;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}img{display:inline-block;vertical-align:middle;max-width:100%;height:auto;-ms-interpolation-mode:bicubic}textarea{height:auto;min-height:50px;border-radius:0}select{box-sizing:border-box;width:100%;border-radius:0}.map_canvas img,.map_canvas embed,.map_canvas object,.mqa-display img,.mqa-display embed,.mqa-display object{max-width:none !important}button{padding:0;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;border-radius:0;background:0 0;line-height:1}[data-whatinput=mouse] button{outline:0}pre{overflow:auto}.is-visible{display:block !important}.is-hidden{display:none !important}.row{max-width:75rem;margin-right:auto;margin-left:auto}.row:before,.row:after{display:table;content:' '}.row:after{clear:both}.row.collapse>.column,.row.collapse>.columns{padding-right:0;padding-left:0}.row .row{margin-right:-.625rem;margin-left:-.625rem}@media print,screen and (min-width:40em){.row .row{margin-right:-.9375rem;margin-left:-.9375rem}}@media print,screen and (min-width:64em){.row .row{margin-right:-.9375rem;margin-left:-.9375rem}}.row .row.collapse{margin-right:0;margin-left:0}.row.expanded{max-width:none}.row.expanded .row{margin-right:auto;margin-left:auto}.row:not(.expanded) .row{max-width:none}.row.gutter-small>.column,.row.gutter-small>.columns{padding-right:.625rem;padding-left:.625rem}.row.gutter-medium>.column,.row.gutter-medium>.columns{padding-right:.9375rem;padding-left:.9375rem}.column,.columns{width:100%;float:left;padding-right:.625rem;padding-left:.625rem}@media print,screen and (min-width:40em){.column,.columns{padding-right:.9375rem;padding-left:.9375rem}}.column:last-child:not(:first-child),.columns:last-child:not(:first-child){float:right}.column.end:last-child:last-child,.end.columns:last-child:last-child{float:left}.column.row.row,.row.row.columns{float:none}.row .column.row.row,.row .row.row.columns{margin-right:0;margin-left:0;padding-right:0;padding-left:0}.small-1{width:8.33333%}.small-push-1{position:relative;left:8.33333%}.small-pull-1{position:relative;left:-8.33333%}.small-offset-0{margin-left:0}.small-2{width:16.66667%}.small-push-2{position:relative;left:16.66667%}.small-pull-2{position:relative;left:-16.66667%}.small-offset-1{margin-left:8.33333%}.small-3{width:25%}.small-push-3{position:relative;left:25%}.small-pull-3{position:relative;left:-25%}.small-offset-2{margin-left:16.66667%}.small-4{width:33.33333%}.small-push-4{position:relative;left:33.33333%}.small-pull-4{position:relative;left:-33.33333%}.small-offset-3{margin-left:25%}.small-5{width:41.66667%}.small-push-5{position:relative;left:41.66667%}.small-pull-5{position:relative;left:-41.66667%}.small-offset-4{margin-left:33.33333%}.small-6{width:50%}.small-push-6{position:relative;left:50%}.small-pull-6{position:relative;left:-50%}.small-offset-5{margin-left:41.66667%}.small-7{width:58.33333%}.small-push-7{position:relative;left:58.33333%}.small-pull-7{position:relative;left:-58.33333%}.small-offset-6{margin-left:50%}.small-8{width:66.66667%}.small-push-8{position:relative;left:66.66667%}.small-pull-8{position:relative;left:-66.66667%}.small-offset-7{margin-left:58.33333%}.small-9{width:75%}.small-push-9{position:relative;left:75%}.small-pull-9{position:relative;left:-75%}.small-offset-8{margin-left:66.66667%}.small-10{width:83.33333%}.small-push-10{position:relative;left:83.33333%}.small-pull-10{position:relative;left:-83.33333%}.small-offset-9{margin-left:75%}.small-11{width:91.66667%}.small-push-11{position:relative;left:91.66667%}.small-pull-11{position:relative;left:-91.66667%}.small-offset-10{margin-left:83.33333%}.small-12{width:100%}.small-offset-11{margin-left:91.66667%}.small-up-1>.column,.small-up-1>.columns{float:left;width:100%}.small-up-1>.column:nth-of-type(1n),.small-up-1>.columns:nth-of-type(1n){clear:none}.small-up-1>.column:nth-of-type(1n+1),.small-up-1>.columns:nth-of-type(1n+1){clear:both}.small-up-1>.column:last-child,.small-up-1>.columns:last-child{float:left}.small-up-2>.column,.small-up-2>.columns{float:left;width:50%}.small-up-2>.column:nth-of-type(1n),.small-up-2>.columns:nth-of-type(1n){clear:none}.small-up-2>.column:nth-of-type(2n+1),.small-up-2>.columns:nth-of-type(2n+1){clear:both}.small-up-2>.column:last-child,.small-up-2>.columns:last-child{float:left}.small-up-3>.column,.small-up-3>.columns{float:left;width:33.33333%}.small-up-3>.column:nth-of-type(1n),.small-up-3>.columns:nth-of-type(1n){clear:none}.small-up-3>.column:nth-of-type(3n+1),.small-up-3>.columns:nth-of-type(3n+1){clear:both}.small-up-3>.column:last-child,.small-up-3>.columns:last-child{float:left}.small-up-4>.column,.small-up-4>.columns{float:left;width:25%}.small-up-4>.column:nth-of-type(1n),.small-up-4>.columns:nth-of-type(1n){clear:none}.small-up-4>.column:nth-of-type(4n+1),.small-up-4>.columns:nth-of-type(4n+1){clear:both}.small-up-4>.column:last-child,.small-up-4>.columns:last-child{float:left}.small-up-5>.column,.small-up-5>.columns{float:left;width:20%}.small-up-5>.column:nth-of-type(1n),.small-up-5>.columns:nth-of-type(1n){clear:none}.small-up-5>.column:nth-of-type(5n+1),.small-up-5>.columns:nth-of-type(5n+1){clear:both}.small-up-5>.column:last-child,.small-up-5>.columns:last-child{float:left}.small-up-6>.column,.small-up-6>.columns{float:left;width:16.66667%}.small-up-6>.column:nth-of-type(1n),.small-up-6>.columns:nth-of-type(1n){clear:none}.small-up-6>.column:nth-of-type(6n+1),.small-up-6>.columns:nth-of-type(6n+1){clear:both}.small-up-6>.column:last-child,.small-up-6>.columns:last-child{float:left}.small-up-7>.column,.small-up-7>.columns{float:left;width:14.28571%}.small-up-7>.column:nth-of-type(1n),.small-up-7>.columns:nth-of-type(1n){clear:none}.small-up-7>.column:nth-of-type(7n+1),.small-up-7>.columns:nth-of-type(7n+1){clear:both}.small-up-7>.column:last-child,.small-up-7>.columns:last-child{float:left}.small-up-8>.column,.small-up-8>.columns{float:left;width:12.5%}.small-up-8>.column:nth-of-type(1n),.small-up-8>.columns:nth-of-type(1n){clear:none}.small-up-8>.column:nth-of-type(8n+1),.small-up-8>.columns:nth-of-type(8n+1){clear:both}.small-up-8>.column:last-child,.small-up-8>.columns:last-child{float:left}.small-collapse>.column,.small-collapse>.columns{padding-right:0;padding-left:0}.small-collapse .row{margin-right:0;margin-left:0}.expanded.row .small-collapse.row{margin-right:0;margin-left:0}.small-uncollapse>.column,.small-uncollapse>.columns{padding-right:.625rem;padding-left:.625rem}.small-centered{margin-right:auto;margin-left:auto}.small-centered,.small-centered:last-child:not(:first-child){float:none;clear:both}.small-uncentered,.small-push-0,.small-pull-0{position:static;float:left;margin-right:0;margin-left:0}@media print,screen and (min-width:40em){.medium-1{width:8.33333%}.medium-push-1{position:relative;left:8.33333%}.medium-pull-1{position:relative;left:-8.33333%}.medium-offset-0{margin-left:0}.medium-2{width:16.66667%}.medium-push-2{position:relative;left:16.66667%}.medium-pull-2{position:relative;left:-16.66667%}.medium-offset-1{margin-left:8.33333%}.medium-3{width:25%}.medium-push-3{position:relative;left:25%}.medium-pull-3{position:relative;left:-25%}.medium-offset-2{margin-left:16.66667%}.medium-4{width:33.33333%}.medium-push-4{position:relative;left:33.33333%}.medium-pull-4{position:relative;left:-33.33333%}.medium-offset-3{margin-left:25%}.medium-5{width:41.66667%}.medium-push-5{position:relative;left:41.66667%}.medium-pull-5{position:relative;left:-41.66667%}.medium-offset-4{margin-left:33.33333%}.medium-6{width:50%}.medium-push-6{position:relative;left:50%}.medium-pull-6{position:relative;left:-50%}.medium-offset-5{margin-left:41.66667%}.medium-7{width:58.33333%}.medium-push-7{position:relative;left:58.33333%}.medium-pull-7{position:relative;left:-58.33333%}.medium-offset-6{margin-left:50%}.medium-8{width:66.66667%}.medium-push-8{position:relative;left:66.66667%}.medium-pull-8{position:relative;left:-66.66667%}.medium-offset-7{margin-left:58.33333%}.medium-9{width:75%}.medium-push-9{position:relative;left:75%}.medium-pull-9{position:relative;left:-75%}.medium-offset-8{margin-left:66.66667%}.medium-10{width:83.33333%}.medium-push-10{position:relative;left:83.33333%}.medium-pull-10{position:relative;left:-83.33333%}.medium-offset-9{margin-left:75%}.medium-11{width:91.66667%}.medium-push-11{position:relative;left:91.66667%}.medium-pull-11{position:relative;left:-91.66667%}.medium-offset-10{margin-left:83.33333%}.medium-12{width:100%}.medium-offset-11{margin-left:91.66667%}.medium-up-1>.column,.medium-up-1>.columns{float:left;width:100%}.medium-up-1>.column:nth-of-type(1n),.medium-up-1>.columns:nth-of-type(1n){clear:none}.medium-up-1>.column:nth-of-type(1n+1),.medium-up-1>.columns:nth-of-type(1n+1){clear:both}.medium-up-1>.column:last-child,.medium-up-1>.columns:last-child{float:left}.medium-up-2>.column,.medium-up-2>.columns{float:left;width:50%}.medium-up-2>.column:nth-of-type(1n),.medium-up-2>.columns:nth-of-type(1n){clear:none}.medium-up-2>.column:nth-of-type(2n+1),.medium-up-2>.columns:nth-of-type(2n+1){clear:both}.medium-up-2>.column:last-child,.medium-up-2>.columns:last-child{float:left}.medium-up-3>.column,.medium-up-3>.columns{float:left;width:33.33333%}.medium-up-3>.column:nth-of-type(1n),.medium-up-3>.columns:nth-of-type(1n){clear:none}.medium-up-3>.column:nth-of-type(3n+1),.medium-up-3>.columns:nth-of-type(3n+1){clear:both}.medium-up-3>.column:last-child,.medium-up-3>.columns:last-child{float:left}.medium-up-4>.column,.medium-up-4>.columns{float:left;width:25%}.medium-up-4>.column:nth-of-type(1n),.medium-up-4>.columns:nth-of-type(1n){clear:none}.medium-up-4>.column:nth-of-type(4n+1),.medium-up-4>.columns:nth-of-type(4n+1){clear:both}.medium-up-4>.column:last-child,.medium-up-4>.columns:last-child{float:left}.medium-up-5>.column,.medium-up-5>.columns{float:left;width:20%}.medium-up-5>.column:nth-of-type(1n),.medium-up-5>.columns:nth-of-type(1n){clear:none}.medium-up-5>.column:nth-of-type(5n+1),.medium-up-5>.columns:nth-of-type(5n+1){clear:both}.medium-up-5>.column:last-child,.medium-up-5>.columns:last-child{float:left}.medium-up-6>.column,.medium-up-6>.columns{float:left;width:16.66667%}.medium-up-6>.column:nth-of-type(1n),.medium-up-6>.columns:nth-of-type(1n){clear:none}.medium-up-6>.column:nth-of-type(6n+1),.medium-up-6>.columns:nth-of-type(6n+1){clear:both}.medium-up-6>.column:last-child,.medium-up-6>.columns:last-child{float:left}.medium-up-7>.column,.medium-up-7>.columns{float:left;width:14.28571%}.medium-up-7>.column:nth-of-type(1n),.medium-up-7>.columns:nth-of-type(1n){clear:none}.medium-up-7>.column:nth-of-type(7n+1),.medium-up-7>.columns:nth-of-type(7n+1){clear:both}.medium-up-7>.column:last-child,.medium-up-7>.columns:last-child{float:left}.medium-up-8>.column,.medium-up-8>.columns{float:left;width:12.5%}.medium-up-8>.column:nth-of-type(1n),.medium-up-8>.columns:nth-of-type(1n){clear:none}.medium-up-8>.column:nth-of-type(8n+1),.medium-up-8>.columns:nth-of-type(8n+1){clear:both}.medium-up-8>.column:last-child,.medium-up-8>.columns:last-child{float:left}.medium-collapse>.column,.medium-collapse>.columns{padding-right:0;padding-left:0}.medium-collapse .row{margin-right:0;margin-left:0}.expanded.row .medium-collapse.row{margin-right:0;margin-left:0}.medium-uncollapse>.column,.medium-uncollapse>.columns{padding-right:.9375rem;padding-left:.9375rem}.medium-centered{margin-right:auto;margin-left:auto}.medium-centered,.medium-centered:last-child:not(:first-child){float:none;clear:both}.medium-uncentered,.medium-push-0,.medium-pull-0{position:static;float:left;margin-right:0;margin-left:0}}@media print,screen and (min-width:64em){.large-1{width:8.33333%}.large-push-1{position:relative;left:8.33333%}.large-pull-1{position:relative;left:-8.33333%}.large-offset-0{margin-left:0}.large-2{width:16.66667%}.large-push-2{position:relative;left:16.66667%}.large-pull-2{position:relative;left:-16.66667%}.large-offset-1{margin-left:8.33333%}.large-3{width:25%}.large-push-3{position:relative;left:25%}.large-pull-3{position:relative;left:-25%}.large-offset-2{margin-left:16.66667%}.large-4{width:33.33333%}.large-push-4{position:relative;left:33.33333%}.large-pull-4{position:relative;left:-33.33333%}.large-offset-3{margin-left:25%}.large-5{width:41.66667%}.large-push-5{position:relative;left:41.66667%}.large-pull-5{position:relative;left:-41.66667%}.large-offset-4{margin-left:33.33333%}.large-6{width:50%}.large-push-6{position:relative;left:50%}.large-pull-6{position:relative;left:-50%}.large-offset-5{margin-left:41.66667%}.large-7{width:58.33333%}.large-push-7{position:relative;left:58.33333%}.large-pull-7{position:relative;left:-58.33333%}.large-offset-6{margin-left:50%}.large-8{width:66.66667%}.large-push-8{position:relative;left:66.66667%}.large-pull-8{position:relative;left:-66.66667%}.large-offset-7{margin-left:58.33333%}.large-9{width:75%}.large-push-9{position:relative;left:75%}.large-pull-9{position:relative;left:-75%}.large-offset-8{margin-left:66.66667%}.large-10{width:83.33333%}.large-push-10{position:relative;left:83.33333%}.large-pull-10{position:relative;left:-83.33333%}.large-offset-9{margin-left:75%}.large-11{width:91.66667%}.large-push-11{position:relative;left:91.66667%}.large-pull-11{position:relative;left:-91.66667%}.large-offset-10{margin-left:83.33333%}.large-12{width:100%}.large-offset-11{margin-left:91.66667%}.large-up-1>.column,.large-up-1>.columns{float:left;width:100%}.large-up-1>.column:nth-of-type(1n),.large-up-1>.columns:nth-of-type(1n){clear:none}.large-up-1>.column:nth-of-type(1n+1),.large-up-1>.columns:nth-of-type(1n+1){clear:both}.large-up-1>.column:last-child,.large-up-1>.columns:last-child{float:left}.large-up-2>.column,.large-up-2>.columns{float:left;width:50%}.large-up-2>.column:nth-of-type(1n),.large-up-2>.columns:nth-of-type(1n){clear:none}.large-up-2>.column:nth-of-type(2n+1),.large-up-2>.columns:nth-of-type(2n+1){clear:both}.large-up-2>.column:last-child,.large-up-2>.columns:last-child{float:left}.large-up-3>.column,.large-up-3>.columns{float:left;width:33.33333%}.large-up-3>.column:nth-of-type(1n),.large-up-3>.columns:nth-of-type(1n){clear:none}.large-up-3>.column:nth-of-type(3n+1),.large-up-3>.columns:nth-of-type(3n+1){clear:both}.large-up-3>.column:last-child,.large-up-3>.columns:last-child{float:left}.large-up-4>.column,.large-up-4>.columns{float:left;width:25%}.large-up-4>.column:nth-of-type(1n),.large-up-4>.columns:nth-of-type(1n){clear:none}.large-up-4>.column:nth-of-type(4n+1),.large-up-4>.columns:nth-of-type(4n+1){clear:both}.large-up-4>.column:last-child,.large-up-4>.columns:last-child{float:left}.large-up-5>.column,.large-up-5>.columns{float:left;width:20%}.large-up-5>.column:nth-of-type(1n),.large-up-5>.columns:nth-of-type(1n){clear:none}.large-up-5>.column:nth-of-type(5n+1),.large-up-5>.columns:nth-of-type(5n+1){clear:both}.large-up-5>.column:last-child,.large-up-5>.columns:last-child{float:left}.large-up-6>.column,.large-up-6>.columns{float:left;width:16.66667%}.large-up-6>.column:nth-of-type(1n),.large-up-6>.columns:nth-of-type(1n){clear:none}.large-up-6>.column:nth-of-type(6n+1),.large-up-6>.columns:nth-of-type(6n+1){clear:both}.large-up-6>.column:last-child,.large-up-6>.columns:last-child{float:left}.large-up-7>.column,.large-up-7>.columns{float:left;width:14.28571%}.large-up-7>.column:nth-of-type(1n),.large-up-7>.columns:nth-of-type(1n){clear:none}.large-up-7>.column:nth-of-type(7n+1),.large-up-7>.columns:nth-of-type(7n+1){clear:both}.large-up-7>.column:last-child,.large-up-7>.columns:last-child{float:left}.large-up-8>.column,.large-up-8>.columns{float:left;width:12.5%}.large-up-8>.column:nth-of-type(1n),.large-up-8>.columns:nth-of-type(1n){clear:none}.large-up-8>.column:nth-of-type(8n+1),.large-up-8>.columns:nth-of-type(8n+1){clear:both}.large-up-8>.column:last-child,.large-up-8>.columns:last-child{float:left}.large-collapse>.column,.large-collapse>.columns{padding-right:0;padding-left:0}.large-collapse .row{margin-right:0;margin-left:0}.expanded.row .large-collapse.row{margin-right:0;margin-left:0}.large-uncollapse>.column,.large-uncollapse>.columns{padding-right:.9375rem;padding-left:.9375rem}.large-centered{margin-right:auto;margin-left:auto}.large-centered,.large-centered:last-child:not(:first-child){float:none;clear:both}.large-uncentered,.large-push-0,.large-pull-0{position:static;float:left;margin-right:0;margin-left:0}}.column-block{margin-bottom:1.25rem}.column-block>:last-child{margin-bottom:0}@media print,screen and (min-width:40em){.column-block{margin-bottom:1.875rem}.column-block>:last-child{margin-bottom:0}}div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0}p{margin-bottom:1rem;font-size:inherit;line-height:1.6;text-rendering:optimizeLegibility}em,i{font-style:italic;line-height:inherit}strong,b{font-weight:700;line-height:inherit}small{font-size:80%;line-height:inherit}h1,h2,h3,h4,h5,h6{font-family:"Helvetica Neue",Helvetica,Roboto,Arial,sans-serif;font-style:normal;font-weight:400;color:inherit;text-rendering:optimizeLegibility}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small{line-height:0;color:#cacaca}h1{font-size:1.5rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h2{font-size:1.25rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h3{font-size:1.1875rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h4{font-size:1.125rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h5{font-size:1.0625rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}h6{font-size:1rem;line-height:1.4;margin-top:0;margin-bottom:.5rem}@media print,screen and (min-width:40em){h1{font-size:3rem}h2{font-size:2.5rem}h3{font-size:1.9375rem}h4{font-size:1.5625rem}h5{font-size:1.25rem}h6{font-size:1rem}}a{line-height:inherit;color:#1779ba;text-decoration:none;cursor:pointer}a:hover,a:focus{color:#1468a0}a img{border:0}hr{clear:both;max-width:75rem;height:0;margin:1.25rem auto;border-top:0;border-right:0;border-bottom:1px solid #cacaca;border-left:0}ul,ol,dl{margin-bottom:1rem;list-style-position:outside;line-height:1.6}li{font-size:inherit}ul{margin-left:1.25rem;list-style-type:disc}ol{margin-left:1.25rem}ul ul,ol ul,ul ol,ol ol{margin-left:1.25rem;margin-bottom:0}dl{margin-bottom:1rem}dl dt{margin-bottom:.3rem;font-weight:700}blockquote{margin:0 0 1rem;padding:.5625rem 1.25rem 0 1.1875rem;border-left:1px solid #cacaca}blockquote,blockquote p{line-height:1.6;color:#8a8a8a}cite{display:block;font-size:.8125rem;color:#8a8a8a}cite:before{content:"— "}abbr{border-bottom:1px dotted #0a0a0a;color:#0a0a0a;cursor:help}figure{margin:0}code{padding:.125rem .3125rem .0625rem;border:1px solid #cacaca;background-color:#e6e6e6;font-family:Consolas,"Liberation Mono",Courier,monospace;font-weight:400;color:#0a0a0a}kbd{margin:0;padding:.125rem .25rem 0;background-color:#e6e6e6;font-family:Consolas,"Liberation Mono",Courier,monospace;color:#0a0a0a}.subheader{margin-top:.2rem;margin-bottom:.5rem;font-weight:400;line-height:1.4;color:#8a8a8a}.lead{font-size:125%;line-height:1.6}.stat{font-size:2.5rem;line-height:1}p+.stat{margin-top:-1rem}.no-bullet{margin-left:0;list-style:none}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}@media print,screen and (min-width:40em){.medium-text-left{text-align:left}.medium-text-right{text-align:right}.medium-text-center{text-align:center}.medium-text-justify{text-align:justify}}@media print,screen and (min-width:64em){.large-text-left{text-align:left}.large-text-right{text-align:right}.large-text-center{text-align:center}.large-text-justify{text-align:justify}}.show-for-print{display:none !important}@media print{*{background:0 0 !important;box-shadow:none !important;color:#000 !important;text-shadow:none !important}.show-for-print{display:block !important}.hide-for-print{display:none !important}table.show-for-print{display:table !important}thead.show-for-print{display:table-header-group !important}tbody.show-for-print{display:table-row-group !important}tr.show-for-print{display:table-row !important}td.show-for-print{display:table-cell !important}th.show-for-print{display:table-cell !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}.ir a:after,a[href^='javascript:']:after,a[href^='#']:after{content:''}abbr[title]:after{content:" (" attr(title) ")"}pre,blockquote{border:1px solid #8a8a8a;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}@page{margin:.5cm}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}}.button{display:inline-block;vertical-align:middle;margin:0 0 1rem;padding:.85em 1em;-webkit-appearance:none;border:1px solid transparent;border-radius:0;transition:background-color .25s ease-out,color .25s ease-out;font-size:.9rem;line-height:1;text-align:center;cursor:pointer;background-color:#1779ba;color:#fefefe}[data-whatinput=mouse] .button{outline:0}.button:hover,.button:focus{background-color:#14679e;color:#fefefe}.button.tiny{font-size:.6rem}.button.small{font-size:.75rem}.button.large{font-size:1.25rem}.button.expanded{display:block;width:100%;margin-right:0;margin-left:0}.button.primary{background-color:#1779ba;color:#fefefe}.button.primary:hover,.button.primary:focus{background-color:#126195;color:#fefefe}.button.secondary{background-color:#767676;color:#fefefe}.button.secondary:hover,.button.secondary:focus{background-color:#5e5e5e;color:#fefefe}.button.success{background-color:#3adb76;color:#0a0a0a}.button.success:hover,.button.success:focus{background-color:#22bb5b;color:#0a0a0a}.button.warning{background-color:#ffae00;color:#0a0a0a}.button.warning:hover,.button.warning:focus{background-color:#cc8b00;color:#0a0a0a}.button.alert{background-color:#cc4b37;color:#fefefe}.button.alert:hover,.button.alert:focus{background-color:#a53b2a;color:#fefefe}.button.hollow{border:1px solid #1779ba;color:#1779ba}.button.hollow,.button.hollow:hover,.button.hollow:focus{background-color:transparent}.button.hollow:hover,.button.hollow:focus{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.primary{border:1px solid #1779ba;color:#1779ba}.button.hollow.primary:hover,.button.hollow.primary:focus{border-color:#0c3d5d;color:#0c3d5d}.button.hollow.secondary{border:1px solid #767676;color:#767676}.button.hollow.secondary:hover,.button.hollow.secondary:focus{border-color:#3b3b3b;color:#3b3b3b}.button.hollow.success{border:1px solid #3adb76;color:#3adb76}.button.hollow.success:hover,.button.hollow.success:focus{border-color:#157539;color:#157539}.button.hollow.warning{border:1px solid #ffae00;color:#ffae00}.button.hollow.warning:hover,.button.hollow.warning:focus{border-color:#805700;color:#805700}.button.hollow.alert{border:1px solid #cc4b37;color:#cc4b37}.button.hollow.alert:hover,.button.hollow.alert:focus{border-color:#67251a;color:#67251a}.button.disabled,.button[disabled]{opacity:.25;cursor:not-allowed}.button.disabled,.button.disabled:hover,.button.disabled:focus,.button[disabled],.button[disabled]:hover,.button[disabled]:focus{background-color:#1779ba;color:#fefefe}.button.disabled.primary,.button[disabled].primary{opacity:.25;cursor:not-allowed}.button.disabled.primary,.button.disabled.primary:hover,.button.disabled.primary:focus,.button[disabled].primary,.button[disabled].primary:hover,.button[disabled].primary:focus{background-color:#1779ba;color:#fefefe}.button.disabled.secondary,.button[disabled].secondary{opacity:.25;cursor:not-allowed}.button.disabled.secondary,.button.disabled.secondary:hover,.button.disabled.secondary:focus,.button[disabled].secondary,.button[disabled].secondary:hover,.button[disabled].secondary:focus{background-color:#767676;color:#fefefe}.button.disabled.success,.button[disabled].success{opacity:.25;cursor:not-allowed}.button.disabled.success,.button.disabled.success:hover,.button.disabled.success:focus,.button[disabled].success,.button[disabled].success:hover,.button[disabled].success:focus{background-color:#3adb76;color:#0a0a0a}.button.disabled.warning,.button[disabled].warning{opacity:.25;cursor:not-allowed}.button.disabled.warning,.button.disabled.warning:hover,.button.disabled.warning:focus,.button[disabled].warning,.button[disabled].warning:hover,.button[disabled].warning:focus{background-color:#ffae00;color:#0a0a0a}.button.disabled.alert,.button[disabled].alert{opacity:.25;cursor:not-allowed}.button.disabled.alert,.button.disabled.alert:hover,.button.disabled.alert:focus,.button[disabled].alert,.button[disabled].alert:hover,.button[disabled].alert:focus{background-color:#cc4b37;color:#fefefe}.button.dropdown:after{display:block;width:0;height:0;border:inset .4em;content:'';border-bottom-width:0;border-top-style:solid;border-color:#fefefe transparent transparent;position:relative;top:.4em;display:inline-block;float:right;margin-left:1em}.button.arrow-only:after{top:-.1em;float:none;margin-left:0}[type=text],[type=password],[type=date],[type=datetime],[type=datetime-local],[type=month],[type=week],[type=email],[type=number],[type=search],[type=tel],[type=time],[type=url],[type=color],textarea{display:block;box-sizing:border-box;width:100%;height:2.4375rem;margin:0 0 1rem;padding:.5rem;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;box-shadow:inset 0 1px 2px rgba(10,10,10,.1);font-family:inherit;font-size:1rem;font-weight:400;color:#0a0a0a;transition:box-shadow .5s,border-color .25s ease-in-out;-webkit-appearance:none;-moz-appearance:none;appearance:none}[type=text]:focus,[type=password]:focus,[type=date]:focus,[type=datetime]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=week]:focus,[type=email]:focus,[type=number]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=url]:focus,[type=color]:focus,textarea:focus{outline:none;border:1px solid #8a8a8a;background-color:#fefefe;box-shadow:0 0 5px #cacaca;transition:box-shadow .5s,border-color .25s ease-in-out}textarea{max-width:100%}textarea[rows]{height:auto}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#cacaca}input::-moz-placeholder,textarea::-moz-placeholder{color:#cacaca}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#cacaca}input::placeholder,textarea::placeholder{color:#cacaca}input:disabled,input[readonly],textarea:disabled,textarea[readonly]{background-color:#e6e6e6;cursor:not-allowed}[type=submit],[type=button]{-webkit-appearance:none;-moz-appearance:none;appearance:none;border-radius:0}input[type=search]{box-sizing:border-box}[type=file],[type=checkbox],[type=radio]{margin:0 0 1rem}[type=checkbox]+label,[type=radio]+label{display:inline-block;vertical-align:baseline;margin-left:.5rem;margin-right:1rem;margin-bottom:0}[type=checkbox]+label[for],[type=radio]+label[for]{cursor:pointer}label>[type=checkbox],label>[type=radio]{margin-right:.5rem}[type=file]{width:100%}label{display:block;margin:0;font-size:.875rem;font-weight:400;line-height:1.8;color:#0a0a0a}label.middle{margin:0 0 1rem;padding:.5625rem 0}.help-text{margin-top:-.5rem;font-size:.8125rem;font-style:italic;color:#0a0a0a}.input-group{display:table;width:100%;margin-bottom:1rem}.input-group>:first-child{border-radius:0}.input-group>:last-child>*{border-radius:0}.input-group-label,.input-group-field,.input-group-button,.input-group-button a,.input-group-button input,.input-group-button button,.input-group-button label{margin:0;white-space:nowrap;display:table-cell;vertical-align:middle}.input-group-label{padding:0 1rem;border:1px solid #cacaca;background:#e6e6e6;color:#0a0a0a;text-align:center;white-space:nowrap;width:1%;height:100%}.input-group-label:first-child{border-right:0}.input-group-label:last-child{border-left:0}.input-group-field{border-radius:0;height:2.5rem}.input-group-button{padding-top:0;padding-bottom:0;text-align:center;width:1%;height:100%}.input-group-button a,.input-group-button input,.input-group-button button,.input-group-button label{height:2.5rem;padding-top:0;padding-bottom:0;font-size:1rem}.input-group .input-group-button{display:table-cell}fieldset{margin:0;padding:0;border:0}legend{max-width:100%;margin-bottom:.5rem}.fieldset{margin:1.125rem 0;padding:1.25rem;border:1px solid #cacaca}.fieldset legend{margin:0;margin-left:-.1875rem;padding:0 .1875rem;background:#fefefe}select{height:2.4375rem;margin:0 0 1rem;padding:.5rem;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;font-family:inherit;font-size:1rem;line-height:normal;color:#0a0a0a;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>");background-origin:content-box;background-position:right -1rem center;background-repeat:no-repeat;background-size:9px 6px;padding-right:1.5rem;transition:box-shadow .5s,border-color .25s ease-in-out}@media screen and (min-width:0\0){select{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg==")}}select:focus{outline:none;border:1px solid #8a8a8a;background-color:#fefefe;box-shadow:0 0 5px #cacaca;transition:box-shadow .5s,border-color .25s ease-in-out}select:disabled{background-color:#e6e6e6;cursor:not-allowed}select::-ms-expand{display:none}select[multiple]{height:auto;background-image:none}.is-invalid-input:not(:focus){border-color:#cc4b37;background-color:#f9ecea}.is-invalid-input:not(:focus)::-webkit-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::-moz-placeholder{color:#cc4b37}.is-invalid-input:not(:focus):-ms-input-placeholder{color:#cc4b37}.is-invalid-input:not(:focus)::placeholder{color:#cc4b37}.is-invalid-label{color:#cc4b37}.form-error{display:none;margin-top:-.5rem;margin-bottom:1rem;font-size:.75rem;font-weight:700;color:#cc4b37}.form-error.is-visible{display:block}.accordion{margin-left:0;background:#fefefe;list-style-type:none}.accordion-item:first-child>:first-child{border-radius:0}.accordion-item:last-child>:last-child{border-radius:0}.accordion-title{position:relative;display:block;padding:1.25rem 1rem;border:1px solid #e6e6e6;border-bottom:0;font-size:.75rem;line-height:1;color:#1779ba}:last-child:not(.is-active)>.accordion-title{border-bottom:1px solid #e6e6e6;border-radius:0}.accordion-title:hover,.accordion-title:focus{background-color:#e6e6e6}.accordion-title:before{position:absolute;top:50%;right:1rem;margin-top:-.5rem;content:'+'}.is-active>.accordion-title:before{content:'\2013'}.accordion-content{display:none;padding:1rem;border:1px solid #e6e6e6;border-bottom:0;background-color:#fefefe;color:#0a0a0a}:last-child>.accordion-content:last-child{border-bottom:1px solid #e6e6e6}.is-accordion-submenu-parent>a{position:relative}.is-accordion-submenu-parent>a:after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;position:absolute;top:50%;margin-top:-3px;right:1rem}.is-accordion-submenu-parent[aria-expanded=true]>a:after{-ms-transform:rotate(180deg);transform:rotate(180deg);-ms-transform-origin:50% 50%;transform-origin:50% 50%}.badge{display:inline-block;min-width:2.1em;padding:.3em;border-radius:50%;font-size:.6rem;text-align:center;background:#1779ba;color:#fefefe}.badge.primary{background:#1779ba;color:#fefefe}.badge.secondary{background:#767676;color:#fefefe}.badge.success{background:#3adb76;color:#0a0a0a}.badge.warning{background:#ffae00;color:#0a0a0a}.badge.alert{background:#cc4b37;color:#fefefe}.breadcrumbs{margin:0 0 1rem;list-style:none}.breadcrumbs:before,.breadcrumbs:after{display:table;content:' '}.breadcrumbs:after{clear:both}.breadcrumbs li{float:left;font-size:.6875rem;color:#0a0a0a;cursor:default;text-transform:uppercase}.breadcrumbs li:not(:last-child):after{position:relative;top:1px;margin:0 .75rem;opacity:1;content:"/";color:#cacaca}.breadcrumbs a{color:#1779ba}.breadcrumbs a:hover{text-decoration:underline}.breadcrumbs .disabled{color:#cacaca;cursor:not-allowed}.button-group{margin-bottom:1rem;font-size:0}.button-group:before,.button-group:after{display:table;content:' '}.button-group:after{clear:both}.button-group .button{margin:0;margin-right:1px;margin-bottom:1px;font-size:.9rem}.button-group .button:last-child{margin-right:0}.button-group.tiny .button{font-size:.6rem}.button-group.small .button{font-size:.75rem}.button-group.large .button{font-size:1.25rem}.button-group.expanded{margin-right:-1px}.button-group.expanded:before,.button-group.expanded:after{display:none}.button-group.expanded .button:first-child:last-child{width:100%}.button-group.expanded .button:first-child:nth-last-child(2),.button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2)~.button{display:inline-block;width:calc(50% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(2):last-child,.button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2)~.button:last-child{margin-right:-6px}.button-group.expanded .button:first-child:nth-last-child(3),.button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3)~.button{display:inline-block;width:calc(33.33333% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(3):last-child,.button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3)~.button:last-child{margin-right:-6px}.button-group.expanded .button:first-child:nth-last-child(4),.button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4)~.button{display:inline-block;width:calc(25% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(4):last-child,.button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4)~.button:last-child{margin-right:-6px}.button-group.expanded .button:first-child:nth-last-child(5),.button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5)~.button{display:inline-block;width:calc(20% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(5):last-child,.button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5)~.button:last-child{margin-right:-6px}.button-group.expanded .button:first-child:nth-last-child(6),.button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6)~.button{display:inline-block;width:calc(16.66667% - 1px);margin-right:1px}.button-group.expanded .button:first-child:nth-last-child(6):last-child,.button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6)~.button:last-child{margin-right:-6px}.button-group.primary .button{background-color:#1779ba;color:#fefefe}.button-group.primary .button:hover,.button-group.primary .button:focus{background-color:#126195;color:#fefefe}.button-group.secondary .button{background-color:#767676;color:#fefefe}.button-group.secondary .button:hover,.button-group.secondary .button:focus{background-color:#5e5e5e;color:#fefefe}.button-group.success .button{background-color:#3adb76;color:#0a0a0a}.button-group.success .button:hover,.button-group.success .button:focus{background-color:#22bb5b;color:#0a0a0a}.button-group.warning .button{background-color:#ffae00;color:#0a0a0a}.button-group.warning .button:hover,.button-group.warning .button:focus{background-color:#cc8b00;color:#0a0a0a}.button-group.alert .button{background-color:#cc4b37;color:#fefefe}.button-group.alert .button:hover,.button-group.alert .button:focus{background-color:#a53b2a;color:#fefefe}.button-group.stacked .button,.button-group.stacked-for-small .button,.button-group.stacked-for-medium .button{width:100%}.button-group.stacked .button:last-child,.button-group.stacked-for-small .button:last-child,.button-group.stacked-for-medium .button:last-child{margin-bottom:0}@media print,screen and (min-width:40em){.button-group.stacked-for-small .button{width:auto;margin-bottom:0}}@media print,screen and (min-width:64em){.button-group.stacked-for-medium .button{width:auto;margin-bottom:0}}@media screen and (max-width:39.9375em){.button-group.stacked-for-small.expanded{display:block}.button-group.stacked-for-small.expanded .button{display:block;margin-right:0}}.card{margin-bottom:1rem;border:1px solid #e6e6e6;border-radius:0;background:#fefefe;box-shadow:none;overflow:hidden;color:#0a0a0a}.card>:last-child{margin-bottom:0}.card-divider{padding:1rem;background:#e6e6e6}.card-divider>:last-child{margin-bottom:0}.card-section{padding:1rem}.card-section>:last-child{margin-bottom:0}.callout{position:relative;margin:0 0 1rem;padding:1rem;border:1px solid rgba(10,10,10,.25);border-radius:0;background-color:#fff;color:#0a0a0a}.callout>:first-child{margin-top:0}.callout>:last-child{margin-bottom:0}.callout.primary{background-color:#d7ecfa;color:#0a0a0a}.callout.secondary{background-color:#eaeaea;color:#0a0a0a}.callout.success{background-color:#e1faea;color:#0a0a0a}.callout.warning{background-color:#fff3d9;color:#0a0a0a}.callout.alert{background-color:#f7e4e1;color:#0a0a0a}.callout.small{padding-top:.5rem;padding-right:.5rem;padding-bottom:.5rem;padding-left:.5rem}.callout.large{padding-top:3rem;padding-right:3rem;padding-bottom:3rem;padding-left:3rem}.close-button{position:absolute;color:#8a8a8a;cursor:pointer}[data-whatinput=mouse] .close-button{outline:0}.close-button:hover,.close-button:focus{color:#0a0a0a}.close-button.small{right:.66rem;top:.33em;font-size:1.5em;line-height:1}.close-button,.close-button.medium{right:1rem;top:.5rem;font-size:2em;line-height:1}.menu{margin:0;list-style-type:none}.menu>li{display:table-cell;vertical-align:middle}[data-whatinput=mouse] .menu>li{outline:0}.menu>li>a{display:block;padding:.7rem 1rem;line-height:1}.menu input,.menu select,.menu a,.menu button{margin-bottom:0}.menu>li>a img,.menu>li>a i,.menu>li>a svg{vertical-align:middle}.menu>li>a img+span,.menu>li>a i+span,.menu>li>a svg+span{vertical-align:middle}.menu>li>a img,.menu>li>a i,.menu>li>a svg{margin-right:.25rem;display:inline-block}.menu>li,.menu.horizontal>li{display:table-cell}.menu.expanded{display:table;width:100%;table-layout:fixed}.menu.expanded>li:first-child:last-child{width:100%}.menu.vertical>li{display:block}@media print,screen and (min-width:40em){.menu.medium-horizontal>li{display:table-cell}.menu.medium-expanded{display:table;width:100%;table-layout:fixed}.menu.medium-expanded>li:first-child:last-child{width:100%}.menu.medium-vertical>li{display:block}}@media print,screen and (min-width:64em){.menu.large-horizontal>li{display:table-cell}.menu.large-expanded{display:table;width:100%;table-layout:fixed}.menu.large-expanded>li:first-child:last-child{width:100%}.menu.large-vertical>li{display:block}}.menu.simple li{display:inline-block;vertical-align:top;line-height:1}.menu.simple a{padding:0}.menu.simple li{margin-left:0;margin-right:1rem}.menu.simple.align-right li{margin-right:0;margin-left:1rem}.menu.align-right:before,.menu.align-right:after{display:table;content:' '}.menu.align-right:after{clear:both}.menu.align-right>li{float:right}.menu.icon-top>li>a{text-align:center}.menu.icon-top>li>a img,.menu.icon-top>li>a i,.menu.icon-top>li>a svg{display:block;margin:0 auto .25rem}.menu.icon-top.vertical a>span{margin:auto}.menu.nested{margin-left:1rem}.menu .active>a{background:#1779ba;color:#fefefe}.menu.menu-bordered li{border:1px solid #e6e6e6}.menu.menu-bordered li:not(:first-child){border-top:0}.menu.menu-hover li:hover{background-color:#e6e6e6}.menu-text{padding-top:0;padding-bottom:0;padding:.7rem 1rem;font-weight:700;line-height:1;color:inherit}.menu-centered{text-align:center}.menu-centered>.menu{display:inline-block;vertical-align:top}.no-js [data-responsive-menu] ul{display:none}.menu-icon{position:relative;display:inline-block;vertical-align:middle;width:20px;height:16px;cursor:pointer}.menu-icon:after{position:absolute;top:0;left:0;display:block;width:100%;height:2px;background:#fefefe;box-shadow:0 7px 0 #fefefe,0 14px 0 #fefefe;content:''}.menu-icon:hover:after{background:#cacaca;box-shadow:0 7px 0 #cacaca,0 14px 0 #cacaca}.menu-icon.dark{position:relative;display:inline-block;vertical-align:middle;width:20px;height:16px;cursor:pointer}.menu-icon.dark:after{position:absolute;top:0;left:0;display:block;width:100%;height:2px;background:#0a0a0a;box-shadow:0 7px 0 #0a0a0a,0 14px 0 #0a0a0a;content:''}.menu-icon.dark:hover:after{background:#8a8a8a;box-shadow:0 7px 0 #8a8a8a,0 14px 0 #8a8a8a}.is-drilldown{position:relative;overflow:hidden}.is-drilldown li{display:block}.is-drilldown.animate-height{transition:height .5s}.is-drilldown-submenu{position:absolute;top:0;left:100%;z-index:-1;width:100%;background:#fefefe;transition:transform .15s linear}.is-drilldown-submenu.is-active{z-index:1;display:block;-ms-transform:translateX(-100%);transform:translateX(-100%)}.is-drilldown-submenu.is-closing{-ms-transform:translateX(100%);transform:translateX(100%)}.drilldown-submenu-cover-previous{min-height:100%}.is-drilldown-submenu-parent>a{position:relative}.is-drilldown-submenu-parent>a:after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba;position:absolute;top:50%;margin-top:-6px;right:1rem}.js-drilldown-back>a:before{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent;border-left-width:0;display:inline-block;vertical-align:middle;margin-right:.75rem;border-left-width:0}.dropdown-pane{position:absolute;z-index:10;display:block;width:300px;padding:1rem;visibility:hidden;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;font-size:1rem}.dropdown-pane.is-open{visibility:visible}.dropdown-pane.tiny{width:100px}.dropdown-pane.small{width:200px}.dropdown-pane.large{width:400px}.dropdown.menu>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu>li.is-dropdown-submenu-parent>a:after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;right:5px;margin-top:-3px}[data-whatinput=mouse] .dropdown.menu a{outline:0}.no-js .dropdown.menu ul{display:none}.dropdown.menu.vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.vertical>li.opens-left>.is-dropdown-submenu{right:100%;left:auto}.dropdown.menu.vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.vertical>li>a:after{right:14px}.dropdown.menu.vertical>li.opens-left>a:after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent}.dropdown.menu.vertical>li.opens-right>a:after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}@media print,screen and (min-width:40em){.dropdown.menu.medium-horizontal>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu.medium-horizontal>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu.medium-horizontal>li.is-dropdown-submenu-parent>a:after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;right:5px;margin-top:-3px}.dropdown.menu.medium-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.medium-vertical>li.opens-left>.is-dropdown-submenu{right:100%;left:auto}.dropdown.menu.medium-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.medium-vertical>li>a:after{right:14px}.dropdown.menu.medium-vertical>li.opens-left>a:after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent}.dropdown.menu.medium-vertical>li.opens-right>a:after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}}@media print,screen and (min-width:64em){.dropdown.menu.large-horizontal>li.opens-left>.is-dropdown-submenu{top:100%;right:0;left:auto}.dropdown.menu.large-horizontal>li.opens-right>.is-dropdown-submenu{top:100%;right:auto;left:0}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a{position:relative;padding-right:1.5rem}.dropdown.menu.large-horizontal>li.is-dropdown-submenu-parent>a:after{display:block;width:0;height:0;border:inset 6px;content:'';border-bottom-width:0;border-top-style:solid;border-color:#1779ba transparent transparent;right:5px;margin-top:-3px}.dropdown.menu.large-vertical>li .is-dropdown-submenu{top:0}.dropdown.menu.large-vertical>li.opens-left>.is-dropdown-submenu{right:100%;left:auto}.dropdown.menu.large-vertical>li.opens-right>.is-dropdown-submenu{right:auto;left:100%}.dropdown.menu.large-vertical>li>a:after{right:14px}.dropdown.menu.large-vertical>li.opens-left>a:after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent}.dropdown.menu.large-vertical>li.opens-right>a:after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}}.dropdown.menu.align-right .is-dropdown-submenu.first-sub{top:100%;right:0;left:auto}.is-dropdown-menu.vertical{width:100px}.is-dropdown-menu.vertical.align-right{float:right}.is-dropdown-submenu-parent{position:relative}.is-dropdown-submenu-parent a:after{position:absolute;top:50%;right:5px;margin-top:-6px}.is-dropdown-submenu-parent.opens-inner>.is-dropdown-submenu{top:100%;left:auto}.is-dropdown-submenu-parent.opens-left>.is-dropdown-submenu{right:100%;left:auto}.is-dropdown-submenu-parent.opens-right>.is-dropdown-submenu{right:auto;left:100%}.is-dropdown-submenu{position:absolute;top:0;left:100%;z-index:1;display:none;min-width:200px;border:1px solid #cacaca;background:#fefefe}.is-dropdown-submenu .is-dropdown-submenu-parent>a:after{right:14px}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left>a:after{display:block;width:0;height:0;border:inset 6px;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #1779ba transparent transparent}.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right>a:after{display:block;width:0;height:0;border:inset 6px;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #1779ba}.is-dropdown-submenu .is-dropdown-submenu{margin-top:-1px}.is-dropdown-submenu>li{width:100%}.is-dropdown-submenu.js-dropdown-active{display:block}.responsive-embed,.flex-video{position:relative;height:0;margin-bottom:1rem;padding-bottom:75%;overflow:hidden}.responsive-embed iframe,.responsive-embed object,.responsive-embed embed,.responsive-embed video,.flex-video iframe,.flex-video object,.flex-video embed,.flex-video video{position:absolute;top:0;left:0;width:100%;height:100%}.responsive-embed.widescreen,.flex-video.widescreen{padding-bottom:56.25%}.label{display:inline-block;padding:.33333rem .5rem;border-radius:0;font-size:.8rem;line-height:1;white-space:nowrap;cursor:default;background:#1779ba;color:#fefefe}.label.primary{background:#1779ba;color:#fefefe}.label.secondary{background:#767676;color:#fefefe}.label.success{background:#3adb76;color:#0a0a0a}.label.warning{background:#ffae00;color:#0a0a0a}.label.alert{background:#cc4b37;color:#fefefe}.media-object{display:block;margin-bottom:1rem}.media-object img{max-width:none}@media screen and (max-width:39.9375em){.media-object.stack-for-small .media-object-section{padding:0;padding-bottom:1rem;display:block}.media-object.stack-for-small .media-object-section img{width:100%}}.media-object-section{display:table-cell;vertical-align:top}.media-object-section:first-child{padding-right:1rem}.media-object-section:last-child:not(:nth-child(2)){padding-left:1rem}.media-object-section>:last-child{margin-bottom:0}.media-object-section.middle{vertical-align:middle}.media-object-section.bottom{vertical-align:bottom}.is-off-canvas-open{overflow:hidden}.js-off-canvas-overlay{position:absolute;top:0;left:0;width:100%;height:100%;transition:opacity .5s ease,visibility .5s ease;background:rgba(254,254,254,.25);opacity:0;visibility:hidden;overflow:hidden}.js-off-canvas-overlay.is-visible{opacity:1;visibility:visible}.js-off-canvas-overlay.is-closable{cursor:pointer}.js-off-canvas-overlay.is-overlay-absolute{position:absolute}.js-off-canvas-overlay.is-overlay-fixed{position:fixed}.off-canvas-wrapper{position:relative;overflow:hidden}.off-canvas{position:fixed;z-index:1;transition:transform .5s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6}[data-whatinput=mouse] .off-canvas{outline:0}.off-canvas.is-transition-overlap{z-index:10}.off-canvas.is-transition-overlap.is-open{box-shadow:0 0 10px rgba(10,10,10,.7)}.off-canvas.is-open{-ms-transform:translate(0,0);transform:translate(0,0)}.off-canvas-absolute{position:absolute;z-index:1;transition:transform .5s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;background:#e6e6e6}[data-whatinput=mouse] .off-canvas-absolute{outline:0}.off-canvas-absolute.is-transition-overlap{z-index:10}.off-canvas-absolute.is-transition-overlap.is-open{box-shadow:0 0 10px rgba(10,10,10,.7)}.off-canvas-absolute.is-open{-ms-transform:translate(0,0);transform:translate(0,0)}.position-left{top:0;left:0;width:250px;height:100%;-ms-transform:translateX(-250px);transform:translateX(-250px);overflow-y:auto}.position-left.is-open~.off-canvas-content{-ms-transform:translateX(250px);transform:translateX(250px)}.position-left.is-transition-push:after{position:absolute;top:0;right:0;height:100%;width:1px;box-shadow:0 0 10px rgba(10,10,10,.7);content:" "}.position-left.is-transition-overlap.is-open~.off-canvas-content{-ms-transform:none;transform:none}.position-right{top:0;right:0;width:250px;height:100%;-ms-transform:translateX(250px);transform:translateX(250px);overflow-y:auto}.position-right.is-open~.off-canvas-content{-ms-transform:translateX(-250px);transform:translateX(-250px)}.position-right.is-transition-push:after{position:absolute;top:0;left:0;height:100%;width:1px;box-shadow:0 0 10px rgba(10,10,10,.7);content:" "}.position-right.is-transition-overlap.is-open~.off-canvas-content{-ms-transform:none;transform:none}.position-top{top:0;left:0;width:100%;height:250px;-ms-transform:translateY(-250px);transform:translateY(-250px);overflow-x:auto}.position-top.is-open~.off-canvas-content{-ms-transform:translateY(250px);transform:translateY(250px)}.position-top.is-transition-push:after{position:absolute;bottom:0;left:0;height:1px;width:100%;box-shadow:0 0 10px rgba(10,10,10,.7);content:" "}.position-top.is-transition-overlap.is-open~.off-canvas-content{-ms-transform:none;transform:none}.position-bottom{bottom:0;left:0;width:100%;height:250px;-ms-transform:translateY(250px);transform:translateY(250px);overflow-x:auto}.position-bottom.is-open~.off-canvas-content{-ms-transform:translateY(-250px);transform:translateY(-250px)}.position-bottom.is-transition-push:after{position:absolute;top:0;left:0;height:1px;width:100%;box-shadow:0 0 10px rgba(10,10,10,.7);content:" "}.position-bottom.is-transition-overlap.is-open~.off-canvas-content{-ms-transform:none;transform:none}.off-canvas-content{transition:transform .5s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden}@media print,screen and (min-width:40em){.position-left.reveal-for-medium{-ms-transform:none;transform:none;z-index:1}.position-left.reveal-for-medium~.off-canvas-content{margin-left:250px}.position-right.reveal-for-medium{-ms-transform:none;transform:none;z-index:1}.position-right.reveal-for-medium~.off-canvas-content{margin-right:250px}.position-top.reveal-for-medium{-ms-transform:none;transform:none;z-index:1}.position-top.reveal-for-medium~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-medium{-ms-transform:none;transform:none;z-index:1}.position-bottom.reveal-for-medium~.off-canvas-content{margin-bottom:250px}}@media print,screen and (min-width:64em){.position-left.reveal-for-large{-ms-transform:none;transform:none;z-index:1}.position-left.reveal-for-large~.off-canvas-content{margin-left:250px}.position-right.reveal-for-large{-ms-transform:none;transform:none;z-index:1}.position-right.reveal-for-large~.off-canvas-content{margin-right:250px}.position-top.reveal-for-large{-ms-transform:none;transform:none;z-index:1}.position-top.reveal-for-large~.off-canvas-content{margin-top:250px}.position-bottom.reveal-for-large{-ms-transform:none;transform:none;z-index:1}.position-bottom.reveal-for-large~.off-canvas-content{margin-bottom:250px}}.orbit{position:relative}.orbit-container{position:relative;height:0;margin:0;list-style:none;overflow:hidden}.orbit-slide{width:100%}.orbit-slide.no-motionui.is-active{top:0;left:0}.orbit-figure{margin:0}.orbit-image{width:100%;max-width:100%;margin:0}.orbit-caption{position:absolute;bottom:0;width:100%;margin-bottom:0;padding:1rem;background-color:rgba(10,10,10,.5);color:#fefefe}.orbit-previous,.orbit-next{position:absolute;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%);z-index:10;padding:1rem;color:#fefefe}[data-whatinput=mouse] .orbit-previous,[data-whatinput=mouse] .orbit-next{outline:0}.orbit-previous:hover,.orbit-next:hover,.orbit-previous:active,.orbit-next:active,.orbit-previous:focus,.orbit-next:focus{background-color:rgba(10,10,10,.5)}.orbit-previous{left:0}.orbit-next{left:auto;right:0}.orbit-bullets{position:relative;margin-top:.8rem;margin-bottom:.8rem;text-align:center}[data-whatinput=mouse] .orbit-bullets{outline:0}.orbit-bullets button{width:1.2rem;height:1.2rem;margin:.1rem;border-radius:50%;background-color:#cacaca}.orbit-bullets button:hover{background-color:#8a8a8a}.orbit-bullets button.is-active{background-color:#8a8a8a}.pagination{margin-left:0;margin-bottom:1rem}.pagination:before,.pagination:after{display:table;content:' '}.pagination:after{clear:both}.pagination li{margin-right:.0625rem;border-radius:0;font-size:.875rem;display:none}.pagination li:last-child,.pagination li:first-child{display:inline-block}@media print,screen and (min-width:40em){.pagination li{display:inline-block}}.pagination a,.pagination button{display:block;padding:.1875rem .625rem;border-radius:0;color:#0a0a0a}.pagination a:hover,.pagination button:hover{background:#e6e6e6}.pagination .current{padding:.1875rem .625rem;background:#1779ba;color:#fefefe;cursor:default}.pagination .disabled{padding:.1875rem .625rem;color:#cacaca;cursor:not-allowed}.pagination .disabled:hover{background:0 0}.pagination .ellipsis:after{padding:.1875rem .625rem;content:'\2026';color:#0a0a0a}.pagination-previous a:before,.pagination-previous.disabled:before{display:inline-block;margin-right:.5rem;content:'\00ab'}.pagination-next a:after,.pagination-next.disabled:after{display:inline-block;margin-left:.5rem;content:'\00bb'}.progress{height:1rem;margin-bottom:1rem;border-radius:0;background-color:#cacaca}.progress.primary .progress-meter{background-color:#1779ba}.progress.secondary .progress-meter{background-color:#767676}.progress.success .progress-meter{background-color:#3adb76}.progress.warning .progress-meter{background-color:#ffae00}.progress.alert .progress-meter{background-color:#cc4b37}.progress-meter{position:relative;display:block;width:0;height:100%;background-color:#1779ba}.progress-meter-text{position:absolute;top:50%;left:50%;-ms-transform:translate(-50%,-50%);transform:translate(-50%,-50%);position:absolute;margin:0;font-size:.75rem;font-weight:700;color:#fefefe;white-space:nowrap}body.is-reveal-open{overflow:hidden}html.is-reveal-open,html.is-reveal-open body{min-height:100%;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.reveal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1005;display:none;background-color:rgba(10,10,10,.45);overflow-y:scroll}.reveal{z-index:1006;-webkit-backface-visibility:hidden;backface-visibility:hidden;display:none;padding:1rem;border:1px solid #cacaca;border-radius:0;background-color:#fefefe;position:relative;top:100px;margin-right:auto;margin-left:auto;overflow-y:auto}[data-whatinput=mouse] .reveal{outline:0}@media print,screen and (min-width:40em){.reveal{min-height:0}}.reveal .column,.reveal .columns,.reveal .columns{min-width:0}.reveal>:last-child{margin-bottom:0}@media print,screen and (min-width:40em){.reveal{width:600px;max-width:75rem}}@media print,screen and (min-width:40em){.reveal .reveal{right:auto;left:auto;margin:0 auto}}.reveal.collapse{padding:0}@media print,screen and (min-width:40em){.reveal.tiny{width:30%;max-width:75rem}}@media print,screen and (min-width:40em){.reveal.small{width:50%;max-width:75rem}}@media print,screen and (min-width:40em){.reveal.large{width:90%;max-width:75rem}}.reveal.full{top:0;left:0;width:100%;max-width:none;height:100%;height:100vh;min-height:100vh;margin-left:0;border:0;border-radius:0}@media screen and (max-width:39.9375em){.reveal{top:0;left:0;width:100%;max-width:none;height:100%;height:100vh;min-height:100vh;margin-left:0;border:0;border-radius:0}}.reveal.without-overlay{position:fixed}.slider{position:relative;height:.5rem;margin-top:1.25rem;margin-bottom:2.25rem;background-color:#e6e6e6;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-touch-action:none;touch-action:none}.slider-fill{position:absolute;top:0;left:0;display:inline-block;max-width:100%;height:.5rem;background-color:#cacaca;transition:all .2s ease-in-out}.slider-fill.is-dragging{transition:all 0s linear}.slider-handle{position:absolute;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%);position:absolute;left:0;z-index:1;display:inline-block;width:1.4rem;height:1.4rem;border-radius:0;background-color:#1779ba;transition:all .2s ease-in-out;-ms-touch-action:manipulation;touch-action:manipulation}[data-whatinput=mouse] .slider-handle{outline:0}.slider-handle:hover{background-color:#14679e}.slider-handle.is-dragging{transition:all 0s linear}.slider.disabled,.slider[disabled]{opacity:.25;cursor:not-allowed}.slider.vertical{display:inline-block;width:.5rem;height:12.5rem;margin:0 1.25rem;-ms-transform:scale(1,-1);transform:scale(1,-1)}.slider.vertical .slider-fill{top:0;width:.5rem;max-height:100%}.slider.vertical .slider-handle{position:absolute;top:0;left:50%;width:1.4rem;height:1.4rem;-ms-transform:translateX(-50%);transform:translateX(-50%)}.sticky-container{position:relative}.sticky{position:relative;z-index:0;transform:translate3d(0,0,0)}.sticky.is-stuck{position:fixed;z-index:5}.sticky.is-stuck.is-at-top{top:0}.sticky.is-stuck.is-at-bottom{bottom:0}.sticky.is-anchored{position:relative;right:auto;left:auto}.sticky.is-anchored.is-at-bottom{bottom:0}.switch{height:2rem;position:relative;margin-bottom:1rem;outline:0;font-size:.875rem;font-weight:700;color:#fefefe;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.switch-input{position:absolute;margin-bottom:0;opacity:0}.switch-paddle{position:relative;display:block;width:4rem;height:2rem;border-radius:0;background:#cacaca;transition:all .25s ease-out;font-weight:inherit;color:inherit;cursor:pointer}input+.switch-paddle{margin:0}.switch-paddle:after{position:absolute;top:.25rem;left:.25rem;display:block;width:1.5rem;height:1.5rem;transform:translate3d(0,0,0);border-radius:0;background:#fefefe;transition:all .25s ease-out;content:''}input:checked~.switch-paddle{background:#1779ba}input:checked~.switch-paddle:after{left:2.25rem}[data-whatinput=mouse] input:focus~.switch-paddle{outline:0}.switch-active,.switch-inactive{position:absolute;top:50%;-ms-transform:translateY(-50%);transform:translateY(-50%)}.switch-active{left:8%;display:none}input:checked+label>.switch-active{display:block}.switch-inactive{right:15%}input:checked+label>.switch-inactive{display:none}.switch.tiny{height:1.5rem}.switch.tiny .switch-paddle{width:3rem;height:1.5rem;font-size:.625rem}.switch.tiny .switch-paddle:after{top:.25rem;left:.25rem;width:1rem;height:1rem}.switch.tiny input:checked~.switch-paddle:after{left:1.75rem}.switch.small{height:1.75rem}.switch.small .switch-paddle{width:3.5rem;height:1.75rem;font-size:.75rem}.switch.small .switch-paddle:after{top:.25rem;left:.25rem;width:1.25rem;height:1.25rem}.switch.small input:checked~.switch-paddle:after{left:2rem}.switch.large{height:2.5rem}.switch.large .switch-paddle{width:5rem;height:2.5rem;font-size:1rem}.switch.large .switch-paddle:after{top:.25rem;left:.25rem;width:2rem;height:2rem}.switch.large input:checked~.switch-paddle:after{left:2.75rem}table{width:100%;margin-bottom:1rem;border-radius:0}table thead,table tbody,table tfoot{border:1px solid #f1f1f1;background-color:#fefefe}table caption{padding:.5rem .625rem .625rem;font-weight:700}table thead{background:#f8f8f8;color:#0a0a0a}table tfoot{background:#f1f1f1;color:#0a0a0a}table thead tr,table tfoot tr{background:0 0}table thead th,table thead td,table tfoot th,table tfoot td{padding:.5rem .625rem .625rem;font-weight:700;text-align:left}table tbody th,table tbody td{padding:.5rem .625rem .625rem}table tbody tr:nth-child(even){border-bottom:0;background-color:#f1f1f1}table.unstriped tbody{background-color:#fefefe}table.unstriped tbody tr{border-bottom:0;border-bottom:1px solid #f1f1f1;background-color:#fefefe}@media screen and (max-width:63.9375em){table.stack thead{display:none}table.stack tfoot{display:none}table.stack tr,table.stack th,table.stack td{display:block}table.stack td{border-top:0}}table.scroll{display:block;width:100%;overflow-x:auto}table.hover thead tr:hover{background-color:#f3f3f3}table.hover tfoot tr:hover{background-color:#ececec}table.hover tbody tr:hover{background-color:#f9f9f9}table.hover:not(.unstriped) tr:nth-of-type(even):hover{background-color:#ececec}.table-scroll{overflow-x:auto}.table-scroll table{width:auto}.tabs{margin:0;border:1px solid #e6e6e6;background:#fefefe;list-style-type:none}.tabs:before,.tabs:after{display:table;content:' '}.tabs:after{clear:both}.tabs.vertical>li{display:block;float:none;width:auto}.tabs.simple>li>a{padding:0}.tabs.simple>li>a:hover{background:0 0}.tabs.primary{background:#1779ba}.tabs.primary>li>a{color:#fefefe}.tabs.primary>li>a:hover,.tabs.primary>li>a:focus{background:#1673b1}.tabs-title{float:left}.tabs-title>a{display:block;padding:1.25rem 1.5rem;font-size:.75rem;line-height:1;color:#1779ba}.tabs-title>a:hover{background:#fefefe;color:#1468a0}.tabs-title>a:focus,.tabs-title>a[aria-selected=true]{background:#e6e6e6;color:#1779ba}.tabs-content{border:1px solid #e6e6e6;border-top:0;background:#fefefe;color:#0a0a0a;transition:all .5s ease}.tabs-content.vertical{border:1px solid #e6e6e6;border-left:0}.tabs-panel{display:none;padding:1rem}.tabs-panel[aria-hidden=false]{display:block}.thumbnail{display:inline-block;max-width:100%;margin-bottom:1rem;border:solid 4px #fefefe;border-radius:0;box-shadow:0 0 0 1px rgba(10,10,10,.2);line-height:0}a.thumbnail{transition:box-shadow .2s ease-out}a.thumbnail:hover,a.thumbnail:focus{box-shadow:0 0 6px 1px rgba(23,121,186,.5)}a.thumbnail image{box-shadow:none}.title-bar{padding:.5rem;background:#0a0a0a;color:#fefefe}.title-bar:before,.title-bar:after{display:table;content:' '}.title-bar:after{clear:both}.title-bar .menu-icon{margin-left:.25rem;margin-right:.25rem}.title-bar-left{float:left}.title-bar-right{float:right;text-align:right}.title-bar-title{display:inline-block;vertical-align:middle;font-weight:700}.has-tip{position:relative;display:inline-block;border-bottom:dotted 1px #8a8a8a;font-weight:700;cursor:help}.tooltip{position:absolute;top:calc(100% + .6495rem);z-index:1200;max-width:10rem;padding:.75rem;border-radius:0;background-color:#0a0a0a;font-size:80%;color:#fefefe}.tooltip:before{display:block;width:0;height:0;border:inset .75rem;content:'';border-top-width:0;border-bottom-style:solid;border-color:transparent transparent #0a0a0a;position:absolute;bottom:100%;left:50%;-ms-transform:translateX(-50%);transform:translateX(-50%)}.tooltip.top:before{display:block;width:0;height:0;border:inset .75rem;content:'';border-bottom-width:0;border-top-style:solid;border-color:#0a0a0a transparent transparent;top:100%;bottom:auto}.tooltip.left:before{display:block;width:0;height:0;border:inset .75rem;content:'';border-right-width:0;border-left-style:solid;border-color:transparent transparent transparent #0a0a0a;top:50%;bottom:auto;left:100%;-ms-transform:translateY(-50%);transform:translateY(-50%)}.tooltip.right:before{display:block;width:0;height:0;border:inset .75rem;content:'';border-left-width:0;border-right-style:solid;border-color:transparent #0a0a0a transparent transparent;top:50%;right:100%;bottom:auto;left:auto;-ms-transform:translateY(-50%);transform:translateY(-50%)}.top-bar{padding:.5rem}.top-bar:before,.top-bar:after{display:table;content:' '}.top-bar:after{clear:both}.top-bar,.top-bar ul{background-color:#e6e6e6}.top-bar input{max-width:200px;margin-right:1rem}.top-bar .input-group-field{width:100%;margin-right:0}.top-bar input.button{width:auto}.top-bar .top-bar-left,.top-bar .top-bar-right{width:100%}@media print,screen and (min-width:40em){.top-bar .top-bar-left,.top-bar .top-bar-right{width:auto}}@media screen and (max-width:63.9375em){.top-bar.stacked-for-medium .top-bar-left,.top-bar.stacked-for-medium .top-bar-right{width:100%}}@media screen and (max-width:74.9375em){.top-bar.stacked-for-large .top-bar-left,.top-bar.stacked-for-large .top-bar-right{width:100%}}.top-bar-title{display:inline-block;float:left;padding:.5rem 1rem .5rem 0}.top-bar-title .menu-icon{bottom:2px}.top-bar-left{float:left}.top-bar-right{float:right}.hide{display:none !important}.invisible{visibility:hidden}@media screen and (max-width:39.9375em){.hide-for-small-only{display:none !important}}@media screen and (max-width:0em),screen and (min-width:40em){.show-for-small-only{display:none !important}}@media print,screen and (min-width:40em){.hide-for-medium{display:none !important}}@media screen and (max-width:39.9375em){.show-for-medium{display:none !important}}@media screen and (min-width:40em) and (max-width:63.9375em){.hide-for-medium-only{display:none !important}}@media screen and (max-width:39.9375em),screen and (min-width:64em){.show-for-medium-only{display:none !important}}@media print,screen and (min-width:64em){.hide-for-large{display:none !important}}@media screen and (max-width:63.9375em){.show-for-large{display:none !important}}@media screen and (min-width:64em) and (max-width:74.9375em){.hide-for-large-only{display:none !important}}@media screen and (max-width:63.9375em),screen and (min-width:75em){.show-for-large-only{display:none !important}}.show-for-sr,.show-on-focus{position:absolute !important;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.show-on-focus:active,.show-on-focus:focus{position:static !important;width:auto;height:auto;overflow:visible;clip:auto}.show-for-landscape,.hide-for-portrait{display:block !important}@media screen and (orientation:landscape){.show-for-landscape,.hide-for-portrait{display:block !important}}@media screen and (orientation:portrait){.show-for-landscape,.hide-for-portrait{display:none !important}}.hide-for-landscape,.show-for-portrait{display:none !important}@media screen and (orientation:landscape){.hide-for-landscape,.show-for-portrait{display:none !important}}@media screen and (orientation:portrait){.hide-for-landscape,.show-for-portrait{display:block !important}}.float-left{float:left !important}.float-right{float:right !important}.float-center{display:block;margin-right:auto;margin-left:auto}.clearfix:before,.clearfix:after{display:table;content:' '}.clearfix:after{clear:both}.slide-in-down.mui-enter{transition-duration:.5s;transition-timing-function:linear;-ms-transform:translateY(-100%);transform:translateY(-100%);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-down.mui-enter.mui-enter-active{-ms-transform:translateY(0);transform:translateY(0)}.slide-in-left.mui-enter{transition-duration:.5s;transition-timing-function:linear;-ms-transform:translateX(-100%);transform:translateX(-100%);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-left.mui-enter.mui-enter-active{-ms-transform:translateX(0);transform:translateX(0)}.slide-in-up.mui-enter{transition-duration:.5s;transition-timing-function:linear;-ms-transform:translateY(100%);transform:translateY(100%);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-up.mui-enter.mui-enter-active{-ms-transform:translateY(0);transform:translateY(0)}.slide-in-right.mui-enter{transition-duration:.5s;transition-timing-function:linear;-ms-transform:translateX(100%);transform:translateX(100%);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-in-right.mui-enter.mui-enter-active{-ms-transform:translateX(0);transform:translateX(0)}.slide-out-down.mui-leave{transition-duration:.5s;transition-timing-function:linear;-ms-transform:translateY(0);transform:translateY(0);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-down.mui-leave.mui-leave-active{-ms-transform:translateY(100%);transform:translateY(100%)}.slide-out-right.mui-leave{transition-duration:.5s;transition-timing-function:linear;-ms-transform:translateX(0);transform:translateX(0);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-right.mui-leave.mui-leave-active{-ms-transform:translateX(100%);transform:translateX(100%)}.slide-out-up.mui-leave{transition-duration:.5s;transition-timing-function:linear;-ms-transform:translateY(0);transform:translateY(0);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-up.mui-leave.mui-leave-active{-ms-transform:translateY(-100%);transform:translateY(-100%)}.slide-out-left.mui-leave{transition-duration:.5s;transition-timing-function:linear;-ms-transform:translateX(0);transform:translateX(0);transition-property:transform,opacity;-webkit-backface-visibility:hidden;backface-visibility:hidden}.slide-out-left.mui-leave.mui-leave-active{-ms-transform:translateX(-100%);transform:translateX(-100%)}.fade-in.mui-enter{transition-duration:.5s;transition-timing-function:linear;opacity:0;transition-property:opacity}.fade-in.mui-enter.mui-enter-active{opacity:1}.fade-out.mui-leave{transition-duration:.5s;transition-timing-function:linear;opacity:1;transition-property:opacity}.fade-out.mui-leave.mui-leave-active{opacity:0}.hinge-in-from-top.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);-ms-transform-origin:top;transform-origin:top;transition-property:transform,opacity;opacity:0}.hinge-in-from-top.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-right.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);-ms-transform-origin:right;transform-origin:right;transition-property:transform,opacity;opacity:0}.hinge-in-from-right.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-bottom.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateX(90deg);-ms-transform-origin:bottom;transform-origin:bottom;transition-property:transform,opacity;opacity:0}.hinge-in-from-bottom.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-left.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateY(90deg);-ms-transform-origin:left;transform-origin:left;transition-property:transform,opacity;opacity:0}.hinge-in-from-left.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-x.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateX(-90deg);-ms-transform-origin:center;transform-origin:center;transition-property:transform,opacity;opacity:0}.hinge-in-from-middle-x.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-in-from-middle-y.mui-enter{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotateY(-90deg);-ms-transform-origin:center;transform-origin:center;transition-property:transform,opacity;opacity:0}.hinge-in-from-middle-y.mui-enter.mui-enter-active{transform:perspective(2000px) rotate(0deg);opacity:1}.hinge-out-from-top.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);-ms-transform-origin:top;transform-origin:top;transition-property:transform,opacity;opacity:1}.hinge-out-from-top.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-right.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);-ms-transform-origin:right;transform-origin:right;transition-property:transform,opacity;opacity:1}.hinge-out-from-right.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(-90deg);opacity:0}.hinge-out-from-bottom.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);-ms-transform-origin:bottom;transform-origin:bottom;transition-property:transform,opacity;opacity:1}.hinge-out-from-bottom.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(90deg);opacity:0}.hinge-out-from-left.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);-ms-transform-origin:left;transform-origin:left;transition-property:transform,opacity;opacity:1}.hinge-out-from-left.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(90deg);opacity:0}.hinge-out-from-middle-x.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);-ms-transform-origin:center;transform-origin:center;transition-property:transform,opacity;opacity:1}.hinge-out-from-middle-x.mui-leave.mui-leave-active{transform:perspective(2000px) rotateX(-90deg);opacity:0}.hinge-out-from-middle-y.mui-leave{transition-duration:.5s;transition-timing-function:linear;transform:perspective(2000px) rotate(0deg);-ms-transform-origin:center;transform-origin:center;transition-property:transform,opacity;opacity:1}.hinge-out-from-middle-y.mui-leave.mui-leave-active{transform:perspective(2000px) rotateY(-90deg);opacity:0}.scale-in-up.mui-enter{transition-duration:.5s;transition-timing-function:linear;-ms-transform:scale(.5);transform:scale(.5);transition-property:transform,opacity;opacity:0}.scale-in-up.mui-enter.mui-enter-active{-ms-transform:scale(1);transform:scale(1);opacity:1}.scale-in-down.mui-enter{transition-duration:.5s;transition-timing-function:linear;-ms-transform:scale(1.5);transform:scale(1.5);transition-property:transform,opacity;opacity:0}.scale-in-down.mui-enter.mui-enter-active{-ms-transform:scale(1);transform:scale(1);opacity:1}.scale-out-up.mui-leave{transition-duration:.5s;transition-timing-function:linear;-ms-transform:scale(1);transform:scale(1);transition-property:transform,opacity;opacity:1}.scale-out-up.mui-leave.mui-leave-active{-ms-transform:scale(1.5);transform:scale(1.5);opacity:0}.scale-out-down.mui-leave{transition-duration:.5s;transition-timing-function:linear;-ms-transform:scale(1);transform:scale(1);transition-property:transform,opacity;opacity:1}.scale-out-down.mui-leave.mui-leave-active{-ms-transform:scale(.5);transform:scale(.5);opacity:0}.spin-in.mui-enter{transition-duration:.5s;transition-timing-function:linear;-ms-transform:rotate(-.75turn);transform:rotate(-.75turn);transition-property:transform,opacity;opacity:0}.spin-in.mui-enter.mui-enter-active{-ms-transform:rotate(0);transform:rotate(0);opacity:1}.spin-out.mui-leave{transition-duration:.5s;transition-timing-function:linear;-ms-transform:rotate(0);transform:rotate(0);transition-property:transform,opacity;opacity:1}.spin-out.mui-leave.mui-leave-active{-ms-transform:rotate(.75turn);transform:rotate(.75turn);opacity:0}.spin-in-ccw.mui-enter{transition-duration:.5s;transition-timing-function:linear;-ms-transform:rotate(.75turn);transform:rotate(.75turn);transition-property:transform,opacity;opacity:0}.spin-in-ccw.mui-enter.mui-enter-active{-ms-transform:rotate(0);transform:rotate(0);opacity:1}.spin-out-ccw.mui-leave{transition-duration:.5s;transition-timing-function:linear;-ms-transform:rotate(0);transform:rotate(0);transition-property:transform,opacity;opacity:1}.spin-out-ccw.mui-leave.mui-leave-active{-ms-transform:rotate(-.75turn);transform:rotate(-.75turn);opacity:0}.slow{transition-duration:.75s !important}.fast{transition-duration:.25s !important}.linear{transition-timing-function:linear !important}.ease{transition-timing-function:ease !important}.ease-in{transition-timing-function:ease-in !important}.ease-out{transition-timing-function:ease-out !important}.ease-in-out{transition-timing-function:ease-in-out !important}.bounce-in{transition-timing-function:cubic-bezier(.485,.155,.24,1.245) !important}.bounce-out{transition-timing-function:cubic-bezier(.485,.155,.515,.845) !important}.bounce-in-out{transition-timing-function:cubic-bezier(.76,-.245,.24,1.245) !important}.short-delay{transition-delay:.3s !important}.long-delay{transition-delay:.7s !important}.shake{animation-name:shake-7}@keyframes shake-7{0%,10%,20%,30%,40%,50%,60%,70%,80%,90%{transform:translateX(7%)}5%,15%,25%,35%,45%,55%,65%,75%,85%,95%{transform:translateX(-7%)}}.spin-cw{animation-name:spin-cw-1turn}@keyframes spin-cw-1turn{0%{transform:rotate(-1turn)}100%{transform:rotate(0)}}.spin-ccw{animation-name:spin-cw-1turn}@keyframes spin-cw-1turn{0%{transform:rotate(0)}100%{transform:rotate(1turn)}}.wiggle{animation-name:wiggle-7deg}@keyframes wiggle-7deg{40%,50%,60%{transform:rotate(7deg)}35%,45%,55%,65%{transform:rotate(-7deg)}0%,30%,70%,100%{transform:rotate(0)}}.shake,.spin-cw,.spin-ccw,.wiggle{animation-duration:.5s}.infinite{animation-iteration-count:infinite}.slow{animation-duration:.75s !important}.fast{animation-duration:.25s !important}.linear{animation-timing-function:linear !important}.ease{animation-timing-function:ease !important}.ease-in{animation-timing-function:ease-in !important}.ease-out{animation-timing-function:ease-out !important}.ease-in-out{animation-timing-function:ease-in-out !important}.bounce-in{animation-timing-function:cubic-bezier(.485,.155,.24,1.245) !important}.bounce-out{animation-timing-function:cubic-bezier(.485,.155,.515,.845) !important}.bounce-in-out{animation-timing-function:cubic-bezier(.76,-.245,.24,1.245) !important}.short-delay{animation-delay:.3s !important}.long-delay{animation-delay:.7s !important} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/important-comments-remove.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/important-comments-remove.css
new file mode 100644
index 0000000..5da1417
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/important-comments-remove.css
@@ -0,0 +1 @@
+a{color:blue;width:5px;height:5px;margin:0}#yo{ma:"ma"}a{color:red}b{test:foo}html>/**/body p{color:blue;*width:auto;height:2%}a{a:1}b{content:"/**/"}c{c:3}/* unclosed comment at EOF issue \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/important.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/important.css
new file mode 100644
index 0000000..04b08a2
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/important.css
@@ -0,0 +1 @@
+a{height:100px !important;text-shadow:0 0 0 !important;width:20% !important} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/kube.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/kube.css
new file mode 100644
index 0000000..4ce9059
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/kube.css
@@ -0,0 +1 @@
+html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}*{margin:0;padding:0;outline:0;-webkit-overflow-scrolling:touch}img,video,audio{max-width:100%}img,video{height:auto}svg{max-height:100%}iframe{border:none}::-moz-focus-inner{border:0;padding:0}input[type=radio],input[type=checkbox]{vertical-align:middle;position:relative;bottom:.15rem;font-size:115%;margin-right:3px}input[type=search]{-webkit-appearance:textfield}input[type=search]::-webkit-search-decoration,input[type=search]::-webkit-search-cancel-button{-webkit-appearance:none}.black{color:#0d0d0e}.inverted{color:#fff}.error{color:#f03c69}.success{color:#35beb1}.warning{color:#f7ba45}.focus{color:#1c86f2}.aluminum{color:#f8f8f8}.silver{color:#e0e1e1}.lightgray{color:#d4d4d4}.gray{color:#bdbdbd}.midgray{color:#676b72}.darkgray{color:#313439}.bg-black{background-color:#0d0d0e}.bg-inverted{background-color:#fff}.bg-error{background-color:#f03c69}.bg-success{background-color:#35beb1}.bg-warning{background-color:#f7ba45}.bg-focus{background-color:#1c86f2}.bg-aluminum{background-color:#f8f8f8}.bg-silver{background-color:#e0e1e1}.bg-lightgray{background-color:#d4d4d4}.bg-gray{background-color:#bdbdbd}.bg-midgray{background-color:#676b72}.bg-darkgray{background-color:#313439}.bg-highlight{background-color:#edf2ff}html,body{font-size:16px;line-height:24px}body{font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;color:#313439;background-color:transparent}a{color:#3794de}a:hover{color:#f03c69}h1.title,h1,h2,h3,h4,h5,h6{font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-weight:700;color:#0d0d0e;text-rendering:optimizeLegibility;margin-bottom:16px}h1.title{font-size:60px;line-height:64px;margin-bottom:8px}h1,.h1{font-size:48px;line-height:52px}h2,.h2{font-size:36px;line-height:40px}h3,.h3{font-size:24px;line-height:32px}h4,.h4{font-size:21px;line-height:32px}h5,.h5{font-size:18px;line-height:28px}h6,.h6{font-size:16px;line-height:24px}h1 a,.h1 a,h2 a,.h2 a,h3 a,.h3 a,h4 a,.h4 a,h5 a,.h5 a,h6 a,.h6 a{color:inherit}p+h2,p+h3,p+h4,p+h5,p+h6,ul+h2,ul+h3,ul+h4,ul+h5,ul+h6,ol+h2,ol+h3,ol+h4,ol+h5,ol+h6,dl+h2,dl+h3,dl+h4,dl+h5,dl+h6,blockquote+h2,blockquote+h3,blockquote+h4,blockquote+h5,blockquote+h6,hr+h2,hr+h3,hr+h4,hr+h5,hr+h6,pre+h2,pre+h3,pre+h4,pre+h5,pre+h6,table+h2,table+h3,table+h4,table+h5,table+h6,form+h2,form+h3,form+h4,form+h5,form+h6,figure+h2,figure+h3,figure+h4,figure+h5,figure+h6{margin-top:24px}ul,ul ul,ul ol,ol,ol ul,ol ol{margin:0 0 0 24px}ol ol li{list-style-type:lower-alpha}ol ol ol li{list-style-type:lower-roman}nav ul,nav ol{margin:0;list-style:none}nav ul ul,nav ul ol,nav ol ul,nav ol ol{margin-left:24px}dl dt{font-weight:700}dd{margin-left:24px}p,blockquote,hr,pre,ol,ul,dl,table,fieldset,figure,address,form{margin-bottom:16px}hr{border:none;border-bottom:1px solid rgba(0,0,0,.1);margin-top:-1px}blockquote{padding-left:1rem;border-left:4px solid rgba(0,0,0,.1);font-style:italic;color:rgba(49,52,57,.65)}blockquote p{margin-bottom:.5rem}time,cite,small,figcaption{font-size:87.5%}cite{opacity:.6}abbr[title],dfn[title]{border-bottom:1px dotted rgba(0,0,0,.5);cursor:help}var{font-size:16px;opacity:.6;font-style:normal}mark,code,samp,kbd{position:relative;top:-1px;padding:4px 4px 2px;display:inline-block;line-height:1;color:rgba(49,52,57,.85)}code{background:#e0e1e1}mark{background:#f7ba45}samp{color:#fff;background:#1c86f2}kbd{border:1px solid rgba(0,0,0,.1)}sub,sup{font-size:x-small;line-height:0;margin-left:1rem/4;position:relative}sup{top:0}sub{bottom:1px}pre,code,samp,var,kbd{font-family:Consolas,Monaco,"Courier New",monospace}pre,code,samp,var,kbd,mark{font-size:87.5%}pre,pre code{background:#f8f8f8;padding:0;top:0;display:block;line-height:20px;color:rgba(49,52,57,.85);overflow:none;white-space:pre-wrap}pre{padding:1rem}figcaption{opacity:.6}figure figcaption{position:relative;top:-1rem/2}figure pre{background:0 0;border:1px solid rgba(0,0,0,.1);border-radius:4px}figure .video-container,figure pre{margin-bottom:8px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}ul.unstyled{margin-left:0}ul.unstyled,ul.unstyled ul{list-style:none}.monospace{font-family:Consolas,Monaco,"Courier New",monospace}.upper{text-transform:uppercase}.lower{text-transform:lowercase}.italic{font-style:italic !important}.strong{font-weight:700 !important}.normal{font-weight:400 !important}.muted{opacity:.55}a.muted{color:#0d0d0e}a.muted:hover{opacity:1}.black{color:#0d0d0e}.smaller{font-size:12px;line-height:20px}.small{font-size:14px;line-height:20px}.big{font-size:18px;line-height:28px}.large{font-size:20px;line-height:32px}.end{margin-bottom:0 !important}.highlight{background-color:#edf2ff}.nowrap,.nowrap td{white-space:nowrap}@media (min-width:768px) and (max-width:1024px){.columns-2,.columns-3,.columns-4{column-gap:24px}.columns-2{column-count:2}.columns-3{column-count:3}.columns-4{column-count:4}}.row{display:flex;flex-direction:row;flex-wrap:wrap}@media (max-width:768px){.row{flex-direction:column;flex-wrap:nowrap}}.row.gutters,.row.gutters>.row{margin-left:-2%}@media (max-width:768px){.row.gutters,.row.gutters>.row{margin-left:0}}.row.gutters>.col,.row.gutters>.row>.col{margin-left:2%}@media (max-width:768px){.row.gutters>.col,.row.gutters>.row>.col{margin-left:0}}.row.around{justify-content:space-around}.row.between{justify-content:space-between}.row.auto .col{flex-grow:1}.col-1{width:8.33333%}.offset-1{margin-left:8.33333%}.col-2{width:16.66667%}.offset-2{margin-left:16.66667%}.col-3{width:25%}.offset-3{margin-left:25%}.col-4{width:33.33333%}.offset-4{margin-left:33.33333%}.col-5{width:41.66667%}.offset-5{margin-left:41.66667%}.col-6{width:50%}.offset-6{margin-left:50%}.col-7{width:58.33333%}.offset-7{margin-left:58.33333%}.col-8{width:66.66667%}.offset-8{margin-left:66.66667%}.col-9{width:75%}.offset-9{margin-left:75%}.col-10{width:83.33333%}.offset-10{margin-left:83.33333%}.col-11{width:91.66667%}.offset-11{margin-left:91.66667%}.col-12{width:100%}.offset-12{margin-left:100%}.gutters>.col-1{width:calc(8.33333% - 2%)}.gutters>.offset-1{margin-left:calc(8.33333% + 2%) !important}.gutters>.col-2{width:calc(16.66667% - 2%)}.gutters>.offset-2{margin-left:calc(16.66667% + 2%) !important}.gutters>.col-3{width:calc(25% - 2%)}.gutters>.offset-3{margin-left:calc(25% + 2%) !important}.gutters>.col-4{width:calc(33.33333% - 2%)}.gutters>.offset-4{margin-left:calc(33.33333% + 2%) !important}.gutters>.col-5{width:calc(41.66667% - 2%)}.gutters>.offset-5{margin-left:calc(41.66667% + 2%) !important}.gutters>.col-6{width:calc(50% - 2%)}.gutters>.offset-6{margin-left:calc(50% + 2%) !important}.gutters>.col-7{width:calc(58.33333% - 2%)}.gutters>.offset-7{margin-left:calc(58.33333% + 2%) !important}.gutters>.col-8{width:calc(66.66667% - 2%)}.gutters>.offset-8{margin-left:calc(66.66667% + 2%) !important}.gutters>.col-9{width:calc(75% - 2%)}.gutters>.offset-9{margin-left:calc(75% + 2%) !important}.gutters>.col-10{width:calc(83.33333% - 2%)}.gutters>.offset-10{margin-left:calc(83.33333% + 2%) !important}.gutters>.col-11{width:calc(91.66667% - 2%)}.gutters>.offset-11{margin-left:calc(91.66667% + 2%) !important}.gutters>.col-12{width:calc(100% - 2%)}.gutters>.offset-12{margin-left:calc(100% + 2%) !important}@media (max-width:768px){[class^=offset-],[class*=' offset-']{margin-left:0}}.first{order:-1}.last{order:1}@media (max-width:768px){.row .col{margin-left:0;width:100%}.row.gutters .col{margin-bottom:16px}.first-sm{order:-1}.last-sm{order:1}}table{border-collapse:collapse;border-spacing:0;max-width:100%;width:100%;empty-cells:show;font-size:15px;line-height:24px}table caption{text-align:left;font-size:14px;font-weight:500;color:#676b72}th{text-align:left;font-weight:700;vertical-align:bottom}td{vertical-align:top}tr.align-middle td,td.align-middle{vertical-align:middle}th,td{padding:1rem;border-bottom:1px solid rgba(0,0,0,.05)}th:first-child,td:first-child{padding-left:0}th:last-child,td:last-child{padding-right:0}tfoot th,tfoot td{color:rgba(49,52,57,.5)}table.bordered td,table.bordered th{border:1px solid rgba(0,0,0,.05)}table.striped tr:nth-child(odd) td{background:#f8f8f8}table.bordered td:first-child,table.bordered th:first-child,table.striped td:first-child,table.striped th:first-child{padding-left:1rem}table.bordered td:last-child,table.bordered th:last-child,table.striped td:last-child,table.striped th:last-child{padding-right:1rem}table.unstyled td,table.unstyled th{border:none;padding:0}fieldset{font-family:inherit;border:1px solid rgba(0,0,0,.1);padding:2rem;margin-bottom:2rem;margin-top:2rem}legend{font-weight:700;font-size:12px;text-transform:uppercase;padding:0 1rem;margin-left:-1rem;top:2px;position:relative;line-height:0}input,textarea,select{display:block;width:100%;font-family:inherit;font-size:15px;height:40px;outline:none;vertical-align:middle;background-color:#fff;border:1px solid #d4d4d4;border-radius:3px;box-shadow:none;padding:0 12px}input.small,textarea.small,select.small{height:36px;font-size:13px;padding:0 12px;border-radius:3px}input.big,textarea.big,select.big{height:48px;font-size:17px;padding:0 12px;border-radius:3px}input:focus,textarea:focus,select:focus{outline:none;background-color:#fff;border-color:#1c86f2;box-shadow:0 0 1px #1c86f2 inset}input.error,textarea.error,select.error{background-color:rgba(240,60,105,.1);border:1px solid #f583a0}input.error:focus,textarea.error:focus,select.error:focus{border-color:#f03c69;box-shadow:0 0 1px #f03c69 inset}input.success,textarea.success,select.success{background-color:rgba(53,190,177,.1);border:1px solid #6ad5cb}input.success:focus,textarea.success:focus,select.success:focus{border-color:#35beb1;box-shadow:0 0 1px #35beb1 inset}input:disabled,input.disabled,textarea:disabled,textarea.disabled,select:disabled,select.disabled{resize:none;opacity:.6;cursor:default;font-style:italic;color:rgba(0,0,0,.5)}select{-webkit-appearance:none;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="9" height="12" viewBox="0 0 9 12"><path fill="#5e6c75" d="M0.722,4.823L-0.01,4.1,4.134-.01,4.866,0.716Zm7.555,0L9.01,4.1,4.866-.01l-0.732.726ZM0.722,7.177L-0.01,7.9,4.134,12.01l0.732-.726Zm7.555,0L9.01,7.9,4.866,12.01l-0.732-.726Z"/></svg>');background-repeat:no-repeat;background-position:right 1rem center}select[multiple]{background-image:none;height:auto;padding:.5rem .75rem}textarea{height:auto;padding:8px 12px;line-height:24px;vertical-align:top}input[type=file]{width:auto;border:none;padding:0;height:auto;background:0 0;box-shadow:none;display:inline-block}input[type=search],input.search{background-repeat:no-repeat;background-position:8px 53%;background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="#000" fill-opacity="0.4" d="M14.891,14.39l-0.5.5a0.355,0.355,0,0,1-.5,0L9.526,10.529a5.3,5.3,0,1,1,2.106-4.212,5.268,5.268,0,0,1-1.1,3.21l4.362,4.362A0.354,0.354,0,0,1,14.891,14.39ZM6.316,2.418a3.9,3.9,0,1,0,3.9,3.9A3.9,3.9,0,0,0,6.316,2.418Z"/></svg>');padding-left:32px}input[type=radio],input[type=checkbox]{display:inline-block;width:auto;height:auto;padding:0}label{display:block;color:#313439;margin-bottom:4px;font-size:15px}label.checkbox,label .desc,label .success,label .error{text-transform:none;font-weight:400}label.checkbox{font-size:16px;line-height:24px;cursor:pointer;color:inherit}label.checkbox input{margin-top:0}.form-checkboxes label.checkbox{display:inline-block;margin-right:16px}.req{position:relative;top:1px;font-weight:700;color:#f03c69;font-size:110%}.desc{color:rgba(49,52,57,.5);font-size:12px;line-height:20px}span.desc{margin-left:4px}div.desc{margin-top:4px;margin-bottom:-8px}.form-buttons button,.form-buttons .button{margin-right:8px}form,.form-item{margin-bottom:2rem}.form>.form-item:last-child{margin-bottom:0}.form .row:last-child .form-item{margin-bottom:0}.form span.success,.form span.error{font-size:12px;line-height:20px;margin-left:4px}.form-inline input,.form-inline textarea,.form-inline select{display:inline-block;width:auto}.append,.prepend{display:flex}.append input,.prepend input{flex:1}.append .button,.append span,.prepend .button,.prepend span{flex-shrink:0}.append span,.prepend span{display:flex;flex-direction:column;justify-content:center;font-weight:400;border:1px solid #d4d4d4;background-color:#f8f8f8;padding:0 .875rem;color:rgba(0,0,0,.5);font-size:12px;white-space:nowrap}.prepend input{border-radius:0 3px 3px 0}.prepend .button{margin-right:-1px;border-radius:3px 0 0 3px !important}.prepend span{border-right:none;border-radius:3px 0 0 3px}.append input{border-radius:3px 0 0 3px}.append .button{margin-left:-1px;border-radius:0 3px 3px 0 !important}.append span{border-left:none;border-radius:0 3px 3px 0}button,.button{font-family:Arial,"Helvetica Neue",Helvetica,sans-serif;font-size:15px;color:#fff;background-color:#1c86f2;border-radius:3px;min-height:40px;padding:8px 20px;font-weight:500;text-decoration:none;cursor:pointer;display:inline-block;line-height:20px;border:1px solid transparent;vertical-align:middle;-webkit-appearance:none}button i,.button i{position:relative;top:1px;margin:0 2px}input[type=submit]{width:auto}button:hover,.button:hover{outline:none;text-decoration:none;color:#fff;background-color:#4ca0f5}.button:disabled,.button.disabled{cursor:default;font-style:normal;color:rgba(255,255,255,.7);background-color:rgba(28,134,242,.7)}.button.small{font-size:13px;min-height:36px;padding:6px 20px;border-radius:3px}.button.big{font-size:17px;min-height:48px;padding:13px 24px;border-radius:3px}.button.large{font-size:19px;min-height:56px;padding:20px 36px;border-radius:3px}.button.outline{background:0 0;border-width:2px;border-color:#1c86f2;color:#1c86f2}.button.outline:hover{background:0 0;color:rgba(28,134,242,.6);border-color:rgba(28,134,242,.5)}.button.outline:disabled,.button.outline.disabled{background:0 0;color:rgba(28,134,242,.7);border-color:rgba(28,134,242,.5)}.button.inverted{color:#000;background-color:#fff}.button.inverted:hover{color:#000;background-color:#fff}.button.inverted:disabled,.button.inverted.disabled{color:rgba(0,0,0,.7);background-color:rgba(255,255,255,.7)}.button.inverted.outline{background:0 0;color:#fff;border-color:#fff}.button.inverted.outline:hover{color:rgba(255,255,255,.6);border-color:rgba(255,255,255,.5)}.button.inverted.outline:disabled,.button.inverted.outline.disabled{background:0 0;color:rgba(255,255,255,.7);border-color:rgba(255,255,255,.5)}.button.inverted:hover{opacity:.7}.button.round{border-radius:56px}.button.raised{box-shadow:0 1px 3px rgba(0,0,0,.3)}.button.upper{text-transform:uppercase;letter-spacing:.04em;font-size:13px}.button.upper.small{font-size:11px}.button.upper.big{font-size:13px}.button.upper.large{font-size:15px}.button.secondary{color:#fff;background-color:#313439}.button.secondary:hover{color:#fff;background-color:#606670}.button.secondary:disabled,.button.secondary.disabled{color:rgba(255,255,255,.7);background-color:rgba(49,52,57,.7)}.button.secondary.outline{background:0 0;color:#313439;border-color:#313439}.button.secondary.outline:hover{color:rgba(49,52,57,.6);border-color:rgba(49,52,57,.5)}.button.secondary.outline:disabled,.button.secondary.outline.disabled{background:0 0;color:rgba(49,52,57,.7);border-color:rgba(49,52,57,.5)}.label{display:inline-block;font-size:13px;background:#e0e1e1;line-height:18px;padding:0 10px;font-weight:500;color:#313439;border:1px solid transparent;vertical-align:middle;text-decoration:none;border-radius:4px}.label a,.label a:hover{color:inherit;text-decoration:none}.label.big{font-size:14px;line-height:24px;padding:0 12px}.label.upper{text-transform:uppercase;font-size:11px}.label.outline{background:0 0;border-color:#bdbdbd}.label.badge{text-align:center;border-radius:64px;padding:0 6px}.label.badge.big{padding:0 8px}.label.tag{padding:0;background:0 0;border:none;text-transform:uppercase;font-size:11px}.label.tag.big{font-size:13px}.label.success{background:#35beb1;color:#fff}.label.success.tag,.label.success.outline{background:0 0;border-color:#35beb1;color:#35beb1}.label.error{background:#f03c69;color:#fff}.label.error.tag,.label.error.outline{background:0 0;border-color:#f03c69;color:#f03c69}.label.warning{background:#f7ba45;color:#0d0d0e}.label.warning.tag,.label.warning.outline{background:0 0;border-color:#f7ba45;color:#f7ba45}.label.focus{background:#1c86f2;color:#fff}.label.focus.tag,.label.focus.outline{background:0 0;border-color:#1c86f2;color:#1c86f2}.label.black{background:#0d0d0e;color:#fff}.label.black.tag,.label.black.outline{background:0 0;border-color:#0d0d0e;color:#0d0d0e}.label.inverted{background:#fff;color:#0d0d0e}.label.inverted.tag,.label.inverted.outline{background:0 0;border-color:#fff;color:#fff}.breadcrumbs{font-size:14px;margin-bottom:24px}.breadcrumbs ul{display:flex;align-items:center}.breadcrumbs.push-center ul{justify-content:center}.breadcrumbs span,.breadcrumbs a{font-style:normal;padding:0 10px;display:inline-block;white-space:nowrap}.breadcrumbs li:after{display:inline-block;content:'/';color:rgba(0,0,0,.3)}.breadcrumbs li:last-child:after{display:none}.breadcrumbs li:first-child span,.breadcrumbs li:first-child a{padding-left:0}.breadcrumbs li.active a{color:#313439;text-decoration:none;cursor:text}.pagination{margin:24px 0;font-size:14px}.pagination ul{display:flex;margin:0}.pagination.align-center ul{justify-content:center}.pagination span,.pagination a{border-radius:3px;display:inline-block;padding:8px 12px;line-height:1;white-space:nowrap;border:1px solid transparent}.pagination a{text-decoration:none;color:#313439}.pagination a:hover{color:rgba(0,0,0,.5);border-color:#e0e1e1}.pagination span,.pagination li.active a{color:rgba(0,0,0,.5);border-color:#e0e1e1;cursor:text}.pagination.upper{font-size:12px}.pager span{line-height:24px}.pager span,.pager a{padding-left:16px;padding-right:16px;border-radius:64px;border-color:rgba(0,0,0,.1)}.pager li{flex-basis:50%}.pager li.next{text-align:right}.pager.align-center li{flex-basis:auto;margin-left:4px;margin-right:4px}.pager.flat span,.pager.flat a{border:none;display:block;padding:0}.pager.flat a{font-weight:700}.pager.flat a:hover{background:0 0;text-decoration:underline}@media (max-width:768px){.pager.flat ul{flex-direction:column}.pager.flat li{flex-basis:100%;margin-bottom:8px;text-align:left}}@font-face{font-family:'Kube';src:url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfgAAAC8AAAAYGNtYXAXVtKOAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZsMn2SAAAAF4AAADeGhlYWQMP9EUAAAE8AAAADZoaGVhB8IDzQAABSgAAAAkaG10eCYABd4AAAVMAAAAMGxvY2EFWASuAAAFfAAAABptYXhwABcAmwAABZgAAAAgbmFtZfMJxocAAAW4AAABYnBvc3QAAwAAAAAHHAAAACAAAwPHAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBwPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qf//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAAKAAAAAAQAA8AADwAUACQANABEAFYAaAB4AIgAmAAAEyIGFREUFjMhMjY1ETQmIwUhESEREzgBMSIGFRQWMzI2NTQmIzM4ATEiBhUUFjMyNjU0JiMzOAExIgYVFBYzMjY1NCYjATIWHQEUBiMiJj0BNDYzOAExITIWHQEUBiMiJj0BNDYzOAExATgBMSIGFRQWMzI2NTQmIzM4ATEiBhUUFjMyNjU0JiMzOAExIgYVFBYzMjY1NCYjwFBwcFACgFBwcFD9IQM+/MKrHioqHh4qKh70HioqHh4qKh70HisrHh0rKh7+MBQdHRQUHBwUAbgUHBwUFB0dFP4wHioqHh4qKh70HioqHh4qKh70HisrHh0rKh4DYHBQ/iBQcHBQAeBQcF/9XwKh/n8qHh4qKh4eKioeHioqHh4qKh4eKioeHioCQBwVjhUcHBWOFRwcFY4VHBwVjhUc/rAqHh4qKh4eKioeHioqHh4qKh4eKioeHioAAAABAQAAwAMAAcAACwAAAQcXBycHJzcnNxc3AwDMAjMDAzMCzDTMzAGVqAIrAgIrAqgrqKgAAQGAAEACgAJAAAsAACUnByc3JzcXNxcHFwJVqAIrAgIrAqgrqKhAzAIzAwMzAsw0zMwAAAEBgABAAoACQAALAAABFzcXBxcHJwcnNycBq6gCKwICKwKoK6ioAkDMAjMDAzMCzDTMzAABAQAAwAMAAcAACwAAJTcnNxc3FwcXBycHAQDMAjMDAzMCzDTMzOuoAisCAisCqCuoqAAAAgAP/+UD1AOqAAQACAAAEwEHATcFAScBSwOJPPx3PAOJ/Hc8A4kDqvx3PAOJPDz8dzwDiQAAAAADAIAAgAOAAwAAAwAHAAsAADc1IRUBIRUhESEVIYADAP0AAwD9AAMA/QCAgIABgIABgIAAAgBPAA8DsgNxABgALQAAJQcBDgEjIi4CNTQ+AjMyHgIVFAYHAQEiDgIVFB4CMzI+AjU0LgIjA7JY/t4lWTBBc1YxMVZzQUFzVTIcGQEi/dgxVkAlJUBWMTFWQCUlQFYxZ1gBIRkcMlVzQUFzVjExVnNBMFkm/uACuyVAVjExVkAlJUBWMTFWQCUAAAABAAAAAQAABhlWm18PPPUACwQAAAAAANSQRjkAAAAA1JBGOQAA/+UEAAPAAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAQAAAEAAAAAAAAAAAAAAAAAAAAMBAAAAAAAAAAAAAAAAgAAAAQAAAAEAAEABAABgAQAAYAEAAEABAAADwQAAIAEAABPAAAAAAAKABQAHgDYAPIBDAEmAUABXAF2AbwAAAABAAAADACZAAoAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEABAAAAAEAAAAAAAIABwBFAAEAAAAAAAMABAAtAAEAAAAAAAQABABaAAEAAAAAAAUACwAMAAEAAAAAAAYABAA5AAEAAAAAAAoAGgBmAAMAAQQJAAEACAAEAAMAAQQJAAIADgBMAAMAAQQJAAMACAAxAAMAAQQJAAQACABeAAMAAQQJAAUAFgAXAAMAAQQJAAYACAA9AAMAAQQJAAoANACAS3ViZQBLAHUAYgBlVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwS3ViZQBLAHUAYgBlS3ViZQBLAHUAYgBlUmVndWxhcgBSAGUAZwB1AGwAYQByS3ViZQBLAHUAYgBlRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") format("truetype");font-weight:400;font-style:normal}[class^=kube-],[class*=" kube-"],.close,.caret{font-family:'Kube' !important;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.kube-calendar:before{content:"\e900"}.caret.down:before,.kube-caret-down:before{content:"\e901"}.caret.left:before,.kube-caret-left:before{content:"\e902"}.caret.right:before,.kube-caret-right:before{content:"\e903"}.caret.up:before,.kube-caret-up:before{content:"\e904"}.close:before,.kube-close:before{content:"\e905"}.kube-menu:before{content:"\e906"}.kube-search:before{content:"\e907"}.gutters .column.push-left,.push-left{margin-right:auto}.gutters .column.push-right,.push-right{margin-left:auto}.gutters .column.push-center,.push-center{margin-left:auto;margin-right:auto}.gutters .column.push-middle,.push-middle{margin-top:auto;margin-bottom:auto}.push-bottom{margin-top:auto}@media (max-width:768px){.gutters .column.push-left-sm,.push-left-sm{margin-left:0}.gutters .column.push-center-sm,.push-center-sm{margin-left:auto;margin-right:auto}.push-top-sm{margin-top:0}}.align-middle{align-items:center}.align-right{justify-content:flex-end}.align-center{justify-content:center}@media (max-width:768px){.align-left-sm{justify-content:flex-start}}.float-right{float:right}.float-left{float:left}@media (max-width:768px){.float-right{float:none}.float-left{float:none}}.fixed{position:fixed;top:0;left:0;z-index:100;width:100%}.w5{width:5%}.w10{width:10%}.w15{width:15%}.w20{width:20%}.w25{width:25%}.w30{width:30%}.w35{width:35%}.w40{width:40%}.w45{width:45%}.w50{width:50%}.w55{width:55%}.w60{width:60%}.w65{width:65%}.w70{width:70%}.w75{width:75%}.w80{width:80%}.w85{width:85%}.w90{width:90%}.w95{width:95%}.w100{width:100%}.w-auto{width:auto}.w-small{width:480px}.w-medium{width:600px}.w-big{width:740px}.w-large{width:840px}@media (max-width:768px){.w-auto-sm{width:auto}.w100-sm,.w-small,.w-medium,.w-big,.w-large{width:100%}}.max-w5{max-width:5%}.max-w10{max-width:10%}.max-w15{max-width:15%}.max-w20{max-width:20%}.max-w25{max-width:25%}.max-w30{max-width:30%}.max-w35{max-width:35%}.max-w40{max-width:40%}.max-w45{max-width:45%}.max-w50{max-width:50%}.max-w55{max-width:55%}.max-w60{max-width:60%}.max-w65{max-width:65%}.max-w70{max-width:70%}.max-w75{max-width:75%}.max-w80{max-width:80%}.max-w85{max-width:85%}.max-w90{max-width:90%}.max-w95{max-width:95%}.max-w100{max-width:100%}.max-w-small{max-width:480px}.max-w-medium{max-width:600px}.max-w-big{max-width:740px}.max-w-large{max-width:840px}@media (max-width:768px){.max-w-auto-sm,.max-w-small,.max-w-medium,.max-w-big,.max-w-large{max-width:auto}}.min-w5{min-width:5%}.min-w10{min-width:10%}.min-w15{min-width:15%}.min-w20{min-width:20%}.min-w25{min-width:25%}.min-w30{min-width:30%}.min-w35{min-width:35%}.min-w40{min-width:40%}.min-w45{min-width:45%}.min-w50{min-width:50%}.min-w55{min-width:55%}.min-w60{min-width:60%}.min-w65{min-width:65%}.min-w70{min-width:70%}.min-w75{min-width:75%}.min-w80{min-width:80%}.min-w85{min-width:85%}.min-w90{min-width:90%}.min-w95{min-width:95%}.min-w100{min-width:100%}.h25{height:25%}.h50{height:50%}.h100{height:100%}.group:after{content:'';display:table;clear:both}.flex{display:flex}@media (max-width:768px){.flex-column-sm{flex-direction:column}.flex-w100-sm{flex:0 0 100%}}@media (max-width:768px) and (max-width:768px){.flex-w100-sm{flex:0 0 100% !important}}.invisible{visibility:hidden}.visible{visibility:visible}.display-block{display:block}.hide{display:none !important}@media (max-width:768px){.hide-sm{display:none !important}}@media (min-width:768px){.show-sm{display:none !important}}@media print{.hide-print{display:none !important}.show-print{display:block !important}}.no-scroll{overflow:hidden;position:fixed;top:0;left:0;width:100%;height:100% !important}.scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}.video-container{height:0;padding-bottom:56.25%;position:relative;margin-bottom:16px}.video-container iframe,.video-container object,.video-container embed{position:absolute;top:0;left:0;width:100% !important;height:100% !important}.close{display:inline-block;min-height:16px;min-width:16px;line-height:16px;vertical-align:middle;text-align:center;font-size:12px;opacity:.6}.close:hover{opacity:1}.close.small{font-size:8px}.close.big{font-size:18px}.close.white{color:#fff}.caret{display:inline-block}.button .caret{margin-right:-8px}.overlay{position:fixed;z-index:200;top:0;left:0;right:0;bottom:0;background-color:rgba(255,255,255,.95)}.overlay>.close{position:fixed;top:1rem;right:1rem}@media print{*{background:0 0 !important;color:#000 !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}pre,blockquote{border:1px solid #999;page-break-inside:avoid}p,h2,h3{orphans:3;widows:3}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}h2,h3,h4{page-break-after:avoid}@page{margin:.5cm}}@keyframes slideUp{to{height:0;padding-top:0;padding-bottom:0}}@keyframes slideDown{from{height:0;padding-top:0;padding-bottom:0}}@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeOut{from{opacity:1}to{opacity:0}}@keyframes flipIn{from{opacity:0;transform:scaleY(0)}to{opacity:1;transform:scaleY(1)}}@keyframes flipOut{from{opacity:1;transform:scaleY(1)}to{opacity:0;transform:scaleY(0)}}@keyframes zoomIn{from{opacity:0;transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomOut{from{opacity:1}50%{opacity:0;transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes slideInRight{from{transform:translate3d(100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideInLeft{from{transform:translate3d(-100%,0,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideInDown{from{transform:translate3d(0,-100%,0);visibility:visible}to{transform:translate3d(0,0,0)}}@keyframes slideOutLeft{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(-100%,0,0)}}@keyframes slideOutRight{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(100%,0,0)}}@keyframes slideOutUp{from{transform:translate3d(0,0,0)}to{visibility:hidden;transform:translate3d(0,-100%,0)}}@keyframes rotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes pulse{from{transform:scale3d(1,1,1)}50%{transform:scale3d(1.03,1.03,1.03)}to{transform:scale3d(1,1,1)}}@keyframes shake{15%{transform:translateX(.5rem)}30%{transform:translateX(-.4rem)}45%{transform:translateX(.3rem)}60%{transform:translateX(-.2rem)}75%{transform:translateX(.1rem)}90%{transform:translateX(0)}90%{transform:translateX(0)}}.fadeIn{animation:fadeIn .25s}.fadeOut{animation:fadeOut .25s}.zoomIn{animation:zoomIn .2s}.zoomOut{animation:zoomOut .5s}.slideInRight{animation:slideInRight .5s}.slideInLeft{animation:slideInLeft .5s}.slideInDown{animation:slideInDown .5s}.slideOutLeft{animation:slideOutLeft .5s}.slideOutRight{animation:slideOutRight .5s}.slideOutUp{animation:slideOutUp .5s}.slideUp{overflow:hidden;animation:slideUp .2s ease-in-out}.slideDown{overflow:hidden;animation:slideDown 80ms ease-in-out}.flipIn{animation:flipIn .25s cubic-bezier(.5,-.5,.5,1.5)}.flipOut{animation:flipOut .5s cubic-bezier(.5,-.5,.5,1.5)}.rotate{animation:rotate .5s}.pulse{animation:pulse .25s 2}.shake{animation:shake .5s}.dropdown{position:absolute;z-index:100;top:0;right:0;width:280px;color:#000;font-size:15px;background:#fff;box-shadow:0 10px 25px rgba(0,0,0,.15);border-radius:3px;max-height:300px;margin:0;padding:0;overflow:hidden}.dropdown.dropdown-mobile{position:fixed;top:0;left:0;right:0;bottom:0;width:100%;max-height:none;border:none}.dropdown .close{margin:20px auto}.dropdown.open{overflow:auto}.dropdown ul{list-style:none;margin:0}.dropdown ul li{border-bottom:1px solid rgba(0,0,0,.07)}.dropdown ul li:last-child{border-bottom:none}.dropdown ul a{display:block;padding:12px;text-decoration:none;color:#000}.dropdown ul a:hover{background:rgba(0,0,0,.05)}.message{font-family:Consolas,Monaco,"Courier New",monospace;font-size:14px;line-height:20px;background:#e0e1e1;color:#313439;padding:1rem;padding-right:2.5em;padding-bottom:.75rem;margin-bottom:24px;position:relative}.message a{color:inherit}.message h2,.message h3,.message h4,.message h5,.message h6{margin-bottom:0}.message .close{position:absolute;right:1rem;top:1.1rem}.message.error{background:#f03c69;color:#fff}.message.success{background:#35beb1;color:#fff}.message.warning{background:#f7ba45}.message.focus{background:#1c86f2;color:#fff}.message.black{background:#0d0d0e;color:#fff}.message.inverted{background:#fff}.modal-box{position:fixed;top:0;left:0;bottom:0;right:0;overflow-x:hidden;overflow-y:auto;z-index:200}.modal{position:relative;margin:auto;margin-top:16px;padding:0;background:#fff;box-shadow:0 10px 25px rgba(0,0,0,.15);border-radius:8px;color:#000}@media (max-width:768px){.modal input,.modal textarea{font-size:16px}}.modal .close{position:absolute;top:18px;right:16px;opacity:.3}.modal .close:hover{opacity:1}.modal-header{padding:24px 32px;font-size:18px;font-weight:700;border-bottom:1px solid rgba(0,0,0,.05)}.modal-header:empty{display:none}.modal-body{padding:36px 56px}@media (max-width:768px){.modal-header,.modal-body{padding:24px}}.offcanvas{background:#fff;position:fixed;padding:24px;height:100%;top:0;left:0;z-index:300;overflow-y:scroll}.offcanvas .close{position:absolute;top:8px;right:8px}.offcanvas-left{border-right:1px solid rgba(0,0,0,.1)}.offcanvas-right{left:auto;right:0;border-left:1px solid rgba(0,0,0,.1)}.offcanvas-push-body{position:relative}.tabs{margin-bottom:24px;font-size:14px}.tabs li em,.tabs li.active a{color:#313439;border:1px solid rgba(0,0,0,.1);cursor:default;text-decoration:none;background:0 0}.tabs em,.tabs a{position:relative;top:1px;font-style:normal;display:block;padding:.5rem 1rem;border:1px solid transparent;color:rgba(0,0,0,.5);text-decoration:none}.tabs a:hover{-moz-transition:all linear .2s;transition:all linear .2s;color:#313439;text-decoration:underline;background-color:#e0e1e1}@media (min-width:768px){.tabs ul{display:flex;margin-top:-1px;border-bottom:1px solid rgba(0,0,0,.1)}.tabs li em,.tabs li.active a{border-bottom:1px solid #fff}} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/linebreak-position.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/linebreak-position.css
new file mode 100644
index 0000000..0299880
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/linebreak-position.css
@@ -0,0 +1,6 @@
+/*! This is a comment with closing curly braces }}}}}}}}}}}}}}}}}}}}} inside */
+.foo{color:blue;content:"String with closing curly braces inside }}}}"}
+@media{.foo{color:red}
+.bar{color:green}
+.baz{width:10px}
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/lowercasing.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/lowercasing.css
new file mode 100644
index 0000000..74f603f
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/lowercasing.css
@@ -0,0 +1 @@
+@charset "UTF-8";@import "HTTP://DOMAIN.TLD/OTHER.CSS";@namespace XHTML "HTTP://WWW.W3.ORG/1999/XHTML";@font-face{font-family:"YOUR FACE"}#MY\@SUPPORTS-DIV{border:none}@supports only screen{@keyframes test{color:blue}}@media print{background:0 0;background-position:0 0}@page{content:attr(HREF);filter:brightness(.4);width:calc(50% - 10PX)}.a\:LINK{color:blue}a:active,a:after,a:before,a:checked,a:disabled,a:default,a:empty,a:enabled,a:first-child,a:first-letter ,a:first-line ,a:first-of-type,a:focus,a:hover,a:last-child,a:last-of-type,a:link,a:only-child,a:only-of-type,a:root,a::selection,a:target,a:visited,a:lang(FR),a:not([HIDDEN]),a:nth-child(2),a:nth-last-child(2),a:nth-last-of-type(2),a:nth-of-type(2){transition-timing-function:cubic-bezier(-1.9,.3,-.2,2.1);background:url(PROTO://DOMAIN.TLD/PATH),repeating-linear-gradient(20DEG,GRAY,GREEN,20PX,#fff 40PX),-atsc-linear-gradient(LEFT,#000,#fff),-khtml-radial-gradient(CENTER 50DEG,CIRCLE CLOSEST-SIDE,#000 0,GREEN 100%),-moz-radial-gradient(CENTER 45DEG,CIRCLE CLOSEST-SIDE,ORANGE 0%,RED 100%),-ms-linear-gradient(LEFT,BLUE,#000),-o-repeating-radial-gradient(CENTER,CIRCLE CLOSEST-SIDE,#ffefd5,RED 50%,#dcdcdc),-wap-linear-gradient(LEFT,#000,#fff),-webkit-gradient(LINEAR,LEFT,from(#fff),to(rgba(1,2,3,.4)))} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/materialize.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/materialize.css
new file mode 100644
index 0000000..fa82f5a
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/materialize.css
@@ -0,0 +1,22 @@
+/*!
+ * Materialize v0.98.2 (http://materializecss.com)
+ * Copyright 2014-2015 Materialize
+ * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
+ */
+.materialize-red{background-color:#e51c23 !important}.materialize-red-text{color:#e51c23 !important}.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.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{background-color:#f44336 !important}.red-text{color:#f44336 !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.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{background-color:#e91e63 !important}.pink-text{color:#e91e63 !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.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{background-color:#9c27b0 !important}.purple-text{color:#9c27b0 !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.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:#a0f !important}.purple-text.text-accent-4{color:#a0f !important}.deep-purple{background-color:#673ab7 !important}.deep-purple-text{color:#673ab7 !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.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{background-color:#3f51b5 !important}.indigo-text{color:#3f51b5 !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.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{background-color:#2196f3 !important}.blue-text{color:#2196f3 !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.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{background-color:#03a9f4 !important}.light-blue-text{color:#03a9f4 !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.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{background-color:#00bcd4 !important}.cyan-text{color:#00bcd4 !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.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{background-color:#009688 !important}.teal-text{color:#009688 !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.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{background-color:#4caf50 !important}.green-text{color:#4caf50 !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.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{background-color:#8bc34a !important}.light-green-text{color:#8bc34a !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.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{background-color:#cddc39 !important}.lime-text{color:#cddc39 !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.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{background-color:#ffeb3b !important}.yellow-text{color:#ffeb3b !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.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:#ff0 !important}.yellow-text.text-accent-2{color:#ff0 !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{background-color:#ffc107 !important}.amber-text{color:#ffc107 !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.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{background-color:#ff9800 !important}.orange-text{color:#ff9800 !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.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{background-color:#ff5722 !important}.deep-orange-text{color:#ff5722 !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.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{background-color:#795548 !important}.brown-text{color:#795548 !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.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{background-color:#607d8b !important}.blue-grey-text{color:#607d8b !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.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{background-color:#9e9e9e !important}.grey-text{color:#9e9e9e !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:#eee !important}.grey-text.text-lighten-3{color:#eee !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.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}.black{background-color:#000 !important}.black-text{color:#000 !important}.white{background-color:#fff !important}.white-text{color:#fff !important}.transparent{background-color:transparent !important}.transparent-text{color:transparent !important}
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+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:700}dfn{font-style:italic}h1{font-size:2em;margin:.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:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}ul:not(.browser-default){padding-left:0;list-style-type:none}ul:not(.browser-default) li{list-style-type:none}a{color:#039be5;text-decoration:none;-webkit-tap-highlight-color:transparent}.valign-wrapper{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center}.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 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12),0 3px 1px -2px rgba(0,0,0,.2)}.z-depth-1-half,.btn:hover,.btn-large:hover,.btn-floating:hover{box-shadow:0 3px 3px 0 rgba(0,0,0,.14),0 1px 7px 0 rgba(0,0,0,.12),0 3px 1px -1px rgba(0,0,0,.2)}.z-depth-2{box-shadow:0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12),0 2px 4px -1px rgba(0,0,0,.3)}.z-depth-3{box-shadow:0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12),0 3px 5px -1px rgba(0,0,0,.3)}.z-depth-4,.modal{box-shadow:0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12),0 5px 5px -3px rgba(0,0,0,.3)}.z-depth-5{box-shadow:0 16px 24px 2px rgba(0,0,0,.14),0 6px 30px 5px rgba(0,0,0,.12),0 8px 10px -5px rgba(0,0,0,.3)}.hoverable{transition:box-shadow .25s;box-shadow:0}.hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(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;border-radius:2px;text-align:center;vertical-align:top;height:30px}.pagination li a{color:#444;display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px}.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}}.breadcrumb{font-size:18px;color:rgba(255,255,255,.7)}.breadcrumb i,.breadcrumb [class^=mdi-],.breadcrumb [class*=mdi-],.breadcrumb i.material-icons{display:inline-block;float:left;font-size:24px}.breadcrumb:before{content:'\E5CC';color:rgba(255,255,255,.7);vertical-align:top;display:inline-block;font-family:'Material Icons';font-weight:400;font-style:normal;font-size:25px;margin:0 10px 0 8px;-webkit-font-smoothing:antialiased}.breadcrumb:first-child:before{display:none}.breadcrumb:last-child{color:#fff}.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);-webkit-transform:translateX(-50%);transform:translateX(-50%)}.pin-top,.pin-bottom{position:relative}.pinned{position:fixed !important}ul.staggered-list li{opacity:0}.fade-in{opacity:0;-webkit-transform-origin:0 50%;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:block !important}}@media only screen and (min-width:600px) and (max-width:992px){.show-on-medium{display:block !important}}@media only screen and (max-width:600px){.show-on-small{display:block !important}}@media only screen and (min-width:601px){.show-on-medium-and-up{display:block !important}}@media only screen and (max-width:992px){.show-on-medium-and-down{display:block !important}}@media only screen and (max-width:600px){.center-on-small-only{text-align:center}}.page-footer{padding-top:20px;background-color:#ee6e73}.page-footer .footer-copyright{overflow:hidden;min-height:50px;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;padding:10px 0;color:rgba(255,255,255,.8);background-color:rgba(51,51,51,.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:0}table.highlight>tbody>tr{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 td:empty:before{content:'\00a0'}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:.5rem 0 1rem;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;transition:.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}.video-container{position:relative;padding-bottom:56.25%;height:0;overflow:hidden}.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:.5rem 0 1rem;overflow:hidden}.progress .determinate{position:absolute;top:0;left:0;bottom:0;background-color:#26a69a;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(.65,.815,.735,.395) infinite;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.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(.165,.84,.44,1) infinite;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-webkit-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%}}@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%}}@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;-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}span.badge{min-width:3rem;padding:0 6px;margin-left:14px;text-align:center;font-size:1rem;line-height:22px;height:22px;color:#757575;float:right;box-sizing:border-box}span.badge.new{font-weight:300;font-size:.8rem;color:#fff;background-color:#26a69a;border-radius:2px}span.badge.new:after{content:" new"}span.badge[data-badge-caption]:after{content:" " attr(data-badge-caption)}nav ul a span.badge{display:inline-block;float:none;margin-left:4px;line-height:22px;height:22px}.collection-item span.badge{margin-top:calc(.75rem - 11px)}.collapsible span.badge{margin-top:calc(1.5rem - 11px)}.side-nav span.badge{margin-top:calc(24px - 11px)}.material-icons{text-rendering:optimizeLegibility;-webkit-font-feature-settings:'liga';-moz-font-feature-settings:'liga';font-feature-settings:'liga'}.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:-.75rem;margin-right:-.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;box-sizing:border-box;padding:0 .75rem;min-height:1px}.row .col[class*=push-],.row .col[class*=pull-]{position:relative}.row .col.s1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.s4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.s7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.s10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.s11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.s12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-s1{margin-left:8.3333333333%}.row .col.pull-s1{right:8.3333333333%}.row .col.push-s1{left:8.3333333333%}.row .col.offset-s2{margin-left:16.6666666667%}.row .col.pull-s2{right:16.6666666667%}.row .col.push-s2{left:16.6666666667%}.row .col.offset-s3{margin-left:25%}.row .col.pull-s3{right:25%}.row .col.push-s3{left:25%}.row .col.offset-s4{margin-left:33.3333333333%}.row .col.pull-s4{right:33.3333333333%}.row .col.push-s4{left:33.3333333333%}.row .col.offset-s5{margin-left:41.6666666667%}.row .col.pull-s5{right:41.6666666667%}.row .col.push-s5{left:41.6666666667%}.row .col.offset-s6{margin-left:50%}.row .col.pull-s6{right:50%}.row .col.push-s6{left:50%}.row .col.offset-s7{margin-left:58.3333333333%}.row .col.pull-s7{right:58.3333333333%}.row .col.push-s7{left:58.3333333333%}.row .col.offset-s8{margin-left:66.6666666667%}.row .col.pull-s8{right:66.6666666667%}.row .col.push-s8{left:66.6666666667%}.row .col.offset-s9{margin-left:75%}.row .col.pull-s9{right:75%}.row .col.push-s9{left:75%}.row .col.offset-s10{margin-left:83.3333333333%}.row .col.pull-s10{right:83.3333333333%}.row .col.push-s10{left:83.3333333333%}.row .col.offset-s11{margin-left:91.6666666667%}.row .col.pull-s11{right:91.6666666667%}.row .col.push-s11{left:91.6666666667%}.row .col.offset-s12{margin-left:100%}.row .col.pull-s12{right:100%}.row .col.push-s12{left:100%}@media only screen and (min-width:601px){.row .col.m1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.m4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.m7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.m10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.m11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.m12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-m1{margin-left:8.3333333333%}.row .col.pull-m1{right:8.3333333333%}.row .col.push-m1{left:8.3333333333%}.row .col.offset-m2{margin-left:16.6666666667%}.row .col.pull-m2{right:16.6666666667%}.row .col.push-m2{left:16.6666666667%}.row .col.offset-m3{margin-left:25%}.row .col.pull-m3{right:25%}.row .col.push-m3{left:25%}.row .col.offset-m4{margin-left:33.3333333333%}.row .col.pull-m4{right:33.3333333333%}.row .col.push-m4{left:33.3333333333%}.row .col.offset-m5{margin-left:41.6666666667%}.row .col.pull-m5{right:41.6666666667%}.row .col.push-m5{left:41.6666666667%}.row .col.offset-m6{margin-left:50%}.row .col.pull-m6{right:50%}.row .col.push-m6{left:50%}.row .col.offset-m7{margin-left:58.3333333333%}.row .col.pull-m7{right:58.3333333333%}.row .col.push-m7{left:58.3333333333%}.row .col.offset-m8{margin-left:66.6666666667%}.row .col.pull-m8{right:66.6666666667%}.row .col.push-m8{left:66.6666666667%}.row .col.offset-m9{margin-left:75%}.row .col.pull-m9{right:75%}.row .col.push-m9{left:75%}.row .col.offset-m10{margin-left:83.3333333333%}.row .col.pull-m10{right:83.3333333333%}.row .col.push-m10{left:83.3333333333%}.row .col.offset-m11{margin-left:91.6666666667%}.row .col.pull-m11{right:91.6666666667%}.row .col.push-m11{left:91.6666666667%}.row .col.offset-m12{margin-left:100%}.row .col.pull-m12{right:100%}.row .col.push-m12{left:100%}}@media only screen and (min-width:993px){.row .col.l1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.l4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.l7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.l10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.l11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.l12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-l1{margin-left:8.3333333333%}.row .col.pull-l1{right:8.3333333333%}.row .col.push-l1{left:8.3333333333%}.row .col.offset-l2{margin-left:16.6666666667%}.row .col.pull-l2{right:16.6666666667%}.row .col.push-l2{left:16.6666666667%}.row .col.offset-l3{margin-left:25%}.row .col.pull-l3{right:25%}.row .col.push-l3{left:25%}.row .col.offset-l4{margin-left:33.3333333333%}.row .col.pull-l4{right:33.3333333333%}.row .col.push-l4{left:33.3333333333%}.row .col.offset-l5{margin-left:41.6666666667%}.row .col.pull-l5{right:41.6666666667%}.row .col.push-l5{left:41.6666666667%}.row .col.offset-l6{margin-left:50%}.row .col.pull-l6{right:50%}.row .col.push-l6{left:50%}.row .col.offset-l7{margin-left:58.3333333333%}.row .col.pull-l7{right:58.3333333333%}.row .col.push-l7{left:58.3333333333%}.row .col.offset-l8{margin-left:66.6666666667%}.row .col.pull-l8{right:66.6666666667%}.row .col.push-l8{left:66.6666666667%}.row .col.offset-l9{margin-left:75%}.row .col.pull-l9{right:75%}.row .col.push-l9{left:75%}.row .col.offset-l10{margin-left:83.3333333333%}.row .col.pull-l10{right:83.3333333333%}.row .col.push-l10{left:83.3333333333%}.row .col.offset-l11{margin-left:91.6666666667%}.row .col.pull-l11{right:91.6666666667%}.row .col.push-l11{left:91.6666666667%}.row .col.offset-l12{margin-left:100%}.row .col.pull-l12{right:100%}.row .col.push-l12{left:100%}}@media only screen and (min-width:1201px){.row .col.xl1{width:8.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl2{width:16.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl3{width:25%;margin-left:auto;left:auto;right:auto}.row .col.xl4{width:33.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl5{width:41.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl6{width:50%;margin-left:auto;left:auto;right:auto}.row .col.xl7{width:58.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl8{width:66.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl9{width:75%;margin-left:auto;left:auto;right:auto}.row .col.xl10{width:83.3333333333%;margin-left:auto;left:auto;right:auto}.row .col.xl11{width:91.6666666667%;margin-left:auto;left:auto;right:auto}.row .col.xl12{width:100%;margin-left:auto;left:auto;right:auto}.row .col.offset-xl1{margin-left:8.3333333333%}.row .col.pull-xl1{right:8.3333333333%}.row .col.push-xl1{left:8.3333333333%}.row .col.offset-xl2{margin-left:16.6666666667%}.row .col.pull-xl2{right:16.6666666667%}.row .col.push-xl2{left:16.6666666667%}.row .col.offset-xl3{margin-left:25%}.row .col.pull-xl3{right:25%}.row .col.push-xl3{left:25%}.row .col.offset-xl4{margin-left:33.3333333333%}.row .col.pull-xl4{right:33.3333333333%}.row .col.push-xl4{left:33.3333333333%}.row .col.offset-xl5{margin-left:41.6666666667%}.row .col.pull-xl5{right:41.6666666667%}.row .col.push-xl5{left:41.6666666667%}.row .col.offset-xl6{margin-left:50%}.row .col.pull-xl6{right:50%}.row .col.push-xl6{left:50%}.row .col.offset-xl7{margin-left:58.3333333333%}.row .col.pull-xl7{right:58.3333333333%}.row .col.push-xl7{left:58.3333333333%}.row .col.offset-xl8{margin-left:66.6666666667%}.row .col.pull-xl8{right:66.6666666667%}.row .col.push-xl8{left:66.6666666667%}.row .col.offset-xl9{margin-left:75%}.row .col.pull-xl9{right:75%}.row .col.push-xl9{left:75%}.row .col.offset-xl10{margin-left:83.3333333333%}.row .col.pull-xl10{right:83.3333333333%}.row .col.push-xl10{left:83.3333333333%}.row .col.offset-xl11{margin-left:91.6666666667%}.row .col.pull-xl11{right:91.6666666667%}.row .col.push-xl11{left:91.6666666667%}.row .col.offset-xl12{margin-left:100%}.row .col.pull-xl12{right:100%}.row .col.push-xl12{left:100%}}nav{color:#fff;background-color:#ee6e73;width:100%;height:56px;line-height:56px}nav.nav-extended{height:auto}nav.nav-extended .nav-wrapper{min-height:56px;height:auto}nav.nav-extended .nav-content{position:relative;line-height:normal}nav a{color:#fff}nav i,nav [class^=mdi-],nav [class*=mdi-],nav i.material-icons{display:block;font-size:24px;height:56px;line-height:56px}nav .nav-wrapper{position:relative;height:100%}@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;margin:0 18px}nav .button-collapse i{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%);transform:translateX(-50%)}@media only screen and (max-width:992px){nav .brand-logo{left:50%;-webkit-transform:translateX(-50%);transform:translateX(-50%)}nav .brand-logo.left,nav .brand-logo.right{padding:0;-webkit-transform:none;transform:none}nav .brand-logo.left{left:.5rem}nav .brand-logo.right{right:.5rem;left:auto}}nav .brand-logo.right{right:.5rem;padding:0}nav .brand-logo i,nav .brand-logo [class^=mdi-],nav .brand-logo [class*=mdi-],nav .brand-logo i.material-icons{float:left;margin-right:15px}nav .nav-title{display:inline-block;font-size:32px;padding:28px 0}nav ul{margin:0}nav ul li{transition:background-color .3s;float:left;padding:0}nav ul li.active{background-color:rgba(0,0,0,.1)}nav ul a{transition:background-color .3s;font-size:1rem;color:#fff;display:block;padding:0 15px;cursor:pointer}nav ul a.btn,nav ul a.btn-large,nav ul a.btn-large,nav ul a.btn-flat,nav ul a.btn-floating{margin-top:-2px;margin-left:15px;margin-right:15px}nav ul a.btn>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-large>.material-icons,nav ul a.btn-flat>.material-icons,nav ul a.btn-floating>.material-icons{height:inherit;line-height:inherit}nav ul a:hover{background-color:rgba(0,0,0,.1)}nav ul.left{float:left}nav form{height:100%}nav .input-field{margin:0;height:100%}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,.7);transition:color .3s}nav .input-field label.active i{color:#fff}.navbar-fixed{position:relative;height:56px;z-index:997}.navbar-fixed nav{position:fixed}@media only screen and (min-width:601px){nav.nav-extended .nav-wrapper{min-height:64px}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("../fonts/roboto/Roboto-Thin.woff2") format("woff2"),url("../fonts/roboto/Roboto-Thin.woff") format("woff");font-weight:100}@font-face{font-family:"Roboto";src:local(Roboto Light),url("../fonts/roboto/Roboto-Light.woff2") format("woff2"),url("../fonts/roboto/Roboto-Light.woff") format("woff");font-weight:300}@font-face{font-family:"Roboto";src:local(Roboto Regular),url("../fonts/roboto/Roboto-Regular.woff2") format("woff2"),url("../fonts/roboto/Roboto-Regular.woff") format("woff");font-weight:400}@font-face{font-family:"Roboto";src:local(Roboto Medium),url("../fonts/roboto/Roboto-Medium.woff2") format("woff2"),url("../fonts/roboto/Roboto-Medium.woff") format("woff");font-weight:500}@font-face{font-family:"Roboto";src:local(Roboto Bold),url("../fonts/roboto/Roboto-Bold.woff2") format("woff2"),url("../fonts/roboto/Roboto-Bold.woff") format("woff");font-weight:700}a{text-decoration:none}html{line-height:1.5;font-family:"Roboto",sans-serif;font-weight:400;color:rgba(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}h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem}h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem}h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 .912rem}h5{font-size:1.64rem;line-height:110%;margin:.82rem 0 .656rem}h6{font-size:1rem;line-height:110%;margin:.5rem 0 .4rem}em{font-style:italic}strong{font-weight:500}small{font-size:75%}.light,.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}}.scale-transition{transition:-webkit-transform .3s cubic-bezier(.53,.01,.36,1.63) !important;transition:transform .3s cubic-bezier(.53,.01,.36,1.63) !important;transition:transform .3s cubic-bezier(.53,.01,.36,1.63),-webkit-transform .3s cubic-bezier(.53,.01,.36,1.63) !important}.scale-transition.scale-out{-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .2s !important;transition:transform .2s !important;transition:transform .2s,-webkit-transform .2s !important}.scale-transition.scale-in{-webkit-transform:scale(1);transform:scale(1)}.card-panel{transition:box-shadow .25s;padding:24px;margin:.5rem 0 1rem;border-radius:2px;background-color:#fff}.card{position:relative;margin:.5rem 0 1rem;background-color:#fff;transition:box-shadow .25s;border-radius:2px}.card .card-title{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{max-height:60%;overflow:hidden}.card.small .card-image+.card-content,.card.medium .card-image+.card-content,.card.large .card-image+.card-content{max-height:40%}.card.small .card-content,.card.medium .card-content,.card.large .card-content{max-height:100%;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.medium{height:400px}.card.large{height:500px}.card.horizontal{display:-webkit-flex;display:-ms-flexbox;display:flex}.card.horizontal.small .card-image,.card.horizontal.medium .card-image,.card.horizontal.large .card-image{height:100%;max-height:none;overflow:visible}.card.horizontal.small .card-image img,.card.horizontal.medium .card-image img,.card.horizontal.large .card-image img{height:100%}.card.horizontal .card-image{max-width:50%}.card.horizontal .card-image img{border-radius:2px 0 0 2px;max-width:100%;width:auto}.card.horizontal .card-stacked{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-flex:1;-ms-flex:1;flex:1;position:relative}.card.horizontal .card-stacked .card-content{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.card.sticky-action .card-action{z-index:2}.card.sticky-action .card-reveal{z-index:1;padding-bottom:64px}.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{color:#fff;position:absolute;bottom:0;left:0;max-width:100%;padding:24px}.card .card-content{padding:24px;border-radius:0 0 2px 2px}.card .card-content p{margin:0;color:inherit}.card .card-content .card-title{display:block;line-height:32px;margin-bottom:8px}.card .card-content .card-title i{line-height:32px}.card .card-action{position:relative;background-color:inherit;border-top:1px solid rgba(160,160,160,.2);padding:16px 24px}.card .card-action:last-child{border-radius:0 0 2px 2px}.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating){color:#ffab40;margin-right:24px;transition:color .3s ease;text-transform:uppercase}.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating):hover{color:#ffd8a6}.card .card-reveal{padding:24px;position:absolute;background-color:#fff;width:100%;overflow-y:auto;left:0;top:100%;height:100%;z-index:3;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{left:5%;bottom:7%;max-width:90%}}@media only screen and (min-width:993px){#toast-container{top:10%;right:7%;max-width:86%}}.toast{border-radius:2px;top:35px;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:auto;min-height:48px;line-height:1.5em;word-break:break-all;background-color:#323232;padding:10px 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;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{position:relative;overflow-x:auto;overflow-y:hidden;height:48px;width:100%;background-color:#fff;margin:0 auto;white-space:nowrap}.tabs.tabs-transparent{background-color:transparent}.tabs.tabs-transparent .tab a,.tabs.tabs-transparent .tab.disabled a,.tabs.tabs-transparent .tab.disabled a:hover{color:rgba(255,255,255,.7)}.tabs.tabs-transparent .tab a:hover,.tabs.tabs-transparent .tab a.active{color:#fff}.tabs.tabs-transparent .indicator{background-color:#fff}.tabs.tabs-fixed-width{display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs.tabs-fixed-width .tab{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab{display:inline-block;text-align:center;line-height:48px;height:48px;padding:0;margin:0;text-transform:uppercase}.tabs .tab a{color:rgba(238,110,115,.7);display:block;width:100%;height:100%;padding:0 24px;font-size:14px;text-overflow:ellipsis;overflow:hidden;transition:color .28s ease}.tabs .tab a:hover,.tabs .tab a.active{background-color:transparent;color:#ee6e73}.tabs .tab.disabled a,.tabs .tab.disabled a:hover{color:rgba(238,110,115,.7);cursor:default}.tabs .indicator{position:absolute;bottom:0;height:2px;background-color:#f6b2b5;will-change:left,right}@media only screen and (max-width:992px){.tabs{display:-webkit-flex;display:-ms-flexbox;display:flex}.tabs .tab{-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1}.tabs .tab a{padding:0 12px}}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:2000;background-color:transparent;border-radius:2px;color:#fff;min-height:36px;line-height:120%;opacity:0;position:absolute;text-align:center;max-width:calc(100% - 4px);overflow:hidden;left:0;top:0;pointer-events:none;visibility:hidden}.backdrop{position:absolute;opacity:0;height:7px;width:14px;border-radius:0 0 50% 50%;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 0%;transform-origin:50% 0%;visibility:hidden}.btn,.btn-large,.btn-flat{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;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-flat.disabled,.btn:disabled,.btn-large:disabled,.btn-floating:disabled,.btn-large:disabled,.btn-flat:disabled,.btn[disabled],[disabled].btn-large,.btn-floating[disabled],.btn-large[disabled],.btn-flat[disabled]{pointer-events:none;background-color:#dfdfdf !important;box-shadow:none;color:#9f9f9f !important;cursor:default}.btn.disabled:hover,.disabled.btn-large:hover,.btn-floating.disabled:hover,.btn-large.disabled:hover,.btn-flat.disabled:hover,.btn:disabled:hover,.btn-large:disabled:hover,.btn-floating:disabled:hover,.btn-large:disabled:hover,.btn-flat:disabled:hover,.btn[disabled]:hover,[disabled].btn-large:hover,.btn-floating[disabled]:hover,.btn-large[disabled]:hover,.btn-flat[disabled]:hover{background-color:#dfdfdf !important;color:#9f9f9f !important}.btn,.btn-large,.btn-floating,.btn-large,.btn-flat{font-size:1rem;outline:0}.btn i,.btn-large i,.btn-floating i,.btn-large i,.btn-flat i{font-size:1.3rem;line-height:inherit}.btn:focus,.btn-large:focus,.btn-floating:focus{background-color:#1d7d74}.btn,.btn-large{text-decoration:none;color:#fff;background-color:#26a69a;text-align:center;letter-spacing:.5px;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:40px;height:40px;line-height:40px;padding:0;background-color:#26a69a;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.btn-floating:hover{background-color:#26a69a}.btn-floating:before{border-radius:0}.btn-floating.btn-large{width:56px;height:56px}.btn-floating.btn-large.halfway-fab{bottom:-28px}.btn-floating.btn-large i{line-height:56px}.btn-floating.halfway-fab{position:absolute;right:24px;bottom:-20px}.btn-floating.halfway-fab.left{right:auto;left:24px}.btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:40px}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.active ul{visibility:visible}.fixed-action-btn.horizontal{padding:0 0 0 15px}.fixed-action-btn.horizontal ul{text-align:right;right:64px;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);height:100%;left:auto;width:500px}.fixed-action-btn.horizontal ul li{display:inline-block;margin:15px 15px 0 0}.fixed-action-btn.toolbar{padding:0;height:56px}.fixed-action-btn.toolbar.active>a i{opacity:0}.fixed-action-btn.toolbar ul{display:-webkit-flex;display:-ms-flexbox;display:flex;top:0;bottom:0}.fixed-action-btn.toolbar ul li{-webkit-flex:1;-ms-flex:1;flex:1;display:inline-block;margin:0;height:100%;transition:none}.fixed-action-btn.toolbar ul li a{display:block;overflow:hidden;position:relative;width:100%;height:100%;background-color:transparent;box-shadow:none;color:#fff;line-height:56px;z-index:1}.fixed-action-btn.toolbar ul li a i{line-height:inherit}.fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0;visibility:hidden}.fixed-action-btn ul li{margin-bottom:15px}.fixed-action-btn ul a.btn-floating{opacity:0}.fixed-action-btn .fab-backdrop{position:absolute;top:0;left:0;z-index:-1;width:40px;height:40px;background-color:#26a69a;border-radius:50%;-webkit-transform:scale(0);transform:scale(0)}.btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer;transition:background-color .2s}.btn-flat:focus,.btn-flat:active{background-color:transparent}.btn-flat:focus,.btn-flat:hover{background-color:rgba(0,0,0,.1);box-shadow:none}.btn-flat:active{background-color:rgba(0,0,0,.2)}.btn-flat.disabled{background-color:transparent !important;color:#b3b3b3 !important;cursor:default}.btn-large{height:54px;line-height:54px}.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,.87);cursor:pointer;min-height:50px;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.dropdown-content li:hover,.dropdown-content li.active,.dropdown-content li.selected{background-color:#eee}.dropdown-content li.active.selected{background-color:#e1e1e1}.dropdown-content li.divider{min-height:0;height:1px}.dropdown-content li>a,.dropdown-content li>span{font-size:16px;color:#26a69a;display:block;line-height:22px;padding:14px 16px}.dropdown-content li>span>label{top:1px;left:0;height:18px}.dropdown-content li>a>i{height:inherit;line-height:inherit;float:left;margin:0 24px 0 0;width:24px}.input-field.col .dropdown-content [type=checkbox]+label{top:1px;left:0;height:18px}
+/*!
+ * Waves v0.6.0
+ * http://fian.my.id/Waves
+ *
+ * Copyright 2014 Alfiana E. Sibuea and other contributors
+ * Released under the MIT license
+ * https://github.com/fians/Waves/blob/master/LICENSE
+ */
+.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;transition:.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,.2);transition:all .7s ease-out;transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform;-webkit-transform:scale(0);transform:scale(0);pointer-events:none}.waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,.45)}.waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,.7)}.waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,.7)}.waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,.7)}.waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,.7)}.waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,.7)}.waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,.7)}.waves-effect input[type=button],.waves-effect input[type=reset],.waves-effect input[type=submit]{border:0;font-style:normal;font-size:inherit;text-transform:inherit;background:0 0}.waves-effect img{position:relative;z-index:-1}.waves-notransition{transition:none !important}.waves-circle{-webkit-transform:translateZ(0);transform:translateZ(0);-webkit-mask-image:-webkit-radial-gradient(circle,#fff 100%,#000 100%)}.waves-input-wrapper{border-radius:.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}.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}.modal-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,.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:.5rem 0 1rem}.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;box-sizing:border-box;padding:2rem}.side-nav .collapsible,.side-nav.fixed .collapsible{border:none;box-shadow:none}.side-nav .collapsible li,.side-nav.fixed .collapsible li{padding:0}.side-nav .collapsible-header,.side-nav.fixed .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;padding:0 16px}.side-nav .collapsible-header:hover,.side-nav.fixed .collapsible-header:hover{background-color:rgba(0,0,0,.05)}.side-nav .collapsible-header i,.side-nav.fixed .collapsible-header i{line-height:inherit}.side-nav .collapsible-body,.side-nav.fixed .collapsible-body{border:0;background-color:#fff}.side-nav .collapsible-body li a,.side-nav.fixed .collapsible-body li a{padding:0 23.5px 0 31px}.collapsible.popout{border:none;box-shadow:none}.collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);margin:0 24px;transition:margin .35s cubic-bezier(.25,.46,.45,.94)}.collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,.18),0 4px 15px 0 rgba(0,0,0,.15);margin:16px 0}.chip{display:inline-block;height:32px;font-size:13px;font-weight:500;color:rgba(0,0,0,.6);line-height:32px;padding:0 12px;border-radius:16px;background-color:#e4e4e4;margin-bottom:5px;margin-right:5px}.chip>img{float:left;margin:0 8px 0 -12px;height:32px;width:32px;border-radius:50%}.chip .close{cursor:pointer;float:right;font-size:16px;line-height:32px;padding-left:8px}.chips{border:none;border-bottom:1px solid #9e9e9e;box-shadow:none;margin:0 0 20px;min-height:45px;outline:none;transition:all .3s}.chips.focus{border-bottom:1px solid #26a69a;box-shadow:0 1px 0 0 #26a69a}.chips:hover{cursor:text}.chips .chip.selected{background-color:#26a69a;color:#fff}.chips .input{background:0 0;border:0;color:rgba(0,0,0,.6);display:inline-block;font-size:1rem;height:3rem;line-height:32px;outline:0;margin:0;padding:0 !important;width:120px !important}.chips .input:focus{border:0 !important;box-shadow:none !important}.chips .autocomplete-content{margin-top:0}.prefix~.chips{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.chips:empty~label{font-size:.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.materialboxed{display:block;cursor:-webkit-zoom-in;cursor:zoom-in;position:relative;transition:opacity .4s;-webkit-backface-visibility:hidden}.materialboxed:hover:not(.active){opacity:.8}.materialboxed.active{cursor:-webkit-zoom-out;cursor:zoom-out}#materialbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background-color:#292929;z-index:1000;will-change:opacity}.materialbox-caption{position:fixed;display:none;color:#fff;line-height:50px;bottom:0;left: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:.8rem;color:#9e9e9e}::-webkit-input-placeholder{color:#d1d1d1}:-moz-placeholder{color:#d1d1d1}::-moz-placeholder{color:#d1d1d1}:-ms-input-placeholder{color:#d1d1d1}input:not([type]),input[type=text],input[type=password],input[type=email],input[type=url],input[type=time],input[type=date],input[type=datetime],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 20px;padding:0;box-shadow:none;box-sizing:content-box;transition:all .3s}input:not([type]):disabled,input:not([type])[readonly=readonly],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]:disabled,input[type=datetime][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,.26);border-bottom:1px dotted rgba(0,0,0,.26)}input:not([type]):disabled+label,input:not([type])[readonly=readonly]+label,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]:disabled+label,input[type=datetime][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,.26)}input:not([type]):focus:not([readonly]),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]: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:not([type]):focus:not([readonly])+label,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]: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:not([type]).valid,input:not([type]):focus.valid,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].valid,input[type=datetime]: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:not([type]).valid+label:after,input:not([type]):focus.valid+label:after,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].valid+label:after,input[type=datetime]: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:not([type]).invalid,input:not([type]):focus.invalid,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].invalid,input[type=datetime]: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:not([type]).invalid+label:after,input:not([type]):focus.invalid+label:after,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].invalid+label:after,input[type=datetime]: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:not([type]).validate+label,input[type=text].validate+label,input[type=password].validate+label,input[type=email].validate+label,input[type=url].validate+label,input[type=time].validate+label,input[type=date].validate+label,input[type=datetime].validate+label,input[type=datetime-local].validate+label,input[type=tel].validate+label,input[type=number].validate+label,input[type=search].validate+label,textarea.materialize-textarea.validate+label{width:100%;pointer-events:none}input:not([type])+label:after,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]+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:60px;opacity:0;transition:.2s opacity ease-out,.2s color ease-out}.input-field{position:relative;margin-top:1rem}.input-field.inline{display:inline-block;vertical-align:middle;margin-left:5px}.input-field.inline input,.input-field.inline .select-dropdown{margin-bottom:1rem}.input-field.col label{left:.75rem}.input-field.col .prefix~label,.input-field.col .prefix~.validate~label{width:calc(100% - 3rem - 1.5rem)}.input-field label{color:#9e9e9e;position:absolute;top:.8rem;left:0;font-size:1rem;cursor:text;transition:.2s ease-out;text-align:initial}.input-field label:not(.label-icon).active{font-size:.8rem;-webkit-transform:translateY(-140%);transform:translateY(-140%)}.input-field .prefix{position:absolute;width:3rem;font-size:2rem;transition:color .2s}.input-field .prefix.active{color:#26a69a}.input-field .prefix~input,.input-field .prefix~textarea,.input-field .prefix~label,.input-field .prefix~.validate~label,.input-field .prefix~.autocomplete-content{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.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:.8rem 0 1.6rem;resize:none;min-height:3rem}.hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem;position:absolute;top:0}.autocomplete-content{margin-top:-20px;display:block;opacity:1;position:static}.autocomplete-content li .highlight{color:#444}.autocomplete-content li img{height:40px;width:40px;margin:5px 15px}[type=radio]:not(:checked),[type=radio]:checked{position:absolute;left:-9999px;opacity:0}[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;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;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;transition:.28s ease}[type=radio]:not(:checked)+label:before,[type=radio]:not(:checked)+label:after,[type=radio]:checked+label:before,[type=radio]:checked+label:after,[type=radio].with-gap:checked+label:before,[type=radio].with-gap:checked+label:after{border-radius:50%}[type=radio]:not(:checked)+label:before,[type=radio]:not(:checked)+label:after{border:2px solid #5a5a5a}[type=radio]:not(:checked)+label:after{-webkit-transform:scale(0);transform:scale(0)}[type=radio]:checked+label:before{border:2px solid transparent}[type=radio]:checked+label:after,[type=radio].with-gap:checked+label:before,[type=radio].with-gap:checked+label:after{border:2px solid #26a69a}[type=radio]:checked+label:after,[type=radio].with-gap:checked+label:after{background-color:#26a69a}[type=radio]:checked+label:after{-webkit-transform:scale(1.02);transform:scale(1.02)}[type=radio].with-gap:checked+label:after{-webkit-transform:scale(.5);transform:scale(.5)}[type=radio].tabbed:focus+label:before{box-shadow:0 0 0 10px rgba(0,0,0,.1)}[type=radio].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,.26)}[type=radio].with-gap:disabled:checked+label:after{border:none;background-color:rgba(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,.26)}[type=radio]:disabled+label{color:rgba(0,0,0,.26)}[type=radio]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,.26)}[type=radio]:disabled:checked+label:after{background-color:rgba(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;opacity:0}[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,[type=checkbox]:not(.filled-in)+label:after{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;transition:.2s}[type=checkbox]:not(.filled-in)+label:after{border:0;-webkit-transform:scale(0);transform:scale(0)}[type=checkbox]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,.26)}[type=checkbox].tabbed:focus+label:after{-webkit-transform:scale(1);transform:scale(1);border:0;border-radius:50%;box-shadow:0 0 0 10px rgba(0,0,0,.1);background-color:rgba(0,0,0,.1)}[type=checkbox]:checked+label:before{top:-4px;left:-5px;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);transform:rotate(40deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type=checkbox]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,.26);border-bottom:2px solid rgba(0,0,0,.26)}[type=checkbox]:indeterminate+label:before{top:-11px;left:-12px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #26a69a;border-bottom:none;-webkit-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform-origin:100% 100%;transform-origin:100% 100%}[type=checkbox]:indeterminate:disabled+label:before{border-right:2px solid rgba(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:0;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:0;width:20px;height:20px;border:2px solid #26a69a;background-color:#26a69a;z-index:0}[type=checkbox].filled-in.tabbed:focus+label:after{border-radius:2px;border-color:#5a5a5a;background-color:rgba(0,0,0,.1)}[type=checkbox].filled-in.tabbed:checked:focus+label:after{border-radius:2px;background-color:#26a69a;border-color:#26a69a}[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;left:24px}.switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;margin-right:10px;transition:background .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,.4);left:-5px;top:-3px;transition:left .3s ease,background .3s ease,box-shadow .1s ease}input[type=checkbox]:checked:not(:disabled)~.lever:active:after,input[type=checkbox]:checked:not(:disabled).tabbed:focus~.lever:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(38,166,154,.1)}input[type=checkbox]:not(:disabled)~.lever:active:after,input[type=checkbox]:not(:disabled).tabbed:focus~.lever:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,0,0,.08)}.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{display:none}select.browser-default{display:block}select{background-color:rgba(255,255,255,.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.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 20px;padding:0;display:block}.select-wrapper span.caret{color:initial;position:absolute;right:0;top:0;bottom:0;height:10px;margin:auto 0;font-size:10px;line-height:10px}.select-wrapper span.caret.disabled{color:rgba(0,0,0,.26)}.select-wrapper+label{position:absolute;top:-14px;font-size:.8rem}select:disabled{color:rgba(0,0,0,.3)}.select-wrapper input.select-dropdown:disabled{color:rgba(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,.3)}.select-wrapper i{color:rgba(0,0,0,.3)}.select-dropdown li.disabled,.select-dropdown li.disabled>span,.select-dropdown li.optgroup{color:rgba(0,0,0,.3);background-color:transparent}.prefix~.select-wrapper{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.prefix~label{margin-left:3rem}.select-dropdown li img{height:40px;width:40px;margin:5px 15px;float:right}.select-dropdown li.optgroup{border-top:1px solid #eee}.select-dropdown li.optgroup.selected>span{color:rgba(0,0,0,.7)}.select-dropdown li.optgroup>span{color:rgba(0,0,0,.4)}.select-dropdown li.optgroup~li.optgroup-option{padding-left:1rem}.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 0;padding:0}input[type=range]:focus{outline:none}input[type=range]+.thumb{position:absolute;top:10px;left:0;border:none;height:0;width:0;border-radius:50%;background-color:#26a69a;margin-left:7px;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-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);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]{-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;-webkit-transform-origin:50% 50%;transform-origin:50% 50%;margin:-5px 0 0;transition:.3s}input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}input[type=range]{border:1px solid #fff}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 #fff;outline-offset:-1px}input[type=range]:focus::-moz-range-track{background:#ccc}input[type=range]::-ms-track{height:3px;background:0 0;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}.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 #ee6e73}.table-of-contents a.active{font-weight:500;padding-left:18px;border-left:2px solid #ee6e73}.side-nav{position:fixed;width:300px;left:0;top:0;margin:0;-webkit-transform:translateX(-100%);transform:translateX(-100%);height:100%;height:calc(100% + 60px);height:-moz-calc(100%);padding-bottom:60px;background-color:#fff;z-index:999;overflow-y:auto;will-change:transform;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.right-aligned{right:0;-webkit-transform:translateX(105%);transform:translateX(105%);left:auto;-webkit-transform:translateX(100%);transform:translateX(100%)}.side-nav .collapsible{margin:0}.side-nav li{float:none;line-height:48px}.side-nav li.active{background-color:rgba(0,0,0,.05)}.side-nav li>a{color:rgba(0,0,0,.87);display:block;font-size:14px;font-weight:500;height:48px;line-height:48px;padding:0 32px}.side-nav li>a:hover{background-color:rgba(0,0,0,.05)}.side-nav li>a.btn,.side-nav li>a.btn-large,.side-nav li>a.btn-large,.side-nav li>a.btn-flat,.side-nav li>a.btn-floating{margin:10px 15px}.side-nav li>a.btn,.side-nav li>a.btn-large,.side-nav li>a.btn-large,.side-nav li>a.btn-floating{color:#fff}.side-nav li>a.btn-flat{color:#343434}.side-nav li>a.btn:hover,.side-nav li>a.btn-large:hover,.side-nav li>a.btn-large:hover{background-color:#2bbbad}.side-nav li>a.btn-floating:hover{background-color:#26a69a}.side-nav li>a>i,.side-nav li>a>[class^=mdi-],.side-nav li>a li>a>[class*=mdi-],.side-nav li>a>i.material-icons{float:left;height:48px;line-height:48px;margin:0 32px 0 0;width:24px;color:rgba(0,0,0,.54)}.side-nav .divider{margin:8px 0 0}.side-nav .subheader{cursor:initial;pointer-events:none;color:rgba(0,0,0,.54);font-size:14px;font-weight:500;line-height:48px}.side-nav .subheader:hover{background-color:transparent}.side-nav .userView{position:relative;padding:32px 32px 0;margin-bottom:8px}.side-nav .userView>a{height:auto;padding:0}.side-nav .userView>a:hover{background-color:transparent}.side-nav .userView .background{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1}.side-nav .userView .circle,.side-nav .userView .name,.side-nav .userView .email{display:block}.side-nav .userView .circle{height:64px;width:64px}.side-nav .userView .name,.side-nav .userView .email{font-size:14px;line-height:24px}.side-nav .userView .name{margin-top:16px;font-weight:500}.side-nav .userView .email{padding-bottom:16px;font-weight:400}.drag-target{height:100%;width:10px;position:fixed;top:0;z-index:998}.side-nav.fixed{left:0;-webkit-transform:translateX(0);transform:translateX(0);position:fixed}.side-nav.fixed.right-aligned{right:0;left:auto}@media only screen and (max-width:992px){.side-nav.fixed{-webkit-transform:translateX(-105%);transform:translateX(-105%)}.side-nav.fixed.right-aligned{-webkit-transform:translateX(105%);transform:translateX(105%)}.side-nav a{padding:0 16px}.side-nav .userView{padding:16px 16px 0}}.side-nav .collapsible-body>ul:not(.collapsible)>li.active,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active{background-color:#ee6e73}.side-nav .collapsible-body>ul:not(.collapsible)>li.active a,.side-nav.fixed .collapsible-body>ul:not(.collapsible)>li.active a{color:#fff}.side-nav .collapsible-body{padding:0}#sidenav-overlay{position:fixed;top:0;left:0;right:0;height:120vh;background-color:rgba(0,0,0,.5);z-index:997;will-change:opacity}.preloader-wrapper{display:inline-block;position:relative;width:50px;height:50px}.preloader-wrapper.small{width:36px;height:36px}.preloader-wrapper.big{width:64px;height:64px}.preloader-wrapper.active{-webkit-animation:container-rotate 1.568s linear infinite;animation:container-rotate 1.568s linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{-webkit-transform:rotate(360deg);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 5.332s cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5.332s cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5.332s cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5.332s cubic-bezier(.4,0,.2,1) infinite both}.active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5.332s cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5.332s cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5.332s cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5.332s cubic-bezier(.4,0,.2,1) infinite both}.active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5.332s cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5.332s cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5.332s cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5.332s cubic-bezier(.4,0,.2,1) infinite both}.active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5.332s cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5.332s cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5.332s cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5.332s cubic-bezier(.4,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 5.332s cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5.332s cubic-bezier(.4,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%{-webkit-transform:rotate(135deg);transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg);transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg);transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg);transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg);transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg);transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg);transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg);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 1.333s cubic-bezier(.4,0,.2,1) infinite both;animation:left-spin 1.333s cubic-bezier(.4,0,.2,1) infinite both}.active .circle-clipper.right .circle{-webkit-animation:right-spin 1.333s cubic-bezier(.4,0,.2,1) infinite both;animation:right-spin 1.333s cubic-bezier(.4,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{-webkit-transform:rotate(130deg);transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(130deg);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{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}to{-webkit-transform:rotate(-130deg);transform:rotate(-130deg)}}#spinnerContainer.cooldown{-webkit-animation:container-rotate 1.568s linear infinite,fade-out .4s cubic-bezier(.4,0,.2,1);animation:container-rotate 1.568s linear infinite,fade-out .4s cubic-bezier(.4,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;transition:background-color .3s;border-radius:50%}.slider .indicators .indicator-item.active{background-color:#4caf50}.carousel{overflow:hidden;position:relative;width:100%;height:400px;-webkit-perspective:500px;perspective:500px;-webkit-transform-style:preserve-3d;transform-style:preserve-3d;-webkit-transform-origin:0% 50%;transform-origin:0% 50%}.carousel.carousel-slider{top:0;left:0;height:0}.carousel.carousel-slider .carousel-fixed-item{position:absolute;left:0;right:0;bottom:20px;z-index:1}.carousel.carousel-slider .carousel-fixed-item.with-indicators{bottom:68px}.carousel.carousel-slider .carousel-item{width:100%;height:100%;min-height:400px;position:absolute;top:0;left:0}.carousel.carousel-slider .carousel-item h2{font-size:24px;font-weight:500;line-height:32px}.carousel.carousel-slider .carousel-item p{font-size:15px}.carousel .carousel-item{display:none;width:200px;height:200px;position:absolute;top:0;left:0}.carousel .carousel-item>img{width:100%}.carousel .indicators{position:absolute;text-align:center;left:0;right:0;bottom:0;margin:0}.carousel .indicators .indicator-item{display:inline-block;position:relative;cursor:pointer;height:8px;width:8px;margin:24px 4px;background-color:rgba(255,255,255,.5);transition:background-color .3s;border-radius:50%}.carousel .indicators .indicator-item.active{background-color:#fff}.carousel.scrolling .carousel-item .materialboxed,.carousel .carousel-item:not(.active) .materialboxed{pointer-events:none}.tap-target-wrapper{width:800px;height:800px;position:fixed;z-index:1000;visibility:hidden;transition:visibility 0s .3s}.tap-target-wrapper.open{visibility:visible;transition:visibility 0s}.tap-target-wrapper.open .tap-target{-webkit-transform:scale(1);transform:scale(1);opacity:.95;transition:opacity .3s cubic-bezier(.42,0,.58,1),-webkit-transform .3s cubic-bezier(.42,0,.58,1);transition:transform .3s cubic-bezier(.42,0,.58,1),opacity .3s cubic-bezier(.42,0,.58,1);transition:transform .3s cubic-bezier(.42,0,.58,1),opacity .3s cubic-bezier(.42,0,.58,1),-webkit-transform .3s cubic-bezier(.42,0,.58,1)}.tap-target-wrapper.open .tap-target-wave:before{-webkit-transform:scale(1);transform:scale(1)}.tap-target-wrapper.open .tap-target-wave:after{visibility:visible;-webkit-animation:pulse-animation 1s cubic-bezier(.24,0,.38,1) infinite;animation:pulse-animation 1s cubic-bezier(.24,0,.38,1) infinite;transition:opacity .3s,visibility 0s 1s,-webkit-transform .3s;transition:opacity .3s,transform .3s,visibility 0s 1s;transition:opacity .3s,transform .3s,visibility 0s 1s,-webkit-transform .3s}.tap-target{position:absolute;font-size:1rem;border-radius:50%;background-color:#ee6e73;box-shadow:0 20px 20px 0 rgba(0,0,0,.14),0 10px 50px 0 rgba(0,0,0,.12),0 30px 10px -20px rgba(0,0,0,.2);width:100%;height:100%;opacity:0;-webkit-transform:scale(0);transform:scale(0);transition:opacity .3s cubic-bezier(.42,0,.58,1),-webkit-transform .3s cubic-bezier(.42,0,.58,1);transition:transform .3s cubic-bezier(.42,0,.58,1),opacity .3s cubic-bezier(.42,0,.58,1);transition:transform .3s cubic-bezier(.42,0,.58,1),opacity .3s cubic-bezier(.42,0,.58,1),-webkit-transform .3s cubic-bezier(.42,0,.58,1)}.tap-target-content{position:relative;display:table-cell}.tap-target-wave{position:absolute;border-radius:50%;z-index:10001}.tap-target-wave:before,.tap-target-wave:after{content:'';display:block;position:absolute;width:100%;height:100%;border-radius:50%;background-color:#fff}.tap-target-wave:before{-webkit-transform:scale(0);transform:scale(0);transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s}.tap-target-wave:after{visibility:hidden;transition:opacity .3s,visibility 0s,-webkit-transform .3s;transition:opacity .3s,transform .3s,visibility 0s;transition:opacity .3s,transform .3s,visibility 0s,-webkit-transform .3s;z-index:-1}.tap-target-origin{top:50%;left:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);z-index:10002;position:absolute !important}.tap-target-origin:not(.btn):not(.btn-large),.tap-target-origin:not(.btn):not(.btn-large):hover{background:0 0}@media only screen and (max-width:600px){.tap-target,.tap-target-wrapper{width:600px;height:600px}}.pulse{overflow:initial;position:relative}.pulse:before{content:'';display:block;position:absolute;width:100%;height:100%;top:0;left:0;background-color:inherit;border-radius:inherit;transition:opacity .3s,-webkit-transform .3s;transition:opacity .3s,transform .3s;transition:opacity .3s,transform .3s,-webkit-transform .3s;-webkit-animation:pulse-animation 1s cubic-bezier(.24,0,.38,1) infinite;animation:pulse-animation 1s cubic-bezier(.24,0,.38,1) infinite;z-index:-1}@-webkit-keyframes pulse-animation{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}100%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}}@keyframes pulse-animation{0%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}50%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}100%{opacity:0;-webkit-transform:scale(1.5);transform:scale(1.5)}}.picker{font-size:16px;text-align:left;line-height:1.2;color:#000;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}
+/*!
+ * Default mobile-first, responsive styling for pickadate.js
+ * Demo: http://amsul.github.io/pickadate.js
+ */
+.picker__holder,.picker__frame{bottom:0;left:0;right:0;top:100%}.picker__holder{position:fixed;transition:background .15s ease-out,top 0s .15s;-webkit-backface-visibility:hidden}.picker__frame{position:absolute;margin:0 auto;min-width:256px;width:300px;max-height:350px;-ms-filter:"alpha(opacity=0)";filter:alpha(opacity=0);-moz-opacity:0;opacity:0;transition:all .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:#fff;display:table-cell;vertical-align:middle}@media (min-height:28.875em){.picker__box{display:block;border:1px solid #777;border-top-color:#898989;border-bottom-width:0;border-radius:5px 5px 0 0;box-shadow:0 12px 36px 16px rgba(0,0,0,.24)}}.picker--opened .picker__holder{top:0;background:0 0;-ms-filter:"progid:DXImageTransform.Microsoft.gradient(startColorstr=#1E000000,endColorstr=#1E000000)";zoom:1;background:rgba(0,0,0,.32);transition:background .15s ease-out}.picker--opened .picker__frame{top:0;-ms-filter:"alpha(opacity=100)";filter:alpha(opacity=100);-moz-opacity:1;opacity:1}@media (min-height:35.875em){.picker--opened .picker__frame{top:10%;bottom: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:#fff;width:40%}.picker__select--year.browser-default{display:inline;background-color:#fff;width:26%}.picker__select--month:focus,.picker__select--year:focus{border-color:rgba(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:-.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:0 0;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:#999;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:#aaa}.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:#ddd;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);transform:scale(.75);background:#0089ec;color:#fff}.picker__day--disabled,.picker__day--disabled:hover,.picker--focused .picker__day--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__day--highlighted.picker__day--disabled,.picker__day--highlighted.picker__day--disabled:hover{background:#bbb}.picker__footer{text-align:center;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between}.picker__button--today,.picker__button--clear,.picker__button--close{border:1px solid #fff;background:#fff;font-size:.8em;padding:.66em 0;font-weight:700;width:33%;display:inline-block;vertical-align:bottom}.picker__button--today:hover,.picker__button--clear:hover,.picker__button--close:hover{cursor:pointer;color:#000;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,.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:-.05em;width:0;border-top:.66em solid #0059bc;border-left:.66em solid transparent}.picker__button--clear:before{top:-.25em;width:.66em;border-top:3px solid #e20}.picker__button--close:before{content:"\D7";top:-.1em;vertical-align:top;font-size:1.1em;margin-right:.35em;color:#777}.picker__button--today[disabled],.picker__button--today[disabled]:hover{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default}.picker__button--today[disabled]:before{border-top-color:#aaa}.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:#000;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,.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);transform:scale(.9);background-color:#26a69a;color:#fff}.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:.75em solid #676767;width:0;height:0;display:block;margin:0 auto}.picker__nav--next:before{border-right:0;border-left:.75em solid #676767}button.picker__today:focus,button.picker__clear:focus,button.picker__close:focus{background-color:#a1ded8}.picker__list{list-style:none;padding:.75em 0 4.2em;margin:0}.picker__list-item{border-bottom:1px solid #ddd;border-top:1px solid #ddd;margin-bottom:-1px;position:relative;background:#fff;padding:.75em 1.25em}@media (min-height:46.75em){.picker__list-item{padding:.5em 1em}}.picker__list-item:hover{cursor:pointer;color:#000;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:#000;background:#b1dcfb}.picker__list-item--selected,.picker__list-item--selected:hover,.picker--focused .picker__list-item--selected{background:#0089ec;color:#fff;z-index:10}.picker__list-item--disabled,.picker__list-item--disabled:hover,.picker--focused .picker__list-item--disabled{background:#f5f5f5;border-color:#f5f5f5;color:#ddd;cursor:default;border-color:#ddd;z-index:auto}.picker--time .picker__button--clear{display:block;width:80%;margin:1em auto 0;padding:1em 1.25em;background:0 0;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:#000;background:#b1dcfb;background:#e20;border-color:#e20;cursor:pointer;color:#fff;outline:none}.picker--time .picker__button--clear:before{top:-.25em;color:#666;font-size:1.25em;font-weight:700}.picker--time .picker__button--clear:hover:before,.picker--time .picker__button--clear:focus:before{color:#fff}.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/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/mui.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/mui.css
new file mode 100644
index 0000000..fdcb3af
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/mui.css
@@ -0,0 +1,2 @@
+/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */
+html{font-family:sans-serif;line-height:1.15;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,footer,header,nav,section{display:block}h1{font-size:2em;margin:.67em 0}figcaption,figure,main{display:block}figure{margin:1em 40px}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent;-webkit-text-decoration-skip:objects}a:active,a:hover{outline-width:0}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:inherit}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}dfn{font-style:italic}mark{background-color:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}audio,video{display:inline-block}audio:not([controls]){display:none;height:0}img{border-style:none}svg:not(:root){overflow:hidden}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,html [type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{display:inline-block;vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details,menu{display:block}summary{display:list-item}canvas{display:inline-block}template{display:none}[hidden]{display:none}html{font-size:10px;-webkit-tap-highlight-color:transparent}body{font-family:Arial,Verdana,Tahoma;font-size:14px;font-weight:400;line-height:1.429;color:rgba(0,0,0,.87);background-color:#fff}a{color:#2196f3;text-decoration:none}a:hover,a:focus{text-decoration:underline}a:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}p{margin:0 0 10px}ul,ol{margin-top:0;margin-bottom:10px}hr{margin-top:20px;margin-bottom:20px;border:0;height:1px;background-color:rgba(0,0,0,.12)}strong{font-weight:700}abbr[title]{cursor:help;border-bottom:1px dotted #2196f3}h1,h2,h3{margin-top:20px;margin-bottom:10px}h4,h5,h6{margin-top:10px;margin-bottom:10px}.mui--appbar-height{height:56px}.mui--appbar-min-height,.mui-appbar{min-height:56px}.mui--appbar-line-height{line-height:56px}.mui--appbar-top{top:56px}@media (orientation:landscape) and (max-height:480px){.mui--appbar-height{height:48px}.mui--appbar-min-height,.mui-appbar{min-height:48px}.mui--appbar-line-height{line-height:48px}.mui--appbar-top{top:48px}}@media (min-width:480px){.mui--appbar-height{height:64px}.mui--appbar-min-height,.mui-appbar{min-height:64px}.mui--appbar-line-height{line-height:64px}.mui--appbar-top{top:64px}}.mui-appbar{background-color:#2196f3;color:#fff}.mui-btn{font-weight:500;font-size:14px;line-height:18px;text-transform:uppercase;color:rgba(0,0,0,.87);background-color:#fff;transition:all .2s ease-in-out;display:inline-block;height:36px;padding:0 26px;margin:6px 0;border:none;border-radius:2px;cursor:pointer;-ms-touch-action:manipulation;touch-action:manipulation;background-image:none;text-align:center;line-height:36px;vertical-align:middle;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;font-size:14px;font-family:inherit;letter-spacing:.03em;position:relative;overflow:hidden}.mui-btn:hover,.mui-btn:focus,.mui-btn:active{color:rgba(0,0,0,.87);background-color:#fff}.mui-btn[disabled]:hover,.mui-btn[disabled]:focus,.mui-btn[disabled]:active{color:rgba(0,0,0,.87);background-color:#fff}.mui-btn.mui-btn--flat{color:rgba(0,0,0,.87);background-color:transparent}.mui-btn.mui-btn--flat:hover,.mui-btn.mui-btn--flat:focus,.mui-btn.mui-btn--flat:active{color:rgba(0,0,0,.87);background-color:#f2f2f2}.mui-btn.mui-btn--flat[disabled]:hover,.mui-btn.mui-btn--flat[disabled]:focus,.mui-btn.mui-btn--flat[disabled]:active{color:rgba(0,0,0,.87);background-color:transparent}.mui-btn:hover,.mui-btn:focus,.mui-btn:active{outline:0;text-decoration:none;color:rgba(0,0,0,.87)}.mui-btn:hover,.mui-btn:focus{box-shadow:0 0px 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.mui-btn:hover,.mui-btn:focus{box-shadow:0 -1px 2px rgba(0,0,0,.12),-1px 0px 2px rgba(0,0,0,.12),0 0px 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}}@supports (-ms-ime-align:auto){.mui-btn:hover,.mui-btn:focus{box-shadow:0 -1px 2px rgba(0,0,0,.12),-1px 0px 2px rgba(0,0,0,.12),0 0px 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}}.mui-btn:active:hover{box-shadow:0 0px 4px rgba(0,0,0,.12),1px 3px 4px rgba(0,0,0,.2)}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.mui-btn:active:hover{box-shadow:0 -1px 2px rgba(0,0,0,.12),-1px 0px 2px rgba(0,0,0,.12),0 0px 4px rgba(0,0,0,.12),1px 3px 4px rgba(0,0,0,.2)}}@supports (-ms-ime-align:auto){.mui-btn:active:hover{box-shadow:0 -1px 2px rgba(0,0,0,.12),-1px 0px 2px rgba(0,0,0,.12),0 0px 4px rgba(0,0,0,.12),1px 3px 4px rgba(0,0,0,.2)}}.mui-btn:disabled,.mui-btn.mui--is-disabled{cursor:not-allowed;pointer-events:none;opacity:.6;box-shadow:none}.mui-btn+.mui-btn{margin-left:8px}.mui-btn--flat{background-color:transparent}.mui-btn--flat:hover,.mui-btn--flat:focus,.mui-btn--flat:active,.mui-btn--flat:active:hover{box-shadow:none;background-color:#f2f2f2}.mui-btn--raised,.mui-btn--fab{box-shadow:0 0px 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.mui-btn--raised,.mui-btn--fab{box-shadow:0 -1px 2px rgba(0,0,0,.12),-1px 0px 2px rgba(0,0,0,.12),0 0px 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}}@supports (-ms-ime-align:auto){.mui-btn--raised,.mui-btn--fab{box-shadow:0 -1px 2px rgba(0,0,0,.12),-1px 0px 2px rgba(0,0,0,.12),0 0px 2px rgba(0,0,0,.12),0 2px 2px rgba(0,0,0,.2)}}.mui-btn--raised:active,.mui-btn--fab:active{box-shadow:0 0px 4px rgba(0,0,0,.12),1px 3px 4px rgba(0,0,0,.2)}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.mui-btn--raised:active,.mui-btn--fab:active{box-shadow:0 -1px 2px rgba(0,0,0,.12),-1px 0px 2px rgba(0,0,0,.12),0 0px 4px rgba(0,0,0,.12),1px 3px 4px rgba(0,0,0,.2)}}@supports (-ms-ime-align:auto){.mui-btn--raised:active,.mui-btn--fab:active{box-shadow:0 -1px 2px rgba(0,0,0,.12),-1px 0px 2px rgba(0,0,0,.12),0 0px 4px rgba(0,0,0,.12),1px 3px 4px rgba(0,0,0,.2)}}.mui-btn--fab{position:relative;padding:0;width:55px;height:55px;line-height:55px;border-radius:50%;z-index:1}.mui-btn--primary{color:#fff;background-color:#2196f3}.mui-btn--primary:hover,.mui-btn--primary:focus,.mui-btn--primary:active{color:#fff;background-color:#39a1f4}.mui-btn--primary[disabled]:hover,.mui-btn--primary[disabled]:focus,.mui-btn--primary[disabled]:active{color:#fff;background-color:#2196f3}.mui-btn--primary.mui-btn--flat{color:#2196f3;background-color:transparent}.mui-btn--primary.mui-btn--flat:hover,.mui-btn--primary.mui-btn--flat:focus,.mui-btn--primary.mui-btn--flat:active{color:#2196f3;background-color:#f2f2f2}.mui-btn--primary.mui-btn--flat[disabled]:hover,.mui-btn--primary.mui-btn--flat[disabled]:focus,.mui-btn--primary.mui-btn--flat[disabled]:active{color:#2196f3;background-color:transparent}.mui-btn--dark{color:#fff;background-color:#424242}.mui-btn--dark:hover,.mui-btn--dark:focus,.mui-btn--dark:active{color:#fff;background-color:#4f4f4f}.mui-btn--dark[disabled]:hover,.mui-btn--dark[disabled]:focus,.mui-btn--dark[disabled]:active{color:#fff;background-color:#424242}.mui-btn--dark.mui-btn--flat{color:#424242;background-color:transparent}.mui-btn--dark.mui-btn--flat:hover,.mui-btn--dark.mui-btn--flat:focus,.mui-btn--dark.mui-btn--flat:active{color:#424242;background-color:#f2f2f2}.mui-btn--dark.mui-btn--flat[disabled]:hover,.mui-btn--dark.mui-btn--flat[disabled]:focus,.mui-btn--dark.mui-btn--flat[disabled]:active{color:#424242;background-color:transparent}.mui-btn--danger{color:#fff;background-color:#f44336}.mui-btn--danger:hover,.mui-btn--danger:focus,.mui-btn--danger:active{color:#fff;background-color:#f55a4e}.mui-btn--danger[disabled]:hover,.mui-btn--danger[disabled]:focus,.mui-btn--danger[disabled]:active{color:#fff;background-color:#f44336}.mui-btn--danger.mui-btn--flat{color:#f44336;background-color:transparent}.mui-btn--danger.mui-btn--flat:hover,.mui-btn--danger.mui-btn--flat:focus,.mui-btn--danger.mui-btn--flat:active{color:#f44336;background-color:#f2f2f2}.mui-btn--danger.mui-btn--flat[disabled]:hover,.mui-btn--danger.mui-btn--flat[disabled]:focus,.mui-btn--danger.mui-btn--flat[disabled]:active{color:#f44336;background-color:transparent}.mui-btn--accent{color:#fff;background-color:#ff4081}.mui-btn--accent:hover,.mui-btn--accent:focus,.mui-btn--accent:active{color:#fff;background-color:#ff5a92}.mui-btn--accent[disabled]:hover,.mui-btn--accent[disabled]:focus,.mui-btn--accent[disabled]:active{color:#fff;background-color:#ff4081}.mui-btn--accent.mui-btn--flat{color:#ff4081;background-color:transparent}.mui-btn--accent.mui-btn--flat:hover,.mui-btn--accent.mui-btn--flat:focus,.mui-btn--accent.mui-btn--flat:active{color:#ff4081;background-color:#f2f2f2}.mui-btn--accent.mui-btn--flat[disabled]:hover,.mui-btn--accent.mui-btn--flat[disabled]:focus,.mui-btn--accent.mui-btn--flat[disabled]:active{color:#ff4081;background-color:transparent}.mui-btn--small{height:30.6px;line-height:30.6px;padding:0 16px;font-size:13px}.mui-btn--large{height:54px;line-height:54px;padding:0 26px;font-size:14px}.mui-btn--fab.mui-btn--small{width:44px;height:44px;line-height:44px}.mui-btn--fab.mui-btn--large{width:75px;height:75px;line-height:75px}.mui-radio,.mui-checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.mui-radio>label,.mui-checkbox>label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:400;cursor:pointer}.mui-radio input:disabled,.mui-checkbox input:disabled{cursor:not-allowed}.mui-radio input:focus,.mui-checkbox input:focus{outline:thin dotted;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.mui-radio>label>input[type=radio],.mui-radio--inline>label>input[type=radio],.mui-checkbox>label>input[type=checkbox],.mui-checkbox--inline>label>input[type=checkbox]{position:absolute;margin-left:-20px;margin-top:4px}.mui-radio+.mui-radio,.mui-checkbox+.mui-checkbox{margin-top:-5px}.mui-radio--inline,.mui-checkbox--inline{display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:400;cursor:pointer}.mui-radio--inline>input[type=radio],.mui-radio--inline>input[type=checkbox],.mui-radio--inline>label>input[type=radio],.mui-radio--inline>label>input[type=checkbox],.mui-checkbox--inline>input[type=radio],.mui-checkbox--inline>input[type=checkbox],.mui-checkbox--inline>label>input[type=radio],.mui-checkbox--inline>label>input[type=checkbox]{margin:4px 0 0;line-height:normal}.mui-radio--inline+.mui-radio--inline,.mui-checkbox--inline+.mui-checkbox--inline{margin-top:0;margin-left:10px}.mui-container{box-sizing:border-box;margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.mui-container:before,.mui-container:after{content:" ";display:table}.mui-container:after{clear:both}@media (min-width:544px){.mui-container{max-width:570px}}@media (min-width:768px){.mui-container{max-width:740px}}@media (min-width:992px){.mui-container{max-width:960px}}@media (min-width:1200px){.mui-container{max-width:1170px}}.mui-container-fluid{box-sizing:border-box;margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.mui-container-fluid:before,.mui-container-fluid:after{content:" ";display:table}.mui-container-fluid:after{clear:both}.mui-divider{display:block;height:1px;background-color:rgba(0,0,0,.12)}.mui--divider-top{border-top:1px solid rgba(0,0,0,.12)}.mui--divider-bottom{border-bottom:1px solid rgba(0,0,0,.12)}.mui--divider-left{border-left:1px solid rgba(0,0,0,.12)}.mui--divider-right{border-right:1px solid rgba(0,0,0,.12)}.mui-dropdown{display:inline-block;position:relative}[data-mui-toggle=dropdown]{outline:0}.mui-dropdown__menu{position:absolute;top:100%;left:0;display:none;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border-radius:2px;z-index:1;background-clip:padding-box}.mui-dropdown__menu.mui--is-open{display:block}.mui-dropdown__menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.429;color:rgba(0,0,0,.87);text-decoration:none;white-space:nowrap}.mui-dropdown__menu>li>a:hover,.mui-dropdown__menu>li>a:focus{text-decoration:none;color:rgba(0,0,0,.87);background-color:#eee}.mui-dropdown__menu>.mui--is-disabled>a,.mui-dropdown__menu>.mui--is-disabled>a:hover,.mui-dropdown__menu>.mui--is-disabled>a:focus{color:#eee}.mui-dropdown__menu>.mui--is-disabled>a:hover,.mui-dropdown__menu>.mui--is-disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;cursor:not-allowed}.mui-dropdown__menu--right{left:auto;right:0}.mui-form legend{display:block;width:100%;padding:0;margin-bottom:10px;font-size:21px;color:rgba(0,0,0,.87);line-height:inherit;border:0}.mui-form fieldset{border:0;padding:0;margin:0 0 20px}@media (min-width:544px){.mui-form--inline .mui-textfield{display:inline-block;vertical-align:bottom;margin-bottom:0}.mui-form--inline .mui-radio,.mui-form--inline .mui-checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.mui-form--inline .mui-radio>label,.mui-form--inline .mui-checkbox>label{padding-left:0}.mui-form--inline .mui-radio>label>input[type=radio],.mui-form--inline .mui-checkbox>label>input[type=checkbox]{position:relative;margin-left:0}.mui-form--inline .mui-select{display:inline-block}.mui-form--inline .mui-btn{margin-bottom:0;margin-top:0;vertical-align:bottom}}.mui-row{margin-left:-15px;margin-right:-15px}.mui-row:before,.mui-row:after{content:" ";display:table}.mui-row:after{clear:both}.mui-col-xs-1,.mui-col-sm-1,.mui-col-md-1,.mui-col-lg-1,.mui-col-xs-2,.mui-col-sm-2,.mui-col-md-2,.mui-col-lg-2,.mui-col-xs-3,.mui-col-sm-3,.mui-col-md-3,.mui-col-lg-3,.mui-col-xs-4,.mui-col-sm-4,.mui-col-md-4,.mui-col-lg-4,.mui-col-xs-5,.mui-col-sm-5,.mui-col-md-5,.mui-col-lg-5,.mui-col-xs-6,.mui-col-sm-6,.mui-col-md-6,.mui-col-lg-6,.mui-col-xs-7,.mui-col-sm-7,.mui-col-md-7,.mui-col-lg-7,.mui-col-xs-8,.mui-col-sm-8,.mui-col-md-8,.mui-col-lg-8,.mui-col-xs-9,.mui-col-sm-9,.mui-col-md-9,.mui-col-lg-9,.mui-col-xs-10,.mui-col-sm-10,.mui-col-md-10,.mui-col-lg-10,.mui-col-xs-11,.mui-col-sm-11,.mui-col-md-11,.mui-col-lg-11,.mui-col-xs-12,.mui-col-sm-12,.mui-col-md-12,.mui-col-lg-12{box-sizing:border-box;min-height:1px;padding-left:15px;padding-right:15px}.mui-col-xs-1,.mui-col-xs-2,.mui-col-xs-3,.mui-col-xs-4,.mui-col-xs-5,.mui-col-xs-6,.mui-col-xs-7,.mui-col-xs-8,.mui-col-xs-9,.mui-col-xs-10,.mui-col-xs-11,.mui-col-xs-12{float:left}.mui-col-xs-1{width:8.33333%}.mui-col-xs-2{width:16.66667%}.mui-col-xs-3{width:25%}.mui-col-xs-4{width:33.33333%}.mui-col-xs-5{width:41.66667%}.mui-col-xs-6{width:50%}.mui-col-xs-7{width:58.33333%}.mui-col-xs-8{width:66.66667%}.mui-col-xs-9{width:75%}.mui-col-xs-10{width:83.33333%}.mui-col-xs-11{width:91.66667%}.mui-col-xs-12{width:100%}.mui-col-xs-offset-0{margin-left:0}.mui-col-xs-offset-1{margin-left:8.33333%}.mui-col-xs-offset-2{margin-left:16.66667%}.mui-col-xs-offset-3{margin-left:25%}.mui-col-xs-offset-4{margin-left:33.33333%}.mui-col-xs-offset-5{margin-left:41.66667%}.mui-col-xs-offset-6{margin-left:50%}.mui-col-xs-offset-7{margin-left:58.33333%}.mui-col-xs-offset-8{margin-left:66.66667%}.mui-col-xs-offset-9{margin-left:75%}.mui-col-xs-offset-10{margin-left:83.33333%}.mui-col-xs-offset-11{margin-left:91.66667%}.mui-col-xs-offset-12{margin-left:100%}@media (min-width:544px){.mui-col-sm-1,.mui-col-sm-2,.mui-col-sm-3,.mui-col-sm-4,.mui-col-sm-5,.mui-col-sm-6,.mui-col-sm-7,.mui-col-sm-8,.mui-col-sm-9,.mui-col-sm-10,.mui-col-sm-11,.mui-col-sm-12{float:left}.mui-col-sm-1{width:8.33333%}.mui-col-sm-2{width:16.66667%}.mui-col-sm-3{width:25%}.mui-col-sm-4{width:33.33333%}.mui-col-sm-5{width:41.66667%}.mui-col-sm-6{width:50%}.mui-col-sm-7{width:58.33333%}.mui-col-sm-8{width:66.66667%}.mui-col-sm-9{width:75%}.mui-col-sm-10{width:83.33333%}.mui-col-sm-11{width:91.66667%}.mui-col-sm-12{width:100%}.mui-col-sm-offset-0{margin-left:0}.mui-col-sm-offset-1{margin-left:8.33333%}.mui-col-sm-offset-2{margin-left:16.66667%}.mui-col-sm-offset-3{margin-left:25%}.mui-col-sm-offset-4{margin-left:33.33333%}.mui-col-sm-offset-5{margin-left:41.66667%}.mui-col-sm-offset-6{margin-left:50%}.mui-col-sm-offset-7{margin-left:58.33333%}.mui-col-sm-offset-8{margin-left:66.66667%}.mui-col-sm-offset-9{margin-left:75%}.mui-col-sm-offset-10{margin-left:83.33333%}.mui-col-sm-offset-11{margin-left:91.66667%}.mui-col-sm-offset-12{margin-left:100%}}@media (min-width:768px){.mui-col-md-1,.mui-col-md-2,.mui-col-md-3,.mui-col-md-4,.mui-col-md-5,.mui-col-md-6,.mui-col-md-7,.mui-col-md-8,.mui-col-md-9,.mui-col-md-10,.mui-col-md-11,.mui-col-md-12{float:left}.mui-col-md-1{width:8.33333%}.mui-col-md-2{width:16.66667%}.mui-col-md-3{width:25%}.mui-col-md-4{width:33.33333%}.mui-col-md-5{width:41.66667%}.mui-col-md-6{width:50%}.mui-col-md-7{width:58.33333%}.mui-col-md-8{width:66.66667%}.mui-col-md-9{width:75%}.mui-col-md-10{width:83.33333%}.mui-col-md-11{width:91.66667%}.mui-col-md-12{width:100%}.mui-col-md-offset-0{margin-left:0}.mui-col-md-offset-1{margin-left:8.33333%}.mui-col-md-offset-2{margin-left:16.66667%}.mui-col-md-offset-3{margin-left:25%}.mui-col-md-offset-4{margin-left:33.33333%}.mui-col-md-offset-5{margin-left:41.66667%}.mui-col-md-offset-6{margin-left:50%}.mui-col-md-offset-7{margin-left:58.33333%}.mui-col-md-offset-8{margin-left:66.66667%}.mui-col-md-offset-9{margin-left:75%}.mui-col-md-offset-10{margin-left:83.33333%}.mui-col-md-offset-11{margin-left:91.66667%}.mui-col-md-offset-12{margin-left:100%}}@media (min-width:992px){.mui-col-lg-1,.mui-col-lg-2,.mui-col-lg-3,.mui-col-lg-4,.mui-col-lg-5,.mui-col-lg-6,.mui-col-lg-7,.mui-col-lg-8,.mui-col-lg-9,.mui-col-lg-10,.mui-col-lg-11,.mui-col-lg-12{float:left}.mui-col-lg-1{width:8.33333%}.mui-col-lg-2{width:16.66667%}.mui-col-lg-3{width:25%}.mui-col-lg-4{width:33.33333%}.mui-col-lg-5{width:41.66667%}.mui-col-lg-6{width:50%}.mui-col-lg-7{width:58.33333%}.mui-col-lg-8{width:66.66667%}.mui-col-lg-9{width:75%}.mui-col-lg-10{width:83.33333%}.mui-col-lg-11{width:91.66667%}.mui-col-lg-12{width:100%}.mui-col-lg-offset-0{margin-left:0}.mui-col-lg-offset-1{margin-left:8.33333%}.mui-col-lg-offset-2{margin-left:16.66667%}.mui-col-lg-offset-3{margin-left:25%}.mui-col-lg-offset-4{margin-left:33.33333%}.mui-col-lg-offset-5{margin-left:41.66667%}.mui-col-lg-offset-6{margin-left:50%}.mui-col-lg-offset-7{margin-left:58.33333%}.mui-col-lg-offset-8{margin-left:66.66667%}.mui-col-lg-offset-9{margin-left:75%}.mui-col-lg-offset-10{margin-left:83.33333%}.mui-col-lg-offset-11{margin-left:91.66667%}.mui-col-lg-offset-12{margin-left:100%}}@media (min-width:1200px){.mui-col-xl-1,.mui-col-xl-2,.mui-col-xl-3,.mui-col-xl-4,.mui-col-xl-5,.mui-col-xl-6,.mui-col-xl-7,.mui-col-xl-8,.mui-col-xl-9,.mui-col-xl-10,.mui-col-xl-11,.mui-col-xl-12{float:left}.mui-col-xl-1{width:8.33333%}.mui-col-xl-2{width:16.66667%}.mui-col-xl-3{width:25%}.mui-col-xl-4{width:33.33333%}.mui-col-xl-5{width:41.66667%}.mui-col-xl-6{width:50%}.mui-col-xl-7{width:58.33333%}.mui-col-xl-8{width:66.66667%}.mui-col-xl-9{width:75%}.mui-col-xl-10{width:83.33333%}.mui-col-xl-11{width:91.66667%}.mui-col-xl-12{width:100%}.mui-col-xl-offset-0{margin-left:0}.mui-col-xl-offset-1{margin-left:8.33333%}.mui-col-xl-offset-2{margin-left:16.66667%}.mui-col-xl-offset-3{margin-left:25%}.mui-col-xl-offset-4{margin-left:33.33333%}.mui-col-xl-offset-5{margin-left:41.66667%}.mui-col-xl-offset-6{margin-left:50%}.mui-col-xl-offset-7{margin-left:58.33333%}.mui-col-xl-offset-8{margin-left:66.66667%}.mui-col-xl-offset-9{margin-left:75%}.mui-col-xl-offset-10{margin-left:83.33333%}.mui-col-xl-offset-11{margin-left:91.66667%}.mui-col-xl-offset-12{margin-left:100%}}.mui-panel{padding:15px;margin-bottom:20px;border-radius:0;background-color:#fff;box-shadow:0 2px 2px 0 rgba(0,0,0,.16),0 0px 2px 0 rgba(0,0,0,.12)}.mui-panel:before,.mui-panel:after{content:" ";display:table}.mui-panel:after{clear:both}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.mui-panel{box-shadow:0 -1px 2px 0 rgba(0,0,0,.12),-1px 0px 2px 0 rgba(0,0,0,.12),0 2px 2px 0 rgba(0,0,0,.16),0 0px 2px 0 rgba(0,0,0,.12)}}@supports (-ms-ime-align:auto){.mui-panel{box-shadow:0 -1px 2px 0 rgba(0,0,0,.12),-1px 0px 2px 0 rgba(0,0,0,.12),0 2px 2px 0 rgba(0,0,0,.16),0 0px 2px 0 rgba(0,0,0,.12)}}.mui-select{display:block;padding-top:15px;margin-bottom:20px;position:relative}.mui-select:focus{outline:0}.mui-select:focus>select{height:33px;margin-bottom:-1px;border-color:#2196f3;border-width:2px}.mui-select>select{display:block;height:32px;width:100%;appearance:none;-webkit-appearance:none;-moz-appearance:none;outline:none;border:none;border-bottom:1px solid rgba(0,0,0,.26);border-radius:0;box-shadow:none;background-color:transparent;background-image:url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNiIgd2lkdGg9IjEwIj48cG9seWdvbiBwb2ludHM9IjAsMCAxMCwwIDUsNiIgc3R5bGU9ImZpbGw6cmdiYSgwLDAsMCwuMjQpOyIvPjwvc3ZnPg==");background-repeat:no-repeat;background-position:right center;cursor:pointer;color:rgba(0,0,0,.87);font-size:16px;font-family:inherit;line-height:inherit;padding:0 25px 0 0}.mui-select>select::-ms-expand{display:none}.mui-select>select:focus{outline:0;height:33px;margin-bottom:-1px;border-color:#2196f3;border-width:2px}.mui-select>select:disabled{color:rgba(0,0,0,.38);cursor:not-allowed;background-color:transparent;opacity:1}.mui-select>select:-moz-focusring{color:transparent;text-shadow:0 0 0 #000}.mui-select>select:focus::-ms-value{background:0 0;color:rgba(0,0,0,.87)}.mui-select>label{position:absolute;top:0;display:block;width:100%;color:rgba(0,0,0,.54);font-size:12px;font-weight:400;line-height:15px;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.mui-select:focus>label,.mui-select>select:focus~label{color:#2196f3}.mui-select__menu{position:absolute;z-index:2;min-width:100%;overflow-y:auto;padding:8px 0;background-color:#fff;font-size:16px}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){.mui-select__menu{border-left:1px solid rgba(0,0,0,.12);border-top:1px solid rgba(0,0,0,.12)}}@supports (-ms-ime-align:auto){.mui-select__menu{border-left:1px solid rgba(0,0,0,.12);border-top:1px solid rgba(0,0,0,.12)}}.mui-select__menu>div{padding:0 22px;height:42px;line-height:42px;cursor:pointer;white-space:nowrap}.mui-select__menu>div.mui--is-selected{background-color:#eee}.mui-select__menu>div.mui--is-disabled{color:rgba(0,0,0,.38);cursor:not-allowed}.mui-select__menu>div:not(.mui-optgroup__label):not(.mui--is-disabled):hover{background-color:#e0e0e0}.mui-optgroup__option{text-indent:1em}.mui-optgroup__label{color:rgba(0,0,0,.54);font-size:.9em}.mui-table{width:100%;max-width:100%;margin-bottom:20px}.mui-table>thead>tr>th,.mui-table>tbody>tr>th,.mui-table>tfoot>tr>th{text-align:left}.mui-table>thead>tr>th,.mui-table>thead>tr>td,.mui-table>tbody>tr>th,.mui-table>tbody>tr>td,.mui-table>tfoot>tr>th,.mui-table>tfoot>tr>td{padding:10px;line-height:1.429}.mui-table>thead>tr>th{border-bottom:2px solid rgba(0,0,0,.12);font-weight:700}.mui-table>tbody+tbody{border-top:2px solid rgba(0,0,0,.12)}.mui-table.mui-table--bordered>tbody>tr>td{border-bottom:1px solid rgba(0,0,0,.12)}.mui-tabs__bar{list-style:none;padding-left:0;margin-bottom:0;background-color:transparent;white-space:nowrap;overflow-x:auto}.mui-tabs__bar>li{display:inline-block}.mui-tabs__bar>li>a{display:block;white-space:nowrap;text-transform:uppercase;font-weight:500;font-size:14px;color:rgba(0,0,0,.87);cursor:default;height:48px;line-height:48px;padding-left:24px;padding-right:24px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mui-tabs__bar>li>a:hover{text-decoration:none}.mui-tabs__bar>li.mui--is-active{border-bottom:2px solid #2196f3}.mui-tabs__bar>li.mui--is-active>a{color:#2196f3}.mui-tabs__bar.mui-tabs__bar--justified{display:table;width:100%;table-layout:fixed}.mui-tabs__bar.mui-tabs__bar--justified>li{display:table-cell}.mui-tabs__bar.mui-tabs__bar--justified>li>a{text-align:center;padding-left:0;padding-right:0}.mui-tabs__pane{display:none}.mui-tabs__pane.mui--is-active{display:block}.mui-textfield{display:block;padding-top:15px;margin-bottom:20px;position:relative}.mui-textfield>label{position:absolute;top:0;display:block;width:100%;color:rgba(0,0,0,.54);font-size:12px;font-weight:400;line-height:15px;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.mui-textfield>textarea{padding-top:5px}.mui-textfield>input:focus~label,.mui-textfield>textarea:focus~label{color:#2196f3}.mui-textfield--float-label>label{position:absolute;transform:translate(0px,15px);font-size:16px;line-height:32px;color:rgba(0,0,0,.26);text-overflow:clip;cursor:text;pointer-events:none}.mui-textfield--float-label>input:focus~label,.mui-textfield--float-label>textarea:focus~label{transform:translate(0px,0px);font-size:12px;line-height:15px;text-overflow:ellipsis}.mui-textfield--float-label>input:not(:focus).mui--is-not-empty~label,.mui-textfield--float-label>input:not(:focus)[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield--float-label>input:not(:focus):not(:empty):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield--float-label>textarea:not(:focus).mui--is-not-empty~label,.mui-textfield--float-label>textarea:not(:focus)[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield--float-label>textarea:not(:focus):not(:empty):not(.mui--is-empty):not(.mui--is-not-empty)~label{color:rgba(0,0,0,.54);font-size:12px;line-height:15px;transform:translate(0px,0px);text-overflow:ellipsis}.mui-textfield--wrap-label{display:table;width:100%;padding-top:0}.mui-textfield--wrap-label:not(.mui-textfield--float-label)>label{display:table-header-group;position:static;white-space:normal;overflow-x:visible}.mui-textfield>input,.mui-textfield>textarea{box-sizing:border-box;display:block;background-color:transparent;color:rgba(0,0,0,.87);border:none;border-bottom:1px solid rgba(0,0,0,.26);outline:none;width:100%;padding:0;box-shadow:none;border-radius:0;font-size:16px;font-family:inherit;line-height:inherit;background-image:none}.mui-textfield>input:focus,.mui-textfield>textarea:focus{border-color:#2196f3;border-width:2px}.mui-textfield>input:disabled,.mui-textfield>input:-moz-read-only,.mui-textfield>textarea:disabled,.mui-textfield>textarea:-moz-read-only{cursor:not-allowed;background-color:transparent;opacity:1}.mui-textfield>input:disabled,.mui-textfield>input:read-only,.mui-textfield>textarea:disabled,.mui-textfield>textarea:read-only{cursor:not-allowed;background-color:transparent;opacity:1}.mui-textfield>input::-webkit-input-placeholder,.mui-textfield>textarea::-webkit-input-placeholder{color:rgba(0,0,0,.26);opacity:1}.mui-textfield>input:-ms-input-placeholder,.mui-textfield>textarea:-ms-input-placeholder{color:rgba(0,0,0,.26);opacity:1}.mui-textfield>input::placeholder,.mui-textfield>textarea::placeholder{color:rgba(0,0,0,.26);opacity:1}.mui-textfield>input{height:32px}.mui-textfield>input:focus{height:33px;margin-bottom:-1px}.mui-textfield>textarea{min-height:64px}.mui-textfield>textarea[rows]:not([rows="2"]):focus{margin-bottom:-1px}.mui-textfield>input:focus{height:33px;margin-bottom:-1px}.mui-textfield>input:invalid:not(:focus):not(:required),.mui-textfield>input:invalid:not(:focus):required.mui--is-not-empty,.mui-textfield>input:invalid:not(:focus):required.mui--is-empty.mui--is-touched,.mui-textfield>input:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>input:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>textarea:invalid:not(:focus):not(:required),.mui-textfield>textarea:invalid:not(:focus):required.mui--is-not-empty,.mui-textfield>textarea:invalid:not(:focus):required.mui--is-empty.mui--is-touched,.mui-textfield>textarea:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>textarea:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>input:not(:focus).mui--is-invalid:not(:required),.mui-textfield>input:not(:focus).mui--is-invalid:required.mui--is-not-empty,.mui-textfield>input:not(:focus).mui--is-invalid:required.mui--is-empty.mui--is-touched,.mui-textfield>input:not(:focus).mui--is-invalid:required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>input:not(:focus).mui--is-invalid:required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>textarea:not(:focus).mui--is-invalid:not(:required),.mui-textfield>textarea:not(:focus).mui--is-invalid:required.mui--is-not-empty,.mui-textfield>textarea:not(:focus).mui--is-invalid:required.mui--is-empty.mui--is-touched,.mui-textfield>textarea:not(:focus).mui--is-invalid:required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>textarea:not(:focus).mui--is-invalid:required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty){border-color:#f44336;border-width:2px}.mui-textfield>input:invalid:not(:focus):not(:required),.mui-textfield>input:invalid:not(:focus):required.mui--is-not-empty,.mui-textfield>input:invalid:not(:focus):required.mui--is-empty.mui--is-touched,.mui-textfield>input:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>input:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>input:not(:focus).mui--is-invalid:not(:required),.mui-textfield>input:not(:focus).mui--is-invalid:required.mui--is-not-empty,.mui-textfield>input:not(:focus).mui--is-invalid:required.mui--is-empty.mui--is-touched,.mui-textfield>input:not(:focus).mui--is-invalid:required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),.mui-textfield>input:not(:focus).mui--is-invalid:required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty){height:33px;margin-bottom:-1px}.mui-textfield.mui-textfield--float-label>input:invalid:not(:focus):not(:required)~label,.mui-textfield.mui-textfield--float-label>input:invalid:not(:focus):required.mui--is-not-empty~label,.mui-textfield.mui-textfield--float-label>input:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield.mui-textfield--float-label>input:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield.mui-textfield--float-label>textarea:invalid:not(:focus):not(:required)~label,.mui-textfield.mui-textfield--float-label>textarea:invalid:not(:focus):required.mui--is-not-empty~label,.mui-textfield.mui-textfield--float-label>textarea:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty)~label,.mui-textfield.mui-textfield--float-label>textarea:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty)~label{color:#f44336}.mui-textfield:not(.mui-textfield--float-label)>input:invalid:not(:focus):not(:required)~label,.mui-textfield:not(.mui-textfield--float-label)>input:invalid:not(:focus):required.mui--is-empty.mui--is-touched~label,.mui-textfield:not(.mui-textfield--float-label)>input:invalid:not(:focus):required.mui--is-not-empty~label,.mui-textfield:not(.mui-textfield--float-label)>textarea:invalid:not(:focus):not(:required)~label,.mui-textfield:not(.mui-textfield--float-label)>textarea:invalid:not(:focus):required.mui--is-empty.mui--is-touched~label,.mui-textfield:not(.mui-textfield--float-label)>textarea:invalid:not(:focus):required.mui--is-not-empty~label{color:#f44336}.mui-textfield.mui-textfield--float-label>.mui--is-invalid.mui--is-not-empty:not(:focus)~label{color:#f44336}.mui-textfield:not(.mui-textfield--float-label)>.mui--is-invalid:not(:focus)~label{color:#f44336}.mui--no-transition{transition:none !important}.mui--no-user-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.mui-caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px solid;border-right:4px solid transparent;border-left:4px solid transparent}.mui--text-left{text-align:left !important}.mui--text-right{text-align:right !important}.mui--text-center{text-align:center !important}.mui--text-justify{text-align:justify !important}.mui--text-nowrap{white-space:nowrap !important}.mui--align-baseline{vertical-align:baseline !important}.mui--align-top{vertical-align:top !important}.mui--align-middle{vertical-align:middle !important}.mui--align-bottom{vertical-align:bottom !important}.mui--text-dark{color:rgba(0,0,0,.87)}.mui--text-dark-secondary{color:rgba(0,0,0,.54)}.mui--text-dark-hint{color:rgba(0,0,0,.38)}.mui--text-light{color:#fff}.mui--text-light-secondary{color:rgba(255,255,255,.7)}.mui--text-light-hint{color:rgba(255,255,255,.3)}.mui--text-accent{color:rgba(255,64,129,.87)}.mui--text-accent-secondary{color:rgba(255,64,129,.54)}.mui--text-accent-hint{color:rgba(255,64,129,.38)}.mui--text-black{color:#000}.mui--text-white{color:#fff}.mui--text-danger{color:#f44336}.mui--bg-primary{background-color:#2196f3}.mui--bg-primary-dark{background-color:#1976d2}.mui--bg-primary-light{background-color:#bbdefb}.mui--bg-accent{background-color:#ff4081}.mui--bg-accent-dark{background-color:#f50057}.mui--bg-accent-light{background-color:#ff80ab}.mui--bg-danger{background-color:#f44336}.mui-list--unstyled{padding-left:0;list-style:none}.mui-list--inline{padding-left:0;list-style:none;margin-left:-5px}.mui-list--inline>li{display:inline-block;padding-left:5px;padding-right:5px}.mui--z1,.mui-dropdown__menu,.mui-select__menu{box-shadow:0 1px 3px rgba(0,0,0,.12),0 1px 2px rgba(0,0,0,.24)}.mui--z2{box-shadow:0 3px 6px rgba(0,0,0,.16),0 3px 6px rgba(0,0,0,.23)}.mui--z3{box-shadow:0 10px 20px rgba(0,0,0,.19),0 6px 6px rgba(0,0,0,.23)}.mui--z4{box-shadow:0 14px 28px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22)}.mui--z5{box-shadow:0 19px 38px rgba(0,0,0,.3),0 15px 12px rgba(0,0,0,.22)}.mui--clearfix:before,.mui--clearfix:after{content:" ";display:table}.mui--clearfix:after{clear:both}.mui--pull-right{float:right !important}.mui--pull-left{float:left !important}.mui--hide{display:none !important}.mui--show{display:block !important}.mui--invisible{visibility:hidden}.mui--overflow-hidden{overflow:hidden !important}.mui--overflow-hidden-x{overflow-x:hidden !important}.mui--overflow-hidden-y{overflow-y:hidden !important}.mui--visible-xs-block,.mui--visible-xs-inline,.mui--visible-xs-inline-block,.mui--visible-sm-block,.mui--visible-sm-inline,.mui--visible-sm-inline-block,.mui--visible-md-block,.mui--visible-md-inline,.mui--visible-md-inline-block,.mui--visible-lg-block,.mui--visible-lg-inline,.mui--visible-lg-inline-block,.mui--visible-xl-block,.mui--visible-xl-inline,.mui--visible-xl-inline-block{display:none !important}@media (max-width:543px){.mui-visible-xs{display:block !important}table.mui-visible-xs{display:table}tr.mui-visible-xs{display:table-row !important}th.mui-visible-xs,td.mui-visible-xs{display:table-cell !important}.mui--visible-xs-block{display:block !important}.mui--visible-xs-inline{display:inline !important}.mui--visible-xs-inline-block{display:inline-block !important}}@media (min-width:544px) and (max-width:767px){.mui-visible-sm{display:block !important}table.mui-visible-sm{display:table}tr.mui-visible-sm{display:table-row !important}th.mui-visible-sm,td.mui-visible-sm{display:table-cell !important}.mui--visible-sm-block{display:block !important}.mui--visible-sm-inline{display:inline !important}.mui--visible-sm-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.mui-visible-md{display:block !important}table.mui-visible-md{display:table}tr.mui-visible-md{display:table-row !important}th.mui-visible-md,td.mui-visible-md{display:table-cell !important}.mui--visible-md-block{display:block !important}.mui--visible-md-inline{display:inline !important}.mui--visible-md-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.mui-visible-lg{display:block !important}table.mui-visible-lg{display:table}tr.mui-visible-lg{display:table-row !important}th.mui-visible-lg,td.mui-visible-lg{display:table-cell !important}.mui--visible-lg-block{display:block !important}.mui--visible-lg-inline{display:inline !important}.mui--visible-lg-inline-block{display:inline-block !important}}@media (min-width:1200px){.mui-visible-xl{display:block !important}table.mui-visible-xl{display:table}tr.mui-visible-xl{display:table-row !important}th.mui-visible-xl,td.mui-visible-xl{display:table-cell !important}.mui--visible-xl-block{display:block !important}.mui--visible-xl-inline{display:inline !important}.mui--visible-xl-inline-block{display:inline-block !important}}@media (max-width:543px){.mui--hidden-xs{display:none !important}}@media (min-width:544px) and (max-width:767px){.mui--hidden-sm{display:none !important}}@media (min-width:768px) and (max-width:991px){.mui--hidden-md{display:none !important}}@media (min-width:992px) and (max-width:1199px){.mui--hidden-lg{display:none !important}}@media (min-width:1200px){.mui--hidden-xl{display:none !important}}.mui-scrlock--showbar-y{overflow-y:scroll !important}.mui-scrlock--showbar-x{overflow-x:scroll !important}#mui-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:99999999;background-color:rgba(0,0,0,.2);overflow:auto}.mui-btn__ripple-container{position:absolute;top:0;left:0;display:block;height:100%;width:100%;overflow:hidden;z-index:0}.mui-ripple{position:absolute;top:0;left:0;border-radius:50%;opacity:0;pointer-events:none;transform:scale(.0001,.0001)}.mui-ripple.mui--is-animating{transform:none;transition:transform .3s cubic-bezier(0,0,.2,1),width .3s cubic-bezier(0,0,.2,1),height .3s cubic-bezier(0,0,.2,1),opacity .3s cubic-bezier(0,0,.2,1)}.mui-ripple.mui--is-visible{opacity:.3}.mui-btn .mui-ripple{background-color:#a6a6a6}.mui-btn--primary .mui-ripple{background-color:#fff}.mui-btn--dark .mui-ripple{background-color:#fff}.mui-btn--danger .mui-ripple{background-color:#fff}.mui-btn--accent .mui-ripple{background-color:#fff}.mui-btn--flat .mui-ripple{background-color:#a6a6a6}.mui--text-display4{font-weight:300;font-size:112px;line-height:112px}.mui--text-display3{font-weight:400;font-size:56px;line-height:56px}.mui--text-display2{font-weight:400;font-size:45px;line-height:48px}.mui--text-display1,h1{font-weight:400;font-size:34px;line-height:40px}.mui--text-headline,h2{font-weight:400;font-size:24px;line-height:32px}.mui--text-title,h3{font-weight:400;font-size:20px;line-height:28px}.mui--text-subhead,h4{font-weight:400;font-size:16px;line-height:24px}.mui--text-body2,h5{font-weight:500;font-size:14px;line-height:24px}.mui--text-body1{font-weight:400;font-size:14px;line-height:20px}.mui--text-caption{font-weight:400;font-size:12px;line-height:16px}.mui--text-menu{font-weight:500;font-size:13px;line-height:17px}.mui--text-button{font-weight:500;font-size:14px;line-height:18px;text-transform:uppercase} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/numbers.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/numbers.css
new file mode 100644
index 0000000..6077967
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/numbers.css
@@ -0,0 +1 @@
+a{foo:.0001em;bar:0px;baz:.6px .011pt 10.2em 8.8cm;foobar:-.6px,-.333pt,-1.05em 50cm}b,.test-0\.400em{margin:.6px 3pt 1.2em .8cm;padding:.2em .8cm}c{margin:2.4px 0;padding:-.4px 0;margin:1px 0 0;padding:4px 0;padding:0;margin:0;transition-duration:0s;left:-20px;padding:0;margin:0;padding:10px 0 20px;margin:0;line-height:0;width:0;max-width:0}\;b\:0px{leading:50% -10.5% 1.004in -.45vw;trailing:5000% .5px 1.2001em .405;transition-duration:0ms;transform:rotate3d(0grad,0rad,0deg);pitch:0KHZ;pitch:0hz;padding:0;top:0;bottom:0;left:0;border-top:0 solid blue;border-width:0;column-gap:0;outline-width:0;border-radius:0;border-top-right-radius:0}body{margin:9px 9.8px 0 .9em;height:9.9;width:.5;z-index:.09;font-size:9;top:0;bottom:0}:lang(de)>p.lang\:0\.234500{height:.2em}#\:34\:0500{width:10.01%}.mg0px .lang\:0em{height:20%;padding-bottom:calc(.75rem - 1px);margin-right:calc(-.375em - 1px);transform:translateX(.3rem);transform:scale3d(.3,.3,.3)} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/old-ie-filters.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/old-ie-filters.css
new file mode 100644
index 0000000..56b6a95
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/old-ie-filters.css
@@ -0,0 +1 @@
+.a{filter:progid:DXImageTransform.Microsoft.Matrix(M11=0.9914448613738104, M12=-0.13052619222005157, M21=0.13052619222005157, M22=0.9914448613738104, sizingMethod='auto expand')}.b{display:none;filter:progid:DXImageTransform.Microsoft.Matrix(M11=0.9914448613738104, M12=-0.13052619222005157, M21=0.13052619222005157, M22=0.9914448613738104, sizingMethod='auto expand');vertical-align:bottom}.shadow{-ms-filter:"progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=0, Color='#DDDDDD')progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=90, Color='#DDDDDD')progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=180, Color='#DDDDDD')progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=270, Color='#DDDDDD')"}pre{border:solid red;opacity:.8;-ms-filter:"alpha(opacity=80)";filter:alpha(opacity=80);zoom:1}code{-ms-filter:"alpha(opacity=80)";filter:alpha(opacity=80)} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/preserve-case.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/preserve-case.css
new file mode 100644
index 0000000..aa0a101
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/preserve-case.css
@@ -0,0 +1 @@
+#AddAddressForm{padding:0}#AddAddressForm .messageBoxNeutral{padding:0}#FeedbackMailForm{padding:0}#FeedbackMailForm .classe{margin:0}.classes,#FeedBackMailForm{margin:0} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/pseudo-classes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/pseudo-classes.css
new file mode 100644
index 0000000..a9092e4
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/pseudo-classes.css
@@ -0,0 +1 @@
+* :hover{color:blue}p :link,#mydiv :active{width:20%} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/pseudo-elements.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/pseudo-elements.css
new file mode 100644
index 0000000..58fce77
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/pseudo-elements.css
@@ -0,0 +1 @@
+*:before,*:after{color:red}.test:before{margin:3px}p:first-letter ,p:first-line {foo:1}::selection{width:0}p:first-letter {buh:hum}p:first-line {baa:1}p:first-line ,a,p:first-letter ,b{color:red}:before,p :after{margin:0}.foo :after{color:red} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/pure.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/pure.css
new file mode 100644
index 0000000..66666b1
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/pure.css
@@ -0,0 +1,12 @@
+/*!
+Pure v0.6.2
+Copyright 2013 Yahoo!
+Licensed under the BSD License.
+https://github.com/yahoo/pure/blob/master/LICENSE.md
+*/
+/*!
+normalize.css v^3.0 | MIT License | git.io/normalize
+Copyright (c) Nicolas Gallagher and Jonathan Neal
+*/
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+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:700}dfn{font-style:italic}h1{font-size:2em;margin:.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:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:700}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}.hidden,[hidden]{display:none !important}.pure-img{max-width:100%;height:auto;display:block}.pure-g{letter-spacing:-.31em;*letter-spacing:normal;*word-spacing:-.43em;text-rendering:optimizespeed;font-family:FreeSans,Arimo,"Droid Sans",Helvetica,Arial,sans-serif;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-flow:row wrap;-ms-flex-flow:row wrap;flex-flow:row wrap;-webkit-align-content:flex-start;-ms-flex-line-pack:start;align-content:flex-start}@media all and (-ms-high-contrast:none),(-ms-high-contrast:active){table .pure-g{display:block}}.opera-only :-o-prefocus,.pure-g{word-spacing:-.43em}.pure-u{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-g [class*=pure-u]{font-family:sans-serif}.pure-u-1,.pure-u-1-1,.pure-u-1-2,.pure-u-1-3,.pure-u-2-3,.pure-u-1-4,.pure-u-3-4,.pure-u-1-5,.pure-u-2-5,.pure-u-3-5,.pure-u-4-5,.pure-u-5-5,.pure-u-1-6,.pure-u-5-6,.pure-u-1-8,.pure-u-3-8,.pure-u-5-8,.pure-u-7-8,.pure-u-1-12,.pure-u-5-12,.pure-u-7-12,.pure-u-11-12,.pure-u-1-24,.pure-u-2-24,.pure-u-3-24,.pure-u-4-24,.pure-u-5-24,.pure-u-6-24,.pure-u-7-24,.pure-u-8-24,.pure-u-9-24,.pure-u-10-24,.pure-u-11-24,.pure-u-12-24,.pure-u-13-24,.pure-u-14-24,.pure-u-15-24,.pure-u-16-24,.pure-u-17-24,.pure-u-18-24,.pure-u-19-24,.pure-u-20-24,.pure-u-21-24,.pure-u-22-24,.pure-u-23-24,.pure-u-24-24{display:inline-block;*display:inline;zoom:1;letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-u-1-24{width:4.1667%;*width:4.1357%;}.pure-u-1-12,.pure-u-2-24{width:8.3333%;*width:8.3023%;}.pure-u-1-8,.pure-u-3-24{width:12.5000%;*width:12.4690%;}.pure-u-1-6,.pure-u-4-24{width:16.6667%;*width:16.6357%;}.pure-u-1-5{width:20%;*width:19.9690%;}.pure-u-5-24{width:20.8333%;*width:20.8023%;}.pure-u-1-4,.pure-u-6-24{width:25%;*width:24.9690%;}.pure-u-7-24{width:29.1667%;*width:29.1357%;}.pure-u-1-3,.pure-u-8-24{width:33.3333%;*width:33.3023%;}.pure-u-3-8,.pure-u-9-24{width:37.5000%;*width:37.4690%;}.pure-u-2-5{width:40%;*width:39.9690%;}.pure-u-5-12,.pure-u-10-24{width:41.6667%;*width:41.6357%;}.pure-u-11-24{width:45.8333%;*width:45.8023%;}.pure-u-1-2,.pure-u-12-24{width:50%;*width:49.9690%;}.pure-u-13-24{width:54.1667%;*width:54.1357%;}.pure-u-7-12,.pure-u-14-24{width:58.3333%;*width:58.3023%;}.pure-u-3-5{width:60%;*width:59.9690%;}.pure-u-5-8,.pure-u-15-24{width:62.5000%;*width:62.4690%;}.pure-u-2-3,.pure-u-16-24{width:66.6667%;*width:66.6357%;}.pure-u-17-24{width:70.8333%;*width:70.8023%;}.pure-u-3-4,.pure-u-18-24{width:75%;*width:74.9690%;}.pure-u-19-24{width:79.1667%;*width:79.1357%;}.pure-u-4-5{width:80%;*width:79.9690%;}.pure-u-5-6,.pure-u-20-24{width:83.3333%;*width:83.3023%;}.pure-u-7-8,.pure-u-21-24{width:87.5000%;*width:87.4690%;}.pure-u-11-12,.pure-u-22-24{width:91.6667%;*width:91.6357%;}.pure-u-23-24{width:95.8333%;*width:95.8023%;}.pure-u-1,.pure-u-1-1,.pure-u-5-5,.pure-u-24-24{width:100%}.pure-button{display:inline-block;zoom:1;line-height:normal;white-space:nowrap;vertical-align:middle;text-align:center;cursor:pointer;-webkit-user-drag:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;box-sizing:border-box}.pure-button::-moz-focus-inner{padding:0;border:0}.pure-button-group{letter-spacing:-.31em;*letter-spacing:normal;*word-spacing:-.43em;text-rendering:optimizespeed}.opera-only :-o-prefocus,.pure-button-group{word-spacing:-.43em}.pure-button-group .pure-button{letter-spacing:normal;word-spacing:normal;vertical-align:top;text-rendering:auto}.pure-button{font-family:inherit;font-size:100%;padding:.5em 1em;color:#444;color:rgba(0,0,0,.8);border:1px solid #999;border:none rgba(0,0,0,0);background-color:#e6e6e6;text-decoration:none;border-radius:2px}.pure-button-hover,.pure-button:hover,.pure-button:focus{filter:alpha(opacity=90);background-image:-webkit-linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1));background-image:linear-gradient(transparent,rgba(0,0,0,.05) 40%,rgba(0,0,0,.1))}.pure-button:focus{outline:0}.pure-button-active,.pure-button:active{box-shadow:0 0 0 1px rgba(0,0,0,.15) inset,0 0 6px rgba(0,0,0,.2) inset;border-color:#000\9}.pure-button[disabled],.pure-button-disabled,.pure-button-disabled:hover,.pure-button-disabled:focus,.pure-button-disabled:active{border:none;background-image:none;filter:alpha(opacity=40);opacity:.4;cursor:not-allowed;box-shadow:none;pointer-events:none}.pure-button-hidden{display:none}.pure-button-primary,.pure-button-selected,a.pure-button-primary,a.pure-button-selected{background-color:#0078e7;color:#fff}.pure-button-group .pure-button{margin:0;border-radius:0;border-right:1px solid #111;border-right:1px solid rgba(0,0,0,.2)}.pure-button-group .pure-button:first-child{border-top-left-radius:2px;border-bottom-left-radius:2px}.pure-button-group .pure-button:last-child{border-top-right-radius:2px;border-bottom-right-radius:2px;border-right:none}.pure-form input[type=text],.pure-form input[type=password],.pure-form input[type=email],.pure-form input[type=url],.pure-form input[type=date],.pure-form input[type=month],.pure-form input[type=time],.pure-form input[type=datetime],.pure-form input[type=datetime-local],.pure-form input[type=week],.pure-form input[type=number],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=color],.pure-form select,.pure-form textarea{padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;vertical-align:middle;box-sizing:border-box}.pure-form input:not([type]){padding:.5em .6em;display:inline-block;border:1px solid #ccc;box-shadow:inset 0 1px 3px #ddd;border-radius:4px;box-sizing:border-box}.pure-form input[type=color]{padding:.2em .5em}.pure-form input[type=text]:focus,.pure-form input[type=password]:focus,.pure-form input[type=email]:focus,.pure-form input[type=url]:focus,.pure-form input[type=date]:focus,.pure-form input[type=month]:focus,.pure-form input[type=time]:focus,.pure-form input[type=datetime]:focus,.pure-form input[type=datetime-local]:focus,.pure-form input[type=week]:focus,.pure-form input[type=number]:focus,.pure-form input[type=search]:focus,.pure-form input[type=tel]:focus,.pure-form input[type=color]:focus,.pure-form select:focus,.pure-form textarea:focus{outline:0;border-color:#129fea}.pure-form input:not([type]):focus{outline:0;border-color:#129fea}.pure-form input[type=file]:focus,.pure-form input[type=radio]:focus,.pure-form input[type=checkbox]:focus{outline:thin solid #129fea;outline:1px auto #129fea}.pure-form .pure-checkbox,.pure-form .pure-radio{margin:.5em 0;display:block}.pure-form input[type=text][disabled],.pure-form input[type=password][disabled],.pure-form input[type=email][disabled],.pure-form input[type=url][disabled],.pure-form input[type=date][disabled],.pure-form input[type=month][disabled],.pure-form input[type=time][disabled],.pure-form input[type=datetime][disabled],.pure-form input[type=datetime-local][disabled],.pure-form input[type=week][disabled],.pure-form input[type=number][disabled],.pure-form input[type=search][disabled],.pure-form input[type=tel][disabled],.pure-form input[type=color][disabled],.pure-form select[disabled],.pure-form textarea[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input:not([type])[disabled]{cursor:not-allowed;background-color:#eaeded;color:#cad2d3}.pure-form input[readonly],.pure-form select[readonly],.pure-form textarea[readonly]{background-color:#eee;color:#777;border-color:#ccc}.pure-form input:focus:invalid,.pure-form textarea:focus:invalid,.pure-form select:focus:invalid{color:#b94a48;border-color:#e9322d}.pure-form input[type=file]:focus:invalid:focus,.pure-form input[type=radio]:focus:invalid:focus,.pure-form input[type=checkbox]:focus:invalid:focus{outline-color:#e9322d}.pure-form select{height:2.25em;border:1px solid #ccc;background-color:#fff}.pure-form select[multiple]{height:auto}.pure-form label{margin:.5em 0 .2em}.pure-form fieldset{margin:0;padding:.35em 0 .75em;border:0}.pure-form legend{display:block;width:100%;padding:.3em 0;margin-bottom:.3em;color:#333;border-bottom:1px solid #e5e5e5}.pure-form-stacked input[type=text],.pure-form-stacked input[type=password],.pure-form-stacked input[type=email],.pure-form-stacked input[type=url],.pure-form-stacked input[type=date],.pure-form-stacked input[type=month],.pure-form-stacked input[type=time],.pure-form-stacked input[type=datetime],.pure-form-stacked input[type=datetime-local],.pure-form-stacked input[type=week],.pure-form-stacked input[type=number],.pure-form-stacked input[type=search],.pure-form-stacked input[type=tel],.pure-form-stacked input[type=color],.pure-form-stacked input[type=file],.pure-form-stacked select,.pure-form-stacked label,.pure-form-stacked textarea{display:block;margin:.25em 0}.pure-form-stacked input:not([type]){display:block;margin:.25em 0}.pure-form-aligned input,.pure-form-aligned textarea,.pure-form-aligned select,.pure-form-aligned .pure-help-inline,.pure-form-message-inline{display:inline-block;*display:inline;*zoom:1;vertical-align:middle}.pure-form-aligned textarea{vertical-align:top}.pure-form-aligned .pure-control-group{margin-bottom:.5em}.pure-form-aligned .pure-control-group label{text-align:right;display:inline-block;vertical-align:middle;width:10em;margin:0 1em 0 0}.pure-form-aligned .pure-controls{margin:1.5em 0 0 11em}.pure-form input.pure-input-rounded,.pure-form .pure-input-rounded{border-radius:2em;padding:.5em 1em}.pure-form .pure-group fieldset{margin-bottom:10px}.pure-form .pure-group input,.pure-form .pure-group textarea{display:block;padding:10px;margin:0 0 -1px;border-radius:0;position:relative;top:-1px}.pure-form .pure-group input:focus,.pure-form .pure-group textarea:focus{z-index:3}.pure-form .pure-group input:first-child,.pure-form .pure-group textarea:first-child{top:1px;border-radius:4px 4px 0 0;margin:0}.pure-form .pure-group input:first-child:last-child,.pure-form .pure-group textarea:first-child:last-child{top:1px;border-radius:4px;margin:0}.pure-form .pure-group input:last-child,.pure-form .pure-group textarea:last-child{top:-2px;border-radius:0 0 4px 4px;margin:0}.pure-form .pure-group button{margin:.35em 0}.pure-form .pure-input-1{width:100%}.pure-form .pure-input-3-4{width:75%}.pure-form .pure-input-2-3{width:66%}.pure-form .pure-input-1-2{width:50%}.pure-form .pure-input-1-3{width:33%}.pure-form .pure-input-1-4{width:25%}.pure-form .pure-help-inline,.pure-form-message-inline{display:inline-block;padding-left:.3em;color:#666;vertical-align:middle;font-size:.875em}.pure-form-message{display:block;color:#666;font-size:.875em}@media only screen and (max-width :480px){.pure-form button[type=submit]{margin:.7em 0 0}.pure-form input:not([type]),.pure-form input[type=text],.pure-form input[type=password],.pure-form input[type=email],.pure-form input[type=url],.pure-form input[type=date],.pure-form input[type=month],.pure-form input[type=time],.pure-form input[type=datetime],.pure-form input[type=datetime-local],.pure-form input[type=week],.pure-form input[type=number],.pure-form input[type=search],.pure-form input[type=tel],.pure-form input[type=color],.pure-form label{margin-bottom:.3em;display:block}.pure-group input:not([type]),.pure-group input[type=text],.pure-group input[type=password],.pure-group input[type=email],.pure-group input[type=url],.pure-group input[type=date],.pure-group input[type=month],.pure-group input[type=time],.pure-group input[type=datetime],.pure-group input[type=datetime-local],.pure-group input[type=week],.pure-group input[type=number],.pure-group input[type=search],.pure-group input[type=tel],.pure-group input[type=color]{margin-bottom:0}.pure-form-aligned .pure-control-group label{margin-bottom:.3em;text-align:left;display:block;width:100%}.pure-form-aligned .pure-controls{margin:1.5em 0 0}.pure-form .pure-help-inline,.pure-form-message-inline,.pure-form-message{display:block;font-size:.75em;padding:.2em 0 .8em}}.pure-menu{box-sizing:border-box}.pure-menu-fixed{position:fixed;left:0;top:0;z-index:3}.pure-menu-list,.pure-menu-item{position:relative}.pure-menu-list{list-style:none;margin:0;padding:0}.pure-menu-item{padding:0;margin:0;height:100%}.pure-menu-link,.pure-menu-heading{display:block;text-decoration:none;white-space:nowrap}.pure-menu-horizontal{width:100%;white-space:nowrap}.pure-menu-horizontal .pure-menu-list{display:inline-block}.pure-menu-horizontal .pure-menu-item,.pure-menu-horizontal .pure-menu-heading,.pure-menu-horizontal .pure-menu-separator{display:inline-block;*display:inline;zoom:1;vertical-align:middle}.pure-menu-item .pure-menu-item{display:block}.pure-menu-children{display:none;position:absolute;left:100%;top:0;margin:0;padding:0;z-index:3}.pure-menu-horizontal .pure-menu-children{left:0;top:auto;width:inherit}.pure-menu-allow-hover:hover>.pure-menu-children,.pure-menu-active>.pure-menu-children{display:block;position:absolute}.pure-menu-has-children>.pure-menu-link:after{padding-left:.5em;content:"\25B8";font-size:small}.pure-menu-horizontal .pure-menu-has-children>.pure-menu-link:after{content:"\25BE"}.pure-menu-scrollable{overflow-y:scroll;overflow-x:hidden}.pure-menu-scrollable .pure-menu-list{display:block}.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list{display:inline-block}.pure-menu-horizontal.pure-menu-scrollable{white-space:nowrap;overflow-y:hidden;overflow-x:auto;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;padding:.5em 0}.pure-menu-horizontal.pure-menu-scrollable::-webkit-scrollbar{display:none}.pure-menu-separator,.pure-menu-horizontal .pure-menu-children .pure-menu-separator{background-color:#ccc;height:1px;margin:.3em 0}.pure-menu-horizontal .pure-menu-separator{width:1px;height:1.3em;margin:0 .3em}.pure-menu-horizontal .pure-menu-children .pure-menu-separator{display:block;width:auto}.pure-menu-heading{text-transform:uppercase;color:#565d64}.pure-menu-link{color:#777}.pure-menu-children{background-color:#fff}.pure-menu-link,.pure-menu-disabled,.pure-menu-heading{padding:.5em 1em}.pure-menu-disabled{opacity:.5}.pure-menu-disabled .pure-menu-link:hover{background-color:transparent}.pure-menu-active>.pure-menu-link,.pure-menu-link:hover,.pure-menu-link:focus{background-color:#eee}.pure-menu-selected .pure-menu-link,.pure-menu-selected .pure-menu-link:visited{color:#000}.pure-table{border-collapse:collapse;border-spacing:0;empty-cells:show;border:1px solid #cbcbcb}.pure-table caption{color:#000;font:italic 85%/1 arial,sans-serif;padding:1em 0;text-align:center}.pure-table td,.pure-table th{border-left:1px solid #cbcbcb;border-width:0 0 0 1px;font-size:inherit;margin:0;overflow:visible;padding:.5em 1em}.pure-table td:first-child,.pure-table th:first-child{border-left-width:0}.pure-table thead{background-color:#e0e0e0;color:#000;text-align:left;vertical-align:bottom}.pure-table td{background-color:transparent}.pure-table-odd td{background-color:#f2f2f2}.pure-table-striped tr:nth-child(2n-1) td{background-color:#f2f2f2}.pure-table-bordered td{border-bottom:1px solid #cbcbcb}.pure-table-bordered tbody>tr:last-child>td{border-bottom-width:0}.pure-table-horizontal td,.pure-table-horizontal th{border-width:0 0 1px;border-bottom:1px solid #cbcbcb}.pure-table-horizontal tbody>tr:last-child>td{border-bottom-width:0} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/semicolons.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/semicolons.css
new file mode 100644
index 0000000..ba3d6b8
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/semicolons.css
@@ -0,0 +1 @@
+.testA{width:2px;color:blue} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/shortenable-properties.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/shortenable-properties.css
new file mode 100644
index 0000000..9670982
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/shortenable-properties.css
@@ -0,0 +1 @@
+a{margin:4px;padding:4px;border-radius:4px;border-width:4px !important;border-style:dashed;border-style:dashed}b{margin:4px -.2em;border-width:2px 0;border-style:dashed solid}c{border-radius:1em 2px 3% !important;border-style:dashed dotted solid}d{margin:4px 4px 4px 4pc;padding:23rem 1.2em 23em 1.2rem;border-width:calc(1px + 2px) 3.44em calc(1px + 2px) 3.44em}e{border-color:#fff;border-color:#fff;border-color:#fff;border-color:#fff #000;border-color:#fff red #000} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/sourcemap-comment-preserve.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/sourcemap-comment-preserve.css
new file mode 100644
index 0000000..b0600e7
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/sourcemap-comment-preserve.css
@@ -0,0 +1,2 @@
+a{color:#0a0a0a}
+/*# sourceMappingURL=styles.css.map */ \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/sourcemap-comment-remove.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/sourcemap-comment-remove.css
new file mode 100644
index 0000000..f590253
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/sourcemap-comment-remove.css
@@ -0,0 +1 @@
+a{color:#0a0a0a} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/star-underscore-hacks.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/star-underscore-hacks.css
new file mode 100644
index 0000000..9866087
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/star-underscore-hacks.css
@@ -0,0 +1 @@
+#elementarr{width:1px;*width:3pt;_width:2em}button,input{line-height:normal;*overflow:visible;} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/strings.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/strings.css
new file mode 100644
index 0000000..42a651c
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/strings.css
@@ -0,0 +1,3 @@
+#elem{width:100px;voice-family:"\"}\"";voice-family:inherit;width:200px}html>body #elem{width:200px}#sel-o{content:"on\"ce upon \
+a time";content:'once upon \
+a ti\'me'}.sele{content:"\"keep \" me";something:'\\\' . . ';else:'empty{}';content:"/* test */"} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/text-shadow.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/text-shadow.css
new file mode 100644
index 0000000..ef632f3
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/text-shadow.css
@@ -0,0 +1 @@
+a{text-shadow:0 0 0}b{text-shadow:0 0 0} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/unit-ms.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/unit-ms.css
new file mode 100644
index 0000000..a34e65a
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/unit-ms.css
@@ -0,0 +1 @@
+.test\:-300ms,.test-200ms{transition:box-shadow .2s ease-out;transition-duration:10s,30s,.23s;foo:100.50ms;bar:1.5s;baz:-.35s}.foo{transition-duration:.5s;animation-delay:50ms} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/webkit-transform-origin.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/webkit-transform-origin.css
new file mode 100644
index 0000000..b640ddf
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/expectations/webkit-transform-origin.css
@@ -0,0 +1 @@
+c{-webkit-transform-origin:0 0}d{-moz-transform-origin:0 0} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/at-rules.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/at-rules.css
new file mode 100644
index 0000000..6fc6d0e
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/at-rules.css
@@ -0,0 +1,209 @@
+/* re: 2495387 */
+/* This is invalid CSS, but frequently happens as a result of concatenation. */
+@CHARSET "utf-8";
+@document url(http://www.w3.org/),
+url-prefix(http://www.w3.org/Style/),
+domain(mozilla.org),
+regexp("https:.*")
+{
+ /* CSS rules here apply to:
+ - The page "http://www.w3.org/".
+ - Any page whose URL begins with "http://www.w3.org/Style/"
+ - Any page whose URL's host is "mozilla.org" or ends with
+ ".mozilla.org"
+ - Any page whose URL starts with "https:" */
+
+ /* make the above-mentioned pages really ugly */
+ body {
+ color: purple;
+ background: yellow;
+ }
+}
+@media ALL, BRAILLE {
+ body {
+ background-color: gold;
+ }
+}
+@page :first {
+ margin-left: 50%;
+ margin-top: 50%;
+}
+@viewport {
+ min-width: 640px;
+ max-width: 800px;
+}
+@charset "utf-8";
+@import url("fineprint.css") print;
+@import url("bluish.css") projection, tv;
+@namespace svg url(http://www.w3.org/2000/svg);
+#foo {
+ border-width:1px;
+}
+@keyframes identifier {
+ 0% { top: 0; left: 0; }
+ 30% { top: 50px; }
+ 68%, 72% { left: 50px; }
+ 100% { top: 100px; left: 100%; }
+}
+/* nested @media blocks */
+@media print {
+ #navigation {
+ display: none ;
+ }
+ @media (max-width: 12cm) {
+ .note, a[type="{{}{}{"] {
+ float: none
+ }
+ @media (min-height: 2px) {
+ .bar {
+ width: 10px;
+ }
+ .baz {
+
+ }
+ }
+ .foo {
+ align-content: center;
+ }
+ }
+}
+@supports ( box-shadow: 0 0 2px black inset ) or
+ ( -moz-box-shadow: 0 0 2px black inset ) or
+ ( -webkit-box-shadow: 0 0 2px black inset ) or
+ ( -o-box-shadow: 0 0 2px black inset ) {
+ .noticebox {
+ -moz-box-shadow: 0 0 2px black inset;
+ -webkit-box-shadow: 0 0 2px black inset;
+ -o-box-shadow: 0 0 2px black inset;
+ box-shadow: 0 0 2px black inset; /* unprefixed last */
+ /* override the rule above the @supports rule */
+ border: none;
+ padding: 2px;
+ }
+}
+
+@SUPPORTS NOT ( display: flex ) {
+ body { width: 100%; height: 100%; background: white; color: black; }
+ #navigation { width: 25%; }
+ #article { width: 75%; }
+}
+
+/*
+Note that this is erroneous!
+The actual CSS file can only have a single charset.
+However, this is the job of the author/application.
+The compressor should not get involved.
+*/
+@charset "another one";
+@import 'custom.css';
+@IMPORT url("chrome://communicator/skin/");
+@import "common.css" screen, projection;
+@import url('landscape.css') screen and (orientation:landscape);
+@namespace url(http://www.w3.org/1999/xhtml);
+@font-face {
+ font-family: 'gzipper';
+ src: url(yanone.eot);
+ src: local('gzipper'),
+ url(yanone.ttf) format('truetype');
+}
+#bar {
+ border-width:10px;
+}
+@viewport {
+ zoom: 0.75;
+ min-zoom: 0.5;
+ max-zoom: 0.9;
+}
+@viewport {
+ orientation: landscape;
+}
+@page :left {
+ margin: 2in 3in;
+}
+@media (min-width: 700px) and (orientation: landscape) {
+ a{ color: red}
+}
+@supports not ((text-align-last:justify) or (-moz-text-align-last:justify) ){
+ p {
+ text-align:justify;
+ }
+}
+@media only all and (max-width:50em), only all and (max-device-width:800px), only all and (max-width:780px) {
+ a {
+ height: 1px;
+ }
+}
+@media screen AND (-webkit-min-device-pixel-ratio:0) {
+ div, p {
+ margin: 2px 2px;
+ }
+}
+@media
+only screen and (-webkit-min-device-pixel-ratio: 1.5),
+only SCREEN and (-o-min-device-pixel-ratio: 3/2),
+only screen and (min--moz-device-pixel-ratio: 1.5),
+only screen and (min-device-pixel-ratio: 1.5) {
+ a{width:100px}
+}
+@media not all and (monochrome) {
+ a{
+ border: none;
+ }
+}
+
+@media not screen and (color), PRINT and (color) { a{ display:block } }
+
+@media (-webkit-min-device-pixel-ratio:0) {
+ a{
+ border: none;
+ }
+}
+@media HANDHELD and (grid) and (max-width: 15em) {
+ a{
+ border-width: 4px 4px 4px;
+ }
+}
+@media SCREEN and (min-aspect-ratio: 1/1) {
+ a{
+ border: none;
+ }
+}
+@media
+(-o-min-device-pixel-ratio:10/4),
+(-o-max-device-pixel-ratio: 5/4),
+(-o-device-pixel-ratio: 1/1),
+(-o-device-pixel-ratio: 1/10),
+(-o-device-pixel-ratio: 1.25),
+(device-pixel-ratio:1.5) {
+ /* some:prop; */
+ /* An empty property with a fraction in query would break previously */
+}
+
+.something {
+ top: 0;
+}
+@keyframes anim {
+ 0% { opacity: 0; }
+ 100% { opacity: 1; }
+}
+@-o-keyframes anim{
+ 0% { opacity: 0; }
+ 100% { opacity: 1; }
+}
+@keyframes test {
+ 0% , 100% { opacity: 0; }
+}
+@keyframes test2 {
+ 0%, 100% { opacity: 0; }
+}
+@keyframes test3 {
+ 50% { opacity: 50 }
+ 100%, 0% { opacity: 0; }
+}
+@-webkit-keyframes test4{
+ 0% { transform: rotate3d(0,0,1,30deg); }
+ 100% { transform: rotate3d(0,0,1,10deg); }
+}
+@import url(//example.org/foo.css?a;b;c;d) screen, projection;
+@import url(//example.org/foo.css?a;b;c;d);
+@import url(//example.org/bar.css); \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/attribute-selectors.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/attribute-selectors.css
new file mode 100644
index 0000000..b2e46b2
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/attribute-selectors.css
@@ -0,0 +1,33 @@
+/* unquotable */
+input[type = "button" ], span[ lang |= "en-"], div[ class ~= '-hey'] {
+ color: white;
+}
+input[
+type
+=
+"-_2test"
+],
+input[ TYPE $= '_2tEst_'],
+a[alt],span[lang ^= "PT" ],
+a[href *="example2-test-"] {
+ color: white
+}
+a[aria-hidden="false"], [data-toggle="buttons"] {
+ color:blue
+}
+
+/* non unquotable */
+input[ type = "" ],
+input[type="-"], input[type="--test"],
+input[type="-2test"],
+input[type="2test"],
+a[href ^= "http:"],
+a[href $='#'],
+img[src^="http://"] {
+ color: black;
+}
+a[href*='a%a'],
+a[href *='b/b'],
+a[href*="asd$sdd!"] {
+ color: black
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/background-position.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/background-position.css
new file mode 100644
index 0000000..cd84194
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/background-position.css
@@ -0,0 +1,10 @@
+a {background-position: 0 0 0 0;}
+b {background-position: 0 0 0}
+c {BACKGROUND-POSITION: 0 0;}
+d {
+ background-position: 0% 50%;
+ background-position: 0% 0em;
+ background-position: 0px 0rem;
+ background-position: center top 0px;
+ background-position: left 0em bottom 0px;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/background.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/background.css
new file mode 100644
index 0000000..5c9b02a
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/background.css
@@ -0,0 +1,15 @@
+/*
+background: transparent = background: none, and both can be shortened to background:0 0
+see: http://stackoverflow.com/questions/20784292/backgroundnone-vs-backgroundtransparent
+*/
+a {
+ background: none;
+ background: transparent !important;
+}
+b {
+ background:transparent;
+ background:none
+}
+c {
+ background: 0 0
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/bootstrap.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/bootstrap.css
new file mode 100644
index 0000000..c26fd4b
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/bootstrap.css
@@ -0,0 +1,7345 @@
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+html {
+ font-family: sans-serif;
+ -webkit-text-size-adjust: 100%;
+ -ms-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 {
+ margin: .67em 0;
+ font-size: 2em;
+}
+mark {
+ color: #000;
+ background: #ff0;
+}
+small {
+ font-size: 80%;
+}
+sub,
+sup {
+ position: relative;
+ font-size: 75%;
+ line-height: 0;
+ vertical-align: baseline;
+}
+sup {
+ top: -.5em;
+}
+sub {
+ bottom: -.25em;
+}
+img {
+ border: 0;
+}
+svg:not(:root) {
+ overflow: hidden;
+}
+figure {
+ margin: 1em 40px;
+}
+hr {
+ height: 0;
+ -webkit-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+}
+pre {
+ overflow: auto;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+button,
+input,
+optgroup,
+select,
+textarea {
+ margin: 0;
+ font: inherit;
+ color: inherit;
+}
+button {
+ overflow: visible;
+}
+button,
+select {
+ text-transform: none;
+}
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button;
+ cursor: pointer;
+}
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+input {
+ line-height: normal;
+}
+input[type="checkbox"],
+input[type="radio"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ 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-box-sizing: content-box;
+ -moz-box-sizing: content-box;
+ box-sizing: content-box;
+ -webkit-appearance: textfield;
+}
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+fieldset {
+ padding: .35em .625em .75em;
+ margin: 0 2px;
+ border: 1px solid #c0c0c0;
+}
+legend {
+ padding: 0;
+ border: 0;
+}
+textarea {
+ overflow: auto;
+}
+optgroup {
+ font-weight: bold;
+}
+table {
+ border-spacing: 0;
+ border-collapse: collapse;
+}
+td,
+th {
+ padding: 0;
+}
+/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */
+@media print {
+ *,
+ *:before,
+ *:after {
+ color: #000 !important;
+ text-shadow: none !important;
+ background: transparent !important;
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+ }
+ a,
+ a:visited {
+ text-decoration: underline;
+ }
+ a[href]:after {
+ content: " (" attr(href) ")";
+ }
+ abbr[title]:after {
+ content: " (" attr(title) ")";
+ }
+ a[href^="#"]:after,
+ a[href^="javascript:"]:after {
+ content: "";
+ }
+ pre,
+ blockquote {
+ border: 1px solid #999;
+
+ page-break-inside: avoid;
+ }
+ thead {
+ display: table-header-group;
+ }
+ tr,
+ img {
+ page-break-inside: avoid;
+ }
+ img {
+ max-width: 100% !important;
+ }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3;
+ }
+ h2,
+ h3 {
+ page-break-after: avoid;
+ }
+ .navbar {
+ display: none;
+ }
+ .btn > .caret,
+ .dropup > .btn > .caret {
+ border-top-color: #000 !important;
+ }
+ .label {
+ border: 1px solid #000;
+ }
+ .table {
+ border-collapse: collapse !important;
+ }
+ .table td,
+ .table th {
+ background-color: #fff !important;
+ }
+ .table-bordered th,
+ .table-bordered td {
+ border: 1px solid #ddd !important;
+ }
+}
+@font-face {
+ font-family: 'Glyphicons Halflings';
+
+ src: url('../fonts/glyphicons-halflings-regular.eot');
+ src: url('../fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../fonts/glyphicons-halflings-regular.woff2') format('woff2'), url('../fonts/glyphicons-halflings-regular.woff') format('woff'), url('../fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
+}
+.glyphicon {
+ position: relative;
+ top: 1px;
+ display: inline-block;
+ font-family: 'Glyphicons Halflings';
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1;
+
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+.glyphicon-asterisk:before {
+ content: "\002a";
+}
+.glyphicon-plus:before {
+ content: "\002b";
+}
+.glyphicon-euro:before,
+.glyphicon-eur:before {
+ content: "\20ac";
+}
+.glyphicon-minus:before {
+ content: "\2212";
+}
+.glyphicon-cloud:before {
+ content: "\2601";
+}
+.glyphicon-envelope:before {
+ content: "\2709";
+}
+.glyphicon-pencil:before {
+ content: "\270f";
+}
+.glyphicon-glass:before {
+ content: "\e001";
+}
+.glyphicon-music:before {
+ content: "\e002";
+}
+.glyphicon-search:before {
+ content: "\e003";
+}
+.glyphicon-heart:before {
+ content: "\e005";
+}
+.glyphicon-star:before {
+ content: "\e006";
+}
+.glyphicon-star-empty:before {
+ content: "\e007";
+}
+.glyphicon-user:before {
+ content: "\e008";
+}
+.glyphicon-film:before {
+ content: "\e009";
+}
+.glyphicon-th-large:before {
+ content: "\e010";
+}
+.glyphicon-th:before {
+ content: "\e011";
+}
+.glyphicon-th-list:before {
+ content: "\e012";
+}
+.glyphicon-ok:before {
+ content: "\e013";
+}
+.glyphicon-remove:before {
+ content: "\e014";
+}
+.glyphicon-zoom-in:before {
+ content: "\e015";
+}
+.glyphicon-zoom-out:before {
+ content: "\e016";
+}
+.glyphicon-off:before {
+ content: "\e017";
+}
+.glyphicon-signal:before {
+ content: "\e018";
+}
+.glyphicon-cog:before {
+ content: "\e019";
+}
+.glyphicon-trash:before {
+ content: "\e020";
+}
+.glyphicon-home:before {
+ content: "\e021";
+}
+.glyphicon-file:before {
+ content: "\e022";
+}
+.glyphicon-time:before {
+ content: "\e023";
+}
+.glyphicon-road:before {
+ content: "\e024";
+}
+.glyphicon-download-alt:before {
+ content: "\e025";
+}
+.glyphicon-download:before {
+ content: "\e026";
+}
+.glyphicon-upload:before {
+ content: "\e027";
+}
+.glyphicon-inbox:before {
+ content: "\e028";
+}
+.glyphicon-play-circle:before {
+ content: "\e029";
+}
+.glyphicon-repeat:before {
+ content: "\e030";
+}
+.glyphicon-refresh:before {
+ content: "\e031";
+}
+.glyphicon-list-alt:before {
+ content: "\e032";
+}
+.glyphicon-lock:before {
+ content: "\e033";
+}
+.glyphicon-flag:before {
+ content: "\e034";
+}
+.glyphicon-headphones:before {
+ content: "\e035";
+}
+.glyphicon-volume-off:before {
+ content: "\e036";
+}
+.glyphicon-volume-down:before {
+ content: "\e037";
+}
+.glyphicon-volume-up:before {
+ content: "\e038";
+}
+.glyphicon-qrcode:before {
+ content: "\e039";
+}
+.glyphicon-barcode:before {
+ content: "\e040";
+}
+.glyphicon-tag:before {
+ content: "\e041";
+}
+.glyphicon-tags:before {
+ content: "\e042";
+}
+.glyphicon-book:before {
+ content: "\e043";
+}
+.glyphicon-bookmark:before {
+ content: "\e044";
+}
+.glyphicon-print:before {
+ content: "\e045";
+}
+.glyphicon-camera:before {
+ content: "\e046";
+}
+.glyphicon-font:before {
+ content: "\e047";
+}
+.glyphicon-bold:before {
+ content: "\e048";
+}
+.glyphicon-italic:before {
+ content: "\e049";
+}
+.glyphicon-text-height:before {
+ content: "\e050";
+}
+.glyphicon-text-width:before {
+ content: "\e051";
+}
+.glyphicon-align-left:before {
+ content: "\e052";
+}
+.glyphicon-align-center:before {
+ content: "\e053";
+}
+.glyphicon-align-right:before {
+ content: "\e054";
+}
+.glyphicon-align-justify:before {
+ content: "\e055";
+}
+.glyphicon-list:before {
+ content: "\e056";
+}
+.glyphicon-indent-left:before {
+ content: "\e057";
+}
+.glyphicon-indent-right:before {
+ content: "\e058";
+}
+.glyphicon-facetime-video:before {
+ content: "\e059";
+}
+.glyphicon-picture:before {
+ content: "\e060";
+}
+.glyphicon-map-marker:before {
+ content: "\e062";
+}
+.glyphicon-adjust:before {
+ content: "\e063";
+}
+.glyphicon-tint:before {
+ content: "\e064";
+}
+.glyphicon-edit:before {
+ content: "\e065";
+}
+.glyphicon-share:before {
+ content: "\e066";
+}
+.glyphicon-check:before {
+ content: "\e067";
+}
+.glyphicon-move:before {
+ content: "\e068";
+}
+.glyphicon-step-backward:before {
+ content: "\e069";
+}
+.glyphicon-fast-backward:before {
+ content: "\e070";
+}
+.glyphicon-backward:before {
+ content: "\e071";
+}
+.glyphicon-play:before {
+ content: "\e072";
+}
+.glyphicon-pause:before {
+ content: "\e073";
+}
+.glyphicon-stop:before {
+ content: "\e074";
+}
+.glyphicon-forward:before {
+ content: "\e075";
+}
+.glyphicon-fast-forward:before {
+ content: "\e076";
+}
+.glyphicon-step-forward:before {
+ content: "\e077";
+}
+.glyphicon-eject:before {
+ content: "\e078";
+}
+.glyphicon-chevron-left:before {
+ content: "\e079";
+}
+.glyphicon-chevron-right:before {
+ content: "\e080";
+}
+.glyphicon-plus-sign:before {
+ content: "\e081";
+}
+.glyphicon-minus-sign:before {
+ content: "\e082";
+}
+.glyphicon-remove-sign:before {
+ content: "\e083";
+}
+.glyphicon-ok-sign:before {
+ content: "\e084";
+}
+.glyphicon-question-sign:before {
+ content: "\e085";
+}
+.glyphicon-info-sign:before {
+ content: "\e086";
+}
+.glyphicon-screenshot:before {
+ content: "\e087";
+}
+.glyphicon-remove-circle:before {
+ content: "\e088";
+}
+.glyphicon-ok-circle:before {
+ content: "\e089";
+}
+.glyphicon-ban-circle:before {
+ content: "\e090";
+}
+.glyphicon-arrow-left:before {
+ content: "\e091";
+}
+.glyphicon-arrow-right:before {
+ content: "\e092";
+}
+.glyphicon-arrow-up:before {
+ content: "\e093";
+}
+.glyphicon-arrow-down:before {
+ content: "\e094";
+}
+.glyphicon-share-alt:before {
+ content: "\e095";
+}
+.glyphicon-resize-full:before {
+ content: "\e096";
+}
+.glyphicon-resize-small:before {
+ content: "\e097";
+}
+.glyphicon-exclamation-sign:before {
+ content: "\e101";
+}
+.glyphicon-gift:before {
+ content: "\e102";
+}
+.glyphicon-leaf:before {
+ content: "\e103";
+}
+.glyphicon-fire:before {
+ content: "\e104";
+}
+.glyphicon-eye-open:before {
+ content: "\e105";
+}
+.glyphicon-eye-close:before {
+ content: "\e106";
+}
+.glyphicon-warning-sign:before {
+ content: "\e107";
+}
+.glyphicon-plane:before {
+ content: "\e108";
+}
+.glyphicon-calendar:before {
+ content: "\e109";
+}
+.glyphicon-random:before {
+ content: "\e110";
+}
+.glyphicon-comment:before {
+ content: "\e111";
+}
+.glyphicon-magnet:before {
+ content: "\e112";
+}
+.glyphicon-chevron-up:before {
+ content: "\e113";
+}
+.glyphicon-chevron-down:before {
+ content: "\e114";
+}
+.glyphicon-retweet:before {
+ content: "\e115";
+}
+.glyphicon-shopping-cart:before {
+ content: "\e116";
+}
+.glyphicon-folder-close:before {
+ content: "\e117";
+}
+.glyphicon-folder-open:before {
+ content: "\e118";
+}
+.glyphicon-resize-vertical:before {
+ content: "\e119";
+}
+.glyphicon-resize-horizontal:before {
+ content: "\e120";
+}
+.glyphicon-hdd:before {
+ content: "\e121";
+}
+.glyphicon-bullhorn:before {
+ content: "\e122";
+}
+.glyphicon-bell:before {
+ content: "\e123";
+}
+.glyphicon-certificate:before {
+ content: "\e124";
+}
+.glyphicon-thumbs-up:before {
+ content: "\e125";
+}
+.glyphicon-thumbs-down:before {
+ content: "\e126";
+}
+.glyphicon-hand-right:before {
+ content: "\e127";
+}
+.glyphicon-hand-left:before {
+ content: "\e128";
+}
+.glyphicon-hand-up:before {
+ content: "\e129";
+}
+.glyphicon-hand-down:before {
+ content: "\e130";
+}
+.glyphicon-circle-arrow-right:before {
+ content: "\e131";
+}
+.glyphicon-circle-arrow-left:before {
+ content: "\e132";
+}
+.glyphicon-circle-arrow-up:before {
+ content: "\e133";
+}
+.glyphicon-circle-arrow-down:before {
+ content: "\e134";
+}
+.glyphicon-globe:before {
+ content: "\e135";
+}
+.glyphicon-wrench:before {
+ content: "\e136";
+}
+.glyphicon-tasks:before {
+ content: "\e137";
+}
+.glyphicon-filter:before {
+ content: "\e138";
+}
+.glyphicon-briefcase:before {
+ content: "\e139";
+}
+.glyphicon-fullscreen:before {
+ content: "\e140";
+}
+.glyphicon-dashboard:before {
+ content: "\e141";
+}
+.glyphicon-paperclip:before {
+ content: "\e142";
+}
+.glyphicon-heart-empty:before {
+ content: "\e143";
+}
+.glyphicon-link:before {
+ content: "\e144";
+}
+.glyphicon-phone:before {
+ content: "\e145";
+}
+.glyphicon-pushpin:before {
+ content: "\e146";
+}
+.glyphicon-usd:before {
+ content: "\e148";
+}
+.glyphicon-gbp:before {
+ content: "\e149";
+}
+.glyphicon-sort:before {
+ content: "\e150";
+}
+.glyphicon-sort-by-alphabet:before {
+ content: "\e151";
+}
+.glyphicon-sort-by-alphabet-alt:before {
+ content: "\e152";
+}
+.glyphicon-sort-by-order:before {
+ content: "\e153";
+}
+.glyphicon-sort-by-order-alt:before {
+ content: "\e154";
+}
+.glyphicon-sort-by-attributes:before {
+ content: "\e155";
+}
+.glyphicon-sort-by-attributes-alt:before {
+ content: "\e156";
+}
+.glyphicon-unchecked:before {
+ content: "\e157";
+}
+.glyphicon-expand:before {
+ content: "\e158";
+}
+.glyphicon-collapse-down:before {
+ content: "\e159";
+}
+.glyphicon-collapse-up:before {
+ content: "\e160";
+}
+.glyphicon-log-in:before {
+ content: "\e161";
+}
+.glyphicon-flash:before {
+ content: "\e162";
+}
+.glyphicon-log-out:before {
+ content: "\e163";
+}
+.glyphicon-new-window:before {
+ content: "\e164";
+}
+.glyphicon-record:before {
+ content: "\e165";
+}
+.glyphicon-save:before {
+ content: "\e166";
+}
+.glyphicon-open:before {
+ content: "\e167";
+}
+.glyphicon-saved:before {
+ content: "\e168";
+}
+.glyphicon-import:before {
+ content: "\e169";
+}
+.glyphicon-export:before {
+ content: "\e170";
+}
+.glyphicon-send:before {
+ content: "\e171";
+}
+.glyphicon-floppy-disk:before {
+ content: "\e172";
+}
+.glyphicon-floppy-saved:before {
+ content: "\e173";
+}
+.glyphicon-floppy-remove:before {
+ content: "\e174";
+}
+.glyphicon-floppy-save:before {
+ content: "\e175";
+}
+.glyphicon-floppy-open:before {
+ content: "\e176";
+}
+.glyphicon-credit-card:before {
+ content: "\e177";
+}
+.glyphicon-transfer:before {
+ content: "\e178";
+}
+.glyphicon-cutlery:before {
+ content: "\e179";
+}
+.glyphicon-header:before {
+ content: "\e180";
+}
+.glyphicon-compressed:before {
+ content: "\e181";
+}
+.glyphicon-earphone:before {
+ content: "\e182";
+}
+.glyphicon-phone-alt:before {
+ content: "\e183";
+}
+.glyphicon-tower:before {
+ content: "\e184";
+}
+.glyphicon-stats:before {
+ content: "\e185";
+}
+.glyphicon-sd-video:before {
+ content: "\e186";
+}
+.glyphicon-hd-video:before {
+ content: "\e187";
+}
+.glyphicon-subtitles:before {
+ content: "\e188";
+}
+.glyphicon-sound-stereo:before {
+ content: "\e189";
+}
+.glyphicon-sound-dolby:before {
+ content: "\e190";
+}
+.glyphicon-sound-5-1:before {
+ content: "\e191";
+}
+.glyphicon-sound-6-1:before {
+ content: "\e192";
+}
+.glyphicon-sound-7-1:before {
+ content: "\e193";
+}
+.glyphicon-copyright-mark:before {
+ content: "\e194";
+}
+.glyphicon-registration-mark:before {
+ content: "\e195";
+}
+.glyphicon-cloud-download:before {
+ content: "\e197";
+}
+.glyphicon-cloud-upload:before {
+ content: "\e198";
+}
+.glyphicon-tree-conifer:before {
+ content: "\e199";
+}
+.glyphicon-tree-deciduous:before {
+ content: "\e200";
+}
+.glyphicon-cd:before {
+ content: "\e201";
+}
+.glyphicon-save-file:before {
+ content: "\e202";
+}
+.glyphicon-open-file:before {
+ content: "\e203";
+}
+.glyphicon-level-up:before {
+ content: "\e204";
+}
+.glyphicon-copy:before {
+ content: "\e205";
+}
+.glyphicon-paste:before {
+ content: "\e206";
+}
+.glyphicon-alert:before {
+ content: "\e209";
+}
+.glyphicon-equalizer:before {
+ content: "\e210";
+}
+.glyphicon-king:before {
+ content: "\e211";
+}
+.glyphicon-queen:before {
+ content: "\e212";
+}
+.glyphicon-pawn:before {
+ content: "\e213";
+}
+.glyphicon-bishop:before {
+ content: "\e214";
+}
+.glyphicon-knight:before {
+ content: "\e215";
+}
+.glyphicon-baby-formula:before {
+ content: "\e216";
+}
+.glyphicon-tent:before {
+ content: "\26fa";
+}
+.glyphicon-blackboard:before {
+ content: "\e218";
+}
+.glyphicon-bed:before {
+ content: "\e219";
+}
+.glyphicon-apple:before {
+ content: "\f8ff";
+}
+.glyphicon-erase:before {
+ content: "\e221";
+}
+.glyphicon-hourglass:before {
+ content: "\231b";
+}
+.glyphicon-lamp:before {
+ content: "\e223";
+}
+.glyphicon-duplicate:before {
+ content: "\e224";
+}
+.glyphicon-piggy-bank:before {
+ content: "\e225";
+}
+.glyphicon-scissors:before {
+ content: "\e226";
+}
+.glyphicon-bitcoin:before {
+ content: "\e227";
+}
+.glyphicon-btc:before {
+ content: "\e227";
+}
+.glyphicon-xbt:before {
+ content: "\e227";
+}
+.glyphicon-yen:before {
+ content: "\00a5";
+}
+.glyphicon-jpy:before {
+ content: "\00a5";
+}
+.glyphicon-ruble:before {
+ content: "\20bd";
+}
+.glyphicon-rub:before {
+ content: "\20bd";
+}
+.glyphicon-scale:before {
+ content: "\e230";
+}
+.glyphicon-ice-lolly:before {
+ content: "\e231";
+}
+.glyphicon-ice-lolly-tasted:before {
+ content: "\e232";
+}
+.glyphicon-education:before {
+ content: "\e233";
+}
+.glyphicon-option-horizontal:before {
+ content: "\e234";
+}
+.glyphicon-option-vertical:before {
+ content: "\e235";
+}
+.glyphicon-menu-hamburger:before {
+ content: "\e236";
+}
+.glyphicon-modal-window:before {
+ content: "\e237";
+}
+.glyphicon-oil:before {
+ content: "\e238";
+}
+.glyphicon-grain:before {
+ content: "\e239";
+}
+.glyphicon-sunglasses:before {
+ content: "\e240";
+}
+.glyphicon-text-size:before {
+ content: "\e241";
+}
+.glyphicon-text-color:before {
+ content: "\e242";
+}
+.glyphicon-text-background:before {
+ content: "\e243";
+}
+.glyphicon-object-align-top:before {
+ content: "\e244";
+}
+.glyphicon-object-align-bottom:before {
+ content: "\e245";
+}
+.glyphicon-object-align-horizontal:before {
+ content: "\e246";
+}
+.glyphicon-object-align-left:before {
+ content: "\e247";
+}
+.glyphicon-object-align-vertical:before {
+ content: "\e248";
+}
+.glyphicon-object-align-right:before {
+ content: "\e249";
+}
+.glyphicon-triangle-right:before {
+ content: "\e250";
+}
+.glyphicon-triangle-left:before {
+ content: "\e251";
+}
+.glyphicon-triangle-bottom:before {
+ content: "\e252";
+}
+.glyphicon-triangle-top:before {
+ content: "\e253";
+}
+.glyphicon-console:before {
+ content: "\e254";
+}
+.glyphicon-superscript:before {
+ content: "\e255";
+}
+.glyphicon-subscript:before {
+ content: "\e256";
+}
+.glyphicon-menu-left:before {
+ content: "\e257";
+}
+.glyphicon-menu-right:before {
+ content: "\e258";
+}
+.glyphicon-menu-down:before {
+ content: "\e259";
+}
+.glyphicon-menu-up:before {
+ content: "\e260";
+}
+* {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+*:before,
+*:after {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+html {
+ font-size: 10px;
+
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
+}
+body {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #333;
+ background-color: #fff;
+}
+input,
+button,
+select,
+textarea {
+ font-family: inherit;
+ font-size: inherit;
+ line-height: inherit;
+}
+a {
+ color: #337ab7;
+ text-decoration: none;
+}
+a:hover,
+a:focus {
+ color: #23527c;
+ text-decoration: underline;
+}
+a:focus {
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+figure {
+ margin: 0;
+}
+img {
+ vertical-align: middle;
+}
+.img-responsive,
+.thumbnail > img,
+.thumbnail a > img,
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ display: block;
+ max-width: 100%;
+ height: auto;
+}
+.img-rounded {
+ border-radius: 6px;
+}
+.img-thumbnail {
+ display: inline-block;
+ max-width: 100%;
+ height: auto;
+ padding: 4px;
+ line-height: 1.42857143;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ -webkit-transition: all .2s ease-in-out;
+ -o-transition: all .2s ease-in-out;
+ transition: all .2s ease-in-out;
+}
+.img-circle {
+ border-radius: 50%;
+}
+hr {
+ margin-top: 20px;
+ margin-bottom: 20px;
+ border: 0;
+ border-top: 1px solid #eee;
+}
+.sr-only {
+ position: absolute;
+ width: 1px;
+ height: 1px;
+ padding: 0;
+ margin: -1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0);
+ border: 0;
+}
+.sr-only-focusable:active,
+.sr-only-focusable:focus {
+ position: static;
+ width: auto;
+ height: auto;
+ margin: 0;
+ overflow: visible;
+ clip: auto;
+}
+[role="button"] {
+ cursor: pointer;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+ font-family: inherit;
+ font-weight: 500;
+ line-height: 1.1;
+ color: inherit;
+}
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small,
+.h1 small,
+.h2 small,
+.h3 small,
+.h4 small,
+.h5 small,
+.h6 small,
+h1 .small,
+h2 .small,
+h3 .small,
+h4 .small,
+h5 .small,
+h6 .small,
+.h1 .small,
+.h2 .small,
+.h3 .small,
+.h4 .small,
+.h5 .small,
+.h6 .small {
+ font-weight: normal;
+ line-height: 1;
+ color: #777;
+}
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3 {
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
+h1 small,
+.h1 small,
+h2 small,
+.h2 small,
+h3 small,
+.h3 small,
+h1 .small,
+.h1 .small,
+h2 .small,
+.h2 .small,
+h3 .small,
+.h3 .small {
+ font-size: 65%;
+}
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+h4 small,
+.h4 small,
+h5 small,
+.h5 small,
+h6 small,
+.h6 small,
+h4 .small,
+.h4 .small,
+h5 .small,
+.h5 .small,
+h6 .small,
+.h6 .small {
+ font-size: 75%;
+}
+h1,
+.h1 {
+ font-size: 36px;
+}
+h2,
+.h2 {
+ font-size: 30px;
+}
+h3,
+.h3 {
+ font-size: 24px;
+}
+h4,
+.h4 {
+ font-size: 18px;
+}
+h5,
+.h5 {
+ font-size: 14px;
+}
+h6,
+.h6 {
+ font-size: 12px;
+}
+p {
+ margin: 0 0 10px;
+}
+.lead {
+ margin-bottom: 20px;
+ font-size: 16px;
+ font-weight: 300;
+ line-height: 1.4;
+}
+@media (min-width: 768px) {
+ .lead {
+ font-size: 21px;
+ }
+}
+small,
+.small {
+ font-size: 85%;
+}
+mark,
+.mark {
+ padding: .2em;
+ background-color: #fcf8e3;
+}
+.text-left {
+ text-align: left;
+}
+.text-right {
+ text-align: right;
+}
+.text-center {
+ text-align: center;
+}
+.text-justify {
+ text-align: justify;
+}
+.text-nowrap {
+ white-space: nowrap;
+}
+.text-lowercase {
+ text-transform: lowercase;
+}
+.text-uppercase {
+ text-transform: uppercase;
+}
+.text-capitalize {
+ text-transform: capitalize;
+}
+.text-muted {
+ color: #777;
+}
+.text-primary {
+ color: #337ab7;
+}
+a.text-primary:hover,
+a.text-primary:focus {
+ color: #286090;
+}
+.text-success {
+ color: #3c763d;
+}
+a.text-success:hover,
+a.text-success:focus {
+ color: #2b542c;
+}
+.text-info {
+ color: #31708f;
+}
+a.text-info:hover,
+a.text-info:focus {
+ color: #245269;
+}
+.text-warning {
+ color: #8a6d3b;
+}
+a.text-warning:hover,
+a.text-warning:focus {
+ color: #66512c;
+}
+.text-danger {
+ color: #a94442;
+}
+a.text-danger:hover,
+a.text-danger:focus {
+ color: #843534;
+}
+.bg-primary {
+ color: #fff;
+ background-color: #337ab7;
+}
+a.bg-primary:hover,
+a.bg-primary:focus {
+ background-color: #286090;
+}
+.bg-success {
+ background-color: #dff0d8;
+}
+a.bg-success:hover,
+a.bg-success:focus {
+ background-color: #c1e2b3;
+}
+.bg-info {
+ background-color: #d9edf7;
+}
+a.bg-info:hover,
+a.bg-info:focus {
+ background-color: #afd9ee;
+}
+.bg-warning {
+ background-color: #fcf8e3;
+}
+a.bg-warning:hover,
+a.bg-warning:focus {
+ background-color: #f7ecb5;
+}
+.bg-danger {
+ background-color: #f2dede;
+}
+a.bg-danger:hover,
+a.bg-danger:focus {
+ background-color: #e4b9b9;
+}
+.page-header {
+ padding-bottom: 9px;
+ margin: 40px 0 20px;
+ border-bottom: 1px solid #eee;
+}
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: 10px;
+}
+ul ul,
+ol ul,
+ul ol,
+ol ol {
+ margin-bottom: 0;
+}
+.list-unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+.list-inline {
+ padding-left: 0;
+ margin-left: -5px;
+ list-style: none;
+}
+.list-inline > li {
+ display: inline-block;
+ padding-right: 5px;
+ padding-left: 5px;
+}
+dl {
+ margin-top: 0;
+ margin-bottom: 20px;
+}
+dt,
+dd {
+ line-height: 1.42857143;
+}
+dt {
+ font-weight: bold;
+}
+dd {
+ margin-left: 0;
+}
+@media (min-width: 768px) {
+ .dl-horizontal dt {
+ float: left;
+ width: 160px;
+ overflow: hidden;
+ clear: left;
+ text-align: right;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ .dl-horizontal dd {
+ margin-left: 180px;
+ }
+}
+abbr[title],
+abbr[data-original-title] {
+ cursor: help;
+ border-bottom: 1px dotted #777;
+}
+.initialism {
+ font-size: 90%;
+ text-transform: uppercase;
+}
+blockquote {
+ padding: 10px 20px;
+ margin: 0 0 20px;
+ font-size: 17.5px;
+ border-left: 5px solid #eee;
+}
+blockquote p:last-child,
+blockquote ul:last-child,
+blockquote ol:last-child {
+ margin-bottom: 0;
+}
+blockquote footer,
+blockquote small,
+blockquote .small {
+ display: block;
+ font-size: 80%;
+ line-height: 1.42857143;
+ color: #777;
+}
+blockquote footer:before,
+blockquote small:before,
+blockquote .small:before {
+ content: '\2014 \00A0';
+}
+.blockquote-reverse,
+blockquote.pull-right {
+ padding-right: 15px;
+ padding-left: 0;
+ text-align: right;
+ border-right: 5px solid #eee;
+ border-left: 0;
+}
+.blockquote-reverse footer:before,
+blockquote.pull-right footer:before,
+.blockquote-reverse small:before,
+blockquote.pull-right small:before,
+.blockquote-reverse .small:before,
+blockquote.pull-right .small:before {
+ content: '';
+}
+.blockquote-reverse footer:after,
+blockquote.pull-right footer:after,
+.blockquote-reverse small:after,
+blockquote.pull-right small:after,
+.blockquote-reverse .small:after,
+blockquote.pull-right .small:after {
+ content: '\00A0 \2014';
+}
+address {
+ margin-bottom: 20px;
+ font-style: normal;
+ line-height: 1.42857143;
+}
+code,
+kbd,
+pre,
+samp {
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
+}
+code {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #c7254e;
+ background-color: #f9f2f4;
+ border-radius: 4px;
+}
+kbd {
+ padding: 2px 4px;
+ font-size: 90%;
+ color: #fff;
+ background-color: #333;
+ border-radius: 3px;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .25);
+}
+kbd kbd {
+ padding: 0;
+ font-size: 100%;
+ font-weight: bold;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+pre {
+ display: block;
+ padding: 9.5px;
+ margin: 0 0 10px;
+ font-size: 13px;
+ line-height: 1.42857143;
+ color: #333;
+ word-break: break-all;
+ word-wrap: break-word;
+ background-color: #f5f5f5;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+}
+pre code {
+ padding: 0;
+ font-size: inherit;
+ color: inherit;
+ white-space: pre-wrap;
+ background-color: transparent;
+ border-radius: 0;
+}
+.pre-scrollable {
+ max-height: 340px;
+ overflow-y: scroll;
+}
+.container {
+ padding-right: 15px;
+ padding-left: 15px;
+ margin-right: auto;
+ margin-left: auto;
+}
+@media (min-width: 768px) {
+ .container {
+ width: 750px;
+ }
+}
+@media (min-width: 992px) {
+ .container {
+ width: 970px;
+ }
+}
+@media (min-width: 1200px) {
+ .container {
+ width: 1170px;
+ }
+}
+.container-fluid {
+ padding-right: 15px;
+ padding-left: 15px;
+ margin-right: auto;
+ margin-left: auto;
+}
+.row {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
+ position: relative;
+ min-height: 1px;
+ padding-right: 15px;
+ padding-left: 15px;
+}
+.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
+ float: left;
+}
+.col-xs-12 {
+ width: 100%;
+}
+.col-xs-11 {
+ width: 91.66666667%;
+}
+.col-xs-10 {
+ width: 83.33333333%;
+}
+.col-xs-9 {
+ width: 75%;
+}
+.col-xs-8 {
+ width: 66.66666667%;
+}
+.col-xs-7 {
+ width: 58.33333333%;
+}
+.col-xs-6 {
+ width: 50%;
+}
+.col-xs-5 {
+ width: 41.66666667%;
+}
+.col-xs-4 {
+ width: 33.33333333%;
+}
+.col-xs-3 {
+ width: 25%;
+}
+.col-xs-2 {
+ width: 16.66666667%;
+}
+.col-xs-1 {
+ width: 8.33333333%;
+}
+.col-xs-pull-12 {
+ right: 100%;
+}
+.col-xs-pull-11 {
+ right: 91.66666667%;
+}
+.col-xs-pull-10 {
+ right: 83.33333333%;
+}
+.col-xs-pull-9 {
+ right: 75%;
+}
+.col-xs-pull-8 {
+ right: 66.66666667%;
+}
+.col-xs-pull-7 {
+ right: 58.33333333%;
+}
+.col-xs-pull-6 {
+ right: 50%;
+}
+.col-xs-pull-5 {
+ right: 41.66666667%;
+}
+.col-xs-pull-4 {
+ right: 33.33333333%;
+}
+.col-xs-pull-3 {
+ right: 25%;
+}
+.col-xs-pull-2 {
+ right: 16.66666667%;
+}
+.col-xs-pull-1 {
+ right: 8.33333333%;
+}
+.col-xs-pull-0 {
+ right: auto;
+}
+.col-xs-push-12 {
+ left: 100%;
+}
+.col-xs-push-11 {
+ left: 91.66666667%;
+}
+.col-xs-push-10 {
+ left: 83.33333333%;
+}
+.col-xs-push-9 {
+ left: 75%;
+}
+.col-xs-push-8 {
+ left: 66.66666667%;
+}
+.col-xs-push-7 {
+ left: 58.33333333%;
+}
+.col-xs-push-6 {
+ left: 50%;
+}
+.col-xs-push-5 {
+ left: 41.66666667%;
+}
+.col-xs-push-4 {
+ left: 33.33333333%;
+}
+.col-xs-push-3 {
+ left: 25%;
+}
+.col-xs-push-2 {
+ left: 16.66666667%;
+}
+.col-xs-push-1 {
+ left: 8.33333333%;
+}
+.col-xs-push-0 {
+ left: auto;
+}
+.col-xs-offset-12 {
+ margin-left: 100%;
+}
+.col-xs-offset-11 {
+ margin-left: 91.66666667%;
+}
+.col-xs-offset-10 {
+ margin-left: 83.33333333%;
+}
+.col-xs-offset-9 {
+ margin-left: 75%;
+}
+.col-xs-offset-8 {
+ margin-left: 66.66666667%;
+}
+.col-xs-offset-7 {
+ margin-left: 58.33333333%;
+}
+.col-xs-offset-6 {
+ margin-left: 50%;
+}
+.col-xs-offset-5 {
+ margin-left: 41.66666667%;
+}
+.col-xs-offset-4 {
+ margin-left: 33.33333333%;
+}
+.col-xs-offset-3 {
+ margin-left: 25%;
+}
+.col-xs-offset-2 {
+ margin-left: 16.66666667%;
+}
+.col-xs-offset-1 {
+ margin-left: 8.33333333%;
+}
+.col-xs-offset-0 {
+ margin-left: 0;
+}
+@media (min-width: 768px) {
+ .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
+ float: left;
+ }
+ .col-sm-12 {
+ width: 100%;
+ }
+ .col-sm-11 {
+ width: 91.66666667%;
+ }
+ .col-sm-10 {
+ width: 83.33333333%;
+ }
+ .col-sm-9 {
+ width: 75%;
+ }
+ .col-sm-8 {
+ width: 66.66666667%;
+ }
+ .col-sm-7 {
+ width: 58.33333333%;
+ }
+ .col-sm-6 {
+ width: 50%;
+ }
+ .col-sm-5 {
+ width: 41.66666667%;
+ }
+ .col-sm-4 {
+ width: 33.33333333%;
+ }
+ .col-sm-3 {
+ width: 25%;
+ }
+ .col-sm-2 {
+ width: 16.66666667%;
+ }
+ .col-sm-1 {
+ width: 8.33333333%;
+ }
+ .col-sm-pull-12 {
+ right: 100%;
+ }
+ .col-sm-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-sm-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-sm-pull-9 {
+ right: 75%;
+ }
+ .col-sm-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-sm-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-sm-pull-6 {
+ right: 50%;
+ }
+ .col-sm-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-sm-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-sm-pull-3 {
+ right: 25%;
+ }
+ .col-sm-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-sm-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-sm-pull-0 {
+ right: auto;
+ }
+ .col-sm-push-12 {
+ left: 100%;
+ }
+ .col-sm-push-11 {
+ left: 91.66666667%;
+ }
+ .col-sm-push-10 {
+ left: 83.33333333%;
+ }
+ .col-sm-push-9 {
+ left: 75%;
+ }
+ .col-sm-push-8 {
+ left: 66.66666667%;
+ }
+ .col-sm-push-7 {
+ left: 58.33333333%;
+ }
+ .col-sm-push-6 {
+ left: 50%;
+ }
+ .col-sm-push-5 {
+ left: 41.66666667%;
+ }
+ .col-sm-push-4 {
+ left: 33.33333333%;
+ }
+ .col-sm-push-3 {
+ left: 25%;
+ }
+ .col-sm-push-2 {
+ left: 16.66666667%;
+ }
+ .col-sm-push-1 {
+ left: 8.33333333%;
+ }
+ .col-sm-push-0 {
+ left: auto;
+ }
+ .col-sm-offset-12 {
+ margin-left: 100%;
+ }
+ .col-sm-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-sm-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-sm-offset-9 {
+ margin-left: 75%;
+ }
+ .col-sm-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-sm-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-sm-offset-6 {
+ margin-left: 50%;
+ }
+ .col-sm-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-sm-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-sm-offset-3 {
+ margin-left: 25%;
+ }
+ .col-sm-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-sm-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-sm-offset-0 {
+ margin-left: 0;
+ }
+}
+@media (min-width: 992px) {
+ .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
+ float: left;
+ }
+ .col-md-12 {
+ width: 100%;
+ }
+ .col-md-11 {
+ width: 91.66666667%;
+ }
+ .col-md-10 {
+ width: 83.33333333%;
+ }
+ .col-md-9 {
+ width: 75%;
+ }
+ .col-md-8 {
+ width: 66.66666667%;
+ }
+ .col-md-7 {
+ width: 58.33333333%;
+ }
+ .col-md-6 {
+ width: 50%;
+ }
+ .col-md-5 {
+ width: 41.66666667%;
+ }
+ .col-md-4 {
+ width: 33.33333333%;
+ }
+ .col-md-3 {
+ width: 25%;
+ }
+ .col-md-2 {
+ width: 16.66666667%;
+ }
+ .col-md-1 {
+ width: 8.33333333%;
+ }
+ .col-md-pull-12 {
+ right: 100%;
+ }
+ .col-md-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-md-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-md-pull-9 {
+ right: 75%;
+ }
+ .col-md-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-md-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-md-pull-6 {
+ right: 50%;
+ }
+ .col-md-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-md-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-md-pull-3 {
+ right: 25%;
+ }
+ .col-md-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-md-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-md-pull-0 {
+ right: auto;
+ }
+ .col-md-push-12 {
+ left: 100%;
+ }
+ .col-md-push-11 {
+ left: 91.66666667%;
+ }
+ .col-md-push-10 {
+ left: 83.33333333%;
+ }
+ .col-md-push-9 {
+ left: 75%;
+ }
+ .col-md-push-8 {
+ left: 66.66666667%;
+ }
+ .col-md-push-7 {
+ left: 58.33333333%;
+ }
+ .col-md-push-6 {
+ left: 50%;
+ }
+ .col-md-push-5 {
+ left: 41.66666667%;
+ }
+ .col-md-push-4 {
+ left: 33.33333333%;
+ }
+ .col-md-push-3 {
+ left: 25%;
+ }
+ .col-md-push-2 {
+ left: 16.66666667%;
+ }
+ .col-md-push-1 {
+ left: 8.33333333%;
+ }
+ .col-md-push-0 {
+ left: auto;
+ }
+ .col-md-offset-12 {
+ margin-left: 100%;
+ }
+ .col-md-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-md-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-md-offset-9 {
+ margin-left: 75%;
+ }
+ .col-md-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-md-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-md-offset-6 {
+ margin-left: 50%;
+ }
+ .col-md-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-md-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-md-offset-3 {
+ margin-left: 25%;
+ }
+ .col-md-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-md-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-md-offset-0 {
+ margin-left: 0;
+ }
+}
+@media (min-width: 1200px) {
+ .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
+ float: left;
+ }
+ .col-lg-12 {
+ width: 100%;
+ }
+ .col-lg-11 {
+ width: 91.66666667%;
+ }
+ .col-lg-10 {
+ width: 83.33333333%;
+ }
+ .col-lg-9 {
+ width: 75%;
+ }
+ .col-lg-8 {
+ width: 66.66666667%;
+ }
+ .col-lg-7 {
+ width: 58.33333333%;
+ }
+ .col-lg-6 {
+ width: 50%;
+ }
+ .col-lg-5 {
+ width: 41.66666667%;
+ }
+ .col-lg-4 {
+ width: 33.33333333%;
+ }
+ .col-lg-3 {
+ width: 25%;
+ }
+ .col-lg-2 {
+ width: 16.66666667%;
+ }
+ .col-lg-1 {
+ width: 8.33333333%;
+ }
+ .col-lg-pull-12 {
+ right: 100%;
+ }
+ .col-lg-pull-11 {
+ right: 91.66666667%;
+ }
+ .col-lg-pull-10 {
+ right: 83.33333333%;
+ }
+ .col-lg-pull-9 {
+ right: 75%;
+ }
+ .col-lg-pull-8 {
+ right: 66.66666667%;
+ }
+ .col-lg-pull-7 {
+ right: 58.33333333%;
+ }
+ .col-lg-pull-6 {
+ right: 50%;
+ }
+ .col-lg-pull-5 {
+ right: 41.66666667%;
+ }
+ .col-lg-pull-4 {
+ right: 33.33333333%;
+ }
+ .col-lg-pull-3 {
+ right: 25%;
+ }
+ .col-lg-pull-2 {
+ right: 16.66666667%;
+ }
+ .col-lg-pull-1 {
+ right: 8.33333333%;
+ }
+ .col-lg-pull-0 {
+ right: auto;
+ }
+ .col-lg-push-12 {
+ left: 100%;
+ }
+ .col-lg-push-11 {
+ left: 91.66666667%;
+ }
+ .col-lg-push-10 {
+ left: 83.33333333%;
+ }
+ .col-lg-push-9 {
+ left: 75%;
+ }
+ .col-lg-push-8 {
+ left: 66.66666667%;
+ }
+ .col-lg-push-7 {
+ left: 58.33333333%;
+ }
+ .col-lg-push-6 {
+ left: 50%;
+ }
+ .col-lg-push-5 {
+ left: 41.66666667%;
+ }
+ .col-lg-push-4 {
+ left: 33.33333333%;
+ }
+ .col-lg-push-3 {
+ left: 25%;
+ }
+ .col-lg-push-2 {
+ left: 16.66666667%;
+ }
+ .col-lg-push-1 {
+ left: 8.33333333%;
+ }
+ .col-lg-push-0 {
+ left: auto;
+ }
+ .col-lg-offset-12 {
+ margin-left: 100%;
+ }
+ .col-lg-offset-11 {
+ margin-left: 91.66666667%;
+ }
+ .col-lg-offset-10 {
+ margin-left: 83.33333333%;
+ }
+ .col-lg-offset-9 {
+ margin-left: 75%;
+ }
+ .col-lg-offset-8 {
+ margin-left: 66.66666667%;
+ }
+ .col-lg-offset-7 {
+ margin-left: 58.33333333%;
+ }
+ .col-lg-offset-6 {
+ margin-left: 50%;
+ }
+ .col-lg-offset-5 {
+ margin-left: 41.66666667%;
+ }
+ .col-lg-offset-4 {
+ margin-left: 33.33333333%;
+ }
+ .col-lg-offset-3 {
+ margin-left: 25%;
+ }
+ .col-lg-offset-2 {
+ margin-left: 16.66666667%;
+ }
+ .col-lg-offset-1 {
+ margin-left: 8.33333333%;
+ }
+ .col-lg-offset-0 {
+ margin-left: 0;
+ }
+}
+table {
+ background-color: transparent;
+}
+caption {
+ padding-top: 8px;
+ padding-bottom: 8px;
+ color: #777;
+ text-align: left;
+}
+th {
+ text-align: left;
+}
+.table {
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: 20px;
+}
+.table > thead > tr > th,
+.table > tbody > tr > th,
+.table > tfoot > tr > th,
+.table > thead > tr > td,
+.table > tbody > tr > td,
+.table > tfoot > tr > td {
+ padding: 8px;
+ line-height: 1.42857143;
+ vertical-align: top;
+ border-top: 1px solid #ddd;
+}
+.table > thead > tr > th {
+ vertical-align: bottom;
+ border-bottom: 2px solid #ddd;
+}
+.table > caption + thead > tr:first-child > th,
+.table > colgroup + thead > tr:first-child > th,
+.table > thead:first-child > tr:first-child > th,
+.table > caption + thead > tr:first-child > td,
+.table > colgroup + thead > tr:first-child > td,
+.table > thead:first-child > tr:first-child > td {
+ border-top: 0;
+}
+.table > tbody + tbody {
+ border-top: 2px solid #ddd;
+}
+.table .table {
+ background-color: #fff;
+}
+.table-condensed > thead > tr > th,
+.table-condensed > tbody > tr > th,
+.table-condensed > tfoot > tr > th,
+.table-condensed > thead > tr > td,
+.table-condensed > tbody > tr > td,
+.table-condensed > tfoot > tr > td {
+ padding: 5px;
+}
+.table-bordered {
+ border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > tbody > tr > th,
+.table-bordered > tfoot > tr > th,
+.table-bordered > thead > tr > td,
+.table-bordered > tbody > tr > td,
+.table-bordered > tfoot > tr > td {
+ border: 1px solid #ddd;
+}
+.table-bordered > thead > tr > th,
+.table-bordered > thead > tr > td {
+ border-bottom-width: 2px;
+}
+.table-striped > tbody > tr:nth-of-type(odd) {
+ background-color: #f9f9f9;
+}
+.table-hover > tbody > tr:hover {
+ background-color: #f5f5f5;
+}
+table col[class*="col-"] {
+ position: static;
+ display: table-column;
+ float: none;
+}
+table td[class*="col-"],
+table th[class*="col-"] {
+ position: static;
+ display: table-cell;
+ float: none;
+}
+.table > thead > tr > td.active,
+.table > tbody > tr > td.active,
+.table > tfoot > tr > td.active,
+.table > thead > tr > th.active,
+.table > tbody > tr > th.active,
+.table > tfoot > tr > th.active,
+.table > thead > tr.active > td,
+.table > tbody > tr.active > td,
+.table > tfoot > tr.active > td,
+.table > thead > tr.active > th,
+.table > tbody > tr.active > th,
+.table > tfoot > tr.active > th {
+ background-color: #f5f5f5;
+}
+.table-hover > tbody > tr > td.active:hover,
+.table-hover > tbody > tr > th.active:hover,
+.table-hover > tbody > tr.active:hover > td,
+.table-hover > tbody > tr:hover > .active,
+.table-hover > tbody > tr.active:hover > th {
+ background-color: #e8e8e8;
+}
+.table > thead > tr > td.success,
+.table > tbody > tr > td.success,
+.table > tfoot > tr > td.success,
+.table > thead > tr > th.success,
+.table > tbody > tr > th.success,
+.table > tfoot > tr > th.success,
+.table > thead > tr.success > td,
+.table > tbody > tr.success > td,
+.table > tfoot > tr.success > td,
+.table > thead > tr.success > th,
+.table > tbody > tr.success > th,
+.table > tfoot > tr.success > th {
+ background-color: #dff0d8;
+}
+.table-hover > tbody > tr > td.success:hover,
+.table-hover > tbody > tr > th.success:hover,
+.table-hover > tbody > tr.success:hover > td,
+.table-hover > tbody > tr:hover > .success,
+.table-hover > tbody > tr.success:hover > th {
+ background-color: #d0e9c6;
+}
+.table > thead > tr > td.info,
+.table > tbody > tr > td.info,
+.table > tfoot > tr > td.info,
+.table > thead > tr > th.info,
+.table > tbody > tr > th.info,
+.table > tfoot > tr > th.info,
+.table > thead > tr.info > td,
+.table > tbody > tr.info > td,
+.table > tfoot > tr.info > td,
+.table > thead > tr.info > th,
+.table > tbody > tr.info > th,
+.table > tfoot > tr.info > th {
+ background-color: #d9edf7;
+}
+.table-hover > tbody > tr > td.info:hover,
+.table-hover > tbody > tr > th.info:hover,
+.table-hover > tbody > tr.info:hover > td,
+.table-hover > tbody > tr:hover > .info,
+.table-hover > tbody > tr.info:hover > th {
+ background-color: #c4e3f3;
+}
+.table > thead > tr > td.warning,
+.table > tbody > tr > td.warning,
+.table > tfoot > tr > td.warning,
+.table > thead > tr > th.warning,
+.table > tbody > tr > th.warning,
+.table > tfoot > tr > th.warning,
+.table > thead > tr.warning > td,
+.table > tbody > tr.warning > td,
+.table > tfoot > tr.warning > td,
+.table > thead > tr.warning > th,
+.table > tbody > tr.warning > th,
+.table > tfoot > tr.warning > th {
+ background-color: #fcf8e3;
+}
+.table-hover > tbody > tr > td.warning:hover,
+.table-hover > tbody > tr > th.warning:hover,
+.table-hover > tbody > tr.warning:hover > td,
+.table-hover > tbody > tr:hover > .warning,
+.table-hover > tbody > tr.warning:hover > th {
+ background-color: #faf2cc;
+}
+.table > thead > tr > td.danger,
+.table > tbody > tr > td.danger,
+.table > tfoot > tr > td.danger,
+.table > thead > tr > th.danger,
+.table > tbody > tr > th.danger,
+.table > tfoot > tr > th.danger,
+.table > thead > tr.danger > td,
+.table > tbody > tr.danger > td,
+.table > tfoot > tr.danger > td,
+.table > thead > tr.danger > th,
+.table > tbody > tr.danger > th,
+.table > tfoot > tr.danger > th {
+ background-color: #f2dede;
+}
+.table-hover > tbody > tr > td.danger:hover,
+.table-hover > tbody > tr > th.danger:hover,
+.table-hover > tbody > tr.danger:hover > td,
+.table-hover > tbody > tr:hover > .danger,
+.table-hover > tbody > tr.danger:hover > th {
+ background-color: #ebcccc;
+}
+.table-responsive {
+ min-height: .01%;
+ overflow-x: auto;
+}
+@media screen and (max-width: 767px) {
+ .table-responsive {
+ width: 100%;
+ margin-bottom: 15px;
+ overflow-y: hidden;
+ -ms-overflow-style: -ms-autohiding-scrollbar;
+ border: 1px solid #ddd;
+ }
+ .table-responsive > .table {
+ margin-bottom: 0;
+ }
+ .table-responsive > .table > thead > tr > th,
+ .table-responsive > .table > tbody > tr > th,
+ .table-responsive > .table > tfoot > tr > th,
+ .table-responsive > .table > thead > tr > td,
+ .table-responsive > .table > tbody > tr > td,
+ .table-responsive > .table > tfoot > tr > td {
+ white-space: nowrap;
+ }
+ .table-responsive > .table-bordered {
+ border: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:first-child,
+ .table-responsive > .table-bordered > tbody > tr > th:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+ .table-responsive > .table-bordered > thead > tr > td:first-child,
+ .table-responsive > .table-bordered > tbody > tr > td:first-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+ }
+ .table-responsive > .table-bordered > thead > tr > th:last-child,
+ .table-responsive > .table-bordered > tbody > tr > th:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+ .table-responsive > .table-bordered > thead > tr > td:last-child,
+ .table-responsive > .table-bordered > tbody > tr > td:last-child,
+ .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+ }
+ .table-responsive > .table-bordered > tbody > tr:last-child > th,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > th,
+ .table-responsive > .table-bordered > tbody > tr:last-child > td,
+ .table-responsive > .table-bordered > tfoot > tr:last-child > td {
+ border-bottom: 0;
+ }
+}
+fieldset {
+ min-width: 0;
+ padding: 0;
+ margin: 0;
+ border: 0;
+}
+legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 20px;
+ font-size: 21px;
+ line-height: inherit;
+ color: #333;
+ border: 0;
+ border-bottom: 1px solid #e5e5e5;
+}
+label {
+ display: inline-block;
+ max-width: 100%;
+ margin-bottom: 5px;
+ font-weight: bold;
+}
+input[type="search"] {
+ -webkit-box-sizing: border-box;
+ -moz-box-sizing: border-box;
+ box-sizing: border-box;
+}
+input[type="radio"],
+input[type="checkbox"] {
+ margin: 4px 0 0;
+ margin-top: 1px \9;
+ line-height: normal;
+}
+input[type="file"] {
+ display: block;
+}
+input[type="range"] {
+ display: block;
+ width: 100%;
+}
+select[multiple],
+select[size] {
+ height: auto;
+}
+input[type="file"]:focus,
+input[type="radio"]:focus,
+input[type="checkbox"]:focus {
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+output {
+ display: block;
+ padding-top: 7px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #555;
+}
+.form-control {
+ display: block;
+ width: 100%;
+ height: 34px;
+ padding: 6px 12px;
+ font-size: 14px;
+ line-height: 1.42857143;
+ color: #555;
+ background-color: #fff;
+ background-image: none;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ -webkit-transition: border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;
+ -o-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
+}
+.form-control:focus {
+ border-color: #66afe9;
+ outline: 0;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, .6);
+}
+.form-control::-moz-placeholder {
+ color: #999;
+ opacity: 1;
+}
+.form-control:-ms-input-placeholder {
+ color: #999;
+}
+.form-control::-webkit-input-placeholder {
+ color: #999;
+}
+.form-control::-ms-expand {
+ background-color: transparent;
+ border: 0;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+ background-color: #eee;
+ opacity: 1;
+}
+.form-control[disabled],
+fieldset[disabled] .form-control {
+ cursor: not-allowed;
+}
+textarea.form-control {
+ height: auto;
+}
+input[type="search"] {
+ -webkit-appearance: none;
+}
+@media screen and (-webkit-min-device-pixel-ratio: 0) {
+ input[type="date"].form-control,
+ input[type="time"].form-control,
+ input[type="datetime-local"].form-control,
+ input[type="month"].form-control {
+ line-height: 34px;
+ }
+ input[type="date"].input-sm,
+ input[type="time"].input-sm,
+ input[type="datetime-local"].input-sm,
+ input[type="month"].input-sm,
+ .input-group-sm input[type="date"],
+ .input-group-sm input[type="time"],
+ .input-group-sm input[type="datetime-local"],
+ .input-group-sm input[type="month"] {
+ line-height: 30px;
+ }
+ input[type="date"].input-lg,
+ input[type="time"].input-lg,
+ input[type="datetime-local"].input-lg,
+ input[type="month"].input-lg,
+ .input-group-lg input[type="date"],
+ .input-group-lg input[type="time"],
+ .input-group-lg input[type="datetime-local"],
+ .input-group-lg input[type="month"] {
+ line-height: 46px;
+ }
+}
+.form-group {
+ margin-bottom: 15px;
+}
+.radio,
+.checkbox {
+ position: relative;
+ display: block;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.radio label,
+.checkbox label {
+ min-height: 20px;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ cursor: pointer;
+}
+.radio input[type="radio"],
+.radio-inline input[type="radio"],
+.checkbox input[type="checkbox"],
+.checkbox-inline input[type="checkbox"] {
+ position: absolute;
+ margin-top: 4px \9;
+ margin-left: -20px;
+}
+.radio + .radio,
+.checkbox + .checkbox {
+ margin-top: -5px;
+}
+.radio-inline,
+.checkbox-inline {
+ position: relative;
+ display: inline-block;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ vertical-align: middle;
+ cursor: pointer;
+}
+.radio-inline + .radio-inline,
+.checkbox-inline + .checkbox-inline {
+ margin-top: 0;
+ margin-left: 10px;
+}
+input[type="radio"][disabled],
+input[type="checkbox"][disabled],
+input[type="radio"].disabled,
+input[type="checkbox"].disabled,
+fieldset[disabled] input[type="radio"],
+fieldset[disabled] input[type="checkbox"] {
+ cursor: not-allowed;
+}
+.radio-inline.disabled,
+.checkbox-inline.disabled,
+fieldset[disabled] .radio-inline,
+fieldset[disabled] .checkbox-inline {
+ cursor: not-allowed;
+}
+.radio.disabled label,
+.checkbox.disabled label,
+fieldset[disabled] .radio label,
+fieldset[disabled] .checkbox label {
+ cursor: not-allowed;
+}
+.form-control-static {
+ min-height: 34px;
+ padding-top: 7px;
+ padding-bottom: 7px;
+ margin-bottom: 0;
+}
+.form-control-static.input-lg,
+.form-control-static.input-sm {
+ padding-right: 0;
+ padding-left: 0;
+}
+.input-sm {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+select.input-sm {
+ height: 30px;
+ line-height: 30px;
+}
+textarea.input-sm,
+select[multiple].input-sm {
+ height: auto;
+}
+.form-group-sm .form-control {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+.form-group-sm select.form-control {
+ height: 30px;
+ line-height: 30px;
+}
+.form-group-sm textarea.form-control,
+.form-group-sm select[multiple].form-control {
+ height: auto;
+}
+.form-group-sm .form-control-static {
+ height: 30px;
+ min-height: 32px;
+ padding: 6px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+}
+.input-lg {
+ height: 46px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+select.input-lg {
+ height: 46px;
+ line-height: 46px;
+}
+textarea.input-lg,
+select[multiple].input-lg {
+ height: auto;
+}
+.form-group-lg .form-control {
+ height: 46px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+.form-group-lg select.form-control {
+ height: 46px;
+ line-height: 46px;
+}
+.form-group-lg textarea.form-control,
+.form-group-lg select[multiple].form-control {
+ height: auto;
+}
+.form-group-lg .form-control-static {
+ height: 46px;
+ min-height: 38px;
+ padding: 11px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+}
+.has-feedback {
+ position: relative;
+}
+.has-feedback .form-control {
+ padding-right: 42.5px;
+}
+.form-control-feedback {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ display: block;
+ width: 34px;
+ height: 34px;
+ line-height: 34px;
+ text-align: center;
+ pointer-events: none;
+}
+.input-lg + .form-control-feedback,
+.input-group-lg + .form-control-feedback,
+.form-group-lg .form-control + .form-control-feedback {
+ width: 46px;
+ height: 46px;
+ line-height: 46px;
+}
+.input-sm + .form-control-feedback,
+.input-group-sm + .form-control-feedback,
+.form-group-sm .form-control + .form-control-feedback {
+ width: 30px;
+ height: 30px;
+ line-height: 30px;
+}
+.has-success .help-block,
+.has-success .control-label,
+.has-success .radio,
+.has-success .checkbox,
+.has-success .radio-inline,
+.has-success .checkbox-inline,
+.has-success.radio label,
+.has-success.checkbox label,
+.has-success.radio-inline label,
+.has-success.checkbox-inline label {
+ color: #3c763d;
+}
+.has-success .form-control {
+ border-color: #3c763d;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-success .form-control:focus {
+ border-color: #2b542c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #67b168;
+}
+.has-success .input-group-addon {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #3c763d;
+}
+.has-success .form-control-feedback {
+ color: #3c763d;
+}
+.has-warning .help-block,
+.has-warning .control-label,
+.has-warning .radio,
+.has-warning .checkbox,
+.has-warning .radio-inline,
+.has-warning .checkbox-inline,
+.has-warning.radio label,
+.has-warning.checkbox label,
+.has-warning.radio-inline label,
+.has-warning.checkbox-inline label {
+ color: #8a6d3b;
+}
+.has-warning .form-control {
+ border-color: #8a6d3b;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-warning .form-control:focus {
+ border-color: #66512c;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #c0a16b;
+}
+.has-warning .input-group-addon {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #8a6d3b;
+}
+.has-warning .form-control-feedback {
+ color: #8a6d3b;
+}
+.has-error .help-block,
+.has-error .control-label,
+.has-error .radio,
+.has-error .checkbox,
+.has-error .radio-inline,
+.has-error .checkbox-inline,
+.has-error.radio label,
+.has-error.checkbox label,
+.has-error.radio-inline label,
+.has-error.checkbox-inline label {
+ color: #a94442;
+}
+.has-error .form-control {
+ border-color: #a94442;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+.has-error .form-control:focus {
+ border-color: #843534;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075), 0 0 6px #ce8483;
+}
+.has-error .input-group-addon {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #a94442;
+}
+.has-error .form-control-feedback {
+ color: #a94442;
+}
+.has-feedback label ~ .form-control-feedback {
+ top: 25px;
+}
+.has-feedback label.sr-only ~ .form-control-feedback {
+ top: 0;
+}
+.help-block {
+ display: block;
+ margin-top: 5px;
+ margin-bottom: 10px;
+ color: #737373;
+}
+@media (min-width: 768px) {
+ .form-inline .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .form-inline .form-control-static {
+ display: inline-block;
+ }
+ .form-inline .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .form-inline .input-group .input-group-addon,
+ .form-inline .input-group .input-group-btn,
+ .form-inline .input-group .form-control {
+ width: auto;
+ }
+ .form-inline .input-group > .form-control {
+ width: 100%;
+ }
+ .form-inline .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio,
+ .form-inline .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .form-inline .radio label,
+ .form-inline .checkbox label {
+ padding-left: 0;
+ }
+ .form-inline .radio input[type="radio"],
+ .form-inline .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .form-inline .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox,
+.form-horizontal .radio-inline,
+.form-horizontal .checkbox-inline {
+ padding-top: 7px;
+ margin-top: 0;
+ margin-bottom: 0;
+}
+.form-horizontal .radio,
+.form-horizontal .checkbox {
+ min-height: 27px;
+}
+.form-horizontal .form-group {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .control-label {
+ padding-top: 7px;
+ margin-bottom: 0;
+ text-align: right;
+ }
+}
+.form-horizontal .has-feedback .form-control-feedback {
+ right: 15px;
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-lg .control-label {
+ padding-top: 11px;
+ font-size: 18px;
+ }
+}
+@media (min-width: 768px) {
+ .form-horizontal .form-group-sm .control-label {
+ padding-top: 6px;
+ font-size: 12px;
+ }
+}
+.btn {
+ display: inline-block;
+ padding: 6px 12px;
+ margin-bottom: 0;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1.42857143;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+.btn:focus,
+.btn:active:focus,
+.btn.active:focus,
+.btn.focus,
+.btn:active.focus,
+.btn.active.focus {
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+.btn:hover,
+.btn:focus,
+.btn.focus {
+ color: #333;
+ text-decoration: none;
+}
+.btn:active,
+.btn.active {
+ background-image: none;
+ outline: 0;
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn.disabled,
+.btn[disabled],
+fieldset[disabled] .btn {
+ cursor: not-allowed;
+ filter: alpha(opacity=65);
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ opacity: .65;
+}
+a.btn.disabled,
+fieldset[disabled] a.btn {
+ pointer-events: none;
+}
+.btn-default {
+ color: #333;
+ background-color: #fff;
+ border-color: #ccc;
+}
+.btn-default:focus,
+.btn-default.focus {
+ color: #333;
+ background-color: #e6e6e6;
+ border-color: #8c8c8c;
+}
+.btn-default:hover {
+ color: #333;
+ background-color: #e6e6e6;
+ border-color: #adadad;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ color: #333;
+ background-color: #e6e6e6;
+ border-color: #adadad;
+}
+.btn-default:active:hover,
+.btn-default.active:hover,
+.open > .dropdown-toggle.btn-default:hover,
+.btn-default:active:focus,
+.btn-default.active:focus,
+.open > .dropdown-toggle.btn-default:focus,
+.btn-default:active.focus,
+.btn-default.active.focus,
+.open > .dropdown-toggle.btn-default.focus {
+ color: #333;
+ background-color: #d4d4d4;
+ border-color: #8c8c8c;
+}
+.btn-default:active,
+.btn-default.active,
+.open > .dropdown-toggle.btn-default {
+ background-image: none;
+}
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus {
+ background-color: #fff;
+ border-color: #ccc;
+}
+.btn-default .badge {
+ color: #fff;
+ background-color: #333;
+}
+.btn-primary {
+ color: #fff;
+ background-color: #337ab7;
+ border-color: #2e6da4;
+}
+.btn-primary:focus,
+.btn-primary.focus {
+ color: #fff;
+ background-color: #286090;
+ border-color: #122b40;
+}
+.btn-primary:hover {
+ color: #fff;
+ background-color: #286090;
+ border-color: #204d74;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ color: #fff;
+ background-color: #286090;
+ border-color: #204d74;
+}
+.btn-primary:active:hover,
+.btn-primary.active:hover,
+.open > .dropdown-toggle.btn-primary:hover,
+.btn-primary:active:focus,
+.btn-primary.active:focus,
+.open > .dropdown-toggle.btn-primary:focus,
+.btn-primary:active.focus,
+.btn-primary.active.focus,
+.open > .dropdown-toggle.btn-primary.focus {
+ color: #fff;
+ background-color: #204d74;
+ border-color: #122b40;
+}
+.btn-primary:active,
+.btn-primary.active,
+.open > .dropdown-toggle.btn-primary {
+ background-image: none;
+}
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus {
+ background-color: #337ab7;
+ border-color: #2e6da4;
+}
+.btn-primary .badge {
+ color: #337ab7;
+ background-color: #fff;
+}
+.btn-success {
+ color: #fff;
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+.btn-success:focus,
+.btn-success.focus {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #255625;
+}
+.btn-success:hover {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #398439;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ color: #fff;
+ background-color: #449d44;
+ border-color: #398439;
+}
+.btn-success:active:hover,
+.btn-success.active:hover,
+.open > .dropdown-toggle.btn-success:hover,
+.btn-success:active:focus,
+.btn-success.active:focus,
+.open > .dropdown-toggle.btn-success:focus,
+.btn-success:active.focus,
+.btn-success.active.focus,
+.open > .dropdown-toggle.btn-success.focus {
+ color: #fff;
+ background-color: #398439;
+ border-color: #255625;
+}
+.btn-success:active,
+.btn-success.active,
+.open > .dropdown-toggle.btn-success {
+ background-image: none;
+}
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus {
+ background-color: #5cb85c;
+ border-color: #4cae4c;
+}
+.btn-success .badge {
+ color: #5cb85c;
+ background-color: #fff;
+}
+.btn-info {
+ color: #fff;
+ background-color: #5bc0de;
+ border-color: #46b8da;
+}
+.btn-info:focus,
+.btn-info.focus {
+ color: #fff;
+ background-color: #31b0d5;
+ border-color: #1b6d85;
+}
+.btn-info:hover {
+ color: #fff;
+ background-color: #31b0d5;
+ border-color: #269abc;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ color: #fff;
+ background-color: #31b0d5;
+ border-color: #269abc;
+}
+.btn-info:active:hover,
+.btn-info.active:hover,
+.open > .dropdown-toggle.btn-info:hover,
+.btn-info:active:focus,
+.btn-info.active:focus,
+.open > .dropdown-toggle.btn-info:focus,
+.btn-info:active.focus,
+.btn-info.active.focus,
+.open > .dropdown-toggle.btn-info.focus {
+ color: #fff;
+ background-color: #269abc;
+ border-color: #1b6d85;
+}
+.btn-info:active,
+.btn-info.active,
+.open > .dropdown-toggle.btn-info {
+ background-image: none;
+}
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus {
+ background-color: #5bc0de;
+ border-color: #46b8da;
+}
+.btn-info .badge {
+ color: #5bc0de;
+ background-color: #fff;
+}
+.btn-warning {
+ color: #fff;
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+.btn-warning:focus,
+.btn-warning.focus {
+ color: #fff;
+ background-color: #ec971f;
+ border-color: #985f0d;
+}
+.btn-warning:hover {
+ color: #fff;
+ background-color: #ec971f;
+ border-color: #d58512;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ color: #fff;
+ background-color: #ec971f;
+ border-color: #d58512;
+}
+.btn-warning:active:hover,
+.btn-warning.active:hover,
+.open > .dropdown-toggle.btn-warning:hover,
+.btn-warning:active:focus,
+.btn-warning.active:focus,
+.open > .dropdown-toggle.btn-warning:focus,
+.btn-warning:active.focus,
+.btn-warning.active.focus,
+.open > .dropdown-toggle.btn-warning.focus {
+ color: #fff;
+ background-color: #d58512;
+ border-color: #985f0d;
+}
+.btn-warning:active,
+.btn-warning.active,
+.open > .dropdown-toggle.btn-warning {
+ background-image: none;
+}
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus {
+ background-color: #f0ad4e;
+ border-color: #eea236;
+}
+.btn-warning .badge {
+ color: #f0ad4e;
+ background-color: #fff;
+}
+.btn-danger {
+ color: #fff;
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+.btn-danger:focus,
+.btn-danger.focus {
+ color: #fff;
+ background-color: #c9302c;
+ border-color: #761c19;
+}
+.btn-danger:hover {
+ color: #fff;
+ background-color: #c9302c;
+ border-color: #ac2925;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ color: #fff;
+ background-color: #c9302c;
+ border-color: #ac2925;
+}
+.btn-danger:active:hover,
+.btn-danger.active:hover,
+.open > .dropdown-toggle.btn-danger:hover,
+.btn-danger:active:focus,
+.btn-danger.active:focus,
+.open > .dropdown-toggle.btn-danger:focus,
+.btn-danger:active.focus,
+.btn-danger.active.focus,
+.open > .dropdown-toggle.btn-danger.focus {
+ color: #fff;
+ background-color: #ac2925;
+ border-color: #761c19;
+}
+.btn-danger:active,
+.btn-danger.active,
+.open > .dropdown-toggle.btn-danger {
+ background-image: none;
+}
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus {
+ background-color: #d9534f;
+ border-color: #d43f3a;
+}
+.btn-danger .badge {
+ color: #d9534f;
+ background-color: #fff;
+}
+.btn-link {
+ font-weight: normal;
+ color: #337ab7;
+ border-radius: 0;
+}
+.btn-link,
+.btn-link:active,
+.btn-link.active,
+.btn-link[disabled],
+fieldset[disabled] .btn-link {
+ background-color: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-link,
+.btn-link:hover,
+.btn-link:focus,
+.btn-link:active {
+ border-color: transparent;
+}
+.btn-link:hover,
+.btn-link:focus {
+ color: #23527c;
+ text-decoration: underline;
+ background-color: transparent;
+}
+.btn-link[disabled]:hover,
+fieldset[disabled] .btn-link:hover,
+.btn-link[disabled]:focus,
+fieldset[disabled] .btn-link:focus {
+ color: #777;
+ text-decoration: none;
+}
+.btn-lg,
+.btn-group-lg > .btn {
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+.btn-sm,
+.btn-group-sm > .btn {
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+.btn-xs,
+.btn-group-xs > .btn {
+ padding: 1px 5px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+.btn-block {
+ display: block;
+ width: 100%;
+}
+.btn-block + .btn-block {
+ margin-top: 5px;
+}
+input[type="submit"].btn-block,
+input[type="reset"].btn-block,
+input[type="button"].btn-block {
+ width: 100%;
+}
+.fade {
+ opacity: 0;
+ -webkit-transition: opacity .15s linear;
+ -o-transition: opacity .15s linear;
+ transition: opacity .15s linear;
+}
+.fade.in {
+ opacity: 1;
+}
+.collapse {
+ display: none;
+}
+.collapse.in {
+ display: block;
+}
+tr.collapse.in {
+ display: table-row;
+}
+tbody.collapse.in {
+ display: table-row-group;
+}
+.collapsing {
+ position: relative;
+ height: 0;
+ overflow: hidden;
+ -webkit-transition-timing-function: ease;
+ -o-transition-timing-function: ease;
+ transition-timing-function: ease;
+ -webkit-transition-duration: .35s;
+ -o-transition-duration: .35s;
+ transition-duration: .35s;
+ -webkit-transition-property: height, visibility;
+ -o-transition-property: height, visibility;
+ transition-property: height, visibility;
+}
+.caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 2px;
+ vertical-align: middle;
+ border-top: 4px dashed;
+ border-top: 4px solid \9;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent;
+}
+.dropup,
+.dropdown {
+ position: relative;
+}
+.dropdown-toggle:focus {
+ outline: 0;
+}
+.dropdown-menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ z-index: 1000;
+ display: none;
+ float: left;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ font-size: 14px;
+ text-align: left;
+ list-style: none;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, .15);
+ border-radius: 4px;
+ -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+ box-shadow: 0 6px 12px rgba(0, 0, 0, .175);
+}
+.dropdown-menu.pull-right {
+ right: 0;
+ left: auto;
+}
+.dropdown-menu .divider {
+ height: 1px;
+ margin: 9px 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+.dropdown-menu > li > a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 1.42857143;
+ color: #333;
+ white-space: nowrap;
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ color: #262626;
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ color: #fff;
+ text-decoration: none;
+ background-color: #337ab7;
+ outline: 0;
+}
+.dropdown-menu > .disabled > a,
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ color: #777;
+}
+.dropdown-menu > .disabled > a:hover,
+.dropdown-menu > .disabled > a:focus {
+ text-decoration: none;
+ cursor: not-allowed;
+ background-color: transparent;
+ background-image: none;
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+}
+.open > .dropdown-menu {
+ display: block;
+}
+.open > a {
+ outline: 0;
+}
+.dropdown-menu-right {
+ right: 0;
+ left: auto;
+}
+.dropdown-menu-left {
+ right: auto;
+ left: 0;
+}
+.dropdown-header {
+ display: block;
+ padding: 3px 20px;
+ font-size: 12px;
+ line-height: 1.42857143;
+ color: #777;
+ white-space: nowrap;
+}
+.dropdown-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 990;
+}
+.pull-right > .dropdown-menu {
+ right: 0;
+ left: auto;
+}
+.dropup .caret,
+.navbar-fixed-bottom .dropdown .caret {
+ content: "";
+ border-top: 0;
+ border-bottom: 4px dashed;
+ border-bottom: 4px solid \9;
+}
+.dropup .dropdown-menu,
+.navbar-fixed-bottom .dropdown .dropdown-menu {
+ top: auto;
+ bottom: 100%;
+ margin-bottom: 2px;
+}
+@media (min-width: 768px) {
+ .navbar-right .dropdown-menu {
+ right: 0;
+ left: auto;
+ }
+ .navbar-right .dropdown-menu-left {
+ right: auto;
+ left: 0;
+ }
+}
+.btn-group,
+.btn-group-vertical {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+}
+.btn-group > .btn,
+.btn-group-vertical > .btn {
+ position: relative;
+ float: left;
+}
+.btn-group > .btn:hover,
+.btn-group-vertical > .btn:hover,
+.btn-group > .btn:focus,
+.btn-group-vertical > .btn:focus,
+.btn-group > .btn:active,
+.btn-group-vertical > .btn:active,
+.btn-group > .btn.active,
+.btn-group-vertical > .btn.active {
+ z-index: 2;
+}
+.btn-group .btn + .btn,
+.btn-group .btn + .btn-group,
+.btn-group .btn-group + .btn,
+.btn-group .btn-group + .btn-group {
+ margin-left: -1px;
+}
+.btn-toolbar {
+ margin-left: -5px;
+}
+.btn-toolbar .btn,
+.btn-toolbar .btn-group,
+.btn-toolbar .input-group {
+ float: left;
+}
+.btn-toolbar > .btn,
+.btn-toolbar > .btn-group,
+.btn-toolbar > .input-group {
+ margin-left: 5px;
+}
+.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
+ border-radius: 0;
+}
+.btn-group > .btn:first-child {
+ margin-left: 0;
+}
+.btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.btn-group > .btn:last-child:not(:first-child),
+.btn-group > .dropdown-toggle:not(:first-child) {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group > .btn-group {
+ float: left;
+}
+.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group .dropdown-toggle:active,
+.btn-group.open .dropdown-toggle {
+ outline: 0;
+}
+.btn-group > .btn + .dropdown-toggle {
+ padding-right: 8px;
+ padding-left: 8px;
+}
+.btn-group > .btn-lg + .dropdown-toggle {
+ padding-right: 12px;
+ padding-left: 12px;
+}
+.btn-group.open .dropdown-toggle {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn-group.open .dropdown-toggle.btn-link {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn .caret {
+ margin-left: 0;
+}
+.btn-lg .caret {
+ border-width: 5px 5px 0;
+ border-bottom-width: 0;
+}
+.dropup .btn-lg .caret {
+ border-width: 0 5px 5px;
+}
+.btn-group-vertical > .btn,
+.btn-group-vertical > .btn-group,
+.btn-group-vertical > .btn-group > .btn {
+ display: block;
+ float: none;
+ width: 100%;
+ max-width: 100%;
+}
+.btn-group-vertical > .btn-group > .btn {
+ float: none;
+}
+.btn-group-vertical > .btn + .btn,
+.btn-group-vertical > .btn + .btn-group,
+.btn-group-vertical > .btn-group + .btn,
+.btn-group-vertical > .btn-group + .btn-group {
+ margin-top: -1px;
+ margin-left: 0;
+}
+.btn-group-vertical > .btn:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn:first-child:not(:last-child) {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn:last-child:not(:first-child) {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {
+ border-radius: 0;
+}
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,
+.btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.btn-group-justified {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+ border-collapse: separate;
+}
+.btn-group-justified > .btn,
+.btn-group-justified > .btn-group {
+ display: table-cell;
+ float: none;
+ width: 1%;
+}
+.btn-group-justified > .btn-group .btn {
+ width: 100%;
+}
+.btn-group-justified > .btn-group .dropdown-menu {
+ left: auto;
+}
+[data-toggle="buttons"] > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
+[data-toggle="buttons"] > .btn input[type="checkbox"],
+[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
+ position: absolute;
+ clip: rect(0, 0, 0, 0);
+ pointer-events: none;
+}
+.input-group {
+ position: relative;
+ display: table;
+ border-collapse: separate;
+}
+.input-group[class*="col-"] {
+ float: none;
+ padding-right: 0;
+ padding-left: 0;
+}
+.input-group .form-control {
+ position: relative;
+ z-index: 2;
+ float: left;
+ width: 100%;
+ margin-bottom: 0;
+}
+.input-group .form-control:focus {
+ z-index: 3;
+}
+.input-group-lg > .form-control,
+.input-group-lg > .input-group-addon,
+.input-group-lg > .input-group-btn > .btn {
+ height: 46px;
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+ border-radius: 6px;
+}
+select.input-group-lg > .form-control,
+select.input-group-lg > .input-group-addon,
+select.input-group-lg > .input-group-btn > .btn {
+ height: 46px;
+ line-height: 46px;
+}
+textarea.input-group-lg > .form-control,
+textarea.input-group-lg > .input-group-addon,
+textarea.input-group-lg > .input-group-btn > .btn,
+select[multiple].input-group-lg > .form-control,
+select[multiple].input-group-lg > .input-group-addon,
+select[multiple].input-group-lg > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-sm > .form-control,
+.input-group-sm > .input-group-addon,
+.input-group-sm > .input-group-btn > .btn {
+ height: 30px;
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+ border-radius: 3px;
+}
+select.input-group-sm > .form-control,
+select.input-group-sm > .input-group-addon,
+select.input-group-sm > .input-group-btn > .btn {
+ height: 30px;
+ line-height: 30px;
+}
+textarea.input-group-sm > .form-control,
+textarea.input-group-sm > .input-group-addon,
+textarea.input-group-sm > .input-group-btn > .btn,
+select[multiple].input-group-sm > .form-control,
+select[multiple].input-group-sm > .input-group-addon,
+select[multiple].input-group-sm > .input-group-btn > .btn {
+ height: auto;
+}
+.input-group-addon,
+.input-group-btn,
+.input-group .form-control {
+ display: table-cell;
+}
+.input-group-addon:not(:first-child):not(:last-child),
+.input-group-btn:not(:first-child):not(:last-child),
+.input-group .form-control:not(:first-child):not(:last-child) {
+ border-radius: 0;
+}
+.input-group-addon,
+.input-group-btn {
+ width: 1%;
+ white-space: nowrap;
+ vertical-align: middle;
+}
+.input-group-addon {
+ padding: 6px 12px;
+ font-size: 14px;
+ font-weight: normal;
+ line-height: 1;
+ color: #555;
+ text-align: center;
+ background-color: #eee;
+ border: 1px solid #ccc;
+ border-radius: 4px;
+}
+.input-group-addon.input-sm {
+ padding: 5px 10px;
+ font-size: 12px;
+ border-radius: 3px;
+}
+.input-group-addon.input-lg {
+ padding: 10px 16px;
+ font-size: 18px;
+ border-radius: 6px;
+}
+.input-group-addon input[type="radio"],
+.input-group-addon input[type="checkbox"] {
+ margin-top: 0;
+}
+.input-group .form-control:first-child,
+.input-group-addon:first-child,
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group > .btn,
+.input-group-btn:first-child > .dropdown-toggle,
+.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),
+.input-group-btn:last-child > .btn-group:not(:last-child) > .btn {
+ border-top-right-radius: 0;
+ border-bottom-right-radius: 0;
+}
+.input-group-addon:first-child {
+ border-right: 0;
+}
+.input-group .form-control:last-child,
+.input-group-addon:last-child,
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group > .btn,
+.input-group-btn:last-child > .dropdown-toggle,
+.input-group-btn:first-child > .btn:not(:first-child),
+.input-group-btn:first-child > .btn-group:not(:first-child) > .btn {
+ border-top-left-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.input-group-addon:last-child {
+ border-left: 0;
+}
+.input-group-btn {
+ position: relative;
+ font-size: 0;
+ white-space: nowrap;
+}
+.input-group-btn > .btn {
+ position: relative;
+}
+.input-group-btn > .btn + .btn {
+ margin-left: -1px;
+}
+.input-group-btn > .btn:hover,
+.input-group-btn > .btn:focus,
+.input-group-btn > .btn:active {
+ z-index: 2;
+}
+.input-group-btn:first-child > .btn,
+.input-group-btn:first-child > .btn-group {
+ margin-right: -1px;
+}
+.input-group-btn:last-child > .btn,
+.input-group-btn:last-child > .btn-group {
+ z-index: 2;
+ margin-left: -1px;
+}
+.nav {
+ padding-left: 0;
+ margin-bottom: 0;
+ list-style: none;
+}
+.nav > li {
+ position: relative;
+ display: block;
+}
+.nav > li > a {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+}
+.nav > li > a:hover,
+.nav > li > a:focus {
+ text-decoration: none;
+ background-color: #eee;
+}
+.nav > li.disabled > a {
+ color: #777;
+}
+.nav > li.disabled > a:hover,
+.nav > li.disabled > a:focus {
+ color: #777;
+ text-decoration: none;
+ cursor: not-allowed;
+ background-color: transparent;
+}
+.nav .open > a,
+.nav .open > a:hover,
+.nav .open > a:focus {
+ background-color: #eee;
+ border-color: #337ab7;
+}
+.nav .nav-divider {
+ height: 1px;
+ margin: 9px 0;
+ overflow: hidden;
+ background-color: #e5e5e5;
+}
+.nav > li > a > img {
+ max-width: none;
+}
+.nav-tabs {
+ border-bottom: 1px solid #ddd;
+}
+.nav-tabs > li {
+ float: left;
+ margin-bottom: -1px;
+}
+.nav-tabs > li > a {
+ margin-right: 2px;
+ line-height: 1.42857143;
+ border: 1px solid transparent;
+ border-radius: 4px 4px 0 0;
+}
+.nav-tabs > li > a:hover {
+ border-color: #eee #eee #ddd;
+}
+.nav-tabs > li.active > a,
+.nav-tabs > li.active > a:hover,
+.nav-tabs > li.active > a:focus {
+ color: #555;
+ cursor: default;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-bottom-color: transparent;
+}
+.nav-tabs.nav-justified {
+ width: 100%;
+ border-bottom: 0;
+}
+.nav-tabs.nav-justified > li {
+ float: none;
+}
+.nav-tabs.nav-justified > li > a {
+ margin-bottom: 5px;
+ text-align: center;
+}
+.nav-tabs.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-tabs.nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs.nav-justified > li > a {
+ margin-right: 0;
+ border-radius: 4px;
+}
+.nav-tabs.nav-justified > .active > a,
+.nav-tabs.nav-justified > .active > a:hover,
+.nav-tabs.nav-justified > .active > a:focus {
+ border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+ .nav-tabs.nav-justified > li > a {
+ border-bottom: 1px solid #ddd;
+ border-radius: 4px 4px 0 0;
+ }
+ .nav-tabs.nav-justified > .active > a,
+ .nav-tabs.nav-justified > .active > a:hover,
+ .nav-tabs.nav-justified > .active > a:focus {
+ border-bottom-color: #fff;
+ }
+}
+.nav-pills > li {
+ float: left;
+}
+.nav-pills > li > a {
+ border-radius: 4px;
+}
+.nav-pills > li + li {
+ margin-left: 2px;
+}
+.nav-pills > li.active > a,
+.nav-pills > li.active > a:hover,
+.nav-pills > li.active > a:focus {
+ color: #fff;
+ background-color: #337ab7;
+}
+.nav-stacked > li {
+ float: none;
+}
+.nav-stacked > li + li {
+ margin-top: 2px;
+ margin-left: 0;
+}
+.nav-justified {
+ width: 100%;
+}
+.nav-justified > li {
+ float: none;
+}
+.nav-justified > li > a {
+ margin-bottom: 5px;
+ text-align: center;
+}
+.nav-justified > .dropdown .dropdown-menu {
+ top: auto;
+ left: auto;
+}
+@media (min-width: 768px) {
+ .nav-justified > li {
+ display: table-cell;
+ width: 1%;
+ }
+ .nav-justified > li > a {
+ margin-bottom: 0;
+ }
+}
+.nav-tabs-justified {
+ border-bottom: 0;
+}
+.nav-tabs-justified > li > a {
+ margin-right: 0;
+ border-radius: 4px;
+}
+.nav-tabs-justified > .active > a,
+.nav-tabs-justified > .active > a:hover,
+.nav-tabs-justified > .active > a:focus {
+ border: 1px solid #ddd;
+}
+@media (min-width: 768px) {
+ .nav-tabs-justified > li > a {
+ border-bottom: 1px solid #ddd;
+ border-radius: 4px 4px 0 0;
+ }
+ .nav-tabs-justified > .active > a,
+ .nav-tabs-justified > .active > a:hover,
+ .nav-tabs-justified > .active > a:focus {
+ border-bottom-color: #fff;
+ }
+}
+.tab-content > .tab-pane {
+ display: none;
+}
+.tab-content > .active {
+ display: block;
+}
+.nav-tabs .dropdown-menu {
+ margin-top: -1px;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.navbar {
+ position: relative;
+ min-height: 50px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+}
+@media (min-width: 768px) {
+ .navbar {
+ border-radius: 4px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-header {
+ float: left;
+ }
+}
+.navbar-collapse {
+ padding-right: 15px;
+ padding-left: 15px;
+ overflow-x: visible;
+ -webkit-overflow-scrolling: touch;
+ border-top: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1);
+}
+.navbar-collapse.in {
+ overflow-y: auto;
+}
+@media (min-width: 768px) {
+ .navbar-collapse {
+ width: auto;
+ border-top: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+ .navbar-collapse.collapse {
+ display: block !important;
+ height: auto !important;
+ padding-bottom: 0;
+ overflow: visible !important;
+ }
+ .navbar-collapse.in {
+ overflow-y: visible;
+ }
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-static-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ padding-right: 0;
+ padding-left: 0;
+ }
+}
+.navbar-fixed-top .navbar-collapse,
+.navbar-fixed-bottom .navbar-collapse {
+ max-height: 340px;
+}
+@media (max-device-width: 480px) and (orientation: landscape) {
+ .navbar-fixed-top .navbar-collapse,
+ .navbar-fixed-bottom .navbar-collapse {
+ max-height: 200px;
+ }
+}
+.container > .navbar-header,
+.container-fluid > .navbar-header,
+.container > .navbar-collapse,
+.container-fluid > .navbar-collapse {
+ margin-right: -15px;
+ margin-left: -15px;
+}
+@media (min-width: 768px) {
+ .container > .navbar-header,
+ .container-fluid > .navbar-header,
+ .container > .navbar-collapse,
+ .container-fluid > .navbar-collapse {
+ margin-right: 0;
+ margin-left: 0;
+ }
+}
+.navbar-static-top {
+ z-index: 1000;
+ border-width: 0 0 1px;
+}
+@media (min-width: 768px) {
+ .navbar-static-top {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ position: fixed;
+ right: 0;
+ left: 0;
+ z-index: 1030;
+}
+@media (min-width: 768px) {
+ .navbar-fixed-top,
+ .navbar-fixed-bottom {
+ border-radius: 0;
+ }
+}
+.navbar-fixed-top {
+ top: 0;
+ border-width: 0 0 1px;
+}
+.navbar-fixed-bottom {
+ bottom: 0;
+ margin-bottom: 0;
+ border-width: 1px 0 0;
+}
+.navbar-brand {
+ float: left;
+ height: 50px;
+ padding: 15px 15px;
+ font-size: 18px;
+ line-height: 20px;
+}
+.navbar-brand:hover,
+.navbar-brand:focus {
+ text-decoration: none;
+}
+.navbar-brand > img {
+ display: block;
+}
+@media (min-width: 768px) {
+ .navbar > .container .navbar-brand,
+ .navbar > .container-fluid .navbar-brand {
+ margin-left: -15px;
+ }
+}
+.navbar-toggle {
+ position: relative;
+ float: right;
+ padding: 9px 10px;
+ margin-top: 8px;
+ margin-right: 15px;
+ margin-bottom: 8px;
+ background-color: transparent;
+ background-image: none;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+.navbar-toggle:focus {
+ outline: 0;
+}
+.navbar-toggle .icon-bar {
+ display: block;
+ width: 22px;
+ height: 2px;
+ border-radius: 1px;
+}
+.navbar-toggle .icon-bar + .icon-bar {
+ margin-top: 4px;
+}
+@media (min-width: 768px) {
+ .navbar-toggle {
+ display: none;
+ }
+}
+.navbar-nav {
+ margin: 7.5px -15px;
+}
+.navbar-nav > li > a {
+ padding-top: 10px;
+ padding-bottom: 10px;
+ line-height: 20px;
+}
+@media (max-width: 767px) {
+ .navbar-nav .open .dropdown-menu {
+ position: static;
+ float: none;
+ width: auto;
+ margin-top: 0;
+ background-color: transparent;
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+ .navbar-nav .open .dropdown-menu > li > a,
+ .navbar-nav .open .dropdown-menu .dropdown-header {
+ padding: 5px 15px 5px 25px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a {
+ line-height: 20px;
+ }
+ .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-nav .open .dropdown-menu > li > a:focus {
+ background-image: none;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-nav {
+ float: left;
+ margin: 0;
+ }
+ .navbar-nav > li {
+ float: left;
+ }
+ .navbar-nav > li > a {
+ padding-top: 15px;
+ padding-bottom: 15px;
+ }
+}
+.navbar-form {
+ padding: 10px 15px;
+ margin-top: 8px;
+ margin-right: -15px;
+ margin-bottom: 8px;
+ margin-left: -15px;
+ border-top: 1px solid transparent;
+ border-bottom: 1px solid transparent;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1);
+}
+@media (min-width: 768px) {
+ .navbar-form .form-group {
+ display: inline-block;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control {
+ display: inline-block;
+ width: auto;
+ vertical-align: middle;
+ }
+ .navbar-form .form-control-static {
+ display: inline-block;
+ }
+ .navbar-form .input-group {
+ display: inline-table;
+ vertical-align: middle;
+ }
+ .navbar-form .input-group .input-group-addon,
+ .navbar-form .input-group .input-group-btn,
+ .navbar-form .input-group .form-control {
+ width: auto;
+ }
+ .navbar-form .input-group > .form-control {
+ width: 100%;
+ }
+ .navbar-form .control-label {
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio,
+ .navbar-form .checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .navbar-form .radio label,
+ .navbar-form .checkbox label {
+ padding-left: 0;
+ }
+ .navbar-form .radio input[type="radio"],
+ .navbar-form .checkbox input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .navbar-form .has-feedback .form-control-feedback {
+ top: 0;
+ }
+}
+@media (max-width: 767px) {
+ .navbar-form .form-group {
+ margin-bottom: 5px;
+ }
+ .navbar-form .form-group:last-child {
+ margin-bottom: 0;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-form {
+ width: auto;
+ padding-top: 0;
+ padding-bottom: 0;
+ margin-right: 0;
+ margin-left: 0;
+ border: 0;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ }
+}
+.navbar-nav > li > .dropdown-menu {
+ margin-top: 0;
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
+ margin-bottom: 0;
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.navbar-btn {
+ margin-top: 8px;
+ margin-bottom: 8px;
+}
+.navbar-btn.btn-sm {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+.navbar-btn.btn-xs {
+ margin-top: 14px;
+ margin-bottom: 14px;
+}
+.navbar-text {
+ margin-top: 15px;
+ margin-bottom: 15px;
+}
+@media (min-width: 768px) {
+ .navbar-text {
+ float: left;
+ margin-right: 15px;
+ margin-left: 15px;
+ }
+}
+@media (min-width: 768px) {
+ .navbar-left {
+ float: left !important;
+ }
+ .navbar-right {
+ float: right !important;
+ margin-right: -15px;
+ }
+ .navbar-right ~ .navbar-right {
+ margin-right: 0;
+ }
+}
+.navbar-default {
+ background-color: #f8f8f8;
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-brand {
+ color: #777;
+}
+.navbar-default .navbar-brand:hover,
+.navbar-default .navbar-brand:focus {
+ color: #5e5e5e;
+ background-color: transparent;
+}
+.navbar-default .navbar-text {
+ color: #777;
+}
+.navbar-default .navbar-nav > li > a {
+ color: #777;
+}
+.navbar-default .navbar-nav > li > a:hover,
+.navbar-default .navbar-nav > li > a:focus {
+ color: #333;
+ background-color: transparent;
+}
+.navbar-default .navbar-nav > .active > a,
+.navbar-default .navbar-nav > .active > a:hover,
+.navbar-default .navbar-nav > .active > a:focus {
+ color: #555;
+ background-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .disabled > a,
+.navbar-default .navbar-nav > .disabled > a:hover,
+.navbar-default .navbar-nav > .disabled > a:focus {
+ color: #ccc;
+ background-color: transparent;
+}
+.navbar-default .navbar-toggle {
+ border-color: #ddd;
+}
+.navbar-default .navbar-toggle:hover,
+.navbar-default .navbar-toggle:focus {
+ background-color: #ddd;
+}
+.navbar-default .navbar-toggle .icon-bar {
+ background-color: #888;
+}
+.navbar-default .navbar-collapse,
+.navbar-default .navbar-form {
+ border-color: #e7e7e7;
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .open > a:hover,
+.navbar-default .navbar-nav > .open > a:focus {
+ color: #555;
+ background-color: #e7e7e7;
+}
+@media (max-width: 767px) {
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a {
+ color: #777;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #333;
+ background-color: transparent;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #555;
+ background-color: #e7e7e7;
+ }
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #ccc;
+ background-color: transparent;
+ }
+}
+.navbar-default .navbar-link {
+ color: #777;
+}
+.navbar-default .navbar-link:hover {
+ color: #333;
+}
+.navbar-default .btn-link {
+ color: #777;
+}
+.navbar-default .btn-link:hover,
+.navbar-default .btn-link:focus {
+ color: #333;
+}
+.navbar-default .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-default .btn-link:hover,
+.navbar-default .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-default .btn-link:focus {
+ color: #ccc;
+}
+.navbar-inverse {
+ background-color: #222;
+ border-color: #080808;
+}
+.navbar-inverse .navbar-brand {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-brand:hover,
+.navbar-inverse .navbar-brand:focus {
+ color: #fff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-text {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-nav > li > a:hover,
+.navbar-inverse .navbar-nav > li > a:focus {
+ color: #fff;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-nav > .active > a,
+.navbar-inverse .navbar-nav > .active > a:hover,
+.navbar-inverse .navbar-nav > .active > a:focus {
+ color: #fff;
+ background-color: #080808;
+}
+.navbar-inverse .navbar-nav > .disabled > a,
+.navbar-inverse .navbar-nav > .disabled > a:hover,
+.navbar-inverse .navbar-nav > .disabled > a:focus {
+ color: #444;
+ background-color: transparent;
+}
+.navbar-inverse .navbar-toggle {
+ border-color: #333;
+}
+.navbar-inverse .navbar-toggle:hover,
+.navbar-inverse .navbar-toggle:focus {
+ background-color: #333;
+}
+.navbar-inverse .navbar-toggle .icon-bar {
+ background-color: #fff;
+}
+.navbar-inverse .navbar-collapse,
+.navbar-inverse .navbar-form {
+ border-color: #101010;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .open > a:hover,
+.navbar-inverse .navbar-nav > .open > a:focus {
+ color: #fff;
+ background-color: #080808;
+}
+@media (max-width: 767px) {
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
+ border-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu .divider {
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
+ color: #9d9d9d;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {
+ color: #fff;
+ background-color: transparent;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #fff;
+ background-color: #080808;
+ }
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover,
+ .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {
+ color: #444;
+ background-color: transparent;
+ }
+}
+.navbar-inverse .navbar-link {
+ color: #9d9d9d;
+}
+.navbar-inverse .navbar-link:hover {
+ color: #fff;
+}
+.navbar-inverse .btn-link {
+ color: #9d9d9d;
+}
+.navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link:focus {
+ color: #fff;
+}
+.navbar-inverse .btn-link[disabled]:hover,
+fieldset[disabled] .navbar-inverse .btn-link:hover,
+.navbar-inverse .btn-link[disabled]:focus,
+fieldset[disabled] .navbar-inverse .btn-link:focus {
+ color: #444;
+}
+.breadcrumb {
+ padding: 8px 15px;
+ margin-bottom: 20px;
+ list-style: none;
+ background-color: #f5f5f5;
+ border-radius: 4px;
+}
+.breadcrumb > li {
+ display: inline-block;
+}
+.breadcrumb > li + li:before {
+ padding: 0 5px;
+ color: #ccc;
+ content: "/\00a0";
+}
+.breadcrumb > .active {
+ color: #777;
+}
+.pagination {
+ display: inline-block;
+ padding-left: 0;
+ margin: 20px 0;
+ border-radius: 4px;
+}
+.pagination > li {
+ display: inline;
+}
+.pagination > li > a,
+.pagination > li > span {
+ position: relative;
+ float: left;
+ padding: 6px 12px;
+ margin-left: -1px;
+ line-height: 1.42857143;
+ color: #337ab7;
+ text-decoration: none;
+ background-color: #fff;
+ border: 1px solid #ddd;
+}
+.pagination > li:first-child > a,
+.pagination > li:first-child > span {
+ margin-left: 0;
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+.pagination > li:last-child > a,
+.pagination > li:last-child > span {
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+.pagination > li > a:hover,
+.pagination > li > span:hover,
+.pagination > li > a:focus,
+.pagination > li > span:focus {
+ z-index: 2;
+ color: #23527c;
+ background-color: #eee;
+ border-color: #ddd;
+}
+.pagination > .active > a,
+.pagination > .active > span,
+.pagination > .active > a:hover,
+.pagination > .active > span:hover,
+.pagination > .active > a:focus,
+.pagination > .active > span:focus {
+ z-index: 3;
+ color: #fff;
+ cursor: default;
+ background-color: #337ab7;
+ border-color: #337ab7;
+}
+.pagination > .disabled > span,
+.pagination > .disabled > span:hover,
+.pagination > .disabled > span:focus,
+.pagination > .disabled > a,
+.pagination > .disabled > a:hover,
+.pagination > .disabled > a:focus {
+ color: #777;
+ cursor: not-allowed;
+ background-color: #fff;
+ border-color: #ddd;
+}
+.pagination-lg > li > a,
+.pagination-lg > li > span {
+ padding: 10px 16px;
+ font-size: 18px;
+ line-height: 1.3333333;
+}
+.pagination-lg > li:first-child > a,
+.pagination-lg > li:first-child > span {
+ border-top-left-radius: 6px;
+ border-bottom-left-radius: 6px;
+}
+.pagination-lg > li:last-child > a,
+.pagination-lg > li:last-child > span {
+ border-top-right-radius: 6px;
+ border-bottom-right-radius: 6px;
+}
+.pagination-sm > li > a,
+.pagination-sm > li > span {
+ padding: 5px 10px;
+ font-size: 12px;
+ line-height: 1.5;
+}
+.pagination-sm > li:first-child > a,
+.pagination-sm > li:first-child > span {
+ border-top-left-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.pagination-sm > li:last-child > a,
+.pagination-sm > li:last-child > span {
+ border-top-right-radius: 3px;
+ border-bottom-right-radius: 3px;
+}
+.pager {
+ padding-left: 0;
+ margin: 20px 0;
+ text-align: center;
+ list-style: none;
+}
+.pager li {
+ display: inline;
+}
+.pager li > a,
+.pager li > span {
+ display: inline-block;
+ padding: 5px 14px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 15px;
+}
+.pager li > a:hover,
+.pager li > a:focus {
+ text-decoration: none;
+ background-color: #eee;
+}
+.pager .next > a,
+.pager .next > span {
+ float: right;
+}
+.pager .previous > a,
+.pager .previous > span {
+ float: left;
+}
+.pager .disabled > a,
+.pager .disabled > a:hover,
+.pager .disabled > a:focus,
+.pager .disabled > span {
+ color: #777;
+ cursor: not-allowed;
+ background-color: #fff;
+}
+.label {
+ display: inline;
+ padding: .2em .6em .3em;
+ font-size: 75%;
+ font-weight: bold;
+ line-height: 1;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: baseline;
+ border-radius: .25em;
+}
+a.label:hover,
+a.label:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.label:empty {
+ display: none;
+}
+.btn .label {
+ position: relative;
+ top: -1px;
+}
+.label-default {
+ background-color: #777;
+}
+.label-default[href]:hover,
+.label-default[href]:focus {
+ background-color: #5e5e5e;
+}
+.label-primary {
+ background-color: #337ab7;
+}
+.label-primary[href]:hover,
+.label-primary[href]:focus {
+ background-color: #286090;
+}
+.label-success {
+ background-color: #5cb85c;
+}
+.label-success[href]:hover,
+.label-success[href]:focus {
+ background-color: #449d44;
+}
+.label-info {
+ background-color: #5bc0de;
+}
+.label-info[href]:hover,
+.label-info[href]:focus {
+ background-color: #31b0d5;
+}
+.label-warning {
+ background-color: #f0ad4e;
+}
+.label-warning[href]:hover,
+.label-warning[href]:focus {
+ background-color: #ec971f;
+}
+.label-danger {
+ background-color: #d9534f;
+}
+.label-danger[href]:hover,
+.label-danger[href]:focus {
+ background-color: #c9302c;
+}
+.badge {
+ display: inline-block;
+ min-width: 10px;
+ padding: 3px 7px;
+ font-size: 12px;
+ font-weight: bold;
+ line-height: 1;
+ color: #fff;
+ text-align: center;
+ white-space: nowrap;
+ vertical-align: middle;
+ background-color: #777;
+ border-radius: 10px;
+}
+.badge:empty {
+ display: none;
+}
+.btn .badge {
+ position: relative;
+ top: -1px;
+}
+.btn-xs .badge,
+.btn-group-xs > .btn .badge {
+ top: 0;
+ padding: 1px 5px;
+}
+a.badge:hover,
+a.badge:focus {
+ color: #fff;
+ text-decoration: none;
+ cursor: pointer;
+}
+.list-group-item.active > .badge,
+.nav-pills > .active > a > .badge {
+ color: #337ab7;
+ background-color: #fff;
+}
+.list-group-item > .badge {
+ float: right;
+}
+.list-group-item > .badge + .badge {
+ margin-right: 5px;
+}
+.nav-pills > li > a > .badge {
+ margin-left: 3px;
+}
+.jumbotron {
+ padding-top: 30px;
+ padding-bottom: 30px;
+ margin-bottom: 30px;
+ color: inherit;
+ background-color: #eee;
+}
+.jumbotron h1,
+.jumbotron .h1 {
+ color: inherit;
+}
+.jumbotron p {
+ margin-bottom: 15px;
+ font-size: 21px;
+ font-weight: 200;
+}
+.jumbotron > hr {
+ border-top-color: #d5d5d5;
+}
+.container .jumbotron,
+.container-fluid .jumbotron {
+ padding-right: 15px;
+ padding-left: 15px;
+ border-radius: 6px;
+}
+.jumbotron .container {
+ max-width: 100%;
+}
+@media screen and (min-width: 768px) {
+ .jumbotron {
+ padding-top: 48px;
+ padding-bottom: 48px;
+ }
+ .container .jumbotron,
+ .container-fluid .jumbotron {
+ padding-right: 60px;
+ padding-left: 60px;
+ }
+ .jumbotron h1,
+ .jumbotron .h1 {
+ font-size: 63px;
+ }
+}
+.thumbnail {
+ display: block;
+ padding: 4px;
+ margin-bottom: 20px;
+ line-height: 1.42857143;
+ background-color: #fff;
+ border: 1px solid #ddd;
+ border-radius: 4px;
+ -webkit-transition: border .2s ease-in-out;
+ -o-transition: border .2s ease-in-out;
+ transition: border .2s ease-in-out;
+}
+.thumbnail > img,
+.thumbnail a > img {
+ margin-right: auto;
+ margin-left: auto;
+}
+a.thumbnail:hover,
+a.thumbnail:focus,
+a.thumbnail.active {
+ border-color: #337ab7;
+}
+.thumbnail .caption {
+ padding: 9px;
+ color: #333;
+}
+.alert {
+ padding: 15px;
+ margin-bottom: 20px;
+ border: 1px solid transparent;
+ border-radius: 4px;
+}
+.alert h4 {
+ margin-top: 0;
+ color: inherit;
+}
+.alert .alert-link {
+ font-weight: bold;
+}
+.alert > p,
+.alert > ul {
+ margin-bottom: 0;
+}
+.alert > p + p {
+ margin-top: 5px;
+}
+.alert-dismissable,
+.alert-dismissible {
+ padding-right: 35px;
+}
+.alert-dismissable .close,
+.alert-dismissible .close {
+ position: relative;
+ top: -2px;
+ right: -21px;
+ color: inherit;
+}
+.alert-success {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+.alert-success hr {
+ border-top-color: #c9e2b3;
+}
+.alert-success .alert-link {
+ color: #2b542c;
+}
+.alert-info {
+ color: #31708f;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+.alert-info hr {
+ border-top-color: #a6e1ec;
+}
+.alert-info .alert-link {
+ color: #245269;
+}
+.alert-warning {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+}
+.alert-warning hr {
+ border-top-color: #f7e1b5;
+}
+.alert-warning .alert-link {
+ color: #66512c;
+}
+.alert-danger {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #ebccd1;
+}
+.alert-danger hr {
+ border-top-color: #e4b9c0;
+}
+.alert-danger .alert-link {
+ color: #843534;
+}
+@-webkit-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+@-o-keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+@keyframes progress-bar-stripes {
+ from {
+ background-position: 40px 0;
+ }
+ to {
+ background-position: 0 0;
+ }
+}
+.progress {
+ height: 20px;
+ margin-bottom: 20px;
+ overflow: hidden;
+ background-color: #f5f5f5;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+ box-shadow: inset 0 1px 2px rgba(0, 0, 0, .1);
+}
+.progress-bar {
+ float: left;
+ width: 0;
+ height: 100%;
+ font-size: 12px;
+ line-height: 20px;
+ color: #fff;
+ text-align: center;
+ background-color: #337ab7;
+ -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+ box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .15);
+ -webkit-transition: width .6s ease;
+ -o-transition: width .6s ease;
+ transition: width .6s ease;
+}
+.progress-striped .progress-bar,
+.progress-bar-striped {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ -webkit-background-size: 40px 40px;
+ background-size: 40px 40px;
+}
+.progress.active .progress-bar,
+.progress-bar.active {
+ -webkit-animation: progress-bar-stripes 2s linear infinite;
+ -o-animation: progress-bar-stripes 2s linear infinite;
+ animation: progress-bar-stripes 2s linear infinite;
+}
+.progress-bar-success {
+ background-color: #5cb85c;
+}
+.progress-striped .progress-bar-success {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-info {
+ background-color: #5bc0de;
+}
+.progress-striped .progress-bar-info {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-warning {
+ background-color: #f0ad4e;
+}
+.progress-striped .progress-bar-warning {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.progress-bar-danger {
+ background-color: #d9534f;
+}
+.progress-striped .progress-bar-danger {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.media {
+ margin-top: 15px;
+}
+.media:first-child {
+ margin-top: 0;
+}
+.media,
+.media-body {
+ overflow: hidden;
+ zoom: 1;
+}
+.media-body {
+ width: 10000px;
+}
+.media-object {
+ display: block;
+}
+.media-object.img-thumbnail {
+ max-width: none;
+}
+.media-right,
+.media > .pull-right {
+ padding-left: 10px;
+}
+.media-left,
+.media > .pull-left {
+ padding-right: 10px;
+}
+.media-left,
+.media-right,
+.media-body {
+ display: table-cell;
+ vertical-align: top;
+}
+.media-middle {
+ vertical-align: middle;
+}
+.media-bottom {
+ vertical-align: bottom;
+}
+.media-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.media-list {
+ padding-left: 0;
+ list-style: none;
+}
+.list-group {
+ padding-left: 0;
+ margin-bottom: 20px;
+}
+.list-group-item {
+ position: relative;
+ display: block;
+ padding: 10px 15px;
+ margin-bottom: -1px;
+ background-color: #fff;
+ border: 1px solid #ddd;
+}
+.list-group-item:first-child {
+ border-top-left-radius: 4px;
+ border-top-right-radius: 4px;
+}
+.list-group-item:last-child {
+ margin-bottom: 0;
+ border-bottom-right-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+a.list-group-item,
+button.list-group-item {
+ color: #555;
+}
+a.list-group-item .list-group-item-heading,
+button.list-group-item .list-group-item-heading {
+ color: #333;
+}
+a.list-group-item:hover,
+button.list-group-item:hover,
+a.list-group-item:focus,
+button.list-group-item:focus {
+ color: #555;
+ text-decoration: none;
+ background-color: #f5f5f5;
+}
+button.list-group-item {
+ width: 100%;
+ text-align: left;
+}
+.list-group-item.disabled,
+.list-group-item.disabled:hover,
+.list-group-item.disabled:focus {
+ color: #777;
+ cursor: not-allowed;
+ background-color: #eee;
+}
+.list-group-item.disabled .list-group-item-heading,
+.list-group-item.disabled:hover .list-group-item-heading,
+.list-group-item.disabled:focus .list-group-item-heading {
+ color: inherit;
+}
+.list-group-item.disabled .list-group-item-text,
+.list-group-item.disabled:hover .list-group-item-text,
+.list-group-item.disabled:focus .list-group-item-text {
+ color: #777;
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+ z-index: 2;
+ color: #fff;
+ background-color: #337ab7;
+ border-color: #337ab7;
+}
+.list-group-item.active .list-group-item-heading,
+.list-group-item.active:hover .list-group-item-heading,
+.list-group-item.active:focus .list-group-item-heading,
+.list-group-item.active .list-group-item-heading > small,
+.list-group-item.active:hover .list-group-item-heading > small,
+.list-group-item.active:focus .list-group-item-heading > small,
+.list-group-item.active .list-group-item-heading > .small,
+.list-group-item.active:hover .list-group-item-heading > .small,
+.list-group-item.active:focus .list-group-item-heading > .small {
+ color: inherit;
+}
+.list-group-item.active .list-group-item-text,
+.list-group-item.active:hover .list-group-item-text,
+.list-group-item.active:focus .list-group-item-text {
+ color: #c7ddef;
+}
+.list-group-item-success {
+ color: #3c763d;
+ background-color: #dff0d8;
+}
+a.list-group-item-success,
+button.list-group-item-success {
+ color: #3c763d;
+}
+a.list-group-item-success .list-group-item-heading,
+button.list-group-item-success .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-success:hover,
+button.list-group-item-success:hover,
+a.list-group-item-success:focus,
+button.list-group-item-success:focus {
+ color: #3c763d;
+ background-color: #d0e9c6;
+}
+a.list-group-item-success.active,
+button.list-group-item-success.active,
+a.list-group-item-success.active:hover,
+button.list-group-item-success.active:hover,
+a.list-group-item-success.active:focus,
+button.list-group-item-success.active:focus {
+ color: #fff;
+ background-color: #3c763d;
+ border-color: #3c763d;
+}
+.list-group-item-info {
+ color: #31708f;
+ background-color: #d9edf7;
+}
+a.list-group-item-info,
+button.list-group-item-info {
+ color: #31708f;
+}
+a.list-group-item-info .list-group-item-heading,
+button.list-group-item-info .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-info:hover,
+button.list-group-item-info:hover,
+a.list-group-item-info:focus,
+button.list-group-item-info:focus {
+ color: #31708f;
+ background-color: #c4e3f3;
+}
+a.list-group-item-info.active,
+button.list-group-item-info.active,
+a.list-group-item-info.active:hover,
+button.list-group-item-info.active:hover,
+a.list-group-item-info.active:focus,
+button.list-group-item-info.active:focus {
+ color: #fff;
+ background-color: #31708f;
+ border-color: #31708f;
+}
+.list-group-item-warning {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+}
+a.list-group-item-warning,
+button.list-group-item-warning {
+ color: #8a6d3b;
+}
+a.list-group-item-warning .list-group-item-heading,
+button.list-group-item-warning .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-warning:hover,
+button.list-group-item-warning:hover,
+a.list-group-item-warning:focus,
+button.list-group-item-warning:focus {
+ color: #8a6d3b;
+ background-color: #faf2cc;
+}
+a.list-group-item-warning.active,
+button.list-group-item-warning.active,
+a.list-group-item-warning.active:hover,
+button.list-group-item-warning.active:hover,
+a.list-group-item-warning.active:focus,
+button.list-group-item-warning.active:focus {
+ color: #fff;
+ background-color: #8a6d3b;
+ border-color: #8a6d3b;
+}
+.list-group-item-danger {
+ color: #a94442;
+ background-color: #f2dede;
+}
+a.list-group-item-danger,
+button.list-group-item-danger {
+ color: #a94442;
+}
+a.list-group-item-danger .list-group-item-heading,
+button.list-group-item-danger .list-group-item-heading {
+ color: inherit;
+}
+a.list-group-item-danger:hover,
+button.list-group-item-danger:hover,
+a.list-group-item-danger:focus,
+button.list-group-item-danger:focus {
+ color: #a94442;
+ background-color: #ebcccc;
+}
+a.list-group-item-danger.active,
+button.list-group-item-danger.active,
+a.list-group-item-danger.active:hover,
+button.list-group-item-danger.active:hover,
+a.list-group-item-danger.active:focus,
+button.list-group-item-danger.active:focus {
+ color: #fff;
+ background-color: #a94442;
+ border-color: #a94442;
+}
+.list-group-item-heading {
+ margin-top: 0;
+ margin-bottom: 5px;
+}
+.list-group-item-text {
+ margin-bottom: 0;
+ line-height: 1.3;
+}
+.panel {
+ margin-bottom: 20px;
+ background-color: #fff;
+ border: 1px solid transparent;
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+ box-shadow: 0 1px 1px rgba(0, 0, 0, .05);
+}
+.panel-body {
+ padding: 15px;
+}
+.panel-heading {
+ padding: 10px 15px;
+ border-bottom: 1px solid transparent;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel-heading > .dropdown .dropdown-toggle {
+ color: inherit;
+}
+.panel-title {
+ margin-top: 0;
+ margin-bottom: 0;
+ font-size: 16px;
+ color: inherit;
+}
+.panel-title > a,
+.panel-title > small,
+.panel-title > .small,
+.panel-title > small > a,
+.panel-title > .small > a {
+ color: inherit;
+}
+.panel-footer {
+ padding: 10px 15px;
+ background-color: #f5f5f5;
+ border-top: 1px solid #ddd;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.panel > .list-group,
+.panel > .panel-collapse > .list-group {
+ margin-bottom: 0;
+}
+.panel > .list-group .list-group-item,
+.panel > .panel-collapse > .list-group .list-group-item {
+ border-width: 1px 0;
+ border-radius: 0;
+}
+.panel > .list-group:first-child .list-group-item:first-child,
+.panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {
+ border-top: 0;
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel > .list-group:last-child .list-group-item:last-child,
+.panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {
+ border-bottom: 0;
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+}
+.panel-heading + .list-group .list-group-item:first-child {
+ border-top-width: 0;
+}
+.list-group + .panel-footer {
+ border-top-width: 0;
+}
+.panel > .table,
+.panel > .table-responsive > .table,
+.panel > .panel-collapse > .table {
+ margin-bottom: 0;
+}
+.panel > .table caption,
+.panel > .table-responsive > .table caption,
+.panel > .panel-collapse > .table caption {
+ padding-right: 15px;
+ padding-left: 15px;
+}
+.panel > .table:first-child,
+.panel > .table-responsive:first-child > .table:first-child {
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {
+ border-top-left-radius: 3px;
+ border-top-right-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {
+ border-top-left-radius: 3px;
+}
+.panel > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,
+.panel > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,
+.panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,
+.panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {
+ border-top-right-radius: 3px;
+}
+.panel > .table:last-child,
+.panel > .table-responsive:last-child > .table:last-child {
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {
+ border-bottom-right-radius: 3px;
+ border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {
+ border-bottom-left-radius: 3px;
+}
+.panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,
+.panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,
+.panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,
+.panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {
+ border-bottom-right-radius: 3px;
+}
+.panel > .panel-body + .table,
+.panel > .panel-body + .table-responsive,
+.panel > .table + .panel-body,
+.panel > .table-responsive + .panel-body {
+ border-top: 1px solid #ddd;
+}
+.panel > .table > tbody:first-child > tr:first-child th,
+.panel > .table > tbody:first-child > tr:first-child td {
+ border-top: 0;
+}
+.panel > .table-bordered,
+.panel > .table-responsive > .table-bordered {
+ border: 0;
+}
+.panel > .table-bordered > thead > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:first-child,
+.panel > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,
+.panel > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,
+.panel > .table-bordered > thead > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:first-child,
+.panel > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,
+.panel > .table-bordered > tfoot > tr > td:first-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {
+ border-left: 0;
+}
+.panel > .table-bordered > thead > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > th:last-child,
+.panel > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
+.panel > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
+.panel > .table-bordered > thead > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
+.panel > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
+.panel > .table-bordered > tfoot > tr > td:last-child,
+.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {
+ border-right: 0;
+}
+.panel > .table-bordered > thead > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > td,
+.panel > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,
+.panel > .table-bordered > thead > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > thead > tr:first-child > th,
+.panel > .table-bordered > tbody > tr:first-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {
+ border-bottom: 0;
+}
+.panel > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
+.panel > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
+.panel > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
+.panel > .table-bordered > tfoot > tr:last-child > th,
+.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
+ border-bottom: 0;
+}
+.panel > .table-responsive {
+ margin-bottom: 0;
+ border: 0;
+}
+.panel-group {
+ margin-bottom: 20px;
+}
+.panel-group .panel {
+ margin-bottom: 0;
+ border-radius: 4px;
+}
+.panel-group .panel + .panel {
+ margin-top: 5px;
+}
+.panel-group .panel-heading {
+ border-bottom: 0;
+}
+.panel-group .panel-heading + .panel-collapse > .panel-body,
+.panel-group .panel-heading + .panel-collapse > .list-group {
+ border-top: 1px solid #ddd;
+}
+.panel-group .panel-footer {
+ border-top: 0;
+}
+.panel-group .panel-footer + .panel-collapse .panel-body {
+ border-bottom: 1px solid #ddd;
+}
+.panel-default {
+ border-color: #ddd;
+}
+.panel-default > .panel-heading {
+ color: #333;
+ background-color: #f5f5f5;
+ border-color: #ddd;
+}
+.panel-default > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #ddd;
+}
+.panel-default > .panel-heading .badge {
+ color: #f5f5f5;
+ background-color: #333;
+}
+.panel-default > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #ddd;
+}
+.panel-primary {
+ border-color: #337ab7;
+}
+.panel-primary > .panel-heading {
+ color: #fff;
+ background-color: #337ab7;
+ border-color: #337ab7;
+}
+.panel-primary > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #337ab7;
+}
+.panel-primary > .panel-heading .badge {
+ color: #337ab7;
+ background-color: #fff;
+}
+.panel-primary > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #337ab7;
+}
+.panel-success {
+ border-color: #d6e9c6;
+}
+.panel-success > .panel-heading {
+ color: #3c763d;
+ background-color: #dff0d8;
+ border-color: #d6e9c6;
+}
+.panel-success > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #d6e9c6;
+}
+.panel-success > .panel-heading .badge {
+ color: #dff0d8;
+ background-color: #3c763d;
+}
+.panel-success > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #d6e9c6;
+}
+.panel-info {
+ border-color: #bce8f1;
+}
+.panel-info > .panel-heading {
+ color: #31708f;
+ background-color: #d9edf7;
+ border-color: #bce8f1;
+}
+.panel-info > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #bce8f1;
+}
+.panel-info > .panel-heading .badge {
+ color: #d9edf7;
+ background-color: #31708f;
+}
+.panel-info > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #bce8f1;
+}
+.panel-warning {
+ border-color: #faebcc;
+}
+.panel-warning > .panel-heading {
+ color: #8a6d3b;
+ background-color: #fcf8e3;
+ border-color: #faebcc;
+}
+.panel-warning > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #faebcc;
+}
+.panel-warning > .panel-heading .badge {
+ color: #fcf8e3;
+ background-color: #8a6d3b;
+}
+.panel-warning > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #faebcc;
+}
+.panel-danger {
+ border-color: #ebccd1;
+}
+.panel-danger > .panel-heading {
+ color: #a94442;
+ background-color: #f2dede;
+ border-color: #ebccd1;
+}
+.panel-danger > .panel-heading + .panel-collapse > .panel-body {
+ border-top-color: #ebccd1;
+}
+.panel-danger > .panel-heading .badge {
+ color: #f2dede;
+ background-color: #a94442;
+}
+.panel-danger > .panel-footer + .panel-collapse > .panel-body {
+ border-bottom-color: #ebccd1;
+}
+.embed-responsive {
+ position: relative;
+ display: block;
+ height: 0;
+ padding: 0;
+ overflow: hidden;
+}
+.embed-responsive .embed-responsive-item,
+.embed-responsive iframe,
+.embed-responsive embed,
+.embed-responsive object,
+.embed-responsive video {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ border: 0;
+}
+.embed-responsive-16by9 {
+ padding-bottom: 56.25%;
+}
+.embed-responsive-4by3 {
+ padding-bottom: 75%;
+}
+.well {
+ min-height: 20px;
+ padding: 19px;
+ margin-bottom: 20px;
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .05);
+}
+.well blockquote {
+ border-color: #ddd;
+ border-color: rgba(0, 0, 0, .15);
+}
+.well-lg {
+ padding: 24px;
+ border-radius: 6px;
+}
+.well-sm {
+ padding: 9px;
+ border-radius: 3px;
+}
+.close {
+ float: right;
+ font-size: 21px;
+ font-weight: bold;
+ line-height: 1;
+ color: #000;
+ text-shadow: 0 1px 0 #fff;
+ filter: alpha(opacity=20);
+ opacity: .2;
+}
+.close:hover,
+.close:focus {
+ color: #000;
+ text-decoration: none;
+ cursor: pointer;
+ filter: alpha(opacity=50);
+ opacity: .5;
+}
+button.close {
+ -webkit-appearance: none;
+ padding: 0;
+ cursor: pointer;
+ background: transparent;
+ border: 0;
+}
+.modal-open {
+ overflow: hidden;
+}
+.modal {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1050;
+ display: none;
+ overflow: hidden;
+ -webkit-overflow-scrolling: touch;
+ outline: 0;
+}
+.modal.fade .modal-dialog {
+ -webkit-transition: -webkit-transform .3s ease-out;
+ -o-transition: -o-transform .3s ease-out;
+ transition: transform .3s ease-out;
+ -webkit-transform: translate(0, -25%);
+ -ms-transform: translate(0, -25%);
+ -o-transform: translate(0, -25%);
+ transform: translate(0, -25%);
+}
+.modal.in .modal-dialog {
+ -webkit-transform: translate(0, 0);
+ -ms-transform: translate(0, 0);
+ -o-transform: translate(0, 0);
+ transform: translate(0, 0);
+}
+.modal-open .modal {
+ overflow-x: hidden;
+ overflow-y: auto;
+}
+.modal-dialog {
+ position: relative;
+ width: auto;
+ margin: 10px;
+}
+.modal-content {
+ position: relative;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid #999;
+ border: 1px solid rgba(0, 0, 0, .2);
+ border-radius: 6px;
+ outline: 0;
+ -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+ box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
+}
+.modal-backdrop {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1040;
+ background-color: #000;
+}
+.modal-backdrop.fade {
+ filter: alpha(opacity=0);
+ opacity: 0;
+}
+.modal-backdrop.in {
+ filter: alpha(opacity=50);
+ opacity: .5;
+}
+.modal-header {
+ padding: 15px;
+ border-bottom: 1px solid #e5e5e5;
+}
+.modal-header .close {
+ margin-top: -2px;
+}
+.modal-title {
+ margin: 0;
+ line-height: 1.42857143;
+}
+.modal-body {
+ position: relative;
+ padding: 15px;
+}
+.modal-footer {
+ padding: 15px;
+ text-align: right;
+ border-top: 1px solid #e5e5e5;
+}
+.modal-footer .btn + .btn {
+ margin-bottom: 0;
+ margin-left: 5px;
+}
+.modal-footer .btn-group .btn + .btn {
+ margin-left: -1px;
+}
+.modal-footer .btn-block + .btn-block {
+ margin-left: 0;
+}
+.modal-scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll;
+}
+@media (min-width: 768px) {
+ .modal-dialog {
+ width: 600px;
+ margin: 30px auto;
+ }
+ .modal-content {
+ -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
+ }
+ .modal-sm {
+ width: 300px;
+ }
+}
+@media (min-width: 992px) {
+ .modal-lg {
+ width: 900px;
+ }
+}
+.tooltip {
+ position: absolute;
+ z-index: 1070;
+ display: block;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 12px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.42857143;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+ white-space: normal;
+ filter: alpha(opacity=0);
+ opacity: 0;
+
+ line-break: auto;
+}
+.tooltip.in {
+ filter: alpha(opacity=90);
+ opacity: .9;
+}
+.tooltip.top {
+ padding: 5px 0;
+ margin-top: -3px;
+}
+.tooltip.right {
+ padding: 0 5px;
+ margin-left: 3px;
+}
+.tooltip.bottom {
+ padding: 5px 0;
+ margin-top: 3px;
+}
+.tooltip.left {
+ padding: 0 5px;
+ margin-left: -3px;
+}
+.tooltip-inner {
+ max-width: 200px;
+ padding: 3px 8px;
+ color: #fff;
+ text-align: center;
+ background-color: #000;
+ border-radius: 4px;
+}
+.tooltip-arrow {
+ position: absolute;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.tooltip.top .tooltip-arrow {
+ bottom: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000;
+}
+.tooltip.top-left .tooltip-arrow {
+ right: 5px;
+ bottom: 0;
+ margin-bottom: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000;
+}
+.tooltip.top-right .tooltip-arrow {
+ bottom: 0;
+ left: 5px;
+ margin-bottom: -5px;
+ border-width: 5px 5px 0;
+ border-top-color: #000;
+}
+.tooltip.right .tooltip-arrow {
+ top: 50%;
+ left: 0;
+ margin-top: -5px;
+ border-width: 5px 5px 5px 0;
+ border-right-color: #000;
+}
+.tooltip.left .tooltip-arrow {
+ top: 50%;
+ right: 0;
+ margin-top: -5px;
+ border-width: 5px 0 5px 5px;
+ border-left-color: #000;
+}
+.tooltip.bottom .tooltip-arrow {
+ top: 0;
+ left: 50%;
+ margin-left: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000;
+}
+.tooltip.bottom-left .tooltip-arrow {
+ top: 0;
+ right: 5px;
+ margin-top: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000;
+}
+.tooltip.bottom-right .tooltip-arrow {
+ top: 0;
+ left: 5px;
+ margin-top: -5px;
+ border-width: 0 5px 5px;
+ border-bottom-color: #000;
+}
+.popover {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: 1060;
+ display: none;
+ max-width: 276px;
+ padding: 1px;
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: 14px;
+ font-style: normal;
+ font-weight: normal;
+ line-height: 1.42857143;
+ text-align: left;
+ text-align: start;
+ text-decoration: none;
+ text-shadow: none;
+ text-transform: none;
+ letter-spacing: normal;
+ word-break: normal;
+ word-spacing: normal;
+ word-wrap: normal;
+ white-space: normal;
+ background-color: #fff;
+ -webkit-background-clip: padding-box;
+ background-clip: padding-box;
+ border: 1px solid #ccc;
+ border: 1px solid rgba(0, 0, 0, .2);
+ border-radius: 6px;
+ -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+ box-shadow: 0 5px 10px rgba(0, 0, 0, .2);
+
+ line-break: auto;
+}
+.popover.top {
+ margin-top: -10px;
+}
+.popover.right {
+ margin-left: 10px;
+}
+.popover.bottom {
+ margin-top: 10px;
+}
+.popover.left {
+ margin-left: -10px;
+}
+.popover-title {
+ padding: 8px 14px;
+ margin: 0;
+ font-size: 14px;
+ background-color: #f7f7f7;
+ border-bottom: 1px solid #ebebeb;
+ border-radius: 5px 5px 0 0;
+}
+.popover-content {
+ padding: 9px 14px;
+}
+.popover > .arrow,
+.popover > .arrow:after {
+ position: absolute;
+ display: block;
+ width: 0;
+ height: 0;
+ border-color: transparent;
+ border-style: solid;
+}
+.popover > .arrow {
+ border-width: 11px;
+}
+.popover > .arrow:after {
+ content: "";
+ border-width: 10px;
+}
+.popover.top > .arrow {
+ bottom: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-top-color: #999;
+ border-top-color: rgba(0, 0, 0, .25);
+ border-bottom-width: 0;
+}
+.popover.top > .arrow:after {
+ bottom: 1px;
+ margin-left: -10px;
+ content: " ";
+ border-top-color: #fff;
+ border-bottom-width: 0;
+}
+.popover.right > .arrow {
+ top: 50%;
+ left: -11px;
+ margin-top: -11px;
+ border-right-color: #999;
+ border-right-color: rgba(0, 0, 0, .25);
+ border-left-width: 0;
+}
+.popover.right > .arrow:after {
+ bottom: -10px;
+ left: 1px;
+ content: " ";
+ border-right-color: #fff;
+ border-left-width: 0;
+}
+.popover.bottom > .arrow {
+ top: -11px;
+ left: 50%;
+ margin-left: -11px;
+ border-top-width: 0;
+ border-bottom-color: #999;
+ border-bottom-color: rgba(0, 0, 0, .25);
+}
+.popover.bottom > .arrow:after {
+ top: 1px;
+ margin-left: -10px;
+ content: " ";
+ border-top-width: 0;
+ border-bottom-color: #fff;
+}
+.popover.left > .arrow {
+ top: 50%;
+ right: -11px;
+ margin-top: -11px;
+ border-right-width: 0;
+ border-left-color: #999;
+ border-left-color: rgba(0, 0, 0, .25);
+}
+.popover.left > .arrow:after {
+ right: 1px;
+ bottom: -10px;
+ content: " ";
+ border-right-width: 0;
+ border-left-color: #fff;
+}
+.carousel {
+ position: relative;
+}
+.carousel-inner {
+ position: relative;
+ width: 100%;
+ overflow: hidden;
+}
+.carousel-inner > .item {
+ position: relative;
+ display: none;
+ -webkit-transition: .6s ease-in-out left;
+ -o-transition: .6s ease-in-out left;
+ transition: .6s ease-in-out left;
+}
+.carousel-inner > .item > img,
+.carousel-inner > .item > a > img {
+ line-height: 1;
+}
+@media all and (transform-3d), (-webkit-transform-3d) {
+ .carousel-inner > .item {
+ -webkit-transition: -webkit-transform .6s ease-in-out;
+ -o-transition: -o-transform .6s ease-in-out;
+ transition: transform .6s ease-in-out;
+
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-perspective: 1000px;
+ perspective: 1000px;
+ }
+ .carousel-inner > .item.next,
+ .carousel-inner > .item.active.right {
+ left: 0;
+ -webkit-transform: translate3d(100%, 0, 0);
+ transform: translate3d(100%, 0, 0);
+ }
+ .carousel-inner > .item.prev,
+ .carousel-inner > .item.active.left {
+ left: 0;
+ -webkit-transform: translate3d(-100%, 0, 0);
+ transform: translate3d(-100%, 0, 0);
+ }
+ .carousel-inner > .item.next.left,
+ .carousel-inner > .item.prev.right,
+ .carousel-inner > .item.active {
+ left: 0;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+.carousel-inner > .active,
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ display: block;
+}
+.carousel-inner > .active {
+ left: 0;
+}
+.carousel-inner > .next,
+.carousel-inner > .prev {
+ position: absolute;
+ top: 0;
+ width: 100%;
+}
+.carousel-inner > .next {
+ left: 100%;
+}
+.carousel-inner > .prev {
+ left: -100%;
+}
+.carousel-inner > .next.left,
+.carousel-inner > .prev.right {
+ left: 0;
+}
+.carousel-inner > .active.left {
+ left: -100%;
+}
+.carousel-inner > .active.right {
+ left: 100%;
+}
+.carousel-control {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ width: 15%;
+ font-size: 20px;
+ color: #fff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+ background-color: rgba(0, 0, 0, 0);
+ filter: alpha(opacity=50);
+ opacity: .5;
+}
+.carousel-control.left {
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
+ background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
+ background-repeat: repeat-x;
+}
+.carousel-control.right {
+ right: 0;
+ left: auto;
+ background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+ background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+ background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
+ background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
+ background-repeat: repeat-x;
+}
+.carousel-control:hover,
+.carousel-control:focus {
+ color: #fff;
+ text-decoration: none;
+ filter: alpha(opacity=90);
+ outline: 0;
+ opacity: .9;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-left,
+.carousel-control .glyphicon-chevron-right {
+ position: absolute;
+ top: 50%;
+ z-index: 5;
+ display: inline-block;
+ margin-top: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .glyphicon-chevron-left {
+ left: 50%;
+ margin-left: -10px;
+}
+.carousel-control .icon-next,
+.carousel-control .glyphicon-chevron-right {
+ right: 50%;
+ margin-right: -10px;
+}
+.carousel-control .icon-prev,
+.carousel-control .icon-next {
+ width: 20px;
+ height: 20px;
+ font-family: serif;
+ line-height: 1;
+}
+.carousel-control .icon-prev:before {
+ content: '\2039';
+}
+.carousel-control .icon-next:before {
+ content: '\203a';
+}
+.carousel-indicators {
+ position: absolute;
+ bottom: 10px;
+ left: 50%;
+ z-index: 15;
+ width: 60%;
+ padding-left: 0;
+ margin-left: -30%;
+ text-align: center;
+ list-style: none;
+}
+.carousel-indicators li {
+ display: inline-block;
+ width: 10px;
+ height: 10px;
+ margin: 1px;
+ text-indent: -999px;
+ cursor: pointer;
+ background-color: #000 \9;
+ background-color: rgba(0, 0, 0, 0);
+ border: 1px solid #fff;
+ border-radius: 10px;
+}
+.carousel-indicators .active {
+ width: 12px;
+ height: 12px;
+ margin: 0;
+ background-color: #fff;
+}
+.carousel-caption {
+ position: absolute;
+ right: 15%;
+ bottom: 20px;
+ left: 15%;
+ z-index: 10;
+ padding-top: 20px;
+ padding-bottom: 20px;
+ color: #fff;
+ text-align: center;
+ text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
+}
+.carousel-caption .btn {
+ text-shadow: none;
+}
+@media screen and (min-width: 768px) {
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-prev,
+ .carousel-control .icon-next {
+ width: 30px;
+ height: 30px;
+ margin-top: -10px;
+ font-size: 30px;
+ }
+ .carousel-control .glyphicon-chevron-left,
+ .carousel-control .icon-prev {
+ margin-left: -10px;
+ }
+ .carousel-control .glyphicon-chevron-right,
+ .carousel-control .icon-next {
+ margin-right: -10px;
+ }
+ .carousel-caption {
+ right: 20%;
+ left: 20%;
+ padding-bottom: 30px;
+ }
+ .carousel-indicators {
+ bottom: 20px;
+ }
+}
+.clearfix:before,
+.clearfix:after,
+.dl-horizontal dd:before,
+.dl-horizontal dd:after,
+.container:before,
+.container:after,
+.container-fluid:before,
+.container-fluid:after,
+.row:before,
+.row:after,
+.form-horizontal .form-group:before,
+.form-horizontal .form-group:after,
+.btn-toolbar:before,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:before,
+.btn-group-vertical > .btn-group:after,
+.nav:before,
+.nav:after,
+.navbar:before,
+.navbar:after,
+.navbar-header:before,
+.navbar-header:after,
+.navbar-collapse:before,
+.navbar-collapse:after,
+.pager:before,
+.pager:after,
+.panel-body:before,
+.panel-body:after,
+.modal-header:before,
+.modal-header:after,
+.modal-footer:before,
+.modal-footer:after {
+ display: table;
+ content: " ";
+}
+.clearfix:after,
+.dl-horizontal dd:after,
+.container:after,
+.container-fluid:after,
+.row:after,
+.form-horizontal .form-group:after,
+.btn-toolbar:after,
+.btn-group-vertical > .btn-group:after,
+.nav:after,
+.navbar:after,
+.navbar-header:after,
+.navbar-collapse:after,
+.pager:after,
+.panel-body:after,
+.modal-header:after,
+.modal-footer:after {
+ clear: both;
+}
+.center-block {
+ display: block;
+ margin-right: auto;
+ margin-left: auto;
+}
+.pull-right {
+ float: right !important;
+}
+.pull-left {
+ float: left !important;
+}
+.hide {
+ display: none !important;
+}
+.show {
+ display: block !important;
+}
+.invisible {
+ visibility: hidden;
+}
+.text-hide {
+ font: 0/0 a;
+ color: transparent;
+ text-shadow: none;
+ background-color: transparent;
+ border: 0;
+}
+.hidden {
+ display: none !important;
+}
+.affix {
+ position: fixed;
+}
+@-ms-viewport {
+ width: device-width;
+}
+.visible-xs,
+.visible-sm,
+.visible-md,
+.visible-lg {
+ display: none !important;
+}
+.visible-xs-block,
+.visible-xs-inline,
+.visible-xs-inline-block,
+.visible-sm-block,
+.visible-sm-inline,
+.visible-sm-inline-block,
+.visible-md-block,
+.visible-md-inline,
+.visible-md-inline-block,
+.visible-lg-block,
+.visible-lg-inline,
+.visible-lg-inline-block {
+ display: none !important;
+}
+@media (max-width: 767px) {
+ .visible-xs {
+ display: block !important;
+ }
+ table.visible-xs {
+ display: table !important;
+ }
+ tr.visible-xs {
+ display: table-row !important;
+ }
+ th.visible-xs,
+ td.visible-xs {
+ display: table-cell !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-block {
+ display: block !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline {
+ display: inline !important;
+ }
+}
+@media (max-width: 767px) {
+ .visible-xs-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm {
+ display: block !important;
+ }
+ table.visible-sm {
+ display: table !important;
+ }
+ tr.visible-sm {
+ display: table-row !important;
+ }
+ th.visible-sm,
+ td.visible-sm {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-block {
+ display: block !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .visible-sm-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md {
+ display: block !important;
+ }
+ table.visible-md {
+ display: table !important;
+ }
+ tr.visible-md {
+ display: table-row !important;
+ }
+ th.visible-md,
+ td.visible-md {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-block {
+ display: block !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .visible-md-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg {
+ display: block !important;
+ }
+ table.visible-lg {
+ display: table !important;
+ }
+ tr.visible-lg {
+ display: table-row !important;
+ }
+ th.visible-lg,
+ td.visible-lg {
+ display: table-cell !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-block {
+ display: block !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline {
+ display: inline !important;
+ }
+}
+@media (min-width: 1200px) {
+ .visible-lg-inline-block {
+ display: inline-block !important;
+ }
+}
+@media (max-width: 767px) {
+ .hidden-xs {
+ display: none !important;
+ }
+}
+@media (min-width: 768px) and (max-width: 991px) {
+ .hidden-sm {
+ display: none !important;
+ }
+}
+@media (min-width: 992px) and (max-width: 1199px) {
+ .hidden-md {
+ display: none !important;
+ }
+}
+@media (min-width: 1200px) {
+ .hidden-lg {
+ display: none !important;
+ }
+}
+.visible-print {
+ display: none !important;
+}
+@media print {
+ .visible-print {
+ display: block !important;
+ }
+ table.visible-print {
+ display: table !important;
+ }
+ tr.visible-print {
+ display: table-row !important;
+ }
+ th.visible-print,
+ td.visible-print {
+ display: table-cell !important;
+ }
+}
+.visible-print-block {
+ display: none !important;
+}
+@media print {
+ .visible-print-block {
+ display: block !important;
+ }
+}
+.visible-print-inline {
+ display: none !important;
+}
+@media print {
+ .visible-print-inline {
+ display: inline !important;
+ }
+}
+.visible-print-inline-block {
+ display: none !important;
+}
+@media print {
+ .visible-print-inline-block {
+ display: inline-block !important;
+ }
+}
+@media print {
+ .hidden-print {
+ display: none !important;
+ }
+}
+/*# sourceMappingURL=bootstrap.css.map */
+
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+.btn-default,
+.btn-primary,
+.btn-success,
+.btn-info,
+.btn-warning,
+.btn-danger {
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
+}
+.btn-default:active,
+.btn-primary:active,
+.btn-success:active,
+.btn-info:active,
+.btn-warning:active,
+.btn-danger:active,
+.btn-default.active,
+.btn-primary.active,
+.btn-success.active,
+.btn-info.active,
+.btn-warning.active,
+.btn-danger.active {
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
+}
+.btn-default.disabled,
+.btn-primary.disabled,
+.btn-success.disabled,
+.btn-info.disabled,
+.btn-warning.disabled,
+.btn-danger.disabled,
+.btn-default[disabled],
+.btn-primary[disabled],
+.btn-success[disabled],
+.btn-info[disabled],
+.btn-warning[disabled],
+.btn-danger[disabled],
+fieldset[disabled] .btn-default,
+fieldset[disabled] .btn-primary,
+fieldset[disabled] .btn-success,
+fieldset[disabled] .btn-info,
+fieldset[disabled] .btn-warning,
+fieldset[disabled] .btn-danger {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.btn-default .badge,
+.btn-primary .badge,
+.btn-success .badge,
+.btn-info .badge,
+.btn-warning .badge,
+.btn-danger .badge {
+ text-shadow: none;
+}
+.btn:active,
+.btn.active {
+ background-image: none;
+}
+.btn-default {
+ text-shadow: 0 1px 0 #fff;
+ background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
+ background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
+ background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-color: #dbdbdb;
+ border-color: #ccc;
+}
+.btn-default:hover,
+.btn-default:focus {
+ background-color: #e0e0e0;
+ background-position: 0 -15px;
+}
+.btn-default:active,
+.btn-default.active {
+ background-color: #e0e0e0;
+ border-color: #dbdbdb;
+}
+.btn-default.disabled,
+.btn-default[disabled],
+fieldset[disabled] .btn-default,
+.btn-default.disabled:hover,
+.btn-default[disabled]:hover,
+fieldset[disabled] .btn-default:hover,
+.btn-default.disabled:focus,
+.btn-default[disabled]:focus,
+fieldset[disabled] .btn-default:focus,
+.btn-default.disabled.focus,
+.btn-default[disabled].focus,
+fieldset[disabled] .btn-default.focus,
+.btn-default.disabled:active,
+.btn-default[disabled]:active,
+fieldset[disabled] .btn-default:active,
+.btn-default.disabled.active,
+.btn-default[disabled].active,
+fieldset[disabled] .btn-default.active {
+ background-color: #e0e0e0;
+ background-image: none;
+}
+.btn-primary {
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-color: #245580;
+}
+.btn-primary:hover,
+.btn-primary:focus {
+ background-color: #265a88;
+ background-position: 0 -15px;
+}
+.btn-primary:active,
+.btn-primary.active {
+ background-color: #265a88;
+ border-color: #245580;
+}
+.btn-primary.disabled,
+.btn-primary[disabled],
+fieldset[disabled] .btn-primary,
+.btn-primary.disabled:hover,
+.btn-primary[disabled]:hover,
+fieldset[disabled] .btn-primary:hover,
+.btn-primary.disabled:focus,
+.btn-primary[disabled]:focus,
+fieldset[disabled] .btn-primary:focus,
+.btn-primary.disabled.focus,
+.btn-primary[disabled].focus,
+fieldset[disabled] .btn-primary.focus,
+.btn-primary.disabled:active,
+.btn-primary[disabled]:active,
+fieldset[disabled] .btn-primary:active,
+.btn-primary.disabled.active,
+.btn-primary[disabled].active,
+fieldset[disabled] .btn-primary.active {
+ background-color: #265a88;
+ background-image: none;
+}
+.btn-success {
+ background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
+ background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
+ background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-color: #3e8f3e;
+}
+.btn-success:hover,
+.btn-success:focus {
+ background-color: #419641;
+ background-position: 0 -15px;
+}
+.btn-success:active,
+.btn-success.active {
+ background-color: #419641;
+ border-color: #3e8f3e;
+}
+.btn-success.disabled,
+.btn-success[disabled],
+fieldset[disabled] .btn-success,
+.btn-success.disabled:hover,
+.btn-success[disabled]:hover,
+fieldset[disabled] .btn-success:hover,
+.btn-success.disabled:focus,
+.btn-success[disabled]:focus,
+fieldset[disabled] .btn-success:focus,
+.btn-success.disabled.focus,
+.btn-success[disabled].focus,
+fieldset[disabled] .btn-success.focus,
+.btn-success.disabled:active,
+.btn-success[disabled]:active,
+fieldset[disabled] .btn-success:active,
+.btn-success.disabled.active,
+.btn-success[disabled].active,
+fieldset[disabled] .btn-success.active {
+ background-color: #419641;
+ background-image: none;
+}
+.btn-info {
+ background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+ background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
+ background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-color: #28a4c9;
+}
+.btn-info:hover,
+.btn-info:focus {
+ background-color: #2aabd2;
+ background-position: 0 -15px;
+}
+.btn-info:active,
+.btn-info.active {
+ background-color: #2aabd2;
+ border-color: #28a4c9;
+}
+.btn-info.disabled,
+.btn-info[disabled],
+fieldset[disabled] .btn-info,
+.btn-info.disabled:hover,
+.btn-info[disabled]:hover,
+fieldset[disabled] .btn-info:hover,
+.btn-info.disabled:focus,
+.btn-info[disabled]:focus,
+fieldset[disabled] .btn-info:focus,
+.btn-info.disabled.focus,
+.btn-info[disabled].focus,
+fieldset[disabled] .btn-info.focus,
+.btn-info.disabled:active,
+.btn-info[disabled]:active,
+fieldset[disabled] .btn-info:active,
+.btn-info.disabled.active,
+.btn-info[disabled].active,
+fieldset[disabled] .btn-info.active {
+ background-color: #2aabd2;
+ background-image: none;
+}
+.btn-warning {
+ background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+ background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
+ background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-color: #e38d13;
+}
+.btn-warning:hover,
+.btn-warning:focus {
+ background-color: #eb9316;
+ background-position: 0 -15px;
+}
+.btn-warning:active,
+.btn-warning.active {
+ background-color: #eb9316;
+ border-color: #e38d13;
+}
+.btn-warning.disabled,
+.btn-warning[disabled],
+fieldset[disabled] .btn-warning,
+.btn-warning.disabled:hover,
+.btn-warning[disabled]:hover,
+fieldset[disabled] .btn-warning:hover,
+.btn-warning.disabled:focus,
+.btn-warning[disabled]:focus,
+fieldset[disabled] .btn-warning:focus,
+.btn-warning.disabled.focus,
+.btn-warning[disabled].focus,
+fieldset[disabled] .btn-warning.focus,
+.btn-warning.disabled:active,
+.btn-warning[disabled]:active,
+fieldset[disabled] .btn-warning:active,
+.btn-warning.disabled.active,
+.btn-warning[disabled].active,
+fieldset[disabled] .btn-warning.active {
+ background-color: #eb9316;
+ background-image: none;
+}
+.btn-danger {
+ background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+ background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
+ background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-color: #b92c28;
+}
+.btn-danger:hover,
+.btn-danger:focus {
+ background-color: #c12e2a;
+ background-position: 0 -15px;
+}
+.btn-danger:active,
+.btn-danger.active {
+ background-color: #c12e2a;
+ border-color: #b92c28;
+}
+.btn-danger.disabled,
+.btn-danger[disabled],
+fieldset[disabled] .btn-danger,
+.btn-danger.disabled:hover,
+.btn-danger[disabled]:hover,
+fieldset[disabled] .btn-danger:hover,
+.btn-danger.disabled:focus,
+.btn-danger[disabled]:focus,
+fieldset[disabled] .btn-danger:focus,
+.btn-danger.disabled.focus,
+.btn-danger[disabled].focus,
+fieldset[disabled] .btn-danger.focus,
+.btn-danger.disabled:active,
+.btn-danger[disabled]:active,
+fieldset[disabled] .btn-danger:active,
+.btn-danger.disabled.active,
+.btn-danger[disabled].active,
+fieldset[disabled] .btn-danger.active {
+ background-color: #c12e2a;
+ background-image: none;
+}
+.thumbnail,
+.img-thumbnail {
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+}
+.dropdown-menu > li > a:hover,
+.dropdown-menu > li > a:focus {
+ background-color: #e8e8e8;
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+ background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
+ background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
+ background-repeat: repeat-x;
+}
+.dropdown-menu > .active > a,
+.dropdown-menu > .active > a:hover,
+.dropdown-menu > .active > a:focus {
+ background-color: #2e6da4;
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
+ background-repeat: repeat-x;
+}
+.navbar-default {
+ background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
+ background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
+ background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-radius: 4px;
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
+}
+.navbar-default .navbar-nav > .open > a,
+.navbar-default .navbar-nav > .active > a {
+ background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
+ background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
+ background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
+ background-repeat: repeat-x;
+ -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
+ box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
+}
+.navbar-brand,
+.navbar-nav > li > a {
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
+}
+.navbar-inverse {
+ background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
+ background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
+ background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
+ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
+ background-repeat: repeat-x;
+ border-radius: 4px;
+}
+.navbar-inverse .navbar-nav > .open > a,
+.navbar-inverse .navbar-nav > .active > a {
+ background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
+ background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
+ background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
+ background-repeat: repeat-x;
+ -webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
+ box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
+}
+.navbar-inverse .navbar-brand,
+.navbar-inverse .navbar-nav > li > a {
+ text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
+}
+.navbar-static-top,
+.navbar-fixed-top,
+.navbar-fixed-bottom {
+ border-radius: 0;
+}
+@media (max-width: 767px) {
+ .navbar .navbar-nav .open .dropdown-menu > .active > a,
+ .navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
+ .navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
+ color: #fff;
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
+ background-repeat: repeat-x;
+ }
+}
+.alert {
+ text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
+ -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
+}
+.alert-success {
+ background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+ background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
+ background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
+ background-repeat: repeat-x;
+ border-color: #b2dba1;
+}
+.alert-info {
+ background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+ background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
+ background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
+ background-repeat: repeat-x;
+ border-color: #9acfea;
+}
+.alert-warning {
+ background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+ background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
+ background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
+ background-repeat: repeat-x;
+ border-color: #f5e79e;
+}
+.alert-danger {
+ background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+ background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
+ background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
+ background-repeat: repeat-x;
+ border-color: #dca7a7;
+}
+.progress {
+ background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+ background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
+ background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
+ background-repeat: repeat-x;
+}
+.progress-bar {
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
+ background-repeat: repeat-x;
+}
+.progress-bar-success {
+ background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+ background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
+ background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
+ background-repeat: repeat-x;
+}
+.progress-bar-info {
+ background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+ background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
+ background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
+ background-repeat: repeat-x;
+}
+.progress-bar-warning {
+ background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+ background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
+ background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
+ background-repeat: repeat-x;
+}
+.progress-bar-danger {
+ background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+ background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
+ background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
+ background-repeat: repeat-x;
+}
+.progress-bar-striped {
+ background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+ background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
+}
+.list-group {
+ border-radius: 4px;
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
+}
+.list-group-item.active,
+.list-group-item.active:hover,
+.list-group-item.active:focus {
+ text-shadow: 0 -1px 0 #286090;
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
+ background-repeat: repeat-x;
+ border-color: #2b669a;
+}
+.list-group-item.active .badge,
+.list-group-item.active:hover .badge,
+.list-group-item.active:focus .badge {
+ text-shadow: none;
+}
+.panel {
+ -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
+ box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
+}
+.panel-default > .panel-heading {
+ background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+ background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
+ background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
+ background-repeat: repeat-x;
+}
+.panel-primary > .panel-heading {
+ background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
+ background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
+ background-repeat: repeat-x;
+}
+.panel-success > .panel-heading {
+ background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+ background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
+ background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
+ background-repeat: repeat-x;
+}
+.panel-info > .panel-heading {
+ background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+ background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
+ background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
+ background-repeat: repeat-x;
+}
+.panel-warning > .panel-heading {
+ background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+ background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
+ background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
+ background-repeat: repeat-x;
+}
+.panel-danger > .panel-heading {
+ background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+ background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
+ background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
+ background-repeat: repeat-x;
+}
+.well {
+ background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+ background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
+ background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
+ background-repeat: repeat-x;
+ border-color: #dcdcdc;
+ -webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
+ box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
+}
+/*# sourceMappingURL=bootstrap-theme.css.map */
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/border.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/border.css
new file mode 100644
index 0000000..87524b1
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/border.css
@@ -0,0 +1,15 @@
+/*
+ Although it's tempting to compress the value "none" to "0" for border property, it's not 100% safe to do so.
+ @See:
+ - http://stackoverflow.com/a/2948616/1273027
+ - http://stackoverflow.com/a/24834322/1273027
+
+*/
+
+a {
+ border: none;
+ border-top: none;
+ border-right: none;
+ border-bottom:none;
+ border-left: none
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/bulma.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/bulma.css
new file mode 100644
index 0000000..fc5e50b
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/bulma.css
@@ -0,0 +1,6630 @@
+/*! bulma.io v0.4.0 | MIT License | github.com/jgthms/bulma */
+@-webkit-keyframes spinAround {
+ from {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ to {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+@keyframes spinAround {
+ from {
+ -webkit-transform: rotate(0deg);
+ transform: rotate(0deg);
+ }
+ to {
+ -webkit-transform: rotate(359deg);
+ transform: rotate(359deg);
+ }
+}
+
+/*! minireset.css v0.0.2 | MIT License | github.com/jgthms/minireset.css */
+html,
+body,
+p,
+ol,
+ul,
+li,
+dl,
+dt,
+dd,
+blockquote,
+figure,
+fieldset,
+legend,
+textarea,
+pre,
+iframe,
+hr,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin: 0;
+ padding: 0;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-size: 100%;
+ font-weight: normal;
+}
+
+ul {
+ list-style: none;
+}
+
+button,
+input,
+select,
+textarea {
+ margin: 0;
+}
+
+html {
+ box-sizing: border-box;
+}
+
+* {
+ box-sizing: inherit;
+}
+
+*:before, *:after {
+ box-sizing: inherit;
+}
+
+img,
+embed,
+object,
+audio,
+video {
+ height: auto;
+ max-width: 100%;
+}
+
+iframe {
+ border: 0;
+}
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+td,
+th {
+ padding: 0;
+ text-align: left;
+}
+
+html {
+ background-color: white;
+ font-size: 16px;
+ -moz-osx-font-smoothing: grayscale;
+ -webkit-font-smoothing: antialiased;
+ min-width: 300px;
+ overflow-x: hidden;
+ overflow-y: scroll;
+ text-rendering: optimizeLegibility;
+}
+
+article,
+aside,
+figure,
+footer,
+header,
+hgroup,
+section {
+ display: block;
+}
+
+body,
+button,
+input,
+select,
+textarea {
+ font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", "Helvetica", "Arial", sans-serif;
+}
+
+code,
+pre {
+ -moz-osx-font-smoothing: auto;
+ -webkit-font-smoothing: auto;
+ font-family: monospace;
+}
+
+body {
+ color: #4a4a4a;
+ font-size: 1rem;
+ font-weight: 400;
+ line-height: 1.5;
+}
+
+a {
+ color: #00d1b2;
+ cursor: pointer;
+ text-decoration: none;
+ -webkit-transition: none 86ms ease-out;
+ transition: none 86ms ease-out;
+}
+
+a:hover {
+ color: #363636;
+}
+
+code {
+ background-color: whitesmoke;
+ color: #ff3860;
+ font-size: 0.8em;
+ font-weight: normal;
+ padding: 0.25em 0.5em 0.25em;
+}
+
+hr {
+ background-color: #dbdbdb;
+ border: none;
+ display: block;
+ height: 1px;
+ margin: 1.5rem 0;
+}
+
+img {
+ max-width: 100%;
+}
+
+input[type="checkbox"],
+input[type="radio"] {
+ vertical-align: baseline;
+}
+
+small {
+ font-size: 0.8em;
+}
+
+span {
+ font-style: inherit;
+ font-weight: inherit;
+}
+
+strong {
+ color: #363636;
+ font-weight: 700;
+}
+
+pre {
+ background-color: whitesmoke;
+ color: #4a4a4a;
+ font-size: 0.8em;
+ white-space: pre;
+ word-wrap: normal;
+}
+
+pre code {
+ background: none;
+ color: inherit;
+ display: block;
+ font-size: 1em;
+ overflow-x: auto;
+ padding: 1.25rem 1.5rem;
+}
+
+table {
+ width: 100%;
+}
+
+table td,
+table th {
+ text-align: left;
+ vertical-align: top;
+}
+
+table th {
+ color: #363636;
+}
+
+.is-block {
+ display: block;
+}
+
+@media screen and (max-width: 768px) {
+ .is-block-mobile {
+ display: block !important;
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .is-block-tablet {
+ display: block !important;
+ }
+}
+
+@media screen and (min-width: 769px) and (max-width: 999px) {
+ .is-block-tablet-only {
+ display: block !important;
+ }
+}
+
+@media screen and (max-width: 999px) {
+ .is-block-touch {
+ display: block !important;
+ }
+}
+
+@media screen and (min-width: 1000px) {
+ .is-block-desktop {
+ display: block !important;
+ }
+}
+
+@media screen and (min-width: 1000px) and (max-width: 1191px) {
+ .is-block-desktop-only {
+ display: block !important;
+ }
+}
+
+@media screen and (min-width: 1192px) {
+ .is-block-widescreen {
+ display: block !important;
+ }
+}
+
+.is-flex {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+@media screen and (max-width: 768px) {
+ .is-flex-mobile {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .is-flex-tablet {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ }
+}
+
+@media screen and (min-width: 769px) and (max-width: 999px) {
+ .is-flex-tablet-only {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ }
+}
+
+@media screen and (max-width: 999px) {
+ .is-flex-touch {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ }
+}
+
+@media screen and (min-width: 1000px) {
+ .is-flex-desktop {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ }
+}
+
+@media screen and (min-width: 1000px) and (max-width: 1191px) {
+ .is-flex-desktop-only {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ }
+}
+
+@media screen and (min-width: 1192px) {
+ .is-flex-widescreen {
+ display: -webkit-box !important;
+ display: -ms-flexbox !important;
+ display: flex !important;
+ }
+}
+
+.is-inline {
+ display: inline;
+}
+
+@media screen and (max-width: 768px) {
+ .is-inline-mobile {
+ display: inline !important;
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .is-inline-tablet {
+ display: inline !important;
+ }
+}
+
+@media screen and (min-width: 769px) and (max-width: 999px) {
+ .is-inline-tablet-only {
+ display: inline !important;
+ }
+}
+
+@media screen and (max-width: 999px) {
+ .is-inline-touch {
+ display: inline !important;
+ }
+}
+
+@media screen and (min-width: 1000px) {
+ .is-inline-desktop {
+ display: inline !important;
+ }
+}
+
+@media screen and (min-width: 1000px) and (max-width: 1191px) {
+ .is-inline-desktop-only {
+ display: inline !important;
+ }
+}
+
+@media screen and (min-width: 1192px) {
+ .is-inline-widescreen {
+ display: inline !important;
+ }
+}
+
+.is-inline-block {
+ display: inline-block;
+}
+
+@media screen and (max-width: 768px) {
+ .is-inline-block-mobile {
+ display: inline-block !important;
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .is-inline-block-tablet {
+ display: inline-block !important;
+ }
+}
+
+@media screen and (min-width: 769px) and (max-width: 999px) {
+ .is-inline-block-tablet-only {
+ display: inline-block !important;
+ }
+}
+
+@media screen and (max-width: 999px) {
+ .is-inline-block-touch {
+ display: inline-block !important;
+ }
+}
+
+@media screen and (min-width: 1000px) {
+ .is-inline-block-desktop {
+ display: inline-block !important;
+ }
+}
+
+@media screen and (min-width: 1000px) and (max-width: 1191px) {
+ .is-inline-block-desktop-only {
+ display: inline-block !important;
+ }
+}
+
+@media screen and (min-width: 1192px) {
+ .is-inline-block-widescreen {
+ display: inline-block !important;
+ }
+}
+
+.is-inline-flex {
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+}
+
+@media screen and (max-width: 768px) {
+ .is-inline-flex-mobile {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .is-inline-flex-tablet {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
+ }
+}
+
+@media screen and (min-width: 769px) and (max-width: 999px) {
+ .is-inline-flex-tablet-only {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
+ }
+}
+
+@media screen and (max-width: 999px) {
+ .is-inline-flex-touch {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
+ }
+}
+
+@media screen and (min-width: 1000px) {
+ .is-inline-flex-desktop {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
+ }
+}
+
+@media screen and (min-width: 1000px) and (max-width: 1191px) {
+ .is-inline-flex-desktop-only {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
+ }
+}
+
+@media screen and (min-width: 1192px) {
+ .is-inline-flex-widescreen {
+ display: -webkit-inline-box !important;
+ display: -ms-inline-flexbox !important;
+ display: inline-flex !important;
+ }
+}
+
+.is-clearfix:after {
+ clear: both;
+ content: " ";
+ display: table;
+}
+
+.is-pulled-left {
+ float: left;
+}
+
+.is-pulled-right {
+ float: right;
+}
+
+.is-clipped {
+ overflow: hidden !important;
+}
+
+.is-overlay {
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+}
+
+.has-text-centered {
+ text-align: center;
+}
+
+.has-text-left {
+ text-align: left;
+}
+
+.has-text-right {
+ text-align: right;
+}
+
+.is-hidden {
+ display: none !important;
+}
+
+@media screen and (max-width: 768px) {
+ .is-hidden-mobile {
+ display: none !important;
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .is-hidden-tablet {
+ display: none !important;
+ }
+}
+
+@media screen and (min-width: 769px) and (max-width: 999px) {
+ .is-hidden-tablet-only {
+ display: none !important;
+ }
+}
+
+@media screen and (max-width: 999px) {
+ .is-hidden-touch {
+ display: none !important;
+ }
+}
+
+@media screen and (min-width: 1000px) {
+ .is-hidden-desktop {
+ display: none !important;
+ }
+}
+
+@media screen and (min-width: 1000px) and (max-width: 1191px) {
+ .is-hidden-desktop-only {
+ display: none !important;
+ }
+}
+
+@media screen and (min-width: 1192px) {
+ .is-hidden-widescreen {
+ display: none !important;
+ }
+}
+
+.is-disabled {
+ pointer-events: none;
+}
+
+.is-marginless {
+ margin: 0 !important;
+}
+
+.is-paddingless {
+ padding: 0 !important;
+}
+
+.is-unselectable {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.box {
+ background-color: white;
+ border-radius: 5px;
+ box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);
+ display: block;
+ padding: 1.25rem;
+}
+
+.box:not(:last-child) {
+ margin-bottom: 1.5rem;
+}
+
+a.box:hover, a.box:focus {
+ box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #00d1b2;
+}
+
+a.box:active {
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #00d1b2;
+}
+
+.button {
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ border: none;
+ border-radius: 3px;
+ box-shadow: none;
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ font-size: 1rem;
+ height: 2.25em;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ line-height: 1.5;
+ padding-bottom: 0.375em;
+ padding-left: 0.625em;
+ padding-right: 0.625em;
+ padding-top: 0.375em;
+ position: relative;
+ vertical-align: top;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ background-color: white;
+ border: 1px solid #dbdbdb;
+ color: #363636;
+ cursor: pointer;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ padding-left: 0.75em;
+ padding-right: 0.75em;
+ text-align: center;
+ white-space: nowrap;
+}
+
+.button:focus, .button.is-focused, .button:active, .button.is-active {
+ outline: none;
+}
+
+.button[disabled], .button.is-disabled {
+ pointer-events: none;
+}
+
+.button strong {
+ color: inherit;
+}
+
+.button .icon, .button .icon.is-small, .button .icon.is-medium, .button .icon.is-large {
+ height: 1.5em;
+ width: 1.5em;
+}
+
+.button .icon:first-child:not(:last-child) {
+ margin-left: calc(-0.375em - 1px);
+ margin-right: 0.1875em;
+}
+
+.button .icon:last-child:not(:first-child) {
+ margin-left: 0.1875em;
+ margin-right: calc(-0.375em - 1px);
+}
+
+.button .icon:first-child:last-child {
+ margin-left: calc(-0.375em - 1px);
+ margin-right: calc(-0.375em - 1px);
+}
+
+.button:hover, .button.is-hovered {
+ border-color: #b5b5b5;
+ color: #363636;
+}
+
+.button:focus, .button.is-focused {
+ border-color: #00d1b2;
+ box-shadow: 0 0 0.5em rgba(0, 209, 178, 0.25);
+ color: #363636;
+}
+
+.button:active, .button.is-active {
+ border-color: #4a4a4a;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2);
+ color: #363636;
+}
+
+.button.is-link {
+ background-color: transparent;
+ border-color: transparent;
+ color: #4a4a4a;
+ text-decoration: underline;
+}
+
+.button.is-link:hover, .button.is-link.is-hovered, .button.is-link:focus, .button.is-link.is-focused, .button.is-link:active, .button.is-link.is-active {
+ background-color: whitesmoke;
+ color: #363636;
+}
+
+.button.is-white {
+ background-color: white;
+ border-color: transparent;
+ color: #0a0a0a;
+}
+
+.button.is-white:hover, .button.is-white.is-hovered {
+ background-color: #f9f9f9;
+ border-color: transparent;
+ color: #0a0a0a;
+}
+
+.button.is-white:focus, .button.is-white.is-focused {
+ border-color: transparent;
+ box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25);
+ color: #0a0a0a;
+}
+
+.button.is-white:active, .button.is-white.is-active {
+ background-color: #f2f2f2;
+ border-color: transparent;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2);
+ color: #0a0a0a;
+}
+
+.button.is-white.is-inverted {
+ background-color: #0a0a0a;
+ color: white;
+}
+
+.button.is-white.is-inverted:hover {
+ background-color: black;
+}
+
+.button.is-white.is-loading:after {
+ border-color: transparent transparent #0a0a0a #0a0a0a !important;
+}
+
+.button.is-white.is-outlined {
+ background-color: transparent;
+ border-color: white;
+ color: white;
+}
+
+.button.is-white.is-outlined:hover, .button.is-white.is-outlined:focus {
+ background-color: white;
+ border-color: white;
+ color: #0a0a0a;
+}
+
+.button.is-white.is-outlined.is-loading:after {
+ border-color: transparent transparent white white !important;
+}
+
+.button.is-white.is-inverted.is-outlined {
+ background-color: transparent;
+ border-color: #0a0a0a;
+ color: #0a0a0a;
+}
+
+.button.is-white.is-inverted.is-outlined:hover, .button.is-white.is-inverted.is-outlined:focus {
+ background-color: #0a0a0a;
+ color: white;
+}
+
+.button.is-black {
+ background-color: #0a0a0a;
+ border-color: transparent;
+ color: white;
+}
+
+.button.is-black:hover, .button.is-black.is-hovered {
+ background-color: #040404;
+ border-color: transparent;
+ color: white;
+}
+
+.button.is-black:focus, .button.is-black.is-focused {
+ border-color: transparent;
+ box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25);
+ color: white;
+}
+
+.button.is-black:active, .button.is-black.is-active {
+ background-color: black;
+ border-color: transparent;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2);
+ color: white;
+}
+
+.button.is-black.is-inverted {
+ background-color: white;
+ color: #0a0a0a;
+}
+
+.button.is-black.is-inverted:hover {
+ background-color: #f2f2f2;
+}
+
+.button.is-black.is-loading:after {
+ border-color: transparent transparent white white !important;
+}
+
+.button.is-black.is-outlined {
+ background-color: transparent;
+ border-color: #0a0a0a;
+ color: #0a0a0a;
+}
+
+.button.is-black.is-outlined:hover, .button.is-black.is-outlined:focus {
+ background-color: #0a0a0a;
+ border-color: #0a0a0a;
+ color: white;
+}
+
+.button.is-black.is-outlined.is-loading:after {
+ border-color: transparent transparent #0a0a0a #0a0a0a !important;
+}
+
+.button.is-black.is-inverted.is-outlined {
+ background-color: transparent;
+ border-color: white;
+ color: white;
+}
+
+.button.is-black.is-inverted.is-outlined:hover, .button.is-black.is-inverted.is-outlined:focus {
+ background-color: white;
+ color: #0a0a0a;
+}
+
+.button.is-light {
+ background-color: whitesmoke;
+ border-color: transparent;
+ color: #363636;
+}
+
+.button.is-light:hover, .button.is-light.is-hovered {
+ background-color: #eeeeee;
+ border-color: transparent;
+ color: #363636;
+}
+
+.button.is-light:focus, .button.is-light.is-focused {
+ border-color: transparent;
+ box-shadow: 0 0 0.5em rgba(245, 245, 245, 0.25);
+ color: #363636;
+}
+
+.button.is-light:active, .button.is-light.is-active {
+ background-color: #e8e8e8;
+ border-color: transparent;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2);
+ color: #363636;
+}
+
+.button.is-light.is-inverted {
+ background-color: #363636;
+ color: whitesmoke;
+}
+
+.button.is-light.is-inverted:hover {
+ background-color: #292929;
+}
+
+.button.is-light.is-loading:after {
+ border-color: transparent transparent #363636 #363636 !important;
+}
+
+.button.is-light.is-outlined {
+ background-color: transparent;
+ border-color: whitesmoke;
+ color: whitesmoke;
+}
+
+.button.is-light.is-outlined:hover, .button.is-light.is-outlined:focus {
+ background-color: whitesmoke;
+ border-color: whitesmoke;
+ color: #363636;
+}
+
+.button.is-light.is-outlined.is-loading:after {
+ border-color: transparent transparent whitesmoke whitesmoke !important;
+}
+
+.button.is-light.is-inverted.is-outlined {
+ background-color: transparent;
+ border-color: #363636;
+ color: #363636;
+}
+
+.button.is-light.is-inverted.is-outlined:hover, .button.is-light.is-inverted.is-outlined:focus {
+ background-color: #363636;
+ color: whitesmoke;
+}
+
+.button.is-dark {
+ background-color: #363636;
+ border-color: transparent;
+ color: whitesmoke;
+}
+
+.button.is-dark:hover, .button.is-dark.is-hovered {
+ background-color: #2f2f2f;
+ border-color: transparent;
+ color: whitesmoke;
+}
+
+.button.is-dark:focus, .button.is-dark.is-focused {
+ border-color: transparent;
+ box-shadow: 0 0 0.5em rgba(54, 54, 54, 0.25);
+ color: whitesmoke;
+}
+
+.button.is-dark:active, .button.is-dark.is-active {
+ background-color: #292929;
+ border-color: transparent;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2);
+ color: whitesmoke;
+}
+
+.button.is-dark.is-inverted {
+ background-color: whitesmoke;
+ color: #363636;
+}
+
+.button.is-dark.is-inverted:hover {
+ background-color: #e8e8e8;
+}
+
+.button.is-dark.is-loading:after {
+ border-color: transparent transparent whitesmoke whitesmoke !important;
+}
+
+.button.is-dark.is-outlined {
+ background-color: transparent;
+ border-color: #363636;
+ color: #363636;
+}
+
+.button.is-dark.is-outlined:hover, .button.is-dark.is-outlined:focus {
+ background-color: #363636;
+ border-color: #363636;
+ color: whitesmoke;
+}
+
+.button.is-dark.is-outlined.is-loading:after {
+ border-color: transparent transparent #363636 #363636 !important;
+}
+
+.button.is-dark.is-inverted.is-outlined {
+ background-color: transparent;
+ border-color: whitesmoke;
+ color: whitesmoke;
+}
+
+.button.is-dark.is-inverted.is-outlined:hover, .button.is-dark.is-inverted.is-outlined:focus {
+ background-color: whitesmoke;
+ color: #363636;
+}
+
+.button.is-primary {
+ background-color: #00d1b2;
+ border-color: transparent;
+ color: #fff;
+}
+
+.button.is-primary:hover, .button.is-primary.is-hovered {
+ background-color: #00c4a7;
+ border-color: transparent;
+ color: #fff;
+}
+
+.button.is-primary:focus, .button.is-primary.is-focused {
+ border-color: transparent;
+ box-shadow: 0 0 0.5em rgba(0, 209, 178, 0.25);
+ color: #fff;
+}
+
+.button.is-primary:active, .button.is-primary.is-active {
+ background-color: #00b89c;
+ border-color: transparent;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2);
+ color: #fff;
+}
+
+.button.is-primary.is-inverted {
+ background-color: #fff;
+ color: #00d1b2;
+}
+
+.button.is-primary.is-inverted:hover {
+ background-color: #f2f2f2;
+}
+
+.button.is-primary.is-loading:after {
+ border-color: transparent transparent #fff #fff !important;
+}
+
+.button.is-primary.is-outlined {
+ background-color: transparent;
+ border-color: #00d1b2;
+ color: #00d1b2;
+}
+
+.button.is-primary.is-outlined:hover, .button.is-primary.is-outlined:focus {
+ background-color: #00d1b2;
+ border-color: #00d1b2;
+ color: #fff;
+}
+
+.button.is-primary.is-outlined.is-loading:after {
+ border-color: transparent transparent #00d1b2 #00d1b2 !important;
+}
+
+.button.is-primary.is-inverted.is-outlined {
+ background-color: transparent;
+ border-color: #fff;
+ color: #fff;
+}
+
+.button.is-primary.is-inverted.is-outlined:hover, .button.is-primary.is-inverted.is-outlined:focus {
+ background-color: #fff;
+ color: #00d1b2;
+}
+
+.button.is-info {
+ background-color: #3273dc;
+ border-color: transparent;
+ color: #fff;
+}
+
+.button.is-info:hover, .button.is-info.is-hovered {
+ background-color: #276cda;
+ border-color: transparent;
+ color: #fff;
+}
+
+.button.is-info:focus, .button.is-info.is-focused {
+ border-color: transparent;
+ box-shadow: 0 0 0.5em rgba(50, 115, 220, 0.25);
+ color: #fff;
+}
+
+.button.is-info:active, .button.is-info.is-active {
+ background-color: #2366d1;
+ border-color: transparent;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2);
+ color: #fff;
+}
+
+.button.is-info.is-inverted {
+ background-color: #fff;
+ color: #3273dc;
+}
+
+.button.is-info.is-inverted:hover {
+ background-color: #f2f2f2;
+}
+
+.button.is-info.is-loading:after {
+ border-color: transparent transparent #fff #fff !important;
+}
+
+.button.is-info.is-outlined {
+ background-color: transparent;
+ border-color: #3273dc;
+ color: #3273dc;
+}
+
+.button.is-info.is-outlined:hover, .button.is-info.is-outlined:focus {
+ background-color: #3273dc;
+ border-color: #3273dc;
+ color: #fff;
+}
+
+.button.is-info.is-outlined.is-loading:after {
+ border-color: transparent transparent #3273dc #3273dc !important;
+}
+
+.button.is-info.is-inverted.is-outlined {
+ background-color: transparent;
+ border-color: #fff;
+ color: #fff;
+}
+
+.button.is-info.is-inverted.is-outlined:hover, .button.is-info.is-inverted.is-outlined:focus {
+ background-color: #fff;
+ color: #3273dc;
+}
+
+.button.is-success {
+ background-color: #23d160;
+ border-color: transparent;
+ color: #fff;
+}
+
+.button.is-success:hover, .button.is-success.is-hovered {
+ background-color: #22c65b;
+ border-color: transparent;
+ color: #fff;
+}
+
+.button.is-success:focus, .button.is-success.is-focused {
+ border-color: transparent;
+ box-shadow: 0 0 0.5em rgba(35, 209, 96, 0.25);
+ color: #fff;
+}
+
+.button.is-success:active, .button.is-success.is-active {
+ background-color: #20bc56;
+ border-color: transparent;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2);
+ color: #fff;
+}
+
+.button.is-success.is-inverted {
+ background-color: #fff;
+ color: #23d160;
+}
+
+.button.is-success.is-inverted:hover {
+ background-color: #f2f2f2;
+}
+
+.button.is-success.is-loading:after {
+ border-color: transparent transparent #fff #fff !important;
+}
+
+.button.is-success.is-outlined {
+ background-color: transparent;
+ border-color: #23d160;
+ color: #23d160;
+}
+
+.button.is-success.is-outlined:hover, .button.is-success.is-outlined:focus {
+ background-color: #23d160;
+ border-color: #23d160;
+ color: #fff;
+}
+
+.button.is-success.is-outlined.is-loading:after {
+ border-color: transparent transparent #23d160 #23d160 !important;
+}
+
+.button.is-success.is-inverted.is-outlined {
+ background-color: transparent;
+ border-color: #fff;
+ color: #fff;
+}
+
+.button.is-success.is-inverted.is-outlined:hover, .button.is-success.is-inverted.is-outlined:focus {
+ background-color: #fff;
+ color: #23d160;
+}
+
+.button.is-warning {
+ background-color: #ffdd57;
+ border-color: transparent;
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.button.is-warning:hover, .button.is-warning.is-hovered {
+ background-color: #ffdb4a;
+ border-color: transparent;
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.button.is-warning:focus, .button.is-warning.is-focused {
+ border-color: transparent;
+ box-shadow: 0 0 0.5em rgba(255, 221, 87, 0.25);
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.button.is-warning:active, .button.is-warning.is-active {
+ background-color: #ffd83d;
+ border-color: transparent;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2);
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.button.is-warning.is-inverted {
+ background-color: rgba(0, 0, 0, 0.7);
+ color: #ffdd57;
+}
+
+.button.is-warning.is-inverted:hover {
+ background-color: rgba(0, 0, 0, 0.7);
+}
+
+.button.is-warning.is-loading:after {
+ border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important;
+}
+
+.button.is-warning.is-outlined {
+ background-color: transparent;
+ border-color: #ffdd57;
+ color: #ffdd57;
+}
+
+.button.is-warning.is-outlined:hover, .button.is-warning.is-outlined:focus {
+ background-color: #ffdd57;
+ border-color: #ffdd57;
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.button.is-warning.is-outlined.is-loading:after {
+ border-color: transparent transparent #ffdd57 #ffdd57 !important;
+}
+
+.button.is-warning.is-inverted.is-outlined {
+ background-color: transparent;
+ border-color: rgba(0, 0, 0, 0.7);
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.button.is-warning.is-inverted.is-outlined:hover, .button.is-warning.is-inverted.is-outlined:focus {
+ background-color: rgba(0, 0, 0, 0.7);
+ color: #ffdd57;
+}
+
+.button.is-danger {
+ background-color: #ff3860;
+ border-color: transparent;
+ color: #fff;
+}
+
+.button.is-danger:hover, .button.is-danger.is-hovered {
+ background-color: #ff2b56;
+ border-color: transparent;
+ color: #fff;
+}
+
+.button.is-danger:focus, .button.is-danger.is-focused {
+ border-color: transparent;
+ box-shadow: 0 0 0.5em rgba(255, 56, 96, 0.25);
+ color: #fff;
+}
+
+.button.is-danger:active, .button.is-danger.is-active {
+ background-color: #ff1f4b;
+ border-color: transparent;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2);
+ color: #fff;
+}
+
+.button.is-danger.is-inverted {
+ background-color: #fff;
+ color: #ff3860;
+}
+
+.button.is-danger.is-inverted:hover {
+ background-color: #f2f2f2;
+}
+
+.button.is-danger.is-loading:after {
+ border-color: transparent transparent #fff #fff !important;
+}
+
+.button.is-danger.is-outlined {
+ background-color: transparent;
+ border-color: #ff3860;
+ color: #ff3860;
+}
+
+.button.is-danger.is-outlined:hover, .button.is-danger.is-outlined:focus {
+ background-color: #ff3860;
+ border-color: #ff3860;
+ color: #fff;
+}
+
+.button.is-danger.is-outlined.is-loading:after {
+ border-color: transparent transparent #ff3860 #ff3860 !important;
+}
+
+.button.is-danger.is-inverted.is-outlined {
+ background-color: transparent;
+ border-color: #fff;
+ color: #fff;
+}
+
+.button.is-danger.is-inverted.is-outlined:hover, .button.is-danger.is-inverted.is-outlined:focus {
+ background-color: #fff;
+ color: #ff3860;
+}
+
+.button.is-small {
+ border-radius: 2px;
+ font-size: 0.75rem;
+}
+
+.button.is-medium {
+ font-size: 1.25rem;
+}
+
+.button.is-large {
+ font-size: 1.5rem;
+}
+
+.button[disabled], .button.is-disabled {
+ opacity: 0.5;
+}
+
+.button.is-fullwidth {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ width: 100%;
+}
+
+.button.is-loading {
+ color: transparent !important;
+ pointer-events: none;
+}
+
+.button.is-loading:after {
+ -webkit-animation: spinAround 500ms infinite linear;
+ animation: spinAround 500ms infinite linear;
+ border: 2px solid #dbdbdb;
+ border-radius: 290486px;
+ border-right-color: transparent;
+ border-top-color: transparent;
+ content: "";
+ display: block;
+ height: 1em;
+ position: relative;
+ width: 1em;
+ left: 50%;
+ margin-left: -0.5em;
+ margin-top: -0.5em;
+ position: absolute;
+ top: 50%;
+ position: absolute !important;
+}
+
+button.button,
+input[type="submit"].button {
+ line-height: 1;
+ padding-bottom: 0.4em;
+ padding-top: 0.35em;
+}
+
+.content {
+ color: #4a4a4a;
+}
+
+.content:not(:last-child) {
+ margin-bottom: 1.5rem;
+}
+
+.content li + li {
+ margin-top: 0.25em;
+}
+
+.content p:not(:last-child),
+.content ol:not(:last-child),
+.content ul:not(:last-child),
+.content blockquote:not(:last-child),
+.content table:not(:last-child) {
+ margin-bottom: 1em;
+}
+
+.content h1,
+.content h2,
+.content h3,
+.content h4,
+.content h5,
+.content h6 {
+ color: #363636;
+ font-weight: 400;
+ line-height: 1.125;
+}
+
+.content h1 {
+ font-size: 2em;
+ margin-bottom: 0.5em;
+}
+
+.content h1:not(:first-child) {
+ margin-top: 1em;
+}
+
+.content h2 {
+ font-size: 1.75em;
+ margin-bottom: 0.5714em;
+}
+
+.content h2:not(:first-child) {
+ margin-top: 1.1428em;
+}
+
+.content h3 {
+ font-size: 1.5em;
+ margin-bottom: 0.6666em;
+}
+
+.content h3:not(:first-child) {
+ margin-top: 1.3333em;
+}
+
+.content h4 {
+ font-size: 1.25em;
+ margin-bottom: 0.8em;
+}
+
+.content h5 {
+ font-size: 1.125em;
+ margin-bottom: 0.8888em;
+}
+
+.content h6 {
+ font-size: 1em;
+ margin-bottom: 1em;
+}
+
+.content blockquote {
+ background-color: whitesmoke;
+ border-left: 5px solid #dbdbdb;
+ padding: 1.25em 1.5em;
+}
+
+.content ol {
+ list-style: decimal outside;
+ margin-left: 2em;
+ margin-right: 2em;
+ margin-top: 1em;
+}
+
+.content ul {
+ list-style: disc outside;
+ margin-left: 2em;
+ margin-right: 2em;
+ margin-top: 1em;
+}
+
+.content ul ul {
+ list-style-type: circle;
+ margin-top: 0.5em;
+}
+
+.content ul ul ul {
+ list-style-type: square;
+}
+
+.content table {
+ width: 100%;
+}
+
+.content table td,
+.content table th {
+ border: 1px solid #dbdbdb;
+ border-width: 0 0 1px;
+ padding: 0.5em 0.75em;
+ vertical-align: top;
+}
+
+.content table th {
+ color: #363636;
+ text-align: left;
+}
+
+.content table tr:hover {
+ background-color: whitesmoke;
+}
+
+.content table thead td,
+.content table thead th {
+ border-width: 0 0 2px;
+ color: #363636;
+}
+
+.content table tfoot td,
+.content table tfoot th {
+ border-width: 2px 0 0;
+ color: #363636;
+}
+
+.content table tbody tr:last-child td,
+.content table tbody tr:last-child th {
+ border-bottom-width: 0;
+}
+
+.content.is-small {
+ font-size: 0.75rem;
+}
+
+.content.is-medium {
+ font-size: 1.25rem;
+}
+
+.content.is-large {
+ font-size: 1.5rem;
+}
+
+.input,
+.textarea {
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ border: none;
+ border-radius: 3px;
+ box-shadow: none;
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ font-size: 1rem;
+ height: 2.25em;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ line-height: 1.5;
+ padding-bottom: 0.375em;
+ padding-left: 0.625em;
+ padding-right: 0.625em;
+ padding-top: 0.375em;
+ position: relative;
+ vertical-align: top;
+ background-color: white;
+ border: 1px solid #dbdbdb;
+ color: #363636;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1);
+ max-width: 100%;
+ width: 100%;
+}
+
+.input:focus, .input.is-focused, .input:active, .input.is-active,
+.textarea:focus,
+.textarea.is-focused,
+.textarea:active,
+.textarea.is-active {
+ outline: none;
+}
+
+.input[disabled], .input.is-disabled,
+.textarea[disabled],
+.textarea.is-disabled {
+ pointer-events: none;
+}
+
+.input:hover, .input.is-hovered,
+.textarea:hover,
+.textarea.is-hovered {
+ border-color: #b5b5b5;
+}
+
+.input:focus, .input.is-focused, .input:active, .input.is-active,
+.textarea:focus,
+.textarea.is-focused,
+.textarea:active,
+.textarea.is-active {
+ border-color: #00d1b2;
+}
+
+.input[disabled], .input.is-disabled,
+.textarea[disabled],
+.textarea.is-disabled {
+ background-color: whitesmoke;
+ border-color: whitesmoke;
+ box-shadow: none;
+ color: #7a7a7a;
+}
+
+.input[disabled]::-moz-placeholder, .input.is-disabled::-moz-placeholder,
+.textarea[disabled]::-moz-placeholder,
+.textarea.is-disabled::-moz-placeholder {
+ color: rgba(54, 54, 54, 0.3);
+}
+
+.input[disabled]::-webkit-input-placeholder, .input.is-disabled::-webkit-input-placeholder,
+.textarea[disabled]::-webkit-input-placeholder,
+.textarea.is-disabled::-webkit-input-placeholder {
+ color: rgba(54, 54, 54, 0.3);
+}
+
+.input[disabled]:-moz-placeholder, .input.is-disabled:-moz-placeholder,
+.textarea[disabled]:-moz-placeholder,
+.textarea.is-disabled:-moz-placeholder {
+ color: rgba(54, 54, 54, 0.3);
+}
+
+.input[disabled]:-ms-input-placeholder, .input.is-disabled:-ms-input-placeholder,
+.textarea[disabled]:-ms-input-placeholder,
+.textarea.is-disabled:-ms-input-placeholder {
+ color: rgba(54, 54, 54, 0.3);
+}
+
+.input[type="search"],
+.textarea[type="search"] {
+ border-radius: 290486px;
+}
+
+.input.is-white,
+.textarea.is-white {
+ border-color: white;
+}
+
+.input.is-black,
+.textarea.is-black {
+ border-color: #0a0a0a;
+}
+
+.input.is-light,
+.textarea.is-light {
+ border-color: whitesmoke;
+}
+
+.input.is-dark,
+.textarea.is-dark {
+ border-color: #363636;
+}
+
+.input.is-primary,
+.textarea.is-primary {
+ border-color: #00d1b2;
+}
+
+.input.is-info,
+.textarea.is-info {
+ border-color: #3273dc;
+}
+
+.input.is-success,
+.textarea.is-success {
+ border-color: #23d160;
+}
+
+.input.is-warning,
+.textarea.is-warning {
+ border-color: #ffdd57;
+}
+
+.input.is-danger,
+.textarea.is-danger {
+ border-color: #ff3860;
+}
+
+.input.is-small,
+.textarea.is-small {
+ border-radius: 2px;
+ font-size: 0.75rem;
+}
+
+.input.is-medium,
+.textarea.is-medium {
+ font-size: 1.25rem;
+}
+
+.input.is-large,
+.textarea.is-large {
+ font-size: 1.5rem;
+}
+
+.input.is-fullwidth,
+.textarea.is-fullwidth {
+ display: block;
+ width: 100%;
+}
+
+.input.is-inline,
+.textarea.is-inline {
+ display: inline;
+ width: auto;
+}
+
+.textarea {
+ display: block;
+ max-height: 600px;
+ max-width: 100%;
+ min-height: 120px;
+ min-width: 100%;
+ padding: 0.625em;
+ resize: vertical;
+}
+
+.checkbox,
+.radio {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ cursor: pointer;
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ line-height: 1.5;
+ position: relative;
+ vertical-align: top;
+}
+
+.checkbox input,
+.radio input {
+ cursor: pointer;
+ margin-right: 0.5em;
+}
+
+.checkbox:hover,
+.radio:hover {
+ color: #363636;
+}
+
+.checkbox.is-disabled,
+.radio.is-disabled {
+ color: #7a7a7a;
+ pointer-events: none;
+}
+
+.checkbox.is-disabled input,
+.radio.is-disabled input {
+ pointer-events: none;
+}
+
+.radio + .radio {
+ margin-left: 0.5em;
+}
+
+.select {
+ display: inline-block;
+ height: 2.25em;
+ position: relative;
+ vertical-align: top;
+}
+
+.select:after {
+ border: 1px solid #00d1b2;
+ border-right: 0;
+ border-top: 0;
+ content: " ";
+ display: block;
+ height: 0.5em;
+ pointer-events: none;
+ position: absolute;
+ -webkit-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+ width: 0.5em;
+ margin-top: -0.375em;
+ right: 1.125em;
+ top: 50%;
+ z-index: 4;
+}
+
+.select select {
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ border: none;
+ border-radius: 3px;
+ box-shadow: none;
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ font-size: 1rem;
+ height: 2.25em;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ line-height: 1.5;
+ padding-bottom: 0.375em;
+ padding-left: 0.625em;
+ padding-right: 0.625em;
+ padding-top: 0.375em;
+ position: relative;
+ vertical-align: top;
+ background-color: white;
+ border: 1px solid #dbdbdb;
+ color: #363636;
+ cursor: pointer;
+ display: block;
+ font-size: 1em;
+ outline: none;
+ padding-right: 2.5em;
+}
+
+.select select:focus, .select select.is-focused, .select select:active, .select select.is-active {
+ outline: none;
+}
+
+.select select[disabled], .select select.is-disabled {
+ pointer-events: none;
+}
+
+.select select:hover, .select select.is-hovered {
+ border-color: #b5b5b5;
+}
+
+.select select:focus, .select select.is-focused, .select select:active, .select select.is-active {
+ border-color: #00d1b2;
+}
+
+.select select[disabled], .select select.is-disabled {
+ background-color: whitesmoke;
+ border-color: whitesmoke;
+ box-shadow: none;
+ color: #7a7a7a;
+}
+
+.select select[disabled]::-moz-placeholder, .select select.is-disabled::-moz-placeholder {
+ color: rgba(54, 54, 54, 0.3);
+}
+
+.select select[disabled]::-webkit-input-placeholder, .select select.is-disabled::-webkit-input-placeholder {
+ color: rgba(54, 54, 54, 0.3);
+}
+
+.select select[disabled]:-moz-placeholder, .select select.is-disabled:-moz-placeholder {
+ color: rgba(54, 54, 54, 0.3);
+}
+
+.select select[disabled]:-ms-input-placeholder, .select select.is-disabled:-ms-input-placeholder {
+ color: rgba(54, 54, 54, 0.3);
+}
+
+.select select:hover {
+ border-color: #b5b5b5;
+}
+
+.select select::ms-expand {
+ display: none;
+}
+
+.select:hover:after {
+ border-color: #363636;
+}
+
+.select.is-small {
+ border-radius: 2px;
+ font-size: 0.75rem;
+}
+
+.select.is-medium {
+ font-size: 1.25rem;
+}
+
+.select.is-large {
+ font-size: 1.5rem;
+}
+
+.select.is-fullwidth {
+ width: 100%;
+}
+
+.select.is-fullwidth select {
+ width: 100%;
+}
+
+.label {
+ color: #363636;
+ display: block;
+ font-size: 1rem;
+ font-weight: 700;
+}
+
+.label:not(:last-child) {
+ margin-bottom: 0.5em;
+}
+
+.help {
+ display: block;
+ font-size: 0.75rem;
+ margin-top: 0.25rem;
+}
+
+.help.is-white {
+ color: white;
+}
+
+.help.is-black {
+ color: #0a0a0a;
+}
+
+.help.is-light {
+ color: whitesmoke;
+}
+
+.help.is-dark {
+ color: #363636;
+}
+
+.help.is-primary {
+ color: #00d1b2;
+}
+
+.help.is-info {
+ color: #3273dc;
+}
+
+.help.is-success {
+ color: #23d160;
+}
+
+.help.is-warning {
+ color: #ffdd57;
+}
+
+.help.is-danger {
+ color: #ff3860;
+}
+
+.select select {
+ line-height: 1;
+}
+
+.field:not(:last-child) {
+ margin-bottom: 0.75rem;
+}
+
+.field.has-addons {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+}
+
+.field.has-addons .control {
+ margin-right: -1px;
+}
+
+.field.has-addons .control:first-child .button,
+.field.has-addons .control:first-child .input,
+.field.has-addons .control:first-child .select select {
+ border-bottom-left-radius: 3px;
+ border-top-left-radius: 3px;
+}
+
+.field.has-addons .control:last-child .button,
+.field.has-addons .control:last-child .input,
+.field.has-addons .control:last-child .select select {
+ border-bottom-right-radius: 3px;
+ border-top-right-radius: 3px;
+}
+
+.field.has-addons .control .button,
+.field.has-addons .control .input,
+.field.has-addons .control .select select {
+ border-radius: 0;
+}
+
+.field.has-addons .control .button:hover,
+.field.has-addons .control .input:hover,
+.field.has-addons .control .select select:hover {
+ z-index: 2;
+}
+
+.field.has-addons .control .button:focus, .field.has-addons .control .button:active,
+.field.has-addons .control .input:focus,
+.field.has-addons .control .input:active,
+.field.has-addons .control .select select:focus,
+.field.has-addons .control .select select:active {
+ z-index: 3;
+}
+
+.field.has-addons .control.is-expanded {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.field.has-addons.has-addons-centered {
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.field.has-addons.has-addons-right {
+ -webkit-box-pack: end;
+ -ms-flex-pack: end;
+ justify-content: flex-end;
+}
+
+.field.has-addons.has-addons-fullwidth .control {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.field.is-grouped {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+}
+
+.field.is-grouped > .control {
+ -ms-flex-preferred-size: 0;
+ flex-basis: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.field.is-grouped > .control:not(:last-child) {
+ margin-bottom: 0;
+ margin-right: 0.75rem;
+}
+
+.field.is-grouped > .control.is-expanded {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+}
+
+.field.is-grouped.is-grouped-centered {
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.field.is-grouped.is-grouped-right {
+ -webkit-box-pack: end;
+ -ms-flex-pack: end;
+ justify-content: flex-end;
+}
+
+@media screen and (min-width: 769px) {
+ .field.is-horizontal {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ }
+}
+
+.field-label .label {
+ font-size: inherit;
+}
+
+@media screen and (max-width: 768px) {
+ .field-label {
+ margin-bottom: 0.5rem;
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .field-label {
+ -ms-flex-preferred-size: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ margin-right: 1.5rem;
+ text-align: right;
+ }
+ .field-label.is-small {
+ font-size: 0.75rem;
+ padding-top: 0.375em;
+ }
+ .field-label.is-normal {
+ padding-top: 0.375em;
+ }
+ .field-label.is-medium {
+ font-size: 1.25rem;
+ padding-top: 0.375em;
+ }
+ .field-label.is-large {
+ font-size: 1.5rem;
+ padding-top: 0.375em;
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .field-body {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-preferred-size: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 5;
+ -ms-flex-positive: 5;
+ flex-grow: 5;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+ }
+ .field-body .field {
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+ }
+ .field-body .field:not(.is-narrow) {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ }
+ .field-body .field:not(:last-child) {
+ margin-bottom: 0;
+ margin-right: 0.75rem;
+ }
+}
+
+.control {
+ font-size: 1rem;
+ position: relative;
+ text-align: left;
+}
+
+.control.has-icon .icon {
+ color: #dbdbdb;
+ height: 2.25em;
+ pointer-events: none;
+ position: absolute;
+ top: 0;
+ width: 2.25em;
+ z-index: 4;
+}
+
+.control.has-icon .input:focus + .icon {
+ color: #7a7a7a;
+}
+
+.control.has-icon .input.is-small + .icon {
+ font-size: 0.75rem;
+}
+
+.control.has-icon .input.is-medium + .icon {
+ font-size: 1.25rem;
+}
+
+.control.has-icon .input.is-large + .icon {
+ font-size: 1.5rem;
+}
+
+.control.has-icon:not(.has-icon-right) .icon {
+ left: 0;
+}
+
+.control.has-icon:not(.has-icon-right) .input {
+ padding-left: 2.25em;
+}
+
+.control.has-icon.has-icon-right .icon {
+ right: 0;
+}
+
+.control.has-icon.has-icon-right .input {
+ padding-right: 2.25em;
+}
+
+.control.is-loading:after {
+ -webkit-animation: spinAround 500ms infinite linear;
+ animation: spinAround 500ms infinite linear;
+ border: 2px solid #dbdbdb;
+ border-radius: 290486px;
+ border-right-color: transparent;
+ border-top-color: transparent;
+ content: "";
+ display: block;
+ height: 1em;
+ position: relative;
+ width: 1em;
+ position: absolute !important;
+ right: 0.625em;
+ top: 0.625em;
+}
+
+.icon {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ height: 1.5rem;
+ vertical-align: top;
+ width: 1.5rem;
+}
+
+.icon .fa {
+ font-size: 21px;
+}
+
+.icon.is-small {
+ height: 1rem;
+ width: 1rem;
+}
+
+.icon.is-small .fa {
+ font-size: 14px;
+}
+
+.icon.is-medium {
+ height: 2rem;
+ width: 2rem;
+}
+
+.icon.is-medium .fa {
+ font-size: 28px;
+}
+
+.icon.is-large {
+ height: 3rem;
+ width: 3rem;
+}
+
+.icon.is-large .fa {
+ font-size: 42px;
+}
+
+.image {
+ display: block;
+ position: relative;
+}
+
+.image img {
+ display: block;
+ height: auto;
+ width: 100%;
+}
+
+.image.is-square img, .image.is-1by1 img, .image.is-4by3 img, .image.is-3by2 img, .image.is-16by9 img, .image.is-2by1 img {
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ height: 100%;
+ width: 100%;
+}
+
+.image.is-square, .image.is-1by1 {
+ padding-top: 100%;
+}
+
+.image.is-4by3 {
+ padding-top: 75%;
+}
+
+.image.is-3by2 {
+ padding-top: 66.6666%;
+}
+
+.image.is-16by9 {
+ padding-top: 56.25%;
+}
+
+.image.is-2by1 {
+ padding-top: 50%;
+}
+
+.image.is-16x16 {
+ height: 16px;
+ width: 16px;
+}
+
+.image.is-24x24 {
+ height: 24px;
+ width: 24px;
+}
+
+.image.is-32x32 {
+ height: 32px;
+ width: 32px;
+}
+
+.image.is-48x48 {
+ height: 48px;
+ width: 48px;
+}
+
+.image.is-64x64 {
+ height: 64px;
+ width: 64px;
+}
+
+.image.is-96x96 {
+ height: 96px;
+ width: 96px;
+}
+
+.image.is-128x128 {
+ height: 128px;
+ width: 128px;
+}
+
+.notification {
+ background-color: whitesmoke;
+ border-radius: 3px;
+ padding: 1.25rem 2.5rem 1.25rem 1.5rem;
+ position: relative;
+}
+
+.notification:not(:last-child) {
+ margin-bottom: 1.5rem;
+}
+
+.notification code,
+.notification pre {
+ background: white;
+}
+
+.notification pre code {
+ background: transparent;
+}
+
+.notification .delete {
+ position: absolute;
+ right: 0.5em;
+ top: 0.5em;
+}
+
+.notification .title,
+.notification .subtitle,
+.notification .content {
+ color: inherit;
+}
+
+.notification.is-white {
+ background-color: white;
+ color: #0a0a0a;
+}
+
+.notification.is-black {
+ background-color: #0a0a0a;
+ color: white;
+}
+
+.notification.is-light {
+ background-color: whitesmoke;
+ color: #363636;
+}
+
+.notification.is-dark {
+ background-color: #363636;
+ color: whitesmoke;
+}
+
+.notification.is-primary {
+ background-color: #00d1b2;
+ color: #fff;
+}
+
+.notification.is-info {
+ background-color: #3273dc;
+ color: #fff;
+}
+
+.notification.is-success {
+ background-color: #23d160;
+ color: #fff;
+}
+
+.notification.is-warning {
+ background-color: #ffdd57;
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.notification.is-danger {
+ background-color: #ff3860;
+ color: #fff;
+}
+
+.progress {
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ border: none;
+ border-radius: 290486px;
+ display: block;
+ height: 1rem;
+ overflow: hidden;
+ padding: 0;
+ width: 100%;
+}
+
+.progress:not(:last-child) {
+ margin-bottom: 1.5rem;
+}
+
+.progress::-webkit-progress-bar {
+ background-color: #dbdbdb;
+}
+
+.progress::-webkit-progress-value {
+ background-color: #4a4a4a;
+}
+
+.progress::-moz-progress-bar {
+ background-color: #4a4a4a;
+}
+
+.progress.is-white::-webkit-progress-value {
+ background-color: white;
+}
+
+.progress.is-white::-moz-progress-bar {
+ background-color: white;
+}
+
+.progress.is-black::-webkit-progress-value {
+ background-color: #0a0a0a;
+}
+
+.progress.is-black::-moz-progress-bar {
+ background-color: #0a0a0a;
+}
+
+.progress.is-light::-webkit-progress-value {
+ background-color: whitesmoke;
+}
+
+.progress.is-light::-moz-progress-bar {
+ background-color: whitesmoke;
+}
+
+.progress.is-dark::-webkit-progress-value {
+ background-color: #363636;
+}
+
+.progress.is-dark::-moz-progress-bar {
+ background-color: #363636;
+}
+
+.progress.is-primary::-webkit-progress-value {
+ background-color: #00d1b2;
+}
+
+.progress.is-primary::-moz-progress-bar {
+ background-color: #00d1b2;
+}
+
+.progress.is-info::-webkit-progress-value {
+ background-color: #3273dc;
+}
+
+.progress.is-info::-moz-progress-bar {
+ background-color: #3273dc;
+}
+
+.progress.is-success::-webkit-progress-value {
+ background-color: #23d160;
+}
+
+.progress.is-success::-moz-progress-bar {
+ background-color: #23d160;
+}
+
+.progress.is-warning::-webkit-progress-value {
+ background-color: #ffdd57;
+}
+
+.progress.is-warning::-moz-progress-bar {
+ background-color: #ffdd57;
+}
+
+.progress.is-danger::-webkit-progress-value {
+ background-color: #ff3860;
+}
+
+.progress.is-danger::-moz-progress-bar {
+ background-color: #ff3860;
+}
+
+.progress.is-small {
+ height: 0.75rem;
+}
+
+.progress.is-medium {
+ height: 1.25rem;
+}
+
+.progress.is-large {
+ height: 1.5rem;
+}
+
+.table {
+ background-color: white;
+ color: #363636;
+ margin-bottom: 1.5rem;
+ width: 100%;
+}
+
+.table td,
+.table th {
+ border: 1px solid #dbdbdb;
+ border-width: 0 0 1px;
+ padding: 0.5em 0.75em;
+ vertical-align: top;
+}
+
+.table td.is-narrow,
+.table th.is-narrow {
+ white-space: nowrap;
+ width: 1%;
+}
+
+.table th {
+ color: #363636;
+ text-align: left;
+}
+
+.table tr:hover {
+ background-color: #fafafa;
+}
+
+.table thead td,
+.table thead th {
+ border-width: 0 0 2px;
+ color: #7a7a7a;
+}
+
+.table tfoot td,
+.table tfoot th {
+ border-width: 2px 0 0;
+ color: #7a7a7a;
+}
+
+.table tbody tr:last-child td,
+.table tbody tr:last-child th {
+ border-bottom-width: 0;
+}
+
+.table.is-bordered td,
+.table.is-bordered th {
+ border-width: 1px;
+}
+
+.table.is-bordered tr:last-child td,
+.table.is-bordered tr:last-child th {
+ border-bottom-width: 1px;
+}
+
+.table.is-narrow td,
+.table.is-narrow th {
+ padding: 0.25em 0.5em;
+}
+
+.table.is-striped tbody tr:nth-child(even) {
+ background-color: #fafafa;
+}
+
+.table.is-striped tbody tr:nth-child(even):hover {
+ background-color: whitesmoke;
+}
+
+.tag {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ background-color: whitesmoke;
+ border-radius: 290486px;
+ color: #4a4a4a;
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ font-size: 0.75rem;
+ height: 2em;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ line-height: 1.5;
+ padding-left: 0.875em;
+ padding-right: 0.875em;
+ vertical-align: top;
+ white-space: nowrap;
+}
+
+.tag .delete {
+ margin-left: 0.25em;
+ margin-right: -0.375em;
+}
+
+.tag.is-white {
+ background-color: white;
+ color: #0a0a0a;
+}
+
+.tag.is-black {
+ background-color: #0a0a0a;
+ color: white;
+}
+
+.tag.is-light {
+ background-color: whitesmoke;
+ color: #363636;
+}
+
+.tag.is-dark {
+ background-color: #363636;
+ color: whitesmoke;
+}
+
+.tag.is-primary {
+ background-color: #00d1b2;
+ color: #fff;
+}
+
+.tag.is-info {
+ background-color: #3273dc;
+ color: #fff;
+}
+
+.tag.is-success {
+ background-color: #23d160;
+ color: #fff;
+}
+
+.tag.is-warning {
+ background-color: #ffdd57;
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.tag.is-danger {
+ background-color: #ff3860;
+ color: #fff;
+}
+
+.tag.is-medium {
+ font-size: 1rem;
+}
+
+.tag.is-large {
+ font-size: 1.25rem;
+}
+
+.title,
+.subtitle {
+ word-break: break-word;
+}
+
+.title:not(:last-child),
+.subtitle:not(:last-child) {
+ margin-bottom: 1.5rem;
+}
+
+.title em,
+.title span,
+.subtitle em,
+.subtitle span {
+ font-weight: 300;
+}
+
+.title strong,
+.subtitle strong {
+ font-weight: 500;
+}
+
+.title .tag,
+.subtitle .tag {
+ vertical-align: middle;
+}
+
+.title {
+ color: #363636;
+ font-size: 2rem;
+ font-weight: 300;
+ line-height: 1.125;
+}
+
+.title strong {
+ color: inherit;
+}
+
+.title + .highlight {
+ margin-top: -0.75rem;
+}
+
+.title:not(.is-spaced) + .subtitle {
+ margin-top: -1.5rem;
+}
+
+.title.is-1 {
+ font-size: 3rem;
+}
+
+.title.is-2 {
+ font-size: 2.5rem;
+}
+
+.title.is-3 {
+ font-size: 2rem;
+}
+
+.title.is-4 {
+ font-size: 1.5rem;
+}
+
+.title.is-5 {
+ font-size: 1.25rem;
+}
+
+.title.is-6 {
+ font-size: 1rem;
+}
+
+.subtitle {
+ color: #4a4a4a;
+ font-size: 1.25rem;
+ font-weight: 300;
+ line-height: 1.25;
+}
+
+.subtitle strong {
+ color: #363636;
+}
+
+.subtitle:not(.is-spaced) + .title {
+ margin-top: -1.5rem;
+}
+
+.subtitle.is-1 {
+ font-size: 3rem;
+}
+
+.subtitle.is-2 {
+ font-size: 2.5rem;
+}
+
+.subtitle.is-3 {
+ font-size: 2rem;
+}
+
+.subtitle.is-4 {
+ font-size: 1.5rem;
+}
+
+.subtitle.is-5 {
+ font-size: 1.25rem;
+}
+
+.subtitle.is-6 {
+ font-size: 1rem;
+}
+
+.block:not(:last-child) {
+ margin-bottom: 1.5rem;
+}
+
+.container {
+ position: relative;
+}
+
+@media screen and (min-width: 1000px) {
+ .container {
+ margin: 0 auto;
+ max-width: 960px;
+ width: 960px;
+ }
+ .container.is-fluid {
+ margin: 0 20px;
+ max-width: none;
+ width: auto;
+ }
+}
+
+@media screen and (min-width: 1192px) {
+ .container {
+ max-width: 1152px;
+ width: 1152px;
+ }
+}
+
+@media screen and (min-width: 1384px) {
+ .container {
+ max-width: 1344px;
+ width: 1344px;
+ }
+}
+
+.delete {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ background-color: rgba(10, 10, 10, 0.2);
+ border: none;
+ border-radius: 290486px;
+ cursor: pointer;
+ display: inline-block;
+ font-size: 1rem;
+ height: 20px;
+ outline: none;
+ position: relative;
+ vertical-align: top;
+ width: 20px;
+}
+
+.delete:before, .delete:after {
+ background-color: white;
+ content: "";
+ display: block;
+ left: 50%;
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateX(-50%) translateY(-50%) rotate(45deg);
+ transform: translateX(-50%) translateY(-50%) rotate(45deg);
+ -webkit-transform-origin: center center;
+ transform-origin: center center;
+}
+
+.delete:before {
+ height: 2px;
+ width: 50%;
+}
+
+.delete:after {
+ height: 50%;
+ width: 2px;
+}
+
+.delete:hover, .delete:focus {
+ background-color: rgba(10, 10, 10, 0.3);
+}
+
+.delete:active {
+ background-color: rgba(10, 10, 10, 0.4);
+}
+
+.delete.is-small {
+ height: 16px;
+ width: 16px;
+}
+
+.delete.is-medium {
+ height: 24px;
+ width: 24px;
+}
+
+.delete.is-large {
+ height: 32px;
+ width: 32px;
+}
+
+.fa {
+ font-size: 21px;
+ text-align: center;
+ vertical-align: top;
+}
+
+.heading {
+ display: block;
+ font-size: 11px;
+ letter-spacing: 1px;
+ margin-bottom: 5px;
+ text-transform: uppercase;
+}
+
+.highlight {
+ font-weight: 400;
+ max-width: 100%;
+ overflow: hidden;
+ padding: 0;
+}
+
+.highlight:not(:last-child) {
+ margin-bottom: 1.5rem;
+}
+
+.highlight pre {
+ overflow: auto;
+ max-width: 100%;
+}
+
+.loader {
+ -webkit-animation: spinAround 500ms infinite linear;
+ animation: spinAround 500ms infinite linear;
+ border: 2px solid #dbdbdb;
+ border-radius: 290486px;
+ border-right-color: transparent;
+ border-top-color: transparent;
+ content: "";
+ display: block;
+ height: 1em;
+ position: relative;
+ width: 1em;
+}
+
+.number {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ background-color: whitesmoke;
+ border-radius: 290486px;
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ font-size: 1.25rem;
+ height: 2em;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ margin-right: 1.5rem;
+ min-width: 2.5em;
+ padding: 0.25rem 0.5rem;
+ text-align: center;
+ vertical-align: top;
+}
+
+.card-header {
+ -webkit-box-align: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+ box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1);
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.card-header-title {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ color: #363636;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ font-weight: 700;
+ padding: 0.75rem;
+}
+
+.card-header-icon {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ cursor: pointer;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ padding: 0.75rem;
+}
+
+.card-image {
+ display: block;
+ position: relative;
+}
+
+.card-content {
+ padding: 1.5rem;
+}
+
+.card-footer {
+ border-top: 1px solid #dbdbdb;
+ -webkit-box-align: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.card-footer-item {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-preferred-size: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ padding: 0.75rem;
+}
+
+.card-footer-item:not(:last-child) {
+ border-right: 1px solid #dbdbdb;
+}
+
+.card {
+ background-color: white;
+ box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1);
+ color: #4a4a4a;
+ max-width: 100%;
+ position: relative;
+}
+
+.card .media:not(:last-child) {
+ margin-bottom: 0.75rem;
+}
+
+.level-item {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.level-item .title,
+.level-item .subtitle {
+ margin-bottom: 0;
+}
+
+@media screen and (max-width: 768px) {
+ .level-item:not(:last-child) {
+ margin-bottom: 0.75rem;
+ }
+}
+
+.level-left,
+.level-right {
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.level-left .level-item:not(:last-child),
+.level-right .level-item:not(:last-child) {
+ margin-right: 0.75rem;
+}
+
+.level-left .level-item.is-flexible,
+.level-right .level-item.is-flexible {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.level-left {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+}
+
+@media screen and (max-width: 768px) {
+ .level-left + .level-right {
+ margin-top: 1.5rem;
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .level-left {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ }
+}
+
+.level-right {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: end;
+ -ms-flex-pack: end;
+ justify-content: flex-end;
+}
+
+@media screen and (min-width: 769px) {
+ .level-right {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ }
+}
+
+.level {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+}
+
+.level:not(:last-child) {
+ margin-bottom: 1.5rem;
+}
+
+.level code {
+ border-radius: 3px;
+}
+
+.level img {
+ display: inline-block;
+ vertical-align: top;
+}
+
+.level.is-mobile {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.level.is-mobile .level-left,
+.level.is-mobile .level-right {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.level.is-mobile .level-left + .level-right {
+ margin-top: 0;
+}
+
+.level.is-mobile .level-item:not(:last-child) {
+ margin-bottom: 0;
+}
+
+.level.is-mobile .level-item:not(.is-narrow) {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+@media screen and (min-width: 769px) {
+ .level {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ }
+ .level > .level-item:not(.is-narrow) {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ }
+}
+
+.media-left,
+.media-right {
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.media-left {
+ margin-right: 1rem;
+}
+
+.media-right {
+ margin-left: 1rem;
+}
+
+.media-content {
+ -ms-flex-preferred-size: auto;
+ flex-basis: auto;
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+ text-align: left;
+}
+
+.media {
+ -webkit-box-align: start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ text-align: left;
+}
+
+.media .content:not(:last-child) {
+ margin-bottom: 0.75rem;
+}
+
+.media .media {
+ border-top: 1px solid rgba(219, 219, 219, 0.5);
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ padding-top: 0.75rem;
+}
+
+.media .media .content:not(:last-child),
+.media .media .control:not(:last-child) {
+ margin-bottom: 0.5rem;
+}
+
+.media .media .media {
+ padding-top: 0.5rem;
+}
+
+.media .media .media + .media {
+ margin-top: 0.5rem;
+}
+
+.media + .media {
+ border-top: 1px solid rgba(219, 219, 219, 0.5);
+ margin-top: 1rem;
+ padding-top: 1rem;
+}
+
+.media.is-large + .media {
+ margin-top: 1.5rem;
+ padding-top: 1.5rem;
+}
+
+.menu {
+ font-size: 1rem;
+}
+
+.menu-list {
+ line-height: 1.25;
+}
+
+.menu-list a {
+ border-radius: 2px;
+ color: #4a4a4a;
+ display: block;
+ padding: 0.5em 0.75em;
+}
+
+.menu-list a:hover {
+ background-color: whitesmoke;
+ color: #00d1b2;
+}
+
+.menu-list a.is-active {
+ background-color: #00d1b2;
+ color: #fff;
+}
+
+.menu-list li ul {
+ border-left: 1px solid #dbdbdb;
+ margin: 0.75em;
+ padding-left: 0.75em;
+}
+
+.menu-label {
+ color: #7a7a7a;
+ font-size: 0.8em;
+ letter-spacing: 0.1em;
+ text-transform: uppercase;
+}
+
+.menu-label:not(:first-child) {
+ margin-top: 1em;
+}
+
+.menu-label:not(:last-child) {
+ margin-bottom: 1em;
+}
+
+.message {
+ background-color: whitesmoke;
+ border-radius: 3px;
+ font-size: 1rem;
+}
+
+.message:not(:last-child) {
+ margin-bottom: 1.5rem;
+}
+
+.message.is-white {
+ background-color: white;
+}
+
+.message.is-white .message-header {
+ background-color: white;
+ color: #0a0a0a;
+}
+
+.message.is-white .message-body {
+ border-color: white;
+ color: #4d4d4d;
+}
+
+.message.is-black {
+ background-color: #fafafa;
+}
+
+.message.is-black .message-header {
+ background-color: #0a0a0a;
+ color: white;
+}
+
+.message.is-black .message-body {
+ border-color: #0a0a0a;
+ color: #090909;
+}
+
+.message.is-light {
+ background-color: #fafafa;
+}
+
+.message.is-light .message-header {
+ background-color: whitesmoke;
+ color: #363636;
+}
+
+.message.is-light .message-body {
+ border-color: whitesmoke;
+ color: #505050;
+}
+
+.message.is-dark {
+ background-color: #fafafa;
+}
+
+.message.is-dark .message-header {
+ background-color: #363636;
+ color: whitesmoke;
+}
+
+.message.is-dark .message-body {
+ border-color: #363636;
+ color: #2a2a2a;
+}
+
+.message.is-primary {
+ background-color: #f5fffd;
+}
+
+.message.is-primary .message-header {
+ background-color: #00d1b2;
+ color: #fff;
+}
+
+.message.is-primary .message-body {
+ border-color: #00d1b2;
+ color: #021310;
+}
+
+.message.is-info {
+ background-color: #f6f9fe;
+}
+
+.message.is-info .message-header {
+ background-color: #3273dc;
+ color: #fff;
+}
+
+.message.is-info .message-body {
+ border-color: #3273dc;
+ color: #22509a;
+}
+
+.message.is-success {
+ background-color: #f6fef9;
+}
+
+.message.is-success .message-header {
+ background-color: #23d160;
+ color: #fff;
+}
+
+.message.is-success .message-body {
+ border-color: #23d160;
+ color: #0e301a;
+}
+
+.message.is-warning {
+ background-color: #fffdf5;
+}
+
+.message.is-warning .message-header {
+ background-color: #ffdd57;
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.message.is-warning .message-body {
+ border-color: #ffdd57;
+ color: #3b3108;
+}
+
+.message.is-danger {
+ background-color: #fff5f7;
+}
+
+.message.is-danger .message-header {
+ background-color: #ff3860;
+ color: #fff;
+}
+
+.message.is-danger .message-body {
+ border-color: #ff3860;
+ color: #cd0930;
+}
+
+.message-header {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ background-color: #4a4a4a;
+ border-radius: 3px 3px 0 0;
+ color: #fff;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ line-height: 1.25;
+ padding: 0.5em 0.75em;
+ position: relative;
+}
+
+.message-header a,
+.message-header strong {
+ color: inherit;
+}
+
+.message-header a {
+ text-decoration: underline;
+}
+
+.message-header .delete {
+ -webkit-box-flex: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ margin-left: 0.75em;
+}
+
+.message-header + .message-body {
+ border-top-left-radius: 0;
+ border-top-right-radius: 0;
+ border-top: none;
+}
+
+.message-body {
+ border: 1px solid #dbdbdb;
+ border-radius: 3px;
+ color: #4a4a4a;
+ padding: 1em 1.25em;
+}
+
+.message-body a,
+.message-body strong {
+ color: inherit;
+}
+
+.message-body a {
+ text-decoration: underline;
+}
+
+.message-body code,
+.message-body pre {
+ background: white;
+}
+
+.message-body pre code {
+ background: transparent;
+}
+
+.modal-background {
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ background-color: rgba(10, 10, 10, 0.86);
+}
+
+.modal-content,
+.modal-card {
+ margin: 0 20px;
+ max-height: calc(100vh - 160px);
+ overflow: auto;
+ position: relative;
+ width: 100%;
+}
+
+@media screen and (min-width: 769px) {
+ .modal-content,
+ .modal-card {
+ margin: 0 auto;
+ max-height: calc(100vh - 40px);
+ width: 640px;
+ }
+}
+
+.modal-close {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ background-color: rgba(10, 10, 10, 0.2);
+ border: none;
+ border-radius: 290486px;
+ cursor: pointer;
+ display: inline-block;
+ font-size: 1rem;
+ height: 20px;
+ outline: none;
+ position: relative;
+ vertical-align: top;
+ width: 20px;
+ background: none;
+ height: 40px;
+ position: fixed;
+ right: 20px;
+ top: 20px;
+ width: 40px;
+}
+
+.modal-close:before, .modal-close:after {
+ background-color: white;
+ content: "";
+ display: block;
+ left: 50%;
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translateX(-50%) translateY(-50%) rotate(45deg);
+ transform: translateX(-50%) translateY(-50%) rotate(45deg);
+ -webkit-transform-origin: center center;
+ transform-origin: center center;
+}
+
+.modal-close:before {
+ height: 2px;
+ width: 50%;
+}
+
+.modal-close:after {
+ height: 50%;
+ width: 2px;
+}
+
+.modal-close:hover, .modal-close:focus {
+ background-color: rgba(10, 10, 10, 0.3);
+}
+
+.modal-close:active {
+ background-color: rgba(10, 10, 10, 0.4);
+}
+
+.modal-close.is-small {
+ height: 16px;
+ width: 16px;
+}
+
+.modal-close.is-medium {
+ height: 24px;
+ width: 24px;
+}
+
+.modal-close.is-large {
+ height: 32px;
+ width: 32px;
+}
+
+.modal-card {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ max-height: calc(100vh - 40px);
+ overflow: hidden;
+}
+
+.modal-card-head,
+.modal-card-foot {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ background-color: whitesmoke;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ padding: 20px;
+ position: relative;
+}
+
+.modal-card-head {
+ border-bottom: 1px solid #dbdbdb;
+ border-top-left-radius: 5px;
+ border-top-right-radius: 5px;
+}
+
+.modal-card-title {
+ color: #363636;
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ font-size: 1.5rem;
+ line-height: 1;
+}
+
+.modal-card-foot {
+ border-bottom-left-radius: 5px;
+ border-bottom-right-radius: 5px;
+ border-top: 1px solid #dbdbdb;
+}
+
+.modal-card-foot .button:not(:last-child) {
+ margin-right: 10px;
+}
+
+.modal-card-body {
+ -webkit-overflow-scrolling: touch;
+ background-color: white;
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+ overflow: auto;
+ padding: 20px;
+}
+
+.modal {
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ display: none;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ overflow: hidden;
+ position: fixed;
+ z-index: 1986;
+}
+
+.modal.is-active {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.nav-toggle {
+ cursor: pointer;
+ display: block;
+ height: 3.25rem;
+ position: relative;
+ width: 3.25rem;
+}
+
+.nav-toggle span {
+ background-color: #4a4a4a;
+ display: block;
+ height: 1px;
+ left: 50%;
+ margin-left: -7px;
+ position: absolute;
+ top: 50%;
+ -webkit-transition: none 86ms ease-out;
+ transition: none 86ms ease-out;
+ -webkit-transition-property: background, left, opacity, -webkit-transform;
+ transition-property: background, left, opacity, -webkit-transform;
+ transition-property: background, left, opacity, transform;
+ transition-property: background, left, opacity, transform, -webkit-transform;
+ width: 15px;
+}
+
+.nav-toggle span:nth-child(1) {
+ margin-top: -6px;
+}
+
+.nav-toggle span:nth-child(2) {
+ margin-top: -1px;
+}
+
+.nav-toggle span:nth-child(3) {
+ margin-top: 4px;
+}
+
+.nav-toggle:hover {
+ background-color: whitesmoke;
+}
+
+.nav-toggle.is-active span {
+ background-color: #00d1b2;
+}
+
+.nav-toggle.is-active span:nth-child(1) {
+ margin-left: -5px;
+ -webkit-transform: rotate(45deg);
+ transform: rotate(45deg);
+ -webkit-transform-origin: left top;
+ transform-origin: left top;
+}
+
+.nav-toggle.is-active span:nth-child(2) {
+ opacity: 0;
+}
+
+.nav-toggle.is-active span:nth-child(3) {
+ margin-left: -5px;
+ -webkit-transform: rotate(-45deg);
+ transform: rotate(-45deg);
+ -webkit-transform-origin: left bottom;
+ transform-origin: left bottom;
+}
+
+@media screen and (min-width: 769px) {
+ .nav-toggle {
+ display: none;
+ }
+}
+
+.nav-item {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ font-size: 1rem;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ line-height: 1.5;
+ padding: 0.5rem 0.75rem;
+}
+
+.nav-item a {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.nav-item img {
+ max-height: 1.75rem;
+}
+
+.nav-item .button + .button {
+ margin-left: 0.75rem;
+}
+
+.nav-item .tag:first-child:not(:last-child) {
+ margin-right: 0.5rem;
+}
+
+.nav-item .tag:last-child:not(:first-child) {
+ margin-left: 0.5rem;
+}
+
+@media screen and (max-width: 768px) {
+ .nav-item {
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ }
+}
+
+.nav-item a,
+a.nav-item {
+ color: #7a7a7a;
+}
+
+.nav-item a:hover,
+a.nav-item:hover {
+ color: #363636;
+}
+
+.nav-item a.is-active,
+a.nav-item.is-active {
+ color: #363636;
+}
+
+.nav-item a.is-tab,
+a.nav-item.is-tab {
+ border-bottom: 1px solid transparent;
+ border-top: 1px solid transparent;
+ padding-bottom: calc(0.75rem - 1px);
+ padding-left: 1rem;
+ padding-right: 1rem;
+ padding-top: calc(0.75rem - 1px);
+}
+
+.nav-item a.is-tab:hover,
+a.nav-item.is-tab:hover {
+ border-bottom-color: #00d1b2;
+ border-top-color: transparent;
+}
+
+.nav-item a.is-tab.is-active,
+a.nav-item.is-tab.is-active {
+ border-bottom: 3px solid #00d1b2;
+ color: #00d1b2;
+ padding-bottom: calc(0.75rem - 3px);
+}
+
+@media screen and (min-width: 1000px) {
+ .nav-item a.is-brand,
+ a.nav-item.is-brand {
+ padding-left: 0;
+ }
+}
+
+@media screen and (max-width: 768px) {
+ .nav-menu {
+ background-color: white;
+ box-shadow: 0 4px 7px rgba(10, 10, 10, 0.1);
+ left: 0;
+ display: none;
+ right: 0;
+ top: 100%;
+ position: absolute;
+ }
+ .nav-menu .nav-item {
+ border-top: 1px solid rgba(219, 219, 219, 0.5);
+ padding: 0.75rem;
+ }
+ .nav-menu.is-active {
+ display: block;
+ }
+}
+
+@media screen and (min-width: 769px) and (max-width: 999px) {
+ .nav-menu {
+ padding-right: 1.5rem;
+ }
+}
+
+.nav-left,
+.nav-right {
+ -webkit-box-align: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+ -ms-flex-preferred-size: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.nav-left {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ overflow: hidden;
+ overflow-x: auto;
+ white-space: nowrap;
+}
+
+.nav-center {
+ -webkit-box-align: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.nav-right {
+ -webkit-box-pack: end;
+ -ms-flex-pack: end;
+ justify-content: flex-end;
+}
+
+@media screen and (min-width: 769px) {
+ .nav-right {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ }
+}
+
+.nav {
+ -webkit-box-align: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+ background-color: white;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ min-height: 3.25rem;
+ position: relative;
+ text-align: center;
+ z-index: 2;
+}
+
+.nav > .container {
+ -webkit-box-align: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ min-height: 3.25rem;
+}
+
+.nav.has-shadow {
+ box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1);
+}
+
+@media screen and (max-width: 768px) {
+ .nav > .container {
+ width: 100%;
+ }
+}
+
+.pagination {
+ font-size: 1rem;
+}
+
+.pagination.is-small {
+ font-size: 0.75rem;
+}
+
+.pagination.is-medium {
+ font-size: 1.25rem;
+}
+
+.pagination.is-large {
+ font-size: 1.5rem;
+}
+
+.pagination,
+.pagination-list {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ text-align: center;
+}
+
+.pagination-previous,
+.pagination-next,
+.pagination-link,
+.pagination-ellipsis {
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ border: none;
+ border-radius: 3px;
+ box-shadow: none;
+ display: -webkit-inline-box;
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ font-size: 1rem;
+ height: 2.25em;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ line-height: 1.5;
+ padding-bottom: 0.375em;
+ padding-left: 0.625em;
+ padding-right: 0.625em;
+ padding-top: 0.375em;
+ position: relative;
+ vertical-align: top;
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ font-size: 1em;
+ padding-left: 0.5em;
+ padding-right: 0.5em;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ text-align: center;
+}
+
+.pagination-previous:focus, .pagination-previous.is-focused, .pagination-previous:active, .pagination-previous.is-active,
+.pagination-next:focus,
+.pagination-next.is-focused,
+.pagination-next:active,
+.pagination-next.is-active,
+.pagination-link:focus,
+.pagination-link.is-focused,
+.pagination-link:active,
+.pagination-link.is-active,
+.pagination-ellipsis:focus,
+.pagination-ellipsis.is-focused,
+.pagination-ellipsis:active,
+.pagination-ellipsis.is-active {
+ outline: none;
+}
+
+.pagination-previous[disabled], .pagination-previous.is-disabled,
+.pagination-next[disabled],
+.pagination-next.is-disabled,
+.pagination-link[disabled],
+.pagination-link.is-disabled,
+.pagination-ellipsis[disabled],
+.pagination-ellipsis.is-disabled {
+ pointer-events: none;
+}
+
+.pagination-previous,
+.pagination-next,
+.pagination-link {
+ border: 1px solid #dbdbdb;
+ min-width: 2.25em;
+}
+
+.pagination-previous:hover,
+.pagination-next:hover,
+.pagination-link:hover {
+ border-color: #b5b5b5;
+ color: #363636;
+}
+
+.pagination-previous:focus,
+.pagination-next:focus,
+.pagination-link:focus {
+ border-color: #00d1b2;
+}
+
+.pagination-previous:active,
+.pagination-next:active,
+.pagination-link:active {
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2);
+}
+
+.pagination-previous[disabled], .pagination-previous.is-disabled,
+.pagination-next[disabled],
+.pagination-next.is-disabled,
+.pagination-link[disabled],
+.pagination-link.is-disabled {
+ background: #dbdbdb;
+ color: #7a7a7a;
+ opacity: 0.5;
+ pointer-events: none;
+}
+
+.pagination-previous,
+.pagination-next {
+ padding-left: 0.75em;
+ padding-right: 0.75em;
+}
+
+.pagination-link.is-current {
+ background-color: #00d1b2;
+ border-color: #00d1b2;
+ color: #fff;
+}
+
+.pagination-ellipsis {
+ color: #b5b5b5;
+ pointer-events: none;
+}
+
+.pagination-list li:not(:first-child) {
+ margin-left: 0.375rem;
+}
+
+@media screen and (max-width: 768px) {
+ .pagination {
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ }
+ .pagination-previous,
+ .pagination-next {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+ width: calc(50% - 0.375rem);
+ }
+ .pagination-next {
+ margin-left: 0.75rem;
+ }
+ .pagination-list {
+ margin-top: 0.75rem;
+ }
+ .pagination-list li {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .pagination-list {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ -webkit-box-ordinal-group: 2;
+ -ms-flex-order: 1;
+ order: 1;
+ }
+ .pagination-previous,
+ .pagination-next {
+ margin-left: 0.75rem;
+ }
+ .pagination-previous {
+ -webkit-box-ordinal-group: 3;
+ -ms-flex-order: 2;
+ order: 2;
+ }
+ .pagination-next {
+ -webkit-box-ordinal-group: 4;
+ -ms-flex-order: 3;
+ order: 3;
+ }
+ .pagination {
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ }
+ .pagination.is-centered .pagination-previous {
+ margin-left: 0;
+ -webkit-box-ordinal-group: 2;
+ -ms-flex-order: 1;
+ order: 1;
+ }
+ .pagination.is-centered .pagination-list {
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -webkit-box-ordinal-group: 3;
+ -ms-flex-order: 2;
+ order: 2;
+ }
+ .pagination.is-centered .pagination-next {
+ -webkit-box-ordinal-group: 4;
+ -ms-flex-order: 3;
+ order: 3;
+ }
+ .pagination.is-right .pagination-previous {
+ margin-left: 0;
+ -webkit-box-ordinal-group: 2;
+ -ms-flex-order: 1;
+ order: 1;
+ }
+ .pagination.is-right .pagination-next {
+ -webkit-box-ordinal-group: 3;
+ -ms-flex-order: 2;
+ order: 2;
+ margin-right: 0.75rem;
+ }
+ .pagination.is-right .pagination-list {
+ -webkit-box-pack: end;
+ -ms-flex-pack: end;
+ justify-content: flex-end;
+ -webkit-box-ordinal-group: 4;
+ -ms-flex-order: 3;
+ order: 3;
+ }
+}
+
+.panel {
+ font-size: 1rem;
+}
+
+.panel:not(:last-child) {
+ margin-bottom: 1.5rem;
+}
+
+.panel-heading,
+.panel-tabs,
+.panel-block {
+ border-bottom: 1px solid #dbdbdb;
+ border-left: 1px solid #dbdbdb;
+ border-right: 1px solid #dbdbdb;
+}
+
+.panel-heading:first-child,
+.panel-tabs:first-child,
+.panel-block:first-child {
+ border-top: 1px solid #dbdbdb;
+}
+
+.panel-heading {
+ background-color: whitesmoke;
+ border-radius: 3px 3px 0 0;
+ color: #363636;
+ font-size: 1.25em;
+ font-weight: 300;
+ line-height: 1.25;
+ padding: 0.5em 0.75em;
+}
+
+.panel-tabs {
+ -webkit-box-align: end;
+ -ms-flex-align: end;
+ align-items: flex-end;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ font-size: 0.875em;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.panel-tabs a {
+ border-bottom: 1px solid #dbdbdb;
+ margin-bottom: -1px;
+ padding: 0.5em;
+}
+
+.panel-tabs a.is-active {
+ border-bottom-color: #4a4a4a;
+ color: #363636;
+}
+
+.panel-list a {
+ color: #4a4a4a;
+}
+
+.panel-list a:hover {
+ color: #00d1b2;
+}
+
+.panel-block {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ color: #363636;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+ padding: 0.5em 0.75em;
+}
+
+.panel-block input[type="checkbox"] {
+ margin-right: 0.75em;
+}
+
+.panel-block > .control {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+ width: 100%;
+}
+
+.panel-block.is-active {
+ border-left-color: #00d1b2;
+ color: #363636;
+}
+
+.panel-block.is-active .panel-icon {
+ color: #00d1b2;
+}
+
+a.panel-block,
+label.panel-block {
+ cursor: pointer;
+}
+
+a.panel-block:hover,
+label.panel-block:hover {
+ background-color: whitesmoke;
+}
+
+.panel-icon {
+ display: inline-block;
+ font-size: 14px;
+ height: 1em;
+ line-height: 1em;
+ text-align: center;
+ vertical-align: top;
+ width: 1em;
+ color: #7a7a7a;
+ margin-right: 0.75em;
+}
+
+.panel-icon .fa {
+ font-size: inherit;
+ line-height: inherit;
+}
+
+.tabs {
+ -webkit-touch-callout: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-box-align: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ font-size: 1rem;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+ overflow: hidden;
+ overflow-x: auto;
+ white-space: nowrap;
+}
+
+.tabs:not(:last-child) {
+ margin-bottom: 1.5rem;
+}
+
+.tabs a {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ border-bottom: 1px solid #dbdbdb;
+ color: #4a4a4a;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ margin-bottom: -1px;
+ padding: 0.5em 1em;
+ vertical-align: top;
+}
+
+.tabs a:hover {
+ border-bottom-color: #363636;
+ color: #363636;
+}
+
+.tabs li {
+ display: block;
+}
+
+.tabs li.is-active a {
+ border-bottom-color: #00d1b2;
+ color: #00d1b2;
+}
+
+.tabs ul {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ border-bottom: 1px solid #dbdbdb;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ -webkit-box-pack: start;
+ -ms-flex-pack: start;
+ justify-content: flex-start;
+}
+
+.tabs ul.is-left {
+ padding-right: 0.75em;
+}
+
+.tabs ul.is-center {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ padding-left: 0.75em;
+ padding-right: 0.75em;
+}
+
+.tabs ul.is-right {
+ -webkit-box-pack: end;
+ -ms-flex-pack: end;
+ justify-content: flex-end;
+ padding-left: 0.75em;
+}
+
+.tabs .icon:first-child {
+ margin-right: 0.5em;
+}
+
+.tabs .icon:last-child {
+ margin-left: 0.5em;
+}
+
+.tabs.is-centered ul {
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.tabs.is-right ul {
+ -webkit-box-pack: end;
+ -ms-flex-pack: end;
+ justify-content: flex-end;
+}
+
+.tabs.is-boxed a {
+ border: 1px solid transparent;
+ border-radius: 3px 3px 0 0;
+}
+
+.tabs.is-boxed a:hover {
+ background-color: whitesmoke;
+ border-bottom-color: #dbdbdb;
+}
+
+.tabs.is-boxed li.is-active a {
+ background-color: white;
+ border-color: #dbdbdb;
+ border-bottom-color: transparent !important;
+}
+
+.tabs.is-fullwidth li {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.tabs.is-toggle a {
+ border: 1px solid #dbdbdb;
+ margin-bottom: 0;
+ position: relative;
+}
+
+.tabs.is-toggle a:hover {
+ background-color: whitesmoke;
+ border-color: #b5b5b5;
+ z-index: 2;
+}
+
+.tabs.is-toggle li + li {
+ margin-left: -1px;
+}
+
+.tabs.is-toggle li:first-child a {
+ border-radius: 3px 0 0 3px;
+}
+
+.tabs.is-toggle li:last-child a {
+ border-radius: 0 3px 3px 0;
+}
+
+.tabs.is-toggle li.is-active a {
+ background-color: #00d1b2;
+ border-color: #00d1b2;
+ color: #fff;
+ z-index: 1;
+}
+
+.tabs.is-toggle ul {
+ border-bottom: none;
+}
+
+.tabs.is-small {
+ font-size: 0.75rem;
+}
+
+.tabs.is-medium {
+ font-size: 1.25rem;
+}
+
+.tabs.is-large {
+ font-size: 1.5rem;
+}
+
+.column {
+ display: block;
+ -ms-flex-preferred-size: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+ padding: 0.75rem;
+}
+
+.columns.is-mobile > .column.is-narrow {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+}
+
+.columns.is-mobile > .column.is-full {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 100%;
+}
+
+.columns.is-mobile > .column.is-three-quarters {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 75%;
+}
+
+.columns.is-mobile > .column.is-two-thirds {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 66.6666%;
+}
+
+.columns.is-mobile > .column.is-half {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 50%;
+}
+
+.columns.is-mobile > .column.is-one-third {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 33.3333%;
+}
+
+.columns.is-mobile > .column.is-one-quarter {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 25%;
+}
+
+.columns.is-mobile > .column.is-offset-three-quarters {
+ margin-left: 75%;
+}
+
+.columns.is-mobile > .column.is-offset-two-thirds {
+ margin-left: 66.6666%;
+}
+
+.columns.is-mobile > .column.is-offset-half {
+ margin-left: 50%;
+}
+
+.columns.is-mobile > .column.is-offset-one-third {
+ margin-left: 33.3333%;
+}
+
+.columns.is-mobile > .column.is-offset-one-quarter {
+ margin-left: 25%;
+}
+
+.columns.is-mobile > .column.is-1 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 8.33333%;
+}
+
+.columns.is-mobile > .column.is-offset-1 {
+ margin-left: 8.33333%;
+}
+
+.columns.is-mobile > .column.is-2 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 16.66667%;
+}
+
+.columns.is-mobile > .column.is-offset-2 {
+ margin-left: 16.66667%;
+}
+
+.columns.is-mobile > .column.is-3 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 25%;
+}
+
+.columns.is-mobile > .column.is-offset-3 {
+ margin-left: 25%;
+}
+
+.columns.is-mobile > .column.is-4 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 33.33333%;
+}
+
+.columns.is-mobile > .column.is-offset-4 {
+ margin-left: 33.33333%;
+}
+
+.columns.is-mobile > .column.is-5 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 41.66667%;
+}
+
+.columns.is-mobile > .column.is-offset-5 {
+ margin-left: 41.66667%;
+}
+
+.columns.is-mobile > .column.is-6 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 50%;
+}
+
+.columns.is-mobile > .column.is-offset-6 {
+ margin-left: 50%;
+}
+
+.columns.is-mobile > .column.is-7 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 58.33333%;
+}
+
+.columns.is-mobile > .column.is-offset-7 {
+ margin-left: 58.33333%;
+}
+
+.columns.is-mobile > .column.is-8 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 66.66667%;
+}
+
+.columns.is-mobile > .column.is-offset-8 {
+ margin-left: 66.66667%;
+}
+
+.columns.is-mobile > .column.is-9 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 75%;
+}
+
+.columns.is-mobile > .column.is-offset-9 {
+ margin-left: 75%;
+}
+
+.columns.is-mobile > .column.is-10 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 83.33333%;
+}
+
+.columns.is-mobile > .column.is-offset-10 {
+ margin-left: 83.33333%;
+}
+
+.columns.is-mobile > .column.is-11 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 91.66667%;
+}
+
+.columns.is-mobile > .column.is-offset-11 {
+ margin-left: 91.66667%;
+}
+
+.columns.is-mobile > .column.is-12 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 100%;
+}
+
+.columns.is-mobile > .column.is-offset-12 {
+ margin-left: 100%;
+}
+
+@media screen and (max-width: 768px) {
+ .column.is-narrow-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ }
+ .column.is-full-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 100%;
+ }
+ .column.is-three-quarters-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 75%;
+ }
+ .column.is-two-thirds-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 66.6666%;
+ }
+ .column.is-half-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 50%;
+ }
+ .column.is-one-third-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 33.3333%;
+ }
+ .column.is-one-quarter-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 25%;
+ }
+ .column.is-offset-three-quarters-mobile {
+ margin-left: 75%;
+ }
+ .column.is-offset-two-thirds-mobile {
+ margin-left: 66.6666%;
+ }
+ .column.is-offset-half-mobile {
+ margin-left: 50%;
+ }
+ .column.is-offset-one-third-mobile {
+ margin-left: 33.3333%;
+ }
+ .column.is-offset-one-quarter-mobile {
+ margin-left: 25%;
+ }
+ .column.is-1-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 8.33333%;
+ }
+ .column.is-offset-1-mobile {
+ margin-left: 8.33333%;
+ }
+ .column.is-2-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 16.66667%;
+ }
+ .column.is-offset-2-mobile {
+ margin-left: 16.66667%;
+ }
+ .column.is-3-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 25%;
+ }
+ .column.is-offset-3-mobile {
+ margin-left: 25%;
+ }
+ .column.is-4-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 33.33333%;
+ }
+ .column.is-offset-4-mobile {
+ margin-left: 33.33333%;
+ }
+ .column.is-5-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 41.66667%;
+ }
+ .column.is-offset-5-mobile {
+ margin-left: 41.66667%;
+ }
+ .column.is-6-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 50%;
+ }
+ .column.is-offset-6-mobile {
+ margin-left: 50%;
+ }
+ .column.is-7-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 58.33333%;
+ }
+ .column.is-offset-7-mobile {
+ margin-left: 58.33333%;
+ }
+ .column.is-8-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 66.66667%;
+ }
+ .column.is-offset-8-mobile {
+ margin-left: 66.66667%;
+ }
+ .column.is-9-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 75%;
+ }
+ .column.is-offset-9-mobile {
+ margin-left: 75%;
+ }
+ .column.is-10-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 83.33333%;
+ }
+ .column.is-offset-10-mobile {
+ margin-left: 83.33333%;
+ }
+ .column.is-11-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 91.66667%;
+ }
+ .column.is-offset-11-mobile {
+ margin-left: 91.66667%;
+ }
+ .column.is-12-mobile {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 100%;
+ }
+ .column.is-offset-12-mobile {
+ margin-left: 100%;
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .column.is-narrow, .column.is-narrow-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ }
+ .column.is-full, .column.is-full-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 100%;
+ }
+ .column.is-three-quarters, .column.is-three-quarters-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 75%;
+ }
+ .column.is-two-thirds, .column.is-two-thirds-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 66.6666%;
+ }
+ .column.is-half, .column.is-half-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 50%;
+ }
+ .column.is-one-third, .column.is-one-third-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 33.3333%;
+ }
+ .column.is-one-quarter, .column.is-one-quarter-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 25%;
+ }
+ .column.is-offset-three-quarters, .column.is-offset-three-quarters-tablet {
+ margin-left: 75%;
+ }
+ .column.is-offset-two-thirds, .column.is-offset-two-thirds-tablet {
+ margin-left: 66.6666%;
+ }
+ .column.is-offset-half, .column.is-offset-half-tablet {
+ margin-left: 50%;
+ }
+ .column.is-offset-one-third, .column.is-offset-one-third-tablet {
+ margin-left: 33.3333%;
+ }
+ .column.is-offset-one-quarter, .column.is-offset-one-quarter-tablet {
+ margin-left: 25%;
+ }
+ .column.is-1, .column.is-1-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 8.33333%;
+ }
+ .column.is-offset-1, .column.is-offset-1-tablet {
+ margin-left: 8.33333%;
+ }
+ .column.is-2, .column.is-2-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 16.66667%;
+ }
+ .column.is-offset-2, .column.is-offset-2-tablet {
+ margin-left: 16.66667%;
+ }
+ .column.is-3, .column.is-3-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 25%;
+ }
+ .column.is-offset-3, .column.is-offset-3-tablet {
+ margin-left: 25%;
+ }
+ .column.is-4, .column.is-4-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 33.33333%;
+ }
+ .column.is-offset-4, .column.is-offset-4-tablet {
+ margin-left: 33.33333%;
+ }
+ .column.is-5, .column.is-5-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 41.66667%;
+ }
+ .column.is-offset-5, .column.is-offset-5-tablet {
+ margin-left: 41.66667%;
+ }
+ .column.is-6, .column.is-6-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 50%;
+ }
+ .column.is-offset-6, .column.is-offset-6-tablet {
+ margin-left: 50%;
+ }
+ .column.is-7, .column.is-7-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 58.33333%;
+ }
+ .column.is-offset-7, .column.is-offset-7-tablet {
+ margin-left: 58.33333%;
+ }
+ .column.is-8, .column.is-8-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 66.66667%;
+ }
+ .column.is-offset-8, .column.is-offset-8-tablet {
+ margin-left: 66.66667%;
+ }
+ .column.is-9, .column.is-9-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 75%;
+ }
+ .column.is-offset-9, .column.is-offset-9-tablet {
+ margin-left: 75%;
+ }
+ .column.is-10, .column.is-10-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 83.33333%;
+ }
+ .column.is-offset-10, .column.is-offset-10-tablet {
+ margin-left: 83.33333%;
+ }
+ .column.is-11, .column.is-11-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 91.66667%;
+ }
+ .column.is-offset-11, .column.is-offset-11-tablet {
+ margin-left: 91.66667%;
+ }
+ .column.is-12, .column.is-12-tablet {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 100%;
+ }
+ .column.is-offset-12, .column.is-offset-12-tablet {
+ margin-left: 100%;
+ }
+}
+
+@media screen and (min-width: 1000px) {
+ .column.is-narrow-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ }
+ .column.is-full-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 100%;
+ }
+ .column.is-three-quarters-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 75%;
+ }
+ .column.is-two-thirds-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 66.6666%;
+ }
+ .column.is-half-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 50%;
+ }
+ .column.is-one-third-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 33.3333%;
+ }
+ .column.is-one-quarter-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 25%;
+ }
+ .column.is-offset-three-quarters-desktop {
+ margin-left: 75%;
+ }
+ .column.is-offset-two-thirds-desktop {
+ margin-left: 66.6666%;
+ }
+ .column.is-offset-half-desktop {
+ margin-left: 50%;
+ }
+ .column.is-offset-one-third-desktop {
+ margin-left: 33.3333%;
+ }
+ .column.is-offset-one-quarter-desktop {
+ margin-left: 25%;
+ }
+ .column.is-1-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 8.33333%;
+ }
+ .column.is-offset-1-desktop {
+ margin-left: 8.33333%;
+ }
+ .column.is-2-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 16.66667%;
+ }
+ .column.is-offset-2-desktop {
+ margin-left: 16.66667%;
+ }
+ .column.is-3-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 25%;
+ }
+ .column.is-offset-3-desktop {
+ margin-left: 25%;
+ }
+ .column.is-4-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 33.33333%;
+ }
+ .column.is-offset-4-desktop {
+ margin-left: 33.33333%;
+ }
+ .column.is-5-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 41.66667%;
+ }
+ .column.is-offset-5-desktop {
+ margin-left: 41.66667%;
+ }
+ .column.is-6-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 50%;
+ }
+ .column.is-offset-6-desktop {
+ margin-left: 50%;
+ }
+ .column.is-7-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 58.33333%;
+ }
+ .column.is-offset-7-desktop {
+ margin-left: 58.33333%;
+ }
+ .column.is-8-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 66.66667%;
+ }
+ .column.is-offset-8-desktop {
+ margin-left: 66.66667%;
+ }
+ .column.is-9-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 75%;
+ }
+ .column.is-offset-9-desktop {
+ margin-left: 75%;
+ }
+ .column.is-10-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 83.33333%;
+ }
+ .column.is-offset-10-desktop {
+ margin-left: 83.33333%;
+ }
+ .column.is-11-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 91.66667%;
+ }
+ .column.is-offset-11-desktop {
+ margin-left: 91.66667%;
+ }
+ .column.is-12-desktop {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 100%;
+ }
+ .column.is-offset-12-desktop {
+ margin-left: 100%;
+ }
+}
+
+@media screen and (min-width: 1192px) {
+ .column.is-narrow-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ }
+ .column.is-full-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 100%;
+ }
+ .column.is-three-quarters-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 75%;
+ }
+ .column.is-two-thirds-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 66.6666%;
+ }
+ .column.is-half-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 50%;
+ }
+ .column.is-one-third-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 33.3333%;
+ }
+ .column.is-one-quarter-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 25%;
+ }
+ .column.is-offset-three-quarters-widescreen {
+ margin-left: 75%;
+ }
+ .column.is-offset-two-thirds-widescreen {
+ margin-left: 66.6666%;
+ }
+ .column.is-offset-half-widescreen {
+ margin-left: 50%;
+ }
+ .column.is-offset-one-third-widescreen {
+ margin-left: 33.3333%;
+ }
+ .column.is-offset-one-quarter-widescreen {
+ margin-left: 25%;
+ }
+ .column.is-1-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 8.33333%;
+ }
+ .column.is-offset-1-widescreen {
+ margin-left: 8.33333%;
+ }
+ .column.is-2-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 16.66667%;
+ }
+ .column.is-offset-2-widescreen {
+ margin-left: 16.66667%;
+ }
+ .column.is-3-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 25%;
+ }
+ .column.is-offset-3-widescreen {
+ margin-left: 25%;
+ }
+ .column.is-4-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 33.33333%;
+ }
+ .column.is-offset-4-widescreen {
+ margin-left: 33.33333%;
+ }
+ .column.is-5-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 41.66667%;
+ }
+ .column.is-offset-5-widescreen {
+ margin-left: 41.66667%;
+ }
+ .column.is-6-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 50%;
+ }
+ .column.is-offset-6-widescreen {
+ margin-left: 50%;
+ }
+ .column.is-7-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 58.33333%;
+ }
+ .column.is-offset-7-widescreen {
+ margin-left: 58.33333%;
+ }
+ .column.is-8-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 66.66667%;
+ }
+ .column.is-offset-8-widescreen {
+ margin-left: 66.66667%;
+ }
+ .column.is-9-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 75%;
+ }
+ .column.is-offset-9-widescreen {
+ margin-left: 75%;
+ }
+ .column.is-10-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 83.33333%;
+ }
+ .column.is-offset-10-widescreen {
+ margin-left: 83.33333%;
+ }
+ .column.is-11-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 91.66667%;
+ }
+ .column.is-offset-11-widescreen {
+ margin-left: 91.66667%;
+ }
+ .column.is-12-widescreen {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 100%;
+ }
+ .column.is-offset-12-widescreen {
+ margin-left: 100%;
+ }
+}
+
+.columns {
+ margin-left: -0.75rem;
+ margin-right: -0.75rem;
+ margin-top: -0.75rem;
+}
+
+.columns:last-child {
+ margin-bottom: -0.75rem;
+}
+
+.columns:not(:last-child) {
+ margin-bottom: 0.75rem;
+}
+
+.columns.is-centered {
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.columns.is-gapless {
+ margin-left: 0;
+ margin-right: 0;
+ margin-top: 0;
+}
+
+.columns.is-gapless:last-child {
+ margin-bottom: 0;
+}
+
+.columns.is-gapless:not(:last-child) {
+ margin-bottom: 1.5rem;
+}
+
+.columns.is-gapless > .column {
+ margin: 0;
+ padding: 0;
+}
+
+@media screen and (min-width: 769px) {
+ .columns.is-grid {
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+ }
+ .columns.is-grid > .column {
+ max-width: 33.3333%;
+ padding: 0.75rem;
+ width: 33.3333%;
+ }
+ .columns.is-grid > .column + .column {
+ margin-left: 0;
+ }
+}
+
+.columns.is-mobile {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.columns.is-multiline {
+ -ms-flex-wrap: wrap;
+ flex-wrap: wrap;
+}
+
+.columns.is-vcentered {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+@media screen and (min-width: 769px) {
+ .columns:not(.is-desktop) {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ }
+}
+
+@media screen and (min-width: 1000px) {
+ .columns.is-desktop {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ }
+}
+
+.tile {
+ -webkit-box-align: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+ display: block;
+ -ms-flex-preferred-size: 0;
+ flex-basis: 0;
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+ min-height: -webkit-min-content;
+ min-height: -moz-min-content;
+ min-height: min-content;
+}
+
+.tile.is-ancestor {
+ margin-left: -0.75rem;
+ margin-right: -0.75rem;
+ margin-top: -0.75rem;
+}
+
+.tile.is-ancestor:last-child {
+ margin-bottom: -0.75rem;
+}
+
+.tile.is-ancestor:not(:last-child) {
+ margin-bottom: 0.75rem;
+}
+
+.tile.is-child {
+ margin: 0 !important;
+}
+
+.tile.is-parent {
+ padding: 0.75rem;
+}
+
+.tile.is-vertical {
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+}
+
+.tile.is-vertical > .tile.is-child:not(:last-child) {
+ margin-bottom: 1.5rem !important;
+}
+
+@media screen and (min-width: 769px) {
+ .tile:not(.is-child) {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ }
+ .tile.is-1 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 8.33333%;
+ }
+ .tile.is-2 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 16.66667%;
+ }
+ .tile.is-3 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 25%;
+ }
+ .tile.is-4 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 33.33333%;
+ }
+ .tile.is-5 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 41.66667%;
+ }
+ .tile.is-6 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 50%;
+ }
+ .tile.is-7 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 58.33333%;
+ }
+ .tile.is-8 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 66.66667%;
+ }
+ .tile.is-9 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 75%;
+ }
+ .tile.is-10 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 83.33333%;
+ }
+ .tile.is-11 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 91.66667%;
+ }
+ .tile.is-12 {
+ -webkit-box-flex: 0;
+ -ms-flex: none;
+ flex: none;
+ width: 100%;
+ }
+}
+
+.hero-video {
+ bottom: 0;
+ left: 0;
+ position: absolute;
+ right: 0;
+ top: 0;
+ overflow: hidden;
+}
+
+.hero-video video {
+ left: 50%;
+ min-height: 100%;
+ min-width: 100%;
+ position: absolute;
+ top: 50%;
+ -webkit-transform: translate3d(-50%, -50%, 0);
+ transform: translate3d(-50%, -50%, 0);
+}
+
+.hero-video.is-transparent {
+ opacity: 0.3;
+}
+
+@media screen and (max-width: 768px) {
+ .hero-video {
+ display: none;
+ }
+}
+
+.hero-buttons {
+ margin-top: 1.5rem;
+}
+
+@media screen and (max-width: 768px) {
+ .hero-buttons .button {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ }
+ .hero-buttons .button:not(:last-child) {
+ margin-bottom: 0.75rem;
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .hero-buttons {
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-pack: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ }
+ .hero-buttons .button:not(:last-child) {
+ margin-right: 1.5rem;
+ }
+}
+
+.hero-head,
+.hero-foot {
+ -webkit-box-flex: 0;
+ -ms-flex-positive: 0;
+ flex-grow: 0;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+}
+
+.hero-body {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 0;
+ flex-shrink: 0;
+ padding: 3rem 1.5rem;
+}
+
+@media screen and (min-width: 1192px) {
+ .hero-body {
+ padding-left: 0;
+ padding-right: 0;
+ }
+}
+
+.hero {
+ -webkit-box-align: stretch;
+ -ms-flex-align: stretch;
+ align-items: stretch;
+ background-color: white;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-orient: vertical;
+ -webkit-box-direction: normal;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-box-pack: justify;
+ -ms-flex-pack: justify;
+ justify-content: space-between;
+}
+
+.hero .nav {
+ background: none;
+ box-shadow: 0 1px 0 rgba(219, 219, 219, 0.3);
+}
+
+.hero .tabs ul {
+ border-bottom: none;
+}
+
+.hero.is-white {
+ background-color: white;
+ color: #0a0a0a;
+}
+
+.hero.is-white a,
+.hero.is-white strong {
+ color: inherit;
+}
+
+.hero.is-white .title {
+ color: #0a0a0a;
+}
+
+.hero.is-white .subtitle {
+ color: rgba(10, 10, 10, 0.9);
+}
+
+.hero.is-white .subtitle a,
+.hero.is-white .subtitle strong {
+ color: #0a0a0a;
+}
+
+.hero.is-white .nav {
+ box-shadow: 0 1px 0 rgba(10, 10, 10, 0.2);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-white .nav-menu {
+ background-color: white;
+ }
+}
+
+.hero.is-white a.nav-item,
+.hero.is-white .nav-item a:not(.button) {
+ color: rgba(10, 10, 10, 0.7);
+}
+
+.hero.is-white a.nav-item:hover, .hero.is-white a.nav-item.is-active,
+.hero.is-white .nav-item a:not(.button):hover,
+.hero.is-white .nav-item a:not(.button).is-active {
+ color: #0a0a0a;
+}
+
+.hero.is-white .tabs a {
+ color: #0a0a0a;
+ opacity: 0.9;
+}
+
+.hero.is-white .tabs a:hover {
+ opacity: 1;
+}
+
+.hero.is-white .tabs li.is-active a {
+ opacity: 1;
+}
+
+.hero.is-white .tabs.is-boxed a, .hero.is-white .tabs.is-toggle a {
+ color: #0a0a0a;
+}
+
+.hero.is-white .tabs.is-boxed a:hover, .hero.is-white .tabs.is-toggle a:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+}
+
+.hero.is-white .tabs.is-boxed li.is-active a, .hero.is-white .tabs.is-boxed li.is-active a:hover, .hero.is-white .tabs.is-toggle li.is-active a, .hero.is-white .tabs.is-toggle li.is-active a:hover {
+ background-color: #0a0a0a;
+ border-color: #0a0a0a;
+ color: white;
+}
+
+.hero.is-white.is-bold {
+ background-image: -webkit-linear-gradient(309deg, #e6e6e6 0%, white 71%, white 100%);
+ background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-white .nav-toggle span {
+ background-color: #0a0a0a;
+ }
+ .hero.is-white .nav-toggle:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+ }
+ .hero.is-white .nav-toggle.is-active span {
+ background-color: #0a0a0a;
+ }
+ .hero.is-white .nav-menu .nav-item {
+ border-top-color: rgba(10, 10, 10, 0.2);
+ }
+}
+
+.hero.is-black {
+ background-color: #0a0a0a;
+ color: white;
+}
+
+.hero.is-black a,
+.hero.is-black strong {
+ color: inherit;
+}
+
+.hero.is-black .title {
+ color: white;
+}
+
+.hero.is-black .subtitle {
+ color: rgba(255, 255, 255, 0.9);
+}
+
+.hero.is-black .subtitle a,
+.hero.is-black .subtitle strong {
+ color: white;
+}
+
+.hero.is-black .nav {
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-black .nav-menu {
+ background-color: #0a0a0a;
+ }
+}
+
+.hero.is-black a.nav-item,
+.hero.is-black .nav-item a:not(.button) {
+ color: rgba(255, 255, 255, 0.7);
+}
+
+.hero.is-black a.nav-item:hover, .hero.is-black a.nav-item.is-active,
+.hero.is-black .nav-item a:not(.button):hover,
+.hero.is-black .nav-item a:not(.button).is-active {
+ color: white;
+}
+
+.hero.is-black .tabs a {
+ color: white;
+ opacity: 0.9;
+}
+
+.hero.is-black .tabs a:hover {
+ opacity: 1;
+}
+
+.hero.is-black .tabs li.is-active a {
+ opacity: 1;
+}
+
+.hero.is-black .tabs.is-boxed a, .hero.is-black .tabs.is-toggle a {
+ color: white;
+}
+
+.hero.is-black .tabs.is-boxed a:hover, .hero.is-black .tabs.is-toggle a:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+}
+
+.hero.is-black .tabs.is-boxed li.is-active a, .hero.is-black .tabs.is-boxed li.is-active a:hover, .hero.is-black .tabs.is-toggle li.is-active a, .hero.is-black .tabs.is-toggle li.is-active a:hover {
+ background-color: white;
+ border-color: white;
+ color: #0a0a0a;
+}
+
+.hero.is-black.is-bold {
+ background-image: -webkit-linear-gradient(309deg, black 0%, #0a0a0a 71%, #181616 100%);
+ background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-black .nav-toggle span {
+ background-color: white;
+ }
+ .hero.is-black .nav-toggle:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+ }
+ .hero.is-black .nav-toggle.is-active span {
+ background-color: white;
+ }
+ .hero.is-black .nav-menu .nav-item {
+ border-top-color: rgba(255, 255, 255, 0.2);
+ }
+}
+
+.hero.is-light {
+ background-color: whitesmoke;
+ color: #363636;
+}
+
+.hero.is-light a,
+.hero.is-light strong {
+ color: inherit;
+}
+
+.hero.is-light .title {
+ color: #363636;
+}
+
+.hero.is-light .subtitle {
+ color: rgba(54, 54, 54, 0.9);
+}
+
+.hero.is-light .subtitle a,
+.hero.is-light .subtitle strong {
+ color: #363636;
+}
+
+.hero.is-light .nav {
+ box-shadow: 0 1px 0 rgba(54, 54, 54, 0.2);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-light .nav-menu {
+ background-color: whitesmoke;
+ }
+}
+
+.hero.is-light a.nav-item,
+.hero.is-light .nav-item a:not(.button) {
+ color: rgba(54, 54, 54, 0.7);
+}
+
+.hero.is-light a.nav-item:hover, .hero.is-light a.nav-item.is-active,
+.hero.is-light .nav-item a:not(.button):hover,
+.hero.is-light .nav-item a:not(.button).is-active {
+ color: #363636;
+}
+
+.hero.is-light .tabs a {
+ color: #363636;
+ opacity: 0.9;
+}
+
+.hero.is-light .tabs a:hover {
+ opacity: 1;
+}
+
+.hero.is-light .tabs li.is-active a {
+ opacity: 1;
+}
+
+.hero.is-light .tabs.is-boxed a, .hero.is-light .tabs.is-toggle a {
+ color: #363636;
+}
+
+.hero.is-light .tabs.is-boxed a:hover, .hero.is-light .tabs.is-toggle a:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+}
+
+.hero.is-light .tabs.is-boxed li.is-active a, .hero.is-light .tabs.is-boxed li.is-active a:hover, .hero.is-light .tabs.is-toggle li.is-active a, .hero.is-light .tabs.is-toggle li.is-active a:hover {
+ background-color: #363636;
+ border-color: #363636;
+ color: whitesmoke;
+}
+
+.hero.is-light.is-bold {
+ background-image: -webkit-linear-gradient(309deg, #dfd8d8 0%, whitesmoke 71%, white 100%);
+ background-image: linear-gradient(141deg, #dfd8d8 0%, whitesmoke 71%, white 100%);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-light .nav-toggle span {
+ background-color: #363636;
+ }
+ .hero.is-light .nav-toggle:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+ }
+ .hero.is-light .nav-toggle.is-active span {
+ background-color: #363636;
+ }
+ .hero.is-light .nav-menu .nav-item {
+ border-top-color: rgba(54, 54, 54, 0.2);
+ }
+}
+
+.hero.is-dark {
+ background-color: #363636;
+ color: whitesmoke;
+}
+
+.hero.is-dark a,
+.hero.is-dark strong {
+ color: inherit;
+}
+
+.hero.is-dark .title {
+ color: whitesmoke;
+}
+
+.hero.is-dark .subtitle {
+ color: rgba(245, 245, 245, 0.9);
+}
+
+.hero.is-dark .subtitle a,
+.hero.is-dark .subtitle strong {
+ color: whitesmoke;
+}
+
+.hero.is-dark .nav {
+ box-shadow: 0 1px 0 rgba(245, 245, 245, 0.2);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-dark .nav-menu {
+ background-color: #363636;
+ }
+}
+
+.hero.is-dark a.nav-item,
+.hero.is-dark .nav-item a:not(.button) {
+ color: rgba(245, 245, 245, 0.7);
+}
+
+.hero.is-dark a.nav-item:hover, .hero.is-dark a.nav-item.is-active,
+.hero.is-dark .nav-item a:not(.button):hover,
+.hero.is-dark .nav-item a:not(.button).is-active {
+ color: whitesmoke;
+}
+
+.hero.is-dark .tabs a {
+ color: whitesmoke;
+ opacity: 0.9;
+}
+
+.hero.is-dark .tabs a:hover {
+ opacity: 1;
+}
+
+.hero.is-dark .tabs li.is-active a {
+ opacity: 1;
+}
+
+.hero.is-dark .tabs.is-boxed a, .hero.is-dark .tabs.is-toggle a {
+ color: whitesmoke;
+}
+
+.hero.is-dark .tabs.is-boxed a:hover, .hero.is-dark .tabs.is-toggle a:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+}
+
+.hero.is-dark .tabs.is-boxed li.is-active a, .hero.is-dark .tabs.is-boxed li.is-active a:hover, .hero.is-dark .tabs.is-toggle li.is-active a, .hero.is-dark .tabs.is-toggle li.is-active a:hover {
+ background-color: whitesmoke;
+ border-color: whitesmoke;
+ color: #363636;
+}
+
+.hero.is-dark.is-bold {
+ background-image: -webkit-linear-gradient(309deg, #1f1919 0%, #363636 71%, #463f3f 100%);
+ background-image: linear-gradient(141deg, #1f1919 0%, #363636 71%, #463f3f 100%);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-dark .nav-toggle span {
+ background-color: whitesmoke;
+ }
+ .hero.is-dark .nav-toggle:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+ }
+ .hero.is-dark .nav-toggle.is-active span {
+ background-color: whitesmoke;
+ }
+ .hero.is-dark .nav-menu .nav-item {
+ border-top-color: rgba(245, 245, 245, 0.2);
+ }
+}
+
+.hero.is-primary {
+ background-color: #00d1b2;
+ color: #fff;
+}
+
+.hero.is-primary a,
+.hero.is-primary strong {
+ color: inherit;
+}
+
+.hero.is-primary .title {
+ color: #fff;
+}
+
+.hero.is-primary .subtitle {
+ color: rgba(255, 255, 255, 0.9);
+}
+
+.hero.is-primary .subtitle a,
+.hero.is-primary .subtitle strong {
+ color: #fff;
+}
+
+.hero.is-primary .nav {
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-primary .nav-menu {
+ background-color: #00d1b2;
+ }
+}
+
+.hero.is-primary a.nav-item,
+.hero.is-primary .nav-item a:not(.button) {
+ color: rgba(255, 255, 255, 0.7);
+}
+
+.hero.is-primary a.nav-item:hover, .hero.is-primary a.nav-item.is-active,
+.hero.is-primary .nav-item a:not(.button):hover,
+.hero.is-primary .nav-item a:not(.button).is-active {
+ color: #fff;
+}
+
+.hero.is-primary .tabs a {
+ color: #fff;
+ opacity: 0.9;
+}
+
+.hero.is-primary .tabs a:hover {
+ opacity: 1;
+}
+
+.hero.is-primary .tabs li.is-active a {
+ opacity: 1;
+}
+
+.hero.is-primary .tabs.is-boxed a, .hero.is-primary .tabs.is-toggle a {
+ color: #fff;
+}
+
+.hero.is-primary .tabs.is-boxed a:hover, .hero.is-primary .tabs.is-toggle a:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+}
+
+.hero.is-primary .tabs.is-boxed li.is-active a, .hero.is-primary .tabs.is-boxed li.is-active a:hover, .hero.is-primary .tabs.is-toggle li.is-active a, .hero.is-primary .tabs.is-toggle li.is-active a:hover {
+ background-color: #fff;
+ border-color: #fff;
+ color: #00d1b2;
+}
+
+.hero.is-primary.is-bold {
+ background-image: -webkit-linear-gradient(309deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%);
+ background-image: linear-gradient(141deg, #009e6c 0%, #00d1b2 71%, #00e7eb 100%);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-primary .nav-toggle span {
+ background-color: #fff;
+ }
+ .hero.is-primary .nav-toggle:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+ }
+ .hero.is-primary .nav-toggle.is-active span {
+ background-color: #fff;
+ }
+ .hero.is-primary .nav-menu .nav-item {
+ border-top-color: rgba(255, 255, 255, 0.2);
+ }
+}
+
+.hero.is-info {
+ background-color: #3273dc;
+ color: #fff;
+}
+
+.hero.is-info a,
+.hero.is-info strong {
+ color: inherit;
+}
+
+.hero.is-info .title {
+ color: #fff;
+}
+
+.hero.is-info .subtitle {
+ color: rgba(255, 255, 255, 0.9);
+}
+
+.hero.is-info .subtitle a,
+.hero.is-info .subtitle strong {
+ color: #fff;
+}
+
+.hero.is-info .nav {
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-info .nav-menu {
+ background-color: #3273dc;
+ }
+}
+
+.hero.is-info a.nav-item,
+.hero.is-info .nav-item a:not(.button) {
+ color: rgba(255, 255, 255, 0.7);
+}
+
+.hero.is-info a.nav-item:hover, .hero.is-info a.nav-item.is-active,
+.hero.is-info .nav-item a:not(.button):hover,
+.hero.is-info .nav-item a:not(.button).is-active {
+ color: #fff;
+}
+
+.hero.is-info .tabs a {
+ color: #fff;
+ opacity: 0.9;
+}
+
+.hero.is-info .tabs a:hover {
+ opacity: 1;
+}
+
+.hero.is-info .tabs li.is-active a {
+ opacity: 1;
+}
+
+.hero.is-info .tabs.is-boxed a, .hero.is-info .tabs.is-toggle a {
+ color: #fff;
+}
+
+.hero.is-info .tabs.is-boxed a:hover, .hero.is-info .tabs.is-toggle a:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+}
+
+.hero.is-info .tabs.is-boxed li.is-active a, .hero.is-info .tabs.is-boxed li.is-active a:hover, .hero.is-info .tabs.is-toggle li.is-active a, .hero.is-info .tabs.is-toggle li.is-active a:hover {
+ background-color: #fff;
+ border-color: #fff;
+ color: #3273dc;
+}
+
+.hero.is-info.is-bold {
+ background-image: -webkit-linear-gradient(309deg, #1577c6 0%, #3273dc 71%, #4366e5 100%);
+ background-image: linear-gradient(141deg, #1577c6 0%, #3273dc 71%, #4366e5 100%);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-info .nav-toggle span {
+ background-color: #fff;
+ }
+ .hero.is-info .nav-toggle:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+ }
+ .hero.is-info .nav-toggle.is-active span {
+ background-color: #fff;
+ }
+ .hero.is-info .nav-menu .nav-item {
+ border-top-color: rgba(255, 255, 255, 0.2);
+ }
+}
+
+.hero.is-success {
+ background-color: #23d160;
+ color: #fff;
+}
+
+.hero.is-success a,
+.hero.is-success strong {
+ color: inherit;
+}
+
+.hero.is-success .title {
+ color: #fff;
+}
+
+.hero.is-success .subtitle {
+ color: rgba(255, 255, 255, 0.9);
+}
+
+.hero.is-success .subtitle a,
+.hero.is-success .subtitle strong {
+ color: #fff;
+}
+
+.hero.is-success .nav {
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-success .nav-menu {
+ background-color: #23d160;
+ }
+}
+
+.hero.is-success a.nav-item,
+.hero.is-success .nav-item a:not(.button) {
+ color: rgba(255, 255, 255, 0.7);
+}
+
+.hero.is-success a.nav-item:hover, .hero.is-success a.nav-item.is-active,
+.hero.is-success .nav-item a:not(.button):hover,
+.hero.is-success .nav-item a:not(.button).is-active {
+ color: #fff;
+}
+
+.hero.is-success .tabs a {
+ color: #fff;
+ opacity: 0.9;
+}
+
+.hero.is-success .tabs a:hover {
+ opacity: 1;
+}
+
+.hero.is-success .tabs li.is-active a {
+ opacity: 1;
+}
+
+.hero.is-success .tabs.is-boxed a, .hero.is-success .tabs.is-toggle a {
+ color: #fff;
+}
+
+.hero.is-success .tabs.is-boxed a:hover, .hero.is-success .tabs.is-toggle a:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+}
+
+.hero.is-success .tabs.is-boxed li.is-active a, .hero.is-success .tabs.is-boxed li.is-active a:hover, .hero.is-success .tabs.is-toggle li.is-active a, .hero.is-success .tabs.is-toggle li.is-active a:hover {
+ background-color: #fff;
+ border-color: #fff;
+ color: #23d160;
+}
+
+.hero.is-success.is-bold {
+ background-image: -webkit-linear-gradient(309deg, #12af2f 0%, #23d160 71%, #2ce28a 100%);
+ background-image: linear-gradient(141deg, #12af2f 0%, #23d160 71%, #2ce28a 100%);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-success .nav-toggle span {
+ background-color: #fff;
+ }
+ .hero.is-success .nav-toggle:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+ }
+ .hero.is-success .nav-toggle.is-active span {
+ background-color: #fff;
+ }
+ .hero.is-success .nav-menu .nav-item {
+ border-top-color: rgba(255, 255, 255, 0.2);
+ }
+}
+
+.hero.is-warning {
+ background-color: #ffdd57;
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.hero.is-warning a,
+.hero.is-warning strong {
+ color: inherit;
+}
+
+.hero.is-warning .title {
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.hero.is-warning .subtitle {
+ color: rgba(0, 0, 0, 0.9);
+}
+
+.hero.is-warning .subtitle a,
+.hero.is-warning .subtitle strong {
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.hero.is-warning .nav {
+ box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-warning .nav-menu {
+ background-color: #ffdd57;
+ }
+}
+
+.hero.is-warning a.nav-item,
+.hero.is-warning .nav-item a:not(.button) {
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.hero.is-warning a.nav-item:hover, .hero.is-warning a.nav-item.is-active,
+.hero.is-warning .nav-item a:not(.button):hover,
+.hero.is-warning .nav-item a:not(.button).is-active {
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.hero.is-warning .tabs a {
+ color: rgba(0, 0, 0, 0.7);
+ opacity: 0.9;
+}
+
+.hero.is-warning .tabs a:hover {
+ opacity: 1;
+}
+
+.hero.is-warning .tabs li.is-active a {
+ opacity: 1;
+}
+
+.hero.is-warning .tabs.is-boxed a, .hero.is-warning .tabs.is-toggle a {
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.hero.is-warning .tabs.is-boxed a:hover, .hero.is-warning .tabs.is-toggle a:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+}
+
+.hero.is-warning .tabs.is-boxed li.is-active a, .hero.is-warning .tabs.is-boxed li.is-active a:hover, .hero.is-warning .tabs.is-toggle li.is-active a, .hero.is-warning .tabs.is-toggle li.is-active a:hover {
+ background-color: rgba(0, 0, 0, 0.7);
+ border-color: rgba(0, 0, 0, 0.7);
+ color: #ffdd57;
+}
+
+.hero.is-warning.is-bold {
+ background-image: -webkit-linear-gradient(309deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%);
+ background-image: linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-warning .nav-toggle span {
+ background-color: rgba(0, 0, 0, 0.7);
+ }
+ .hero.is-warning .nav-toggle:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+ }
+ .hero.is-warning .nav-toggle.is-active span {
+ background-color: rgba(0, 0, 0, 0.7);
+ }
+ .hero.is-warning .nav-menu .nav-item {
+ border-top-color: rgba(0, 0, 0, 0.2);
+ }
+}
+
+.hero.is-danger {
+ background-color: #ff3860;
+ color: #fff;
+}
+
+.hero.is-danger a,
+.hero.is-danger strong {
+ color: inherit;
+}
+
+.hero.is-danger .title {
+ color: #fff;
+}
+
+.hero.is-danger .subtitle {
+ color: rgba(255, 255, 255, 0.9);
+}
+
+.hero.is-danger .subtitle a,
+.hero.is-danger .subtitle strong {
+ color: #fff;
+}
+
+.hero.is-danger .nav {
+ box-shadow: 0 1px 0 rgba(255, 255, 255, 0.2);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-danger .nav-menu {
+ background-color: #ff3860;
+ }
+}
+
+.hero.is-danger a.nav-item,
+.hero.is-danger .nav-item a:not(.button) {
+ color: rgba(255, 255, 255, 0.7);
+}
+
+.hero.is-danger a.nav-item:hover, .hero.is-danger a.nav-item.is-active,
+.hero.is-danger .nav-item a:not(.button):hover,
+.hero.is-danger .nav-item a:not(.button).is-active {
+ color: #fff;
+}
+
+.hero.is-danger .tabs a {
+ color: #fff;
+ opacity: 0.9;
+}
+
+.hero.is-danger .tabs a:hover {
+ opacity: 1;
+}
+
+.hero.is-danger .tabs li.is-active a {
+ opacity: 1;
+}
+
+.hero.is-danger .tabs.is-boxed a, .hero.is-danger .tabs.is-toggle a {
+ color: #fff;
+}
+
+.hero.is-danger .tabs.is-boxed a:hover, .hero.is-danger .tabs.is-toggle a:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+}
+
+.hero.is-danger .tabs.is-boxed li.is-active a, .hero.is-danger .tabs.is-boxed li.is-active a:hover, .hero.is-danger .tabs.is-toggle li.is-active a, .hero.is-danger .tabs.is-toggle li.is-active a:hover {
+ background-color: #fff;
+ border-color: #fff;
+ color: #ff3860;
+}
+
+.hero.is-danger.is-bold {
+ background-image: -webkit-linear-gradient(309deg, #ff0561 0%, #ff3860 71%, #ff5257 100%);
+ background-image: linear-gradient(141deg, #ff0561 0%, #ff3860 71%, #ff5257 100%);
+}
+
+@media screen and (max-width: 768px) {
+ .hero.is-danger .nav-toggle span {
+ background-color: #fff;
+ }
+ .hero.is-danger .nav-toggle:hover {
+ background-color: rgba(10, 10, 10, 0.1);
+ }
+ .hero.is-danger .nav-toggle.is-active span {
+ background-color: #fff;
+ }
+ .hero.is-danger .nav-menu .nav-item {
+ border-top-color: rgba(255, 255, 255, 0.2);
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .hero.is-medium .hero-body {
+ padding-bottom: 9rem;
+ padding-top: 9rem;
+ }
+}
+
+@media screen and (min-width: 769px) {
+ .hero.is-large .hero-body {
+ padding-bottom: 18rem;
+ padding-top: 18rem;
+ }
+}
+
+.hero.is-fullheight {
+ min-height: 100vh;
+}
+
+.hero.is-fullheight .hero-body {
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ display: -webkit-box;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.hero.is-fullheight .hero-body > .container {
+ -webkit-box-flex: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ -ms-flex-negative: 1;
+ flex-shrink: 1;
+}
+
+.section {
+ background-color: white;
+ padding: 3rem 1.5rem;
+}
+
+@media screen and (min-width: 1000px) {
+ .section.is-medium {
+ padding: 9rem 1.5rem;
+ }
+ .section.is-large {
+ padding: 18rem 1.5rem;
+ }
+}
+
+.footer {
+ background-color: whitesmoke;
+ padding: 3rem 1.5rem 6rem;
+}
+/*# sourceMappingURL=bulma.css.map */ \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/calc.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/calc.css
new file mode 100644
index 0000000..c112add
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/calc.css
@@ -0,0 +1,17 @@
+.foo
+{
+ margin-right:calc( -0.375em - 1px);
+ width: calc(100% / 3 - 2*1em - 2 * 1px + 10 mod 2);
+ margin: calc(1rem - 2px) CALC(1rem + 1px);
+}
+.bar
+{
+ margin: calc(5 * calc( 10px + 2em ) ) calc(10 + ( 5px + 10px - (10em - 3em)) );
+ padding-top: calc( 5 * (2em + -1px));
+}
+input { width: CALC(100% - (1em*1.5)); }
+p {
+ font-size: -webkit-calc(20px + 1vw);
+ font-size: -moz-calc(20px + 1vw);
+ font-size: calc(20px + 1vw);
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/colors.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/colors.css
new file mode 100644
index 0000000..c895be1
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/colors.css
@@ -0,0 +1,107 @@
+/* Named */
+#\:white a[black=":white;"] {
+ background-image: url(assets/images/white.png);
+ color: white;
+ white-space: normal;
+ color: whitesmoke;
+ background: white;
+ background: border-box fuchsia;
+ background: linear-gradient( to left top, black, #ffc0cb 60%, blueviolet);
+ background-color: black;
+ text-shadow: 1px 1px 2px black;
+ text-shadow: white 2px 5px;
+ box-shadow: 3px 3px yellow, -1em 0 0.4em fuchsia;
+ outline: 1px solid white;
+ outline-color: yellow;
+ box: black white, yellow;
+ utline-color: black white, yellow;
+ border: 1px dotted rebeccapurple; /* Big hug to Eric Meyer */
+ border-color: yellowgreen;
+ border-bottom: 3px solid lightyellow;
+ border-right-color: ghostwhite;
+}
+
+/* HEX */
+b {
+ color: #fffff0;
+ color: #f00;
+}
+.color {
+ impressed: #FfEedD;
+ again: #ABCDEF;
+ andagain:#aa66cc;
+ background-color:#aa66ccc;
+ filter: chroma(color="#FFFFFF");
+ color:#1122aa
+}
+.foo, #AABBCC {
+ background-color:#aabbcc;
+ border-color:#Ee66aA #ABCDEF #FeAb2C;
+ filter:chroma(color = #FFFFFF );
+ filter:chroma(color="#AABBCC");
+ filter:chroma(color='#BBDDEE');
+ color:#112233
+}
+#AABBCC, #ffffff, #f0f0f0, #f00 {
+ background-color:#ffee11;
+ filter: chroma(color = #FFFFFF );
+ color:#441122;
+ foo:#00fF11 #ABC #AABbCc #123344;
+ border-color:#aa66ccC
+}
+
+.foo #AABBCC {
+ background-color:#fFEe11;
+ color:#441122;
+ border-color:#AbC;
+ filter: chroma(color= #FFFFFF)
+}
+
+.bar, #AABBCC {
+ background-color:#FFee11;
+ border-color:#00fF11 #ABCDEF;
+ filter: chroma(color=#11FFFFFF);
+ color:#441122;
+}
+
+.foo, #AABBCC.foobar {
+ background-color:#ffee11;
+ border-color:#00fF11 #ABCDEF #AABbCc;
+ color:#441122;
+}
+
+@media screen {
+ .bar, #AABBCC {
+ background-color:#ffEE11;
+ color:#441122
+ }
+}
+
+
+/* RGB */
+a{
+ background: none repeat scroll 0 0 rgb(255, 0,0 );
+ alpha: rgba(1, 2, 3, 4);
+ background-image: linear-gradient(to bottom, rgb(210,180,140)10%, rgb(255,0,0)90%);
+ background-image: linear-gradient(to bottom, rgb(255, 0, 0) 10%, rgb(255 ,0,0) 90%);
+ background: linear-gradient(to bottom, rgb(100%, 0%, 0%), rgb(100% ,0%,0%));
+ color: rgb( 90%, 80.1%, 76.4% );
+ color: rgb(256,-1,0);
+ color: rgb( 101%,-1%,0%);
+ test-overflow: rgb(1000, 500, 300);
+}
+
+/* RGBA */
+d {
+ alpha: rgba(1, 2, 3, 4);
+ border-color: RGBA(1,2,3,4); /* tests uppercase RGBA() */
+}
+
+/* HSL */
+* {
+ color: hsl(0, 100%, 50%); /* red */
+ color: hsl( 120, 100%, 50.5% ); /* #03FF03 */
+ color:hsl(240,13.4%,12.6%); /* #1C1C24 */
+ color: hsl(-120, 33%, 92% ); /* #E4E4F1 */
+ color:hsl( 480, -56%, 13%); /* #212121 */
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/comments.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/comments.css
new file mode 100644
index 0000000..1a1b8df
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/comments.css
@@ -0,0 +1,55 @@
+/*! test *//*! $LastChangedRevision: 81 $ $LastChangedDate: 2009-05-27 17:41:02 +0100 (Wed, 27 May 2009) $ */
+/*!
+$Header: /temp/dirname/filename.css 3 2/02/08 3:37p JSmith $
+*/
+/*! special */body{ }
+/*! special */
+body {
+
+}
+a{
+ /*! this comment, although important, will be removed because it's inside a declaration block */
+
+ color:blue;
+ /*! test */
+ width :5px;
+ height : 5px /* test */
+;
+ /* test */
+ margin: 0 0 0 0
+ /* test */
+}
+
+/*!************88****
+ Preserving comments
+ as they are
+ ********************
+ Keep the initial !
+ *******************/
+#yo {
+ ma: "ma";
+}
+/*!
+I said
+pre-
+serve! */
+
+a{ color:red }/*! imp*/ b{test:foo}
+ /*! imp */
+/* Some comment *\/*//* Another comment */
+html >/**/ body p {
+ color: blue;
+ /*a comment right before the IE star hack*/*width:auto;
+ height:2%;
+}
+
+/* te " st */
+a{a:1}
+/*!"preserve" me*/
+b{content: "/**/"}/* comment in string */
+/* quite " quote ' \' \" */
+/* ie mac comment hack will not be preserved \*/
+c {c : 3}
+/* end hiding *//*! imp */
+/* unclosed comment at EOF issue
+
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-doublequotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-doublequotes.css
new file mode 100644
index 0000000..f2f4bfb
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-doublequotes.css
@@ -0,0 +1,23 @@
+.yui3-skin-night .yui3-dial-ring-vml,
+.yui3-skin-night .yui3-dial-center-button-vml,
+.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night .yui3-dial-marker-vml,
+.yui3-skin-night .yui3-dial-handle-vml {
+ background: none;
+ opacity:1;
+}
+
+div.base64-doublequotes {
+ width:100px;
+ height:100px;
+ background-image:url( "data:image/jpeg;base64,%2F9j%2F4AAQSkZJRgABAgEAZABkAAD%2F4RfJRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAAD0JAAAAnEAAPQkAAACcQQWRvYmUgUGhvdG9zaG9wIENTMiBNYWNpbnRvc2gAMjAwODowNzoxOSAxNDo1ODowNQAAA6ABAAMAAAAB%2F%2F8AAKACAAQAAAABAAABwqADAAQAAAABAAABRQAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABaTAAAAAAAAAEgAAAABAAAASAAAAAH%2F2P%2FgABBKRklGAAECAABIAEgAAP%2FtAAxBZG9iZV9DTQAC%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgAdACgAwEiAAIRAQMRAf%2FdAAQACv%2FEAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5%2FcRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14%2FNGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x%2F%2FaAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkklKSSSSUs4uDSWiXRoOJKFi3Ovx2Wvbse4e5gMwRo5soypdOyN9mTSRHpWvj4Oc4%2FwDVf9WkpupJJJKUkkkkpSSSSSlJJJJKUkkkkp%2F%2F0PVUklCqxttbbG%2FReA4fApKZpJJJKUo2WNrrdY8w1gLnHyAlVOsWvowXZDZ%2FQOZa8D9xrmm3%2FNr3PUswm%2FpmQGamyl4bHiWuhJTYqsFtTLBw9od94U1Q6FkfaOk4tszuqYfwV9JSll1%2FoOt2sOguDXgeTm7f%2FPmN%2FwCCLUWZ1VhrysbKA%2Bjua7zgtuZ%2F1FqIUXTSQcvKZi47sh7XOY0tBDYJhzms3akfR3blVd13prMtuI%2Bwse%2F6L3Ahm7n0%2FU%2Bi2zafzkFOgq9%2Bdj0ZFOM4k3ZDtrGNEnhzt7v3WbWPU8bJpyavVpduZuc2eNWONb2%2F2XtXOY2VU7rA6hnO9RuJS%2Br1hO1lguGJbuYz2extvv3fzLPU%2FwCESU9QkkkkpSSSSSlJJJJKf%2F%2FR9VWf0iwiu3Ff9LGsewT%2B6D7P%2FAyxy0FmunH6xPDMpgd%2FbZFT%2FwDoOx%2F%2B20Qp0lC02CtxqALwDtB4J8FNJBTVovx%2Bo4jvbLLGlltTuRMssrf%2FANJiz%2BhZDqMO%2FEyCX2dOc6t%2Bkuc1gmt%2B3%2FhaPTeoZ5s6R1IZrBGDlkNvI%2BjXcYYyx%2F7tWV9B%2FwDw%2FwDwlyD1LqWH0jq2N1O55rxOogY1rwC4C9uuP6mzdt9Wl1v6T%2Bb%2FAFdFS%2F1Myq%2F2VThusa%2B2tst2k6sPuY73Brm%2Fo3Vv2fy%2F3F0S4TAzq%2Bm%2FWDquKGnbhWOya62DUUlrcmyulktZ6f2ey19Wz8%2F2Ls2Z%2BFYx1jL6yxgBe%2FcIAI3CXfNIqZX3ursqqrZ6j7TqJgNY2PUsPP0dypfWJ%2Fo9NOT2xrarHTxs3tZkf%2By77VR6v9bejdNsbkb3Zbqm2sfVjgOOhrdZFljqsffXs%2FmvV9V%2F%2BDXHdZ%2BuvU8zA6i%2Bj02Y1zawaZLt2LY21tltb7XOb6j6%2FwDR1V%2FzV36v6rPVYFU%2BiCs5PS7cd43O2WUOB77d1X%2FT27lwvVnNyKK8d15q6hij207o9dg3DHdW9m9zLv8AQ%2F4Wu71K%2FTtr9aqzJ%2BuHV8tmR0zNoyLvsXU8Nr7cdtjmtN1J9K%2B2podsbk1%2Fo%2F8A0YsnG6te%2BnLZbdXXY6pttADNwucwmhv2cWbv0tnr%2FpKnfpKbKf8AtsqD1DvrjnfV70cKlldgzgbqjf7QHB3p2sG0sb6lv0%2FfZ6TEcZg630xz2vezK6jVbfhVtf6biQ%2BxltmNY7a2z9Js3Vu%2FwayvrHh1%2BhhdKv3XubjBhY9wDbHtPpOdXkOH6t1Dd%2FRsl%2F6C%2FwDomV7Fg9Wc%2FF%2Bq3RL6biben5WVjh4lljdxbexltf06La9vvp%2FM%2FwAFZ%2FhEuqn0r6lfXM9WYzpvVoo6wxvcbBcGj9Ltr09LLoj9bxf%2BvU%2Fof5mz9avrJd0%2B2jBwHAZTrcd17iA7bVZa2nY0H%2FCXw9v%2FAAdf%2FWl5zidQZ9ZcY3l3oddwg2z1mHZ6zWfQv3t2%2Bnk0%2FwCn%2FwDRf8xf6Df1DqvXGZ%2Be5tzsi7Gd6lm2kPsqNbqqOG1%2F4Cuxnpt%2FS7%2F9I9ALjR1Gh7f96%2BuJJpA1KZj2WNDmODmnhwMhJaySSSSU%2FwD%2F0vVVn9airFGYSGjEcLXuOkV%2Fzd5J%2FdZU%2FwBX%2Fra0EHM9D7Jf9pE4%2Fpv9YHX2bT6mn9RIKcE9U6lgXnJDv2l0jN%2FS497S39C530sOyxn%2BBc%2F%2Bh5P83%2F2kyfS%2FR5NlPrv16uwczExsPHFozLBRWHz6rriWM9Ouv6Hs9T3vseue6B9buoZF5xBU84BDC%2BtoZYW1PczG%2B02Gxm71Gb2XP2fod7P5mtct167q%2FT87Gdfk%2FbscWHI6V1NrQNGu3O2NZ6fp5FN9dTcrH3epR6f9RKwRYXzhKEuGYo%2FxfSMvM6lZlF%2FVfSobU11Q9MGyqLfa%2BrP9PJsr9Kz09n6bGq%2F7dWN1z9VxC3KfZT0%2B%2BPUyGg5NIaPdU7ezZe7KxPR%2FR5Gyr1sX9Db6%2FwDguZx%2Bv352be4WNwft%2B9tb2n21mza%2F07Xn2%2Fp7qmVep6dbP0vqfolqZD7mY91eDmXh9pBAZDGjT9awvb%2Bkp3W%2Fp2Mdkfpav1b%2BXUb0WulTeP23h5Di3JL3UYWTYzlzbKn1sc5rN7baM3FZ9pw8xrvSvr%2FQf0im6uvH6vY7G6hfS2mx1WFYaq7bnk%2Bo2r0rKPTa7bustxX20%2Bz%2Blf4RW%2FqPXeM403s%2FQ9LpdbQ4v97Wl4DcW1nud6PqfrH2e9nszMavNx%2Fs9%2F2hA6i5r77HZLH24Tn1W4%2BUwj2Pva3Jdj5bfzaHb8n7Fk%2F4P9YxP0tX8wulqaWfb1CzZ6GaM30622WDD%2FSV1mp3sfY6tjWOsY1tf8776a%2FTQ7s27qFNVIrqwAfUsbZRXt9S0N9Ky1tX83%2Bgre%2F1sej%2FAE1lzKltdDtbi9ZJsqqbTaBXdS0TbW68PycUxNj8qrIbR%2FpPU%2FSb6%2FTyv6VWf0qvOrzmsYasnGzHmk7gx1Za6K2XR7sd%2B5v6K79JXi3bPU%2FV8i71RRU5%2FWaLMv6kYj7SGX9L6g%2BqK%2Fosrymeux1cf4B17fYsrpuPmNxftz63Pcwl9DWDQ2sIqZkNJ%2FNZe6luR6f%2FAAX%2FAAS1f2pXX0vq%2BJln7LfkVVta3ZAfl4929myn%2FA76rLq86r%2Bbo%2F4qyhVruoZfSek4ldmM12Pe227D9XQBtvptu3%2B7d6Vr66Xf2PU%2FwiSnsuqnDyLMfFtMZORj%2BrXSPeHFseo2l7g31La%2FV%2Bh%2F2oq%2FwfqfpFznVcd9uDZivaxzDZXa1zztZaXB1LW%2Bv%2Fgb%2FZVXi5tv83%2FRsj9AsLqfXv2j0%2FpXqPFedgNurfa10F3uqsx8lv8Ao3Obvrf%2FAMT6n%2BFQquq59%2FURec1zb7CHXMc8htmw7n47v8BtucPUb6v6P9Ld69iNoS9H6Vk0Zzcpj3tqqeW1AAtuc%2F8Am7Meyhv6WvZ%2FNZX%2FAIEugzuk14eLiN69fbi49u6wgBjyWNb6dP6IOa52V6vt247P0dD%2FAFP0ajjdc6kBeekYQd1DIs2tsZVZbdVXt9tYqsG9%2B3%2FTPZ%2Bl%2FwBCsajpXV%2BtX2Zwo%2Fal7Wuvv9S0Mea2%2FT2%2BvZ7m1e1j6GV76PZ%2FpK0NE7avpH1Z69ndU6Ti4mP6mVZktBdbkP3uqbWTRkjKuYGb9t1e6v2776rP9Iuyw8VuJjtoaS8tkueeXOcdz3%2F2nLyb6vdZv6DjDKwmVt3lzbsZz3VsZcHluTgX499hfRYxuzJwn%2FznsyKrLLv8H2vT%2Fr9hODK%2BsM%2FZuSWkvrtFjC1wLmvr%2FWKqW%2Fm%2BzbZ%2BkRR4vVpKn03q%2FTeq47Mnp%2BQy%2Bt7WvG0%2B4Bw3N9Ss%2FpK%2F%2BuNVxBT%2FAP%2FT9VTOa17SxwDmuBDmnUEHsU6SSnxf6x9CzPqt1ECix7GMeben5Q0caneyylzvouto3MruZ%2Fhav0np%2FpFUryaMjFvrzps6dkPbZmUsHvx7zFber4f7rbLP6Wz%2FAEln%2BivYvY%2Bu9L6f1Xpl2H1GG0OG71SQ01uH0b2Pd9B7P%2FUb%2FwBGvH8vpF3T7%2FQpcH5NIea7az6leXSd2%2BzHjdW70qHbMnE%2FwlSZrE2NuzfjKHMY%2BGfpzR2n%2FL9H95wM%2FByOk5hxsgiyuwb6rm613VH6N1X%2FAKMrW10jqbrmHDyHl8MhjY3G6sHd6PO318dv6eiz07fW9P0v%2BOHiPxc6n9j552Ydh3YmVy7FtP5%2Bvvfiu%2Fw%2F%2FB%2Fpf5zehYv1a6pVk5WLnh%2BJZhML6rmiWvsBY6t1Fn0n1NY77Tvp%2FSf8WnijqNWnOEscjGQ4ZB7Oig0fV7Lf01rr8rqR2tez3XPbBx67XsYzayxjbMl9m38%2F9J%2Bl%2FS%2BpzrvUxMWqvqNVuJksx3402zW5oosbdScig725OHd9qY6v%2Bc2ZOLT6Nn88y3e6X1uyk9NexznYd%2BPdi2Mc1lTxl4ztznWu3bKfWZZXbs9T06f0ypdY6J1Hr%2FVH9Wrtpsx6mMqFDS%2F1WisF30XNa5%2B577bf0eyz%2FRV%2BqnHwW1RotDF6xay49Tviks9OHNBAc9g2sfc1m7Zu2%2FoG%2FQxv3PST9Lw2dTblM%2B1W1sdDixoM2vu3f0936Ot3pOZsurp%2FQ5H%2Bj%2FwaJj4GXf052ZjepRjbmOrywNzNjHulh9Meg5zN%2B1lrn%2F4R9fp%2FpFYxcHD6ey6nItdSGAOtdlFwhlh%2FRuHpN3Ppbv8A5xnqemgFOZ1%2FDyMW77T1DIOQy4vra91bqC00en%2BiYx%2F06Nrqnev%2FAIf%2FAEj1WxaG2sxKOo9Mu6iK32UYeOLHML3vLrNrrmu3%2Blv%2FAPRi1cvpl1PUqW3Nfh5VJ34%2BNmO9XEurHu%2FV7t1jGMsYf0noP9n%2FAANqv9Q6W84w630hn2cuFd1jcYGysjS6qzLxmiu3Fyadv896NX%2Bl%2B2eqhSSBQ1u%2Fwed6z9X%2BrtFJH1dZj1agENsqZuIB9EPsvbkW7Wj6eS%2F6fq%2Bj%2BjWOcbNw8hnqdNxq3tizZYXOa4Ty7fkWbmNd%2FObfof4RdpT1fqHUs1rc%2FLfktyRU2vGa4bSHNePtFL3el6VmLlVejZ7f0m%2F1cj%2BZ%2B0WbvSfqn0%2Fq1eTjdRIdlVspsqcxwBqc8PbfW%2BrX376%2FTtf%2FAKH0bcS6v2WJXqulj4YCXEDZqurxn1dxXdRosuw78hnXcR5dSWu22OrY2bqsdn03ZFTt932Oz2ZWL6lVLPWoXS19Hzup9Pq%2BsfTMYty8kn7ZRXDCy5hdVb1DEre%2F9NU79LvxHbLclj7Kf5rIspXE5mPm9J6q%2FLqa82YrmvfVJHqUsd%2BgyqLatln0a%2F03pP8AWxLmerV%2B5j%2Bz%2FU7qvR%2Bp9Cot6QNlLJbZQ5xdZXb9O1l73S99jnu3%2Bq7%2Be%2FnEmN57qv1X6b9c%2Fq99oxWNx%2BuYxcyx7g9rjc2PXxM5t36x6djmt9H1v02L%2Bi9L%2FCVWcz9VPr51npPWX9H%2Bsxuy8bItFNoyDvtot9tIcN%2F06He316P%2FAEKo%2FwAJ9p9hbXW17ntaA98b3AQXQIbuP5y43%2FGB9Q2dfp%2FaXTWtZ1iloEGGjIY3%2FAPe7%2BayG%2F8AafJ%2F6zb%2Bi%2FSUJT2TK66xtraGAAABoAEAbW8fyVJecfUbqP8AjHPV31dXxMjJ6c%2Fay27LaMd1JaNgsoDxX9o9rf0zaW2%2Br%2FPep%2FpPR0lP%2F9T1VJJJJSDNL%2Fsr9geXGABW1rnakD6F36P%2BsuAwumV%2FWXNrxHvcymqh2S7IqLnRa%2B7Jfj2UPcGtqdvyfVspZ7K%2FQ%2By1%2FoaV6Ffj05FZqvYLKyQS13Eg7m%2F9JKimvHprorEV1NDGDwDRtakkEg2NCNnxDqdGb0Lru3qFDHX41rLTWGxVeyR7626tdVmNa%2F1P3LPWr9i2cmzrpY5tdB6gzpL7Kq7WGXPqqf6D8HIc1gZ9upo%2F7T%2FzmVX%2FADXqr0brOF0%2B4135bWVFgc05kD1WMP06ari17q25P81Z%2B%2FX%2Bi%2BnauTysfqnQeoM6h06l91eW2H4jwf1uhgc70Lq3DdV1XGxm78d7%2FwCfo%2FQXfpK7GIRFX4s2fN7vAeGpRjwk93IyOj5VDnN6U5%2FUMa%2FflYlLGuLm%2BqxnpfadrG1tdk302Ufav%2Bs2en%2FNrQ%2Brd9%2BNlNdfS%2FDuDXMy8e7R1bmjfJ%2FkNhl9Nv59KtOeLbMDO6FktJte%2B%2FCstLh%2Bhcaxm4mY5oc5tLMr08XK3st9H7TRd%2FSqPWW11fA%2Fa%2BOOpdOc6jqeMNllYjcdvudjWt9zfVr3b8d%2F%2Fom%2F1E%2B2F5jpf1u6Dj9RyLKcqu3peaf1rF1aGh%2Bhym0XMr91TfZksr%2Fncb%2FSWY9bFTwftfUOpdQwRZvxsDLOLh2uBexrLH21YzLLAHv9K3ZX%2FwAH%2FOLUw%2BnfU%2F6xVDB6lg4%2FTutEFrLaG%2BgLXD%2FC42zY2x%2F%2Blw7f01f8ur9On%2BroyPqllZfThhMsqBZblWhxFjahFLLWE%2B27HZv3sbsr9H9N63%2FBjW1L9J9PDa%2F6udcx%2FU6Ta7bSH6uxLT7W0Oc0%2Fo6HT6mFl1fzX%2BnV9n1R6v07bbhZv2za4w149K0Vk6enkMeWPu2fzn8xVb%2Fwf0F1GVh4mdSW3MD2vbAfA3AH9xyoYmRZ0o%2FY894%2BztBNGS7QbR%2Ba8n6Oz%2FwH%2FttLyRbyPUcXMqzznY2Nfh9TrbZbkkVyxzQBvzm%2Bm04vr7f0d%2Fo2frX%2BD%2FTV2rc%2BrmH0bqHT8fcW%2Fb2Ned1FrmWsaXOZLfRLH01W%2Bpu9L%2BaXUiCJHBWGegM6d1IdU6WzbJi%2FFbAaWuPvdV%2FV%2FnPTStN6U4%2FWfqPk5jhRj2BorDrMXLOjqnge2m1rNrnV3e1lnpf8b%2FO1Urm%2FqLlZH1a%2BseT03IwLa7s97K8nFrY%2Bx9fp%2Bp6OfjupZ6VvT3%2BrY3I%2F0P6Oyn9F%2BjXrKSCFJJJJKUkkkkp%2F%2F9X1VJJJJSkkkklKQM3Dpzcd2PbuAdBa9hLXscNWWVPb9CxjkdJJTxHVfq4Ol5bc%2Bq55dlvLLq2Dax1lprY7IFbP5i63b77Kf9H%2Bk%2FQrpPq%2FcLMAVlgrupcWXM4duBj9I0y7f%2F1f00vrB0hnVunPo%2BjkMmzFtGjq7QC1tlb9Njvd%2FqxS6dWMj0upH9FfbXsyqwIabGwx30%2Ff%2BifW9n9RHopwvrBh4eF1V%2BXkU%2FqmZQQLSB6deYxwux7HAfpGvs9L%2FB%2F8J6ivWVZ2dj4vV8FgfbkY%2Fo5WO8hosrdr3%2Bi6t7nrefWx8b2h20hzZEwR9Fw%2FlIOLg4%2BI652OCxt7vUfWD7Q4%2FScxv5m%2F89K1IujYj8PpWLjWDa%2BusB7SZIcfc5u6XfnFW31seIe0OEzBE6%2FNSSQUpJJJJSkkkklKSSSSUpJJJJT%2FAP%2FW9VSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2F%2FZ%2F%2B01IlBob3Rvc2hvcCAzLjAAOEJJTQQlAAAAAAAQAAAAAAAAAAAAAAAAAAAAADhCSU0D6gAAAAAYEDw%2FeG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8%2BCjwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgo8cGxpc3QgdmVyc2lvbj0iMS4wIj4KPGRpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNSG9yaXpvbnRhbFJlczwva2V5PgoJPGRpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk%2BCgkJCQk8cmVhbD43MjwvcmVhbD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk%2BCgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk%2BCgkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJPGRpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk%2BCgkJCQk8cmVhbD4xPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk%2BCgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q%2BCgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk%2BCgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5PgoJCQkJPHJlYWw%2BMTwvcmVhbD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuc3ViVGlja2V0LnBhcGVyX2luZm9fdGlja2V0PC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PlBNUFBEUGFwZXJDb2RlTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PlBNUFBEUGFwZXJDb2RlTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc%2BTGV0dGVyPC9zdHJpbmc%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BUE1UaW9nYVBhcGVyTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PlBNVGlvZ2FQYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPm5hLWxldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BMC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw%2BCgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTc2PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk%2BCgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw%2BLTE4PC9yZWFsPgoJCQkJCQk8cmVhbD43NzQ8L3JlYWw%2BCgkJCQkJCTxyZWFsPjU5NDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk%2BCgkJCQkJPHN0cmluZz5uYS1sZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk%2BCgkJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhZ2VSZWN0PC9rZXk%2BCgkJPGRpY3Q%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk%2BCgkJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BMC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw%2BCgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTc2PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BLTE4PC9yZWFsPgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw%2BCgkJCQkJCTxyZWFsPjc3NDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTk0PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLnBwZC5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc%2BVVMgTGV0dGVyPC9zdHJpbmc%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5BUElWZXJzaW9uPC9rZXk%2BCgkJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk%2BCgkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvVGlja2V0PC9zdHJpbmc%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuQVBJVmVyc2lvbjwva2V5PgoJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnR5cGU8L2tleT4KCTxzdHJpbmc%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXRUaWNrZXQ8L3N0cmluZz4KPC9kaWN0Pgo8L3BsaXN0Pgo4QklNA%2BkAAAAAAHgAAwAAAEgASAAAAAAC3gJA%2F%2B7%2F7gMGAlIDZwUoA%2FwAAgAAAEgASAAAAAAC2AIoAAEAAABkAAAAAQADAwMAAAABf%2F8AAQABAAAAAAAAAAAAAAAAaAgAGQGQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4QklNA%2B0AAAAAABAAZAAAAAEAAQBkAAAAAQABOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD%2BAAAA4QklNBA0AAAAAAAQAAAAeOEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgABAAAAAAAAAAE4QklNA%2FUAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA%2FgAAAAAAHAAAP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8D6AAAAAD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FA%2BgAAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwPoAAAAAP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA1UAAAAGAAAAAAAAAAAAAAFFAAABwgAAABAAcwB3AGkAcwBzAF8AYQByAG0AeQBfAGsAbgBpAGYAZQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABwgAAAUUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAUUAAAAAUmdodGxvbmcAAAHCAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAFFAAAAAFJnaHRsb25nAAABwgAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAAAQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hUTUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAAC2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91dHNldGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRzZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAAAAE%2F8AAAAAAAADhCSU0EEQAAAAAAAQEAOEJJTQQUAAAAAAAEAAAAAThCSU0EDAAAAAAWrwAAAAEAAACgAAAAdAAAAeAAANmAAAAWkwAYAAH%2F2P%2FgABBKRklGAAECAABIAEgAAP%2FtAAxBZG9iZV9DTQAC%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgAdACgAwEiAAIRAQMRAf%2FdAAQACv%2FEAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5%2FcRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14%2FNGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x%2F%2FaAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkklKSSSSUs4uDSWiXRoOJKFi3Ovx2Wvbse4e5gMwRo5soypdOyN9mTSRHpWvj4Oc4%2FwDVf9WkpupJJJKUkkkkpSSSSSlJJJJKUkkkkp%2F%2F0PVUklCqxttbbG%2FReA4fApKZpJJJKUo2WNrrdY8w1gLnHyAlVOsWvowXZDZ%2FQOZa8D9xrmm3%2FNr3PUswm%2FpmQGamyl4bHiWuhJTYqsFtTLBw9od94U1Q6FkfaOk4tszuqYfwV9JSll1%2FoOt2sOguDXgeTm7f%2FPmN%2FwCCLUWZ1VhrysbKA%2Bjua7zgtuZ%2F1FqIUXTSQcvKZi47sh7XOY0tBDYJhzms3akfR3blVd13prMtuI%2Bwse%2F6L3Ahm7n0%2FU%2Bi2zafzkFOgq9%2Bdj0ZFOM4k3ZDtrGNEnhzt7v3WbWPU8bJpyavVpduZuc2eNWONb2%2F2XtXOY2VU7rA6hnO9RuJS%2Br1hO1lguGJbuYz2extvv3fzLPU%2FwCESU9QkkkkpSSSSSlJJJJKf%2F%2FR9VWf0iwiu3Ff9LGsewT%2B6D7P%2FAyxy0FmunH6xPDMpgd%2FbZFT%2FwDoOx%2F%2B20Qp0lC02CtxqALwDtB4J8FNJBTVovx%2Bo4jvbLLGlltTuRMssrf%2FANJiz%2BhZDqMO%2FEyCX2dOc6t%2Bkuc1gmt%2B3%2FhaPTeoZ5s6R1IZrBGDlkNvI%2BjXcYYyx%2F7tWV9B%2FwDw%2FwDwlyD1LqWH0jq2N1O55rxOogY1rwC4C9uuP6mzdt9Wl1v6T%2Bb%2FAFdFS%2F1Myq%2F2VThusa%2B2tst2k6sPuY73Brm%2Fo3Vv2fy%2F3F0S4TAzq%2Bm%2FWDquKGnbhWOya62DUUlrcmyulktZ6f2ey19Wz8%2F2Ls2Z%2BFYx1jL6yxgBe%2FcIAI3CXfNIqZX3ursqqrZ6j7TqJgNY2PUsPP0dypfWJ%2Fo9NOT2xrarHTxs3tZkf%2By77VR6v9bejdNsbkb3Zbqm2sfVjgOOhrdZFljqsffXs%2FmvV9V%2F%2BDXHdZ%2BuvU8zA6i%2Bj02Y1zawaZLt2LY21tltb7XOb6j6%2FwDR1V%2FzV36v6rPVYFU%2BiCs5PS7cd43O2WUOB77d1X%2FT27lwvVnNyKK8d15q6hij207o9dg3DHdW9m9zLv8AQ%2F4Wu71K%2FTtr9aqzJ%2BuHV8tmR0zNoyLvsXU8Nr7cdtjmtN1J9K%2B2podsbk1%2Fo%2F8A0YsnG6te%2BnLZbdXXY6pttADNwucwmhv2cWbv0tnr%2FpKnfpKbKf8AtsqD1DvrjnfV70cKlldgzgbqjf7QHB3p2sG0sb6lv0%2FfZ6TEcZg630xz2vezK6jVbfhVtf6biQ%2BxltmNY7a2z9Js3Vu%2FwayvrHh1%2BhhdKv3XubjBhY9wDbHtPpOdXkOH6t1Dd%2FRsl%2F6C%2FwDomV7Fg9Wc%2FF%2Bq3RL6biben5WVjh4lljdxbexltf06La9vvp%2FM%2FwAFZ%2FhEuqn0r6lfXM9WYzpvVoo6wxvcbBcGj9Ltr09LLoj9bxf%2BvU%2Fof5mz9avrJd0%2B2jBwHAZTrcd17iA7bVZa2nY0H%2FCXw9v%2FAAdf%2FWl5zidQZ9ZcY3l3oddwg2z1mHZ6zWfQv3t2%2Bnk0%2FwCn%2FwDRf8xf6Df1DqvXGZ%2Be5tzsi7Gd6lm2kPsqNbqqOG1%2F4Cuxnpt%2FS7%2F9I9ALjR1Gh7f96%2BuJJpA1KZj2WNDmODmnhwMhJaySSSSU%2FwD%2F0vVVn9airFGYSGjEcLXuOkV%2Fzd5J%2FdZU%2FwBX%2Fra0EHM9D7Jf9pE4%2Fpv9YHX2bT6mn9RIKcE9U6lgXnJDv2l0jN%2FS497S39C530sOyxn%2BBc%2F%2Bh5P83%2F2kyfS%2FR5NlPrv16uwczExsPHFozLBRWHz6rriWM9Ouv6Hs9T3vseue6B9buoZF5xBU84BDC%2BtoZYW1PczG%2B02Gxm71Gb2XP2fod7P5mtct167q%2FT87Gdfk%2FbscWHI6V1NrQNGu3O2NZ6fp5FN9dTcrH3epR6f9RKwRYXzhKEuGYo%2FxfSMvM6lZlF%2FVfSobU11Q9MGyqLfa%2BrP9PJsr9Kz09n6bGq%2F7dWN1z9VxC3KfZT0%2B%2BPUyGg5NIaPdU7ezZe7KxPR%2FR5Gyr1sX9Db6%2FwDguZx%2Bv352be4WNwft%2B9tb2n21mza%2F07Xn2%2Fp7qmVep6dbP0vqfolqZD7mY91eDmXh9pBAZDGjT9awvb%2Bkp3W%2Fp2Mdkfpav1b%2BXUb0WulTeP23h5Di3JL3UYWTYzlzbKn1sc5rN7baM3FZ9pw8xrvSvr%2FQf0im6uvH6vY7G6hfS2mx1WFYaq7bnk%2Bo2r0rKPTa7bustxX20%2Bz%2Blf4RW%2FqPXeM403s%2FQ9LpdbQ4v97Wl4DcW1nud6PqfrH2e9nszMavNx%2Fs9%2F2hA6i5r77HZLH24Tn1W4%2BUwj2Pva3Jdj5bfzaHb8n7Fk%2F4P9YxP0tX8wulqaWfb1CzZ6GaM30622WDD%2FSV1mp3sfY6tjWOsY1tf8776a%2FTQ7s27qFNVIrqwAfUsbZRXt9S0N9Ky1tX83%2Bgre%2F1sej%2FAE1lzKltdDtbi9ZJsqqbTaBXdS0TbW68PycUxNj8qrIbR%2FpPU%2FSb6%2FTyv6VWf0qvOrzmsYasnGzHmk7gx1Za6K2XR7sd%2B5v6K79JXi3bPU%2FV8i71RRU5%2FWaLMv6kYj7SGX9L6g%2BqK%2Fosrymeux1cf4B17fYsrpuPmNxftz63Pcwl9DWDQ2sIqZkNJ%2FNZe6luR6f%2FAAX%2FAAS1f2pXX0vq%2BJln7LfkVVta3ZAfl4929myn%2FA76rLq86r%2Bbo%2F4qyhVruoZfSek4ldmM12Pe227D9XQBtvptu3%2B7d6Vr66Xf2PU%2FwiSnsuqnDyLMfFtMZORj%2BrXSPeHFseo2l7g31La%2FV%2Bh%2F2oq%2FwfqfpFznVcd9uDZivaxzDZXa1zztZaXB1LW%2Bv%2Fgb%2FZVXi5tv83%2FRsj9AsLqfXv2j0%2FpXqPFedgNurfa10F3uqsx8lv8Ao3Obvrf%2FAMT6n%2BFQquq59%2FURec1zb7CHXMc8htmw7n47v8BtucPUb6v6P9Ld69iNoS9H6Vk0Zzcpj3tqqeW1AAtuc%2F8Am7Meyhv6WvZ%2FNZX%2FAIEugzuk14eLiN69fbi49u6wgBjyWNb6dP6IOa52V6vt247P0dD%2FAFP0ajjdc6kBeekYQd1DIs2tsZVZbdVXt9tYqsG9%2B3%2FTPZ%2Bl%2FwBCsajpXV%2BtX2Zwo%2Fal7Wuvv9S0Mea2%2FT2%2BvZ7m1e1j6GV76PZ%2FpK0NE7avpH1Z69ndU6Ti4mP6mVZktBdbkP3uqbWTRkjKuYGb9t1e6v2776rP9Iuyw8VuJjtoaS8tkueeXOcdz3%2F2nLyb6vdZv6DjDKwmVt3lzbsZz3VsZcHluTgX499hfRYxuzJwn%2FznsyKrLLv8H2vT%2Fr9hODK%2BsM%2FZuSWkvrtFjC1wLmvr%2FWKqW%2Fm%2BzbZ%2BkRR4vVpKn03q%2FTeq47Mnp%2BQy%2Bt7WvG0%2B4Bw3N9Ss%2FpK%2F%2BuNVxBT%2FAP%2FT9VTOa17SxwDmuBDmnUEHsU6SSnxf6x9CzPqt1ECix7GMeben5Q0caneyylzvouto3MruZ%2Fhav0np%2FpFUryaMjFvrzps6dkPbZmUsHvx7zFber4f7rbLP6Wz%2FAEln%2BivYvY%2Bu9L6f1Xpl2H1GG0OG71SQ01uH0b2Pd9B7P%2FUb%2FwBGvH8vpF3T7%2FQpcH5NIea7az6leXSd2%2BzHjdW70qHbMnE%2FwlSZrE2NuzfjKHMY%2BGfpzR2n%2FL9H95wM%2FByOk5hxsgiyuwb6rm613VH6N1X%2FAKMrW10jqbrmHDyHl8MhjY3G6sHd6PO318dv6eiz07fW9P0v%2BOHiPxc6n9j552Ydh3YmVy7FtP5%2Bvvfiu%2Fw%2F%2FB%2Fpf5zehYv1a6pVk5WLnh%2BJZhML6rmiWvsBY6t1Fn0n1NY77Tvp%2FSf8WnijqNWnOEscjGQ4ZB7Oig0fV7Lf01rr8rqR2tez3XPbBx67XsYzayxjbMl9m38%2F9J%2Bl%2FS%2BpzrvUxMWqvqNVuJksx3402zW5oosbdScig725OHd9qY6v%2Bc2ZOLT6Nn88y3e6X1uyk9NexznYd%2BPdi2Mc1lTxl4ztznWu3bKfWZZXbs9T06f0ypdY6J1Hr%2FVH9Wrtpsx6mMqFDS%2F1WisF30XNa5%2B577bf0eyz%2FRV%2BqnHwW1RotDF6xay49Tviks9OHNBAc9g2sfc1m7Zu2%2FoG%2FQxv3PST9Lw2dTblM%2B1W1sdDixoM2vu3f0936Ot3pOZsurp%2FQ5H%2Bj%2FwaJj4GXf052ZjepRjbmOrywNzNjHulh9Meg5zN%2B1lrn%2F4R9fp%2FpFYxcHD6ey6nItdSGAOtdlFwhlh%2FRuHpN3Ppbv8A5xnqemgFOZ1%2FDyMW77T1DIOQy4vra91bqC00en%2BiYx%2F06Nrqnev%2FAIf%2FAEj1WxaG2sxKOo9Mu6iK32UYeOLHML3vLrNrrmu3%2Blv%2FAPRi1cvpl1PUqW3Nfh5VJ34%2BNmO9XEurHu%2FV7t1jGMsYf0noP9n%2FAANqv9Q6W84w630hn2cuFd1jcYGysjS6qzLxmiu3Fyadv896NX%2Bl%2B2eqhSSBQ1u%2Fwed6z9X%2BrtFJH1dZj1agENsqZuIB9EPsvbkW7Wj6eS%2F6fq%2Bj%2BjWOcbNw8hnqdNxq3tizZYXOa4Ty7fkWbmNd%2FObfof4RdpT1fqHUs1rc%2FLfktyRU2vGa4bSHNePtFL3el6VmLlVejZ7f0m%2F1cj%2BZ%2B0WbvSfqn0%2Fq1eTjdRIdlVspsqcxwBqc8PbfW%2BrX376%2FTtf%2FAKH0bcS6v2WJXqulj4YCXEDZqurxn1dxXdRosuw78hnXcR5dSWu22OrY2bqsdn03ZFTt932Oz2ZWL6lVLPWoXS19Hzup9Pq%2BsfTMYty8kn7ZRXDCy5hdVb1DEre%2F9NU79LvxHbLclj7Kf5rIspXE5mPm9J6q%2FLqa82YrmvfVJHqUsd%2BgyqLatln0a%2F03pP8AWxLmerV%2B5j%2Bz%2FU7qvR%2Bp9Cot6QNlLJbZQ5xdZXb9O1l73S99jnu3%2Bq7%2Be%2FnEmN57qv1X6b9c%2Fq99oxWNx%2BuYxcyx7g9rjc2PXxM5t36x6djmt9H1v02L%2Bi9L%2FCVWcz9VPr51npPWX9H%2Bsxuy8bItFNoyDvtot9tIcN%2F06He316P%2FAEKo%2FwAJ9p9hbXW17ntaA98b3AQXQIbuP5y43%2FGB9Q2dfp%2FaXTWtZ1iloEGGjIY3%2FAPe7%2BayG%2F8AafJ%2F6zb%2Bi%2FSUJT2TK66xtraGAAABoAEAbW8fyVJecfUbqP8AjHPV31dXxMjJ6c%2Fay27LaMd1JaNgsoDxX9o9rf0zaW2%2Br%2FPep%2FpPR0lP%2F9T1VJJJJSDNL%2Fsr9geXGABW1rnakD6F36P%2BsuAwumV%2FWXNrxHvcymqh2S7IqLnRa%2B7Jfj2UPcGtqdvyfVspZ7K%2FQ%2By1%2FoaV6Ffj05FZqvYLKyQS13Eg7m%2F9JKimvHprorEV1NDGDwDRtakkEg2NCNnxDqdGb0Lru3qFDHX41rLTWGxVeyR7626tdVmNa%2F1P3LPWr9i2cmzrpY5tdB6gzpL7Kq7WGXPqqf6D8HIc1gZ9upo%2F7T%2FzmVX%2FADXqr0brOF0%2B4135bWVFgc05kD1WMP06ari17q25P81Z%2B%2FX%2Bi%2BnauTysfqnQeoM6h06l91eW2H4jwf1uhgc70Lq3DdV1XGxm78d7%2FwCfo%2FQXfpK7GIRFX4s2fN7vAeGpRjwk93IyOj5VDnN6U5%2FUMa%2FflYlLGuLm%2BqxnpfadrG1tdk302Ufav%2Bs2en%2FNrQ%2Brd9%2BNlNdfS%2FDuDXMy8e7R1bmjfJ%2FkNhl9Nv59KtOeLbMDO6FktJte%2B%2FCstLh%2Bhcaxm4mY5oc5tLMr08XK3st9H7TRd%2FSqPWW11fA%2Fa%2BOOpdOc6jqeMNllYjcdvudjWt9zfVr3b8d%2F%2Fom%2F1E%2B2F5jpf1u6Dj9RyLKcqu3peaf1rF1aGh%2Bhym0XMr91TfZksr%2Fncb%2FSWY9bFTwftfUOpdQwRZvxsDLOLh2uBexrLH21YzLLAHv9K3ZX%2FwAH%2FOLUw%2BnfU%2F6xVDB6lg4%2FTutEFrLaG%2BgLXD%2FC42zY2x%2F%2Blw7f01f8ur9On%2BroyPqllZfThhMsqBZblWhxFjahFLLWE%2B27HZv3sbsr9H9N63%2FBjW1L9J9PDa%2F6udcx%2FU6Ta7bSH6uxLT7W0Oc0%2Fo6HT6mFl1fzX%2BnV9n1R6v07bbhZv2za4w149K0Vk6enkMeWPu2fzn8xVb%2Fwf0F1GVh4mdSW3MD2vbAfA3AH9xyoYmRZ0o%2FY894%2BztBNGS7QbR%2Ba8n6Oz%2FwH%2FttLyRbyPUcXMqzznY2Nfh9TrbZbkkVyxzQBvzm%2Bm04vr7f0d%2Fo2frX%2BD%2FTV2rc%2BrmH0bqHT8fcW%2Fb2Ned1FrmWsaXOZLfRLH01W%2Bpu9L%2BaXUiCJHBWGegM6d1IdU6WzbJi%2FFbAaWuPvdV%2FV%2FnPTStN6U4%2FWfqPk5jhRj2BorDrMXLOjqnge2m1rNrnV3e1lnpf8b%2FO1Urm%2FqLlZH1a%2BseT03IwLa7s97K8nFrY%2Bx9fp%2Bp6OfjupZ6VvT3%2BrY3I%2F0P6Oyn9F%2BjXrKSCFJJJJKUkkkkp%2F%2F9X1VJJJJSkkkklKQM3Dpzcd2PbuAdBa9hLXscNWWVPb9CxjkdJJTxHVfq4Ol5bc%2Bq55dlvLLq2Dax1lprY7IFbP5i63b77Kf9H%2Bk%2FQrpPq%2FcLMAVlgrupcWXM4duBj9I0y7f%2F1f00vrB0hnVunPo%2BjkMmzFtGjq7QC1tlb9Njvd%2FqxS6dWMj0upH9FfbXsyqwIabGwx30%2Ff%2BifW9n9RHopwvrBh4eF1V%2BXkU%2FqmZQQLSB6deYxwux7HAfpGvs9L%2FB%2F8J6ivWVZ2dj4vV8FgfbkY%2Fo5WO8hosrdr3%2Bi6t7nrefWx8b2h20hzZEwR9Fw%2FlIOLg4%2BI652OCxt7vUfWD7Q4%2FScxv5m%2F89K1IujYj8PpWLjWDa%2BusB7SZIcfc5u6XfnFW31seIe0OEzBE6%2FNSSQUpJJJJSkkkklKSSSSUpJJJJT%2FAP%2FW9VSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2F%2FZADhCSU0EIQAAAAAAVQAAAAEBAAAADwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAAABMAQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAIABDAFMAMgAAAAEAOEJJTQQGAAAAAAAHAAIAAAABAQD%2F4TkjaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSIzLjEuMS0xMTIiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI%2BCiAgICAgICAgIDx4YXBNTTpEb2N1bWVudElEPnV1aWQ6RTcxOTVFNTY1NzMzMTFERDlFNzJGQ0E2QjkwQUZBRjU8L3hhcE1NOkRvY3VtZW50SUQ%2BCiAgICAgICAgIDx4YXBNTTpJbnN0YW5jZUlEPnV1aWQ6RTcxOTVFNTc1NzMzMTFERDlFNzJGQ0E2QjkwQUZBRjU8L3hhcE1NOkluc3RhbmNlSUQ%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU%2BMjAwOC0wNy0xOVQxNDo1Nzo0MS0wNTowMDwveGFwOkNyZWF0ZURhdGU%2BCiAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA4LTA3LTE5VDE0OjU4OjA1LTA1OjAwPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhhcDpNZXRhZGF0YURhdGU%2BMjAwOC0wNy0xOVQxNDo1ODowNS0wNTowMDwveGFwOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhhcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ1MyIE1hY2ludG9zaDwveGFwOkNyZWF0b3JUb29sPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9qcGVnPC9kYzpmb3JtYXQ%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOkhpc3RvcnkvPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj4xMDAwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4xMDAwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8dGlmZjpOYXRpdmVEaWdlc3Q%2BMjU2LDI1NywyNTgsMjU5LDI2MiwyNzQsMjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5LDUyOSw1MzIsMzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7QzA1QTE5MDRGRjAwQUJEQzA1MUJERkFGMDIwNEVBNTE8L3RpZmY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24%2BNDUwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjMyNTwvZXhpZjpQaXhlbFlEaW1lbnNpb24%2BCiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U%2BLTE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6TmF0aXZlRGlnZXN0PjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDtENDYzN0NCOUQ0MUExMEJBN0VGNUVCQ0RCNjMxODMyOTwvZXhpZjpOYXRpdmVEaWdlc3Q%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY%2BCjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8%2B%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQACAYGBgYGCAYGCAwIBwgMDgoICAoOEA0NDg0NEBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEJCAgJCgkLCQkLDgsNCw4RDg4ODhERDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgBRQHCAwEiAAIRAQMRAf%2FdAAQAHf%2FEAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPBUtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4%2FPE1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1%2Bf3OEhYaHiImKi4yNjo%2BCk5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEyobHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp0%2BPzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1%2Bf3OEhYaHiImKi4yNjo%2BDlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq%2Bv%2FaAAwDAQACEQMRAD8A7%2FmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmrlHI2utXn6WltnFESb0RFSp41WjD5q3LCBaslzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Dv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2E2rj0LuzvF7PxftUf8AXPLDnC3XI0ewdpOkTK4P08T%2FAMK2Ec1TLNgaxmE9pFIDy%2BEAn3GxwTgV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV%2F%2F0e%2F5s2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXYUeZpfR0a4kpUAx19h6i74b4X65CbjR76FV5FoJKKe5C1GIVLdDuGhuXs2IKOX4gfsvGdx%2FskKtkiyD6bctHHbXgPImOC4qOpXj6E1ff4Mm4Ndxkpc770BvNmzZFLs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F9Lv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVokKCT0G%2F3ZgaioNQemANZuhaWLyE0LlY1%2BbGn6sWspA8QA%2FZ%2FUcVRWbNmxV2bNmxV2bNmxV2NZQwKnodj9OOzYqwDT4iiPZsa%2FVLm5sj7I%2F76L%2BOTXTpjPZQSt9pkAb5r8JyKXqfUvMOpIQOFxFDfoP8qFvTl%2F4Q5INDkrFPAf8AdUhI%2FwBV%2FiH8cnLeAPcxHMprmzZsgydmzZsVdmzZsVdmzZsVdmzYyWRIo2kkYKiirMdgAMVX5sjTeaGl1CzsbSAOLuX0w7k14KCzyAD%2BUZJBirebNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV%2F9Pv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVo4CXUFa9e0CbJRWkr%2B0RWlMHZEJ5WtPMtzE5%2BGYJKnyK0%2F4kuEC1ZeM2IW0okjFT8S7H%2BuL4FYz52mMWn2tDTlcpX6FbDHR5ecCH%2BZevywl%2FMM8dJtn7LdJ%2BKvgry9ccrOJ69KVw9E9GS5s2bAh2bNmxV2bNmxV2bNmxVi3miFU1LSbxvsStJYzH%2FJnSi%2F8ADYpoEzLcxq1T68FGr%2FvyE8GrgjzdC0mhXEsY%2Fe2pS5i%2F1omDf8RwttJRHdrcDaNbhZVI6endIG%2F4mcnHeJCDzDL82bNkEuzZs2KuzZs2KuzZs2KurkZ843Zhs4bVTQzvVqfyrvg3zHNPb2UMsLtGBPGJSpIqjEqRUb9ch%2BvSSvp0JlcvJCLyMuxJb4JNvi%2F1SuEBVvkaX9L%2BZbm8Sv1fTbf0Y6%2F78lPxH%2FgFzpeRvyPbWcXlyyubWBIXuoxJOUG7uKjk5%2FaOSSoxPNXZs2bArs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F%2FU7%2FmzZsVQ2osyWM7o3FlQkMOxGPtZhPBHKCDyUE08e%2BM1Bedjcr4xPT%2FgThV5cvBJbpGergEfMDcYa2PkqfZs2bArs2bNirs2bNirs2bNirshfnRGtb7T9TX7LcoJD2qDzSv3vk0wl81WDajodzDGKzRj1oR35R%2FFT6RthHNXaVcrKsUtftDi304dZz7yrqPrQCIncdMnsEnqRK%2Fcjf54yVjP5gwtJ5ckcD%2B5mik%2BivH%2FAI3wD5RnEtpwrWgw983RGby1qiqKlYGkA%2F4x%2FvP%2BNchnke5BIUGoPQ%2FPEJHJ6XG3JFbxAOPxOA1iX7sUwIdmzZsVdmzZsVdmzZsVUbqBbq2mtm%2BzMjRn5MKZDLP4rC2UVq9qYj7SWshWn%2BtxOTnIVG4ttWvdNaiiK7FxGDtWG6Ti%2FwDwMuShzRLky%2B1lE9vFMP8AdiK33gYscKtBmDWhtq%2FHbOyMp68SeSH5UOGpyJ5pYde3moWPmW5KzH0pIo2WNt0A3Wv0ts2D73zJ6FgzxqqXpKpHG9eDMx7EYXed45VeC4gPCdYyqua0I5q5VgOv2cAW8sWo2QMqhwwoyHcVyQFhVOLzvrNrdf6fFHLFX4kVeBH%2Br1%2F4bJlp%2Bt2GqWrXFnICyKWeJtnUgV3XOP67qFjaFLHUrprecy%2BlZajxPDmN1jn8Dv8Aa%2By%2BIaXrclrdtZ34NrfR1USofgeo2K06c%2F8AgcBCXr%2FlvXRrdnzk4rcoSJFXYfMbnDzOV%2BTr82eqAOQIpaBq7AV2r%2BOdTriRSEp8z8RoN9I5AWJPV5HYD0yHr%2BGQg3Ntq1lcLazx3CiZviiYOKzQo9Kjb7YzoWqRevpt5AOskEij5lCOmc60%2BWCK0j9ONYo5IYp%2BEahQWBeNjRafEcMVTvTb%2B80fyHZ3FugE9vSORJBUqPVZW%2BEHw3yVaXeC%2FsobulGkX41HQMNmH%2FBZzC%2B1iTTbadZUkjtJjzkQqSKqNm5fsdMPfyr1%2FRdT8vra2E5N5C8kl3bSMTKpkctz%2BL7SP9peOA7fFkIkgkCwOfkz7NlA1y8DF2bNmxV2bEJLy1injtpJVWeavpREjk3Hc8V64virs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F9Xv%2BbNmxVplDqUbcMKH5HIPokjWsstqx%2BK2lZPf4Wpk5yF6nF9R8xswHGO8QSj%2FAFh8D%2Fqrkoc6VmSMHUOOjAEfTjsAaZMXhMRPxRnYf5J6YPyJV2bNmxV2bNmxVQuzOtu729PVUclBFa07U98DafqsF6i9EkI6ePywwyF6vG2i6oJRUWl6xZCP2JOrr%2FsvtLhG6s0yiK4X6Zfi4QI7Vb9lv5h%2FXDHrgV5c8B0LzLc2Q%2BGF29WDw4SfF%2Fwp%2BHOg6ZMHi4j2YfTkZ%2FMGwpFaazGDytm9GYj%2FAH25%2BEn%2FAFX%2FAOJ4N8uXwliicnps305LmFZDewrc2dxbt0lieNvkylc45%2BX10UCQzHjLATE4P%2BQeNc6L55e5i0J57WVonikRmZDSq7jf2yB2Op%2FVYor2%2FwBNjktpAGjv7ZvU%2BInoy8Vao%2Fa44xCQ9as25RVBqKnfBGRby9rBEsljcIY0aQ%2Bg5FCCQD6bj9lslGAikN5s2bArs2bGyOI0aRuiAsfoFcVS%2B%2F1q2sJltyrSytuyp%2ByDsC3zwxBqAfHfI%2Fodmt2z6pcjnJK5dAexPT%2FgRkhxV2c782mSy82WUgNIdUhNs4PTmlXQ%2FwDBDOiZAvzLb6nHpOrlFkjs7lWdG9yvxVG%2FwiuGJ3Up3YTJFr7op%2BC8t1ljHjxodv8AYtkiyHbxx6XfKx%2FcXBilJ3%2BAsVUV8FRlyYA4Z80DkkPmq3EtlHJSpR%2BJPgHBH66ZBtIufqt9Np8pALHnEpO5p1oM6Xq0P1jTriPoePIfNdxnLtZtrGZluBcG3vF%2BFJYuJfx40IIxHJKzzb5et9ZtZYp1LwygcgPtKy%2FZkT%2FKWuRKKCOC6tNH1CblcWiILDUWHH6wg6wyDejx9Fw4sfOMjEBY5biH1HgLy8VYulOfJV%2By38q4ndH9LlL219K4iilHrWzLxlhI6SgE1%2F2SnFKo0Czxy28zMqcSzspIYBPj2I%2F1cd%2FytnVZdNQ2D1I%2BESMoPw%2FzMftdMG20TSQyyblmjenzoc4TY6ld6ddyKwMUsbFZoHqNwd1KnGXRXs9n5%2Fv7lg98GlWhMjwk1A%2Fm4k%2FF7jDSwSPULTTJI3PGBphGNwG4OHVW%2BgnONX%2BsWFpDFPaSSJcTESG3TcRlf2uRK%2Fazq%2BkR3aeT7e%2BjnX6yoW8ibht%2B9i9Tg%2B%2FQ98QVZHqstutowuSPSdSpV91IPVWzif1i98t%2BZ7m40FjbSWUrNCqEmkex4EH7acT9lv2c6lonmbTvMUTWdwgiumWktrLQhge6H9of6uRLzd5ZurDVP8Q2KetYFUW7jXeSKi%2Bm0hH7UZH7X7OCY4g2YM0sMrjvexB5SHcXsnkPz3Y%2BcdPqKQ6lAB9bta%2F8lI69Y2%2F4XJeDXPJlvPe6JqMeq6NMYLuE842To6ntToyuv2k%2Faz0J5E8%2B2HnGyI2t9VgA%2Bt2ZP0epH%2FNEf%2BEyESeUuff3tmbFAx8bB9H8Uf4sZ8%2F6P82TMMLNb1iDRrQ3EpBkkPC3j7s5%2FwCNV%2B0%2BGVc4n5m8yfpnzJcsr%2F6HYsLe232PBv3j0%2Fy3%2BH%2FY5JxkLourX175%2Ftb28maSZrloqsdlQ1Tgo%2FZUDO755%2B8uxlvPcMI6i6LAe2zZ6BwlS7NmzYFdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVf%2FW7%2FmzZsVdkb83W5%2BrW1%2Bg%2BK1kAc%2F5D%2FCf%2BG45JMC6jare2FxaEf3qMo%2BdPh%2F4bCNiqV6VOOcTV%2BGReB37%2FaX9WHoyFaJMz23BqiWE7juCh%2FsyaRsHRXHRgCPpwy52gLs2bNkUuzZs2Kuwu1rS49W06Wzb4XI5Qv8Ayuu6nDHMemKvONE1KWGVrG7rHPCxRgeqsppk7sb0XC8W2lUbjxHiMhnnnTHtLmPXrZfgakd1TsR9iQ%2FP7LYtomq%2FWI0Iakybof4H55LmFZdqNlFqNjcWMwqk6FD8z9k%2FQc515XuZbW4l0%2B5%2BGWFzE6n%2BZTTOlW063EQkXY9GXwPhnO%2FNsS6T5qtbofBHqaniexmi%2B2v%2BsU4v%2FlfFgHcrPTFbanZNb3caywyApLE3Qj3zjutwW%2FljzBc6Pp6fV9JHpsLNSSgR1HIorV3Vvizq2jXQk%2BAndlBA9xnNvzRiWPzJBJWnr2gJP%2FGNyv8AHAdikJ3YGf0o5pZDIboSD1GJJ9aAgh6%2F5aUzoFnN9YtYZ6gmRFY06VI3zlXk%2FVI5bi2hnlBgdBuxFFahhfr0rSNsnHlXU4JI5NJaSt1avIQm%2B8RaquD0I%2BLjkpbgIZJmzZsirsDagC1jcqvUxOB%2FwJwTjXUMrK32WBB%2BWKpfofE6Xb8f5d%2FnhjkMPmvR%2FKlrJBqkxBSVkjC0PIDpTfI15s%2FMNbu3jbR5plsZVp69swRi9N0eSjMnH%2BRcVpm669cWWtXGnatwjgKma2uPsj0x%2FNXw%2FayOfmLr%2BhX3l%2BPTYrkXM%2BpGtm1uPUUceX7yRx8KLtx%2F1s5xoN%2FefpVr6C8muVVfUuLO8kMrEIeTem7faRk5Iy5FdTuZ9B169trGZvqkc5eFD8SmJzzUcTtsrceWHzTT3fRJv0p5UZvtOYYrgCu%2FJV4P%2FwANHnPrj83vM2lX9zpWoBJYInaJ540pOi1%2BGRQDxf4cln5Z3qT2stjWrK0iexEgE60%2F2XLOUfmHYNZeZbhWP94Ayn%2FV%2BD%2FjVclLlbEdQn955q1wTiU3huLadeQCsfSljO9VNev%2FAA0bYHub1Z7V5yWkhHxpcVHJNwGiuP8AKStVk%2FbyGafqLQxyafO5S2lPJWUAmGQ%2F7uiB8f8Ad0X%2B7F%2Fy8Ctd6jpl3Lb3v%2BkQTpxniqTDcQn7LoR%2FwUb%2FALDZCyyekWl9ZyaFLPelZGN2tqDEtZJHenEs67ckpVXwq1bU7G1iKWvqtcCR4bkkhFYx%2FCHXhvvX48C%2BU7H1SbK3k9Wya5hv4HchSBF8FxBL2WeOJ1k%2F4s9P4cu%2F0j%2Fc1FphmFxPLeOhZBxAiL8jt40%2Fa5YegV6PprvLpcE8sfpTNbh3QVoGK12zluoQ2PnZih42fmWIVt5z8Md4q9I5P5J17Z2A8YrWVl%2BERoaDwoNvupnLtb02LzREdR0hBba7bVe4tEPFZwpr6sH%2FABb%2FAJOSkgPNLqGaG7e3v42iuoTwlicUIK9iM755KnGoeT7ZX6m1CH%2FYSNCf%2BFOctnuIfNkSWeqEWuu249OC8ccfW47elcd%2Bf%2BVnQ%2FyyS5t9Dk067jMVzaSXMLK3hRJlp4r9rjkQl5PbalcaRd%2BlI7PbwysI5lNJIirU%2BH%2FmnOueV%2FOUeo%2BnY6hIpuWX9xPtwnU%2Fhz%2FnTOPeY4zY%2BYNTgpVBcSVQ9CrHkP14Gsb9rFgRWSzY1K1%2BKNh%2B0p%2FZcY2Qdlev%2BZ%2FLKxK19pcdYBUzWqdYx1Lwj%2BT%2BaP8AZ%2FZyHW9xe6ZfQ6ppk7QXsBDRTIevsR%2B0p%2FlyY%2BUPNR1KJLK5lD3KrW3m6esg67f79T9pMD%2BZtCjTnqVilIW%2BKeFRshPWVAP2P9%2BJ%2BzkZRB3DPFlljlxRPz5Edx8mcw%2Fm3aXvkzULyUC3122jET2oNA8kh9NZYT%2FJvzb%2BTOZabIhnWkgaOQcwxO577%2F5fjhKIYndoZvgaUD05v5SN1J%2FyG6YI0RZ4tS%2BoyKQS1HTwYHsffALrdOQwM%2BLGOEHfhu6PWvJ6f5FsfrXnqW8K%2FDBEZD4cmAVf1Z2fOSeSLmfT9RrHEWlvDSZaVagNR0%2BztnW8mWsuzZs2BDs2bNirs2bNirs2bNirs2bNirs2bNir%2F9fv%2BbNmxV2Y5so4qw6WL9HeYLiLpFcUnjHQfH9r%2FhuWSbTnBgMXeJiv0H4l%2FA4T%2Ba4fTW01FRvDJ6chA%2FYfpX5MMGaXcBmHxbSrsCdi6%2F2f8RyZ3j7kdU4zZzrTfO2qQa3eaHrkax6haux%2Br9FkgJ%2FdT2790ZP%2BGydWWoWt%2BnK3erAfHGdmX5rkSEovNm2yiQASTQDqcCt5sL5dZ06Ko9YSMNqRAv8Aiu2Iv5i0qJecsrKo%2FwAkk%2FctTho9yo69htbi2e2vApgmHB1cgA1%2BffOYX%2BnXflXUghJezkNbabxH8jH%2BdcPPN82l65b2j213DN9WdmmtefCRkdeJaNSVb1I%2FtYXWM8cVk2javM95pUv9zcPvLB%2FI3LvwwhIT2x12KCBrxjyjRS06jrxG5YD%2BZcrzzpkXmjyhLPpzCSaFVv8ATZozuXjHP4GH%2B%2FE5JkUmju9BujaTsJYHHKC4G6Sxn9r%2FAJqwJH5g1fyjDaw2KrcaE0zSNE27RiQmtuXPSJ6%2FuW%2FYkxI6hUg8ia9qulatHe3s0k8DgxGKZywBk%2By3%2BTkn%2FN63a8ttG1a3rHL%2B9hIB%2BIdGK%2F8ABA5DNbS0tL%2B4ksJOenzETWrjYiOT4gjD9l4WqjL%2FAJOTTU9XtNc8r6dDP8E8rc4iSP71RwkTfcP%2FALsX%2Bflgq09zFvKeoTMwV2NeCsB0BaNqf8a5N9Zu59K83W2pWb%2Bn9cjBo24ZXUNxI%2F1lyCWsL6fNb3LLxid24tSgINA9Puyb67pd%2Fr2kaPc6bxN5b8owWYKAYW%2BGpP8Ak4RyQU8ufOF7JLD9XRLaAj96ZPiYv4A9An%2FDYOfz9oEbtA0kjXSqG%2Brqh5NtU%2BkW4iQL%2Fk5yK%2FiuNagjEcpTU7Rj6YqaSAbtG3%2FFin4om%2Fa%2BxhXcGeWxlDgpPbfvUFaPDKpFXiI%2FYk%2Fk%2FmwFXr0n5hfXBJFpVtxmC84jOa81%2FaKqv7Sfy5GL7zJq2rwXFhqF40AlWiSQfAEPVW%2BH7Sfz%2FwCRkTl1dLW3t7xi8108C3g9EBArCnI8jtVvtNRcR1zzTdJcQvYwRW7y28dwzFfUblIvI05fAo%2F2OGxSt3zSW9LPXITMlCjiuzofsyRt2YfsPkd0iabTtQksp1Zra4U84X6SJ%2Bw4%2FwAoD7Ei5dzqV7LFCt7KZnVAY%2BRqyg9aj%2BX%2BTJdouuaHrltb2PmCNfrkKmO2vKcT%2FkgsP2v5cjtapfo0Jt%2FMllFGHltZvVeK4ptwWNi6yU%2BzIvRlwm1mUarpNtJHEWutOkuIbh0FSbfkGiZ2%2Fb4MxH%2Bpk6uZNM8saddywStNK605tsKnYcF%2FmbOZy3s2nWaLE%2FG4e4%2BsK43HELxowOzK%2FL4lx5fFWb%2FlprP1TWLQMaLMFRh%2FlRtxr%2FwLYn%2BfNjLp%2Bp2WpwghWLxuf2SGoRX%2FAIDI9peo2kMtjfWQMUi3JM9u24j5rT4D%2B1G5qyfyfYzp%2FwCcdimr%2BUra%2FG%2FwpISOoIpXJDcIPN4HDcR3Scl2I6qeoOGNvcQyw%2Fo%2B%2FJWGpNvP1aBz%2B0PGFv8Adkf%2BzXIxSaym2NCOh7MMNYLhLlOS7H9pfA5FU30vUNQ8uaqjIqsaqHiO8UsZ6EeKsrfA%2BS3yUr6p5iudTl2S1RvRTchTKeCgV%2FlTlkOsvUveOn8VkdatauxoyN%2FID%2B0r%2FwAmTfyYHsrnTdPasc1%2FNczXMZArwhT04g3%2FAD05Yjml6Fditlcmu%2FpvX%2FgTnK5bS4sp1mDtFID6kLioPXZgc61NGTBNH4o1PpUjIpNbyX0Ulvcw%2FV9Tst7i2IqHWn99EP2kZf7xF%2F18nMX1pANMR1TTYfMkRuYYlt%2FMEY5EfYW7UftL%2FwAXjDf8u%2FMFzM8mnX6MJLWRFkMh4yiqtGUYU%2FZP82IzW%2FH4DVQG%2FduPtRP1FG%2Flb9lsG6ZJDJfPcvGI9WCoJZwPhmRGHF2X%2Ffi4AP2peafmBE8Hmq8LgATCOVaeBUL%2BtcjauUPip6qe%2BdJ82x293Pb2GtyL9ZmWRoL5QAUZZGQK47p9nOd39hdaZctaXScXXdSN1YHoynupwFCL0zUX0y4SVGf6uWDqybPG46On%2BWv%2FAA652nRtY%2FTdqJbfjLdqnK4gjpSVen1iBf5G%2FwB3Rf7qfOCxycaqwqjfaH8ck%2Fk%2B61K11AC1kZYIT6gmB%2Bxy2oP%2BMi%2FC6f7LEGlZCbBr%2B%2Bu%2FqqpBCjP6cbtxHwn4ljrX%2FgckOj2EMcC6lK6yTRKYmkIoYl6gE9xT7L5HhcTJqM1jJCEjjQSQsK7qT3rgi%2FuJ7PTDKQ31S5f03ZPi3SrfGP5RiKG6bej%2BQPzB0CG%2BuNHvB9VeZx9WvZKBX7cCf2P8jOvghgGU1B3BHfPHaQrfuEt3DHkAJakKhP8AO37A%2BedX8i%2BYPOen6dNp2qK5t4JFjs5HClyoNJfTdieUaL8S%2FwDCZEcRNEc%2BrfOOKWMTgeGUaEoHfi%2FpRP8Aunt2Ab3UorWqAc5QK8egHzOPhuoTYrdesJYgnJptgDTqdu%2FtkT1C9XnLPIwofjLduJ6fhkgLcYsi0vVRfSSRSUWRd1UeGGgyN%2BVrCSkmrXKlXnHC3RtuMXXlT%2BaTJKMTV7JdmzZsCuzZs2KuzZs2KuzZs2Kv%2F9Dv%2BbNmxV2bNmxVB6rafXtOuLXvIh4HwYbr%2BORbRL%2BsMTMaSQsOSnrseLZNDnIdfXXtP8zXtnZGC2tJWEsUz8pH4yAE8Y14rs3JfibJRPMKyf8AMXye3mKyh1LTH%2Bra1px9S0ulFSV6mNwPtRnIb5e8wXlw%2FwCj9VR9N1u12PGoD9vUgfpJG%2F7UedN8uapcXsH1e7C%2BrAi%2FvV6OPs1K%2FsttgLzP5Ysr%2B3NzHFxmjPMlNj%2FrLTdWHtiNtlU9I82sxa11lAssf2bmMfA9PFf2G%2F4XIt501y81SykEEjRQRMGEaMV5L0%2BKn2sq4ke3j9O4asuyLNSnMduX%2BV%2FxLCfVZ%2FS0u8cDkVhYhfGgxodGQDDZPMculusTzpwryMT7mneh%2B0uTVNL1e%2Bsob1tLmmtJlEkbFW5FGFR8NfUzi2iQ%2FXNXtLjUAXWe6hE3L%2BQyKHG%2FbjnqzzP5ok0H0baxgWVyodi5IRU6KBx74ASrzOzsfL1tcH69ppMtdxM0h4%2F883OS2GLS7239K1pGpGwj%2BEr%2FALHphVcecBcyrc6vBFdabL%2B7lV0UPbt12KDnx%2FlYYGvrWKwP1nTp3kirsT0BpWgcdf8AZDJg%2FFjSanSb8xC2ursXtpG5kt7dkVRGaU4g%2FETy%2FwBbIzc60xSeylsgphDJeafNtIY%2BnqREfCygYcWPmV14x3qkqQDzAo4X%2BYr%2B0ME6h%2BidZZImjM90FLQzQj40BFNn2%2B1X7DYkd2yi%2BrHNIh8uXbLp7yLJdToZbZJDX1EU0NOXxCeL9tf%2BJ4PhbTLya58sXqqt3EoKlV9MSoRUMn8ssf7XH%2FXyD%2BcfKFzoWnRatFqUUU%2BnSGSGAsBcFXZaFeHJVZDu2HOn3See9Kt1%2BsCx8x2y%2BpaXabB2TxH8pP21%2FZwAnu3VQuV1CC2iW9cx%2FwCkS28kMtA5dKLHL1%2B00TJyZPhk%2B1nS%2FKN59Z0GSNno6yI6e1V4v%2Fwy5z9pv8YWj6Hrcf6P836EWmiiHSfiv2ox%2B2kwH7P2ftLk28uxrbeXYLhYXV7gMzxkE0IqPiqNq%2Fy4gb%2BSk7PNdX1m%2BHmqaytJ%2FTtTdx%2FBGoSu6swZqcj8YbCnRmM97drKxKXcslu7tXb1%2BSBq%2FwCSzZK9c06xuNUutStkBls5IFkAIAMoHqUUfzNRkbCPW5Xs70rZcVtL0%2BtCoAFVc1oK%2FwArni2RIShdD0rU9Z0g2UNW1DR5JLG%2BirRlQuXhmp1ZP72M%2FwCph75g0K2sra21G8ch5baGJUpt6yARuvL6OWEQk1eJrq9s55YLxBzuGhJEjr3LKvxSqv7WISanq2oQRXGryvd2MtVhuSQ8aNQch8OyNjsqElhK1hbcr%2Fcv3K%2FyV%2FycRSQBmUiifsfQM6FpfljSbrR0mCy3EjDlDIzN9sGnphU%2FZ%2FlbIrqnl%2F6jM3Cb1VRqOoU8078XoOHPISIiQCd5ckgE3tyS4StK6xSy%2FDJ%2B7HqseO%2FYVw0W2thatp10he2b7YH21cfZljP86f8AD%2FYxO4tbO4so4I7ZUvG5Lpl3PssprUws392JD%2Fut%2FwCbAOh6sLuU6VqYMF4hKRu2x5DrFID0YY7rsh4tMn06%2FkspjzjniaS1nQfDIE%2BJWXwdafEv7Od0ugnmL8tmYipWEOB1oGWp%2FwCH5Zy4hoT9WuU5BTzj7FHp%2FeIe3%2BX%2FADrnR%2FysvRfaHeaJIwZ4RJGo8QDzQ%2F8AAy5OPVBfPNxbpMpifYqaBu4IwFYWlx9fEIJU7lmH7S%2F83ZJ9e0x7K9unRg8azMkoHWJySVR%2F9YH4W%2Bzj%2FKtvFdaxBDLQKzAVO243G%2F8ArYPJUXb2NvDZtdyWxe3B4meCQ%2BtG37Jkjb9lafaXHRXl9q2r6etnWJ7Yxx28h%2B1UNyMjt%2FlH4myX6lp1poPm57CIFLG8jikCsKisqqXWncc2%2BzhLZW0Om35hCuLiCeSgIHFY67KT9rl4YaV63IwMVSakg1pt27eGRuzvrTWILdYbnlcIWXSdQc8W5pXlp91%2FLIP91M%2F94mG9tcfW3AQ14xgsPH4c4Zp%2Btz6HqN2rJ61nNIy3loTTkA54yIf91zR%2FailyRNUinpV0iXqyyxw%2BjdW5Md%2FaN1iPdqf74f8A5Jtka1ZZ4LWYxsySKpaCRT8QI%2BIxkj2Hw5KLe6%2FTsUF%2Fp1wsmrRRk2l0QAL6Fft290g%2Fu7uP7Lo395hFquqaL9XZmmWCRwySWTgs8MgG6Oo%2FY5fZbAUhC%2BZ9JsfMl1SKYW%2BqyQRT2DMf3UvJeTwt4M5%2BJchKyrOr6D5gQwTQEpFK%2FwDeQv8Ayn%2BZDk%2B1Gyj1ew0SaC4gS5ntmCtX0ELQtQAM%2FEcv5Fwv1bQxr%2Bnhr4oms2ymP6xuCStSIbof6v8AdzYOaGAQ%2BXdTm1NdLjj5SN8QkG6FOvqBu%2BTjTrS2sbZLCMcVUmkpFGLn7Rf%2FAFv%2BFxTTme102DTuILIwZpKksW%2BzxWtW41%2FZyU2XlW41HhcahytOQJZVHKaXw%2Fd%2F7rY%2FzviAqQ21ldXtytrDG0k524qKmnj8sO736roNmNIltfVv7hFeaMnkUqTwpxNA2S2MaT5etS9w6WdtEvx1b42A7Symh%2F2C5zTzb%2BZun3swOjacGVKwrqMgoajeiJSr%2FOTDVdVZPYa3pOj%2BW7u31uKKzuZGP1dePP1Iz1UovxtJ%2FlYU%2Fl%2F5hOtyS%2BWrlis1Gm0pyfiR4%2Fi9Kv7SumcrvNYnu5DcXH7yToamrfSf6YL8ratLZ%2BZtJvoT6bwXMbEjuCwVh8uJauPFuFe%2Bx%2BYJ4NMawQiOFzyZOlDX4h%2FwQyQeVtAn1BY9R1QN9WU1toG%2Fa3qGYeGE3lnRLPVfM19LdAyWkTtcW8a7xOGaq1kGz7k%2FAM6moAACigA2AxJ7lojn72wANgKAbDLzZsirs2bNirs2bNirs2bNirs2bNir%2F9Hv%2BbNmxV2bNmxV2Qzz3p3P6rqKbFKwyt%2Fkn4lJPseWTPOVfnX5gmstNtdBtnMbajykuXHX0YyPh%2F2b%2FwDEcbrfm24MRzZI447GR59w6pMfNyWl7EdD1KM3Cp6dwoKldj%2B1zHE%2FRko0rz1rUtz9SvLe2lm2Hp8jC7BhWqV5xvUb%2FDnn01jPEin8pHgckemXmsTaHcxANw05o57O7IIKxliJYll%2FaRT%2B84%2FsNkIZhIkSjRDl6zs%2FwIjJCXFHkb5gp3%2Ba2r%2BbdPuEvYLVbLRpiFL27c2EvWkj0%2Fd8v2VpkGsfN2p3Kra3V2XicgEsQeQJ3qSNs7d%2BkdO1rSbKw1LhN%2BlbRXVJKFZyq8ZV3%2F3YGHLOEecvKFx5TvTLDym0idv3EvdG%2FwB9yf5a%2Fst%2B3lpHUOvsua4iNwbWCruHK%2FB0qN9j0zoy%2BarW48r2Oq3l1Le2sSizuGkqk6zgUVXMda8F%2FwCDTOO2M01rIs0XCRQ4kHqCqGnZl74NgkTlMqSOIZpPVNrXjGG8Qvfj2wXzSyqz1eO%2FtNSjQM8sVubhFbbkIpPiI%2BUR5Yca3q17IdPmtZ2js7yztriONNhyAKSciPtMJUfIZaXDWL%2Bra0jcq0ZYAV4yAq6mv8ynJf5Yex1PRjpUsfO%2F0pnuLJWNPUgkNZ4l%2Fm9Nh6vH%2BVpMRa2uvBcXej2Gp2rSC5tJJbOZkqW4v%2B%2FgY%2Bx%2FeJhtBB5sOi313boLa9ihMlo3EB5ClGkULy%2B16XJk4rhlZarBFAbZljtrS5Tg%2FoIF4fyOT1JjbC1L%2BbSbowyMwu4WrzJryX9h1PQpxw%2FFWFXNut9PB6srS6frlqI4JZHJ%2Br30bCsbOf5phx3%2FAN1T%2FwCRgPQbtreVrEFrW8gfnDU0dJUPF09unHD%2FAFeygjjvbi2haTQbpxcXlpHvLp9x9n6xClfjtjXi1P2P3b%2FGseE99ol9qtyjIKamYlktb6Mn0L5QKJ8Zp6d3x%2BH4vt8OD%2FvciTXPZaZ%2Bkdp5%2Bgt19Yad5p0%2Fe0vU2Y8T0NPiaM%2FtJ%2FuvOj6lcGysFaRlYxJWUjfkUXk3z5MM5p%2BV2l3U2pPdalFHK1sOLyqQxSZaFOdDWOT7W%2F7eTTzK8UdlcxREhXBTf%2BdzWg%2B7JxNji70HnTz%2B51GXyrrFxaapD69nfcRqSftqxHL1oj%2FOjPjtQ0GNYCfrCXWi3QMtlelhyjkYbFfdvsyx4M87Wy6zqemTq4X9KwQnmegkK%2Bmf%2BSi5G9M1PVfLUt3od3CJIGDEQS7iKUD4Zov8%2FjyErqrruPNkK58%2FJN7Sx0%2B0sDe3k0k9xA6JBJACGqwPHiKp8S8fts2F0mrDS3nubPThH6ZLa5YcQsnBvs3kSsCnJeXJuK%2FB%2FwAYmwQ%2FrXdjEsQRizhvjKCrUp8If4uW%2FwCyuK3Fs893p1nezfVdeDCOxmHFi8ZH%2B89wSeBjP2YuX%2BVFiYggA70Pmt9QzfyjdxXeiPeaY3rNYt9ZjdKUkgP2gyj7L8ftL%2FPgTz2tuLdJIT6cN1JFcxzJ2U7Sb%2Fs%2Fa5BsKfLEMvlPXby2sJI40uF%2F0izVuUcb05n0z3gkTlw%2F3237vHeddXN5pEMdnbmOys4BFcy0qDcF6GJa%2FwDFacmyX8Pu2R1QOi6Yupabd2F78dj6xjLVFUlpySaHwkUf7F0%2BDIrrvl6dr42N0eOtRIHs7ldkv4B9ijf8tKgfB%2FP%2FAHX28mPluyb0Vs7OdTL6SSReoK8%2FTZqN%2FrqOPL%2FJwTqdhFr9m1lqUhjnhcm2uv8AdltN%2FMKf7pb9tP8AZrjVhWHaHrEWqxjTb9gt9GKQytsXptxNf2sl35d3J0jznJbCojuQlR26cT%2Btc55qthdyXcyyJ9X8wWfx3ESbC6UbrcwfzS8fjfj%2FAHyfvPt88N%2FKuq3F3q1hqBIEyc4pWZuCkoAwck9MA50VPJV%2FMq2k0TznfCJQUmPJom%2BzJG%2FxcW9t%2FwDY4Q6cILa6ZY2eKRwslv6goaDfjy%2FaK4f%2FAJleadM80a8t1pcZ9GCJYmuG2MrD7TAfsqv2V%2Fmwr0WyuNXUw%2FVxci1%2BKLt%2Fw23wrg6qGVanr1vrK2t3csIry1aESBjxJEYYOQff4cjvm3zLbpZXLWTGC5vr%2FwCswRjfjBGoC8yfi%2BIjCPX2vNMu%2FqZDRNGKSAgUqxqgqKruF%2BH4sjsyPPIZZSXJ7knfG1e9%2Flxrdt5ksbqdSFu7eMLcW5O4%2BE0cV6xvnF75uVzcb14yyBW7%2FaO2KeS9RutC8yWd7DMYLfn6d3L%2Bx6D7SLJ7YhdkNd3UkRDRSXErxMDUFGclT9IwndCtpWrz6ZN8MskcDsGdojxkjcfZmip%2B2v8AL%2B3iWoySfXbiHUmFy14frKXqH4nL14zK%2FVuX7cbYEeJWDPQVpU0Pj0x6yqLL0pJUW4tXE1o5O9SaSRbeP28Cob1Z1T6vPKzxjeNSSQK9aV%2BznXLfUrdtDt9T1U%2BjeRxpa3iMvF5V41jcg%2Ftrx%2BLOd6VbaTqJlS7lMl5Iri3hHwRiQj920snhzODppWsii6zcGeSZg3po3NSy%2FD%2Fen4K9V542r0LyheaXcm5uaCCWNhxkl%2FvClOqcvs4rrn5g2enI9tpKi4uqlWck0rSvxP8Atf7HITazpccriNaLGD%2FozGnBVIJkZP261%2BFuWE4juLqSZo2pbJMjyitAQeVPwrjxbUE01reuXGvCKPUZJ2Cs0iqgUgFtunw%2FCKfDhWLXSzayW73jxuGElWgJUbUoSDhkLcXEjJDSJqkoSd%2BH7OGlh5a1HzDONIit%2FWvZEMkJRlQtGlKsCxVX4%2Fy%2FawWtILTLTTmeMmbTrm1jXe0nmMLOwH2nZlrWv%2BVhlBb6Lql09zpemrbx2cJe5WNqiRi3EKrfyj%2BZR8WJ6x%2BVPnXQrK41i9sljsrUB5pBLGzAVCgiNWLNufs4I8h6hp738sNxRBexei5BoBJWscg%2F2Xw4VZjoMllFbx635Y52k9mvPUdKaRjHIF%2B08PInhJQV6%2Fa%2BHOq6d5%2F0G7toZzK%2FBwKzBCVrTo3GpQ%2F62cYW21DQ%2FMUVrFH%2B5vyInPSIqzfE1f2afawkmtp42klt0f6uzuInWoDqrFQRQjkMJV9Q2ms6VfitpeRS%2BwYV%2FwCBNDg2ozzr5Y1vTI7V9L1PnbTDk8E4Qs7M1KKHBDp9GTfQfOdosSxw6txkp8UN0DxBG37WNea09UzZBNY%2FM3SfLcVrLrDIyXZKwm2bmW40DsF3%2BFa%2FF8eTW1uoby2iu7ducMyCSNh3VhUYEK2bNXNirs2bNirs2bNir%2F%2FS7%2FmzZsVdmzZsVdnE%2FwA9rKYXmj6jT9w0ctuT4OpEgB%2F1lOdsyO%2Bd%2FLUfmvy%2FcaXstxtNZyHosybofk32G%2F1sB5ORpMoxZ4TPIGj7pbPl%2BNPrERi%2FaG6H38MkPlXzh%2BjhHo%2BrmunCqwXFKmDmfiSRf27d%2FwBv9pMJBDcWN7JaXcRhuYHKTRPsVdT0P%2FNWB9RiWO6ag%2FdygSL7cuv3HKpkwImPcXoM2KGaHhy3B3BHf3h6B5qslXQooNOVof0a7Xdi6fDxBPKQQ78vT35xNl6Fr1l5s0yXSNZRHujHxlRhtMv%2B%2FE8JB9r%2FAIfILo2pT6XfLd8mmiKehPAzE8oT%2ByvKtOPWP%2BXKvrafSpl1XT2L6ez84LqLrE1a8WH7PH7NDlkMoluPiHRarRz05F%2BqJ5SHf1CT%2BZ%2FLlz5WvvTUmXT5jW2nP%2FEH%2FwCLB%2Fw2FauD8Sn6c67a3Vh5x0p7G%2BRfrAWskY6EHpLFXp%2FxpnLdc0S88t3ptrir27msE3ZlH6nX9pcmR1HJxFS3uA4oftDBlvcz2lxHc2sjQzxMGjlTYgjCVG6Mh%2BWD4ZRIvv3GC1Z7pdxHraNJCViukq13aswVAO9xCW%2F3Uf8Adkf%2B6%2F8AVw1t5NPkKabe3SyqKG2uIquYDX7Jc7ei37a%2FZ%2Fazm9tdT2dxHdWzcJYzyQ9R4UI7qw%2BFhkwhvDqECTaZbExyHhPbqKmCYivBf%2BKZPtR%2F8DgIkSDxVHqK%2FSyBFbjfvR8k1xY6gVtLb6vJbVWZbhvVLo38yAemYZF%2F4XCjW0McX986%2BX72Uem6V56bekVAYLu0D%2F8AJSL%2FAItjw7W0utVgj0%2B7k9DULc%2BnaSMaFkrvaz%2F8yXP%2Bpgq00iztbkaVcP8AWBer6NzEworLWjRsoJ4yRv8AEjr9jGOMDbn5y3UyJ8vcyfyHpl1puhy31zEE1e9cJfKxXjK8JMaTqfGZCrt%2FN9rCX8wda%2BqyabAGAM85aYA9FUcV%2FwCGyZXElvb20VgHb1LeNDEKmpKDhGS%2FfOK%2BcrhtU1G8vLZ%2BYsz6M0Q%2B0nBh6cwH%2B%2B5af7F8slsAAxG5tkesTm68saddo3GbTZ5bb1B1G%2FrRfrxGTW7LzPpcrahALfzDpir9biI4tJESAZowftJ8Svx%2FY%2F1cD6VMb3RNTsShJmhju4gVP2ovtH%2FgG%2BLBVnb6b5g0ux1JGWDXNDj4SEiongQcGjk%2F34hX7LfsYBukt%2BWba4gWHWmj%2BsWdpK0Dwqy%2BoWkonJE%2FvHZOfNcKdasnk80288TN6EEqxOXNWSOJiS7n2p8eB4bySw1ilv8Au4OQk47kKo%2BLv%2FLX7WK6jr4u9Uee1jItndiIiasyv9sV%2Fl3wWAFZBbvYajqsV%2FDSP1yITPUgSKH9SSinYcIRw%2BH7TSJhr%2BYOr2sOkWmnhHSK6YiRolFF5A%2Bn6ngJif8AWyP2ML6dbiRI%2FrqsAI3SRAsMY%2BxHKrlGhfl%2FefB%2B8%2F3XgXXYppJG1m2unkbj6Op2pUSKVAqksSNsif5L%2FFH9vHoUlrytdtDCgdmV7d5I2boU%2BINGT%2FLhpr3nLTKJ9UT19TB4zNHtCe3Jj3b2XIssp1Y8bUfFOQsix7SCSlAXpTmj4av5OnsdM%2BuzB3Zm9OWaNGD2%2FMgRTolP3sXP4Zv92fyYi6oITDVrG28x6NBeBvqWoWS1ivSeIikU8jFI%2BzLA6%2FGn%2B%2B3yFaq1pcXix28ZUGi3U2wadx%2FuziAEWv8Aq%2FH9vDLV7TzXeWrqbaWO4VhHeNHtFdCP7EhX5D4v9%2BfbwpC3liGgvIoVdSqt6pLPGr0pTj%2Bz8Xw4CUkEGil7RwRu9ZzwjPx8UZiKePShyb%2BRfMdhHM2kLEV%2BsDlDLQFncUCxcRX7WEF1DCs63zCs6r6c1Nkencr7rgXSpFsb5zCForepC9PiUEfZr4DADRVD%2BddUkPmPU4lUgVNtNG4qDw2Bof2kP2GyK1LECpY%2BAqTnUFhsta1Ce%2B1G3inuZCrySsgqwqFNRkwu9R8m%2BWIwscEHrharDBGjSH5tT4f9kcIoop4da6Vqt2GW0tbiQHbikbkH57UwHNFLbSvb3CNFLExSSJxxKsuzKwPQjOu3%2Fmq%2B1mFo1C2NmFMjhTQLGu%2FKRtumQfU%2FMWh3uoTXx0r1pJePKSWSnJlVU5lQNufHnhQxmOYxklSPiFCDvUZQKUIpUn7Jr0%2B7D8eYrBP7nRbUf61W%2FhmPmtkBFvptnEezCMkj78CpRZOY5w%2FBmWhBCjseuSyyn0pIpIr2CSr2gtbYTQt6aylufPp8PBWbCZPNurROskYgVkYOv7tSAVNRtg2780%2BYPNd5CdWuRJHEWkWONFjRaih%2BFAPljsqLeRrVh%2BjQt3GBRoXBBKAfFwag%2BLJ15B17yfealE2taTHcXMG63Eq%2FvbYL%2FvyH%2B6eFK%2F3iJyT9vAXkPygPNEuoxx3KQ3VrAHtYWP8AeOxpv%2FxWqijMv2WZMLdS8vBLx4pg9jqVqTFJIvwup6fvP5lP%2FDLillv5i%2BStPtL867pEEcem6hxkivLWjIk%2FevHb05ftZF9Okd5Et5mayvoWEtrdRmnCUfYmhYfzftp%2B3k3%2FAC68zLfx%2FwCFdWt1eElrbUoW%2BwGIrDPGv7CyU%2BLj%2B18eIeavKM3lq7WqfWNOkYizuXFeNesE9P8AiX7WNbqCncfm2fzRoUmg6zEqa7ZPDPPCv93eQRMC00A%2Fa%2FZaWLCHzf8Al7oOra5b6h5KuBHe3rj61Ywr%2B5Xlu0%2FL%2FdDfzx%2F8Qwpup4VWBrORhfW7iS0YkrJbkdRLKv2om%2FY4fbzsvkXU7fWNHju3jhj1ZAI9UEKhSJvEmg%2BF1%2BPEhXgPm%2B98y%2BWriTyxrM0iCMBo5VVW9aDoJIZm%2BLif5ftRthN5X8zxWXm%2FTZ9dHq6HH%2Foz2z1eNLd1Kq4TvwY%2Bo2el%2FPXkjTPPGkNY3n7q7hq9jeqPjikp%2FwANE%2F8AuxM8mazo%2Bq%2BV9UuNI1KL07y2PFlbdWU%2FZljP7UTfstih9Jy6d%2BVV3f2dja3ltHe6ipezS2mrzAFfh%2B2iMf2K%2FE2Xcfk5ojoTZ311bz1JEjFXG%2FitE%2F4lnlh3USLKCY7lSGLQ7UI3DA9mz0L%2BVP5wLqxi8s%2BaZRHqIpHZX0hAE9NljlPaf%2FK%2F3Z%2FrYqqal%2BS%2BoXb2EYvraWG3kcyvLG3IRuwY%2BkgPFW2PfJjZ%2BRruwuFa21iRYFACKFKsKf6r%2Bmf%2BReTUDxy6Yqo20LQQpE8rzso3lkpyb58QBi2bNirs2bNirs2bNir%2FAP%2FT7%2FmzZsVdmzZsVdlEA9cvNirzb8zvIf6bhOu6REP0tbL%2B%2BjUb3EQ%2FZ%2F4yp%2Bx%2FP9jOHagvqWsMw%2B1ETGwPWh33z1znI%2FzL8hqEutf0qP4JRzvrdR9lwR%2FpCDw%2F37%2FweRnGxTtNBreExw5DsD6Sen9F4gpphto2prYSSQ3Ketp11RbyAiu3QSoP50%2F4ZcK5YzG5Q7eGPEUyRpMykRSEhH7MV2IzGAkDY5h3OSEMkDjyCxL8beaZaglxoOpxTW7qLSWkmn3cX2eJ34nx%2FwApclMsen%2BcdIeC4QCZQPXjH2kanwyxe2RjT7%2B2e0bRtVHLT5SWhl%2Fat5Ozr%2FxWx%2B2uJWtxe6HqSw8wtxDvBL%2BxLGegP8yOMyceQEbcuo7nnNVpZ4JmMtwd4y%2FnD9bENU0y80C%2BazuRyTrHIPsunZh%2FTKil4kSIaj%2BGdZ1HTtM846SXUenKv2gN3glp1%2FykP%2FD5yO9s7vRb2SxvU4sh3I6MOzp7NkyOo5OKmSuGUMvQ9MMdF1m40S%2FjvoAHUfDPA32ZIz9pGH%2FDIf2Gwjt5Qh3%2Bw3%2BdcFnrir0GW5Kyx6hav6ltfqDHddW5Dbi1do5V%2Bw6%2FzZLPLbQ6nP8AWrpAby3oJGI2kXqkrfyyqR9rOU6HrKWHq2N8Gl0y6p66Lu0bjZZ4v%2BLF%2FaX%2FAHYmda8p2i2tk8sjrI7miTITxkj%2B1HJQ7huJ%2BLJR3K3snuq3fo2ruoqQC3idvsgD%2FWpnMJ%2FJ%2Fme4Msq2jC9tuUaXcXER3drJ1japH72NW%2BFmX%2Fit%2FwB5nTdIksyzW0c%2FryxVZgzBmCsa4eCZAKHDIWgbPDvK9jquh6xaW%2BtW81rDL6lozTKaFJQVAB%2BKtfhwvs47myvL%2BNQfTs2kD9UK8gQKlv2Xp8StnR%2FzQ1GW08u%2BlZO0d3dTxxQshKsKHm7hh9jiq%2Fazi6MxEiI5YOa3NyxJMjVrux%2BIrlctmQ3TS91E3jCG2jHI09R1qOdOgFf91r%2Fw2CLKFYxyJBIFZJOwHgMC2NryG3wRnq56t%2FZhusZiihu7cMWt5ir2zpyikUAU9T%2BYcuWR5pdPqiacQrWqXCzR1USVBAb%2FAHYp%2FnwutdVhtdTa%2FgWVBOAk8BcNG9BTqyk4c6rc2dxe2F3c2kcKJGI7qx4kUjpyR0B6Vr%2FNhBqc9haSxpHERaXRaWIt%2FuvcoTRa75PlyQn%2FAJZvYI%2FMUS2SNELiVTEygUjnVW9OlftI8hVWVsnSXVxfTGS6laSViCS2wodjsNs5%2Fo8rrL69qwd6pIrqAw%2Fd%2FYPw9OmSua51GVJ762swQXLCD1AiryNQrMfi2%2FyVwxKkIjW7%2BezjR7PTpr%2BUbv6WyUH8zfa6duOEPnjT7SEWmrxxkSXatazowA5KY%2BScgD9qIrxwQ3mPX7EetqFhAtqPtegzySAewA45F%2FMHm1dcRIGjMdvC%2FqRIKcuVCvJ2%2BR%2BzglLY2yhjnLaESfcEquburW8M5HpzKvIr1FaDl79cRbRr6S8%2Br245GCoac%2FCjKp67%2FwAww%2F8AL3li01qBLgPJO8f7t4wP7s%2FsE9fhOHer%2BVtfgg%2BvabcJe1FJrPjwZVUU%2Fdy%2FR9llyIFixuEzjKEjCYojmGM6jaajZ28RjBiEisJzULTi3iSKR0wboHkTXdWt21OLT5ru2A5RlN1k8SrsVWT%2FAGD5ena1aXA%2Bo6pD%2B9J2WcenL%2FlBJR8D%2FwCrnSfy880W%2Flyzl0m7uJZtJR%2BVmXSsltyNXhYD7cP7ScfiT%2BXDXcxosR1D8rvP2qWUdlZadHZW7kPcPcXEYeSn2EKR8%2BKJ9rh%2FNkRu%2FwArtc026ey1FooJo9yKs4IP7StQclz0brf5jeXtKhR7eYX0sieoiQHYL29Rv2Cf5T8WQ7W%2FMj%2BZrOKd0t1Ct%2B6eDk7xMaj05CaNxb%2FVwEgCy249PlyECMefJ4235fXQ63Uf%2FAt%2FXC7VvKsmkfV7iab1dPlISW7jTeFz%2BxJHWoPg37edQ5kyNDIvpyx%2FbQ%2B%2FQg91OB7hFCurIssUq8JoHFUdD%2Byw%2FU2IIIsMMmKeOZhkiYyHMF5g%2BhCNipcyFf3nwD7cH%2B%2FoT%2B1x%2FwB2J%2BziNyW01%2BNseVtMoMc4G7VH82TCbyxfWMxtUMlnDIPrOli55JIh%2FwCK2ZeMqthYYOMVxBNb%2Fu2HK%2Fsl6JU7Xlp%2B1xDfbT%2FdeFgmPknW7q0eC%2FsZ%2BOoWTck5ftRnrG9PtIfstnatY0iw%2FMfQ4%2FMWh8bfXbdSjxnbmyD47S4%2F5ky55gWcaZqDPp1yZo42Ppz8SvIePHOn%2BTfO2qaXML%2FSHiPqcRf2M9fTYf78Xj8XIfs4qoWsGsQ64Tpp%2Bo31zGbK9WYfFE8Z9TceI4FP9lnpNbWDVdGit9RRbiO4gT1g3QkqCW9jX4lzksE1z5382DU7WzEKoqq5UVAoOIeV9uR%2BL%2Fgc7RDGsMMcS%2FZjUIPkopj0UvHtQ%2FKnV9H1F9X8vXCajyYt9TuQoYLSijkx9OTj%2FlcMS8q%2BaLny95guoNYs2s%2FrfEXsLLxKyJXjLH4pxOdpwl1zy1p%2BvCOSctDcw19K5ioHAOxU1HxJ%2Fk4otNoZYriJJoWDxSKGRh0II2IyF%2FmN%2BXll550z4OMGs2oJsLynfr6Mv80L%2FwDCfayU6RYNplhDYNMZxACqyEBSVqSoIH8uDj0xV8NappV7pd7Np%2BoQNbX9qxSaJuoYfrr9pWwuSNg4NSHBqKbEHxrnrL80Py2g86WX1%2BwCw69aJS3kOyzoN%2Fq8x%2F5NP%2Bw2eXm0q8guZoblGglicpNA4pIroaMjfy0OKvpf8lvMusa5ol1ZazOLqXS3jiiuTvIyOvJRIf2ylKc86eM8y%2Fk35usfK2r3FtfyMtjqoRZZ3qRFNGT6bP4IQ7I%2F%2BxztF1%2BaHke01SDR31aN7mZ%2FTLRVeKNu3qTD4F5dMVZlmylIZQwNQdwRuMvFXZs2bFXZs2bFX%2F%2FU7%2FmzZsVdmzZsVdmzZsVdjXVXVlYclIIIPQg47GSOsaNI5oqgsx9h1xV4R%2BZvkA6VK2r6VH%2FuPlarIv8Aulz%2Bz%2Fxjb%2Fdf%2FA5EoJLK%2FwBFh0yOJU1AyrH6oABboqJItebtyJkjZP8AKVs73qnm%2FwAsyW89les7xzwtSMxMRKG%2BHghpx55w%2FwAy%2BWpbIHWNNjeGKFkDjlVw5%2BIPGwp8S%2FtcfsZGUauQHvdvpNWJxjhyyMZA%2BiXQ%2BUmMXNtcWVzJaXSGOeJisiHsRtll1uLf6rcMeKb20vVoW%2F6pP%2B0v7GHsLr5ptvq7mOPU4ElmEhHH1eCII4kp%2Bz6aO7%2FtephBNBPbytDcRtFNGaPG4oR7EZVKJHrhz%2B92JjDPA4cw3HMdR%2FSiiNG1m7028EiEC4j%2BGWMn4JU7qf8AjVslmvaBp3nLSFvbCiTKCY2P2opP24pKfs%2F9d5BTFFIys5ZGX9pKch9B65JvKmrSaVdevxea1m%2BCcEFQyj9tR%2FvxMtxZBIV8x3Oi1eknp5Ud4n6Zd%2F7XmskVxp11JY3sZikjbiyHsf8Amk%2Fs4caPay6peQadE6rJMwVXboF6k%2B%2FEDOn%2BdPIkfmSyGp6QA12qc4JFpSVPtcG9%2FwDjfI35a8qzaFNa3urKrXLmscfI1gP7NSv2n%2FmywxouIN1DWPKDW95DY6K0t5IfgnaUKgD05cl49I6H7TZ0bynBAmmjSVvhcz2qEM60%2BHnVRw9om%2BH%2FAFsItfhndg1q%2FpNdxmIuDQVU%2FECf8oYReSLk6R5nWBw1bmT6sSD8FGBb4h%2FNyXDyPvbsWITE9%2FVGJkB30jPKV1PpOsrBduRLFcPb3JY9VditW%2F2XxZ0%2B91O2spIoJWL3E54wW0Y5SOf9UdF%2Fmdvhzm%2Fm2w%2BoeapJlBVdRjWdCDsZE2cfeuHdvfQW0BngZptVvEH1u%2FlG6gj%2B5hH7Kr0xHc0pD%2BYg8wa1NDFZWjSWtsrCRoiGJcn46b1YdF2yFWemzxsW1CN4Ej%2FZlUofubOs2WpxpNGl2oMP2eSbEe5yTXGkadqFpJaT26T2860YEVBB6EHx8MeCzdpunlEtpHYQ38GqRrFNaPA8EgJcFa%2FGqhadao2XBGlmbe2uCzevbGeRo2PcNJx%2F2S%2FDht51s3sLpYLoH6ncIq21wRU1UceLt9Hxf8Hhj5f8pXerWc%2Bq2VrHqE1oqQWdvNLwUoijmJB%2FO9W4%2Fs8cjVH3LezEvM2mXWqyabNozB7SS1WJ5SwBrHWnLv8A3ZUbfy4onlazmtrKC%2BJlNoHFFNFbmQaHvtTJ9rPlzU7GOO6vrRbeNioQQMrRxmn938IXj4YE0fQLnXBdQ2062l1CP3SSry9Xav7og0%2F4LDsikps7C3s1WK2iWJB%2Bygpg5lNOX0YAVr7TL0xXsxcxsVlhktwpFPtLVWwbf%2Ban0e8tp7LTYrmyILlpyT6hoRw2%2Fu%2FTbdlw3taoK4v7a1dY2dW5GjQ1qVHj%2FwA24Vah5a03VlNxZEQTtvyX7LH%2FAClyfjyfo3nrTrbV9PRNI1i6gM8qRENC8gb05OUI%2BNR6nR1%2F4HIRqOj655Vu%2FQ1SBogT%2B7mU1ikA7pJ0%2FwBi3xZGwdizhOeOXFCRBSPSZNX8maml1MhNsfgldPijdD1H%2BS37S8s6ZLrEEZt2uEe1W6VWtLsg%2BlKGHIGOReS%2F6wOR9dWtRp11dSQ%2FWHt4Wk%2Br93IGyU%2Fysk%2Fk%2FW5INATT9Z0eAWczGT6gr%2BoIlfcgBxsf2vT%2FAGMYxMSeE2D07m7PqBmjEzjWSO3EOUo%2BY72M%2BYfLcd3FJeQRxyo7EzQU792GQ60bU9Hkf9HTAwts1jdVeNl%2FyX%2B2n%2FEc7ZL5XstVSS58p6kYZqVbTrysif6tWPrRr%2FspVzmuvaDq2jzsup2JtA5NCfjtmNf91Tjb%2FYyccJ8tmgJPqV4JJLJpI3sYLqJ2uY%2FtBgP91q6jpIy8Vw0sNNn8tG11m8KWNnqTrAums5YhTvyct%2B0R8fw%2FYb%2FWwLdRpfaVEkkPO50r1HhjJALRSg9HpX92%2FwCzgSW4TV9Hga5uppdVspFt7a0FOMNshHJm3VuZY8fV%2B0zfBlZHq3BNigOnm52LIfDHCYwMCJmVXI8IqMYnzI4f85l%2BsRQc7eSKVRPHKts4ruUkPAcv9R%2FiwbZaY1p5gtrHUoipjnjWZOo4lhRv8pGwcPL9pcROZo2S6ZkaXgyqoaFVk4hn%2BJ9uPqNxwVrmsWupvYzalF9S1K1lTi6GscsYYMpV%2FFWUNx%2FlwYoSjd8jybO0suLMcUsdmUQROxRrnH75PQtd8vaT5itBZapAJI0YPE6njJGw%2FajcfZzg%2FwCZWh3GhW%2Fr2wH1vSZ0DXlPia1m%2FuZuK7MV%2FuLj%2BbPQ1pdR3ltHcxGqyCtOtD3H0HIF%2BZFnb3k8EMqhxPBJHOh6MnIUDfSdssDq3zfqWmR6lFJqenRCO6iHK%2Fsk3FD0ng%2FmjfC3SNVudJuUvrKQJdQOrxc1DoafaSRGqrK%2FRlyU32i3XlnU4RHOYrF2Isr1hy9Jm%2F495%2F8AimT%2FACsKte0Zp%2FW1Kxg9KaL%2FAI6Nipr6bH%2Fd0X88En2lfFX0%2FwDlz5x0fzbpAlsIYrO%2BgAF%2FYxBVCOR%2FeIBTlE%2F7Lf7HJpniLyz5m1TyrqVtq2ly8ZYzuvVWX9qOQftI37WeufJnnHTfOekJqViwSZaLd2pNXhk7qf8AJP7D%2FtYFZJmzZsVdmzZsVaOct%2FNj8sx5ntJNb0NfT1uBayxrt9ajUfY%2F4zqP7tv2vsZ1PKOKvhz0CsbwMzqSSHPRgw2%2BL3%2FmwrlheB%2BD9exHQjxGeqfPH5Oad5lupdW0icabqU3xTqV5QTN%2FOyr8SOf2nX%2FgM59H%2BQfmu5nWC9ns4rbl8U6OzMB%2FkpwGKr%2Fyk%2FOBtOMPlnzTMWsyRHY6g5qYq9I5j3i%2Flf8A3XnoxWV1VkIZWAKsNwQehGc68sfkv5Q8vBZriE6rdrQ%2BpdAemCO6wj4f%2BD550VVCqFUUVRQAbAAYq3mzZsVdmzZsVf%2FV7%2FmzZsVdmzZsVdmzZsVdiNzNDbwSTXLBIUUmRj0A98WwNfPaJbSm%2BKi2pSUv9mh2pirAPON5pMWiStoiPJfM1bVI4yy1G8jDkCnwrhDrD6jFb%2BWbC7Wt36Ecl%2BCP%2BKiZHbtyJajf5WDvP9xZRaNCfKtxKb4zj04IOR403JKkfAOfH%2FWws84ajNd3EEklFuSOUtK%2FDRVXiKduQOFIeeatpk0F5PeaUj%2BlATLIYwSYhXd%2Fh%2ByleuLP9U12ykmiWO2vrWOW4n3PxgcAFXmaty3cf77%2Bx9jO1%2Flvo0EejT388SvJqDMjFxXlEvw8TX9ls5h%2BY%2FkSTyne%2FpHTVY6LdsVUj%2FdDt1hf%2Fitv91t%2FsMgRW4dxo9X4vDiySqcfon%2FO%2FoyYJsQGHfJL5FsrXUdZk0m6uTbR3UTvHQAgzRjkONSODla5GgcX0%2FUJNL1S0v41DPFINm8G%2BE%2Frym%2BHMD0k52txeLppjqPUPfF6l5X8xWlm995evZlguLSdkjR9gTWjrXovP4XTEPM6wwzKSKCT4tuoIO%2B3vke80xXU2tW13ZQ%2Bo15bq8npJ8UlELVp%2B3sMBWOsXOtWy2iEyXNuCyIw5Myf8VsaseFP7tvizL4tq%2BTzNUfvT%2BOU6npky9ZrciVAO5Xw%2Ba8sis01rp%2FmC01O5YrSWJ4kXcyFiB9nsK%2Ft5fljzLXzMlg0bRQujQESbVlDcl5IenL4kyeebPIp8y6j5e1DSEjX0XWO4QsqKYk%2FfRgV%2Fb5gx8cHMe5lGUom4mjuPnzSW%2F1OfVL6R7sJW2keKFUGygGhIJ3PKmNVy%2FTAk1pdWc9zBdrwuElcTIezA%2FEMj%2FmjXbvQtaW3tEBgCJM6PuCHFQExtizSKI1DHJv5VuxKrWMp%2BwC8JPh%2B0v0ZCNLvrfUrGG9tjWOVQfkf2lP%2BqcPdHme3vIZV24sKn2Ox%2FDJBSyzzBplrqWnSQSxLI0P76EsoIDqO3%2BsMgmlaxceUdRXU7ZS9jJRb62XoUP7QH80f2k%2F4HOgXdyVYgHp1%2BWQW8g4TzQyoQpJIVh1VuhGJCh7FG9hrempKhW4sryMMp6hlYV%2B%2FOWa%2FbXfk%2FU0ZJOEL1ayu2%2By1P91udv3if8OuCPJ%2FmhPL1xaaJetx0y4rFFMx2imJJSvhHLXj%2Fr4N%2FO9G%2FwAJ28o%2FYvY69%2BqOMgdlYzqPmWy8xr615aouoxAA3dk4dJB0%2FfRGjofBl54U%2BnCySRNSa1l%2B2vQq3861%2By65GPKcztqxjY7NEw4jYbU32zoNppF1qfrw2JX6yierHExoJivWIf5fH7DYYnZaY3pN9N5N1n9JJEbuIwyRoisY1kDbpVu3F%2FidM7xpl3Y%2BadFt7m5tle3vIUkaCYBx8Qowof5WB%2BPONG0jvLY28qlRUgqwoyOOu37LpiXl3XbjyZqk7XglmtZIfTEKNQGh5REFvsxr8XLjgIrdWQedvy7GiQPrfl4SNaxVe5s1q7Rp3ki%2FaaNf20%2B1kT07WGCqwcMjdJFNQc9C2N9BqNvHc29WiljSVGI2KyCopkFv%2FwAotHu9cOq2d1JYW0x53dhAo4O53JQt8MYf9ocMFyB23ZwGOQIkeCQGxqwfIsatNQSQrIrmOUbrIhoQfEEb5LLHzPP6X1TV4RqFo4ozFVL0%2FwApD8EmFms%2FlxeWBNxoEpuIhubSQj1B%2FqPsHwo0%2B4ltUmW7Ro5ojRo3BVhT2OWCi1t%2BbPJ1pFCfMXlJgtl%2Fx92VCyRHuwjb4kX%2Bdf2ciOlG2huhcX2n8JI2BE8FHHzMTb%2F8TVc6FpWutaySPblJEmHGeCQVVwP1ZGtcsIbe5N3p0Ui2MlWaM7mB%2FwBpQ4%2B1F%2FLkTGulhnDIYnYprf6tYaxaxxCDlxIaG7iko8Z7kGtWr%2B3ywxsdGl1WwitzGbkgkRzugDGnRm34R0%2FZbIJBZwxv9YhAVx8Qp0JPiBnafJl1eXekLNdyrKOXGNgADQD4g3Gg%2BE7Y8WyTLfiHNJbbQvNHle%2Fe50eQX%2BnXAD3Vg53EoWnKImhQmn7Pwv8AyYRX9xql1dmXWOS3XHiqMnp0QEkKq%2BA5fazrQwHqOmWmqQGC7j5D9lxsynxVsFsLeO39hb39tJbXMYlhlHGSNuhB%2FUffOZXy3%2Fl7UV05n5MgrpN1LTjLCT8VncEj%2FYf5Odt1nQbzR3JcerasfgnA2%2BT%2FAMrYB%2F5V3Y%2BdtAvhefubrn%2FuNux1jkQUYkD7Ubnir%2F6uEq8D1rTFk9XUdNgaHix%2Bu2XVoHPcD%2FfbfstnQfyAeb%2FFktC%2FptaSF1VgFNGTiXFfiA%2BLj%2FlZC9WuNd8p6kNM1e04anYsY2mY7TW%2FZG2pKjfsS4K003mkCHzl5WmDLazercWoB9WCvX1FB%2FeQt9lv8nIofYNRl5FPI3njTfO2li7taRXkQUXlp3Rj0Zf5on%2FYbJXirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F%2FW7%2FmzZsVdmzZsVdmzZsVdgHVY9PmtHi1JlW3cgEuQBUbr1wdgPUdNttTtzb3IJWoZSOoYdxirzHztP%2Bi20aTyvdm6uDcJSCMJIPTVhRWKj7Bbbi2B9b8keZrnV3FvberbsQsVwHUKFJ6tU8hSvhk%2B%2FwAPGy1GwvLOkqK5ju0cIP3YQ%2BnItAPiif8A4nkkphKQaQOk6eml6ba6fGQVt4whPif2j%2FwWO1LTbPVrGfTr%2BITWtyhSWMjqD%2FEfs4MzEVwIsg2Ni%2BVPOHlm58p65NpU1XhP72znP%2B7IWPwn%2FXX7En%2BVgW28s63f2kWr29m76Ys6xyXQpxUggNUfa4iv2uOen9c8t6J5it0t9as0uo4zyjLVDKf8l1oy5EL7TriGW30Lytp7Q6Dbs0d7xI4Oz%2FFWPlycmNvib%2BfKziufETs7WXahOn8Ph9dVIn6a7%2FewDzPd3ukNplzYtxtEhW2adVBKzRktTkalOdf%2BBw60bydZ%2BaNR%2FwARaPq0VjOIw509bcLIkw%2B16yh%2FjRm%2F3an28de6dLYTXGk6xDztpx8aHoyn7Lqfb9nI3YX%2BreQ9ThS3pcWhcvazMBWSE%2FbgaQ%2FF8P8AJlrrDvunvmryB9buFvzAtnrkQD84z%2B6mKHkGRtu%2F82HWnO%2BoadLpU5aC4ZeUL9Gil%2B0jKR0aOYZOLO80jzho0d3Zv6kMn2WFPUhlGxVh%2By6H7WQWaO80rV1hvwBMjcfUAoskTbLIP%2BNsIr5oSu10tfOt7Ikt4th5ijQC6hkSsdz6fwfWIiCCr7UmTj%2Fl5JG%2FKTSdTjg%2FxDILh4UCUgHD7P8Axafj45GPMdkYtRkvbWf6jewEXNhcr9ppT9pEVatJWnxJx%2BznRPIfmz%2FFujfW5Y%2FSvLZ%2Fq94gBCmQCvNQfiVX%2B1xb7OA2NleaX%2Fkr%2FA19Jb2rO%2BlXbc7UvuFbuvL%2Bb%2FiWC7M7HOuarpdrq9jLY3i8o5Bse6t2df8AKXOP6jbaj5dvpLK5USBd0fcB07Ov8cMT3qkP5l6trkWp2kNi8sVr6CShoyVDyH7RJHXj8OQpfNfmCN1%2BsXcsnBeCrOfUAUdFHP4uP052ny%2Fq2g6veR6T5hgX94Almsp%2Fdsw%2F3W%2F%2BU37GSHUfyp8n6hUpavZse8DkD%2FgH5p%2BGCXNeTwM%2BbzeWxtr%2B3SVHFGMZKMP8oBqr%2FwANh9qv5gpr3kVfLV9zk1O3uIjFOwrzt4w1GZhUeqn2P8rJD5i%2FJJrK2lvNKufrSx%2FEYCnCXiOtCpKPx%2F1M503lq7tpDxDNUUUGlPwyJtWQflfpMWseaFtLgssZtZnDJ1VhxCn3651e38qanp%2Bs2ZX95brKG%2BtR7UVfio6%2Fs16YS%2Fk3pGmWxvNR%2BspJqfEW7WnR4kryLFW3PqN%2FL%2FLnW8I2UsW8x%2BVo71n1LT0CXp3mjGwlp3%2F4yD%2Fhsgl9oyXUaxX1u8LoCY2dStV%2FaG%2Fgc7JTEbiztrr0zcRrIYmDxlhWjDJCXQoeVeW9Rv8Ay1PKL25kuNO9ELEo%2BIjgaoKk%2FAqJyzqtrdQXkCXNs3qQyqGjcdCCK7ZFPMPl1Yg95aLWA7zQjfjXqw%2FycB6JrNzY3BW7uAbARKgUqSQVIC8KfCq8K8vhxq9wlntK4DvtJ07UgBfW6TU6FhvTwqN8FRyRyoHiYOjCoZTUEHH5FDC9Y%2FL6wuSZ9Ic2M3X0tzEfo6p%2FscL9B%2FLy8XVJNS8y3Yuo41aKz0%2BEkQrGwoWlO3N2zomVTDZV4l5n8s3Plq94oS%2BnTk%2FVZj27%2Bk5%2FnX%2FhsMNI893Wj2ht2thNVSEp8PGSlBK%2F%2BSf286nqOnWmqWcllexiSGQbg9QezKf2WGco13yhdaVMUT95A39zL0DDwPg%2BIZc3pPlzU5dStGa4IaeNgGZaAFWHJWoMOc5v5E1B7Wf6tcAoD%2B5PLb3jP0fYzo4xIYrZIo5UaOVQ6MKMrCoIPtidrZ29lAttaoI4UrxQdBU1OL5sCsO8%2FwD5e6V5708RXNINQgB%2Bp3oFStf2JAKc4m%2F4XOIWX5R%2FmVoOpummwIySAxNMssZhZG2q3Mqen80eeoKZqYq8l8h%2Fk%2FceW9Qt9Z1DU3W4gPJLS0JCEGvwTytT1U3%2Bx6arnWs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F1%2B%2F5s2bFXZs2bFXZs2bFXZs2bFXUzZs2KuzZs2KoXUjILG49E0k4EKetK43TYkhsoQp5EqGZvEnvgp1DKVbdW2I9jhDdaDqT%2FuLLWJbOzP8AulEVnAPVVkb4hiqB8wWUXmS%2BXTYWQi3ikZphuUlqOKmn7P8ANnOtRsiPW0TWUKqD9ofajYfZkQ%2B3%2FDLnYtH0Wy0W3aC0BJc8pJHPJ2J8ThV5u8tJrdoZrdQL6EH0z0Lj%2BQ%2F8a4bTbxXQPMGq%2Fl9r7mSs9jcUN3Cv2Zo%2B1xD4Sp%2FzZnaNYhtfNmgRaho7JcMwE1pKCASP246%2Fsn%2BZf58gsugWWtaPFp1xRL21qFkFCyP3U96YR%2BUfMt7%2BX%2BqvpmqEtpUsnGeOtQjE0FxD%2FwAzUxOy%2B5kHmGCOa1s7%2BVeEsFYpHI3SvwyBvDi647RtH1by3qEXmPT5VlgnWmo2C1Amj6rIrH4RMnVcCz3FvJ5x1pIqX2h30cVy3ouv2nQEeka9XZW5ZJNPult7dbZpTLasP9HlYUalP7uVf2JlH2v%2BEw891ZzY3tvqNtHdWz84pBUHoQe6sP2WX9rC7zJoEOu2Xp7LdRVa3lPY90b%2FACHwi0IahBqtdOo9hKf9LjY0Vf8ALU%2F78ybZFD591jS3R3gnRo5Ymp4MjA9snHkr8weRi0LzJII7pQEtdQc0SYdFWQ%2Fsy%2F5X7eH%2FAJw8uLqMDX9qg%2BtRL%2B8Uf7sQf8bLnJbuyjcNFKnND1U%2Fw8Dh5pfQo3Gc487eVFhMmq2KfuHNbmNR%2Fdsf92KP5G%2Fa%2FlyPeXPM%2Fmfy2Y4pmk1PRqfBBKpNwiDr6E3%2B7OH8j51%2B1ubXU7JLiKklvcJWjDqrDdWH%2FEsV5PntoFiuUuQOFxFvHKpKsPpWnLJZ5b8w65p1xEguXuIp3q8d07P1%2FZVm%2Bx%2Fkccbr%2Bhm2125sbPggX95AZq8FRhy3p%2FL8Srk181aDHqempqtvRLu2hDngPheMDmV%2F2P2ozjsrKLW5ju4Eni%2By4rQ9Qe4OL5D%2FACp5hgu7iOwkkUXFxD6yx9DWM8HNMmGJFFDRFRQioPUHIhrmgrAXubdK2z19WOleFepH%2BRkwymCkUIqD1BxBpWIaNq09o31WURrZoiem32ePEheCIB8VV%2BLJcGB3BBHtka1LQXVne0XnC9eUQ%2B0tevHxXA2lxazHfW620rx2atW4gkSqFOPCgdvjDClVwkA7hWYZswzZFXYnNBFPG0UyCSNvtKwqDimbFWE6voE1hIbu0Be3BrQVLIP8rxXJRo92b3T4Z2%2B1Ti3zG1cGkAih3B7ZSRpGvCNQqjsooN8NquzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Dv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxViPmbyo91cfpvQiINVT%2B%2Bh6RXSD9iXwl%2F33N%2FwWQzW9AXXo%2FXaFg7L%2B%2BhK0mjdBuafzACjrnYcDTWNrPKk8kYMsZDI42NR40w3tRW3z1p2l6ho%2BotLAfXVE5OgDVljA%2BLj%2FxZGv7OS2BbeaRbscpI5YuLQq3ETIfiQcv2ZVP90%2F8AsMk3mi1FjqBnt0CpcIHIUU%2BNT8RFP5tuWRDTFEulwPaP9YjVSfVjBIFGPM%2F7BvHCOSXqXlu6trnTI1t7Y2Zj%2BGW1YhmQ%2BJcfb5fzYcZBPKl1I7GRXHKGi3AY%2FajPRvdsnQNd8BFFDjnL%2FPWhJaXguIKRw33KngklPi%2F2Pxcs6jkY892Ul3onqwoZJLWRZeAHIlT8D7fJsAVBaLpUeueS9PtriYPcWykQXkfZ4yVDD%2FJP2WwX5X1NJ2NrQIGXkoXpzQ8JP65GPJfmOTR5G0zXLmGCzlYmzhZPSeE05ceP7UTjfliOhagkWs3CW0gkUXbPZjoZVkY8kQHr8OSHUJZD540vmYtVRBIAvoTo260JrGzU7cvhzaJ5jgm0t9O1u7giu%2FRdY%2BJ48oyCg%2Fd9QyfZ%2FwArJhPBFcwvbzqHikBV0PQg9sgt%2FwCSLpJy9pxniPRiQsgH8rfzYB5ql%2Fkq1hXU4ZigNwjsizftemU3Uf5Jzp%2BRXyloF%2Fpj3FzqYiR3YraxREsyx%2FzTOaL6j%2Fyp8CZKsSUOzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Hv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVg35iPrMEFld6XbR3CRM%2Fro1fUIIHwx%2Fs4U%2FlrqOkz3c1lYQmENFJI8DCgRzIDIg5b1JavTOiajZLf2cls1KsKofBh9k5ydpJPL%2FmzT9ZcBIWY2t5sFoD8Ls5C1%2FwCDkyQ5KyjWdLGi6ml3brSyvKxuo6I58P8AJPVclOiXZurPi5rLAfTf5fsn7sE3drBqFq9vLR4pV2I7dwy%2B%2BF2j6Xf2F5dS3EqNbyhViVa8iV%2Fbfag6%2FZXBdj3KnWURXLzYFYV5n8n3us6ut7btEITGsbc6hl418B8WFd75Ym8svHqVqPrQiCsJSPiikH2jQfsNnScayhwVYBlOxB3BGG1Sby7rf6YgZ5KCZftIBSmHeFllodlp95LeWqlDMKGIfYB7kDDPE%2BSuzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F%2F0u%2F5s2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZFfM%2BipLW%2BSJZAf71CtaMPsygf8SyVZRAIIO4PbCDW6pP5YvDd6Wiu1Zbc%2Bi%2B9Tt9mv%2Bxw5xG3tbe1Vlt41jDHkwUUqfE4tgPNXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Pv%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV%2F%2FZ" );
+ background-position:center center;
+ border:1px solid #00aa00;
+}
+
+.yui-skin-sam .yui-h-slider {
+ background: url(bg-h.gif) no-repeat 5px 0;
+ height: 28px;
+ width: 228px;
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-eof.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-eof.css
new file mode 100644
index 0000000..76ffc6d
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-eof.css
@@ -0,0 +1,10 @@
+div.base64-singlequotes {
+ width:100px;
+ height:100px;
+ background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAAAAAAAD5Q7t%2FAAAACXBIWXMAAA3WAAAN1gGQb3mcAAAFrUlEQVRYw%2B2Xz28kRxXHP%2B9Vdc8vj2fG9uIkm2yUeFGEhNCKQwBpj1yRUBAnpJU4ceZP4MxfkBxy2GO45bQXuEGQohUKigQ%2BsBBE1sbYXv8Yz%2FRMd9fjUN09PV5nFZA4kZZa79W3quu9er%2FqNfy%2FPwJgZty%2Ffz%2FZ29vrpmmqhlWTgmFg1UpbfWhYhG6Yq2cFi%2FNrj9nJyWnx%2BPHjeafbMTEzPvjVB9%2B6d%2B%2FezweDwV1BfHubivkC3lZya%2F4m7Np8UZYXhweHH7733rvvC0Kyv7%2F%2F7p07d34qIjyvr63RNb4l4CbsRUrNrq6OfvfRRz%2FxDx486A%2F6g7vXhX9ZIf%2Bp4JomaToZj8d7Pk1SFRFXb1aWodq09l%2F9YZu%2FCWMVL9e%2FaVFVQVUREEG8r3VUEZ4cX%2FHL30%2B5shRtAhFq4wggNb6GrXgVa2K2jYtACIHv7Sz54TfHjWWagBOBy0Xgt%2BcjLtwQxVCpNwURQat1DdYaT7pwdwKDFA6ncHgFizJmSb3WLPDa7PMIVlb2daqZxdONUnAetEojEdBGiXXhTmAjhZ0%2B3N6AlzeEROH1TXiWGf%2BcwmkWZYnAfAkdx1pq%2BhUbT9z3IElUJlVhI4WsgCLUyggi4MQYd4VXNmCYRqXOspV7UoHbQ3hpEMeLAk5mkFYRYlWI%2BHZ6CTDwkKSQqrA7gFeHMF3C6VyYLmFZGiKCE6GrMFsaWb7yuVOh66N1FkUUpBJ3TyvFovToBl9XMbNY2bZ70BsKfW94hbyErosmXpQwy4VgkCjMizjvRRik0EtiLNwagBf465lwOqtkETEn60XT1%2BlTazrpKlR%2BKkooy3Xfb3Wj3wGWJRQhnni7B53q5FqZ4%2FUR7PYhGMxyuMwgWVqTxrYWAwZYQX78J5i8ie9txSAkoOqqQAqk3pBgKLDhlY5XVKPCi3w97YRoKSFaceCgF2hqSXRBPQAIOcXRH8hP%2F0y6%2BRpWLrEyg3SbS9tmzggzJQSLQZo4xoOE8UbCsJfQ7zi6iaIizZ5OBVfXDKPireWC%2BvAYWOBqeszl9Jg03afbH6OqGH%2FBSUrqbrFIXiHoiEDC%2FPySi2d9nnZHJE7opY7dcY%2FdcZej84zpPGfY9Uw2ErYGCf2O4mUVEzELWtqUxZKjf3zK2cURzicMRy%2BzvbuH8ylFPqXIPqNczClKY1mUZFcnSDKkv%2FUNuptbWG%2BLw%2FMh%2FzrYpKBHKV3ONOXzYxeV20z49qhs7gaMWIjqQQiBxVXB4irg05yz4u%2FMpieoJuTLjDJfUJYBzBAFUUHkhMvLvzFPuvQ2JvQ3duh0R%2FjuiDQdIn6MJdvkxTafZUPuaN6UaOo6UNtgNl9weboguwqoA5fCjEusNCzE8LJQFRuNrzpQD%2BrmZNM55%2F4A5z1J2iHtDEg6fZK0j0uHlDrh2N4i3Ptuc%2BH5tjp5HliWQmmOUAhlYe0rqUqWSEOhcZ05AvE1UdColSQJaHWlSUYgJy%2FO2fFfo%2F34piphFOZ4OrvNdL5EJZbcmE8OQzFxIJEGEgIeE1%2FhrjJLxZcOrIVpVC7TW00WmLWyAMDEs%2Bi9wVJDtG17Y21vVmNxLKqIOkQqqoq2qHORmgj9UQcza7mgFm4GmiDjO5C72DSoQ6uPVTW%2BzuFUcQ2teKd4pzhd8b6Nu6jg7vZsrb1rClEIxhu7Q37x47fIy3j%2Fi8iqqlUuEWTFN%2FOrMU3fEEuhUM8FIPDqZgcRIVhsAXxtjGDGS5M%2BP%2Fv%2Bm7yopVrRVsPabsW%2BYG1T%2Fy3KahqSg6cHRb5cTmt5ZXhxQ7nS6yZsVWOajDFbw2JSCSGEIsuyC%2F%2Fo0aPp%2Fv7%2Br9NO5%2F5gMOhJLNn%2FpQLrLfw6tkKKorCDg4NPP%2Fnkjx%2FLOz96h2enzyZvf%2BftH9za2fm6qLrnO9tGk2vY86f%2FMliWZRdPnjz5zcOHDz%2B%2B%2Fifimorzv31C9X718G%2FYrCYSNJa5LgAAACJ6VFh0U29mdHdhcmUAAHjaKy8v18vMyy5OTixI1csvSgcANtgGWBBTylwAAAAASUVORK5CYII%3D');
+ background-position:center center;
+ border:1px solid #00aa00;
+}
+div.otherdataurl {
+ background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFBQ0WDWwqwjwAAANMSURBVEjHrdZbaFxVFAbgb2aSTG6GTi6mVIwxNxF9qFI0RQnFUqiYamutVutLa2t9EY0oPggFoYgPRR%2FaghYviA%2BiIAYvmBJKoYWiiBCigVTT1FisbUhrEtNkJpc5PuQkjGEmJqkLFmdz2Hv%2Fa%2F3rX3tvlm95oS%2FLokuZtIpbdvAs7KFtL22wjb3V1C41upy2ke1DXC2k%2FBjv1HHXDrbkEamg7lX2P8QTldQ2UtfOB8uiJsHNiB%2Fik0GmO%2BgZIxgnGA59nGCMoJPeQaYP047iBDXZEohkAYof4%2FNyKlZRdR%2F1ASZCnoOMhWkUheMz9F1laJSRZ3gEqVw1ipZQjcoBRrbT3Ez9OJLhZkHG5CD8l8Q47qXhMZp%2FYxhVFaxBLBtQejdtA%2FTtZPMIJnOknI2WSYzicTYN8OtTvICZbECxdr5Pkm6iPL0C3c%2BgkfIJgi%2F4LnP%2FudRKD3K4jf1VJGLEAiuz6VnA4AGam1h7gpNIzSFe66D3NurLKVhJNkHo07N9V9BE3XHOYmyeuirqG1l9mdHgOkDSGd8%2FGWtg9Roa56lrYdchDtRQPLlCkEywKVRScDfrurnwC2diiPTRe47iVtbnLZDxckGCkKYpPM%2FRr3kbyRhsYOtRDiQonFoBSHrBOI18rOeOPvr76YrCeUbf5fTvjOddJ0gQ1uMPku9z6hwjiEZhgOMn%2BaaUeHQJIOkMD7KMA5QQP01HP18hPbfvDTvZPETqb2YiS1BWrozM6jk9SPJJHkZZ5qFagtoaNnbyZg1FE4sUPRdlAQpwkdSjvDZAJ%2FoxNt%2Bw6NlGbQVFl5iKLKKsXCAwyFQZ8S3ciu65ho1lBJ5%2FkZk3OBGjpJWGmVCmsjTkQvA8JHCUU7s5eImevzg%2Fd7BGFhzCARIf8uVN3J5Heh1VM%2BHlko2y%2FHBxF0NJolfo38eDuJJxbf0ro%2FnMurh8hM%2FupH4tdT8zciOFsTC8SAgQoJfRxKzCuvfw0k%2F8MDx7xqUyez%2BS48ESIN7Ky6OUpfAtrxzhx03UR4m0c%2FZF7tnKW2mma4l9yuthTSIZIvxPi6EcpZW0PM0xtOzjo%2Bf4GPfv4r1qNqAUFYs9diJLBC1CIa7FZx8fUlwI22LuNv%2FfLbKMAOftH9TwRXg6%2FiCDAAAAAElFTkSuQmCC");
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-linebreakindata.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-linebreakindata.css
new file mode 100644
index 0000000..350fbf1
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-linebreakindata.css
@@ -0,0 +1,34 @@
+.yui3-skin-night .yui3-dial-ring-vml,
+.yui3-skin-night .yui3-dial-center-button-vml,
+.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night .yui3-dial-marker-vml,
+.yui3-skin-night .yui3-dial-handle-vml {
+ background: none;
+ opacity:1;
+}
+
+div.base64-doublequotes {
+ width:100px;
+ height:100px;
+ background-image:url( "data:image/jpeg;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFBQ0WDWwq
+ wjwAAANMSURBVEjHrdZbaFxVFAbgb2aSTG6GTi6mVIwxNxF9qFI0RQnFUqiYamutVutLa2t9EY0oPggFoYgPRR%2FaghYviA%2BiIAYvmBJKoYWi
+ iBCigVTT1FisbUhrEtNkJpc5PuQkjGEmJqkLFmdz2Hv%2Fa%2F3rX3tvlm95oS%2FLokuZtIpbdvAs7KFtL22wjb3V1C41upy2ke1DXC2k%2FBjv
+ 1HHXDrbkEamg7lX2P8QTldQ2UtfOB8uiJsHNiB%2Fik0GmO%2BgZIxgnGA59nGCMoJPeQaYP047iBDXZEohkAYof4%2FNyKlZRdR%2F1ASZCnoOM
+ hWkUheMz9F1laJSRZ3gEqVw1ipZQjcoBRrbT3Ez9OJLhZkHG5CD8l8Q47qXhMZp%2FYxhVFaxBLBtQejdtA%2FTtZPMIJnOknI2WSYzicTYN8OtT
+ vICZbECxdr5Pkm6iPL0C3c%2BgkfIJgi%2F4LnP%2FudRKD3K4jf1VJGLEAiuz6VnA4AGam1h7gpNIzSFe66D3NurLKVhJNkHo07N9V9BE3XHOYm
+ yeuirqG1l9mdHgOkDSGd8%2FGWtg9Roa56lrYdchDtRQPLlCkEywKVRScDfrurnwC2diiPTRe47iVtbnLZDxckGCkKYpPM%2FRr3kbyRhsYOtRDi
+ QonFoBSHrBOI18rOeOPvr76YrCeUbf5fTvjOddJ0gQ1uMPku9z6hwjiEZhgOMn%2BaaUeHQJIOkMD7KMA5QQP01HP18hPbfvDTvZPETqb2YiS1BW
+ rozM6jk9SPJJHkZZ5qFagtoaNnbyZg1FE4sUPRdlAQpwkdSjvDZAJ%2FoxNt%2Bw6NlGbQVFl5iKLKKsXCAwyFQZ8S3ciu65ho1lBJ5%2FkZk3OB
+ GjpJWGmVCmsjTkQvA8JHCUU7s5eImevzg%2Fd7BGFhzCARIf8uVN3J5Heh1VM%2BHlko2y%2FHBxF0NJolfo38eDuJJxbf0ro%2FnMurh8hM%2Fu
+ pH4tdT8zciOFsTC8SAgQoJfRxKzCuvfw0k%2F8MDx7xqUyez%2BS48ESIN7Ky6OUpfAtrxzhx03UR4m0c%2FZF7tnKW2mma4l9yuthTSIZIvxPi6
+ EcpZW0PM0xtOzjo%2Bf4GPfv4r1qNqAUFYs9diJLBC1CIa7FZx8fUlwI22LuNv%2FfLbKMAOftH9TwRXg6%2FiCDAAAAAElFTkSuQmCC" );
+ background-position:center center;
+ border:1px solid #00aa00;
+}
+
+.yui-skin-sam .yui-h-slider {
+ background: url(bg-h.gif) no-repeat 5px 0;
+ height: 28px;
+ width: 228px;
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-noquotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-noquotes.css
new file mode 100644
index 0000000..aa175b5
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-noquotes.css
@@ -0,0 +1,26 @@
+.yui3-skin-night .yui3-dial-ring-vml,
+.yui3-skin-night .yui3-dial-center-button-vml,
+.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night .yui3-dial-marker-vml,
+.yui3-skin-night .yui3-dial-handle-vml {
+ background: none;
+ opacity:1;
+}
+
+div.base64-noquotes {
+ width:100px;
+ height:100px;
+ background-image:url(
+ data:image/jpeg;base64,
+ %2F9j%2F4AAQSkZJRgABAgEAZABkAAD%2F4RfJRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAAD0JAAAAnEAAPQkAAACcQQWRvYmUgUGhvdG9zaG9wIENTMiBNYWNpbnRvc2gAMjAwODowNzoxOSAxNDo1ODowNQAAA6ABAAMAAAAB%2F%2F8AAKACAAQAAAABAAABwqADAAQAAAABAAABRQAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABaTAAAAAAAAAEgAAAABAAAASAAAAAH%2F2P%2FgABBKRklGAAECAABIAEgAAP%2FtAAxBZG9iZV9DTQAC%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgAdACgAwEiAAIRAQMRAf%2FdAAQACv%2FEAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5%2FcRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14%2FNGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x%2F%2FaAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkklKSSSSUs4uDSWiXRoOJKFi3Ovx2Wvbse4e5gMwRo5soypdOyN9mTSRHpWvj4Oc4%2FwDVf9WkpupJJJKUkkkkpSSSSSlJJJJKUkkkkp%2F%2F0PVUklCqxttbbG%2FReA4fApKZpJJJKUo2WNrrdY8w1gLnHyAlVOsWvowXZDZ%2FQOZa8D9xrmm3%2FNr3PUswm%2FpmQGamyl4bHiWuhJTYqsFtTLBw9od94U1Q6FkfaOk4tszuqYfwV9JSll1%2FoOt2sOguDXgeTm7f%2FPmN%2FwCCLUWZ1VhrysbKA%2Bjua7zgtuZ%2F1FqIUXTSQcvKZi47sh7XOY0tBDYJhzms3akfR3blVd13prMtuI%2Bwse%2F6L3Ahm7n0%2FU%2Bi2zafzkFOgq9%2Bdj0ZFOM4k3ZDtrGNEnhzt7v3WbWPU8bJpyavVpduZuc2eNWONb2%2F2XtXOY2VU7rA6hnO9RuJS%2Br1hO1lguGJbuYz2extvv3fzLPU%2FwCESU9QkkkkpSSSSSlJJJJKf%2F%2FR9VWf0iwiu3Ff9LGsewT%2B6D7P%2FAyxy0FmunH6xPDMpgd%2FbZFT%2FwDoOx%2F%2B20Qp0lC02CtxqALwDtB4J8FNJBTVovx%2Bo4jvbLLGlltTuRMssrf%2FANJiz%2BhZDqMO%2FEyCX2dOc6t%2Bkuc1gmt%2B3%2FhaPTeoZ5s6R1IZrBGDlkNvI%2BjXcYYyx%2F7tWV9B%2FwDw%2FwDwlyD1LqWH0jq2N1O55rxOogY1rwC4C9uuP6mzdt9Wl1v6T%2Bb%2FAFdFS%2F1Myq%2F2VThusa%2B2tst2k6sPuY73Brm%2Fo3Vv2fy%2F3F0S4TAzq%2Bm%2FWDquKGnbhWOya62DUUlrcmyulktZ6f2ey19Wz8%2F2Ls2Z%2BFYx1jL6yxgBe%2FcIAI3CXfNIqZX3ursqqrZ6j7TqJgNY2PUsPP0dypfWJ%2Fo9NOT2xrarHTxs3tZkf%2By77VR6v9bejdNsbkb3Zbqm2sfVjgOOhrdZFljqsffXs%2FmvV9V%2F%2BDXHdZ%2BuvU8zA6i%2Bj02Y1zawaZLt2LY21tltb7XOb6j6%2FwDR1V%2FzV36v6rPVYFU%2BiCs5PS7cd43O2WUOB77d1X%2FT27lwvVnNyKK8d15q6hij207o9dg3DHdW9m9zLv8AQ%2F4Wu71K%2FTtr9aqzJ%2BuHV8tmR0zNoyLvsXU8Nr7cdtjmtN1J9K%2B2podsbk1%2Fo%2F8A0YsnG6te%2BnLZbdXXY6pttADNwucwmhv2cWbv0tnr%2FpKnfpKbKf8AtsqD1DvrjnfV70cKlldgzgbqjf7QHB3p2sG0sb6lv0%2FfZ6TEcZg630xz2vezK6jVbfhVtf6biQ%2BxltmNY7a2z9Js3Vu%2FwayvrHh1%2BhhdKv3XubjBhY9wDbHtPpOdXkOH6t1Dd%2FRsl%2F6C%2FwDomV7Fg9Wc%2FF%2Bq3RL6biben5WVjh4lljdxbexltf06La9vvp%2FM%2FwAFZ%2FhEuqn0r6lfXM9WYzpvVoo6wxvcbBcGj9Ltr09LLoj9bxf%2BvU%2Fof5mz9avrJd0%2B2jBwHAZTrcd17iA7bVZa2nY0H%2FCXw9v%2FAAdf%2FWl5zidQZ9ZcY3l3oddwg2z1mHZ6zWfQv3t2%2Bnk0%2FwCn%2FwDRf8xf6Df1DqvXGZ%2Be5tzsi7Gd6lm2kPsqNbqqOG1%2F4Cuxnpt%2FS7%2F9I9ALjR1Gh7f96%2BuJJpA1KZj2WNDmODmnhwMhJaySSSSU%2FwD%2F0vVVn9airFGYSGjEcLXuOkV%2Fzd5J%2FdZU%2FwBX%2Fra0EHM9D7Jf9pE4%2Fpv9YHX2bT6mn9RIKcE9U6lgXnJDv2l0jN%2FS497S39C530sOyxn%2BBc%2F%2Bh5P83%2F2kyfS%2FR5NlPrv16uwczExsPHFozLBRWHz6rriWM9Ouv6Hs9T3vseue6B9buoZF5xBU84BDC%2BtoZYW1PczG%2B02Gxm71Gb2XP2fod7P5mtct167q%2FT87Gdfk%2FbscWHI6V1NrQNGu3O2NZ6fp5FN9dTcrH3epR6f9RKwRYXzhKEuGYo%2FxfSMvM6lZlF%2FVfSobU11Q9MGyqLfa%2BrP9PJsr9Kz09n6bGq%2F7dWN1z9VxC3KfZT0%2B%2BPUyGg5NIaPdU7ezZe7KxPR%2FR5Gyr1sX9Db6%2FwDguZx%2Bv352be4WNwft%2B9tb2n21mza%2F07Xn2%2Fp7qmVep6dbP0vqfolqZD7mY91eDmXh9pBAZDGjT9awvb%2Bkp3W%2Fp2Mdkfpav1b%2BXUb0WulTeP23h5Di3JL3UYWTYzlzbKn1sc5rN7baM3FZ9pw8xrvSvr%2FQf0im6uvH6vY7G6hfS2mx1WFYaq7bnk%2Bo2r0rKPTa7bustxX20%2Bz%2Blf4RW%2FqPXeM403s%2FQ9LpdbQ4v97Wl4DcW1nud6PqfrH2e9nszMavNx%2Fs9%2F2hA6i5r77HZLH24Tn1W4%2BUwj2Pva3Jdj5bfzaHb8n7Fk%2F4P9YxP0tX8wulqaWfb1CzZ6GaM30622WDD%2FSV1mp3sfY6tjWOsY1tf8776a%2FTQ7s27qFNVIrqwAfUsbZRXt9S0N9Ky1tX83%2Bgre%2F1sej%2FAE1lzKltdDtbi9ZJsqqbTaBXdS0TbW68PycUxNj8qrIbR%2FpPU%2FSb6%2FTyv6VWf0qvOrzmsYasnGzHmk7gx1Za6K2XR7sd%2B5v6K79JXi3bPU%2FV8i71RRU5%2FWaLMv6kYj7SGX9L6g%2BqK%2Fosrymeux1cf4B17fYsrpuPmNxftz63Pcwl9DWDQ2sIqZkNJ%2FNZe6luR6f%2FAAX%2FAAS1f2pXX0vq%2BJln7LfkVVta3ZAfl4929myn%2FA76rLq86r%2Bbo%2F4qyhVruoZfSek4ldmM12Pe227D9XQBtvptu3%2B7d6Vr66Xf2PU%2FwiSnsuqnDyLMfFtMZORj%2BrXSPeHFseo2l7g31La%2FV%2Bh%2F2oq%2FwfqfpFznVcd9uDZivaxzDZXa1zztZaXB1LW%2Bv%2Fgb%2FZVXi5tv83%2FRsj9AsLqfXv2j0%2FpXqPFedgNurfa10F3uqsx8lv8Ao3Obvrf%2FAMT6n%2BFQquq59%2FURec1zb7CHXMc8htmw7n47v8BtucPUb6v6P9Ld69iNoS9H6Vk0Zzcpj3tqqeW1AAtuc%2F8Am7Meyhv6WvZ%2FNZX%2FAIEugzuk14eLiN69fbi49u6wgBjyWNb6dP6IOa52V6vt247P0dD%2FAFP0ajjdc6kBeekYQd1DIs2tsZVZbdVXt9tYqsG9%2B3%2FTPZ%2Bl%2FwBCsajpXV%2BtX2Zwo%2Fal7Wuvv9S0Mea2%2FT2%2BvZ7m1e1j6GV76PZ%2FpK0NE7avpH1Z69ndU6Ti4mP6mVZktBdbkP3uqbWTRkjKuYGb9t1e6v2776rP9Iuyw8VuJjtoaS8tkueeXOcdz3%2F2nLyb6vdZv6DjDKwmVt3lzbsZz3VsZcHluTgX499hfRYxuzJwn%2FznsyKrLLv8H2vT%2Fr9hODK%2BsM%2FZuSWkvrtFjC1wLmvr%2FWKqW%2Fm%2BzbZ%2BkRR4vVpKn03q%2FTeq47Mnp%2BQy%2Bt7WvG0%2B4Bw3N9Ss%2FpK%2F%2BuNVxBT%2FAP%2FT9VTOa17SxwDmuBDmnUEHsU6SSnxf6x9CzPqt1ECix7GMeben5Q0caneyylzvouto3MruZ%2Fhav0np%2FpFUryaMjFvrzps6dkPbZmUsHvx7zFber4f7rbLP6Wz%2FAEln%2BivYvY%2Bu9L6f1Xpl2H1GG0OG71SQ01uH0b2Pd9B7P%2FUb%2FwBGvH8vpF3T7%2FQpcH5NIea7az6leXSd2%2BzHjdW70qHbMnE%2FwlSZrE2NuzfjKHMY%2BGfpzR2n%2FL9H95wM%2FByOk5hxsgiyuwb6rm613VH6N1X%2FAKMrW10jqbrmHDyHl8MhjY3G6sHd6PO318dv6eiz07fW9P0v%2BOHiPxc6n9j552Ydh3YmVy7FtP5%2Bvvfiu%2Fw%2F%2FB%2Fpf5zehYv1a6pVk5WLnh%2BJZhML6rmiWvsBY6t1Fn0n1NY77Tvp%2FSf8WnijqNWnOEscjGQ4ZB7Oig0fV7Lf01rr8rqR2tez3XPbBx67XsYzayxjbMl9m38%2F9J%2Bl%2FS%2BpzrvUxMWqvqNVuJksx3402zW5oosbdScig725OHd9qY6v%2Bc2ZOLT6Nn88y3e6X1uyk9NexznYd%2BPdi2Mc1lTxl4ztznWu3bKfWZZXbs9T06f0ypdY6J1Hr%2FVH9Wrtpsx6mMqFDS%2F1WisF30XNa5%2B577bf0eyz%2FRV%2BqnHwW1RotDF6xay49Tviks9OHNBAc9g2sfc1m7Zu2%2FoG%2FQxv3PST9Lw2dTblM%2B1W1sdDixoM2vu3f0936Ot3pOZsurp%2FQ5H%2Bj%2FwaJj4GXf052ZjepRjbmOrywNzNjHulh9Meg5zN%2B1lrn%2F4R9fp%2FpFYxcHD6ey6nItdSGAOtdlFwhlh%2FRuHpN3Ppbv8A5xnqemgFOZ1%2FDyMW77T1DIOQy4vra91bqC00en%2BiYx%2F06Nrqnev%2FAIf%2FAEj1WxaG2sxKOo9Mu6iK32UYeOLHML3vLrNrrmu3%2Blv%2FAPRi1cvpl1PUqW3Nfh5VJ34%2BNmO9XEurHu%2FV7t1jGMsYf0noP9n%2FAANqv9Q6W84w630hn2cuFd1jcYGysjS6qzLxmiu3Fyadv896NX%2Bl%2B2eqhSSBQ1u%2Fwed6z9X%2BrtFJH1dZj1agENsqZuIB9EPsvbkW7Wj6eS%2F6fq%2Bj%2BjWOcbNw8hnqdNxq3tizZYXOa4Ty7fkWbmNd%2FObfof4RdpT1fqHUs1rc%2FLfktyRU2vGa4bSHNePtFL3el6VmLlVejZ7f0m%2F1cj%2BZ%2B0WbvSfqn0%2Fq1eTjdRIdlVspsqcxwBqc8PbfW%2BrX376%2FTtf%2FAKH0bcS6v2WJXqulj4YCXEDZqurxn1dxXdRosuw78hnXcR5dSWu22OrY2bqsdn03ZFTt932Oz2ZWL6lVLPWoXS19Hzup9Pq%2BsfTMYty8kn7ZRXDCy5hdVb1DEre%2F9NU79LvxHbLclj7Kf5rIspXE5mPm9J6q%2FLqa82YrmvfVJHqUsd%2BgyqLatln0a%2F03pP8AWxLmerV%2B5j%2Bz%2FU7qvR%2Bp9Cot6QNlLJbZQ5xdZXb9O1l73S99jnu3%2Bq7%2Be%2FnEmN57qv1X6b9c%2Fq99oxWNx%2BuYxcyx7g9rjc2PXxM5t36x6djmt9H1v02L%2Bi9L%2FCVWcz9VPr51npPWX9H%2Bsxuy8bItFNoyDvtot9tIcN%2F06He316P%2FAEKo%2FwAJ9p9hbXW17ntaA98b3AQXQIbuP5y43%2FGB9Q2dfp%2FaXTWtZ1iloEGGjIY3%2FAPe7%2BayG%2F8AafJ%2F6zb%2Bi%2FSUJT2TK66xtraGAAABoAEAbW8fyVJecfUbqP8AjHPV31dXxMjJ6c%2Fay27LaMd1JaNgsoDxX9o9rf0zaW2%2Br%2FPep%2FpPR0lP%2F9T1VJJJJSDNL%2Fsr9geXGABW1rnakD6F36P%2BsuAwumV%2FWXNrxHvcymqh2S7IqLnRa%2B7Jfj2UPcGtqdvyfVspZ7K%2FQ%2By1%2FoaV6Ffj05FZqvYLKyQS13Eg7m%2F9JKimvHprorEV1NDGDwDRtakkEg2NCNnxDqdGb0Lru3qFDHX41rLTWGxVeyR7626tdVmNa%2F1P3LPWr9i2cmzrpY5tdB6gzpL7Kq7WGXPqqf6D8HIc1gZ9upo%2F7T%2FzmVX%2FADXqr0brOF0%2B4135bWVFgc05kD1WMP06ari17q25P81Z%2B%2FX%2Bi%2BnauTysfqnQeoM6h06l91eW2H4jwf1uhgc70Lq3DdV1XGxm78d7%2FwCfo%2FQXfpK7GIRFX4s2fN7vAeGpRjwk93IyOj5VDnN6U5%2FUMa%2FflYlLGuLm%2BqxnpfadrG1tdk302Ufav%2Bs2en%2FNrQ%2Brd9%2BNlNdfS%2FDuDXMy8e7R1bmjfJ%2FkNhl9Nv59KtOeLbMDO6FktJte%2B%2FCstLh%2Bhcaxm4mY5oc5tLMr08XK3st9H7TRd%2FSqPWW11fA%2Fa%2BOOpdOc6jqeMNllYjcdvudjWt9zfVr3b8d%2F%2Fom%2F1E%2B2F5jpf1u6Dj9RyLKcqu3peaf1rF1aGh%2Bhym0XMr91TfZksr%2Fncb%2FSWY9bFTwftfUOpdQwRZvxsDLOLh2uBexrLH21YzLLAHv9K3ZX%2FwAH%2FOLUw%2BnfU%2F6xVDB6lg4%2FTutEFrLaG%2BgLXD%2FC42zY2x%2F%2Blw7f01f8ur9On%2BroyPqllZfThhMsqBZblWhxFjahFLLWE%2B27HZv3sbsr9H9N63%2FBjW1L9J9PDa%2F6udcx%2FU6Ta7bSH6uxLT7W0Oc0%2Fo6HT6mFl1fzX%2BnV9n1R6v07bbhZv2za4w149K0Vk6enkMeWPu2fzn8xVb%2Fwf0F1GVh4mdSW3MD2vbAfA3AH9xyoYmRZ0o%2FY894%2BztBNGS7QbR%2Ba8n6Oz%2FwH%2FttLyRbyPUcXMqzznY2Nfh9TrbZbkkVyxzQBvzm%2Bm04vr7f0d%2Fo2frX%2BD%2FTV2rc%2BrmH0bqHT8fcW%2Fb2Ned1FrmWsaXOZLfRLH01W%2Bpu9L%2BaXUiCJHBWGegM6d1IdU6WzbJi%2FFbAaWuPvdV%2FV%2FnPTStN6U4%2FWfqPk5jhRj2BorDrMXLOjqnge2m1rNrnV3e1lnpf8b%2FO1Urm%2FqLlZH1a%2BseT03IwLa7s97K8nFrY%2Bx9fp%2Bp6OfjupZ6VvT3%2BrY3I%2F0P6Oyn9F%2BjXrKSCFJJJJKUkkkkp%2F%2F9X1VJJJJSkkkklKQM3Dpzcd2PbuAdBa9hLXscNWWVPb9CxjkdJJTxHVfq4Ol5bc%2Bq55dlvLLq2Dax1lprY7IFbP5i63b77Kf9H%2Bk%2FQrpPq%2FcLMAVlgrupcWXM4duBj9I0y7f%2F1f00vrB0hnVunPo%2BjkMmzFtGjq7QC1tlb9Njvd%2FqxS6dWMj0upH9FfbXsyqwIabGwx30%2Ff%2BifW9n9RHopwvrBh4eF1V%2BXkU%2FqmZQQLSB6deYxwux7HAfpGvs9L%2FB%2F8J6ivWVZ2dj4vV8FgfbkY%2Fo5WO8hosrdr3%2Bi6t7nrefWx8b2h20hzZEwR9Fw%2FlIOLg4%2BI652OCxt7vUfWD7Q4%2FScxv5m%2F89K1IujYj8PpWLjWDa%2BusB7SZIcfc5u6XfnFW31seIe0OEzBE6%2FNSSQUpJJJJSkkkklKSSSSUpJJJJT%2FAP%2FW9VSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2F%2FZ%2F%2B01IlBob3Rvc2hvcCAzLjAAOEJJTQQlAAAAAAAQAAAAAAAAAAAAAAAAAAAAADhCSU0D6gAAAAAYEDw%2FeG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8%2BCjwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgo8cGxpc3QgdmVyc2lvbj0iMS4wIj4KPGRpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNSG9yaXpvbnRhbFJlczwva2V5PgoJPGRpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk%2BCgkJCQk8cmVhbD43MjwvcmVhbD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk%2BCgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk%2BCgkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJPGRpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk%2BCgkJCQk8cmVhbD4xPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk%2BCgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q%2BCgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk%2BCgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5PgoJCQkJPHJlYWw%2BMTwvcmVhbD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuc3ViVGlja2V0LnBhcGVyX2luZm9fdGlja2V0PC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PlBNUFBEUGFwZXJDb2RlTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PlBNUFBEUGFwZXJDb2RlTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc%2BTGV0dGVyPC9zdHJpbmc%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BUE1UaW9nYVBhcGVyTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PlBNVGlvZ2FQYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPm5hLWxldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BMC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw%2BCgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTc2PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk%2BCgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw%2BLTE4PC9yZWFsPgoJCQkJCQk8cmVhbD43NzQ8L3JlYWw%2BCgkJCQkJCTxyZWFsPjU5NDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk%2BCgkJCQkJPHN0cmluZz5uYS1sZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk%2BCgkJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhZ2VSZWN0PC9rZXk%2BCgkJPGRpY3Q%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk%2BCgkJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BMC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw%2BCgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTc2PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BLTE4PC9yZWFsPgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw%2BCgkJCQkJCTxyZWFsPjc3NDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTk0PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLnBwZC5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc%2BVVMgTGV0dGVyPC9zdHJpbmc%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5BUElWZXJzaW9uPC9rZXk%2BCgkJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk%2BCgkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvVGlja2V0PC9zdHJpbmc%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuQVBJVmVyc2lvbjwva2V5PgoJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnR5cGU8L2tleT4KCTxzdHJpbmc%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXRUaWNrZXQ8L3N0cmluZz4KPC9kaWN0Pgo8L3BsaXN0Pgo4QklNA%2BkAAAAAAHgAAwAAAEgASAAAAAAC3gJA%2F%2B7%2F7gMGAlIDZwUoA%2FwAAgAAAEgASAAAAAAC2AIoAAEAAABkAAAAAQADAwMAAAABf%2F8AAQABAAAAAAAAAAAAAAAAaAgAGQGQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4QklNA%2B0AAAAAABAAZAAAAAEAAQBkAAAAAQABOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD%2BAAAA4QklNBA0AAAAAAAQAAAAeOEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgABAAAAAAAAAAE4QklNA%2FUAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA%2FgAAAAAAHAAAP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8D6AAAAAD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FA%2BgAAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwPoAAAAAP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA1UAAAAGAAAAAAAAAAAAAAFFAAABwgAAABAAcwB3AGkAcwBzAF8AYQByAG0AeQBfAGsAbgBpAGYAZQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABwgAAAUUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAUUAAAAAUmdodGxvbmcAAAHCAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAFFAAAAAFJnaHRsb25nAAABwgAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAAAQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hUTUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAAC2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91dHNldGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRzZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAAAAE%2F8AAAAAAAADhCSU0EEQAAAAAAAQEAOEJJTQQUAAAAAAAEAAAAAThCSU0EDAAAAAAWrwAAAAEAAACgAAAAdAAAAeAAANmAAAAWkwAYAAH%2F2P%2FgABBKRklGAAECAABIAEgAAP%2FtAAxBZG9iZV9DTQAC%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgAdACgAwEiAAIRAQMRAf%2FdAAQACv%2FEAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5%2FcRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14%2FNGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x%2F%2FaAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkklKSSSSUs4uDSWiXRoOJKFi3Ovx2Wvbse4e5gMwRo5soypdOyN9mTSRHpWvj4Oc4%2FwDVf9WkpupJJJKUkkkkpSSSSSlJJJJKUkkkkp%2F%2F0PVUklCqxttbbG%2FReA4fApKZpJJJKUo2WNrrdY8w1gLnHyAlVOsWvowXZDZ%2FQOZa8D9xrmm3%2FNr3PUswm%2FpmQGamyl4bHiWuhJTYqsFtTLBw9od94U1Q6FkfaOk4tszuqYfwV9JSll1%2FoOt2sOguDXgeTm7f%2FPmN%2FwCCLUWZ1VhrysbKA%2Bjua7zgtuZ%2F1FqIUXTSQcvKZi47sh7XOY0tBDYJhzms3akfR3blVd13prMtuI%2Bwse%2F6L3Ahm7n0%2FU%2Bi2zafzkFOgq9%2Bdj0ZFOM4k3ZDtrGNEnhzt7v3WbWPU8bJpyavVpduZuc2eNWONb2%2F2XtXOY2VU7rA6hnO9RuJS%2Br1hO1lguGJbuYz2extvv3fzLPU%2FwCESU9QkkkkpSSSSSlJJJJKf%2F%2FR9VWf0iwiu3Ff9LGsewT%2B6D7P%2FAyxy0FmunH6xPDMpgd%2FbZFT%2FwDoOx%2F%2B20Qp0lC02CtxqALwDtB4J8FNJBTVovx%2Bo4jvbLLGlltTuRMssrf%2FANJiz%2BhZDqMO%2FEyCX2dOc6t%2Bkuc1gmt%2B3%2FhaPTeoZ5s6R1IZrBGDlkNvI%2BjXcYYyx%2F7tWV9B%2FwDw%2FwDwlyD1LqWH0jq2N1O55rxOogY1rwC4C9uuP6mzdt9Wl1v6T%2Bb%2FAFdFS%2F1Myq%2F2VThusa%2B2tst2k6sPuY73Brm%2Fo3Vv2fy%2F3F0S4TAzq%2Bm%2FWDquKGnbhWOya62DUUlrcmyulktZ6f2ey19Wz8%2F2Ls2Z%2BFYx1jL6yxgBe%2FcIAI3CXfNIqZX3ursqqrZ6j7TqJgNY2PUsPP0dypfWJ%2Fo9NOT2xrarHTxs3tZkf%2By77VR6v9bejdNsbkb3Zbqm2sfVjgOOhrdZFljqsffXs%2FmvV9V%2F%2BDXHdZ%2BuvU8zA6i%2Bj02Y1zawaZLt2LY21tltb7XOb6j6%2FwDR1V%2FzV36v6rPVYFU%2BiCs5PS7cd43O2WUOB77d1X%2FT27lwvVnNyKK8d15q6hij207o9dg3DHdW9m9zLv8AQ%2F4Wu71K%2FTtr9aqzJ%2BuHV8tmR0zNoyLvsXU8Nr7cdtjmtN1J9K%2B2podsbk1%2Fo%2F8A0YsnG6te%2BnLZbdXXY6pttADNwucwmhv2cWbv0tnr%2FpKnfpKbKf8AtsqD1DvrjnfV70cKlldgzgbqjf7QHB3p2sG0sb6lv0%2FfZ6TEcZg630xz2vezK6jVbfhVtf6biQ%2BxltmNY7a2z9Js3Vu%2FwayvrHh1%2BhhdKv3XubjBhY9wDbHtPpOdXkOH6t1Dd%2FRsl%2F6C%2FwDomV7Fg9Wc%2FF%2Bq3RL6biben5WVjh4lljdxbexltf06La9vvp%2FM%2FwAFZ%2FhEuqn0r6lfXM9WYzpvVoo6wxvcbBcGj9Ltr09LLoj9bxf%2BvU%2Fof5mz9avrJd0%2B2jBwHAZTrcd17iA7bVZa2nY0H%2FCXw9v%2FAAdf%2FWl5zidQZ9ZcY3l3oddwg2z1mHZ6zWfQv3t2%2Bnk0%2FwCn%2FwDRf8xf6Df1DqvXGZ%2Be5tzsi7Gd6lm2kPsqNbqqOG1%2F4Cuxnpt%2FS7%2F9I9ALjR1Gh7f96%2BuJJpA1KZj2WNDmODmnhwMhJaySSSSU%2FwD%2F0vVVn9airFGYSGjEcLXuOkV%2Fzd5J%2FdZU%2FwBX%2Fra0EHM9D7Jf9pE4%2Fpv9YHX2bT6mn9RIKcE9U6lgXnJDv2l0jN%2FS497S39C530sOyxn%2BBc%2F%2Bh5P83%2F2kyfS%2FR5NlPrv16uwczExsPHFozLBRWHz6rriWM9Ouv6Hs9T3vseue6B9buoZF5xBU84BDC%2BtoZYW1PczG%2B02Gxm71Gb2XP2fod7P5mtct167q%2FT87Gdfk%2FbscWHI6V1NrQNGu3O2NZ6fp5FN9dTcrH3epR6f9RKwRYXzhKEuGYo%2FxfSMvM6lZlF%2FVfSobU11Q9MGyqLfa%2BrP9PJsr9Kz09n6bGq%2F7dWN1z9VxC3KfZT0%2B%2BPUyGg5NIaPdU7ezZe7KxPR%2FR5Gyr1sX9Db6%2FwDguZx%2Bv352be4WNwft%2B9tb2n21mza%2F07Xn2%2Fp7qmVep6dbP0vqfolqZD7mY91eDmXh9pBAZDGjT9awvb%2Bkp3W%2Fp2Mdkfpav1b%2BXUb0WulTeP23h5Di3JL3UYWTYzlzbKn1sc5rN7baM3FZ9pw8xrvSvr%2FQf0im6uvH6vY7G6hfS2mx1WFYaq7bnk%2Bo2r0rKPTa7bustxX20%2Bz%2Blf4RW%2FqPXeM403s%2FQ9LpdbQ4v97Wl4DcW1nud6PqfrH2e9nszMavNx%2Fs9%2F2hA6i5r77HZLH24Tn1W4%2BUwj2Pva3Jdj5bfzaHb8n7Fk%2F4P9YxP0tX8wulqaWfb1CzZ6GaM30622WDD%2FSV1mp3sfY6tjWOsY1tf8776a%2FTQ7s27qFNVIrqwAfUsbZRXt9S0N9Ky1tX83%2Bgre%2F1sej%2FAE1lzKltdDtbi9ZJsqqbTaBXdS0TbW68PycUxNj8qrIbR%2FpPU%2FSb6%2FTyv6VWf0qvOrzmsYasnGzHmk7gx1Za6K2XR7sd%2B5v6K79JXi3bPU%2FV8i71RRU5%2FWaLMv6kYj7SGX9L6g%2BqK%2Fosrymeux1cf4B17fYsrpuPmNxftz63Pcwl9DWDQ2sIqZkNJ%2FNZe6luR6f%2FAAX%2FAAS1f2pXX0vq%2BJln7LfkVVta3ZAfl4929myn%2FA76rLq86r%2Bbo%2F4qyhVruoZfSek4ldmM12Pe227D9XQBtvptu3%2B7d6Vr66Xf2PU%2FwiSnsuqnDyLMfFtMZORj%2BrXSPeHFseo2l7g31La%2FV%2Bh%2F2oq%2FwfqfpFznVcd9uDZivaxzDZXa1zztZaXB1LW%2Bv%2Fgb%2FZVXi5tv83%2FRsj9AsLqfXv2j0%2FpXqPFedgNurfa10F3uqsx8lv8Ao3Obvrf%2FAMT6n%2BFQquq59%2FURec1zb7CHXMc8htmw7n47v8BtucPUb6v6P9Ld69iNoS9H6Vk0Zzcpj3tqqeW1AAtuc%2F8Am7Meyhv6WvZ%2FNZX%2FAIEugzuk14eLiN69fbi49u6wgBjyWNb6dP6IOa52V6vt247P0dD%2FAFP0ajjdc6kBeekYQd1DIs2tsZVZbdVXt9tYqsG9%2B3%2FTPZ%2Bl%2FwBCsajpXV%2BtX2Zwo%2Fal7Wuvv9S0Mea2%2FT2%2BvZ7m1e1j6GV76PZ%2FpK0NE7avpH1Z69ndU6Ti4mP6mVZktBdbkP3uqbWTRkjKuYGb9t1e6v2776rP9Iuyw8VuJjtoaS8tkueeXOcdz3%2F2nLyb6vdZv6DjDKwmVt3lzbsZz3VsZcHluTgX499hfRYxuzJwn%2FznsyKrLLv8H2vT%2Fr9hODK%2BsM%2FZuSWkvrtFjC1wLmvr%2FWKqW%2Fm%2BzbZ%2BkRR4vVpKn03q%2FTeq47Mnp%2BQy%2Bt7WvG0%2B4Bw3N9Ss%2FpK%2F%2BuNVxBT%2FAP%2FT9VTOa17SxwDmuBDmnUEHsU6SSnxf6x9CzPqt1ECix7GMeben5Q0caneyylzvouto3MruZ%2Fhav0np%2FpFUryaMjFvrzps6dkPbZmUsHvx7zFber4f7rbLP6Wz%2FAEln%2BivYvY%2Bu9L6f1Xpl2H1GG0OG71SQ01uH0b2Pd9B7P%2FUb%2FwBGvH8vpF3T7%2FQpcH5NIea7az6leXSd2%2BzHjdW70qHbMnE%2FwlSZrE2NuzfjKHMY%2BGfpzR2n%2FL9H95wM%2FByOk5hxsgiyuwb6rm613VH6N1X%2FAKMrW10jqbrmHDyHl8MhjY3G6sHd6PO318dv6eiz07fW9P0v%2BOHiPxc6n9j552Ydh3YmVy7FtP5%2Bvvfiu%2Fw%2F%2FB%2Fpf5zehYv1a6pVk5WLnh%2BJZhML6rmiWvsBY6t1Fn0n1NY77Tvp%2FSf8WnijqNWnOEscjGQ4ZB7Oig0fV7Lf01rr8rqR2tez3XPbBx67XsYzayxjbMl9m38%2F9J%2Bl%2FS%2BpzrvUxMWqvqNVuJksx3402zW5oosbdScig725OHd9qY6v%2Bc2ZOLT6Nn88y3e6X1uyk9NexznYd%2BPdi2Mc1lTxl4ztznWu3bKfWZZXbs9T06f0ypdY6J1Hr%2FVH9Wrtpsx6mMqFDS%2F1WisF30XNa5%2B577bf0eyz%2FRV%2BqnHwW1RotDF6xay49Tviks9OHNBAc9g2sfc1m7Zu2%2FoG%2FQxv3PST9Lw2dTblM%2B1W1sdDixoM2vu3f0936Ot3pOZsurp%2FQ5H%2Bj%2FwaJj4GXf052ZjepRjbmOrywNzNjHulh9Meg5zN%2B1lrn%2F4R9fp%2FpFYxcHD6ey6nItdSGAOtdlFwhlh%2FRuHpN3Ppbv8A5xnqemgFOZ1%2FDyMW77T1DIOQy4vra91bqC00en%2BiYx%2F06Nrqnev%2FAIf%2FAEj1WxaG2sxKOo9Mu6iK32UYeOLHML3vLrNrrmu3%2Blv%2FAPRi1cvpl1PUqW3Nfh5VJ34%2BNmO9XEurHu%2FV7t1jGMsYf0noP9n%2FAANqv9Q6W84w630hn2cuFd1jcYGysjS6qzLxmiu3Fyadv896NX%2Bl%2B2eqhSSBQ1u%2Fwed6z9X%2BrtFJH1dZj1agENsqZuIB9EPsvbkW7Wj6eS%2F6fq%2Bj%2BjWOcbNw8hnqdNxq3tizZYXOa4Ty7fkWbmNd%2FObfof4RdpT1fqHUs1rc%2FLfktyRU2vGa4bSHNePtFL3el6VmLlVejZ7f0m%2F1cj%2BZ%2B0WbvSfqn0%2Fq1eTjdRIdlVspsqcxwBqc8PbfW%2BrX376%2FTtf%2FAKH0bcS6v2WJXqulj4YCXEDZqurxn1dxXdRosuw78hnXcR5dSWu22OrY2bqsdn03ZFTt932Oz2ZWL6lVLPWoXS19Hzup9Pq%2BsfTMYty8kn7ZRXDCy5hdVb1DEre%2F9NU79LvxHbLclj7Kf5rIspXE5mPm9J6q%2FLqa82YrmvfVJHqUsd%2BgyqLatln0a%2F03pP8AWxLmerV%2B5j%2Bz%2FU7qvR%2Bp9Cot6QNlLJbZQ5xdZXb9O1l73S99jnu3%2Bq7%2Be%2FnEmN57qv1X6b9c%2Fq99oxWNx%2BuYxcyx7g9rjc2PXxM5t36x6djmt9H1v02L%2Bi9L%2FCVWcz9VPr51npPWX9H%2Bsxuy8bItFNoyDvtot9tIcN%2F06He316P%2FAEKo%2FwAJ9p9hbXW17ntaA98b3AQXQIbuP5y43%2FGB9Q2dfp%2FaXTWtZ1iloEGGjIY3%2FAPe7%2BayG%2F8AafJ%2F6zb%2Bi%2FSUJT2TK66xtraGAAABoAEAbW8fyVJecfUbqP8AjHPV31dXxMjJ6c%2Fay27LaMd1JaNgsoDxX9o9rf0zaW2%2Br%2FPep%2FpPR0lP%2F9T1VJJJJSDNL%2Fsr9geXGABW1rnakD6F36P%2BsuAwumV%2FWXNrxHvcymqh2S7IqLnRa%2B7Jfj2UPcGtqdvyfVspZ7K%2FQ%2By1%2FoaV6Ffj05FZqvYLKyQS13Eg7m%2F9JKimvHprorEV1NDGDwDRtakkEg2NCNnxDqdGb0Lru3qFDHX41rLTWGxVeyR7626tdVmNa%2F1P3LPWr9i2cmzrpY5tdB6gzpL7Kq7WGXPqqf6D8HIc1gZ9upo%2F7T%2FzmVX%2FADXqr0brOF0%2B4135bWVFgc05kD1WMP06ari17q25P81Z%2B%2FX%2Bi%2BnauTysfqnQeoM6h06l91eW2H4jwf1uhgc70Lq3DdV1XGxm78d7%2FwCfo%2FQXfpK7GIRFX4s2fN7vAeGpRjwk93IyOj5VDnN6U5%2FUMa%2FflYlLGuLm%2BqxnpfadrG1tdk302Ufav%2Bs2en%2FNrQ%2Brd9%2BNlNdfS%2FDuDXMy8e7R1bmjfJ%2FkNhl9Nv59KtOeLbMDO6FktJte%2B%2FCstLh%2Bhcaxm4mY5oc5tLMr08XK3st9H7TRd%2FSqPWW11fA%2Fa%2BOOpdOc6jqeMNllYjcdvudjWt9zfVr3b8d%2F%2Fom%2F1E%2B2F5jpf1u6Dj9RyLKcqu3peaf1rF1aGh%2Bhym0XMr91TfZksr%2Fncb%2FSWY9bFTwftfUOpdQwRZvxsDLOLh2uBexrLH21YzLLAHv9K3ZX%2FwAH%2FOLUw%2BnfU%2F6xVDB6lg4%2FTutEFrLaG%2BgLXD%2FC42zY2x%2F%2Blw7f01f8ur9On%2BroyPqllZfThhMsqBZblWhxFjahFLLWE%2B27HZv3sbsr9H9N63%2FBjW1L9J9PDa%2F6udcx%2FU6Ta7bSH6uxLT7W0Oc0%2Fo6HT6mFl1fzX%2BnV9n1R6v07bbhZv2za4w149K0Vk6enkMeWPu2fzn8xVb%2Fwf0F1GVh4mdSW3MD2vbAfA3AH9xyoYmRZ0o%2FY894%2BztBNGS7QbR%2Ba8n6Oz%2FwH%2FttLyRbyPUcXMqzznY2Nfh9TrbZbkkVyxzQBvzm%2Bm04vr7f0d%2Fo2frX%2BD%2FTV2rc%2BrmH0bqHT8fcW%2Fb2Ned1FrmWsaXOZLfRLH01W%2Bpu9L%2BaXUiCJHBWGegM6d1IdU6WzbJi%2FFbAaWuPvdV%2FV%2FnPTStN6U4%2FWfqPk5jhRj2BorDrMXLOjqnge2m1rNrnV3e1lnpf8b%2FO1Urm%2FqLlZH1a%2BseT03IwLa7s97K8nFrY%2Bx9fp%2Bp6OfjupZ6VvT3%2BrY3I%2F0P6Oyn9F%2BjXrKSCFJJJJKUkkkkp%2F%2F9X1VJJJJSkkkklKQM3Dpzcd2PbuAdBa9hLXscNWWVPb9CxjkdJJTxHVfq4Ol5bc%2Bq55dlvLLq2Dax1lprY7IFbP5i63b77Kf9H%2Bk%2FQrpPq%2FcLMAVlgrupcWXM4duBj9I0y7f%2F1f00vrB0hnVunPo%2BjkMmzFtGjq7QC1tlb9Njvd%2FqxS6dWMj0upH9FfbXsyqwIabGwx30%2Ff%2BifW9n9RHopwvrBh4eF1V%2BXkU%2FqmZQQLSB6deYxwux7HAfpGvs9L%2FB%2F8J6ivWVZ2dj4vV8FgfbkY%2Fo5WO8hosrdr3%2Bi6t7nrefWx8b2h20hzZEwR9Fw%2FlIOLg4%2BI652OCxt7vUfWD7Q4%2FScxv5m%2F89K1IujYj8PpWLjWDa%2BusB7SZIcfc5u6XfnFW31seIe0OEzBE6%2FNSSQUpJJJJSkkkklKSSSSUpJJJJT%2FAP%2FW9VSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2F%2FZADhCSU0EIQAAAAAAVQAAAAEBAAAADwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAAABMAQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAIABDAFMAMgAAAAEAOEJJTQQGAAAAAAAHAAIAAAABAQD%2F4TkjaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSIzLjEuMS0xMTIiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI%2BCiAgICAgICAgIDx4YXBNTTpEb2N1bWVudElEPnV1aWQ6RTcxOTVFNTY1NzMzMTFERDlFNzJGQ0E2QjkwQUZBRjU8L3hhcE1NOkRvY3VtZW50SUQ%2BCiAgICAgICAgIDx4YXBNTTpJbnN0YW5jZUlEPnV1aWQ6RTcxOTVFNTc1NzMzMTFERDlFNzJGQ0E2QjkwQUZBRjU8L3hhcE1NOkluc3RhbmNlSUQ%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU%2BMjAwOC0wNy0xOVQxNDo1Nzo0MS0wNTowMDwveGFwOkNyZWF0ZURhdGU%2BCiAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA4LTA3LTE5VDE0OjU4OjA1LTA1OjAwPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhhcDpNZXRhZGF0YURhdGU%2BMjAwOC0wNy0xOVQxNDo1ODowNS0wNTowMDwveGFwOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhhcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ1MyIE1hY2ludG9zaDwveGFwOkNyZWF0b3JUb29sPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9qcGVnPC9kYzpmb3JtYXQ%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOkhpc3RvcnkvPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj4xMDAwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4xMDAwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8dGlmZjpOYXRpdmVEaWdlc3Q%2BMjU2LDI1NywyNTgsMjU5LDI2MiwyNzQsMjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5LDUyOSw1MzIsMzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7QzA1QTE5MDRGRjAwQUJEQzA1MUJERkFGMDIwNEVBNTE8L3RpZmY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24%2BNDUwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjMyNTwvZXhpZjpQaXhlbFlEaW1lbnNpb24%2BCiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U%2BLTE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6TmF0aXZlRGlnZXN0PjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDtENDYzN0NCOUQ0MUExMEJBN0VGNUVCQ0RCNjMxODMyOTwvZXhpZjpOYXRpdmVEaWdlc3Q%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY%2BCjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8%2B%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQACAYGBgYGCAYGCAwIBwgMDgoICAoOEA0NDg0NEBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEJCAgJCgkLCQkLDgsNCw4RDg4ODhERDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgBRQHCAwEiAAIRAQMRAf%2FdAAQAHf%2FEAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPBUtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4%2FPE1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1%2Bf3OEhYaHiImKi4yNjo%2BCk5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEyobHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp0%2BPzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1%2Bf3OEhYaHiImKi4yNjo%2BDlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq%2Bv%2FaAAwDAQACEQMRAD8A7%2FmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmrlHI2utXn6WltnFESb0RFSp41WjD5q3LCBaslzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Dv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2E2rj0LuzvF7PxftUf8AXPLDnC3XI0ewdpOkTK4P08T%2FAMK2Ec1TLNgaxmE9pFIDy%2BEAn3GxwTgV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV%2F%2F0e%2F5s2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXYUeZpfR0a4kpUAx19h6i74b4X65CbjR76FV5FoJKKe5C1GIVLdDuGhuXs2IKOX4gfsvGdx%2FskKtkiyD6bctHHbXgPImOC4qOpXj6E1ff4Mm4Ndxkpc770BvNmzZFLs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F9Lv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVokKCT0G%2F3ZgaioNQemANZuhaWLyE0LlY1%2BbGn6sWspA8QA%2FZ%2FUcVRWbNmxV2bNmxV2bNmxV2NZQwKnodj9OOzYqwDT4iiPZsa%2FVLm5sj7I%2F76L%2BOTXTpjPZQSt9pkAb5r8JyKXqfUvMOpIQOFxFDfoP8qFvTl%2F4Q5INDkrFPAf8AdUhI%2FwBV%2FiH8cnLeAPcxHMprmzZsgydmzZsVdmzZsVdmzZsVdmzYyWRIo2kkYKiirMdgAMVX5sjTeaGl1CzsbSAOLuX0w7k14KCzyAD%2BUZJBirebNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV%2F9Pv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVo4CXUFa9e0CbJRWkr%2B0RWlMHZEJ5WtPMtzE5%2BGYJKnyK0%2F4kuEC1ZeM2IW0okjFT8S7H%2BuL4FYz52mMWn2tDTlcpX6FbDHR5ecCH%2BZevywl%2FMM8dJtn7LdJ%2BKvgry9ccrOJ69KVw9E9GS5s2bAh2bNmxV2bNmxV2bNmxVi3miFU1LSbxvsStJYzH%2FJnSi%2F8ADYpoEzLcxq1T68FGr%2FvyE8GrgjzdC0mhXEsY%2Fe2pS5i%2F1omDf8RwttJRHdrcDaNbhZVI6endIG%2F4mcnHeJCDzDL82bNkEuzZs2KuzZs2KuzZs2KurkZ843Zhs4bVTQzvVqfyrvg3zHNPb2UMsLtGBPGJSpIqjEqRUb9ch%2BvSSvp0JlcvJCLyMuxJb4JNvi%2F1SuEBVvkaX9L%2BZbm8Sv1fTbf0Y6%2F78lPxH%2FgFzpeRvyPbWcXlyyubWBIXuoxJOUG7uKjk5%2FaOSSoxPNXZs2bArs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F%2FU7%2FmzZsVQ2osyWM7o3FlQkMOxGPtZhPBHKCDyUE08e%2BM1Bedjcr4xPT%2FgThV5cvBJbpGergEfMDcYa2PkqfZs2bArs2bNirs2bNirs2bNirshfnRGtb7T9TX7LcoJD2qDzSv3vk0wl81WDajodzDGKzRj1oR35R%2FFT6RthHNXaVcrKsUtftDi304dZz7yrqPrQCIncdMnsEnqRK%2Fcjf54yVjP5gwtJ5ckcD%2B5mik%2BivH%2FAI3wD5RnEtpwrWgw983RGby1qiqKlYGkA%2F4x%2FvP%2BNchnke5BIUGoPQ%2FPEJHJ6XG3JFbxAOPxOA1iX7sUwIdmzZsVdmzZsVdmzZsVUbqBbq2mtm%2BzMjRn5MKZDLP4rC2UVq9qYj7SWshWn%2BtxOTnIVG4ttWvdNaiiK7FxGDtWG6Ti%2FwDwMuShzRLky%2B1lE9vFMP8AdiK33gYscKtBmDWhtq%2FHbOyMp68SeSH5UOGpyJ5pYde3moWPmW5KzH0pIo2WNt0A3Wv0ts2D73zJ6FgzxqqXpKpHG9eDMx7EYXed45VeC4gPCdYyqua0I5q5VgOv2cAW8sWo2QMqhwwoyHcVyQFhVOLzvrNrdf6fFHLFX4kVeBH%2Br1%2F4bJlp%2Bt2GqWrXFnICyKWeJtnUgV3XOP67qFjaFLHUrprecy%2BlZajxPDmN1jn8Dv8Aa%2By%2BIaXrclrdtZ34NrfR1USofgeo2K06c%2F8AgcBCXr%2FlvXRrdnzk4rcoSJFXYfMbnDzOV%2BTr82eqAOQIpaBq7AV2r%2BOdTriRSEp8z8RoN9I5AWJPV5HYD0yHr%2BGQg3Ntq1lcLazx3CiZviiYOKzQo9Kjb7YzoWqRevpt5AOskEij5lCOmc60%2BWCK0j9ONYo5IYp%2BEahQWBeNjRafEcMVTvTb%2B80fyHZ3FugE9vSORJBUqPVZW%2BEHw3yVaXeC%2FsobulGkX41HQMNmH%2FBZzC%2B1iTTbadZUkjtJjzkQqSKqNm5fsdMPfyr1%2FRdT8vra2E5N5C8kl3bSMTKpkctz%2BL7SP9peOA7fFkIkgkCwOfkz7NlA1y8DF2bNmxV2bEJLy1injtpJVWeavpREjk3Hc8V64virs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F9Xv%2BbNmxVplDqUbcMKH5HIPokjWsstqx%2BK2lZPf4Wpk5yF6nF9R8xswHGO8QSj%2FAFh8D%2Fqrkoc6VmSMHUOOjAEfTjsAaZMXhMRPxRnYf5J6YPyJV2bNmxV2bNmxVQuzOtu729PVUclBFa07U98DafqsF6i9EkI6ePywwyF6vG2i6oJRUWl6xZCP2JOrr%2FsvtLhG6s0yiK4X6Zfi4QI7Vb9lv5h%2FXDHrgV5c8B0LzLc2Q%2BGF29WDw4SfF%2Fwp%2BHOg6ZMHi4j2YfTkZ%2FMGwpFaazGDytm9GYj%2FAH25%2BEn%2FAFX%2FAOJ4N8uXwliicnps305LmFZDewrc2dxbt0lieNvkylc45%2BX10UCQzHjLATE4P%2BQeNc6L55e5i0J57WVonikRmZDSq7jf2yB2Op%2FVYor2%2FwBNjktpAGjv7ZvU%2BInoy8Vao%2Fa44xCQ9as25RVBqKnfBGRby9rBEsljcIY0aQ%2Bg5FCCQD6bj9lslGAikN5s2bArs2bGyOI0aRuiAsfoFcVS%2B%2F1q2sJltyrSytuyp%2ByDsC3zwxBqAfHfI%2Fodmt2z6pcjnJK5dAexPT%2FgRkhxV2c782mSy82WUgNIdUhNs4PTmlXQ%2FwDBDOiZAvzLb6nHpOrlFkjs7lWdG9yvxVG%2FwiuGJ3Up3YTJFr7op%2BC8t1ljHjxodv8AYtkiyHbxx6XfKx%2FcXBilJ3%2BAsVUV8FRlyYA4Z80DkkPmq3EtlHJSpR%2BJPgHBH66ZBtIufqt9Np8pALHnEpO5p1oM6Xq0P1jTriPoePIfNdxnLtZtrGZluBcG3vF%2BFJYuJfx40IIxHJKzzb5et9ZtZYp1LwygcgPtKy%2FZkT%2FKWuRKKCOC6tNH1CblcWiILDUWHH6wg6wyDejx9Fw4sfOMjEBY5biH1HgLy8VYulOfJV%2By38q4ndH9LlL219K4iilHrWzLxlhI6SgE1%2F2SnFKo0Czxy28zMqcSzspIYBPj2I%2F1cd%2FytnVZdNQ2D1I%2BESMoPw%2FzMftdMG20TSQyyblmjenzoc4TY6ld6ddyKwMUsbFZoHqNwd1KnGXRXs9n5%2Fv7lg98GlWhMjwk1A%2Fm4k%2FF7jDSwSPULTTJI3PGBphGNwG4OHVW%2BgnONX%2BsWFpDFPaSSJcTESG3TcRlf2uRK%2Fazq%2BkR3aeT7e%2BjnX6yoW8ibht%2B9i9Tg%2B%2FQ98QVZHqstutowuSPSdSpV91IPVWzif1i98t%2BZ7m40FjbSWUrNCqEmkex4EH7acT9lv2c6lonmbTvMUTWdwgiumWktrLQhge6H9of6uRLzd5ZurDVP8Q2KetYFUW7jXeSKi%2Bm0hH7UZH7X7OCY4g2YM0sMrjvexB5SHcXsnkPz3Y%2BcdPqKQ6lAB9bta%2F8lI69Y2%2F4XJeDXPJlvPe6JqMeq6NMYLuE842To6ntToyuv2k%2Faz0J5E8%2B2HnGyI2t9VgA%2Bt2ZP0epH%2FNEf%2BEyESeUuff3tmbFAx8bB9H8Uf4sZ8%2F6P82TMMLNb1iDRrQ3EpBkkPC3j7s5%2FwCNV%2B0%2BGVc4n5m8yfpnzJcsr%2F6HYsLe232PBv3j0%2Fy3%2BH%2FY5JxkLourX175%2Ftb28maSZrloqsdlQ1Tgo%2FZUDO755%2B8uxlvPcMI6i6LAe2zZ6BwlS7NmzYFdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVf%2FW7%2FmzZsVdkb83W5%2BrW1%2Bg%2BK1kAc%2F5D%2FCf%2BG45JMC6jare2FxaEf3qMo%2BdPh%2F4bCNiqV6VOOcTV%2BGReB37%2FaX9WHoyFaJMz23BqiWE7juCh%2FsyaRsHRXHRgCPpwy52gLs2bNkUuzZs2Kuwu1rS49W06Wzb4XI5Qv8Ayuu6nDHMemKvONE1KWGVrG7rHPCxRgeqsppk7sb0XC8W2lUbjxHiMhnnnTHtLmPXrZfgakd1TsR9iQ%2FP7LYtomq%2FWI0Iakybof4H55LmFZdqNlFqNjcWMwqk6FD8z9k%2FQc515XuZbW4l0%2B5%2BGWFzE6n%2BZTTOlW063EQkXY9GXwPhnO%2FNsS6T5qtbofBHqaniexmi%2B2v%2BsU4v%2FlfFgHcrPTFbanZNb3caywyApLE3Qj3zjutwW%2FljzBc6Pp6fV9JHpsLNSSgR1HIorV3Vvizq2jXQk%2BAndlBA9xnNvzRiWPzJBJWnr2gJP%2FGNyv8AHAdikJ3YGf0o5pZDIboSD1GJJ9aAgh6%2F5aUzoFnN9YtYZ6gmRFY06VI3zlXk%2FVI5bi2hnlBgdBuxFFahhfr0rSNsnHlXU4JI5NJaSt1avIQm%2B8RaquD0I%2BLjkpbgIZJmzZsirsDagC1jcqvUxOB%2FwJwTjXUMrK32WBB%2BWKpfofE6Xb8f5d%2FnhjkMPmvR%2FKlrJBqkxBSVkjC0PIDpTfI15s%2FMNbu3jbR5plsZVp69swRi9N0eSjMnH%2BRcVpm669cWWtXGnatwjgKma2uPsj0x%2FNXw%2FayOfmLr%2BhX3l%2BPTYrkXM%2BpGtm1uPUUceX7yRx8KLtx%2F1s5xoN%2FefpVr6C8muVVfUuLO8kMrEIeTem7faRk5Iy5FdTuZ9B169trGZvqkc5eFD8SmJzzUcTtsrceWHzTT3fRJv0p5UZvtOYYrgCu%2FJV4P%2FwANHnPrj83vM2lX9zpWoBJYInaJ540pOi1%2BGRQDxf4cln5Z3qT2stjWrK0iexEgE60%2F2XLOUfmHYNZeZbhWP94Ayn%2FV%2BD%2FjVclLlbEdQn955q1wTiU3huLadeQCsfSljO9VNev%2FAA0bYHub1Z7V5yWkhHxpcVHJNwGiuP8AKStVk%2FbyGafqLQxyafO5S2lPJWUAmGQ%2F7uiB8f8Ad0X%2B7F%2Fy8Ctd6jpl3Lb3v%2BkQTpxniqTDcQn7LoR%2FwUb%2FALDZCyyekWl9ZyaFLPelZGN2tqDEtZJHenEs67ckpVXwq1bU7G1iKWvqtcCR4bkkhFYx%2FCHXhvvX48C%2BU7H1SbK3k9Wya5hv4HchSBF8FxBL2WeOJ1k%2F4s9P4cu%2F0j%2Fc1FphmFxPLeOhZBxAiL8jt40%2Fa5YegV6PprvLpcE8sfpTNbh3QVoGK12zluoQ2PnZih42fmWIVt5z8Md4q9I5P5J17Z2A8YrWVl%2BERoaDwoNvupnLtb02LzREdR0hBba7bVe4tEPFZwpr6sH%2FABb%2FAJOSkgPNLqGaG7e3v42iuoTwlicUIK9iM755KnGoeT7ZX6m1CH%2FYSNCf%2BFOctnuIfNkSWeqEWuu249OC8ccfW47elcd%2Bf%2BVnQ%2FyyS5t9Dk067jMVzaSXMLK3hRJlp4r9rjkQl5PbalcaRd%2BlI7PbwysI5lNJIirU%2BH%2FmnOueV%2FOUeo%2BnY6hIpuWX9xPtwnU%2Fhz%2FnTOPeY4zY%2BYNTgpVBcSVQ9CrHkP14Gsb9rFgRWSzY1K1%2BKNh%2B0p%2FZcY2Qdlev%2BZ%2FLKxK19pcdYBUzWqdYx1Lwj%2BT%2BaP8AZ%2FZyHW9xe6ZfQ6ppk7QXsBDRTIevsR%2B0p%2FlyY%2BUPNR1KJLK5lD3KrW3m6esg67f79T9pMD%2BZtCjTnqVilIW%2BKeFRshPWVAP2P9%2BJ%2BzkZRB3DPFlljlxRPz5Edx8mcw%2Fm3aXvkzULyUC3122jET2oNA8kh9NZYT%2FJvzb%2BTOZabIhnWkgaOQcwxO577%2F5fjhKIYndoZvgaUD05v5SN1J%2FyG6YI0RZ4tS%2BoyKQS1HTwYHsffALrdOQwM%2BLGOEHfhu6PWvJ6f5FsfrXnqW8K%2FDBEZD4cmAVf1Z2fOSeSLmfT9RrHEWlvDSZaVagNR0%2BztnW8mWsuzZs2BDs2bNirs2bNirs2bNirs2bNirs2bNir%2F9fv%2BbNmxV2Y5so4qw6WL9HeYLiLpFcUnjHQfH9r%2FhuWSbTnBgMXeJiv0H4l%2FA4T%2Ba4fTW01FRvDJ6chA%2FYfpX5MMGaXcBmHxbSrsCdi6%2F2f8RyZ3j7kdU4zZzrTfO2qQa3eaHrkax6haux%2Br9FkgJ%2FdT2790ZP%2BGydWWoWt%2BnK3erAfHGdmX5rkSEovNm2yiQASTQDqcCt5sL5dZ06Ko9YSMNqRAv8Aiu2Iv5i0qJecsrKo%2FwAkk%2FctTho9yo69htbi2e2vApgmHB1cgA1%2BffOYX%2BnXflXUghJezkNbabxH8jH%2BdcPPN82l65b2j213DN9WdmmtefCRkdeJaNSVb1I%2FtYXWM8cVk2javM95pUv9zcPvLB%2FI3LvwwhIT2x12KCBrxjyjRS06jrxG5YD%2BZcrzzpkXmjyhLPpzCSaFVv8ATZozuXjHP4GH%2B%2FE5JkUmju9BujaTsJYHHKC4G6Sxn9r%2FAJqwJH5g1fyjDaw2KrcaE0zSNE27RiQmtuXPSJ6%2FuW%2FYkxI6hUg8ia9qulatHe3s0k8DgxGKZywBk%2By3%2BTkn%2FN63a8ttG1a3rHL%2B9hIB%2BIdGK%2F8ABA5DNbS0tL%2B4ksJOenzETWrjYiOT4gjD9l4WqjL%2FAJOTTU9XtNc8r6dDP8E8rc4iSP71RwkTfcP%2FALsX%2Bflgq09zFvKeoTMwV2NeCsB0BaNqf8a5N9Zu59K83W2pWb%2Bn9cjBo24ZXUNxI%2F1lyCWsL6fNb3LLxid24tSgINA9Puyb67pd%2Fr2kaPc6bxN5b8owWYKAYW%2BGpP8Ak4RyQU8ufOF7JLD9XRLaAj96ZPiYv4A9An%2FDYOfz9oEbtA0kjXSqG%2Brqh5NtU%2BkW4iQL%2Fk5yK%2FiuNagjEcpTU7Rj6YqaSAbtG3%2FFin4om%2Fa%2BxhXcGeWxlDgpPbfvUFaPDKpFXiI%2FYk%2Fk%2FmwFXr0n5hfXBJFpVtxmC84jOa81%2FaKqv7Sfy5GL7zJq2rwXFhqF40AlWiSQfAEPVW%2BH7Sfz%2FwCRkTl1dLW3t7xi8108C3g9EBArCnI8jtVvtNRcR1zzTdJcQvYwRW7y28dwzFfUblIvI05fAo%2F2OGxSt3zSW9LPXITMlCjiuzofsyRt2YfsPkd0iabTtQksp1Zra4U84X6SJ%2Bw4%2FwAoD7Ei5dzqV7LFCt7KZnVAY%2BRqyg9aj%2BX%2BTJdouuaHrltb2PmCNfrkKmO2vKcT%2FkgsP2v5cjtapfo0Jt%2FMllFGHltZvVeK4ptwWNi6yU%2BzIvRlwm1mUarpNtJHEWutOkuIbh0FSbfkGiZ2%2Fb4MxH%2Bpk6uZNM8saddywStNK605tsKnYcF%2FmbOZy3s2nWaLE%2FG4e4%2BsK43HELxowOzK%2FL4lx5fFWb%2FlprP1TWLQMaLMFRh%2FlRtxr%2FwLYn%2BfNjLp%2Bp2WpwghWLxuf2SGoRX%2FAIDI9peo2kMtjfWQMUi3JM9u24j5rT4D%2B1G5qyfyfYzp%2FwCcdimr%2BUra%2FG%2FwpISOoIpXJDcIPN4HDcR3Scl2I6qeoOGNvcQyw%2Fo%2B%2FJWGpNvP1aBz%2B0PGFv8Adkf%2BzXIxSaym2NCOh7MMNYLhLlOS7H9pfA5FU30vUNQ8uaqjIqsaqHiO8UsZ6EeKsrfA%2BS3yUr6p5iudTl2S1RvRTchTKeCgV%2FlTlkOsvUveOn8VkdatauxoyN%2FID%2B0r%2FwAmTfyYHsrnTdPasc1%2FNczXMZArwhT04g3%2FAD05Yjml6Fditlcmu%2FpvX%2FgTnK5bS4sp1mDtFID6kLioPXZgc61NGTBNH4o1PpUjIpNbyX0Ulvcw%2FV9Tst7i2IqHWn99EP2kZf7xF%2F18nMX1pANMR1TTYfMkRuYYlt%2FMEY5EfYW7UftL%2FwAXjDf8u%2FMFzM8mnX6MJLWRFkMh4yiqtGUYU%2FZP82IzW%2FH4DVQG%2FduPtRP1FG%2Flb9lsG6ZJDJfPcvGI9WCoJZwPhmRGHF2X%2Ffi4AP2peafmBE8Hmq8LgATCOVaeBUL%2BtcjauUPip6qe%2BdJ82x293Pb2GtyL9ZmWRoL5QAUZZGQK47p9nOd39hdaZctaXScXXdSN1YHoynupwFCL0zUX0y4SVGf6uWDqybPG46On%2BWv%2FAA652nRtY%2FTdqJbfjLdqnK4gjpSVen1iBf5G%2FwB3Rf7qfOCxycaqwqjfaH8ck%2Fk%2B61K11AC1kZYIT6gmB%2Bxy2oP%2BMi%2FC6f7LEGlZCbBr%2B%2Bu%2FqqpBCjP6cbtxHwn4ljrX%2FgckOj2EMcC6lK6yTRKYmkIoYl6gE9xT7L5HhcTJqM1jJCEjjQSQsK7qT3rgi%2FuJ7PTDKQ31S5f03ZPi3SrfGP5RiKG6bej%2BQPzB0CG%2BuNHvB9VeZx9WvZKBX7cCf2P8jOvghgGU1B3BHfPHaQrfuEt3DHkAJakKhP8AO37A%2BedX8i%2BYPOen6dNp2qK5t4JFjs5HClyoNJfTdieUaL8S%2FwDCZEcRNEc%2BrfOOKWMTgeGUaEoHfi%2FpRP8Aunt2Ab3UorWqAc5QK8egHzOPhuoTYrdesJYgnJptgDTqdu%2FtkT1C9XnLPIwofjLduJ6fhkgLcYsi0vVRfSSRSUWRd1UeGGgyN%2BVrCSkmrXKlXnHC3RtuMXXlT%2BaTJKMTV7JdmzZsCuzZs2KuzZs2KuzZs2Kv%2F9Dv%2BbNmxV2bNmxVB6rafXtOuLXvIh4HwYbr%2BORbRL%2BsMTMaSQsOSnrseLZNDnIdfXXtP8zXtnZGC2tJWEsUz8pH4yAE8Y14rs3JfibJRPMKyf8AMXye3mKyh1LTH%2Bra1px9S0ulFSV6mNwPtRnIb5e8wXlw%2FwCj9VR9N1u12PGoD9vUgfpJG%2F7UedN8uapcXsH1e7C%2BrAi%2FvV6OPs1K%2FsttgLzP5Ysr%2B3NzHFxmjPMlNj%2FrLTdWHtiNtlU9I82sxa11lAssf2bmMfA9PFf2G%2F4XIt501y81SykEEjRQRMGEaMV5L0%2BKn2sq4ke3j9O4asuyLNSnMduX%2BV%2FxLCfVZ%2FS0u8cDkVhYhfGgxodGQDDZPMculusTzpwryMT7mneh%2B0uTVNL1e%2Bsob1tLmmtJlEkbFW5FGFR8NfUzi2iQ%2FXNXtLjUAXWe6hE3L%2BQyKHG%2FbjnqzzP5ok0H0baxgWVyodi5IRU6KBx74ASrzOzsfL1tcH69ppMtdxM0h4%2F883OS2GLS7239K1pGpGwj%2BEr%2FALHphVcecBcyrc6vBFdabL%2B7lV0UPbt12KDnx%2FlYYGvrWKwP1nTp3kirsT0BpWgcdf8AZDJg%2FFjSanSb8xC2ursXtpG5kt7dkVRGaU4g%2FETy%2FwBbIzc60xSeylsgphDJeafNtIY%2BnqREfCygYcWPmV14x3qkqQDzAo4X%2BYr%2B0ME6h%2BidZZImjM90FLQzQj40BFNn2%2B1X7DYkd2yi%2BrHNIh8uXbLp7yLJdToZbZJDX1EU0NOXxCeL9tf%2BJ4PhbTLya58sXqqt3EoKlV9MSoRUMn8ssf7XH%2FXyD%2BcfKFzoWnRatFqUUU%2BnSGSGAsBcFXZaFeHJVZDu2HOn3See9Kt1%2BsCx8x2y%2BpaXabB2TxH8pP21%2FZwAnu3VQuV1CC2iW9cx%2FwCkS28kMtA5dKLHL1%2B00TJyZPhk%2B1nS%2FKN59Z0GSNno6yI6e1V4v%2Fwy5z9pv8YWj6Hrcf6P836EWmiiHSfiv2ox%2B2kwH7P2ftLk28uxrbeXYLhYXV7gMzxkE0IqPiqNq%2Fy4gb%2BSk7PNdX1m%2BHmqaytJ%2FTtTdx%2FBGoSu6swZqcj8YbCnRmM97drKxKXcslu7tXb1%2BSBq%2FwCSzZK9c06xuNUutStkBls5IFkAIAMoHqUUfzNRkbCPW5Xs70rZcVtL0%2BtCoAFVc1oK%2FwArni2RIShdD0rU9Z0g2UNW1DR5JLG%2BirRlQuXhmp1ZP72M%2FwCph75g0K2sra21G8ch5baGJUpt6yARuvL6OWEQk1eJrq9s55YLxBzuGhJEjr3LKvxSqv7WISanq2oQRXGryvd2MtVhuSQ8aNQch8OyNjsqElhK1hbcr%2Fcv3K%2FyV%2FycRSQBmUiifsfQM6FpfljSbrR0mCy3EjDlDIzN9sGnphU%2FZ%2FlbIrqnl%2F6jM3Cb1VRqOoU8078XoOHPISIiQCd5ckgE3tyS4StK6xSy%2FDJ%2B7HqseO%2FYVw0W2thatp10he2b7YH21cfZljP86f8AD%2FYxO4tbO4so4I7ZUvG5Lpl3PssprUws392JD%2Fut%2FwCbAOh6sLuU6VqYMF4hKRu2x5DrFID0YY7rsh4tMn06%2FkspjzjniaS1nQfDIE%2BJWXwdafEv7Od0ugnmL8tmYipWEOB1oGWp%2FwCH5Zy4hoT9WuU5BTzj7FHp%2FeIe3%2BX%2FADrnR%2FysvRfaHeaJIwZ4RJGo8QDzQ%2F8AAy5OPVBfPNxbpMpifYqaBu4IwFYWlx9fEIJU7lmH7S%2F83ZJ9e0x7K9unRg8azMkoHWJySVR%2F9YH4W%2Bzj%2FKtvFdaxBDLQKzAVO243G%2F8ArYPJUXb2NvDZtdyWxe3B4meCQ%2BtG37Jkjb9lafaXHRXl9q2r6etnWJ7Yxx28h%2B1UNyMjt%2FlH4myX6lp1poPm57CIFLG8jikCsKisqqXWncc2%2BzhLZW0Om35hCuLiCeSgIHFY67KT9rl4YaV63IwMVSakg1pt27eGRuzvrTWILdYbnlcIWXSdQc8W5pXlp91%2FLIP91M%2F94mG9tcfW3AQ14xgsPH4c4Zp%2Btz6HqN2rJ61nNIy3loTTkA54yIf91zR%2FailyRNUinpV0iXqyyxw%2BjdW5Md%2FaN1iPdqf74f8A5Jtka1ZZ4LWYxsySKpaCRT8QI%2BIxkj2Hw5KLe6%2FTsUF%2Fp1wsmrRRk2l0QAL6Fft290g%2Fu7uP7Lo395hFquqaL9XZmmWCRwySWTgs8MgG6Oo%2FY5fZbAUhC%2BZ9JsfMl1SKYW%2BqyQRT2DMf3UvJeTwt4M5%2BJchKyrOr6D5gQwTQEpFK%2FwDeQv8Ayn%2BZDk%2B1Gyj1ew0SaC4gS5ntmCtX0ELQtQAM%2FEcv5Fwv1bQxr%2Bnhr4oms2ymP6xuCStSIbof6v8AdzYOaGAQ%2BXdTm1NdLjj5SN8QkG6FOvqBu%2BTjTrS2sbZLCMcVUmkpFGLn7Rf%2FAFv%2BFxTTme102DTuILIwZpKksW%2BzxWtW41%2FZyU2XlW41HhcahytOQJZVHKaXw%2Fd%2F7rY%2FzviAqQ21ldXtytrDG0k524qKmnj8sO736roNmNIltfVv7hFeaMnkUqTwpxNA2S2MaT5etS9w6WdtEvx1b42A7Symh%2F2C5zTzb%2BZun3swOjacGVKwrqMgoajeiJSr%2FOTDVdVZPYa3pOj%2BW7u31uKKzuZGP1dePP1Iz1UovxtJ%2FlYU%2Fl%2F5hOtyS%2BWrlis1Gm0pyfiR4%2Fi9Kv7SumcrvNYnu5DcXH7yToamrfSf6YL8ratLZ%2BZtJvoT6bwXMbEjuCwVh8uJauPFuFe%2Bx%2BYJ4NMawQiOFzyZOlDX4h%2FwQyQeVtAn1BY9R1QN9WU1toG%2Fa3qGYeGE3lnRLPVfM19LdAyWkTtcW8a7xOGaq1kGz7k%2FAM6moAACigA2AxJ7lojn72wANgKAbDLzZsirs2bNirs2bNirs2bNirs2bNir%2F9Hv%2BbNmxV2bNmxV2Qzz3p3P6rqKbFKwyt%2Fkn4lJPseWTPOVfnX5gmstNtdBtnMbajykuXHX0YyPh%2F2b%2FwDEcbrfm24MRzZI447GR59w6pMfNyWl7EdD1KM3Cp6dwoKldj%2B1zHE%2FRko0rz1rUtz9SvLe2lm2Hp8jC7BhWqV5xvUb%2FDnn01jPEin8pHgckemXmsTaHcxANw05o57O7IIKxliJYll%2FaRT%2B84%2FsNkIZhIkSjRDl6zs%2FwIjJCXFHkb5gp3%2Ba2r%2BbdPuEvYLVbLRpiFL27c2EvWkj0%2Fd8v2VpkGsfN2p3Kra3V2XicgEsQeQJ3qSNs7d%2BkdO1rSbKw1LhN%2BlbRXVJKFZyq8ZV3%2F3YGHLOEecvKFx5TvTLDym0idv3EvdG%2FwB9yf5a%2Fst%2B3lpHUOvsua4iNwbWCruHK%2FB0qN9j0zoy%2BarW48r2Oq3l1Le2sSizuGkqk6zgUVXMda8F%2FwCDTOO2M01rIs0XCRQ4kHqCqGnZl74NgkTlMqSOIZpPVNrXjGG8Qvfj2wXzSyqz1eO%2FtNSjQM8sVubhFbbkIpPiI%2BUR5Yca3q17IdPmtZ2js7yztriONNhyAKSciPtMJUfIZaXDWL%2Bra0jcq0ZYAV4yAq6mv8ynJf5Yex1PRjpUsfO%2F0pnuLJWNPUgkNZ4l%2Fm9Nh6vH%2BVpMRa2uvBcXej2Gp2rSC5tJJbOZkqW4v%2B%2FgY%2Bx%2FeJhtBB5sOi313boLa9ihMlo3EB5ClGkULy%2B16XJk4rhlZarBFAbZljtrS5Tg%2FoIF4fyOT1JjbC1L%2BbSbowyMwu4WrzJryX9h1PQpxw%2FFWFXNut9PB6srS6frlqI4JZHJ%2Br30bCsbOf5phx3%2FAN1T%2FwCRgPQbtreVrEFrW8gfnDU0dJUPF09unHD%2FAFeygjjvbi2haTQbpxcXlpHvLp9x9n6xClfjtjXi1P2P3b%2FGseE99ol9qtyjIKamYlktb6Mn0L5QKJ8Zp6d3x%2BH4vt8OD%2FvciTXPZaZ%2Bkdp5%2Bgt19Yad5p0%2Fe0vU2Y8T0NPiaM%2FtJ%2FuvOj6lcGysFaRlYxJWUjfkUXk3z5MM5p%2BV2l3U2pPdalFHK1sOLyqQxSZaFOdDWOT7W%2F7eTTzK8UdlcxREhXBTf%2BdzWg%2B7JxNji70HnTz%2B51GXyrrFxaapD69nfcRqSftqxHL1oj%2FOjPjtQ0GNYCfrCXWi3QMtlelhyjkYbFfdvsyx4M87Wy6zqemTq4X9KwQnmegkK%2Bmf%2BSi5G9M1PVfLUt3od3CJIGDEQS7iKUD4Zov8%2FjyErqrruPNkK58%2FJN7Sx0%2B0sDe3k0k9xA6JBJACGqwPHiKp8S8fts2F0mrDS3nubPThH6ZLa5YcQsnBvs3kSsCnJeXJuK%2FB%2FwAYmwQ%2FrXdjEsQRizhvjKCrUp8If4uW%2FwCyuK3Fs893p1nezfVdeDCOxmHFi8ZH%2B89wSeBjP2YuX%2BVFiYggA70Pmt9QzfyjdxXeiPeaY3rNYt9ZjdKUkgP2gyj7L8ftL%2FPgTz2tuLdJIT6cN1JFcxzJ2U7Sb%2Fs%2Fa5BsKfLEMvlPXby2sJI40uF%2F0izVuUcb05n0z3gkTlw%2F3237vHeddXN5pEMdnbmOys4BFcy0qDcF6GJa%2FwDFacmyX8Pu2R1QOi6Yupabd2F78dj6xjLVFUlpySaHwkUf7F0%2BDIrrvl6dr42N0eOtRIHs7ldkv4B9ijf8tKgfB%2FP%2FAHX28mPluyb0Vs7OdTL6SSReoK8%2FTZqN%2FrqOPL%2FJwTqdhFr9m1lqUhjnhcm2uv8AdltN%2FMKf7pb9tP8AZrjVhWHaHrEWqxjTb9gt9GKQytsXptxNf2sl35d3J0jznJbCojuQlR26cT%2Btc55qthdyXcyyJ9X8wWfx3ESbC6UbrcwfzS8fjfj%2FAHyfvPt88N%2FKuq3F3q1hqBIEyc4pWZuCkoAwck9MA50VPJV%2FMq2k0TznfCJQUmPJom%2BzJG%2FxcW9t%2FwDY4Q6cILa6ZY2eKRwslv6goaDfjy%2FaK4f%2FAJleadM80a8t1pcZ9GCJYmuG2MrD7TAfsqv2V%2Fmwr0WyuNXUw%2FVxci1%2BKLt%2Fw23wrg6qGVanr1vrK2t3csIry1aESBjxJEYYOQff4cjvm3zLbpZXLWTGC5vr%2FwCswRjfjBGoC8yfi%2BIjCPX2vNMu%2FqZDRNGKSAgUqxqgqKruF%2BH4sjsyPPIZZSXJ7knfG1e9%2Flxrdt5ksbqdSFu7eMLcW5O4%2BE0cV6xvnF75uVzcb14yyBW7%2FaO2KeS9RutC8yWd7DMYLfn6d3L%2Bx6D7SLJ7YhdkNd3UkRDRSXErxMDUFGclT9IwndCtpWrz6ZN8MskcDsGdojxkjcfZmip%2B2v8AL%2B3iWoySfXbiHUmFy14frKXqH4nL14zK%2FVuX7cbYEeJWDPQVpU0Pj0x6yqLL0pJUW4tXE1o5O9SaSRbeP28Cob1Z1T6vPKzxjeNSSQK9aV%2BznXLfUrdtDt9T1U%2BjeRxpa3iMvF5V41jcg%2Ftrx%2BLOd6VbaTqJlS7lMl5Iri3hHwRiQj920snhzODppWsii6zcGeSZg3po3NSy%2FD%2Fen4K9V542r0LyheaXcm5uaCCWNhxkl%2FvClOqcvs4rrn5g2enI9tpKi4uqlWck0rSvxP8Atf7HITazpccriNaLGD%2FozGnBVIJkZP261%2BFuWE4juLqSZo2pbJMjyitAQeVPwrjxbUE01reuXGvCKPUZJ2Cs0iqgUgFtunw%2FCKfDhWLXSzayW73jxuGElWgJUbUoSDhkLcXEjJDSJqkoSd%2BH7OGlh5a1HzDONIit%2FWvZEMkJRlQtGlKsCxVX4%2Fy%2FawWtILTLTTmeMmbTrm1jXe0nmMLOwH2nZlrWv%2BVhlBb6Lql09zpemrbx2cJe5WNqiRi3EKrfyj%2BZR8WJ6x%2BVPnXQrK41i9sljsrUB5pBLGzAVCgiNWLNufs4I8h6hp738sNxRBexei5BoBJWscg%2F2Xw4VZjoMllFbx635Y52k9mvPUdKaRjHIF%2B08PInhJQV6%2Fa%2BHOq6d5%2F0G7toZzK%2FBwKzBCVrTo3GpQ%2F62cYW21DQ%2FMUVrFH%2B5vyInPSIqzfE1f2afawkmtp42klt0f6uzuInWoDqrFQRQjkMJV9Q2ms6VfitpeRS%2BwYV%2FwCBNDg2ozzr5Y1vTI7V9L1PnbTDk8E4Qs7M1KKHBDp9GTfQfOdosSxw6txkp8UN0DxBG37WNea09UzZBNY%2FM3SfLcVrLrDIyXZKwm2bmW40DsF3%2BFa%2FF8eTW1uoby2iu7ducMyCSNh3VhUYEK2bNXNirs2bNirs2bNir%2F%2FS7%2FmzZsVdmzZsVdnE%2FwA9rKYXmj6jT9w0ctuT4OpEgB%2F1lOdsyO%2Bd%2FLUfmvy%2FcaXstxtNZyHosybofk32G%2F1sB5ORpMoxZ4TPIGj7pbPl%2BNPrERi%2FaG6H38MkPlXzh%2BjhHo%2BrmunCqwXFKmDmfiSRf27d%2FwBv9pMJBDcWN7JaXcRhuYHKTRPsVdT0P%2FNWB9RiWO6ag%2FdygSL7cuv3HKpkwImPcXoM2KGaHhy3B3BHf3h6B5qslXQooNOVof0a7Xdi6fDxBPKQQ78vT35xNl6Fr1l5s0yXSNZRHujHxlRhtMv%2B%2FE8JB9r%2FAIfILo2pT6XfLd8mmiKehPAzE8oT%2ByvKtOPWP%2BXKvrafSpl1XT2L6ez84LqLrE1a8WH7PH7NDlkMoluPiHRarRz05F%2BqJ5SHf1CT%2BZ%2FLlz5WvvTUmXT5jW2nP%2FEH%2FwCLB%2Fw2FauD8Sn6c67a3Vh5x0p7G%2BRfrAWskY6EHpLFXp%2FxpnLdc0S88t3ptrir27msE3ZlH6nX9pcmR1HJxFS3uA4oftDBlvcz2lxHc2sjQzxMGjlTYgjCVG6Mh%2BWD4ZRIvv3GC1Z7pdxHraNJCViukq13aswVAO9xCW%2F3Uf8Adkf%2B6%2F8AVw1t5NPkKabe3SyqKG2uIquYDX7Jc7ei37a%2FZ%2Fazm9tdT2dxHdWzcJYzyQ9R4UI7qw%2BFhkwhvDqECTaZbExyHhPbqKmCYivBf%2BKZPtR%2F8DgIkSDxVHqK%2FSyBFbjfvR8k1xY6gVtLb6vJbVWZbhvVLo38yAemYZF%2F4XCjW0McX986%2BX72Uem6V56bekVAYLu0D%2F8AJSL%2FAItjw7W0utVgj0%2B7k9DULc%2BnaSMaFkrvaz%2F8yXP%2Bpgq00iztbkaVcP8AWBer6NzEworLWjRsoJ4yRv8AEjr9jGOMDbn5y3UyJ8vcyfyHpl1puhy31zEE1e9cJfKxXjK8JMaTqfGZCrt%2FN9rCX8wda%2BqyabAGAM85aYA9FUcV%2FwCGyZXElvb20VgHb1LeNDEKmpKDhGS%2FfOK%2BcrhtU1G8vLZ%2BYsz6M0Q%2B0nBh6cwH%2B%2B5af7F8slsAAxG5tkesTm68saddo3GbTZ5bb1B1G%2FrRfrxGTW7LzPpcrahALfzDpir9biI4tJESAZowftJ8Svx%2FY%2F1cD6VMb3RNTsShJmhju4gVP2ovtH%2FgG%2BLBVnb6b5g0ux1JGWDXNDj4SEiongQcGjk%2F34hX7LfsYBukt%2BWba4gWHWmj%2BsWdpK0Dwqy%2BoWkonJE%2FvHZOfNcKdasnk80288TN6EEqxOXNWSOJiS7n2p8eB4bySw1ilv8Au4OQk47kKo%2BLv%2FLX7WK6jr4u9Uee1jItndiIiasyv9sV%2Fl3wWAFZBbvYajqsV%2FDSP1yITPUgSKH9SSinYcIRw%2BH7TSJhr%2BYOr2sOkWmnhHSK6YiRolFF5A%2Bn6ngJif8AWyP2ML6dbiRI%2FrqsAI3SRAsMY%2BxHKrlGhfl%2FefB%2B8%2F3XgXXYppJG1m2unkbj6Op2pUSKVAqksSNsif5L%2FFH9vHoUlrytdtDCgdmV7d5I2boU%2BINGT%2FLhpr3nLTKJ9UT19TB4zNHtCe3Jj3b2XIssp1Y8bUfFOQsix7SCSlAXpTmj4av5OnsdM%2BuzB3Zm9OWaNGD2%2FMgRTolP3sXP4Zv92fyYi6oITDVrG28x6NBeBvqWoWS1ivSeIikU8jFI%2BzLA6%2FGn%2B%2B3yFaq1pcXix28ZUGi3U2wadx%2FuziAEWv8Aq%2FH9vDLV7TzXeWrqbaWO4VhHeNHtFdCP7EhX5D4v9%2BfbwpC3liGgvIoVdSqt6pLPGr0pTj%2Bz8Xw4CUkEGil7RwRu9ZzwjPx8UZiKePShyb%2BRfMdhHM2kLEV%2BsDlDLQFncUCxcRX7WEF1DCs63zCs6r6c1Nkencr7rgXSpFsb5zCForepC9PiUEfZr4DADRVD%2BddUkPmPU4lUgVNtNG4qDw2Bof2kP2GyK1LECpY%2BAqTnUFhsta1Ce%2B1G3inuZCrySsgqwqFNRkwu9R8m%2BWIwscEHrharDBGjSH5tT4f9kcIoop4da6Vqt2GW0tbiQHbikbkH57UwHNFLbSvb3CNFLExSSJxxKsuzKwPQjOu3%2Fmq%2B1mFo1C2NmFMjhTQLGu%2FKRtumQfU%2FMWh3uoTXx0r1pJePKSWSnJlVU5lQNufHnhQxmOYxklSPiFCDvUZQKUIpUn7Jr0%2B7D8eYrBP7nRbUf61W%2FhmPmtkBFvptnEezCMkj78CpRZOY5w%2FBmWhBCjseuSyyn0pIpIr2CSr2gtbYTQt6aylufPp8PBWbCZPNurROskYgVkYOv7tSAVNRtg2780%2BYPNd5CdWuRJHEWkWONFjRaih%2BFAPljsqLeRrVh%2BjQt3GBRoXBBKAfFwag%2BLJ15B17yfealE2taTHcXMG63Eq%2FvbYL%2FvyH%2B6eFK%2F3iJyT9vAXkPygPNEuoxx3KQ3VrAHtYWP8AeOxpv%2FxWqijMv2WZMLdS8vBLx4pg9jqVqTFJIvwup6fvP5lP%2FDLillv5i%2BStPtL867pEEcem6hxkivLWjIk%2FevHb05ftZF9Okd5Et5mayvoWEtrdRmnCUfYmhYfzftp%2B3k3%2FAC68zLfx%2FwCFdWt1eElrbUoW%2BwGIrDPGv7CyU%2BLj%2B18eIeavKM3lq7WqfWNOkYizuXFeNesE9P8AiX7WNbqCncfm2fzRoUmg6zEqa7ZPDPPCv93eQRMC00A%2Fa%2FZaWLCHzf8Al7oOra5b6h5KuBHe3rj61Ywr%2B5Xlu0%2FL%2FdDfzx%2F8Qwpup4VWBrORhfW7iS0YkrJbkdRLKv2om%2FY4fbzsvkXU7fWNHju3jhj1ZAI9UEKhSJvEmg%2BF1%2BPEhXgPm%2B98y%2BWriTyxrM0iCMBo5VVW9aDoJIZm%2BLif5ftRthN5X8zxWXm%2FTZ9dHq6HH%2Foz2z1eNLd1Kq4TvwY%2Bo2el%2FPXkjTPPGkNY3n7q7hq9jeqPjikp%2FwANE%2F8AuxM8mazo%2Bq%2BV9UuNI1KL07y2PFlbdWU%2FZljP7UTfstih9Jy6d%2BVV3f2dja3ltHe6ipezS2mrzAFfh%2B2iMf2K%2FE2Xcfk5ojoTZ311bz1JEjFXG%2FitE%2F4lnlh3USLKCY7lSGLQ7UI3DA9mz0L%2BVP5wLqxi8s%2BaZRHqIpHZX0hAE9NljlPaf%2FK%2F3Z%2FrYqqal%2BS%2BoXb2EYvraWG3kcyvLG3IRuwY%2BkgPFW2PfJjZ%2BRruwuFa21iRYFACKFKsKf6r%2Bmf%2BReTUDxy6Yqo20LQQpE8rzso3lkpyb58QBi2bNirs2bNirs2bNir%2FAP%2FT7%2FmzZsVdmzZsVdlEA9cvNirzb8zvIf6bhOu6REP0tbL%2B%2BjUb3EQ%2FZ%2F4yp%2Bx%2FP9jOHagvqWsMw%2B1ETGwPWh33z1znI%2FzL8hqEutf0qP4JRzvrdR9lwR%2FpCDw%2F37%2FweRnGxTtNBreExw5DsD6Sen9F4gpphto2prYSSQ3Ketp11RbyAiu3QSoP50%2F4ZcK5YzG5Q7eGPEUyRpMykRSEhH7MV2IzGAkDY5h3OSEMkDjyCxL8beaZaglxoOpxTW7qLSWkmn3cX2eJ34nx%2FwApclMsen%2BcdIeC4QCZQPXjH2kanwyxe2RjT7%2B2e0bRtVHLT5SWhl%2Fat5Ozr%2FxWx%2B2uJWtxe6HqSw8wtxDvBL%2BxLGegP8yOMyceQEbcuo7nnNVpZ4JmMtwd4y%2FnD9bENU0y80C%2BazuRyTrHIPsunZh%2FTKil4kSIaj%2BGdZ1HTtM846SXUenKv2gN3glp1%2FykP%2FD5yO9s7vRb2SxvU4sh3I6MOzp7NkyOo5OKmSuGUMvQ9MMdF1m40S%2FjvoAHUfDPA32ZIz9pGH%2FDIf2Gwjt5Qh3%2Bw3%2BdcFnrir0GW5Kyx6hav6ltfqDHddW5Dbi1do5V%2Bw6%2FzZLPLbQ6nP8AWrpAby3oJGI2kXqkrfyyqR9rOU6HrKWHq2N8Gl0y6p66Lu0bjZZ4v%2BLF%2FaX%2FAHYmda8p2i2tk8sjrI7miTITxkj%2B1HJQ7huJ%2BLJR3K3snuq3fo2ruoqQC3idvsgD%2FWpnMJ%2FJ%2Fme4Msq2jC9tuUaXcXER3drJ1japH72NW%2BFmX%2Fit%2FwB5nTdIksyzW0c%2FryxVZgzBmCsa4eCZAKHDIWgbPDvK9jquh6xaW%2BtW81rDL6lozTKaFJQVAB%2BKtfhwvs47myvL%2BNQfTs2kD9UK8gQKlv2Xp8StnR%2FzQ1GW08u%2BlZO0d3dTxxQshKsKHm7hh9jiq%2Fazi6MxEiI5YOa3NyxJMjVrux%2BIrlctmQ3TS91E3jCG2jHI09R1qOdOgFf91r%2Fw2CLKFYxyJBIFZJOwHgMC2NryG3wRnq56t%2FZhusZiihu7cMWt5ir2zpyikUAU9T%2BYcuWR5pdPqiacQrWqXCzR1USVBAb%2FAHYp%2FnwutdVhtdTa%2FgWVBOAk8BcNG9BTqyk4c6rc2dxe2F3c2kcKJGI7qx4kUjpyR0B6Vr%2FNhBqc9haSxpHERaXRaWIt%2FuvcoTRa75PlyQn%2FAJZvYI%2FMUS2SNELiVTEygUjnVW9OlftI8hVWVsnSXVxfTGS6laSViCS2wodjsNs5%2Fo8rrL69qwd6pIrqAw%2Fd%2FYPw9OmSua51GVJ762swQXLCD1AiryNQrMfi2%2FyVwxKkIjW7%2BezjR7PTpr%2BUbv6WyUH8zfa6duOEPnjT7SEWmrxxkSXatazowA5KY%2BScgD9qIrxwQ3mPX7EetqFhAtqPtegzySAewA45F%2FMHm1dcRIGjMdvC%2FqRIKcuVCvJ2%2BR%2BzglLY2yhjnLaESfcEquburW8M5HpzKvIr1FaDl79cRbRr6S8%2Br245GCoac%2FCjKp67%2FwAww%2F8AL3li01qBLgPJO8f7t4wP7s%2FsE9fhOHer%2BVtfgg%2BvabcJe1FJrPjwZVUU%2Fdy%2FR9llyIFixuEzjKEjCYojmGM6jaajZ28RjBiEisJzULTi3iSKR0wboHkTXdWt21OLT5ru2A5RlN1k8SrsVWT%2FAGD5ena1aXA%2Bo6pD%2B9J2WcenL%2FlBJR8D%2FwCrnSfy880W%2Flyzl0m7uJZtJR%2BVmXSsltyNXhYD7cP7ScfiT%2BXDXcxosR1D8rvP2qWUdlZadHZW7kPcPcXEYeSn2EKR8%2BKJ9rh%2FNkRu%2FwArtc026ey1FooJo9yKs4IP7StQclz0brf5jeXtKhR7eYX0sieoiQHYL29Rv2Cf5T8WQ7W%2FMj%2BZrOKd0t1Ct%2B6eDk7xMaj05CaNxb%2FVwEgCy249PlyECMefJ4235fXQ63Uf%2FAt%2FXC7VvKsmkfV7iab1dPlISW7jTeFz%2BxJHWoPg37edQ5kyNDIvpyx%2FbQ%2B%2FQg91OB7hFCurIssUq8JoHFUdD%2Byw%2FU2IIIsMMmKeOZhkiYyHMF5g%2BhCNipcyFf3nwD7cH%2B%2FoT%2B1x%2FwB2J%2BziNyW01%2BNseVtMoMc4G7VH82TCbyxfWMxtUMlnDIPrOli55JIh%2FwCK2ZeMqthYYOMVxBNb%2Fu2HK%2Fsl6JU7Xlp%2B1xDfbT%2FdeFgmPknW7q0eC%2FsZ%2BOoWTck5ftRnrG9PtIfstnatY0iw%2FMfQ4%2FMWh8bfXbdSjxnbmyD47S4%2F5ky55gWcaZqDPp1yZo42Ppz8SvIePHOn%2BTfO2qaXML%2FSHiPqcRf2M9fTYf78Xj8XIfs4qoWsGsQ64Tpp%2Bo31zGbK9WYfFE8Z9TceI4FP9lnpNbWDVdGit9RRbiO4gT1g3QkqCW9jX4lzksE1z5382DU7WzEKoqq5UVAoOIeV9uR%2BL%2Fgc7RDGsMMcS%2FZjUIPkopj0UvHtQ%2FKnV9H1F9X8vXCajyYt9TuQoYLSijkx9OTj%2FlcMS8q%2BaLny95guoNYs2s%2FrfEXsLLxKyJXjLH4pxOdpwl1zy1p%2BvCOSctDcw19K5ioHAOxU1HxJ%2Fk4otNoZYriJJoWDxSKGRh0II2IyF%2FmN%2BXll550z4OMGs2oJsLynfr6Mv80L%2FwDCfayU6RYNplhDYNMZxACqyEBSVqSoIH8uDj0xV8NappV7pd7Np%2BoQNbX9qxSaJuoYfrr9pWwuSNg4NSHBqKbEHxrnrL80Py2g86WX1%2BwCw69aJS3kOyzoN%2Fq8x%2F5NP%2Bw2eXm0q8guZoblGglicpNA4pIroaMjfy0OKvpf8lvMusa5ol1ZazOLqXS3jiiuTvIyOvJRIf2ylKc86eM8y%2Fk35usfK2r3FtfyMtjqoRZZ3qRFNGT6bP4IQ7I%2F%2BxztF1%2BaHke01SDR31aN7mZ%2FTLRVeKNu3qTD4F5dMVZlmylIZQwNQdwRuMvFXZs2bFXZs2bFX%2F%2FU7%2FmzZsVdmzZsVdmzZsVdjXVXVlYclIIIPQg47GSOsaNI5oqgsx9h1xV4R%2BZvkA6VK2r6VH%2FuPlarIv8Aulz%2Bz%2Fxjb%2Fdf%2FA5EoJLK%2FwBFh0yOJU1AyrH6oABboqJItebtyJkjZP8AKVs73qnm%2FwAsyW89les7xzwtSMxMRKG%2BHghpx55w%2FwAy%2BWpbIHWNNjeGKFkDjlVw5%2BIPGwp8S%2FtcfsZGUauQHvdvpNWJxjhyyMZA%2BiXQ%2BUmMXNtcWVzJaXSGOeJisiHsRtll1uLf6rcMeKb20vVoW%2F6pP%2B0v7GHsLr5ptvq7mOPU4ElmEhHH1eCII4kp%2Bz6aO7%2FtephBNBPbytDcRtFNGaPG4oR7EZVKJHrhz%2B92JjDPA4cw3HMdR%2FSiiNG1m7028EiEC4j%2BGWMn4JU7qf8AjVslmvaBp3nLSFvbCiTKCY2P2opP24pKfs%2F9d5BTFFIys5ZGX9pKch9B65JvKmrSaVdevxea1m%2BCcEFQyj9tR%2FvxMtxZBIV8x3Oi1eknp5Ud4n6Zd%2F7XmskVxp11JY3sZikjbiyHsf8Amk%2Fs4caPay6peQadE6rJMwVXboF6k%2B%2FEDOn%2BdPIkfmSyGp6QA12qc4JFpSVPtcG9%2FwDjfI35a8qzaFNa3urKrXLmscfI1gP7NSv2n%2FmywxouIN1DWPKDW95DY6K0t5IfgnaUKgD05cl49I6H7TZ0bynBAmmjSVvhcz2qEM60%2BHnVRw9om%2BH%2FAFsItfhndg1q%2FpNdxmIuDQVU%2FECf8oYReSLk6R5nWBw1bmT6sSD8FGBb4h%2FNyXDyPvbsWITE9%2FVGJkB30jPKV1PpOsrBduRLFcPb3JY9VditW%2F2XxZ0%2B91O2spIoJWL3E54wW0Y5SOf9UdF%2Fmdvhzm%2Fm2w%2BoeapJlBVdRjWdCDsZE2cfeuHdvfQW0BngZptVvEH1u%2FlG6gj%2B5hH7Kr0xHc0pD%2BYg8wa1NDFZWjSWtsrCRoiGJcn46b1YdF2yFWemzxsW1CN4Ej%2FZlUofubOs2WpxpNGl2oMP2eSbEe5yTXGkadqFpJaT26T2860YEVBB6EHx8MeCzdpunlEtpHYQ38GqRrFNaPA8EgJcFa%2FGqhadao2XBGlmbe2uCzevbGeRo2PcNJx%2F2S%2FDht51s3sLpYLoH6ncIq21wRU1UceLt9Hxf8Hhj5f8pXerWc%2Bq2VrHqE1oqQWdvNLwUoijmJB%2FO9W4%2Fs8cjVH3LezEvM2mXWqyabNozB7SS1WJ5SwBrHWnLv8A3ZUbfy4onlazmtrKC%2BJlNoHFFNFbmQaHvtTJ9rPlzU7GOO6vrRbeNioQQMrRxmn938IXj4YE0fQLnXBdQ2062l1CP3SSry9Xav7og0%2F4LDsikps7C3s1WK2iWJB%2Bygpg5lNOX0YAVr7TL0xXsxcxsVlhktwpFPtLVWwbf%2Ban0e8tp7LTYrmyILlpyT6hoRw2%2Fu%2FTbdlw3taoK4v7a1dY2dW5GjQ1qVHj%2FwA24Vah5a03VlNxZEQTtvyX7LH%2FAClyfjyfo3nrTrbV9PRNI1i6gM8qRENC8gb05OUI%2BNR6nR1%2F4HIRqOj655Vu%2FQ1SBogT%2B7mU1ikA7pJ0%2FwBi3xZGwdizhOeOXFCRBSPSZNX8maml1MhNsfgldPijdD1H%2BS37S8s6ZLrEEZt2uEe1W6VWtLsg%2BlKGHIGOReS%2F6wOR9dWtRp11dSQ%2FWHt4Wk%2Br93IGyU%2Fysk%2Fk%2FW5INATT9Z0eAWczGT6gr%2BoIlfcgBxsf2vT%2FAGMYxMSeE2D07m7PqBmjEzjWSO3EOUo%2BY72M%2BYfLcd3FJeQRxyo7EzQU792GQ60bU9Hkf9HTAwts1jdVeNl%2FyX%2B2n%2FEc7ZL5XstVSS58p6kYZqVbTrysif6tWPrRr%2FspVzmuvaDq2jzsup2JtA5NCfjtmNf91Tjb%2FYyccJ8tmgJPqV4JJLJpI3sYLqJ2uY%2FtBgP91q6jpIy8Vw0sNNn8tG11m8KWNnqTrAums5YhTvyct%2B0R8fw%2FYb%2FWwLdRpfaVEkkPO50r1HhjJALRSg9HpX92%2FwCzgSW4TV9Hga5uppdVspFt7a0FOMNshHJm3VuZY8fV%2B0zfBlZHq3BNigOnm52LIfDHCYwMCJmVXI8IqMYnzI4f85l%2BsRQc7eSKVRPHKts4ruUkPAcv9R%2FiwbZaY1p5gtrHUoipjnjWZOo4lhRv8pGwcPL9pcROZo2S6ZkaXgyqoaFVk4hn%2BJ9uPqNxwVrmsWupvYzalF9S1K1lTi6GscsYYMpV%2FFWUNx%2FlwYoSjd8jybO0suLMcUsdmUQROxRrnH75PQtd8vaT5itBZapAJI0YPE6njJGw%2FajcfZzg%2FwCZWh3GhW%2Fr2wH1vSZ0DXlPia1m%2FuZuK7MV%2FuLj%2BbPQ1pdR3ltHcxGqyCtOtD3H0HIF%2BZFnb3k8EMqhxPBJHOh6MnIUDfSdssDq3zfqWmR6lFJqenRCO6iHK%2Fsk3FD0ng%2FmjfC3SNVudJuUvrKQJdQOrxc1DoafaSRGqrK%2FRlyU32i3XlnU4RHOYrF2Isr1hy9Jm%2F495%2F8AimT%2FACsKte0Zp%2FW1Kxg9KaL%2FAI6Nipr6bH%2Fd0X88En2lfFX0%2FwDlz5x0fzbpAlsIYrO%2BgAF%2FYxBVCOR%2FeIBTlE%2F7Lf7HJpniLyz5m1TyrqVtq2ly8ZYzuvVWX9qOQftI37WeufJnnHTfOekJqViwSZaLd2pNXhk7qf8AJP7D%2FtYFZJmzZsVdmzZsVaOct%2FNj8sx5ntJNb0NfT1uBayxrt9ajUfY%2F4zqP7tv2vsZ1PKOKvhz0CsbwMzqSSHPRgw2%2BL3%2FmwrlheB%2BD9exHQjxGeqfPH5Oad5lupdW0icabqU3xTqV5QTN%2FOyr8SOf2nX%2FgM59H%2BQfmu5nWC9ns4rbl8U6OzMB%2FkpwGKr%2Fyk%2FOBtOMPlnzTMWsyRHY6g5qYq9I5j3i%2Flf8A3XnoxWV1VkIZWAKsNwQehGc68sfkv5Q8vBZriE6rdrQ%2BpdAemCO6wj4f%2BD550VVCqFUUVRQAbAAYq3mzZsVdmzZsVf%2FV7%2FmzZsVdmzZsVdmzZsVdiNzNDbwSTXLBIUUmRj0A98WwNfPaJbSm%2BKi2pSUv9mh2pirAPON5pMWiStoiPJfM1bVI4yy1G8jDkCnwrhDrD6jFb%2BWbC7Wt36Ecl%2BCP%2BKiZHbtyJajf5WDvP9xZRaNCfKtxKb4zj04IOR403JKkfAOfH%2FWws84ajNd3EEklFuSOUtK%2FDRVXiKduQOFIeeatpk0F5PeaUj%2BlATLIYwSYhXd%2Fh%2ByleuLP9U12ykmiWO2vrWOW4n3PxgcAFXmaty3cf77%2Bx9jO1%2Flvo0EejT388SvJqDMjFxXlEvw8TX9ls5h%2BY%2FkSTyne%2FpHTVY6LdsVUj%2FdDt1hf%2Fitv91t%2FsMgRW4dxo9X4vDiySqcfon%2FO%2FoyYJsQGHfJL5FsrXUdZk0m6uTbR3UTvHQAgzRjkONSODla5GgcX0%2FUJNL1S0v41DPFINm8G%2BE%2Frym%2BHMD0k52txeLppjqPUPfF6l5X8xWlm995evZlguLSdkjR9gTWjrXovP4XTEPM6wwzKSKCT4tuoIO%2B3vke80xXU2tW13ZQ%2Bo15bq8npJ8UlELVp%2B3sMBWOsXOtWy2iEyXNuCyIw5Myf8VsaseFP7tvizL4tq%2BTzNUfvT%2BOU6npky9ZrciVAO5Xw%2Ba8sis01rp%2FmC01O5YrSWJ4kXcyFiB9nsK%2Ft5fljzLXzMlg0bRQujQESbVlDcl5IenL4kyeebPIp8y6j5e1DSEjX0XWO4QsqKYk%2FfRgV%2Fb5gx8cHMe5lGUom4mjuPnzSW%2F1OfVL6R7sJW2keKFUGygGhIJ3PKmNVy%2FTAk1pdWc9zBdrwuElcTIezA%2FEMj%2FmjXbvQtaW3tEBgCJM6PuCHFQExtizSKI1DHJv5VuxKrWMp%2BwC8JPh%2B0v0ZCNLvrfUrGG9tjWOVQfkf2lP%2BqcPdHme3vIZV24sKn2Ox%2FDJBSyzzBplrqWnSQSxLI0P76EsoIDqO3%2BsMgmlaxceUdRXU7ZS9jJRb62XoUP7QH80f2k%2F4HOgXdyVYgHp1%2BWQW8g4TzQyoQpJIVh1VuhGJCh7FG9hrempKhW4sryMMp6hlYV%2B%2FOWa%2FbXfk%2FU0ZJOEL1ayu2%2By1P91udv3if8OuCPJ%2FmhPL1xaaJetx0y4rFFMx2imJJSvhHLXj%2Fr4N%2FO9G%2FwAJ28o%2FYvY69%2BqOMgdlYzqPmWy8xr615aouoxAA3dk4dJB0%2FfRGjofBl54U%2BnCySRNSa1l%2B2vQq3861%2By65GPKcztqxjY7NEw4jYbU32zoNppF1qfrw2JX6yierHExoJivWIf5fH7DYYnZaY3pN9N5N1n9JJEbuIwyRoisY1kDbpVu3F%2FidM7xpl3Y%2BadFt7m5tle3vIUkaCYBx8Qowof5WB%2BPONG0jvLY28qlRUgqwoyOOu37LpiXl3XbjyZqk7XglmtZIfTEKNQGh5REFvsxr8XLjgIrdWQedvy7GiQPrfl4SNaxVe5s1q7Rp3ki%2FaaNf20%2B1kT07WGCqwcMjdJFNQc9C2N9BqNvHc29WiljSVGI2KyCopkFv%2FwAotHu9cOq2d1JYW0x53dhAo4O53JQt8MYf9ocMFyB23ZwGOQIkeCQGxqwfIsatNQSQrIrmOUbrIhoQfEEb5LLHzPP6X1TV4RqFo4ozFVL0%2FwApD8EmFms%2FlxeWBNxoEpuIhubSQj1B%2FqPsHwo0%2B4ltUmW7Ro5ojRo3BVhT2OWCi1t%2BbPJ1pFCfMXlJgtl%2Fx92VCyRHuwjb4kX%2Bdf2ciOlG2huhcX2n8JI2BE8FHHzMTb%2F8TVc6FpWutaySPblJEmHGeCQVVwP1ZGtcsIbe5N3p0Ui2MlWaM7mB%2FwBpQ4%2B1F%2FLkTGulhnDIYnYprf6tYaxaxxCDlxIaG7iko8Z7kGtWr%2B3ywxsdGl1WwitzGbkgkRzugDGnRm34R0%2FZbIJBZwxv9YhAVx8Qp0JPiBnafJl1eXekLNdyrKOXGNgADQD4g3Gg%2BE7Y8WyTLfiHNJbbQvNHle%2Fe50eQX%2BnXAD3Vg53EoWnKImhQmn7Pwv8AyYRX9xql1dmXWOS3XHiqMnp0QEkKq%2BA5fazrQwHqOmWmqQGC7j5D9lxsynxVsFsLeO39hb39tJbXMYlhlHGSNuhB%2FUffOZXy3%2Fl7UV05n5MgrpN1LTjLCT8VncEj%2FYf5Odt1nQbzR3JcerasfgnA2%2BT%2FAMrYB%2F5V3Y%2BdtAvhefubrn%2FuNux1jkQUYkD7Ubnir%2F6uEq8D1rTFk9XUdNgaHix%2Bu2XVoHPcD%2FfbfstnQfyAeb%2FFktC%2FptaSF1VgFNGTiXFfiA%2BLj%2FlZC9WuNd8p6kNM1e04anYsY2mY7TW%2FZG2pKjfsS4K003mkCHzl5WmDLazercWoB9WCvX1FB%2FeQt9lv8nIofYNRl5FPI3njTfO2li7taRXkQUXlp3Rj0Zf5on%2FYbJXirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F%2FW7%2FmzZsVdmzZsVdmzZsVdgHVY9PmtHi1JlW3cgEuQBUbr1wdgPUdNttTtzb3IJWoZSOoYdxirzHztP%2Bi20aTyvdm6uDcJSCMJIPTVhRWKj7Bbbi2B9b8keZrnV3FvberbsQsVwHUKFJ6tU8hSvhk%2B%2FwAPGy1GwvLOkqK5ju0cIP3YQ%2BnItAPiif8A4nkkphKQaQOk6eml6ba6fGQVt4whPif2j%2FwWO1LTbPVrGfTr%2BITWtyhSWMjqD%2FEfs4MzEVwIsg2Ni%2BVPOHlm58p65NpU1XhP72znP%2B7IWPwn%2FXX7En%2BVgW28s63f2kWr29m76Ys6xyXQpxUggNUfa4iv2uOen9c8t6J5it0t9as0uo4zyjLVDKf8l1oy5EL7TriGW30Lytp7Q6Dbs0d7xI4Oz%2FFWPlycmNvib%2BfKziufETs7WXahOn8Ph9dVIn6a7%2FewDzPd3ukNplzYtxtEhW2adVBKzRktTkalOdf%2BBw60bydZ%2BaNR%2FwARaPq0VjOIw509bcLIkw%2B16yh%2FjRm%2F3an28de6dLYTXGk6xDztpx8aHoyn7Lqfb9nI3YX%2BreQ9ThS3pcWhcvazMBWSE%2FbgaQ%2FF8P8AJlrrDvunvmryB9buFvzAtnrkQD84z%2B6mKHkGRtu%2F82HWnO%2BoadLpU5aC4ZeUL9Gil%2B0jKR0aOYZOLO80jzho0d3Zv6kMn2WFPUhlGxVh%2By6H7WQWaO80rV1hvwBMjcfUAoskTbLIP%2BNsIr5oSu10tfOt7Ikt4th5ijQC6hkSsdz6fwfWIiCCr7UmTj%2Fl5JG%2FKTSdTjg%2FxDILh4UCUgHD7P8Axafj45GPMdkYtRkvbWf6jewEXNhcr9ppT9pEVatJWnxJx%2BznRPIfmz%2FFujfW5Y%2FSvLZ%2Fq94gBCmQCvNQfiVX%2B1xb7OA2NleaX%2Fkr%2FA19Jb2rO%2BlXbc7UvuFbuvL%2Bb%2FiWC7M7HOuarpdrq9jLY3i8o5Bse6t2df8AKXOP6jbaj5dvpLK5USBd0fcB07Ov8cMT3qkP5l6trkWp2kNi8sVr6CShoyVDyH7RJHXj8OQpfNfmCN1%2BsXcsnBeCrOfUAUdFHP4uP052ny%2Fq2g6veR6T5hgX94Almsp%2Fdsw%2F3W%2F%2BU37GSHUfyp8n6hUpavZse8DkD%2FgH5p%2BGCXNeTwM%2BbzeWxtr%2B3SVHFGMZKMP8oBqr%2FwANh9qv5gpr3kVfLV9zk1O3uIjFOwrzt4w1GZhUeqn2P8rJD5i%2FJJrK2lvNKufrSx%2FEYCnCXiOtCpKPx%2F1M503lq7tpDxDNUUUGlPwyJtWQflfpMWseaFtLgssZtZnDJ1VhxCn3651e38qanp%2Bs2ZX95brKG%2BtR7UVfio6%2Fs16YS%2Fk3pGmWxvNR%2BspJqfEW7WnR4kryLFW3PqN%2FL%2FLnW8I2UsW8x%2BVo71n1LT0CXp3mjGwlp3%2F4yD%2Fhsgl9oyXUaxX1u8LoCY2dStV%2FaG%2Fgc7JTEbiztrr0zcRrIYmDxlhWjDJCXQoeVeW9Rv8Ay1PKL25kuNO9ELEo%2BIjgaoKk%2FAqJyzqtrdQXkCXNs3qQyqGjcdCCK7ZFPMPl1Yg95aLWA7zQjfjXqw%2FycB6JrNzY3BW7uAbARKgUqSQVIC8KfCq8K8vhxq9wlntK4DvtJ07UgBfW6TU6FhvTwqN8FRyRyoHiYOjCoZTUEHH5FDC9Y%2FL6wuSZ9Ic2M3X0tzEfo6p%2FscL9B%2FLy8XVJNS8y3Yuo41aKz0%2BEkQrGwoWlO3N2zomVTDZV4l5n8s3Plq94oS%2BnTk%2FVZj27%2Bk5%2FnX%2FhsMNI893Wj2ht2thNVSEp8PGSlBK%2F%2BSf286nqOnWmqWcllexiSGQbg9QezKf2WGco13yhdaVMUT95A39zL0DDwPg%2BIZc3pPlzU5dStGa4IaeNgGZaAFWHJWoMOc5v5E1B7Wf6tcAoD%2B5PLb3jP0fYzo4xIYrZIo5UaOVQ6MKMrCoIPtidrZ29lAttaoI4UrxQdBU1OL5sCsO8%2FwD5e6V5708RXNINQgB%2Bp3oFStf2JAKc4m%2F4XOIWX5R%2FmVoOpummwIySAxNMssZhZG2q3Mqen80eeoKZqYq8l8h%2Fk%2FceW9Qt9Z1DU3W4gPJLS0JCEGvwTytT1U3%2Bx6arnWs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F1%2B%2F5s2bFXZs2bFXZs2bFXZs2bFXUzZs2KuzZs2KoXUjILG49E0k4EKetK43TYkhsoQp5EqGZvEnvgp1DKVbdW2I9jhDdaDqT%2FuLLWJbOzP8AulEVnAPVVkb4hiqB8wWUXmS%2BXTYWQi3ikZphuUlqOKmn7P8ANnOtRsiPW0TWUKqD9ofajYfZkQ%2B3%2FDLnYtH0Wy0W3aC0BJc8pJHPJ2J8ThV5u8tJrdoZrdQL6EH0z0Lj%2BQ%2F8a4bTbxXQPMGq%2Fl9r7mSs9jcUN3Cv2Zo%2B1xD4Sp%2FzZnaNYhtfNmgRaho7JcMwE1pKCASP246%2Fsn%2BZf58gsugWWtaPFp1xRL21qFkFCyP3U96YR%2BUfMt7%2BX%2BqvpmqEtpUsnGeOtQjE0FxD%2FwAzUxOy%2B5kHmGCOa1s7%2BVeEsFYpHI3SvwyBvDi647RtH1by3qEXmPT5VlgnWmo2C1Amj6rIrH4RMnVcCz3FvJ5x1pIqX2h30cVy3ouv2nQEeka9XZW5ZJNPult7dbZpTLasP9HlYUalP7uVf2JlH2v%2BEw891ZzY3tvqNtHdWz84pBUHoQe6sP2WX9rC7zJoEOu2Xp7LdRVa3lPY90b%2FACHwi0IahBqtdOo9hKf9LjY0Vf8ALU%2F78ybZFD591jS3R3gnRo5Ymp4MjA9snHkr8weRi0LzJII7pQEtdQc0SYdFWQ%2Fsy%2F5X7eH%2FAJw8uLqMDX9qg%2BtRL%2B8Uf7sQf8bLnJbuyjcNFKnND1U%2Fw8Dh5pfQo3Gc487eVFhMmq2KfuHNbmNR%2Fdsf92KP5G%2Fa%2FlyPeXPM%2Fmfy2Y4pmk1PRqfBBKpNwiDr6E3%2B7OH8j51%2B1ubXU7JLiKklvcJWjDqrDdWH%2FEsV5PntoFiuUuQOFxFvHKpKsPpWnLJZ5b8w65p1xEguXuIp3q8d07P1%2FZVm%2Bx%2Fkccbr%2Bhm2125sbPggX95AZq8FRhy3p%2FL8Srk181aDHqempqtvRLu2hDngPheMDmV%2F2P2ozjsrKLW5ju4Eni%2By4rQ9Qe4OL5D%2FACp5hgu7iOwkkUXFxD6yx9DWM8HNMmGJFFDRFRQioPUHIhrmgrAXubdK2z19WOleFepH%2BRkwymCkUIqD1BxBpWIaNq09o31WURrZoiem32ePEheCIB8VV%2BLJcGB3BBHtka1LQXVne0XnC9eUQ%2B0tevHxXA2lxazHfW620rx2atW4gkSqFOPCgdvjDClVwkA7hWYZswzZFXYnNBFPG0UyCSNvtKwqDimbFWE6voE1hIbu0Be3BrQVLIP8rxXJRo92b3T4Z2%2B1Ti3zG1cGkAih3B7ZSRpGvCNQqjsooN8NquzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Dv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxViPmbyo91cfpvQiINVT%2B%2Bh6RXSD9iXwl%2F33N%2FwWQzW9AXXo%2FXaFg7L%2B%2BhK0mjdBuafzACjrnYcDTWNrPKk8kYMsZDI42NR40w3tRW3z1p2l6ho%2BotLAfXVE5OgDVljA%2BLj%2FxZGv7OS2BbeaRbscpI5YuLQq3ETIfiQcv2ZVP90%2F8AsMk3mi1FjqBnt0CpcIHIUU%2BNT8RFP5tuWRDTFEulwPaP9YjVSfVjBIFGPM%2F7BvHCOSXqXlu6trnTI1t7Y2Zj%2BGW1YhmQ%2BJcfb5fzYcZBPKl1I7GRXHKGi3AY%2FajPRvdsnQNd8BFFDjnL%2FPWhJaXguIKRw33KngklPi%2F2Pxcs6jkY892Ul3onqwoZJLWRZeAHIlT8D7fJsAVBaLpUeueS9PtriYPcWykQXkfZ4yVDD%2FJP2WwX5X1NJ2NrQIGXkoXpzQ8JP65GPJfmOTR5G0zXLmGCzlYmzhZPSeE05ceP7UTjfliOhagkWs3CW0gkUXbPZjoZVkY8kQHr8OSHUJZD540vmYtVRBIAvoTo260JrGzU7cvhzaJ5jgm0t9O1u7giu%2FRdY%2BJ48oyCg%2Fd9QyfZ%2FwArJhPBFcwvbzqHikBV0PQg9sgt%2FwCSLpJy9pxniPRiQsgH8rfzYB5ql%2Fkq1hXU4ZigNwjsizftemU3Uf5Jzp%2BRXyloF%2Fpj3FzqYiR3YraxREsyx%2FzTOaL6j%2Fyp8CZKsSUOzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Hv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVg35iPrMEFld6XbR3CRM%2Fro1fUIIHwx%2Fs4U%2FlrqOkz3c1lYQmENFJI8DCgRzIDIg5b1JavTOiajZLf2cls1KsKofBh9k5ydpJPL%2FmzT9ZcBIWY2t5sFoD8Ls5C1%2FwCDkyQ5KyjWdLGi6ml3brSyvKxuo6I58P8AJPVclOiXZurPi5rLAfTf5fsn7sE3drBqFq9vLR4pV2I7dwy%2B%2BF2j6Xf2F5dS3EqNbyhViVa8iV%2Fbfag6%2FZXBdj3KnWURXLzYFYV5n8n3us6ut7btEITGsbc6hl418B8WFd75Ym8svHqVqPrQiCsJSPiikH2jQfsNnScayhwVYBlOxB3BGG1Sby7rf6YgZ5KCZftIBSmHeFllodlp95LeWqlDMKGIfYB7kDDPE%2BSuzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F%2F0u%2F5s2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZFfM%2BipLW%2BSJZAf71CtaMPsygf8SyVZRAIIO4PbCDW6pP5YvDd6Wiu1Zbc%2Bi%2B9Tt9mv%2Bxw5xG3tbe1Vlt41jDHkwUUqfE4tgPNXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Pv%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV%2F%2FZ
+ );
+ background-position:center center;
+ border:1px solid #00aa00;
+}
+
+.yui-skin-sam .yui-h-slider {
+ background: url(bg-h.gif) no-repeat 5px 0;
+ height: 28px;
+ width: 228px;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-singlequotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-singlequotes.css
new file mode 100644
index 0000000..0e8c647
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-singlequotes.css
@@ -0,0 +1,23 @@
+.yui3-skin-night .yui3-dial-ring-vml,
+.yui3-skin-night .yui3-dial-center-button-vml,
+.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night .yui3-dial-marker-vml,
+.yui3-skin-night .yui3-dial-handle-vml {
+ background: none;
+ opacity:1;
+}
+
+div.base64-singlequotes {
+ width:100px;
+ height:100px;
+ background-image:url('data:image/jpeg;base64,%2F9j%2F4AAQSkZJRgABAgEAZABkAAD%2F4RfJRXhpZgAATU0AKgAAAAgABwESAAMAAAABAAEAAAEaAAUAAAABAAAAYgEbAAUAAAABAAAAagEoAAMAAAABAAIAAAExAAIAAAAeAAAAcgEyAAIAAAAUAAAAkIdpAAQAAAABAAAApAAAANAAD0JAAAAnEAAPQkAAACcQQWRvYmUgUGhvdG9zaG9wIENTMiBNYWNpbnRvc2gAMjAwODowNzoxOSAxNDo1ODowNQAAA6ABAAMAAAAB%2F%2F8AAKACAAQAAAABAAABwqADAAQAAAABAAABRQAAAAAAAAAGAQMAAwAAAAEABgAAARoABQAAAAEAAAEeARsABQAAAAEAAAEmASgAAwAAAAEAAgAAAgEABAAAAAEAAAEuAgIABAAAAAEAABaTAAAAAAAAAEgAAAABAAAASAAAAAH%2F2P%2FgABBKRklGAAECAABIAEgAAP%2FtAAxBZG9iZV9DTQAC%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgAdACgAwEiAAIRAQMRAf%2FdAAQACv%2FEAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5%2FcRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14%2FNGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x%2F%2FaAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkklKSSSSUs4uDSWiXRoOJKFi3Ovx2Wvbse4e5gMwRo5soypdOyN9mTSRHpWvj4Oc4%2FwDVf9WkpupJJJKUkkkkpSSSSSlJJJJKUkkkkp%2F%2F0PVUklCqxttbbG%2FReA4fApKZpJJJKUo2WNrrdY8w1gLnHyAlVOsWvowXZDZ%2FQOZa8D9xrmm3%2FNr3PUswm%2FpmQGamyl4bHiWuhJTYqsFtTLBw9od94U1Q6FkfaOk4tszuqYfwV9JSll1%2FoOt2sOguDXgeTm7f%2FPmN%2FwCCLUWZ1VhrysbKA%2Bjua7zgtuZ%2F1FqIUXTSQcvKZi47sh7XOY0tBDYJhzms3akfR3blVd13prMtuI%2Bwse%2F6L3Ahm7n0%2FU%2Bi2zafzkFOgq9%2Bdj0ZFOM4k3ZDtrGNEnhzt7v3WbWPU8bJpyavVpduZuc2eNWONb2%2F2XtXOY2VU7rA6hnO9RuJS%2Br1hO1lguGJbuYz2extvv3fzLPU%2FwCESU9QkkkkpSSSSSlJJJJKf%2F%2FR9VWf0iwiu3Ff9LGsewT%2B6D7P%2FAyxy0FmunH6xPDMpgd%2FbZFT%2FwDoOx%2F%2B20Qp0lC02CtxqALwDtB4J8FNJBTVovx%2Bo4jvbLLGlltTuRMssrf%2FANJiz%2BhZDqMO%2FEyCX2dOc6t%2Bkuc1gmt%2B3%2FhaPTeoZ5s6R1IZrBGDlkNvI%2BjXcYYyx%2F7tWV9B%2FwDw%2FwDwlyD1LqWH0jq2N1O55rxOogY1rwC4C9uuP6mzdt9Wl1v6T%2Bb%2FAFdFS%2F1Myq%2F2VThusa%2B2tst2k6sPuY73Brm%2Fo3Vv2fy%2F3F0S4TAzq%2Bm%2FWDquKGnbhWOya62DUUlrcmyulktZ6f2ey19Wz8%2F2Ls2Z%2BFYx1jL6yxgBe%2FcIAI3CXfNIqZX3ursqqrZ6j7TqJgNY2PUsPP0dypfWJ%2Fo9NOT2xrarHTxs3tZkf%2By77VR6v9bejdNsbkb3Zbqm2sfVjgOOhrdZFljqsffXs%2FmvV9V%2F%2BDXHdZ%2BuvU8zA6i%2Bj02Y1zawaZLt2LY21tltb7XOb6j6%2FwDR1V%2FzV36v6rPVYFU%2BiCs5PS7cd43O2WUOB77d1X%2FT27lwvVnNyKK8d15q6hij207o9dg3DHdW9m9zLv8AQ%2F4Wu71K%2FTtr9aqzJ%2BuHV8tmR0zNoyLvsXU8Nr7cdtjmtN1J9K%2B2podsbk1%2Fo%2F8A0YsnG6te%2BnLZbdXXY6pttADNwucwmhv2cWbv0tnr%2FpKnfpKbKf8AtsqD1DvrjnfV70cKlldgzgbqjf7QHB3p2sG0sb6lv0%2FfZ6TEcZg630xz2vezK6jVbfhVtf6biQ%2BxltmNY7a2z9Js3Vu%2FwayvrHh1%2BhhdKv3XubjBhY9wDbHtPpOdXkOH6t1Dd%2FRsl%2F6C%2FwDomV7Fg9Wc%2FF%2Bq3RL6biben5WVjh4lljdxbexltf06La9vvp%2FM%2FwAFZ%2FhEuqn0r6lfXM9WYzpvVoo6wxvcbBcGj9Ltr09LLoj9bxf%2BvU%2Fof5mz9avrJd0%2B2jBwHAZTrcd17iA7bVZa2nY0H%2FCXw9v%2FAAdf%2FWl5zidQZ9ZcY3l3oddwg2z1mHZ6zWfQv3t2%2Bnk0%2FwCn%2FwDRf8xf6Df1DqvXGZ%2Be5tzsi7Gd6lm2kPsqNbqqOG1%2F4Cuxnpt%2FS7%2F9I9ALjR1Gh7f96%2BuJJpA1KZj2WNDmODmnhwMhJaySSSSU%2FwD%2F0vVVn9airFGYSGjEcLXuOkV%2Fzd5J%2FdZU%2FwBX%2Fra0EHM9D7Jf9pE4%2Fpv9YHX2bT6mn9RIKcE9U6lgXnJDv2l0jN%2FS497S39C530sOyxn%2BBc%2F%2Bh5P83%2F2kyfS%2FR5NlPrv16uwczExsPHFozLBRWHz6rriWM9Ouv6Hs9T3vseue6B9buoZF5xBU84BDC%2BtoZYW1PczG%2B02Gxm71Gb2XP2fod7P5mtct167q%2FT87Gdfk%2FbscWHI6V1NrQNGu3O2NZ6fp5FN9dTcrH3epR6f9RKwRYXzhKEuGYo%2FxfSMvM6lZlF%2FVfSobU11Q9MGyqLfa%2BrP9PJsr9Kz09n6bGq%2F7dWN1z9VxC3KfZT0%2B%2BPUyGg5NIaPdU7ezZe7KxPR%2FR5Gyr1sX9Db6%2FwDguZx%2Bv352be4WNwft%2B9tb2n21mza%2F07Xn2%2Fp7qmVep6dbP0vqfolqZD7mY91eDmXh9pBAZDGjT9awvb%2Bkp3W%2Fp2Mdkfpav1b%2BXUb0WulTeP23h5Di3JL3UYWTYzlzbKn1sc5rN7baM3FZ9pw8xrvSvr%2FQf0im6uvH6vY7G6hfS2mx1WFYaq7bnk%2Bo2r0rKPTa7bustxX20%2Bz%2Blf4RW%2FqPXeM403s%2FQ9LpdbQ4v97Wl4DcW1nud6PqfrH2e9nszMavNx%2Fs9%2F2hA6i5r77HZLH24Tn1W4%2BUwj2Pva3Jdj5bfzaHb8n7Fk%2F4P9YxP0tX8wulqaWfb1CzZ6GaM30622WDD%2FSV1mp3sfY6tjWOsY1tf8776a%2FTQ7s27qFNVIrqwAfUsbZRXt9S0N9Ky1tX83%2Bgre%2F1sej%2FAE1lzKltdDtbi9ZJsqqbTaBXdS0TbW68PycUxNj8qrIbR%2FpPU%2FSb6%2FTyv6VWf0qvOrzmsYasnGzHmk7gx1Za6K2XR7sd%2B5v6K79JXi3bPU%2FV8i71RRU5%2FWaLMv6kYj7SGX9L6g%2BqK%2Fosrymeux1cf4B17fYsrpuPmNxftz63Pcwl9DWDQ2sIqZkNJ%2FNZe6luR6f%2FAAX%2FAAS1f2pXX0vq%2BJln7LfkVVta3ZAfl4929myn%2FA76rLq86r%2Bbo%2F4qyhVruoZfSek4ldmM12Pe227D9XQBtvptu3%2B7d6Vr66Xf2PU%2FwiSnsuqnDyLMfFtMZORj%2BrXSPeHFseo2l7g31La%2FV%2Bh%2F2oq%2FwfqfpFznVcd9uDZivaxzDZXa1zztZaXB1LW%2Bv%2Fgb%2FZVXi5tv83%2FRsj9AsLqfXv2j0%2FpXqPFedgNurfa10F3uqsx8lv8Ao3Obvrf%2FAMT6n%2BFQquq59%2FURec1zb7CHXMc8htmw7n47v8BtucPUb6v6P9Ld69iNoS9H6Vk0Zzcpj3tqqeW1AAtuc%2F8Am7Meyhv6WvZ%2FNZX%2FAIEugzuk14eLiN69fbi49u6wgBjyWNb6dP6IOa52V6vt247P0dD%2FAFP0ajjdc6kBeekYQd1DIs2tsZVZbdVXt9tYqsG9%2B3%2FTPZ%2Bl%2FwBCsajpXV%2BtX2Zwo%2Fal7Wuvv9S0Mea2%2FT2%2BvZ7m1e1j6GV76PZ%2FpK0NE7avpH1Z69ndU6Ti4mP6mVZktBdbkP3uqbWTRkjKuYGb9t1e6v2776rP9Iuyw8VuJjtoaS8tkueeXOcdz3%2F2nLyb6vdZv6DjDKwmVt3lzbsZz3VsZcHluTgX499hfRYxuzJwn%2FznsyKrLLv8H2vT%2Fr9hODK%2BsM%2FZuSWkvrtFjC1wLmvr%2FWKqW%2Fm%2BzbZ%2BkRR4vVpKn03q%2FTeq47Mnp%2BQy%2Bt7WvG0%2B4Bw3N9Ss%2FpK%2F%2BuNVxBT%2FAP%2FT9VTOa17SxwDmuBDmnUEHsU6SSnxf6x9CzPqt1ECix7GMeben5Q0caneyylzvouto3MruZ%2Fhav0np%2FpFUryaMjFvrzps6dkPbZmUsHvx7zFber4f7rbLP6Wz%2FAEln%2BivYvY%2Bu9L6f1Xpl2H1GG0OG71SQ01uH0b2Pd9B7P%2FUb%2FwBGvH8vpF3T7%2FQpcH5NIea7az6leXSd2%2BzHjdW70qHbMnE%2FwlSZrE2NuzfjKHMY%2BGfpzR2n%2FL9H95wM%2FByOk5hxsgiyuwb6rm613VH6N1X%2FAKMrW10jqbrmHDyHl8MhjY3G6sHd6PO318dv6eiz07fW9P0v%2BOHiPxc6n9j552Ydh3YmVy7FtP5%2Bvvfiu%2Fw%2F%2FB%2Fpf5zehYv1a6pVk5WLnh%2BJZhML6rmiWvsBY6t1Fn0n1NY77Tvp%2FSf8WnijqNWnOEscjGQ4ZB7Oig0fV7Lf01rr8rqR2tez3XPbBx67XsYzayxjbMl9m38%2F9J%2Bl%2FS%2BpzrvUxMWqvqNVuJksx3402zW5oosbdScig725OHd9qY6v%2Bc2ZOLT6Nn88y3e6X1uyk9NexznYd%2BPdi2Mc1lTxl4ztznWu3bKfWZZXbs9T06f0ypdY6J1Hr%2FVH9Wrtpsx6mMqFDS%2F1WisF30XNa5%2B577bf0eyz%2FRV%2BqnHwW1RotDF6xay49Tviks9OHNBAc9g2sfc1m7Zu2%2FoG%2FQxv3PST9Lw2dTblM%2B1W1sdDixoM2vu3f0936Ot3pOZsurp%2FQ5H%2Bj%2FwaJj4GXf052ZjepRjbmOrywNzNjHulh9Meg5zN%2B1lrn%2F4R9fp%2FpFYxcHD6ey6nItdSGAOtdlFwhlh%2FRuHpN3Ppbv8A5xnqemgFOZ1%2FDyMW77T1DIOQy4vra91bqC00en%2BiYx%2F06Nrqnev%2FAIf%2FAEj1WxaG2sxKOo9Mu6iK32UYeOLHML3vLrNrrmu3%2Blv%2FAPRi1cvpl1PUqW3Nfh5VJ34%2BNmO9XEurHu%2FV7t1jGMsYf0noP9n%2FAANqv9Q6W84w630hn2cuFd1jcYGysjS6qzLxmiu3Fyadv896NX%2Bl%2B2eqhSSBQ1u%2Fwed6z9X%2BrtFJH1dZj1agENsqZuIB9EPsvbkW7Wj6eS%2F6fq%2Bj%2BjWOcbNw8hnqdNxq3tizZYXOa4Ty7fkWbmNd%2FObfof4RdpT1fqHUs1rc%2FLfktyRU2vGa4bSHNePtFL3el6VmLlVejZ7f0m%2F1cj%2BZ%2B0WbvSfqn0%2Fq1eTjdRIdlVspsqcxwBqc8PbfW%2BrX376%2FTtf%2FAKH0bcS6v2WJXqulj4YCXEDZqurxn1dxXdRosuw78hnXcR5dSWu22OrY2bqsdn03ZFTt932Oz2ZWL6lVLPWoXS19Hzup9Pq%2BsfTMYty8kn7ZRXDCy5hdVb1DEre%2F9NU79LvxHbLclj7Kf5rIspXE5mPm9J6q%2FLqa82YrmvfVJHqUsd%2BgyqLatln0a%2F03pP8AWxLmerV%2B5j%2Bz%2FU7qvR%2Bp9Cot6QNlLJbZQ5xdZXb9O1l73S99jnu3%2Bq7%2Be%2FnEmN57qv1X6b9c%2Fq99oxWNx%2BuYxcyx7g9rjc2PXxM5t36x6djmt9H1v02L%2Bi9L%2FCVWcz9VPr51npPWX9H%2Bsxuy8bItFNoyDvtot9tIcN%2F06He316P%2FAEKo%2FwAJ9p9hbXW17ntaA98b3AQXQIbuP5y43%2FGB9Q2dfp%2FaXTWtZ1iloEGGjIY3%2FAPe7%2BayG%2F8AafJ%2F6zb%2Bi%2FSUJT2TK66xtraGAAABoAEAbW8fyVJecfUbqP8AjHPV31dXxMjJ6c%2Fay27LaMd1JaNgsoDxX9o9rf0zaW2%2Br%2FPep%2FpPR0lP%2F9T1VJJJJSDNL%2Fsr9geXGABW1rnakD6F36P%2BsuAwumV%2FWXNrxHvcymqh2S7IqLnRa%2B7Jfj2UPcGtqdvyfVspZ7K%2FQ%2By1%2FoaV6Ffj05FZqvYLKyQS13Eg7m%2F9JKimvHprorEV1NDGDwDRtakkEg2NCNnxDqdGb0Lru3qFDHX41rLTWGxVeyR7626tdVmNa%2F1P3LPWr9i2cmzrpY5tdB6gzpL7Kq7WGXPqqf6D8HIc1gZ9upo%2F7T%2FzmVX%2FADXqr0brOF0%2B4135bWVFgc05kD1WMP06ari17q25P81Z%2B%2FX%2Bi%2BnauTysfqnQeoM6h06l91eW2H4jwf1uhgc70Lq3DdV1XGxm78d7%2FwCfo%2FQXfpK7GIRFX4s2fN7vAeGpRjwk93IyOj5VDnN6U5%2FUMa%2FflYlLGuLm%2BqxnpfadrG1tdk302Ufav%2Bs2en%2FNrQ%2Brd9%2BNlNdfS%2FDuDXMy8e7R1bmjfJ%2FkNhl9Nv59KtOeLbMDO6FktJte%2B%2FCstLh%2Bhcaxm4mY5oc5tLMr08XK3st9H7TRd%2FSqPWW11fA%2Fa%2BOOpdOc6jqeMNllYjcdvudjWt9zfVr3b8d%2F%2Fom%2F1E%2B2F5jpf1u6Dj9RyLKcqu3peaf1rF1aGh%2Bhym0XMr91TfZksr%2Fncb%2FSWY9bFTwftfUOpdQwRZvxsDLOLh2uBexrLH21YzLLAHv9K3ZX%2FwAH%2FOLUw%2BnfU%2F6xVDB6lg4%2FTutEFrLaG%2BgLXD%2FC42zY2x%2F%2Blw7f01f8ur9On%2BroyPqllZfThhMsqBZblWhxFjahFLLWE%2B27HZv3sbsr9H9N63%2FBjW1L9J9PDa%2F6udcx%2FU6Ta7bSH6uxLT7W0Oc0%2Fo6HT6mFl1fzX%2BnV9n1R6v07bbhZv2za4w149K0Vk6enkMeWPu2fzn8xVb%2Fwf0F1GVh4mdSW3MD2vbAfA3AH9xyoYmRZ0o%2FY894%2BztBNGS7QbR%2Ba8n6Oz%2FwH%2FttLyRbyPUcXMqzznY2Nfh9TrbZbkkVyxzQBvzm%2Bm04vr7f0d%2Fo2frX%2BD%2FTV2rc%2BrmH0bqHT8fcW%2Fb2Ned1FrmWsaXOZLfRLH01W%2Bpu9L%2BaXUiCJHBWGegM6d1IdU6WzbJi%2FFbAaWuPvdV%2FV%2FnPTStN6U4%2FWfqPk5jhRj2BorDrMXLOjqnge2m1rNrnV3e1lnpf8b%2FO1Urm%2FqLlZH1a%2BseT03IwLa7s97K8nFrY%2Bx9fp%2Bp6OfjupZ6VvT3%2BrY3I%2F0P6Oyn9F%2BjXrKSCFJJJJKUkkkkp%2F%2F9X1VJJJJSkkkklKQM3Dpzcd2PbuAdBa9hLXscNWWVPb9CxjkdJJTxHVfq4Ol5bc%2Bq55dlvLLq2Dax1lprY7IFbP5i63b77Kf9H%2Bk%2FQrpPq%2FcLMAVlgrupcWXM4duBj9I0y7f%2F1f00vrB0hnVunPo%2BjkMmzFtGjq7QC1tlb9Njvd%2FqxS6dWMj0upH9FfbXsyqwIabGwx30%2Ff%2BifW9n9RHopwvrBh4eF1V%2BXkU%2FqmZQQLSB6deYxwux7HAfpGvs9L%2FB%2F8J6ivWVZ2dj4vV8FgfbkY%2Fo5WO8hosrdr3%2Bi6t7nrefWx8b2h20hzZEwR9Fw%2FlIOLg4%2BI652OCxt7vUfWD7Q4%2FScxv5m%2F89K1IujYj8PpWLjWDa%2BusB7SZIcfc5u6XfnFW31seIe0OEzBE6%2FNSSQUpJJJJSkkkklKSSSSUpJJJJT%2FAP%2FW9VSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2F%2FZ%2F%2B01IlBob3Rvc2hvcCAzLjAAOEJJTQQlAAAAAAAQAAAAAAAAAAAAAAAAAAAAADhCSU0D6gAAAAAYEDw%2FeG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8%2BCjwhRE9DVFlQRSBwbGlzdCBQVUJMSUMgIi0vL0FwcGxlLy9EVEQgUExJU1QgMS4wLy9FTiIgImh0dHA6Ly93d3cuYXBwbGUuY29tL0RURHMvUHJvcGVydHlMaXN0LTEuMC5kdGQiPgo8cGxpc3QgdmVyc2lvbj0iMS4wIj4KPGRpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNSG9yaXpvbnRhbFJlczwva2V5PgoJPGRpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1Ib3Jpem9udGFsUmVzPC9rZXk%2BCgkJCQk8cmVhbD43MjwvcmVhbD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk%2BCgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTU9yaWVudGF0aW9uPC9rZXk%2BCgkJCQk8aW50ZWdlcj4xPC9pbnRlZ2VyPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNU2NhbGluZzwva2V5PgoJPGRpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJPGFycmF5PgoJCQk8ZGljdD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1TY2FsaW5nPC9rZXk%2BCgkJCQk8cmVhbD4xPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxSZXM8L2tleT4KCTxkaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk%2BCgkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCTxhcnJheT4KCQkJPGRpY3Q%2BCgkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxSZXM8L2tleT4KCQkJCTxyZWFsPjcyPC9yZWFsPgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJPC9kaWN0PgoJCTwvYXJyYXk%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNVmVydGljYWxTY2FsaW5nPC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQk8YXJyYXk%2BCgkJCTxkaWN0PgoJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFnZUZvcm1hdC5QTVZlcnRpY2FsU2NhbGluZzwva2V5PgoJCQkJPHJlYWw%2BMTwvcmVhbD4KCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCTwvZGljdD4KCQk8L2FycmF5PgoJPC9kaWN0PgoJPGtleT5jb20uYXBwbGUucHJpbnQuc3ViVGlja2V0LnBhcGVyX2luZm9fdGlja2V0PC9rZXk%2BCgk8ZGljdD4KCQk8a2V5PlBNUFBEUGFwZXJDb2RlTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PlBNUFBEUGFwZXJDb2RlTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc%2BTGV0dGVyPC9zdHJpbmc%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BUE1UaW9nYVBhcGVyTmFtZTwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PlBNVGlvZ2FQYXBlck5hbWU8L2tleT4KCQkJCQk8c3RyaW5nPm5hLWxldHRlcjwvc3RyaW5nPgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BMC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw%2BCgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTc2PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXQuUE1BZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCTxkaWN0PgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuY3JlYXRvcjwva2V5PgoJCQk8c3RyaW5nPmNvbS5hcHBsZS5qb2J0aWNrZXQ8L3N0cmluZz4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0Lml0ZW1BcnJheTwva2V5PgoJCQk8YXJyYXk%2BCgkJCQk8ZGljdD4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYWdlRm9ybWF0LlBNQWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQkJCQk8YXJyYXk%2BCgkJCQkJCTxyZWFsPi0xODwvcmVhbD4KCQkJCQkJPHJlYWw%2BLTE4PC9yZWFsPgoJCQkJCQk8cmVhbD43NzQ8L3JlYWw%2BCgkJCQkJCTxyZWFsPjU5NDwvcmVhbD4KCQkJCQk8L2FycmF5PgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5zdGF0ZUZsYWc8L2tleT4KCQkJCQk8aW50ZWdlcj4wPC9pbnRlZ2VyPgoJCQkJPC9kaWN0PgoJCQk8L2FycmF5PgoJCTwvZGljdD4KCQk8a2V5PmNvbS5hcHBsZS5wcmludC5QYXBlckluZm8uUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNUGFwZXJOYW1lPC9rZXk%2BCgkJCQkJPHN0cmluZz5uYS1sZXR0ZXI8L3N0cmluZz4KCQkJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuc3RhdGVGbGFnPC9rZXk%2BCgkJCQkJPGludGVnZXI%2BMDwvaW50ZWdlcj4KCQkJCTwvZGljdD4KCQkJPC9hcnJheT4KCQk8L2RpY3Q%2BCgkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhZ2VSZWN0PC9rZXk%2BCgkJPGRpY3Q%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5jcmVhdG9yPC9rZXk%2BCgkJCTxzdHJpbmc%2BY29tLmFwcGxlLmpvYnRpY2tldDwvc3RyaW5nPgoJCQk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuaXRlbUFycmF5PC9rZXk%2BCgkJCTxhcnJheT4KCQkJCTxkaWN0PgoJCQkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYWdlUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BMC4wPC9yZWFsPgoJCQkJCQk8cmVhbD4wLjA8L3JlYWw%2BCgkJCQkJCTxyZWFsPjczNDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTc2PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5QTVVuYWRqdXN0ZWRQYXBlclJlY3Q8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLlBNVW5hZGp1c3RlZFBhcGVyUmVjdDwva2V5PgoJCQkJCTxhcnJheT4KCQkJCQkJPHJlYWw%2BLTE4PC9yZWFsPgoJCQkJCQk8cmVhbD4tMTg8L3JlYWw%2BCgkJCQkJCTxyZWFsPjc3NDwvcmVhbD4KCQkJCQkJPHJlYWw%2BNTk0PC9yZWFsPgoJCQkJCTwvYXJyYXk%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LlBhcGVySW5mby5wcGQuUE1QYXBlck5hbWU8L2tleT4KCQk8ZGljdD4KCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LmNyZWF0b3I8L2tleT4KCQkJPHN0cmluZz5jb20uYXBwbGUuam9idGlja2V0PC9zdHJpbmc%2BCgkJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5pdGVtQXJyYXk8L2tleT4KCQkJPGFycmF5PgoJCQkJPGRpY3Q%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvLnBwZC5QTVBhcGVyTmFtZTwva2V5PgoJCQkJCTxzdHJpbmc%2BVVMgTGV0dGVyPC9zdHJpbmc%2BCgkJCQkJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnN0YXRlRmxhZzwva2V5PgoJCQkJCTxpbnRlZ2VyPjA8L2ludGVnZXI%2BCgkJCQk8L2RpY3Q%2BCgkJCTwvYXJyYXk%2BCgkJPC9kaWN0PgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC5BUElWZXJzaW9uPC9rZXk%2BCgkJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJCTxrZXk%2BY29tLmFwcGxlLnByaW50LnRpY2tldC50eXBlPC9rZXk%2BCgkJPHN0cmluZz5jb20uYXBwbGUucHJpbnQuUGFwZXJJbmZvVGlja2V0PC9zdHJpbmc%2BCgk8L2RpY3Q%2BCgk8a2V5PmNvbS5hcHBsZS5wcmludC50aWNrZXQuQVBJVmVyc2lvbjwva2V5PgoJPHN0cmluZz4wMC4yMDwvc3RyaW5nPgoJPGtleT5jb20uYXBwbGUucHJpbnQudGlja2V0LnR5cGU8L2tleT4KCTxzdHJpbmc%2BY29tLmFwcGxlLnByaW50LlBhZ2VGb3JtYXRUaWNrZXQ8L3N0cmluZz4KPC9kaWN0Pgo8L3BsaXN0Pgo4QklNA%2BkAAAAAAHgAAwAAAEgASAAAAAAC3gJA%2F%2B7%2F7gMGAlIDZwUoA%2FwAAgAAAEgASAAAAAAC2AIoAAEAAABkAAAAAQADAwMAAAABf%2F8AAQABAAAAAAAAAAAAAAAAaAgAGQGQAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4QklNA%2B0AAAAAABAAZAAAAAEAAQBkAAAAAQABOEJJTQQmAAAAAAAOAAAAAAAAAAAAAD%2BAAAA4QklNBA0AAAAAAAQAAAAeOEJJTQQZAAAAAAAEAAAAHjhCSU0D8wAAAAAACQAAAAAAAAAAAQA4QklNBAoAAAAAAAEAADhCSU0nEAAAAAAACgABAAAAAAAAAAE4QklNA%2FUAAAAAAEgAL2ZmAAEAbGZmAAYAAAAAAAEAL2ZmAAEAoZmaAAYAAAAAAAEAMgAAAAEAWgAAAAYAAAAAAAEANQAAAAEALQAAAAYAAAAAAAE4QklNA%2FgAAAAAAHAAAP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8D6AAAAAD%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FA%2BgAAAAA%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2FwPoAAAAAP%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F%2F8D6AAAOEJJTQQIAAAAAAAQAAAAAQAAAkAAAAJAAAAAADhCSU0EHgAAAAAABAAAAAA4QklNBBoAAAAAA1UAAAAGAAAAAAAAAAAAAAFFAAABwgAAABAAcwB3AGkAcwBzAF8AYQByAG0AeQBfAGsAbgBpAGYAZQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAABwgAAAUUAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAQAAAAAAAG51bGwAAAACAAAABmJvdW5kc09iamMAAAABAAAAAAAAUmN0MQAAAAQAAAAAVG9wIGxvbmcAAAAAAAAAAExlZnRsb25nAAAAAAAAAABCdG9tbG9uZwAAAUUAAAAAUmdodGxvbmcAAAHCAAAABnNsaWNlc1ZsTHMAAAABT2JqYwAAAAEAAAAAAAVzbGljZQAAABIAAAAHc2xpY2VJRGxvbmcAAAAAAAAAB2dyb3VwSURsb25nAAAAAAAAAAZvcmlnaW5lbnVtAAAADEVTbGljZU9yaWdpbgAAAA1hdXRvR2VuZXJhdGVkAAAAAFR5cGVlbnVtAAAACkVTbGljZVR5cGUAAAAASW1nIAAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAAFFAAAAAFJnaHRsb25nAAABwgAAAAN1cmxURVhUAAAAAQAAAAAAAG51bGxURVhUAAAAAQAAAAAAAE1zZ2VURVhUAAAAAQAAAAAABmFsdFRhZ1RFWFQAAAABAAAAAAAOY2VsbFRleHRJc0hUTUxib29sAQAAAAhjZWxsVGV4dFRFWFQAAAABAAAAAAAJaG9yekFsaWduZW51bQAAAA9FU2xpY2VIb3J6QWxpZ24AAAAHZGVmYXVsdAAAAAl2ZXJ0QWxpZ25lbnVtAAAAD0VTbGljZVZlcnRBbGlnbgAAAAdkZWZhdWx0AAAAC2JnQ29sb3JUeXBlZW51bQAAABFFU2xpY2VCR0NvbG9yVHlwZQAAAABOb25lAAAACXRvcE91dHNldGxvbmcAAAAAAAAACmxlZnRPdXRzZXRsb25nAAAAAAAAAAxib3R0b21PdXRzZXRsb25nAAAAAAAAAAtyaWdodE91dHNldGxvbmcAAAAAADhCSU0EKAAAAAAADAAAAAE%2F8AAAAAAAADhCSU0EEQAAAAAAAQEAOEJJTQQUAAAAAAAEAAAAAThCSU0EDAAAAAAWrwAAAAEAAACgAAAAdAAAAeAAANmAAAAWkwAYAAH%2F2P%2FgABBKRklGAAECAABIAEgAAP%2FtAAxBZG9iZV9DTQAC%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQADAgICAkIDAkJDBELCgsRFQ8MDA8VGBMTFRMTGBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAENCwsNDg0QDg4QFA4ODhQUDg4ODhQRDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgAdACgAwEiAAIRAQMRAf%2FdAAQACv%2FEAT8AAAEFAQEBAQEBAAAAAAAAAAMAAQIEBQYHCAkKCwEAAQUBAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAABBAEDAgQCBQcGCAUDDDMBAAIRAwQhEjEFQVFhEyJxgTIGFJGhsUIjJBVSwWIzNHKC0UMHJZJT8OHxY3M1FqKygyZEk1RkRcKjdDYX0lXiZfKzhMPTdePzRieUpIW0lcTU5PSltcXV5fVWZnaGlqa2xtbm9jdHV2d3h5ent8fX5%2FcRAAICAQIEBAMEBQYHBwYFNQEAAhEDITESBEFRYXEiEwUygZEUobFCI8FS0fAzJGLhcoKSQ1MVY3M08SUGFqKygwcmNcLSRJNUoxdkRVU2dGXi8rOEw9N14%2FNGlKSFtJXE1OT0pbXF1eX1VmZ2hpamtsbW5vYnN0dXZ3eHl6e3x%2F%2FaAAwDAQACEQMRAD8A9VSSSSUpJJJJSkkkklKSSSSUs4uDSWiXRoOJKFi3Ovx2Wvbse4e5gMwRo5soypdOyN9mTSRHpWvj4Oc4%2FwDVf9WkpupJJJKUkkkkpSSSSSlJJJJKUkkkkp%2F%2F0PVUklCqxttbbG%2FReA4fApKZpJJJKUo2WNrrdY8w1gLnHyAlVOsWvowXZDZ%2FQOZa8D9xrmm3%2FNr3PUswm%2FpmQGamyl4bHiWuhJTYqsFtTLBw9od94U1Q6FkfaOk4tszuqYfwV9JSll1%2FoOt2sOguDXgeTm7f%2FPmN%2FwCCLUWZ1VhrysbKA%2Bjua7zgtuZ%2F1FqIUXTSQcvKZi47sh7XOY0tBDYJhzms3akfR3blVd13prMtuI%2Bwse%2F6L3Ahm7n0%2FU%2Bi2zafzkFOgq9%2Bdj0ZFOM4k3ZDtrGNEnhzt7v3WbWPU8bJpyavVpduZuc2eNWONb2%2F2XtXOY2VU7rA6hnO9RuJS%2Br1hO1lguGJbuYz2extvv3fzLPU%2FwCESU9QkkkkpSSSSSlJJJJKf%2F%2FR9VWf0iwiu3Ff9LGsewT%2B6D7P%2FAyxy0FmunH6xPDMpgd%2FbZFT%2FwDoOx%2F%2B20Qp0lC02CtxqALwDtB4J8FNJBTVovx%2Bo4jvbLLGlltTuRMssrf%2FANJiz%2BhZDqMO%2FEyCX2dOc6t%2Bkuc1gmt%2B3%2FhaPTeoZ5s6R1IZrBGDlkNvI%2BjXcYYyx%2F7tWV9B%2FwDw%2FwDwlyD1LqWH0jq2N1O55rxOogY1rwC4C9uuP6mzdt9Wl1v6T%2Bb%2FAFdFS%2F1Myq%2F2VThusa%2B2tst2k6sPuY73Brm%2Fo3Vv2fy%2F3F0S4TAzq%2Bm%2FWDquKGnbhWOya62DUUlrcmyulktZ6f2ey19Wz8%2F2Ls2Z%2BFYx1jL6yxgBe%2FcIAI3CXfNIqZX3ursqqrZ6j7TqJgNY2PUsPP0dypfWJ%2Fo9NOT2xrarHTxs3tZkf%2By77VR6v9bejdNsbkb3Zbqm2sfVjgOOhrdZFljqsffXs%2FmvV9V%2F%2BDXHdZ%2BuvU8zA6i%2Bj02Y1zawaZLt2LY21tltb7XOb6j6%2FwDR1V%2FzV36v6rPVYFU%2BiCs5PS7cd43O2WUOB77d1X%2FT27lwvVnNyKK8d15q6hij207o9dg3DHdW9m9zLv8AQ%2F4Wu71K%2FTtr9aqzJ%2BuHV8tmR0zNoyLvsXU8Nr7cdtjmtN1J9K%2B2podsbk1%2Fo%2F8A0YsnG6te%2BnLZbdXXY6pttADNwucwmhv2cWbv0tnr%2FpKnfpKbKf8AtsqD1DvrjnfV70cKlldgzgbqjf7QHB3p2sG0sb6lv0%2FfZ6TEcZg630xz2vezK6jVbfhVtf6biQ%2BxltmNY7a2z9Js3Vu%2FwayvrHh1%2BhhdKv3XubjBhY9wDbHtPpOdXkOH6t1Dd%2FRsl%2F6C%2FwDomV7Fg9Wc%2FF%2Bq3RL6biben5WVjh4lljdxbexltf06La9vvp%2FM%2FwAFZ%2FhEuqn0r6lfXM9WYzpvVoo6wxvcbBcGj9Ltr09LLoj9bxf%2BvU%2Fof5mz9avrJd0%2B2jBwHAZTrcd17iA7bVZa2nY0H%2FCXw9v%2FAAdf%2FWl5zidQZ9ZcY3l3oddwg2z1mHZ6zWfQv3t2%2Bnk0%2FwCn%2FwDRf8xf6Df1DqvXGZ%2Be5tzsi7Gd6lm2kPsqNbqqOG1%2F4Cuxnpt%2FS7%2F9I9ALjR1Gh7f96%2BuJJpA1KZj2WNDmODmnhwMhJaySSSSU%2FwD%2F0vVVn9airFGYSGjEcLXuOkV%2Fzd5J%2FdZU%2FwBX%2Fra0EHM9D7Jf9pE4%2Fpv9YHX2bT6mn9RIKcE9U6lgXnJDv2l0jN%2FS497S39C530sOyxn%2BBc%2F%2Bh5P83%2F2kyfS%2FR5NlPrv16uwczExsPHFozLBRWHz6rriWM9Ouv6Hs9T3vseue6B9buoZF5xBU84BDC%2BtoZYW1PczG%2B02Gxm71Gb2XP2fod7P5mtct167q%2FT87Gdfk%2FbscWHI6V1NrQNGu3O2NZ6fp5FN9dTcrH3epR6f9RKwRYXzhKEuGYo%2FxfSMvM6lZlF%2FVfSobU11Q9MGyqLfa%2BrP9PJsr9Kz09n6bGq%2F7dWN1z9VxC3KfZT0%2B%2BPUyGg5NIaPdU7ezZe7KxPR%2FR5Gyr1sX9Db6%2FwDguZx%2Bv352be4WNwft%2B9tb2n21mza%2F07Xn2%2Fp7qmVep6dbP0vqfolqZD7mY91eDmXh9pBAZDGjT9awvb%2Bkp3W%2Fp2Mdkfpav1b%2BXUb0WulTeP23h5Di3JL3UYWTYzlzbKn1sc5rN7baM3FZ9pw8xrvSvr%2FQf0im6uvH6vY7G6hfS2mx1WFYaq7bnk%2Bo2r0rKPTa7bustxX20%2Bz%2Blf4RW%2FqPXeM403s%2FQ9LpdbQ4v97Wl4DcW1nud6PqfrH2e9nszMavNx%2Fs9%2F2hA6i5r77HZLH24Tn1W4%2BUwj2Pva3Jdj5bfzaHb8n7Fk%2F4P9YxP0tX8wulqaWfb1CzZ6GaM30622WDD%2FSV1mp3sfY6tjWOsY1tf8776a%2FTQ7s27qFNVIrqwAfUsbZRXt9S0N9Ky1tX83%2Bgre%2F1sej%2FAE1lzKltdDtbi9ZJsqqbTaBXdS0TbW68PycUxNj8qrIbR%2FpPU%2FSb6%2FTyv6VWf0qvOrzmsYasnGzHmk7gx1Za6K2XR7sd%2B5v6K79JXi3bPU%2FV8i71RRU5%2FWaLMv6kYj7SGX9L6g%2BqK%2Fosrymeux1cf4B17fYsrpuPmNxftz63Pcwl9DWDQ2sIqZkNJ%2FNZe6luR6f%2FAAX%2FAAS1f2pXX0vq%2BJln7LfkVVta3ZAfl4929myn%2FA76rLq86r%2Bbo%2F4qyhVruoZfSek4ldmM12Pe227D9XQBtvptu3%2B7d6Vr66Xf2PU%2FwiSnsuqnDyLMfFtMZORj%2BrXSPeHFseo2l7g31La%2FV%2Bh%2F2oq%2FwfqfpFznVcd9uDZivaxzDZXa1zztZaXB1LW%2Bv%2Fgb%2FZVXi5tv83%2FRsj9AsLqfXv2j0%2FpXqPFedgNurfa10F3uqsx8lv8Ao3Obvrf%2FAMT6n%2BFQquq59%2FURec1zb7CHXMc8htmw7n47v8BtucPUb6v6P9Ld69iNoS9H6Vk0Zzcpj3tqqeW1AAtuc%2F8Am7Meyhv6WvZ%2FNZX%2FAIEugzuk14eLiN69fbi49u6wgBjyWNb6dP6IOa52V6vt247P0dD%2FAFP0ajjdc6kBeekYQd1DIs2tsZVZbdVXt9tYqsG9%2B3%2FTPZ%2Bl%2FwBCsajpXV%2BtX2Zwo%2Fal7Wuvv9S0Mea2%2FT2%2BvZ7m1e1j6GV76PZ%2FpK0NE7avpH1Z69ndU6Ti4mP6mVZktBdbkP3uqbWTRkjKuYGb9t1e6v2776rP9Iuyw8VuJjtoaS8tkueeXOcdz3%2F2nLyb6vdZv6DjDKwmVt3lzbsZz3VsZcHluTgX499hfRYxuzJwn%2FznsyKrLLv8H2vT%2Fr9hODK%2BsM%2FZuSWkvrtFjC1wLmvr%2FWKqW%2Fm%2BzbZ%2BkRR4vVpKn03q%2FTeq47Mnp%2BQy%2Bt7WvG0%2B4Bw3N9Ss%2FpK%2F%2BuNVxBT%2FAP%2FT9VTOa17SxwDmuBDmnUEHsU6SSnxf6x9CzPqt1ECix7GMeben5Q0caneyylzvouto3MruZ%2Fhav0np%2FpFUryaMjFvrzps6dkPbZmUsHvx7zFber4f7rbLP6Wz%2FAEln%2BivYvY%2Bu9L6f1Xpl2H1GG0OG71SQ01uH0b2Pd9B7P%2FUb%2FwBGvH8vpF3T7%2FQpcH5NIea7az6leXSd2%2BzHjdW70qHbMnE%2FwlSZrE2NuzfjKHMY%2BGfpzR2n%2FL9H95wM%2FByOk5hxsgiyuwb6rm613VH6N1X%2FAKMrW10jqbrmHDyHl8MhjY3G6sHd6PO318dv6eiz07fW9P0v%2BOHiPxc6n9j552Ydh3YmVy7FtP5%2Bvvfiu%2Fw%2F%2FB%2Fpf5zehYv1a6pVk5WLnh%2BJZhML6rmiWvsBY6t1Fn0n1NY77Tvp%2FSf8WnijqNWnOEscjGQ4ZB7Oig0fV7Lf01rr8rqR2tez3XPbBx67XsYzayxjbMl9m38%2F9J%2Bl%2FS%2BpzrvUxMWqvqNVuJksx3402zW5oosbdScig725OHd9qY6v%2Bc2ZOLT6Nn88y3e6X1uyk9NexznYd%2BPdi2Mc1lTxl4ztznWu3bKfWZZXbs9T06f0ypdY6J1Hr%2FVH9Wrtpsx6mMqFDS%2F1WisF30XNa5%2B577bf0eyz%2FRV%2BqnHwW1RotDF6xay49Tviks9OHNBAc9g2sfc1m7Zu2%2FoG%2FQxv3PST9Lw2dTblM%2B1W1sdDixoM2vu3f0936Ot3pOZsurp%2FQ5H%2Bj%2FwaJj4GXf052ZjepRjbmOrywNzNjHulh9Meg5zN%2B1lrn%2F4R9fp%2FpFYxcHD6ey6nItdSGAOtdlFwhlh%2FRuHpN3Ppbv8A5xnqemgFOZ1%2FDyMW77T1DIOQy4vra91bqC00en%2BiYx%2F06Nrqnev%2FAIf%2FAEj1WxaG2sxKOo9Mu6iK32UYeOLHML3vLrNrrmu3%2Blv%2FAPRi1cvpl1PUqW3Nfh5VJ34%2BNmO9XEurHu%2FV7t1jGMsYf0noP9n%2FAANqv9Q6W84w630hn2cuFd1jcYGysjS6qzLxmiu3Fyadv896NX%2Bl%2B2eqhSSBQ1u%2Fwed6z9X%2BrtFJH1dZj1agENsqZuIB9EPsvbkW7Wj6eS%2F6fq%2Bj%2BjWOcbNw8hnqdNxq3tizZYXOa4Ty7fkWbmNd%2FObfof4RdpT1fqHUs1rc%2FLfktyRU2vGa4bSHNePtFL3el6VmLlVejZ7f0m%2F1cj%2BZ%2B0WbvSfqn0%2Fq1eTjdRIdlVspsqcxwBqc8PbfW%2BrX376%2FTtf%2FAKH0bcS6v2WJXqulj4YCXEDZqurxn1dxXdRosuw78hnXcR5dSWu22OrY2bqsdn03ZFTt932Oz2ZWL6lVLPWoXS19Hzup9Pq%2BsfTMYty8kn7ZRXDCy5hdVb1DEre%2F9NU79LvxHbLclj7Kf5rIspXE5mPm9J6q%2FLqa82YrmvfVJHqUsd%2BgyqLatln0a%2F03pP8AWxLmerV%2B5j%2Bz%2FU7qvR%2Bp9Cot6QNlLJbZQ5xdZXb9O1l73S99jnu3%2Bq7%2Be%2FnEmN57qv1X6b9c%2Fq99oxWNx%2BuYxcyx7g9rjc2PXxM5t36x6djmt9H1v02L%2Bi9L%2FCVWcz9VPr51npPWX9H%2Bsxuy8bItFNoyDvtot9tIcN%2F06He316P%2FAEKo%2FwAJ9p9hbXW17ntaA98b3AQXQIbuP5y43%2FGB9Q2dfp%2FaXTWtZ1iloEGGjIY3%2FAPe7%2BayG%2F8AafJ%2F6zb%2Bi%2FSUJT2TK66xtraGAAABoAEAbW8fyVJecfUbqP8AjHPV31dXxMjJ6c%2Fay27LaMd1JaNgsoDxX9o9rf0zaW2%2Br%2FPep%2FpPR0lP%2F9T1VJJJJSDNL%2Fsr9geXGABW1rnakD6F36P%2BsuAwumV%2FWXNrxHvcymqh2S7IqLnRa%2B7Jfj2UPcGtqdvyfVspZ7K%2FQ%2By1%2FoaV6Ffj05FZqvYLKyQS13Eg7m%2F9JKimvHprorEV1NDGDwDRtakkEg2NCNnxDqdGb0Lru3qFDHX41rLTWGxVeyR7626tdVmNa%2F1P3LPWr9i2cmzrpY5tdB6gzpL7Kq7WGXPqqf6D8HIc1gZ9upo%2F7T%2FzmVX%2FADXqr0brOF0%2B4135bWVFgc05kD1WMP06ari17q25P81Z%2B%2FX%2Bi%2BnauTysfqnQeoM6h06l91eW2H4jwf1uhgc70Lq3DdV1XGxm78d7%2FwCfo%2FQXfpK7GIRFX4s2fN7vAeGpRjwk93IyOj5VDnN6U5%2FUMa%2FflYlLGuLm%2BqxnpfadrG1tdk302Ufav%2Bs2en%2FNrQ%2Brd9%2BNlNdfS%2FDuDXMy8e7R1bmjfJ%2FkNhl9Nv59KtOeLbMDO6FktJte%2B%2FCstLh%2Bhcaxm4mY5oc5tLMr08XK3st9H7TRd%2FSqPWW11fA%2Fa%2BOOpdOc6jqeMNllYjcdvudjWt9zfVr3b8d%2F%2Fom%2F1E%2B2F5jpf1u6Dj9RyLKcqu3peaf1rF1aGh%2Bhym0XMr91TfZksr%2Fncb%2FSWY9bFTwftfUOpdQwRZvxsDLOLh2uBexrLH21YzLLAHv9K3ZX%2FwAH%2FOLUw%2BnfU%2F6xVDB6lg4%2FTutEFrLaG%2BgLXD%2FC42zY2x%2F%2Blw7f01f8ur9On%2BroyPqllZfThhMsqBZblWhxFjahFLLWE%2B27HZv3sbsr9H9N63%2FBjW1L9J9PDa%2F6udcx%2FU6Ta7bSH6uxLT7W0Oc0%2Fo6HT6mFl1fzX%2BnV9n1R6v07bbhZv2za4w149K0Vk6enkMeWPu2fzn8xVb%2Fwf0F1GVh4mdSW3MD2vbAfA3AH9xyoYmRZ0o%2FY894%2BztBNGS7QbR%2Ba8n6Oz%2FwH%2FttLyRbyPUcXMqzznY2Nfh9TrbZbkkVyxzQBvzm%2Bm04vr7f0d%2Fo2frX%2BD%2FTV2rc%2BrmH0bqHT8fcW%2Fb2Ned1FrmWsaXOZLfRLH01W%2Bpu9L%2BaXUiCJHBWGegM6d1IdU6WzbJi%2FFbAaWuPvdV%2FV%2FnPTStN6U4%2FWfqPk5jhRj2BorDrMXLOjqnge2m1rNrnV3e1lnpf8b%2FO1Urm%2FqLlZH1a%2BseT03IwLa7s97K8nFrY%2Bx9fp%2Bp6OfjupZ6VvT3%2BrY3I%2F0P6Oyn9F%2BjXrKSCFJJJJKUkkkkp%2F%2F9X1VJJJJSkkkklKQM3Dpzcd2PbuAdBa9hLXscNWWVPb9CxjkdJJTxHVfq4Ol5bc%2Bq55dlvLLq2Dax1lprY7IFbP5i63b77Kf9H%2Bk%2FQrpPq%2FcLMAVlgrupcWXM4duBj9I0y7f%2F1f00vrB0hnVunPo%2BjkMmzFtGjq7QC1tlb9Njvd%2FqxS6dWMj0upH9FfbXsyqwIabGwx30%2Ff%2BifW9n9RHopwvrBh4eF1V%2BXkU%2FqmZQQLSB6deYxwux7HAfpGvs9L%2FB%2F8J6ivWVZ2dj4vV8FgfbkY%2Fo5WO8hosrdr3%2Bi6t7nrefWx8b2h20hzZEwR9Fw%2FlIOLg4%2BI652OCxt7vUfWD7Q4%2FScxv5m%2F89K1IujYj8PpWLjWDa%2BusB7SZIcfc5u6XfnFW31seIe0OEzBE6%2FNSSQUpJJJJSkkkklKSSSSUpJJJJT%2FAP%2FW9VSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2Bqkl8qpJKfqpJfKqSSn6qSXyqkkp%2F%2FZADhCSU0EIQAAAAAAVQAAAAEBAAAADwBBAGQAbwBiAGUAIABQAGgAbwB0AG8AcwBoAG8AcAAAABMAQQBkAG8AYgBlACAAUABoAG8AdABvAHMAaABvAHAAIABDAFMAMgAAAAEAOEJJTQQGAAAAAAAHAAIAAAABAQD%2F4TkjaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu%2B7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI%2FPgo8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSIzLjEuMS0xMTIiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyI%2BCiAgICAgICAgIDx4YXBNTTpEb2N1bWVudElEPnV1aWQ6RTcxOTVFNTY1NzMzMTFERDlFNzJGQ0E2QjkwQUZBRjU8L3hhcE1NOkRvY3VtZW50SUQ%2BCiAgICAgICAgIDx4YXBNTTpJbnN0YW5jZUlEPnV1aWQ6RTcxOTVFNTc1NzMzMTFERDlFNzJGQ0E2QjkwQUZBRjU8L3hhcE1NOkluc3RhbmNlSUQ%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4YXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eGFwOkNyZWF0ZURhdGU%2BMjAwOC0wNy0xOVQxNDo1Nzo0MS0wNTowMDwveGFwOkNyZWF0ZURhdGU%2BCiAgICAgICAgIDx4YXA6TW9kaWZ5RGF0ZT4yMDA4LTA3LTE5VDE0OjU4OjA1LTA1OjAwPC94YXA6TW9kaWZ5RGF0ZT4KICAgICAgICAgPHhhcDpNZXRhZGF0YURhdGU%2BMjAwOC0wNy0xOVQxNDo1ODowNS0wNTowMDwveGFwOk1ldGFkYXRhRGF0ZT4KICAgICAgICAgPHhhcDpDcmVhdG9yVG9vbD5BZG9iZSBQaG90b3Nob3AgQ1MyIE1hY2ludG9zaDwveGFwOkNyZWF0b3JUb29sPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9qcGVnPC9kYzpmb3JtYXQ%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iPgogICAgICAgICA8cGhvdG9zaG9wOkNvbG9yTW9kZT4zPC9waG90b3Nob3A6Q29sb3JNb2RlPgogICAgICAgICA8cGhvdG9zaG9wOkhpc3RvcnkvPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6dGlmZj0iaHR0cDovL25zLmFkb2JlLmNvbS90aWZmLzEuMC8iPgogICAgICAgICA8dGlmZjpPcmllbnRhdGlvbj4xPC90aWZmOk9yaWVudGF0aW9uPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj4xMDAwMDAwLzEwMDAwPC90aWZmOlhSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpZUmVzb2x1dGlvbj4xMDAwMDAwLzEwMDAwPC90aWZmOllSZXNvbHV0aW9uPgogICAgICAgICA8dGlmZjpSZXNvbHV0aW9uVW5pdD4yPC90aWZmOlJlc29sdXRpb25Vbml0PgogICAgICAgICA8dGlmZjpOYXRpdmVEaWdlc3Q%2BMjU2LDI1NywyNTgsMjU5LDI2MiwyNzQsMjc3LDI4NCw1MzAsNTMxLDI4MiwyODMsMjk2LDMwMSwzMTgsMzE5LDUyOSw1MzIsMzA2LDI3MCwyNzEsMjcyLDMwNSwzMTUsMzM0MzI7QzA1QTE5MDRGRjAwQUJEQzA1MUJERkFGMDIwNEVBNTE8L3RpZmY6TmF0aXZlRGlnZXN0PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgICAgPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24%2BNDUwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjMyNTwvZXhpZjpQaXhlbFlEaW1lbnNpb24%2BCiAgICAgICAgIDxleGlmOkNvbG9yU3BhY2U%2BLTE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgICAgPGV4aWY6TmF0aXZlRGlnZXN0PjM2ODY0LDQwOTYwLDQwOTYxLDM3MTIxLDM3MTIyLDQwOTYyLDQwOTYzLDM3NTEwLDQwOTY0LDM2ODY3LDM2ODY4LDMzNDM0LDMzNDM3LDM0ODUwLDM0ODUyLDM0ODU1LDM0ODU2LDM3Mzc3LDM3Mzc4LDM3Mzc5LDM3MzgwLDM3MzgxLDM3MzgyLDM3MzgzLDM3Mzg0LDM3Mzg1LDM3Mzg2LDM3Mzk2LDQxNDgzLDQxNDg0LDQxNDg2LDQxNDg3LDQxNDg4LDQxNDkyLDQxNDkzLDQxNDk1LDQxNzI4LDQxNzI5LDQxNzMwLDQxOTg1LDQxOTg2LDQxOTg3LDQxOTg4LDQxOTg5LDQxOTkwLDQxOTkxLDQxOTkyLDQxOTkzLDQxOTk0LDQxOTk1LDQxOTk2LDQyMDE2LDAsMiw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNSwxNiwxNywxOCwyMCwyMiwyMywyNCwyNSwyNiwyNywyOCwzMDtENDYzN0NCOUQ0MUExMEJBN0VGNUVCQ0RCNjMxODMyOTwvZXhpZjpOYXRpdmVEaWdlc3Q%2BCiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY%2BCjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8%2B%2F%2B4ADkFkb2JlAGSAAAAAAf%2FbAIQACAYGBgYGCAYGCAwIBwgMDgoICAoOEA0NDg0NEBEMDAwMDAwRDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAEJCAgJCgkLCQkLDgsNCw4RDg4ODhERDAwMDAwREQwMDAwMDBEMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwM%2F8AAEQgBRQHCAwEiAAIRAQMRAf%2FdAAQAHf%2FEAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAAAQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPBUtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4%2FPE1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1%2Bf3OEhYaHiImKi4yNjo%2BCk5SVlpeYmZqbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEyobHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp0%2BPzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1%2Bf3OEhYaHiImKi4yNjo%2BDlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq%2Bv%2FaAAwDAQACEQMRAD8A7%2FmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVdmrlHI2utXn6WltnFESb0RFSp41WjD5q3LCBaslzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Dv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2E2rj0LuzvF7PxftUf8AXPLDnC3XI0ewdpOkTK4P08T%2FAMK2Ec1TLNgaxmE9pFIDy%2BEAn3GxwTgV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV%2F%2F0e%2F5s2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXYUeZpfR0a4kpUAx19h6i74b4X65CbjR76FV5FoJKKe5C1GIVLdDuGhuXs2IKOX4gfsvGdx%2FskKtkiyD6bctHHbXgPImOC4qOpXj6E1ff4Mm4Ndxkpc770BvNmzZFLs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F9Lv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVokKCT0G%2F3ZgaioNQemANZuhaWLyE0LlY1%2BbGn6sWspA8QA%2FZ%2FUcVRWbNmxV2bNmxV2bNmxV2NZQwKnodj9OOzYqwDT4iiPZsa%2FVLm5sj7I%2F76L%2BOTXTpjPZQSt9pkAb5r8JyKXqfUvMOpIQOFxFDfoP8qFvTl%2F4Q5INDkrFPAf8AdUhI%2FwBV%2FiH8cnLeAPcxHMprmzZsgydmzZsVdmzZsVdmzZsVdmzYyWRIo2kkYKiirMdgAMVX5sjTeaGl1CzsbSAOLuX0w7k14KCzyAD%2BUZJBirebNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV%2F9Pv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVo4CXUFa9e0CbJRWkr%2B0RWlMHZEJ5WtPMtzE5%2BGYJKnyK0%2F4kuEC1ZeM2IW0okjFT8S7H%2BuL4FYz52mMWn2tDTlcpX6FbDHR5ecCH%2BZevywl%2FMM8dJtn7LdJ%2BKvgry9ccrOJ69KVw9E9GS5s2bAh2bNmxV2bNmxV2bNmxVi3miFU1LSbxvsStJYzH%2FJnSi%2F8ADYpoEzLcxq1T68FGr%2FvyE8GrgjzdC0mhXEsY%2Fe2pS5i%2F1omDf8RwttJRHdrcDaNbhZVI6endIG%2F4mcnHeJCDzDL82bNkEuzZs2KuzZs2KuzZs2KurkZ843Zhs4bVTQzvVqfyrvg3zHNPb2UMsLtGBPGJSpIqjEqRUb9ch%2BvSSvp0JlcvJCLyMuxJb4JNvi%2F1SuEBVvkaX9L%2BZbm8Sv1fTbf0Y6%2F78lPxH%2FgFzpeRvyPbWcXlyyubWBIXuoxJOUG7uKjk5%2FaOSSoxPNXZs2bArs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F%2FU7%2FmzZsVQ2osyWM7o3FlQkMOxGPtZhPBHKCDyUE08e%2BM1Bedjcr4xPT%2FgThV5cvBJbpGergEfMDcYa2PkqfZs2bArs2bNirs2bNirs2bNirshfnRGtb7T9TX7LcoJD2qDzSv3vk0wl81WDajodzDGKzRj1oR35R%2FFT6RthHNXaVcrKsUtftDi304dZz7yrqPrQCIncdMnsEnqRK%2Fcjf54yVjP5gwtJ5ckcD%2B5mik%2BivH%2FAI3wD5RnEtpwrWgw983RGby1qiqKlYGkA%2F4x%2FvP%2BNchnke5BIUGoPQ%2FPEJHJ6XG3JFbxAOPxOA1iX7sUwIdmzZsVdmzZsVdmzZsVUbqBbq2mtm%2BzMjRn5MKZDLP4rC2UVq9qYj7SWshWn%2BtxOTnIVG4ttWvdNaiiK7FxGDtWG6Ti%2FwDwMuShzRLky%2B1lE9vFMP8AdiK33gYscKtBmDWhtq%2FHbOyMp68SeSH5UOGpyJ5pYde3moWPmW5KzH0pIo2WNt0A3Wv0ts2D73zJ6FgzxqqXpKpHG9eDMx7EYXed45VeC4gPCdYyqua0I5q5VgOv2cAW8sWo2QMqhwwoyHcVyQFhVOLzvrNrdf6fFHLFX4kVeBH%2Br1%2F4bJlp%2Bt2GqWrXFnICyKWeJtnUgV3XOP67qFjaFLHUrprecy%2BlZajxPDmN1jn8Dv8Aa%2By%2BIaXrclrdtZ34NrfR1USofgeo2K06c%2F8AgcBCXr%2FlvXRrdnzk4rcoSJFXYfMbnDzOV%2BTr82eqAOQIpaBq7AV2r%2BOdTriRSEp8z8RoN9I5AWJPV5HYD0yHr%2BGQg3Ntq1lcLazx3CiZviiYOKzQo9Kjb7YzoWqRevpt5AOskEij5lCOmc60%2BWCK0j9ONYo5IYp%2BEahQWBeNjRafEcMVTvTb%2B80fyHZ3FugE9vSORJBUqPVZW%2BEHw3yVaXeC%2FsobulGkX41HQMNmH%2FBZzC%2B1iTTbadZUkjtJjzkQqSKqNm5fsdMPfyr1%2FRdT8vra2E5N5C8kl3bSMTKpkctz%2BL7SP9peOA7fFkIkgkCwOfkz7NlA1y8DF2bNmxV2bEJLy1injtpJVWeavpREjk3Hc8V64virs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F9Xv%2BbNmxVplDqUbcMKH5HIPokjWsstqx%2BK2lZPf4Wpk5yF6nF9R8xswHGO8QSj%2FAFh8D%2Fqrkoc6VmSMHUOOjAEfTjsAaZMXhMRPxRnYf5J6YPyJV2bNmxV2bNmxVQuzOtu729PVUclBFa07U98DafqsF6i9EkI6ePywwyF6vG2i6oJRUWl6xZCP2JOrr%2FsvtLhG6s0yiK4X6Zfi4QI7Vb9lv5h%2FXDHrgV5c8B0LzLc2Q%2BGF29WDw4SfF%2Fwp%2BHOg6ZMHi4j2YfTkZ%2FMGwpFaazGDytm9GYj%2FAH25%2BEn%2FAFX%2FAOJ4N8uXwliicnps305LmFZDewrc2dxbt0lieNvkylc45%2BX10UCQzHjLATE4P%2BQeNc6L55e5i0J57WVonikRmZDSq7jf2yB2Op%2FVYor2%2FwBNjktpAGjv7ZvU%2BInoy8Vao%2Fa44xCQ9as25RVBqKnfBGRby9rBEsljcIY0aQ%2Bg5FCCQD6bj9lslGAikN5s2bArs2bGyOI0aRuiAsfoFcVS%2B%2F1q2sJltyrSytuyp%2ByDsC3zwxBqAfHfI%2Fodmt2z6pcjnJK5dAexPT%2FgRkhxV2c782mSy82WUgNIdUhNs4PTmlXQ%2FwDBDOiZAvzLb6nHpOrlFkjs7lWdG9yvxVG%2FwiuGJ3Up3YTJFr7op%2BC8t1ljHjxodv8AYtkiyHbxx6XfKx%2FcXBilJ3%2BAsVUV8FRlyYA4Z80DkkPmq3EtlHJSpR%2BJPgHBH66ZBtIufqt9Np8pALHnEpO5p1oM6Xq0P1jTriPoePIfNdxnLtZtrGZluBcG3vF%2BFJYuJfx40IIxHJKzzb5et9ZtZYp1LwygcgPtKy%2FZkT%2FKWuRKKCOC6tNH1CblcWiILDUWHH6wg6wyDejx9Fw4sfOMjEBY5biH1HgLy8VYulOfJV%2By38q4ndH9LlL219K4iilHrWzLxlhI6SgE1%2F2SnFKo0Czxy28zMqcSzspIYBPj2I%2F1cd%2FytnVZdNQ2D1I%2BESMoPw%2FzMftdMG20TSQyyblmjenzoc4TY6ld6ddyKwMUsbFZoHqNwd1KnGXRXs9n5%2Fv7lg98GlWhMjwk1A%2Fm4k%2FF7jDSwSPULTTJI3PGBphGNwG4OHVW%2BgnONX%2BsWFpDFPaSSJcTESG3TcRlf2uRK%2Fazq%2BkR3aeT7e%2BjnX6yoW8ibht%2B9i9Tg%2B%2FQ98QVZHqstutowuSPSdSpV91IPVWzif1i98t%2BZ7m40FjbSWUrNCqEmkex4EH7acT9lv2c6lonmbTvMUTWdwgiumWktrLQhge6H9of6uRLzd5ZurDVP8Q2KetYFUW7jXeSKi%2Bm0hH7UZH7X7OCY4g2YM0sMrjvexB5SHcXsnkPz3Y%2BcdPqKQ6lAB9bta%2F8lI69Y2%2F4XJeDXPJlvPe6JqMeq6NMYLuE842To6ntToyuv2k%2Faz0J5E8%2B2HnGyI2t9VgA%2Bt2ZP0epH%2FNEf%2BEyESeUuff3tmbFAx8bB9H8Uf4sZ8%2F6P82TMMLNb1iDRrQ3EpBkkPC3j7s5%2FwCNV%2B0%2BGVc4n5m8yfpnzJcsr%2F6HYsLe232PBv3j0%2Fy3%2BH%2FY5JxkLourX175%2Ftb28maSZrloqsdlQ1Tgo%2FZUDO755%2B8uxlvPcMI6i6LAe2zZ6BwlS7NmzYFdmzZsVdmzZsVdmzZsVdmzZsVdmzZsVf%2FW7%2FmzZsVdkb83W5%2BrW1%2Bg%2BK1kAc%2F5D%2FCf%2BG45JMC6jare2FxaEf3qMo%2BdPh%2F4bCNiqV6VOOcTV%2BGReB37%2FaX9WHoyFaJMz23BqiWE7juCh%2FsyaRsHRXHRgCPpwy52gLs2bNkUuzZs2Kuwu1rS49W06Wzb4XI5Qv8Ayuu6nDHMemKvONE1KWGVrG7rHPCxRgeqsppk7sb0XC8W2lUbjxHiMhnnnTHtLmPXrZfgakd1TsR9iQ%2FP7LYtomq%2FWI0Iakybof4H55LmFZdqNlFqNjcWMwqk6FD8z9k%2FQc515XuZbW4l0%2B5%2BGWFzE6n%2BZTTOlW063EQkXY9GXwPhnO%2FNsS6T5qtbofBHqaniexmi%2B2v%2BsU4v%2FlfFgHcrPTFbanZNb3caywyApLE3Qj3zjutwW%2FljzBc6Pp6fV9JHpsLNSSgR1HIorV3Vvizq2jXQk%2BAndlBA9xnNvzRiWPzJBJWnr2gJP%2FGNyv8AHAdikJ3YGf0o5pZDIboSD1GJJ9aAgh6%2F5aUzoFnN9YtYZ6gmRFY06VI3zlXk%2FVI5bi2hnlBgdBuxFFahhfr0rSNsnHlXU4JI5NJaSt1avIQm%2B8RaquD0I%2BLjkpbgIZJmzZsirsDagC1jcqvUxOB%2FwJwTjXUMrK32WBB%2BWKpfofE6Xb8f5d%2FnhjkMPmvR%2FKlrJBqkxBSVkjC0PIDpTfI15s%2FMNbu3jbR5plsZVp69swRi9N0eSjMnH%2BRcVpm669cWWtXGnatwjgKma2uPsj0x%2FNXw%2FayOfmLr%2BhX3l%2BPTYrkXM%2BpGtm1uPUUceX7yRx8KLtx%2F1s5xoN%2FefpVr6C8muVVfUuLO8kMrEIeTem7faRk5Iy5FdTuZ9B169trGZvqkc5eFD8SmJzzUcTtsrceWHzTT3fRJv0p5UZvtOYYrgCu%2FJV4P%2FwANHnPrj83vM2lX9zpWoBJYInaJ540pOi1%2BGRQDxf4cln5Z3qT2stjWrK0iexEgE60%2F2XLOUfmHYNZeZbhWP94Ayn%2FV%2BD%2FjVclLlbEdQn955q1wTiU3huLadeQCsfSljO9VNev%2FAA0bYHub1Z7V5yWkhHxpcVHJNwGiuP8AKStVk%2FbyGafqLQxyafO5S2lPJWUAmGQ%2F7uiB8f8Ad0X%2B7F%2Fy8Ctd6jpl3Lb3v%2BkQTpxniqTDcQn7LoR%2FwUb%2FALDZCyyekWl9ZyaFLPelZGN2tqDEtZJHenEs67ckpVXwq1bU7G1iKWvqtcCR4bkkhFYx%2FCHXhvvX48C%2BU7H1SbK3k9Wya5hv4HchSBF8FxBL2WeOJ1k%2F4s9P4cu%2F0j%2Fc1FphmFxPLeOhZBxAiL8jt40%2Fa5YegV6PprvLpcE8sfpTNbh3QVoGK12zluoQ2PnZih42fmWIVt5z8Md4q9I5P5J17Z2A8YrWVl%2BERoaDwoNvupnLtb02LzREdR0hBba7bVe4tEPFZwpr6sH%2FABb%2FAJOSkgPNLqGaG7e3v42iuoTwlicUIK9iM755KnGoeT7ZX6m1CH%2FYSNCf%2BFOctnuIfNkSWeqEWuu249OC8ccfW47elcd%2Bf%2BVnQ%2FyyS5t9Dk067jMVzaSXMLK3hRJlp4r9rjkQl5PbalcaRd%2BlI7PbwysI5lNJIirU%2BH%2FmnOueV%2FOUeo%2BnY6hIpuWX9xPtwnU%2Fhz%2FnTOPeY4zY%2BYNTgpVBcSVQ9CrHkP14Gsb9rFgRWSzY1K1%2BKNh%2B0p%2FZcY2Qdlev%2BZ%2FLKxK19pcdYBUzWqdYx1Lwj%2BT%2BaP8AZ%2FZyHW9xe6ZfQ6ppk7QXsBDRTIevsR%2B0p%2FlyY%2BUPNR1KJLK5lD3KrW3m6esg67f79T9pMD%2BZtCjTnqVilIW%2BKeFRshPWVAP2P9%2BJ%2BzkZRB3DPFlljlxRPz5Edx8mcw%2Fm3aXvkzULyUC3122jET2oNA8kh9NZYT%2FJvzb%2BTOZabIhnWkgaOQcwxO577%2F5fjhKIYndoZvgaUD05v5SN1J%2FyG6YI0RZ4tS%2BoyKQS1HTwYHsffALrdOQwM%2BLGOEHfhu6PWvJ6f5FsfrXnqW8K%2FDBEZD4cmAVf1Z2fOSeSLmfT9RrHEWlvDSZaVagNR0%2BztnW8mWsuzZs2BDs2bNirs2bNirs2bNirs2bNirs2bNir%2F9fv%2BbNmxV2Y5so4qw6WL9HeYLiLpFcUnjHQfH9r%2FhuWSbTnBgMXeJiv0H4l%2FA4T%2Ba4fTW01FRvDJ6chA%2FYfpX5MMGaXcBmHxbSrsCdi6%2F2f8RyZ3j7kdU4zZzrTfO2qQa3eaHrkax6haux%2Br9FkgJ%2FdT2790ZP%2BGydWWoWt%2BnK3erAfHGdmX5rkSEovNm2yiQASTQDqcCt5sL5dZ06Ko9YSMNqRAv8Aiu2Iv5i0qJecsrKo%2FwAkk%2FctTho9yo69htbi2e2vApgmHB1cgA1%2BffOYX%2BnXflXUghJezkNbabxH8jH%2BdcPPN82l65b2j213DN9WdmmtefCRkdeJaNSVb1I%2FtYXWM8cVk2javM95pUv9zcPvLB%2FI3LvwwhIT2x12KCBrxjyjRS06jrxG5YD%2BZcrzzpkXmjyhLPpzCSaFVv8ATZozuXjHP4GH%2B%2FE5JkUmju9BujaTsJYHHKC4G6Sxn9r%2FAJqwJH5g1fyjDaw2KrcaE0zSNE27RiQmtuXPSJ6%2FuW%2FYkxI6hUg8ia9qulatHe3s0k8DgxGKZywBk%2By3%2BTkn%2FN63a8ttG1a3rHL%2B9hIB%2BIdGK%2F8ABA5DNbS0tL%2B4ksJOenzETWrjYiOT4gjD9l4WqjL%2FAJOTTU9XtNc8r6dDP8E8rc4iSP71RwkTfcP%2FALsX%2Bflgq09zFvKeoTMwV2NeCsB0BaNqf8a5N9Zu59K83W2pWb%2Bn9cjBo24ZXUNxI%2F1lyCWsL6fNb3LLxid24tSgINA9Puyb67pd%2Fr2kaPc6bxN5b8owWYKAYW%2BGpP8Ak4RyQU8ufOF7JLD9XRLaAj96ZPiYv4A9An%2FDYOfz9oEbtA0kjXSqG%2Brqh5NtU%2BkW4iQL%2Fk5yK%2FiuNagjEcpTU7Rj6YqaSAbtG3%2FFin4om%2Fa%2BxhXcGeWxlDgpPbfvUFaPDKpFXiI%2FYk%2Fk%2FmwFXr0n5hfXBJFpVtxmC84jOa81%2FaKqv7Sfy5GL7zJq2rwXFhqF40AlWiSQfAEPVW%2BH7Sfz%2FwCRkTl1dLW3t7xi8108C3g9EBArCnI8jtVvtNRcR1zzTdJcQvYwRW7y28dwzFfUblIvI05fAo%2F2OGxSt3zSW9LPXITMlCjiuzofsyRt2YfsPkd0iabTtQksp1Zra4U84X6SJ%2Bw4%2FwAoD7Ei5dzqV7LFCt7KZnVAY%2BRqyg9aj%2BX%2BTJdouuaHrltb2PmCNfrkKmO2vKcT%2FkgsP2v5cjtapfo0Jt%2FMllFGHltZvVeK4ptwWNi6yU%2BzIvRlwm1mUarpNtJHEWutOkuIbh0FSbfkGiZ2%2Fb4MxH%2Bpk6uZNM8saddywStNK605tsKnYcF%2FmbOZy3s2nWaLE%2FG4e4%2BsK43HELxowOzK%2FL4lx5fFWb%2FlprP1TWLQMaLMFRh%2FlRtxr%2FwLYn%2BfNjLp%2Bp2WpwghWLxuf2SGoRX%2FAIDI9peo2kMtjfWQMUi3JM9u24j5rT4D%2B1G5qyfyfYzp%2FwCcdimr%2BUra%2FG%2FwpISOoIpXJDcIPN4HDcR3Scl2I6qeoOGNvcQyw%2Fo%2B%2FJWGpNvP1aBz%2B0PGFv8Adkf%2BzXIxSaym2NCOh7MMNYLhLlOS7H9pfA5FU30vUNQ8uaqjIqsaqHiO8UsZ6EeKsrfA%2BS3yUr6p5iudTl2S1RvRTchTKeCgV%2FlTlkOsvUveOn8VkdatauxoyN%2FID%2B0r%2FwAmTfyYHsrnTdPasc1%2FNczXMZArwhT04g3%2FAD05Yjml6Fditlcmu%2FpvX%2FgTnK5bS4sp1mDtFID6kLioPXZgc61NGTBNH4o1PpUjIpNbyX0Ulvcw%2FV9Tst7i2IqHWn99EP2kZf7xF%2F18nMX1pANMR1TTYfMkRuYYlt%2FMEY5EfYW7UftL%2FwAXjDf8u%2FMFzM8mnX6MJLWRFkMh4yiqtGUYU%2FZP82IzW%2FH4DVQG%2FduPtRP1FG%2Flb9lsG6ZJDJfPcvGI9WCoJZwPhmRGHF2X%2Ffi4AP2peafmBE8Hmq8LgATCOVaeBUL%2BtcjauUPip6qe%2BdJ82x293Pb2GtyL9ZmWRoL5QAUZZGQK47p9nOd39hdaZctaXScXXdSN1YHoynupwFCL0zUX0y4SVGf6uWDqybPG46On%2BWv%2FAA652nRtY%2FTdqJbfjLdqnK4gjpSVen1iBf5G%2FwB3Rf7qfOCxycaqwqjfaH8ck%2Fk%2B61K11AC1kZYIT6gmB%2Bxy2oP%2BMi%2FC6f7LEGlZCbBr%2B%2Bu%2FqqpBCjP6cbtxHwn4ljrX%2FgckOj2EMcC6lK6yTRKYmkIoYl6gE9xT7L5HhcTJqM1jJCEjjQSQsK7qT3rgi%2FuJ7PTDKQ31S5f03ZPi3SrfGP5RiKG6bej%2BQPzB0CG%2BuNHvB9VeZx9WvZKBX7cCf2P8jOvghgGU1B3BHfPHaQrfuEt3DHkAJakKhP8AO37A%2BedX8i%2BYPOen6dNp2qK5t4JFjs5HClyoNJfTdieUaL8S%2FwDCZEcRNEc%2BrfOOKWMTgeGUaEoHfi%2FpRP8Aunt2Ab3UorWqAc5QK8egHzOPhuoTYrdesJYgnJptgDTqdu%2FtkT1C9XnLPIwofjLduJ6fhkgLcYsi0vVRfSSRSUWRd1UeGGgyN%2BVrCSkmrXKlXnHC3RtuMXXlT%2BaTJKMTV7JdmzZsCuzZs2KuzZs2KuzZs2Kv%2F9Dv%2BbNmxV2bNmxVB6rafXtOuLXvIh4HwYbr%2BORbRL%2BsMTMaSQsOSnrseLZNDnIdfXXtP8zXtnZGC2tJWEsUz8pH4yAE8Y14rs3JfibJRPMKyf8AMXye3mKyh1LTH%2Bra1px9S0ulFSV6mNwPtRnIb5e8wXlw%2FwCj9VR9N1u12PGoD9vUgfpJG%2F7UedN8uapcXsH1e7C%2BrAi%2FvV6OPs1K%2FsttgLzP5Ysr%2B3NzHFxmjPMlNj%2FrLTdWHtiNtlU9I82sxa11lAssf2bmMfA9PFf2G%2F4XIt501y81SykEEjRQRMGEaMV5L0%2BKn2sq4ke3j9O4asuyLNSnMduX%2BV%2FxLCfVZ%2FS0u8cDkVhYhfGgxodGQDDZPMculusTzpwryMT7mneh%2B0uTVNL1e%2Bsob1tLmmtJlEkbFW5FGFR8NfUzi2iQ%2FXNXtLjUAXWe6hE3L%2BQyKHG%2FbjnqzzP5ok0H0baxgWVyodi5IRU6KBx74ASrzOzsfL1tcH69ppMtdxM0h4%2F883OS2GLS7239K1pGpGwj%2BEr%2FALHphVcecBcyrc6vBFdabL%2B7lV0UPbt12KDnx%2FlYYGvrWKwP1nTp3kirsT0BpWgcdf8AZDJg%2FFjSanSb8xC2ursXtpG5kt7dkVRGaU4g%2FETy%2FwBbIzc60xSeylsgphDJeafNtIY%2BnqREfCygYcWPmV14x3qkqQDzAo4X%2BYr%2B0ME6h%2BidZZImjM90FLQzQj40BFNn2%2B1X7DYkd2yi%2BrHNIh8uXbLp7yLJdToZbZJDX1EU0NOXxCeL9tf%2BJ4PhbTLya58sXqqt3EoKlV9MSoRUMn8ssf7XH%2FXyD%2BcfKFzoWnRatFqUUU%2BnSGSGAsBcFXZaFeHJVZDu2HOn3See9Kt1%2BsCx8x2y%2BpaXabB2TxH8pP21%2FZwAnu3VQuV1CC2iW9cx%2FwCkS28kMtA5dKLHL1%2B00TJyZPhk%2B1nS%2FKN59Z0GSNno6yI6e1V4v%2Fwy5z9pv8YWj6Hrcf6P836EWmiiHSfiv2ox%2B2kwH7P2ftLk28uxrbeXYLhYXV7gMzxkE0IqPiqNq%2Fy4gb%2BSk7PNdX1m%2BHmqaytJ%2FTtTdx%2FBGoSu6swZqcj8YbCnRmM97drKxKXcslu7tXb1%2BSBq%2FwCSzZK9c06xuNUutStkBls5IFkAIAMoHqUUfzNRkbCPW5Xs70rZcVtL0%2BtCoAFVc1oK%2FwArni2RIShdD0rU9Z0g2UNW1DR5JLG%2BirRlQuXhmp1ZP72M%2FwCph75g0K2sra21G8ch5baGJUpt6yARuvL6OWEQk1eJrq9s55YLxBzuGhJEjr3LKvxSqv7WISanq2oQRXGryvd2MtVhuSQ8aNQch8OyNjsqElhK1hbcr%2Fcv3K%2FyV%2FycRSQBmUiifsfQM6FpfljSbrR0mCy3EjDlDIzN9sGnphU%2FZ%2FlbIrqnl%2F6jM3Cb1VRqOoU8078XoOHPISIiQCd5ckgE3tyS4StK6xSy%2FDJ%2B7HqseO%2FYVw0W2thatp10he2b7YH21cfZljP86f8AD%2FYxO4tbO4so4I7ZUvG5Lpl3PssprUws392JD%2Fut%2FwCbAOh6sLuU6VqYMF4hKRu2x5DrFID0YY7rsh4tMn06%2FkspjzjniaS1nQfDIE%2BJWXwdafEv7Od0ugnmL8tmYipWEOB1oGWp%2FwCH5Zy4hoT9WuU5BTzj7FHp%2FeIe3%2BX%2FADrnR%2FysvRfaHeaJIwZ4RJGo8QDzQ%2F8AAy5OPVBfPNxbpMpifYqaBu4IwFYWlx9fEIJU7lmH7S%2F83ZJ9e0x7K9unRg8azMkoHWJySVR%2F9YH4W%2Bzj%2FKtvFdaxBDLQKzAVO243G%2F8ArYPJUXb2NvDZtdyWxe3B4meCQ%2BtG37Jkjb9lafaXHRXl9q2r6etnWJ7Yxx28h%2B1UNyMjt%2FlH4myX6lp1poPm57CIFLG8jikCsKisqqXWncc2%2BzhLZW0Om35hCuLiCeSgIHFY67KT9rl4YaV63IwMVSakg1pt27eGRuzvrTWILdYbnlcIWXSdQc8W5pXlp91%2FLIP91M%2F94mG9tcfW3AQ14xgsPH4c4Zp%2Btz6HqN2rJ61nNIy3loTTkA54yIf91zR%2FailyRNUinpV0iXqyyxw%2BjdW5Md%2FaN1iPdqf74f8A5Jtka1ZZ4LWYxsySKpaCRT8QI%2BIxkj2Hw5KLe6%2FTsUF%2Fp1wsmrRRk2l0QAL6Fft290g%2Fu7uP7Lo395hFquqaL9XZmmWCRwySWTgs8MgG6Oo%2FY5fZbAUhC%2BZ9JsfMl1SKYW%2BqyQRT2DMf3UvJeTwt4M5%2BJchKyrOr6D5gQwTQEpFK%2FwDeQv8Ayn%2BZDk%2B1Gyj1ew0SaC4gS5ntmCtX0ELQtQAM%2FEcv5Fwv1bQxr%2Bnhr4oms2ymP6xuCStSIbof6v8AdzYOaGAQ%2BXdTm1NdLjj5SN8QkG6FOvqBu%2BTjTrS2sbZLCMcVUmkpFGLn7Rf%2FAFv%2BFxTTme102DTuILIwZpKksW%2BzxWtW41%2FZyU2XlW41HhcahytOQJZVHKaXw%2Fd%2F7rY%2FzviAqQ21ldXtytrDG0k524qKmnj8sO736roNmNIltfVv7hFeaMnkUqTwpxNA2S2MaT5etS9w6WdtEvx1b42A7Symh%2F2C5zTzb%2BZun3swOjacGVKwrqMgoajeiJSr%2FOTDVdVZPYa3pOj%2BW7u31uKKzuZGP1dePP1Iz1UovxtJ%2FlYU%2Fl%2F5hOtyS%2BWrlis1Gm0pyfiR4%2Fi9Kv7SumcrvNYnu5DcXH7yToamrfSf6YL8ratLZ%2BZtJvoT6bwXMbEjuCwVh8uJauPFuFe%2Bx%2BYJ4NMawQiOFzyZOlDX4h%2FwQyQeVtAn1BY9R1QN9WU1toG%2Fa3qGYeGE3lnRLPVfM19LdAyWkTtcW8a7xOGaq1kGz7k%2FAM6moAACigA2AxJ7lojn72wANgKAbDLzZsirs2bNirs2bNirs2bNirs2bNir%2F9Hv%2BbNmxV2bNmxV2Qzz3p3P6rqKbFKwyt%2Fkn4lJPseWTPOVfnX5gmstNtdBtnMbajykuXHX0YyPh%2F2b%2FwDEcbrfm24MRzZI447GR59w6pMfNyWl7EdD1KM3Cp6dwoKldj%2B1zHE%2FRko0rz1rUtz9SvLe2lm2Hp8jC7BhWqV5xvUb%2FDnn01jPEin8pHgckemXmsTaHcxANw05o57O7IIKxliJYll%2FaRT%2B84%2FsNkIZhIkSjRDl6zs%2FwIjJCXFHkb5gp3%2Ba2r%2BbdPuEvYLVbLRpiFL27c2EvWkj0%2Fd8v2VpkGsfN2p3Kra3V2XicgEsQeQJ3qSNs7d%2BkdO1rSbKw1LhN%2BlbRXVJKFZyq8ZV3%2F3YGHLOEecvKFx5TvTLDym0idv3EvdG%2FwB9yf5a%2Fst%2B3lpHUOvsua4iNwbWCruHK%2FB0qN9j0zoy%2BarW48r2Oq3l1Le2sSizuGkqk6zgUVXMda8F%2FwCDTOO2M01rIs0XCRQ4kHqCqGnZl74NgkTlMqSOIZpPVNrXjGG8Qvfj2wXzSyqz1eO%2FtNSjQM8sVubhFbbkIpPiI%2BUR5Yca3q17IdPmtZ2js7yztriONNhyAKSciPtMJUfIZaXDWL%2Bra0jcq0ZYAV4yAq6mv8ynJf5Yex1PRjpUsfO%2F0pnuLJWNPUgkNZ4l%2Fm9Nh6vH%2BVpMRa2uvBcXej2Gp2rSC5tJJbOZkqW4v%2B%2FgY%2Bx%2FeJhtBB5sOi313boLa9ihMlo3EB5ClGkULy%2B16XJk4rhlZarBFAbZljtrS5Tg%2FoIF4fyOT1JjbC1L%2BbSbowyMwu4WrzJryX9h1PQpxw%2FFWFXNut9PB6srS6frlqI4JZHJ%2Br30bCsbOf5phx3%2FAN1T%2FwCRgPQbtreVrEFrW8gfnDU0dJUPF09unHD%2FAFeygjjvbi2haTQbpxcXlpHvLp9x9n6xClfjtjXi1P2P3b%2FGseE99ol9qtyjIKamYlktb6Mn0L5QKJ8Zp6d3x%2BH4vt8OD%2FvciTXPZaZ%2Bkdp5%2Bgt19Yad5p0%2Fe0vU2Y8T0NPiaM%2FtJ%2FuvOj6lcGysFaRlYxJWUjfkUXk3z5MM5p%2BV2l3U2pPdalFHK1sOLyqQxSZaFOdDWOT7W%2F7eTTzK8UdlcxREhXBTf%2BdzWg%2B7JxNji70HnTz%2B51GXyrrFxaapD69nfcRqSftqxHL1oj%2FOjPjtQ0GNYCfrCXWi3QMtlelhyjkYbFfdvsyx4M87Wy6zqemTq4X9KwQnmegkK%2Bmf%2BSi5G9M1PVfLUt3od3CJIGDEQS7iKUD4Zov8%2FjyErqrruPNkK58%2FJN7Sx0%2B0sDe3k0k9xA6JBJACGqwPHiKp8S8fts2F0mrDS3nubPThH6ZLa5YcQsnBvs3kSsCnJeXJuK%2FB%2FwAYmwQ%2FrXdjEsQRizhvjKCrUp8If4uW%2FwCyuK3Fs893p1nezfVdeDCOxmHFi8ZH%2B89wSeBjP2YuX%2BVFiYggA70Pmt9QzfyjdxXeiPeaY3rNYt9ZjdKUkgP2gyj7L8ftL%2FPgTz2tuLdJIT6cN1JFcxzJ2U7Sb%2Fs%2Fa5BsKfLEMvlPXby2sJI40uF%2F0izVuUcb05n0z3gkTlw%2F3237vHeddXN5pEMdnbmOys4BFcy0qDcF6GJa%2FwDFacmyX8Pu2R1QOi6Yupabd2F78dj6xjLVFUlpySaHwkUf7F0%2BDIrrvl6dr42N0eOtRIHs7ldkv4B9ijf8tKgfB%2FP%2FAHX28mPluyb0Vs7OdTL6SSReoK8%2FTZqN%2FrqOPL%2FJwTqdhFr9m1lqUhjnhcm2uv8AdltN%2FMKf7pb9tP8AZrjVhWHaHrEWqxjTb9gt9GKQytsXptxNf2sl35d3J0jznJbCojuQlR26cT%2Btc55qthdyXcyyJ9X8wWfx3ESbC6UbrcwfzS8fjfj%2FAHyfvPt88N%2FKuq3F3q1hqBIEyc4pWZuCkoAwck9MA50VPJV%2FMq2k0TznfCJQUmPJom%2BzJG%2FxcW9t%2FwDY4Q6cILa6ZY2eKRwslv6goaDfjy%2FaK4f%2FAJleadM80a8t1pcZ9GCJYmuG2MrD7TAfsqv2V%2Fmwr0WyuNXUw%2FVxci1%2BKLt%2Fw23wrg6qGVanr1vrK2t3csIry1aESBjxJEYYOQff4cjvm3zLbpZXLWTGC5vr%2FwCswRjfjBGoC8yfi%2BIjCPX2vNMu%2FqZDRNGKSAgUqxqgqKruF%2BH4sjsyPPIZZSXJ7knfG1e9%2Flxrdt5ksbqdSFu7eMLcW5O4%2BE0cV6xvnF75uVzcb14yyBW7%2FaO2KeS9RutC8yWd7DMYLfn6d3L%2Bx6D7SLJ7YhdkNd3UkRDRSXErxMDUFGclT9IwndCtpWrz6ZN8MskcDsGdojxkjcfZmip%2B2v8AL%2B3iWoySfXbiHUmFy14frKXqH4nL14zK%2FVuX7cbYEeJWDPQVpU0Pj0x6yqLL0pJUW4tXE1o5O9SaSRbeP28Cob1Z1T6vPKzxjeNSSQK9aV%2BznXLfUrdtDt9T1U%2BjeRxpa3iMvF5V41jcg%2Ftrx%2BLOd6VbaTqJlS7lMl5Iri3hHwRiQj920snhzODppWsii6zcGeSZg3po3NSy%2FD%2Fen4K9V542r0LyheaXcm5uaCCWNhxkl%2FvClOqcvs4rrn5g2enI9tpKi4uqlWck0rSvxP8Atf7HITazpccriNaLGD%2FozGnBVIJkZP261%2BFuWE4juLqSZo2pbJMjyitAQeVPwrjxbUE01reuXGvCKPUZJ2Cs0iqgUgFtunw%2FCKfDhWLXSzayW73jxuGElWgJUbUoSDhkLcXEjJDSJqkoSd%2BH7OGlh5a1HzDONIit%2FWvZEMkJRlQtGlKsCxVX4%2Fy%2FawWtILTLTTmeMmbTrm1jXe0nmMLOwH2nZlrWv%2BVhlBb6Lql09zpemrbx2cJe5WNqiRi3EKrfyj%2BZR8WJ6x%2BVPnXQrK41i9sljsrUB5pBLGzAVCgiNWLNufs4I8h6hp738sNxRBexei5BoBJWscg%2F2Xw4VZjoMllFbx635Y52k9mvPUdKaRjHIF%2B08PInhJQV6%2Fa%2BHOq6d5%2F0G7toZzK%2FBwKzBCVrTo3GpQ%2F62cYW21DQ%2FMUVrFH%2B5vyInPSIqzfE1f2afawkmtp42klt0f6uzuInWoDqrFQRQjkMJV9Q2ms6VfitpeRS%2BwYV%2FwCBNDg2ozzr5Y1vTI7V9L1PnbTDk8E4Qs7M1KKHBDp9GTfQfOdosSxw6txkp8UN0DxBG37WNea09UzZBNY%2FM3SfLcVrLrDIyXZKwm2bmW40DsF3%2BFa%2FF8eTW1uoby2iu7ducMyCSNh3VhUYEK2bNXNirs2bNirs2bNir%2F%2FS7%2FmzZsVdmzZsVdnE%2FwA9rKYXmj6jT9w0ctuT4OpEgB%2F1lOdsyO%2Bd%2FLUfmvy%2FcaXstxtNZyHosybofk32G%2F1sB5ORpMoxZ4TPIGj7pbPl%2BNPrERi%2FaG6H38MkPlXzh%2BjhHo%2BrmunCqwXFKmDmfiSRf27d%2FwBv9pMJBDcWN7JaXcRhuYHKTRPsVdT0P%2FNWB9RiWO6ag%2FdygSL7cuv3HKpkwImPcXoM2KGaHhy3B3BHf3h6B5qslXQooNOVof0a7Xdi6fDxBPKQQ78vT35xNl6Fr1l5s0yXSNZRHujHxlRhtMv%2B%2FE8JB9r%2FAIfILo2pT6XfLd8mmiKehPAzE8oT%2ByvKtOPWP%2BXKvrafSpl1XT2L6ez84LqLrE1a8WH7PH7NDlkMoluPiHRarRz05F%2BqJ5SHf1CT%2BZ%2FLlz5WvvTUmXT5jW2nP%2FEH%2FwCLB%2Fw2FauD8Sn6c67a3Vh5x0p7G%2BRfrAWskY6EHpLFXp%2FxpnLdc0S88t3ptrir27msE3ZlH6nX9pcmR1HJxFS3uA4oftDBlvcz2lxHc2sjQzxMGjlTYgjCVG6Mh%2BWD4ZRIvv3GC1Z7pdxHraNJCViukq13aswVAO9xCW%2F3Uf8Adkf%2B6%2F8AVw1t5NPkKabe3SyqKG2uIquYDX7Jc7ei37a%2FZ%2Fazm9tdT2dxHdWzcJYzyQ9R4UI7qw%2BFhkwhvDqECTaZbExyHhPbqKmCYivBf%2BKZPtR%2F8DgIkSDxVHqK%2FSyBFbjfvR8k1xY6gVtLb6vJbVWZbhvVLo38yAemYZF%2F4XCjW0McX986%2BX72Uem6V56bekVAYLu0D%2F8AJSL%2FAItjw7W0utVgj0%2B7k9DULc%2BnaSMaFkrvaz%2F8yXP%2Bpgq00iztbkaVcP8AWBer6NzEworLWjRsoJ4yRv8AEjr9jGOMDbn5y3UyJ8vcyfyHpl1puhy31zEE1e9cJfKxXjK8JMaTqfGZCrt%2FN9rCX8wda%2BqyabAGAM85aYA9FUcV%2FwCGyZXElvb20VgHb1LeNDEKmpKDhGS%2FfOK%2BcrhtU1G8vLZ%2BYsz6M0Q%2B0nBh6cwH%2B%2B5af7F8slsAAxG5tkesTm68saddo3GbTZ5bb1B1G%2FrRfrxGTW7LzPpcrahALfzDpir9biI4tJESAZowftJ8Svx%2FY%2F1cD6VMb3RNTsShJmhju4gVP2ovtH%2FgG%2BLBVnb6b5g0ux1JGWDXNDj4SEiongQcGjk%2F34hX7LfsYBukt%2BWba4gWHWmj%2BsWdpK0Dwqy%2BoWkonJE%2FvHZOfNcKdasnk80288TN6EEqxOXNWSOJiS7n2p8eB4bySw1ilv8Au4OQk47kKo%2BLv%2FLX7WK6jr4u9Uee1jItndiIiasyv9sV%2Fl3wWAFZBbvYajqsV%2FDSP1yITPUgSKH9SSinYcIRw%2BH7TSJhr%2BYOr2sOkWmnhHSK6YiRolFF5A%2Bn6ngJif8AWyP2ML6dbiRI%2FrqsAI3SRAsMY%2BxHKrlGhfl%2FefB%2B8%2F3XgXXYppJG1m2unkbj6Op2pUSKVAqksSNsif5L%2FFH9vHoUlrytdtDCgdmV7d5I2boU%2BINGT%2FLhpr3nLTKJ9UT19TB4zNHtCe3Jj3b2XIssp1Y8bUfFOQsix7SCSlAXpTmj4av5OnsdM%2BuzB3Zm9OWaNGD2%2FMgRTolP3sXP4Zv92fyYi6oITDVrG28x6NBeBvqWoWS1ivSeIikU8jFI%2BzLA6%2FGn%2B%2B3yFaq1pcXix28ZUGi3U2wadx%2FuziAEWv8Aq%2FH9vDLV7TzXeWrqbaWO4VhHeNHtFdCP7EhX5D4v9%2BfbwpC3liGgvIoVdSqt6pLPGr0pTj%2Bz8Xw4CUkEGil7RwRu9ZzwjPx8UZiKePShyb%2BRfMdhHM2kLEV%2BsDlDLQFncUCxcRX7WEF1DCs63zCs6r6c1Nkencr7rgXSpFsb5zCForepC9PiUEfZr4DADRVD%2BddUkPmPU4lUgVNtNG4qDw2Bof2kP2GyK1LECpY%2BAqTnUFhsta1Ce%2B1G3inuZCrySsgqwqFNRkwu9R8m%2BWIwscEHrharDBGjSH5tT4f9kcIoop4da6Vqt2GW0tbiQHbikbkH57UwHNFLbSvb3CNFLExSSJxxKsuzKwPQjOu3%2Fmq%2B1mFo1C2NmFMjhTQLGu%2FKRtumQfU%2FMWh3uoTXx0r1pJePKSWSnJlVU5lQNufHnhQxmOYxklSPiFCDvUZQKUIpUn7Jr0%2B7D8eYrBP7nRbUf61W%2FhmPmtkBFvptnEezCMkj78CpRZOY5w%2FBmWhBCjseuSyyn0pIpIr2CSr2gtbYTQt6aylufPp8PBWbCZPNurROskYgVkYOv7tSAVNRtg2780%2BYPNd5CdWuRJHEWkWONFjRaih%2BFAPljsqLeRrVh%2BjQt3GBRoXBBKAfFwag%2BLJ15B17yfealE2taTHcXMG63Eq%2FvbYL%2FvyH%2B6eFK%2F3iJyT9vAXkPygPNEuoxx3KQ3VrAHtYWP8AeOxpv%2FxWqijMv2WZMLdS8vBLx4pg9jqVqTFJIvwup6fvP5lP%2FDLillv5i%2BStPtL867pEEcem6hxkivLWjIk%2FevHb05ftZF9Okd5Et5mayvoWEtrdRmnCUfYmhYfzftp%2B3k3%2FAC68zLfx%2FwCFdWt1eElrbUoW%2BwGIrDPGv7CyU%2BLj%2B18eIeavKM3lq7WqfWNOkYizuXFeNesE9P8AiX7WNbqCncfm2fzRoUmg6zEqa7ZPDPPCv93eQRMC00A%2Fa%2FZaWLCHzf8Al7oOra5b6h5KuBHe3rj61Ywr%2B5Xlu0%2FL%2FdDfzx%2F8Qwpup4VWBrORhfW7iS0YkrJbkdRLKv2om%2FY4fbzsvkXU7fWNHju3jhj1ZAI9UEKhSJvEmg%2BF1%2BPEhXgPm%2B98y%2BWriTyxrM0iCMBo5VVW9aDoJIZm%2BLif5ftRthN5X8zxWXm%2FTZ9dHq6HH%2Foz2z1eNLd1Kq4TvwY%2Bo2el%2FPXkjTPPGkNY3n7q7hq9jeqPjikp%2FwANE%2F8AuxM8mazo%2Bq%2BV9UuNI1KL07y2PFlbdWU%2FZljP7UTfstih9Jy6d%2BVV3f2dja3ltHe6ipezS2mrzAFfh%2B2iMf2K%2FE2Xcfk5ojoTZ311bz1JEjFXG%2FitE%2F4lnlh3USLKCY7lSGLQ7UI3DA9mz0L%2BVP5wLqxi8s%2BaZRHqIpHZX0hAE9NljlPaf%2FK%2F3Z%2FrYqqal%2BS%2BoXb2EYvraWG3kcyvLG3IRuwY%2BkgPFW2PfJjZ%2BRruwuFa21iRYFACKFKsKf6r%2Bmf%2BReTUDxy6Yqo20LQQpE8rzso3lkpyb58QBi2bNirs2bNirs2bNir%2FAP%2FT7%2FmzZsVdmzZsVdlEA9cvNirzb8zvIf6bhOu6REP0tbL%2B%2BjUb3EQ%2FZ%2F4yp%2Bx%2FP9jOHagvqWsMw%2B1ETGwPWh33z1znI%2FzL8hqEutf0qP4JRzvrdR9lwR%2FpCDw%2F37%2FweRnGxTtNBreExw5DsD6Sen9F4gpphto2prYSSQ3Ketp11RbyAiu3QSoP50%2F4ZcK5YzG5Q7eGPEUyRpMykRSEhH7MV2IzGAkDY5h3OSEMkDjyCxL8beaZaglxoOpxTW7qLSWkmn3cX2eJ34nx%2FwApclMsen%2BcdIeC4QCZQPXjH2kanwyxe2RjT7%2B2e0bRtVHLT5SWhl%2Fat5Ozr%2FxWx%2B2uJWtxe6HqSw8wtxDvBL%2BxLGegP8yOMyceQEbcuo7nnNVpZ4JmMtwd4y%2FnD9bENU0y80C%2BazuRyTrHIPsunZh%2FTKil4kSIaj%2BGdZ1HTtM846SXUenKv2gN3glp1%2FykP%2FD5yO9s7vRb2SxvU4sh3I6MOzp7NkyOo5OKmSuGUMvQ9MMdF1m40S%2FjvoAHUfDPA32ZIz9pGH%2FDIf2Gwjt5Qh3%2Bw3%2BdcFnrir0GW5Kyx6hav6ltfqDHddW5Dbi1do5V%2Bw6%2FzZLPLbQ6nP8AWrpAby3oJGI2kXqkrfyyqR9rOU6HrKWHq2N8Gl0y6p66Lu0bjZZ4v%2BLF%2FaX%2FAHYmda8p2i2tk8sjrI7miTITxkj%2B1HJQ7huJ%2BLJR3K3snuq3fo2ruoqQC3idvsgD%2FWpnMJ%2FJ%2Fme4Msq2jC9tuUaXcXER3drJ1japH72NW%2BFmX%2Fit%2FwB5nTdIksyzW0c%2FryxVZgzBmCsa4eCZAKHDIWgbPDvK9jquh6xaW%2BtW81rDL6lozTKaFJQVAB%2BKtfhwvs47myvL%2BNQfTs2kD9UK8gQKlv2Xp8StnR%2FzQ1GW08u%2BlZO0d3dTxxQshKsKHm7hh9jiq%2Fazi6MxEiI5YOa3NyxJMjVrux%2BIrlctmQ3TS91E3jCG2jHI09R1qOdOgFf91r%2Fw2CLKFYxyJBIFZJOwHgMC2NryG3wRnq56t%2FZhusZiihu7cMWt5ir2zpyikUAU9T%2BYcuWR5pdPqiacQrWqXCzR1USVBAb%2FAHYp%2FnwutdVhtdTa%2FgWVBOAk8BcNG9BTqyk4c6rc2dxe2F3c2kcKJGI7qx4kUjpyR0B6Vr%2FNhBqc9haSxpHERaXRaWIt%2FuvcoTRa75PlyQn%2FAJZvYI%2FMUS2SNELiVTEygUjnVW9OlftI8hVWVsnSXVxfTGS6laSViCS2wodjsNs5%2Fo8rrL69qwd6pIrqAw%2Fd%2FYPw9OmSua51GVJ762swQXLCD1AiryNQrMfi2%2FyVwxKkIjW7%2BezjR7PTpr%2BUbv6WyUH8zfa6duOEPnjT7SEWmrxxkSXatazowA5KY%2BScgD9qIrxwQ3mPX7EetqFhAtqPtegzySAewA45F%2FMHm1dcRIGjMdvC%2FqRIKcuVCvJ2%2BR%2BzglLY2yhjnLaESfcEquburW8M5HpzKvIr1FaDl79cRbRr6S8%2Br245GCoac%2FCjKp67%2FwAww%2F8AL3li01qBLgPJO8f7t4wP7s%2FsE9fhOHer%2BVtfgg%2BvabcJe1FJrPjwZVUU%2Fdy%2FR9llyIFixuEzjKEjCYojmGM6jaajZ28RjBiEisJzULTi3iSKR0wboHkTXdWt21OLT5ru2A5RlN1k8SrsVWT%2FAGD5ena1aXA%2Bo6pD%2B9J2WcenL%2FlBJR8D%2FwCrnSfy880W%2Flyzl0m7uJZtJR%2BVmXSsltyNXhYD7cP7ScfiT%2BXDXcxosR1D8rvP2qWUdlZadHZW7kPcPcXEYeSn2EKR8%2BKJ9rh%2FNkRu%2FwArtc026ey1FooJo9yKs4IP7StQclz0brf5jeXtKhR7eYX0sieoiQHYL29Rv2Cf5T8WQ7W%2FMj%2BZrOKd0t1Ct%2B6eDk7xMaj05CaNxb%2FVwEgCy249PlyECMefJ4235fXQ63Uf%2FAt%2FXC7VvKsmkfV7iab1dPlISW7jTeFz%2BxJHWoPg37edQ5kyNDIvpyx%2FbQ%2B%2FQg91OB7hFCurIssUq8JoHFUdD%2Byw%2FU2IIIsMMmKeOZhkiYyHMF5g%2BhCNipcyFf3nwD7cH%2B%2FoT%2B1x%2FwB2J%2BziNyW01%2BNseVtMoMc4G7VH82TCbyxfWMxtUMlnDIPrOli55JIh%2FwCK2ZeMqthYYOMVxBNb%2Fu2HK%2Fsl6JU7Xlp%2B1xDfbT%2FdeFgmPknW7q0eC%2FsZ%2BOoWTck5ftRnrG9PtIfstnatY0iw%2FMfQ4%2FMWh8bfXbdSjxnbmyD47S4%2F5ky55gWcaZqDPp1yZo42Ppz8SvIePHOn%2BTfO2qaXML%2FSHiPqcRf2M9fTYf78Xj8XIfs4qoWsGsQ64Tpp%2Bo31zGbK9WYfFE8Z9TceI4FP9lnpNbWDVdGit9RRbiO4gT1g3QkqCW9jX4lzksE1z5382DU7WzEKoqq5UVAoOIeV9uR%2BL%2Fgc7RDGsMMcS%2FZjUIPkopj0UvHtQ%2FKnV9H1F9X8vXCajyYt9TuQoYLSijkx9OTj%2FlcMS8q%2BaLny95guoNYs2s%2FrfEXsLLxKyJXjLH4pxOdpwl1zy1p%2BvCOSctDcw19K5ioHAOxU1HxJ%2Fk4otNoZYriJJoWDxSKGRh0II2IyF%2FmN%2BXll550z4OMGs2oJsLynfr6Mv80L%2FwDCfayU6RYNplhDYNMZxACqyEBSVqSoIH8uDj0xV8NappV7pd7Np%2BoQNbX9qxSaJuoYfrr9pWwuSNg4NSHBqKbEHxrnrL80Py2g86WX1%2BwCw69aJS3kOyzoN%2Fq8x%2F5NP%2Bw2eXm0q8guZoblGglicpNA4pIroaMjfy0OKvpf8lvMusa5ol1ZazOLqXS3jiiuTvIyOvJRIf2ylKc86eM8y%2Fk35usfK2r3FtfyMtjqoRZZ3qRFNGT6bP4IQ7I%2F%2BxztF1%2BaHke01SDR31aN7mZ%2FTLRVeKNu3qTD4F5dMVZlmylIZQwNQdwRuMvFXZs2bFXZs2bFX%2F%2FU7%2FmzZsVdmzZsVdmzZsVdjXVXVlYclIIIPQg47GSOsaNI5oqgsx9h1xV4R%2BZvkA6VK2r6VH%2FuPlarIv8Aulz%2Bz%2Fxjb%2Fdf%2FA5EoJLK%2FwBFh0yOJU1AyrH6oABboqJItebtyJkjZP8AKVs73qnm%2FwAsyW89les7xzwtSMxMRKG%2BHghpx55w%2FwAy%2BWpbIHWNNjeGKFkDjlVw5%2BIPGwp8S%2FtcfsZGUauQHvdvpNWJxjhyyMZA%2BiXQ%2BUmMXNtcWVzJaXSGOeJisiHsRtll1uLf6rcMeKb20vVoW%2F6pP%2B0v7GHsLr5ptvq7mOPU4ElmEhHH1eCII4kp%2Bz6aO7%2FtephBNBPbytDcRtFNGaPG4oR7EZVKJHrhz%2B92JjDPA4cw3HMdR%2FSiiNG1m7028EiEC4j%2BGWMn4JU7qf8AjVslmvaBp3nLSFvbCiTKCY2P2opP24pKfs%2F9d5BTFFIys5ZGX9pKch9B65JvKmrSaVdevxea1m%2BCcEFQyj9tR%2FvxMtxZBIV8x3Oi1eknp5Ud4n6Zd%2F7XmskVxp11JY3sZikjbiyHsf8Amk%2Fs4caPay6peQadE6rJMwVXboF6k%2B%2FEDOn%2BdPIkfmSyGp6QA12qc4JFpSVPtcG9%2FwDjfI35a8qzaFNa3urKrXLmscfI1gP7NSv2n%2FmywxouIN1DWPKDW95DY6K0t5IfgnaUKgD05cl49I6H7TZ0bynBAmmjSVvhcz2qEM60%2BHnVRw9om%2BH%2FAFsItfhndg1q%2FpNdxmIuDQVU%2FECf8oYReSLk6R5nWBw1bmT6sSD8FGBb4h%2FNyXDyPvbsWITE9%2FVGJkB30jPKV1PpOsrBduRLFcPb3JY9VditW%2F2XxZ0%2B91O2spIoJWL3E54wW0Y5SOf9UdF%2Fmdvhzm%2Fm2w%2BoeapJlBVdRjWdCDsZE2cfeuHdvfQW0BngZptVvEH1u%2FlG6gj%2B5hH7Kr0xHc0pD%2BYg8wa1NDFZWjSWtsrCRoiGJcn46b1YdF2yFWemzxsW1CN4Ej%2FZlUofubOs2WpxpNGl2oMP2eSbEe5yTXGkadqFpJaT26T2860YEVBB6EHx8MeCzdpunlEtpHYQ38GqRrFNaPA8EgJcFa%2FGqhadao2XBGlmbe2uCzevbGeRo2PcNJx%2F2S%2FDht51s3sLpYLoH6ncIq21wRU1UceLt9Hxf8Hhj5f8pXerWc%2Bq2VrHqE1oqQWdvNLwUoijmJB%2FO9W4%2Fs8cjVH3LezEvM2mXWqyabNozB7SS1WJ5SwBrHWnLv8A3ZUbfy4onlazmtrKC%2BJlNoHFFNFbmQaHvtTJ9rPlzU7GOO6vrRbeNioQQMrRxmn938IXj4YE0fQLnXBdQ2062l1CP3SSry9Xav7og0%2F4LDsikps7C3s1WK2iWJB%2Bygpg5lNOX0YAVr7TL0xXsxcxsVlhktwpFPtLVWwbf%2Ban0e8tp7LTYrmyILlpyT6hoRw2%2Fu%2FTbdlw3taoK4v7a1dY2dW5GjQ1qVHj%2FwA24Vah5a03VlNxZEQTtvyX7LH%2FAClyfjyfo3nrTrbV9PRNI1i6gM8qRENC8gb05OUI%2BNR6nR1%2F4HIRqOj655Vu%2FQ1SBogT%2B7mU1ikA7pJ0%2FwBi3xZGwdizhOeOXFCRBSPSZNX8maml1MhNsfgldPijdD1H%2BS37S8s6ZLrEEZt2uEe1W6VWtLsg%2BlKGHIGOReS%2F6wOR9dWtRp11dSQ%2FWHt4Wk%2Br93IGyU%2Fysk%2Fk%2FW5INATT9Z0eAWczGT6gr%2BoIlfcgBxsf2vT%2FAGMYxMSeE2D07m7PqBmjEzjWSO3EOUo%2BY72M%2BYfLcd3FJeQRxyo7EzQU792GQ60bU9Hkf9HTAwts1jdVeNl%2FyX%2B2n%2FEc7ZL5XstVSS58p6kYZqVbTrysif6tWPrRr%2FspVzmuvaDq2jzsup2JtA5NCfjtmNf91Tjb%2FYyccJ8tmgJPqV4JJLJpI3sYLqJ2uY%2FtBgP91q6jpIy8Vw0sNNn8tG11m8KWNnqTrAums5YhTvyct%2B0R8fw%2FYb%2FWwLdRpfaVEkkPO50r1HhjJALRSg9HpX92%2FwCzgSW4TV9Hga5uppdVspFt7a0FOMNshHJm3VuZY8fV%2B0zfBlZHq3BNigOnm52LIfDHCYwMCJmVXI8IqMYnzI4f85l%2BsRQc7eSKVRPHKts4ruUkPAcv9R%2FiwbZaY1p5gtrHUoipjnjWZOo4lhRv8pGwcPL9pcROZo2S6ZkaXgyqoaFVk4hn%2BJ9uPqNxwVrmsWupvYzalF9S1K1lTi6GscsYYMpV%2FFWUNx%2FlwYoSjd8jybO0suLMcUsdmUQROxRrnH75PQtd8vaT5itBZapAJI0YPE6njJGw%2FajcfZzg%2FwCZWh3GhW%2Fr2wH1vSZ0DXlPia1m%2FuZuK7MV%2FuLj%2BbPQ1pdR3ltHcxGqyCtOtD3H0HIF%2BZFnb3k8EMqhxPBJHOh6MnIUDfSdssDq3zfqWmR6lFJqenRCO6iHK%2Fsk3FD0ng%2FmjfC3SNVudJuUvrKQJdQOrxc1DoafaSRGqrK%2FRlyU32i3XlnU4RHOYrF2Isr1hy9Jm%2F495%2F8AimT%2FACsKte0Zp%2FW1Kxg9KaL%2FAI6Nipr6bH%2Fd0X88En2lfFX0%2FwDlz5x0fzbpAlsIYrO%2BgAF%2FYxBVCOR%2FeIBTlE%2F7Lf7HJpniLyz5m1TyrqVtq2ly8ZYzuvVWX9qOQftI37WeufJnnHTfOekJqViwSZaLd2pNXhk7qf8AJP7D%2FtYFZJmzZsVdmzZsVaOct%2FNj8sx5ntJNb0NfT1uBayxrt9ajUfY%2F4zqP7tv2vsZ1PKOKvhz0CsbwMzqSSHPRgw2%2BL3%2FmwrlheB%2BD9exHQjxGeqfPH5Oad5lupdW0icabqU3xTqV5QTN%2FOyr8SOf2nX%2FgM59H%2BQfmu5nWC9ns4rbl8U6OzMB%2FkpwGKr%2Fyk%2FOBtOMPlnzTMWsyRHY6g5qYq9I5j3i%2Flf8A3XnoxWV1VkIZWAKsNwQehGc68sfkv5Q8vBZriE6rdrQ%2BpdAemCO6wj4f%2BD550VVCqFUUVRQAbAAYq3mzZsVdmzZsVf%2FV7%2FmzZsVdmzZsVdmzZsVdiNzNDbwSTXLBIUUmRj0A98WwNfPaJbSm%2BKi2pSUv9mh2pirAPON5pMWiStoiPJfM1bVI4yy1G8jDkCnwrhDrD6jFb%2BWbC7Wt36Ecl%2BCP%2BKiZHbtyJajf5WDvP9xZRaNCfKtxKb4zj04IOR403JKkfAOfH%2FWws84ajNd3EEklFuSOUtK%2FDRVXiKduQOFIeeatpk0F5PeaUj%2BlATLIYwSYhXd%2Fh%2ByleuLP9U12ykmiWO2vrWOW4n3PxgcAFXmaty3cf77%2Bx9jO1%2Flvo0EejT388SvJqDMjFxXlEvw8TX9ls5h%2BY%2FkSTyne%2FpHTVY6LdsVUj%2FdDt1hf%2Fitv91t%2FsMgRW4dxo9X4vDiySqcfon%2FO%2FoyYJsQGHfJL5FsrXUdZk0m6uTbR3UTvHQAgzRjkONSODla5GgcX0%2FUJNL1S0v41DPFINm8G%2BE%2Frym%2BHMD0k52txeLppjqPUPfF6l5X8xWlm995evZlguLSdkjR9gTWjrXovP4XTEPM6wwzKSKCT4tuoIO%2B3vke80xXU2tW13ZQ%2Bo15bq8npJ8UlELVp%2B3sMBWOsXOtWy2iEyXNuCyIw5Myf8VsaseFP7tvizL4tq%2BTzNUfvT%2BOU6npky9ZrciVAO5Xw%2Ba8sis01rp%2FmC01O5YrSWJ4kXcyFiB9nsK%2Ft5fljzLXzMlg0bRQujQESbVlDcl5IenL4kyeebPIp8y6j5e1DSEjX0XWO4QsqKYk%2FfRgV%2Fb5gx8cHMe5lGUom4mjuPnzSW%2F1OfVL6R7sJW2keKFUGygGhIJ3PKmNVy%2FTAk1pdWc9zBdrwuElcTIezA%2FEMj%2FmjXbvQtaW3tEBgCJM6PuCHFQExtizSKI1DHJv5VuxKrWMp%2BwC8JPh%2B0v0ZCNLvrfUrGG9tjWOVQfkf2lP%2BqcPdHme3vIZV24sKn2Ox%2FDJBSyzzBplrqWnSQSxLI0P76EsoIDqO3%2BsMgmlaxceUdRXU7ZS9jJRb62XoUP7QH80f2k%2F4HOgXdyVYgHp1%2BWQW8g4TzQyoQpJIVh1VuhGJCh7FG9hrempKhW4sryMMp6hlYV%2B%2FOWa%2FbXfk%2FU0ZJOEL1ayu2%2By1P91udv3if8OuCPJ%2FmhPL1xaaJetx0y4rFFMx2imJJSvhHLXj%2Fr4N%2FO9G%2FwAJ28o%2FYvY69%2BqOMgdlYzqPmWy8xr615aouoxAA3dk4dJB0%2FfRGjofBl54U%2BnCySRNSa1l%2B2vQq3861%2By65GPKcztqxjY7NEw4jYbU32zoNppF1qfrw2JX6yierHExoJivWIf5fH7DYYnZaY3pN9N5N1n9JJEbuIwyRoisY1kDbpVu3F%2FidM7xpl3Y%2BadFt7m5tle3vIUkaCYBx8Qowof5WB%2BPONG0jvLY28qlRUgqwoyOOu37LpiXl3XbjyZqk7XglmtZIfTEKNQGh5REFvsxr8XLjgIrdWQedvy7GiQPrfl4SNaxVe5s1q7Rp3ki%2FaaNf20%2B1kT07WGCqwcMjdJFNQc9C2N9BqNvHc29WiljSVGI2KyCopkFv%2FwAotHu9cOq2d1JYW0x53dhAo4O53JQt8MYf9ocMFyB23ZwGOQIkeCQGxqwfIsatNQSQrIrmOUbrIhoQfEEb5LLHzPP6X1TV4RqFo4ozFVL0%2FwApD8EmFms%2FlxeWBNxoEpuIhubSQj1B%2FqPsHwo0%2B4ltUmW7Ro5ojRo3BVhT2OWCi1t%2BbPJ1pFCfMXlJgtl%2Fx92VCyRHuwjb4kX%2Bdf2ciOlG2huhcX2n8JI2BE8FHHzMTb%2F8TVc6FpWutaySPblJEmHGeCQVVwP1ZGtcsIbe5N3p0Ui2MlWaM7mB%2FwBpQ4%2B1F%2FLkTGulhnDIYnYprf6tYaxaxxCDlxIaG7iko8Z7kGtWr%2B3ywxsdGl1WwitzGbkgkRzugDGnRm34R0%2FZbIJBZwxv9YhAVx8Qp0JPiBnafJl1eXekLNdyrKOXGNgADQD4g3Gg%2BE7Y8WyTLfiHNJbbQvNHle%2Fe50eQX%2BnXAD3Vg53EoWnKImhQmn7Pwv8AyYRX9xql1dmXWOS3XHiqMnp0QEkKq%2BA5fazrQwHqOmWmqQGC7j5D9lxsynxVsFsLeO39hb39tJbXMYlhlHGSNuhB%2FUffOZXy3%2Fl7UV05n5MgrpN1LTjLCT8VncEj%2FYf5Odt1nQbzR3JcerasfgnA2%2BT%2FAMrYB%2F5V3Y%2BdtAvhefubrn%2FuNux1jkQUYkD7Ubnir%2F6uEq8D1rTFk9XUdNgaHix%2Bu2XVoHPcD%2FfbfstnQfyAeb%2FFktC%2FptaSF1VgFNGTiXFfiA%2BLj%2FlZC9WuNd8p6kNM1e04anYsY2mY7TW%2FZG2pKjfsS4K003mkCHzl5WmDLazercWoB9WCvX1FB%2FeQt9lv8nIofYNRl5FPI3njTfO2li7taRXkQUXlp3Rj0Zf5on%2FYbJXirs2bNirs2bNirs2bNirs2bNirs2bNirs2bNir%2F%2FW7%2FmzZsVdmzZsVdmzZsVdgHVY9PmtHi1JlW3cgEuQBUbr1wdgPUdNttTtzb3IJWoZSOoYdxirzHztP%2Bi20aTyvdm6uDcJSCMJIPTVhRWKj7Bbbi2B9b8keZrnV3FvberbsQsVwHUKFJ6tU8hSvhk%2B%2FwAPGy1GwvLOkqK5ju0cIP3YQ%2BnItAPiif8A4nkkphKQaQOk6eml6ba6fGQVt4whPif2j%2FwWO1LTbPVrGfTr%2BITWtyhSWMjqD%2FEfs4MzEVwIsg2Ni%2BVPOHlm58p65NpU1XhP72znP%2B7IWPwn%2FXX7En%2BVgW28s63f2kWr29m76Ys6xyXQpxUggNUfa4iv2uOen9c8t6J5it0t9as0uo4zyjLVDKf8l1oy5EL7TriGW30Lytp7Q6Dbs0d7xI4Oz%2FFWPlycmNvib%2BfKziufETs7WXahOn8Ph9dVIn6a7%2FewDzPd3ukNplzYtxtEhW2adVBKzRktTkalOdf%2BBw60bydZ%2BaNR%2FwARaPq0VjOIw509bcLIkw%2B16yh%2FjRm%2F3an28de6dLYTXGk6xDztpx8aHoyn7Lqfb9nI3YX%2BreQ9ThS3pcWhcvazMBWSE%2FbgaQ%2FF8P8AJlrrDvunvmryB9buFvzAtnrkQD84z%2B6mKHkGRtu%2F82HWnO%2BoadLpU5aC4ZeUL9Gil%2B0jKR0aOYZOLO80jzho0d3Zv6kMn2WFPUhlGxVh%2By6H7WQWaO80rV1hvwBMjcfUAoskTbLIP%2BNsIr5oSu10tfOt7Ikt4th5ijQC6hkSsdz6fwfWIiCCr7UmTj%2Fl5JG%2FKTSdTjg%2FxDILh4UCUgHD7P8Axafj45GPMdkYtRkvbWf6jewEXNhcr9ppT9pEVatJWnxJx%2BznRPIfmz%2FFujfW5Y%2FSvLZ%2Fq94gBCmQCvNQfiVX%2B1xb7OA2NleaX%2Fkr%2FA19Jb2rO%2BlXbc7UvuFbuvL%2Bb%2FiWC7M7HOuarpdrq9jLY3i8o5Bse6t2df8AKXOP6jbaj5dvpLK5USBd0fcB07Ov8cMT3qkP5l6trkWp2kNi8sVr6CShoyVDyH7RJHXj8OQpfNfmCN1%2BsXcsnBeCrOfUAUdFHP4uP052ny%2Fq2g6veR6T5hgX94Almsp%2Fdsw%2F3W%2F%2BU37GSHUfyp8n6hUpavZse8DkD%2FgH5p%2BGCXNeTwM%2BbzeWxtr%2B3SVHFGMZKMP8oBqr%2FwANh9qv5gpr3kVfLV9zk1O3uIjFOwrzt4w1GZhUeqn2P8rJD5i%2FJJrK2lvNKufrSx%2FEYCnCXiOtCpKPx%2F1M503lq7tpDxDNUUUGlPwyJtWQflfpMWseaFtLgssZtZnDJ1VhxCn3651e38qanp%2Bs2ZX95brKG%2BtR7UVfio6%2Fs16YS%2Fk3pGmWxvNR%2BspJqfEW7WnR4kryLFW3PqN%2FL%2FLnW8I2UsW8x%2BVo71n1LT0CXp3mjGwlp3%2F4yD%2Fhsgl9oyXUaxX1u8LoCY2dStV%2FaG%2Fgc7JTEbiztrr0zcRrIYmDxlhWjDJCXQoeVeW9Rv8Ay1PKL25kuNO9ELEo%2BIjgaoKk%2FAqJyzqtrdQXkCXNs3qQyqGjcdCCK7ZFPMPl1Yg95aLWA7zQjfjXqw%2FycB6JrNzY3BW7uAbARKgUqSQVIC8KfCq8K8vhxq9wlntK4DvtJ07UgBfW6TU6FhvTwqN8FRyRyoHiYOjCoZTUEHH5FDC9Y%2FL6wuSZ9Ic2M3X0tzEfo6p%2FscL9B%2FLy8XVJNS8y3Yuo41aKz0%2BEkQrGwoWlO3N2zomVTDZV4l5n8s3Plq94oS%2BnTk%2FVZj27%2Bk5%2FnX%2FhsMNI893Wj2ht2thNVSEp8PGSlBK%2F%2BSf286nqOnWmqWcllexiSGQbg9QezKf2WGco13yhdaVMUT95A39zL0DDwPg%2BIZc3pPlzU5dStGa4IaeNgGZaAFWHJWoMOc5v5E1B7Wf6tcAoD%2B5PLb3jP0fYzo4xIYrZIo5UaOVQ6MKMrCoIPtidrZ29lAttaoI4UrxQdBU1OL5sCsO8%2FwD5e6V5708RXNINQgB%2Bp3oFStf2JAKc4m%2F4XOIWX5R%2FmVoOpummwIySAxNMssZhZG2q3Mqen80eeoKZqYq8l8h%2Fk%2FceW9Qt9Z1DU3W4gPJLS0JCEGvwTytT1U3%2Bx6arnWs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F1%2B%2F5s2bFXZs2bFXZs2bFXZs2bFXUzZs2KuzZs2KoXUjILG49E0k4EKetK43TYkhsoQp5EqGZvEnvgp1DKVbdW2I9jhDdaDqT%2FuLLWJbOzP8AulEVnAPVVkb4hiqB8wWUXmS%2BXTYWQi3ikZphuUlqOKmn7P8ANnOtRsiPW0TWUKqD9ofajYfZkQ%2B3%2FDLnYtH0Wy0W3aC0BJc8pJHPJ2J8ThV5u8tJrdoZrdQL6EH0z0Lj%2BQ%2F8a4bTbxXQPMGq%2Fl9r7mSs9jcUN3Cv2Zo%2B1xD4Sp%2FzZnaNYhtfNmgRaho7JcMwE1pKCASP246%2Fsn%2BZf58gsugWWtaPFp1xRL21qFkFCyP3U96YR%2BUfMt7%2BX%2BqvpmqEtpUsnGeOtQjE0FxD%2FwAzUxOy%2B5kHmGCOa1s7%2BVeEsFYpHI3SvwyBvDi647RtH1by3qEXmPT5VlgnWmo2C1Amj6rIrH4RMnVcCz3FvJ5x1pIqX2h30cVy3ouv2nQEeka9XZW5ZJNPult7dbZpTLasP9HlYUalP7uVf2JlH2v%2BEw891ZzY3tvqNtHdWz84pBUHoQe6sP2WX9rC7zJoEOu2Xp7LdRVa3lPY90b%2FACHwi0IahBqtdOo9hKf9LjY0Vf8ALU%2F78ybZFD591jS3R3gnRo5Ymp4MjA9snHkr8weRi0LzJII7pQEtdQc0SYdFWQ%2Fsy%2F5X7eH%2FAJw8uLqMDX9qg%2BtRL%2B8Uf7sQf8bLnJbuyjcNFKnND1U%2Fw8Dh5pfQo3Gc487eVFhMmq2KfuHNbmNR%2Fdsf92KP5G%2Fa%2FlyPeXPM%2Fmfy2Y4pmk1PRqfBBKpNwiDr6E3%2B7OH8j51%2B1ubXU7JLiKklvcJWjDqrDdWH%2FEsV5PntoFiuUuQOFxFvHKpKsPpWnLJZ5b8w65p1xEguXuIp3q8d07P1%2FZVm%2Bx%2Fkccbr%2Bhm2125sbPggX95AZq8FRhy3p%2FL8Srk181aDHqempqtvRLu2hDngPheMDmV%2F2P2ozjsrKLW5ju4Eni%2By4rQ9Qe4OL5D%2FACp5hgu7iOwkkUXFxD6yx9DWM8HNMmGJFFDRFRQioPUHIhrmgrAXubdK2z19WOleFepH%2BRkwymCkUIqD1BxBpWIaNq09o31WURrZoiem32ePEheCIB8VV%2BLJcGB3BBHtka1LQXVne0XnC9eUQ%2B0tevHxXA2lxazHfW620rx2atW4gkSqFOPCgdvjDClVwkA7hWYZswzZFXYnNBFPG0UyCSNvtKwqDimbFWE6voE1hIbu0Be3BrQVLIP8rxXJRo92b3T4Z2%2B1Ti3zG1cGkAih3B7ZSRpGvCNQqjsooN8NquzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Dv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxViPmbyo91cfpvQiINVT%2B%2Bh6RXSD9iXwl%2F33N%2FwWQzW9AXXo%2FXaFg7L%2B%2BhK0mjdBuafzACjrnYcDTWNrPKk8kYMsZDI42NR40w3tRW3z1p2l6ho%2BotLAfXVE5OgDVljA%2BLj%2FxZGv7OS2BbeaRbscpI5YuLQq3ETIfiQcv2ZVP90%2F8AsMk3mi1FjqBnt0CpcIHIUU%2BNT8RFP5tuWRDTFEulwPaP9YjVSfVjBIFGPM%2F7BvHCOSXqXlu6trnTI1t7Y2Zj%2BGW1YhmQ%2BJcfb5fzYcZBPKl1I7GRXHKGi3AY%2FajPRvdsnQNd8BFFDjnL%2FPWhJaXguIKRw33KngklPi%2F2Pxcs6jkY892Ul3onqwoZJLWRZeAHIlT8D7fJsAVBaLpUeueS9PtriYPcWykQXkfZ4yVDD%2FJP2WwX5X1NJ2NrQIGXkoXpzQ8JP65GPJfmOTR5G0zXLmGCzlYmzhZPSeE05ceP7UTjfliOhagkWs3CW0gkUXbPZjoZVkY8kQHr8OSHUJZD540vmYtVRBIAvoTo260JrGzU7cvhzaJ5jgm0t9O1u7giu%2FRdY%2BJ48oyCg%2Fd9QyfZ%2FwArJhPBFcwvbzqHikBV0PQg9sgt%2FwCSLpJy9pxniPRiQsgH8rfzYB5ql%2Fkq1hXU4ZigNwjsizftemU3Uf5Jzp%2BRXyloF%2Fpj3FzqYiR3YraxREsyx%2FzTOaL6j%2Fyp8CZKsSUOzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Hv%2BbNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxV2bNmxVg35iPrMEFld6XbR3CRM%2Fro1fUIIHwx%2Fs4U%2FlrqOkz3c1lYQmENFJI8DCgRzIDIg5b1JavTOiajZLf2cls1KsKofBh9k5ydpJPL%2FmzT9ZcBIWY2t5sFoD8Ls5C1%2FwCDkyQ5KyjWdLGi6ml3brSyvKxuo6I58P8AJPVclOiXZurPi5rLAfTf5fsn7sE3drBqFq9vLR4pV2I7dwy%2B%2BF2j6Xf2F5dS3EqNbyhViVa8iV%2Fbfag6%2FZXBdj3KnWURXLzYFYV5n8n3us6ut7btEITGsbc6hl418B8WFd75Ym8svHqVqPrQiCsJSPiikH2jQfsNnScayhwVYBlOxB3BGG1Sby7rf6YgZ5KCZftIBSmHeFllodlp95LeWqlDMKGIfYB7kDDPE%2BSuzZs2BXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F%2F0u%2F5s2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZFfM%2BipLW%2BSJZAf71CtaMPsygf8SyVZRAIIO4PbCDW6pP5YvDd6Wiu1Zbc%2Bi%2B9Tt9mv%2Bxw5xG3tbe1Vlt41jDHkwUUqfE4tgPNXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFXZs2bFX%2F9Pv%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV9%2F5s8AZsVff%2BbPAGbFX3%2FmzwBmxV%2F%2FZ');
+ background-position:center center;
+ border:1px solid #00aa00;
+}
+
+.yui-skin-sam .yui-h-slider {
+ background: url(bg-h.gif) no-repeat 5px 0;
+ height: 28px;
+ width: 228px;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-twourls.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-twourls.css
new file mode 100644
index 0000000..8ff8285
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-base64-twourls.css
@@ -0,0 +1,27 @@
+.yui3-skin-night .yui3-dial-ring-vml,
+.yui3-skin-night .yui3-dial-center-button-vml,
+.yui3-skin-night .yui3-dial-marker v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night v\:oval.yui3-dial-marker-max-min,
+.yui3-skin-night .yui3-dial-marker-vml,
+.yui3-skin-night .yui3-dial-handle-vml {
+ background: none;
+ opacity:1;
+}
+
+div.base64-singlequotes {
+ width:100px;
+ height:100px;
+ background-image:url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAAAAAAAD5Q7t%2FAAAACXBIWXMAAA3WAAAN1gGQb3mcAAAFrUlEQVRYw%2B2Xz28kRxXHP%2B9Vdc8vj2fG9uIkm2yUeFGEhNCKQwBpj1yRUBAnpJU4ceZP4MxfkBxy2GO45bQXuEGQohUKigQ%2BsBBE1sbYXv8Yz%2FRMd9fjUN09PV5nFZA4kZZa79W3quu9er%2FqNfy%2FPwJgZty%2Ffz%2FZ29vrpmmqhlWTgmFg1UpbfWhYhG6Yq2cFi%2FNrj9nJyWnx%2BPHjeafbMTEzPvjVB9%2B6d%2B%2FezweDwV1BfHubivkC3lZya%2F4m7Np8UZYXhweHH7733rvvC0Kyv7%2F%2F7p07d34qIjyvr63RNb4l4CbsRUrNrq6OfvfRRz%2FxDx486A%2F6g7vXhX9ZIf%2Bp4JomaToZj8d7Pk1SFRFXb1aWodq09l%2F9YZu%2FCWMVL9e%2FaVFVQVUREEG8r3VUEZ4cX%2FHL30%2B5shRtAhFq4wggNb6GrXgVa2K2jYtACIHv7Sz54TfHjWWagBOBy0Xgt%2BcjLtwQxVCpNwURQat1DdYaT7pwdwKDFA6ncHgFizJmSb3WLPDa7PMIVlb2daqZxdONUnAetEojEdBGiXXhTmAjhZ0%2B3N6AlzeEROH1TXiWGf%2BcwmkWZYnAfAkdx1pq%2BhUbT9z3IElUJlVhI4WsgCLUyggi4MQYd4VXNmCYRqXOspV7UoHbQ3hpEMeLAk5mkFYRYlWI%2BHZ6CTDwkKSQqrA7gFeHMF3C6VyYLmFZGiKCE6GrMFsaWb7yuVOh66N1FkUUpBJ3TyvFovToBl9XMbNY2bZ70BsKfW94hbyErosmXpQwy4VgkCjMizjvRRik0EtiLNwagBf465lwOqtkETEn60XT1%2BlTazrpKlR%2BKkooy3Xfb3Wj3wGWJRQhnni7B53q5FqZ4%2FUR7PYhGMxyuMwgWVqTxrYWAwZYQX78J5i8ie9txSAkoOqqQAqk3pBgKLDhlY5XVKPCi3w97YRoKSFaceCgF2hqSXRBPQAIOcXRH8hP%2F0y6%2BRpWLrEyg3SbS9tmzggzJQSLQZo4xoOE8UbCsJfQ7zi6iaIizZ5OBVfXDKPireWC%2BvAYWOBqeszl9Jg03afbH6OqGH%2FBSUrqbrFIXiHoiEDC%2FPySi2d9nnZHJE7opY7dcY%2FdcZej84zpPGfY9Uw2ErYGCf2O4mUVEzELWtqUxZKjf3zK2cURzicMRy%2BzvbuH8ylFPqXIPqNczClKY1mUZFcnSDKkv%2FUNuptbWG%2BLw%2FMh%2FzrYpKBHKV3ONOXzYxeV20z49qhs7gaMWIjqQQiBxVXB4irg05yz4u%2FMpieoJuTLjDJfUJYBzBAFUUHkhMvLvzFPuvQ2JvQ3duh0R%2FjuiDQdIn6MJdvkxTafZUPuaN6UaOo6UNtgNl9weboguwqoA5fCjEusNCzE8LJQFRuNrzpQD%2BrmZNM55%2F4A5z1J2iHtDEg6fZK0j0uHlDrh2N4i3Ptuc%2BH5tjp5HliWQmmOUAhlYe0rqUqWSEOhcZ05AvE1UdColSQJaHWlSUYgJy%2FO2fFfo%2F34piphFOZ4OrvNdL5EJZbcmE8OQzFxIJEGEgIeE1%2FhrjJLxZcOrIVpVC7TW00WmLWyAMDEs%2Bi9wVJDtG17Y21vVmNxLKqIOkQqqoq2qHORmgj9UQcza7mgFm4GmiDjO5C72DSoQ6uPVTW%2BzuFUcQ2teKd4pzhd8b6Nu6jg7vZsrb1rClEIxhu7Q37x47fIy3j%2Fi8iqqlUuEWTFN%2FOrMU3fEEuhUM8FIPDqZgcRIVhsAXxtjGDGS5M%2BP%2Fv%2Bm7yopVrRVsPabsW%2BYG1T%2Fy3KahqSg6cHRb5cTmt5ZXhxQ7nS6yZsVWOajDFbw2JSCSGEIsuyC%2F%2Fo0aPp%2Fv7%2Br9NO5%2F5gMOhJLNn%2FpQLrLfw6tkKKorCDg4NPP%2Fnkjx%2FLOz96h2enzyZvf%2BftH9za2fm6qLrnO9tGk2vY86f%2FMliWZRdPnjz5zcOHDz%2B%2B%2Fifimorzv31C9X718G%2FYrCYSNJa5LgAAACJ6VFh0U29mdHdhcmUAAHjaKy8v18vMyy5OTixI1csvSgcANtgGWBBTylwAAAAASUVORK5CYII%3D');
+ background-position:center center;
+ border:1px solid #00aa00;
+}
+
+div.otherdataurl {
+ background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABoAAAAaCAYAAACpSkzOAAAAAXNSR0IArs4c6QAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9kFBQ0WDWwqwjwAAANMSURBVEjHrdZbaFxVFAbgb2aSTG6GTi6mVIwxNxF9qFI0RQnFUqiYamutVutLa2t9EY0oPggFoYgPRR%2FaghYviA%2BiIAYvmBJKoYWiiBCigVTT1FisbUhrEtNkJpc5PuQkjGEmJqkLFmdz2Hv%2Fa%2F3rX3tvlm95oS%2FLokuZtIpbdvAs7KFtL22wjb3V1C41upy2ke1DXC2k%2FBjv1HHXDrbkEamg7lX2P8QTldQ2UtfOB8uiJsHNiB%2Fik0GmO%2BgZIxgnGA59nGCMoJPeQaYP047iBDXZEohkAYof4%2FNyKlZRdR%2F1ASZCnoOMhWkUheMz9F1laJSRZ3gEqVw1ipZQjcoBRrbT3Ez9OJLhZkHG5CD8l8Q47qXhMZp%2FYxhVFaxBLBtQejdtA%2FTtZPMIJnOknI2WSYzicTYN8OtTvICZbECxdr5Pkm6iPL0C3c%2BgkfIJgi%2F4LnP%2FudRKD3K4jf1VJGLEAiuz6VnA4AGam1h7gpNIzSFe66D3NurLKVhJNkHo07N9V9BE3XHOYmyeuirqG1l9mdHgOkDSGd8%2FGWtg9Roa56lrYdchDtRQPLlCkEywKVRScDfrurnwC2diiPTRe47iVtbnLZDxckGCkKYpPM%2FRr3kbyRhsYOtRDiQonFoBSHrBOI18rOeOPvr76YrCeUbf5fTvjOddJ0gQ1uMPku9z6hwjiEZhgOMn%2BaaUeHQJIOkMD7KMA5QQP01HP18hPbfvDTvZPETqb2YiS1BWrozM6jk9SPJJHkZZ5qFagtoaNnbyZg1FE4sUPRdlAQpwkdSjvDZAJ%2FoxNt%2Bw6NlGbQVFl5iKLKKsXCAwyFQZ8S3ciu65ho1lBJ5%2FkZk3OBGjpJWGmVCmsjTkQvA8JHCUU7s5eImevzg%2Fd7BGFhzCARIf8uVN3J5Heh1VM%2BHlko2y%2FHBxF0NJolfo38eDuJJxbf0ro%2FnMurh8hM%2FupH4tdT8zciOFsTC8SAgQoJfRxKzCuvfw0k%2F8MDx7xqUyez%2BS48ESIN7Ky6OUpfAtrxzhx03UR4m0c%2FZF7tnKW2mma4l9yuthTSIZIvxPi6EcpZW0PM0xtOzjo%2Bf4GPfv4r1qNqAUFYs9diJLBC1CIa7FZx8fUlwI22LuNv%2FfLbKMAOftH9TwRXg6%2FiCDAAAAAElFTkSuQmCC");
+}
+
+.yui-skin-sam .yui-h-slider {
+ background: url(bg-h.gif) no-repeat 5px 0;
+ height: 28px;
+ width: 228px;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-dbquote-font.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-dbquote-font.css
new file mode 100644
index 0000000..e7018bf
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-dbquote-font.css
@@ -0,0 +1,30 @@
+/*csslint fontfamily: true*/
+
+/**
+ * Foo
+ */
+
+.y-ff-1 {
+ font-family:"Foo Bar",Helvetica,Arial;
+ text-rendering: optimizeLegibility;
+}
+
+.ua-op .y-ff-1 {
+ /* Some Comment */
+ font-family:Helvetica,Arial;
+}
+
+/*
+Foo
+
+Bar
+*/
+
+@font-face {
+ font-family: "Foo Bar";
+ src: url("data:font/truetype;base64,gRbIUFAIrsQNGditEWbAUKwAA") format("truetype"),
+ url("http://yuilibrary.com/fonts/foo-bar.svg#webfontse22fewwr") format("svg");
+ font-weight: normal;
+ font-style: normal;
+}
+
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-inline-svg.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-inline-svg.css
new file mode 100644
index 0000000..d49624e
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-inline-svg.css
@@ -0,0 +1,6 @@
+a#mobile-menu-btn{
+ background: url( 'data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="9.125" height="9.137" viewBox="4.437 4.431 9.125 9.137"><path d="M9.282 8.712h4.125c.12 0 .155.047.155.168v.252c0 .12-.035.154-.155.154H9.282v4.127c0 .12-.036.155-.156.155h-.252c-.12 0-.156-.037-.156-.156V9.286H4.593c-.12 0-.156-.035-.156-.154V8.88c0-.12.036-.168.156-.168h4.125V4.585c0-.107.037-.154.156-.154h.252c.12 0 .156.05.156.156v4.126z"/></svg>') 0 0 no-repeat;
+}
+a#mobile-menu-btn {
+ background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='9.125' height='9.137' viewBox='4.437 4.431 9.125 9.137'><path d='M9.282 8.712h4.125c.12 0 .155.047.155.168v.252c0 .12-.035.154-.155.154H9.282v4.127c0 .12-.036.155-.156.155h-.252c-.12 0-.156-.037-.156-.156V9.286H4.593c-.12 0-.156-.035-.156-.154V8.88c0-.12.036-.168.156-.168h4.125V4.585c0-.107.037-.154.156-.154h.252c.12 0 .156.05.156.156v4.126z'/></svg>") 0 0 no-repeat;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-nonbase64-doublequotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-nonbase64-doublequotes.css
new file mode 100644
index 0000000..155f65c
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-nonbase64-doublequotes.css
@@ -0,0 +1,13 @@
+div.nonbase64-doublequotes {
+ width:100px;
+ height:100px;
+ background-image:url(
+ "data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0C%00%00%00%0E%08%03%00%00%00%2Cc%0D%DE%00%00%00%A2PLTEQQQ%FA%FA%FA%FC%FC%FC%EE%EE%EE%A9%A9%A9%E9%E9%E9%0A%0A%0A%0D%0D%0D444PPP%CD%CD%CD%CC%CC%CC%F5%F5%F5UUU%D0%D0%D0'''%F9%F9%F9%A6%A6%A6%40%40%40FFF%A0%A0%A0%89%89%89%8D%8D%8D%20%20%20%14%14%14%DA%DA%DA%B6%B6%B6%02%02%02%87%87%87%81%81%81%AC%AC%AC%0E%0E%0E111%7D%7D%7D%92%92%92333%B9%B9%B9%BC%BC%BChhh)))%E1%E1%E1%03%03%03%CB%CB%CB%EB%EB%EB%FD%FD%FD%A3%A3%A3(((%04%04%04%CA%CA%CAttt%2C%2C%2C%F4%F4%F4%00%00%00%FF%FF%FF%D6%DE%02%C3%00%00%006tRNS%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%00%A1%8FN1%00%00%00iIDAT%08%D7E%C7E%16%02Q%10%C5%D0j%C3%DD%BDqw%5E%F6%BF5%06%D4%3Fd%94kx%BDf%DE6%FFIA%AB%C8qYj%1F%E3Xk%93%E0%C8JZ%10%90%9E%3A1%60%BBY%85%A8%AE%14%C0%5E%1A6%8E%C5w%02%60%99%C9%FA%9A%03%60%8C%EFz%8C%CE%0EnSu%3F%01%AD%B2%06%04%F0%3CT%FF%B8nk%3F%7C%01%C5z%1B%F9%26%2F%3Az%00%00%00%00IEND%AEB%60%82"
+ );
+ border:1px solid #00aa00;
+}
+
+span.othercss {
+ font-family:"Times New Roman";
+ font-weight:inherit;
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-nonbase64-noquotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-nonbase64-noquotes.css
new file mode 100644
index 0000000..6194358
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-nonbase64-noquotes.css
@@ -0,0 +1,11 @@
+div.nonbase64-noquotes {
+ width:100px;
+ height:100px;
+ background-image:url( data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0C%00%00%00%0E%08%03%00%00%00%2Cc%0D%DE%00%00%00%A2PLTEQQQ%FA%FA%FA%FC%FC%FC%EE%EE%EE%A9%A9%A9%E9%E9%E9%0A%0A%0A%0D%0D%0D444PPP%CD%CD%CD%CC%CC%CC%F5%F5%F5UUU%D0%D0%D0\'\'\'%F9%F9%F9%A6%A6%A6%40%40%40FFF%A0%A0%A0%89%89%89%8D%8D%8D%20%20%20%14%14%14%DA%DA%DA%B6%B6%B6%02%02%02%87%87%87%81%81%81%AC%AC%AC%0E%0E%0E111%7D%7D%7D%92%92%92333%B9%B9%B9%BC%BC%BChhh\)\)\)%E1%E1%E1%03%03%03%CB%CB%CB%EB%EB%EB%FD%FD%FD%A3%A3%A3\(\(\(%04%04%04%CA%CA%CAttt%2C%2C%2C%F4%F4%F4%00%00%00%FF%FF%FF%D6%DE%02%C3%00%00%006tRNS%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%00%A1%8FN1%00%00%00iIDAT%08%D7E%C7E%16%02Q%10%C5%D0j%C3%DD%BDqw%5E%F6%BF5%06%D4%3Fd%94kx%BDf%DE6%FFIA%AB%C8qYj%1F%E3Xk%93%E0%C8JZ%10%90%9E%3A1%60%BBY%85%A8%AE%14%C0%5E%1A6%8E%C5w%02%60%99%C9%FA%9A%03%60%8C%EFz%8C%CE%0EnSu%3F%01%AD%B2%06%04%F0%3CT%FF%B8nk%3F%7C%01%C5z%1B%F9%26%2F%3Az%00%00%00%00IEND%AEB%60%82 );
+ border:1px solid red;
+}
+
+span.othercss {
+ font-family:"Times New Roman";
+ font-weight:inherit;
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-nonbase64-singlequotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-nonbase64-singlequotes.css
new file mode 100644
index 0000000..c1a02cd
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-nonbase64-singlequotes.css
@@ -0,0 +1,15 @@
+/* Some Comment */
+
+div.nonbase64-singlequotes {
+ width:100px;
+ height:100px;
+ background-image:url('data:image/png,%89PNG%0D%0A%1A%0A%00%00%00%0DIHDR%00%00%00%0C%00%00%00%0E%08%03%00%00%00%2Cc%0D%DE%00%00%00%A2PLTEQQQ%FA%FA%FA%FC%FC%FC%EE%EE%EE%A9%A9%A9%E9%E9%E9%0A%0A%0A%0D%0D%0D444PPP%CD%CD%CD%CC%CC%CC%F5%F5%F5UUU%D0%D0%D0\'\'\'%F9%F9%F9%A6%A6%A6%40%40%40FFF%A0%A0%A0%89%89%89%8D%8D%8D%20%20%20%14%14%14%DA%DA%DA%B6%B6%B6%02%02%02%87%87%87%81%81%81%AC%AC%AC%0E%0E%0E111%7D%7D%7D%92%92%92333%B9%B9%B9%BC%BC%BChhh)))%E1%E1%E1%03%03%03%CB%CB%CB%EB%EB%EB%FD%FD%FD%A3%A3%A3(((%04%04%04%CA%CA%CAttt%2C%2C%2C%F4%F4%F4%00%00%00%FF%FF%FF%D6%DE%02%C3%00%00%006tRNS%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%FF%00%A1%8FN1%00%00%00iIDAT%08%D7E%C7E%16%02Q%10%C5%D0j%C3%DD%BDqw%5E%F6%BF5%06%D4%3Fd%94kx%BDf%DE6%FFIA%AB%C8qYj%1F%E3Xk%93%E0%C8JZ%10%90%9E%3A1%60%BBY%85%A8%AE%14%C0%5E%1A6%8E%C5w%02%60%99%C9%FA%9A%03%60%8C%EFz%8C%CE%0EnSu%3F%01%AD%B2%06%04%F0%3CT%FF%B8nk%3F%7C%01%C5z%1B%F9%26%2F%3Az%00%00%00%00IEND%AEB%60%82');
+ border:1px solid #0000aa;
+}
+
+/* Some Other Comment */
+
+span.othercss {
+ font-family:"Times New Roman";
+ font-weight:inherit;
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-noquote-multiline-font.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-noquote-multiline-font.css
new file mode 100644
index 0000000..8628745
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-noquote-multiline-font.css
@@ -0,0 +1,31 @@
+/*csslint fontfamily: true*/
+
+/**
+ * Foo
+ */
+
+.y-ff-1 {
+ font-family:"Foo Bar",Helvetica,Arial;
+ text-rendering: optimizeLegibility;
+}
+
+.ua-op .y-ff-1 {
+ /* Some Comment */
+ font-family:Helvetica,Arial;
+}
+
+/*
+Foo
+
+Bar
+*/
+
+@font-face {
+ font-family: "Foo Bar";
+ src: url(
+ data:font/truetype;base64,gRbIUFAIrsQNGditEWbAUKwAA) format("truetype"),
+ url("http://yuilibrary.com/fonts/foo-bar.svg#webfontse22fewwr") format("svg");
+ font-weight: normal;
+ font-style: normal;
+}
+
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-doublequotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-doublequotes.css
new file mode 100644
index 0000000..a86e0b9
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-doublequotes.css
@@ -0,0 +1,90 @@
+.yui3-skin-sam .yui3-scrollview-scrollbar {
+ -webkit-transform: translate3d(0, 0, 0);
+ -moz-transform: translate(0, 0);
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+ border-radius:3px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUeNpiZGBgSGPAAgACDAAIkABoFyloZQAAAABJRU5ErkJggg==");
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+ border-bottom-right-radius:0;
+ border-bottom-left-radius:0;
+
+ -webkit-border-bottom-right-radius:0;
+ -webkit-border-bottom-left-radius:0;
+
+ -moz-border-radius-bottomright:0;
+ -moz-border-radius-bottomleft:0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+ border-radius:0;
+ border-bottom-right-radius:3px;
+ border-bottom-left-radius:3px;
+
+ -webkit-border-radius:0;
+ -webkit-border-bottom-right-radius:3px;
+ -webkit-border-bottom-left-radius:3px;
+ -webkit-transform: translate3d(0, 0, 0);
+
+ -moz-border-radius:0;
+ -moz-border-radius-bottomright:3px;
+ -moz-border-radius-bottomleft:3px;
+ -moz-transform: translate(0, 0);
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle {
+ border-radius:0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+
+ -webkit-transform: translate3d(0,0,0) scaleY(1);
+ -webkit-transform-origin-y: 0;
+
+ -moz-transform: translate(0,0) scaleY(1);
+ -moz-transform-origin: 0 0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last {
+ border-top-right-radius: 0;
+ border-bottom-left-radius: 3px;
+
+ -webkit-border-top-right-radius: 0;
+ -webkit-border-bottom-left-radius: 3px;
+
+ -moz-border-radius-topright: 0;
+ -moz-border-radius-bottomleft: 3px;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last {
+ border-bottom-left-radius: 0;
+ border-top-right-radius: 3px;
+
+ -webkit-border-bottom-left-radius: 0;
+ -webkit-border-top-right-radius: 3px;
+
+ -moz-border-radius-bottomleft: 0;
+ -moz-border-radius-topright: 3px;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-middle {
+ -webkit-transform: translate3d(0,0,0) scaleX(1);
+ -webkit-transform-origin: 0 0;
+
+ -moz-transform: translate(0,0) scaleX(1);
+ -moz-transform-origin: 0 0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-vert-basic .yui3-scrollview-child,
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz-basic .yui3-scrollview-child {
+ background-color: #aaa;
+ background-image: none;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-noquotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-noquotes.css
new file mode 100644
index 0000000..155ca6d
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-noquotes.css
@@ -0,0 +1,90 @@
+.yui3-skin-sam .yui3-scrollview-scrollbar {
+ -webkit-transform: translate3d(0, 0, 0);
+ -moz-transform: translate(0, 0);
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+ border-radius:3px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUeNpiZGBgSGPAAgACDAAIkABoFyloZQAAAABJRU5ErkJggg==);
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+ border-bottom-right-radius:0;
+ border-bottom-left-radius:0;
+
+ -webkit-border-bottom-right-radius:0;
+ -webkit-border-bottom-left-radius:0;
+
+ -moz-border-radius-bottomright:0;
+ -moz-border-radius-bottomleft:0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+ border-radius:0;
+ border-bottom-right-radius:3px;
+ border-bottom-left-radius:3px;
+
+ -webkit-border-radius:0;
+ -webkit-border-bottom-right-radius:3px;
+ -webkit-border-bottom-left-radius:3px;
+ -webkit-transform: translate3d(0, 0, 0);
+
+ -moz-border-radius:0;
+ -moz-border-radius-bottomright:3px;
+ -moz-border-radius-bottomleft:3px;
+ -moz-transform: translate(0, 0);
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle {
+ border-radius:0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+
+ -webkit-transform: translate3d(0,0,0) scaleY(1);
+ -webkit-transform-origin-y: 0;
+
+ -moz-transform: translate(0,0) scaleY(1);
+ -moz-transform-origin: 0 0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last {
+ border-top-right-radius: 0;
+ border-bottom-left-radius: 3px;
+
+ -webkit-border-top-right-radius: 0;
+ -webkit-border-bottom-left-radius: 3px;
+
+ -moz-border-radius-topright: 0;
+ -moz-border-radius-bottomleft: 3px;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last {
+ border-bottom-left-radius: 0;
+ border-top-right-radius: 3px;
+
+ -webkit-border-bottom-left-radius: 0;
+ -webkit-border-top-right-radius: 3px;
+
+ -moz-border-radius-bottomleft: 0;
+ -moz-border-radius-topright: 3px;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-middle {
+ -webkit-transform: translate3d(0,0,0) scaleX(1);
+ -webkit-transform-origin: 0 0;
+
+ -moz-transform: translate(0,0) scaleX(1);
+ -moz-transform-origin: 0 0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-vert-basic .yui3-scrollview-child,
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz-basic .yui3-scrollview-child {
+ background-color: #aaa;
+ background-image: none;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-singlequotes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-singlequotes.css
new file mode 100644
index 0000000..ac923f9
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-singlequotes.css
@@ -0,0 +1,90 @@
+.yui3-skin-sam .yui3-scrollview-scrollbar {
+ -webkit-transform: translate3d(0, 0, 0);
+ -moz-transform: translate(0, 0);
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+ border-radius:3px;
+ -webkit-border-radius: 3px;
+ -moz-border-radius: 3px;
+ background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAABCAYAAAD9yd/wAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABJJREFUeNpiZGBgSGPAAgACDAAIkABoFyloZQAAAABJRU5ErkJggg==');
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+ border-bottom-right-radius:0;
+ border-bottom-left-radius:0;
+
+ -webkit-border-bottom-right-radius:0;
+ -webkit-border-bottom-left-radius:0;
+
+ -moz-border-radius-bottomright:0;
+ -moz-border-radius-bottomleft:0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-last {
+ border-radius:0;
+ border-bottom-right-radius:3px;
+ border-bottom-left-radius:3px;
+
+ -webkit-border-radius:0;
+ -webkit-border-bottom-right-radius:3px;
+ -webkit-border-bottom-left-radius:3px;
+ -webkit-transform: translate3d(0, 0, 0);
+
+ -moz-border-radius:0;
+ -moz-border-radius-bottomright:3px;
+ -moz-border-radius-bottomleft:3px;
+ -moz-transform: translate(0, 0);
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar .yui3-scrollview-middle {
+ border-radius:0;
+ -webkit-border-radius: 0;
+ -moz-border-radius: 0;
+
+ -webkit-transform: translate3d(0,0,0) scaleY(1);
+ -webkit-transform-origin-y: 0;
+
+ -moz-transform: translate(0,0) scaleY(1);
+ -moz-transform-origin: 0 0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-first,
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last {
+ border-top-right-radius: 0;
+ border-bottom-left-radius: 3px;
+
+ -webkit-border-top-right-radius: 0;
+ -webkit-border-bottom-left-radius: 3px;
+
+ -moz-border-radius-topright: 0;
+ -moz-border-radius-bottomleft: 3px;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-last {
+ border-bottom-left-radius: 0;
+ border-top-right-radius: 3px;
+
+ -webkit-border-bottom-left-radius: 0;
+ -webkit-border-top-right-radius: 3px;
+
+ -moz-border-radius-bottomleft: 0;
+ -moz-border-radius-topright: 3px;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz .yui3-scrollview-middle {
+ -webkit-transform: translate3d(0,0,0) scaleX(1);
+ -webkit-transform-origin: 0 0;
+
+ -moz-transform: translate(0,0) scaleX(1);
+ -moz-transform-origin: 0 0;
+}
+
+.yui3-skin-sam .yui3-scrollview-scrollbar-vert-basic .yui3-scrollview-child,
+.yui3-skin-sam .yui3-scrollview-scrollbar-horiz-basic .yui3-scrollview-child {
+ background-color: #aaa;
+ background-image: none;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-yuiapp.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-yuiapp.css
new file mode 100644
index 0000000..37c34fe
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-realdata-yuiapp.css
@@ -0,0 +1,106 @@
+html {
+ background: #fff;
+ color: #555;
+ height: 100%;
+}
+
+#hd, #bd, #ft {
+ padding: 0 50px;
+}
+
+#bd {
+ padding-bottom: 50px;
+ border-bottom: 1px solid #006e9c;
+}
+
+#ft {
+ background: transparent no-repeat 0% 100%;
+ background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADcAAAAeCAMAAAC/pnaKAAAAwFBMVEUkXIAoYYQoYYQoYYQyao02bpE6cpQ6cpREe51LgqNUiqtUiqtUiqtZj7BckrNlmrtlmrtlmrtroMB3qsp3qsp3qsp+sdCHudiHudiHudiHudiPwN+YyOaYyOaYyOaf0O2g0O6n1vOn1vOn1vOn1vOw3vu45f245f245f3B7f7K9f7K9f7K9f7X/v7X/v7p//7p//79//79//4AAABhAGMAbwBzAC4AcwB0AHIAaQBuAGcAcwABAAAAwIwmGwEAAABQQKFUAAAAQHRSTlP///////////////////////////////////////////////////////////////////8A////////////////0pfSbwAAAdtJREFUOI2NlNGqgzAMhv/ClDlQQcFdKOx4McFCKcH3f7eTtLWr07mFiUvbzz9Nk2LZGRH5937qZTiGyEx0Cr5xQpEd6xzNueCGc9SzUmAzP8cplO1zgRRutBAlM9EhZwknWj1LKXkwbOVojTqMEpKZOfeUD3OnR24VWeJf1OOBTnTgw8zZr3LyOlbdrWrdGlpG6Alz4Ni3RcT4Ldm8wHpOo9Yo5CPsdngM6D3HmLlESrgHD+YvrtEuUeLeMf7x7j23GJVgbJoHs0/cI3B7TNkfON5btsEUrvSdY694U0P9nXMp2mDsdbLmY14CN8XDjtzgo9CuqpYnGoMscDUmn08qsbOn/3Lte6rgP1eM7qQ1YMP+yPhiTmx2laDQspytgJI1MbIzZ7yHfj2/hYYtZ1xMM4dc3iTukjgJyKsrUBEH4uqFXNUh3aXxtWjbC3DpH8LRVPJ8MXLoA8fsz51ue73Q+1z7RkTEF0dWa1o5a8001C6ZbGuzh0bSTo9iS8X+C/NWbfTW5uZ9Vu4QaL20Xv3uhgyrZUXVtI2NfS3fbzgP75dNek/YbrL+k/EykecuZf6ZOzDJYsf9PCV3xhFHq7043mw+H1ylW+5Ab5jpADuPM2Z1P3POLWnUG/sHnIDsqkOjlqoAAAAASUVORK5CYII=);
+ /* image width: 55px */
+ padding: 0 0 40px 0;
+ margin: 50px;
+}
+
+#hd, #bd {
+ background: #f9f9f9;
+}
+
+body {
+ margin: 0;
+ padding: 0;
+ font: 12px "Helvetica Nueue", Arial, sans-serif;
+}
+
+#hd {
+ color: #fff;
+ padding-top: 50px;
+ margin: 0;
+}
+
+#hd, h1, h2, p, .color {
+ margin: auto;
+}
+
+h1, h2, a {
+ color: #006e9c;
+}
+
+h1, h2 {
+ margin-top: 0;
+}
+
+h4 .title {
+ font-weight: bold;
+ letter-spacing: -2px;
+ font-size: 47px;
+ text-shadow: 0 1px 0 #369;
+ background: #006e9d;
+ color: #fff;
+ padding: 0 10px;
+}
+
+h4 {
+ display: block;
+ float: right;
+ margin: 0 0 0 20px;
+}
+
+h4 .what {
+ display: block;
+ padding: 4px;
+ text-align: center;
+ font-weight: normal;
+}
+
+h4 .version {
+ font-size: 11px;
+ color: #ccc;
+}
+
+h2 {
+ font-size: 40px;
+ font-family: "HelveticaNeue-Light", "Helvetica Neue Light",
+ "Helvetica Neue", sans-serif;
+ font-weight: 300;
+}
+
+h4, p {
+ padding: 6px 0 6px;
+}
+
+#ft p.fine, #ft p.fine a {
+ color: #999;
+}
+
+#ft p.intro {
+ font-size: 12px;
+}
+
+#bd {
+ font-size: 14px;
+ color: #666;
+}
+
+#ft p {
+ font-size: 11px;
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-singlequote-font.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-singlequote-font.css
new file mode 100644
index 0000000..6b5d462
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/dataurl-singlequote-font.css
@@ -0,0 +1,30 @@
+/*csslint fontfamily: true*/
+
+/**
+ * Foo
+ */
+
+.y-ff-1 {
+ font-family:"Foo Bar",Helvetica,Arial;
+ text-rendering: optimizeLegibility;
+}
+
+.ua-op .y-ff-1 {
+ /* Some Comment */
+ font-family:Helvetica,Arial;
+}
+
+/*
+Foo
+
+Bar
+*/
+
+@font-face {
+ font-family: "Foo Bar";
+ src: URL('data:font/truetype;base64,gRbIUFAIrsQNGditEWbAUKwAA') format("truetype"),
+ url("http://yuilibrary.com/fonts/foo-bar.svg#webfontse22fewwr") format("svg");
+ font-weight: normal;
+ font-style: normal;
+}
+
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/empty-rules.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/empty-rules.css
new file mode 100644
index 0000000..fe87a13
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/empty-rules.css
@@ -0,0 +1,39 @@
+/*! dont delete me */
+.foo{ /* ha */}
+@import "another.css";
+/* I'm empty - delete me */
+empty { ;}
+.test{color:red}
+@media (-o-device-pixel-ratio: 1/10) {
+
+
+ }
+a[href$="/test/"] span.test{}
+#foo{ }
+:after{ ;}
+@media print {
+ /* empty */
+ body{
+
+ }
+}
+
+@media screen {
+ /* this rule should be removed, not simply minified.*/
+ .breakme {}
+ .printonly { display: none; }
+}
+
+@media print {
+ /* empty */
+ @media (min-aspect-ratio: 1/1) {
+ /* empty */
+ a {
+ /* empty */
+ }
+ }
+ /*! imp: weird but it may happen */
+ b{
+
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/flex.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/flex.css
new file mode 100644
index 0000000..9b0ea38
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/flex.css
@@ -0,0 +1,2 @@
+div { flex: 1 1 0% }
+div { flex: 1 1 0px;} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/font-weight.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/font-weight.css
new file mode 100644
index 0000000..0f23db5
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/font-weight.css
@@ -0,0 +1,2 @@
+a { font-weight: bold; font-weight: bolder}
+section { font-weight:normal !important } \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/foundation.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/foundation.css
new file mode 100644
index 0000000..0dad40e
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/foundation.css
@@ -0,0 +1,4398 @@
+@charset "UTF-8";
+/**
+ * Foundation for Sites by ZURB
+ * Version 6.3.1
+ * foundation.zurb.com
+ * Licensed under MIT Open Source
+ */
+/*! normalize-scss | MIT/GPLv2 License | bit.ly/normalize-scss */
+/* Document
+ ========================================================================== */
+/**
+ * 1. Change the default font family in all browsers (opinionated).
+ * 2. Correct the line height in all browsers.
+ * 3. Prevent adjustments of font size after orientation changes in
+ * IE on Windows Phone and in iOS.
+ */
+html {
+ font-family: sans-serif;
+ /* 1 */
+ line-height: 1.15;
+ /* 2 */
+ -ms-text-size-adjust: 100%;
+ /* 3 */
+ -webkit-text-size-adjust: 100%;
+ /* 3 */ }
+
+/* Sections
+ ========================================================================== */
+/**
+ * Remove the margin in all browsers (opinionated).
+ */
+body {
+ margin: 0; }
+
+/**
+ * Add the correct display in IE 9-.
+ */
+article,
+aside,
+footer,
+header,
+nav,
+section {
+ display: block; }
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0; }
+
+/* Grouping content
+ ========================================================================== */
+/**
+ * Add the correct display in IE 9-.
+ */
+figcaption,
+figure {
+ display: block; }
+
+/**
+ * Add the correct margin in IE 8.
+ */
+figure {
+ margin: 1em 40px; }
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+hr {
+ box-sizing: content-box;
+ /* 1 */
+ height: 0;
+ /* 1 */
+ overflow: visible;
+ /* 2 */ }
+
+/**
+ * Add the correct display in IE.
+ */
+main {
+ display: block; }
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+pre {
+ font-family: monospace, monospace;
+ /* 1 */
+ font-size: 1em;
+ /* 2 */ }
+
+/* Links
+ ========================================================================== */
+/**
+ * 1. Remove the gray background on active links in IE 10.
+ * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
+ */
+a {
+ background-color: transparent;
+ /* 1 */
+ -webkit-text-decoration-skip: objects;
+ /* 2 */ }
+
+/**
+ * Remove the outline on focused links when they are also active or hovered
+ * in all browsers (opinionated).
+ */
+a:active,
+a:hover {
+ outline-width: 0; }
+
+/* Text-level semantics
+ ========================================================================== */
+/**
+ * 1. Remove the bottom border in Firefox 39-.
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+abbr[title] {
+ border-bottom: none;
+ /* 1 */
+ text-decoration: underline;
+ /* 2 */
+ text-decoration: underline dotted;
+ /* 2 */ }
+
+/**
+ * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
+ */
+b,
+strong {
+ font-weight: inherit; }
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+b,
+strong {
+ font-weight: bolder; }
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+code,
+kbd,
+samp {
+ font-family: monospace, monospace;
+ /* 1 */
+ font-size: 1em;
+ /* 2 */ }
+
+/**
+ * Add the correct font style in Android 4.3-.
+ */
+dfn {
+ font-style: italic; }
+
+/**
+ * Add the correct background and color in IE 9-.
+ */
+mark {
+ background-color: #ff0;
+ color: #000; }
+
+/**
+ * Add the correct font size in all browsers.
+ */
+small {
+ font-size: 80%; }
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline; }
+
+sub {
+ bottom: -0.25em; }
+
+sup {
+ top: -0.5em; }
+
+/* Embedded content
+ ========================================================================== */
+/**
+ * Add the correct display in IE 9-.
+ */
+audio,
+video {
+ display: inline-block; }
+
+/**
+ * Add the correct display in iOS 4-7.
+ */
+audio:not([controls]) {
+ display: none;
+ height: 0; }
+
+/**
+ * Remove the border on images inside links in IE 10-.
+ */
+img {
+ border-style: none; }
+
+/**
+ * Hide the overflow in IE.
+ */
+svg:not(:root) {
+ overflow: hidden; }
+
+/* Forms
+ ========================================================================== */
+/**
+ * 1. Change the font styles in all browsers (opinionated).
+ * 2. Remove the margin in Firefox and Safari.
+ */
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: sans-serif;
+ /* 1 */
+ font-size: 100%;
+ /* 1 */
+ line-height: 1.15;
+ /* 1 */
+ margin: 0;
+ /* 2 */ }
+
+/**
+ * Show the overflow in IE.
+ */
+button {
+ overflow: visible; }
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+button,
+select {
+ /* 1 */
+ text-transform: none; }
+
+/**
+ * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+ * controls in Android 4.
+ * 2. Correct the inability to style clickable types in iOS and Safari.
+ */
+button,
+html [type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+ /* 2 */ }
+
+button,
+[type="button"],
+[type="reset"],
+[type="submit"] {
+ /**
+ * Remove the inner border and padding in Firefox.
+ */
+ /**
+ * Restore the focus styles unset by the previous rule.
+ */ }
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0; }
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 1px dotted ButtonText; }
+
+/**
+ * Show the overflow in Edge.
+ */
+input {
+ overflow: visible; }
+
+/**
+ * 1. Add the correct box sizing in IE 10-.
+ * 2. Remove the padding in IE 10-.
+ */
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box;
+ /* 1 */
+ padding: 0;
+ /* 2 */ }
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto; }
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+[type="search"] {
+ -webkit-appearance: textfield;
+ /* 1 */
+ outline-offset: -2px;
+ /* 2 */
+ /**
+ * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
+ */ }
+[type="search"]::-webkit-search-cancel-button, [type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none; }
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ /* 1 */
+ font: inherit;
+ /* 2 */ }
+
+/**
+ * Change the border, margin, and padding in all browsers (opinionated).
+ */
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em; }
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+legend {
+ box-sizing: border-box;
+ /* 1 */
+ display: table;
+ /* 1 */
+ max-width: 100%;
+ /* 1 */
+ padding: 0;
+ /* 3 */
+ color: inherit;
+ /* 2 */
+ white-space: normal;
+ /* 1 */ }
+
+/**
+ * 1. Add the correct display in IE 9-.
+ * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+progress {
+ display: inline-block;
+ /* 1 */
+ vertical-align: baseline;
+ /* 2 */ }
+
+/**
+ * Remove the default vertical scrollbar in IE.
+ */
+textarea {
+ overflow: auto; }
+
+/* Interactive
+ ========================================================================== */
+/*
+ * Add the correct display in Edge, IE, and Firefox.
+ */
+details {
+ display: block; }
+
+/*
+ * Add the correct display in all browsers.
+ */
+summary {
+ display: list-item; }
+
+/*
+ * Add the correct display in IE 9-.
+ */
+menu {
+ display: block; }
+
+/* Scripting
+ ========================================================================== */
+/**
+ * Add the correct display in IE 9-.
+ */
+canvas {
+ display: inline-block; }
+
+/**
+ * Add the correct display in IE.
+ */
+template {
+ display: none; }
+
+/* Hidden
+ ========================================================================== */
+/**
+ * Add the correct display in IE 10-.
+ */
+[hidden] {
+ display: none; }
+
+.foundation-mq {
+ font-family: "small=0em&medium=40em&large=64em&xlarge=75em&xxlarge=90em"; }
+
+html {
+ box-sizing: border-box;
+ font-size: 100%; }
+
+*,
+*::before,
+*::after {
+ box-sizing: inherit; }
+
+body {
+ margin: 0;
+ padding: 0;
+ background: #fefefe;
+ font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
+ font-weight: normal;
+ line-height: 1.5;
+ color: #0a0a0a;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale; }
+
+img {
+ display: inline-block;
+ vertical-align: middle;
+ max-width: 100%;
+ height: auto;
+ -ms-interpolation-mode: bicubic; }
+
+textarea {
+ height: auto;
+ min-height: 50px;
+ border-radius: 0; }
+
+select {
+ box-sizing: border-box;
+ width: 100%;
+ border-radius: 0; }
+
+.map_canvas img,
+.map_canvas embed,
+.map_canvas object,
+.mqa-display img,
+.mqa-display embed,
+.mqa-display object {
+ max-width: none !important; }
+
+button {
+ padding: 0;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ border: 0;
+ border-radius: 0;
+ background: transparent;
+ line-height: 1; }
+[data-whatinput='mouse'] button {
+ outline: 0; }
+
+pre {
+ overflow: auto; }
+
+.is-visible {
+ display: block !important; }
+
+.is-hidden {
+ display: none !important; }
+
+.row {
+ max-width: 75rem;
+ margin-right: auto;
+ margin-left: auto; }
+.row::before, .row::after {
+ display: table;
+ content: ' '; }
+.row::after {
+ clear: both; }
+.row.collapse > .column, .row.collapse > .columns {
+ padding-right: 0;
+ padding-left: 0; }
+.row .row {
+ margin-right: -0.625rem;
+ margin-left: -0.625rem; }
+@media print, screen and (min-width: 40em) {
+ .row .row {
+ margin-right: -0.9375rem;
+ margin-left: -0.9375rem; } }
+@media print, screen and (min-width: 64em) {
+ .row .row {
+ margin-right: -0.9375rem;
+ margin-left: -0.9375rem; } }
+.row .row.collapse {
+ margin-right: 0;
+ margin-left: 0; }
+.row.expanded {
+ max-width: none; }
+.row.expanded .row {
+ margin-right: auto;
+ margin-left: auto; }
+.row:not(.expanded) .row {
+ max-width: none; }
+.row.gutter-small > .column, .row.gutter-small > .columns {
+ padding-right: 0.625rem;
+ padding-left: 0.625rem; }
+.row.gutter-medium > .column, .row.gutter-medium > .columns {
+ padding-right: 0.9375rem;
+ padding-left: 0.9375rem; }
+
+.column, .columns {
+ width: 100%;
+ float: left;
+ padding-right: 0.625rem;
+ padding-left: 0.625rem; }
+@media print, screen and (min-width: 40em) {
+ .column, .columns {
+ padding-right: 0.9375rem;
+ padding-left: 0.9375rem; } }
+.column:last-child:not(:first-child), .columns:last-child:not(:first-child) {
+ float: right; }
+.column.end:last-child:last-child, .end.columns:last-child:last-child {
+ float: left; }
+
+.column.row.row, .row.row.columns {
+ float: none; }
+
+.row .column.row.row, .row .row.row.columns {
+ margin-right: 0;
+ margin-left: 0;
+ padding-right: 0;
+ padding-left: 0; }
+
+.small-1 {
+ width: 8.33333%; }
+
+.small-push-1 {
+ position: relative;
+ left: 8.33333%; }
+
+.small-pull-1 {
+ position: relative;
+ left: -8.33333%; }
+
+.small-offset-0 {
+ margin-left: 0%; }
+
+.small-2 {
+ width: 16.66667%; }
+
+.small-push-2 {
+ position: relative;
+ left: 16.66667%; }
+
+.small-pull-2 {
+ position: relative;
+ left: -16.66667%; }
+
+.small-offset-1 {
+ margin-left: 8.33333%; }
+
+.small-3 {
+ width: 25%; }
+
+.small-push-3 {
+ position: relative;
+ left: 25%; }
+
+.small-pull-3 {
+ position: relative;
+ left: -25%; }
+
+.small-offset-2 {
+ margin-left: 16.66667%; }
+
+.small-4 {
+ width: 33.33333%; }
+
+.small-push-4 {
+ position: relative;
+ left: 33.33333%; }
+
+.small-pull-4 {
+ position: relative;
+ left: -33.33333%; }
+
+.small-offset-3 {
+ margin-left: 25%; }
+
+.small-5 {
+ width: 41.66667%; }
+
+.small-push-5 {
+ position: relative;
+ left: 41.66667%; }
+
+.small-pull-5 {
+ position: relative;
+ left: -41.66667%; }
+
+.small-offset-4 {
+ margin-left: 33.33333%; }
+
+.small-6 {
+ width: 50%; }
+
+.small-push-6 {
+ position: relative;
+ left: 50%; }
+
+.small-pull-6 {
+ position: relative;
+ left: -50%; }
+
+.small-offset-5 {
+ margin-left: 41.66667%; }
+
+.small-7 {
+ width: 58.33333%; }
+
+.small-push-7 {
+ position: relative;
+ left: 58.33333%; }
+
+.small-pull-7 {
+ position: relative;
+ left: -58.33333%; }
+
+.small-offset-6 {
+ margin-left: 50%; }
+
+.small-8 {
+ width: 66.66667%; }
+
+.small-push-8 {
+ position: relative;
+ left: 66.66667%; }
+
+.small-pull-8 {
+ position: relative;
+ left: -66.66667%; }
+
+.small-offset-7 {
+ margin-left: 58.33333%; }
+
+.small-9 {
+ width: 75%; }
+
+.small-push-9 {
+ position: relative;
+ left: 75%; }
+
+.small-pull-9 {
+ position: relative;
+ left: -75%; }
+
+.small-offset-8 {
+ margin-left: 66.66667%; }
+
+.small-10 {
+ width: 83.33333%; }
+
+.small-push-10 {
+ position: relative;
+ left: 83.33333%; }
+
+.small-pull-10 {
+ position: relative;
+ left: -83.33333%; }
+
+.small-offset-9 {
+ margin-left: 75%; }
+
+.small-11 {
+ width: 91.66667%; }
+
+.small-push-11 {
+ position: relative;
+ left: 91.66667%; }
+
+.small-pull-11 {
+ position: relative;
+ left: -91.66667%; }
+
+.small-offset-10 {
+ margin-left: 83.33333%; }
+
+.small-12 {
+ width: 100%; }
+
+.small-offset-11 {
+ margin-left: 91.66667%; }
+
+.small-up-1 > .column, .small-up-1 > .columns {
+ float: left;
+ width: 100%; }
+.small-up-1 > .column:nth-of-type(1n), .small-up-1 > .columns:nth-of-type(1n) {
+ clear: none; }
+.small-up-1 > .column:nth-of-type(1n+1), .small-up-1 > .columns:nth-of-type(1n+1) {
+ clear: both; }
+.small-up-1 > .column:last-child, .small-up-1 > .columns:last-child {
+ float: left; }
+
+.small-up-2 > .column, .small-up-2 > .columns {
+ float: left;
+ width: 50%; }
+.small-up-2 > .column:nth-of-type(1n), .small-up-2 > .columns:nth-of-type(1n) {
+ clear: none; }
+.small-up-2 > .column:nth-of-type(2n+1), .small-up-2 > .columns:nth-of-type(2n+1) {
+ clear: both; }
+.small-up-2 > .column:last-child, .small-up-2 > .columns:last-child {
+ float: left; }
+
+.small-up-3 > .column, .small-up-3 > .columns {
+ float: left;
+ width: 33.33333%; }
+.small-up-3 > .column:nth-of-type(1n), .small-up-3 > .columns:nth-of-type(1n) {
+ clear: none; }
+.small-up-3 > .column:nth-of-type(3n+1), .small-up-3 > .columns:nth-of-type(3n+1) {
+ clear: both; }
+.small-up-3 > .column:last-child, .small-up-3 > .columns:last-child {
+ float: left; }
+
+.small-up-4 > .column, .small-up-4 > .columns {
+ float: left;
+ width: 25%; }
+.small-up-4 > .column:nth-of-type(1n), .small-up-4 > .columns:nth-of-type(1n) {
+ clear: none; }
+.small-up-4 > .column:nth-of-type(4n+1), .small-up-4 > .columns:nth-of-type(4n+1) {
+ clear: both; }
+.small-up-4 > .column:last-child, .small-up-4 > .columns:last-child {
+ float: left; }
+
+.small-up-5 > .column, .small-up-5 > .columns {
+ float: left;
+ width: 20%; }
+.small-up-5 > .column:nth-of-type(1n), .small-up-5 > .columns:nth-of-type(1n) {
+ clear: none; }
+.small-up-5 > .column:nth-of-type(5n+1), .small-up-5 > .columns:nth-of-type(5n+1) {
+ clear: both; }
+.small-up-5 > .column:last-child, .small-up-5 > .columns:last-child {
+ float: left; }
+
+.small-up-6 > .column, .small-up-6 > .columns {
+ float: left;
+ width: 16.66667%; }
+.small-up-6 > .column:nth-of-type(1n), .small-up-6 > .columns:nth-of-type(1n) {
+ clear: none; }
+.small-up-6 > .column:nth-of-type(6n+1), .small-up-6 > .columns:nth-of-type(6n+1) {
+ clear: both; }
+.small-up-6 > .column:last-child, .small-up-6 > .columns:last-child {
+ float: left; }
+
+.small-up-7 > .column, .small-up-7 > .columns {
+ float: left;
+ width: 14.28571%; }
+.small-up-7 > .column:nth-of-type(1n), .small-up-7 > .columns:nth-of-type(1n) {
+ clear: none; }
+.small-up-7 > .column:nth-of-type(7n+1), .small-up-7 > .columns:nth-of-type(7n+1) {
+ clear: both; }
+.small-up-7 > .column:last-child, .small-up-7 > .columns:last-child {
+ float: left; }
+
+.small-up-8 > .column, .small-up-8 > .columns {
+ float: left;
+ width: 12.5%; }
+.small-up-8 > .column:nth-of-type(1n), .small-up-8 > .columns:nth-of-type(1n) {
+ clear: none; }
+.small-up-8 > .column:nth-of-type(8n+1), .small-up-8 > .columns:nth-of-type(8n+1) {
+ clear: both; }
+.small-up-8 > .column:last-child, .small-up-8 > .columns:last-child {
+ float: left; }
+
+.small-collapse > .column, .small-collapse > .columns {
+ padding-right: 0;
+ padding-left: 0; }
+
+.small-collapse .row {
+ margin-right: 0;
+ margin-left: 0; }
+
+.expanded.row .small-collapse.row {
+ margin-right: 0;
+ margin-left: 0; }
+
+.small-uncollapse > .column, .small-uncollapse > .columns {
+ padding-right: 0.625rem;
+ padding-left: 0.625rem; }
+
+.small-centered {
+ margin-right: auto;
+ margin-left: auto; }
+.small-centered, .small-centered:last-child:not(:first-child) {
+ float: none;
+ clear: both; }
+
+.small-uncentered,
+.small-push-0,
+.small-pull-0 {
+ position: static;
+ float: left;
+ margin-right: 0;
+ margin-left: 0; }
+
+@media print, screen and (min-width: 40em) {
+ .medium-1 {
+ width: 8.33333%; }
+ .medium-push-1 {
+ position: relative;
+ left: 8.33333%; }
+ .medium-pull-1 {
+ position: relative;
+ left: -8.33333%; }
+ .medium-offset-0 {
+ margin-left: 0%; }
+ .medium-2 {
+ width: 16.66667%; }
+ .medium-push-2 {
+ position: relative;
+ left: 16.66667%; }
+ .medium-pull-2 {
+ position: relative;
+ left: -16.66667%; }
+ .medium-offset-1 {
+ margin-left: 8.33333%; }
+ .medium-3 {
+ width: 25%; }
+ .medium-push-3 {
+ position: relative;
+ left: 25%; }
+ .medium-pull-3 {
+ position: relative;
+ left: -25%; }
+ .medium-offset-2 {
+ margin-left: 16.66667%; }
+ .medium-4 {
+ width: 33.33333%; }
+ .medium-push-4 {
+ position: relative;
+ left: 33.33333%; }
+ .medium-pull-4 {
+ position: relative;
+ left: -33.33333%; }
+ .medium-offset-3 {
+ margin-left: 25%; }
+ .medium-5 {
+ width: 41.66667%; }
+ .medium-push-5 {
+ position: relative;
+ left: 41.66667%; }
+ .medium-pull-5 {
+ position: relative;
+ left: -41.66667%; }
+ .medium-offset-4 {
+ margin-left: 33.33333%; }
+ .medium-6 {
+ width: 50%; }
+ .medium-push-6 {
+ position: relative;
+ left: 50%; }
+ .medium-pull-6 {
+ position: relative;
+ left: -50%; }
+ .medium-offset-5 {
+ margin-left: 41.66667%; }
+ .medium-7 {
+ width: 58.33333%; }
+ .medium-push-7 {
+ position: relative;
+ left: 58.33333%; }
+ .medium-pull-7 {
+ position: relative;
+ left: -58.33333%; }
+ .medium-offset-6 {
+ margin-left: 50%; }
+ .medium-8 {
+ width: 66.66667%; }
+ .medium-push-8 {
+ position: relative;
+ left: 66.66667%; }
+ .medium-pull-8 {
+ position: relative;
+ left: -66.66667%; }
+ .medium-offset-7 {
+ margin-left: 58.33333%; }
+ .medium-9 {
+ width: 75%; }
+ .medium-push-9 {
+ position: relative;
+ left: 75%; }
+ .medium-pull-9 {
+ position: relative;
+ left: -75%; }
+ .medium-offset-8 {
+ margin-left: 66.66667%; }
+ .medium-10 {
+ width: 83.33333%; }
+ .medium-push-10 {
+ position: relative;
+ left: 83.33333%; }
+ .medium-pull-10 {
+ position: relative;
+ left: -83.33333%; }
+ .medium-offset-9 {
+ margin-left: 75%; }
+ .medium-11 {
+ width: 91.66667%; }
+ .medium-push-11 {
+ position: relative;
+ left: 91.66667%; }
+ .medium-pull-11 {
+ position: relative;
+ left: -91.66667%; }
+ .medium-offset-10 {
+ margin-left: 83.33333%; }
+ .medium-12 {
+ width: 100%; }
+ .medium-offset-11 {
+ margin-left: 91.66667%; }
+ .medium-up-1 > .column, .medium-up-1 > .columns {
+ float: left;
+ width: 100%; }
+ .medium-up-1 > .column:nth-of-type(1n), .medium-up-1 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .medium-up-1 > .column:nth-of-type(1n+1), .medium-up-1 > .columns:nth-of-type(1n+1) {
+ clear: both; }
+ .medium-up-1 > .column:last-child, .medium-up-1 > .columns:last-child {
+ float: left; }
+ .medium-up-2 > .column, .medium-up-2 > .columns {
+ float: left;
+ width: 50%; }
+ .medium-up-2 > .column:nth-of-type(1n), .medium-up-2 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .medium-up-2 > .column:nth-of-type(2n+1), .medium-up-2 > .columns:nth-of-type(2n+1) {
+ clear: both; }
+ .medium-up-2 > .column:last-child, .medium-up-2 > .columns:last-child {
+ float: left; }
+ .medium-up-3 > .column, .medium-up-3 > .columns {
+ float: left;
+ width: 33.33333%; }
+ .medium-up-3 > .column:nth-of-type(1n), .medium-up-3 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .medium-up-3 > .column:nth-of-type(3n+1), .medium-up-3 > .columns:nth-of-type(3n+1) {
+ clear: both; }
+ .medium-up-3 > .column:last-child, .medium-up-3 > .columns:last-child {
+ float: left; }
+ .medium-up-4 > .column, .medium-up-4 > .columns {
+ float: left;
+ width: 25%; }
+ .medium-up-4 > .column:nth-of-type(1n), .medium-up-4 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .medium-up-4 > .column:nth-of-type(4n+1), .medium-up-4 > .columns:nth-of-type(4n+1) {
+ clear: both; }
+ .medium-up-4 > .column:last-child, .medium-up-4 > .columns:last-child {
+ float: left; }
+ .medium-up-5 > .column, .medium-up-5 > .columns {
+ float: left;
+ width: 20%; }
+ .medium-up-5 > .column:nth-of-type(1n), .medium-up-5 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .medium-up-5 > .column:nth-of-type(5n+1), .medium-up-5 > .columns:nth-of-type(5n+1) {
+ clear: both; }
+ .medium-up-5 > .column:last-child, .medium-up-5 > .columns:last-child {
+ float: left; }
+ .medium-up-6 > .column, .medium-up-6 > .columns {
+ float: left;
+ width: 16.66667%; }
+ .medium-up-6 > .column:nth-of-type(1n), .medium-up-6 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .medium-up-6 > .column:nth-of-type(6n+1), .medium-up-6 > .columns:nth-of-type(6n+1) {
+ clear: both; }
+ .medium-up-6 > .column:last-child, .medium-up-6 > .columns:last-child {
+ float: left; }
+ .medium-up-7 > .column, .medium-up-7 > .columns {
+ float: left;
+ width: 14.28571%; }
+ .medium-up-7 > .column:nth-of-type(1n), .medium-up-7 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .medium-up-7 > .column:nth-of-type(7n+1), .medium-up-7 > .columns:nth-of-type(7n+1) {
+ clear: both; }
+ .medium-up-7 > .column:last-child, .medium-up-7 > .columns:last-child {
+ float: left; }
+ .medium-up-8 > .column, .medium-up-8 > .columns {
+ float: left;
+ width: 12.5%; }
+ .medium-up-8 > .column:nth-of-type(1n), .medium-up-8 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .medium-up-8 > .column:nth-of-type(8n+1), .medium-up-8 > .columns:nth-of-type(8n+1) {
+ clear: both; }
+ .medium-up-8 > .column:last-child, .medium-up-8 > .columns:last-child {
+ float: left; }
+ .medium-collapse > .column, .medium-collapse > .columns {
+ padding-right: 0;
+ padding-left: 0; }
+ .medium-collapse .row {
+ margin-right: 0;
+ margin-left: 0; }
+ .expanded.row .medium-collapse.row {
+ margin-right: 0;
+ margin-left: 0; }
+ .medium-uncollapse > .column, .medium-uncollapse > .columns {
+ padding-right: 0.9375rem;
+ padding-left: 0.9375rem; }
+ .medium-centered {
+ margin-right: auto;
+ margin-left: auto; }
+ .medium-centered, .medium-centered:last-child:not(:first-child) {
+ float: none;
+ clear: both; }
+ .medium-uncentered,
+ .medium-push-0,
+ .medium-pull-0 {
+ position: static;
+ float: left;
+ margin-right: 0;
+ margin-left: 0; } }
+
+@media print, screen and (min-width: 64em) {
+ .large-1 {
+ width: 8.33333%; }
+ .large-push-1 {
+ position: relative;
+ left: 8.33333%; }
+ .large-pull-1 {
+ position: relative;
+ left: -8.33333%; }
+ .large-offset-0 {
+ margin-left: 0%; }
+ .large-2 {
+ width: 16.66667%; }
+ .large-push-2 {
+ position: relative;
+ left: 16.66667%; }
+ .large-pull-2 {
+ position: relative;
+ left: -16.66667%; }
+ .large-offset-1 {
+ margin-left: 8.33333%; }
+ .large-3 {
+ width: 25%; }
+ .large-push-3 {
+ position: relative;
+ left: 25%; }
+ .large-pull-3 {
+ position: relative;
+ left: -25%; }
+ .large-offset-2 {
+ margin-left: 16.66667%; }
+ .large-4 {
+ width: 33.33333%; }
+ .large-push-4 {
+ position: relative;
+ left: 33.33333%; }
+ .large-pull-4 {
+ position: relative;
+ left: -33.33333%; }
+ .large-offset-3 {
+ margin-left: 25%; }
+ .large-5 {
+ width: 41.66667%; }
+ .large-push-5 {
+ position: relative;
+ left: 41.66667%; }
+ .large-pull-5 {
+ position: relative;
+ left: -41.66667%; }
+ .large-offset-4 {
+ margin-left: 33.33333%; }
+ .large-6 {
+ width: 50%; }
+ .large-push-6 {
+ position: relative;
+ left: 50%; }
+ .large-pull-6 {
+ position: relative;
+ left: -50%; }
+ .large-offset-5 {
+ margin-left: 41.66667%; }
+ .large-7 {
+ width: 58.33333%; }
+ .large-push-7 {
+ position: relative;
+ left: 58.33333%; }
+ .large-pull-7 {
+ position: relative;
+ left: -58.33333%; }
+ .large-offset-6 {
+ margin-left: 50%; }
+ .large-8 {
+ width: 66.66667%; }
+ .large-push-8 {
+ position: relative;
+ left: 66.66667%; }
+ .large-pull-8 {
+ position: relative;
+ left: -66.66667%; }
+ .large-offset-7 {
+ margin-left: 58.33333%; }
+ .large-9 {
+ width: 75%; }
+ .large-push-9 {
+ position: relative;
+ left: 75%; }
+ .large-pull-9 {
+ position: relative;
+ left: -75%; }
+ .large-offset-8 {
+ margin-left: 66.66667%; }
+ .large-10 {
+ width: 83.33333%; }
+ .large-push-10 {
+ position: relative;
+ left: 83.33333%; }
+ .large-pull-10 {
+ position: relative;
+ left: -83.33333%; }
+ .large-offset-9 {
+ margin-left: 75%; }
+ .large-11 {
+ width: 91.66667%; }
+ .large-push-11 {
+ position: relative;
+ left: 91.66667%; }
+ .large-pull-11 {
+ position: relative;
+ left: -91.66667%; }
+ .large-offset-10 {
+ margin-left: 83.33333%; }
+ .large-12 {
+ width: 100%; }
+ .large-offset-11 {
+ margin-left: 91.66667%; }
+ .large-up-1 > .column, .large-up-1 > .columns {
+ float: left;
+ width: 100%; }
+ .large-up-1 > .column:nth-of-type(1n), .large-up-1 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .large-up-1 > .column:nth-of-type(1n+1), .large-up-1 > .columns:nth-of-type(1n+1) {
+ clear: both; }
+ .large-up-1 > .column:last-child, .large-up-1 > .columns:last-child {
+ float: left; }
+ .large-up-2 > .column, .large-up-2 > .columns {
+ float: left;
+ width: 50%; }
+ .large-up-2 > .column:nth-of-type(1n), .large-up-2 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .large-up-2 > .column:nth-of-type(2n+1), .large-up-2 > .columns:nth-of-type(2n+1) {
+ clear: both; }
+ .large-up-2 > .column:last-child, .large-up-2 > .columns:last-child {
+ float: left; }
+ .large-up-3 > .column, .large-up-3 > .columns {
+ float: left;
+ width: 33.33333%; }
+ .large-up-3 > .column:nth-of-type(1n), .large-up-3 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .large-up-3 > .column:nth-of-type(3n+1), .large-up-3 > .columns:nth-of-type(3n+1) {
+ clear: both; }
+ .large-up-3 > .column:last-child, .large-up-3 > .columns:last-child {
+ float: left; }
+ .large-up-4 > .column, .large-up-4 > .columns {
+ float: left;
+ width: 25%; }
+ .large-up-4 > .column:nth-of-type(1n), .large-up-4 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .large-up-4 > .column:nth-of-type(4n+1), .large-up-4 > .columns:nth-of-type(4n+1) {
+ clear: both; }
+ .large-up-4 > .column:last-child, .large-up-4 > .columns:last-child {
+ float: left; }
+ .large-up-5 > .column, .large-up-5 > .columns {
+ float: left;
+ width: 20%; }
+ .large-up-5 > .column:nth-of-type(1n), .large-up-5 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .large-up-5 > .column:nth-of-type(5n+1), .large-up-5 > .columns:nth-of-type(5n+1) {
+ clear: both; }
+ .large-up-5 > .column:last-child, .large-up-5 > .columns:last-child {
+ float: left; }
+ .large-up-6 > .column, .large-up-6 > .columns {
+ float: left;
+ width: 16.66667%; }
+ .large-up-6 > .column:nth-of-type(1n), .large-up-6 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .large-up-6 > .column:nth-of-type(6n+1), .large-up-6 > .columns:nth-of-type(6n+1) {
+ clear: both; }
+ .large-up-6 > .column:last-child, .large-up-6 > .columns:last-child {
+ float: left; }
+ .large-up-7 > .column, .large-up-7 > .columns {
+ float: left;
+ width: 14.28571%; }
+ .large-up-7 > .column:nth-of-type(1n), .large-up-7 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .large-up-7 > .column:nth-of-type(7n+1), .large-up-7 > .columns:nth-of-type(7n+1) {
+ clear: both; }
+ .large-up-7 > .column:last-child, .large-up-7 > .columns:last-child {
+ float: left; }
+ .large-up-8 > .column, .large-up-8 > .columns {
+ float: left;
+ width: 12.5%; }
+ .large-up-8 > .column:nth-of-type(1n), .large-up-8 > .columns:nth-of-type(1n) {
+ clear: none; }
+ .large-up-8 > .column:nth-of-type(8n+1), .large-up-8 > .columns:nth-of-type(8n+1) {
+ clear: both; }
+ .large-up-8 > .column:last-child, .large-up-8 > .columns:last-child {
+ float: left; }
+ .large-collapse > .column, .large-collapse > .columns {
+ padding-right: 0;
+ padding-left: 0; }
+ .large-collapse .row {
+ margin-right: 0;
+ margin-left: 0; }
+ .expanded.row .large-collapse.row {
+ margin-right: 0;
+ margin-left: 0; }
+ .large-uncollapse > .column, .large-uncollapse > .columns {
+ padding-right: 0.9375rem;
+ padding-left: 0.9375rem; }
+ .large-centered {
+ margin-right: auto;
+ margin-left: auto; }
+ .large-centered, .large-centered:last-child:not(:first-child) {
+ float: none;
+ clear: both; }
+ .large-uncentered,
+ .large-push-0,
+ .large-pull-0 {
+ position: static;
+ float: left;
+ margin-right: 0;
+ margin-left: 0; } }
+
+.column-block {
+ margin-bottom: 1.25rem; }
+.column-block > :last-child {
+ margin-bottom: 0; }
+@media print, screen and (min-width: 40em) {
+ .column-block {
+ margin-bottom: 1.875rem; }
+ .column-block > :last-child {
+ margin-bottom: 0; } }
+
+div,
+dl,
+dt,
+dd,
+ul,
+ol,
+li,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+pre,
+form,
+p,
+blockquote,
+th,
+td {
+ margin: 0;
+ padding: 0; }
+
+p {
+ margin-bottom: 1rem;
+ font-size: inherit;
+ line-height: 1.6;
+ text-rendering: optimizeLegibility; }
+
+em,
+i {
+ font-style: italic;
+ line-height: inherit; }
+
+strong,
+b {
+ font-weight: bold;
+ line-height: inherit; }
+
+small {
+ font-size: 80%;
+ line-height: inherit; }
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ font-family: "Helvetica Neue", Helvetica, Roboto, Arial, sans-serif;
+ font-style: normal;
+ font-weight: normal;
+ color: inherit;
+ text-rendering: optimizeLegibility; }
+h1 small,
+h2 small,
+h3 small,
+h4 small,
+h5 small,
+h6 small {
+ line-height: 0;
+ color: #cacaca; }
+
+h1 {
+ font-size: 1.5rem;
+ line-height: 1.4;
+ margin-top: 0;
+ margin-bottom: 0.5rem; }
+
+h2 {
+ font-size: 1.25rem;
+ line-height: 1.4;
+ margin-top: 0;
+ margin-bottom: 0.5rem; }
+
+h3 {
+ font-size: 1.1875rem;
+ line-height: 1.4;
+ margin-top: 0;
+ margin-bottom: 0.5rem; }
+
+h4 {
+ font-size: 1.125rem;
+ line-height: 1.4;
+ margin-top: 0;
+ margin-bottom: 0.5rem; }
+
+h5 {
+ font-size: 1.0625rem;
+ line-height: 1.4;
+ margin-top: 0;
+ margin-bottom: 0.5rem; }
+
+h6 {
+ font-size: 1rem;
+ line-height: 1.4;
+ margin-top: 0;
+ margin-bottom: 0.5rem; }
+
+@media print, screen and (min-width: 40em) {
+ h1 {
+ font-size: 3rem; }
+ h2 {
+ font-size: 2.5rem; }
+ h3 {
+ font-size: 1.9375rem; }
+ h4 {
+ font-size: 1.5625rem; }
+ h5 {
+ font-size: 1.25rem; }
+ h6 {
+ font-size: 1rem; } }
+
+a {
+ line-height: inherit;
+ color: #1779ba;
+ text-decoration: none;
+ cursor: pointer; }
+a:hover, a:focus {
+ color: #1468a0; }
+a img {
+ border: 0; }
+
+hr {
+ clear: both;
+ max-width: 75rem;
+ height: 0;
+ margin: 1.25rem auto;
+ border-top: 0;
+ border-right: 0;
+ border-bottom: 1px solid #cacaca;
+ border-left: 0; }
+
+ul,
+ol,
+dl {
+ margin-bottom: 1rem;
+ list-style-position: outside;
+ line-height: 1.6; }
+
+li {
+ font-size: inherit; }
+
+ul {
+ margin-left: 1.25rem;
+ list-style-type: disc; }
+
+ol {
+ margin-left: 1.25rem; }
+
+ul ul, ol ul, ul ol, ol ol {
+ margin-left: 1.25rem;
+ margin-bottom: 0; }
+
+dl {
+ margin-bottom: 1rem; }
+dl dt {
+ margin-bottom: 0.3rem;
+ font-weight: bold; }
+
+blockquote {
+ margin: 0 0 1rem;
+ padding: 0.5625rem 1.25rem 0 1.1875rem;
+ border-left: 1px solid #cacaca; }
+blockquote, blockquote p {
+ line-height: 1.6;
+ color: #8a8a8a; }
+
+cite {
+ display: block;
+ font-size: 0.8125rem;
+ color: #8a8a8a; }
+cite:before {
+ content: "— "; }
+
+abbr {
+ border-bottom: 1px dotted #0a0a0a;
+ color: #0a0a0a;
+ cursor: help; }
+
+figure {
+ margin: 0; }
+
+code {
+ padding: 0.125rem 0.3125rem 0.0625rem;
+ border: 1px solid #cacaca;
+ background-color: #e6e6e6;
+ font-family: Consolas, "Liberation Mono", Courier, monospace;
+ font-weight: normal;
+ color: #0a0a0a; }
+
+kbd {
+ margin: 0;
+ padding: 0.125rem 0.25rem 0;
+ background-color: #e6e6e6;
+ font-family: Consolas, "Liberation Mono", Courier, monospace;
+ color: #0a0a0a; }
+
+.subheader {
+ margin-top: 0.2rem;
+ margin-bottom: 0.5rem;
+ font-weight: normal;
+ line-height: 1.4;
+ color: #8a8a8a; }
+
+.lead {
+ font-size: 125%;
+ line-height: 1.6; }
+
+.stat {
+ font-size: 2.5rem;
+ line-height: 1; }
+p + .stat {
+ margin-top: -1rem; }
+
+.no-bullet {
+ margin-left: 0;
+ list-style: none; }
+
+.text-left {
+ text-align: left; }
+
+.text-right {
+ text-align: right; }
+
+.text-center {
+ text-align: center; }
+
+.text-justify {
+ text-align: justify; }
+
+@media print, screen and (min-width: 40em) {
+ .medium-text-left {
+ text-align: left; }
+ .medium-text-right {
+ text-align: right; }
+ .medium-text-center {
+ text-align: center; }
+ .medium-text-justify {
+ text-align: justify; } }
+
+@media print, screen and (min-width: 64em) {
+ .large-text-left {
+ text-align: left; }
+ .large-text-right {
+ text-align: right; }
+ .large-text-center {
+ text-align: center; }
+ .large-text-justify {
+ text-align: justify; } }
+
+.show-for-print {
+ display: none !important; }
+
+@media print {
+ * {
+ background: transparent !important;
+ box-shadow: none !important;
+ color: black !important;
+ text-shadow: none !important; }
+ .show-for-print {
+ display: block !important; }
+ .hide-for-print {
+ display: none !important; }
+ table.show-for-print {
+ display: table !important; }
+ thead.show-for-print {
+ display: table-header-group !important; }
+ tbody.show-for-print {
+ display: table-row-group !important; }
+ tr.show-for-print {
+ display: table-row !important; }
+ td.show-for-print {
+ display: table-cell !important; }
+ th.show-for-print {
+ display: table-cell !important; }
+ a,
+ a:visited {
+ text-decoration: underline; }
+ a[href]:after {
+ content: " (" attr(href) ")"; }
+ .ir a:after,
+ a[href^='javascript:']:after,
+ a[href^='#']:after {
+ content: ''; }
+ abbr[title]:after {
+ content: " (" attr(title) ")"; }
+ pre,
+ blockquote {
+ border: 1px solid #8a8a8a;
+ page-break-inside: avoid; }
+ thead {
+ display: table-header-group; }
+ tr,
+ img {
+ page-break-inside: avoid; }
+ img {
+ max-width: 100% !important; }
+ @page {
+ margin: 0.5cm; }
+ p,
+ h2,
+ h3 {
+ orphans: 3;
+ widows: 3; }
+ h2,
+ h3 {
+ page-break-after: avoid; } }
+
+.button {
+ display: inline-block;
+ vertical-align: middle;
+ margin: 0 0 1rem 0;
+ padding: 0.85em 1em;
+ -webkit-appearance: none;
+ border: 1px solid transparent;
+ border-radius: 0;
+ transition: background-color 0.25s ease-out, color 0.25s ease-out;
+ font-size: 0.9rem;
+ line-height: 1;
+ text-align: center;
+ cursor: pointer;
+ background-color: #1779ba;
+ color: #fefefe; }
+[data-whatinput='mouse'] .button {
+ outline: 0; }
+.button:hover, .button:focus {
+ background-color: #14679e;
+ color: #fefefe; }
+.button.tiny {
+ font-size: 0.6rem; }
+.button.small {
+ font-size: 0.75rem; }
+.button.large {
+ font-size: 1.25rem; }
+.button.expanded {
+ display: block;
+ width: 100%;
+ margin-right: 0;
+ margin-left: 0; }
+.button.primary {
+ background-color: #1779ba;
+ color: #fefefe; }
+.button.primary:hover, .button.primary:focus {
+ background-color: #126195;
+ color: #fefefe; }
+.button.secondary {
+ background-color: #767676;
+ color: #fefefe; }
+.button.secondary:hover, .button.secondary:focus {
+ background-color: #5e5e5e;
+ color: #fefefe; }
+.button.success {
+ background-color: #3adb76;
+ color: #0a0a0a; }
+.button.success:hover, .button.success:focus {
+ background-color: #22bb5b;
+ color: #0a0a0a; }
+.button.warning {
+ background-color: #ffae00;
+ color: #0a0a0a; }
+.button.warning:hover, .button.warning:focus {
+ background-color: #cc8b00;
+ color: #0a0a0a; }
+.button.alert {
+ background-color: #cc4b37;
+ color: #fefefe; }
+.button.alert:hover, .button.alert:focus {
+ background-color: #a53b2a;
+ color: #fefefe; }
+.button.hollow {
+ border: 1px solid #1779ba;
+ color: #1779ba; }
+.button.hollow, .button.hollow:hover, .button.hollow:focus {
+ background-color: transparent; }
+.button.hollow:hover, .button.hollow:focus {
+ border-color: #0c3d5d;
+ color: #0c3d5d; }
+.button.hollow.primary {
+ border: 1px solid #1779ba;
+ color: #1779ba; }
+.button.hollow.primary:hover, .button.hollow.primary:focus {
+ border-color: #0c3d5d;
+ color: #0c3d5d; }
+.button.hollow.secondary {
+ border: 1px solid #767676;
+ color: #767676; }
+.button.hollow.secondary:hover, .button.hollow.secondary:focus {
+ border-color: #3b3b3b;
+ color: #3b3b3b; }
+.button.hollow.success {
+ border: 1px solid #3adb76;
+ color: #3adb76; }
+.button.hollow.success:hover, .button.hollow.success:focus {
+ border-color: #157539;
+ color: #157539; }
+.button.hollow.warning {
+ border: 1px solid #ffae00;
+ color: #ffae00; }
+.button.hollow.warning:hover, .button.hollow.warning:focus {
+ border-color: #805700;
+ color: #805700; }
+.button.hollow.alert {
+ border: 1px solid #cc4b37;
+ color: #cc4b37; }
+.button.hollow.alert:hover, .button.hollow.alert:focus {
+ border-color: #67251a;
+ color: #67251a; }
+.button.disabled, .button[disabled] {
+ opacity: 0.25;
+ cursor: not-allowed; }
+.button.disabled, .button.disabled:hover, .button.disabled:focus, .button[disabled], .button[disabled]:hover, .button[disabled]:focus {
+ background-color: #1779ba;
+ color: #fefefe; }
+.button.disabled.primary, .button[disabled].primary {
+ opacity: 0.25;
+ cursor: not-allowed; }
+.button.disabled.primary, .button.disabled.primary:hover, .button.disabled.primary:focus, .button[disabled].primary, .button[disabled].primary:hover, .button[disabled].primary:focus {
+ background-color: #1779ba;
+ color: #fefefe; }
+.button.disabled.secondary, .button[disabled].secondary {
+ opacity: 0.25;
+ cursor: not-allowed; }
+.button.disabled.secondary, .button.disabled.secondary:hover, .button.disabled.secondary:focus, .button[disabled].secondary, .button[disabled].secondary:hover, .button[disabled].secondary:focus {
+ background-color: #767676;
+ color: #fefefe; }
+.button.disabled.success, .button[disabled].success {
+ opacity: 0.25;
+ cursor: not-allowed; }
+.button.disabled.success, .button.disabled.success:hover, .button.disabled.success:focus, .button[disabled].success, .button[disabled].success:hover, .button[disabled].success:focus {
+ background-color: #3adb76;
+ color: #0a0a0a; }
+.button.disabled.warning, .button[disabled].warning {
+ opacity: 0.25;
+ cursor: not-allowed; }
+.button.disabled.warning, .button.disabled.warning:hover, .button.disabled.warning:focus, .button[disabled].warning, .button[disabled].warning:hover, .button[disabled].warning:focus {
+ background-color: #ffae00;
+ color: #0a0a0a; }
+.button.disabled.alert, .button[disabled].alert {
+ opacity: 0.25;
+ cursor: not-allowed; }
+.button.disabled.alert, .button.disabled.alert:hover, .button.disabled.alert:focus, .button[disabled].alert, .button[disabled].alert:hover, .button[disabled].alert:focus {
+ background-color: #cc4b37;
+ color: #fefefe; }
+.button.dropdown::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.4em;
+ content: '';
+ border-bottom-width: 0;
+ border-top-style: solid;
+ border-color: #fefefe transparent transparent;
+ position: relative;
+ top: 0.4em;
+ display: inline-block;
+ float: right;
+ margin-left: 1em; }
+.button.arrow-only::after {
+ top: -0.1em;
+ float: none;
+ margin-left: 0; }
+
+[type='text'], [type='password'], [type='date'], [type='datetime'], [type='datetime-local'], [type='month'], [type='week'], [type='email'], [type='number'], [type='search'], [type='tel'], [type='time'], [type='url'], [type='color'],
+textarea {
+ display: block;
+ box-sizing: border-box;
+ width: 100%;
+ height: 2.4375rem;
+ margin: 0 0 1rem;
+ padding: 0.5rem;
+ border: 1px solid #cacaca;
+ border-radius: 0;
+ background-color: #fefefe;
+ box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1);
+ font-family: inherit;
+ font-size: 1rem;
+ font-weight: normal;
+ color: #0a0a0a;
+ transition: box-shadow 0.5s, border-color 0.25s ease-in-out;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none; }
+[type='text']:focus, [type='password']:focus, [type='date']:focus, [type='datetime']:focus, [type='datetime-local']:focus, [type='month']:focus, [type='week']:focus, [type='email']:focus, [type='number']:focus, [type='search']:focus, [type='tel']:focus, [type='time']:focus, [type='url']:focus, [type='color']:focus,
+textarea:focus {
+ outline: none;
+ border: 1px solid #8a8a8a;
+ background-color: #fefefe;
+ box-shadow: 0 0 5px #cacaca;
+ transition: box-shadow 0.5s, border-color 0.25s ease-in-out; }
+
+textarea {
+ max-width: 100%; }
+textarea[rows] {
+ height: auto; }
+
+input::-webkit-input-placeholder,
+textarea::-webkit-input-placeholder {
+ color: #cacaca; }
+
+input::-moz-placeholder,
+textarea::-moz-placeholder {
+ color: #cacaca; }
+
+input:-ms-input-placeholder,
+textarea:-ms-input-placeholder {
+ color: #cacaca; }
+
+input::placeholder,
+textarea::placeholder {
+ color: #cacaca; }
+
+input:disabled, input[readonly],
+textarea:disabled,
+textarea[readonly] {
+ background-color: #e6e6e6;
+ cursor: not-allowed; }
+
+[type='submit'],
+[type='button'] {
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ border-radius: 0; }
+
+input[type='search'] {
+ box-sizing: border-box; }
+
+[type='file'],
+[type='checkbox'],
+[type='radio'] {
+ margin: 0 0 1rem; }
+
+[type='checkbox'] + label,
+[type='radio'] + label {
+ display: inline-block;
+ vertical-align: baseline;
+ margin-left: 0.5rem;
+ margin-right: 1rem;
+ margin-bottom: 0; }
+[type='checkbox'] + label[for],
+[type='radio'] + label[for] {
+ cursor: pointer; }
+
+label > [type='checkbox'],
+label > [type='radio'] {
+ margin-right: 0.5rem; }
+
+[type='file'] {
+ width: 100%; }
+
+label {
+ display: block;
+ margin: 0;
+ font-size: 0.875rem;
+ font-weight: normal;
+ line-height: 1.8;
+ color: #0a0a0a; }
+label.middle {
+ margin: 0 0 1rem;
+ padding: 0.5625rem 0; }
+
+.help-text {
+ margin-top: -0.5rem;
+ font-size: 0.8125rem;
+ font-style: italic;
+ color: #0a0a0a; }
+
+.input-group {
+ display: table;
+ width: 100%;
+ margin-bottom: 1rem; }
+.input-group > :first-child {
+ border-radius: 0 0 0 0; }
+.input-group > :last-child > * {
+ border-radius: 0 0 0 0; }
+
+.input-group-label, .input-group-field, .input-group-button, .input-group-button a,
+.input-group-button input,
+.input-group-button button,
+.input-group-button label {
+ margin: 0;
+ white-space: nowrap;
+ display: table-cell;
+ vertical-align: middle; }
+
+.input-group-label {
+ padding: 0 1rem;
+ border: 1px solid #cacaca;
+ background: #e6e6e6;
+ color: #0a0a0a;
+ text-align: center;
+ white-space: nowrap;
+ width: 1%;
+ height: 100%; }
+.input-group-label:first-child {
+ border-right: 0; }
+.input-group-label:last-child {
+ border-left: 0; }
+
+.input-group-field {
+ border-radius: 0;
+ height: 2.5rem; }
+
+.input-group-button {
+ padding-top: 0;
+ padding-bottom: 0;
+ text-align: center;
+ width: 1%;
+ height: 100%; }
+.input-group-button a,
+.input-group-button input,
+.input-group-button button,
+.input-group-button label {
+ height: 2.5rem;
+ padding-top: 0;
+ padding-bottom: 0;
+ font-size: 1rem; }
+
+.input-group .input-group-button {
+ display: table-cell; }
+
+fieldset {
+ margin: 0;
+ padding: 0;
+ border: 0; }
+
+legend {
+ max-width: 100%;
+ margin-bottom: 0.5rem; }
+
+.fieldset {
+ margin: 1.125rem 0;
+ padding: 1.25rem;
+ border: 1px solid #cacaca; }
+.fieldset legend {
+ margin: 0;
+ margin-left: -0.1875rem;
+ padding: 0 0.1875rem;
+ background: #fefefe; }
+
+select {
+ height: 2.4375rem;
+ margin: 0 0 1rem;
+ padding: 0.5rem;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ border: 1px solid #cacaca;
+ border-radius: 0;
+ background-color: #fefefe;
+ font-family: inherit;
+ font-size: 1rem;
+ line-height: normal;
+ color: #0a0a0a;
+ background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' width='32' height='24' viewBox='0 0 32 24'><polygon points='0,0 32,0 16,24' style='fill: rgb%28138, 138, 138%29'></polygon></svg>");
+ background-origin: content-box;
+ background-position: right -1rem center;
+ background-repeat: no-repeat;
+ background-size: 9px 6px;
+ padding-right: 1.5rem;
+ transition: box-shadow 0.5s, border-color 0.25s ease-in-out; }
+@media screen and (min-width: 0\0) {
+ select {
+ background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAYCAYAAACbU/80AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAIpJREFUeNrEkckNgDAMBBfRkEt0ObRBBdsGXUDgmQfK4XhH2m8czQAAy27R3tsw4Qfe2x8uOO6oYLb6GlOor3GF+swURAOmUJ+RwtEJs9WvTGEYxBXqI1MQAZhCfUQKRzDMVj+TwrAIV6jvSUEkYAr1LSkcyTBb/V+KYfX7xAeusq3sLDtGH3kEGACPWIflNZfhRQAAAABJRU5ErkJggg=="); } }
+select:focus {
+ outline: none;
+ border: 1px solid #8a8a8a;
+ background-color: #fefefe;
+ box-shadow: 0 0 5px #cacaca;
+ transition: box-shadow 0.5s, border-color 0.25s ease-in-out; }
+select:disabled {
+ background-color: #e6e6e6;
+ cursor: not-allowed; }
+select::-ms-expand {
+ display: none; }
+select[multiple] {
+ height: auto;
+ background-image: none; }
+
+.is-invalid-input:not(:focus) {
+ border-color: #cc4b37;
+ background-color: #f9ecea; }
+.is-invalid-input:not(:focus)::-webkit-input-placeholder {
+ color: #cc4b37; }
+.is-invalid-input:not(:focus)::-moz-placeholder {
+ color: #cc4b37; }
+.is-invalid-input:not(:focus):-ms-input-placeholder {
+ color: #cc4b37; }
+.is-invalid-input:not(:focus)::placeholder {
+ color: #cc4b37; }
+
+.is-invalid-label {
+ color: #cc4b37; }
+
+.form-error {
+ display: none;
+ margin-top: -0.5rem;
+ margin-bottom: 1rem;
+ font-size: 0.75rem;
+ font-weight: bold;
+ color: #cc4b37; }
+.form-error.is-visible {
+ display: block; }
+
+.accordion {
+ margin-left: 0;
+ background: #fefefe;
+ list-style-type: none; }
+
+.accordion-item:first-child > :first-child {
+ border-radius: 0 0 0 0; }
+
+.accordion-item:last-child > :last-child {
+ border-radius: 0 0 0 0; }
+
+.accordion-title {
+ position: relative;
+ display: block;
+ padding: 1.25rem 1rem;
+ border: 1px solid #e6e6e6;
+ border-bottom: 0;
+ font-size: 0.75rem;
+ line-height: 1;
+ color: #1779ba; }
+:last-child:not(.is-active) > .accordion-title {
+ border-bottom: 1px solid #e6e6e6;
+ border-radius: 0 0 0 0; }
+.accordion-title:hover, .accordion-title:focus {
+ background-color: #e6e6e6; }
+.accordion-title::before {
+ position: absolute;
+ top: 50%;
+ right: 1rem;
+ margin-top: -0.5rem;
+ content: '+'; }
+.is-active > .accordion-title::before {
+ content: '\2013'; }
+
+.accordion-content {
+ display: none;
+ padding: 1rem;
+ border: 1px solid #e6e6e6;
+ border-bottom: 0;
+ background-color: #fefefe;
+ color: #0a0a0a; }
+:last-child > .accordion-content:last-child {
+ border-bottom: 1px solid #e6e6e6; }
+
+.is-accordion-submenu-parent > a {
+ position: relative; }
+.is-accordion-submenu-parent > a::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-bottom-width: 0;
+ border-top-style: solid;
+ border-color: #1779ba transparent transparent;
+ position: absolute;
+ top: 50%;
+ margin-top: -3px;
+ right: 1rem; }
+
+.is-accordion-submenu-parent[aria-expanded='true'] > a::after {
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+ -ms-transform-origin: 50% 50%;
+ transform-origin: 50% 50%; }
+
+.badge {
+ display: inline-block;
+ min-width: 2.1em;
+ padding: 0.3em;
+ border-radius: 50%;
+ font-size: 0.6rem;
+ text-align: center;
+ background: #1779ba;
+ color: #fefefe; }
+.badge.primary {
+ background: #1779ba;
+ color: #fefefe; }
+.badge.secondary {
+ background: #767676;
+ color: #fefefe; }
+.badge.success {
+ background: #3adb76;
+ color: #0a0a0a; }
+.badge.warning {
+ background: #ffae00;
+ color: #0a0a0a; }
+.badge.alert {
+ background: #cc4b37;
+ color: #fefefe; }
+
+.breadcrumbs {
+ margin: 0 0 1rem 0;
+ list-style: none; }
+.breadcrumbs::before, .breadcrumbs::after {
+ display: table;
+ content: ' '; }
+.breadcrumbs::after {
+ clear: both; }
+.breadcrumbs li {
+ float: left;
+ font-size: 0.6875rem;
+ color: #0a0a0a;
+ cursor: default;
+ text-transform: uppercase; }
+.breadcrumbs li:not(:last-child)::after {
+ position: relative;
+ top: 1px;
+ margin: 0 0.75rem;
+ opacity: 1;
+ content: "/";
+ color: #cacaca; }
+.breadcrumbs a {
+ color: #1779ba; }
+.breadcrumbs a:hover {
+ text-decoration: underline; }
+.breadcrumbs .disabled {
+ color: #cacaca;
+ cursor: not-allowed; }
+
+.button-group {
+ margin-bottom: 1rem;
+ font-size: 0; }
+.button-group::before, .button-group::after {
+ display: table;
+ content: ' '; }
+.button-group::after {
+ clear: both; }
+.button-group .button {
+ margin: 0;
+ margin-right: 1px;
+ margin-bottom: 1px;
+ font-size: 0.9rem; }
+.button-group .button:last-child {
+ margin-right: 0; }
+.button-group.tiny .button {
+ font-size: 0.6rem; }
+.button-group.small .button {
+ font-size: 0.75rem; }
+.button-group.large .button {
+ font-size: 1.25rem; }
+.button-group.expanded {
+ margin-right: -1px; }
+.button-group.expanded::before, .button-group.expanded::after {
+ display: none; }
+.button-group.expanded .button:first-child:last-child {
+ width: 100%; }
+.button-group.expanded .button:first-child:nth-last-child(2), .button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2) ~ .button {
+ display: inline-block;
+ width: calc(50% - 1px);
+ margin-right: 1px; }
+.button-group.expanded .button:first-child:nth-last-child(2):last-child, .button-group.expanded .button:first-child:nth-last-child(2):first-child:nth-last-child(2) ~ .button:last-child {
+ margin-right: -6px; }
+.button-group.expanded .button:first-child:nth-last-child(3), .button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3) ~ .button {
+ display: inline-block;
+ width: calc(33.33333% - 1px);
+ margin-right: 1px; }
+.button-group.expanded .button:first-child:nth-last-child(3):last-child, .button-group.expanded .button:first-child:nth-last-child(3):first-child:nth-last-child(3) ~ .button:last-child {
+ margin-right: -6px; }
+.button-group.expanded .button:first-child:nth-last-child(4), .button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4) ~ .button {
+ display: inline-block;
+ width: calc(25% - 1px);
+ margin-right: 1px; }
+.button-group.expanded .button:first-child:nth-last-child(4):last-child, .button-group.expanded .button:first-child:nth-last-child(4):first-child:nth-last-child(4) ~ .button:last-child {
+ margin-right: -6px; }
+.button-group.expanded .button:first-child:nth-last-child(5), .button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5) ~ .button {
+ display: inline-block;
+ width: calc(20% - 1px);
+ margin-right: 1px; }
+.button-group.expanded .button:first-child:nth-last-child(5):last-child, .button-group.expanded .button:first-child:nth-last-child(5):first-child:nth-last-child(5) ~ .button:last-child {
+ margin-right: -6px; }
+.button-group.expanded .button:first-child:nth-last-child(6), .button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6) ~ .button {
+ display: inline-block;
+ width: calc(16.66667% - 1px);
+ margin-right: 1px; }
+.button-group.expanded .button:first-child:nth-last-child(6):last-child, .button-group.expanded .button:first-child:nth-last-child(6):first-child:nth-last-child(6) ~ .button:last-child {
+ margin-right: -6px; }
+.button-group.primary .button {
+ background-color: #1779ba;
+ color: #fefefe; }
+.button-group.primary .button:hover, .button-group.primary .button:focus {
+ background-color: #126195;
+ color: #fefefe; }
+.button-group.secondary .button {
+ background-color: #767676;
+ color: #fefefe; }
+.button-group.secondary .button:hover, .button-group.secondary .button:focus {
+ background-color: #5e5e5e;
+ color: #fefefe; }
+.button-group.success .button {
+ background-color: #3adb76;
+ color: #0a0a0a; }
+.button-group.success .button:hover, .button-group.success .button:focus {
+ background-color: #22bb5b;
+ color: #0a0a0a; }
+.button-group.warning .button {
+ background-color: #ffae00;
+ color: #0a0a0a; }
+.button-group.warning .button:hover, .button-group.warning .button:focus {
+ background-color: #cc8b00;
+ color: #0a0a0a; }
+.button-group.alert .button {
+ background-color: #cc4b37;
+ color: #fefefe; }
+.button-group.alert .button:hover, .button-group.alert .button:focus {
+ background-color: #a53b2a;
+ color: #fefefe; }
+.button-group.stacked .button, .button-group.stacked-for-small .button, .button-group.stacked-for-medium .button {
+ width: 100%; }
+.button-group.stacked .button:last-child, .button-group.stacked-for-small .button:last-child, .button-group.stacked-for-medium .button:last-child {
+ margin-bottom: 0; }
+@media print, screen and (min-width: 40em) {
+ .button-group.stacked-for-small .button {
+ width: auto;
+ margin-bottom: 0; } }
+@media print, screen and (min-width: 64em) {
+ .button-group.stacked-for-medium .button {
+ width: auto;
+ margin-bottom: 0; } }
+@media screen and (max-width: 39.9375em) {
+ .button-group.stacked-for-small.expanded {
+ display: block; }
+ .button-group.stacked-for-small.expanded .button {
+ display: block;
+ margin-right: 0; } }
+
+.card {
+ margin-bottom: 1rem;
+ border: 1px solid #e6e6e6;
+ border-radius: 0;
+ background: #fefefe;
+ box-shadow: none;
+ overflow: hidden;
+ color: #0a0a0a; }
+.card > :last-child {
+ margin-bottom: 0; }
+
+.card-divider {
+ padding: 1rem;
+ background: #e6e6e6; }
+.card-divider > :last-child {
+ margin-bottom: 0; }
+
+.card-section {
+ padding: 1rem; }
+.card-section > :last-child {
+ margin-bottom: 0; }
+
+.callout {
+ position: relative;
+ margin: 0 0 1rem 0;
+ padding: 1rem;
+ border: 1px solid rgba(10, 10, 10, 0.25);
+ border-radius: 0;
+ background-color: white;
+ color: #0a0a0a; }
+.callout > :first-child {
+ margin-top: 0; }
+.callout > :last-child {
+ margin-bottom: 0; }
+.callout.primary {
+ background-color: #d7ecfa;
+ color: #0a0a0a; }
+.callout.secondary {
+ background-color: #eaeaea;
+ color: #0a0a0a; }
+.callout.success {
+ background-color: #e1faea;
+ color: #0a0a0a; }
+.callout.warning {
+ background-color: #fff3d9;
+ color: #0a0a0a; }
+.callout.alert {
+ background-color: #f7e4e1;
+ color: #0a0a0a; }
+.callout.small {
+ padding-top: 0.5rem;
+ padding-right: 0.5rem;
+ padding-bottom: 0.5rem;
+ padding-left: 0.5rem; }
+.callout.large {
+ padding-top: 3rem;
+ padding-right: 3rem;
+ padding-bottom: 3rem;
+ padding-left: 3rem; }
+
+.close-button {
+ position: absolute;
+ color: #8a8a8a;
+ cursor: pointer; }
+[data-whatinput='mouse'] .close-button {
+ outline: 0; }
+.close-button:hover, .close-button:focus {
+ color: #0a0a0a; }
+.close-button.small {
+ right: 0.66rem;
+ top: 0.33em;
+ font-size: 1.5em;
+ line-height: 1; }
+.close-button, .close-button.medium {
+ right: 1rem;
+ top: 0.5rem;
+ font-size: 2em;
+ line-height: 1; }
+
+.menu {
+ margin: 0;
+ list-style-type: none; }
+.menu > li {
+ display: table-cell;
+ vertical-align: middle; }
+[data-whatinput='mouse'] .menu > li {
+ outline: 0; }
+.menu > li > a {
+ display: block;
+ padding: 0.7rem 1rem;
+ line-height: 1; }
+.menu input,
+.menu select,
+.menu a,
+.menu button {
+ margin-bottom: 0; }
+.menu > li > a img,
+.menu > li > a i,
+.menu > li > a svg {
+ vertical-align: middle; }
+.menu > li > a img + span,
+.menu > li > a i + span,
+.menu > li > a svg + span {
+ vertical-align: middle; }
+.menu > li > a img,
+.menu > li > a i,
+.menu > li > a svg {
+ margin-right: 0.25rem;
+ display: inline-block; }
+.menu > li, .menu.horizontal > li {
+ display: table-cell; }
+.menu.expanded {
+ display: table;
+ width: 100%;
+ table-layout: fixed; }
+.menu.expanded > li:first-child:last-child {
+ width: 100%; }
+.menu.vertical > li {
+ display: block; }
+@media print, screen and (min-width: 40em) {
+ .menu.medium-horizontal > li {
+ display: table-cell; }
+ .menu.medium-expanded {
+ display: table;
+ width: 100%;
+ table-layout: fixed; }
+ .menu.medium-expanded > li:first-child:last-child {
+ width: 100%; }
+ .menu.medium-vertical > li {
+ display: block; } }
+@media print, screen and (min-width: 64em) {
+ .menu.large-horizontal > li {
+ display: table-cell; }
+ .menu.large-expanded {
+ display: table;
+ width: 100%;
+ table-layout: fixed; }
+ .menu.large-expanded > li:first-child:last-child {
+ width: 100%; }
+ .menu.large-vertical > li {
+ display: block; } }
+.menu.simple li {
+ display: inline-block;
+ vertical-align: top;
+ line-height: 1; }
+.menu.simple a {
+ padding: 0; }
+.menu.simple li {
+ margin-left: 0;
+ margin-right: 1rem; }
+.menu.simple.align-right li {
+ margin-right: 0;
+ margin-left: 1rem; }
+.menu.align-right::before, .menu.align-right::after {
+ display: table;
+ content: ' '; }
+.menu.align-right::after {
+ clear: both; }
+.menu.align-right > li {
+ float: right; }
+.menu.icon-top > li > a {
+ text-align: center; }
+.menu.icon-top > li > a img,
+.menu.icon-top > li > a i,
+.menu.icon-top > li > a svg {
+ display: block;
+ margin: 0 auto 0.25rem; }
+.menu.icon-top.vertical a > span {
+ margin: auto; }
+.menu.nested {
+ margin-left: 1rem; }
+.menu .active > a {
+ background: #1779ba;
+ color: #fefefe; }
+.menu.menu-bordered li {
+ border: 1px solid #e6e6e6; }
+.menu.menu-bordered li:not(:first-child) {
+ border-top: 0; }
+.menu.menu-hover li:hover {
+ background-color: #e6e6e6; }
+
+.menu-text {
+ padding-top: 0;
+ padding-bottom: 0;
+ padding: 0.7rem 1rem;
+ font-weight: bold;
+ line-height: 1;
+ color: inherit; }
+
+.menu-centered {
+ text-align: center; }
+.menu-centered > .menu {
+ display: inline-block;
+ vertical-align: top; }
+
+.no-js [data-responsive-menu] ul {
+ display: none; }
+
+.menu-icon {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+ width: 20px;
+ height: 16px;
+ cursor: pointer; }
+.menu-icon::after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ display: block;
+ width: 100%;
+ height: 2px;
+ background: #fefefe;
+ box-shadow: 0 7px 0 #fefefe, 0 14px 0 #fefefe;
+ content: ''; }
+.menu-icon:hover::after {
+ background: #cacaca;
+ box-shadow: 0 7px 0 #cacaca, 0 14px 0 #cacaca; }
+
+.menu-icon.dark {
+ position: relative;
+ display: inline-block;
+ vertical-align: middle;
+ width: 20px;
+ height: 16px;
+ cursor: pointer; }
+.menu-icon.dark::after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ display: block;
+ width: 100%;
+ height: 2px;
+ background: #0a0a0a;
+ box-shadow: 0 7px 0 #0a0a0a, 0 14px 0 #0a0a0a;
+ content: ''; }
+.menu-icon.dark:hover::after {
+ background: #8a8a8a;
+ box-shadow: 0 7px 0 #8a8a8a, 0 14px 0 #8a8a8a; }
+
+.is-drilldown {
+ position: relative;
+ overflow: hidden; }
+.is-drilldown li {
+ display: block; }
+.is-drilldown.animate-height {
+ transition: height 0.5s; }
+
+.is-drilldown-submenu {
+ position: absolute;
+ top: 0;
+ left: 100%;
+ z-index: -1;
+ width: 100%;
+ background: #fefefe;
+ transition: transform 0.15s linear; }
+.is-drilldown-submenu.is-active {
+ z-index: 1;
+ display: block;
+ -ms-transform: translateX(-100%);
+ transform: translateX(-100%); }
+.is-drilldown-submenu.is-closing {
+ -ms-transform: translateX(100%);
+ transform: translateX(100%); }
+
+.drilldown-submenu-cover-previous {
+ min-height: 100%; }
+
+.is-drilldown-submenu-parent > a {
+ position: relative; }
+.is-drilldown-submenu-parent > a::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-right-width: 0;
+ border-left-style: solid;
+ border-color: transparent transparent transparent #1779ba;
+ position: absolute;
+ top: 50%;
+ margin-top: -6px;
+ right: 1rem; }
+
+.js-drilldown-back > a::before {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-left-width: 0;
+ border-right-style: solid;
+ border-color: transparent #1779ba transparent transparent;
+ border-left-width: 0;
+ display: inline-block;
+ vertical-align: middle;
+ margin-right: 0.75rem;
+ border-left-width: 0; }
+
+.dropdown-pane {
+ position: absolute;
+ z-index: 10;
+ display: block;
+ width: 300px;
+ padding: 1rem;
+ visibility: hidden;
+ border: 1px solid #cacaca;
+ border-radius: 0;
+ background-color: #fefefe;
+ font-size: 1rem; }
+.dropdown-pane.is-open {
+ visibility: visible; }
+
+.dropdown-pane.tiny {
+ width: 100px; }
+
+.dropdown-pane.small {
+ width: 200px; }
+
+.dropdown-pane.large {
+ width: 400px; }
+
+.dropdown.menu > li.opens-left > .is-dropdown-submenu {
+ top: 100%;
+ right: 0;
+ left: auto; }
+
+.dropdown.menu > li.opens-right > .is-dropdown-submenu {
+ top: 100%;
+ right: auto;
+ left: 0; }
+
+.dropdown.menu > li.is-dropdown-submenu-parent > a {
+ position: relative;
+ padding-right: 1.5rem; }
+
+.dropdown.menu > li.is-dropdown-submenu-parent > a::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-bottom-width: 0;
+ border-top-style: solid;
+ border-color: #1779ba transparent transparent;
+ right: 5px;
+ margin-top: -3px; }
+
+[data-whatinput='mouse'] .dropdown.menu a {
+ outline: 0; }
+
+.no-js .dropdown.menu ul {
+ display: none; }
+
+.dropdown.menu.vertical > li .is-dropdown-submenu {
+ top: 0; }
+
+.dropdown.menu.vertical > li.opens-left > .is-dropdown-submenu {
+ right: 100%;
+ left: auto; }
+
+.dropdown.menu.vertical > li.opens-right > .is-dropdown-submenu {
+ right: auto;
+ left: 100%; }
+
+.dropdown.menu.vertical > li > a::after {
+ right: 14px; }
+
+.dropdown.menu.vertical > li.opens-left > a::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-left-width: 0;
+ border-right-style: solid;
+ border-color: transparent #1779ba transparent transparent; }
+
+.dropdown.menu.vertical > li.opens-right > a::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-right-width: 0;
+ border-left-style: solid;
+ border-color: transparent transparent transparent #1779ba; }
+
+@media print, screen and (min-width: 40em) {
+ .dropdown.menu.medium-horizontal > li.opens-left > .is-dropdown-submenu {
+ top: 100%;
+ right: 0;
+ left: auto; }
+ .dropdown.menu.medium-horizontal > li.opens-right > .is-dropdown-submenu {
+ top: 100%;
+ right: auto;
+ left: 0; }
+ .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a {
+ position: relative;
+ padding-right: 1.5rem; }
+ .dropdown.menu.medium-horizontal > li.is-dropdown-submenu-parent > a::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-bottom-width: 0;
+ border-top-style: solid;
+ border-color: #1779ba transparent transparent;
+ right: 5px;
+ margin-top: -3px; }
+ .dropdown.menu.medium-vertical > li .is-dropdown-submenu {
+ top: 0; }
+ .dropdown.menu.medium-vertical > li.opens-left > .is-dropdown-submenu {
+ right: 100%;
+ left: auto; }
+ .dropdown.menu.medium-vertical > li.opens-right > .is-dropdown-submenu {
+ right: auto;
+ left: 100%; }
+ .dropdown.menu.medium-vertical > li > a::after {
+ right: 14px; }
+ .dropdown.menu.medium-vertical > li.opens-left > a::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-left-width: 0;
+ border-right-style: solid;
+ border-color: transparent #1779ba transparent transparent; }
+ .dropdown.menu.medium-vertical > li.opens-right > a::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-right-width: 0;
+ border-left-style: solid;
+ border-color: transparent transparent transparent #1779ba; } }
+
+@media print, screen and (min-width: 64em) {
+ .dropdown.menu.large-horizontal > li.opens-left > .is-dropdown-submenu {
+ top: 100%;
+ right: 0;
+ left: auto; }
+ .dropdown.menu.large-horizontal > li.opens-right > .is-dropdown-submenu {
+ top: 100%;
+ right: auto;
+ left: 0; }
+ .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a {
+ position: relative;
+ padding-right: 1.5rem; }
+ .dropdown.menu.large-horizontal > li.is-dropdown-submenu-parent > a::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-bottom-width: 0;
+ border-top-style: solid;
+ border-color: #1779ba transparent transparent;
+ right: 5px;
+ margin-top: -3px; }
+ .dropdown.menu.large-vertical > li .is-dropdown-submenu {
+ top: 0; }
+ .dropdown.menu.large-vertical > li.opens-left > .is-dropdown-submenu {
+ right: 100%;
+ left: auto; }
+ .dropdown.menu.large-vertical > li.opens-right > .is-dropdown-submenu {
+ right: auto;
+ left: 100%; }
+ .dropdown.menu.large-vertical > li > a::after {
+ right: 14px; }
+ .dropdown.menu.large-vertical > li.opens-left > a::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-left-width: 0;
+ border-right-style: solid;
+ border-color: transparent #1779ba transparent transparent; }
+ .dropdown.menu.large-vertical > li.opens-right > a::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-right-width: 0;
+ border-left-style: solid;
+ border-color: transparent transparent transparent #1779ba; } }
+
+.dropdown.menu.align-right .is-dropdown-submenu.first-sub {
+ top: 100%;
+ right: 0;
+ left: auto; }
+
+.is-dropdown-menu.vertical {
+ width: 100px; }
+.is-dropdown-menu.vertical.align-right {
+ float: right; }
+
+.is-dropdown-submenu-parent {
+ position: relative; }
+.is-dropdown-submenu-parent a::after {
+ position: absolute;
+ top: 50%;
+ right: 5px;
+ margin-top: -6px; }
+.is-dropdown-submenu-parent.opens-inner > .is-dropdown-submenu {
+ top: 100%;
+ left: auto; }
+.is-dropdown-submenu-parent.opens-left > .is-dropdown-submenu {
+ right: 100%;
+ left: auto; }
+.is-dropdown-submenu-parent.opens-right > .is-dropdown-submenu {
+ right: auto;
+ left: 100%; }
+
+.is-dropdown-submenu {
+ position: absolute;
+ top: 0;
+ left: 100%;
+ z-index: 1;
+ display: none;
+ min-width: 200px;
+ border: 1px solid #cacaca;
+ background: #fefefe; }
+.is-dropdown-submenu .is-dropdown-submenu-parent > a::after {
+ right: 14px; }
+.is-dropdown-submenu .is-dropdown-submenu-parent.opens-left > a::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-left-width: 0;
+ border-right-style: solid;
+ border-color: transparent #1779ba transparent transparent; }
+.is-dropdown-submenu .is-dropdown-submenu-parent.opens-right > a::after {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 6px;
+ content: '';
+ border-right-width: 0;
+ border-left-style: solid;
+ border-color: transparent transparent transparent #1779ba; }
+.is-dropdown-submenu .is-dropdown-submenu {
+ margin-top: -1px; }
+.is-dropdown-submenu > li {
+ width: 100%; }
+.is-dropdown-submenu.js-dropdown-active {
+ display: block; }
+
+.responsive-embed,
+.flex-video {
+ position: relative;
+ height: 0;
+ margin-bottom: 1rem;
+ padding-bottom: 75%;
+ overflow: hidden; }
+.responsive-embed iframe,
+.responsive-embed object,
+.responsive-embed embed,
+.responsive-embed video,
+.flex-video iframe,
+.flex-video object,
+.flex-video embed,
+.flex-video video {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%; }
+.responsive-embed.widescreen,
+.flex-video.widescreen {
+ padding-bottom: 56.25%; }
+
+.label {
+ display: inline-block;
+ padding: 0.33333rem 0.5rem;
+ border-radius: 0;
+ font-size: 0.8rem;
+ line-height: 1;
+ white-space: nowrap;
+ cursor: default;
+ background: #1779ba;
+ color: #fefefe; }
+.label.primary {
+ background: #1779ba;
+ color: #fefefe; }
+.label.secondary {
+ background: #767676;
+ color: #fefefe; }
+.label.success {
+ background: #3adb76;
+ color: #0a0a0a; }
+.label.warning {
+ background: #ffae00;
+ color: #0a0a0a; }
+.label.alert {
+ background: #cc4b37;
+ color: #fefefe; }
+
+.media-object {
+ display: block;
+ margin-bottom: 1rem; }
+.media-object img {
+ max-width: none; }
+@media screen and (max-width: 39.9375em) {
+ .media-object.stack-for-small .media-object-section {
+ padding: 0;
+ padding-bottom: 1rem;
+ display: block; }
+ .media-object.stack-for-small .media-object-section img {
+ width: 100%; } }
+
+.media-object-section {
+ display: table-cell;
+ vertical-align: top; }
+.media-object-section:first-child {
+ padding-right: 1rem; }
+.media-object-section:last-child:not(:nth-child(2)) {
+ padding-left: 1rem; }
+.media-object-section > :last-child {
+ margin-bottom: 0; }
+.media-object-section.middle {
+ vertical-align: middle; }
+.media-object-section.bottom {
+ vertical-align: bottom; }
+
+.is-off-canvas-open {
+ overflow: hidden; }
+
+.js-off-canvas-overlay {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ transition: opacity 0.5s ease, visibility 0.5s ease;
+ background: rgba(254, 254, 254, 0.25);
+ opacity: 0;
+ visibility: hidden;
+ overflow: hidden; }
+.js-off-canvas-overlay.is-visible {
+ opacity: 1;
+ visibility: visible; }
+.js-off-canvas-overlay.is-closable {
+ cursor: pointer; }
+.js-off-canvas-overlay.is-overlay-absolute {
+ position: absolute; }
+.js-off-canvas-overlay.is-overlay-fixed {
+ position: fixed; }
+
+.off-canvas-wrapper {
+ position: relative;
+ overflow: hidden; }
+
+.off-canvas {
+ position: fixed;
+ z-index: 1;
+ transition: transform 0.5s ease;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ background: #e6e6e6; }
+[data-whatinput='mouse'] .off-canvas {
+ outline: 0; }
+.off-canvas.is-transition-overlap {
+ z-index: 10; }
+.off-canvas.is-transition-overlap.is-open {
+ box-shadow: 0 0 10px rgba(10, 10, 10, 0.7); }
+.off-canvas.is-open {
+ -ms-transform: translate(0, 0);
+ transform: translate(0, 0); }
+
+.off-canvas-absolute {
+ position: absolute;
+ z-index: 1;
+ transition: transform 0.5s ease;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ background: #e6e6e6; }
+[data-whatinput='mouse'] .off-canvas-absolute {
+ outline: 0; }
+.off-canvas-absolute.is-transition-overlap {
+ z-index: 10; }
+.off-canvas-absolute.is-transition-overlap.is-open {
+ box-shadow: 0 0 10px rgba(10, 10, 10, 0.7); }
+.off-canvas-absolute.is-open {
+ -ms-transform: translate(0, 0);
+ transform: translate(0, 0); }
+
+.position-left {
+ top: 0;
+ left: 0;
+ width: 250px;
+ height: 100%;
+ -ms-transform: translateX(-250px);
+ transform: translateX(-250px);
+ overflow-y: auto; }
+.position-left.is-open ~ .off-canvas-content {
+ -ms-transform: translateX(250px);
+ transform: translateX(250px); }
+.position-left.is-transition-push::after {
+ position: absolute;
+ top: 0;
+ right: 0;
+ height: 100%;
+ width: 1px;
+ box-shadow: 0 0 10px rgba(10, 10, 10, 0.7);
+ content: " "; }
+.position-left.is-transition-overlap.is-open ~ .off-canvas-content {
+ -ms-transform: none;
+ transform: none; }
+
+.position-right {
+ top: 0;
+ right: 0;
+ width: 250px;
+ height: 100%;
+ -ms-transform: translateX(250px);
+ transform: translateX(250px);
+ overflow-y: auto; }
+.position-right.is-open ~ .off-canvas-content {
+ -ms-transform: translateX(-250px);
+ transform: translateX(-250px); }
+.position-right.is-transition-push::after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+ width: 1px;
+ box-shadow: 0 0 10px rgba(10, 10, 10, 0.7);
+ content: " "; }
+.position-right.is-transition-overlap.is-open ~ .off-canvas-content {
+ -ms-transform: none;
+ transform: none; }
+
+.position-top {
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 250px;
+ -ms-transform: translateY(-250px);
+ transform: translateY(-250px);
+ overflow-x: auto; }
+.position-top.is-open ~ .off-canvas-content {
+ -ms-transform: translateY(250px);
+ transform: translateY(250px); }
+.position-top.is-transition-push::after {
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ height: 1px;
+ width: 100%;
+ box-shadow: 0 0 10px rgba(10, 10, 10, 0.7);
+ content: " "; }
+.position-top.is-transition-overlap.is-open ~ .off-canvas-content {
+ -ms-transform: none;
+ transform: none; }
+
+.position-bottom {
+ bottom: 0;
+ left: 0;
+ width: 100%;
+ height: 250px;
+ -ms-transform: translateY(250px);
+ transform: translateY(250px);
+ overflow-x: auto; }
+.position-bottom.is-open ~ .off-canvas-content {
+ -ms-transform: translateY(-250px);
+ transform: translateY(-250px); }
+.position-bottom.is-transition-push::after {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 1px;
+ width: 100%;
+ box-shadow: 0 0 10px rgba(10, 10, 10, 0.7);
+ content: " "; }
+.position-bottom.is-transition-overlap.is-open ~ .off-canvas-content {
+ -ms-transform: none;
+ transform: none; }
+
+.off-canvas-content {
+ transition: transform 0.5s ease;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+@media print, screen and (min-width: 40em) {
+ .position-left.reveal-for-medium {
+ -ms-transform: none;
+ transform: none;
+ z-index: 1; }
+ .position-left.reveal-for-medium ~ .off-canvas-content {
+ margin-left: 250px; }
+ .position-right.reveal-for-medium {
+ -ms-transform: none;
+ transform: none;
+ z-index: 1; }
+ .position-right.reveal-for-medium ~ .off-canvas-content {
+ margin-right: 250px; }
+ .position-top.reveal-for-medium {
+ -ms-transform: none;
+ transform: none;
+ z-index: 1; }
+ .position-top.reveal-for-medium ~ .off-canvas-content {
+ margin-top: 250px; }
+ .position-bottom.reveal-for-medium {
+ -ms-transform: none;
+ transform: none;
+ z-index: 1; }
+ .position-bottom.reveal-for-medium ~ .off-canvas-content {
+ margin-bottom: 250px; } }
+
+@media print, screen and (min-width: 64em) {
+ .position-left.reveal-for-large {
+ -ms-transform: none;
+ transform: none;
+ z-index: 1; }
+ .position-left.reveal-for-large ~ .off-canvas-content {
+ margin-left: 250px; }
+ .position-right.reveal-for-large {
+ -ms-transform: none;
+ transform: none;
+ z-index: 1; }
+ .position-right.reveal-for-large ~ .off-canvas-content {
+ margin-right: 250px; }
+ .position-top.reveal-for-large {
+ -ms-transform: none;
+ transform: none;
+ z-index: 1; }
+ .position-top.reveal-for-large ~ .off-canvas-content {
+ margin-top: 250px; }
+ .position-bottom.reveal-for-large {
+ -ms-transform: none;
+ transform: none;
+ z-index: 1; }
+ .position-bottom.reveal-for-large ~ .off-canvas-content {
+ margin-bottom: 250px; } }
+
+.orbit {
+ position: relative; }
+
+.orbit-container {
+ position: relative;
+ height: 0;
+ margin: 0;
+ list-style: none;
+ overflow: hidden; }
+
+.orbit-slide {
+ width: 100%; }
+.orbit-slide.no-motionui.is-active {
+ top: 0;
+ left: 0; }
+
+.orbit-figure {
+ margin: 0; }
+
+.orbit-image {
+ width: 100%;
+ max-width: 100%;
+ margin: 0; }
+
+.orbit-caption {
+ position: absolute;
+ bottom: 0;
+ width: 100%;
+ margin-bottom: 0;
+ padding: 1rem;
+ background-color: rgba(10, 10, 10, 0.5);
+ color: #fefefe; }
+
+.orbit-previous, .orbit-next {
+ position: absolute;
+ top: 50%;
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ z-index: 10;
+ padding: 1rem;
+ color: #fefefe; }
+[data-whatinput='mouse'] .orbit-previous, [data-whatinput='mouse'] .orbit-next {
+ outline: 0; }
+.orbit-previous:hover, .orbit-next:hover, .orbit-previous:active, .orbit-next:active, .orbit-previous:focus, .orbit-next:focus {
+ background-color: rgba(10, 10, 10, 0.5); }
+
+.orbit-previous {
+ left: 0; }
+
+.orbit-next {
+ left: auto;
+ right: 0; }
+
+.orbit-bullets {
+ position: relative;
+ margin-top: 0.8rem;
+ margin-bottom: 0.8rem;
+ text-align: center; }
+[data-whatinput='mouse'] .orbit-bullets {
+ outline: 0; }
+.orbit-bullets button {
+ width: 1.2rem;
+ height: 1.2rem;
+ margin: 0.1rem;
+ border-radius: 50%;
+ background-color: #cacaca; }
+.orbit-bullets button:hover {
+ background-color: #8a8a8a; }
+.orbit-bullets button.is-active {
+ background-color: #8a8a8a; }
+
+.pagination {
+ margin-left: 0;
+ margin-bottom: 1rem; }
+.pagination::before, .pagination::after {
+ display: table;
+ content: ' '; }
+.pagination::after {
+ clear: both; }
+.pagination li {
+ margin-right: 0.0625rem;
+ border-radius: 0;
+ font-size: 0.875rem;
+ display: none; }
+.pagination li:last-child, .pagination li:first-child {
+ display: inline-block; }
+@media print, screen and (min-width: 40em) {
+ .pagination li {
+ display: inline-block; } }
+.pagination a,
+.pagination button {
+ display: block;
+ padding: 0.1875rem 0.625rem;
+ border-radius: 0;
+ color: #0a0a0a; }
+.pagination a:hover,
+.pagination button:hover {
+ background: #e6e6e6; }
+.pagination .current {
+ padding: 0.1875rem 0.625rem;
+ background: #1779ba;
+ color: #fefefe;
+ cursor: default; }
+.pagination .disabled {
+ padding: 0.1875rem 0.625rem;
+ color: #cacaca;
+ cursor: not-allowed; }
+.pagination .disabled:hover {
+ background: transparent; }
+.pagination .ellipsis::after {
+ padding: 0.1875rem 0.625rem;
+ content: '\2026';
+ color: #0a0a0a; }
+
+.pagination-previous a::before,
+.pagination-previous.disabled::before {
+ display: inline-block;
+ margin-right: 0.5rem;
+ content: '\00ab'; }
+
+.pagination-next a::after,
+.pagination-next.disabled::after {
+ display: inline-block;
+ margin-left: 0.5rem;
+ content: '\00bb'; }
+
+.progress {
+ height: 1rem;
+ margin-bottom: 1rem;
+ border-radius: 0;
+ background-color: #cacaca; }
+.progress.primary .progress-meter {
+ background-color: #1779ba; }
+.progress.secondary .progress-meter {
+ background-color: #767676; }
+.progress.success .progress-meter {
+ background-color: #3adb76; }
+.progress.warning .progress-meter {
+ background-color: #ffae00; }
+.progress.alert .progress-meter {
+ background-color: #cc4b37; }
+
+.progress-meter {
+ position: relative;
+ display: block;
+ width: 0%;
+ height: 100%;
+ background-color: #1779ba; }
+
+.progress-meter-text {
+ position: absolute;
+ top: 50%;
+ left: 50%;
+ -ms-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ position: absolute;
+ margin: 0;
+ font-size: 0.75rem;
+ font-weight: bold;
+ color: #fefefe;
+ white-space: nowrap; }
+
+body.is-reveal-open {
+ overflow: hidden; }
+
+html.is-reveal-open,
+html.is-reveal-open body {
+ min-height: 100%;
+ overflow: hidden;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none; }
+
+.reveal-overlay {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 1005;
+ display: none;
+ background-color: rgba(10, 10, 10, 0.45);
+ overflow-y: scroll; }
+
+.reveal {
+ z-index: 1006;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ display: none;
+ padding: 1rem;
+ border: 1px solid #cacaca;
+ border-radius: 0;
+ background-color: #fefefe;
+ position: relative;
+ top: 100px;
+ margin-right: auto;
+ margin-left: auto;
+ overflow-y: auto; }
+[data-whatinput='mouse'] .reveal {
+ outline: 0; }
+@media print, screen and (min-width: 40em) {
+ .reveal {
+ min-height: 0; } }
+.reveal .column, .reveal .columns,
+.reveal .columns {
+ min-width: 0; }
+.reveal > :last-child {
+ margin-bottom: 0; }
+@media print, screen and (min-width: 40em) {
+ .reveal {
+ width: 600px;
+ max-width: 75rem; } }
+@media print, screen and (min-width: 40em) {
+ .reveal .reveal {
+ right: auto;
+ left: auto;
+ margin: 0 auto; } }
+.reveal.collapse {
+ padding: 0; }
+@media print, screen and (min-width: 40em) {
+ .reveal.tiny {
+ width: 30%;
+ max-width: 75rem; } }
+@media print, screen and (min-width: 40em) {
+ .reveal.small {
+ width: 50%;
+ max-width: 75rem; } }
+@media print, screen and (min-width: 40em) {
+ .reveal.large {
+ width: 90%;
+ max-width: 75rem; } }
+.reveal.full {
+ top: 0;
+ left: 0;
+ width: 100%;
+ max-width: none;
+ height: 100%;
+ height: 100vh;
+ min-height: 100vh;
+ margin-left: 0;
+ border: 0;
+ border-radius: 0; }
+@media screen and (max-width: 39.9375em) {
+ .reveal {
+ top: 0;
+ left: 0;
+ width: 100%;
+ max-width: none;
+ height: 100%;
+ height: 100vh;
+ min-height: 100vh;
+ margin-left: 0;
+ border: 0;
+ border-radius: 0; } }
+.reveal.without-overlay {
+ position: fixed; }
+
+.slider {
+ position: relative;
+ height: 0.5rem;
+ margin-top: 1.25rem;
+ margin-bottom: 2.25rem;
+ background-color: #e6e6e6;
+ cursor: pointer;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -ms-touch-action: none;
+ touch-action: none; }
+
+.slider-fill {
+ position: absolute;
+ top: 0;
+ left: 0;
+ display: inline-block;
+ max-width: 100%;
+ height: 0.5rem;
+ background-color: #cacaca;
+ transition: all 0.2s ease-in-out; }
+.slider-fill.is-dragging {
+ transition: all 0s linear; }
+
+.slider-handle {
+ position: absolute;
+ top: 50%;
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%);
+ position: absolute;
+ left: 0;
+ z-index: 1;
+ display: inline-block;
+ width: 1.4rem;
+ height: 1.4rem;
+ border-radius: 0;
+ background-color: #1779ba;
+ transition: all 0.2s ease-in-out;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation; }
+[data-whatinput='mouse'] .slider-handle {
+ outline: 0; }
+.slider-handle:hover {
+ background-color: #14679e; }
+.slider-handle.is-dragging {
+ transition: all 0s linear; }
+
+.slider.disabled,
+.slider[disabled] {
+ opacity: 0.25;
+ cursor: not-allowed; }
+
+.slider.vertical {
+ display: inline-block;
+ width: 0.5rem;
+ height: 12.5rem;
+ margin: 0 1.25rem;
+ -ms-transform: scale(1, -1);
+ transform: scale(1, -1); }
+.slider.vertical .slider-fill {
+ top: 0;
+ width: 0.5rem;
+ max-height: 100%; }
+.slider.vertical .slider-handle {
+ position: absolute;
+ top: 0;
+ left: 50%;
+ width: 1.4rem;
+ height: 1.4rem;
+ -ms-transform: translateX(-50%);
+ transform: translateX(-50%); }
+
+.sticky-container {
+ position: relative; }
+
+.sticky {
+ position: relative;
+ z-index: 0;
+ transform: translate3d(0, 0, 0); }
+
+.sticky.is-stuck {
+ position: fixed;
+ z-index: 5; }
+.sticky.is-stuck.is-at-top {
+ top: 0; }
+.sticky.is-stuck.is-at-bottom {
+ bottom: 0; }
+
+.sticky.is-anchored {
+ position: relative;
+ right: auto;
+ left: auto; }
+.sticky.is-anchored.is-at-bottom {
+ bottom: 0; }
+
+.switch {
+ height: 2rem;
+ position: relative;
+ margin-bottom: 1rem;
+ outline: 0;
+ font-size: 0.875rem;
+ font-weight: bold;
+ color: #fefefe;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none; }
+
+.switch-input {
+ position: absolute;
+ margin-bottom: 0;
+ opacity: 0; }
+
+.switch-paddle {
+ position: relative;
+ display: block;
+ width: 4rem;
+ height: 2rem;
+ border-radius: 0;
+ background: #cacaca;
+ transition: all 0.25s ease-out;
+ font-weight: inherit;
+ color: inherit;
+ cursor: pointer; }
+input + .switch-paddle {
+ margin: 0; }
+.switch-paddle::after {
+ position: absolute;
+ top: 0.25rem;
+ left: 0.25rem;
+ display: block;
+ width: 1.5rem;
+ height: 1.5rem;
+ transform: translate3d(0, 0, 0);
+ border-radius: 0;
+ background: #fefefe;
+ transition: all 0.25s ease-out;
+ content: ''; }
+input:checked ~ .switch-paddle {
+ background: #1779ba; }
+input:checked ~ .switch-paddle::after {
+ left: 2.25rem; }
+[data-whatinput='mouse'] input:focus ~ .switch-paddle {
+ outline: 0; }
+
+.switch-active, .switch-inactive {
+ position: absolute;
+ top: 50%;
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%); }
+
+.switch-active {
+ left: 8%;
+ display: none; }
+input:checked + label > .switch-active {
+ display: block; }
+
+.switch-inactive {
+ right: 15%; }
+input:checked + label > .switch-inactive {
+ display: none; }
+
+.switch.tiny {
+ height: 1.5rem; }
+.switch.tiny .switch-paddle {
+ width: 3rem;
+ height: 1.5rem;
+ font-size: 0.625rem; }
+.switch.tiny .switch-paddle::after {
+ top: 0.25rem;
+ left: 0.25rem;
+ width: 1rem;
+ height: 1rem; }
+.switch.tiny input:checked ~ .switch-paddle::after {
+ left: 1.75rem; }
+
+.switch.small {
+ height: 1.75rem; }
+.switch.small .switch-paddle {
+ width: 3.5rem;
+ height: 1.75rem;
+ font-size: 0.75rem; }
+.switch.small .switch-paddle::after {
+ top: 0.25rem;
+ left: 0.25rem;
+ width: 1.25rem;
+ height: 1.25rem; }
+.switch.small input:checked ~ .switch-paddle::after {
+ left: 2rem; }
+
+.switch.large {
+ height: 2.5rem; }
+.switch.large .switch-paddle {
+ width: 5rem;
+ height: 2.5rem;
+ font-size: 1rem; }
+.switch.large .switch-paddle::after {
+ top: 0.25rem;
+ left: 0.25rem;
+ width: 2rem;
+ height: 2rem; }
+.switch.large input:checked ~ .switch-paddle::after {
+ left: 2.75rem; }
+
+table {
+ width: 100%;
+ margin-bottom: 1rem;
+ border-radius: 0; }
+table thead,
+table tbody,
+table tfoot {
+ border: 1px solid #f1f1f1;
+ background-color: #fefefe; }
+table caption {
+ padding: 0.5rem 0.625rem 0.625rem;
+ font-weight: bold; }
+table thead {
+ background: #f8f8f8;
+ color: #0a0a0a; }
+table tfoot {
+ background: #f1f1f1;
+ color: #0a0a0a; }
+table thead tr,
+table tfoot tr {
+ background: transparent; }
+table thead th,
+table thead td,
+table tfoot th,
+table tfoot td {
+ padding: 0.5rem 0.625rem 0.625rem;
+ font-weight: bold;
+ text-align: left; }
+table tbody th,
+table tbody td {
+ padding: 0.5rem 0.625rem 0.625rem; }
+table tbody tr:nth-child(even) {
+ border-bottom: 0;
+ background-color: #f1f1f1; }
+table.unstriped tbody {
+ background-color: #fefefe; }
+table.unstriped tbody tr {
+ border-bottom: 0;
+ border-bottom: 1px solid #f1f1f1;
+ background-color: #fefefe; }
+
+@media screen and (max-width: 63.9375em) {
+ table.stack thead {
+ display: none; }
+ table.stack tfoot {
+ display: none; }
+ table.stack tr,
+ table.stack th,
+ table.stack td {
+ display: block; }
+ table.stack td {
+ border-top: 0; } }
+
+table.scroll {
+ display: block;
+ width: 100%;
+ overflow-x: auto; }
+
+table.hover thead tr:hover {
+ background-color: #f3f3f3; }
+
+table.hover tfoot tr:hover {
+ background-color: #ececec; }
+
+table.hover tbody tr:hover {
+ background-color: #f9f9f9; }
+
+table.hover:not(.unstriped) tr:nth-of-type(even):hover {
+ background-color: #ececec; }
+
+.table-scroll {
+ overflow-x: auto; }
+.table-scroll table {
+ width: auto; }
+
+.tabs {
+ margin: 0;
+ border: 1px solid #e6e6e6;
+ background: #fefefe;
+ list-style-type: none; }
+.tabs::before, .tabs::after {
+ display: table;
+ content: ' '; }
+.tabs::after {
+ clear: both; }
+
+.tabs.vertical > li {
+ display: block;
+ float: none;
+ width: auto; }
+
+.tabs.simple > li > a {
+ padding: 0; }
+.tabs.simple > li > a:hover {
+ background: transparent; }
+
+.tabs.primary {
+ background: #1779ba; }
+.tabs.primary > li > a {
+ color: #fefefe; }
+.tabs.primary > li > a:hover, .tabs.primary > li > a:focus {
+ background: #1673b1; }
+
+.tabs-title {
+ float: left; }
+.tabs-title > a {
+ display: block;
+ padding: 1.25rem 1.5rem;
+ font-size: 0.75rem;
+ line-height: 1;
+ color: #1779ba; }
+.tabs-title > a:hover {
+ background: #fefefe;
+ color: #1468a0; }
+.tabs-title > a:focus, .tabs-title > a[aria-selected='true'] {
+ background: #e6e6e6;
+ color: #1779ba; }
+
+.tabs-content {
+ border: 1px solid #e6e6e6;
+ border-top: 0;
+ background: #fefefe;
+ color: #0a0a0a;
+ transition: all 0.5s ease; }
+
+.tabs-content.vertical {
+ border: 1px solid #e6e6e6;
+ border-left: 0; }
+
+.tabs-panel {
+ display: none;
+ padding: 1rem; }
+.tabs-panel[aria-hidden="false"] {
+ display: block; }
+
+.thumbnail {
+ display: inline-block;
+ max-width: 100%;
+ margin-bottom: 1rem;
+ border: solid 4px #fefefe;
+ border-radius: 0;
+ box-shadow: 0 0 0 1px rgba(10, 10, 10, 0.2);
+ line-height: 0; }
+
+a.thumbnail {
+ transition: box-shadow 200ms ease-out; }
+a.thumbnail:hover, a.thumbnail:focus {
+ box-shadow: 0 0 6px 1px rgba(23, 121, 186, 0.5); }
+a.thumbnail image {
+ box-shadow: none; }
+
+.title-bar {
+ padding: 0.5rem;
+ background: #0a0a0a;
+ color: #fefefe; }
+.title-bar::before, .title-bar::after {
+ display: table;
+ content: ' '; }
+.title-bar::after {
+ clear: both; }
+.title-bar .menu-icon {
+ margin-left: 0.25rem;
+ margin-right: 0.25rem; }
+
+.title-bar-left {
+ float: left; }
+
+.title-bar-right {
+ float: right;
+ text-align: right; }
+
+.title-bar-title {
+ display: inline-block;
+ vertical-align: middle;
+ font-weight: bold; }
+
+.has-tip {
+ position: relative;
+ display: inline-block;
+ border-bottom: dotted 1px #8a8a8a;
+ font-weight: bold;
+ cursor: help; }
+
+.tooltip {
+ position: absolute;
+ top: calc(100% + 0.6495rem);
+ z-index: 1200;
+ max-width: 10rem;
+ padding: 0.75rem;
+ border-radius: 0;
+ background-color: #0a0a0a;
+ font-size: 80%;
+ color: #fefefe; }
+.tooltip::before {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.75rem;
+ content: '';
+ border-top-width: 0;
+ border-bottom-style: solid;
+ border-color: transparent transparent #0a0a0a;
+ position: absolute;
+ bottom: 100%;
+ left: 50%;
+ -ms-transform: translateX(-50%);
+ transform: translateX(-50%); }
+.tooltip.top::before {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.75rem;
+ content: '';
+ border-bottom-width: 0;
+ border-top-style: solid;
+ border-color: #0a0a0a transparent transparent;
+ top: 100%;
+ bottom: auto; }
+.tooltip.left::before {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.75rem;
+ content: '';
+ border-right-width: 0;
+ border-left-style: solid;
+ border-color: transparent transparent transparent #0a0a0a;
+ top: 50%;
+ bottom: auto;
+ left: 100%;
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%); }
+.tooltip.right::before {
+ display: block;
+ width: 0;
+ height: 0;
+ border: inset 0.75rem;
+ content: '';
+ border-left-width: 0;
+ border-right-style: solid;
+ border-color: transparent #0a0a0a transparent transparent;
+ top: 50%;
+ right: 100%;
+ bottom: auto;
+ left: auto;
+ -ms-transform: translateY(-50%);
+ transform: translateY(-50%); }
+
+.top-bar {
+ padding: 0.5rem; }
+.top-bar::before, .top-bar::after {
+ display: table;
+ content: ' '; }
+.top-bar::after {
+ clear: both; }
+.top-bar,
+.top-bar ul {
+ background-color: #e6e6e6; }
+.top-bar input {
+ max-width: 200px;
+ margin-right: 1rem; }
+.top-bar .input-group-field {
+ width: 100%;
+ margin-right: 0; }
+.top-bar input.button {
+ width: auto; }
+.top-bar .top-bar-left,
+.top-bar .top-bar-right {
+ width: 100%; }
+@media print, screen and (min-width: 40em) {
+ .top-bar .top-bar-left,
+ .top-bar .top-bar-right {
+ width: auto; } }
+@media screen and (max-width: 63.9375em) {
+ .top-bar.stacked-for-medium .top-bar-left,
+ .top-bar.stacked-for-medium .top-bar-right {
+ width: 100%; } }
+@media screen and (max-width: 74.9375em) {
+ .top-bar.stacked-for-large .top-bar-left,
+ .top-bar.stacked-for-large .top-bar-right {
+ width: 100%; } }
+
+.top-bar-title {
+ display: inline-block;
+ float: left;
+ padding: 0.5rem 1rem 0.5rem 0; }
+.top-bar-title .menu-icon {
+ bottom: 2px; }
+
+.top-bar-left {
+ float: left; }
+
+.top-bar-right {
+ float: right; }
+
+.hide {
+ display: none !important; }
+
+.invisible {
+ visibility: hidden; }
+
+@media screen and (max-width: 39.9375em) {
+ .hide-for-small-only {
+ display: none !important; } }
+
+@media screen and (max-width: 0em), screen and (min-width: 40em) {
+ .show-for-small-only {
+ display: none !important; } }
+
+@media print, screen and (min-width: 40em) {
+ .hide-for-medium {
+ display: none !important; } }
+
+@media screen and (max-width: 39.9375em) {
+ .show-for-medium {
+ display: none !important; } }
+
+@media screen and (min-width: 40em) and (max-width: 63.9375em) {
+ .hide-for-medium-only {
+ display: none !important; } }
+
+@media screen and (max-width: 39.9375em), screen and (min-width: 64em) {
+ .show-for-medium-only {
+ display: none !important; } }
+
+@media print, screen and (min-width: 64em) {
+ .hide-for-large {
+ display: none !important; } }
+
+@media screen and (max-width: 63.9375em) {
+ .show-for-large {
+ display: none !important; } }
+
+@media screen and (min-width: 64em) and (max-width: 74.9375em) {
+ .hide-for-large-only {
+ display: none !important; } }
+
+@media screen and (max-width: 63.9375em), screen and (min-width: 75em) {
+ .show-for-large-only {
+ display: none !important; } }
+
+.show-for-sr,
+.show-on-focus {
+ position: absolute !important;
+ width: 1px;
+ height: 1px;
+ overflow: hidden;
+ clip: rect(0, 0, 0, 0); }
+
+.show-on-focus:active, .show-on-focus:focus {
+ position: static !important;
+ width: auto;
+ height: auto;
+ overflow: visible;
+ clip: auto; }
+
+.show-for-landscape,
+.hide-for-portrait {
+ display: block !important; }
+@media screen and (orientation: landscape) {
+ .show-for-landscape,
+ .hide-for-portrait {
+ display: block !important; } }
+@media screen and (orientation: portrait) {
+ .show-for-landscape,
+ .hide-for-portrait {
+ display: none !important; } }
+
+.hide-for-landscape,
+.show-for-portrait {
+ display: none !important; }
+@media screen and (orientation: landscape) {
+ .hide-for-landscape,
+ .show-for-portrait {
+ display: none !important; } }
+@media screen and (orientation: portrait) {
+ .hide-for-landscape,
+ .show-for-portrait {
+ display: block !important; } }
+
+.float-left {
+ float: left !important; }
+
+.float-right {
+ float: right !important; }
+
+.float-center {
+ display: block;
+ margin-right: auto;
+ margin-left: auto; }
+
+.clearfix::before, .clearfix::after {
+ display: table;
+ content: ' '; }
+
+.clearfix::after {
+ clear: both; }
+
+.slide-in-down.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: translateY(-100%);
+ transform: translateY(-100%);
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-in-down.mui-enter.mui-enter-active {
+ -ms-transform: translateY(0);
+ transform: translateY(0); }
+
+.slide-in-left.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: translateX(-100%);
+ transform: translateX(-100%);
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-in-left.mui-enter.mui-enter-active {
+ -ms-transform: translateX(0);
+ transform: translateX(0); }
+
+.slide-in-up.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: translateY(100%);
+ transform: translateY(100%);
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-in-up.mui-enter.mui-enter-active {
+ -ms-transform: translateY(0);
+ transform: translateY(0); }
+
+.slide-in-right.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: translateX(100%);
+ transform: translateX(100%);
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-in-right.mui-enter.mui-enter-active {
+ -ms-transform: translateX(0);
+ transform: translateX(0); }
+
+.slide-out-down.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-out-down.mui-leave.mui-leave-active {
+ -ms-transform: translateY(100%);
+ transform: translateY(100%); }
+
+.slide-out-right.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-out-right.mui-leave.mui-leave-active {
+ -ms-transform: translateX(100%);
+ transform: translateX(100%); }
+
+.slide-out-up.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: translateY(0);
+ transform: translateY(0);
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-out-up.mui-leave.mui-leave-active {
+ -ms-transform: translateY(-100%);
+ transform: translateY(-100%); }
+
+.slide-out-left.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: translateX(0);
+ transform: translateX(0);
+ transition-property: transform, opacity;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden; }
+
+.slide-out-left.mui-leave.mui-leave-active {
+ -ms-transform: translateX(-100%);
+ transform: translateX(-100%); }
+
+.fade-in.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ opacity: 0;
+ transition-property: opacity; }
+
+.fade-in.mui-enter.mui-enter-active {
+ opacity: 1; }
+
+.fade-out.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ opacity: 1;
+ transition-property: opacity; }
+
+.fade-out.mui-leave.mui-leave-active {
+ opacity: 0; }
+
+.hinge-in-from-top.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ transform: perspective(2000px) rotateX(-90deg);
+ -ms-transform-origin: top;
+ transform-origin: top;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-top.mui-enter.mui-enter-active {
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-right.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ transform: perspective(2000px) rotateY(-90deg);
+ -ms-transform-origin: right;
+ transform-origin: right;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-right.mui-enter.mui-enter-active {
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-bottom.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ transform: perspective(2000px) rotateX(90deg);
+ -ms-transform-origin: bottom;
+ transform-origin: bottom;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-bottom.mui-enter.mui-enter-active {
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-left.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ transform: perspective(2000px) rotateY(90deg);
+ -ms-transform-origin: left;
+ transform-origin: left;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-left.mui-enter.mui-enter-active {
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-middle-x.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ transform: perspective(2000px) rotateX(-90deg);
+ -ms-transform-origin: center;
+ transform-origin: center;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-middle-x.mui-enter.mui-enter-active {
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-in-from-middle-y.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ transform: perspective(2000px) rotateY(-90deg);
+ -ms-transform-origin: center;
+ transform-origin: center;
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.hinge-in-from-middle-y.mui-enter.mui-enter-active {
+ transform: perspective(2000px) rotate(0deg);
+ opacity: 1; }
+
+.hinge-out-from-top.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ transform: perspective(2000px) rotate(0deg);
+ -ms-transform-origin: top;
+ transform-origin: top;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-top.mui-leave.mui-leave-active {
+ transform: perspective(2000px) rotateX(-90deg);
+ opacity: 0; }
+
+.hinge-out-from-right.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ transform: perspective(2000px) rotate(0deg);
+ -ms-transform-origin: right;
+ transform-origin: right;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-right.mui-leave.mui-leave-active {
+ transform: perspective(2000px) rotateY(-90deg);
+ opacity: 0; }
+
+.hinge-out-from-bottom.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ transform: perspective(2000px) rotate(0deg);
+ -ms-transform-origin: bottom;
+ transform-origin: bottom;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-bottom.mui-leave.mui-leave-active {
+ transform: perspective(2000px) rotateX(90deg);
+ opacity: 0; }
+
+.hinge-out-from-left.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ transform: perspective(2000px) rotate(0deg);
+ -ms-transform-origin: left;
+ transform-origin: left;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-left.mui-leave.mui-leave-active {
+ transform: perspective(2000px) rotateY(90deg);
+ opacity: 0; }
+
+.hinge-out-from-middle-x.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ transform: perspective(2000px) rotate(0deg);
+ -ms-transform-origin: center;
+ transform-origin: center;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-middle-x.mui-leave.mui-leave-active {
+ transform: perspective(2000px) rotateX(-90deg);
+ opacity: 0; }
+
+.hinge-out-from-middle-y.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ transform: perspective(2000px) rotate(0deg);
+ -ms-transform-origin: center;
+ transform-origin: center;
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.hinge-out-from-middle-y.mui-leave.mui-leave-active {
+ transform: perspective(2000px) rotateY(-90deg);
+ opacity: 0; }
+
+.scale-in-up.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: scale(0.5);
+ transform: scale(0.5);
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.scale-in-up.mui-enter.mui-enter-active {
+ -ms-transform: scale(1);
+ transform: scale(1);
+ opacity: 1; }
+
+.scale-in-down.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: scale(1.5);
+ transform: scale(1.5);
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.scale-in-down.mui-enter.mui-enter-active {
+ -ms-transform: scale(1);
+ transform: scale(1);
+ opacity: 1; }
+
+.scale-out-up.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: scale(1);
+ transform: scale(1);
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.scale-out-up.mui-leave.mui-leave-active {
+ -ms-transform: scale(1.5);
+ transform: scale(1.5);
+ opacity: 0; }
+
+.scale-out-down.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: scale(1);
+ transform: scale(1);
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.scale-out-down.mui-leave.mui-leave-active {
+ -ms-transform: scale(0.5);
+ transform: scale(0.5);
+ opacity: 0; }
+
+.spin-in.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: rotate(-0.75turn);
+ transform: rotate(-0.75turn);
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.spin-in.mui-enter.mui-enter-active {
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1; }
+
+.spin-out.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.spin-out.mui-leave.mui-leave-active {
+ -ms-transform: rotate(0.75turn);
+ transform: rotate(0.75turn);
+ opacity: 0; }
+
+.spin-in-ccw.mui-enter {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: rotate(0.75turn);
+ transform: rotate(0.75turn);
+ transition-property: transform, opacity;
+ opacity: 0; }
+
+.spin-in-ccw.mui-enter.mui-enter-active {
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ opacity: 1; }
+
+.spin-out-ccw.mui-leave {
+ transition-duration: 500ms;
+ transition-timing-function: linear;
+ -ms-transform: rotate(0);
+ transform: rotate(0);
+ transition-property: transform, opacity;
+ opacity: 1; }
+
+.spin-out-ccw.mui-leave.mui-leave-active {
+ -ms-transform: rotate(-0.75turn);
+ transform: rotate(-0.75turn);
+ opacity: 0; }
+
+.slow {
+ transition-duration: 750ms !important; }
+
+.fast {
+ transition-duration: 250ms !important; }
+
+.linear {
+ transition-timing-function: linear !important; }
+
+.ease {
+ transition-timing-function: ease !important; }
+
+.ease-in {
+ transition-timing-function: ease-in !important; }
+
+.ease-out {
+ transition-timing-function: ease-out !important; }
+
+.ease-in-out {
+ transition-timing-function: ease-in-out !important; }
+
+.bounce-in {
+ transition-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; }
+
+.bounce-out {
+ transition-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; }
+
+.bounce-in-out {
+ transition-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; }
+
+.short-delay {
+ transition-delay: 300ms !important; }
+
+.long-delay {
+ transition-delay: 700ms !important; }
+
+.shake {
+ animation-name: shake-7; }
+
+@keyframes shake-7 {
+ 0%, 10%, 20%, 30%, 40%, 50%, 60%, 70%, 80%, 90% {
+ transform: translateX(7%); }
+ 5%, 15%, 25%, 35%, 45%, 55%, 65%, 75%, 85%, 95% {
+ transform: translateX(-7%); } }
+
+.spin-cw {
+ animation-name: spin-cw-1turn; }
+
+@keyframes spin-cw-1turn {
+ 0% {
+ transform: rotate(-1turn); }
+ 100% {
+ transform: rotate(0); } }
+
+.spin-ccw {
+ animation-name: spin-cw-1turn; }
+
+@keyframes spin-cw-1turn {
+ 0% {
+ transform: rotate(0); }
+ 100% {
+ transform: rotate(1turn); } }
+
+.wiggle {
+ animation-name: wiggle-7deg; }
+
+@keyframes wiggle-7deg {
+ 40%, 50%, 60% {
+ transform: rotate(7deg); }
+ 35%, 45%, 55%, 65% {
+ transform: rotate(-7deg); }
+ 0%, 30%, 70%, 100% {
+ transform: rotate(0); } }
+
+.shake,
+.spin-cw,
+.spin-ccw,
+.wiggle {
+ animation-duration: 500ms; }
+
+.infinite {
+ animation-iteration-count: infinite; }
+
+.slow {
+ animation-duration: 750ms !important; }
+
+.fast {
+ animation-duration: 250ms !important; }
+
+.linear {
+ animation-timing-function: linear !important; }
+
+.ease {
+ animation-timing-function: ease !important; }
+
+.ease-in {
+ animation-timing-function: ease-in !important; }
+
+.ease-out {
+ animation-timing-function: ease-out !important; }
+
+.ease-in-out {
+ animation-timing-function: ease-in-out !important; }
+
+.bounce-in {
+ animation-timing-function: cubic-bezier(0.485, 0.155, 0.24, 1.245) !important; }
+
+.bounce-out {
+ animation-timing-function: cubic-bezier(0.485, 0.155, 0.515, 0.845) !important; }
+
+.bounce-in-out {
+ animation-timing-function: cubic-bezier(0.76, -0.245, 0.24, 1.245) !important; }
+
+.short-delay {
+ animation-delay: 300ms !important; }
+
+.long-delay {
+ animation-delay: 700ms !important; }
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/important.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/important.css
new file mode 100644
index 0000000..94c1eeb
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/important.css
@@ -0,0 +1,6 @@
+/* Why do we keep a space before !important? Some agents display issues without it. See https://github.com/yui/yuicompressor/issues/37 */
+a{
+ height: 100px !important;
+ text-shadow: 0 0 0 ! important;
+ width: 20% !important;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/kube.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/kube.css
new file mode 100644
index 0000000..a2fd8bb
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/kube.css
@@ -0,0 +1,2156 @@
+/*
+ Kube. CSS & JS Framework
+ Version 6.5.2
+ Updated: February 2, 2017
+
+ http://imperavi.com/kube/
+
+ Copyright (c) 2009-2017, Imperavi LLC.
+ License: MIT
+*/
+html {
+ box-sizing: border-box; }
+
+*,
+*:before,
+*:after {
+ box-sizing: inherit; }
+
+* {
+ margin: 0;
+ padding: 0;
+ outline: 0;
+ -webkit-overflow-scrolling: touch; }
+
+img,
+video,
+audio {
+ max-width: 100%; }
+
+img,
+video {
+ height: auto; }
+
+svg {
+ max-height: 100%; }
+
+iframe {
+ border: none; }
+
+::-moz-focus-inner {
+ border: 0;
+ padding: 0; }
+
+input[type="radio"],
+input[type="checkbox"] {
+ vertical-align: middle;
+ position: relative;
+ bottom: 0.15rem;
+ font-size: 115%;
+ margin-right: 3px; }
+
+input[type="search"] {
+ -webkit-appearance: textfield; }
+
+input[type="search"]::-webkit-search-decoration,
+input[type="search"]::-webkit-search-cancel-button {
+ -webkit-appearance: none; }
+
+.black {
+ color: #0d0d0e; }
+
+.inverted {
+ color: #fff; }
+
+.error {
+ color: #f03c69; }
+
+.success {
+ color: #35beb1; }
+
+.warning {
+ color: #f7ba45; }
+
+.focus {
+ color: #1c86f2; }
+
+.aluminum {
+ color: #f8f8f8; }
+
+.silver {
+ color: #e0e1e1; }
+
+.lightgray {
+ color: #d4d4d4; }
+
+.gray {
+ color: #bdbdbd; }
+
+.midgray {
+ color: #676b72; }
+
+.darkgray {
+ color: #313439; }
+
+.bg-black {
+ background-color: #0d0d0e; }
+
+.bg-inverted {
+ background-color: #fff; }
+
+.bg-error {
+ background-color: #f03c69; }
+
+.bg-success {
+ background-color: #35beb1; }
+
+.bg-warning {
+ background-color: #f7ba45; }
+
+.bg-focus {
+ background-color: #1c86f2; }
+
+.bg-aluminum {
+ background-color: #f8f8f8; }
+
+.bg-silver {
+ background-color: #e0e1e1; }
+
+.bg-lightgray {
+ background-color: #d4d4d4; }
+
+.bg-gray {
+ background-color: #bdbdbd; }
+
+.bg-midgray {
+ background-color: #676b72; }
+
+.bg-darkgray {
+ background-color: #313439; }
+
+.bg-highlight {
+ background-color: #edf2ff; }
+
+html,
+body {
+ font-size: 16px;
+ line-height: 24px; }
+
+body {
+ font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
+ color: #313439;
+ background-color: transparent; }
+
+a {
+ color: #3794de; }
+
+a:hover {
+ color: #f03c69; }
+
+h1.title, h1, h2, h3, h4, h5, h6 {
+ font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
+ font-weight: bold;
+ color: #0d0d0e;
+ text-rendering: optimizeLegibility;
+ margin-bottom: 16px; }
+
+h1.title {
+ font-size: 60px;
+ line-height: 64px;
+ margin-bottom: 8px; }
+
+h1,
+.h1 {
+ font-size: 48px;
+ line-height: 52px; }
+
+h2,
+.h2 {
+ font-size: 36px;
+ line-height: 40px; }
+
+h3,
+.h3 {
+ font-size: 24px;
+ line-height: 32px; }
+
+h4,
+.h4 {
+ font-size: 21px;
+ line-height: 32px; }
+
+h5,
+.h5 {
+ font-size: 18px;
+ line-height: 28px; }
+
+h6,
+.h6 {
+ font-size: 16px;
+ line-height: 24px; }
+
+h1 a, .h1 a,
+h2 a, .h2 a,
+h3 a, .h3 a,
+h4 a, .h4 a,
+h5 a, .h5 a,
+h6 a, .h6 a {
+ color: inherit; }
+
+p + h2,
+p + h3,
+p + h4,
+p + h5,
+p + h6,
+ul + h2,
+ul + h3,
+ul + h4,
+ul + h5,
+ul + h6,
+ol + h2,
+ol + h3,
+ol + h4,
+ol + h5,
+ol + h6,
+dl + h2,
+dl + h3,
+dl + h4,
+dl + h5,
+dl + h6,
+blockquote + h2,
+blockquote + h3,
+blockquote + h4,
+blockquote + h5,
+blockquote + h6,
+hr + h2,
+hr + h3,
+hr + h4,
+hr + h5,
+hr + h6,
+pre + h2,
+pre + h3,
+pre + h4,
+pre + h5,
+pre + h6,
+table + h2,
+table + h3,
+table + h4,
+table + h5,
+table + h6,
+form + h2,
+form + h3,
+form + h4,
+form + h5,
+form + h6,
+figure + h2,
+figure + h3,
+figure + h4,
+figure + h5,
+figure + h6 {
+ margin-top: 24px; }
+
+ul,
+ul ul,
+ul ol,
+ol,
+ol ul,
+ol ol {
+ margin: 0 0 0 24px; }
+
+ol ol li {
+ list-style-type: lower-alpha; }
+
+ol ol ol li {
+ list-style-type: lower-roman; }
+
+nav ul,
+nav ol {
+ margin: 0;
+ list-style: none; }
+nav ul ul,
+nav ul ol,
+nav ol ul,
+nav ol ol {
+ margin-left: 24px; }
+
+dl dt {
+ font-weight: bold; }
+
+dd {
+ margin-left: 24px; }
+
+p, blockquote, hr, pre, ol, ul, dl, table, fieldset, figure, address, form {
+ margin-bottom: 16px; }
+
+hr {
+ border: none;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+ margin-top: -1px; }
+
+blockquote {
+ padding-left: 1rem;
+ border-left: 4px solid rgba(0, 0, 0, 0.1);
+ font-style: italic;
+ color: rgba(49, 52, 57, 0.65); }
+blockquote p {
+ margin-bottom: .5rem; }
+
+time, cite, small, figcaption {
+ font-size: 87.5%; }
+
+cite {
+ opacity: .6; }
+
+abbr[title], dfn[title] {
+ border-bottom: 1px dotted rgba(0, 0, 0, 0.5);
+ cursor: help; }
+
+var {
+ font-size: 16px;
+ opacity: .6;
+ font-style: normal; }
+
+mark, code, samp, kbd {
+ position: relative;
+ top: -1px;
+ padding: 4px 4px 2px 4px;
+ display: inline-block;
+ line-height: 1;
+ color: rgba(49, 52, 57, 0.85); }
+
+code {
+ background: #e0e1e1; }
+
+mark {
+ background: #f7ba45; }
+
+samp {
+ color: #fff;
+ background: #1c86f2; }
+
+kbd {
+ border: 1px solid rgba(0, 0, 0, 0.1); }
+
+sub,
+sup {
+ font-size: x-small;
+ line-height: 0;
+ margin-left: 1rem/4;
+ position: relative; }
+
+sup {
+ top: 0; }
+
+sub {
+ bottom: 1px; }
+
+pre, code, samp, var, kbd {
+ font-family: Consolas, Monaco, "Courier New", monospace; }
+
+pre, code, samp, var, kbd, mark {
+ font-size: 87.5%; }
+
+pre,
+pre code {
+ background: #f8f8f8;
+ padding: 0;
+ top: 0;
+ display: block;
+ line-height: 20px;
+ color: rgba(49, 52, 57, 0.85);
+ overflow: none;
+ white-space: pre-wrap; }
+
+pre {
+ padding: 1rem; }
+
+figcaption {
+ opacity: .6; }
+
+figure figcaption {
+ position: relative;
+ top: -1rem/2; }
+
+figure pre {
+ background: none;
+ border: 1px solid rgba(0, 0, 0, 0.1);
+ border-radius: 4px; }
+
+figure .video-container,
+figure pre {
+ margin-bottom: 8px; }
+
+.text-left {
+ text-align: left; }
+
+.text-center {
+ text-align: center; }
+
+.text-right {
+ text-align: right; }
+
+ul.unstyled {
+ margin-left: 0; }
+
+ul.unstyled,
+ul.unstyled ul {
+ list-style: none; }
+
+.monospace {
+ font-family: Consolas, Monaco, "Courier New", monospace; }
+
+.upper {
+ text-transform: uppercase; }
+
+.lower {
+ text-transform: lowercase; }
+
+.italic {
+ font-style: italic !important; }
+
+.strong {
+ font-weight: bold !important; }
+
+.normal {
+ font-weight: normal !important; }
+
+.muted {
+ opacity: .55; }
+
+a.muted {
+ color: #0d0d0e; }
+
+a.muted:hover {
+ opacity: 1; }
+
+.black {
+ color: #0d0d0e; }
+
+.smaller {
+ font-size: 12px;
+ line-height: 20px; }
+
+.small {
+ font-size: 14px;
+ line-height: 20px; }
+
+.big {
+ font-size: 18px;
+ line-height: 28px; }
+
+.large {
+ font-size: 20px;
+ line-height: 32px; }
+
+.end {
+ margin-bottom: 0 !important; }
+
+.highlight {
+ background-color: #edf2ff; }
+
+.nowrap,
+.nowrap td {
+ white-space: nowrap; }
+
+@media (min-width: 768px) and (max-width: 1024px) {
+ .columns-2,
+ .columns-3,
+ .columns-4 {
+ column-gap: 24px; }
+ .columns-2 {
+ column-count: 2; }
+ .columns-3 {
+ column-count: 3; }
+ .columns-4 {
+ column-count: 4; } }
+
+.row {
+ display: flex;
+ flex-direction: row;
+ flex-wrap: wrap; }
+@media (max-width: 768px) {
+ .row {
+ flex-direction: column;
+ flex-wrap: nowrap; } }
+.row.gutters,
+.row.gutters > .row {
+ margin-left: -2%; }
+@media (max-width: 768px) {
+ .row.gutters,
+ .row.gutters > .row {
+ margin-left: 0; } }
+.row.gutters > .col,
+.row.gutters > .row > .col {
+ margin-left: 2%; }
+@media (max-width: 768px) {
+ .row.gutters > .col,
+ .row.gutters > .row > .col {
+ margin-left: 0; } }
+.row.around {
+ justify-content: space-around; }
+.row.between {
+ justify-content: space-between; }
+.row.auto .col {
+ flex-grow: 1; }
+
+.col-1 {
+ width: 8.33333%; }
+
+.offset-1 {
+ margin-left: 8.33333%; }
+
+.col-2 {
+ width: 16.66667%; }
+
+.offset-2 {
+ margin-left: 16.66667%; }
+
+.col-3 {
+ width: 25%; }
+
+.offset-3 {
+ margin-left: 25%; }
+
+.col-4 {
+ width: 33.33333%; }
+
+.offset-4 {
+ margin-left: 33.33333%; }
+
+.col-5 {
+ width: 41.66667%; }
+
+.offset-5 {
+ margin-left: 41.66667%; }
+
+.col-6 {
+ width: 50%; }
+
+.offset-6 {
+ margin-left: 50%; }
+
+.col-7 {
+ width: 58.33333%; }
+
+.offset-7 {
+ margin-left: 58.33333%; }
+
+.col-8 {
+ width: 66.66667%; }
+
+.offset-8 {
+ margin-left: 66.66667%; }
+
+.col-9 {
+ width: 75%; }
+
+.offset-9 {
+ margin-left: 75%; }
+
+.col-10 {
+ width: 83.33333%; }
+
+.offset-10 {
+ margin-left: 83.33333%; }
+
+.col-11 {
+ width: 91.66667%; }
+
+.offset-11 {
+ margin-left: 91.66667%; }
+
+.col-12 {
+ width: 100%; }
+
+.offset-12 {
+ margin-left: 100%; }
+
+.gutters > .col-1 {
+ width: calc(8.33333% - 2%); }
+
+.gutters > .offset-1 {
+ margin-left: calc(8.33333% + 2%) !important; }
+
+.gutters > .col-2 {
+ width: calc(16.66667% - 2%); }
+
+.gutters > .offset-2 {
+ margin-left: calc(16.66667% + 2%) !important; }
+
+.gutters > .col-3 {
+ width: calc(25% - 2%); }
+
+.gutters > .offset-3 {
+ margin-left: calc(25% + 2%) !important; }
+
+.gutters > .col-4 {
+ width: calc(33.33333% - 2%); }
+
+.gutters > .offset-4 {
+ margin-left: calc(33.33333% + 2%) !important; }
+
+.gutters > .col-5 {
+ width: calc(41.66667% - 2%); }
+
+.gutters > .offset-5 {
+ margin-left: calc(41.66667% + 2%) !important; }
+
+.gutters > .col-6 {
+ width: calc(50% - 2%); }
+
+.gutters > .offset-6 {
+ margin-left: calc(50% + 2%) !important; }
+
+.gutters > .col-7 {
+ width: calc(58.33333% - 2%); }
+
+.gutters > .offset-7 {
+ margin-left: calc(58.33333% + 2%) !important; }
+
+.gutters > .col-8 {
+ width: calc(66.66667% - 2%); }
+
+.gutters > .offset-8 {
+ margin-left: calc(66.66667% + 2%) !important; }
+
+.gutters > .col-9 {
+ width: calc(75% - 2%); }
+
+.gutters > .offset-9 {
+ margin-left: calc(75% + 2%) !important; }
+
+.gutters > .col-10 {
+ width: calc(83.33333% - 2%); }
+
+.gutters > .offset-10 {
+ margin-left: calc(83.33333% + 2%) !important; }
+
+.gutters > .col-11 {
+ width: calc(91.66667% - 2%); }
+
+.gutters > .offset-11 {
+ margin-left: calc(91.66667% + 2%) !important; }
+
+.gutters > .col-12 {
+ width: calc(100% - 2%); }
+
+.gutters > .offset-12 {
+ margin-left: calc(100% + 2%) !important; }
+
+@media (max-width: 768px) {
+ [class^='offset-'],
+ [class*=' offset-'] {
+ margin-left: 0; } }
+
+.first {
+ order: -1; }
+
+.last {
+ order: 1; }
+
+@media (max-width: 768px) {
+ .row .col {
+ margin-left: 0;
+ width: 100%; }
+ .row.gutters .col {
+ margin-bottom: 16px; }
+ .first-sm {
+ order: -1; }
+ .last-sm {
+ order: 1; } }
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+ max-width: 100%;
+ width: 100%;
+ empty-cells: show;
+ font-size: 15px;
+ line-height: 24px; }
+
+table caption {
+ text-align: left;
+ font-size: 14px;
+ font-weight: 500;
+ color: #676b72; }
+
+th {
+ text-align: left;
+ font-weight: 700;
+ vertical-align: bottom; }
+
+td {
+ vertical-align: top; }
+
+tr.align-middle td,
+td.align-middle {
+ vertical-align: middle; }
+
+th,
+td {
+ padding: 1rem 1rem;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05); }
+th:first-child,
+td:first-child {
+ padding-left: 0; }
+th:last-child,
+td:last-child {
+ padding-right: 0; }
+
+tfoot th,
+tfoot td {
+ color: rgba(49, 52, 57, 0.5); }
+
+table.bordered td,
+table.bordered th {
+ border: 1px solid rgba(0, 0, 0, 0.05); }
+
+table.striped tr:nth-child(odd) td {
+ background: #f8f8f8; }
+
+table.bordered td:first-child,
+table.bordered th:first-child,
+table.striped td:first-child,
+table.striped th:first-child {
+ padding-left: 1rem; }
+
+table.bordered td:last-child,
+table.bordered th:last-child,
+table.striped td:last-child,
+table.striped th:last-child {
+ padding-right: 1rem; }
+
+table.unstyled td,
+table.unstyled th {
+ border: none;
+ padding: 0; }
+
+fieldset {
+ font-family: inherit;
+ border: 1px solid rgba(0, 0, 0, 0.1);
+ padding: 2rem;
+ margin-bottom: 2rem;
+ margin-top: 2rem; }
+
+legend {
+ font-weight: bold;
+ font-size: 12px;
+ text-transform: uppercase;
+ padding: 0 1rem;
+ margin-left: -1rem;
+ top: 2px;
+ position: relative;
+ line-height: 0; }
+
+input,
+textarea,
+select {
+ display: block;
+ width: 100%;
+ font-family: inherit;
+ font-size: 15px;
+ height: 40px;
+ outline: none;
+ vertical-align: middle;
+ background-color: #fff;
+ border: 1px solid #d4d4d4;
+ border-radius: 3px;
+ box-shadow: none;
+ padding: 0 12px; }
+
+input.small,
+textarea.small,
+select.small {
+ height: 36px;
+ font-size: 13px;
+ padding: 0 12px;
+ border-radius: 3px; }
+
+input.big,
+textarea.big,
+select.big {
+ height: 48px;
+ font-size: 17px;
+ padding: 0 12px;
+ border-radius: 3px; }
+
+input:focus,
+textarea:focus,
+select:focus {
+ outline: none;
+ background-color: #fff;
+ border-color: #1c86f2;
+ box-shadow: 0 0 1px #1c86f2 inset; }
+
+input.error,
+textarea.error,
+select.error {
+ background-color: rgba(240, 60, 105, 0.1);
+ border: 1px solid #f583a0; }
+input.error:focus,
+textarea.error:focus,
+select.error:focus {
+ border-color: #f03c69;
+ box-shadow: 0 0 1px #f03c69 inset; }
+
+input.success,
+textarea.success,
+select.success {
+ background-color: rgba(53, 190, 177, 0.1);
+ border: 1px solid #6ad5cb; }
+input.success:focus,
+textarea.success:focus,
+select.success:focus {
+ border-color: #35beb1;
+ box-shadow: 0 0 1px #35beb1 inset; }
+
+input:disabled, input.disabled,
+textarea:disabled,
+textarea.disabled,
+select:disabled,
+select.disabled {
+ resize: none;
+ opacity: 0.6;
+ cursor: default;
+ font-style: italic;
+ color: rgba(0, 0, 0, 0.5); }
+
+select {
+ -webkit-appearance: none;
+ background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="9" height="12" viewBox="0 0 9 12"><path fill="#5e6c75" d="M0.722,4.823L-0.01,4.1,4.134-.01,4.866,0.716Zm7.555,0L9.01,4.1,4.866-.01l-0.732.726ZM0.722,7.177L-0.01,7.9,4.134,12.01l0.732-.726Zm7.555,0L9.01,7.9,4.866,12.01l-0.732-.726Z"/></svg>');
+ background-repeat: no-repeat;
+ background-position: right 1rem center; }
+
+select[multiple] {
+ background-image: none;
+ height: auto;
+ padding: .5rem .75rem; }
+
+textarea {
+ height: auto;
+ padding: 8px 12px;
+ line-height: 24px;
+ vertical-align: top; }
+
+input[type="file"] {
+ width: auto;
+ border: none;
+ padding: 0;
+ height: auto;
+ background: none;
+ box-shadow: none;
+ display: inline-block; }
+
+input[type="search"],
+input.search {
+ background-repeat: no-repeat;
+ background-position: 8px 53%;
+ background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="#000" fill-opacity="0.4" d="M14.891,14.39l-0.5.5a0.355,0.355,0,0,1-.5,0L9.526,10.529a5.3,5.3,0,1,1,2.106-4.212,5.268,5.268,0,0,1-1.1,3.21l4.362,4.362A0.354,0.354,0,0,1,14.891,14.39ZM6.316,2.418a3.9,3.9,0,1,0,3.9,3.9A3.9,3.9,0,0,0,6.316,2.418Z"/></svg>');
+ padding-left: 32px; }
+
+input[type="radio"],
+input[type="checkbox"] {
+ display: inline-block;
+ width: auto;
+ height: auto;
+ padding: 0; }
+
+label {
+ display: block;
+ color: #313439;
+ margin-bottom: 4px;
+ font-size: 15px; }
+label.checkbox,
+label .desc,
+label .success,
+label .error {
+ text-transform: none;
+ font-weight: normal; }
+label.checkbox {
+ font-size: 16px;
+ line-height: 24px;
+ cursor: pointer;
+ color: inherit; }
+label.checkbox input {
+ margin-top: 0; }
+
+.form-checkboxes label.checkbox {
+ display: inline-block;
+ margin-right: 16px; }
+
+.req {
+ position: relative;
+ top: 1px;
+ font-weight: bold;
+ color: #f03c69;
+ font-size: 110%; }
+
+.desc {
+ color: rgba(49, 52, 57, 0.5);
+ font-size: 12px;
+ line-height: 20px; }
+
+span.desc {
+ margin-left: 4px; }
+
+div.desc {
+ margin-top: 4px;
+ margin-bottom: -8px; }
+
+.form-buttons button,
+.form-buttons .button {
+ margin-right: 8px; }
+
+form,
+.form-item {
+ margin-bottom: 2rem; }
+
+.form > .form-item:last-child {
+ margin-bottom: 0; }
+
+.form .row:last-child .form-item {
+ margin-bottom: 0; }
+
+.form span.success,
+.form span.error {
+ font-size: 12px;
+ line-height: 20px;
+ margin-left: 4px; }
+
+.form-inline input,
+.form-inline textarea,
+.form-inline select {
+ display: inline-block;
+ width: auto; }
+
+.append,
+.prepend {
+ display: flex; }
+.append input,
+.prepend input {
+ flex: 1; }
+.append .button,
+.append span,
+.prepend .button,
+.prepend span {
+ flex-shrink: 0; }
+.append span,
+.prepend span {
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ font-weight: normal;
+ border: 1px solid #d4d4d4;
+ background-color: #f8f8f8;
+ padding: 0 .875rem;
+ color: rgba(0, 0, 0, 0.5);
+ font-size: 12px;
+ white-space: nowrap; }
+
+.prepend input {
+ border-radius: 0 3px 3px 0; }
+
+.prepend .button {
+ margin-right: -1px;
+ border-radius: 3px 0 0 3px !important; }
+
+.prepend span {
+ border-right: none;
+ border-radius: 3px 0 0 3px; }
+
+.append input {
+ border-radius: 3px 0 0 3px; }
+
+.append .button {
+ margin-left: -1px;
+ border-radius: 0 3px 3px 0 !important; }
+
+.append span {
+ border-left: none;
+ border-radius: 0 3px 3px 0; }
+
+button,
+.button {
+ font-family: Arial, "Helvetica Neue", Helvetica, sans-serif;
+ font-size: 15px;
+ color: #fff;
+ background-color: #1c86f2;
+ border-radius: 3px;
+ min-height: 40px;
+ padding: 8px 20px;
+ font-weight: 500;
+ text-decoration: none;
+ cursor: pointer;
+ display: inline-block;
+ line-height: 20px;
+ border: 1px solid transparent;
+ vertical-align: middle;
+ -webkit-appearance: none; }
+button i,
+.button i {
+ position: relative;
+ top: 1px;
+ margin: 0 2px; }
+
+input[type="submit"] {
+ width: auto; }
+
+button:hover,
+.button:hover {
+ outline: none;
+ text-decoration: none;
+ color: #fff;
+ background-color: #4ca0f5; }
+
+.button:disabled,
+.button.disabled {
+ cursor: default;
+ font-style: normal;
+ color: rgba(255, 255, 255, 0.7);
+ background-color: rgba(28, 134, 242, 0.7); }
+
+.button.small {
+ font-size: 13px;
+ min-height: 36px;
+ padding: 6px 20px;
+ border-radius: 3px; }
+
+.button.big {
+ font-size: 17px;
+ min-height: 48px;
+ padding: 13px 24px;
+ border-radius: 3px; }
+
+.button.large {
+ font-size: 19px;
+ min-height: 56px;
+ padding: 20px 36px;
+ border-radius: 3px; }
+
+.button.outline {
+ background: none;
+ border-width: 2px;
+ border-color: #1c86f2;
+ color: #1c86f2; }
+.button.outline:hover {
+ background: none;
+ color: rgba(28, 134, 242, 0.6);
+ border-color: rgba(28, 134, 242, 0.5); }
+.button.outline:disabled, .button.outline.disabled {
+ background: none;
+ color: rgba(28, 134, 242, 0.7);
+ border-color: rgba(28, 134, 242, 0.5); }
+
+.button.inverted {
+ color: #000;
+ background-color: #fff; }
+.button.inverted:hover {
+ color: #000;
+ background-color: white; }
+.button.inverted:disabled, .button.inverted.disabled {
+ color: rgba(0, 0, 0, 0.7);
+ background-color: rgba(255, 255, 255, 0.7); }
+.button.inverted.outline {
+ background: none;
+ color: #fff;
+ border-color: #fff; }
+.button.inverted.outline:hover {
+ color: rgba(255, 255, 255, 0.6);
+ border-color: rgba(255, 255, 255, 0.5); }
+.button.inverted.outline:disabled, .button.inverted.outline.disabled {
+ background: none;
+ color: rgba(255, 255, 255, 0.7);
+ border-color: rgba(255, 255, 255, 0.5); }
+.button.inverted:hover {
+ opacity: .7; }
+
+.button.round {
+ border-radius: 56px; }
+
+.button.raised {
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3); }
+
+.button.upper {
+ text-transform: uppercase;
+ letter-spacing: .04em;
+ font-size: 13px; }
+.button.upper.small {
+ font-size: 11px; }
+.button.upper.big {
+ font-size: 13px; }
+.button.upper.large {
+ font-size: 15px; }
+
+.button.secondary {
+ color: #fff;
+ background-color: #313439; }
+.button.secondary:hover {
+ color: #fff;
+ background-color: #606670; }
+.button.secondary:disabled, .button.secondary.disabled {
+ color: rgba(255, 255, 255, 0.7);
+ background-color: rgba(49, 52, 57, 0.7); }
+.button.secondary.outline {
+ background: none;
+ color: #313439;
+ border-color: #313439; }
+.button.secondary.outline:hover {
+ color: rgba(49, 52, 57, 0.6);
+ border-color: rgba(49, 52, 57, 0.5); }
+.button.secondary.outline:disabled, .button.secondary.outline.disabled {
+ background: none;
+ color: rgba(49, 52, 57, 0.7);
+ border-color: rgba(49, 52, 57, 0.5); }
+
+.label {
+ display: inline-block;
+ font-size: 13px;
+ background: #e0e1e1;
+ line-height: 18px;
+ padding: 0 10px;
+ font-weight: 500;
+ color: #313439;
+ border: 1px solid transparent;
+ vertical-align: middle;
+ text-decoration: none;
+ border-radius: 4px; }
+.label a,
+.label a:hover {
+ color: inherit;
+ text-decoration: none; }
+
+.label.big {
+ font-size: 14px;
+ line-height: 24px;
+ padding: 0 12px; }
+
+.label.upper {
+ text-transform: uppercase;
+ font-size: 11px; }
+
+.label.outline {
+ background: none;
+ border-color: #bdbdbd; }
+
+.label.badge {
+ text-align: center;
+ border-radius: 64px;
+ padding: 0 6px; }
+.label.badge.big {
+ padding: 0 8px; }
+
+.label.tag {
+ padding: 0;
+ background: none;
+ border: none;
+ text-transform: uppercase;
+ font-size: 11px; }
+.label.tag.big {
+ font-size: 13px; }
+
+.label.success {
+ background: #35beb1;
+ color: #fff; }
+.label.success.tag, .label.success.outline {
+ background: none;
+ border-color: #35beb1;
+ color: #35beb1; }
+
+.label.error {
+ background: #f03c69;
+ color: #fff; }
+.label.error.tag, .label.error.outline {
+ background: none;
+ border-color: #f03c69;
+ color: #f03c69; }
+
+.label.warning {
+ background: #f7ba45;
+ color: #0d0d0e; }
+.label.warning.tag, .label.warning.outline {
+ background: none;
+ border-color: #f7ba45;
+ color: #f7ba45; }
+
+.label.focus {
+ background: #1c86f2;
+ color: #fff; }
+.label.focus.tag, .label.focus.outline {
+ background: none;
+ border-color: #1c86f2;
+ color: #1c86f2; }
+
+.label.black {
+ background: #0d0d0e;
+ color: #fff; }
+.label.black.tag, .label.black.outline {
+ background: none;
+ border-color: #0d0d0e;
+ color: #0d0d0e; }
+
+.label.inverted {
+ background: #fff;
+ color: #0d0d0e; }
+.label.inverted.tag, .label.inverted.outline {
+ background: none;
+ border-color: #fff;
+ color: #fff; }
+
+.breadcrumbs {
+ font-size: 14px;
+ margin-bottom: 24px; }
+.breadcrumbs ul {
+ display: flex;
+ align-items: center; }
+.breadcrumbs.push-center ul {
+ justify-content: center; }
+.breadcrumbs span,
+.breadcrumbs a {
+ font-style: normal;
+ padding: 0 10px;
+ display: inline-block;
+ white-space: nowrap; }
+.breadcrumbs li:after {
+ display: inline-block;
+ content: '/';
+ color: rgba(0, 0, 0, 0.3); }
+.breadcrumbs li:last-child:after {
+ display: none; }
+.breadcrumbs li:first-child span,
+.breadcrumbs li:first-child a {
+ padding-left: 0; }
+.breadcrumbs li.active a {
+ color: #313439;
+ text-decoration: none;
+ cursor: text; }
+
+.pagination {
+ margin: 24px 0;
+ font-size: 14px; }
+.pagination ul {
+ display: flex;
+ margin: 0; }
+.pagination.align-center ul {
+ justify-content: center; }
+.pagination span,
+.pagination a {
+ border-radius: 3px;
+ display: inline-block;
+ padding: 8px 12px;
+ line-height: 1;
+ white-space: nowrap;
+ border: 1px solid transparent; }
+.pagination a {
+ text-decoration: none;
+ color: #313439; }
+.pagination a:hover {
+ color: rgba(0, 0, 0, 0.5);
+ border-color: #e0e1e1; }
+.pagination span,
+.pagination li.active a {
+ color: rgba(0, 0, 0, 0.5);
+ border-color: #e0e1e1;
+ cursor: text; }
+.pagination.upper {
+ font-size: 12px; }
+
+.pager span {
+ line-height: 24px; }
+
+.pager span,
+.pager a {
+ padding-left: 16px;
+ padding-right: 16px;
+ border-radius: 64px;
+ border-color: rgba(0, 0, 0, 0.1); }
+
+.pager li {
+ flex-basis: 50%; }
+
+.pager li.next {
+ text-align: right; }
+
+.pager.align-center li {
+ flex-basis: auto;
+ margin-left: 4px;
+ margin-right: 4px; }
+
+.pager.flat span,
+.pager.flat a {
+ border: none;
+ display: block;
+ padding: 0; }
+
+.pager.flat a {
+ font-weight: bold; }
+.pager.flat a:hover {
+ background: none;
+ text-decoration: underline; }
+
+@media (max-width: 768px) {
+ .pager.flat ul {
+ flex-direction: column; }
+ .pager.flat li {
+ flex-basis: 100%;
+ margin-bottom: 8px;
+ text-align: left; } }
+
+@font-face {
+ font-family: 'Kube';
+ src: url("data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg8SBfgAAAC8AAAAYGNtYXAXVtKOAAABHAAAAFRnYXNwAAAAEAAAAXAAAAAIZ2x5ZsMn2SAAAAF4AAADeGhlYWQMP9EUAAAE8AAAADZoaGVhB8IDzQAABSgAAAAkaG10eCYABd4AAAVMAAAAMGxvY2EFWASuAAAFfAAAABptYXhwABcAmwAABZgAAAAgbmFtZfMJxocAAAW4AAABYnBvc3QAAwAAAAAHHAAAACAAAwPHAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAABEAAAAAAAAAAAAAAAAAAAAABAAADpBwPA/8AAQAPAAEAAAAABAAAAAAAAAAAAAAAgAAAAAAADAAAAAwAAABwAAQADAAAAHAADAAEAAAAcAAQAOAAAAAoACAACAAIAAQAg6Qf//f//AAAAAAAg6QD//f//AAH/4xcEAAMAAQAAAAAAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAEAAAAAAAAAAAACAAA3OQEAAAAAAQAAAAAAAAAAAAIAADc5AQAAAAAKAAAAAAQAA8AADwAUACQANABEAFYAaAB4AIgAmAAAEyIGFREUFjMhMjY1ETQmIwUhESEREzgBMSIGFRQWMzI2NTQmIzM4ATEiBhUUFjMyNjU0JiMzOAExIgYVFBYzMjY1NCYjATIWHQEUBiMiJj0BNDYzOAExITIWHQEUBiMiJj0BNDYzOAExATgBMSIGFRQWMzI2NTQmIzM4ATEiBhUUFjMyNjU0JiMzOAExIgYVFBYzMjY1NCYjwFBwcFACgFBwcFD9IQM+/MKrHioqHh4qKh70HioqHh4qKh70HisrHh0rKh7+MBQdHRQUHBwUAbgUHBwUFB0dFP4wHioqHh4qKh70HioqHh4qKh70HisrHh0rKh4DYHBQ/iBQcHBQAeBQcF/9XwKh/n8qHh4qKh4eKioeHioqHh4qKh4eKioeHioCQBwVjhUcHBWOFRwcFY4VHBwVjhUc/rAqHh4qKh4eKioeHioqHh4qKh4eKioeHioAAAABAQAAwAMAAcAACwAAAQcXBycHJzcnNxc3AwDMAjMDAzMCzDTMzAGVqAIrAgIrAqgrqKgAAQGAAEACgAJAAAsAACUnByc3JzcXNxcHFwJVqAIrAgIrAqgrqKhAzAIzAwMzAsw0zMwAAAEBgABAAoACQAALAAABFzcXBxcHJwcnNycBq6gCKwICKwKoK6ioAkDMAjMDAzMCzDTMzAABAQAAwAMAAcAACwAAJTcnNxc3FwcXBycHAQDMAjMDAzMCzDTMzOuoAisCAisCqCuoqAAAAgAP/+UD1AOqAAQACAAAEwEHATcFAScBSwOJPPx3PAOJ/Hc8A4kDqvx3PAOJPDz8dzwDiQAAAAADAIAAgAOAAwAAAwAHAAsAADc1IRUBIRUhESEVIYADAP0AAwD9AAMA/QCAgIABgIABgIAAAgBPAA8DsgNxABgALQAAJQcBDgEjIi4CNTQ+AjMyHgIVFAYHAQEiDgIVFB4CMzI+AjU0LgIjA7JY/t4lWTBBc1YxMVZzQUFzVTIcGQEi/dgxVkAlJUBWMTFWQCUlQFYxZ1gBIRkcMlVzQUFzVjExVnNBMFkm/uACuyVAVjExVkAlJUBWMTFWQCUAAAABAAAAAQAABhlWm18PPPUACwQAAAAAANSQRjkAAAAA1JBGOQAA/+UEAAPAAAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAAAAQAAAEAAAAAAAAAAAAAAAAAAAAMBAAAAAAAAAAAAAAAAgAAAAQAAAAEAAEABAABgAQAAYAEAAEABAAADwQAAIAEAABPAAAAAAAKABQAHgDYAPIBDAEmAUABXAF2AbwAAAABAAAADACZAAoAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEABAAAAAEAAAAAAAIABwBFAAEAAAAAAAMABAAtAAEAAAAAAAQABABaAAEAAAAAAAUACwAMAAEAAAAAAAYABAA5AAEAAAAAAAoAGgBmAAMAAQQJAAEACAAEAAMAAQQJAAIADgBMAAMAAQQJAAMACAAxAAMAAQQJAAQACABeAAMAAQQJAAUAFgAXAAMAAQQJAAYACAA9AAMAAQQJAAoANACAS3ViZQBLAHUAYgBlVmVyc2lvbiAxLjAAVgBlAHIAcwBpAG8AbgAgADEALgAwS3ViZQBLAHUAYgBlS3ViZQBLAHUAYgBlUmVndWxhcgBSAGUAZwB1AGwAYQByS3ViZQBLAHUAYgBlRm9udCBnZW5lcmF0ZWQgYnkgSWNvTW9vbi4ARgBvAG4AdAAgAGcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAuAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==") format("truetype");
+ font-weight: normal;
+ font-style: normal; }
+
+[class^="kube-"], [class*=" kube-"], .close, .caret {
+ /* use !important to prevent issues with browser extensions that change fonts */
+ font-family: 'Kube' !important;
+ speak: none;
+ font-style: normal;
+ font-weight: normal;
+ font-variant: normal;
+ text-transform: none;
+ line-height: 1;
+ /* Better Font Rendering =========== */
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale; }
+
+.kube-calendar:before {
+ content: "\e900"; }
+
+.caret.down:before,
+.kube-caret-down:before {
+ content: "\e901"; }
+
+.caret.left:before,
+.kube-caret-left:before {
+ content: "\e902"; }
+
+.caret.right:before,
+.kube-caret-right:before {
+ content: "\e903"; }
+
+.caret.up:before,
+.kube-caret-up:before {
+ content: "\e904"; }
+
+.close:before,
+.kube-close:before {
+ content: "\e905"; }
+
+.kube-menu:before {
+ content: "\e906"; }
+
+.kube-search:before {
+ content: "\e907"; }
+
+.gutters .column.push-left,
+.push-left {
+ margin-right: auto; }
+
+.gutters .column.push-right,
+.push-right {
+ margin-left: auto; }
+
+.gutters .column.push-center,
+.push-center {
+ margin-left: auto;
+ margin-right: auto; }
+
+.gutters .column.push-middle,
+.push-middle {
+ margin-top: auto;
+ margin-bottom: auto; }
+
+.push-bottom {
+ margin-top: auto; }
+
+@media (max-width: 768px) {
+ .gutters .column.push-left-sm,
+ .push-left-sm {
+ margin-left: 0; }
+ .gutters .column.push-center-sm,
+ .push-center-sm {
+ margin-left: auto;
+ margin-right: auto; }
+ .push-top-sm {
+ margin-top: 0; } }
+
+.align-middle {
+ align-items: center; }
+
+.align-right {
+ justify-content: flex-end; }
+
+.align-center {
+ justify-content: center; }
+
+@media (max-width: 768px) {
+ .align-left-sm {
+ justify-content: flex-start; } }
+
+.float-right {
+ float: right; }
+
+.float-left {
+ float: left; }
+
+@media (max-width: 768px) {
+ .float-right {
+ float: none; }
+ .float-left {
+ float: none; } }
+
+.fixed {
+ position: fixed;
+ top: 0;
+ left: 0;
+ z-index: 100;
+ width: 100%; }
+
+.w5 {
+ width: 5%; }
+
+.w10 {
+ width: 10%; }
+
+.w15 {
+ width: 15%; }
+
+.w20 {
+ width: 20%; }
+
+.w25 {
+ width: 25%; }
+
+.w30 {
+ width: 30%; }
+
+.w35 {
+ width: 35%; }
+
+.w40 {
+ width: 40%; }
+
+.w45 {
+ width: 45%; }
+
+.w50 {
+ width: 50%; }
+
+.w55 {
+ width: 55%; }
+
+.w60 {
+ width: 60%; }
+
+.w65 {
+ width: 65%; }
+
+.w70 {
+ width: 70%; }
+
+.w75 {
+ width: 75%; }
+
+.w80 {
+ width: 80%; }
+
+.w85 {
+ width: 85%; }
+
+.w90 {
+ width: 90%; }
+
+.w95 {
+ width: 95%; }
+
+.w100 {
+ width: 100%; }
+
+.w-auto {
+ width: auto; }
+
+.w-small {
+ width: 480px; }
+
+.w-medium {
+ width: 600px; }
+
+.w-big {
+ width: 740px; }
+
+.w-large {
+ width: 840px; }
+
+@media (max-width: 768px) {
+ .w-auto-sm {
+ width: auto; }
+ .w100-sm,
+ .w-small,
+ .w-medium,
+ .w-big,
+ .w-large {
+ width: 100%; } }
+
+.max-w5 {
+ max-width: 5%; }
+
+.max-w10 {
+ max-width: 10%; }
+
+.max-w15 {
+ max-width: 15%; }
+
+.max-w20 {
+ max-width: 20%; }
+
+.max-w25 {
+ max-width: 25%; }
+
+.max-w30 {
+ max-width: 30%; }
+
+.max-w35 {
+ max-width: 35%; }
+
+.max-w40 {
+ max-width: 40%; }
+
+.max-w45 {
+ max-width: 45%; }
+
+.max-w50 {
+ max-width: 50%; }
+
+.max-w55 {
+ max-width: 55%; }
+
+.max-w60 {
+ max-width: 60%; }
+
+.max-w65 {
+ max-width: 65%; }
+
+.max-w70 {
+ max-width: 70%; }
+
+.max-w75 {
+ max-width: 75%; }
+
+.max-w80 {
+ max-width: 80%; }
+
+.max-w85 {
+ max-width: 85%; }
+
+.max-w90 {
+ max-width: 90%; }
+
+.max-w95 {
+ max-width: 95%; }
+
+.max-w100 {
+ max-width: 100%; }
+
+.max-w-small {
+ max-width: 480px; }
+
+.max-w-medium {
+ max-width: 600px; }
+
+.max-w-big {
+ max-width: 740px; }
+
+.max-w-large {
+ max-width: 840px; }
+
+@media (max-width: 768px) {
+ .max-w-auto-sm,
+ .max-w-small,
+ .max-w-medium,
+ .max-w-big,
+ .max-w-large {
+ max-width: auto; } }
+
+.min-w5 {
+ min-width: 5%; }
+
+.min-w10 {
+ min-width: 10%; }
+
+.min-w15 {
+ min-width: 15%; }
+
+.min-w20 {
+ min-width: 20%; }
+
+.min-w25 {
+ min-width: 25%; }
+
+.min-w30 {
+ min-width: 30%; }
+
+.min-w35 {
+ min-width: 35%; }
+
+.min-w40 {
+ min-width: 40%; }
+
+.min-w45 {
+ min-width: 45%; }
+
+.min-w50 {
+ min-width: 50%; }
+
+.min-w55 {
+ min-width: 55%; }
+
+.min-w60 {
+ min-width: 60%; }
+
+.min-w65 {
+ min-width: 65%; }
+
+.min-w70 {
+ min-width: 70%; }
+
+.min-w75 {
+ min-width: 75%; }
+
+.min-w80 {
+ min-width: 80%; }
+
+.min-w85 {
+ min-width: 85%; }
+
+.min-w90 {
+ min-width: 90%; }
+
+.min-w95 {
+ min-width: 95%; }
+
+.min-w100 {
+ min-width: 100%; }
+
+.h25 {
+ height: 25%; }
+
+.h50 {
+ height: 50%; }
+
+.h100 {
+ height: 100%; }
+
+.group:after {
+ content: '';
+ display: table;
+ clear: both; }
+
+.flex {
+ display: flex; }
+
+@media (max-width: 768px) {
+ .flex-column-sm {
+ flex-direction: column; }
+ .flex-w100-sm {
+ flex: 0 0 100%; } }
+@media (max-width: 768px) and (max-width: 768px) {
+ .flex-w100-sm {
+ flex: 0 0 100% !important; } }
+
+.invisible {
+ visibility: hidden; }
+
+.visible {
+ visibility: visible; }
+
+.display-block {
+ display: block; }
+
+.hide {
+ display: none !important; }
+
+@media (max-width: 768px) {
+ .hide-sm {
+ display: none !important; } }
+
+@media (min-width: 768px) {
+ .show-sm {
+ display: none !important; } }
+
+@media print {
+ .hide-print {
+ display: none !important; }
+ .show-print {
+ display: block !important; } }
+
+.no-scroll {
+ overflow: hidden;
+ position: fixed;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100% !important; }
+
+.scrollbar-measure {
+ position: absolute;
+ top: -9999px;
+ width: 50px;
+ height: 50px;
+ overflow: scroll; }
+
+.video-container {
+ height: 0;
+ padding-bottom: 56.25%;
+ position: relative;
+ margin-bottom: 16px; }
+.video-container iframe,
+.video-container object,
+.video-container embed {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100% !important;
+ height: 100% !important; }
+
+.close {
+ display: inline-block;
+ min-height: 16px;
+ min-width: 16px;
+ line-height: 16px;
+ vertical-align: middle;
+ text-align: center;
+ font-size: 12px;
+ opacity: .6; }
+.close:hover {
+ opacity: 1; }
+.close.small {
+ font-size: 8px; }
+.close.big {
+ font-size: 18px; }
+.close.white {
+ color: #fff; }
+
+.caret {
+ display: inline-block; }
+
+.button .caret {
+ margin-right: -8px; }
+
+.overlay {
+ position: fixed;
+ z-index: 200;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: rgba(255, 255, 255, 0.95); }
+.overlay > .close {
+ position: fixed;
+ top: 1rem;
+ right: 1rem; }
+
+@media print {
+ * {
+ background: transparent !important;
+ color: black !important;
+ box-shadow: none !important;
+ text-shadow: none !important; }
+ a,
+ a:visited {
+ text-decoration: underline; }
+ pre, blockquote {
+ border: 1px solid #999;
+ page-break-inside: avoid; }
+ p, h2, h3 {
+ orphans: 3;
+ widows: 3; }
+ thead {
+ display: table-header-group; }
+ tr, img {
+ page-break-inside: avoid; }
+ img {
+ max-width: 100% !important; }
+ h2, h3, h4 {
+ page-break-after: avoid; }
+ @page {
+ margin: 0.5cm; } }
+
+@keyframes slideUp {
+ to {
+ height: 0;
+ padding-top: 0;
+ padding-bottom: 0; } }
+
+@keyframes slideDown {
+ from {
+ height: 0;
+ padding-top: 0;
+ padding-bottom: 0; } }
+
+@keyframes fadeIn {
+ from {
+ opacity: 0; }
+ to {
+ opacity: 1; } }
+
+@keyframes fadeOut {
+ from {
+ opacity: 1; }
+ to {
+ opacity: 0; } }
+
+@keyframes flipIn {
+ from {
+ opacity: 0;
+ transform: scaleY(0); }
+ to {
+ opacity: 1;
+ transform: scaleY(1); } }
+
+@keyframes flipOut {
+ from {
+ opacity: 1;
+ transform: scaleY(1); }
+ to {
+ opacity: 0;
+ transform: scaleY(0); } }
+
+@keyframes zoomIn {
+ from {
+ opacity: 0;
+ transform: scale3d(0.3, 0.3, 0.3); }
+ 50% {
+ opacity: 1; } }
+
+@keyframes zoomOut {
+ from {
+ opacity: 1; }
+ 50% {
+ opacity: 0;
+ transform: scale3d(0.3, 0.3, 0.3); }
+ to {
+ opacity: 0; } }
+
+@keyframes slideInRight {
+ from {
+ transform: translate3d(100%, 0, 0);
+ visibility: visible; }
+ to {
+ transform: translate3d(0, 0, 0); } }
+
+@keyframes slideInLeft {
+ from {
+ transform: translate3d(-100%, 0, 0);
+ visibility: visible; }
+ to {
+ transform: translate3d(0, 0, 0); } }
+
+@keyframes slideInDown {
+ from {
+ transform: translate3d(0, -100%, 0);
+ visibility: visible; }
+ to {
+ transform: translate3d(0, 0, 0); } }
+
+@keyframes slideOutLeft {
+ from {
+ transform: translate3d(0, 0, 0); }
+ to {
+ visibility: hidden;
+ transform: translate3d(-100%, 0, 0); } }
+
+@keyframes slideOutRight {
+ from {
+ transform: translate3d(0, 0, 0); }
+ to {
+ visibility: hidden;
+ transform: translate3d(100%, 0, 0); } }
+
+@keyframes slideOutUp {
+ from {
+ transform: translate3d(0, 0, 0); }
+ to {
+ visibility: hidden;
+ transform: translate3d(0, -100%, 0); } }
+
+@keyframes rotate {
+ from {
+ transform: rotate(0deg); }
+ to {
+ transform: rotate(360deg); } }
+
+@keyframes pulse {
+ from {
+ transform: scale3d(1, 1, 1); }
+ 50% {
+ transform: scale3d(1.03, 1.03, 1.03); }
+ to {
+ transform: scale3d(1, 1, 1); } }
+
+@keyframes shake {
+ 15% {
+ transform: translateX(0.5rem); }
+ 30% {
+ transform: translateX(-0.4rem); }
+ 45% {
+ transform: translateX(0.3rem); }
+ 60% {
+ transform: translateX(-0.2rem); }
+ 75% {
+ transform: translateX(0.1rem); }
+ 90% {
+ transform: translateX(0); }
+ 90% {
+ transform: translateX(0); } }
+
+.fadeIn {
+ animation: fadeIn 250ms; }
+
+.fadeOut {
+ animation: fadeOut 250ms; }
+
+.zoomIn {
+ animation: zoomIn 200ms; }
+
+.zoomOut {
+ animation: zoomOut 500ms; }
+
+.slideInRight {
+ animation: slideInRight 500ms; }
+
+.slideInLeft {
+ animation: slideInLeft 500ms; }
+
+.slideInDown {
+ animation: slideInDown 500ms; }
+
+.slideOutLeft {
+ animation: slideOutLeft 500ms; }
+
+.slideOutRight {
+ animation: slideOutRight 500ms; }
+
+.slideOutUp {
+ animation: slideOutUp 500ms; }
+
+.slideUp {
+ overflow: hidden;
+ animation: slideUp 200ms ease-in-out; }
+
+.slideDown {
+ overflow: hidden;
+ animation: slideDown 80ms ease-in-out; }
+
+.flipIn {
+ animation: flipIn 250ms cubic-bezier(0.5, -0.5, 0.5, 1.5); }
+
+.flipOut {
+ animation: flipOut 500ms cubic-bezier(0.5, -0.5, 0.5, 1.5); }
+
+.rotate {
+ animation: rotate 500ms; }
+
+.pulse {
+ animation: pulse 250ms 2; }
+
+.shake {
+ animation: shake 500ms; }
+
+.dropdown {
+ position: absolute;
+ z-index: 100;
+ top: 0;
+ right: 0;
+ width: 280px;
+ color: #000;
+ font-size: 15px;
+ background: #fff;
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
+ border-radius: 3px;
+ max-height: 300px;
+ margin: 0;
+ padding: 0;
+ overflow: hidden; }
+.dropdown.dropdown-mobile {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ width: 100%;
+ max-height: none;
+ border: none; }
+.dropdown .close {
+ margin: 20px auto; }
+.dropdown.open {
+ overflow: auto; }
+.dropdown ul {
+ list-style: none;
+ margin: 0; }
+.dropdown ul li {
+ border-bottom: 1px solid rgba(0, 0, 0, 0.07); }
+.dropdown ul li:last-child {
+ border-bottom: none; }
+.dropdown ul a {
+ display: block;
+ padding: 12px;
+ text-decoration: none;
+ color: #000; }
+.dropdown ul a:hover {
+ background: rgba(0, 0, 0, 0.05); }
+
+.message {
+ font-family: Consolas, Monaco, "Courier New", monospace;
+ font-size: 14px;
+ line-height: 20px;
+ background: #e0e1e1;
+ color: #313439;
+ padding: 1rem;
+ padding-right: 2.5em;
+ padding-bottom: .75rem;
+ margin-bottom: 24px;
+ position: relative; }
+.message a {
+ color: inherit; }
+.message h2,
+.message h3,
+.message h4,
+.message h5,
+.message h6 {
+ margin-bottom: 0; }
+.message .close {
+ position: absolute;
+ right: 1rem;
+ top: 1.1rem; }
+
+.message.error {
+ background: #f03c69;
+ color: #fff; }
+
+.message.success {
+ background: #35beb1;
+ color: #fff; }
+
+.message.warning {
+ background: #f7ba45; }
+
+.message.focus {
+ background: #1c86f2;
+ color: #fff; }
+
+.message.black {
+ background: #0d0d0e;
+ color: #fff; }
+
+.message.inverted {
+ background: #fff; }
+
+.modal-box {
+ position: fixed;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ right: 0;
+ overflow-x: hidden;
+ overflow-y: auto;
+ z-index: 200; }
+
+.modal {
+ position: relative;
+ margin: auto;
+ margin-top: 16px;
+ padding: 0;
+ background: #fff;
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15);
+ border-radius: 8px;
+ color: #000; }
+@media (max-width: 768px) {
+ .modal input,
+ .modal textarea {
+ font-size: 16px; } }
+.modal .close {
+ position: absolute;
+ top: 18px;
+ right: 16px;
+ opacity: .3; }
+.modal .close:hover {
+ opacity: 1; }
+
+.modal-header {
+ padding: 24px 32px;
+ font-size: 18px;
+ font-weight: bold;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.05); }
+.modal-header:empty {
+ display: none; }
+
+.modal-body {
+ padding: 36px 56px; }
+
+@media (max-width: 768px) {
+ .modal-header,
+ .modal-body {
+ padding: 24px; } }
+
+.offcanvas {
+ background: #fff;
+ position: fixed;
+ padding: 24px;
+ height: 100%;
+ top: 0;
+ left: 0;
+ z-index: 300;
+ overflow-y: scroll; }
+
+.offcanvas .close {
+ position: absolute;
+ top: 8px;
+ right: 8px; }
+
+.offcanvas-left {
+ border-right: 1px solid rgba(0, 0, 0, 0.1); }
+
+.offcanvas-right {
+ left: auto;
+ right: 0;
+ border-left: 1px solid rgba(0, 0, 0, 0.1); }
+
+.offcanvas-push-body {
+ position: relative; }
+
+.tabs {
+ margin-bottom: 24px;
+ font-size: 14px; }
+.tabs li em,
+.tabs li.active a {
+ color: #313439;
+ border: 1px solid rgba(0, 0, 0, 0.1);
+ cursor: default;
+ text-decoration: none;
+ background: none; }
+.tabs em,
+.tabs a {
+ position: relative;
+ top: 1px;
+ font-style: normal;
+ display: block;
+ padding: .5rem 1rem;
+ border: 1px solid transparent;
+ color: rgba(0, 0, 0, 0.5);
+ text-decoration: none; }
+.tabs a:hover {
+ -moz-transition: all linear 0.2s;
+ transition: all linear 0.2s;
+ color: #313439;
+ text-decoration: underline;
+ background-color: #e0e1e1; }
+
+@media (min-width: 768px) {
+ .tabs ul {
+ display: flex;
+ margin-top: -1px;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.1); }
+ .tabs li em,
+ .tabs li.active a {
+ border-bottom: 1px solid #fff; } }
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/linebreak-position.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/linebreak-position.css
new file mode 100644
index 0000000..ccb65f7
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/linebreak-position.css
@@ -0,0 +1,16 @@
+/*! This is a comment with closing curly braces }}}}}}}}}}}}}}}}}}}}} inside */
+.foo {
+ color: blue;
+ content: "String with closing curly braces inside }}}}";
+}
+@media {
+ .foo {
+ color: red;
+ }
+ .bar {
+ color: green;
+ }
+ .baz {
+ width: 10px;
+ }
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/lowercasing.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/lowercasing.css
new file mode 100644
index 0000000..3c684f1
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/lowercasing.css
@@ -0,0 +1,77 @@
+@CHARSET "UTF-8";
+
+@FONT-FACE {
+ FONT-FAMILY: "YOUR FACE";
+}
+
+#MY\@SUPPORTS-DIV{
+ border: none
+}
+
+@SUPPORTS only SCREEN {
+ @KEYFRAMES test{ color:blue }
+}
+
+@IMPORT "HTTP://DOMAIN.TLD/OTHER.CSS";
+
+@MEDIA PRINT {
+ BACKGROUND: NONE;
+ BACKGROUND-POSITION: 0 0;
+}
+
+@PAGE {
+ CONTENT: ATTR(HREF);
+ FILTER: BRIGHTNESS(0.4);
+ WIDTH: CALC(50% - 10PX);
+}
+
+@NAMESPACE XHTML "HTTP://WWW.W3.ORG/1999/XHTML";
+
+/* not pseudos */
+.a\:LINK {
+ color: blue;
+}
+
+/* pseudos */
+a:ACTIVE,
+a:AFTER,
+a:BEFORE,
+a:CHECKED,
+a:DISABLED,
+a:DEFAULT,
+a:EMPTY,
+a:ENABLED,
+a:FIRST-CHILD,
+a:FIRST-LETTER,
+a:FIRST-LINE,
+a:FIRST-OF-TYPE,
+a:FOCUS,
+a:HOVER,
+a:LAST-CHILD,
+a:LAST-OF-TYPE,
+a:LINK,
+a:ONLY-CHILD,
+a:ONLY-OF-TYPE,
+a:ROOT,
+a::SELECTION,
+a:TARGET,
+a:VISITED,
+
+/* pseudo functions */
+a:LANG(FR),
+a:NOT([HIDDEN]),
+a:NTH-CHILD(2),
+a:NTH-LAST-CHILD(2),
+a:NTH-LAST-OF-TYPE(2),
+a:NTH-OF-TYPE(2) {
+ TRANSITION-TIMING-FUNCTION: CUBIC-BEZIER(-1.9, 0.3, -0.2, 2.1);
+ BACKGROUND: URL(PROTO://DOMAIN.TLD/PATH),
+ REPEATING-LINEAR-GRADIENT(20DEG, GRAY, GREEN, 20PX, WHITE 40PX),
+ -ATSC-LINEAR-GRADIENT(LEFT, BLACK, WHITE),
+ -KHTML-RADIAL-GRADIENT(CENTER 50DEG, CIRCLE CLOSEST-SIDE, BLACK 0, GREEN 100%),
+ -MOZ-RADIAL-GRADIENT(CENTER 45DEG, CIRCLE CLOSEST-SIDE, ORANGE 0%, RED 100%),
+ -MS-LINEAR-GRaDiEnT(LEFT, BLUE, BLACK),
+ -O-REPEATING-RADIAL-GRADIENT(CENTER, CIRCLE CLOSEST-SIDE, PAPAYAWHIP, RED 50%, GAINSBORO),
+ -WAP-LINEAR-GRADIENT(LEFT, BLACK, WHITE),
+ -WEBKIT-GRADIENT(LINEAR, LEFT, FROM(WHITE), TO(RGBA(1,2,3,.4)));
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/materialize.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/materialize.css
new file mode 100644
index 0000000..b849977
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/materialize.css
@@ -0,0 +1,8952 @@
+/*!
+ * Materialize v0.98.2 (http://materializecss.com)
+ * Copyright 2014-2015 Materialize
+ * MIT License (https://raw.githubusercontent.com/Dogfalo/materialize/master/LICENSE)
+ */
+.materialize-red {
+ background-color: #e51c23 !important;
+}
+
+.materialize-red-text {
+ color: #e51c23 !important;
+}
+
+.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.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 {
+ background-color: #F44336 !important;
+}
+
+.red-text {
+ color: #F44336 !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.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 {
+ background-color: #e91e63 !important;
+}
+
+.pink-text {
+ color: #e91e63 !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.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 {
+ background-color: #9c27b0 !important;
+}
+
+.purple-text {
+ color: #9c27b0 !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.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 {
+ background-color: #673ab7 !important;
+}
+
+.deep-purple-text {
+ color: #673ab7 !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.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 {
+ background-color: #3f51b5 !important;
+}
+
+.indigo-text {
+ color: #3f51b5 !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.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 {
+ background-color: #2196F3 !important;
+}
+
+.blue-text {
+ color: #2196F3 !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.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 {
+ background-color: #03a9f4 !important;
+}
+
+.light-blue-text {
+ color: #03a9f4 !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.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 {
+ background-color: #00bcd4 !important;
+}
+
+.cyan-text {
+ color: #00bcd4 !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.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 {
+ background-color: #009688 !important;
+}
+
+.teal-text {
+ color: #009688 !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.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 {
+ background-color: #4CAF50 !important;
+}
+
+.green-text {
+ color: #4CAF50 !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.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 {
+ background-color: #8bc34a !important;
+}
+
+.light-green-text {
+ color: #8bc34a !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.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 {
+ background-color: #cddc39 !important;
+}
+
+.lime-text {
+ color: #cddc39 !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.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 {
+ background-color: #ffeb3b !important;
+}
+
+.yellow-text {
+ color: #ffeb3b !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.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 {
+ background-color: #ffc107 !important;
+}
+
+.amber-text {
+ color: #ffc107 !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.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 {
+ background-color: #ff9800 !important;
+}
+
+.orange-text {
+ color: #ff9800 !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.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 {
+ background-color: #ff5722 !important;
+}
+
+.deep-orange-text {
+ color: #ff5722 !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.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 {
+ background-color: #795548 !important;
+}
+
+.brown-text {
+ color: #795548 !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.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 {
+ background-color: #607d8b !important;
+}
+
+.blue-grey-text {
+ color: #607d8b !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.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 {
+ background-color: #9e9e9e !important;
+}
+
+.grey-text {
+ color: #9e9e9e !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.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;
+}
+
+.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.3 | MIT License | github.com/necolas/normalize.css */
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS and IE text size adjust after device orientation change,
+ * without disabling user zoom.
+ */
+html {
+ font-family: sans-serif;
+ /* 1 */
+ -ms-text-size-adjust: 100%;
+ /* 2 */
+ -webkit-text-size-adjust: 100%;
+ /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+body {
+ margin: 0;
+}
+
+/* HTML5 display definitions
+ ========================================================================== */
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+audio,
+canvas,
+progress,
+video {
+ display: inline-block;
+ /* 1 */
+ vertical-align: baseline;
+ /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
+ */
+[hidden],
+template {
+ display: none;
+}
+
+/* Links
+ ========================================================================== */
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+a {
+ background-color: transparent;
+}
+
+/**
+ * Improve readability of focused elements when they are also in an
+ * active/hover state.
+ */
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+b,
+strong {
+ font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Embedded content
+ ========================================================================== */
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+img {
+ border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== */
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+hr {
+ box-sizing: content-box;
+ height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+pre {
+ overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+/* Forms
+ ========================================================================== */
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit;
+ /* 1 */
+ font: inherit;
+ /* 2 */
+ margin: 0;
+ /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+button {
+ overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+button,
+html input[type="button"],
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button;
+ /* 2 */
+ cursor: pointer;
+ /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+input {
+ line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box;
+ /* 1 */
+ padding: 0;
+ /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
+ */
+input[type="search"] {
+ -webkit-appearance: textfield;
+ /* 1 */
+ box-sizing: content-box;
+ /* 2 */
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+legend {
+ border: 0;
+ /* 1 */
+ padding: 0;
+ /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+textarea {
+ overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+optgroup {
+ font-weight: bold;
+}
+
+/* Tables
+ ========================================================================== */
+/**
+ * Remove most spacing between table cells.
+ */
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+td,
+th {
+ padding: 0;
+}
+
+html {
+ box-sizing: border-box;
+}
+
+*, *:before, *:after {
+ box-sizing: inherit;
+}
+
+ul:not(.browser-default) {
+ padding-left: 0;
+ list-style-type: none;
+}
+
+ul:not(.browser-default) li {
+ list-style-type: none;
+}
+
+a {
+ color: #039be5;
+ text-decoration: none;
+ -webkit-tap-highlight-color: transparent;
+}
+
+.valign-wrapper {
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+}
+
+.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 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2);
+}
+
+.z-depth-1-half, .btn:hover, .btn-large:hover, .btn-floating:hover {
+ box-shadow: 0 3px 3px 0 rgba(0, 0, 0, 0.14), 0 1px 7px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -1px rgba(0, 0, 0, 0.2);
+}
+
+.z-depth-2 {
+ box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
+}
+
+.z-depth-3 {
+ box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.3);
+}
+
+.z-depth-4, .modal {
+ box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.3);
+}
+
+.z-depth-5 {
+ box-shadow: 0 16px 24px 2px rgba(0, 0, 0, 0.14), 0 6px 30px 5px rgba(0, 0, 0, 0.12), 0 8px 10px -5px rgba(0, 0, 0, 0.3);
+}
+
+.hoverable {
+ transition: box-shadow .25s;
+ box-shadow: 0;
+}
+
+.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;
+ border-radius: 2px;
+ text-align: center;
+ vertical-align: top;
+ height: 30px;
+}
+
+.pagination li a {
+ color: #444;
+ display: inline-block;
+ font-size: 1.2rem;
+ padding: 0 10px;
+ line-height: 30px;
+}
+
+.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;
+ }
+}
+
+.breadcrumb {
+ font-size: 18px;
+ color: rgba(255, 255, 255, 0.7);
+}
+
+.breadcrumb i,
+.breadcrumb [class^="mdi-"], .breadcrumb [class*="mdi-"],
+.breadcrumb i.material-icons {
+ display: inline-block;
+ float: left;
+ font-size: 24px;
+}
+
+.breadcrumb:before {
+ content: '\E5CC';
+ color: rgba(255, 255, 255, 0.7);
+ vertical-align: top;
+ display: inline-block;
+ font-family: 'Material Icons';
+ font-weight: normal;
+ font-style: normal;
+ font-size: 25px;
+ margin: 0 10px 0 8px;
+ -webkit-font-smoothing: antialiased;
+}
+
+.breadcrumb:first-child:before {
+ display: none;
+}
+
+.breadcrumb:last-child {
+ color: #fff;
+}
+
+.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);
+ -webkit-transform: translateX(-50%);
+ transform: translateX(-50%);
+}
+
+.pin-top, .pin-bottom {
+ position: relative;
+}
+
+.pinned {
+ position: fixed !important;
+}
+
+/*********************
+ Transition Classes
+**********************/
+ul.staggered-list li {
+ opacity: 0;
+}
+
+.fade-in {
+ opacity: 0;
+ -webkit-transform-origin: 0 50%;
+ transform-origin: 0 50%;
+}
+
+/*********************
+ Media Query Classes
+**********************/
+@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: block !important;
+ }
+}
+
+@media only screen and (min-width: 600px) and (max-width: 992px) {
+ .show-on-medium {
+ display: block !important;
+ }
+}
+
+@media only screen and (max-width: 600px) {
+ .show-on-small {
+ display: block !important;
+ }
+}
+
+@media only screen and (min-width: 601px) {
+ .show-on-medium-and-up {
+ display: block !important;
+ }
+}
+
+@media only screen and (max-width: 992px) {
+ .show-on-medium-and-down {
+ display: block !important;
+ }
+}
+
+@media only screen and (max-width: 600px) {
+ .center-on-small-only {
+ text-align: center;
+ }
+}
+
+.page-footer {
+ padding-top: 20px;
+ background-color: #ee6e73;
+}
+
+.page-footer .footer-copyright {
+ overflow: hidden;
+ min-height: 50px;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ padding: 10px 0px;
+ 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: 0;
+}
+
+table.highlight > tbody > tr {
+ 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;
+ /* sort out borders */
+ }
+ table.responsive-table td:empty:before {
+ content: '\00a0';
+ }
+ 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;
+ transition: .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;
+}
+
+.video-container {
+ position: relative;
+ padding-bottom: 56.25%;
+ height: 0;
+ overflow: hidden;
+}
+
+.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;
+ top: 0;
+ left: 0;
+ bottom: 0;
+ background-color: #26a69a;
+ 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;
+ 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;
+ animation: indeterminate-short 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) infinite;
+ -webkit-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%;
+ }
+}
+
+@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%;
+ }
+}
+
+@keyframes indeterminate-short {
+ 0% {
+ left: -200%;
+ right: 100%;
+ }
+ 60% {
+ left: 107%;
+ right: -8%;
+ }
+ 100% {
+ left: 107%;
+ right: -8%;
+ }
+}
+
+/*******************
+ Utility Classes
+*******************/
+.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;
+ -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;
+}
+
+span.badge {
+ min-width: 3rem;
+ padding: 0 6px;
+ margin-left: 14px;
+ text-align: center;
+ font-size: 1rem;
+ line-height: 22px;
+ height: 22px;
+ color: #757575;
+ float: right;
+ 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";
+}
+
+span.badge[data-badge-caption]::after {
+ content: " " attr(data-badge-caption);
+}
+
+nav ul a span.badge {
+ display: inline-block;
+ float: none;
+ margin-left: 4px;
+ line-height: 22px;
+ height: 22px;
+}
+
+.collection-item span.badge {
+ margin-top: calc(0.75rem - 11px);
+}
+
+.collapsible span.badge {
+ margin-top: calc(1.5rem - 11px);
+}
+
+.side-nav span.badge {
+ margin-top: calc(24px - 11px);
+}
+
+/* This is needed for some mobile phones to display the Google Icon font properly */
+.material-icons {
+ text-rendering: optimizeLegibility;
+ -webkit-font-feature-settings: 'liga';
+ -moz-font-feature-settings: 'liga';
+ font-feature-settings: 'liga';
+}
+
+.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;
+ box-sizing: border-box;
+ padding: 0 0.75rem;
+ min-height: 1px;
+}
+
+.row .col[class*="push-"], .row .col[class*="pull-"] {
+ position: relative;
+}
+
+.row .col.s1 {
+ width: 8.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+}
+
+.row .col.s2 {
+ width: 16.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+}
+
+.row .col.s3 {
+ width: 25%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+}
+
+.row .col.s4 {
+ width: 33.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+}
+
+.row .col.s5 {
+ width: 41.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+}
+
+.row .col.s6 {
+ width: 50%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+}
+
+.row .col.s7 {
+ width: 58.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+}
+
+.row .col.s8 {
+ width: 66.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+}
+
+.row .col.s9 {
+ width: 75%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+}
+
+.row .col.s10 {
+ width: 83.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+}
+
+.row .col.s11 {
+ width: 91.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+}
+
+.row .col.s12 {
+ width: 100%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+}
+
+.row .col.offset-s1 {
+ margin-left: 8.3333333333%;
+}
+
+.row .col.pull-s1 {
+ right: 8.3333333333%;
+}
+
+.row .col.push-s1 {
+ left: 8.3333333333%;
+}
+
+.row .col.offset-s2 {
+ margin-left: 16.6666666667%;
+}
+
+.row .col.pull-s2 {
+ right: 16.6666666667%;
+}
+
+.row .col.push-s2 {
+ left: 16.6666666667%;
+}
+
+.row .col.offset-s3 {
+ margin-left: 25%;
+}
+
+.row .col.pull-s3 {
+ right: 25%;
+}
+
+.row .col.push-s3 {
+ left: 25%;
+}
+
+.row .col.offset-s4 {
+ margin-left: 33.3333333333%;
+}
+
+.row .col.pull-s4 {
+ right: 33.3333333333%;
+}
+
+.row .col.push-s4 {
+ left: 33.3333333333%;
+}
+
+.row .col.offset-s5 {
+ margin-left: 41.6666666667%;
+}
+
+.row .col.pull-s5 {
+ right: 41.6666666667%;
+}
+
+.row .col.push-s5 {
+ left: 41.6666666667%;
+}
+
+.row .col.offset-s6 {
+ margin-left: 50%;
+}
+
+.row .col.pull-s6 {
+ right: 50%;
+}
+
+.row .col.push-s6 {
+ left: 50%;
+}
+
+.row .col.offset-s7 {
+ margin-left: 58.3333333333%;
+}
+
+.row .col.pull-s7 {
+ right: 58.3333333333%;
+}
+
+.row .col.push-s7 {
+ left: 58.3333333333%;
+}
+
+.row .col.offset-s8 {
+ margin-left: 66.6666666667%;
+}
+
+.row .col.pull-s8 {
+ right: 66.6666666667%;
+}
+
+.row .col.push-s8 {
+ left: 66.6666666667%;
+}
+
+.row .col.offset-s9 {
+ margin-left: 75%;
+}
+
+.row .col.pull-s9 {
+ right: 75%;
+}
+
+.row .col.push-s9 {
+ left: 75%;
+}
+
+.row .col.offset-s10 {
+ margin-left: 83.3333333333%;
+}
+
+.row .col.pull-s10 {
+ right: 83.3333333333%;
+}
+
+.row .col.push-s10 {
+ left: 83.3333333333%;
+}
+
+.row .col.offset-s11 {
+ margin-left: 91.6666666667%;
+}
+
+.row .col.pull-s11 {
+ right: 91.6666666667%;
+}
+
+.row .col.push-s11 {
+ left: 91.6666666667%;
+}
+
+.row .col.offset-s12 {
+ margin-left: 100%;
+}
+
+.row .col.pull-s12 {
+ right: 100%;
+}
+
+.row .col.push-s12 {
+ left: 100%;
+}
+
+@media only screen and (min-width: 601px) {
+ .row .col.m1 {
+ width: 8.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.m2 {
+ width: 16.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.m3 {
+ width: 25%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.m4 {
+ width: 33.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.m5 {
+ width: 41.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.m6 {
+ width: 50%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.m7 {
+ width: 58.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.m8 {
+ width: 66.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.m9 {
+ width: 75%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.m10 {
+ width: 83.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.m11 {
+ width: 91.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.m12 {
+ width: 100%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.offset-m1 {
+ margin-left: 8.3333333333%;
+ }
+ .row .col.pull-m1 {
+ right: 8.3333333333%;
+ }
+ .row .col.push-m1 {
+ left: 8.3333333333%;
+ }
+ .row .col.offset-m2 {
+ margin-left: 16.6666666667%;
+ }
+ .row .col.pull-m2 {
+ right: 16.6666666667%;
+ }
+ .row .col.push-m2 {
+ left: 16.6666666667%;
+ }
+ .row .col.offset-m3 {
+ margin-left: 25%;
+ }
+ .row .col.pull-m3 {
+ right: 25%;
+ }
+ .row .col.push-m3 {
+ left: 25%;
+ }
+ .row .col.offset-m4 {
+ margin-left: 33.3333333333%;
+ }
+ .row .col.pull-m4 {
+ right: 33.3333333333%;
+ }
+ .row .col.push-m4 {
+ left: 33.3333333333%;
+ }
+ .row .col.offset-m5 {
+ margin-left: 41.6666666667%;
+ }
+ .row .col.pull-m5 {
+ right: 41.6666666667%;
+ }
+ .row .col.push-m5 {
+ left: 41.6666666667%;
+ }
+ .row .col.offset-m6 {
+ margin-left: 50%;
+ }
+ .row .col.pull-m6 {
+ right: 50%;
+ }
+ .row .col.push-m6 {
+ left: 50%;
+ }
+ .row .col.offset-m7 {
+ margin-left: 58.3333333333%;
+ }
+ .row .col.pull-m7 {
+ right: 58.3333333333%;
+ }
+ .row .col.push-m7 {
+ left: 58.3333333333%;
+ }
+ .row .col.offset-m8 {
+ margin-left: 66.6666666667%;
+ }
+ .row .col.pull-m8 {
+ right: 66.6666666667%;
+ }
+ .row .col.push-m8 {
+ left: 66.6666666667%;
+ }
+ .row .col.offset-m9 {
+ margin-left: 75%;
+ }
+ .row .col.pull-m9 {
+ right: 75%;
+ }
+ .row .col.push-m9 {
+ left: 75%;
+ }
+ .row .col.offset-m10 {
+ margin-left: 83.3333333333%;
+ }
+ .row .col.pull-m10 {
+ right: 83.3333333333%;
+ }
+ .row .col.push-m10 {
+ left: 83.3333333333%;
+ }
+ .row .col.offset-m11 {
+ margin-left: 91.6666666667%;
+ }
+ .row .col.pull-m11 {
+ right: 91.6666666667%;
+ }
+ .row .col.push-m11 {
+ left: 91.6666666667%;
+ }
+ .row .col.offset-m12 {
+ margin-left: 100%;
+ }
+ .row .col.pull-m12 {
+ right: 100%;
+ }
+ .row .col.push-m12 {
+ left: 100%;
+ }
+}
+
+@media only screen and (min-width: 993px) {
+ .row .col.l1 {
+ width: 8.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.l2 {
+ width: 16.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.l3 {
+ width: 25%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.l4 {
+ width: 33.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.l5 {
+ width: 41.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.l6 {
+ width: 50%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.l7 {
+ width: 58.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.l8 {
+ width: 66.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.l9 {
+ width: 75%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.l10 {
+ width: 83.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.l11 {
+ width: 91.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.l12 {
+ width: 100%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.offset-l1 {
+ margin-left: 8.3333333333%;
+ }
+ .row .col.pull-l1 {
+ right: 8.3333333333%;
+ }
+ .row .col.push-l1 {
+ left: 8.3333333333%;
+ }
+ .row .col.offset-l2 {
+ margin-left: 16.6666666667%;
+ }
+ .row .col.pull-l2 {
+ right: 16.6666666667%;
+ }
+ .row .col.push-l2 {
+ left: 16.6666666667%;
+ }
+ .row .col.offset-l3 {
+ margin-left: 25%;
+ }
+ .row .col.pull-l3 {
+ right: 25%;
+ }
+ .row .col.push-l3 {
+ left: 25%;
+ }
+ .row .col.offset-l4 {
+ margin-left: 33.3333333333%;
+ }
+ .row .col.pull-l4 {
+ right: 33.3333333333%;
+ }
+ .row .col.push-l4 {
+ left: 33.3333333333%;
+ }
+ .row .col.offset-l5 {
+ margin-left: 41.6666666667%;
+ }
+ .row .col.pull-l5 {
+ right: 41.6666666667%;
+ }
+ .row .col.push-l5 {
+ left: 41.6666666667%;
+ }
+ .row .col.offset-l6 {
+ margin-left: 50%;
+ }
+ .row .col.pull-l6 {
+ right: 50%;
+ }
+ .row .col.push-l6 {
+ left: 50%;
+ }
+ .row .col.offset-l7 {
+ margin-left: 58.3333333333%;
+ }
+ .row .col.pull-l7 {
+ right: 58.3333333333%;
+ }
+ .row .col.push-l7 {
+ left: 58.3333333333%;
+ }
+ .row .col.offset-l8 {
+ margin-left: 66.6666666667%;
+ }
+ .row .col.pull-l8 {
+ right: 66.6666666667%;
+ }
+ .row .col.push-l8 {
+ left: 66.6666666667%;
+ }
+ .row .col.offset-l9 {
+ margin-left: 75%;
+ }
+ .row .col.pull-l9 {
+ right: 75%;
+ }
+ .row .col.push-l9 {
+ left: 75%;
+ }
+ .row .col.offset-l10 {
+ margin-left: 83.3333333333%;
+ }
+ .row .col.pull-l10 {
+ right: 83.3333333333%;
+ }
+ .row .col.push-l10 {
+ left: 83.3333333333%;
+ }
+ .row .col.offset-l11 {
+ margin-left: 91.6666666667%;
+ }
+ .row .col.pull-l11 {
+ right: 91.6666666667%;
+ }
+ .row .col.push-l11 {
+ left: 91.6666666667%;
+ }
+ .row .col.offset-l12 {
+ margin-left: 100%;
+ }
+ .row .col.pull-l12 {
+ right: 100%;
+ }
+ .row .col.push-l12 {
+ left: 100%;
+ }
+}
+
+@media only screen and (min-width: 1201px) {
+ .row .col.xl1 {
+ width: 8.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.xl2 {
+ width: 16.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.xl3 {
+ width: 25%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.xl4 {
+ width: 33.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.xl5 {
+ width: 41.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.xl6 {
+ width: 50%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.xl7 {
+ width: 58.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.xl8 {
+ width: 66.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.xl9 {
+ width: 75%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.xl10 {
+ width: 83.3333333333%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.xl11 {
+ width: 91.6666666667%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.xl12 {
+ width: 100%;
+ margin-left: auto;
+ left: auto;
+ right: auto;
+ }
+ .row .col.offset-xl1 {
+ margin-left: 8.3333333333%;
+ }
+ .row .col.pull-xl1 {
+ right: 8.3333333333%;
+ }
+ .row .col.push-xl1 {
+ left: 8.3333333333%;
+ }
+ .row .col.offset-xl2 {
+ margin-left: 16.6666666667%;
+ }
+ .row .col.pull-xl2 {
+ right: 16.6666666667%;
+ }
+ .row .col.push-xl2 {
+ left: 16.6666666667%;
+ }
+ .row .col.offset-xl3 {
+ margin-left: 25%;
+ }
+ .row .col.pull-xl3 {
+ right: 25%;
+ }
+ .row .col.push-xl3 {
+ left: 25%;
+ }
+ .row .col.offset-xl4 {
+ margin-left: 33.3333333333%;
+ }
+ .row .col.pull-xl4 {
+ right: 33.3333333333%;
+ }
+ .row .col.push-xl4 {
+ left: 33.3333333333%;
+ }
+ .row .col.offset-xl5 {
+ margin-left: 41.6666666667%;
+ }
+ .row .col.pull-xl5 {
+ right: 41.6666666667%;
+ }
+ .row .col.push-xl5 {
+ left: 41.6666666667%;
+ }
+ .row .col.offset-xl6 {
+ margin-left: 50%;
+ }
+ .row .col.pull-xl6 {
+ right: 50%;
+ }
+ .row .col.push-xl6 {
+ left: 50%;
+ }
+ .row .col.offset-xl7 {
+ margin-left: 58.3333333333%;
+ }
+ .row .col.pull-xl7 {
+ right: 58.3333333333%;
+ }
+ .row .col.push-xl7 {
+ left: 58.3333333333%;
+ }
+ .row .col.offset-xl8 {
+ margin-left: 66.6666666667%;
+ }
+ .row .col.pull-xl8 {
+ right: 66.6666666667%;
+ }
+ .row .col.push-xl8 {
+ left: 66.6666666667%;
+ }
+ .row .col.offset-xl9 {
+ margin-left: 75%;
+ }
+ .row .col.pull-xl9 {
+ right: 75%;
+ }
+ .row .col.push-xl9 {
+ left: 75%;
+ }
+ .row .col.offset-xl10 {
+ margin-left: 83.3333333333%;
+ }
+ .row .col.pull-xl10 {
+ right: 83.3333333333%;
+ }
+ .row .col.push-xl10 {
+ left: 83.3333333333%;
+ }
+ .row .col.offset-xl11 {
+ margin-left: 91.6666666667%;
+ }
+ .row .col.pull-xl11 {
+ right: 91.6666666667%;
+ }
+ .row .col.push-xl11 {
+ left: 91.6666666667%;
+ }
+ .row .col.offset-xl12 {
+ margin-left: 100%;
+ }
+ .row .col.pull-xl12 {
+ right: 100%;
+ }
+ .row .col.push-xl12 {
+ left: 100%;
+ }
+}
+
+nav {
+ color: #fff;
+ background-color: #ee6e73;
+ width: 100%;
+ height: 56px;
+ line-height: 56px;
+}
+
+nav.nav-extended {
+ height: auto;
+}
+
+nav.nav-extended .nav-wrapper {
+ min-height: 56px;
+ height: auto;
+}
+
+nav.nav-extended .nav-content {
+ position: relative;
+ line-height: normal;
+}
+
+nav a {
+ color: #fff;
+}
+
+nav i,
+nav [class^="mdi-"], nav [class*="mdi-"],
+nav i.material-icons {
+ display: block;
+ font-size: 24px;
+ height: 56px;
+ line-height: 56px;
+}
+
+nav .nav-wrapper {
+ position: relative;
+ height: 100%;
+}
+
+@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;
+ margin: 0 18px;
+}
+
+nav .button-collapse i {
+ 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%);
+ transform: translateX(-50%);
+}
+
+@media only screen and (max-width: 992px) {
+ nav .brand-logo {
+ left: 50%;
+ -webkit-transform: translateX(-50%);
+ transform: translateX(-50%);
+ }
+ nav .brand-logo.left, nav .brand-logo.right {
+ padding: 0;
+ -webkit-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 .brand-logo i,
+nav .brand-logo [class^="mdi-"], nav .brand-logo [class*="mdi-"],
+nav .brand-logo i.material-icons {
+ float: left;
+ margin-right: 15px;
+}
+
+nav .nav-title {
+ display: inline-block;
+ font-size: 32px;
+ padding: 28px 0;
+}
+
+nav ul {
+ margin: 0;
+}
+
+nav ul li {
+ transition: background-color .3s;
+ float: left;
+ padding: 0;
+}
+
+nav ul li.active {
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
+nav ul a {
+ transition: background-color .3s;
+ font-size: 1rem;
+ color: #fff;
+ display: block;
+ padding: 0 15px;
+ cursor: pointer;
+}
+
+nav ul a.btn, nav ul a.btn-large, nav ul a.btn-large, nav ul a.btn-flat, nav ul a.btn-floating {
+ margin-top: -2px;
+ margin-left: 15px;
+ margin-right: 15px;
+}
+
+nav ul a.btn > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-large > .material-icons, nav ul a.btn-flat > .material-icons, nav ul a.btn-floating > .material-icons {
+ height: inherit;
+ line-height: inherit;
+}
+
+nav ul a:hover {
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
+nav ul.left {
+ float: left;
+}
+
+nav form {
+ height: 100%;
+}
+
+nav .input-field {
+ margin: 0;
+ height: 100%;
+}
+
+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);
+ transition: color .3s;
+}
+
+nav .input-field label.active i {
+ color: #fff;
+}
+
+.navbar-fixed {
+ position: relative;
+ height: 56px;
+ z-index: 997;
+}
+
+.navbar-fixed nav {
+ position: fixed;
+}
+
+@media only screen and (min-width: 601px) {
+ nav.nav-extended .nav-wrapper {
+ min-height: 64px;
+ }
+ 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("../fonts/roboto/Roboto-Thin.woff2") format("woff2"), url("../fonts/roboto/Roboto-Thin.woff") format("woff");
+ font-weight: 100;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: local(Roboto Light), url("../fonts/roboto/Roboto-Light.woff2") format("woff2"), url("../fonts/roboto/Roboto-Light.woff") format("woff");
+ font-weight: 300;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: local(Roboto Regular), url("../fonts/roboto/Roboto-Regular.woff2") format("woff2"), url("../fonts/roboto/Roboto-Regular.woff") format("woff");
+ font-weight: 400;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: local(Roboto Medium), url("../fonts/roboto/Roboto-Medium.woff2") format("woff2"), url("../fonts/roboto/Roboto-Medium.woff") format("woff");
+ font-weight: 500;
+}
+
+@font-face {
+ font-family: "Roboto";
+ src: local(Roboto Bold), url("../fonts/roboto/Roboto-Bold.woff2") format("woff2"), url("../fonts/roboto/Roboto-Bold.woff") format("woff");
+ 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, .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;
+ }
+}
+
+.scale-transition {
+ transition: -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;
+ transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;
+ transition: transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63), -webkit-transform 0.3s cubic-bezier(0.53, 0.01, 0.36, 1.63) !important;
+}
+
+.scale-transition.scale-out {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ transition: -webkit-transform .2s !important;
+ transition: transform .2s !important;
+ transition: transform .2s, -webkit-transform .2s !important;
+}
+
+.scale-transition.scale-in {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+}
+
+.card-panel {
+ transition: box-shadow .25s;
+ padding: 24px;
+ margin: 0.5rem 0 1rem 0;
+ border-radius: 2px;
+ background-color: #fff;
+}
+
+.card {
+ position: relative;
+ margin: 0.5rem 0 1rem 0;
+ background-color: #fff;
+ transition: box-shadow .25s;
+ border-radius: 2px;
+}
+
+.card .card-title {
+ 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 {
+ max-height: 60%;
+ overflow: hidden;
+}
+
+.card.small .card-image + .card-content, .card.medium .card-image + .card-content, .card.large .card-image + .card-content {
+ max-height: 40%;
+}
+
+.card.small .card-content, .card.medium .card-content, .card.large .card-content {
+ max-height: 100%;
+ 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.medium {
+ height: 400px;
+}
+
+.card.large {
+ height: 500px;
+}
+
+.card.horizontal {
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.card.horizontal.small .card-image, .card.horizontal.medium .card-image, .card.horizontal.large .card-image {
+ height: 100%;
+ max-height: none;
+ overflow: visible;
+}
+
+.card.horizontal.small .card-image img, .card.horizontal.medium .card-image img, .card.horizontal.large .card-image img {
+ height: 100%;
+}
+
+.card.horizontal .card-image {
+ max-width: 50%;
+}
+
+.card.horizontal .card-image img {
+ border-radius: 2px 0 0 2px;
+ max-width: 100%;
+ width: auto;
+}
+
+.card.horizontal .card-stacked {
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-direction: column;
+ -ms-flex-direction: column;
+ flex-direction: column;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ position: relative;
+}
+
+.card.horizontal .card-stacked .card-content {
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.card.sticky-action .card-action {
+ z-index: 2;
+}
+
+.card.sticky-action .card-reveal {
+ z-index: 1;
+ padding-bottom: 64px;
+}
+
+.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 {
+ color: #fff;
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ max-width: 100%;
+ padding: 24px;
+}
+
+.card .card-content {
+ padding: 24px;
+ border-radius: 0 0 2px 2px;
+}
+
+.card .card-content p {
+ margin: 0;
+ color: inherit;
+}
+
+.card .card-content .card-title {
+ display: block;
+ line-height: 32px;
+ margin-bottom: 8px;
+}
+
+.card .card-content .card-title i {
+ line-height: 32px;
+}
+
+.card .card-action {
+ position: relative;
+ background-color: inherit;
+ border-top: 1px solid rgba(160, 160, 160, 0.2);
+ padding: 16px 24px;
+}
+
+.card .card-action:last-child {
+ border-radius: 0 0 2px 2px;
+}
+
+.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating) {
+ color: #ffab40;
+ margin-right: 24px;
+ transition: color .3s ease;
+ text-transform: uppercase;
+}
+
+.card .card-action a:not(.btn):not(.btn-large):not(.btn-large):not(.btn-floating):hover {
+ color: #ffd8a6;
+}
+
+.card .card-reveal {
+ padding: 24px;
+ position: absolute;
+ background-color: #fff;
+ width: 100%;
+ overflow-y: auto;
+ left: 0;
+ top: 100%;
+ height: 100%;
+ z-index: 3;
+ 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 {
+ left: 5%;
+ bottom: 7%;
+ max-width: 90%;
+ }
+}
+
+@media only screen and (min-width: 993px) {
+ #toast-container {
+ top: 10%;
+ right: 7%;
+ max-width: 86%;
+ }
+}
+
+.toast {
+ border-radius: 2px;
+ top: 35px;
+ width: auto;
+ clear: both;
+ margin-top: 10px;
+ position: relative;
+ max-width: 100%;
+ height: auto;
+ min-height: 48px;
+ line-height: 1.5em;
+ word-break: break-all;
+ background-color: #323232;
+ padding: 10px 25px;
+ font-size: 1.1rem;
+ font-weight: 300;
+ color: #fff;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-justify-content: space-between;
+ -ms-flex-pack: justify;
+ 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 {
+ position: relative;
+ overflow-x: auto;
+ overflow-y: hidden;
+ height: 48px;
+ width: 100%;
+ background-color: #fff;
+ margin: 0 auto;
+ white-space: nowrap;
+}
+
+.tabs.tabs-transparent {
+ background-color: transparent;
+}
+
+.tabs.tabs-transparent .tab a,
+.tabs.tabs-transparent .tab.disabled a,
+.tabs.tabs-transparent .tab.disabled a:hover {
+ color: rgba(255, 255, 255, 0.7);
+}
+
+.tabs.tabs-transparent .tab a:hover,
+.tabs.tabs-transparent .tab a.active {
+ color: #fff;
+}
+
+.tabs.tabs-transparent .indicator {
+ background-color: #fff;
+}
+
+.tabs.tabs-fixed-width {
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+
+.tabs.tabs-fixed-width .tab {
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+}
+
+.tabs .tab {
+ display: inline-block;
+ text-align: center;
+ line-height: 48px;
+ height: 48px;
+ padding: 0;
+ margin: 0;
+ text-transform: uppercase;
+}
+
+.tabs .tab a {
+ color: rgba(238, 110, 115, 0.7);
+ display: block;
+ width: 100%;
+ height: 100%;
+ padding: 0 24px;
+ font-size: 14px;
+ text-overflow: ellipsis;
+ overflow: hidden;
+ transition: color .28s ease;
+}
+
+.tabs .tab a:hover, .tabs .tab a.active {
+ background-color: transparent;
+ color: #ee6e73;
+}
+
+.tabs .tab.disabled a,
+.tabs .tab.disabled a:hover {
+ color: rgba(238, 110, 115, 0.7);
+ cursor: default;
+}
+
+.tabs .indicator {
+ position: absolute;
+ bottom: 0;
+ height: 2px;
+ background-color: #f6b2b5;
+ will-change: left, right;
+}
+
+@media only screen and (max-width: 992px) {
+ .tabs {
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ }
+ .tabs .tab {
+ -webkit-flex-grow: 1;
+ -ms-flex-positive: 1;
+ flex-grow: 1;
+ }
+ .tabs .tab a {
+ padding: 0 12px;
+ }
+}
+
+.material-tooltip {
+ padding: 10px 8px;
+ font-size: 1rem;
+ z-index: 2000;
+ background-color: transparent;
+ border-radius: 2px;
+ color: #fff;
+ min-height: 36px;
+ line-height: 120%;
+ opacity: 0;
+ position: absolute;
+ text-align: center;
+ max-width: calc(100% - 4px);
+ overflow: hidden;
+ left: 0;
+ top: 0;
+ pointer-events: none;
+ visibility: hidden;
+}
+
+.backdrop {
+ position: absolute;
+ opacity: 0;
+ height: 7px;
+ width: 14px;
+ border-radius: 0 0 50% 50%;
+ background-color: #323232;
+ z-index: -1;
+ -webkit-transform-origin: 50% 0%;
+ transform-origin: 50% 0%;
+ visibility: hidden;
+}
+
+.btn, .btn-large,
+.btn-flat {
+ border: none;
+ border-radius: 2px;
+ display: inline-block;
+ height: 36px;
+ line-height: 36px;
+ 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-flat.disabled,
+.btn:disabled,
+.btn-large:disabled,
+.btn-floating:disabled,
+.btn-large:disabled,
+.btn-flat:disabled,
+.btn[disabled],
+[disabled].btn-large,
+.btn-floating[disabled],
+.btn-large[disabled],
+.btn-flat[disabled] {
+ pointer-events: none;
+ background-color: #DFDFDF !important;
+ box-shadow: none;
+ color: #9F9F9F !important;
+ cursor: default;
+}
+
+.btn.disabled:hover, .disabled.btn-large:hover,
+.btn-floating.disabled:hover,
+.btn-large.disabled:hover,
+.btn-flat.disabled:hover,
+.btn:disabled:hover,
+.btn-large:disabled:hover,
+.btn-floating:disabled:hover,
+.btn-large:disabled:hover,
+.btn-flat:disabled:hover,
+.btn[disabled]:hover,
+[disabled].btn-large:hover,
+.btn-floating[disabled]:hover,
+.btn-large[disabled]:hover,
+.btn-flat[disabled]:hover {
+ background-color: #DFDFDF !important;
+ color: #9F9F9F !important;
+}
+
+.btn, .btn-large,
+.btn-floating,
+.btn-large,
+.btn-flat {
+ font-size: 1rem;
+ outline: 0;
+}
+
+.btn i, .btn-large i,
+.btn-floating i,
+.btn-large i,
+.btn-flat i {
+ font-size: 1.3rem;
+ line-height: inherit;
+}
+
+.btn:focus, .btn-large:focus,
+.btn-floating:focus {
+ background-color: #1d7d74;
+}
+
+.btn, .btn-large {
+ text-decoration: none;
+ color: #fff;
+ background-color: #26a69a;
+ text-align: center;
+ letter-spacing: .5px;
+ 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: 40px;
+ height: 40px;
+ line-height: 40px;
+ padding: 0;
+ background-color: #26a69a;
+ border-radius: 50%;
+ transition: .3s;
+ cursor: pointer;
+ vertical-align: middle;
+}
+
+.btn-floating:hover {
+ background-color: #26a69a;
+}
+
+.btn-floating:before {
+ border-radius: 0;
+}
+
+.btn-floating.btn-large {
+ width: 56px;
+ height: 56px;
+}
+
+.btn-floating.btn-large.halfway-fab {
+ bottom: -28px;
+}
+
+.btn-floating.btn-large i {
+ line-height: 56px;
+}
+
+.btn-floating.halfway-fab {
+ position: absolute;
+ right: 24px;
+ bottom: -20px;
+}
+
+.btn-floating.halfway-fab.left {
+ right: auto;
+ left: 24px;
+}
+
+.btn-floating i {
+ width: inherit;
+ display: inline-block;
+ text-align: center;
+ color: #fff;
+ font-size: 1.6rem;
+ line-height: 40px;
+}
+
+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.active ul {
+ visibility: visible;
+}
+
+.fixed-action-btn.horizontal {
+ padding: 0 0 0 15px;
+}
+
+.fixed-action-btn.horizontal ul {
+ text-align: right;
+ right: 64px;
+ top: 50%;
+ -webkit-transform: translateY(-50%);
+ transform: translateY(-50%);
+ height: 100%;
+ left: auto;
+ width: 500px;
+ /*width 100% only goes to width of button container */
+}
+
+.fixed-action-btn.horizontal ul li {
+ display: inline-block;
+ margin: 15px 15px 0 0;
+}
+
+.fixed-action-btn.toolbar {
+ padding: 0;
+ height: 56px;
+}
+
+.fixed-action-btn.toolbar.active > a i {
+ opacity: 0;
+}
+
+.fixed-action-btn.toolbar ul {
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ top: 0;
+ bottom: 0;
+}
+
+.fixed-action-btn.toolbar ul li {
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ display: inline-block;
+ margin: 0;
+ height: 100%;
+ transition: none;
+}
+
+.fixed-action-btn.toolbar ul li a {
+ display: block;
+ overflow: hidden;
+ position: relative;
+ width: 100%;
+ height: 100%;
+ background-color: transparent;
+ box-shadow: none;
+ color: #fff;
+ line-height: 56px;
+ z-index: 1;
+}
+
+.fixed-action-btn.toolbar ul li a i {
+ line-height: inherit;
+}
+
+.fixed-action-btn ul {
+ left: 0;
+ right: 0;
+ text-align: center;
+ position: absolute;
+ bottom: 64px;
+ margin: 0;
+ visibility: hidden;
+}
+
+.fixed-action-btn ul li {
+ margin-bottom: 15px;
+}
+
+.fixed-action-btn ul a.btn-floating {
+ opacity: 0;
+}
+
+.fixed-action-btn .fab-backdrop {
+ position: absolute;
+ top: 0;
+ left: 0;
+ z-index: -1;
+ width: 40px;
+ height: 40px;
+ background-color: #26a69a;
+ border-radius: 50%;
+ -webkit-transform: scale(0);
+ transform: scale(0);
+}
+
+.btn-flat {
+ box-shadow: none;
+ background-color: transparent;
+ color: #343434;
+ cursor: pointer;
+ transition: background-color .2s;
+}
+
+.btn-flat:focus, .btn-flat:active {
+ background-color: transparent;
+}
+
+.btn-flat:focus, .btn-flat:hover {
+ background-color: rgba(0, 0, 0, 0.1);
+ box-shadow: none;
+}
+
+.btn-flat:active {
+ background-color: rgba(0, 0, 0, 0.2);
+}
+
+.btn-flat.disabled {
+ background-color: transparent !important;
+ color: #b3b3b3 !important;
+ cursor: default;
+}
+
+.btn-large {
+ height: 54px;
+ line-height: 54px;
+}
+
+.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;
+ min-height: 50px;
+ line-height: 1.5rem;
+ width: 100%;
+ text-align: left;
+ text-transform: none;
+}
+
+.dropdown-content li:hover, .dropdown-content li.active, .dropdown-content li.selected {
+ background-color: #eee;
+}
+
+.dropdown-content li.active.selected {
+ background-color: #e1e1e1;
+}
+
+.dropdown-content li.divider {
+ min-height: 0;
+ height: 1px;
+}
+
+.dropdown-content li > a, .dropdown-content li > span {
+ font-size: 16px;
+ color: #26a69a;
+ display: block;
+ line-height: 22px;
+ padding: 14px 16px;
+}
+
+.dropdown-content li > span > label {
+ top: 1px;
+ left: 0;
+ height: 18px;
+}
+
+.dropdown-content li > a > i {
+ height: inherit;
+ line-height: inherit;
+ float: left;
+ margin: 0 24px 0 0;
+ width: 24px;
+}
+
+.input-field.col .dropdown-content [type="checkbox"] + label {
+ top: 1px;
+ left: 0;
+ height: 18px;
+}
+
+/*!
+ * Waves v0.6.0
+ * http://fian.my.id/Waves
+ *
+ * Copyright 2014 Alfiana E. Sibuea and other contributors
+ * Released under the MIT license
+ * https://github.com/fians/Waves/blob/master/LICENSE
+ */
+.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;
+ transition: .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);
+ transition: all 0.7s ease-out;
+ transition-property: opacity, -webkit-transform;
+ transition-property: transform, opacity;
+ transition-property: transform, opacity, -webkit-transform;
+ -webkit-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-effect input[type="button"], .waves-effect input[type="reset"], .waves-effect input[type="submit"] {
+ border: 0;
+ font-style: normal;
+ font-size: inherit;
+ text-transform: inherit;
+ background: none;
+}
+
+.waves-effect img {
+ position: relative;
+ z-index: -1;
+}
+
+.waves-notransition {
+ transition: none !important;
+}
+
+.waves-circle {
+ -webkit-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;
+}
+
+/* Firefox Bug: link not triggered */
+.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;
+}
+
+.modal-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;
+ box-sizing: border-box;
+ padding: 2rem;
+}
+
+.side-nav .collapsible,
+.side-nav.fixed .collapsible {
+ border: none;
+ box-shadow: none;
+}
+
+.side-nav .collapsible li,
+.side-nav.fixed .collapsible li {
+ padding: 0;
+}
+
+.side-nav .collapsible-header,
+.side-nav.fixed .collapsible-header {
+ background-color: transparent;
+ border: none;
+ line-height: inherit;
+ height: inherit;
+ padding: 0 16px;
+}
+
+.side-nav .collapsible-header:hover,
+.side-nav.fixed .collapsible-header:hover {
+ background-color: rgba(0, 0, 0, 0.05);
+}
+
+.side-nav .collapsible-header i,
+.side-nav.fixed .collapsible-header i {
+ line-height: inherit;
+}
+
+.side-nav .collapsible-body,
+.side-nav.fixed .collapsible-body {
+ border: 0;
+ background-color: #fff;
+}
+
+.side-nav .collapsible-body li a,
+.side-nav.fixed .collapsible-body li a {
+ padding: 0 23.5px 0 31px;
+}
+
+.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 0.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;
+ margin-bottom: 5px;
+ margin-right: 5px;
+}
+
+.chip > img {
+ float: left;
+ margin: 0 8px 0 -12px;
+ height: 32px;
+ width: 32px;
+ border-radius: 50%;
+}
+
+.chip .close {
+ cursor: pointer;
+ float: right;
+ font-size: 16px;
+ line-height: 32px;
+ padding-left: 8px;
+}
+
+.chips {
+ border: none;
+ border-bottom: 1px solid #9e9e9e;
+ box-shadow: none;
+ margin: 0 0 20px 0;
+ min-height: 45px;
+ outline: none;
+ transition: all .3s;
+}
+
+.chips.focus {
+ border-bottom: 1px solid #26a69a;
+ box-shadow: 0 1px 0 0 #26a69a;
+}
+
+.chips:hover {
+ cursor: text;
+}
+
+.chips .chip.selected {
+ background-color: #26a69a;
+ color: #fff;
+}
+
+.chips .input {
+ background: none;
+ border: 0;
+ color: rgba(0, 0, 0, 0.6);
+ display: inline-block;
+ font-size: 1rem;
+ height: 3rem;
+ line-height: 32px;
+ outline: 0;
+ margin: 0;
+ padding: 0 !important;
+ width: 120px !important;
+}
+
+.chips .input:focus {
+ border: 0 !important;
+ box-shadow: none !important;
+}
+
+.chips .autocomplete-content {
+ margin-top: 0;
+}
+
+.prefix ~ .chips {
+ margin-left: 3rem;
+ width: 92%;
+ width: calc(100% - 3rem);
+}
+
+.chips:empty ~ label {
+ font-size: 0.8rem;
+ -webkit-transform: translateY(-140%);
+ transform: translateY(-140%);
+}
+
+.materialboxed {
+ display: block;
+ cursor: -webkit-zoom-in;
+ cursor: zoom-in;
+ position: relative;
+ transition: opacity .4s;
+ -webkit-backface-visibility: hidden;
+}
+
+.materialboxed:hover:not(.active) {
+ opacity: .8;
+}
+
+.materialboxed.active {
+ cursor: -webkit-zoom-out;
+ cursor: zoom-out;
+}
+
+#materialbox-overlay {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ background-color: #292929;
+ z-index: 1000;
+ will-change: opacity;
+}
+
+.materialbox-caption {
+ position: fixed;
+ display: none;
+ color: #fff;
+ line-height: 50px;
+ bottom: 0;
+ left: 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;
+}
+
+/* Text Inputs + Textarea
+ ========================================================================== */
+/* Style Placeholders */
+::-webkit-input-placeholder {
+ color: #d1d1d1;
+}
+
+:-moz-placeholder {
+ /* Firefox 18- */
+ color: #d1d1d1;
+}
+
+::-moz-placeholder {
+ /* Firefox 19+ */
+ color: #d1d1d1;
+}
+
+:-ms-input-placeholder {
+ color: #d1d1d1;
+}
+
+/* Text inputs */
+input:not([type]),
+input[type=text],
+input[type=password],
+input[type=email],
+input[type=url],
+input[type=time],
+input[type=date],
+input[type=datetime],
+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 20px 0;
+ padding: 0;
+ box-shadow: none;
+ box-sizing: content-box;
+ transition: all 0.3s;
+}
+
+input:not([type]):disabled, input:not([type])[readonly="readonly"],
+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]:disabled,
+input[type=datetime][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:not([type]):disabled + label,
+input:not([type])[readonly="readonly"] + label,
+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]:disabled + label,
+input[type=datetime][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:not([type]):focus:not([readonly]),
+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]: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:not([type]):focus:not([readonly]) + label,
+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]: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:not([type]).valid, input:not([type]):focus.valid,
+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].valid,
+input[type=datetime]: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:not([type]).valid + label:after,
+input:not([type]):focus.valid + label:after,
+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].valid + label:after,
+input[type=datetime]: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:not([type]).invalid, input:not([type]):focus.invalid,
+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].invalid,
+input[type=datetime]: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:not([type]).invalid + label:after,
+input:not([type]):focus.invalid + label:after,
+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].invalid + label:after,
+input[type=datetime]: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:not([type]).validate + label,
+input[type=text].validate + label,
+input[type=password].validate + label,
+input[type=email].validate + label,
+input[type=url].validate + label,
+input[type=time].validate + label,
+input[type=date].validate + label,
+input[type=datetime].validate + label,
+input[type=datetime-local].validate + label,
+input[type=tel].validate + label,
+input[type=number].validate + label,
+input[type=search].validate + label,
+textarea.materialize-textarea.validate + label {
+ width: 100%;
+ pointer-events: none;
+}
+
+input:not([type]) + label:after,
+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] + 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: 60px;
+ opacity: 0;
+ transition: .2s opacity ease-out, .2s color ease-out;
+}
+
+.input-field {
+ position: relative;
+ margin-top: 1rem;
+}
+
+.input-field.inline {
+ display: inline-block;
+ vertical-align: middle;
+ margin-left: 5px;
+}
+
+.input-field.inline input,
+.input-field.inline .select-dropdown {
+ margin-bottom: 1rem;
+}
+
+.input-field.col label {
+ left: 0.75rem;
+}
+
+.input-field.col .prefix ~ label,
+.input-field.col .prefix ~ .validate ~ label {
+ width: calc(100% - 3rem - 1.5rem);
+}
+
+.input-field label {
+ color: #9e9e9e;
+ position: absolute;
+ top: 0.8rem;
+ left: 0;
+ font-size: 1rem;
+ cursor: text;
+ transition: .2s ease-out;
+ text-align: initial;
+}
+
+.input-field label:not(.label-icon).active {
+ font-size: 0.8rem;
+ -webkit-transform: translateY(-140%);
+ transform: translateY(-140%);
+}
+
+.input-field .prefix {
+ position: absolute;
+ width: 3rem;
+ font-size: 2rem;
+ transition: color .2s;
+}
+
+.input-field .prefix.active {
+ color: #26a69a;
+}
+
+.input-field .prefix ~ input,
+.input-field .prefix ~ textarea,
+.input-field .prefix ~ label,
+.input-field .prefix ~ .validate ~ label,
+.input-field .prefix ~ .autocomplete-content {
+ margin-left: 3rem;
+ width: 92%;
+ width: calc(100% - 3rem);
+}
+
+.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);
+ }
+}
+
+/* Search Field */
+.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 */
+textarea {
+ width: 100%;
+ height: 3rem;
+ background-color: transparent;
+}
+
+textarea.materialize-textarea {
+ overflow-y: hidden;
+ /* prevents scroll bar flash */
+ padding: .8rem 0 1.6rem 0;
+ /* prevents text jump on Enter keypress */
+ resize: none;
+ min-height: 3rem;
+}
+
+.hiddendiv {
+ display: none;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+ overflow-wrap: break-word;
+ /* future version of deprecated 'word-wrap' */
+ padding-top: 1.2rem;
+ /* prevents text jump on Enter keypress */
+ position: absolute;
+ top: 0;
+}
+
+/* Autocomplete */
+.autocomplete-content {
+ margin-top: -20px;
+ display: block;
+ opacity: 1;
+ position: static;
+}
+
+.autocomplete-content li .highlight {
+ color: #444;
+}
+
+.autocomplete-content li img {
+ height: 40px;
+ width: 40px;
+ margin: 5px 15px;
+}
+
+/* Radio Buttons
+ ========================================================================== */
+[type="radio"]:not(:checked),
+[type="radio"]:checked {
+ position: absolute;
+ left: -9999px;
+ opacity: 0;
+}
+
+[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;
+ transition: .28s ease;
+ /* webkit (konqueror) browsers */
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ 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;
+ transition: .28s ease;
+}
+
+/* Unchecked styles */
+[type="radio"]:not(:checked) + label:before,
+[type="radio"]:not(:checked) + label:after,
+[type="radio"]:checked + label:before,
+[type="radio"]:checked + label:after,
+[type="radio"].with-gap:checked + label:before,
+[type="radio"].with-gap:checked + label:after {
+ border-radius: 50%;
+}
+
+[type="radio"]:not(:checked) + label:before,
+[type="radio"]:not(:checked) + label:after {
+ border: 2px solid #5a5a5a;
+}
+
+[type="radio"]:not(:checked) + label:after {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+}
+
+/* Checked styles */
+[type="radio"]:checked + label:before {
+ border: 2px solid transparent;
+}
+
+[type="radio"]:checked + label:after,
+[type="radio"].with-gap:checked + label:before,
+[type="radio"].with-gap:checked + label:after {
+ border: 2px solid #26a69a;
+}
+
+[type="radio"]:checked + label:after,
+[type="radio"].with-gap:checked + label:after {
+ background-color: #26a69a;
+}
+
+[type="radio"]:checked + label:after {
+ -webkit-transform: scale(1.02);
+ transform: scale(1.02);
+}
+
+/* Radio With gap */
+[type="radio"].with-gap:checked + label:after {
+ -webkit-transform: scale(0.5);
+ transform: scale(0.5);
+}
+
+/* Focused styles */
+[type="radio"].tabbed:focus + label:before {
+ box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);
+}
+
+/* Disabled Radio With gap */
+[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);
+}
+
+/* Disabled style */
+[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;
+}
+
+/* Checkboxes
+ ========================================================================== */
+/* CUSTOM CSS CHECKBOXES */
+form p {
+ margin-bottom: 10px;
+ text-align: left;
+}
+
+form p:last-child {
+ margin-bottom: 0;
+}
+
+/* Remove default checkbox */
+[type="checkbox"]:not(:checked),
+[type="checkbox"]:checked {
+ position: absolute;
+ left: -9999px;
+ opacity: 0;
+}
+
+[type="checkbox"] {
+ /* checkbox aspect */
+}
+
+[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;
+ /* webkit (safari, chrome) browsers */
+ -moz-user-select: none;
+ /* mozilla browsers */
+ -khtml-user-select: none;
+ /* webkit (konqueror) browsers */
+ -ms-user-select: none;
+ /* IE10+ */
+}
+
+[type="checkbox"] + label:before,
+[type="checkbox"]:not(.filled-in) + label:after {
+ content: '';
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 18px;
+ height: 18px;
+ z-index: 0;
+ border: 2px solid #5a5a5a;
+ border-radius: 1px;
+ margin-top: 2px;
+ transition: .2s;
+}
+
+[type="checkbox"]:not(.filled-in) + label:after {
+ border: 0;
+ -webkit-transform: scale(0);
+ transform: scale(0);
+}
+
+[type="checkbox"]:not(:checked):disabled + label:before {
+ border: none;
+ background-color: rgba(0, 0, 0, 0.26);
+}
+
+[type="checkbox"].tabbed:focus + label:after {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ border: 0;
+ border-radius: 50%;
+ box-shadow: 0 0 0 10px rgba(0, 0, 0, 0.1);
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
+[type="checkbox"]:checked + label:before {
+ top: -4px;
+ left: -5px;
+ 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);
+ transform: rotate(40deg);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-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);
+}
+
+/* Indeterminate checkbox */
+[type="checkbox"]:indeterminate + label:before {
+ top: -11px;
+ left: -12px;
+ width: 10px;
+ height: 22px;
+ border-top: none;
+ border-left: none;
+ border-right: 2px solid #26a69a;
+ border-bottom: none;
+ -webkit-transform: rotate(90deg);
+ transform: rotate(90deg);
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-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;
+ /* .1s delay is for check animation */
+ transition: border .25s, background-color .25s, width .20s .1s, height .20s .1s, top .20s .1s, left .20s .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: 0;
+ width: 20px;
+ height: 20px;
+ border: 2px solid #26a69a;
+ background-color: #26a69a;
+ z-index: 0;
+}
+
+[type="checkbox"].filled-in.tabbed:focus + label:after {
+ border-radius: 2px;
+ border-color: #5a5a5a;
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
+[type="checkbox"].filled-in.tabbed:checked:focus + label:after {
+ border-radius: 2px;
+ background-color: #26a69a;
+ border-color: #26a69a;
+}
+
+[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,
+.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;
+ left: 24px;
+}
+
+.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,
+input[type=checkbox]:checked:not(:disabled).tabbed:focus ~ .lever::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,
+input[type=checkbox]:not(:disabled).tabbed:focus ~ .lever::after {
+ box-shadow: 0 1px 3px 1px rgba(0, 0, 0, 0.4), 0 0 0 15px rgba(0, 0, 0, 0.08);
+}
+
+.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 Field
+ ========================================================================== */
+select {
+ display: none;
+}
+
+select.browser-default {
+ display: block;
+}
+
+select {
+ background-color: rgba(255, 255, 255, 0.9);
+ width: 100%;
+ padding: 5px;
+ border: 1px solid #f2f2f2;
+ border-radius: 2px;
+ height: 3rem;
+}
+
+.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 20px 0;
+ padding: 0;
+ display: block;
+}
+
+.select-wrapper span.caret {
+ color: initial;
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ height: 10px;
+ margin: auto 0;
+ font-size: 10px;
+ line-height: 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: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;
+ /* webkit (safari, chrome) browsers */
+ -moz-user-select: none;
+ /* mozilla browsers */
+ -ms-user-select: none;
+ /* IE10+ */
+ border-bottom: 1px solid rgba(0, 0, 0, 0.3);
+}
+
+.select-wrapper i {
+ color: rgba(0, 0, 0, 0.3);
+}
+
+.select-dropdown li.disabled,
+.select-dropdown li.disabled > span,
+.select-dropdown li.optgroup {
+ color: rgba(0, 0, 0, 0.3);
+ background-color: transparent;
+}
+
+.prefix ~ .select-wrapper {
+ margin-left: 3rem;
+ width: 92%;
+ width: calc(100% - 3rem);
+}
+
+.prefix ~ label {
+ margin-left: 3rem;
+}
+
+.select-dropdown li img {
+ height: 40px;
+ width: 40px;
+ margin: 5px 15px;
+ float: right;
+}
+
+.select-dropdown li.optgroup {
+ border-top: 1px solid #eee;
+}
+
+.select-dropdown li.optgroup.selected > span {
+ color: rgba(0, 0, 0, 0.7);
+}
+
+.select-dropdown li.optgroup > span {
+ color: rgba(0, 0, 0, 0.4);
+}
+
+.select-dropdown li.optgroup ~ li.optgroup-option {
+ padding-left: 1rem;
+}
+
+/* File Input
+ ========================================================================== */
+.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
+ ========================================================================== */
+.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 0;
+ padding: 0;
+}
+
+input[type=range]:focus {
+ outline: none;
+}
+
+input[type=range] + .thumb {
+ position: absolute;
+ top: 10px;
+ left: 0;
+ border: none;
+ height: 0;
+ width: 0;
+ border-radius: 50%;
+ background-color: #26a69a;
+ margin-left: 7px;
+ -webkit-transform-origin: 50% 50%;
+ transform-origin: 50% 50%;
+ -webkit-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);
+ 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] {
+ -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;
+ -webkit-transform-origin: 50% 50%;
+ transform-origin: 50% 50%;
+ margin: -5px 0 0 0;
+ transition: .3s;
+}
+
+input[type=range]:focus::-webkit-slider-runnable-track {
+ background: #ccc;
+}
+
+input[type=range] {
+ /* fix for FF unable to apply focus style bug */
+ border: 1px solid white;
+ /*required for proper track sizing in FF*/
+}
+
+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 #fff;
+ 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;
+ /*remove default tick marks*/
+ 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;
+}
+
+/***************
+ Nav List
+***************/
+.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 #ee6e73;
+}
+
+.table-of-contents a.active {
+ font-weight: 500;
+ padding-left: 18px;
+ border-left: 2px solid #ee6e73;
+}
+
+.side-nav {
+ position: fixed;
+ width: 300px;
+ left: 0;
+ top: 0;
+ margin: 0;
+ -webkit-transform: translateX(-100%);
+ transform: translateX(-100%);
+ height: 100%;
+ height: calc(100% + 60px);
+ height: -moz-calc(100%);
+ padding-bottom: 60px;
+ background-color: #fff;
+ z-index: 999;
+ overflow-y: auto;
+ will-change: transform;
+ -webkit-backface-visibility: hidden;
+ backface-visibility: hidden;
+ -webkit-transform: translateX(-105%);
+ transform: translateX(-105%);
+}
+
+.side-nav.right-aligned {
+ right: 0;
+ -webkit-transform: translateX(105%);
+ transform: translateX(105%);
+ left: auto;
+ -webkit-transform: translateX(100%);
+ transform: translateX(100%);
+}
+
+.side-nav .collapsible {
+ margin: 0;
+}
+
+.side-nav li {
+ float: none;
+ line-height: 48px;
+}
+
+.side-nav li.active {
+ background-color: rgba(0, 0, 0, 0.05);
+}
+
+.side-nav li > a {
+ color: rgba(0, 0, 0, 0.87);
+ display: block;
+ font-size: 14px;
+ font-weight: 500;
+ height: 48px;
+ line-height: 48px;
+ padding: 0 32px;
+}
+
+.side-nav li > a:hover {
+ background-color: rgba(0, 0, 0, 0.05);
+}
+
+.side-nav li > a.btn, .side-nav li > a.btn-large, .side-nav li > a.btn-large, .side-nav li > a.btn-flat, .side-nav li > a.btn-floating {
+ margin: 10px 15px;
+}
+
+.side-nav li > a.btn, .side-nav li > a.btn-large, .side-nav li > a.btn-large, .side-nav li > a.btn-floating {
+ color: #fff;
+}
+
+.side-nav li > a.btn-flat {
+ color: #343434;
+}
+
+.side-nav li > a.btn:hover, .side-nav li > a.btn-large:hover, .side-nav li > a.btn-large:hover {
+ background-color: #2bbbad;
+}
+
+.side-nav li > a.btn-floating:hover {
+ background-color: #26a69a;
+}
+
+.side-nav li > a > i,
+.side-nav li > a > [class^="mdi-"], .side-nav li > a li > a > [class*="mdi-"],
+.side-nav li > a > i.material-icons {
+ float: left;
+ height: 48px;
+ line-height: 48px;
+ margin: 0 32px 0 0;
+ width: 24px;
+ color: rgba(0, 0, 0, 0.54);
+}
+
+.side-nav .divider {
+ margin: 8px 0 0 0;
+}
+
+.side-nav .subheader {
+ cursor: initial;
+ pointer-events: none;
+ color: rgba(0, 0, 0, 0.54);
+ font-size: 14px;
+ font-weight: 500;
+ line-height: 48px;
+}
+
+.side-nav .subheader:hover {
+ background-color: transparent;
+}
+
+.side-nav .userView {
+ position: relative;
+ padding: 32px 32px 0;
+ margin-bottom: 8px;
+}
+
+.side-nav .userView > a {
+ height: auto;
+ padding: 0;
+}
+
+.side-nav .userView > a:hover {
+ background-color: transparent;
+}
+
+.side-nav .userView .background {
+ overflow: hidden;
+ position: absolute;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: -1;
+}
+
+.side-nav .userView .circle, .side-nav .userView .name, .side-nav .userView .email {
+ display: block;
+}
+
+.side-nav .userView .circle {
+ height: 64px;
+ width: 64px;
+}
+
+.side-nav .userView .name,
+.side-nav .userView .email {
+ font-size: 14px;
+ line-height: 24px;
+}
+
+.side-nav .userView .name {
+ margin-top: 16px;
+ font-weight: 500;
+}
+
+.side-nav .userView .email {
+ padding-bottom: 16px;
+ font-weight: 400;
+}
+
+.drag-target {
+ height: 100%;
+ width: 10px;
+ position: fixed;
+ top: 0;
+ z-index: 998;
+}
+
+.side-nav.fixed {
+ left: 0;
+ -webkit-transform: translateX(0);
+ transform: translateX(0);
+ position: fixed;
+}
+
+.side-nav.fixed.right-aligned {
+ right: 0;
+ left: auto;
+}
+
+@media only screen and (max-width: 992px) {
+ .side-nav.fixed {
+ -webkit-transform: translateX(-105%);
+ transform: translateX(-105%);
+ }
+ .side-nav.fixed.right-aligned {
+ -webkit-transform: translateX(105%);
+ transform: translateX(105%);
+ }
+ .side-nav a {
+ padding: 0 16px;
+ }
+ .side-nav .userView {
+ padding: 16px 16px 0;
+ }
+}
+
+.side-nav .collapsible-body > ul:not(.collapsible) > li.active,
+.side-nav.fixed .collapsible-body > ul:not(.collapsible) > li.active {
+ background-color: #ee6e73;
+}
+
+.side-nav .collapsible-body > ul:not(.collapsible) > li.active a,
+.side-nav.fixed .collapsible-body > ul:not(.collapsible) > li.active a {
+ color: #fff;
+}
+
+.side-nav .collapsible-body {
+ padding: 0;
+}
+
+#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;
+}
+
+/*
+ @license
+ Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+ This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+ The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+ The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+ Code distributed by Google as part of the polymer project is also
+ subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+ */
+/**************************/
+/* STYLES FOR THE SPINNER */
+/**************************/
+/*
+ * Constants:
+ * STROKEWIDTH = 3px
+ * ARCSIZE = 270 degrees (amount of circle the arc takes up)
+ * ARCTIME = 1333ms (time it takes to expand and contract arc)
+ * ARCSTARTROT = 216 degrees (how much the start location of the arc
+ * should rotate each time, 216 gives us a
+ * 5 pointed star shape (it's 360/5 * 3).
+ * For a 7 pointed star, we might do
+ * 360/7 * 3 = 154.286)
+ * CONTAINERWIDTH = 28px
+ * SHRINK_TIME = 400ms
+ */
+.preloader-wrapper {
+ display: inline-block;
+ position: relative;
+ width: 50px;
+ height: 50px;
+}
+
+.preloader-wrapper.small {
+ width: 36px;
+ height: 36px;
+}
+
+.preloader-wrapper.big {
+ width: 64px;
+ height: 64px;
+}
+
+.preloader-wrapper.active {
+ /* duration: 360 * ARCTIME / (ARCSTARTROT + (360-ARCSIZE)) */
+ -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 {
+ -webkit-transform: rotate(360deg);
+ 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;
+}
+
+/**
+ * IMPORTANT NOTE ABOUT CSS ANIMATION PROPERTIES (keanulee):
+ *
+ * iOS Safari (tested on iOS 8.1) does not handle animation-delay very well - it doesn't
+ * guarantee that the animation will start _exactly_ after that value. So we avoid using
+ * animation-delay and instead set custom keyframes for each color (as redundant as it
+ * seems).
+ *
+ * We write out each animation in full (instead of separating animation-name,
+ * animation-duration, etc.) because under the polyfill, Safari does not recognize those
+ * specific properties properly, treats them as -webkit-animation, and overrides the
+ * other animation rules. See https://github.com/Polymer/platform/issues/53.
+ */
+.active .spinner-layer.spinner-blue {
+ /* durations: 4 * ARCTIME */
+ -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 {
+ /* durations: 4 * ARCTIME */
+ -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 {
+ /* durations: 4 * ARCTIME */
+ -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 {
+ /* durations: 4 * ARCTIME */
+ -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 {
+ /* durations: 4 * ARCTIME */
+ 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);
+ }
+ /* 0.5 * ARCSIZE */
+ 25% {
+ -webkit-transform: rotate(270deg);
+ }
+ /* 1 * ARCSIZE */
+ 37.5% {
+ -webkit-transform: rotate(405deg);
+ }
+ /* 1.5 * ARCSIZE */
+ 50% {
+ -webkit-transform: rotate(540deg);
+ }
+ /* 2 * ARCSIZE */
+ 62.5% {
+ -webkit-transform: rotate(675deg);
+ }
+ /* 2.5 * ARCSIZE */
+ 75% {
+ -webkit-transform: rotate(810deg);
+ }
+ /* 3 * ARCSIZE */
+ 87.5% {
+ -webkit-transform: rotate(945deg);
+ }
+ /* 3.5 * ARCSIZE */
+ to {
+ -webkit-transform: rotate(1080deg);
+ }
+ /* 4 * ARCSIZE */
+}
+
+@keyframes fill-unfill-rotate {
+ 12.5% {
+ -webkit-transform: rotate(135deg);
+ transform: rotate(135deg);
+ }
+ /* 0.5 * ARCSIZE */
+ 25% {
+ -webkit-transform: rotate(270deg);
+ transform: rotate(270deg);
+ }
+ /* 1 * ARCSIZE */
+ 37.5% {
+ -webkit-transform: rotate(405deg);
+ transform: rotate(405deg);
+ }
+ /* 1.5 * ARCSIZE */
+ 50% {
+ -webkit-transform: rotate(540deg);
+ transform: rotate(540deg);
+ }
+ /* 2 * ARCSIZE */
+ 62.5% {
+ -webkit-transform: rotate(675deg);
+ transform: rotate(675deg);
+ }
+ /* 2.5 * ARCSIZE */
+ 75% {
+ -webkit-transform: rotate(810deg);
+ transform: rotate(810deg);
+ }
+ /* 3 * ARCSIZE */
+ 87.5% {
+ -webkit-transform: rotate(945deg);
+ transform: rotate(945deg);
+ }
+ /* 3.5 * ARCSIZE */
+ to {
+ -webkit-transform: rotate(1080deg);
+ transform: rotate(1080deg);
+ }
+ /* 4 * ARCSIZE */
+}
+
+@-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;
+ }
+}
+
+/**
+ * Patch the gap that appear between the two adjacent div.circle-clipper while the
+ * spinner is rotating (appears on Chrome 38, Safari 7.1, and IE 11).
+ */
+.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;
+ /* STROKEWIDTH */
+ 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 {
+ /* duration: ARCTIME */
+ -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 {
+ /* duration: ARCTIME */
+ -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 {
+ -webkit-transform: rotate(130deg);
+ transform: rotate(130deg);
+ }
+ 50% {
+ -webkit-transform: rotate(-5deg);
+ transform: rotate(-5deg);
+ }
+ to {
+ -webkit-transform: rotate(130deg);
+ 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 {
+ -webkit-transform: rotate(-130deg);
+ transform: rotate(-130deg);
+ }
+ 50% {
+ -webkit-transform: rotate(5deg);
+ transform: rotate(5deg);
+ }
+ to {
+ -webkit-transform: rotate(-130deg);
+ transform: rotate(-130deg);
+ }
+}
+
+#spinnerContainer.cooldown {
+ /* duration: SHRINK_TIME */
+ -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;
+ transition: background-color .3s;
+ border-radius: 50%;
+}
+
+.slider .indicators .indicator-item.active {
+ background-color: #4CAF50;
+}
+
+.carousel {
+ overflow: hidden;
+ position: relative;
+ width: 100%;
+ height: 400px;
+ -webkit-perspective: 500px;
+ perspective: 500px;
+ -webkit-transform-style: preserve-3d;
+ transform-style: preserve-3d;
+ -webkit-transform-origin: 0% 50%;
+ transform-origin: 0% 50%;
+}
+
+.carousel.carousel-slider {
+ top: 0;
+ left: 0;
+ height: 0;
+}
+
+.carousel.carousel-slider .carousel-fixed-item {
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 20px;
+ z-index: 1;
+}
+
+.carousel.carousel-slider .carousel-fixed-item.with-indicators {
+ bottom: 68px;
+}
+
+.carousel.carousel-slider .carousel-item {
+ width: 100%;
+ height: 100%;
+ min-height: 400px;
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+.carousel.carousel-slider .carousel-item h2 {
+ font-size: 24px;
+ font-weight: 500;
+ line-height: 32px;
+}
+
+.carousel.carousel-slider .carousel-item p {
+ font-size: 15px;
+}
+
+.carousel .carousel-item {
+ display: none;
+ width: 200px;
+ height: 200px;
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+
+.carousel .carousel-item > img {
+ width: 100%;
+}
+
+.carousel .indicators {
+ position: absolute;
+ text-align: center;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin: 0;
+}
+
+.carousel .indicators .indicator-item {
+ display: inline-block;
+ position: relative;
+ cursor: pointer;
+ height: 8px;
+ width: 8px;
+ margin: 24px 4px;
+ background-color: rgba(255, 255, 255, 0.5);
+ transition: background-color .3s;
+ border-radius: 50%;
+}
+
+.carousel .indicators .indicator-item.active {
+ background-color: #fff;
+}
+
+.carousel.scrolling .carousel-item .materialboxed,
+.carousel .carousel-item:not(.active) .materialboxed {
+ pointer-events: none;
+}
+
+.tap-target-wrapper {
+ width: 800px;
+ height: 800px;
+ position: fixed;
+ z-index: 1000;
+ visibility: hidden;
+ transition: visibility 0s .3s;
+}
+
+.tap-target-wrapper.open {
+ visibility: visible;
+ transition: visibility 0s;
+}
+
+.tap-target-wrapper.open .tap-target {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ opacity: .95;
+ transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+ transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+ transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+}
+
+.tap-target-wrapper.open .tap-target-wave::before {
+ -webkit-transform: scale(1);
+ transform: scale(1);
+}
+
+.tap-target-wrapper.open .tap-target-wave::after {
+ visibility: visible;
+ -webkit-animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;
+ animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;
+ transition: opacity .3s, visibility 0s 1s, -webkit-transform .3s;
+ transition: opacity .3s, transform .3s, visibility 0s 1s;
+ transition: opacity .3s, transform .3s, visibility 0s 1s, -webkit-transform .3s;
+}
+
+.tap-target {
+ position: absolute;
+ font-size: 1rem;
+ border-radius: 50%;
+ background-color: #ee6e73;
+ box-shadow: 0 20px 20px 0 rgba(0, 0, 0, 0.14), 0 10px 50px 0 rgba(0, 0, 0, 0.12), 0 30px 10px -20px rgba(0, 0, 0, 0.2);
+ width: 100%;
+ height: 100%;
+ opacity: 0;
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ transition: opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+ transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+ transition: transform 0.3s cubic-bezier(0.42, 0, 0.58, 1), opacity 0.3s cubic-bezier(0.42, 0, 0.58, 1), -webkit-transform 0.3s cubic-bezier(0.42, 0, 0.58, 1);
+}
+
+.tap-target-content {
+ position: relative;
+ display: table-cell;
+}
+
+.tap-target-wave {
+ position: absolute;
+ border-radius: 50%;
+ z-index: 10001;
+}
+
+.tap-target-wave::before, .tap-target-wave::after {
+ content: '';
+ display: block;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ border-radius: 50%;
+ background-color: #ffffff;
+}
+
+.tap-target-wave::before {
+ -webkit-transform: scale(0);
+ transform: scale(0);
+ transition: -webkit-transform .3s;
+ transition: transform .3s;
+ transition: transform .3s, -webkit-transform .3s;
+}
+
+.tap-target-wave::after {
+ visibility: hidden;
+ transition: opacity .3s, visibility 0s, -webkit-transform .3s;
+ transition: opacity .3s, transform .3s, visibility 0s;
+ transition: opacity .3s, transform .3s, visibility 0s, -webkit-transform .3s;
+ z-index: -1;
+}
+
+.tap-target-origin {
+ top: 50%;
+ left: 50%;
+ -webkit-transform: translate(-50%, -50%);
+ transform: translate(-50%, -50%);
+ z-index: 10002;
+ position: absolute !important;
+}
+
+.tap-target-origin:not(.btn):not(.btn-large), .tap-target-origin:not(.btn):not(.btn-large):hover {
+ background: none;
+}
+
+@media only screen and (max-width: 600px) {
+ .tap-target, .tap-target-wrapper {
+ width: 600px;
+ height: 600px;
+ }
+}
+
+.pulse {
+ overflow: initial;
+ position: relative;
+}
+
+.pulse::before {
+ content: '';
+ display: block;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ top: 0;
+ left: 0;
+ background-color: inherit;
+ border-radius: inherit;
+ transition: opacity .3s, -webkit-transform .3s;
+ transition: opacity .3s, transform .3s;
+ transition: opacity .3s, transform .3s, -webkit-transform .3s;
+ -webkit-animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;
+ animation: pulse-animation 1s cubic-bezier(0.24, 0, 0.38, 1) infinite;
+ z-index: -1;
+}
+
+@-webkit-keyframes pulse-animation {
+ 0% {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+ 50% {
+ opacity: 0;
+ -webkit-transform: scale(1.5);
+ transform: scale(1.5);
+ }
+ 100% {
+ opacity: 0;
+ -webkit-transform: scale(1.5);
+ transform: scale(1.5);
+ }
+}
+
+@keyframes pulse-animation {
+ 0% {
+ opacity: 1;
+ -webkit-transform: scale(1);
+ transform: scale(1);
+ }
+ 50% {
+ opacity: 0;
+ -webkit-transform: scale(1.5);
+ transform: scale(1.5);
+ }
+ 100% {
+ opacity: 0;
+ -webkit-transform: scale(1.5);
+ transform: scale(1.5);
+ }
+}
+
+/* ==========================================================================
+ $BASE-PICKER
+ ========================================================================== */
+/**
+ * Note: the root picker element should *NOT* be styled more than what's here.
+ */
+.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;
+}
+
+/**
+ * The picker input element.
+ */
+.picker__input {
+ cursor: default;
+}
+
+/**
+ * When the picker is opened, the input element is "activated".
+ */
+.picker__input.picker__input--active {
+ border-color: #0089ec;
+}
+
+/**
+ * The holder is the only "scrollable" top-level container element.
+ */
+.picker__holder {
+ width: 100%;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+/*!
+ * Default mobile-first, responsive styling for pickadate.js
+ * Demo: http://amsul.github.io/pickadate.js
+ */
+/**
+ * Note: the root picker element should *NOT* be styled more than what's here.
+ */
+/**
+ * Make the holder and frame fullscreen.
+ */
+.picker__holder,
+.picker__frame {
+ bottom: 0;
+ left: 0;
+ right: 0;
+ top: 100%;
+}
+
+/**
+ * The holder should overlay the entire screen.
+ */
+.picker__holder {
+ position: fixed;
+ transition: background 0.15s ease-out, top 0s 0.15s;
+ -webkit-backface-visibility: hidden;
+}
+
+/**
+ * The frame that bounds the box contents of the picker.
+ */
+.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;
+ 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%;
+ }
+}
+
+/**
+ * The wrapper sets the stage to vertically align the box contents.
+ */
+.picker__wrap {
+ display: table;
+ width: 100%;
+ height: 100%;
+}
+
+@media (min-height: 28.875em) {
+ .picker__wrap {
+ display: block;
+ }
+}
+
+/**
+ * The box contains all the picker contents.
+ */
+.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;
+ border-radius: 5px 5px 0 0;
+ box-shadow: 0 12px 36px 16px rgba(0, 0, 0, 0.24);
+ }
+}
+
+/**
+ * When the picker opens...
+ */
+.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);
+ 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: auto;
+ }
+}
+
+/**
+ * For `large` screens, transform into an inline picker.
+ */
+/* ==========================================================================
+ CUSTOM MATERIALIZE STYLES
+ ========================================================================== */
+.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;
+ }
+}
+
+/* ==========================================================================
+ $BASE-DATE-PICKER
+ ========================================================================== */
+/**
+ * The picker box.
+ */
+.picker__box {
+ padding: 0 1em;
+}
+
+/**
+ * The header containing the month and year stuff.
+ */
+.picker__header {
+ text-align: center;
+ position: relative;
+ margin-top: .75em;
+}
+
+/**
+ * The month and year labels.
+ */
+.picker__month,
+.picker__year {
+ display: inline-block;
+ margin-left: .25em;
+ margin-right: .25em;
+}
+
+/**
+ * The month and year selectors.
+ */
+.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: 26%;
+}
+
+.picker__select--month:focus,
+.picker__select--year:focus {
+ border-color: rgba(0, 0, 0, 0.05);
+}
+
+/**
+ * The month navigation buttons.
+ */
+.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;
+}
+
+/**
+ * The calendar table of dates
+ */
+.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;
+}
+
+/**
+ * The weekday labels
+ */
+.picker__weekday {
+ width: 14.285714286%;
+ font-size: .75em;
+ padding-bottom: .25em;
+ color: #999999;
+ font-weight: 500;
+ /* Increase the spacing a tad */
+}
+
+@media (min-height: 33.875em) {
+ .picker__weekday {
+ padding-bottom: .5em;
+ }
+}
+
+/**
+ * The days on the calendar
+ */
+.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(0.75);
+ transform: scale(0.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;
+}
+
+/**
+ * The footer containing the "today", "clear", and "close" buttons.
+ */
+.picker__footer {
+ text-align: center;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-justify-content: space-between;
+ -ms-flex-pack: justify;
+ 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;
+}
+
+/* ==========================================================================
+ CUSTOM MATERIALIZE STYLES
+ ========================================================================== */
+.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(0.9);
+ transform: scale(0.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;
+}
+
+/* ==========================================================================
+ $BASE-TIME-PICKER
+ ========================================================================== */
+/**
+ * The list of times.
+ */
+.picker__list {
+ list-style: none;
+ padding: 0.75em 0 4.2em;
+ margin: 0;
+}
+
+/**
+ * The times on the clock.
+ */
+.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;
+ }
+}
+
+/* Hovered time */
+.picker__list-item:hover {
+ cursor: pointer;
+ color: #000000;
+ background: #b1dcfb;
+ border-color: #0089ec;
+ z-index: 10;
+}
+
+/* Highlighted and hovered/focused time */
+.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;
+}
+
+/* Selected and hovered/focused time */
+.picker__list-item--selected,
+.picker__list-item--selected:hover,
+.picker--focused .picker__list-item--selected {
+ background: #0089ec;
+ color: #ffffff;
+ z-index: 10;
+}
+
+/* Disabled time */
+.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;
+}
+
+/**
+ * The clear button
+ */
+.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;
+}
+
+/* ==========================================================================
+ $DEFAULT-TIME-PICKER
+ ========================================================================== */
+/**
+ * The frame the bounds the time picker.
+ */
+.picker--time .picker__frame {
+ min-width: 256px;
+ max-width: 320px;
+}
+
+/**
+ * The picker box.
+ */
+.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/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/mui.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/mui.css
new file mode 100644
index 0000000..16d27c3
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/mui.css
@@ -0,0 +1,2650 @@
+/**
+ * MUI Colors module
+ */
+/**
+ * MUI Globals
+ */
+/*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */
+/**
+ * 1. Change the default font family in all browsers (opinionated).
+ * 2. Correct the line height in all browsers.
+ * 3. Prevent adjustments of font size after orientation changes in
+ * IE on Windows Phone and in iOS.
+ */
+/* Document
+ ========================================================================== */
+html {
+ font-family: sans-serif;
+ /* 1 */
+ line-height: 1.15;
+ /* 2 */
+ -ms-text-size-adjust: 100%;
+ /* 3 */
+ -webkit-text-size-adjust: 100%;
+ /* 3 */
+}
+
+/* Sections
+ ========================================================================== */
+/**
+ * Remove the margin in all browsers (opinionated).
+ */
+body {
+ margin: 0;
+}
+
+/**
+ * Add the correct display in IE 9-.
+ */
+article,
+aside,
+footer,
+header,
+nav,
+section {
+ display: block;
+}
+
+/**
+ * Correct the font size and margin on `h1` elements within `section` and
+ * `article` contexts in Chrome, Firefox, and Safari.
+ */
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/* Grouping content
+ ========================================================================== */
+/**
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in IE.
+ */
+figcaption,
+figure,
+main {
+ /* 1 */
+ display: block;
+}
+
+/**
+ * Add the correct margin in IE 8.
+ */
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * 1. Add the correct box sizing in Firefox.
+ * 2. Show the overflow in Edge and IE.
+ */
+hr {
+ box-sizing: content-box;
+ /* 1 */
+ height: 0;
+ /* 1 */
+ overflow: visible;
+ /* 2 */
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+pre {
+ font-family: monospace, monospace;
+ /* 1 */
+ font-size: 1em;
+ /* 2 */
+}
+
+/* Text-level semantics
+ ========================================================================== */
+/**
+ * 1. Remove the gray background on active links in IE 10.
+ * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
+ */
+a {
+ background-color: transparent;
+ /* 1 */
+ -webkit-text-decoration-skip: objects;
+ /* 2 */
+}
+
+/**
+ * Remove the outline on focused links when they are also active or hovered
+ * in all browsers (opinionated).
+ */
+a:active,
+a:hover {
+ outline-width: 0;
+}
+
+/**
+ * 1. Remove the bottom border in Firefox 39-.
+ * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
+ */
+abbr[title] {
+ border-bottom: none;
+ /* 1 */
+ text-decoration: underline;
+ /* 2 */
+ text-decoration: underline dotted;
+ /* 2 */
+}
+
+/**
+ * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
+ */
+b,
+strong {
+ font-weight: inherit;
+}
+
+/**
+ * Add the correct font weight in Chrome, Edge, and Safari.
+ */
+b,
+strong {
+ font-weight: bolder;
+}
+
+/**
+ * 1. Correct the inheritance and scaling of font size in all browsers.
+ * 2. Correct the odd `em` font sizing in all browsers.
+ */
+code,
+kbd,
+samp {
+ font-family: monospace, monospace;
+ /* 1 */
+ font-size: 1em;
+ /* 2 */
+}
+
+/**
+ * Add the correct font style in Android 4.3-.
+ */
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Add the correct background and color in IE 9-.
+ */
+mark {
+ background-color: #ff0;
+ color: #000;
+}
+
+/**
+ * Add the correct font size in all browsers.
+ */
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` elements from affecting the line height in
+ * all browsers.
+ */
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+sup {
+ top: -0.5em;
+}
+
+/* Embedded content
+ ========================================================================== */
+/**
+ * Add the correct display in IE 9-.
+ */
+audio,
+video {
+ display: inline-block;
+}
+
+/**
+ * Add the correct display in iOS 4-7.
+ */
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Remove the border on images inside links in IE 10-.
+ */
+img {
+ border-style: none;
+}
+
+/**
+ * Hide the overflow in IE.
+ */
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Forms
+ ========================================================================== */
+/**
+ * 1. Change the font styles in all browsers (opinionated).
+ * 2. Remove the margin in Firefox and Safari.
+ */
+button,
+input,
+optgroup,
+select,
+textarea {
+ font-family: sans-serif;
+ /* 1 */
+ font-size: 100%;
+ /* 1 */
+ line-height: 1.15;
+ /* 1 */
+ margin: 0;
+ /* 2 */
+}
+
+/**
+ * Show the overflow in IE.
+ * 1. Show the overflow in Edge.
+ */
+button,
+input {
+ /* 1 */
+ overflow: visible;
+}
+
+/**
+ * Remove the inheritance of text transform in Edge, Firefox, and IE.
+ * 1. Remove the inheritance of text transform in Firefox.
+ */
+button,
+select {
+ /* 1 */
+ text-transform: none;
+}
+
+/**
+ * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
+ * controls in Android 4.
+ * 2. Correct the inability to style clickable types in iOS and Safari.
+ */
+button,
+html [type="button"],
+[type="reset"],
+[type="submit"] {
+ -webkit-appearance: button;
+ /* 2 */
+}
+
+/**
+ * Remove the inner border and padding in Firefox.
+ */
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+ border-style: none;
+ padding: 0;
+}
+
+/**
+ * Restore the focus styles unset by the previous rule.
+ */
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+ outline: 1px dotted ButtonText;
+}
+
+/**
+ * Change the border, margin, and padding in all browsers (opinionated).
+ */
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct the text wrapping in Edge and IE.
+ * 2. Correct the color inheritance from `fieldset` elements in IE.
+ * 3. Remove the padding so developers are not caught out when they zero out
+ * `fieldset` elements in all browsers.
+ */
+legend {
+ box-sizing: border-box;
+ /* 1 */
+ color: inherit;
+ /* 2 */
+ display: table;
+ /* 1 */
+ max-width: 100%;
+ /* 1 */
+ padding: 0;
+ /* 3 */
+ white-space: normal;
+ /* 1 */
+}
+
+/**
+ * 1. Add the correct display in IE 9-.
+ * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
+ */
+progress {
+ display: inline-block;
+ /* 1 */
+ vertical-align: baseline;
+ /* 2 */
+}
+
+/**
+ * Remove the default vertical scrollbar in IE.
+ */
+textarea {
+ overflow: auto;
+}
+
+/**
+ * 1. Add the correct box sizing in IE 10-.
+ * 2. Remove the padding in IE 10-.
+ */
+[type="checkbox"],
+[type="radio"] {
+ box-sizing: border-box;
+ /* 1 */
+ padding: 0;
+ /* 2 */
+}
+
+/**
+ * Correct the cursor style of increment and decrement buttons in Chrome.
+ */
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Correct the odd appearance in Chrome and Safari.
+ * 2. Correct the outline style in Safari.
+ */
+[type="search"] {
+ -webkit-appearance: textfield;
+ /* 1 */
+ outline-offset: -2px;
+ /* 2 */
+}
+
+/**
+ * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
+ */
+[type="search"]::-webkit-search-cancel-button,
+[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * 1. Correct the inability to style clickable types in iOS and Safari.
+ * 2. Change font properties to `inherit` in Safari.
+ */
+::-webkit-file-upload-button {
+ -webkit-appearance: button;
+ /* 1 */
+ font: inherit;
+ /* 2 */
+}
+
+/* Interactive
+ ========================================================================== */
+/*
+ * Add the correct display in IE 9-.
+ * 1. Add the correct display in Edge, IE, and Firefox.
+ */
+details,
+menu {
+ display: block;
+}
+
+/*
+ * Add the correct display in all browsers.
+ */
+summary {
+ display: list-item;
+}
+
+/* Scripting
+ ========================================================================== */
+/**
+ * Add the correct display in IE 9-.
+ */
+canvas {
+ display: inline-block;
+}
+
+/**
+ * Add the correct display in IE.
+ */
+template {
+ display: none;
+}
+
+/* Hidden
+ ========================================================================== */
+/**
+ * Add the correct display in IE 10-.
+ */
+[hidden] {
+ display: none;
+}
+
+html {
+ font-size: 10px;
+ -webkit-tap-highlight-color: transparent;
+}
+
+body {
+ font-family: Arial, Verdana, Tahoma;
+ font-size: 14px;
+ font-weight: 400;
+ line-height: 1.429;
+ color: rgba(0, 0, 0, 0.87);
+ background-color: #FFF;
+}
+
+a {
+ color: #2196F3;
+ text-decoration: none;
+}
+
+a:hover, a:focus {
+ text-decoration: underline;
+}
+
+a:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+p {
+ margin: 0 0 10px;
+}
+
+ul,
+ol {
+ margin-top: 0;
+ margin-bottom: 10px;
+}
+
+hr {
+ margin-top: 20px;
+ margin-bottom: 20px;
+ border: 0;
+ height: 1px;
+ background-color: rgba(0, 0, 0, 0.12);
+}
+
+strong {
+ font-weight: 700;
+}
+
+abbr[title] {
+ cursor: help;
+ border-bottom: 1px dotted #2196F3;
+}
+
+h1, h2, h3 {
+ margin-top: 20px;
+ margin-bottom: 10px;
+}
+
+h4, h5, h6 {
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+/**
+ * MUI Appbar
+ */
+.mui--appbar-height {
+ height: 56px;
+}
+
+.mui--appbar-min-height, .mui-appbar {
+ min-height: 56px;
+}
+
+.mui--appbar-line-height {
+ line-height: 56px;
+}
+
+.mui--appbar-top {
+ top: 56px;
+}
+
+@media (orientation: landscape) and (max-height: 480px) {
+ .mui--appbar-height {
+ height: 48px;
+ }
+ .mui--appbar-min-height, .mui-appbar {
+ min-height: 48px;
+ }
+ .mui--appbar-line-height {
+ line-height: 48px;
+ }
+ .mui--appbar-top {
+ top: 48px;
+ }
+}
+
+@media (min-width: 480px) {
+ .mui--appbar-height {
+ height: 64px;
+ }
+ .mui--appbar-min-height, .mui-appbar {
+ min-height: 64px;
+ }
+ .mui--appbar-line-height {
+ line-height: 64px;
+ }
+ .mui--appbar-top {
+ top: 64px;
+ }
+}
+
+.mui-appbar {
+ background-color: #2196F3;
+ color: #FFF;
+}
+
+/**
+ * MUI Buttons
+ */
+.mui-btn {
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 18px;
+ text-transform: uppercase;
+ color: rgba(0, 0, 0, 0.87);
+ background-color: #FFF;
+ transition: all 0.2s ease-in-out;
+ display: inline-block;
+ height: 36px;
+ padding: 0 26px;
+ margin: 6px 0;
+ border: none;
+ border-radius: 2px;
+ cursor: pointer;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ background-image: none;
+ text-align: center;
+ line-height: 36px;
+ vertical-align: middle;
+ white-space: nowrap;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ font-size: 14px;
+ font-family: inherit;
+ letter-spacing: 0.03em;
+ position: relative;
+ overflow: hidden;
+}
+
+.mui-btn:hover, .mui-btn:focus, .mui-btn:active {
+ color: rgba(0, 0, 0, 0.87);
+ background-color: white;
+}
+
+.mui-btn[disabled]:hover, .mui-btn[disabled]:focus, .mui-btn[disabled]:active {
+ color: rgba(0, 0, 0, 0.87);
+ background-color: #FFF;
+}
+
+.mui-btn.mui-btn--flat {
+ color: rgba(0, 0, 0, 0.87);
+ background-color: transparent;
+}
+
+.mui-btn.mui-btn--flat:hover, .mui-btn.mui-btn--flat:focus, .mui-btn.mui-btn--flat:active {
+ color: rgba(0, 0, 0, 0.87);
+ background-color: #f2f2f2;
+}
+
+.mui-btn.mui-btn--flat[disabled]:hover, .mui-btn.mui-btn--flat[disabled]:focus, .mui-btn.mui-btn--flat[disabled]:active {
+ color: rgba(0, 0, 0, 0.87);
+ background-color: transparent;
+}
+
+.mui-btn:hover, .mui-btn:focus, .mui-btn:active {
+ outline: 0;
+ text-decoration: none;
+ color: rgba(0, 0, 0, 0.87);
+}
+
+.mui-btn:hover, .mui-btn:focus {
+ box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
+}
+
+@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
+ .mui-btn:hover, .mui-btn:focus {
+ box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.12), -1px 0px 2px rgba(0, 0, 0, 0.12), 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
+ }
+}
+
+@supports (-ms-ime-align: auto) {
+ .mui-btn:hover, .mui-btn:focus {
+ box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.12), -1px 0px 2px rgba(0, 0, 0, 0.12), 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
+ }
+}
+
+.mui-btn:active:hover {
+ box-shadow: 0 0px 4px rgba(0, 0, 0, 0.12), 1px 3px 4px rgba(0, 0, 0, 0.2);
+}
+
+@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
+ .mui-btn:active:hover {
+ box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.12), -1px 0px 2px rgba(0, 0, 0, 0.12), 0 0px 4px rgba(0, 0, 0, 0.12), 1px 3px 4px rgba(0, 0, 0, 0.2);
+ }
+}
+
+@supports (-ms-ime-align: auto) {
+ .mui-btn:active:hover {
+ box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.12), -1px 0px 2px rgba(0, 0, 0, 0.12), 0 0px 4px rgba(0, 0, 0, 0.12), 1px 3px 4px rgba(0, 0, 0, 0.2);
+ }
+}
+
+.mui-btn:disabled, .mui-btn.mui--is-disabled {
+ cursor: not-allowed;
+ pointer-events: none;
+ opacity: 0.60;
+ box-shadow: none;
+}
+
+.mui-btn + .mui-btn {
+ margin-left: 8px;
+}
+
+.mui-btn--flat {
+ background-color: transparent;
+}
+
+.mui-btn--flat:hover, .mui-btn--flat:focus, .mui-btn--flat:active, .mui-btn--flat:active:hover {
+ box-shadow: none;
+ background-color: #f2f2f2;
+}
+
+.mui-btn--raised, .mui-btn--fab {
+ box-shadow: 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
+}
+
+@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
+ .mui-btn--raised, .mui-btn--fab {
+ box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.12), -1px 0px 2px rgba(0, 0, 0, 0.12), 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
+ }
+}
+
+@supports (-ms-ime-align: auto) {
+ .mui-btn--raised, .mui-btn--fab {
+ box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.12), -1px 0px 2px rgba(0, 0, 0, 0.12), 0 0px 2px rgba(0, 0, 0, 0.12), 0 2px 2px rgba(0, 0, 0, 0.2);
+ }
+}
+
+.mui-btn--raised:active, .mui-btn--fab:active {
+ box-shadow: 0 0px 4px rgba(0, 0, 0, 0.12), 1px 3px 4px rgba(0, 0, 0, 0.2);
+}
+
+@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
+ .mui-btn--raised:active, .mui-btn--fab:active {
+ box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.12), -1px 0px 2px rgba(0, 0, 0, 0.12), 0 0px 4px rgba(0, 0, 0, 0.12), 1px 3px 4px rgba(0, 0, 0, 0.2);
+ }
+}
+
+@supports (-ms-ime-align: auto) {
+ .mui-btn--raised:active, .mui-btn--fab:active {
+ box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.12), -1px 0px 2px rgba(0, 0, 0, 0.12), 0 0px 4px rgba(0, 0, 0, 0.12), 1px 3px 4px rgba(0, 0, 0, 0.2);
+ }
+}
+
+.mui-btn--fab {
+ position: relative;
+ padding: 0;
+ width: 55px;
+ height: 55px;
+ line-height: 55px;
+ border-radius: 50%;
+ z-index: 1;
+}
+
+.mui-btn--primary {
+ color: #FFF;
+ background-color: #2196F3;
+}
+
+.mui-btn--primary:hover, .mui-btn--primary:focus, .mui-btn--primary:active {
+ color: #FFF;
+ background-color: #39a1f4;
+}
+
+.mui-btn--primary[disabled]:hover, .mui-btn--primary[disabled]:focus, .mui-btn--primary[disabled]:active {
+ color: #FFF;
+ background-color: #2196F3;
+}
+
+.mui-btn--primary.mui-btn--flat {
+ color: #2196F3;
+ background-color: transparent;
+}
+
+.mui-btn--primary.mui-btn--flat:hover, .mui-btn--primary.mui-btn--flat:focus, .mui-btn--primary.mui-btn--flat:active {
+ color: #2196F3;
+ background-color: #f2f2f2;
+}
+
+.mui-btn--primary.mui-btn--flat[disabled]:hover, .mui-btn--primary.mui-btn--flat[disabled]:focus, .mui-btn--primary.mui-btn--flat[disabled]:active {
+ color: #2196F3;
+ background-color: transparent;
+}
+
+.mui-btn--dark {
+ color: #FFF;
+ background-color: #424242;
+}
+
+.mui-btn--dark:hover, .mui-btn--dark:focus, .mui-btn--dark:active {
+ color: #FFF;
+ background-color: #4f4f4f;
+}
+
+.mui-btn--dark[disabled]:hover, .mui-btn--dark[disabled]:focus, .mui-btn--dark[disabled]:active {
+ color: #FFF;
+ background-color: #424242;
+}
+
+.mui-btn--dark.mui-btn--flat {
+ color: #424242;
+ background-color: transparent;
+}
+
+.mui-btn--dark.mui-btn--flat:hover, .mui-btn--dark.mui-btn--flat:focus, .mui-btn--dark.mui-btn--flat:active {
+ color: #424242;
+ background-color: #f2f2f2;
+}
+
+.mui-btn--dark.mui-btn--flat[disabled]:hover, .mui-btn--dark.mui-btn--flat[disabled]:focus, .mui-btn--dark.mui-btn--flat[disabled]:active {
+ color: #424242;
+ background-color: transparent;
+}
+
+.mui-btn--danger {
+ color: #FFF;
+ background-color: #F44336;
+}
+
+.mui-btn--danger:hover, .mui-btn--danger:focus, .mui-btn--danger:active {
+ color: #FFF;
+ background-color: #f55a4e;
+}
+
+.mui-btn--danger[disabled]:hover, .mui-btn--danger[disabled]:focus, .mui-btn--danger[disabled]:active {
+ color: #FFF;
+ background-color: #F44336;
+}
+
+.mui-btn--danger.mui-btn--flat {
+ color: #F44336;
+ background-color: transparent;
+}
+
+.mui-btn--danger.mui-btn--flat:hover, .mui-btn--danger.mui-btn--flat:focus, .mui-btn--danger.mui-btn--flat:active {
+ color: #F44336;
+ background-color: #f2f2f2;
+}
+
+.mui-btn--danger.mui-btn--flat[disabled]:hover, .mui-btn--danger.mui-btn--flat[disabled]:focus, .mui-btn--danger.mui-btn--flat[disabled]:active {
+ color: #F44336;
+ background-color: transparent;
+}
+
+.mui-btn--accent {
+ color: #FFF;
+ background-color: #FF4081;
+}
+
+.mui-btn--accent:hover, .mui-btn--accent:focus, .mui-btn--accent:active {
+ color: #FFF;
+ background-color: #ff5a92;
+}
+
+.mui-btn--accent[disabled]:hover, .mui-btn--accent[disabled]:focus, .mui-btn--accent[disabled]:active {
+ color: #FFF;
+ background-color: #FF4081;
+}
+
+.mui-btn--accent.mui-btn--flat {
+ color: #FF4081;
+ background-color: transparent;
+}
+
+.mui-btn--accent.mui-btn--flat:hover, .mui-btn--accent.mui-btn--flat:focus, .mui-btn--accent.mui-btn--flat:active {
+ color: #FF4081;
+ background-color: #f2f2f2;
+}
+
+.mui-btn--accent.mui-btn--flat[disabled]:hover, .mui-btn--accent.mui-btn--flat[disabled]:focus, .mui-btn--accent.mui-btn--flat[disabled]:active {
+ color: #FF4081;
+ background-color: transparent;
+}
+
+.mui-btn--small {
+ height: 30.6px;
+ line-height: 30.6px;
+ padding: 0 16px;
+ font-size: 13px;
+}
+
+.mui-btn--large {
+ height: 54px;
+ line-height: 54px;
+ padding: 0 26px;
+ font-size: 14px;
+}
+
+.mui-btn--fab.mui-btn--small {
+ width: 44px;
+ height: 44px;
+ line-height: 44px;
+}
+
+.mui-btn--fab.mui-btn--large {
+ width: 75px;
+ height: 75px;
+ line-height: 75px;
+}
+
+/**
+ * MUI Checkboxe and Radio Components
+ */
+.mui-radio,
+.mui-checkbox {
+ position: relative;
+ display: block;
+ margin-top: 10px;
+ margin-bottom: 10px;
+}
+
+.mui-radio > label,
+.mui-checkbox > label {
+ min-height: 20px;
+ padding-left: 20px;
+ margin-bottom: 0;
+ font-weight: normal;
+ cursor: pointer;
+}
+
+.mui-radio input:disabled,
+.mui-checkbox input:disabled {
+ cursor: not-allowed;
+}
+
+.mui-radio input:focus,
+.mui-checkbox input:focus {
+ outline: thin dotted;
+ outline: 5px auto -webkit-focus-ring-color;
+ outline-offset: -2px;
+}
+
+.mui-radio > label > input[type="radio"],
+.mui-radio--inline > label > input[type="radio"],
+.mui-checkbox > label > input[type="checkbox"],
+.mui-checkbox--inline > label > input[type="checkbox"] {
+ position: absolute;
+ margin-left: -20px;
+ margin-top: 4px;
+}
+
+.mui-radio + .mui-radio,
+.mui-checkbox + .mui-checkbox {
+ margin-top: -5px;
+}
+
+.mui-radio--inline,
+.mui-checkbox--inline {
+ display: inline-block;
+ padding-left: 20px;
+ margin-bottom: 0;
+ vertical-align: middle;
+ font-weight: normal;
+ cursor: pointer;
+}
+
+.mui-radio--inline > input[type="radio"],
+.mui-radio--inline > input[type="checkbox"],
+.mui-radio--inline > label > input[type="radio"],
+.mui-radio--inline > label > input[type="checkbox"],
+.mui-checkbox--inline > input[type="radio"],
+.mui-checkbox--inline > input[type="checkbox"],
+.mui-checkbox--inline > label > input[type="radio"],
+.mui-checkbox--inline > label > input[type="checkbox"] {
+ margin: 4px 0 0;
+ line-height: normal;
+}
+
+.mui-radio--inline + .mui-radio--inline,
+.mui-checkbox--inline + .mui-checkbox--inline {
+ margin-top: 0;
+ margin-left: 10px;
+}
+
+/**
+ * MUI Container module
+ */
+.mui-container {
+ box-sizing: border-box;
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
+.mui-container:before, .mui-container:after {
+ content: " ";
+ display: table;
+}
+
+.mui-container:after {
+ clear: both;
+}
+
+@media (min-width: 544px) {
+ .mui-container {
+ max-width: 570px;
+ }
+}
+
+@media (min-width: 768px) {
+ .mui-container {
+ max-width: 740px;
+ }
+}
+
+@media (min-width: 992px) {
+ .mui-container {
+ max-width: 960px;
+ }
+}
+
+@media (min-width: 1200px) {
+ .mui-container {
+ max-width: 1170px;
+ }
+}
+
+.mui-container-fluid {
+ box-sizing: border-box;
+ margin-right: auto;
+ margin-left: auto;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
+.mui-container-fluid:before, .mui-container-fluid:after {
+ content: " ";
+ display: table;
+}
+
+.mui-container-fluid:after {
+ clear: both;
+}
+
+/**
+ * MUI Divider Component and CSS Helpers
+ */
+.mui-divider {
+ display: block;
+ height: 1px;
+ background-color: rgba(0, 0, 0, 0.12);
+}
+
+.mui--divider-top {
+ border-top: 1px solid rgba(0, 0, 0, 0.12);
+}
+
+.mui--divider-bottom {
+ border-bottom: 1px solid rgba(0, 0, 0, 0.12);
+}
+
+.mui--divider-left {
+ border-left: 1px solid rgba(0, 0, 0, 0.12);
+}
+
+.mui--divider-right {
+ border-right: 1px solid rgba(0, 0, 0, 0.12);
+}
+
+/**
+ * MUI Dropdown module
+ */
+.mui-dropdown {
+ display: inline-block;
+ position: relative;
+}
+
+[data-mui-toggle="dropdown"] {
+ outline: 0;
+}
+
+.mui-dropdown__menu {
+ position: absolute;
+ top: 100%;
+ left: 0;
+ display: none;
+ min-width: 160px;
+ padding: 5px 0;
+ margin: 2px 0 0;
+ list-style: none;
+ font-size: 14px;
+ text-align: left;
+ background-color: #FFF;
+ border-radius: 2px;
+ z-index: 1;
+ background-clip: padding-box;
+}
+
+.mui-dropdown__menu.mui--is-open {
+ display: block;
+}
+
+.mui-dropdown__menu > li > a {
+ display: block;
+ padding: 3px 20px;
+ clear: both;
+ font-weight: normal;
+ line-height: 1.429;
+ color: rgba(0, 0, 0, 0.87);
+ text-decoration: none;
+ white-space: nowrap;
+}
+
+.mui-dropdown__menu > li > a:hover, .mui-dropdown__menu > li > a:focus {
+ text-decoration: none;
+ color: rgba(0, 0, 0, 0.87);
+ background-color: #EEEEEE;
+}
+
+.mui-dropdown__menu > .mui--is-disabled > a, .mui-dropdown__menu > .mui--is-disabled > a:hover, .mui-dropdown__menu > .mui--is-disabled > a:focus {
+ color: #EEEEEE;
+}
+
+.mui-dropdown__menu > .mui--is-disabled > a:hover, .mui-dropdown__menu > .mui--is-disabled > a:focus {
+ text-decoration: none;
+ background-color: transparent;
+ background-image: none;
+ cursor: not-allowed;
+}
+
+.mui-dropdown__menu--right {
+ left: auto;
+ right: 0;
+}
+
+/**
+ * MUI Form Component
+ */
+.mui-form legend {
+ display: block;
+ width: 100%;
+ padding: 0;
+ margin-bottom: 10px;
+ font-size: 21px;
+ color: rgba(0, 0, 0, 0.87);
+ line-height: inherit;
+ border: 0;
+}
+
+.mui-form fieldset {
+ border: 0;
+ padding: 0;
+ margin: 0 0 20px 0;
+}
+
+@media (min-width: 544px) {
+ .mui-form--inline .mui-textfield {
+ display: inline-block;
+ vertical-align: bottom;
+ margin-bottom: 0;
+ }
+ .mui-form--inline .mui-radio,
+ .mui-form--inline .mui-checkbox {
+ display: inline-block;
+ margin-top: 0;
+ margin-bottom: 0;
+ vertical-align: middle;
+ }
+ .mui-form--inline .mui-radio > label,
+ .mui-form--inline .mui-checkbox > label {
+ padding-left: 0;
+ }
+ .mui-form--inline .mui-radio > label > input[type="radio"],
+ .mui-form--inline .mui-checkbox > label > input[type="checkbox"] {
+ position: relative;
+ margin-left: 0;
+ }
+ .mui-form--inline .mui-select {
+ display: inline-block;
+ }
+ .mui-form--inline .mui-btn {
+ margin-bottom: 0;
+ margin-top: 0;
+ vertical-align: bottom;
+ }
+}
+
+/**
+ * MUI Grid module
+ */
+.mui-row {
+ margin-left: -15px;
+ margin-right: -15px;
+}
+
+.mui-row:before, .mui-row:after {
+ content: " ";
+ display: table;
+}
+
+.mui-row:after {
+ clear: both;
+}
+
+.mui-col-xs-1, .mui-col-sm-1, .mui-col-md-1, .mui-col-lg-1, .mui-col-xs-2, .mui-col-sm-2, .mui-col-md-2, .mui-col-lg-2, .mui-col-xs-3, .mui-col-sm-3, .mui-col-md-3, .mui-col-lg-3, .mui-col-xs-4, .mui-col-sm-4, .mui-col-md-4, .mui-col-lg-4, .mui-col-xs-5, .mui-col-sm-5, .mui-col-md-5, .mui-col-lg-5, .mui-col-xs-6, .mui-col-sm-6, .mui-col-md-6, .mui-col-lg-6, .mui-col-xs-7, .mui-col-sm-7, .mui-col-md-7, .mui-col-lg-7, .mui-col-xs-8, .mui-col-sm-8, .mui-col-md-8, .mui-col-lg-8, .mui-col-xs-9, .mui-col-sm-9, .mui-col-md-9, .mui-col-lg-9, .mui-col-xs-10, .mui-col-sm-10, .mui-col-md-10, .mui-col-lg-10, .mui-col-xs-11, .mui-col-sm-11, .mui-col-md-11, .mui-col-lg-11, .mui-col-xs-12, .mui-col-sm-12, .mui-col-md-12, .mui-col-lg-12 {
+ box-sizing: border-box;
+ min-height: 1px;
+ padding-left: 15px;
+ padding-right: 15px;
+}
+
+.mui-col-xs-1, .mui-col-xs-2, .mui-col-xs-3, .mui-col-xs-4, .mui-col-xs-5, .mui-col-xs-6, .mui-col-xs-7, .mui-col-xs-8, .mui-col-xs-9, .mui-col-xs-10, .mui-col-xs-11, .mui-col-xs-12 {
+ float: left;
+}
+
+.mui-col-xs-1 {
+ width: 8.33333%;
+}
+
+.mui-col-xs-2 {
+ width: 16.66667%;
+}
+
+.mui-col-xs-3 {
+ width: 25%;
+}
+
+.mui-col-xs-4 {
+ width: 33.33333%;
+}
+
+.mui-col-xs-5 {
+ width: 41.66667%;
+}
+
+.mui-col-xs-6 {
+ width: 50%;
+}
+
+.mui-col-xs-7 {
+ width: 58.33333%;
+}
+
+.mui-col-xs-8 {
+ width: 66.66667%;
+}
+
+.mui-col-xs-9 {
+ width: 75%;
+}
+
+.mui-col-xs-10 {
+ width: 83.33333%;
+}
+
+.mui-col-xs-11 {
+ width: 91.66667%;
+}
+
+.mui-col-xs-12 {
+ width: 100%;
+}
+
+.mui-col-xs-offset-0 {
+ margin-left: 0%;
+}
+
+.mui-col-xs-offset-1 {
+ margin-left: 8.33333%;
+}
+
+.mui-col-xs-offset-2 {
+ margin-left: 16.66667%;
+}
+
+.mui-col-xs-offset-3 {
+ margin-left: 25%;
+}
+
+.mui-col-xs-offset-4 {
+ margin-left: 33.33333%;
+}
+
+.mui-col-xs-offset-5 {
+ margin-left: 41.66667%;
+}
+
+.mui-col-xs-offset-6 {
+ margin-left: 50%;
+}
+
+.mui-col-xs-offset-7 {
+ margin-left: 58.33333%;
+}
+
+.mui-col-xs-offset-8 {
+ margin-left: 66.66667%;
+}
+
+.mui-col-xs-offset-9 {
+ margin-left: 75%;
+}
+
+.mui-col-xs-offset-10 {
+ margin-left: 83.33333%;
+}
+
+.mui-col-xs-offset-11 {
+ margin-left: 91.66667%;
+}
+
+.mui-col-xs-offset-12 {
+ margin-left: 100%;
+}
+
+@media (min-width: 544px) {
+ .mui-col-sm-1, .mui-col-sm-2, .mui-col-sm-3, .mui-col-sm-4, .mui-col-sm-5, .mui-col-sm-6, .mui-col-sm-7, .mui-col-sm-8, .mui-col-sm-9, .mui-col-sm-10, .mui-col-sm-11, .mui-col-sm-12 {
+ float: left;
+ }
+ .mui-col-sm-1 {
+ width: 8.33333%;
+ }
+ .mui-col-sm-2 {
+ width: 16.66667%;
+ }
+ .mui-col-sm-3 {
+ width: 25%;
+ }
+ .mui-col-sm-4 {
+ width: 33.33333%;
+ }
+ .mui-col-sm-5 {
+ width: 41.66667%;
+ }
+ .mui-col-sm-6 {
+ width: 50%;
+ }
+ .mui-col-sm-7 {
+ width: 58.33333%;
+ }
+ .mui-col-sm-8 {
+ width: 66.66667%;
+ }
+ .mui-col-sm-9 {
+ width: 75%;
+ }
+ .mui-col-sm-10 {
+ width: 83.33333%;
+ }
+ .mui-col-sm-11 {
+ width: 91.66667%;
+ }
+ .mui-col-sm-12 {
+ width: 100%;
+ }
+ .mui-col-sm-offset-0 {
+ margin-left: 0%;
+ }
+ .mui-col-sm-offset-1 {
+ margin-left: 8.33333%;
+ }
+ .mui-col-sm-offset-2 {
+ margin-left: 16.66667%;
+ }
+ .mui-col-sm-offset-3 {
+ margin-left: 25%;
+ }
+ .mui-col-sm-offset-4 {
+ margin-left: 33.33333%;
+ }
+ .mui-col-sm-offset-5 {
+ margin-left: 41.66667%;
+ }
+ .mui-col-sm-offset-6 {
+ margin-left: 50%;
+ }
+ .mui-col-sm-offset-7 {
+ margin-left: 58.33333%;
+ }
+ .mui-col-sm-offset-8 {
+ margin-left: 66.66667%;
+ }
+ .mui-col-sm-offset-9 {
+ margin-left: 75%;
+ }
+ .mui-col-sm-offset-10 {
+ margin-left: 83.33333%;
+ }
+ .mui-col-sm-offset-11 {
+ margin-left: 91.66667%;
+ }
+ .mui-col-sm-offset-12 {
+ margin-left: 100%;
+ }
+}
+
+@media (min-width: 768px) {
+ .mui-col-md-1, .mui-col-md-2, .mui-col-md-3, .mui-col-md-4, .mui-col-md-5, .mui-col-md-6, .mui-col-md-7, .mui-col-md-8, .mui-col-md-9, .mui-col-md-10, .mui-col-md-11, .mui-col-md-12 {
+ float: left;
+ }
+ .mui-col-md-1 {
+ width: 8.33333%;
+ }
+ .mui-col-md-2 {
+ width: 16.66667%;
+ }
+ .mui-col-md-3 {
+ width: 25%;
+ }
+ .mui-col-md-4 {
+ width: 33.33333%;
+ }
+ .mui-col-md-5 {
+ width: 41.66667%;
+ }
+ .mui-col-md-6 {
+ width: 50%;
+ }
+ .mui-col-md-7 {
+ width: 58.33333%;
+ }
+ .mui-col-md-8 {
+ width: 66.66667%;
+ }
+ .mui-col-md-9 {
+ width: 75%;
+ }
+ .mui-col-md-10 {
+ width: 83.33333%;
+ }
+ .mui-col-md-11 {
+ width: 91.66667%;
+ }
+ .mui-col-md-12 {
+ width: 100%;
+ }
+ .mui-col-md-offset-0 {
+ margin-left: 0%;
+ }
+ .mui-col-md-offset-1 {
+ margin-left: 8.33333%;
+ }
+ .mui-col-md-offset-2 {
+ margin-left: 16.66667%;
+ }
+ .mui-col-md-offset-3 {
+ margin-left: 25%;
+ }
+ .mui-col-md-offset-4 {
+ margin-left: 33.33333%;
+ }
+ .mui-col-md-offset-5 {
+ margin-left: 41.66667%;
+ }
+ .mui-col-md-offset-6 {
+ margin-left: 50%;
+ }
+ .mui-col-md-offset-7 {
+ margin-left: 58.33333%;
+ }
+ .mui-col-md-offset-8 {
+ margin-left: 66.66667%;
+ }
+ .mui-col-md-offset-9 {
+ margin-left: 75%;
+ }
+ .mui-col-md-offset-10 {
+ margin-left: 83.33333%;
+ }
+ .mui-col-md-offset-11 {
+ margin-left: 91.66667%;
+ }
+ .mui-col-md-offset-12 {
+ margin-left: 100%;
+ }
+}
+
+@media (min-width: 992px) {
+ .mui-col-lg-1, .mui-col-lg-2, .mui-col-lg-3, .mui-col-lg-4, .mui-col-lg-5, .mui-col-lg-6, .mui-col-lg-7, .mui-col-lg-8, .mui-col-lg-9, .mui-col-lg-10, .mui-col-lg-11, .mui-col-lg-12 {
+ float: left;
+ }
+ .mui-col-lg-1 {
+ width: 8.33333%;
+ }
+ .mui-col-lg-2 {
+ width: 16.66667%;
+ }
+ .mui-col-lg-3 {
+ width: 25%;
+ }
+ .mui-col-lg-4 {
+ width: 33.33333%;
+ }
+ .mui-col-lg-5 {
+ width: 41.66667%;
+ }
+ .mui-col-lg-6 {
+ width: 50%;
+ }
+ .mui-col-lg-7 {
+ width: 58.33333%;
+ }
+ .mui-col-lg-8 {
+ width: 66.66667%;
+ }
+ .mui-col-lg-9 {
+ width: 75%;
+ }
+ .mui-col-lg-10 {
+ width: 83.33333%;
+ }
+ .mui-col-lg-11 {
+ width: 91.66667%;
+ }
+ .mui-col-lg-12 {
+ width: 100%;
+ }
+ .mui-col-lg-offset-0 {
+ margin-left: 0%;
+ }
+ .mui-col-lg-offset-1 {
+ margin-left: 8.33333%;
+ }
+ .mui-col-lg-offset-2 {
+ margin-left: 16.66667%;
+ }
+ .mui-col-lg-offset-3 {
+ margin-left: 25%;
+ }
+ .mui-col-lg-offset-4 {
+ margin-left: 33.33333%;
+ }
+ .mui-col-lg-offset-5 {
+ margin-left: 41.66667%;
+ }
+ .mui-col-lg-offset-6 {
+ margin-left: 50%;
+ }
+ .mui-col-lg-offset-7 {
+ margin-left: 58.33333%;
+ }
+ .mui-col-lg-offset-8 {
+ margin-left: 66.66667%;
+ }
+ .mui-col-lg-offset-9 {
+ margin-left: 75%;
+ }
+ .mui-col-lg-offset-10 {
+ margin-left: 83.33333%;
+ }
+ .mui-col-lg-offset-11 {
+ margin-left: 91.66667%;
+ }
+ .mui-col-lg-offset-12 {
+ margin-left: 100%;
+ }
+}
+
+@media (min-width: 1200px) {
+ .mui-col-xl-1, .mui-col-xl-2, .mui-col-xl-3, .mui-col-xl-4, .mui-col-xl-5, .mui-col-xl-6, .mui-col-xl-7, .mui-col-xl-8, .mui-col-xl-9, .mui-col-xl-10, .mui-col-xl-11, .mui-col-xl-12 {
+ float: left;
+ }
+ .mui-col-xl-1 {
+ width: 8.33333%;
+ }
+ .mui-col-xl-2 {
+ width: 16.66667%;
+ }
+ .mui-col-xl-3 {
+ width: 25%;
+ }
+ .mui-col-xl-4 {
+ width: 33.33333%;
+ }
+ .mui-col-xl-5 {
+ width: 41.66667%;
+ }
+ .mui-col-xl-6 {
+ width: 50%;
+ }
+ .mui-col-xl-7 {
+ width: 58.33333%;
+ }
+ .mui-col-xl-8 {
+ width: 66.66667%;
+ }
+ .mui-col-xl-9 {
+ width: 75%;
+ }
+ .mui-col-xl-10 {
+ width: 83.33333%;
+ }
+ .mui-col-xl-11 {
+ width: 91.66667%;
+ }
+ .mui-col-xl-12 {
+ width: 100%;
+ }
+ .mui-col-xl-offset-0 {
+ margin-left: 0%;
+ }
+ .mui-col-xl-offset-1 {
+ margin-left: 8.33333%;
+ }
+ .mui-col-xl-offset-2 {
+ margin-left: 16.66667%;
+ }
+ .mui-col-xl-offset-3 {
+ margin-left: 25%;
+ }
+ .mui-col-xl-offset-4 {
+ margin-left: 33.33333%;
+ }
+ .mui-col-xl-offset-5 {
+ margin-left: 41.66667%;
+ }
+ .mui-col-xl-offset-6 {
+ margin-left: 50%;
+ }
+ .mui-col-xl-offset-7 {
+ margin-left: 58.33333%;
+ }
+ .mui-col-xl-offset-8 {
+ margin-left: 66.66667%;
+ }
+ .mui-col-xl-offset-9 {
+ margin-left: 75%;
+ }
+ .mui-col-xl-offset-10 {
+ margin-left: 83.33333%;
+ }
+ .mui-col-xl-offset-11 {
+ margin-left: 91.66667%;
+ }
+ .mui-col-xl-offset-12 {
+ margin-left: 100%;
+ }
+}
+
+/**
+ * MUI Panel module
+ */
+.mui-panel {
+ padding: 15px;
+ margin-bottom: 20px;
+ border-radius: 0;
+ background-color: #FFF;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0px 2px 0 rgba(0, 0, 0, 0.12);
+}
+
+.mui-panel:before, .mui-panel:after {
+ content: " ";
+ display: table;
+}
+
+.mui-panel:after {
+ clear: both;
+}
+
+@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
+ .mui-panel {
+ box-shadow: 0 -1px 2px 0 rgba(0, 0, 0, 0.12), -1px 0px 2px 0 rgba(0, 0, 0, 0.12), 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0px 2px 0 rgba(0, 0, 0, 0.12);
+ }
+}
+
+@supports (-ms-ime-align: auto) {
+ .mui-panel {
+ box-shadow: 0 -1px 2px 0 rgba(0, 0, 0, 0.12), -1px 0px 2px 0 rgba(0, 0, 0, 0.12), 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0px 2px 0 rgba(0, 0, 0, 0.12);
+ }
+}
+
+/**
+ * MUI Select Component
+ */
+.mui-select {
+ display: block;
+ padding-top: 15px;
+ margin-bottom: 20px;
+ position: relative;
+}
+
+.mui-select:focus {
+ outline: 0;
+}
+
+.mui-select:focus > select {
+ height: 33px;
+ margin-bottom: -1px;
+ border-color: #2196F3;
+ border-width: 2px;
+}
+
+.mui-select > select {
+ display: block;
+ height: 32px;
+ width: 100%;
+ appearance: none;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ outline: none;
+ border: none;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.26);
+ border-radius: 0px;
+ box-shadow: none;
+ background-color: transparent;
+ background-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iNiIgd2lkdGg9IjEwIj48cG9seWdvbiBwb2ludHM9IjAsMCAxMCwwIDUsNiIgc3R5bGU9ImZpbGw6cmdiYSgwLDAsMCwuMjQpOyIvPjwvc3ZnPg==");
+ background-repeat: no-repeat;
+ background-position: right center;
+ cursor: pointer;
+ color: rgba(0, 0, 0, 0.87);
+ font-size: 16px;
+ font-family: inherit;
+ line-height: inherit;
+ padding: 0 25px 0 0;
+}
+
+.mui-select > select::-ms-expand {
+ display: none;
+}
+
+.mui-select > select:focus {
+ outline: 0;
+ height: 33px;
+ margin-bottom: -1px;
+ border-color: #2196F3;
+ border-width: 2px;
+}
+
+.mui-select > select:disabled {
+ color: rgba(0, 0, 0, 0.38);
+ cursor: not-allowed;
+ background-color: transparent;
+ opacity: 1;
+}
+
+.mui-select > select:-moz-focusring {
+ color: transparent;
+ text-shadow: 0 0 0 #000;
+}
+
+.mui-select > select:focus::-ms-value {
+ background: none;
+ color: rgba(0, 0, 0, 0.87);
+}
+
+.mui-select > label {
+ position: absolute;
+ top: 0;
+ display: block;
+ width: 100%;
+ color: rgba(0, 0, 0, 0.54);
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 15px;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.mui-select:focus > label,
+.mui-select > select:focus ~ label {
+ color: #2196F3;
+}
+
+.mui-select__menu {
+ position: absolute;
+ z-index: 2;
+ min-width: 100%;
+ overflow-y: auto;
+ padding: 8px 0;
+ background-color: #FFF;
+ font-size: 16px;
+}
+
+@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
+ .mui-select__menu {
+ border-left: 1px solid rgba(0, 0, 0, 0.12);
+ border-top: 1px solid rgba(0, 0, 0, 0.12);
+ }
+}
+
+@supports (-ms-ime-align: auto) {
+ .mui-select__menu {
+ border-left: 1px solid rgba(0, 0, 0, 0.12);
+ border-top: 1px solid rgba(0, 0, 0, 0.12);
+ }
+}
+
+.mui-select__menu > div {
+ padding: 0 22px;
+ height: 42px;
+ line-height: 42px;
+ cursor: pointer;
+ white-space: nowrap;
+}
+
+.mui-select__menu > div.mui--is-selected {
+ background-color: #EEEEEE;
+}
+
+.mui-select__menu > div.mui--is-disabled {
+ color: rgba(0, 0, 0, 0.38);
+ cursor: not-allowed;
+}
+
+.mui-select__menu > div:not(.mui-optgroup__label):not(.mui--is-disabled):hover {
+ background-color: #E0E0E0;
+}
+
+.mui-optgroup__option {
+ text-indent: 1em;
+}
+
+.mui-optgroup__label {
+ color: rgba(0, 0, 0, 0.54);
+ font-size: 0.9em;
+}
+
+/**
+ * MUI Table Component
+ */
+.mui-table {
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: 20px;
+}
+
+.mui-table > thead > tr > th,
+.mui-table > tbody > tr > th,
+.mui-table > tfoot > tr > th {
+ text-align: left;
+}
+
+.mui-table > thead > tr > th,
+.mui-table > thead > tr > td,
+.mui-table > tbody > tr > th,
+.mui-table > tbody > tr > td,
+.mui-table > tfoot > tr > th,
+.mui-table > tfoot > tr > td {
+ padding: 10px;
+ line-height: 1.429;
+}
+
+.mui-table > thead > tr > th {
+ border-bottom: 2px solid rgba(0, 0, 0, 0.12);
+ font-weight: 700;
+}
+
+.mui-table > tbody + tbody {
+ border-top: 2px solid rgba(0, 0, 0, 0.12);
+}
+
+.mui-table.mui-table--bordered > tbody > tr > td {
+ border-bottom: 1px solid rgba(0, 0, 0, 0.12);
+}
+
+/**
+ * MUI Tabs module
+ */
+.mui-tabs__bar {
+ list-style: none;
+ padding-left: 0;
+ margin-bottom: 0;
+ background-color: transparent;
+ white-space: nowrap;
+ overflow-x: auto;
+}
+
+.mui-tabs__bar > li {
+ display: inline-block;
+}
+
+.mui-tabs__bar > li > a {
+ display: block;
+ white-space: nowrap;
+ text-transform: uppercase;
+ font-weight: 500;
+ font-size: 14px;
+ color: rgba(0, 0, 0, 0.87);
+ cursor: default;
+ height: 48px;
+ line-height: 48px;
+ padding-left: 24px;
+ padding-right: 24px;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.mui-tabs__bar > li > a:hover {
+ text-decoration: none;
+}
+
+.mui-tabs__bar > li.mui--is-active {
+ border-bottom: 2px solid #2196F3;
+}
+
+.mui-tabs__bar > li.mui--is-active > a {
+ color: #2196F3;
+}
+
+.mui-tabs__bar.mui-tabs__bar--justified {
+ display: table;
+ width: 100%;
+ table-layout: fixed;
+}
+
+.mui-tabs__bar.mui-tabs__bar--justified > li {
+ display: table-cell;
+}
+
+.mui-tabs__bar.mui-tabs__bar--justified > li > a {
+ text-align: center;
+ padding-left: 0px;
+ padding-right: 0px;
+}
+
+.mui-tabs__pane {
+ display: none;
+}
+
+.mui-tabs__pane.mui--is-active {
+ display: block;
+}
+
+/**
+ * MUI Textfield Component
+ */
+.mui-textfield {
+ display: block;
+ padding-top: 15px;
+ margin-bottom: 20px;
+ position: relative;
+}
+
+.mui-textfield > label {
+ position: absolute;
+ top: 0;
+ display: block;
+ width: 100%;
+ color: rgba(0, 0, 0, 0.54);
+ font-size: 12px;
+ font-weight: 400;
+ line-height: 15px;
+ overflow-x: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+}
+
+.mui-textfield > textarea {
+ padding-top: 5px;
+}
+
+.mui-textfield > input:focus ~ label,
+.mui-textfield > textarea:focus ~ label {
+ color: #2196F3;
+}
+
+.mui-textfield--float-label > label {
+ position: absolute;
+ transform: translate(0px, 15px);
+ font-size: 16px;
+ line-height: 32px;
+ color: rgba(0, 0, 0, 0.26);
+ text-overflow: clip;
+ cursor: text;
+ pointer-events: none;
+}
+
+.mui-textfield--float-label > input:focus ~ label,
+.mui-textfield--float-label > textarea:focus ~ label {
+ transform: translate(0px, 0px);
+ font-size: 12px;
+ line-height: 15px;
+ text-overflow: ellipsis;
+}
+
+.mui-textfield--float-label > input:not(:focus).mui--is-not-empty ~ label, .mui-textfield--float-label > input:not(:focus)[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty) ~ label, .mui-textfield--float-label > input:not(:focus):not(:empty):not(.mui--is-empty):not(.mui--is-not-empty) ~ label,
+.mui-textfield--float-label > textarea:not(:focus).mui--is-not-empty ~ label,
+.mui-textfield--float-label > textarea:not(:focus)[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty) ~ label,
+.mui-textfield--float-label > textarea:not(:focus):not(:empty):not(.mui--is-empty):not(.mui--is-not-empty) ~ label {
+ color: rgba(0, 0, 0, 0.54);
+ font-size: 12px;
+ line-height: 15px;
+ transform: translate(0px, 0px);
+ text-overflow: ellipsis;
+}
+
+.mui-textfield--wrap-label {
+ display: table;
+ width: 100%;
+ padding-top: 0px;
+}
+
+.mui-textfield--wrap-label:not(.mui-textfield--float-label) > label {
+ display: table-header-group;
+ position: static;
+ white-space: normal;
+ overflow-x: visible;
+}
+
+.mui-textfield > input,
+.mui-textfield > textarea {
+ box-sizing: border-box;
+ display: block;
+ background-color: transparent;
+ color: rgba(0, 0, 0, 0.87);
+ border: none;
+ border-bottom: 1px solid rgba(0, 0, 0, 0.26);
+ outline: none;
+ width: 100%;
+ padding: 0;
+ box-shadow: none;
+ border-radius: 0px;
+ font-size: 16px;
+ font-family: inherit;
+ line-height: inherit;
+ background-image: none;
+}
+
+.mui-textfield > input:focus,
+.mui-textfield > textarea:focus {
+ border-color: #2196F3;
+ border-width: 2px;
+}
+
+.mui-textfield > input:disabled, .mui-textfield > input:-moz-read-only,
+.mui-textfield > textarea:disabled,
+.mui-textfield > textarea:-moz-read-only {
+ cursor: not-allowed;
+ background-color: transparent;
+ opacity: 1;
+}
+
+.mui-textfield > input:disabled, .mui-textfield > input:read-only,
+.mui-textfield > textarea:disabled,
+.mui-textfield > textarea:read-only {
+ cursor: not-allowed;
+ background-color: transparent;
+ opacity: 1;
+}
+
+.mui-textfield > input::-webkit-input-placeholder,
+.mui-textfield > textarea::-webkit-input-placeholder {
+ color: rgba(0, 0, 0, 0.26);
+ opacity: 1;
+}
+
+.mui-textfield > input:-ms-input-placeholder,
+.mui-textfield > textarea:-ms-input-placeholder {
+ color: rgba(0, 0, 0, 0.26);
+ opacity: 1;
+}
+
+.mui-textfield > input::placeholder,
+.mui-textfield > textarea::placeholder {
+ color: rgba(0, 0, 0, 0.26);
+ opacity: 1;
+}
+
+.mui-textfield > input {
+ height: 32px;
+}
+
+.mui-textfield > input:focus {
+ height: 33px;
+ margin-bottom: -1px;
+}
+
+.mui-textfield > textarea {
+ min-height: 64px;
+}
+
+.mui-textfield > textarea[rows]:not([rows="2"]):focus {
+ margin-bottom: -1px;
+}
+
+.mui-textfield > input:focus {
+ height: 33px;
+ margin-bottom: -1px;
+}
+
+.mui-textfield > input:invalid:not(:focus):not(:required), .mui-textfield > input:invalid:not(:focus):required.mui--is-not-empty, .mui-textfield > input:invalid:not(:focus):required.mui--is-empty.mui--is-touched, .mui-textfield > input:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty), .mui-textfield > input:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),
+.mui-textfield > textarea:invalid:not(:focus):not(:required),
+.mui-textfield > textarea:invalid:not(:focus):required.mui--is-not-empty,
+.mui-textfield > textarea:invalid:not(:focus):required.mui--is-empty.mui--is-touched,
+.mui-textfield > textarea:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),
+.mui-textfield > textarea:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),
+.mui-textfield > input:not(:focus).mui--is-invalid:not(:required),
+.mui-textfield > input:not(:focus).mui--is-invalid:required.mui--is-not-empty,
+.mui-textfield > input:not(:focus).mui--is-invalid:required.mui--is-empty.mui--is-touched,
+.mui-textfield > input:not(:focus).mui--is-invalid:required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),
+.mui-textfield > input:not(:focus).mui--is-invalid:required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),
+.mui-textfield > textarea:not(:focus).mui--is-invalid:not(:required),
+.mui-textfield > textarea:not(:focus).mui--is-invalid:required.mui--is-not-empty,
+.mui-textfield > textarea:not(:focus).mui--is-invalid:required.mui--is-empty.mui--is-touched,
+.mui-textfield > textarea:not(:focus).mui--is-invalid:required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),
+.mui-textfield > textarea:not(:focus).mui--is-invalid:required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty) {
+ border-color: #F44336;
+ border-width: 2px;
+}
+
+.mui-textfield > input:invalid:not(:focus):not(:required), .mui-textfield > input:invalid:not(:focus):required.mui--is-not-empty, .mui-textfield > input:invalid:not(:focus):required.mui--is-empty.mui--is-touched, .mui-textfield > input:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty), .mui-textfield > input:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty),
+.mui-textfield > input:not(:focus).mui--is-invalid:not(:required),
+.mui-textfield > input:not(:focus).mui--is-invalid:required.mui--is-not-empty,
+.mui-textfield > input:not(:focus).mui--is-invalid:required.mui--is-empty.mui--is-touched,
+.mui-textfield > input:not(:focus).mui--is-invalid:required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty),
+.mui-textfield > input:not(:focus).mui--is-invalid:required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty) {
+ height: 33px;
+ margin-bottom: -1px;
+}
+
+.mui-textfield.mui-textfield--float-label > input:invalid:not(:focus):not(:required) ~ label, .mui-textfield.mui-textfield--float-label > input:invalid:not(:focus):required.mui--is-not-empty ~ label, .mui-textfield.mui-textfield--float-label > input:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty) ~ label, .mui-textfield.mui-textfield--float-label > input:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty) ~ label,
+.mui-textfield.mui-textfield--float-label > textarea:invalid:not(:focus):not(:required) ~ label,
+.mui-textfield.mui-textfield--float-label > textarea:invalid:not(:focus):required.mui--is-not-empty ~ label,
+.mui-textfield.mui-textfield--float-label > textarea:invalid:not(:focus):required[value]:not([value=""]):not(.mui--is-empty):not(.mui--is-not-empty) ~ label,
+.mui-textfield.mui-textfield--float-label > textarea:invalid:not(:focus):required:not(:empty):not(.mui--is-empty):not(.mui--is-not-empty) ~ label {
+ color: #F44336;
+}
+
+.mui-textfield:not(.mui-textfield--float-label) > input:invalid:not(:focus):not(:required) ~ label, .mui-textfield:not(.mui-textfield--float-label) > input:invalid:not(:focus):required.mui--is-empty.mui--is-touched ~ label, .mui-textfield:not(.mui-textfield--float-label) > input:invalid:not(:focus):required.mui--is-not-empty ~ label,
+.mui-textfield:not(.mui-textfield--float-label) > textarea:invalid:not(:focus):not(:required) ~ label,
+.mui-textfield:not(.mui-textfield--float-label) > textarea:invalid:not(:focus):required.mui--is-empty.mui--is-touched ~ label,
+.mui-textfield:not(.mui-textfield--float-label) > textarea:invalid:not(:focus):required.mui--is-not-empty ~ label {
+ color: #F44336;
+}
+
+.mui-textfield.mui-textfield--float-label > .mui--is-invalid.mui--is-not-empty:not(:focus) ~ label {
+ color: #F44336;
+}
+
+.mui-textfield:not(.mui-textfield--float-label) > .mui--is-invalid:not(:focus) ~ label {
+ color: #F44336;
+}
+
+/**
+ * MUI Helpers module
+ */
+.mui--no-transition {
+ transition: none !important;
+}
+
+.mui--no-user-select {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.mui-caret {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-left: 2px;
+ vertical-align: middle;
+ border-top: 4px solid;
+ border-right: 4px solid transparent;
+ border-left: 4px solid transparent;
+}
+
+.mui--text-left {
+ text-align: left !important;
+}
+
+.mui--text-right {
+ text-align: right !important;
+}
+
+.mui--text-center {
+ text-align: center !important;
+}
+
+.mui--text-justify {
+ text-align: justify !important;
+}
+
+.mui--text-nowrap {
+ white-space: nowrap !important;
+}
+
+.mui--align-baseline {
+ vertical-align: baseline !important;
+}
+
+.mui--align-top {
+ vertical-align: top !important;
+}
+
+.mui--align-middle {
+ vertical-align: middle !important;
+}
+
+.mui--align-bottom {
+ vertical-align: bottom !important;
+}
+
+.mui--text-dark {
+ color: rgba(0, 0, 0, 0.87);
+}
+
+.mui--text-dark-secondary {
+ color: rgba(0, 0, 0, 0.54);
+}
+
+.mui--text-dark-hint {
+ color: rgba(0, 0, 0, 0.38);
+}
+
+.mui--text-light {
+ color: #FFF;
+}
+
+.mui--text-light-secondary {
+ color: rgba(255, 255, 255, 0.7);
+}
+
+.mui--text-light-hint {
+ color: rgba(255, 255, 255, 0.3);
+}
+
+.mui--text-accent {
+ color: rgba(255, 64, 129, 0.87);
+}
+
+.mui--text-accent-secondary {
+ color: rgba(255, 64, 129, 0.54);
+}
+
+.mui--text-accent-hint {
+ color: rgba(255, 64, 129, 0.38);
+}
+
+.mui--text-black {
+ color: #000;
+}
+
+.mui--text-white {
+ color: #FFF;
+}
+
+.mui--text-danger {
+ color: #F44336;
+}
+
+.mui--bg-primary {
+ background-color: #2196F3;
+}
+
+.mui--bg-primary-dark {
+ background-color: #1976D2;
+}
+
+.mui--bg-primary-light {
+ background-color: #BBDEFB;
+}
+
+.mui--bg-accent {
+ background-color: #FF4081;
+}
+
+.mui--bg-accent-dark {
+ background-color: #F50057;
+}
+
+.mui--bg-accent-light {
+ background-color: #FF80AB;
+}
+
+.mui--bg-danger {
+ background-color: #F44336;
+}
+
+.mui-list--unstyled {
+ padding-left: 0;
+ list-style: none;
+}
+
+.mui-list--inline {
+ padding-left: 0;
+ list-style: none;
+ margin-left: -5px;
+}
+
+.mui-list--inline > li {
+ display: inline-block;
+ padding-left: 5px;
+ padding-right: 5px;
+}
+
+.mui--z1, .mui-dropdown__menu, .mui-select__menu {
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
+}
+
+.mui--z2 {
+ box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
+}
+
+.mui--z3 {
+ box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
+}
+
+.mui--z4 {
+ box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
+}
+
+.mui--z5 {
+ box-shadow: 0 19px 38px rgba(0, 0, 0, 0.3), 0 15px 12px rgba(0, 0, 0, 0.22);
+}
+
+.mui--clearfix:before, .mui--clearfix:after {
+ content: " ";
+ display: table;
+}
+
+.mui--clearfix:after {
+ clear: both;
+}
+
+.mui--pull-right {
+ float: right !important;
+}
+
+.mui--pull-left {
+ float: left !important;
+}
+
+.mui--hide {
+ display: none !important;
+}
+
+.mui--show {
+ display: block !important;
+}
+
+.mui--invisible {
+ visibility: hidden;
+}
+
+.mui--overflow-hidden {
+ overflow: hidden !important;
+}
+
+.mui--overflow-hidden-x {
+ overflow-x: hidden !important;
+}
+
+.mui--overflow-hidden-y {
+ overflow-y: hidden !important;
+}
+
+.mui--visible-xs-block,
+.mui--visible-xs-inline,
+.mui--visible-xs-inline-block,
+.mui--visible-sm-block,
+.mui--visible-sm-inline,
+.mui--visible-sm-inline-block,
+.mui--visible-md-block,
+.mui--visible-md-inline,
+.mui--visible-md-inline-block,
+.mui--visible-lg-block,
+.mui--visible-lg-inline,
+.mui--visible-lg-inline-block,
+.mui--visible-xl-block,
+.mui--visible-xl-inline,
+.mui--visible-xl-inline-block {
+ display: none !important;
+}
+
+@media (max-width: 543px) {
+ .mui-visible-xs {
+ display: block !important;
+ }
+ table.mui-visible-xs {
+ display: table;
+ }
+ tr.mui-visible-xs {
+ display: table-row !important;
+ }
+ th.mui-visible-xs,
+ td.mui-visible-xs {
+ display: table-cell !important;
+ }
+ .mui--visible-xs-block {
+ display: block !important;
+ }
+ .mui--visible-xs-inline {
+ display: inline !important;
+ }
+ .mui--visible-xs-inline-block {
+ display: inline-block !important;
+ }
+}
+
+@media (min-width: 544px) and (max-width: 767px) {
+ .mui-visible-sm {
+ display: block !important;
+ }
+ table.mui-visible-sm {
+ display: table;
+ }
+ tr.mui-visible-sm {
+ display: table-row !important;
+ }
+ th.mui-visible-sm,
+ td.mui-visible-sm {
+ display: table-cell !important;
+ }
+ .mui--visible-sm-block {
+ display: block !important;
+ }
+ .mui--visible-sm-inline {
+ display: inline !important;
+ }
+ .mui--visible-sm-inline-block {
+ display: inline-block !important;
+ }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+ .mui-visible-md {
+ display: block !important;
+ }
+ table.mui-visible-md {
+ display: table;
+ }
+ tr.mui-visible-md {
+ display: table-row !important;
+ }
+ th.mui-visible-md,
+ td.mui-visible-md {
+ display: table-cell !important;
+ }
+ .mui--visible-md-block {
+ display: block !important;
+ }
+ .mui--visible-md-inline {
+ display: inline !important;
+ }
+ .mui--visible-md-inline-block {
+ display: inline-block !important;
+ }
+}
+
+@media (min-width: 992px) and (max-width: 1199px) {
+ .mui-visible-lg {
+ display: block !important;
+ }
+ table.mui-visible-lg {
+ display: table;
+ }
+ tr.mui-visible-lg {
+ display: table-row !important;
+ }
+ th.mui-visible-lg,
+ td.mui-visible-lg {
+ display: table-cell !important;
+ }
+ .mui--visible-lg-block {
+ display: block !important;
+ }
+ .mui--visible-lg-inline {
+ display: inline !important;
+ }
+ .mui--visible-lg-inline-block {
+ display: inline-block !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .mui-visible-xl {
+ display: block !important;
+ }
+ table.mui-visible-xl {
+ display: table;
+ }
+ tr.mui-visible-xl {
+ display: table-row !important;
+ }
+ th.mui-visible-xl,
+ td.mui-visible-xl {
+ display: table-cell !important;
+ }
+ .mui--visible-xl-block {
+ display: block !important;
+ }
+ .mui--visible-xl-inline {
+ display: inline !important;
+ }
+ .mui--visible-xl-inline-block {
+ display: inline-block !important;
+ }
+}
+
+@media (max-width: 543px) {
+ .mui--hidden-xs {
+ display: none !important;
+ }
+}
+
+@media (min-width: 544px) and (max-width: 767px) {
+ .mui--hidden-sm {
+ display: none !important;
+ }
+}
+
+@media (min-width: 768px) and (max-width: 991px) {
+ .mui--hidden-md {
+ display: none !important;
+ }
+}
+
+@media (min-width: 992px) and (max-width: 1199px) {
+ .mui--hidden-lg {
+ display: none !important;
+ }
+}
+
+@media (min-width: 1200px) {
+ .mui--hidden-xl {
+ display: none !important;
+ }
+}
+
+.mui-scrlock--showbar-y {
+ overflow-y: scroll !important;
+}
+
+.mui-scrlock--showbar-x {
+ overflow-x: scroll !important;
+}
+
+/**
+ * MUI Overlay module
+ */
+#mui-overlay {
+ position: fixed;
+ top: 0;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ z-index: 99999999;
+ background-color: rgba(0, 0, 0, 0.2);
+ overflow: auto;
+}
+
+/**
+ * MUI Ripple module
+ */
+.mui-btn__ripple-container {
+ position: absolute;
+ top: 0;
+ left: 0;
+ display: block;
+ height: 100%;
+ width: 100%;
+ overflow: hidden;
+ z-index: 0;
+}
+
+.mui-ripple {
+ position: absolute;
+ top: 0;
+ left: 0;
+ border-radius: 50%;
+ opacity: 0;
+ pointer-events: none;
+ transform: scale(0.0001, 0.0001);
+}
+
+.mui-ripple.mui--is-animating {
+ transform: none;
+ transition: transform 0.3s cubic-bezier(0, 0, 0.2, 1), width 0.3s cubic-bezier(0, 0, 0.2, 1), height 0.3s cubic-bezier(0, 0, 0.2, 1), opacity 0.3s cubic-bezier(0, 0, 0.2, 1);
+}
+
+.mui-ripple.mui--is-visible {
+ opacity: 0.3;
+}
+
+.mui-btn .mui-ripple {
+ background-color: #a6a6a6;
+}
+
+.mui-btn--primary .mui-ripple {
+ background-color: #FFF;
+}
+
+.mui-btn--dark .mui-ripple {
+ background-color: #FFF;
+}
+
+.mui-btn--danger .mui-ripple {
+ background-color: #FFF;
+}
+
+.mui-btn--accent .mui-ripple {
+ background-color: #FFF;
+}
+
+.mui-btn--flat .mui-ripple {
+ background-color: #a6a6a6;
+}
+
+/**
+ * MUI Typography module
+ */
+.mui--text-display4 {
+ font-weight: 300;
+ font-size: 112px;
+ line-height: 112px;
+}
+
+.mui--text-display3 {
+ font-weight: 400;
+ font-size: 56px;
+ line-height: 56px;
+}
+
+.mui--text-display2 {
+ font-weight: 400;
+ font-size: 45px;
+ line-height: 48px;
+}
+
+.mui--text-display1, h1 {
+ font-weight: 400;
+ font-size: 34px;
+ line-height: 40px;
+}
+
+.mui--text-headline, h2 {
+ font-weight: 400;
+ font-size: 24px;
+ line-height: 32px;
+}
+
+.mui--text-title, h3 {
+ font-weight: 400;
+ font-size: 20px;
+ line-height: 28px;
+}
+
+.mui--text-subhead, h4 {
+ font-weight: 400;
+ font-size: 16px;
+ line-height: 24px;
+}
+
+.mui--text-body2, h5 {
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 24px;
+}
+
+.mui--text-body1 {
+ font-weight: 400;
+ font-size: 14px;
+ line-height: 20px;
+}
+
+.mui--text-caption {
+ font-weight: 400;
+ font-size: 12px;
+ line-height: 16px;
+}
+
+.mui--text-menu {
+ font-weight: 500;
+ font-size: 13px;
+ line-height: 17px;
+}
+
+.mui--text-button {
+ font-weight: 500;
+ font-size: 14px;
+ line-height: 18px;
+ text-transform: uppercase;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/numbers.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/numbers.css
new file mode 100644
index 0000000..714e87d
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/numbers.css
@@ -0,0 +1,67 @@
+a{
+ foo: .0001em;
+ bar: 000px;
+ baz: 0.6px 0.011pt 10.2em +8.8cm;
+ foobar:-0.6px, -0.333pt,-01.05em 050cm;
+}
+b, .test-0\.400em {
+ margin: +0.6px +3pt +1.2em +.8cm;
+ padding: +0.2em +0.8cm;
+}
+c{
+ margin: +2.4px 0px;
+ padding: -0.4px 0px;
+ margin: 1px 0.0em 0rem 0%;
+ padding: 4px 0px;
+ padding: +0000% 0.0% 0in 00.000;
+ margin:-.0em .000pc +0px -00.0000%;
+ transition-duration: 0s;
+ left: -20.0px;
+ padding: 0 0 0 0;
+ margin: 0 0pc 0 0;
+ padding: 10px 0px 20px 0px;
+ margin: 0 0 0;
+ line-height: 0px;
+ width: 0px;
+ max-width: 0%;
+}
+\;b\:0px{
+ leading: 0050% -0010.5% 001.004in -0.45vw;
+ trailing: 5000% .500px 1.200100em 0.40500;
+ transition-duration: 0ms;
+ transform: rotate3d(0grad, 0rad, 0deg);
+ pitch: 0KHZ;
+ pitch:
+ 0hz; /* intentionally on next line */
+ padding: 0 0;
+ top: 0rem;
+ bottom: 0vh;
+ left: 0rem;
+ border-top: 0em solid blue;
+ border-width: 0px;
+ column-gap: 0%;
+ outline-width: 0px;
+ border-radius: 0px 0pc 0% 0em;
+ border-top-right-radius: 0em;
+}
+body
+{
+ margin: /* leading units zeros */ 009px /* trailing fraction zeros */ 9.8000px /* zero pixels (remove units) */ 00px /* zero units */ 0.9em;
+ height: 09.900;
+ width: 00.500;
+ z-index: 0.090;
+ font-size: 09.000;
+ top: 000.000px;
+ bottom: 0px;
+}
+/* Numbers in selectors */
+:lang(de) > p.lang\:0\.234500{height:0.20em }
+#\:34\:0500 {width:10.01% ;}
+/*issue #13*/
+.mg0px .lang\:0em{
+ height:20%;
+ padding-bottom:calc(0.75rem - 1px);
+ margin-right:calc(-0.375em - 1px);
+ transform:translateX(0.3rem);
+ transform:scale3d(0.3, 0.3, 0.3);
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/old-ie-filters.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/old-ie-filters.css
new file mode 100644
index 0000000..68e58e5
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/old-ie-filters.css
@@ -0,0 +1,28 @@
+.a {
+ filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.9914448613738104, M12=-0.13052619222005157, M21=0.13052619222005157, M22=0.9914448613738104, sizingMethod='auto expand');
+}
+.b {
+ display: none;
+ filter:
+ progid:DXImageTransform.Microsoft.Matrix(M11=0.9914448613738104, M12=-0.13052619222005157, M21=0.13052619222005157, M22=0.9914448613738104, sizingMethod='auto expand');
+ vertical-align: bottom;
+}
+
+.shadow {
+ -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=0, Color='#DDDDDD')progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=90, Color='#DDDDDD')progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=180, Color='#DDDDDD')progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=270, Color='#DDDDDD')";
+}
+
+/* example from https://developer.mozilla.org/en/CSS/opacity */
+pre { /* make the box translucent (80% opaque) */
+ border: solid red;
+ opacity: 0.8; /* Firefox, Safari(WebKit), Opera */
+ -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=80)"; /* IE 8 */
+ filter: PROGID:DXImageTransform.Microsoft.Alpha(Opacity=80); /* IE 4-7 */
+ zoom: 1; /* set "zoom", "width" or "height" to trigger "hasLayout" in IE 7 and lower */
+}
+
+/** and again */
+code {
+ -ms-filter: "PROGID:DXImageTransform.Microsoft.Alpha(Opacity=80)"; /* IE 8 */
+ filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=80); /* IE 4-7 */
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/preserve-case.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/preserve-case.css
new file mode 100644
index 0000000..6e89228
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/preserve-case.css
@@ -0,0 +1,15 @@
+#AddAddressForm {
+ padding: 0;
+}
+#AddAddressForm .messageBoxNeutral {
+ padding: 0;
+}
+#FeedbackMailForm{
+ padding: 0;
+}
+#FeedbackMailForm .classe{
+ margin: 0;
+}
+.classes, #FeedBackMailForm {
+ margin: 0;
+}
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/pseudo-classes.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/pseudo-classes.css
new file mode 100644
index 0000000..07789a5
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/pseudo-classes.css
@@ -0,0 +1,6 @@
+* :hover {
+ color: blue
+}
+p :link, #mydiv :active {
+ width: 20%;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/pseudo-elements.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/pseudo-elements.css
new file mode 100644
index 0000000..6bddda7
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/pseudo-elements.css
@@ -0,0 +1,35 @@
+
+*::before, *::after {
+ color:red;
+}
+.test::before{
+ margin: 3px;
+}
+p::first-letter , p::first-line {
+ foo: 1;
+}
+::selection {
+ width: 0
+}
+/*
+because of IE6 first-letter and first-line
+must be followed by a space
+http://reference.sitepoint.com/css/pseudoelement-firstletter
+Thanks: P.Sorokin comment at http://www.phpied.com/cssmin-js/
+*/
+p:first-letter{
+ buh: hum;
+}
+p:FIRST-LINE{
+ baa: 1;
+}
+
+p:first-line,a,p:first-letter,b{
+ color: red;
+}
+ ::before, p ::after {
+ margin: 0px;
+}
+.foo :after {
+ color: red;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/pure.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/pure.css
new file mode 100644
index 0000000..f3e52a3
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/pure.css
@@ -0,0 +1,1508 @@
+/*!
+Pure v0.6.2
+Copyright 2013 Yahoo!
+Licensed under the BSD License.
+https://github.com/yahoo/pure/blob/master/LICENSE.md
+*/
+/*!
+normalize.css v^3.0 | MIT License | git.io/normalize
+Copyright (c) Nicolas Gallagher and Jonathan Neal
+*/
+/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
+
+/**
+ * 1. Set default font family to sans-serif.
+ * 2. Prevent iOS and IE text size adjust after device orientation change,
+ * without disabling user zoom.
+ */
+
+html {
+ font-family: sans-serif; /* 1 */
+ -ms-text-size-adjust: 100%; /* 2 */
+ -webkit-text-size-adjust: 100%; /* 2 */
+}
+
+/**
+ * Remove default margin.
+ */
+
+body {
+ margin: 0;
+}
+
+/* HTML5 display definitions
+ ========================================================================== */
+
+/**
+ * Correct `block` display not defined for any HTML5 element in IE 8/9.
+ * Correct `block` display not defined for `details` or `summary` in IE 10/11
+ * and Firefox.
+ * Correct `block` display not defined for `main` in IE 11.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+menu,
+nav,
+section,
+summary {
+ display: block;
+}
+
+/**
+ * 1. Correct `inline-block` display not defined in IE 8/9.
+ * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
+ */
+
+audio,
+canvas,
+progress,
+video {
+ display: inline-block; /* 1 */
+ vertical-align: baseline; /* 2 */
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+ display: none;
+ height: 0;
+}
+
+/**
+ * Address `[hidden]` styling not present in IE 8/9/10.
+ * Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
+ */
+
+[hidden],
+template {
+ display: none;
+}
+
+/* Links
+ ========================================================================== */
+
+/**
+ * Remove the gray background color from active links in IE 10.
+ */
+
+a {
+ background-color: transparent;
+}
+
+/**
+ * Improve readability of focused elements when they are also in an
+ * active/hover state.
+ */
+
+a:active,
+a:hover {
+ outline: 0;
+}
+
+/* Text-level semantics
+ ========================================================================== */
+
+/**
+ * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
+ */
+
+abbr[title] {
+ border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
+ */
+
+b,
+strong {
+ font-weight: bold;
+}
+
+/**
+ * Address styling not present in Safari and Chrome.
+ */
+
+dfn {
+ font-style: italic;
+}
+
+/**
+ * Address variable `h1` font-size and margin within `section` and `article`
+ * contexts in Firefox 4+, Safari, and Chrome.
+ */
+
+h1 {
+ font-size: 2em;
+ margin: 0.67em 0;
+}
+
+/**
+ * Address styling not present in IE 8/9.
+ */
+
+mark {
+ background: #ff0;
+ color: #000;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+ font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+ font-size: 75%;
+ line-height: 0;
+ position: relative;
+ vertical-align: baseline;
+}
+
+sup {
+ top: -0.5em;
+}
+
+sub {
+ bottom: -0.25em;
+}
+
+/* Embedded content
+ ========================================================================== */
+
+/**
+ * Remove border when inside `a` element in IE 8/9/10.
+ */
+
+img {
+ border: 0;
+}
+
+/**
+ * Correct overflow not hidden in IE 9/10/11.
+ */
+
+svg:not(:root) {
+ overflow: hidden;
+}
+
+/* Grouping content
+ ========================================================================== */
+
+/**
+ * Address margin not present in IE 8/9 and Safari.
+ */
+
+figure {
+ margin: 1em 40px;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ */
+
+hr {
+ box-sizing: content-box;
+ height: 0;
+}
+
+/**
+ * Contain overflow in all browsers.
+ */
+
+pre {
+ overflow: auto;
+}
+
+/**
+ * Address odd `em`-unit font size rendering in all browsers.
+ */
+
+code,
+kbd,
+pre,
+samp {
+ font-family: monospace, monospace;
+ font-size: 1em;
+}
+
+/* Forms
+ ========================================================================== */
+
+/**
+ * Known limitation: by default, Chrome and Safari on OS X allow very limited
+ * styling of `select`, unless a `border` property is set.
+ */
+
+/**
+ * 1. Correct color not being inherited.
+ * Known issue: affects color of disabled elements.
+ * 2. Correct font properties not being inherited.
+ * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
+ */
+
+button,
+input,
+optgroup,
+select,
+textarea {
+ color: inherit; /* 1 */
+ font: inherit; /* 2 */
+ margin: 0; /* 3 */
+}
+
+/**
+ * Address `overflow` set to `hidden` in IE 8/9/10/11.
+ */
+
+button {
+ overflow: visible;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
+ * Correct `select` style inheritance in Firefox.
+ */
+
+button,
+select {
+ text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ * and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ * `input` and others.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+ -webkit-appearance: button; /* 2 */
+ cursor: pointer; /* 3 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+ cursor: default;
+}
+
+/**
+ * Remove inner padding and border in Firefox 4+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+ border: 0;
+ padding: 0;
+}
+
+/**
+ * Address Firefox 4+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+input {
+ line-height: normal;
+}
+
+/**
+ * It's recommended that you don't attempt to style these elements.
+ * Firefox's implementation doesn't respect box-sizing, padding, or width.
+ *
+ * 1. Address box sizing set to `content-box` in IE 8/9/10.
+ * 2. Remove excess padding in IE 8/9/10.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+ box-sizing: border-box; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Fix the cursor style for Chrome's increment/decrement buttons. For certain
+ * `font-size` values of the `input`, it causes the cursor style of the
+ * decrement button to change from `default` to `text`.
+ */
+
+input[type="number"]::-webkit-inner-spin-button,
+input[type="number"]::-webkit-outer-spin-button {
+ height: auto;
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
+ */
+
+input[type="search"] {
+ -webkit-appearance: textfield; /* 1 */
+ box-sizing: content-box; /* 2 */
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari and Chrome on OS X.
+ * Safari (but not Chrome) clips the cancel button when the search input has
+ * padding (and `textfield` appearance).
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+ -webkit-appearance: none;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+ border: 1px solid #c0c0c0;
+ margin: 0 2px;
+ padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct `color` not being inherited in IE 8/9/10/11.
+ * 2. Remove padding so people aren't caught out if they zero out fieldsets.
+ */
+
+legend {
+ border: 0; /* 1 */
+ padding: 0; /* 2 */
+}
+
+/**
+ * Remove default vertical scrollbar in IE 8/9/10/11.
+ */
+
+textarea {
+ overflow: auto;
+}
+
+/**
+ * Don't inherit the `font-weight` (applied by a rule above).
+ * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
+ */
+
+optgroup {
+ font-weight: bold;
+}
+
+/* Tables
+ ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+ border-collapse: collapse;
+ border-spacing: 0;
+}
+
+td,
+th {
+ padding: 0;
+}
+
+/*csslint important:false*/
+
+/* ==========================================================================
+ Pure Base Extras
+ ========================================================================== */
+
+/**
+ * Extra rules that Pure adds on top of Normalize.css
+ */
+
+/**
+ * Always hide an element when it has the `hidden` HTML attribute.
+ */
+
+.hidden,
+[hidden] {
+ display: none !important;
+}
+
+/**
+ * Add this class to an image to make it fit within it's fluid parent wrapper while maintaining
+ * aspect ratio.
+ */
+.pure-img {
+ max-width: 100%;
+ height: auto;
+ display: block;
+}
+
+/*csslint regex-selectors:false, known-properties:false, duplicate-properties:false*/
+
+.pure-g {
+ letter-spacing: -0.31em; /* Webkit: collapse white-space between units */
+ *letter-spacing: normal; /* reset IE < 8 */
+ *word-spacing: -0.43em; /* IE < 8: collapse white-space between units */
+ text-rendering: optimizespeed; /* Webkit: fixes text-rendering: optimizeLegibility */
+
+ /*
+ Sets the font stack to fonts known to work properly with the above letter
+ and word spacings. See: https://github.com/yahoo/pure/issues/41/
+
+ The following font stack makes Pure Grids work on all known environments.
+
+ * FreeSans: Ships with many Linux distros, including Ubuntu
+
+ * Arimo: Ships with Chrome OS. Arimo has to be defined before Helvetica and
+ Arial to get picked up by the browser, even though neither is available
+ in Chrome OS.
+
+ * Droid Sans: Ships with all versions of Android.
+
+ * Helvetica, Arial, sans-serif: Common font stack on OS X and Windows.
+ */
+ font-family: FreeSans, Arimo, "Droid Sans", Helvetica, Arial, sans-serif;
+
+ /* Use flexbox when possible to avoid `letter-spacing` side-effects. */
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-flex-flow: row wrap;
+ -ms-flex-flow: row wrap;
+ flex-flow: row wrap;
+
+ /* Prevents distributing space between rows */
+ -webkit-align-content: flex-start;
+ -ms-flex-line-pack: start;
+ align-content: flex-start;
+}
+
+/* IE10 display: -ms-flexbox (and display: flex in IE 11) does not work inside a table; fall back to block and rely on font hack */
+@media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {
+ table .pure-g {
+ display: block;
+ }
+}
+
+/* Opera as of 12 on Windows needs word-spacing.
+ The ".opera-only" selector is used to prevent actual prefocus styling
+ and is not required in markup.
+*/
+.opera-only :-o-prefocus,
+.pure-g {
+ word-spacing: -0.43em;
+}
+
+.pure-u {
+ display: inline-block;
+ *display: inline; /* IE < 8: fake inline-block */
+ zoom: 1;
+ letter-spacing: normal;
+ word-spacing: normal;
+ vertical-align: top;
+ text-rendering: auto;
+}
+
+/*
+Resets the font family back to the OS/browser's default sans-serif font,
+this the same font stack that Normalize.css sets for the `body`.
+*/
+.pure-g [class *= "pure-u"] {
+ font-family: sans-serif;
+}
+
+.pure-u-1,
+.pure-u-1-1,
+.pure-u-1-2,
+.pure-u-1-3,
+.pure-u-2-3,
+.pure-u-1-4,
+.pure-u-3-4,
+.pure-u-1-5,
+.pure-u-2-5,
+.pure-u-3-5,
+.pure-u-4-5,
+.pure-u-5-5,
+.pure-u-1-6,
+.pure-u-5-6,
+.pure-u-1-8,
+.pure-u-3-8,
+.pure-u-5-8,
+.pure-u-7-8,
+.pure-u-1-12,
+.pure-u-5-12,
+.pure-u-7-12,
+.pure-u-11-12,
+.pure-u-1-24,
+.pure-u-2-24,
+.pure-u-3-24,
+.pure-u-4-24,
+.pure-u-5-24,
+.pure-u-6-24,
+.pure-u-7-24,
+.pure-u-8-24,
+.pure-u-9-24,
+.pure-u-10-24,
+.pure-u-11-24,
+.pure-u-12-24,
+.pure-u-13-24,
+.pure-u-14-24,
+.pure-u-15-24,
+.pure-u-16-24,
+.pure-u-17-24,
+.pure-u-18-24,
+.pure-u-19-24,
+.pure-u-20-24,
+.pure-u-21-24,
+.pure-u-22-24,
+.pure-u-23-24,
+.pure-u-24-24 {
+ display: inline-block;
+ *display: inline;
+ zoom: 1;
+ letter-spacing: normal;
+ word-spacing: normal;
+ vertical-align: top;
+ text-rendering: auto;
+}
+
+.pure-u-1-24 {
+ width: 4.1667%;
+ *width: 4.1357%;
+}
+
+.pure-u-1-12,
+.pure-u-2-24 {
+ width: 8.3333%;
+ *width: 8.3023%;
+}
+
+.pure-u-1-8,
+.pure-u-3-24 {
+ width: 12.5000%;
+ *width: 12.4690%;
+}
+
+.pure-u-1-6,
+.pure-u-4-24 {
+ width: 16.6667%;
+ *width: 16.6357%;
+}
+
+.pure-u-1-5 {
+ width: 20%;
+ *width: 19.9690%;
+}
+
+.pure-u-5-24 {
+ width: 20.8333%;
+ *width: 20.8023%;
+}
+
+.pure-u-1-4,
+.pure-u-6-24 {
+ width: 25%;
+ *width: 24.9690%;
+}
+
+.pure-u-7-24 {
+ width: 29.1667%;
+ *width: 29.1357%;
+}
+
+.pure-u-1-3,
+.pure-u-8-24 {
+ width: 33.3333%;
+ *width: 33.3023%;
+}
+
+.pure-u-3-8,
+.pure-u-9-24 {
+ width: 37.5000%;
+ *width: 37.4690%;
+}
+
+.pure-u-2-5 {
+ width: 40%;
+ *width: 39.9690%;
+}
+
+.pure-u-5-12,
+.pure-u-10-24 {
+ width: 41.6667%;
+ *width: 41.6357%;
+}
+
+.pure-u-11-24 {
+ width: 45.8333%;
+ *width: 45.8023%;
+}
+
+.pure-u-1-2,
+.pure-u-12-24 {
+ width: 50%;
+ *width: 49.9690%;
+}
+
+.pure-u-13-24 {
+ width: 54.1667%;
+ *width: 54.1357%;
+}
+
+.pure-u-7-12,
+.pure-u-14-24 {
+ width: 58.3333%;
+ *width: 58.3023%;
+}
+
+.pure-u-3-5 {
+ width: 60%;
+ *width: 59.9690%;
+}
+
+.pure-u-5-8,
+.pure-u-15-24 {
+ width: 62.5000%;
+ *width: 62.4690%;
+}
+
+.pure-u-2-3,
+.pure-u-16-24 {
+ width: 66.6667%;
+ *width: 66.6357%;
+}
+
+.pure-u-17-24 {
+ width: 70.8333%;
+ *width: 70.8023%;
+}
+
+.pure-u-3-4,
+.pure-u-18-24 {
+ width: 75%;
+ *width: 74.9690%;
+}
+
+.pure-u-19-24 {
+ width: 79.1667%;
+ *width: 79.1357%;
+}
+
+.pure-u-4-5 {
+ width: 80%;
+ *width: 79.9690%;
+}
+
+.pure-u-5-6,
+.pure-u-20-24 {
+ width: 83.3333%;
+ *width: 83.3023%;
+}
+
+.pure-u-7-8,
+.pure-u-21-24 {
+ width: 87.5000%;
+ *width: 87.4690%;
+}
+
+.pure-u-11-12,
+.pure-u-22-24 {
+ width: 91.6667%;
+ *width: 91.6357%;
+}
+
+.pure-u-23-24 {
+ width: 95.8333%;
+ *width: 95.8023%;
+}
+
+.pure-u-1,
+.pure-u-1-1,
+.pure-u-5-5,
+.pure-u-24-24 {
+ width: 100%;
+}
+.pure-button {
+ /* Structure */
+ display: inline-block;
+ zoom: 1;
+ line-height: normal;
+ white-space: nowrap;
+ vertical-align: middle;
+ text-align: center;
+ cursor: pointer;
+ -webkit-user-drag: none;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ box-sizing: border-box;
+}
+
+/* Firefox: Get rid of the inner focus border */
+.pure-button::-moz-focus-inner {
+ padding: 0;
+ border: 0;
+}
+
+/* Inherit .pure-g styles */
+.pure-button-group {
+ letter-spacing: -0.31em; /* Webkit: collapse white-space between units */
+ *letter-spacing: normal; /* reset IE < 8 */
+ *word-spacing: -0.43em; /* IE < 8: collapse white-space between units */
+ text-rendering: optimizespeed; /* Webkit: fixes text-rendering: optimizeLegibility */
+}
+
+.opera-only :-o-prefocus,
+.pure-button-group {
+ word-spacing: -0.43em;
+}
+
+.pure-button-group .pure-button {
+ letter-spacing: normal;
+ word-spacing: normal;
+ vertical-align: top;
+ text-rendering: auto;
+}
+
+/*csslint outline-none:false*/
+
+.pure-button {
+ font-family: inherit;
+ font-size: 100%;
+ padding: 0.5em 1em;
+ color: #444; /* rgba not supported (IE 8) */
+ color: rgba(0, 0, 0, 0.80); /* rgba supported */
+ border: 1px solid #999; /*IE 6/7/8*/
+ border: none rgba(0, 0, 0, 0); /*IE9 + everything else*/
+ background-color: #E6E6E6;
+ text-decoration: none;
+ border-radius: 2px;
+}
+
+.pure-button-hover,
+.pure-button:hover,
+.pure-button:focus {
+ /* csslint ignore:start */
+ filter: alpha(opacity=90);
+ /* csslint ignore:end */
+ background-image: -webkit-linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10));
+ background-image: linear-gradient(transparent, rgba(0,0,0, 0.05) 40%, rgba(0,0,0, 0.10));
+}
+.pure-button:focus {
+ outline: 0;
+}
+.pure-button-active,
+.pure-button:active {
+ box-shadow: 0 0 0 1px rgba(0,0,0, 0.15) inset, 0 0 6px rgba(0,0,0, 0.20) inset;
+ border-color: #000\9;
+}
+
+.pure-button[disabled],
+.pure-button-disabled,
+.pure-button-disabled:hover,
+.pure-button-disabled:focus,
+.pure-button-disabled:active {
+ border: none;
+ background-image: none;
+ /* csslint ignore:start */
+ filter: alpha(opacity=40);
+ /* csslint ignore:end */
+ opacity: 0.40;
+ cursor: not-allowed;
+ box-shadow: none;
+ pointer-events: none;
+}
+
+.pure-button-hidden {
+ display: none;
+}
+
+.pure-button-primary,
+.pure-button-selected,
+a.pure-button-primary,
+a.pure-button-selected {
+ background-color: rgb(0, 120, 231);
+ color: #fff;
+}
+
+/* Button Groups */
+.pure-button-group .pure-button {
+ margin: 0;
+ border-radius: 0;
+ border-right: 1px solid #111; /* fallback color for rgba() for IE7/8 */
+ border-right: 1px solid rgba(0, 0, 0, 0.2);
+
+}
+
+.pure-button-group .pure-button:first-child {
+ border-top-left-radius: 2px;
+ border-bottom-left-radius: 2px;
+}
+.pure-button-group .pure-button:last-child {
+ border-top-right-radius: 2px;
+ border-bottom-right-radius: 2px;
+ border-right: none;
+}
+
+/*csslint box-model:false*/
+/*
+Box-model set to false because we're setting a height on select elements, which
+also have border and padding. This is done because some browsers don't render
+the padding. We explicitly set the box-model for select elements to border-box,
+so we can ignore the csslint warning.
+*/
+
+.pure-form input[type="text"],
+.pure-form input[type="password"],
+.pure-form input[type="email"],
+.pure-form input[type="url"],
+.pure-form input[type="date"],
+.pure-form input[type="month"],
+.pure-form input[type="time"],
+.pure-form input[type="datetime"],
+.pure-form input[type="datetime-local"],
+.pure-form input[type="week"],
+.pure-form input[type="number"],
+.pure-form input[type="search"],
+.pure-form input[type="tel"],
+.pure-form input[type="color"],
+.pure-form select,
+.pure-form textarea {
+ padding: 0.5em 0.6em;
+ display: inline-block;
+ border: 1px solid #ccc;
+ box-shadow: inset 0 1px 3px #ddd;
+ border-radius: 4px;
+ vertical-align: middle;
+ box-sizing: border-box;
+}
+
+/*
+Need to separate out the :not() selector from the rest of the CSS 2.1 selectors
+since IE8 won't execute CSS that contains a CSS3 selector.
+*/
+.pure-form input:not([type]) {
+ padding: 0.5em 0.6em;
+ display: inline-block;
+ border: 1px solid #ccc;
+ box-shadow: inset 0 1px 3px #ddd;
+ border-radius: 4px;
+ box-sizing: border-box;
+}
+
+
+/* Chrome (as of v.32/34 on OS X) needs additional room for color to display. */
+/* May be able to remove this tweak as color inputs become more standardized across browsers. */
+.pure-form input[type="color"] {
+ padding: 0.2em 0.5em;
+}
+
+
+.pure-form input[type="text"]:focus,
+.pure-form input[type="password"]:focus,
+.pure-form input[type="email"]:focus,
+.pure-form input[type="url"]:focus,
+.pure-form input[type="date"]:focus,
+.pure-form input[type="month"]:focus,
+.pure-form input[type="time"]:focus,
+.pure-form input[type="datetime"]:focus,
+.pure-form input[type="datetime-local"]:focus,
+.pure-form input[type="week"]:focus,
+.pure-form input[type="number"]:focus,
+.pure-form input[type="search"]:focus,
+.pure-form input[type="tel"]:focus,
+.pure-form input[type="color"]:focus,
+.pure-form select:focus,
+.pure-form textarea:focus {
+ outline: 0;
+ border-color: #129FEA;
+}
+
+/*
+Need to separate out the :not() selector from the rest of the CSS 2.1 selectors
+since IE8 won't execute CSS that contains a CSS3 selector.
+*/
+.pure-form input:not([type]):focus {
+ outline: 0;
+ border-color: #129FEA;
+}
+
+.pure-form input[type="file"]:focus,
+.pure-form input[type="radio"]:focus,
+.pure-form input[type="checkbox"]:focus {
+ outline: thin solid #129FEA;
+ outline: 1px auto #129FEA;
+}
+.pure-form .pure-checkbox,
+.pure-form .pure-radio {
+ margin: 0.5em 0;
+ display: block;
+}
+
+.pure-form input[type="text"][disabled],
+.pure-form input[type="password"][disabled],
+.pure-form input[type="email"][disabled],
+.pure-form input[type="url"][disabled],
+.pure-form input[type="date"][disabled],
+.pure-form input[type="month"][disabled],
+.pure-form input[type="time"][disabled],
+.pure-form input[type="datetime"][disabled],
+.pure-form input[type="datetime-local"][disabled],
+.pure-form input[type="week"][disabled],
+.pure-form input[type="number"][disabled],
+.pure-form input[type="search"][disabled],
+.pure-form input[type="tel"][disabled],
+.pure-form input[type="color"][disabled],
+.pure-form select[disabled],
+.pure-form textarea[disabled] {
+ cursor: not-allowed;
+ background-color: #eaeded;
+ color: #cad2d3;
+}
+
+/*
+Need to separate out the :not() selector from the rest of the CSS 2.1 selectors
+since IE8 won't execute CSS that contains a CSS3 selector.
+*/
+.pure-form input:not([type])[disabled] {
+ cursor: not-allowed;
+ background-color: #eaeded;
+ color: #cad2d3;
+}
+.pure-form input[readonly],
+.pure-form select[readonly],
+.pure-form textarea[readonly] {
+ background-color: #eee; /* menu hover bg color */
+ color: #777; /* menu text color */
+ border-color: #ccc;
+}
+
+.pure-form input:focus:invalid,
+.pure-form textarea:focus:invalid,
+.pure-form select:focus:invalid {
+ color: #b94a48;
+ border-color: #e9322d;
+}
+.pure-form input[type="file"]:focus:invalid:focus,
+.pure-form input[type="radio"]:focus:invalid:focus,
+.pure-form input[type="checkbox"]:focus:invalid:focus {
+ outline-color: #e9322d;
+}
+.pure-form select {
+ /* Normalizes the height; padding is not sufficient. */
+ height: 2.25em;
+ border: 1px solid #ccc;
+ background-color: white;
+}
+.pure-form select[multiple] {
+ height: auto;
+}
+.pure-form label {
+ margin: 0.5em 0 0.2em;
+}
+.pure-form fieldset {
+ margin: 0;
+ padding: 0.35em 0 0.75em;
+ border: 0;
+}
+.pure-form legend {
+ display: block;
+ width: 100%;
+ padding: 0.3em 0;
+ margin-bottom: 0.3em;
+ color: #333;
+ border-bottom: 1px solid #e5e5e5;
+}
+
+.pure-form-stacked input[type="text"],
+.pure-form-stacked input[type="password"],
+.pure-form-stacked input[type="email"],
+.pure-form-stacked input[type="url"],
+.pure-form-stacked input[type="date"],
+.pure-form-stacked input[type="month"],
+.pure-form-stacked input[type="time"],
+.pure-form-stacked input[type="datetime"],
+.pure-form-stacked input[type="datetime-local"],
+.pure-form-stacked input[type="week"],
+.pure-form-stacked input[type="number"],
+.pure-form-stacked input[type="search"],
+.pure-form-stacked input[type="tel"],
+.pure-form-stacked input[type="color"],
+.pure-form-stacked input[type="file"],
+.pure-form-stacked select,
+.pure-form-stacked label,
+.pure-form-stacked textarea {
+ display: block;
+ margin: 0.25em 0;
+}
+
+/*
+Need to separate out the :not() selector from the rest of the CSS 2.1 selectors
+since IE8 won't execute CSS that contains a CSS3 selector.
+*/
+.pure-form-stacked input:not([type]) {
+ display: block;
+ margin: 0.25em 0;
+}
+.pure-form-aligned input,
+.pure-form-aligned textarea,
+.pure-form-aligned select,
+ /* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead. */
+.pure-form-aligned .pure-help-inline,
+.pure-form-message-inline {
+ display: inline-block;
+ *display: inline;
+ *zoom: 1;
+ vertical-align: middle;
+}
+.pure-form-aligned textarea {
+ vertical-align: top;
+}
+
+/* Aligned Forms */
+.pure-form-aligned .pure-control-group {
+ margin-bottom: 0.5em;
+}
+.pure-form-aligned .pure-control-group label {
+ text-align: right;
+ display: inline-block;
+ vertical-align: middle;
+ width: 10em;
+ margin: 0 1em 0 0;
+}
+.pure-form-aligned .pure-controls {
+ margin: 1.5em 0 0 11em;
+}
+
+/* Rounded Inputs */
+.pure-form input.pure-input-rounded,
+.pure-form .pure-input-rounded {
+ border-radius: 2em;
+ padding: 0.5em 1em;
+}
+
+/* Grouped Inputs */
+.pure-form .pure-group fieldset {
+ margin-bottom: 10px;
+}
+.pure-form .pure-group input,
+.pure-form .pure-group textarea {
+ display: block;
+ padding: 10px;
+ margin: 0 0 -1px;
+ border-radius: 0;
+ position: relative;
+ top: -1px;
+}
+.pure-form .pure-group input:focus,
+.pure-form .pure-group textarea:focus {
+ z-index: 3;
+}
+.pure-form .pure-group input:first-child,
+.pure-form .pure-group textarea:first-child {
+ top: 1px;
+ border-radius: 4px 4px 0 0;
+ margin: 0;
+}
+.pure-form .pure-group input:first-child:last-child,
+.pure-form .pure-group textarea:first-child:last-child {
+ top: 1px;
+ border-radius: 4px;
+ margin: 0;
+}
+.pure-form .pure-group input:last-child,
+.pure-form .pure-group textarea:last-child {
+ top: -2px;
+ border-radius: 0 0 4px 4px;
+ margin: 0;
+}
+.pure-form .pure-group button {
+ margin: 0.35em 0;
+}
+
+.pure-form .pure-input-1 {
+ width: 100%;
+}
+.pure-form .pure-input-3-4 {
+ width: 75%;
+}
+.pure-form .pure-input-2-3 {
+ width: 66%;
+}
+.pure-form .pure-input-1-2 {
+ width: 50%;
+}
+.pure-form .pure-input-1-3 {
+ width: 33%;
+}
+.pure-form .pure-input-1-4 {
+ width: 25%;
+}
+
+/* Inline help for forms */
+/* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead. */
+.pure-form .pure-help-inline,
+.pure-form-message-inline {
+ display: inline-block;
+ padding-left: 0.3em;
+ color: #666;
+ vertical-align: middle;
+ font-size: 0.875em;
+}
+
+/* Block help for forms */
+.pure-form-message {
+ display: block;
+ color: #666;
+ font-size: 0.875em;
+}
+
+@media only screen and (max-width : 480px) {
+ .pure-form button[type="submit"] {
+ margin: 0.7em 0 0;
+ }
+
+ .pure-form input:not([type]),
+ .pure-form input[type="text"],
+ .pure-form input[type="password"],
+ .pure-form input[type="email"],
+ .pure-form input[type="url"],
+ .pure-form input[type="date"],
+ .pure-form input[type="month"],
+ .pure-form input[type="time"],
+ .pure-form input[type="datetime"],
+ .pure-form input[type="datetime-local"],
+ .pure-form input[type="week"],
+ .pure-form input[type="number"],
+ .pure-form input[type="search"],
+ .pure-form input[type="tel"],
+ .pure-form input[type="color"],
+ .pure-form label {
+ margin-bottom: 0.3em;
+ display: block;
+ }
+
+ .pure-group input:not([type]),
+ .pure-group input[type="text"],
+ .pure-group input[type="password"],
+ .pure-group input[type="email"],
+ .pure-group input[type="url"],
+ .pure-group input[type="date"],
+ .pure-group input[type="month"],
+ .pure-group input[type="time"],
+ .pure-group input[type="datetime"],
+ .pure-group input[type="datetime-local"],
+ .pure-group input[type="week"],
+ .pure-group input[type="number"],
+ .pure-group input[type="search"],
+ .pure-group input[type="tel"],
+ .pure-group input[type="color"] {
+ margin-bottom: 0;
+ }
+
+ .pure-form-aligned .pure-control-group label {
+ margin-bottom: 0.3em;
+ text-align: left;
+ display: block;
+ width: 100%;
+ }
+
+ .pure-form-aligned .pure-controls {
+ margin: 1.5em 0 0 0;
+ }
+
+ /* NOTE: pure-help-inline is deprecated. Use .pure-form-message-inline instead. */
+ .pure-form .pure-help-inline,
+ .pure-form-message-inline,
+ .pure-form-message {
+ display: block;
+ font-size: 0.75em;
+ /* Increased bottom padding to make it group with its related input element. */
+ padding: 0.2em 0 0.8em;
+ }
+}
+
+/*csslint adjoining-classes: false, box-model:false*/
+.pure-menu {
+ box-sizing: border-box;
+}
+
+.pure-menu-fixed {
+ position: fixed;
+ left: 0;
+ top: 0;
+ z-index: 3;
+}
+
+.pure-menu-list,
+.pure-menu-item {
+ position: relative;
+}
+
+.pure-menu-list {
+ list-style: none;
+ margin: 0;
+ padding: 0;
+}
+
+.pure-menu-item {
+ padding: 0;
+ margin: 0;
+ height: 100%;
+}
+
+.pure-menu-link,
+.pure-menu-heading {
+ display: block;
+ text-decoration: none;
+ white-space: nowrap;
+}
+
+/* HORIZONTAL MENU */
+.pure-menu-horizontal {
+ width: 100%;
+ white-space: nowrap;
+}
+
+.pure-menu-horizontal .pure-menu-list {
+ display: inline-block;
+}
+
+/* Initial menus should be inline-block so that they are horizontal */
+.pure-menu-horizontal .pure-menu-item,
+.pure-menu-horizontal .pure-menu-heading,
+.pure-menu-horizontal .pure-menu-separator {
+ display: inline-block;
+ *display: inline;
+ zoom: 1;
+ vertical-align: middle;
+}
+
+/* Submenus should still be display: block; */
+.pure-menu-item .pure-menu-item {
+ display: block;
+}
+
+.pure-menu-children {
+ display: none;
+ position: absolute;
+ left: 100%;
+ top: 0;
+ margin: 0;
+ padding: 0;
+ z-index: 3;
+}
+
+.pure-menu-horizontal .pure-menu-children {
+ left: 0;
+ top: auto;
+ width: inherit;
+}
+
+.pure-menu-allow-hover:hover > .pure-menu-children,
+.pure-menu-active > .pure-menu-children {
+ display: block;
+ position: absolute;
+}
+
+/* Vertical Menus - show the dropdown arrow */
+.pure-menu-has-children > .pure-menu-link:after {
+ padding-left: 0.5em;
+ content: "\25B8";
+ font-size: small;
+}
+
+/* Horizontal Menus - show the dropdown arrow */
+.pure-menu-horizontal .pure-menu-has-children > .pure-menu-link:after {
+ content: "\25BE";
+}
+
+/* scrollable menus */
+.pure-menu-scrollable {
+ overflow-y: scroll;
+ overflow-x: hidden;
+}
+
+.pure-menu-scrollable .pure-menu-list {
+ display: block;
+}
+
+.pure-menu-horizontal.pure-menu-scrollable .pure-menu-list {
+ display: inline-block;
+}
+
+.pure-menu-horizontal.pure-menu-scrollable {
+ white-space: nowrap;
+ overflow-y: hidden;
+ overflow-x: auto;
+ -ms-overflow-style: none;
+ -webkit-overflow-scrolling: touch;
+ /* a little extra padding for this style to allow for scrollbars */
+ padding: .5em 0;
+}
+
+.pure-menu-horizontal.pure-menu-scrollable::-webkit-scrollbar {
+ display: none;
+}
+
+/* misc default styling */
+
+.pure-menu-separator,
+.pure-menu-horizontal .pure-menu-children .pure-menu-separator {
+ background-color: #ccc;
+ height: 1px;
+ margin: .3em 0;
+}
+
+.pure-menu-horizontal .pure-menu-separator {
+ width: 1px;
+ height: 1.3em;
+ margin: 0 .3em ;
+}
+
+/* Need to reset the separator since submenu is vertical */
+.pure-menu-horizontal .pure-menu-children .pure-menu-separator {
+ display: block;
+ width: auto;
+}
+
+.pure-menu-heading {
+ text-transform: uppercase;
+ color: #565d64;
+}
+
+.pure-menu-link {
+ color: #777;
+}
+
+.pure-menu-children {
+ background-color: #fff;
+}
+
+.pure-menu-link,
+.pure-menu-disabled,
+.pure-menu-heading {
+ padding: .5em 1em;
+}
+
+.pure-menu-disabled {
+ opacity: .5;
+}
+
+.pure-menu-disabled .pure-menu-link:hover {
+ background-color: transparent;
+}
+
+.pure-menu-active > .pure-menu-link,
+.pure-menu-link:hover,
+.pure-menu-link:focus {
+ background-color: #eee;
+}
+
+.pure-menu-selected .pure-menu-link,
+.pure-menu-selected .pure-menu-link:visited {
+ color: #000;
+}
+
+.pure-table {
+ /* Remove spacing between table cells (from Normalize.css) */
+ border-collapse: collapse;
+ border-spacing: 0;
+ empty-cells: show;
+ border: 1px solid #cbcbcb;
+}
+
+.pure-table caption {
+ color: #000;
+ font: italic 85%/1 arial, sans-serif;
+ padding: 1em 0;
+ text-align: center;
+}
+
+.pure-table td,
+.pure-table th {
+ border-left: 1px solid #cbcbcb;/* inner column border */
+ border-width: 0 0 0 1px;
+ font-size: inherit;
+ margin: 0;
+ overflow: visible; /*to make ths where the title is really long work*/
+ padding: 0.5em 1em; /* cell padding */
+}
+
+/* Consider removing this next declaration block, as it causes problems when
+there's a rowspan on the first cell. Case added to the tests. issue#432 */
+.pure-table td:first-child,
+.pure-table th:first-child {
+ border-left-width: 0;
+}
+
+.pure-table thead {
+ background-color: #e0e0e0;
+ color: #000;
+ text-align: left;
+ vertical-align: bottom;
+}
+
+/*
+striping:
+ even - #fff (white)
+ odd - #f2f2f2 (light gray)
+*/
+.pure-table td {
+ background-color: transparent;
+}
+.pure-table-odd td {
+ background-color: #f2f2f2;
+}
+
+/* nth-child selector for modern browsers */
+.pure-table-striped tr:nth-child(2n-1) td {
+ background-color: #f2f2f2;
+}
+
+/* BORDERED TABLES */
+.pure-table-bordered td {
+ border-bottom: 1px solid #cbcbcb;
+}
+.pure-table-bordered tbody > tr:last-child > td {
+ border-bottom-width: 0;
+}
+
+
+/* HORIZONTAL BORDERED TABLES */
+
+.pure-table-horizontal td,
+.pure-table-horizontal th {
+ border-width: 0 0 1px 0;
+ border-bottom: 1px solid #cbcbcb;
+}
+.pure-table-horizontal tbody > tr:last-child > td {
+ border-bottom-width: 0;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/semicolons.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/semicolons.css
new file mode 100644
index 0000000..fa6acb4
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/semicolons.css
@@ -0,0 +1,7 @@
+.testA {
+ width: 2px;;
+ color: blue;; ;;
+}
+.testB{
+ ;;;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/shortenable-properties.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/shortenable-properties.css
new file mode 100644
index 0000000..1361063
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/shortenable-properties.css
@@ -0,0 +1,33 @@
+a {
+ margin: 4px 4px 4px 4px;
+ padding: 4px 4px 4px;
+ border-radius: 4px 4px 4px;
+ border-width: 4px 4px !important;
+ border-style: dashed dashed dashed dashed;
+ border-style: dashed dashed
+}
+
+b {
+ margin: +4px -.2em 4.0px -0.2em;
+ border-width: 2px 0 2px 0px;
+ border-style: dashed solid dashed solid;
+}
+
+c {
+ border-radius: 1em 2px 3% 2px !important;
+ border-style: dashed dotted solid dotted;
+}
+
+d {
+ margin: 4px 4px 4px 4pc;
+ padding: 23rem 1.2em 23em 1.2rem;
+ border-width: calc(1px + 2px) 3.44em calc(1px + 2px) 3.44em; /* calc() will not match our regex so optimization won't be applied here */
+}
+
+e {
+ border-color: white #fff #FFFFFF #FFF;
+ border-color: white #fff #FFFFFF;
+ border-color: white #FFF;
+ border-color: #fff black white #000000;
+ border-color: #FFFFFF red #000 red;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/sourcemap-comment.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/sourcemap-comment.css
new file mode 100644
index 0000000..eb1f08d
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/sourcemap-comment.css
@@ -0,0 +1,5 @@
+a {
+ color: #0a0a0a;
+}
+
+/*# sourceMappingURL=styles.css.map */ \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/star-underscore-hacks.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/star-underscore-hacks.css
new file mode 100644
index 0000000..c2916b9
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/star-underscore-hacks.css
@@ -0,0 +1,6 @@
+#elementarr {
+ width: 1px;
+ *width: 3pt;
+ _width: 2em;
+}
+button, input { line-height: normal; *overflow: visible; } \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/strings.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/strings.css
new file mode 100644
index 0000000..2b0ea7e
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/strings.css
@@ -0,0 +1,28 @@
+/* Box model hack: http://tantek.com/CSS/Examples/boxmodelhack.html */
+
+#elem {
+ width: 100px;
+ voice-family: "\"}\"";
+ voice-family:inherit;
+ width: 200px;
+}
+html>body #elem {
+ width: 200px;
+}
+
+/* preserving newlines in strings */
+#sel-o {
+ content: "on\"ce upon \
+a time";
+ content: 'once upon \
+a ti\'me';
+}
+
+
+/* preserving strings */
+.sele {
+ content: "\"keep \" me";
+ something: '\\\' . . ';
+ else: 'empty{}';
+ content: "/* test */"; /* <---- this is not a comment, should be be kept */
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/text-shadow.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/text-shadow.css
new file mode 100644
index 0000000..180349a
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/text-shadow.css
@@ -0,0 +1,4 @@
+a{text-shadow: 0 0 0;}
+b{
+ TEXT-SHADOW:0 0 0
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/unit-ms.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/unit-ms.css
new file mode 100644
index 0000000..67468c1
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/unit-ms.css
@@ -0,0 +1,12 @@
+.test\:-300ms,
+.test-200ms {
+ transition: box-shadow 200ms ease-out;
+ transition-duration: 10s, 30s, 230MS;
+ foo: 100.50ms;
+ bar: +1500ms;
+ baz: -350ms;
+}
+.foo {
+ transition-duration: 500mS;
+ animation-delay: 50ms;
+} \ No newline at end of file
diff --git a/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/webkit-transform-origin.css b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/webkit-transform-origin.css
new file mode 100644
index 0000000..7cce8ad
--- /dev/null
+++ b/admin/survey/minify/vendor/tubalmartin/cssmin/tests/fixtures/webkit-transform-origin.css
@@ -0,0 +1,2 @@
+c {-webkit-transform-origin: 0 0;}
+d {-MOZ-TRANSFORM-ORIGIN: 0 0 } \ No newline at end of file