From f39d60b60bc73d5af9f9a19f37c4dd39a043647d Mon Sep 17 00:00:00 2001 From: Sebastian Date: Fri, 14 Apr 2017 21:45:15 +0200 Subject: [PATCH] Version 1.0.0 --- .htaccess | 26 + composer.json | 26 + composer.lock | 662 +++++++ content/0_typemill/01-use-cases.md | 20 + content/0_typemill/03-features.md | 22 + content/0_typemill/09-roadmap.md | 13 + content/0_typemill/bnmc-bolachas-02.png | Bin 0 -> 87004 bytes content/0_typemill/index.md | 3 + .../00-system-requirements.md | 15 + content/1_getting-started/01-installation.md | 68 + content/1_getting-started/02-settings.md | 44 + content/1_getting-started/index.md | 3 + content/2_for-writers/00-quick-start.md | 11 + content/2_for-writers/02-mardown.md | 156 ++ .../10-naming-files-and-folders.md | 19 + content/2_for-writers/30-folder-structure.md | 5 + content/2_for-writers/index.md | 3 + content/3_for-developers/01-quick-start.md | 40 + content/3_for-developers/03-twig.md | 208 ++ .../3_for-developers/04-theme-structure.md | 38 + .../05-theme-variables/05-content.md | 7 + .../05-theme-variables/08-description.md | 9 + .../05-theme-variables/10-item.md | 302 +++ .../05-theme-variables/15-breadcrumb.md | 11 + .../05-theme-variables/25-navigation.md | 102 + .../05-theme-variables/30-settings.md | 62 + .../05-theme-variables/index.md | 3 + content/3_for-developers/index.md | 3 + content/4_info/01-release-notes.md | 16 + content/4_info/05-usage-and-licence.md | 16 + content/4_info/10-Imprint-and-privacy.md | 12 + content/4_info/15_markdown-test.md | 100 + content/4_info/index.md | 3 + content/index.md | 2 + index.php | 9 + licence.md | 7 + readme.md | 50 + settings/settings.yaml.example | 6 + system/Controllers/Controller.php | 23 + system/Controllers/PageController.php | 132 ++ system/Controllers/SetupController.php | 138 ++ system/Models/Cache.php | 81 + system/Models/Folder.php | 274 +++ system/Models/Helpers.php | 28 + system/Routes/api.php | 7 + system/Routes/web.php | 13 + system/author/css/normalize.css | 461 +++++ system/author/css/style.css | 231 +++ system/author/layout.twig | 18 + system/author/setup.twig | 74 + system/author/welcome.twig | 17 + system/autoload.php | 7 + system/settings.php | 23 + system/system.php | 77 + system/vendor/autoload.php | 7 + system/vendor/composer/ClassLoader.php | 445 +++++ system/vendor/composer/LICENSE | 21 + system/vendor/composer/autoload_classmap.php | 9 + system/vendor/composer/autoload_files.php | 10 + .../vendor/composer/autoload_namespaces.php | 14 + system/vendor/composer/autoload_psr4.php | 18 + system/vendor/composer/autoload_real.php | 70 + system/vendor/composer/autoload_static.php | 117 ++ system/vendor/composer/installed.json | 667 +++++++ .../container-interop/.gitignore | 3 + .../container-interop/LICENSE | 20 + .../container-interop/README.md | 148 ++ .../container-interop/composer.json | 15 + .../docs/ContainerInterface-meta.md | 114 ++ .../docs/ContainerInterface.md | 158 ++ .../docs/Delegate-lookup-meta.md | 259 +++ .../container-interop/docs/Delegate-lookup.md | 60 + .../docs/images/interoperating_containers.png | Bin 0 -> 25738 bytes .../docs/images/priority.png | Bin 0 -> 16252 bytes .../docs/images/side_by_side_containers.png | Bin 0 -> 16265 bytes .../Interop/Container/ContainerInterface.php | 15 + .../Exception/ContainerException.php | 15 + .../Container/Exception/NotFoundException.php | 15 + system/vendor/erusev/parsedown | 1 + system/vendor/erusev/parsedown-extra | 1 + system/vendor/jbroadway/urlify | 1 + system/vendor/nikic/fast-route/.gitignore | 5 + system/vendor/nikic/fast-route/.hhconfig | 1 + system/vendor/nikic/fast-route/.travis.yml | 12 + system/vendor/nikic/fast-route/FastRoute.hhi | 126 ++ system/vendor/nikic/fast-route/LICENSE | 31 + system/vendor/nikic/fast-route/README.md | 313 +++ system/vendor/nikic/fast-route/composer.json | 21 + system/vendor/nikic/fast-route/phpunit.xml | 24 + .../fast-route/src/BadRouteException.php | 6 + .../nikic/fast-route/src/DataGenerator.php | 25 + .../src/DataGenerator/CharCountBased.php | 28 + .../src/DataGenerator/GroupCountBased.php | 28 + .../src/DataGenerator/GroupPosBased.php | 25 + .../src/DataGenerator/MarkBased.php | 25 + .../src/DataGenerator/RegexBasedAbstract.php | 144 ++ .../nikic/fast-route/src/Dispatcher.php | 25 + .../src/Dispatcher/CharCountBased.php | 28 + .../src/Dispatcher/GroupCountBased.php | 28 + .../src/Dispatcher/GroupPosBased.php | 30 + .../fast-route/src/Dispatcher/MarkBased.php | 28 + .../src/Dispatcher/RegexBasedAbstract.php | 80 + system/vendor/nikic/fast-route/src/Route.php | 38 + .../nikic/fast-route/src/RouteCollector.php | 136 ++ .../nikic/fast-route/src/RouteParser.php | 36 + .../nikic/fast-route/src/RouteParser/Std.php | 81 + .../vendor/nikic/fast-route/src/bootstrap.php | 12 + .../vendor/nikic/fast-route/src/functions.php | 72 + .../test/Dispatcher/CharCountBasedTest.php | 13 + .../test/Dispatcher/DispatcherTest.php | 561 ++++++ .../test/Dispatcher/GroupCountBasedTest.php | 13 + .../test/Dispatcher/GroupPosBasedTest.php | 13 + .../test/Dispatcher/MarkBasedTest.php | 20 + .../HackTypechecker/HackTypecheckerTest.php | 39 + .../HackTypechecker/fixtures/all_options.php | 29 + .../fixtures/empty_options.php | 11 + .../HackTypechecker/fixtures/no_options.php | 11 + .../fast-route/test/RouteCollectorTest.php | 97 + .../fast-route/test/RouteParser/StdTest.php | 147 ++ .../nikic/fast-route/test/bootstrap.php | 11 + system/vendor/pimple/pimple/.gitignore | 3 + system/vendor/pimple/pimple/.travis.yml | 32 + system/vendor/pimple/pimple/CHANGELOG | 35 + system/vendor/pimple/pimple/LICENSE | 19 + system/vendor/pimple/pimple/README.rst | 201 ++ system/vendor/pimple/pimple/composer.json | 25 + .../pimple/pimple/ext/pimple/.gitignore | 30 + .../vendor/pimple/pimple/ext/pimple/README.md | 12 + .../vendor/pimple/pimple/ext/pimple/config.m4 | 63 + .../pimple/pimple/ext/pimple/config.w32 | 13 + .../pimple/pimple/ext/pimple/php_pimple.h | 121 ++ .../vendor/pimple/pimple/ext/pimple/pimple.c | 922 +++++++++ .../pimple/pimple/ext/pimple/pimple_compat.h | 81 + .../pimple/pimple/ext/pimple/tests/001.phpt | 45 + .../pimple/pimple/ext/pimple/tests/002.phpt | 15 + .../pimple/pimple/ext/pimple/tests/003.phpt | 16 + .../pimple/pimple/ext/pimple/tests/004.phpt | 30 + .../pimple/pimple/ext/pimple/tests/005.phpt | 27 + .../pimple/pimple/ext/pimple/tests/006.phpt | 51 + .../pimple/pimple/ext/pimple/tests/007.phpt | 22 + .../pimple/pimple/ext/pimple/tests/008.phpt | 29 + .../pimple/pimple/ext/pimple/tests/009.phpt | 13 + .../pimple/pimple/ext/pimple/tests/010.phpt | 45 + .../pimple/pimple/ext/pimple/tests/011.phpt | 19 + .../pimple/pimple/ext/pimple/tests/012.phpt | 28 + .../pimple/pimple/ext/pimple/tests/013.phpt | 33 + .../pimple/pimple/ext/pimple/tests/014.phpt | 30 + .../pimple/pimple/ext/pimple/tests/015.phpt | 17 + .../pimple/pimple/ext/pimple/tests/016.phpt | 24 + .../pimple/pimple/ext/pimple/tests/017.phpt | 17 + .../pimple/pimple/ext/pimple/tests/017_1.phpt | 17 + .../pimple/pimple/ext/pimple/tests/018.phpt | 23 + .../pimple/pimple/ext/pimple/tests/019.phpt | 18 + .../pimple/pimple/ext/pimple/tests/bench.phpb | 51 + .../pimple/ext/pimple/tests/bench_shared.phpb | 25 + system/vendor/pimple/pimple/phpunit.xml.dist | 14 + .../pimple/pimple/src/Pimple/Container.php | 282 +++ .../src/Pimple/ServiceProviderInterface.php | 46 + .../src/Pimple/Tests/Fixtures/Invokable.php | 38 + .../Pimple/Tests/Fixtures/NonInvokable.php | 34 + .../Tests/Fixtures/PimpleServiceProvider.php | 54 + .../src/Pimple/Tests/Fixtures/Service.php | 35 + .../PimpleServiceProviderInterfaceTest.php | 76 + .../pimple/src/Pimple/Tests/PimpleTest.php | 440 +++++ system/vendor/psr/container/.gitignore | 3 + system/vendor/psr/container/LICENSE | 21 + system/vendor/psr/container/README.md | 5 + system/vendor/psr/container/composer.json | 27 + .../src/ContainerExceptionInterface.php | 13 + .../psr/container/src/ContainerInterface.php | 37 + .../src/NotFoundExceptionInterface.php | 13 + system/vendor/psr/http-message/CHANGELOG.md | 36 + system/vendor/psr/http-message/LICENSE | 19 + system/vendor/psr/http-message/README.md | 13 + system/vendor/psr/http-message/composer.json | 26 + .../psr/http-message/src/MessageInterface.php | 187 ++ .../psr/http-message/src/RequestInterface.php | 129 ++ .../http-message/src/ResponseInterface.php | 68 + .../src/ServerRequestInterface.php | 261 +++ .../psr/http-message/src/StreamInterface.php | 158 ++ .../src/UploadedFileInterface.php | 123 ++ .../psr/http-message/src/UriInterface.php | 323 ++++ system/vendor/slim/flash | 1 + system/vendor/slim/slim/LICENSE.md | 19 + system/vendor/slim/slim/Slim/App.php | 677 +++++++ .../slim/slim/Slim/CallableResolver.php | 110 ++ .../slim/Slim/CallableResolverAwareTrait.php | 47 + system/vendor/slim/slim/Slim/Collection.php | 202 ++ system/vendor/slim/slim/Slim/Container.php | 179 ++ .../slim/Slim/DefaultServicesProvider.php | 209 ++ .../slim/slim/Slim/DeferredCallable.php | 45 + .../Slim/Exception/ContainerException.php | 20 + .../ContainerValueNotFoundException.php | 20 + .../Slim/Exception/InvalidMethodException.php | 21 + .../Exception/MethodNotAllowedException.php | 45 + .../slim/Slim/Exception/NotFoundException.php | 14 + .../slim/Slim/Exception/SlimException.php | 69 + .../slim/slim/Slim/Handlers/AbstractError.php | 99 + .../slim/Slim/Handlers/AbstractHandler.php | 59 + .../vendor/slim/slim/Slim/Handlers/Error.php | 224 +++ .../slim/slim/Slim/Handlers/NotAllowed.php | 147 ++ .../slim/slim/Slim/Handlers/NotFound.php | 126 ++ .../slim/slim/Slim/Handlers/PhpError.php | 205 ++ .../Handlers/Strategies/RequestResponse.php | 43 + .../Strategies/RequestResponseArgs.php | 42 + system/vendor/slim/slim/Slim/Http/Body.php | 22 + system/vendor/slim/slim/Slim/Http/Cookies.php | 195 ++ .../slim/slim/Slim/Http/Environment.php | 52 + system/vendor/slim/slim/Slim/Http/Headers.php | 222 +++ system/vendor/slim/slim/Slim/Http/Message.php | 304 +++ system/vendor/slim/slim/Slim/Http/Request.php | 1216 ++++++++++++ .../slim/slim/Slim/Http/RequestBody.php | 27 + .../vendor/slim/slim/Slim/Http/Response.php | 480 +++++ system/vendor/slim/slim/Slim/Http/Stream.php | 450 +++++ .../slim/slim/Slim/Http/UploadedFile.php | 327 ++++ system/vendor/slim/slim/Slim/Http/Uri.php | 824 ++++++++ .../Interfaces/CallableResolverInterface.php | 27 + .../Slim/Interfaces/CollectionInterface.php | 32 + .../Slim/Interfaces/Http/CookiesInterface.php | 23 + .../Interfaces/Http/EnvironmentInterface.php | 20 + .../Slim/Interfaces/Http/HeadersInterface.php | 24 + .../InvocationStrategyInterface.php | 35 + .../Slim/Interfaces/RouteGroupInterface.php | 46 + .../slim/Slim/Interfaces/RouteInterface.php | 129 ++ .../slim/Slim/Interfaces/RouterInterface.php | 111 ++ .../slim/slim/Slim/MiddlewareAwareTrait.php | 126 ++ system/vendor/slim/slim/Slim/Routable.php | 106 + system/vendor/slim/slim/Slim/Route.php | 381 ++++ system/vendor/slim/slim/Slim/RouteGroup.php | 47 + system/vendor/slim/slim/Slim/Router.php | 455 +++++ system/vendor/slim/slim/composer.json | 58 + system/vendor/slim/twig-view | 1 + system/vendor/symfony/yaml/.gitignore | 3 + system/vendor/symfony/yaml/CHANGELOG.md | 28 + system/vendor/symfony/yaml/Dumper.php | 77 + system/vendor/symfony/yaml/Escaper.php | 99 + .../symfony/yaml/Exception/DumpException.php | 21 + .../yaml/Exception/ExceptionInterface.php | 21 + .../symfony/yaml/Exception/ParseException.php | 146 ++ .../yaml/Exception/RuntimeException.php | 21 + system/vendor/symfony/yaml/Inline.php | 589 ++++++ system/vendor/symfony/yaml/LICENSE | 19 + system/vendor/symfony/yaml/Parser.php | 824 ++++++++ system/vendor/symfony/yaml/README.md | 13 + .../vendor/symfony/yaml/Tests/DumperTest.php | 257 +++ .../yaml/Tests/Fixtures/YtsAnchorAlias.yml | 31 + .../yaml/Tests/Fixtures/YtsBasicTests.yml | 202 ++ .../yaml/Tests/Fixtures/YtsBlockMapping.yml | 51 + .../Tests/Fixtures/YtsDocumentSeparator.yml | 85 + .../yaml/Tests/Fixtures/YtsErrorTests.yml | 25 + .../Tests/Fixtures/YtsFlowCollections.yml | 60 + .../yaml/Tests/Fixtures/YtsFoldedScalars.yml | 176 ++ .../Tests/Fixtures/YtsNullsAndEmpties.yml | 45 + .../Fixtures/YtsSpecificationExamples.yml | 1697 +++++++++++++++++ .../yaml/Tests/Fixtures/YtsTypeTransfers.yml | 244 +++ .../yaml/Tests/Fixtures/embededPhp.yml | 1 + .../yaml/Tests/Fixtures/escapedCharacters.yml | 155 ++ .../symfony/yaml/Tests/Fixtures/index.yml | 18 + .../yaml/Tests/Fixtures/sfComments.yml | 76 + .../symfony/yaml/Tests/Fixtures/sfCompact.yml | 159 ++ .../yaml/Tests/Fixtures/sfMergeKey.yml | 60 + .../symfony/yaml/Tests/Fixtures/sfObjects.yml | 11 + .../symfony/yaml/Tests/Fixtures/sfQuotes.yml | 33 + .../symfony/yaml/Tests/Fixtures/sfTests.yml | 149 ++ .../Tests/Fixtures/unindentedCollections.yml | 82 + .../vendor/symfony/yaml/Tests/InlineTest.php | 482 +++++ .../symfony/yaml/Tests/ParseExceptionTest.php | 42 + .../vendor/symfony/yaml/Tests/ParserTest.php | 1239 ++++++++++++ system/vendor/symfony/yaml/Tests/YamlTest.php | 56 + system/vendor/symfony/yaml/Unescaper.php | 156 ++ system/vendor/symfony/yaml/Yaml.php | 100 + system/vendor/symfony/yaml/composer.json | 33 + system/vendor/symfony/yaml/phpunit.xml.dist | 28 + system/vendor/twig/twig/.editorconfig | 18 + system/vendor/twig/twig/.gitignore | 5 + system/vendor/twig/twig/.php_cs.dist | 15 + system/vendor/twig/twig/.travis.yml | 43 + system/vendor/twig/twig/CHANGELOG | 942 +++++++++ system/vendor/twig/twig/LICENSE | 31 + system/vendor/twig/twig/README.rst | 15 + system/vendor/twig/twig/composer.json | 47 + system/vendor/twig/twig/doc/advanced.rst | 962 ++++++++++ .../vendor/twig/twig/doc/advanced_legacy.rst | 885 +++++++++ system/vendor/twig/twig/doc/api.rst | 590 ++++++ .../vendor/twig/twig/doc/coding_standards.rst | 101 + system/vendor/twig/twig/doc/deprecated.rst | 224 +++ system/vendor/twig/twig/doc/filters/abs.rst | 18 + system/vendor/twig/twig/doc/filters/batch.rst | 51 + .../twig/twig/doc/filters/capitalize.rst | 11 + .../twig/doc/filters/convert_encoding.rst | 28 + system/vendor/twig/twig/doc/filters/date.rst | 100 + .../twig/twig/doc/filters/date_modify.rst | 23 + .../vendor/twig/twig/doc/filters/default.rst | 33 + .../vendor/twig/twig/doc/filters/escape.rst | 119 ++ system/vendor/twig/twig/doc/filters/first.rst | 25 + .../vendor/twig/twig/doc/filters/format.rst | 16 + system/vendor/twig/twig/doc/filters/index.rst | 37 + system/vendor/twig/twig/doc/filters/join.rst | 23 + .../twig/twig/doc/filters/json_encode.rst | 21 + system/vendor/twig/twig/doc/filters/keys.rst | 11 + system/vendor/twig/twig/doc/filters/last.rst | 25 + .../vendor/twig/twig/doc/filters/length.rst | 21 + system/vendor/twig/twig/doc/filters/lower.rst | 10 + system/vendor/twig/twig/doc/filters/merge.rst | 48 + system/vendor/twig/twig/doc/filters/nl2br.rst | 22 + .../twig/twig/doc/filters/number_format.rst | 48 + system/vendor/twig/twig/doc/filters/raw.rst | 36 + .../vendor/twig/twig/doc/filters/replace.rst | 19 + .../vendor/twig/twig/doc/filters/reverse.rst | 47 + system/vendor/twig/twig/doc/filters/round.rst | 37 + system/vendor/twig/twig/doc/filters/slice.rst | 71 + system/vendor/twig/twig/doc/filters/sort.rst | 18 + system/vendor/twig/twig/doc/filters/split.rst | 53 + .../twig/twig/doc/filters/striptags.rst | 29 + system/vendor/twig/twig/doc/filters/title.rst | 11 + system/vendor/twig/twig/doc/filters/trim.rst | 45 + system/vendor/twig/twig/doc/filters/upper.rst | 10 + .../twig/twig/doc/filters/url_encode.rst | 34 + .../twig/twig/doc/functions/attribute.rst | 26 + .../vendor/twig/twig/doc/functions/block.rst | 41 + .../twig/twig/doc/functions/constant.rst | 29 + .../vendor/twig/twig/doc/functions/cycle.rst | 28 + .../vendor/twig/twig/doc/functions/date.rst | 55 + .../vendor/twig/twig/doc/functions/dump.rst | 69 + .../twig/twig/doc/functions/include.rst | 84 + .../vendor/twig/twig/doc/functions/index.rst | 20 + system/vendor/twig/twig/doc/functions/max.rst | 20 + system/vendor/twig/twig/doc/functions/min.rst | 20 + .../vendor/twig/twig/doc/functions/parent.rst | 20 + .../vendor/twig/twig/doc/functions/random.rst | 29 + .../vendor/twig/twig/doc/functions/range.rst | 58 + .../vendor/twig/twig/doc/functions/source.rst | 32 + .../doc/functions/template_from_string.rst | 32 + system/vendor/twig/twig/doc/index.rst | 19 + system/vendor/twig/twig/doc/installation.rst | 116 ++ system/vendor/twig/twig/doc/internals.rst | 142 ++ system/vendor/twig/twig/doc/intro.rst | 85 + system/vendor/twig/twig/doc/recipes.rst | 568 ++++++ .../vendor/twig/twig/doc/tags/autoescape.rst | 81 + system/vendor/twig/twig/doc/tags/block.rst | 11 + system/vendor/twig/twig/doc/tags/do.rst | 12 + system/vendor/twig/twig/doc/tags/embed.rst | 178 ++ system/vendor/twig/twig/doc/tags/extends.rst | 272 +++ system/vendor/twig/twig/doc/tags/filter.rst | 21 + system/vendor/twig/twig/doc/tags/flush.rst | 17 + system/vendor/twig/twig/doc/tags/for.rst | 172 ++ system/vendor/twig/twig/doc/tags/from.rst | 8 + system/vendor/twig/twig/doc/tags/if.rst | 76 + system/vendor/twig/twig/doc/tags/import.rst | 57 + system/vendor/twig/twig/doc/tags/include.rst | 90 + system/vendor/twig/twig/doc/tags/index.rst | 25 + system/vendor/twig/twig/doc/tags/macro.rst | 103 + system/vendor/twig/twig/doc/tags/sandbox.rst | 30 + system/vendor/twig/twig/doc/tags/set.rst | 78 + .../vendor/twig/twig/doc/tags/spaceless.rst | 37 + system/vendor/twig/twig/doc/tags/use.rst | 124 ++ system/vendor/twig/twig/doc/tags/verbatim.rst | 24 + system/vendor/twig/twig/doc/tags/with.rst | 44 + system/vendor/twig/twig/doc/templates.rst | 908 +++++++++ .../vendor/twig/twig/doc/tests/constant.rst | 22 + system/vendor/twig/twig/doc/tests/defined.rst | 30 + .../twig/twig/doc/tests/divisibleby.rst | 14 + system/vendor/twig/twig/doc/tests/empty.rst | 22 + system/vendor/twig/twig/doc/tests/even.rst | 10 + system/vendor/twig/twig/doc/tests/index.rst | 15 + .../vendor/twig/twig/doc/tests/iterable.rst | 19 + system/vendor/twig/twig/doc/tests/null.rst | 12 + system/vendor/twig/twig/doc/tests/odd.rst | 10 + system/vendor/twig/twig/doc/tests/sameas.rst | 14 + system/vendor/twig/twig/ext/twig/.gitignore | 30 + system/vendor/twig/twig/ext/twig/config.m4 | 8 + system/vendor/twig/twig/ext/twig/config.w32 | 8 + system/vendor/twig/twig/ext/twig/php_twig.h | 35 + system/vendor/twig/twig/ext/twig/twig.c | 1215 ++++++++++++ .../vendor/twig/twig/lib/Twig/Autoloader.php | 54 + .../twig/twig/lib/Twig/BaseNodeVisitor.php | 50 + .../twig/twig/lib/Twig/Cache/Filesystem.php | 91 + .../vendor/twig/twig/lib/Twig/Cache/Null.php | 38 + .../twig/twig/lib/Twig/CacheInterface.php | 56 + system/vendor/twig/twig/lib/Twig/Compiler.php | 281 +++ .../twig/twig/lib/Twig/CompilerInterface.php | 34 + .../twig/lib/Twig/ContainerRuntimeLoader.php | 37 + .../vendor/twig/twig/lib/Twig/Environment.php | 1561 +++++++++++++++ system/vendor/twig/twig/lib/Twig/Error.php | 365 ++++ .../twig/twig/lib/Twig/Error/Loader.php | 38 + .../twig/twig/lib/Twig/Error/Runtime.php | 20 + .../twig/twig/lib/Twig/Error/Syntax.php | 53 + .../twig/lib/Twig/ExistsLoaderInterface.php | 29 + .../twig/twig/lib/Twig/ExpressionParser.php | 739 +++++++ .../vendor/twig/twig/lib/Twig/Extension.php | 65 + .../twig/twig/lib/Twig/Extension/Core.php | 1603 ++++++++++++++++ .../twig/twig/lib/Twig/Extension/Debug.php | 65 + .../twig/twig/lib/Twig/Extension/Escaper.php | 110 ++ .../lib/Twig/Extension/GlobalsInterface.php | 22 + .../Twig/Extension/InitRuntimeInterface.php | 22 + .../twig/lib/Twig/Extension/Optimizer.php | 33 + .../twig/twig/lib/Twig/Extension/Profiler.php | 46 + .../twig/twig/lib/Twig/Extension/Sandbox.php | 101 + .../twig/twig/lib/Twig/Extension/Staging.php | 110 ++ .../twig/lib/Twig/Extension/StringLoader.php | 45 + .../twig/twig/lib/Twig/ExtensionInterface.php | 87 + .../twig/lib/Twig/FactoryRuntimeLoader.php | 37 + .../Twig/FileExtensionEscapingStrategy.php | 58 + system/vendor/twig/twig/lib/Twig/Filter.php | 84 + .../twig/twig/lib/Twig/Filter/Function.php | 40 + .../twig/twig/lib/Twig/Filter/Method.php | 42 + .../vendor/twig/twig/lib/Twig/Filter/Node.php | 42 + .../twig/lib/Twig/FilterCallableInterface.php | 24 + .../twig/twig/lib/Twig/FilterInterface.php | 43 + system/vendor/twig/twig/lib/Twig/Function.php | 74 + .../twig/twig/lib/Twig/Function/Function.php | 41 + .../twig/twig/lib/Twig/Function/Method.php | 43 + .../twig/twig/lib/Twig/Function/Node.php | 42 + .../lib/Twig/FunctionCallableInterface.php | 24 + .../twig/twig/lib/Twig/FunctionInterface.php | 40 + system/vendor/twig/twig/lib/Twig/Lexer.php | 422 ++++ .../twig/twig/lib/Twig/LexerInterface.php | 32 + .../twig/twig/lib/Twig/Loader/Array.php | 95 + .../twig/twig/lib/Twig/Loader/Chain.php | 149 ++ .../twig/twig/lib/Twig/Loader/Filesystem.php | 288 +++ .../twig/twig/lib/Twig/Loader/String.php | 58 + .../twig/twig/lib/Twig/LoaderInterface.php | 55 + system/vendor/twig/twig/lib/Twig/Markup.php | 37 + system/vendor/twig/twig/lib/Twig/Node.php | 253 +++ .../twig/twig/lib/Twig/Node/AutoEscape.php | 34 + .../vendor/twig/twig/lib/Twig/Node/Block.php | 39 + .../twig/lib/Twig/Node/BlockReference.php | 32 + .../vendor/twig/twig/lib/Twig/Node/Body.php | 19 + .../twig/twig/lib/Twig/Node/CheckSecurity.php | 78 + system/vendor/twig/twig/lib/Twig/Node/Do.php | 33 + .../vendor/twig/twig/lib/Twig/Node/Embed.php | 44 + .../twig/twig/lib/Twig/Node/Expression.php | 20 + .../twig/lib/Twig/Node/Expression/Array.php | 81 + .../lib/Twig/Node/Expression/AssignName.php | 23 + .../twig/lib/Twig/Node/Expression/Binary.php | 35 + .../lib/Twig/Node/Expression/Binary/Add.php | 18 + .../lib/Twig/Node/Expression/Binary/And.php | 18 + .../Node/Expression/Binary/BitwiseAnd.php | 18 + .../Twig/Node/Expression/Binary/BitwiseOr.php | 18 + .../Node/Expression/Binary/BitwiseXor.php | 18 + .../Twig/Node/Expression/Binary/Concat.php | 18 + .../lib/Twig/Node/Expression/Binary/Div.php | 18 + .../Twig/Node/Expression/Binary/EndsWith.php | 30 + .../lib/Twig/Node/Expression/Binary/Equal.php | 17 + .../Twig/Node/Expression/Binary/FloorDiv.php | 24 + .../Twig/Node/Expression/Binary/Greater.php | 17 + .../Node/Expression/Binary/GreaterEqual.php | 17 + .../lib/Twig/Node/Expression/Binary/In.php | 28 + .../lib/Twig/Node/Expression/Binary/Less.php | 17 + .../Twig/Node/Expression/Binary/LessEqual.php | 17 + .../Twig/Node/Expression/Binary/Matches.php | 28 + .../lib/Twig/Node/Expression/Binary/Mod.php | 18 + .../lib/Twig/Node/Expression/Binary/Mul.php | 18 + .../Twig/Node/Expression/Binary/NotEqual.php | 17 + .../lib/Twig/Node/Expression/Binary/NotIn.php | 28 + .../lib/Twig/Node/Expression/Binary/Or.php | 18 + .../lib/Twig/Node/Expression/Binary/Power.php | 32 + .../lib/Twig/Node/Expression/Binary/Range.php | 28 + .../Node/Expression/Binary/StartsWith.php | 30 + .../lib/Twig/Node/Expression/Binary/Sub.php | 18 + .../Twig/Node/Expression/BlockReference.php | 91 + .../twig/lib/Twig/Node/Expression/Call.php | 289 +++ .../lib/Twig/Node/Expression/Conditional.php | 31 + .../lib/Twig/Node/Expression/Constant.php | 23 + .../Node/Expression/ExtensionReference.php | 32 + .../twig/lib/Twig/Node/Expression/Filter.php | 39 + .../Twig/Node/Expression/Filter/Default.php | 43 + .../lib/Twig/Node/Expression/Function.php | 43 + .../twig/lib/Twig/Node/Expression/GetAttr.php | 72 + .../lib/Twig/Node/Expression/MethodCall.php | 41 + .../twig/lib/Twig/Node/Expression/Name.php | 100 + .../lib/Twig/Node/Expression/NullCoalesce.php | 46 + .../twig/lib/Twig/Node/Expression/Parent.php | 42 + .../lib/Twig/Node/Expression/TempName.php | 26 + .../twig/lib/Twig/Node/Expression/Test.php | 40 + .../Twig/Node/Expression/Test/Constant.php | 46 + .../lib/Twig/Node/Expression/Test/Defined.php | 59 + .../Twig/Node/Expression/Test/Divisibleby.php | 33 + .../lib/Twig/Node/Expression/Test/Even.php | 32 + .../lib/Twig/Node/Expression/Test/Null.php | 31 + .../lib/Twig/Node/Expression/Test/Odd.php | 32 + .../lib/Twig/Node/Expression/Test/Sameas.php | 29 + .../twig/lib/Twig/Node/Expression/Unary.php | 27 + .../lib/Twig/Node/Expression/Unary/Neg.php | 18 + .../lib/Twig/Node/Expression/Unary/Not.php | 18 + .../lib/Twig/Node/Expression/Unary/Pos.php | 18 + .../vendor/twig/twig/lib/Twig/Node/Flush.php | 31 + system/vendor/twig/twig/lib/Twig/Node/For.php | 111 ++ .../twig/twig/lib/Twig/Node/ForLoop.php | 50 + system/vendor/twig/twig/lib/Twig/Node/If.php | 66 + .../vendor/twig/twig/lib/Twig/Node/Import.php | 49 + .../twig/twig/lib/Twig/Node/Include.php | 88 + .../vendor/twig/twig/lib/Twig/Node/Macro.php | 123 ++ .../vendor/twig/twig/lib/Twig/Node/Module.php | 459 +++++ .../vendor/twig/twig/lib/Twig/Node/Print.php | 34 + .../twig/twig/lib/Twig/Node/Sandbox.php | 42 + .../twig/lib/Twig/Node/SandboxedPrint.php | 49 + system/vendor/twig/twig/lib/Twig/Node/Set.php | 96 + .../twig/twig/lib/Twig/Node/SetTemp.php | 35 + .../twig/twig/lib/Twig/Node/Spaceless.php | 35 + .../vendor/twig/twig/lib/Twig/Node/Text.php | 34 + .../vendor/twig/twig/lib/Twig/Node/With.php | 62 + .../twig/lib/Twig/NodeCaptureInterface.php | 19 + .../twig/twig/lib/Twig/NodeInterface.php | 32 + .../twig/lib/Twig/NodeOutputInterface.php | 19 + .../twig/twig/lib/Twig/NodeTraverser.php | 82 + .../twig/lib/Twig/NodeVisitor/Escaper.php | 152 ++ .../twig/lib/Twig/NodeVisitor/Optimizer.php | 251 +++ .../lib/Twig/NodeVisitor/SafeAnalysis.php | 148 ++ .../twig/lib/Twig/NodeVisitor/Sandbox.php | 75 + .../twig/lib/Twig/NodeVisitorInterface.php | 41 + system/vendor/twig/twig/lib/Twig/Parser.php | 406 ++++ .../twig/twig/lib/Twig/ParserInterface.php | 29 + .../lib/Twig/Profiler/Dumper/Blackfire.php | 70 + .../twig/lib/Twig/Profiler/Dumper/Html.php | 45 + .../twig/lib/Twig/Profiler/Dumper/Text.php | 70 + .../lib/Twig/Profiler/Node/EnterProfile.php | 37 + .../lib/Twig/Profiler/Node/LeaveProfile.php | 31 + .../Twig/Profiler/NodeVisitor/Profiler.php | 65 + .../twig/twig/lib/Twig/Profiler/Profile.php | 162 ++ .../twig/lib/Twig/RuntimeLoaderInterface.php | 27 + .../twig/lib/Twig/Sandbox/SecurityError.php | 19 + .../Sandbox/SecurityNotAllowedFilterError.php | 31 + .../SecurityNotAllowedFunctionError.php | 31 + .../Sandbox/SecurityNotAllowedMethodError.php | 38 + .../SecurityNotAllowedPropertyError.php | 38 + .../Sandbox/SecurityNotAllowedTagError.php | 31 + .../twig/lib/Twig/Sandbox/SecurityPolicy.php | 123 ++ .../Twig/Sandbox/SecurityPolicyInterface.php | 24 + .../twig/twig/lib/Twig/SimpleFilter.php | 119 ++ .../twig/twig/lib/Twig/SimpleFunction.php | 109 ++ .../vendor/twig/twig/lib/Twig/SimpleTest.php | 71 + system/vendor/twig/twig/lib/Twig/Source.php | 51 + .../lib/Twig/SourceContextLoaderInterface.php | 31 + system/vendor/twig/twig/lib/Twig/Template.php | 701 +++++++ .../twig/twig/lib/Twig/TemplateInterface.php | 48 + .../twig/twig/lib/Twig/TemplateWrapper.php | 131 ++ system/vendor/twig/twig/lib/Twig/Test.php | 37 + .../twig/twig/lib/Twig/Test/Function.php | 38 + .../lib/Twig/Test/IntegrationTestCase.php | 232 +++ .../vendor/twig/twig/lib/Twig/Test/Method.php | 40 + .../vendor/twig/twig/lib/Twig/Test/Node.php | 40 + .../twig/twig/lib/Twig/Test/NodeTestCase.php | 68 + .../twig/lib/Twig/TestCallableInterface.php | 22 + .../twig/twig/lib/Twig/TestInterface.php | 27 + system/vendor/twig/twig/lib/Twig/Token.php | 205 ++ .../vendor/twig/twig/lib/Twig/TokenParser.php | 31 + .../twig/lib/Twig/TokenParser/AutoEscape.php | 81 + .../twig/twig/lib/Twig/TokenParser/Block.php | 71 + .../twig/twig/lib/Twig/TokenParser/Do.php | 32 + .../twig/twig/lib/Twig/TokenParser/Embed.php | 65 + .../twig/lib/Twig/TokenParser/Extends.php | 44 + .../twig/twig/lib/Twig/TokenParser/Filter.php | 51 + .../twig/twig/lib/Twig/TokenParser/Flush.php | 32 + .../twig/twig/lib/Twig/TokenParser/For.php | 125 ++ .../twig/twig/lib/Twig/TokenParser/From.php | 64 + .../twig/twig/lib/Twig/TokenParser/If.php | 84 + .../twig/twig/lib/Twig/TokenParser/Import.php | 39 + .../twig/lib/Twig/TokenParser/Include.php | 65 + .../twig/twig/lib/Twig/TokenParser/Macro.php | 58 + .../twig/lib/Twig/TokenParser/Sandbox.php | 59 + .../twig/twig/lib/Twig/TokenParser/Set.php | 73 + .../twig/lib/Twig/TokenParser/Spaceless.php | 49 + .../twig/twig/lib/Twig/TokenParser/Use.php | 66 + .../twig/twig/lib/Twig/TokenParser/With.php | 50 + .../twig/twig/lib/Twig/TokenParserBroker.php | 120 ++ .../lib/Twig/TokenParserBrokerInterface.php | 44 + .../twig/lib/Twig/TokenParserInterface.php | 39 + .../vendor/twig/twig/lib/Twig/TokenStream.php | 194 ++ .../lib/Twig/Util/DeprecationCollector.php | 84 + .../lib/Twig/Util/TemplateDirIterator.php | 26 + system/vendor/twig/twig/phpunit.xml.dist | 33 + .../twig/test/Twig/Tests/AutoloaderTest.php | 24 + .../test/Twig/Tests/Cache/FilesystemTest.php | 193 ++ .../twig/test/Twig/Tests/CompilerTest.php | 33 + .../Twig/Tests/ContainerRuntimeLoaderTest.php | 40 + .../test/Twig/Tests/CustomExtensionTest.php | 93 + .../twig/test/Twig/Tests/EnvironmentTest.php | 655 +++++++ .../twig/twig/test/Twig/Tests/ErrorTest.php | 211 ++ .../test/Twig/Tests/ExpressionParserTest.php | 377 ++++ .../test/Twig/Tests/Extension/CoreTest.php | 355 ++++ .../test/Twig/Tests/Extension/SandboxTest.php | 304 +++ .../Twig/Tests/FactoryRuntimeLoaderTest.php | 32 + .../twig/test/Twig/Tests/FileCachingTest.php | 63 + .../FileExtensionEscapingStrategyTest.php | 51 + .../twig/test/Twig/Tests/FilesystemHelper.php | 30 + .../Twig/Tests/Fixtures/autoescape/block.test | 21 + .../Twig/Tests/Fixtures/autoescape/name.test | 18 + .../test/Twig/Tests/Fixtures/errors/base.html | 1 + .../Twig/Tests/Fixtures/errors/index.html | 7 + .../child_contents_outside_blocks.test | 15 + ...ltiline_array_with_undefined_variable.test | 18 + ...e_array_with_undefined_variable_again.test | 18 + ...line_function_with_undefined_variable.test | 12 + ...tiline_function_with_unknown_argument.test | 9 + ...multiline_tag_with_undefined_variable.test | 12 + .../syntax_error_in_reused_template.test | 10 + .../Fixtures/exceptions/unclosed_tag.test | 20 + .../Fixtures/exceptions/undefined_parent.test | 8 + .../undefined_template_in_child_template.test | 15 + .../Fixtures/exceptions/undefined_trait.test | 9 + .../Tests/Fixtures/expressions/_self.test | 8 + .../Tests/Fixtures/expressions/array.test | 61 + .../Fixtures/expressions/array_call.test | 14 + .../Tests/Fixtures/expressions/binary.test | 46 + .../Tests/Fixtures/expressions/bitwise.test | 14 + .../Fixtures/expressions/comparison.test | 14 + .../Fixtures/expressions/divisibleby.test | 17 + .../Tests/Fixtures/expressions/dotdot.test | 20 + .../Tests/Fixtures/expressions/ends_with.test | 26 + .../Tests/Fixtures/expressions/grouping.test | 8 + .../Tests/Fixtures/expressions/literals.test | 22 + .../Fixtures/expressions/magic_call.test | 27 + .../Tests/Fixtures/expressions/matches.test | 12 + .../Fixtures/expressions/method_call.test | 28 + .../expressions/negative_numbers.test | 18 + .../expressions/operators_as_variables.test | 16 + .../Tests/Fixtures/expressions/postfix.test | 22 + .../Tests/Fixtures/expressions/power.test | 20 + .../Tests/Fixtures/expressions/sameas.test | 21 + .../Fixtures/expressions/starts_with.test | 27 + .../Tests/Fixtures/expressions/strings.test | 10 + .../expressions/ternary_operator.test | 18 + .../expressions/ternary_operator_noelse.test | 10 + .../expressions/ternary_operator_nothen.test | 10 + .../two_word_operators_as_variables.test | 8 + .../Tests/Fixtures/expressions/unary.test | 12 + .../expressions/unary_macro_arguments.test | 22 + .../expressions/unary_precedence.test | 14 + .../test/Twig/Tests/Fixtures/filters/abs.test | 30 + .../Twig/Tests/Fixtures/filters/batch.test | 31 + .../Tests/Fixtures/filters/batch_float.test | 29 + .../filters/batch_with_empty_fill.test | 37 + .../filters/batch_with_exact_elements.test | 33 + .../Fixtures/filters/batch_with_fill.test | 37 + .../Fixtures/filters/batch_with_keys.test | 10 + .../filters/batch_with_zero_elements.test | 10 + .../Fixtures/filters/convert_encoding.test | 10 + .../Twig/Tests/Fixtures/filters/date.test | 90 + .../Fixtures/filters/date_default_format.test | 14 + .../filters/date_default_format_interval.test | 16 + .../Fixtures/filters/date_immutable.test | 37 + .../Tests/Fixtures/filters/date_interval.test | 19 + .../Tests/Fixtures/filters/date_modify.test | 14 + .../Fixtures/filters/date_namedargs.test | 13 + .../Twig/Tests/Fixtures/filters/default.test | 150 ++ .../Fixtures/filters/dynamic_filter.test | 10 + .../Twig/Tests/Fixtures/filters/escape.test | 8 + .../Fixtures/filters/escape_html_attr.test | 8 + .../Fixtures/filters/escape_javascript.test | 8 + .../filters/escape_non_supported_charset.test | 8 + .../Twig/Tests/Fixtures/filters/first.test | 17 + .../Tests/Fixtures/filters/force_escape.test | 18 + .../Twig/Tests/Fixtures/filters/format.test | 8 + .../Twig/Tests/Fixtures/filters/join.test | 12 + .../Tests/Fixtures/filters/json_encode.test | 12 + .../Twig/Tests/Fixtures/filters/last.test | 17 + .../Twig/Tests/Fixtures/filters/length.test | 25 + .../Tests/Fixtures/filters/length_utf8.test | 12 + .../Twig/Tests/Fixtures/filters/merge.test | 18 + .../Twig/Tests/Fixtures/filters/nl2br.test | 14 + .../Tests/Fixtures/filters/number_format.test | 18 + .../filters/number_format_default.test | 21 + .../Twig/Tests/Fixtures/filters/replace.test | 12 + .../Fixtures/filters/replace_invalid_arg.test | 8 + .../Twig/Tests/Fixtures/filters/reverse.test | 18 + .../Twig/Tests/Fixtures/filters/round.test | 22 + .../Twig/Tests/Fixtures/filters/slice.test | 54 + .../Twig/Tests/Fixtures/filters/sort.test | 12 + .../Tests/Fixtures/filters/special_chars.test | 8 + .../Twig/Tests/Fixtures/filters/split.test | 20 + .../Tests/Fixtures/filters/split_utf8.test | 24 + .../Tests/Fixtures/filters/static_calls.test | 10 + .../Twig/Tests/Fixtures/filters/trim.test | 24 + .../Tests/Fixtures/filters/urlencode.test | 16 + .../filters/urlencode_deprecated.test | 16 + .../Tests/Fixtures/functions/attribute.test | 18 + .../Twig/Tests/Fixtures/functions/block.test | 12 + .../functions/block_with_template.test | 22 + .../functions/block_without_name.test | 12 + .../Tests/Fixtures/functions/constant.test | 10 + .../Twig/Tests/Fixtures/functions/cycle.test | 16 + .../Twig/Tests/Fixtures/functions/date.test | 25 + .../Fixtures/functions/date_namedargs.test | 11 + .../Twig/Tests/Fixtures/functions/dump.test | 16 + .../Tests/Fixtures/functions/dump_array.test | 19 + .../Fixtures/functions/dynamic_function.test | 10 + .../functions/include/assignment.test | 13 + .../functions/include/autoescaping.test | 10 + .../Fixtures/functions/include/basic.test | 17 + .../functions/include/expression.test | 17 + .../functions/include/ignore_missing.test | 10 + .../Fixtures/functions/include/missing.test | 8 + .../functions/include/missing_nested.test | 16 + .../Fixtures/functions/include/sandbox.test | 13 + .../functions/include/sandbox_disabling.test | 16 + .../sandbox_disabling_ignore_missing.test | 13 + .../functions/include/template_instance.test | 10 + .../functions/include/templates_as_array.test | 12 + .../functions/include/with_context.test | 16 + .../functions/include/with_variables.test | 12 + .../Tests/Fixtures/functions/magic_call.test | 8 + .../Fixtures/functions/magic_call53.test | 12 + .../Twig/Tests/Fixtures/functions/max.test | 12 + .../Twig/Tests/Fixtures/functions/min.test | 12 + .../Twig/Tests/Fixtures/functions/range.test | 8 + .../recursive_block_with_inheritance.test | 21 + .../Twig/Tests/Fixtures/functions/source.test | 17 + .../Fixtures/functions/special_chars.test | 8 + .../Fixtures/functions/static_calls.test | 10 + .../functions/template_from_string.test | 15 + .../Tests/Fixtures/macros/default_values.test | 16 + .../Tests/Fixtures/macros/nested_calls.test | 18 + .../Fixtures/macros/reserved_variables.test | 14 + .../Twig/Tests/Fixtures/macros/simple.test | 22 + .../Twig/Tests/Fixtures/macros/varargs.test | 21 + .../Fixtures/macros/varargs_argument.test | 7 + .../Tests/Fixtures/macros/with_filters.test | 14 + .../regression/combined_debug_info.test | 15 + .../Fixtures/regression/empty_token.test | 8 + .../Tests/Fixtures/regression/issue_1143.test | 23 + .../Fixtures/regression/multi_word_tests.test | 10 + .../regression/simple_xml_element.test | 19 + .../regression/strings_like_numbers.test | 8 + .../Tests/Fixtures/tags/autoescape/basic.test | 26 + .../Fixtures/tags/autoescape/blocks.test | 12 + .../tags/autoescape/double_escaping.test | 10 + .../Fixtures/tags/autoescape/functions.test | 83 + .../Fixtures/tags/autoescape/literal.test | 45 + .../Fixtures/tags/autoescape/nested.test | 26 + .../Fixtures/tags/autoescape/objects.test | 26 + .../Tests/Fixtures/tags/autoescape/raw.test | 10 + .../tags/autoescape/strategy.legacy.test | 11 + .../Fixtures/tags/autoescape/strategy.test | 11 + .../Tests/Fixtures/tags/autoescape/type.test | 69 + .../tags/autoescape/with_filters.test | 131 ++ .../autoescape/with_filters_arguments.test | 23 + .../autoescape/with_pre_escape_filters.test | 68 + .../with_preserves_safety_filters.test | 50 + .../Twig/Tests/Fixtures/tags/block/basic.test | 11 + .../tags/block/block_unique_name.test | 11 + .../Fixtures/tags/block/special_chars.test | 10 + .../Twig/Tests/Fixtures/tags/embed/basic.test | 35 + .../tags/embed/complex_dynamic_parent.test | 35 + .../Fixtures/tags/embed/dynamic_parent.test | 35 + .../Tests/Fixtures/tags/embed/error_line.test | 16 + .../Tests/Fixtures/tags/embed/multiple.test | 50 + .../Tests/Fixtures/tags/embed/nested.test | 42 + .../Fixtures/tags/embed/with_extends.test | 60 + .../Tests/Fixtures/tags/filter/basic.test | 10 + .../Fixtures/tags/filter/json_encode.test | 8 + .../Tests/Fixtures/tags/filter/multiple.test | 10 + .../Tests/Fixtures/tags/filter/nested.test | 16 + .../Fixtures/tags/filter/with_for_tag.test | 13 + .../Fixtures/tags/filter/with_if_tag.test | 29 + .../Tests/Fixtures/tags/for/condition.test | 14 + .../Twig/Tests/Fixtures/tags/for/context.test | 18 + .../Twig/Tests/Fixtures/tags/for/else.test | 23 + .../Fixtures/tags/for/inner_variables.test | 17 + .../Twig/Tests/Fixtures/tags/for/keys.test | 11 + .../Fixtures/tags/for/keys_and_values.test | 11 + .../Tests/Fixtures/tags/for/loop_context.test | 19 + .../Fixtures/tags/for/loop_context_local.test | 10 + .../Fixtures/tags/for/loop_not_defined.test | 10 + .../tags/for/loop_not_defined_cond.test | 9 + .../Tests/Fixtures/tags/for/nested_else.test | 17 + .../Twig/Tests/Fixtures/tags/for/objects.test | 43 + .../Fixtures/tags/for/objects_countable.test | 47 + .../Tests/Fixtures/tags/for/recursive.test | 18 + .../Twig/Tests/Fixtures/tags/for/values.test | 11 + .../test/Twig/Tests/Fixtures/tags/from.test | 14 + .../Twig/Tests/Fixtures/tags/if/basic.test | 22 + .../Tests/Fixtures/tags/if/expression.test | 22 + .../Tests/Fixtures/tags/include/basic.test | 16 + .../Fixtures/tags/include/expression.test | 16 + .../Fixtures/tags/include/ignore_missing.test | 10 + .../Tests/Fixtures/tags/include/missing.test | 8 + .../Fixtures/tags/include/missing_nested.test | 16 + .../Tests/Fixtures/tags/include/only.test | 16 + .../tags/include/template_instance.test | 10 + .../tags/include/templates_as_array.test | 12 + .../Fixtures/tags/include/with_variables.test | 12 + .../Fixtures/tags/inheritance/basic.test | 14 + .../Fixtures/tags/inheritance/block_expr.test | 32 + .../tags/inheritance/block_expr2.test | 34 + .../tags/inheritance/conditional.test | 14 + .../Fixtures/tags/inheritance/dynamic.test | 14 + .../Fixtures/tags/inheritance/empty.test | 10 + .../tags/inheritance/extends_as_array.test | 12 + .../extends_as_array_with_empty_name.test | 12 + .../extends_as_array_with_null_name.test | 12 + .../Fixtures/tags/inheritance/multiple.test | 12 + .../tags/inheritance/multiple_dynamic.test | 22 + .../tags/inheritance/nested_blocks.test | 22 + .../nested_blocks_parent_only.test | 15 + .../tags/inheritance/nested_inheritance.test | 16 + .../Fixtures/tags/inheritance/parent.test | 12 + .../tags/inheritance/parent_change.test | 16 + .../tags/inheritance/parent_in_a_block.test | 8 + .../tags/inheritance/parent_isolation.test | 20 + .../tags/inheritance/parent_nested.test | 28 + .../inheritance/parent_without_extends.test | 8 + .../parent_without_extends_but_traits.test | 14 + .../tags/inheritance/template_instance.test | 14 + .../Tests/Fixtures/tags/inheritance/use.test | 44 + .../Twig/Tests/Fixtures/tags/macro/basic.test | 17 + .../Fixtures/tags/macro/endmacro_name.test | 16 + .../Tests/Fixtures/tags/macro/external.test | 17 + .../Twig/Tests/Fixtures/tags/macro/from.test | 18 + .../tags/macro/from_with_reserved_name.test | 9 + .../Tests/Fixtures/tags/macro/global.test | 14 + .../tags/macro/import_with_reserved_nam.test | 11 + .../Fixtures/tags/macro/reserved_name.test | 10 + .../Fixtures/tags/macro/self_import.test | 17 + .../Fixtures/tags/macro/special_chars.test | 14 + .../Fixtures/tags/macro/super_globals.test | 14 + .../Tests/Fixtures/tags/raw/basic.legacy.test | 10 + .../tags/raw/mixed_usage_with_raw.legacy.test | 10 + .../tags/raw/whitespace_control.legacy.test | 56 + .../Fixtures/tags/sandbox/not_valid1.test | 11 + .../Fixtures/tags/sandbox/not_valid2.test | 14 + .../Tests/Fixtures/tags/sandbox/simple.test | 22 + .../Twig/Tests/Fixtures/tags/set/basic.test | 20 + .../Fixtures/tags/set/capture-empty.test | 9 + .../Twig/Tests/Fixtures/tags/set/capture.test | 10 + .../Tests/Fixtures/tags/set/expression.test | 12 + .../Tests/Fixtures/tags/spaceless/simple.test | 12 + .../Tests/Fixtures/tags/special_chars.test | 8 + .../Twig/Tests/Fixtures/tags/trim_block.test | 74 + .../Twig/Tests/Fixtures/tags/use/aliases.test | 12 + .../Twig/Tests/Fixtures/tags/use/basic.test | 12 + .../Twig/Tests/Fixtures/tags/use/deep.test | 22 + .../Tests/Fixtures/tags/use/deep_empty.test | 10 + .../Tests/Fixtures/tags/use/inheritance.test | 25 + .../Tests/Fixtures/tags/use/inheritance2.test | 24 + .../Tests/Fixtures/tags/use/multiple.test | 21 + .../Fixtures/tags/use/multiple_aliases.test | 23 + .../Tests/Fixtures/tags/use/parent_block.test | 24 + .../Fixtures/tags/use/parent_block2.test | 24 + .../Fixtures/tags/use/parent_block3.test | 38 + .../Tests/Fixtures/tags/verbatim/basic.test | 10 + .../tags/verbatim/mixed_usage_with_raw.test | 10 + .../tags/verbatim/whitespace_control.test | 56 + .../Twig/Tests/Fixtures/tags/with/basic.test | 13 + .../Tests/Fixtures/tags/with/expression.test | 10 + .../Twig/Tests/Fixtures/tags/with/nested.test | 15 + .../Fixtures/tags/with/with_no_hash.test | 10 + .../Tests/Fixtures/tags/with/with_only.test | 10 + .../test/Twig/Tests/Fixtures/tests/array.test | 24 + .../Twig/Tests/Fixtures/tests/constant.test | 14 + .../Twig/Tests/Fixtures/tests/defined.test | 129 ++ .../Fixtures/tests/defined_for_attribute.test | 35 + .../Fixtures/tests/defined_for_blocks.test | 38 + .../defined_for_blocks_with_template.test | 17 + .../Fixtures/tests/defined_for_constants.test | 14 + .../test/Twig/Tests/Fixtures/tests/empty.test | 42 + .../test/Twig/Tests/Fixtures/tests/even.test | 14 + .../test/Twig/Tests/Fixtures/tests/in.test | 128 ++ .../Tests/Fixtures/tests/in_with_objects.test | 19 + .../Twig/Tests/Fixtures/tests/iterable.test | 19 + .../Tests/Fixtures/tests/null_coalesce.test | 30 + .../test/Twig/Tests/Fixtures/tests/odd.test | 10 + .../twig/test/Twig/Tests/IntegrationTest.php | 309 +++ .../autoescape/filename.legacy.test | 18 + .../functions/undefined_block.legacy.test | 12 + .../Tests/LegacyFixtures/test.legacy.test | 8 + .../test/Twig/Tests/LegacyIntegrationTest.php | 54 + .../twig/twig/test/Twig/Tests/LexerTest.php | 347 ++++ .../twig/test/Twig/Tests/Loader/ArrayTest.php | 115 ++ .../twig/test/Twig/Tests/Loader/ChainTest.php | 124 ++ .../test/Twig/Tests/Loader/FilesystemTest.php | 226 +++ .../array_inheritance_empty_parent.html.twig | 3 + ...y_inheritance_nonexistent_parent.html.twig | 3 + .../array_inheritance_null_parent.html.twig | 3 + .../array_inheritance_valid_parent.html.twig | 3 + .../Fixtures/inheritance/parent.html.twig | 1 + .../inheritance/spare_parent.html.twig | 1 + .../Tests/Loader/Fixtures/named/index.html | 1 + .../Loader/Fixtures/named_bis/index.html | 1 + .../Loader/Fixtures/named_final/index.html | 1 + .../Fixtures/named_quater/named_absolute.html | 1 + .../Loader/Fixtures/named_ter/index.html | 1 + .../Tests/Loader/Fixtures/normal/index.html | 1 + .../Loader/Fixtures/normal_bis/index.html | 1 + .../Loader/Fixtures/normal_final/index.html | 1 + .../Loader/Fixtures/normal_ter/index.html | 1 + .../Loader/Fixtures/phar/phar-sample.phar | Bin 0 -> 6786 bytes .../Fixtures/themes/theme1/blocks.html.twig | 3 + .../Fixtures/themes/theme2/blocks.html.twig | 3 + .../test/Twig/Tests/NativeExtensionTest.php | 36 + .../test/Twig/Tests/Node/AutoEscapeTest.php | 32 + .../Twig/Tests/Node/BlockReferenceTest.php | 31 + .../twig/test/Twig/Tests/Node/BlockTest.php | 39 + .../twig/twig/test/Twig/Tests/Node/DoTest.php | 32 + .../Twig/Tests/Node/Expression/ArrayTest.php | 37 + .../Tests/Node/Expression/AssignNameTest.php | 29 + .../Tests/Node/Expression/Binary/AddTest.php | 34 + .../Tests/Node/Expression/Binary/AndTest.php | 34 + .../Node/Expression/Binary/ConcatTest.php | 34 + .../Tests/Node/Expression/Binary/DivTest.php | 34 + .../Node/Expression/Binary/FloorDivTest.php | 34 + .../Tests/Node/Expression/Binary/ModTest.php | 34 + .../Tests/Node/Expression/Binary/MulTest.php | 34 + .../Tests/Node/Expression/Binary/OrTest.php | 34 + .../Tests/Node/Expression/Binary/SubTest.php | 34 + .../Twig/Tests/Node/Expression/CallTest.php | 147 ++ .../Tests/Node/Expression/ConditionalTest.php | 38 + .../Tests/Node/Expression/ConstantTest.php | 30 + .../Twig/Tests/Node/Expression/FilterTest.php | 154 ++ .../Tests/Node/Expression/FunctionTest.php | 110 ++ .../Tests/Node/Expression/GetAttrTest.php | 50 + .../Twig/Tests/Node/Expression/NameTest.php | 43 + .../Node/Expression/NullCoalesceTest.php | 31 + .../Node/Expression/PHP53/FilterInclude.php | 6 + .../Node/Expression/PHP53/FunctionInclude.php | 6 + .../Node/Expression/PHP53/TestInclude.php | 6 + .../Twig/Tests/Node/Expression/ParentTest.php | 28 + .../Twig/Tests/Node/Expression/TestTest.php | 82 + .../Tests/Node/Expression/Unary/NegTest.php | 32 + .../Tests/Node/Expression/Unary/NotTest.php | 31 + .../Tests/Node/Expression/Unary/PosTest.php | 31 + .../twig/test/Twig/Tests/Node/ForTest.php | 191 ++ .../twig/twig/test/Twig/Tests/Node/IfTest.php | 88 + .../twig/test/Twig/Tests/Node/ImportTest.php | 40 + .../twig/test/Twig/Tests/Node/IncludeTest.php | 83 + .../twig/test/Twig/Tests/Node/MacroTest.php | 74 + .../twig/test/Twig/Tests/Node/ModuleTest.php | 223 +++ .../twig/test/Twig/Tests/Node/PrintTest.php | 29 + .../twig/test/Twig/Tests/Node/SandboxTest.php | 44 + .../Twig/Tests/Node/SandboxedPrintTest.php | 33 + .../twig/test/Twig/Tests/Node/SetTest.php | 69 + .../test/Twig/Tests/Node/SpacelessTest.php | 37 + .../twig/test/Twig/Tests/Node/TextTest.php | 28 + .../Twig/Tests/NodeVisitor/OptimizerTest.php | 124 ++ .../twig/twig/test/Twig/Tests/ParserTest.php | 198 ++ .../Tests/Profiler/Dumper/AbstractTest.php | 101 + .../Tests/Profiler/Dumper/BlackfireTest.php | 32 + .../Twig/Tests/Profiler/Dumper/HtmlTest.php | 30 + .../Twig/Tests/Profiler/Dumper/TextTest.php | 30 + .../test/Twig/Tests/Profiler/ProfileTest.php | 100 + .../twig/test/Twig/Tests/TemplateTest.php | 737 +++++++ .../test/Twig/Tests/TemplateWrapperTest.php | 64 + .../twig/test/Twig/Tests/TokenStreamTest.php | 82 + .../Tests/Util/DeprecationCollectorTest.php | 42 + .../twig/test/Twig/Tests/escapingTest.php | 320 ++++ system/vendor/twig/twig/test/bootstrap.php | 21 + themes/typemill/404.twig | 10 + themes/typemill/cover.twig | 15 + themes/typemill/css/fontello/LICENSE.txt | 12 + themes/typemill/css/fontello/README.txt | 75 + themes/typemill/css/fontello/config.json | 22 + .../typemill/css/fontello/css/animation.css | 85 + .../css/fontello/css/fontello-codes.css | 3 + .../css/fontello/css/fontello-embedded.css | 56 + .../css/fontello/css/fontello-ie7-codes.css | 3 + .../css/fontello/css/fontello-ie7.css | 14 + themes/typemill/css/fontello/css/fontello.css | 59 + themes/typemill/css/fontello/demo.html | 310 +++ .../typemill/css/fontello/font/fontello.eot | Bin 0 -> 5160 bytes .../typemill/css/fontello/font/fontello.svg | 14 + .../typemill/css/fontello/font/fontello.ttf | Bin 0 -> 4992 bytes .../typemill/css/fontello/font/fontello.woff | Bin 0 -> 2820 bytes .../typemill/css/fontello/font/fontello.woff2 | Bin 0 -> 2248 bytes themes/typemill/css/normalize.css | 461 +++++ themes/typemill/css/style.css | 587 ++++++ .../typemill/img/apple-touch-icon-144x144.png | Bin 0 -> 10865 bytes .../typemill/img/apple-touch-icon-152x152.png | Bin 0 -> 14560 bytes themes/typemill/img/favicon-16x16.png | Bin 0 -> 500 bytes themes/typemill/img/favicon-32x32.png | Bin 0 -> 1044 bytes themes/typemill/img/favicon.ico | Bin 0 -> 5430 bytes themes/typemill/img/mstile-144x144.png | Bin 0 -> 10865 bytes themes/typemill/index.twig | 82 + themes/typemill/js/highlight/CHANGES.md | 1588 +++++++++++++++ themes/typemill/js/highlight/LICENSE | 24 + themes/typemill/js/highlight/README.md | 150 ++ themes/typemill/js/highlight/README.ru.md | 142 ++ .../typemill/js/highlight/highlight.pack.js | 2 + themes/typemill/js/highlight/styles/agate.css | 108 ++ .../js/highlight/styles/androidstudio.css | 66 + .../js/highlight/styles/arduino-light.css | 88 + themes/typemill/js/highlight/styles/arta.css | 73 + .../typemill/js/highlight/styles/ascetic.css | 45 + .../js/highlight/styles/atelier-cave-dark.css | 83 + .../highlight/styles/atelier-cave-light.css | 85 + .../js/highlight/styles/atelier-dune-dark.css | 69 + .../highlight/styles/atelier-dune-light.css | 69 + .../highlight/styles/atelier-estuary-dark.css | 84 + .../styles/atelier-estuary-light.css | 84 + .../highlight/styles/atelier-forest-dark.css | 69 + .../highlight/styles/atelier-forest-light.css | 69 + .../highlight/styles/atelier-heath-dark.css | 69 + .../highlight/styles/atelier-heath-light.css | 69 + .../styles/atelier-lakeside-dark.css | 69 + .../styles/atelier-lakeside-light.css | 69 + .../highlight/styles/atelier-plateau-dark.css | 84 + .../styles/atelier-plateau-light.css | 84 + .../highlight/styles/atelier-savanna-dark.css | 84 + .../styles/atelier-savanna-light.css | 84 + .../highlight/styles/atelier-seaside-dark.css | 69 + .../styles/atelier-seaside-light.css | 69 + .../styles/atelier-sulphurpool-dark.css | 69 + .../styles/atelier-sulphurpool-light.css | 69 + .../js/highlight/styles/atom-one-dark.css | 96 + .../js/highlight/styles/atom-one-light.css | 96 + .../js/highlight/styles/brown-paper.css | 64 + .../js/highlight/styles/brown-papersq.png | Bin 0 -> 18198 bytes .../js/highlight/styles/codepen-embed.css | 60 + .../js/highlight/styles/color-brewer.css | 71 + .../typemill/js/highlight/styles/darcula.css | 77 + themes/typemill/js/highlight/styles/dark.css | 63 + .../typemill/js/highlight/styles/darkula.css | 6 + .../typemill/js/highlight/styles/default.css | 99 + themes/typemill/js/highlight/styles/docco.css | 97 + .../typemill/js/highlight/styles/dracula.css | 76 + themes/typemill/js/highlight/styles/far.css | 71 + .../js/highlight/styles/foundation.css | 88 + .../js/highlight/styles/github-gist.css | 71 + .../typemill/js/highlight/styles/github.css | 99 + .../js/highlight/styles/googlecode.css | 89 + .../js/highlight/styles/grayscale.css | 101 + .../js/highlight/styles/gruvbox-dark.css | 108 ++ .../js/highlight/styles/gruvbox-light.css | 108 ++ .../js/highlight/styles/hopscotch.css | 83 + .../typemill/js/highlight/styles/hybrid.css | 102 + themes/typemill/js/highlight/styles/idea.css | 97 + .../typemill/js/highlight/styles/ir-black.css | 73 + .../js/highlight/styles/kimbie.dark.css | 74 + .../js/highlight/styles/kimbie.light.css | 74 + .../typemill/js/highlight/styles/magula.css | 70 + .../js/highlight/styles/mono-blue.css | 59 + .../js/highlight/styles/monokai-sublime.css | 83 + .../typemill/js/highlight/styles/monokai.css | 70 + .../typemill/js/highlight/styles/obsidian.css | 88 + themes/typemill/js/highlight/styles/ocean.css | 74 + .../js/highlight/styles/paraiso-dark.css | 72 + .../js/highlight/styles/paraiso-light.css | 72 + .../typemill/js/highlight/styles/pojoaque.css | 83 + .../typemill/js/highlight/styles/pojoaque.jpg | Bin 0 -> 1186 bytes .../js/highlight/styles/purebasic.css | 96 + .../js/highlight/styles/qtcreator_dark.css | 83 + .../js/highlight/styles/qtcreator_light.css | 83 + .../js/highlight/styles/railscasts.css | 106 + .../typemill/js/highlight/styles/rainbow.css | 85 + .../js/highlight/styles/school-book.css | 72 + .../js/highlight/styles/school-book.png | Bin 0 -> 486 bytes .../js/highlight/styles/solarized-dark.css | 84 + .../js/highlight/styles/solarized-light.css | 84 + .../typemill/js/highlight/styles/sunburst.css | 102 + .../highlight/styles/tomorrow-night-blue.css | 75 + .../styles/tomorrow-night-bright.css | 74 + .../styles/tomorrow-night-eighties.css | 74 + .../js/highlight/styles/tomorrow-night.css | 75 + .../typemill/js/highlight/styles/tomorrow.css | 72 + themes/typemill/js/highlight/styles/vs.css | 68 + themes/typemill/js/highlight/styles/xcode.css | 93 + themes/typemill/js/highlight/styles/xt256.css | 92 + .../typemill/js/highlight/styles/zenburn.css | 80 + themes/typemill/partials/footer.twig | 8 + themes/typemill/partials/layout.twig | 65 + themes/typemill/partials/layoutCover.twig | 31 + themes/typemill/partials/navigation.twig | 29 + themes/typemill/typemill-large.jpg | Bin 0 -> 71627 bytes themes/typemill/typemill.jpg | Bin 0 -> 28162 bytes typemill.zip | Bin 0 -> 2808824 bytes 1064 files changed, 79822 insertions(+) create mode 100644 .htaccess create mode 100644 composer.json create mode 100644 composer.lock create mode 100644 content/0_typemill/01-use-cases.md create mode 100644 content/0_typemill/03-features.md create mode 100644 content/0_typemill/09-roadmap.md create mode 100644 content/0_typemill/bnmc-bolachas-02.png create mode 100644 content/0_typemill/index.md create mode 100644 content/1_getting-started/00-system-requirements.md create mode 100644 content/1_getting-started/01-installation.md create mode 100644 content/1_getting-started/02-settings.md create mode 100644 content/1_getting-started/index.md create mode 100644 content/2_for-writers/00-quick-start.md create mode 100644 content/2_for-writers/02-mardown.md create mode 100644 content/2_for-writers/10-naming-files-and-folders.md create mode 100644 content/2_for-writers/30-folder-structure.md create mode 100644 content/2_for-writers/index.md create mode 100644 content/3_for-developers/01-quick-start.md create mode 100644 content/3_for-developers/03-twig.md create mode 100644 content/3_for-developers/04-theme-structure.md create mode 100644 content/3_for-developers/05-theme-variables/05-content.md create mode 100644 content/3_for-developers/05-theme-variables/08-description.md create mode 100644 content/3_for-developers/05-theme-variables/10-item.md create mode 100644 content/3_for-developers/05-theme-variables/15-breadcrumb.md create mode 100644 content/3_for-developers/05-theme-variables/25-navigation.md create mode 100644 content/3_for-developers/05-theme-variables/30-settings.md create mode 100644 content/3_for-developers/05-theme-variables/index.md create mode 100644 content/3_for-developers/index.md create mode 100644 content/4_info/01-release-notes.md create mode 100644 content/4_info/05-usage-and-licence.md create mode 100644 content/4_info/10-Imprint-and-privacy.md create mode 100644 content/4_info/15_markdown-test.md create mode 100644 content/4_info/index.md create mode 100644 content/index.md create mode 100644 index.php create mode 100644 licence.md create mode 100644 readme.md create mode 100644 settings/settings.yaml.example create mode 100644 system/Controllers/Controller.php create mode 100644 system/Controllers/PageController.php create mode 100644 system/Controllers/SetupController.php create mode 100644 system/Models/Cache.php create mode 100644 system/Models/Folder.php create mode 100644 system/Models/Helpers.php create mode 100644 system/Routes/api.php create mode 100644 system/Routes/web.php create mode 100644 system/author/css/normalize.css create mode 100644 system/author/css/style.css create mode 100644 system/author/layout.twig create mode 100644 system/author/setup.twig create mode 100644 system/author/welcome.twig create mode 100644 system/autoload.php create mode 100644 system/settings.php create mode 100644 system/system.php create mode 100644 system/vendor/autoload.php create mode 100644 system/vendor/composer/ClassLoader.php create mode 100644 system/vendor/composer/LICENSE create mode 100644 system/vendor/composer/autoload_classmap.php create mode 100644 system/vendor/composer/autoload_files.php create mode 100644 system/vendor/composer/autoload_namespaces.php create mode 100644 system/vendor/composer/autoload_psr4.php create mode 100644 system/vendor/composer/autoload_real.php create mode 100644 system/vendor/composer/autoload_static.php create mode 100644 system/vendor/composer/installed.json create mode 100644 system/vendor/container-interop/container-interop/.gitignore create mode 100644 system/vendor/container-interop/container-interop/LICENSE create mode 100644 system/vendor/container-interop/container-interop/README.md create mode 100644 system/vendor/container-interop/container-interop/composer.json create mode 100644 system/vendor/container-interop/container-interop/docs/ContainerInterface-meta.md create mode 100644 system/vendor/container-interop/container-interop/docs/ContainerInterface.md create mode 100644 system/vendor/container-interop/container-interop/docs/Delegate-lookup-meta.md create mode 100644 system/vendor/container-interop/container-interop/docs/Delegate-lookup.md create mode 100644 system/vendor/container-interop/container-interop/docs/images/interoperating_containers.png create mode 100644 system/vendor/container-interop/container-interop/docs/images/priority.png create mode 100644 system/vendor/container-interop/container-interop/docs/images/side_by_side_containers.png create mode 100644 system/vendor/container-interop/container-interop/src/Interop/Container/ContainerInterface.php create mode 100644 system/vendor/container-interop/container-interop/src/Interop/Container/Exception/ContainerException.php create mode 100644 system/vendor/container-interop/container-interop/src/Interop/Container/Exception/NotFoundException.php create mode 160000 system/vendor/erusev/parsedown create mode 160000 system/vendor/erusev/parsedown-extra create mode 160000 system/vendor/jbroadway/urlify create mode 100644 system/vendor/nikic/fast-route/.gitignore create mode 100644 system/vendor/nikic/fast-route/.hhconfig create mode 100644 system/vendor/nikic/fast-route/.travis.yml create mode 100644 system/vendor/nikic/fast-route/FastRoute.hhi create mode 100644 system/vendor/nikic/fast-route/LICENSE create mode 100644 system/vendor/nikic/fast-route/README.md create mode 100644 system/vendor/nikic/fast-route/composer.json create mode 100644 system/vendor/nikic/fast-route/phpunit.xml create mode 100644 system/vendor/nikic/fast-route/src/BadRouteException.php create mode 100644 system/vendor/nikic/fast-route/src/DataGenerator.php create mode 100644 system/vendor/nikic/fast-route/src/DataGenerator/CharCountBased.php create mode 100644 system/vendor/nikic/fast-route/src/DataGenerator/GroupCountBased.php create mode 100644 system/vendor/nikic/fast-route/src/DataGenerator/GroupPosBased.php create mode 100644 system/vendor/nikic/fast-route/src/DataGenerator/MarkBased.php create mode 100644 system/vendor/nikic/fast-route/src/DataGenerator/RegexBasedAbstract.php create mode 100644 system/vendor/nikic/fast-route/src/Dispatcher.php create mode 100644 system/vendor/nikic/fast-route/src/Dispatcher/CharCountBased.php create mode 100644 system/vendor/nikic/fast-route/src/Dispatcher/GroupCountBased.php create mode 100644 system/vendor/nikic/fast-route/src/Dispatcher/GroupPosBased.php create mode 100644 system/vendor/nikic/fast-route/src/Dispatcher/MarkBased.php create mode 100644 system/vendor/nikic/fast-route/src/Dispatcher/RegexBasedAbstract.php create mode 100644 system/vendor/nikic/fast-route/src/Route.php create mode 100644 system/vendor/nikic/fast-route/src/RouteCollector.php create mode 100644 system/vendor/nikic/fast-route/src/RouteParser.php create mode 100644 system/vendor/nikic/fast-route/src/RouteParser/Std.php create mode 100644 system/vendor/nikic/fast-route/src/bootstrap.php create mode 100644 system/vendor/nikic/fast-route/src/functions.php create mode 100644 system/vendor/nikic/fast-route/test/Dispatcher/CharCountBasedTest.php create mode 100644 system/vendor/nikic/fast-route/test/Dispatcher/DispatcherTest.php create mode 100644 system/vendor/nikic/fast-route/test/Dispatcher/GroupCountBasedTest.php create mode 100644 system/vendor/nikic/fast-route/test/Dispatcher/GroupPosBasedTest.php create mode 100644 system/vendor/nikic/fast-route/test/Dispatcher/MarkBasedTest.php create mode 100644 system/vendor/nikic/fast-route/test/HackTypechecker/HackTypecheckerTest.php create mode 100644 system/vendor/nikic/fast-route/test/HackTypechecker/fixtures/all_options.php create mode 100644 system/vendor/nikic/fast-route/test/HackTypechecker/fixtures/empty_options.php create mode 100644 system/vendor/nikic/fast-route/test/HackTypechecker/fixtures/no_options.php create mode 100644 system/vendor/nikic/fast-route/test/RouteCollectorTest.php create mode 100644 system/vendor/nikic/fast-route/test/RouteParser/StdTest.php create mode 100644 system/vendor/nikic/fast-route/test/bootstrap.php create mode 100644 system/vendor/pimple/pimple/.gitignore create mode 100644 system/vendor/pimple/pimple/.travis.yml create mode 100644 system/vendor/pimple/pimple/CHANGELOG create mode 100644 system/vendor/pimple/pimple/LICENSE create mode 100644 system/vendor/pimple/pimple/README.rst create mode 100644 system/vendor/pimple/pimple/composer.json create mode 100644 system/vendor/pimple/pimple/ext/pimple/.gitignore create mode 100644 system/vendor/pimple/pimple/ext/pimple/README.md create mode 100644 system/vendor/pimple/pimple/ext/pimple/config.m4 create mode 100644 system/vendor/pimple/pimple/ext/pimple/config.w32 create mode 100644 system/vendor/pimple/pimple/ext/pimple/php_pimple.h create mode 100644 system/vendor/pimple/pimple/ext/pimple/pimple.c create mode 100644 system/vendor/pimple/pimple/ext/pimple/pimple_compat.h create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/001.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/002.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/003.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/004.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/005.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/006.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/007.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/008.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/009.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/010.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/011.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/012.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/013.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/014.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/015.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/016.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/017.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/018.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/019.phpt create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/bench.phpb create mode 100644 system/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb create mode 100644 system/vendor/pimple/pimple/phpunit.xml.dist create mode 100644 system/vendor/pimple/pimple/src/Pimple/Container.php create mode 100644 system/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php create mode 100644 system/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Invokable.php create mode 100644 system/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php create mode 100644 system/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/PimpleServiceProvider.php create mode 100644 system/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php create mode 100644 system/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php create mode 100644 system/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php create mode 100644 system/vendor/psr/container/.gitignore create mode 100644 system/vendor/psr/container/LICENSE create mode 100644 system/vendor/psr/container/README.md create mode 100644 system/vendor/psr/container/composer.json create mode 100644 system/vendor/psr/container/src/ContainerExceptionInterface.php create mode 100644 system/vendor/psr/container/src/ContainerInterface.php create mode 100644 system/vendor/psr/container/src/NotFoundExceptionInterface.php create mode 100644 system/vendor/psr/http-message/CHANGELOG.md create mode 100644 system/vendor/psr/http-message/LICENSE create mode 100644 system/vendor/psr/http-message/README.md create mode 100644 system/vendor/psr/http-message/composer.json create mode 100644 system/vendor/psr/http-message/src/MessageInterface.php create mode 100644 system/vendor/psr/http-message/src/RequestInterface.php create mode 100644 system/vendor/psr/http-message/src/ResponseInterface.php create mode 100644 system/vendor/psr/http-message/src/ServerRequestInterface.php create mode 100644 system/vendor/psr/http-message/src/StreamInterface.php create mode 100644 system/vendor/psr/http-message/src/UploadedFileInterface.php create mode 100644 system/vendor/psr/http-message/src/UriInterface.php create mode 160000 system/vendor/slim/flash create mode 100644 system/vendor/slim/slim/LICENSE.md create mode 100644 system/vendor/slim/slim/Slim/App.php create mode 100644 system/vendor/slim/slim/Slim/CallableResolver.php create mode 100644 system/vendor/slim/slim/Slim/CallableResolverAwareTrait.php create mode 100644 system/vendor/slim/slim/Slim/Collection.php create mode 100644 system/vendor/slim/slim/Slim/Container.php create mode 100644 system/vendor/slim/slim/Slim/DefaultServicesProvider.php create mode 100644 system/vendor/slim/slim/Slim/DeferredCallable.php create mode 100644 system/vendor/slim/slim/Slim/Exception/ContainerException.php create mode 100644 system/vendor/slim/slim/Slim/Exception/ContainerValueNotFoundException.php create mode 100644 system/vendor/slim/slim/Slim/Exception/InvalidMethodException.php create mode 100644 system/vendor/slim/slim/Slim/Exception/MethodNotAllowedException.php create mode 100644 system/vendor/slim/slim/Slim/Exception/NotFoundException.php create mode 100644 system/vendor/slim/slim/Slim/Exception/SlimException.php create mode 100644 system/vendor/slim/slim/Slim/Handlers/AbstractError.php create mode 100644 system/vendor/slim/slim/Slim/Handlers/AbstractHandler.php create mode 100644 system/vendor/slim/slim/Slim/Handlers/Error.php create mode 100644 system/vendor/slim/slim/Slim/Handlers/NotAllowed.php create mode 100644 system/vendor/slim/slim/Slim/Handlers/NotFound.php create mode 100644 system/vendor/slim/slim/Slim/Handlers/PhpError.php create mode 100644 system/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php create mode 100644 system/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php create mode 100644 system/vendor/slim/slim/Slim/Http/Body.php create mode 100644 system/vendor/slim/slim/Slim/Http/Cookies.php create mode 100644 system/vendor/slim/slim/Slim/Http/Environment.php create mode 100644 system/vendor/slim/slim/Slim/Http/Headers.php create mode 100644 system/vendor/slim/slim/Slim/Http/Message.php create mode 100644 system/vendor/slim/slim/Slim/Http/Request.php create mode 100644 system/vendor/slim/slim/Slim/Http/RequestBody.php create mode 100644 system/vendor/slim/slim/Slim/Http/Response.php create mode 100644 system/vendor/slim/slim/Slim/Http/Stream.php create mode 100644 system/vendor/slim/slim/Slim/Http/UploadedFile.php create mode 100644 system/vendor/slim/slim/Slim/Http/Uri.php create mode 100644 system/vendor/slim/slim/Slim/Interfaces/CallableResolverInterface.php create mode 100644 system/vendor/slim/slim/Slim/Interfaces/CollectionInterface.php create mode 100644 system/vendor/slim/slim/Slim/Interfaces/Http/CookiesInterface.php create mode 100644 system/vendor/slim/slim/Slim/Interfaces/Http/EnvironmentInterface.php create mode 100644 system/vendor/slim/slim/Slim/Interfaces/Http/HeadersInterface.php create mode 100644 system/vendor/slim/slim/Slim/Interfaces/InvocationStrategyInterface.php create mode 100644 system/vendor/slim/slim/Slim/Interfaces/RouteGroupInterface.php create mode 100644 system/vendor/slim/slim/Slim/Interfaces/RouteInterface.php create mode 100644 system/vendor/slim/slim/Slim/Interfaces/RouterInterface.php create mode 100644 system/vendor/slim/slim/Slim/MiddlewareAwareTrait.php create mode 100644 system/vendor/slim/slim/Slim/Routable.php create mode 100644 system/vendor/slim/slim/Slim/Route.php create mode 100644 system/vendor/slim/slim/Slim/RouteGroup.php create mode 100644 system/vendor/slim/slim/Slim/Router.php create mode 100644 system/vendor/slim/slim/composer.json create mode 160000 system/vendor/slim/twig-view create mode 100644 system/vendor/symfony/yaml/.gitignore create mode 100644 system/vendor/symfony/yaml/CHANGELOG.md create mode 100644 system/vendor/symfony/yaml/Dumper.php create mode 100644 system/vendor/symfony/yaml/Escaper.php create mode 100644 system/vendor/symfony/yaml/Exception/DumpException.php create mode 100644 system/vendor/symfony/yaml/Exception/ExceptionInterface.php create mode 100644 system/vendor/symfony/yaml/Exception/ParseException.php create mode 100644 system/vendor/symfony/yaml/Exception/RuntimeException.php create mode 100644 system/vendor/symfony/yaml/Inline.php create mode 100644 system/vendor/symfony/yaml/LICENSE create mode 100644 system/vendor/symfony/yaml/Parser.php create mode 100644 system/vendor/symfony/yaml/README.md create mode 100644 system/vendor/symfony/yaml/Tests/DumperTest.php create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/YtsAnchorAlias.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/YtsBasicTests.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/YtsBlockMapping.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/YtsDocumentSeparator.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/YtsErrorTests.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/YtsFlowCollections.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/YtsFoldedScalars.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/YtsNullsAndEmpties.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/YtsSpecificationExamples.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/YtsTypeTransfers.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/embededPhp.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/escapedCharacters.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/index.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/sfComments.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/sfCompact.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/sfMergeKey.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/sfObjects.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/sfQuotes.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/sfTests.yml create mode 100644 system/vendor/symfony/yaml/Tests/Fixtures/unindentedCollections.yml create mode 100644 system/vendor/symfony/yaml/Tests/InlineTest.php create mode 100644 system/vendor/symfony/yaml/Tests/ParseExceptionTest.php create mode 100644 system/vendor/symfony/yaml/Tests/ParserTest.php create mode 100644 system/vendor/symfony/yaml/Tests/YamlTest.php create mode 100644 system/vendor/symfony/yaml/Unescaper.php create mode 100644 system/vendor/symfony/yaml/Yaml.php create mode 100644 system/vendor/symfony/yaml/composer.json create mode 100644 system/vendor/symfony/yaml/phpunit.xml.dist create mode 100644 system/vendor/twig/twig/.editorconfig create mode 100644 system/vendor/twig/twig/.gitignore create mode 100644 system/vendor/twig/twig/.php_cs.dist create mode 100644 system/vendor/twig/twig/.travis.yml create mode 100644 system/vendor/twig/twig/CHANGELOG create mode 100644 system/vendor/twig/twig/LICENSE create mode 100644 system/vendor/twig/twig/README.rst create mode 100644 system/vendor/twig/twig/composer.json create mode 100644 system/vendor/twig/twig/doc/advanced.rst create mode 100644 system/vendor/twig/twig/doc/advanced_legacy.rst create mode 100644 system/vendor/twig/twig/doc/api.rst create mode 100644 system/vendor/twig/twig/doc/coding_standards.rst create mode 100644 system/vendor/twig/twig/doc/deprecated.rst create mode 100644 system/vendor/twig/twig/doc/filters/abs.rst create mode 100644 system/vendor/twig/twig/doc/filters/batch.rst create mode 100644 system/vendor/twig/twig/doc/filters/capitalize.rst create mode 100644 system/vendor/twig/twig/doc/filters/convert_encoding.rst create mode 100644 system/vendor/twig/twig/doc/filters/date.rst create mode 100644 system/vendor/twig/twig/doc/filters/date_modify.rst create mode 100644 system/vendor/twig/twig/doc/filters/default.rst create mode 100644 system/vendor/twig/twig/doc/filters/escape.rst create mode 100644 system/vendor/twig/twig/doc/filters/first.rst create mode 100644 system/vendor/twig/twig/doc/filters/format.rst create mode 100644 system/vendor/twig/twig/doc/filters/index.rst create mode 100644 system/vendor/twig/twig/doc/filters/join.rst create mode 100644 system/vendor/twig/twig/doc/filters/json_encode.rst create mode 100644 system/vendor/twig/twig/doc/filters/keys.rst create mode 100644 system/vendor/twig/twig/doc/filters/last.rst create mode 100644 system/vendor/twig/twig/doc/filters/length.rst create mode 100644 system/vendor/twig/twig/doc/filters/lower.rst create mode 100644 system/vendor/twig/twig/doc/filters/merge.rst create mode 100644 system/vendor/twig/twig/doc/filters/nl2br.rst create mode 100644 system/vendor/twig/twig/doc/filters/number_format.rst create mode 100644 system/vendor/twig/twig/doc/filters/raw.rst create mode 100644 system/vendor/twig/twig/doc/filters/replace.rst create mode 100644 system/vendor/twig/twig/doc/filters/reverse.rst create mode 100644 system/vendor/twig/twig/doc/filters/round.rst create mode 100644 system/vendor/twig/twig/doc/filters/slice.rst create mode 100644 system/vendor/twig/twig/doc/filters/sort.rst create mode 100644 system/vendor/twig/twig/doc/filters/split.rst create mode 100644 system/vendor/twig/twig/doc/filters/striptags.rst create mode 100644 system/vendor/twig/twig/doc/filters/title.rst create mode 100644 system/vendor/twig/twig/doc/filters/trim.rst create mode 100644 system/vendor/twig/twig/doc/filters/upper.rst create mode 100644 system/vendor/twig/twig/doc/filters/url_encode.rst create mode 100644 system/vendor/twig/twig/doc/functions/attribute.rst create mode 100644 system/vendor/twig/twig/doc/functions/block.rst create mode 100644 system/vendor/twig/twig/doc/functions/constant.rst create mode 100644 system/vendor/twig/twig/doc/functions/cycle.rst create mode 100644 system/vendor/twig/twig/doc/functions/date.rst create mode 100644 system/vendor/twig/twig/doc/functions/dump.rst create mode 100644 system/vendor/twig/twig/doc/functions/include.rst create mode 100644 system/vendor/twig/twig/doc/functions/index.rst create mode 100644 system/vendor/twig/twig/doc/functions/max.rst create mode 100644 system/vendor/twig/twig/doc/functions/min.rst create mode 100644 system/vendor/twig/twig/doc/functions/parent.rst create mode 100644 system/vendor/twig/twig/doc/functions/random.rst create mode 100644 system/vendor/twig/twig/doc/functions/range.rst create mode 100644 system/vendor/twig/twig/doc/functions/source.rst create mode 100644 system/vendor/twig/twig/doc/functions/template_from_string.rst create mode 100644 system/vendor/twig/twig/doc/index.rst create mode 100644 system/vendor/twig/twig/doc/installation.rst create mode 100644 system/vendor/twig/twig/doc/internals.rst create mode 100644 system/vendor/twig/twig/doc/intro.rst create mode 100644 system/vendor/twig/twig/doc/recipes.rst create mode 100644 system/vendor/twig/twig/doc/tags/autoescape.rst create mode 100644 system/vendor/twig/twig/doc/tags/block.rst create mode 100644 system/vendor/twig/twig/doc/tags/do.rst create mode 100644 system/vendor/twig/twig/doc/tags/embed.rst create mode 100644 system/vendor/twig/twig/doc/tags/extends.rst create mode 100644 system/vendor/twig/twig/doc/tags/filter.rst create mode 100644 system/vendor/twig/twig/doc/tags/flush.rst create mode 100644 system/vendor/twig/twig/doc/tags/for.rst create mode 100644 system/vendor/twig/twig/doc/tags/from.rst create mode 100644 system/vendor/twig/twig/doc/tags/if.rst create mode 100644 system/vendor/twig/twig/doc/tags/import.rst create mode 100644 system/vendor/twig/twig/doc/tags/include.rst create mode 100644 system/vendor/twig/twig/doc/tags/index.rst create mode 100644 system/vendor/twig/twig/doc/tags/macro.rst create mode 100644 system/vendor/twig/twig/doc/tags/sandbox.rst create mode 100644 system/vendor/twig/twig/doc/tags/set.rst create mode 100644 system/vendor/twig/twig/doc/tags/spaceless.rst create mode 100644 system/vendor/twig/twig/doc/tags/use.rst create mode 100644 system/vendor/twig/twig/doc/tags/verbatim.rst create mode 100644 system/vendor/twig/twig/doc/tags/with.rst create mode 100644 system/vendor/twig/twig/doc/templates.rst create mode 100644 system/vendor/twig/twig/doc/tests/constant.rst create mode 100644 system/vendor/twig/twig/doc/tests/defined.rst create mode 100644 system/vendor/twig/twig/doc/tests/divisibleby.rst create mode 100644 system/vendor/twig/twig/doc/tests/empty.rst create mode 100644 system/vendor/twig/twig/doc/tests/even.rst create mode 100644 system/vendor/twig/twig/doc/tests/index.rst create mode 100644 system/vendor/twig/twig/doc/tests/iterable.rst create mode 100644 system/vendor/twig/twig/doc/tests/null.rst create mode 100644 system/vendor/twig/twig/doc/tests/odd.rst create mode 100644 system/vendor/twig/twig/doc/tests/sameas.rst create mode 100644 system/vendor/twig/twig/ext/twig/.gitignore create mode 100644 system/vendor/twig/twig/ext/twig/config.m4 create mode 100644 system/vendor/twig/twig/ext/twig/config.w32 create mode 100644 system/vendor/twig/twig/ext/twig/php_twig.h create mode 100644 system/vendor/twig/twig/ext/twig/twig.c create mode 100644 system/vendor/twig/twig/lib/Twig/Autoloader.php create mode 100644 system/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php create mode 100644 system/vendor/twig/twig/lib/Twig/Cache/Filesystem.php create mode 100644 system/vendor/twig/twig/lib/Twig/Cache/Null.php create mode 100644 system/vendor/twig/twig/lib/Twig/CacheInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/Compiler.php create mode 100644 system/vendor/twig/twig/lib/Twig/CompilerInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/ContainerRuntimeLoader.php create mode 100644 system/vendor/twig/twig/lib/Twig/Environment.php create mode 100644 system/vendor/twig/twig/lib/Twig/Error.php create mode 100644 system/vendor/twig/twig/lib/Twig/Error/Loader.php create mode 100644 system/vendor/twig/twig/lib/Twig/Error/Runtime.php create mode 100644 system/vendor/twig/twig/lib/Twig/Error/Syntax.php create mode 100644 system/vendor/twig/twig/lib/Twig/ExistsLoaderInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/ExpressionParser.php create mode 100644 system/vendor/twig/twig/lib/Twig/Extension.php create mode 100644 system/vendor/twig/twig/lib/Twig/Extension/Core.php create mode 100644 system/vendor/twig/twig/lib/Twig/Extension/Debug.php create mode 100644 system/vendor/twig/twig/lib/Twig/Extension/Escaper.php create mode 100644 system/vendor/twig/twig/lib/Twig/Extension/GlobalsInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/Extension/Optimizer.php create mode 100644 system/vendor/twig/twig/lib/Twig/Extension/Profiler.php create mode 100644 system/vendor/twig/twig/lib/Twig/Extension/Sandbox.php create mode 100644 system/vendor/twig/twig/lib/Twig/Extension/Staging.php create mode 100644 system/vendor/twig/twig/lib/Twig/Extension/StringLoader.php create mode 100644 system/vendor/twig/twig/lib/Twig/ExtensionInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/FactoryRuntimeLoader.php create mode 100644 system/vendor/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php create mode 100644 system/vendor/twig/twig/lib/Twig/Filter.php create mode 100644 system/vendor/twig/twig/lib/Twig/Filter/Function.php create mode 100644 system/vendor/twig/twig/lib/Twig/Filter/Method.php create mode 100644 system/vendor/twig/twig/lib/Twig/Filter/Node.php create mode 100644 system/vendor/twig/twig/lib/Twig/FilterCallableInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/FilterInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/Function.php create mode 100644 system/vendor/twig/twig/lib/Twig/Function/Function.php create mode 100644 system/vendor/twig/twig/lib/Twig/Function/Method.php create mode 100644 system/vendor/twig/twig/lib/Twig/Function/Node.php create mode 100644 system/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/FunctionInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/Lexer.php create mode 100644 system/vendor/twig/twig/lib/Twig/LexerInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/Loader/Array.php create mode 100644 system/vendor/twig/twig/lib/Twig/Loader/Chain.php create mode 100644 system/vendor/twig/twig/lib/Twig/Loader/Filesystem.php create mode 100644 system/vendor/twig/twig/lib/Twig/Loader/String.php create mode 100644 system/vendor/twig/twig/lib/Twig/LoaderInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/Markup.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/AutoEscape.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Block.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/BlockReference.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Body.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Do.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Embed.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Array.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/AssignName.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Add.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/And.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Div.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/In.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Less.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Or.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Power.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Range.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Call.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Conditional.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Constant.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Filter/Default.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Function.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/MethodCall.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Name.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/NullCoalesce.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/TempName.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Test.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Constant.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Defined.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Even.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Null.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Odd.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Unary.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Not.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Flush.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/For.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/ForLoop.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/If.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Import.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Include.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Macro.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Module.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Print.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Sandbox.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Set.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/SetTemp.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Spaceless.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/Text.php create mode 100644 system/vendor/twig/twig/lib/Twig/Node/With.php create mode 100644 system/vendor/twig/twig/lib/Twig/NodeCaptureInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/NodeInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/NodeOutputInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/NodeTraverser.php create mode 100644 system/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php create mode 100644 system/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php create mode 100644 system/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php create mode 100644 system/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php create mode 100644 system/vendor/twig/twig/lib/Twig/NodeVisitorInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/Parser.php create mode 100644 system/vendor/twig/twig/lib/Twig/ParserInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php create mode 100644 system/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php create mode 100644 system/vendor/twig/twig/lib/Twig/Profiler/Dumper/Text.php create mode 100644 system/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php create mode 100644 system/vendor/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php create mode 100644 system/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php create mode 100644 system/vendor/twig/twig/lib/Twig/Profiler/Profile.php create mode 100644 system/vendor/twig/twig/lib/Twig/RuntimeLoaderInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/Sandbox/SecurityError.php create mode 100644 system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php create mode 100644 system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php create mode 100644 system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedMethodError.php create mode 100644 system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedPropertyError.php create mode 100644 system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php create mode 100644 system/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php create mode 100644 system/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/SimpleFilter.php create mode 100644 system/vendor/twig/twig/lib/Twig/SimpleFunction.php create mode 100644 system/vendor/twig/twig/lib/Twig/SimpleTest.php create mode 100644 system/vendor/twig/twig/lib/Twig/Source.php create mode 100644 system/vendor/twig/twig/lib/Twig/SourceContextLoaderInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/Template.php create mode 100644 system/vendor/twig/twig/lib/Twig/TemplateInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/TemplateWrapper.php create mode 100644 system/vendor/twig/twig/lib/Twig/Test.php create mode 100644 system/vendor/twig/twig/lib/Twig/Test/Function.php create mode 100644 system/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php create mode 100644 system/vendor/twig/twig/lib/Twig/Test/Method.php create mode 100644 system/vendor/twig/twig/lib/Twig/Test/Node.php create mode 100644 system/vendor/twig/twig/lib/Twig/Test/NodeTestCase.php create mode 100644 system/vendor/twig/twig/lib/Twig/TestCallableInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/TestInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/Token.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/AutoEscape.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/Block.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/Do.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/Embed.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/Extends.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/Filter.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/Flush.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/For.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/From.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/If.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/Import.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/Include.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/Macro.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/Sandbox.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/Set.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/Spaceless.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/Use.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParser/With.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParserBroker.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenParserInterface.php create mode 100644 system/vendor/twig/twig/lib/Twig/TokenStream.php create mode 100644 system/vendor/twig/twig/lib/Twig/Util/DeprecationCollector.php create mode 100644 system/vendor/twig/twig/lib/Twig/Util/TemplateDirIterator.php create mode 100644 system/vendor/twig/twig/phpunit.xml.dist create mode 100644 system/vendor/twig/twig/test/Twig/Tests/AutoloaderTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Cache/FilesystemTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/CompilerTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/ContainerRuntimeLoaderTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/CustomExtensionTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/EnvironmentTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/ErrorTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/ExpressionParserTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Extension/CoreTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Extension/SandboxTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/FactoryRuntimeLoaderTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/FileCachingTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/FileExtensionEscapingStrategyTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/FilesystemHelper.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/autoescape/block.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/autoescape/name.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/errors/base.html create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/errors/index.html create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/child_contents_outside_blocks.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_array_with_undefined_variable.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_array_with_undefined_variable_again.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_function_with_undefined_variable.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_function_with_unknown_argument.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_tag_with_undefined_variable.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/syntax_error_in_reused_template.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/unclosed_tag.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_parent.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_template_in_child_template.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_trait.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/_self.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/array.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/array_call.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/binary.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/bitwise.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/comparison.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/divisibleby.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/dotdot.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ends_with.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/grouping.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/literals.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/magic_call.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/matches.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/method_call.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/negative_numbers.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/operators_as_variables.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/postfix.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/power.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/sameas.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/starts_with.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/strings.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ternary_operator.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ternary_operator_noelse.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ternary_operator_nothen.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/two_word_operators_as_variables.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/unary.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/unary_macro_arguments.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/unary_precedence.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/abs.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_float.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_empty_fill.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_exact_elements.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_fill.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_keys.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_zero_elements.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/convert_encoding.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_default_format.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_default_format_interval.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_immutable.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_interval.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_modify.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_namedargs.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/default.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/dynamic_filter.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_html_attr.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_javascript.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_non_supported_charset.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/first.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/force_escape.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/format.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/join.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/json_encode.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/last.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/length.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/length_utf8.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/merge.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/nl2br.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/number_format.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/number_format_default.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/replace.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/replace_invalid_arg.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/reverse.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/round.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/slice.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/sort.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/special_chars.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/split.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/split_utf8.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/static_calls.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/trim.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/urlencode.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/urlencode_deprecated.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/attribute.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/block.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/block_with_template.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/block_without_name.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/constant.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/cycle.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/date.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/date_namedargs.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/dump.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/dump_array.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/dynamic_function.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/assignment.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/autoescaping.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/basic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/expression.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/ignore_missing.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/missing.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/missing_nested.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/template_instance.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/templates_as_array.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/with_context.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/with_variables.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/magic_call.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/magic_call53.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/max.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/min.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/range.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/recursive_block_with_inheritance.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/source.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/special_chars.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/static_calls.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/template_from_string.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/default_values.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/nested_calls.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/reserved_variables.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/simple.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs_argument.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/with_filters.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/combined_debug_info.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/empty_token.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/issue_1143.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/multi_word_tests.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/simple_xml_element.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/strings_like_numbers.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/basic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/blocks.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/double_escaping.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/functions.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/literal.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/nested.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/objects.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/raw.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/strategy.legacy.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/strategy.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/type.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_filters.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_filters_arguments.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_pre_escape_filters.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_preserves_safety_filters.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/block/basic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/block/block_unique_name.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/block/special_chars.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/basic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/complex_dynamic_parent.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/dynamic_parent.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/error_line.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/multiple.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/nested.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/with_extends.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/basic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/json_encode.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/multiple.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/nested.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/with_for_tag.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/with_if_tag.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/condition.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/context.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/else.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/inner_variables.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/keys.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/keys_and_values.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_context.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_context_local.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_not_defined.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_not_defined_cond.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/nested_else.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/objects.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/objects_countable.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/recursive.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/values.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/from.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/if/basic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/if/expression.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/basic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/expression.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/ignore_missing.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/missing.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/missing_nested.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/only.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/template_instance.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/templates_as_array.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/with_variables.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/basic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/block_expr.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/block_expr2.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/conditional.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/dynamic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/empty.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/extends_as_array.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/extends_as_array_with_empty_name.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/extends_as_array_with_null_name.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/multiple.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/multiple_dynamic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/nested_blocks.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/nested_blocks_parent_only.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/nested_inheritance.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_change.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_in_a_block.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_isolation.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_nested.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_without_extends.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_without_extends_but_traits.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/template_instance.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/use.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/basic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/endmacro_name.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/external.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/from.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/from_with_reserved_name.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/global.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/import_with_reserved_nam.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/reserved_name.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/self_import.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/special_chars.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/super_globals.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/raw/basic.legacy.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/raw/mixed_usage_with_raw.legacy.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/raw/whitespace_control.legacy.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/sandbox/not_valid1.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/sandbox/not_valid2.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/sandbox/simple.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/basic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/capture-empty.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/capture.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/expression.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/spaceless/simple.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/special_chars.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/trim_block.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/aliases.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/basic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/deep.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/deep_empty.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/inheritance.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/inheritance2.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/multiple.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/multiple_aliases.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block2.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block3.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/basic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/mixed_usage_with_raw.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/whitespace_control.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/basic.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/expression.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/nested.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/with_no_hash.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/with_only.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/array.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/constant.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_attribute.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_blocks.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_blocks_with_template.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_constants.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/empty.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/even.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/in.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/in_with_objects.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/iterable.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/null_coalesce.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/odd.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/IntegrationTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/LegacyFixtures/autoescape/filename.legacy.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/LegacyFixtures/functions/undefined_block.legacy.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/LegacyFixtures/test.legacy.test create mode 100644 system/vendor/twig/twig/test/Twig/Tests/LegacyIntegrationTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/LexerTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/ArrayTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/ChainTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/FilesystemTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_empty_parent.html.twig create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_nonexistent_parent.html.twig create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_null_parent.html.twig create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_valid_parent.html.twig create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/parent.html.twig create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/spare_parent.html.twig create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named/index.html create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_bis/index.html create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_final/index.html create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_quater/named_absolute.html create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_ter/index.html create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal/index.html create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal_bis/index.html create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal_final/index.html create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal_ter/index.html create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/phar/phar-sample.phar create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/themes/theme1/blocks.html.twig create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/themes/theme2/blocks.html.twig create mode 100644 system/vendor/twig/twig/test/Twig/Tests/NativeExtensionTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/AutoEscapeTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/BlockReferenceTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/BlockTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/DoTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ArrayTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/AssignNameTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/AddTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/AndTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/ConcatTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/DivTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/FloorDivTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/ModTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/MulTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/OrTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/SubTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/CallTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ConditionalTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ConstantTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/FilterTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/FunctionTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/GetAttrTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/NameTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/NullCoalesceTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/PHP53/FilterInclude.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/PHP53/FunctionInclude.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/PHP53/TestInclude.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ParentTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/TestTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Unary/NegTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Unary/NotTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Unary/PosTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/ForTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/IfTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/ImportTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/IncludeTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/MacroTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/ModuleTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/PrintTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/SandboxTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/SandboxedPrintTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/SetTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/SpacelessTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Node/TextTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/NodeVisitor/OptimizerTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/ParserTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/AbstractTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/BlackfireTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/HtmlTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/TextTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Profiler/ProfileTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/TemplateTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/TemplateWrapperTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/TokenStreamTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/Util/DeprecationCollectorTest.php create mode 100644 system/vendor/twig/twig/test/Twig/Tests/escapingTest.php create mode 100644 system/vendor/twig/twig/test/bootstrap.php create mode 100644 themes/typemill/404.twig create mode 100644 themes/typemill/cover.twig create mode 100644 themes/typemill/css/fontello/LICENSE.txt create mode 100644 themes/typemill/css/fontello/README.txt create mode 100644 themes/typemill/css/fontello/config.json create mode 100644 themes/typemill/css/fontello/css/animation.css create mode 100644 themes/typemill/css/fontello/css/fontello-codes.css create mode 100644 themes/typemill/css/fontello/css/fontello-embedded.css create mode 100644 themes/typemill/css/fontello/css/fontello-ie7-codes.css create mode 100644 themes/typemill/css/fontello/css/fontello-ie7.css create mode 100644 themes/typemill/css/fontello/css/fontello.css create mode 100644 themes/typemill/css/fontello/demo.html create mode 100644 themes/typemill/css/fontello/font/fontello.eot create mode 100644 themes/typemill/css/fontello/font/fontello.svg create mode 100644 themes/typemill/css/fontello/font/fontello.ttf create mode 100644 themes/typemill/css/fontello/font/fontello.woff create mode 100644 themes/typemill/css/fontello/font/fontello.woff2 create mode 100644 themes/typemill/css/normalize.css create mode 100644 themes/typemill/css/style.css create mode 100644 themes/typemill/img/apple-touch-icon-144x144.png create mode 100644 themes/typemill/img/apple-touch-icon-152x152.png create mode 100644 themes/typemill/img/favicon-16x16.png create mode 100644 themes/typemill/img/favicon-32x32.png create mode 100644 themes/typemill/img/favicon.ico create mode 100644 themes/typemill/img/mstile-144x144.png create mode 100644 themes/typemill/index.twig create mode 100644 themes/typemill/js/highlight/CHANGES.md create mode 100644 themes/typemill/js/highlight/LICENSE create mode 100644 themes/typemill/js/highlight/README.md create mode 100644 themes/typemill/js/highlight/README.ru.md create mode 100644 themes/typemill/js/highlight/highlight.pack.js create mode 100644 themes/typemill/js/highlight/styles/agate.css create mode 100644 themes/typemill/js/highlight/styles/androidstudio.css create mode 100644 themes/typemill/js/highlight/styles/arduino-light.css create mode 100644 themes/typemill/js/highlight/styles/arta.css create mode 100644 themes/typemill/js/highlight/styles/ascetic.css create mode 100644 themes/typemill/js/highlight/styles/atelier-cave-dark.css create mode 100644 themes/typemill/js/highlight/styles/atelier-cave-light.css create mode 100644 themes/typemill/js/highlight/styles/atelier-dune-dark.css create mode 100644 themes/typemill/js/highlight/styles/atelier-dune-light.css create mode 100644 themes/typemill/js/highlight/styles/atelier-estuary-dark.css create mode 100644 themes/typemill/js/highlight/styles/atelier-estuary-light.css create mode 100644 themes/typemill/js/highlight/styles/atelier-forest-dark.css create mode 100644 themes/typemill/js/highlight/styles/atelier-forest-light.css create mode 100644 themes/typemill/js/highlight/styles/atelier-heath-dark.css create mode 100644 themes/typemill/js/highlight/styles/atelier-heath-light.css create mode 100644 themes/typemill/js/highlight/styles/atelier-lakeside-dark.css create mode 100644 themes/typemill/js/highlight/styles/atelier-lakeside-light.css create mode 100644 themes/typemill/js/highlight/styles/atelier-plateau-dark.css create mode 100644 themes/typemill/js/highlight/styles/atelier-plateau-light.css create mode 100644 themes/typemill/js/highlight/styles/atelier-savanna-dark.css create mode 100644 themes/typemill/js/highlight/styles/atelier-savanna-light.css create mode 100644 themes/typemill/js/highlight/styles/atelier-seaside-dark.css create mode 100644 themes/typemill/js/highlight/styles/atelier-seaside-light.css create mode 100644 themes/typemill/js/highlight/styles/atelier-sulphurpool-dark.css create mode 100644 themes/typemill/js/highlight/styles/atelier-sulphurpool-light.css create mode 100644 themes/typemill/js/highlight/styles/atom-one-dark.css create mode 100644 themes/typemill/js/highlight/styles/atom-one-light.css create mode 100644 themes/typemill/js/highlight/styles/brown-paper.css create mode 100644 themes/typemill/js/highlight/styles/brown-papersq.png create mode 100644 themes/typemill/js/highlight/styles/codepen-embed.css create mode 100644 themes/typemill/js/highlight/styles/color-brewer.css create mode 100644 themes/typemill/js/highlight/styles/darcula.css create mode 100644 themes/typemill/js/highlight/styles/dark.css create mode 100644 themes/typemill/js/highlight/styles/darkula.css create mode 100644 themes/typemill/js/highlight/styles/default.css create mode 100644 themes/typemill/js/highlight/styles/docco.css create mode 100644 themes/typemill/js/highlight/styles/dracula.css create mode 100644 themes/typemill/js/highlight/styles/far.css create mode 100644 themes/typemill/js/highlight/styles/foundation.css create mode 100644 themes/typemill/js/highlight/styles/github-gist.css create mode 100644 themes/typemill/js/highlight/styles/github.css create mode 100644 themes/typemill/js/highlight/styles/googlecode.css create mode 100644 themes/typemill/js/highlight/styles/grayscale.css create mode 100644 themes/typemill/js/highlight/styles/gruvbox-dark.css create mode 100644 themes/typemill/js/highlight/styles/gruvbox-light.css create mode 100644 themes/typemill/js/highlight/styles/hopscotch.css create mode 100644 themes/typemill/js/highlight/styles/hybrid.css create mode 100644 themes/typemill/js/highlight/styles/idea.css create mode 100644 themes/typemill/js/highlight/styles/ir-black.css create mode 100644 themes/typemill/js/highlight/styles/kimbie.dark.css create mode 100644 themes/typemill/js/highlight/styles/kimbie.light.css create mode 100644 themes/typemill/js/highlight/styles/magula.css create mode 100644 themes/typemill/js/highlight/styles/mono-blue.css create mode 100644 themes/typemill/js/highlight/styles/monokai-sublime.css create mode 100644 themes/typemill/js/highlight/styles/monokai.css create mode 100644 themes/typemill/js/highlight/styles/obsidian.css create mode 100644 themes/typemill/js/highlight/styles/ocean.css create mode 100644 themes/typemill/js/highlight/styles/paraiso-dark.css create mode 100644 themes/typemill/js/highlight/styles/paraiso-light.css create mode 100644 themes/typemill/js/highlight/styles/pojoaque.css create mode 100644 themes/typemill/js/highlight/styles/pojoaque.jpg create mode 100644 themes/typemill/js/highlight/styles/purebasic.css create mode 100644 themes/typemill/js/highlight/styles/qtcreator_dark.css create mode 100644 themes/typemill/js/highlight/styles/qtcreator_light.css create mode 100644 themes/typemill/js/highlight/styles/railscasts.css create mode 100644 themes/typemill/js/highlight/styles/rainbow.css create mode 100644 themes/typemill/js/highlight/styles/school-book.css create mode 100644 themes/typemill/js/highlight/styles/school-book.png create mode 100644 themes/typemill/js/highlight/styles/solarized-dark.css create mode 100644 themes/typemill/js/highlight/styles/solarized-light.css create mode 100644 themes/typemill/js/highlight/styles/sunburst.css create mode 100644 themes/typemill/js/highlight/styles/tomorrow-night-blue.css create mode 100644 themes/typemill/js/highlight/styles/tomorrow-night-bright.css create mode 100644 themes/typemill/js/highlight/styles/tomorrow-night-eighties.css create mode 100644 themes/typemill/js/highlight/styles/tomorrow-night.css create mode 100644 themes/typemill/js/highlight/styles/tomorrow.css create mode 100644 themes/typemill/js/highlight/styles/vs.css create mode 100644 themes/typemill/js/highlight/styles/xcode.css create mode 100644 themes/typemill/js/highlight/styles/xt256.css create mode 100644 themes/typemill/js/highlight/styles/zenburn.css create mode 100644 themes/typemill/partials/footer.twig create mode 100644 themes/typemill/partials/layout.twig create mode 100644 themes/typemill/partials/layoutCover.twig create mode 100644 themes/typemill/partials/navigation.twig create mode 100644 themes/typemill/typemill-large.jpg create mode 100644 themes/typemill/typemill.jpg create mode 100644 typemill.zip diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..ef3954c --- /dev/null +++ b/.htaccess @@ -0,0 +1,26 @@ +RewriteEngine On + +# If your homepage is http://yourdomain.com/yoursite +# Set the RewriteBase to: +# RewriteBase /yoursite + +# In some environements, an empty RewriteBase is required: +# RewriteBase / + +# Protect your system files from prying eyes +RewriteRule ^(system\/author\/) - [L] +RewriteRule ^(system) - [F,L] +RewriteRule ^(content) - [F,L] +RewriteRule ^(.*)?\.yml$ - [F,L] +Rewriterule ^(.*)?\.yaml$ - [F,L] +RewriteRule ^(.*/)?\.git+ - [F,L] + +# Use this to redirect www to non-wwww on apache servers +RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] +RewriteRule ^(.*)$ http://%1/$1 [R=301,L] + +# Remove the index.php +RewriteCond %{REQUEST_URI} !^/index\.php +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^ index.php [QSA,L] \ No newline at end of file diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..e75c32a --- /dev/null +++ b/composer.json @@ -0,0 +1,26 @@ +{ + "name": "trendschau/writeitdown", + "type": "project", + "description": "A crazy simple tool to create web-documentations and online manuals with markdown files.", + "keywords": ["documentations","manuals","flat-file","Markdown","php"], + "homepage": "http://writeitdown.net", + "license": "MIT", + "config": { + "vendor-dir": "system/vendor" + }, + "require": { + "slim/slim": "^3.7", + "twig/twig": "^1.18", + "slim/twig-view": "dev-master", + "slim/flash": "dev-master", + "symfony/yaml": "~2.8", + "erusev/parsedown": "~1.4", + "erusev/parsedown-extra": "dev-master", + "jbroadway/urlify": "dev-master" + }, + "autoload": { + "psr-4": { + "System\\": "system" + } + } +} \ No newline at end of file diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..4d7a6697d --- /dev/null +++ b/composer.lock @@ -0,0 +1,662 @@ +{ + "_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": "f62200a42c7079d79121ddda255fa670", + "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": "erusev/parsedown", + "version": "1.6.2", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown.git", + "reference": "1bf24f7334fe16c88bf9d467863309ceaf285b01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/1bf24f7334fe16c88bf9d467863309ceaf285b01", + "reference": "1bf24f7334fe16c88bf9d467863309ceaf285b01", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "time": "2017-03-29T16:04:15+00:00" + }, + { + "name": "erusev/parsedown-extra", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown-extra.git", + "reference": "0db5cce7354e4b76f155d092ab5eb3981c21258c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown-extra/zipball/0db5cce7354e4b76f155d092ab5eb3981c21258c", + "reference": "0db5cce7354e4b76f155d092ab5eb3981c21258c", + "shasum": "" + }, + "require": { + "erusev/parsedown": "~1.4" + }, + "type": "library", + "autoload": { + "psr-0": { + "ParsedownExtra": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "An extension of Parsedown that adds support for Markdown Extra.", + "homepage": "https://github.com/erusev/parsedown-extra", + "keywords": [ + "markdown", + "markdown extra", + "parsedown", + "parser" + ], + "time": "2015-11-01 10:19:22" + }, + { + "name": "jbroadway/urlify", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/jbroadway/urlify.git", + "reference": "99bb78cd9002d0e9ce479bb81635eb665e37e981" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jbroadway/urlify/zipball/99bb78cd9002d0e9ce479bb81635eb665e37e981", + "reference": "99bb78cd9002d0e9ce479bb81635eb665e37e981", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-0": { + "URLify": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD" + ], + "authors": [ + { + "name": "Johnny Broadway", + "email": "johnny@johnnybroadway.com", + "homepage": "http://www.johnnybroadway.com/" + } + ], + "description": "PHP port of URLify.js from the Django project. Transliterates non-ascii characters for use in URLs.", + "homepage": "https://github.com/jbroadway/urlify", + "keywords": [ + "encode", + "iconv", + "link", + "slug", + "translit", + "transliterate", + "transliteration", + "url", + "urlify" + ], + "time": "2017-01-03 20:12:54" + }, + { + "name": "nikic/fast-route", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/FastRoute.git", + "reference": "b5f95749071c82a8e0f58586987627054400cdf6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/FastRoute/zipball/b5f95749071c82a8e0f58586987627054400cdf6", + "reference": "b5f95749071c82a8e0f58586987627054400cdf6", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "FastRoute\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + } + ], + "description": "Fast request router for PHP", + "keywords": [ + "router", + "routing" + ], + "time": "2017-01-19T11:35:12+00:00" + }, + { + "name": "pimple/pimple", + "version": "v3.0.2", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Pimple.git", + "reference": "a30f7d6e57565a2e1a316e1baf2a483f788b258a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a30f7d6e57565a2e1a316e1baf2a483f788b258a", + "reference": "a30f7d6e57565a2e1a316e1baf2a483f788b258a", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.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": "2015-09-11T15:10:35+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/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "slim/flash", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim-Flash.git", + "reference": "3c9a26b3163820acc48080336c504d0a3cac6f30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim-Flash/zipball/3c9a26b3163820acc48080336c504d0a3cac6f30", + "reference": "3c9a26b3163820acc48080336c504d0a3cac6f30", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\Flash\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "http://joshlockhart.com" + } + ], + "description": "Slim Framework Flash message service provider", + "homepage": "http://slimframework.com", + "keywords": [ + "flash", + "framework", + "message", + "provider", + "slim" + ], + "time": "2016-11-11 16:29:19" + }, + { + "name": "slim/slim", + "version": "3.8.1", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim.git", + "reference": "5385302707530b2bccee1769613ad769859b826d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim/zipball/5385302707530b2bccee1769613ad769859b826d", + "reference": "5385302707530b2bccee1769613ad769859b826d", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.2", + "nikic/fast-route": "^1.0", + "php": ">=5.5.0", + "pimple/pimple": "^3.0", + "psr/container": "^1.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0", + "squizlabs/php_codesniffer": "^2.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\": "Slim" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rob Allen", + "email": "rob@akrabat.com", + "homepage": "http://akrabat.com" + }, + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "https://joshlockhart.com" + }, + { + "name": "Gabriel Manricks", + "email": "gmanricks@me.com", + "homepage": "http://gabrielmanricks.com" + }, + { + "name": "Andrew Smith", + "email": "a.smith@silentworks.co.uk", + "homepage": "http://silentworks.co.uk" + } + ], + "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs", + "homepage": "https://slimframework.com", + "keywords": [ + "api", + "framework", + "micro", + "router" + ], + "time": "2017-03-19T17:55:20+00:00" + }, + { + "name": "slim/twig-view", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Twig-View.git", + "reference": "a743ac45e2a089942159dda499c5ef5bc5f6bfa6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Twig-View/zipball/a743ac45e2a089942159dda499c5ef5bc5f6bfa6", + "reference": "a743ac45e2a089942159dda499c5ef5bc5f6bfa6", + "shasum": "" + }, + "require": { + "php": ">=5.5.0", + "psr/http-message": "^1.0", + "twig/twig": "^1.18|^2.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5.7" + }, + "type": "library", + "autoload": { + "psr-4": { + "Slim\\Views\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "http://joshlockhart.com" + } + ], + "description": "Slim Framework 3 view helper built on top of the Twig 2 templating component", + "homepage": "http://slimframework.com", + "keywords": [ + "framework", + "slim", + "template", + "twig", + "view" + ], + "time": "2017-01-25 20:38:39" + }, + { + "name": "symfony/yaml", + "version": "v2.8.19", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "286d84891690b0e2515874717e49360d1c98a703" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/286d84891690b0e2515874717e49360d1c98a703", + "reference": "286d84891690b0e2515874717e49360d1c98a703", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-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": "2017-03-20T09:41:44+00:00" + }, + { + "name": "twig/twig", + "version": "v1.33.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "05cf49921b13f6f01d3cfdf9018cfa7a8086fd5a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/05cf49921b13f6f01d3cfdf9018cfa7a8086fd5a", + "reference": "05cf49921b13f6f01d3cfdf9018cfa7a8086fd5a", + "shasum": "" + }, + "require": { + "php": ">=5.2.7" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "~2.7", + "symfony/phpunit-bridge": "~3.3@dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.33-dev" + } + }, + "autoload": { + "psr-0": { + "Twig_": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "http://twig.sensiolabs.org/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "http://twig.sensiolabs.org", + "keywords": [ + "templating" + ], + "time": "2017-03-22T15:40:09+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": { + "slim/twig-view": 20, + "slim/flash": 20, + "erusev/parsedown-extra": 20, + "jbroadway/urlify": 20 + }, + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/content/0_typemill/01-use-cases.md b/content/0_typemill/01-use-cases.md new file mode 100644 index 0000000..2a2ac33 --- /dev/null +++ b/content/0_typemill/01-use-cases.md @@ -0,0 +1,20 @@ +# Use Cases + +Whenever you want to publish a finished text work as a website, then TYPEMILL is a smart and lightweight solution. Possible use cases are ... + +- a book +- a drama +- a lyric collection +- a whitepaper +- a documentation +- a manual or user guide +- a handbook +- a tutorial +- a study +- a collection of articles + +TYPEMILL is not a full blown Content Management System (CMS). It has no admin panel and it does not support any content creation right now. Instead, it takes some existing markdown files and generates a beautiful website. + +Use your favourite text or markdown editor (e.g. Typora) to create markdown files and upload them with a FTP software (e.g. FileZilla) to your server. + +TYPEMILL is not the right solution, if you want to create a blog, a wiki or any website with an author interface. But it is a smart solution to publish any text work based on markdown files. diff --git a/content/0_typemill/03-features.md b/content/0_typemill/03-features.md new file mode 100644 index 0000000..e12727b --- /dev/null +++ b/content/0_typemill/03-features.md @@ -0,0 +1,22 @@ +# Features + +TYPEMILL has a limited set of features right now. It transforms a bunch of **markdown files** into a **website** and generates a list of contents for **navigation**. + +This is what you can **do with TYPEMILL**: + +- Setup your website with an easy setup form. +- Create your website content with simple folders and files (markdown). +- Choose a static startpage for your website (optional). +- Change the theme (design). +- Create your own theme with HTML, CSS and Twig (a template language for PHP). + +This is, what **TYPEMILL does** for you: + +- It creates a website based on your folders and files. +- It generates a navigation according to the structure of your folders and files. +- It adds a paging. +- It adds a breadcrumb. +- It adds hierarchic numbers to your chapters and pages. +- It makes everything responsive for mobile devices. + +There is a roadmap for TYPEMILL, so there will be a lot more useful features in near future. diff --git a/content/0_typemill/09-roadmap.md b/content/0_typemill/09-roadmap.md new file mode 100644 index 0000000..608e946 --- /dev/null +++ b/content/0_typemill/09-roadmap.md @@ -0,0 +1,13 @@ +# Roadmap + +There are a lot of plans for future releases of TYPEMILL, but it also follows the concept of simplicity. To prevent TYPEMILL from becomming a feature soup, it will strictly focus on the writers needs. These are some ideas: + +- Image and media support. +- A dashboard for authors to create and edit content online. +- More themes for special publications like documentations, books or lyrics. +- Additional navigation based on the headlines of a content page. +- Extensibility (Plugins) and API design. +- Version controll and updates. +- Additional output format like mobi, epub, static html and more. + +If you miss a feature or if you found a bug, please report it on GitHub. \ No newline at end of file diff --git a/content/0_typemill/bnmc-bolachas-02.png b/content/0_typemill/bnmc-bolachas-02.png new file mode 100644 index 0000000000000000000000000000000000000000..ca1585ac451113852ad56ac778fa207a3cc80d91 GIT binary patch literal 87004 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 to create a blockquote: + +```` +This is a quote by a famous woman: + +> If I stop to kick every barking dog I am not going to get where I’m going. +```` + +### Horizontal Rule + +To create a horizontal line, use `---` + +```` +This is a text followed by a horizontal line +--- +And this is another text. +```` + +### Links + +Use square brackets for the linked text followed by round clips for the url. + +```` +[Linked Text](http://url-to-a-website.com) +```` + +You can also use a shortcut for links `` and emails ``, but you cannot add a text for the links or emails with these shortcuts. + +When rendered, Markdown will automatically obfuscate email adresses to help obscure your address from spambots. + +### Images + +Images look similar to links, simply add an ! like this: + +```` +![image alt text](/path/to/image.jpg) +```` + +### Code (inline) + +To create a inline code, just use the ` sign like this: + +```` +Inline code `` within a sentence. +```` + +### Code (block) + +To create a code block, just indent your text with four spaces or use four ```` like this: + +```` +This text is followed by a code-block: + +​```` + +```` + +### Advanced Formats + +With enhancements like Markdown Extra you can also create more complex formats like tables, abbreviations, footnotes and special attributes. TYPEMILL supports Markdown Extra, so just check the [specification of Markdown Extra](https://michelf.ca/projects/php-markdown/extra/) if you want to use these kind of formats. diff --git a/content/2_for-writers/10-naming-files-and-folders.md b/content/2_for-writers/10-naming-files-and-folders.md new file mode 100644 index 0000000..8592bb8 --- /dev/null +++ b/content/2_for-writers/10-naming-files-and-folders.md @@ -0,0 +1,19 @@ +# Naming your Files and Folders + +To create a clean website with TYPEMILL, you have to follow some naming conventions for your files and folders. A typcial structure for folders and file looks like this: + +- 01_content_folder + - 01_markdown_file.md + - 02_another_markdown_file.md + - index.md + +The rules are simple: + +- **Keep it short**: The names of the files and folders are used to create the navigation, so it is essential to keep them really short!! +- **Use prefixes**: Please use some kind of sorting-prefix for your files and folders. You can use numbers `01-` or letters `aa-`. The part before the first separator (the prefix) is striped out by TYPEMILL. +- **Use Separators**: Please use separators like dashes `-` or underscores `_` to separate words or prefixes in your file names and folder names. Do not use space!!! +- **Use index.md**: You can use a file named `index.md` to create content for the folder itself. This is optional. +- **Avoid Language Specific Characters**: Use the english character set to name your files and folders. French, German, Russian or Turkish are beautiful languages, but right now it is not guarantied, that these characters are interpreted correctly. But you can use all character sets to write the content in your files of course. + +When you name your files and folders, then always keep in mind, that the names are used to generate the navigation and the table of contents. So keep it short to keep the layout and design healthy. + diff --git a/content/2_for-writers/30-folder-structure.md b/content/2_for-writers/30-folder-structure.md new file mode 100644 index 0000000..7a97906 --- /dev/null +++ b/content/2_for-writers/30-folder-structure.md @@ -0,0 +1,5 @@ +# Folder Structure + +You can create any kind of folder structer with TYPEMILL. As long as you follow the naming conventions for folders and files, it will work. + +However, if you create a very deep structure, then it might result in an odd design or even in usability errors. Similar to real live, it is always a good idea to keep the hierarchy as flat as possible. \ No newline at end of file diff --git a/content/2_for-writers/index.md b/content/2_for-writers/index.md new file mode 100644 index 0000000..f9f8f39 --- /dev/null +++ b/content/2_for-writers/index.md @@ -0,0 +1,3 @@ +# Hello Writers! + +If you love **simple text files** (Markdown) and if you like **distraction free websites** without fiddly technology, then TYPEMILL is for you! \ No newline at end of file diff --git a/content/3_for-developers/01-quick-start.md b/content/3_for-developers/01-quick-start.md new file mode 100644 index 0000000..035623f --- /dev/null +++ b/content/3_for-developers/01-quick-start.md @@ -0,0 +1,40 @@ +# Quick Start for Developers + +So you are a pro and don't want to read the whole documentation? No problem, this is all you need to know to create your own theme for TYPEMILL. + +## Theme Folder + +You will find all themes in the `theme` folder of TYPEMILL. Change the theme in the `settings.yaml`. + +## Theme Structure + +There is no theme structure. There are only two files that are required: + +- `index.twig`: All content files will be rendered with this template. +- `404.twig`: This is the template for a not found message. + +There is another optional template: + +- `cover.twig`: Use this name to create a template for a static startpage. + +It is always a good idea to structure your files a bit more. For example, you can create a folder called `partials` with separate files for different layouts (maybe a folder and file layout?), a navigation, a header, a footer or whatever you want. But this decision is completely up to you. The same with css, JavaScript and other ressources: It is a good practice to create separate folders for that, but it is up to you. + +## Twig + +The template language for TYPEMILL is Twig. You are probably familiar with it. If not: Twig is a widespread template language, that is very easy to learn. It is shorter and safer to use than pure PHP. + +## Template Variables + +There are exactly six template variables to fill your templates with dynamic content. Just print the variables out to get some insights. + +- `navigation`: This variable is a multidimensional array of objects. Each object represents a file or a folder. You can use a Twig-macro to create a navigation with this variable in your template. A macro in TWIG is the same as a recursive function in PHP. +- `content`: This variable holds the HTML content of the markdown file for a specific page. +- `breadcrumb`: This variable is an one dimensional array. It contains the breadcrumb of the page. Just use a loop like `{% for element in breadcrumb %}` to print it out. +- `item`: This variable is an object of the actual page. It contains all the details like name, url, path, chapter as well as the next and previous items for a pagination. And guess what? The `navigation` variable is just an array of these item-objects (with a bit less information). +- `settings`: You will find all the settings in this variable (like the navigation-title, the author, the theme and the copyright information). +- `description`: This are the first 150 characters of the content of a page. You can use this for the meta description. + +If you did not understand everything, then please read the full developer manual. In less than one hour you can develop with TYPEMILL like a pro. + +Happy coding! + diff --git a/content/3_for-developers/03-twig.md b/content/3_for-developers/03-twig.md new file mode 100644 index 0000000..ce60ea2 --- /dev/null +++ b/content/3_for-developers/03-twig.md @@ -0,0 +1,208 @@ +# Templates with Twig + +Twig is a flexible, fast and secure template engine for PHP. If you have never used a template language before, then there are some good reasons to start with it today: + +- The Twig syntax is **much shorter**, so your templates look cleaner and are easier to maintain. +- Twig produces **less errors**. An unknown variable produces an error in PHP, but it does not in Twig. Twig handles most of these cases, so you don't have to care about it. +- Twig is very **widespread**. Even Drupal switched to Twig in version 8. + +The full Twig documentation for template designers is just one page long, so just head [over to Twig](http://twig.sensiolabs.org/doc/2.x/templates.html) and read it. You can learn the most important essentials for TYPEMILL in the following list. + +## Basic Twig Syntax + +In a Twig template, you can use ordinary HTML markup. Statements and expressions are written in curly brackets. + +Twig uses two curly brackets **to print out** a variable or expression: + +```` +

{{ variable }}

+```` + +Twig uses one curly bracket with a procent sign **to execute** statements such as loops: + +```` +
    + {% for element in breadcrumb %} +
  • {{ element.output|e }}
  • + {% endfor %} +
+```` + +As you can see, the Twig syntax is a cleaner and easier than pure PHP: + +- You don't need the long `` introduction. +- You don't need the `$` to mark a variable. +- You don't need the `;` to finish a statement. +- You don't need the `->` or `['foo']` notation for objects and arrays, just use a dot-notation like `element.name` for everything. +- You don't need a lot of `()` like `foreach(a as b)`. +- You don't need a syntax like `output, ENT_QUOTES, 'UTF-8') ?>` for escaping, just use a filter with a pipe notation like this `{{ element.output|e }}`. + +## References + +These are some useful examples and snippets, that you can use for your templates. + +### Simple Variable + +Set a simple variable and print it out: + +```` +{% set content = "my content" %} +{{ content }} +```` + +### Array + +Set an array and print out a value: + +```` +{% set content = ['first' => 'one value', 'second' => 'another value'] %} +{{ content.first }} +```` + +### Object + +Set an object and print out a value: + +```` +{% set content = {'first' : 'first value', 'second' : 'another value'} %} +{{ content.first }} +```` + +### Loop + +Loop over an object or array and print out the values: + +```` +{% for value in content %} + {{ value }} +{% endfor %} +```` + +Outputs: + +- first value +- another value + +### Filters + +Set the first character of the words to uppercase: + +```` +
    +{% for value in content %} +
  • {{ value|title }}
  • +{% endfor %} +
+```` + +Output: + +- First Value +- Another Value + +You can manipulate variables with filters. Fiters are used after a pipe notation. See a list of all filters in the [Twig documentation](http://twig.sensiolabs.org/doc/2.x/filters/index.html). + +### Functions + +Print out content that was created in the last 30 days: + +``` +{% if date(content.created_at) > date('-30days') %} + {{ content.title }} +{% endif %} +``` + +'created_at' could be a timestamp of the content file. See a list of all functions in the [Twig documentation](https://twig.sensiolabs.org/doc/2.x/functions/index.html). + +### Include Template + +To include a template, just write: + +```` +{{ include(sidebar.twig) }} +```` + +**Example usage**: Your layout-template includes other templates like header.twig, footer.twig or sidebar.twig. + +### Extend Template + +To extend a template, just write: + +```` +{% extends "partials/layout.twig" %} +```` + +**Example usage:** Your content template (e.g. index.twig) extends your layout template. This means, index.twig is rendered within the layout.twig, and the layout.twig includes a header.twig, a footer.twig and a sidebar.twig. + +### Example: Include and Extend + +If you extend a template with another template (e.g. if you extend `layout.twig` with `index.twig`), then you have to define some content areas in the "parent" template that get overwritten with the content of the "child" template. You can use the "block" statement to define such areas. + +Your layout.twig looks like this: + +```` + + + + ... + + +
{% block content %}{% endblock %}
+ +
+ {{ include 'footer.twig' }} +
+ + +```` + +Your index.twig looks like this: + +```` +{% extends "layout.twig" %} + +{% block content %} + +
    + {% for value in content%} +
  • {{ value }}
  • + {% endfor } +
+ +{% endblock %} +```` + +Now, your template `index.twig` extends your template `layout.twig` and the `block content` in your layout template gets replaced by the `block content` defined in your index template. At the same time the layout template includes the navigation and the footer. + +### Macros + +Macros in Twig are like functions in PHP: You can use them for repeating tasks. A typical example is a navigation, where you loop over a complex array recursively. But you can also use macros to render forms and input fields. + +This is an example for a navigation: + + {% macro loop_over(navigation) %} + + {% import _self as macros %} + + {% for element in navigation %} +
  • + {% if element.elementType == 'folder' %} + {{ element.name|title }} +
      + {{ macros.loop_over(element.folderContent) }} +
    + {% else %} + {{ element.name|title }} + {% endif %} +
  • + {% endfor %} + {% endmacro %} + + {% import _self as macros %} + + +These are only some small examples, how you can use Twig to create templates and themes for TYPEMILL. In fact, you can do a lot more complex stuff with Twig. Just read the [official documentation](https://twig.sensiolabs.org/doc). \ No newline at end of file diff --git a/content/3_for-developers/04-theme-structure.md b/content/3_for-developers/04-theme-structure.md new file mode 100644 index 0000000..41ee379 --- /dev/null +++ b/content/3_for-developers/04-theme-structure.md @@ -0,0 +1,38 @@ +# Theme Structure + +TYPEMILL requires a minimal structure and a small set of mandatory files: + +- **/myThemeFolder**: A theme folder. The name of the folder is the name of the theme. + - **404.twig**: The template for a not found page. It is mandatory. + - **index.twig**: The template for all other pages. It is mandatory. + - **cover.twig**: The template for a static startpage. It is optional. + - **myThemeFolder.jpg**: A preview picture of your theme. It is mandatory. The file must be named exactly like the theme folder. Minimum width is 400px. + +That's it. + +## Recommendation + +If you want to create a more complex structure, then you can do whatever you want, as long as you follow the basic structure and conventions described above. + +However, if you don't have an idea how to start, then you can follow this example: + +- css + - style.css + - another.css +- js + - javascript.js +- img + - icon.png + - favicon.ico + - themeLogo.jpg +- partials + - layoutStart.twig // layout for the static startpage. + - layout.twig // layout for all other pages, includes navigation, header and footer + - navigation.twig + - header.twig + - footer.twig +- cover.twig // template for the static startpage. Extends the layoutStart.twig. +- index.twig // template for all other pages. Extends the layout.twig +- 404.twig // template for not found page. Extends the layout.twig. + +If you have not read the chapter about Twig templates yet, please read it now. It does not only describe the template language Twig, but also the template hierarchy (how templates can be included and extended). \ No newline at end of file diff --git a/content/3_for-developers/05-theme-variables/05-content.md b/content/3_for-developers/05-theme-variables/05-content.md new file mode 100644 index 0000000..bd157f2 --- /dev/null +++ b/content/3_for-developers/05-theme-variables/05-content.md @@ -0,0 +1,7 @@ +# Content + +The content-variable holds the whole content of your Markdown file in HTML. To print out the content of the Markdown file, simply write: + + {{ content }} +You can only use Twig filters to manipulate the content, but the possibilities are limited. + diff --git a/content/3_for-developers/05-theme-variables/08-description.md b/content/3_for-developers/05-theme-variables/08-description.md new file mode 100644 index 0000000..8899442 --- /dev/null +++ b/content/3_for-developers/05-theme-variables/08-description.md @@ -0,0 +1,9 @@ +# Description + +The description variable extracts the first 150 characters of the content. You can print the description out with: + + {{ description }} + +You can use the description for the meta-tag in your HTML head, for example. + + diff --git a/content/3_for-developers/05-theme-variables/10-item.md b/content/3_for-developers/05-theme-variables/10-item.md new file mode 100644 index 0000000..214901d --- /dev/null +++ b/content/3_for-developers/05-theme-variables/10-item.md @@ -0,0 +1,302 @@ +# Item + +The item variable is an object. It provides informations about the actual page, like the page title, the url, the slug or the next and the previous page. + +Some informations are only available for the type `folder` while some other informations are specific to the type `file`. But most informations are shared by both. + +## Example of the {{ item }} variable + +This is an example of an item variable: + +```` +stdClass Object +( + [originalName] => 25-navigation.md + [elementType] => file + [fileType] => md + [order] => 25 + [name] => navigation + [slug] => navigation + [path] => \3_for-developers\05-theme-variables\25-navigation.md + [key] => 4 + [keyPath] => 3.3.4 + [keyPathArray] => Array + ( + [0] => 3 + [1] => 3 + [2] => 4 + ) + [chapter] => 4.4.5 + [urlRel] => /typemill/developers/theme-variables/navigation + [urlAbs] => http://localhost/typemill/developers/theme-variables/navigation + [active] => 1 + [thisChapter] => stdClass Object + ( + [originalName] => 05-theme-variables + [elementType] => folder + [index] => 1 + [order] => 05 + [name] => theme variables + [slug] => theme-variables + [path] => \3_for-developers\05-theme-variables + [urlRel] => /typemill/developers/theme-variables + [urlAbs] => http://localhost/typemill/developers/theme-variables + [key] => 3 + [keyPath] => 3.3 + [keyPathArray] => Array + ( + [0] => 3 + [1] => 3 + ) + + [chapter] => 4.4 + [active] => 1 + [activeParent] => 1 + ) + + [prevItem] => stdClass Object + ( + [originalName] => 15-breadcrumb.md + [elementType] => file + [fileType] => md + [order] => 15 + [name] => breadcrumb + [slug] => breadcrumb + [path] => \3_for-developers\05-theme-variables\15-breadcrumb.md + [key] => 3 + [keyPath] => 3.3.3 + [keyPathArray] => Array + ( + [0] => 3 + [1] => 3 + [2] => 3 + ) + + [chapter] => 4.4.4 + [urlRel] => /typemill/developers/theme-variables/breadcrumb + [urlAbs] => http://localhost/typemill/developers/theme-variables/breadcrumb + ) + + [nextItem] => stdClass Object + ( + [originalName] => 30-settings.md + [elementType] => file + [fileType] => md + [order] => 30 + [name] => settings + [slug] => settings + [path] => \3_for-developers\05-theme-variables\30-settings.md + [key] => 5 + [keyPath] => 3.3.5 + [keyPathArray] => Array + ( + [0] => 3 + [1] => 3 + [2] => 5 + ) + + [chapter] => 4.4.6 + [urlRel] => /typemill/developers/theme-variables/settings + [urlAbs] => http://localhost/typemill/developers/theme-variables/settings + ) + +) +```` + +## Shared properties + +The following informations (properties) are shared by folders and files. The examples are based on a simple file and folder structure like this: + +- content + - 1.my-folder + - index.md + - 04.my-content-file.md + +### {{ item.elementType }} + +The type of the item. Possible values are: + +- "file" +- "folder" + +You can check the elementType and display a folder in a different way than a content file. + +Example: `{% if item.elementType == 'folder' %}` + +### {{ item.urlRel }} + +The relative url of the item without the base url. This is useful if you want to set a link to another internal page. + +Example: `/my-folder/my-content-file` + +### {{ item.urlAbs }} + +The absolute url of the item. This is useful for cannonical links, social media links or permalinks. + +Example: `http://mydomain.com/my-folder/my-content-file` + +### {{ item.slug }} + +The slug of the file or folder. This is the last part of the url. + +Example: `/my-content-file` in the url `www.mywebsite.com/my-folder/my-content-file`. + +### {{ item.name }} + +The human readable name of the file or folder. + +Example: `my content file` for a Mardown file with a name like `01.my-content-file.md`. + +### {{ item.originalName }} + +The original name of the file or folder. You probably don't need it for your theme. + +Example: `04.my-content-file.md` or `1.my-folder`. + +### {{ item.path }} + +The physical path to the item on your server. You probably don't need that, but TYPEMILL uses this information to map the urls with the content files and folders. + +Example: `\1.my-folder\04.my-content-file.md`. + +### {{ item.order }} + +The prefix of the item for ordering. You probably don't need it for your theme. + +Example: `1` for the folder and `04` for the file. + +### {{ item.active }} + +The item.active indicates, if the item is active or not. You probably don't need it in a page content, because the current page is always an active page, too. But you will need this in another context, for example, if you create a navigation. + +### {{ item.key }} + +The key of the item within the navigation array. You probably don't need that. + +Example: `2`. + +### {{ item.keyPath }} + +The full key path of the item within the navigation array. You probably don't need that. + +Example: `1.3.2` + +### {{ item.keyPathArray }} + +The full key path of the item within the navigation array as an array instead of a string. + +Example: `array(0 => 1, 1 => 3, 2 => 2 )` + +This might be useful if you want to determine the depth of the item within the content structure. + +Example: `item.keyPathArray|length` returns `3`, so you know that the page exists in third level of the content structure. + +### {{ item.chapter }} + +The human readable key path of the item as a string. Different to the key path, it starts with `1` instead of `0`. You can use it to print out a chapter number. + +Example: `2.4.3` + +### {{ item.thisChapter }} + +The parent chapter of the current item. If the current item is 1.3.2, then the parent chapter is 1.3. + +The variable `item.thisChapter` is an item object again, so you have access to all the above informations. This way, you can display the parent chapter's name or create a link to the parent chapter on the page. + +Example: `{{ item.thisChapter.name}}` + +### {{ item.nextItem}} + +The next item. If the current item is 1.3.2, then the next item might be 1.3.3 or 1.4. + +The `item.nextItem` is an item object again, so you have access to all the informations explained above. You can use the nextItem to create a pagination. + +Example: `{{ item.nextItem.name }}` + +### {{ item.prevItem}} + +The previous item. If the current item is 1.3.2, then the previous item is 1.3.1. If the current item is 1.3, then the previous item might be 1.2.8. + +The `item.prevItem` is an item object again, so you have access to all the informations explained above. You can use the prevItem to create a pagination. + +Example: `{{ item.prevItem.name }}` + +## Specific to Folders or Files + +The following informations are specific to files or folders + +### {{ item.fileType }} + +This information is only available for **files**. The fileType is `md` for Markdown. You will probably not need it for your theme. + +Example: `{% if item.elementType == 'file' %} {{ item.fileType}} {% endif %}` + +### {{ item.index }} + +This information is only available for **folders**. It indicates, if there exits an `index.md` file in the folder or not. If there is no index file with content for the folder, then you can display an alternative content. + +The whole usecase might look like this: + +``` +{% if item.elementType == 'folder' %} + {% if item.index %} + {{ content }} + {% else %} +

    {{ item.name }}

    +

    Your alternative static content for a folder.

    + {% endif %} +{% endif %} +``` + +### {{ item.folderContent }} + +This information is only available for **folders**. It contains the whole content of that folder, again as an multidimensional array of item objects. You can use it to list the content of a folder. + +To do so, you have two options: + +1. Display only the first level items in the current folder. This can be done with a simple for loop. +2. Display all nested items and folders within the current folder recursively. You have to write a Twig macro for that. + +The simple solution with all first level items of the current folder looks like this: + +```` +{% if item.elementType == 'folder' %} +
      + {% for sub in item.folderContent %} +
    • {{ sub.itemName }}
    • + {% endfor %} +
    +{% endif %} +```` + +To display all items within the current folder you have to create a macro in a separate file like this first: + +```` +{% macro loop_over(folder) %} + {% for element in folder %} + {% if element.elementType == 'folder' %} + {{ element.name }} +
      + {{ macros.loop_over(element.folderContent) }} +
    + {% else %} + {{ element.name }} + {% endif %} + + {% endfor %} +{% endmacro %} +```` + +Then you have to import the macro into your template and call it like this: + +``` +{% import 'folderMacro.twig' as macros %} +{% if item.elementType == 'folder' %} +
      + {{ macros.loop_over(item.folderContent) }} +
    +{% endif %} +``` + +You will learn more about macros in the chapter about the navigation variable. + diff --git a/content/3_for-developers/05-theme-variables/15-breadcrumb.md b/content/3_for-developers/05-theme-variables/15-breadcrumb.md new file mode 100644 index 0000000..4c6bd10 --- /dev/null +++ b/content/3_for-developers/05-theme-variables/15-breadcrumb.md @@ -0,0 +1,11 @@ +# Breadcrumb + +The `{{ breadcrumb }}` variable contains the breadcrumb for the page as an one dimensional array. The array contains item objects. You can loop over the breadcrumb and print the elements out like this: + + + +All informations of the items are available, so check the chapter about the item variable for more details. \ No newline at end of file diff --git a/content/3_for-developers/05-theme-variables/25-navigation.md b/content/3_for-developers/05-theme-variables/25-navigation.md new file mode 100644 index 0000000..2d44058 --- /dev/null +++ b/content/3_for-developers/05-theme-variables/25-navigation.md @@ -0,0 +1,102 @@ +# Navigation + +The variable `{{ navigation }}` represents the structure of the whole content folder and can be used to create a navigation. + +The `{{ navigation }}` variable is a multidimensional array of item objects. So you have access to nearly all informations, that an item object provides. Only the following informations for the paging is not part of the item objects within the navigation variable: + +- thisChapter +- nextItem +- prevItem + +The chapter about the `{{ item }}` variable lists all informations, that are provided by the item object. Read it, if you haven't done it yet. + +## Example of the {{ navigation }} variable + +This is an example of the `{{ navigation }}` variable containing just one folder and a file: + + Array( + [0] => stdClass Object( + [originalName] => 0_about-typemill + [elementType] => folder + [index] => 1 + [order] => 0 + [name] => about typemill + [slug] => about-typemill + [path] => \0_about-typemill + [urlRel] => /about-typemill + [urlAbs] => http://localhost/about-typemill + [key] => 0 + [keyPath] => 0 + [keyPathArray] => Array + ( + [0] => 0 + ) + [chapter] => 1 + [folderContent] => Array + ( + [0] => stdClass Object( + [originalName] => 02-what-is-mardown.md + [elementType] => file + [fileType] => md + [order] => 02 + [name] => what is mardown + [slug] => what-is-mardown + [path] => \0_about-robodoc\02-what-is-mardown.md + [key] => 0 + [keyPath] => 0.0 + [keyPathArray] => Array + ( + [0] => 0 + [1] => 0 + ) + [chapter] => 1.1 + [urlRel] => /about-robodoc/what-is-mardown + [urlAbs] => http://localhost/about-robodoc/what-is-mardown + ) + ) + ) + ) + +## Create a Navigation for Your Theme + +To print out the navigation or a table of contents, you have to loop over `{{ navigation }}` recursively. In Twig, you can do this with a macro. + +In the following example, the macro is integrated in a separate template called "navigation.twig". You can also create a separate file with the macro (e.g. "navMacro.twig") and import it into your navigation template. + +The whole usecase with the macro and the navigation in one template looks like this: + + {# define the macro #} + {% macro loop_over(navigation) %} + {% import _self as macros %} + {% for item in navigation %} +
  • + {% if item.elementType == 'folder' %} + {% if item.index %} + {{ item.name }} + {% else %} + {{ item.name }} + {% endif %} +
      + {{ macros.loop_over(item.folderContent) }} +
    + {% else %} + {{ item.name }} + {% endif %} +
  • + {% endfor %} + {% endmacro %} + + {# import the macro and use it to create the navigation #} + {% import _self as macros %} + +Just as a recommendation for your theme-structure: Typically you create a separate file like `navigation.twig` with all the code above. Then you place this template in a folder like `partials`. You can include this navigation.twig-file in a `layout.twig` file, so that the navigation is included in all websites of your theme. So the structure might look like this: + +- theme + - partials + - layout.twig // includes navigation + - navigation.twig + - index.twig // extends layout.twig \ No newline at end of file diff --git a/content/3_for-developers/05-theme-variables/30-settings.md b/content/3_for-developers/05-theme-variables/30-settings.md new file mode 100644 index 0000000..ad64897 --- /dev/null +++ b/content/3_for-developers/05-theme-variables/30-settings.md @@ -0,0 +1,62 @@ +# Settings + +The `{{ settings }}` variable is a simple array. It combines the default settings and the user specific settings of the `settings.yaml` file. + +## Useful Settings + +The following settings might be useful for your theme: + +### {{ settings.title }} + +The title of the website. The default value is `TYPEMILL`. + +### {{ settings.author }} + +Thee author of the website. The default value is `unknown`. + +### {{ settings.copyright }} + +The copyright of the website. The default value is `copyright`. + +### {{ settings.startpage }} + +Has a separate startpage or not. Default value is `true`. + +### {{ settings.theme }} + +The name of the theme that is in use. Default value is `typemill`. + +### {{ settings.version }} + +The version of TYPEMILL that is in use. A value of the format `0.0.1`. + +## Additional Settings + +There a some more settings that are probably not very useful for your theme: + +### {{ settings.themeFolder }} + +The folder of the theme. The default value is `theme`. + +### {{ settings.contentFolder }} + +The folder of the content. The default value is `content`. + +### {{ settings.rootPath }} + +The full path to the root of the website. + +### {{ settings.themePath }} + +The full path to the theme of the website. + +### {{ settings.authorPath }} + +The full path to the author theme. This theme is actually only in use for the setup path, but might hold an admin dashboard in future. + +### {{ settings.displayErrorDetails }} + +If the error display is off or on. Default value is `false`. + +Some more informations are provided by the Slim framework, that runs under the hood of TYPEMILL. You will probably never use them. + diff --git a/content/3_for-developers/05-theme-variables/index.md b/content/3_for-developers/05-theme-variables/index.md new file mode 100644 index 0000000..30fad10 --- /dev/null +++ b/content/3_for-developers/05-theme-variables/index.md @@ -0,0 +1,3 @@ +# Theme Variables + +TYPEMILL provides **six variables** for your theme. They are easy to understand and simple to use. \ No newline at end of file diff --git a/content/3_for-developers/index.md b/content/3_for-developers/index.md new file mode 100644 index 0000000..0ceffa8 --- /dev/null +++ b/content/3_for-developers/index.md @@ -0,0 +1,3 @@ +# Hello Developers! + +If you love **lightweight systems**, stupid **simple theming** and the template language **Twig**, then TYPEMILL is for you! \ No newline at end of file diff --git a/content/4_info/01-release-notes.md b/content/4_info/01-release-notes.md new file mode 100644 index 0000000..e49ea6c --- /dev/null +++ b/content/4_info/01-release-notes.md @@ -0,0 +1,16 @@ +#Release Notes + +This is the version history with some release notes. + +## Version 1.0.0 (13.04.2017) +The first alpha version of typemill with all basic features for a simple website: + +- **Content** with Markdown files and folders +- **Settings** with YAML and a setup page +- **Themes** with Twig and six theme variables + - {{ content }} + - {{ description }} + - {{ item }} + - {{ breadcrumb }} + - {{ navigation }} + - {{ settings }} \ No newline at end of file diff --git a/content/4_info/05-usage-and-licence.md b/content/4_info/05-usage-and-licence.md new file mode 100644 index 0000000..c99ad61 --- /dev/null +++ b/content/4_info/05-usage-and-licence.md @@ -0,0 +1,16 @@ +# Usage and Licence + +TYPEMILL is published under the MIT licence. This means, that you can do with it whatever you want. + +You are always welcome to reference or link to TYPEMILL, to report bugs and to contribute to this project (e.g. share fixes, enhancements or ideas). If this software safed you a lot of time and money, then you are invited to donate some bucks, so I can save some money, too :-) + +--- + +Copyright (c) 2017 Sebastian Schürmanns + +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/content/4_info/10-Imprint-and-privacy.md b/content/4_info/10-Imprint-and-privacy.md new file mode 100644 index 0000000..659d199 --- /dev/null +++ b/content/4_info/10-Imprint-and-privacy.md @@ -0,0 +1,12 @@ +# Imprint + +The owner of this website is + +Sebastian Schürmanns + +Stendaler Str. 15 + +10559 Berlin + + + diff --git a/content/4_info/15_markdown-test.md b/content/4_info/15_markdown-test.md new file mode 100644 index 0000000..23ef576 --- /dev/null +++ b/content/4_info/15_markdown-test.md @@ -0,0 +1,100 @@ +# Test the Markdown-Styling + +This is just a test file to check, if all the html elements created by the markdown syntax are styled correctly. If you create a new template, please use this page to check your css styling. + +## Inline Elements + +This is an ordinary paragraph containing only simple text. + +This is an _emphasis_ and this is a **bold** text. You can use asterixes to create an *emphasis* or an **bold** text, too. You can _emphasis more than one word_, but if you use it in_the_middle_of_the_word, then no emphasis will appear. + +This is a footnote [^1]. Please check at the end of this file, if two footnotes[^2] appear. + +This is a [Link](http://writedown.net), you can also use a shortcut to create a without a link text. + +## Headlines + +We already used some first and second level headlines, but check them in combination of other headlines. Now let us use a + +### Third Level Headline + +This headline is ligthly more decent and should be visibly lower prioritized than a second level headline. + +#### Fourth Level Headline + +The fourth level headline will probably not used too often in usual text works, but you should still provide a design for it. + +##### Fifth Level Headline + +Yes, this is a really low level headline, probably only used by very scientific works or studies with a deep logical structure. + +###### Sixth Level Headline + +Finally a sixth level headline, and yes: This is really really low. But get your brain around it and provide some nice style! + +## Lists + +This is an unordered List: + +- One Item +- Another Item +- An Item again + +This is an ordered List: + +1. First Item +2. Second Item +3. Third Item + +And this is a definition List: + +Apple +: Pomaceous fruit of plants of the genus Malus in +the family Rosaceae. + +Orange +: The fruit of an evergreen tree of the genus Citrus. + +## Blockquote + +There always some women and men with wise words + +> But I usually don't read them, to be honest. + +## Tables + +Tables are a feature of Markdown Extra. Tables are not mentioned in the original Markdown specification. + +| Name | Usage | +| --------- | ------- | +| My Name | For Me | +| Your Name | For You | + +## Abbreviations + +This is part of Markdown Extra, too. + +*[HTML]: Hyper Text Markup Language + +*[W3C]: World Wide Web Consortium + +The HTML specification is maintained by the W3C. + +## Code + +Let us create some `` and now let us check, if a codeblock works: + +```` + +```` + + + + + +[^1]: This is the first footnote +[^2]: This is the second footnote + diff --git a/content/4_info/index.md b/content/4_info/index.md new file mode 100644 index 0000000..33e62ab --- /dev/null +++ b/content/4_info/index.md @@ -0,0 +1,3 @@ +# Info + +Some informations like version history, copyright, licence and imprint. \ No newline at end of file diff --git a/content/index.md b/content/index.md new file mode 100644 index 0000000..7e2e1c0 --- /dev/null +++ b/content/index.md @@ -0,0 +1,2 @@ +TYPEMILL is a simple system to **publish** your **text-work** (markdown) as a **website**. Nearly no technical skills are required. Just download, learn and start. + diff --git a/index.php b/index.php new file mode 100644 index 0000000..3137695 --- /dev/null +++ b/index.php @@ -0,0 +1,9 @@ +run(); + +?> \ No newline at end of file diff --git a/licence.md b/licence.md new file mode 100644 index 0000000..1ffd235 --- /dev/null +++ b/licence.md @@ -0,0 +1,7 @@ +Copyright (c) 2017 Sebastian Schürmanns + +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/readme.md b/readme.md new file mode 100644 index 0000000..7362bbc --- /dev/null +++ b/readme.md @@ -0,0 +1,50 @@ +# About TYPEMILL + +TYPEMILL is a small system to create a website based on Markdown files. It is perfect for web books, online manuals or documentations. + +To create a website, simply add your Markdown files to the content folder of TYPEMILL. TYPEMILL will take your files and folders and create a website with a corresponding navigation. + +TYPEMILL is a lightweight tool for writers, who do not want to fiddle around with complicated technology. If you are a developer, you can easily craft your own theme based on the template language Twig. + +![TYPEMILL Screenshot](/themes/typemill/typemill-large.jpg) + +## Documentation + +You can read the full documentation for writers and developers on the [TYPEMILL website](http://typemill.net). + +## Installation + +Download TYPEMILL from the [TYPEMILL website](http://typemill.net) or clone this repository with git. Open your git command line (e.g. gitbash), go to your project folder (e.g. htdocs) and type: + + git clone git://github.com/trendschau/typemill.git + +Then open your command line, go to your fresh TYPEMILL folder and update the libraries with composer: + + composer update +If you did not use composer before, please go to the [composer website](http://getcomposer.org) and start to learn. + +To run TYPEMILL **live**, simply upload the files to your server. + +## Requirements + +Your server should run with PHP 5.6 or newer. No database is required. + +## Setup + +To setup TYPEMILL, please visit yourdomain.com/setup and fill out the forms. + +You can also setup TYPEMILL manually: Go to the settings folder, copy the file `settings.yaml.example` and rename it to `settings.yaml`. Then open the file and edit the settings manually. + +It is recommended to setup your TYPEMILL website before you push it live, because the setup url is open to everybody. After the first setup, the setup url is not active anymore. + +Please read the full documentation on the [TYPEMILL website](http://typemill.net). + +## Contribute + +If you want to contribute to TYPEMILL, please fork this GitHub repository first. Then make your changes and create a pull request. I will review all request as soon as possible. + +For hints, questions, problems and support, please open up a new issue on GitHub. + +## Licence + +TYPEMILL is published under MIT licence. \ No newline at end of file diff --git a/settings/settings.yaml.example b/settings/settings.yaml.example new file mode 100644 index 0000000..8cfedae --- /dev/null +++ b/settings/settings.yaml.example @@ -0,0 +1,6 @@ +title: MyWebsite +author: 'Your Name' +copyright: © +year: '2017' +theme: robodoc +startpage: true \ No newline at end of file diff --git a/system/Controllers/Controller.php b/system/Controllers/Controller.php new file mode 100644 index 0000000..7563cb9 --- /dev/null +++ b/system/Controllers/Controller.php @@ -0,0 +1,23 @@ +c = $c; + } + + protected function render404($response, $content = NULL) + { + return $this->c->view->render($response->withStatus(404), '/404.twig', $content); + } +} + +?> \ No newline at end of file diff --git a/system/Controllers/PageController.php b/system/Controllers/PageController.php new file mode 100644 index 0000000..831442b --- /dev/null +++ b/system/Controllers/PageController.php @@ -0,0 +1,132 @@ +c->get('settings'); + $pathToContent = $settings['rootPath'] . $settings['contentFolder']; + $cache = new Cache(); + $uri = $request->getUri(); + $base_url = $uri->getBaseUrl(); + + if($cache->validate()) + { + $structure = $this->getCachedStructure($cache); + $cached = true; + } + else + { + $structure = $this->getFreshStructure($pathToContent, $cache, $uri); + $cached = false; + + if(!$structure) + { + $content = '

    No Content

    Your content folder is empty.

    '; + $this->c->view->render($response, '/index.twig', [ 'content' => $content ]); + } + } + + /* if the user is on startpage */ + if(empty($args)) + { + /* check, if there is an index-file in the root of the content folder */ + $contentMD = file_exists($pathToContent . DIRECTORY_SEPARATOR . 'index.md') ? file_get_contents($pathToContent . DIRECTORY_SEPARATOR . 'index.md') : NULL; + } + else + { + /* get the request url */ + $urlRel = $uri->getBasePath() . '/' . $args['params']; + + /* find the url in the content-item-tree and return the item-object for the file */ + $item = Folder::getItemForUrl($structure, $urlRel); + + if(!$item && $cached) + { + $structure = $this->getFreshStructure($pathToContent, $cache, $uri); + $item = Folder::getItemForUrl($structure, $urlRel); + } + if(!$item){ return $this->render404($response, array( 'navigation' => $structure, 'settings' => $settings, 'base_url' => $base_url )); } + + /* get breadcrumb for page */ + $breadcrumb = Folder::getBreadcrumb($structure, $item->keyPathArray); + + /* add the paging to the item */ + $item = Folder::getPagingForItem($structure, $item); + + /* check if url is a folder. If so, check if there is an index-file for the folder */ + if($item->elementType == 'folder' && $item->index) + { + $filePath = $pathToContent . $item->path . DIRECTORY_SEPARATOR . 'index.md'; + } + elseif($item->elementType == 'file') + { + $filePath = $pathToContent . $item->path; + } + + /* read the content of the file */ + $contentMD = isset($filePath) ? file_get_contents($filePath) : false; + } + + /* initialize parsedown */ + $Parsedown = new \ParsedownExtra(); + + /* parse markdown-file to html-string */ + $contentHTML = $Parsedown->text($contentMD); + $description = substr(strip_tags($contentHTML),0,150); + $description = trim(preg_replace('/\s+/', ' ', $description)); + + /* + $timer['topiccontroller']=microtime(true); + $timer['end topiccontroller']=microtime(true); + Helpers::printTimer($timer); + */ + + $route = empty($args) && $settings['startpage'] ? '/cover.twig' : '/index.twig'; + + $this->c->view->render($response, $route, array('navigation' => $structure, 'content' => $contentHTML, 'item' => $item, 'breadcrumb' => $breadcrumb, 'settings' => $settings, 'description' => $description, 'base_url' => $base_url )); + } + + + protected function getCachedStructure($cache) + { + return $cache->getData('structure'); + } + + + protected function getFreshStructure($pathToContent, $cache, $uri) + { + /* scan the content of the folder */ + $structure = Folder::scanFolder($pathToContent); + + /* if there is no content, render an empty page */ + if(count($structure) == 0) + { + return false; + } + + /* create an array of object with the whole content of the folder */ + $structure = Folder::getFolderContentDetails($structure, $uri->getBaseUrl(), $uri->getBasePath()); + + /* cache navigation */ + $cache->refresh($structure, 'structure'); + + return $structure; + } +} + +?> \ No newline at end of file diff --git a/system/Controllers/SetupController.php b/system/Controllers/SetupController.php new file mode 100644 index 0000000..1e15ab2 --- /dev/null +++ b/system/Controllers/SetupController.php @@ -0,0 +1,138 @@ +getThemes(); + $copyright = $this->getCopyright(); + $uri = $request->getUri(); + $base_url = $uri->getBaseUrl(); + $errors = false; + + /* Check, if setting folder is */ + if(!is_writable($this->c->get('settings')['settingsPath'])){ $errors['folder'] = 'Your settings folder is not writable.'; } + + $data = array( + 'themes' => $themes, + 'copyright' => $copyright, + 'inputs' => false, + 'errors' => $errors, + 'base_url' => $base_url + ); + $this->c->view->render($response, '/setup.twig', $data); + } + + public function save($request, $response, $args) + { + if($request->isPost()) + { + $params = $request->getParams(); + + $copyright = $this->getCopyright(); + $themes = $this->getThemes(); + $errors = array(); + $uri = $request->getUri(); + $base_url = $uri->getBaseUrl(); + + /* Validate Title */ + if(!isset($params['title'])){ $errors['title'] = 'Please add a title. '; } + if(strlen($params['title']) < 2){ $errors['title'] = 'Title is too short (< 2). '; } + if(strlen($params['title']) > 20){ $errors['title'] = 'Title is too long (> 20). '; } + + /* Validate Author */ + if(isset($params['author']) && !empty($params['author'])) + { + if(strlen($params['author']) < 2){ $errors['author'] = 'Text is too short (< 2). '; } + if(strlen($params['author']) > 40){ $errors['author'] .= 'Text is too long (> 40). '; } + if(preg_match('/[\(\)\[\]\{\}\?\*\$\"\'\|<>=!;@#%§]/', $params['author'])){ $errors['author'] .= 'Only special chars like a,b a-b a_b a&b are allowed.'; } + } + + /* Validate Year */ + if(!isset($params['year'])){ $errors['year'] = 'Please add a year, e.g. 2017.'; } + if(!preg_match('/^(\d{4})$/', $params['year'])){ $errors['year'] = 'Use four digits for the year like 2017.'; } + + /* Validate Copyright */ + if(isset($params['copyright']) AND !in_array($params['copyright'], $copyright )){ $errors['copyright'] = 'Please select a valid copyright.'; } + + /* Validate Theme */ + if(!isset($params['theme']) AND !in_array($params['theme'], $themes)){ $errors['theme'] = 'Please select a valid theme.'; } + + /* Validate Startpage */ + if(isset($params['startpage'])){ $params['startpage'] = true; }else{ $params['startpage'] = false; } + + /* Validate Folder Writable */ + if(!is_writable($this->c->get('settings')['settingsPath'])){ $errors['folder'] = 'Your settings folder is not writable.'; } + + /* Prevent Title From Hacking */ + $params['title'] = htmlentities(stripslashes($params['title'])); + + if(!empty($errors)) + { + $data = array( + 'themes' => $themes, + 'copyright' => $copyright, + 'errors' => $errors, + 'inputs' => $params, + 'base_url' => $base_url + + ); + $this->c->view->render($response, '/setup.twig', $data); + } + else + { + $file = $this->c->get('settings')['settingsPath'] . DIRECTORY_SEPARATOR . 'settings.yaml'; + $fh = fopen($file, 'w'); + $yaml = Yaml::dump($params); + + file_put_contents($file, $yaml); + + $data = array( + 'inputs' => $params, + 'base_url' => $base_url + + ); + + $this->c->view->render($response, '/welcome.twig', $data); + } + } + } + + private function getCopyright() + { + return array( + "©", + "CC-BY", + "CC-BY-NC", + "CC-BY-NC-ND", + "CC-BY-NC-SA", + "CC-BY-ND", + "CC-BY-SA", + "None" + ); + } + + private function getThemes() + { + $themeFolder = $this->c->get('settings')['rootPath'] . $this->c->get('settings')['themeFolder']; + $themeFolderC = scandir($themeFolder); + $themes = array(); + foreach ($themeFolderC as $key => $theme) + { + if (!in_array($theme, array(".",".."))) + { + if (is_dir($themeFolder . DIRECTORY_SEPARATOR . $theme)) + { + $themes[] = $theme; + } + } + } + return $themes; + } +} + +?> \ No newline at end of file diff --git a/system/Models/Cache.php b/system/Models/Cache.php new file mode 100644 index 0000000..09f0276 --- /dev/null +++ b/system/Models/Cache.php @@ -0,0 +1,81 @@ +cachePath = $cachePath; + } + + public function validate() + { + if(isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] == 'max-age=0') + { + return false; + } + + $requestFile = $this->cachePath.'request.txt'; + if(!file_exists($requestFile)) + { + $this->writeFile($requestFile, time()); + return false; + } + + $lastRequest = file_get_contents($requestFile); + if(time() - $lastRequest > 600) + { + return false; + } + + return true; + } + + public function refresh($data, $name) + { + $sData = serialize($data); + $dataFile = $this->cachePath.$name.'.txt'; + $requestFile = $this->cachePath.'request.txt'; + + $this->writeFile($dataFile, $sData); + $this->writeFile($requestFile, time()); + } + + public function getData($name) + { + if (file_exists($this->cachePath.$name.'.txt')) + { + $data = file_get_contents($this->cachePath.$name.'.txt'); + $data = unserialize($data); + return $data; + } + return false; + } + + public function clearData($name) + { + /* todo */ + } + + public function clearAll() + { + /* todo */ + } + + public function writeFile($file, $data) + { + $fp = fopen($file, "w"); + fwrite($fp, $data); + fclose($fp); + } +} + +?> \ No newline at end of file diff --git a/system/Models/Folder.php b/system/Models/Folder.php new file mode 100644 index 0000000..5d2801d --- /dev/null +++ b/system/Models/Folder.php @@ -0,0 +1,274 @@ + $item) + { + if (!in_array($item, array(".",".."))) + { + if (is_dir($folderPath . DIRECTORY_SEPARATOR . $item)) + { + $subFolder = $item; + $folderContent[$subFolder] = self::scanFolder($folderPath . DIRECTORY_SEPARATOR . $subFolder); + } + else + { + $file = $item; + $folderContent[] = $file; + } + } + } + return $folderContent; + } + + /* + * Transforms array of folder item into an array of item-objects with additional information for each item + * vars: multidimensional array with folder- and file-names + * returns: array of objects. Each object contains information about an item (file or folder). + */ + public static function getFolderContentDetails(array $folderContent, $baseUrl, $fullSlug = NULL, $fullPath = NULL, $keyPath = NULL, $chapter = NULL) + { + $contentDetails = []; + $iteration = 0; + $chapternr = 1; + + foreach($folderContent as $key => $name) + { + $item = new \stdClass(); + + if(is_array($name)) + { + $nameParts = self::getStringParts($key); + + $item->originalName = $key; + $item->elementType = 'folder'; + $item->index = array_search('index.md', $name) === false ? false : true; + $item->order = count($nameParts) > 1 ? array_shift($nameParts) : NULL; + $item->name = implode(" ",$nameParts); + $item->name = iconv('ISO-8859-15', 'UTF-8', $item->name); + $item->slug = implode("-",$nameParts); + $item->slug = URLify::filter(iconv('ISO-8859-15', 'UTF-8', $item->slug)); + $item->path = $fullPath . DIRECTORY_SEPARATOR . $key; + $item->urlRel = $fullSlug . '/' . $item->slug; + $item->urlAbs = $baseUrl . $fullSlug . '/' . $item->slug; + $item->key = $iteration; + $item->keyPath = $keyPath ? $keyPath . '.' . $iteration : $iteration; + $item->keyPathArray = explode('.', $item->keyPath); + $item->chapter = $chapter ? $chapter . '.' . $chapternr : $chapternr; + + $item->folderContent = self::getFolderContentDetails($name, $baseUrl, $item->urlRel, $item->path, $item->keyPath, $item->chapter); + } + else + { + $nameParts = self::getStringParts($name); + $fileType = array_pop($nameParts); + + if($name == 'index.md' || $fileType !== 'md' ) break; + + $item->originalName = $name; + $item->elementType = 'file'; + $item->fileType = $fileType; + $item->order = count($nameParts) > 1 ? array_shift($nameParts) : NULL; + $item->name = implode(" ",$nameParts); + $item->name = iconv('ISO-8859-15', 'UTF-8', $item->name); + $item->slug = implode("-",$nameParts); + $item->slug = URLify::filter(iconv('ISO-8859-15', 'UTF-8', $item->slug)); + $item->path = $fullPath . DIRECTORY_SEPARATOR . $name; + $item->key = $iteration; + $item->keyPath = $keyPath . '.' . $iteration; + $item->keyPathArray = explode('.',$item->keyPath); + $item->chapter = $chapter . '.' . $chapternr; + $item->urlRel = $fullSlug . '/' . $item->slug; + $item->urlAbs = $baseUrl . $fullSlug . '/' . $item->slug; + } + $iteration++; + $chapternr++; + $contentDetails[] = $item; + } + return $contentDetails; + } + + public static function getItemForUrl($folderContentDetails, $url, $result = NULL) + { + foreach($folderContentDetails as $key => $item) + { + if($item->urlRel === $url) + { + $item->active = true; + $result = $item; + } + elseif($item->elementType === "folder") + { + $result = self::getItemForUrl($item->folderContent, $url, $result); + } + } + return $result; + } + + public static function getPagingForItem($content, $item) + { + $keyPos = count($item->keyPathArray)-1; + $thisChapArray = $item->keyPathArray; + $nextItemArray = $item->keyPathArray; + $prevItemArray = $item->keyPathArray; + + $item->thisChapter = false; + $item->prevItem = false; + $item->nextItem = false; + + + /************************ + * ADD THIS CHAPTER * + ************************/ + + if($keyPos > 0) + { + array_pop($thisChapArray); + $item->thisChapter = self::getItemWithKeyPath($content, $thisChapArray); + } + + /************************ + * ADD NEXT ITEM * + ************************/ + + if($item->elementType == 'folder') + { + /* get the first element in the folder */ + $item->nextItem = isset($item->folderContent[0]) ? $item->folderContent[0] : false; + } + + if(!$item->nextItem) + { + $nextItemArray[$keyPos]++; + $item->nextItem = self::getItemWithKeyPath($content, $nextItemArray); + } + + while(!$item->nextItem) + { + array_pop($nextItemArray); + if(empty($nextItemArray)) break; + $newKeyPos = count($nextItemArray)-1; + $nextItemArray[$newKeyPos]++; + $item->nextItem = self::getItemWithKeyPath($content, $nextItemArray); + } + + /************************ + * ADD PREVIOUS ITEM * + ************************/ + + if($prevItemArray[$keyPos] > 0) + { + $prevItemArray[$keyPos]--; + $item->prevItem = self::getItemWithKeyPath($content, $prevItemArray); + + if($item->prevItem && $item->prevItem->elementType == 'folder' && !empty($item->prevItem->folderContent)) + { + /* get last item in folder */ + $item->prevItem = self::getLastItemOfFolder($item->prevItem); + } + } + else + { + $item->prevItem = $item->thisChapter; + } + + if($item->prevItem && $item->prevItem->elementType == 'folder'){ unset($item->prevItem->folderContent); } + if($item->nextItem && $item->nextItem->elementType == 'folder'){ unset($item->nextItem->folderContent); } + if($item->thisChapter){unset($item->thisChapter->folderContent); } + + return $item; + } + + public static function getItemWithKeyPath($content, array $searchArray) + { + $item = false; + + foreach($searchArray as $key => $itemKey) + { + $item = isset($content[$itemKey]) ? clone($content[$itemKey]) : false; + + unset($searchArray[$key]); + if(!empty($searchArray) && $item) + { + return self::getItemWithKeyPath($item->folderContent, $searchArray); + } + } + return $item; + } + + /* get breadcrumb as copied array, set elements active in original and mark parent element in original */ + public static function getBreadcrumb($content, $searchArray, $i = NULL, $breadcrumb = NULL) + { + if(!$i){ $i = 0; $breadcrumb = array();} + + while($i < count($searchArray)) + { + $item = $content[$searchArray[$i]]; + $item->active = true; + if($i == count($searchArray)-2) + { + $item->activeParent = true; + } + + $copy = clone($item); + if($copy->elementType == 'folder') + { + unset($copy->folderContent); + $content = $item->folderContent; + } + $breadcrumb[] = $copy; + + $i++; + return self::getBreadcrumb($content, $searchArray, $i++, $breadcrumb); + } + return $breadcrumb; + } + + public static function getParentItem($content, $searchArray, $iteration = NULL) + { + if(!$iteration){ $iteration = 0; } + while($iteration < count($searchArray)-2) + { + $content = $content[$searchArray[$iteration]]->folderContent; + $iteration++; + return self::getParentItem($content, $searchArray, $iteration); + } + return $content[$searchArray[$iteration]]; + } + + private static function getLastItemOfFolder($folder) + { + $lastItem = end($folder->folderContent); + if(is_object($lastItem) && $lastItem->elementType == 'folder' && !empty($lastItem->folderContent)) + { + return self::getLastItemOfFolder($lastItem); + } + return $lastItem; + } + + public static function getStringParts($name) + { + return preg_split('/[\-\.\_\=\+\?\!\*\#\(\)\/ ]/',$name); + } + + public static function getFileType($fileName) + { + $parts = preg_split('/\./',$fileName); + return end($parts); + } +} +?> \ No newline at end of file diff --git a/system/Models/Helpers.php b/system/Models/Helpers.php new file mode 100644 index 0000000..1c16810 --- /dev/null +++ b/system/Models/Helpers.php @@ -0,0 +1,28 @@ +'; + $table .= ''; + foreach($timer as $breakpoint => $time) + { + $duration = $time - $lastTime; + + $table .= ''; + $table .= ''; + $table .= ''; + $table .= ''; + $table .= ''; + + $lastTime = $time; + } + $table .= '
    BreakpointTimeDuration
    ' . $breakpoint . '' . $time . '' . $duration . '
    '; + echo $table; + exit; + } +} \ No newline at end of file diff --git a/system/Routes/api.php b/system/Routes/api.php new file mode 100644 index 0000000..a16c0d4 --- /dev/null +++ b/system/Routes/api.php @@ -0,0 +1,7 @@ +get('/api', ApiController::class . ':index' )->setName('api.index'); +*/ +?> \ No newline at end of file diff --git a/system/Routes/web.php b/system/Routes/web.php new file mode 100644 index 0000000..774f6b0 --- /dev/null +++ b/system/Routes/web.php @@ -0,0 +1,13 @@ +get('/setup', SetupController::class . ':setup')->setName('setup'); + $app->post('/setup', SetupController::class . ':save')->setName('save'); +} + +$app->get('/[{params:.*}]', PageController::class . ':index'); +?> \ No newline at end of file diff --git a/system/author/css/normalize.css b/system/author/css/normalize.css new file mode 100644 index 0000000..9b77e0e --- /dev/null +++ b/system/author/css/normalize.css @@ -0,0 +1,461 @@ +/*! 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"], /* 1 */ +[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, /* 1 */ +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; +} diff --git a/system/author/css/style.css b/system/author/css/style.css new file mode 100644 index 0000000..b590ddd --- /dev/null +++ b/system/author/css/style.css @@ -0,0 +1,231 @@ +/********************** +* HELPERS * +**********************/ + +a, a:link, a:visited, a:focus, a:hover, a:active, button, .button, input{ + -webkit-transition: all 0.2s ease; + -moz-transition: all 0.2s ease; + -o-transition: all 0.2s ease; + -ms-transition: all 0.2s ease; + transition: all 0.2s ease; +} + +/********************** +* COLORS * +**********************/ + +body{ background: #f9f8f6; color: #444; } +.card{ background: #FFF; } +.card header{ background: #e0494c; color: #f9f8f6; } +.onoffswitch-label { border: 0px solid #DDD; } +.onoffswitch-inner:before { background: #8ce196; color: #f9f8f6; } +.onoffswitch-inner:after { background: #e0474c; color: #f9f8f6; } +.onoffswitch-switch { background: #f9f8f6; border: 1px solid #999; } +input, select{ border: 1px solid #ddd; background: #fff; } +select:focus, input:focus{ border: 1px solid #FFF; outline: none; box-shadow: 0 0 2px #e0474c; } +input[type="submit"]{ border: 2px solid #FFF; background: #e0474c; color: #f9f8f6; } +input[type="submit"]:hover{ background: #FFF; color: #444; } +a.button{ border: 2px solid #e0474c; background: #e0474c; color: #f9f8f6; } +a.button:hover{ border: 2px solid #e0474c; background: #FFF; color: #444; } +.error label{ color: #e0474c; } +.error input, .error select{ border: 1px solid #e0474c; } +.error small, .error p{ color: #e0474c; } + +/******************** +* FONTS * +********************/ + +header, nav, h1, h2, h3, h4, h5, h6{ + font-family: arial, sans-serif; +} + +/******************** +* HEADLINES * +********************/ + +h1, h2, h3, h4, h5, h6{ font-weight: 700; } +h1{ font-size: 1em; margin: 0.6em 0 0.6em; } +h2{ font-size: 1em; margin: 0.6em 0 0.6em; } +h3{ font-size: 1em; margin: 0.6em 0 0.6em; } + +html,body{ + padding: 0; + margin:0; +} +body{ + padding: 20px; + font-size: 18px; +} +.card{ + display: block; + margin: auto; + max-width: 400px; + box-shadow: 0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12); +} +.card img{ + width: 100%; +} +.card header{ + display: inlin-block; + width: 100%; + padding: 20px; + box-sizing: border-box; +} +.card header h1{ + display: inline-block; +} +form{} +fieldset{ + padding: 30px 20px; + margin: 0; + box-sizing: border-box; + border: none; +} +label,.label{ + display: block; + font-size: 0.65em; + font-weight: 300; + padding: 15px 0 0; + line-height: 1.5em; + text-transform: uppercase; +} +.field{ + margin: 5px 0; + box-sizing: border-box; +} +.size100{ + width: 100%; +} +.size25, .size50, .size75{ + display: inline-block; + vertical-align: top; +} +.size75{ width: 74%; } +.size50{ width: 49%; } +.size25{ width: 24%; } +input, select{ + display: inline-block; + margin-top: 5px; + box-shadow: none; + width: 100%; + font-size: 0.8em; + box-sizing: border-box; + min-height: 42px; +} +input{ + padding: 10px; +} +select{ + padding: 8px; +} +input[type="submit"]{ + border-radius: 3px; + float: right; + margin-top: 0px; + width: 150px; +} +input[type="submit"]:hover{ + cursor: pointer; +} + +/* Select Button, see https://codepen.io/vkjgr/pen/VYMeXp */ +select { + /* reset */ + -webkit-appearance: none; + -moz-appearance: none; + + /* style */ + background-image: + linear-gradient(45deg, transparent 50%, #444 50%), + linear-gradient(135deg, #444 50%, transparent 50%), + linear-gradient(to right, #f9f8f6, #f9f8f6); + background-position: + calc(100% - 20px) calc(1em + 2px), + calc(100% - 15px) calc(1em + 2px), + 100% 0; + background-size: + 5px 5px, + 5px 5px, + 2.8em 2.8em; + background-repeat: no-repeat; +} + +/* On Off Switch */ +.onoffswitch { + margin-top: 5px; + display: inline-block; + position: relative; + width: 100%; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; +} +.onoffswitch label{ + padding: 0; +} +.onoffswitch-checkbox { + display: none; +} +.onoffswitch-label { + display: block; + overflow: hidden; + cursor: pointer; +} +.onoffswitch-inner { + display: block; + width: 200%; + margin-left: -100%; + transition: margin 0.3s ease-in 0s; +} +.onoffswitch-inner:before, .onoffswitch-inner:after { + display: block; + float: left; + width: 50%; + padding: 10px 0; + font-size: 1.5em; + line-height: 1.9em; + font-family: Trebuchet, Arial, sans-serif; + font-weight: bold; + box-sizing: border-box; + min-height: 42px; +} +.onoffswitch-inner:before { + content: "ON"; + padding-left: 20px; +} +.onoffswitch-inner:after { + content: "OFF"; + padding-right: 20px; + text-align: right; +} +.onoffswitch-switch { + display: block; + width: 18px; + margin: 6px; + position: absolute; + top: 0; + bottom: 0; + right: 60%; + border-radius: 20px; + transition: all 0.3s ease-in 0s; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-inner { + margin-left: 0; +} +.onoffswitch-checkbox:checked + .onoffswitch-label .onoffswitch-switch { + right: 0px; +} +.welcome{ + padding: 20px; + font-size: 0.9em; +} +a.button{ + display: block; + width: 100%; + padding: 10px; + text-align: center; + margin: 20px 0; + border-radius: 3px; + box-sizing: border-box; + text-decoration: none; +} \ No newline at end of file diff --git a/system/author/layout.twig b/system/author/layout.twig new file mode 100644 index 0000000..93c69de --- /dev/null +++ b/system/author/layout.twig @@ -0,0 +1,18 @@ + + + + + {% block title %}{% endblock %} + + + + + + + + +
    + {% block content %}{% endblock %} +
    + + \ No newline at end of file diff --git a/system/author/setup.twig b/system/author/setup.twig new file mode 100644 index 0000000..3c74eaa --- /dev/null +++ b/system/author/setup.twig @@ -0,0 +1,74 @@ +{% extends '/layout.twig' %} + +{% block title %}Setup{% endblock %} + +{% block content %} +
    +
    +
    +

    Setup

    + +
    +
    + {% if errors.folder %} +
    +

    {{ errors.folder }}

    +
    + {% endif %} +
    + + + {% if errors.title %}{{ errors.title }}{% endif %} +
    +
    + + + {% if errors.author %}{{ errors.author }}{% endif %} +
    +
    + + + {% if errors.copyright %}{{ errors.copyright }}{% endif %} +
    +
    + + + {% if errors.year %}{{ errors.year }}{% endif %} +
    +
    + + + {% if errors.theme %}{{ errors.theme }}{% endif %} +
    +
    Startpage +
    + + +
    +
    +
    +
    + +
    + +{% endblock %} \ No newline at end of file diff --git a/system/author/welcome.twig b/system/author/welcome.twig new file mode 100644 index 0000000..6544faa --- /dev/null +++ b/system/author/welcome.twig @@ -0,0 +1,17 @@ +{% extends '/layout.twig' %} + +{% block title %}Setup Welcome{% endblock %} + +{% block content %} +
    +
    +

    Congratulations!

    +
    +
    +

    Hello {{ author }}!

    +

    Your settings are stored in your settings folder now. If you want to change the settings, simply open the file "settings.yaml" and edit them.

    +

    Not sure how to start? Simply create some content for your new website or visit the homepage and read the documentation...

    + Homepage +
    +
    +{% endblock %} \ No newline at end of file diff --git a/system/autoload.php b/system/autoload.php new file mode 100644 index 0000000..b321fe7 --- /dev/null +++ b/system/autoload.php @@ -0,0 +1,7 @@ + [ + 'title' => 'TYPEMILL', + 'author' => 'unknown', + 'copyright' => 'copyright', + 'startpage' => true, + 'rootPath' => __DIR__ . DS . '..' . DS, + 'theme' => ($theme = 'typemill'), + 'themeFolder' => ($themeFolder = 'themes'), + 'themePath' => __DIR__ . DS . '..' . DS . $themeFolder . DS . $theme, + 'settingsPath' => __DIR__ . DS . '..' . DS . 'settings', + 'authorPath' => __DIR__ . DS . 'author' . DS, + 'contentFolder' => 'content', + 'displayErrorDetails' => false, + 'version' => '1.0.0' + ], +]; + +?> \ No newline at end of file diff --git a/system/system.php b/system/system.php new file mode 100644 index 0000000..8871c9e --- /dev/null +++ b/system/system.php @@ -0,0 +1,77 @@ +parse( file_get_contents($settings['settings']['settingsPath'] . DIRECTORY_SEPARATOR . 'settings.yaml' ) ); + } catch (ParseException $e) { + printf("Unable to parse the YAML string: %s", $e->getMessage()); + } + + $settings = array('settings' => array_merge($settings['settings'], $userSettings)); +} + +/************************ +* INITIATE SLIM * +************************/ + +$app = new \Slim\App($settings); + +/************************ +* SLIM CONTAINER * +************************/ + +$container = $app->getContainer(); + +/************************ +* LOAD TWIG * +************************/ +$container['view'] = function ($container) use ($settings){ + $path = array($settings['settings']['themePath'], $settings['settings']['authorPath']); + $view = new \Slim\Views\Twig( $path, [ + 'cache' => false, + 'autoescape' => false + ]); + + // Instantiate and add Slim specific extension + $basePath = rtrim(str_ireplace('index.php', '', $container['request']->getUri()->getBasePath()), '/'); + $view->addExtension(new Slim\Views\TwigExtension($container['router'], $basePath)); + + return $view; +}; + +/************************ +* LOAD FLASH MESSAGES * +************************/ + +$container['flash'] = function () { + return new \Slim\Flash\Messages(); +}; + +/************************ +* NOT FOUND HANDLER * +************************/ + +$container['notFoundHandler'] = function($c) +{ + return new \System\Handlers\NotFoundHandler($c['view']); +}; + +require __DIR__ . '/Routes/web.php'; +require __DIR__ . '/Routes/api.php'; + +?> \ No newline at end of file diff --git a/system/vendor/autoload.php b/system/vendor/autoload.php new file mode 100644 index 0000000..21b4be9 --- /dev/null +++ b/system/vendor/autoload.php @@ -0,0 +1,7 @@ + + * Jordi Boggiano + * + * 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 + * @author Jordi Boggiano + * @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/system/vendor/composer/LICENSE b/system/vendor/composer/LICENSE new file mode 100644 index 0000000..f27399a --- /dev/null +++ b/system/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/system/vendor/composer/autoload_classmap.php b/system/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000..71dd9c1 --- /dev/null +++ b/system/vendor/composer/autoload_classmap.php @@ -0,0 +1,9 @@ + $vendorDir . '/nikic/fast-route/src/functions.php', +); diff --git a/system/vendor/composer/autoload_namespaces.php b/system/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000..8ccf941 --- /dev/null +++ b/system/vendor/composer/autoload_namespaces.php @@ -0,0 +1,14 @@ + array($vendorDir . '/jbroadway/urlify'), + 'Twig_' => array($vendorDir . '/twig/twig/lib'), + 'Pimple' => array($vendorDir . '/pimple/pimple/src'), + 'ParsedownExtra' => array($vendorDir . '/erusev/parsedown-extra'), + 'Parsedown' => array($vendorDir . '/erusev/parsedown'), +); diff --git a/system/vendor/composer/autoload_psr4.php b/system/vendor/composer/autoload_psr4.php new file mode 100644 index 0000000..5fbb923 --- /dev/null +++ b/system/vendor/composer/autoload_psr4.php @@ -0,0 +1,18 @@ + array($baseDir . '/system'), + 'Symfony\\Component\\Yaml\\' => array($vendorDir . '/symfony/yaml'), + 'Slim\\Views\\' => array($vendorDir . '/slim/twig-view/src'), + 'Slim\\Flash\\' => array($vendorDir . '/slim/flash/src'), + 'Slim\\' => array($vendorDir . '/slim/slim/Slim'), + 'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'), + 'Psr\\Container\\' => array($vendorDir . '/psr/container/src'), + 'Interop\\Container\\' => array($vendorDir . '/container-interop/container-interop/src/Interop/Container'), + 'FastRoute\\' => array($vendorDir . '/nikic/fast-route/src'), +); diff --git a/system/vendor/composer/autoload_real.php b/system/vendor/composer/autoload_real.php new file mode 100644 index 0000000..4303e07 --- /dev/null +++ b/system/vendor/composer/autoload_real.php @@ -0,0 +1,70 @@ += 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\ComposerStaticInit836351be733ecbf4741aea17e1973480::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); + + if ($useStaticLoader) { + $includeFiles = Composer\Autoload\ComposerStaticInit836351be733ecbf4741aea17e1973480::$files; + } else { + $includeFiles = require __DIR__ . '/autoload_files.php'; + } + foreach ($includeFiles as $fileIdentifier => $file) { + composerRequire836351be733ecbf4741aea17e1973480($fileIdentifier, $file); + } + + return $loader; + } +} + +function composerRequire836351be733ecbf4741aea17e1973480($fileIdentifier, $file) +{ + if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { + require $file; + + $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + } +} diff --git a/system/vendor/composer/autoload_static.php b/system/vendor/composer/autoload_static.php new file mode 100644 index 0000000..65c92f0 --- /dev/null +++ b/system/vendor/composer/autoload_static.php @@ -0,0 +1,117 @@ + __DIR__ . '/..' . '/nikic/fast-route/src/functions.php', + ); + + public static $prefixLengthsPsr4 = array ( + 'S' => + array ( + 'System\\' => 7, + 'Symfony\\Component\\Yaml\\' => 23, + 'Slim\\Views\\' => 11, + 'Slim\\Flash\\' => 11, + 'Slim\\' => 5, + ), + 'P' => + array ( + 'Psr\\Http\\Message\\' => 17, + 'Psr\\Container\\' => 14, + ), + 'I' => + array ( + 'Interop\\Container\\' => 18, + ), + 'F' => + array ( + 'FastRoute\\' => 10, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'System\\' => + array ( + 0 => __DIR__ . '/../../..' . '/system', + ), + 'Symfony\\Component\\Yaml\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/yaml', + ), + 'Slim\\Views\\' => + array ( + 0 => __DIR__ . '/..' . '/slim/twig-view/src', + ), + 'Slim\\Flash\\' => + array ( + 0 => __DIR__ . '/..' . '/slim/flash/src', + ), + 'Slim\\' => + array ( + 0 => __DIR__ . '/..' . '/slim/slim/Slim', + ), + 'Psr\\Http\\Message\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/http-message/src', + ), + 'Psr\\Container\\' => + array ( + 0 => __DIR__ . '/..' . '/psr/container/src', + ), + 'Interop\\Container\\' => + array ( + 0 => __DIR__ . '/..' . '/container-interop/container-interop/src/Interop/Container', + ), + 'FastRoute\\' => + array ( + 0 => __DIR__ . '/..' . '/nikic/fast-route/src', + ), + ); + + public static $prefixesPsr0 = array ( + 'U' => + array ( + 'URLify' => + array ( + 0 => __DIR__ . '/..' . '/jbroadway/urlify', + ), + ), + 'T' => + array ( + 'Twig_' => + array ( + 0 => __DIR__ . '/..' . '/twig/twig/lib', + ), + ), + 'P' => + array ( + 'Pimple' => + array ( + 0 => __DIR__ . '/..' . '/pimple/pimple/src', + ), + 'ParsedownExtra' => + array ( + 0 => __DIR__ . '/..' . '/erusev/parsedown-extra', + ), + 'Parsedown' => + array ( + 0 => __DIR__ . '/..' . '/erusev/parsedown', + ), + ), + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInit836351be733ecbf4741aea17e1973480::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInit836351be733ecbf4741aea17e1973480::$prefixDirsPsr4; + $loader->prefixesPsr0 = ComposerStaticInit836351be733ecbf4741aea17e1973480::$prefixesPsr0; + + }, null, ClassLoader::class); + } +} diff --git a/system/vendor/composer/installed.json b/system/vendor/composer/installed.json new file mode 100644 index 0000000..6b33f3a --- /dev/null +++ b/system/vendor/composer/installed.json @@ -0,0 +1,667 @@ +[ + { + "name": "nikic/fast-route", + "version": "v1.2.0", + "version_normalized": "1.2.0.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/FastRoute.git", + "reference": "b5f95749071c82a8e0f58586987627054400cdf6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/FastRoute/zipball/b5f95749071c82a8e0f58586987627054400cdf6", + "reference": "b5f95749071c82a8e0f58586987627054400cdf6", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "time": "2017-01-19T11:35:12+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "FastRoute\\": "src/" + }, + "files": [ + "src/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + } + ], + "description": "Fast request router for PHP", + "keywords": [ + "router", + "routing" + ] + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "version_normalized": "1.0.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2016-08-06T14:39:51+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ] + }, + { + "name": "pimple/pimple", + "version": "v3.0.2", + "version_normalized": "3.0.2.0", + "source": { + "type": "git", + "url": "https://github.com/silexphp/Pimple.git", + "reference": "a30f7d6e57565a2e1a316e1baf2a483f788b258a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/silexphp/Pimple/zipball/a30f7d6e57565a2e1a316e1baf2a483f788b258a", + "reference": "a30f7d6e57565a2e1a316e1baf2a483f788b258a", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2015-09-11T15:10:35+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.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": "slim/twig-view", + "version": "dev-master", + "version_normalized": "9999999-dev", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Twig-View.git", + "reference": "a743ac45e2a089942159dda499c5ef5bc5f6bfa6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Twig-View/zipball/a743ac45e2a089942159dda499c5ef5bc5f6bfa6", + "reference": "a743ac45e2a089942159dda499c5ef5bc5f6bfa6", + "shasum": "" + }, + "require": { + "php": ">=5.5.0", + "psr/http-message": "^1.0", + "twig/twig": "^1.18|^2.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8|^5.7" + }, + "time": "2017-01-25T20:38:39+00:00", + "type": "library", + "installation-source": "source", + "autoload": { + "psr-4": { + "Slim\\Views\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "http://joshlockhart.com" + } + ], + "description": "Slim Framework 3 view helper built on top of the Twig 2 templating component", + "homepage": "http://slimframework.com", + "keywords": [ + "framework", + "slim", + "template", + "twig", + "view" + ] + }, + { + "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": "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": "jbroadway/urlify", + "version": "dev-master", + "version_normalized": "9999999-dev", + "source": { + "type": "git", + "url": "https://github.com/jbroadway/urlify.git", + "reference": "99bb78cd9002d0e9ce479bb81635eb665e37e981" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/jbroadway/urlify/zipball/99bb78cd9002d0e9ce479bb81635eb665e37e981", + "reference": "99bb78cd9002d0e9ce479bb81635eb665e37e981", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2017-01-03T20:12:54+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "installation-source": "source", + "autoload": { + "psr-0": { + "URLify": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD" + ], + "authors": [ + { + "name": "Johnny Broadway", + "email": "johnny@johnnybroadway.com", + "homepage": "http://www.johnnybroadway.com/" + } + ], + "description": "PHP port of URLify.js from the Django project. Transliterates non-ascii characters for use in URLs.", + "homepage": "https://github.com/jbroadway/urlify", + "keywords": [ + "encode", + "iconv", + "link", + "slug", + "translit", + "transliterate", + "transliteration", + "url", + "urlify" + ] + }, + { + "name": "slim/slim", + "version": "3.8.1", + "version_normalized": "3.8.1.0", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim.git", + "reference": "5385302707530b2bccee1769613ad769859b826d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim/zipball/5385302707530b2bccee1769613ad769859b826d", + "reference": "5385302707530b2bccee1769613ad769859b826d", + "shasum": "" + }, + "require": { + "container-interop/container-interop": "^1.2", + "nikic/fast-route": "^1.0", + "php": ">=5.5.0", + "pimple/pimple": "^3.0", + "psr/container": "^1.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0", + "squizlabs/php_codesniffer": "^2.5" + }, + "time": "2017-03-19T17:55:20+00:00", + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "Slim\\": "Slim" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Rob Allen", + "email": "rob@akrabat.com", + "homepage": "http://akrabat.com" + }, + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "https://joshlockhart.com" + }, + { + "name": "Gabriel Manricks", + "email": "gmanricks@me.com", + "homepage": "http://gabrielmanricks.com" + }, + { + "name": "Andrew Smith", + "email": "a.smith@silentworks.co.uk", + "homepage": "http://silentworks.co.uk" + } + ], + "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs", + "homepage": "https://slimframework.com", + "keywords": [ + "api", + "framework", + "micro", + "router" + ] + }, + { + "name": "erusev/parsedown-extra", + "version": "dev-master", + "version_normalized": "9999999-dev", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown-extra.git", + "reference": "0db5cce7354e4b76f155d092ab5eb3981c21258c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown-extra/zipball/0db5cce7354e4b76f155d092ab5eb3981c21258c", + "reference": "0db5cce7354e4b76f155d092ab5eb3981c21258c", + "shasum": "" + }, + "require": { + "erusev/parsedown": "~1.4" + }, + "time": "2015-11-01T10:19:22+00:00", + "type": "library", + "installation-source": "source", + "autoload": { + "psr-0": { + "ParsedownExtra": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "An extension of Parsedown that adds support for Markdown Extra.", + "homepage": "https://github.com/erusev/parsedown-extra", + "keywords": [ + "markdown", + "markdown extra", + "parsedown", + "parser" + ] + }, + { + "name": "erusev/parsedown", + "version": "1.6.2", + "version_normalized": "1.6.2.0", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown.git", + "reference": "1bf24f7334fe16c88bf9d467863309ceaf285b01" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/1bf24f7334fe16c88bf9d467863309ceaf285b01", + "reference": "1bf24f7334fe16c88bf9d467863309ceaf285b01", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "time": "2017-03-29T16:04:15+00:00", + "type": "library", + "installation-source": "source", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ] + }, + { + "name": "slim/flash", + "version": "dev-master", + "version_normalized": "9999999-dev", + "source": { + "type": "git", + "url": "https://github.com/slimphp/Slim-Flash.git", + "reference": "3c9a26b3163820acc48080336c504d0a3cac6f30" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/slimphp/Slim-Flash/zipball/3c9a26b3163820acc48080336c504d0a3cac6f30", + "reference": "3c9a26b3163820acc48080336c504d0a3cac6f30", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0" + }, + "time": "2016-11-11T16:29:19+00:00", + "type": "library", + "installation-source": "source", + "autoload": { + "psr-4": { + "Slim\\Flash\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "http://joshlockhart.com" + } + ], + "description": "Slim Framework Flash message service provider", + "homepage": "http://slimframework.com", + "keywords": [ + "flash", + "framework", + "message", + "provider", + "slim" + ] + }, + { + "name": "twig/twig", + "version": "v1.33.0", + "version_normalized": "1.33.0.0", + "source": { + "type": "git", + "url": "https://github.com/twigphp/Twig.git", + "reference": "05cf49921b13f6f01d3cfdf9018cfa7a8086fd5a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/05cf49921b13f6f01d3cfdf9018cfa7a8086fd5a", + "reference": "05cf49921b13f6f01d3cfdf9018cfa7a8086fd5a", + "shasum": "" + }, + "require": { + "php": ">=5.2.7" + }, + "require-dev": { + "psr/container": "^1.0", + "symfony/debug": "~2.7", + "symfony/phpunit-bridge": "~3.3@dev" + }, + "time": "2017-03-22T15:40:09+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.33-dev" + } + }, + "installation-source": "dist", + "autoload": { + "psr-0": { + "Twig_": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + }, + { + "name": "Twig Team", + "homepage": "http://twig.sensiolabs.org/contributors", + "role": "Contributors" + } + ], + "description": "Twig, the flexible, fast, and secure template language for PHP", + "homepage": "http://twig.sensiolabs.org", + "keywords": [ + "templating" + ] + }, + { + "name": "symfony/yaml", + "version": "v2.8.19", + "version_normalized": "2.8.19.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "286d84891690b0e2515874717e49360d1c98a703" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/286d84891690b0e2515874717e49360d1c98a703", + "reference": "286d84891690b0e2515874717e49360d1c98a703", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "time": "2017-03-20T09:41:44+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + }, + "installation-source": "dist", + "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" + } +] diff --git a/system/vendor/container-interop/container-interop/.gitignore b/system/vendor/container-interop/container-interop/.gitignore new file mode 100644 index 0000000..b2395aa --- /dev/null +++ b/system/vendor/container-interop/container-interop/.gitignore @@ -0,0 +1,3 @@ +composer.lock +composer.phar +/vendor/ diff --git a/system/vendor/container-interop/container-interop/LICENSE b/system/vendor/container-interop/container-interop/LICENSE new file mode 100644 index 0000000..7671d90 --- /dev/null +++ b/system/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/system/vendor/container-interop/container-interop/README.md b/system/vendor/container-interop/container-interop/README.md new file mode 100644 index 0000000..cdd7a44 --- /dev/null +++ b/system/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/system/vendor/container-interop/container-interop/composer.json b/system/vendor/container-interop/container-interop/composer.json new file mode 100644 index 0000000..855f766 --- /dev/null +++ b/system/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/system/vendor/container-interop/container-interop/docs/ContainerInterface-meta.md b/system/vendor/container-interop/container-interop/docs/ContainerInterface-meta.md new file mode 100644 index 0000000..59f3d55 --- /dev/null +++ b/system/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/system/vendor/container-interop/container-interop/docs/ContainerInterface.md b/system/vendor/container-interop/container-interop/docs/ContainerInterface.md new file mode 100644 index 0000000..bda973d --- /dev/null +++ b/system/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 +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/system/vendor/container-interop/container-interop/docs/Delegate-lookup.md b/system/vendor/container-interop/container-interop/docs/Delegate-lookup.md new file mode 100644 index 0000000..f64a8f7 --- /dev/null +++ b/system/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/system/vendor/container-interop/container-interop/docs/images/interoperating_containers.png b/system/vendor/container-interop/container-interop/docs/images/interoperating_containers.png new file mode 100644 index 0000000000000000000000000000000000000000..1d3fdd0ddbea28d77c08cfb65834ec11357be5fb GIT binary patch literal 25738 zcmb5V1yEd3(>6H410gWD1(G4b-CYNFm*50~6Wk@i1`EL*g1fuBTL|tJ++Bj~CGYp{ zU$y(!U%OP@B6IGMr@No-KHWot73C$+QHfANAP~BgBvcs$g8K+O?@{1@k=zM477*x@ zk`z=})%C@})K_2()b;bP%rWG{I2>pY1~Pzxm>?hmFenTKB#rU{3SU#Vl{Mh{T2Q?P8%}|GsTiYx75|G zy-Y9sP=)?`w{Y<+I3e)YHmY0GNjLmF!9oocFRvN=irVb%mZts9HBnK#;Rt6JnJ|>G zkWgzI3uTZP!b#DKm5=)A8lT7f8MFypPDMgy z;dNbJjL%c>a=R&SELZ$^j6el3u+3&;8MyuP>&26~O7&ySnGOk?P^WoCF?c9WfY(`d z{o);!WG+N*+@i8Fphe@e{L}b>P5baJx|0*?PnfSRjlA4L7EQm3zFN+KWJg~_`q5JO z=~=+{D5GoEpi0xk zFPDQQ==%)lgr5X#7-UT)kO6GTr~;mfZNgW#=I~jx z?9Tk@ijz#e=to6peIan_l?+r4zAkk(r$-APQ8i-I%jn#;k13BMz1=SI8}lVIyuNLZ zL~=$61O~EAPE+|p*2@ec{F|+)HxiEHIDqJH{_4kEilxCc1)X&d+cF z(=)u?PXD0OusCR$xi%DEx!F9#Cuk?@At&`Q;Bb)v4hJk7-g{6c~ZW$ z)3{G>^}WmSJUa|f+}mW@QC{A`USV#>rd~V|Sa&%Sci&}GU3zH*;gX_C7AOREwaRA` zoH>Hdc=IvZuZQu~K^ZRd;ceBl4fq8WWL7=@0RNA8Zy)m2ko1Wkf0MU2+-o85iw2@j zpF7pIg6L#!?ulg+afz9@SZYA;g0+e^>r)gHe@F!oK{#OdWb#-vyjG93Z-x+%7cRK@ zGuUUda$$^Per2w?AkxzO#ZCrHXsbv=kl$C%84vFRC2fxHx&+=uoj2c%jaKN6uxAG}(Iq?U7DXxuydropf!*Ov3Uju5fH&h{)(0Y8CNl^PK za?v4E>~y)d#QmNUAp`~Fgp1p8zLmfz(uRR*1q2)(V9=KeNj5!KY`i5oB<0{ z7=rKbFh|>})MC!w?*$usue>s0t9qhuZ>Qx5-&FoY2|=->+*Z&d=096I(k+|-DZD2A zp`oCqh#=;FNh2*4Ns=Uxt(VH5#e*^1&gzzFu3>qy$c;NUS4{B@qK$8#|3+=lt1T7% zmQ2w7dY@e1mHmr80aa!!d62z)!TQjZd~XQ*cBdbtvoR(&&nvzw{lcd9A6>qL6T=QS7dzmkO-x{Je6mETwqaVA2XC!I zS@aP=5LdS|f4A4<>U5UHC2EaufT{+RBDY6M-=d`OS7qdi@1lc3P~tF_8k^GoK7F{+ z5PwxfPp{_7KHzrF^Yq}6d&>Jp458As8``l=oK$6FzhGS}8 z0r?jkJEPMh^D=qQS!b2WT@hL>XYQUP;i7R%#l8LKi)B~iUM2)_Hl{jHVX3JpDP(7P zL@_Qh1Mpvt`WCwujtxh?$~WACji@Z*4ZTV(5ICu2<=4Hb6ruNt z3fD&#+%c4Z_r2hted-D-Y;NAlr2zc%p89E5r3NBiqB{aoiU16i&F^L;AVeoCt;~Y} zn6hrVjGgSQJ$xo9;2c!aQii_yAVuhE$C0k~>rGr0Bp45{$roMU=Im13)1j^)>7eJ= zx4|1&B3Ezs-T+R^jvtSNF&UCTK$`0aSOWn_bO2W-UN>137pZ`Rz!?hka&nuAiFWvm z&8^;YFRqGev;TN08gx$4mMno#Ls0rVBF?DVs3oxLki$6iNetd5I_|2!r&La!76~|4c2jRz@Yy%Y^YRRH&er$rI*4N8I4&6dZUnHDkkBe ziY?|}dK*SYnT}|mGR6J5FFRinamQ)>Vrq`{w40U+@?g7hfDKO;odlgA8adj|P6@=S`M;XNW^q9B1VGvl9f&5eOV=9UK({Wq7utbm&lIZo(lJ$Cg zxL7Ej^-|;1#KigTM4ouocu2_2)(COIs?S^#+AK#D)$5I_rd+Dm`t1jD%p^0+F>_H9 z8!?H%&-iAD(|bB&`})4&w^Xb%YK2BZoRzWsRP~r=H&3)dc7iQ#wMmhY9d;xyvEO1= zF55(hCScV3+#4h#%D++8j-IBXv-)a@6;*oFks6>xgKyn4s> zOWf9Z)=x|)C0zyt!NR|JX$1=pf5Y;rKNy>mhK9zX2FB}r@N3u6%<#s&=Vv@}xA!jO z1xWp8C^n@$pVJ=Bp;0)#Qq+5-Es=!C*mwBjX)%(sa3C&e-8vgxb8~ZayvXl?uc|R8 zNhrw@f2S*b6H0&wDXOYEZVe|64i4@yu4hX{&-TBY#aiDa866yegu#KnH0by|T;lT! zm()V;9=ywDhGbu7L`*^OD~ft#XAwaLY(#B0>!FpEm3!2Xk#}R~!#H5PEz=>fVHwG{ zAkabPDNCZP;QdJ#Hig)kY)}r)3p(%%P$z2$NAls#=?0@JG<~d36YU)(0|Q(<4CG7Y zd^mqO7)v{*)xExMbY+h+y|dGS{yTo*%nYC0A{Ye(TVHH&uw8Dx9TsbLIZl($BX5VK zVSe3+n%d*ai2@1v3Q2AxB#8JeTmGU&DVNF`_dFlr#9+jEIV$r4^v#iIWYF|BIR!B} z6*2V8o{dkzcbxe&Rzt7BarbvtDC`9oB-CN&7>lV>F|mTKq=YaVzWx;+nUv4XG=AQE89NJ|5H z6?wMFD_A5F=(ln8K57zTXgxs@bXqQ%W90Zch+(~0s|p1KQV(uts9W%QyubY=h9edU zT%qGi$qLJ>>`UY z#OPtsGGS!P?R@L4hd{v$4*U z>i)f!IG)k>p{Ju$rNYS;NMtitHaFir-RPsoLwotTj41q!=9E24SlCyKBAOZsW@TYP zDbF{Tl|6i-R16Ld?&;|(!UwI~SO`aec{Ul6fdKnsbz z{31xWMOIdUO;7lqit9}B#+vLm2XAg%u|`p&ux2z$u=+Txi`Ti}4we_$pkS?*eZ*=x zskqQtmEv%mQ@%E@zs~Nr0$z93U2B*KUokroe-&+e9Jf%8DG#s0Nyg^q=Z^_K-A|W% zEcsaHJ>C8*Z>8Doe5uK0EQMS2BXJ5!1IYdH{%XN?LS@iGP$0*){JoUpWY%Y~Z*Tdw zo5;4XRB7B|C7-_i-K_$wp|x}>L{=omVDz_IRr&nv{Cu}sICSUIovgK4z;jntN-87h ztJmGd?qb7vmqVa(!F_Uz2dI`#3XX}d*4kqpCCqvu&D_51?b z<1|^~;Zf34ziW3gL+=DNd`o2Kf6dwQGtU~_79A}$p&_(5__SP3J7~~Oe>4tfmldCmwQdwrOPg8a6hJkUGofoX}KU!5NuQB~S8)CG58JBKZ+HkhK*!s~E zt)xsd8teHydM!{!`{^`Ie%MDVWi8Xbm9?ly1+}kOS@_R~ zS;ZeSE*V;HjB=@_1lIhq^COM7e<^4*J)VPGE6M3v~UALZU| zzS}F>jpn>t8)hB*6mB1E+j_gT>~S1RGZs;isX?@*{p4l2#Fb$!_qs?7Q3;1weD#1J2E;E zG@Lwwk7bf;H#<5T`&^RIYSDEgT!yj5Fo$7FGqK;HQ*tuTk-yjqLAZkcoVH4U^gE96`2Ti$Vz3_)!|#F z`fpryO~cu8!*YvRfR@|KI-LYgD*mGp73X?;xIwhCy%6$X@0eF!Q!-#(gCC zL9Ll=L=*!}iIcCd%(fQzdr%QANg z9aqc!*-+`H1OljI77BS5|9RG%-QPJf^-C|{kqn|zGF+*qFjEOc(Ya;GN~p}vl|*L$ za2JOez2i21yOHjFw+lED?i(3$t_|pi67j@ke<3}+{`wg`k2%=SXo{~zTVvQD+d|+9 zXR0;sQ&#<38Y1F;wKp}?_uh!0;}0`kr(%VD!3nkkU&p8^)p^dkD%}`8wm++^)#utM z7>2-&ffSVXn|ojeGO6oZOHF1@8$Y^Y+kPx_)N#t5t0foxF;OX~N&!FdbgqR-EKMv- z&0Stl7YWuxU#Yn5nArMwx8Iz=qlFC#VS>aU$d{H|xxbn}tQ=w}r3ByZS4!4CJ^l@S zEoML{c{;yN42_Xj z14}88-VX~-^%o@j#}u8dzZ5mJT@nI;YH3u(Wz$Xu54=M2P8Otf<6bDpOS9l0?1yPw zG(f3kay3GcmwIDibmU#;<{nD?EeGjv16OF0Fr(p}@vM?4^8xVz--P+7@GZuvxXe$4 zgA?z9&4SM=gnU8{D#~7_Yro4hY&7NzkhH8yyEX2lfDT8z(@vShDWS@HlPe^V%QU8$ zi^+g27Y$1jgM2SmewHoyQ+xoPB;+bB5^ev>S5(q)g=@WbigBd)JQ+A+qGZ9TuAe)A zw+3WR2PeED=5aK0fP~P2CFPVHMbIUN3dVul83pryY_1A1W?1|5t>kpWwQMnVgoPeU zi99$66sJVs;6dH_wjA76nU-m)YM9&%C*GcCByC-`ELl@kBDH?{4UK{6BRM!)0d})j zR3?qXNtyX3ktRvsY;>#Q0YNVm3Y5q&^~q2B$!D~V)pBaf;wmIw7vrt_K%M{?H?Q^j zc=|&y*Z!Yqr_lkvH<h65EvjxKA_6qXmFdD2DB1%HvHEwh0?~D-}4Ud!9)lSR3&> zW;kzrb(hPg%L?pc8413bw=4^uO~PbumFDv243L`1>a^JK`3_SLE2LC`f$6v3b;VyY z$|(gulPEQ(wV7+dqB*T_VtR9nt7&Id!Dop;+WsyRVT58J?90fbW1>gZt2uE7{rt%9QyHC7#cRpj3 zcd#HE@sOb|DhbK0*DD+;jO%ClQ;!8c*-_szox^ld!S1)>1@Ah~=(@b{nHDC_)&+n` ze=v%@%}uF1Us(}HP;*(dL-r|AA&bKb@dgpJ#PC(7tDW80%&{g`R}x3-d+(RjRlcYR zhsLZ&Uk@>j&q04ir4B`J$rB}n5N$SXx>{T-lP7dodbnuYAdr%@l*iS1d@PEDF^Iqw z#(Ig)%@nq9{EnsG8Z#`;BV^Z`-9lWMmfqhLJ+1%wFx9iV+6HypGUWt?|3?2I;bdmq~ObFCnTzXRKcA@Ve^*oZEY$n1Af)*)RdG1 zUpv-YpM=oDOlDjVPBNocoY)#?nb7H%?#*V-vVq%L0KWEvABF%doDD0I>(C%@Hfb>D zTY4lCR1$SSp8u$NLcW~>8O>N*BMPA$9GB71OLkYTNAl%U7gwo-wNi0G3VF4i1uIJl zokiiIZYcEq@5wN1@h>O(eb`*oSxML~ZyF68@O&+hZx`gDxv(o;C!K;_rhwWv5-jW7 zS^WQFCAH7#B`U;n#CPx1s@9==WYXPivx==xvTt`jeQZVPB}k2n9HUeD+`eTc0Ex?Z zuQ1{gFD5X|8p~Du9x_A1s1SV1twUC&!Z!6~m`p}FoY}ayo`0%cck*RYFQ|L)ca|)9 zwiJ9Elr8Uk7iPkg$?J{jm-7WzdI-Pf=eI2U+qA0TBN2+4l7#7r@R#(2g*?1#?Js$= z=hH;aB8)#pVW+3uQH_;y4TDaQB;KY~A!dpg_Q)^HbZ*cYX!j2Mps!oR8kI|c#lG*O zXTOIQZ64A)&%uWk^HbXBn#cY*v$8Dau2Z!|MHE?mi@k zhtz~BaRUN`pF4Uk@yti>uLZUBTYC0J{JSCZgORL#-7>N<4xSWL?3%_s=n z;2NqtbuHF)IdJ6pZGm0j-jY^59Ed$;4E{Yzl+^wf#Y{fCR8}(m)a%M;N)qUBGOCcIY}{A+ZVmw zr`f^~pR`q_6VocGKnw73EDVS3tD2gWvS#Icg$sssM9&vckIF*rp|kY@2|cpqLhUJo zSF>7M^7y=qy>|~9PTmdWt>rzQjB`i??B7AZX=3+ zpS9Cun}3DWv&Ne&#sI4`wFOpKtrst>sz$${i}~vzmQ2eWPLFFlePpP5i-!yHR_wO% zC`6y(BSb%-2$2MuaV8Oe55vrDO=Ug!jpt9@(JE>jy0-eUfQ;eZ<*>(wL0ie35P+9Oy|4Vejsk^IJmUQt6F_qFrrLkWx^AP`k% zWm*_gB@Ay`>4k5l*r(|Ax_RHl33JgGpr5cohOu~kOxx=wIG~LftDD9c>RPFU4+4es zpWQ!fMuC7%Bs;xAw+Xmzv+{Y$R5g2Yq?k^mEYOY+Q=Mp4jzqTv0bd*Odu)S9X7GYe z=WQh3j8!4mSod-a&DL5^)wZ}!_e!-S_sx#3w=B5mAIlz3b0;qzc|YCa4w!B4KV0&1 zYlvQX--9P$>GEk|LQKc^225t%WvzFE6BDdVOeestfsZsI!mXvj;c!0ZfG(tJT#0iu zMfh!*U`9rUu&^+#Mk$GaCzl4BFC$4pQ4mJDj4T)Ks!wOv!&Nvj%BNLNVR8oDMmBPC zQ93+YoDd%-TXxij`a)pC4d!EF5r26_!2H8uO+R4^wbB@tm@L?~s6qkqF#JV6xw;A!@EI?T;shZQV` z^^!%Ygwd=UXeXSx^4Tho0m6XPyGD;2uwYm#WrT zb93`}mP8jmx}it=Www}10JkHz4$AB5Ph%m5SE!{FaT?C8*RI^QBBt4ogGj zpVzNnlS_Q}XCxBoCMv1U<1|P(9$CS1Bu@NsiWp9X6&!=#eEn$FQ;V@mq2Y5Ys&%%v zw@1io+K!Ljp)thaw5-zzeq)_ki?k?2fdCw2Gglcfom?{?u32CuUrsT zt2r!oc(1Fgd))RU;5m*!Vx1X{Pxq5}+$VJN>QUbY70{;Tbg`1&$(F8EzsNA_NhB{T#F+nmOM=DPxkM+2+j7{le-i2QeTyVSb0IPFk;wx)? z-E-{eTwfZsQU;lKmtWqYKyg*?r|EpIqFzu^Qf^h+-(>c3CEhg>ddx2LD!J%ep*IH$ z-EE=~jZaKO*R105TfHUVFRxNCAYyjKE-hAiiEJad7b{Q&23o8+K!2|j|B~`#tCn(c ze*P&LyoN?p@$;vziR;#;2SOI|_gZFI@;kFR@*iIt^j7oIz1^!+$WIX4@!8g=iZrwW zk;$kj2>53$@!Huk^S-jeDIrcvtvFvvYT5dERA~ft;e!B;$HvCebqy@5BkIUDCyHl3 zeiu@ON^t%)`YIJo(GkxH0(Q&Pq%$RyziJ?Emsp52?@m=;LxGCj&$W9G?)({uUK=6? zt)dYrK_biTmHd3H4uA0;xd}?7)1h-~TczF{u6h$ZS#!ve^UU`$t<=fgUDYd+I8-`% z^uO)PA?vuNxtXE}ez}(lRi0p={KVzC_B!QEj5B3h_r!92&Yp($=9~B*wqc(mO8@my z(t?9s-jM=9QjNM>QcUz|2~=HMK(?MVlC8hUwt_K_L(5vObrrOBH)Za_jwizT!^6WQ z?&x{IFInLQLsLfr5{h#_M)j5{^m^()j>jdQ6x&=MORAIaCT#gwe>X1C>xx!owQa_S zmG9q{EU7>0nCBd-bYkPI{gye+gr7iWoFK;{OW3m-CA-g9{=+^NCav5|B{o?w5+Y4g zd}!1_K=x78j(9A;DN%K3kofz>Yo4v19Qi;8U7ZXU*g1#JkHMD8 z(BY*zm5~(-_J#X;oC=SCw|p(bESJQ(!OGB{P{xTDjD2Y_JSj)h4EtWjO93-#b84yI zl7n*Zgx=gmN`rCNyx$$`ZF6jNXt`VOugUSW9_pxDC@m}|#FPn8=@%9zd04-m$(=~t zs0qH^SYZ=OX+1oGSw03<8Mc^!;;-%8;r)4+o|HoJUB}@W$>qqJt$5?#xRhz4WnwmX zrA_^De#$FaX=M^nJI%yVa;aTY<;h+Ehx0V4Bm<_uzsOUG?S0+!5>)AbM>HU4whxhWyb_9G*eFtPft@@U1%y|zks`;vl5 zvj&+=GIlh}(NB#aWL+9`o=!Y6Cg>s^tmR|%scPU;{=WXSUFDE`G(8-~)9a9{6}kknBD)MUJ@JL3p#}t{5@-As7hFbZu+wJ*&o6T! z`|bu^E;47BQhZAD$r!6WobM~Cg_SSJZ?x08b{j33$b7WLe@Iv@_Kd-2CH6;{k(0`l zICb*g&AGix_UW`{i>*E_`rGy-hQf{(^`7#^B5i4Ru(CAT~sU_BF<{e)-qDj@h zn(&0Qu&xK0hV-~cCrZH|4Pz5i@WxB2s#Qx4vDQn|cFo>7FrIa>Q;1%(n_1xmC1WKd z>YJ|Jd%0&F>x*Ohk-$TB6besuLpaDG6~!6Iu2f`PSJ`y;;vI)LtP7l9{>WRDINS7J zdftDoq$U|F*~{L{s&RzOZj0f()2kxI%yCp6;vS(~977fmkhPWEL)Gu$=t)d+Z zBs*_e7`fTom%NL`Vn3ADoRj;-QdDWY_Xs_Nb?v^XZalw1IlJ!k`70tSoEUI}(_qKRKf;;Ja4H{_rzxtRcA}^WWun zui2}hb_CBOT+`$w?(;u1FEU=huQ^^al$j)vYygDv0SL7-vQHy$g}rTJ+isLLG;%Hx z+^yQ`ZA@jA#HYv9{d;kK>}5OTdIuLY>$UiL+#H3~|VI>T>;^y;0Vx4w**+v3hz?9^<1$ym4_cg|Lf)BT~$>HtyX zg@c|GC7gJ_WINrf?NkS_{M`&n9~z#yPYz7b8UU7@S0(`#vw=J;HdJa4{W<-nE0e!v zL`3IzzJVTsp95=TwLcq4?edpcVmRRkS366~CXT8W!)T3W47 z9uPnkZEB$K6tKk*iH923s2p+=y)AZHX>WM5rr*YBCluq;7= zH;Vs{h`VN|L-_ji)|Wo969~(o+AU2U*4MSi(xd}nW9m?()Xlj<_|aq@fJNIWl(eN-~5-Ottyu z*vsvtt_?rL^*&yZk&)fUNiU9+1IuEowCuwq!miG1Kn0x{@fd90v{SRi=dt)#mCJFP z5=lF#AD{TlU!IIh$jV(y#x=K zoCddUDpF@cbmrf*EwdbScW?)D#*rmT&o})&^!(2I*9vU|9ZpbPeZ2FxanolueRq|f z*E4iSJ^Irm%fZ;+D@YQkvsz}{`wUFC^*P4hHvLfiB|_>ywph`Zqp2lYHv9IbhzimJ zmy`CIIy`Ik4L|SS%1*`KqgRA$oM)7hToW%syP`t0RYDfNEbNwiZkNyCYfJM{8*nT@ zd9pjrbba~Qx0uy-m!k;XC_%0w$8Lo%>d;gU#%i!#;w3kkG{tGYA;@(F5}=GI#}V<~ zUCA+L`D(!NEl*w|ENI$P*weyZDS2o@gssrxXvKjWxp|YHu05hmu2Qg{Lis{{31YF` z+|rX1$8mw;8+>2RNQAuIlg(rYY9RQAsnT5{QY$n}RV7qUf-lWjCmZ{n$**66iBuA; z@#f&H`dgh0B#740;}}jyF6S^5gJ`pqN{=k!OK$Mp)r+w?a{UiZOXSlO`ztX3$7?0g zn3hSnxh>o3tUjNImxTHqleAe7S9+5&E}9#8quFz9(bg3jYx_S3B)t&~v^U=6T}jyH zGOr0Ay0GqhExI5kXL!W&Cgm!S!#*8<-ucUo;_=}xcTu89?i)C6D2|~*n3KVe1?Rb4 zJDJRRb1;$MdR^@f^iR$XoF8<%UV0V=!i-eWu3!AJ0_+ml-6<7 z!?Gr(xj*yur{nn!sc`YExWD9J=Z?pUQ!1oY*w%x`8R1*c#J%7-jpSj(XUGT9Tf^G{ z@|&h!{KnlH2P-$Xbq^w&gufVpKM9V|I$>N9khu5aT_LN0DX&U5^KD1@JB;KX?`S;@ql%- zV*68fY}{*=qkS!SXG_kx&!dEPCbN=-R_t9cCdg_@zxXOa?>ZRnEBGrFUCni6+WH8) z;hX7gjIe57yYD~lR*zRqzW+gn<|^dMdhM!?RvJPHz~b+JAcdiHL#&TJBX{rlq|^kj zhPAr#tz=|7pTAxnBFG|ks=4p_#$eF@^rOT8n2%69>9IGKQ)`0&M-EqEK+ejli=-{| z>9g=tySLV+5gNfglmKI-grmkvjhHE6(R47T;(3`rctw}V2;&(XjH@@jgsskQyJ80I z&?}=`yxd1Z(uZXWLtJO>a*w6gGjA~Ff#!1!6C@19Q`BVurh-cQye=U|zN^A1Dc4Z- zuGrICPM<4j|MxH1ksrLaR3y4_|B;5SC=~@k9AQ0^F)fT+IT;<@Q8-d=j^GUW>&j<~ zV(eoR23!D&FkiEf_%J~hFf|4wd0JoWJn^u=F&86ez*BZUAuBhZ!lYN2gZ2-$N}Ttz zq|{7#f)zdbNtIfbR;GH{iA4HOq`cCDI`6|!$iFFR1cq_#NxuUuF6r;G^SBp4P5gUJ zHhwzhuQMTyKNwInvz$1|Nh}y83?)0cGB{|9lZdEbgKMB2Cys$30GRNDxu<}2V-4~7 zEGb5+<=Tkx4Mu{4Ni#XGdYsJ;z`*@UMw2OP-4xHN$R==Dp_L|243rFG3E7t6jm_Aq31xALxL3bO7;2gR49%K6^ROsn7 z=`a$x9v0YwyC<5aZw5nmO(_1UXW8qCJ@U{N^i*_IxPVrgiH~T~fs}cHXt>*=S*MHW zaSNe+JEdz-gxI5Kv|}ceg8)~IB~A4k?ww&9#`k26@@_g8`;k=#y)lfaPha%<5}Wxy zk9uwu%6T^wti)|V#Ij+pMhTbS%7Ry{9@Uvz>c!^xD^Ktje5SM~$>&Voj21ZW{+lEU zrgzwh@#JsOq|OYmLS%^@dh9v<_lDdbBJJ1ZL-{y9CCHEovr^${kr`CGIHWLtg-s0+ z`$Pp1lWkawadZ-0WXz0iujM|~xYvN^mjzR2B6KQ3L+ZJNWN*B@E))=CFSc+rDw)?f zFPH#aC|!!sm$HdQzV!^5KYW9iImGcZY*V93=N`JLpJ4+JwMhbtQy9H2aopb-G`X#V zPhJFBdQUpYHn3rdmCT?I<*k7bprr{sIy?4Z)Xpd)8L-UI9fHWvRxu0}Xh=U3&iJEP z^Vefb9jGJ9KrU=Ol)#(Ni#EK69VZgP0z9Zg76NDknZT-g0X}4}P|{o&PUIAkhLw5} z42OBIZ|q7p^LbUAUu(|4H;2@8vyxzIMu;ew8dAhwX+S>qC8Qq^v)>~8`3?2+i%d7o zl1M~iw?LJD;M6TYb%+CPQSdX;|9&6@21;K3+X0Xifbzdy0b0$56;Jnn3kQa6oNU6v zTa%+48QJGzdJ`lQhjKYRC2gI|<>e2Chj*G2#&L-0J0AfAX7B#Hh6aO-ZFG#0ARNt9 zPLTQC^;xy4gU}QKcFxHh?NNs(C%c<^5jzn&ng}bA#1V&v+d(zZ>yCs}YLlaJC__VL z&qlzmSq)m#IM`D-*wonqj_I++l}SQ^em3GN-ZG2KIa}&;U*zOeJY{nhrtiu`C{$C$ zvnpsQ7t{eMLi&ryn}tNc)JFSt`l8)w-u!Yktj@XaMIj2tIcV#`uUx+vd;Gg&aW~CxJ-#5Mz`=2 zw5(kQkA6Qzz9xor;nztE29}&K%iWH+Err!)v>tE&9-qd0MK$8n&{%Ge-5}Na`P$Ou zZ21w#Pft)&Ex0I+PY$50Cw#`U$Z+(EY;zOv=SZLGUJ%?Td*A2JJK!((B*iOj@>`XX zki88KZE`m!y7x)f!rA5&pQ^w@1?DDUzU3Vc1>&a0O z-pqv#wY%eGMB?M)t(LBaa~zY2g$4xm@Zi`Q$1VW&%tqkAyMls(WxX&&Fr9G$1_t|F zpbN8k!=G~`(a&3ALlC2)E7m;O`85o`DK!EX4yXjG;Ol`+0+(qd#8!*GJ8y;#;Ie*JaCAZNy{^oOMSl=pX_U zDFkg791-xY6=l^3ZTd%t?7SR2zh`|3m4@n^-`3x8X=;64BCxbBnLjcOg4E_q{6{~L zkka9O7#_5{<=(f1_quY}Z9)*M!hObh*vH7dcF?%buR4oMrvlVBxc|-fOQnQ$`>||D z-m^8OdH=!6F3Tp^cZ>;o{c2`rBs_w;xutkf>VTM|BdwZ504CUWI`RHdc?0ghZg;K- z4M>j=&Lb`@>hS`X;exMC3AVSyKgQhcnisEhNGEFCy7YNO+|p_$@RW=jJXnZoQhEP# z+0vA6;koRaR6nOM!Qx=*bz*$G1Meap!8+b!Egn_|)y5`ma>$m56A^k`dv!Yhg!A4f zIp1_du-&krxg~3+Va;C0L)m=J-cpm}{8|N`Nnd~ifnsece>k;@)ug_2)_N%Yvq0Uk zD&sCnwZHe3{0@8CUVkwvD6}zX|J^xGpDcWKumdwMduyYhB)nP6 zc*5|Hp_@2X-4B`(W%^w%zrw`*mP8SM3^LXN-g$#GhC{N(*n4pl`g$#PTRsHUMPsoX zcA6PbB0Kf@%g@K#p)rHw8jlaxXZdI^3s29Py%L^@QlE*+u}=H~Pe4{soeaw#jS0Zt z%CE5)(1c}2T|vzueXlS7%+?s44)Gfr9kj3Yw*Nws5d~g6Jw;Pfp>sVD&#An#U|96C zH+TT?s3Gc&YtSa23lF<8=)bt}LB0GRDPb_%ch6EN{YE72!G9ilj=LdLQ~%fPi%6FJ3;Q6}O{QpxhF5iPa0cO&__`MdXy%iY8(*|Zo=rtNsw zKX3NH5c_jmNo92AbkEDv8{kV5(_!hP7x}V!tyN?E<99Je5byd3C@2<{9+G{S}%_? z<)I|}Sqb@aJ!h)P@oH%y5SB1%6S)ZdG*a6B_MNc(j0GV2kr0KAaU@O=XEII$E?1v2 zuUhYh=M<}Mz4G)LRpp({K!4j}RPignBayZY_?ZKqvySEJ&Dej3qvEi=p}G;BmWu_x zEhTL%@nQ+h8mg9RElvi`oz9K20QAw%luJeWI+2Wu;N0+N@*6B5b}t~OPu)lz8?aKb z+=r<%Rh&pe+1owO!^P%t&jihJmJ=GV*YC|nZok`oc8s8u9FJB-U^hUyK;#a*&B-0R z*X)SIj#YY625(*?k08T-vfapr`;Xy=^v|o(DVUG~hw`?T5TvHC3hI>KU5J5I7&(dK zN!5N%YT0k2{YQC~n7}N;86Mf7Q1he7``B8+zK-l$VMOTC_x@~`|DK4J0ej__p%-tu z-q0|y9fo6MLFwb&&U-*nHrF3&A9W_oS~|}~s^RXyZUv?r`k!6L z(rn#vF*tJ!GwViz+t%BNb_|<<;Qb8P|AkTKv8yEe3+xu|p4e5pyd6Vx;Bo_Cu^+^N z?{)$Q0HsAOb0dmZs6+u8cHR{o;1C2M{nQgIvWYysai!=(5BmWW4$hSVVM=8_rSP24 ztt=qC?0ok4&k5PE`d^y_DhHTJqF^!nab^fUPzl8O{s(pZ)aqX%eDE8QN+4H20`!VeEO?JDk7tFU0@n}Zr~Q0&4|T0Rf(pP7a8ik>XUo)d*A*c$g= z5%4Ad|4{^V|F;Mj5;qMygtBFlbfyveM{>lE?F%PN4Pjq1g`^8@(A;7oi zryZwk)(%;nV;^Hv*;%=`1X;7Jt@60E%7v?CY)Ru4$0WKaPsOeZY^&C_n zK_d$s4HCoTvwmT;s@z%B^p3NXz5rj)2s8`$3f-?>a{`Fq@_1tH4k`&)~a z$`2%Of4Vn^?3CS!dL2t4^&hkL?Z2CVPYGo`7+OX)KzawX^c~0X9v&m#!@sj}sMcG1 z*~K5-93)Oz1Qiz1w9bAb12j}E=l=pSTDp^-A5Wj8qBGFzzw&DUh;Pz&Jek1#no-bT zf3$_pVfi8gTD)B2mD@%(QKd%8OPc)#QC`#c{C6A9;yPnbLgjTIZRqXp;AEDBYtECY zR^M$Eiv~Wx46$UE9*~_b^xb8p*aCsB|B;h)cQmgdM{;n}>sO75BB)1d&B+!VT8deGz;?x>b zX>Hs1*KXjxg_6->4P<@!)yCqYS*WrgfA}RYE}po@ETM`lt!1a^X_nbG9iY?t!T&}m z>vx&PPzGQtI{Ig_kTk6nj*cCUdc=)}p~W7RPQzdgimBp$>@0_$$Es6-KigjYEDY6Q z_xwF=3S}iIx9FWu{o@3*3yM@|PciOy0Vcmrygz-*X86@9K)=bz{BzeGp|_;T{rFA-{_@_+G znLc-P??WMw^>p1e?j1eH%I9o>qx5#WCt$-JuR+Jy0wRpWf;N0;m0I z_w9LnIy3%V#MQ5A8nrth#R-^&k7;MY{)FezZwVIB{Hq;8#w4;~d^OL3b9s3JkF|p8 z6YJcPT1{6fupmwQIqTUTn}5Jy1QyGc)b7KvHo*M{(^ewf+|$`D$W< zFfu2P9WXdVgHape^I~n-d!f{xS0Ns+h0KYpzVXPfAvOM3d_BZt2dS&IXpY94RZY>C+Ays zcJg9r_2;;mDn9PdU*+A;8$`$>Qju+rc%eA&qy>Tn5tTIJHK7}b+8;e?>#CJ9kRLfmm8C(R;Q1bBhk}dXa z)c&8FGN4PWO%LZbXUfxTP9T9qfB#;1XrqkvTDL?X+>ZezpxJC~>x5+ZXmXe2 zCI*xB%%8XLGDR(Xj^y){ht{#`Z?E4TQoScGE-m~Qf0eW`?igq+<3eC1A9}DK9(?F$ zFCXJ(TuRY~gjWDgn9+j&ug1PIDvl;-7a~A{F0KIze7&*5JZOMx> zlEnjN7H_#_Qz0F~|34spt^@$_)bM0uVv`!v6w@1s3Qc6b#-h#YP-^ zeJr`lDg0Q(O(`PWvTLN3ljC{RbKuNq{e4#vl#KIZ1`qV#da5F1Tv<`^9BIM^Qz#VJ zYnN24TQLw4_v+ok4jCGVNRaB#Jg`toMro&h^QS$wl2$2PZ+?*Z^7rv*&&qrLh}=D)%H8eY$Q45ZRm zE;W1(f=|a#9awb#)!Ke{wwPk@L1a2LtCDL|? z=F4C!x>FmJ{ovKNgJJ*V?N9mqNp9rik8d^>4XaIa=%TQR?DW`=UU4W4DJl$Dh5jRv z-SmC@_EonRcx^C;chTS2lRb>QJBB|bUmz*<)~*hA4L)cd2{pf*aqKBSL3s7KANe}$ zQaSueqEhljR@-lLxXhBr*e{+6T>n_wQ4aFcCQ*g`&r0xR>#yj~;*fb}jOj*a&i*vs zJ33H_yKUyqQTG{}9V=lurU`2FhR)xVEEKk_-YJg|L3=ACgtVXQh{bG9gK8;{|N8PkS`M3=c`gX2@OY|?<-Y*Rv5*a9}hO(!G}ke zt|a`=`j!;Wuc>etv&#Q9)({g%o9Mba29zjGIc@v@G{q-)?1%-7oQPkJpFf4;21$9x zSHv_1dT2b8o>i{9dL{35;S$=~2v zOJmX(a*&!+F}qAM^309hgbJRNbw(M!zDUjrN&3zH!24WryrX%Rt^PzsIfPf3g7x6 z5B~_l4{(+*MQgF~R-Uga(dgi>9+vZ^eq8NoY-*BUScn;KscF%^71|O*h zsD!9i9&e}Iir5se1ZK zt70jTqiPxV6}e3^Ce&PNia(8)XimR=y*KwDiWm$ATQSbWUtSIOYK1MOq_5rscEt9o zys2OVQ8Hox`nFs7hL7%b`J!gqJqu=qq6aBu_+MznbIx|;W8*U$!%YG6lu z&}uQqePCzzi9nNR`=Oq7$%QRllX90L+M8-iccq&uEX&{1I%JEkAZj`=INzb^C7WuC z-OT5Vx|j)p3fgQmDM&|K+{>dNwXL%3UU?76ZqePD#ECka&p5jj?mHB2yY$^So}uJ! zeZR<3kY=?UWK9<-=rJUU`rlXL#ifBrgr+`~{}l9FB=2|XQ#$ZlZ$-$G;r2zM{PTWOAf9GPRQR+niUM&=-a1W~h{Ih!&bohyay2AK1y+ zII*mIx1~ZT25@5M*D-YHq2S33JNmolITjnu>ioapxGtw{s=eDphf zG3e>6d(Hd_!#u$@N#1jFq6VVn=xodb#HjZ{Mx=H_MSAjL-B?wmJEDN2U!a&?n!$O( z=O&@b+1d*%d*b_DJZ>b8i!HrHbrVrNv_eN_27z>F*#6-n;3g%+*_eZ*Zk1mHnUyWA z>dnULWzFGv_#)~=l>?o(*GOv*`ME1$!p5|{?VjG#^iYsH(y8wo)(!(71Trc{ywv_& zz0%Wvda1I16^QxnQxH#B_G-4o+AM9((GLbE-NqcU%-BC@l6pq;I*Un9emqo~{OG{? z(4kRQ;Vkk!IS=;B{5o}h!RsCwv!cN^K|^TWSdNwNn7w{ih4&X-kOE6}WR8t30m60(r( zd3XRaczlK=dPBu_l&f=@X7z#AX%ee2mE*}q)FdQbJqYLw1m|&_M5-AsGuNclklQTy zpoi(m=LA=B=%VWd8{>W&IpFCO*18h#(0EiYS-}V?p-+6-#I6>3FpTgBO>avgL;*TF zm>Ldr(}BcbVLZ4qLejHE&Uj%zKIEVJ@Q+_DxkI~%L2X*F5A4M+#tOD7t_A7T`4@r( zXh4@tk&Y=Tm|)u^W>KD0G&1aAheXh^TaIb zv`g%!T+G81l1S_K?Rw4sKk!+vbzuQ>Pz-85NN)7P%`5gvqV4tvmG2zIAYdRW#jb`I z+5&Zn({mxXooRN?{K$1R3X0Q5tQ!-Dc<$5(2}YE%gtw%pDFy-ZlFGr~*wVVvf@XXC zX}};o)nvXCP*d zG6N3niiq8}n|+i~Ym7Y0kEk2PGf*5FW+>12G!T{=GkbGUZf;)W-sqr^Q4dV6fQwjZ z_#jG$uhuER9y0H;Uhz3<+oiAOrS5ScB~Yud!rZ-pRj9YS7f7&4;BX4jv=L(8kYjAFZktV;+&9s5@!l9loWZKC2@Pj z3z|N*;T}q|wY2;WrHjRG~fQn#PO~VsqD~k%paAt7+Z!AU$ zK#W-kFcyLyh2Q~+k-P$VtOt|9UMncr?c%q_`7edX>VHo*2zwBLS~!Y_w-0s9#qi)v zihvm@MO2aIHmY?LUL{SWco2Fybs#TvO%98x-;>%L&PBceJjY8q!XJX?&#W z-aWPCK&4}}w0d0c=`Ev&P~X@RLdB0QX!L!ZgRsO@lVX$%eibMNwEw_g>bpU+2Js@Zu9XZUz|K-w&_ zr{Q`-^BUyf6vzI=X}CnDgc|zA#pNvUIp%W2I)Brq|EWySmyLc~YmN{w!`j7jBFEtj zVWIZarVuz6cxyQz)MfQ-WbVk6T3q52Yx~bl%l++bKKDcYOR#O-?8C-om)_aVaa+KL z-F`Sm|0SSXzt$>VI)^JUZ7mWhY6iCKz+w)Fwnr$6V5BX2-|S!KShL*}-p}rF8Qkec zuMI3*ZKm3PmwW9Ef4?>PDi<4IH2JkD@y3Lk)<^{e<<^mqcyd(9TUkitLFW{G)a-4x zlwM0BS!s1*?ecZ8EoIBW%j@Q3qkko$W@h*J!n7Lg-!a0Az!nb(0+BV26`<$&O=9V66;yj#QZb6=$WGoN`|mlCYM$Ci7>$73 z?#<)^OzH_Ld@Wf!$3oi>>3jSe{pHsu2$>|;b;G0jMLK&dsUW^yL>9QujGLF2*Dz9h zXggCg=GhaI%^$-AE8=TF-vIcu040(fCv`Kv0XD338^<_+nzQFb@JQe|QC(f#2{_N< zmr)K2Tv{wG?dG)}--BdVD7CK)^%tN`Bsh~9m^CxLzDu7h-ofH_9vd||IXUhi;DYuZ zT>oNBTr60*iOPpOo0rp4SXj7M-1O2!)z$Ij$R-F#Bj?S5e@G;;oSpHn`QpQNj$h3n zSfFD4noyjTLY!!`%V2M>YLUh`)kD*+n(RmG(sh_k?w+0Hz48~v4Qbt#)91ARnZNS`_H`j<4a{mF~B3phR&4ktFr5Q=* zloS_O7&e3R_J1y>0X~h%+yVV|<0OL4jg${~`FohQ4eqjO>vlJOrlVQ(dkd}h_7@zH zMBs5ugbJq&M8e1A>SSZd=fdFL?jBu0U7ja~Gs^p_+PO+OlX!FE_}e{hcMNq*L z@V)_W95c)CT@vhkcfxd72?7aTuv@COi0O);TE`<96YXN!`F;-6)t=imfm&4i34ps zRC@%!(>g3)Bt6!7m+%NwKVF#N_nS2$Fd?iUKmTy4we>^Ht9RkKSF&GuoC--+2*0#= zrM$oYf-DUjzzl4ODg#{I-!h5#G>&Z?8OoAev~&%O`Aqu^>yYv5BA&{FN%`@dkVeE#}P}LXxtG8H^vdr zNlK9V-^Yi+wBt$r>}x)VmJqR;$I>%UCcU%#ChHo)$pq!jH0 zHitq#trCv!88(2aRg^t@dtEU7mB`BPB!fN^)QblLhh7aDU1a$|mPL*wnq{Q^0vmL6 zSJ&hM-~USHOQN84nRjc<(7Oa-c-!9tr#_kYzZ1YI1>LZ0!G#~XaYRaA9sfC12t~1q zXFBx#OH-~a%R+a^g=apLrlX=lL%|I%Vu6PER@V>&IV*xN^O?qnmW9HoX?%gw+EY>y`&;dK^N zYdwV)B%WNT46!2Uj-u#Zru{_G1xc(9@BDN2w2hp+@eCK+B=rOuVJwfx0%*Vrm*O5m zdgYj;D0r+o#HjWskJKt9W(sA3a;r^Wh-GfER`~s;;ZTmO4-VlL|AcFzt2-M-!Tahp z=!Jpel6f^33Xwz-2kH>biFMtG)@c;8O)jheLCauoG2HQ;k{JnMB3!w$YD={I?C-pQ-K8~wAL&1ROT6KnN)@pC# z0(m0nZf9p#etVQuI(xo11(2WZyEPU5z(AoHAtAtHke@2mk#v+%&-fY#Ti+Z^1vm^{ zcgIKMnE*QLgwaQuC*M{h%|Gj*5LEfp+fZEU@;g8SicL+{j3VNDek=jpz8B#3<9s*A z2E3swSwD9-rYt(LpI?d-M@?kAnPvXSoCmP1jVN&d6*yLep?!oEQ(jjmP~X+#7Ytzc zgV|c(%7! z@VNe4?F3v2@X){Ly+KiR+P;Dn|5v`}FGj^&iGe z*s-3M`^rLBWvAn9#Y=6Rw+V9&K!eHtRB#3NUMdaXnVY|TE2tUy$H3BaE~@@z37RY% zk@@y_ewXm|!N6jJGw)}FH}gsnqY1m}D7snqpXVtHryEEktIiV)aOy|Nb(ncQ|G>szJni%xSkFKIxaH;Azg_G$~HyGx-lN_2%T z8Sifs{cuNu9Kn9MWV%2IM2x?&sh%^*LWuzP;Vef73+!i`*SymwEa$UwWf&hzC)go52y1S{e>d5za`}Ric*)2(C#mGb&tZ|Uw*ackI1 z!n%c!9=v>>U~Ya^R};CoM%gwq<-Xoco$FTwhgq1u-=_UVO-&ER^Vf52%dzaVv`n>7 zNc`&gK{-Z(o(_cSa5SN-@^|5{*n?Uu3`INdA@zw21O?@Pm*94OH^#}*-SP@`5GG0( zh70d_fk=zQbvlF46(6JNWlVd<^vX+o(5JkTDyRNZGHDXIEB?EQM9V&JBc|cO1tFhV zxRIaR`8hKXk1xm9udOIwc@L`ITy*U_%+2$6@v|gXv`W+2$HFkE%L4);rwn#i~?+cbH`>oGmnd|&cWN$3K*b2QE7>l`RFM%1dD zsfVe5Xi}f!Iq;lu;rx7#WZ#fFn*mJf>m12%VF zUk@}$h{0;UbxWzjXs-(UF@t~Qn=JfW3kDzJg$|b4pksiXY{uAeu z>Blgk&B7f3dG_PW`}ZNcV?Ew(Ni}Aw`-6_#`$t+JOnNXzr?$Mt!AK6vH&r=F%9pV) z8p4=6WXYjh2`s>RV?)hLfie)%fgPN!k!h#*hV$mmou@!u3V&P4Vw0kxcSwT{2iNx^ zs=8HKiX#^0KQ%WsD@P{PfwY}IT|HG(r=wv1g$5=ExI!1AqKLds7jQzu9cVzPf9qFT zsjr>^K}Cs$Ef0Ls(@G3C1L7*?-Y{zD>3DP7km!CGId5}0J^;F}S{A2hK`S!6 zwoY0YLnSGNWlo_MUYvp|1Nmv#2<HEzc_{- zMFkzh@^VY7OB8(2IM`5jx&=Ck6(;H2A@$+F^9=s&>%x}JRc!0Te z@t&t><*5t=$jcV?K@V!b&qIVznG4Px+>Gn9@Q|^BkDtZHzG5;fbH=2S9(dhUd34nP zcXLJIK#m&cGElpAN87$tUg33iG;ulnKrO?|_ce8sbozTdSIp zwuVvwuDr{X8Yd{xN&$9bWK$$_CTwjU<5Tvq%?nt#&5OpjA=WPYM6Y#qg;0~oA3Jl? zLiz^uDhQWk&?Bs*LYel9P7-nz^Wf|A0FmBjG$3)Z;zK7_LZS_yvjBJmiMtK1!gKUt z7Xo5o%U8Ca7o)#JEt=5KE{Xji&jQWfkl^~>D7G=cm}F!Vc&y%Ha@s7IwA!7AK!)vr z3Ju#!pj&pWinDrvS}kDCeD3@*$DCMAF&v!}gu3ss^EE1tQI?l)X4$U=p@dB&ASXvD zykJKAst5Ay@5hg?t$lc3sxxZm((12f7vMacnM(O)9L(|%{hNJ>$#FCff7t0x8Cw}{ z)9Y!!tQmOcafi)v;SE^r}7qnI@j(PYn%_cdB%(ANA@Z2JGUV$H-Z#H z8UIvhg5D@WP~vYcpv}nQqmU@Qu@U^&aWct*eO1M01V^@Z(XoWh8`3L16{33_iBJCU zfKb1<8aNAh>FKU#WzXX-EeSbaQ)Q3LA5l}ezUHD8LgG)CO|G8RR8!m!_&l@-<}b6G z-UNEsH5s6O%7md%kO`+SjBMA<>2VkcwL+b*ODg6aSDDf^j#6QhyH*}TMG|^BoBhrAbX>JS6`)+CjMVW28&spcVU{(;S%(AS&u2KQzFKw^0?XZumafzHf7a6!N zZpAn7^N-Ai3w#?#v^SI0iyneE3+~YshRkP7?T;v)*g--L3uUZ54=oV`@{RE>$5y+tQzpl zB~?v$@RE(9MF#*t zP*hq>Sk?2{!91cZmCsxM)6!*2HII#6w@ovw^WRb!=0VN06<5;Otpc5y87j!Lpy%7L~W|#Bzs^dX#{yE zB0w{{y4pcre&lRt?DqC{L>b)N%p)i$m|ky)X7e5_7-*PMGwoMFx=i zt*@_-t@YyS1?*zTbs(3jkWc}X$LZ(p6>4MF{#HJJ(0}@ZU}&r`>WO1)at4#h2OjYKtyC@-%tr{#8(eE+P*$`MOm2) z3rENFGzT>`H5V5b6%`dbyXxiGH+$16*LL!=PaL66E z1m2vNwzsz%lI!d1Cs4xW;dis#;U=??2WMk~R~m+V z&s@Wg%VlstKaaVf^1O#X3#=#T)q072Y(b~pPUFYm+oK;t9~LcgeKC0ckRnUyc^$W1 z`B{8$Uh&##yO`05{j?D_ENsL7nWs+C> zxyr0r)XIighZysbAv*5!W|{Uscgg!mKtSo%i&+EE09C4OFFNRc-=HMZzIj}dWO>YQ z-)_IWs(CL6TOkdRI?XUZO(O>L|Y8)O@hs zPPceB=jCxH!%zvSGOAgDV>F?+t`(Z}b|o~4`bhrBI4$SZ((k3b{tWTOXU}eQt}OEm zD<0Zm0yO5w*JB>*EqVk|F=KbOuSo<3a{^yKs=M$%|SyntZFOHTM{eN5z?3OIBcB8n$ zkr8sM?q|dGN=~WFcS=c8iK1_fzc$OU3suLV&CTlhadE7XzbjlN(+dN;ls;#fCP;f< z9!Tf5j$_i~0$FX6WPvB0$XrW~fp0zhqHx*>J~{C17A7Ku(rw1@R=u8qn31Wdlgih? zHOL3WanmT2XuF(!y1W|9GjE!BpC^;7AP%NiYm^mdzGxN2;4W;NjVFm3B$*wP^*-@H z3p(*1O*bzfH8)&@ds7Dp$EVJAMU|v^sa)8G4^EGihY&&xX35UXC#mhpNzE_BDQ*(bpmRTG{|Dka+X7k3t za~(-ZN%Qz-zq*0<8n>igGj^f)WgS2EXC0=Kf>?q4dTtkwZ;THZ`^#|Aa{j>&*aa?m zZbnlqB_#wea;Zd~Y-URc<`cjVYJ~A`5EYJox+z@ga(BR5Kw~bSED1 z#X~0c4mxb)Xt^bn4Ji+9rAx^uw+TS|w;xT<&HYp<*oIj|8)qx)7hd{6Zhmowzg_U#NC_FDQ_<)5F?94I|MX!_zkV^@=NK<>*LAyZen&hw!;2VxS$sygv0 zkd{9F+l&IZ`1xFg!t^_+R*f8;j?!C8@jTPCjk5A8W0K%*Wso9M|Dgu8A`~@jT880_ zr&<-NR+^7+{tH`?G&d*s9W-yec1&RCYDD1nz)Y&MlMd^2+1cREGeOauG4K_F)N69F zxM)U)Akk7mLn$bku-4U&6jQpw@S0a>3YmfocHE1neIyQ?>D^(1=b2)q(jn^QNXsFq zKt>8SD=QzR<<>P2Lfa)8U%%1tT4!Ko!tSqPQ-4`IX_2#3YgwirueNsMAhlxQAYbwy zU@-N2f_G5-V%eU_5Lfp7bU|ucG6TO?o||{B69%h~iIS zbjk0fA1CG5k|7l5JHcwtT~LW0>w670o1InJD_`-#*j@ekhiG-1+TI$We+!e;QXKzS zR>)K>hSgDOsk~TDt9)q7oWR1jUr{?eLuufQ0?PqHrBPShq4V*ja(Hb_w#18=-_dzt zuIA*qI2?61#dj}}>{M{-ts+D*`KLVe1~iHis%12I=8LhvfFRPakrc2Pn2_+f4pG0y zUTFz}CTD+?GqjY6EEk#sEBzv|?Ez^;6xsMp#H{j0H5z; zZX}P)@2yz$aF}@dOxsS5Pu!0lZ(5PV?M@f@OvZxVUe-g14}4%TLncUM^_xpWx%J-{ z-~1P@!{Wyxl#)$fe$3tCle_-$P)$bdQ~6&`y%C<6)-V`h-uDm94az0)7ds{&+qX#O6wscLeNl1X2La{6*B{I4 z_g+xxk%3vWxgA>)(t)zAa9g6g;(Q610tfMY+Y}1t$><7x3gMS$k^~i7Ow%*g31i|_ zByEEa*#{KUqZw8bZ_Wr)W+w0Ond#5+t!;`f&I3Ief7|bE#PA+jQqbz>IH(XMAr!d- z%;yFqjcyi|=64bGl;nr|lXJ%XxDz0e4sqjm-5qD_@=E^zpT&L~UW?w*y~+)ymh!$m zY$*8227@F@*3j@=w-w6@4#C&#b<5OG{-zyVPzV~4|41a&+2{JtrRT>RU7tmL!UQnZ zP&w3f?CMUs{se4v(J`02=z&}7;$C$tRK~VYT43Yt7kpzI`pB2g5(KZwsLy#g<|=i# z0ExW83`~@}r|V>lqAuv4&W+kWk@kl;Ek!TnE30saT5L|4n`&!Ksn)a@(U8RJn`f~E zAVPU!g{0Cav#$485Ho85l)NVbP>4x{WvZG*vNDE>Wv$xj+r!a=QR2{z^gv6yELW#jGuatx8Bn9Y4kLlpC zKzke96%k)wo!qO{{4)w0cfYFTgKZ{@5`9y&BF37i-kC{N*t|Wn*3jF%uo-%JG9AP3 z{JpB9B5Cx{X|=zWz#=JKl0s`4$4*H6sUSw5oN>94J_7C=;~je^J~ zvH5ibw+tzx0#khzbRq_M4rjn%hA>MZ#gxB0`sO>bn9A|8ZZ~U`Rzg1Q9 zGn)mY;=TF;h$^;C6MlxBKliYQgl79oyMBs;|2X|RX7e-H$5982?hnlac3>(CBvscH z1O1_=xFRTYMQ2+m{?KP%fq?(XMN0zs|6OBwtWP}7IVSP*67Iu&VPGkcIpV(7@k~t(y}PlC#avE9V>Xn;?~~u%bwx!5tvQha z9xx9^&%m&3-@u2!CgICC1@iJMW~+PY-lu=zc!+p}$@GZ2}EimENG zaT6_&nSC{hP6a5CTeY9YxWm#LJrDN1Mbk9@+sgs|Ajd_NVqo$j_vznCYip~;Fb|mJ zTI8&#un>5EF&nF|x6hY-%rlLCJX-}^=084J4OD-8b<%}jJJ58ewx!*>@*~$}h7%T$ zkv8CCT2)o`;ll?%Xx1j$8rlerZ8hdhV=eQ~+uGimOue92az-P(({4Fc-|hK6o2L#X z=jO&T0~B}AM!3udlaQ_7Pn>i4@$eeA1+okP1RhrxstF|uhx=lPWaZ_Pf8zpx@jqdM zgM&Z;gTh`Wy=MyJ{#4a&fI+3c(j9oM;{2E9^%PJ z`=jLG($tiysw!nNGvJ!s>J0t;Cl=++lq&z91c>;dBx>4aCL8AqYMPEtAj1{S4>J zWk}z~JP<@ab)N?I#ggE%A041MS!AdIETTOxz{SPXY;2RR27nXsmF@jMe_qS2Tq^Oy zzQ1JISu=QuqpqkaDk?fXJ-tSthR=d4cf=f9VL6CB8)-&cs2ld-{z3NYYu}*3 z;rb2sNQ3LHve6f{(VvO0Y@Ss=x^fmSdm!u#F}KSpD)!-G!x`2N)A!oK>4XFtWK-g+ zhwfj39`8Nge$ZP(Ta%SzU*%c_Qlz!s99kzBF&S=DtpbJRuL-o?3W!I;r|@wc2!9n6 zFrW@(MExpAs{eCrV4(BgQB~D&#m{G~$R769y`LZvl&D1ben=nYFj2M2c%OS@bu?LE z#R^^<3cI-6s=jMDODsRgM)KMGgzXR7U}b|J?^4p!)9IEt&CI2mtOoI*$POE_>O}|o z)mPVnr)*T>DUhjZbJl`*G|%cF+;LzTo?y6Ojrw}m4Eb39wxpTLRTXdgqm^jeZ5!V= zt7tplT19R2_q}8a{}KE8iUE(b*I=p9Xv} zRDqq+TE;n1*~m|XWSoW5Mh*`^jX7JH5qSP8+n>swtdwQqVs_(vymxNdO=*T`KL;A%+WIiki za*FH+9I@^oKXdh-?M_w(A4)Xyukv$^a$c^)b{9iK6siRqcdZxx^xCdfXl(9w2Knw+ z1Vj8UF~@;jkteJHCpo5+t+Zi0;wO!Ma@DgxK|kGY-%&3F!zU3k5W=7k*5$qI!nN?46c! zG)AQ&9PF~~G<3w99?lGn6&TGXaUhI1-9w{u*|4Q>_ZFPmRW6zo{&AhOIk&lVy#phx zE>yr{eVC3fzTWy(+p30}F#WP(sKZ+i#GP!E<)w#*60wb~|043_ji~$TNEdAW7!3+j z^TZmlNL%~X`JCa~k^h%Dj&N*EPZ6hI24kHx#Q8*tIMqE5$ny_ECr#aMr@kLY@qN4L z!TMB9Cv$(?&imd=60UPC%zH5erm`R=qAlN*itA5{#Ki9nL|D&*1Q&5pij%!jG9_ix zqVy@%Caq#Mc9XF27dxzI>88MMGOZ5uJzz9nZoA~$WXk-^Jz!l0t_@eQrah5xpvGZv zpl4X*dQKn2pFl>f0ZCtUWIz5^#`oEsjWXHZSim49ivq3dovuqZDcXIgHYk9kx6yka zeF^2B>lWjs9iw+B+RjWO=+9dju<-IGQh)YaPqJ}zC+g<5c#zOw&^**?9XD6-nxX`2 z(S7!Cc;8?!4TD|YL|W68(o|^ER*u;w-Fxai(*-+Gb85z7 zCZ8`pv)L7uvy-Qq6RM&%tNCG@W}wE>6b0s;H%&$-B$IodJgJsoB@(!{+f`|Yzh=eVdc9L_^e$XiKi z#o-SNG)pjjf%upwTa>7rwY1&e645LmDIj=@qiV8;00h6}17lT)9NkV>vvI^mxsklP zZNl^$(-A5fN)y8$)Z*@qH$f zCcpNb!SY2uPg;`vl#q0;Yq3yIgK*PS%1Qj3pV+dq-d8EAseHr&7k7hFx3QlbR4_2= zl9-u-`?lD!OE~d_JY&p|tStmYnck!ln`T_0eCB#?(p@&x>`Df~u!=j8C9H35LUv*0 z957(r@5GCn(RF04CA~c|!?wla7;xobXmvy4n{Bw<<5&1sBS5C*iKU;CBi|)HtR~2!rogFr7!Id{Bh%zmBdWC}Cs2_AkkzN( z9$S3d@qgOO7TV}z|0pTu)#f5ed! zr}Sd%(~b11^aoq}<4dRZdUr2eY980&e!2XRlI~mb0k<6;ZeEVW=Y+rWUmWC;;*;5> zl;$&+T+%`BQFo8l z)|@xIJJ#7R(eyh_(_q4?DTAX)$fUMpY%J2BJFhd@^b8b6N;J3%iHiHOLMLuU5j0xp zF^6#yF;JQFVXtuPuTo?7jvfR#UDrBN?lR{6OUSh?g!7j(jxj=PNZ)UvFZ&#s2h=o| zAf}yul&U+P;|rgmC%CAyj-PpRAYMnr^Uc$C4l}CD%ZZa3g-JJJjezHpGM4EIP5DyLKil`U91;ABnZb1g5CZk-A8l)VLhX0@;O}J^3f`QszA0td3B# z`609w_OaV1FP}Kum7L*1pybm{thL278S?}`7Q2>YmFD^)^_Gk_-cn9n~vtH!vY8EEqEIV}9j4sInji%PFjIS)+sSk~X zGEXNRKG3WlZmas;SkIZ>8XI)wF4-C+G2_#c%;9b!!cP@}&+zj<-_{O%1%e1K#bH9Q z4lpeV{LF=ZfuD5$`BwhL*6r1I=0W5^_Tk3x5%iehQmhZj*O?IOE#oePotJm4&nsq2=hy_88ZN#HX%@b`6 zuBLWxQy;D4jE*ElnDvX95kg0xZ5r9wmhUE`Jw_t0hZ)osOMQ+`Z&<@mpccm zIx;@$NZ){i4V=p0aNofaU|a|k-Hz!{A3qIBXW;gjaUz$j2>beaFckWicX>c~o3B8) zG@c|Ot|#zUesH32ys>Mkf4?!|W$?*uF6F~;X?hjh>WhFXu%u%&UW?`I<~QP}ik{0w zNAAo29F89JpE$mX(|`I>)zFk@rLQ6Dvy5T$7%yi&nzQGSoz6xE_5C6xCP1ERxXpgQ z9nD0e$WFptX#4G!e_*HCjV)VlZ>AEqdU#U@Z$lCvD+Zx}`i2+F{mkMS5F<~QGxxtY zW%W&YC$4vK6;Z9#q^qufbC|c(;9#aqcYjkC#_if-L}VWh+{B5G?Uy8nV!^Vwsx2mV zgH~6a55j(c)$2^-&u;2eLG8CI%f}*bz2vE|BfSOvuG!t*#2@2E_De!2uwY@py)D^O zL87@t4GribRSyz$FXGrZ?^~rz-zHd*L{L6c4vq^8CRNCc9bdhB(&?{2QO@YH()bSZ zxpF*;Go8~qUuRTlOu5E}ABg__B^VT%@}B-^2_s#;zxi5Nx4{9)OJn}1GK_IY5Ahl80Kj;IQcE9qCYp|ZilROTL_0QEaG%c+Q)g{;|Z z9is-c{co1X4O%{#1fAOUN%?uBx9dc#UH;lsS^N|`ZpZdhlj&#Pj|wj+V>5vpU9iKk zoL~3Lc*IUEOxMlDiUT8OYkr^Tai@G%+RgIgD>j$3{$crfW@JBd+>%0xvQYzJ(3!92 zszogVy>QzH%im`@%|&l61;JYoC;t(r3sziVUEMeoq?%~t38DB)P8R9;&%7B0g+FO0 z_9R|^%|CqLZ8;GFt@r$KJXyZ44qTSAD$g7(#t~}F=grDg? zew@xnvUPf?`NqA8<=v-WsiYaaX!;$L8-dx}%pqTJ>Fs+(1*Ek;77zZ~JXFk`W6r|d zbwioHIr*~YQnedo!k6P>Yd^>{ntP@Oxy2wU;R2o|y0F5vfU8)Fl05hJD4S7(XJNia z`Zq#4x-3CGlGm$;CJJ2BNmea!tFr3qRU->F`uxR#X7&!voc+*|m3>UMmd_EWa9E2t%Uk7f>yY-nwIR zFr=8Z2%mVv5D+VAV$a%yygkWEi4uW_W4T@Zjb_+B3~2%!U)4*xjD!f7NZA9rv9>tV zC@oH9`}_P91RTiV+SU6mTnr+*USu>WQB|}Fn_Ooa%kh7gp*A$%JoupoMGK>)H*C?q z^zA@;emz0M1oRCxaikYtftg@F%%#R3|I9VQi^!4a%zLBrYoVn8LI6-|_tn~nA@W%j z5#lS87DoX=7>gYmrt?XJciTwt&QhXQe(X8I9m+4U_A}cAmz=?<-s+6yKL$ehijTPTd!-E>P zu9bc{o$@?VL)e-`;A*^jg%u7rWfL7wx(u!x?ix`&RL?+d%uB2Z3W(-fw6oEDnERSM zbvz2~+wT6*O5UihNvwgA)kfl|&hap2a+3T!9ih_q5(2jUooG6~uz^q!JZgey507=i zjb^XF#LYpf_f%rYPY$a8syYl#DKPG&sOGfZt=6DYWR!-9X=60a166>G!CAM7j~uhm ztVa$6%AKaiTcQqfjOIxaqori}a2*2)#I2`Xr^;eWJf1#wHgA)OfF@!(u*#YGrAM6Uc-G-VJ<10qGFpZ>cejBPzY(9za**aP+@``WxiHjfJ2bZW{h2z z*5qwQW|~;mqiVYs;yav{9&*O?m{8!4L1#)k+9|P(v`}DJ2)UxCl}7dZmvvT%iBcVC z;f8+Dyc{Z1cGAOcT-m>#?ZNHI3wqMfB#=SeEhTq1ziUJ`*)Icvgn~chb@-jO-Vd5( z#S1BBt#=z2SnasK4X5<+uCN$0L>%*jk-wA_mbr99V1EId+ft83KI!J2(2gNWo>h&O z66pVFLYS6u!Q;WXgM-m6+vd6Mslc%&E9xBH)|P_Z*CBY|N}hVbfb;FwlMTRUEvP0Y z@IDZcPAIQo0+T^+Kx+UP2Q&+N= zs+i!Dc(|a&RiE}4xA73(9||mDA&1=Vq$^&)^wTf)_3m=z;Dr!x_{WU^t{%&+>s5>w zB3r(w07O(kL;y0Goqoe3uP1`Y0{;!6xDo}wQ9rjM3Ig^^nhHWF{uYWnH53&f|BpYN zng8SO|4{8B0dGDuG~h%!I0PT}b_a_r_ck&Z*pEw$1tlYSy0FL$W|7A9LBojXR~qK( zoKP}@cz9XY%#H8t)KRnJR+S4DDT&SM?&5_H<3tWQ2^0qp3woFUM8B!5T((on9%XBI z-+aLCSAm^+)N`3rvhy)Pkv9_9uOTGXkDJ_BDg1ch=FM2SVkD8QzRAErr2jDc(^;@2 z>DIt`{*elHLs!Etxj`nQALa?VhY!Nnz8S$(>0(Z#R9N@`Vm?v>TX38Ls(b2U4*Qt#Vc z4&JfpA&)lSO8)6liO`x*xFCXn+vsD5(HmU*>&n$Qd#(ogw|p1P!m)WAydz2+JR=`Q z;xDB#i^hun7~3uD54iFPDOD-1YhQ7MPF^=FJd4AGg~c6{2>p>!jdTB7 zC3!w{g4mGjH0347R8%(c<@xZCa%R;dZd2T7kKiQ;u&tZ}ma_*Y3^dk!H8Ya6Nfy zFnvGcTj*_zo5q+m8cuSU)`)8i%lWG)$P_r=GJLEs(yJD(~+Z)S`@%;fKPR)73x zcK#BOVqQMtyT!ZAvFLZm09Q&AR`KvLKgnC{6m4|xSCZqh?4Kka_r*m9$6DgVX7Y&ivkPtd;en$ z-gk||qpvb71NTWO^79xzY~%QuL<$V}1LLWmdg`@a)eGHCq~yeQ{DXcX)hlGk0-Vn# zvL!0;Kr6VY`a+#$9y)$pKC|+zDCgU9lWmgfCbxE7m-=DFH}ML2NOT|C#ue$l8X=30FAJ&Vuwi^L z^3Y0}i{JCDkZ5yO-xPztMV+|uFmnK+*KhHI?f=&IqUs#;`Hr!ByZb7P-3YjaDs&kr zO2v;oRMgv)DP2Q=_-j!Z= z`1y52xWOu|U+q&p!&Cji7#cLa!Qh-O|yH={#NJL zLYxP6nl!>Y&tOUSS`;tPVF!b=7H*Xv&eA2uFd^jG&mnADxg78*V!}}1S`PpE`|)&d zMG5ysA_7-%VZmMbKVJQB3B-f|^`B;G5`Sx4r2eUY^7vr1KxGoUd0?w=Cg_1HJW^n? z;cEW+8R&<{yHUF>Ilv$v;)6JhJvUY~S|u}28;y{~7& zRZ(Rpk=DeX5jzXtzExBnUDCpf8p###d$>;}83^ir>b`!I{d?|Y&y4Z)2{#cwMW`bEdiJm{+JHT$%b_eR$S-;G8lHfX!a(mKhTESWAY4m|;%ghc2OIdlR*}Gt&D3UW%J>8mbQ+$oF4PsbtVkKIZ>@V%lb`*b$ z(7hn#jh%=<+qs8%8N3O%^l6#3?xg>9l|M~xu0VmaGgdUns1G=4R4=R2+r1^1%Xtm; z;vJMhH<7SrSJ(a22U@c#^|}^1ZhO|H>Cxb}-rCDmeZkJ@d($tb9Tl>-uR*xd8W17n z)6(0zf627OVX%{Mn%>0nV%s=}@6@K2MDR~JMOKA?M+!X?uUFQKdoM4Xol$nMZ}&HH zA|iQ`6_-XKCKHcn-lnLr9O~4Mv(lS&vBc)*04?8rYH_^}xOVlaZ*QHmdrwWo&d{T` zv1fuf#)0{;J%e`B#4WppuYTsQ9+!7qjjheb(vbj1Egs${HvQ>bnaT%~#aG937BJq1 z`wqm!3YdZ?F`I0B`VPpQk?R5xVDxkoLuSD(HaTq zY{en>59+l8EY_Zz`x@Q^m65m^G?&4DzN8yjc7m?57w=3zq#(IW>weA13Rva^8{FT` zdos$ng(Q8n{#1ZIHADZ*8Nj+QZMMrXu&>XDn09BUL#sUWr%oHIKV2|33ld8DF4En7 zL8H3RfQll+0p z4;cuoR1iZ7qn09MaR>0f@o>@+IhFCwO~9SqD~iwyj7@~%B9jrBx~MrQW5I*2=lrP& z-e$0m2Lk~tC^=U^T16CZ2YZC30@WrTCU#~tDc?OdnzLV4)jO(82RUVlOehG&iMFMn z0lz(bb-o?_9Zqy%H7`D?-GqU)E|z2*?I_YQbJd~&OHVN`UU?`Vb|8-9vr|64#nK>)hY!$W&7boe@8YU@X=hA)=l;Y-|Q&1O>b7^C^u8@ z3H>5>xp|9odBsCCUZrryW{nR!ei)KEE~1H1A|lvyZFAz+!z_YZ%m2n~Hj)!Ak85pb zRPyH6jPmsKkk%wMD7AMAm6ETSWS=pqljGKl->3%N< zHBKiiF>zT>1I_A4hl?%bzBnab6J@C1DqzYi>tpiKlOvSH{a2}nRj4I+7kCE;Pc}gs zYpVtEVxKekGunO2`>ex%HgpQ6-&;W}#vgqB#e_0dbfiPUFAG7k6v)q5?h)MT(p6|m zl|#^N0}E@adAk3U6RWeofps8GTC>jZHSP?IQUekjys%*ltP()|l<`j;bgWNyG!gvI zq972^tvl1X>!A1JPxW{jhYL?J3H9QRQ9Fhh1*>iGTl_bDKgi|{;z-b+pQIZ)z)Pzh zKie>Tv8fRJCh3cBc$B{myBe!21XekM}Ig+A{kyuT=#X3?@G9DIaMEJ(IDU_)3`8WVnkuDFHjH|Ie?dA*t`fW_ zjWEAo_Rb?}rfR}8Y<=JCC-BAp#EVUwLU%mCW!ZXRs>PE1nV<3DrJA4z^@L8grJ#|!f@f+j z?~obA2aPY}F6#?%?mFKbXD@|Jy19m~x9gmSrJ6T4dlYwWICh^56V;|G!&1PjElMu{ zF*_8~bDxt+ruro@%i$Sh7=@V_{gV2Q;nsMJCu(EvcrEwgg;OGLuDLjmC|Ts%5F%= zqh2j_mba0-QLgmUqd|gVo5q3JsLJ_Ld*$%$Na_)M*?;1!{F`?qicGF*8l@)MyIGz{ z5e<8&x3|tjjU^eZ0+I`NLD(m~h7Rzs{7CBdzg_g+jKTM^q?A}CJEd-ir)KFk*gGOM zw*CCI<2obYXQ|aH6s`O8T*EH&G;O$Y9S6Y#2`dE#9*h29ULJM55TZrNH|#qXbMcJA z!%#bM`%oP`@+%fdXKDkXFbEP8fDV8Jpz(?jirjul0h_n5ei~@}7=gF|G#m)2m57f8 zl9RwHl>V(|m-^du)kTlKeuvDU(RSo_e`+MK>VV?u9^N?Z=*+O z9H4E{yRx2}wn;2`B>Vs}4#do(YI1qAXf=tCyQrRZfG;1?Ik z$}oeG$HPVR;Ev5RNfq$gK=+M#ub@|ZJ`|?iGoHlk3;n)*#l)$iB4AK(9|;u}f=BK6 z(sTZ+aNXY^o)_y=JdZ|2S>WWqivgaQh7BP<FUx82Yy}yyC|8Sf0YB06?DO84e z_Y^7o8~ekA2c!PeEgwF-$ynkpJY@C%i6YVj!hw0QGHoG(l>WNEgX12;X*SKs@a40O@9E`NNX^ifZ9v8Cvww6)$t)~2Pkeni>`YjLy| ze{uAC33r_bf0LfK(rQ(fiUB@b;+;WuyHg8oA_>fxtGCM;Q2i}P-GLSO?8JOFPeMH@^b@#Kl1^XfxbSm8MKe8gayAto9}cw$N%Rr z1e->IlA5{;zFY1j_M)Vh}FN&vwBVJv%a~riHV7b2msMpL!;~~M znfw2YN8$AV+o4NTlLu|=x8Y$KhBr)^FP|ga!gGfDdV122{%M8%{7dr}(FyJi@K&_> ztCxmZcbCFi)8BTNo84^0#DaFg062a-ftXG39aMJDA#XQtf}aBKZ3ipKyKHvi{>t+5 z+IidUTLb{ms0k*OrLZ$K_4WccUTt~$cc{}dTj<^xa`cs*)RPa6KzauTT>r4jh=r7v z>aWhnD&1g*!9 zd6;+u(3Vc!W&QfrR=MoHIq|#xi6cchK?2MGjT&H5{gIWomxpYF6}x1h&y@>;?yJa$ zX_VNV+=V38-n~0_3HbyiuCA`<@O-5$FJf@k3jp{lOlp*8zhZses5^Hz*KCG{o>x%; zq`eUC(by>g4!!TK?kmHLk{`Ye{82`zuJNW}vCX6}Ci#6&F!NLAPcbcfW##Z}%UwbB zx$&Z}74gY44D>-qAIHE)^A`YrEsx*Wanhi$A7!tD=|a0l*WW}J6clK%o}M6e;IfmT zj-Bo9?&9F!^tNYwY$hhRuSN#oO>=BR1`<>C+_h9yr}k(_;5_RRJIjXWwOOQL#ccMY z2|BdjbGjL)mXb>O`GHAM%0cSS3|?P%eLgcYGfTgwGBz<8A$$`!Jota%o`ONWx3@9#&Sn@MOjV zR~`+gyLVvHli(&@$4;b2_SHycaDNx>hF8w@f#WCmp3POSo$SlYOE^b5txZit^xIdO zTuO$vn&F9N{pwOj3{@N1?AHMuxDuj3SP4wv<_|?N7=NCipNS}Q#JpiK@wKU_2z^l0 z``tI@BtzY)f(tEZuN(5I0w2vbFo^l^QpVWj5dnbZY(bC!qe0&1&&{D_ zt`7FOQjmdxU?TN)YzK${%i`i<2^1``E@*H!c(O#15CHgN47ag*JLCxZT=Jl>zRec^ zfOgipjf2A#pF<-w8TfG51mE-x02qGA6a;~-GWhxVg$GWy5|st~?mXAKg7>1S0D$eR zkdP3d07=p-1A)4=RD}{;CT+1h0KjFuQm5g4A8L}(V9EK_l}?J9l9KS<_B()KLTz*N zg427tEz6;jYw+XlWXa)T19p280$^^!8LlfLd9P^;7<0*sT=lN{<0*bQTp|K6STs{` z?5yy?z;0|2Q&#*JAh>GtPL)?y-ap*8z+YF>;&sw`=Ik^dW%GI%*Wle}@&o+KzcK5# zS}wYKcr<9wWqQKMeSLlBZ8?)=h`60iM>04l9g6{g&czlF2VdX&OfH9@*JWOb@L3$z zYBKV~OwP=t$Wdd5|AKptVpm4^BJW1XWxv$ywm*_cR)>|K1h6O&}Ssrb!UDc^=(3CPHsYMY^8ql z*Aq|&_2=$xso?g#tE;ONQSVvazOH^~;buZ6Ha7MI0udmI1!_W0lm!O`p|_@v&W=!l zeNgiR)jSmiQVSf=4|^ySN=8Nohl2Bpis-M9TeGmKo}S?OTcAv>^H_E*^q=tV~Q!_E#fsfd*(eMMWDE`EAk3 zCv6Yw`r@Ym3d?u|1YV~H>jM*Ingv*dpogzdp7ZdCdY#RIF5{reCcsK5DyjycijRl3%ehf$;!$~ zqbUx5;eZ0d!o037J;RaQ8API@ifPjGB-dKQZ^d__E8~j0kvCMdJjy(nvDO zGcsR3JmWHV5iWY^dUbKcoM4vLkl?WNU7{lr)p*rVKFeBEUy3a4A>irdy0AFAd^1th zc)3AX*L3yyxFJ`0SK|262WFlbpIKy*uV|cK(y`|vl7xHFqjzb4aX5~un)C9fu@CS` zE%ey$lsT#FOL_s9r{Lnh^%|LJL@mdQ}JQb zu8X0wG;nu9@Igd)K7Tu@(!t4tryk=vE()%*ZmWkMhGv{U9npCn3>t-Scf303&K)u7 zXV_T(#^U+(d_}`Fxn070uZ!8<@hu_P@!UbY`ZsG~^`o@3W=TVr6T3EI2@hmRr`Oq5 z74`%5pLL|%m*vB9XTvF%2kTiW7`X_J)i{oZgCS`qvNMq>NdrQruP-#{=hQf>^fJ0Z zM2OA2TIm=T9=J$Z^(}O)hDm%Tq4jC!ZU?pewhioXOv^BkDS^1PxRpS7t9&@@#iW@R zS_}0-&p1Zq$q)UnG+cndMfH2#g?N!dq#e@~#EAEdq2P2kS+bJsyOTQUn53ua=nKqZR#UunSCm>2%1W}!dK?EE5k{$HbM9=#&3kG* zeY{Z-{n86++IC_tPVMf}oUrno>^=(=bZ?_MjB2NB()&V>eryIrfHcg+=N?xN4f_8C>6r@^d^q$i4L4+|hOS++u=Y zEGh&dJFj%Ls)xWA)1+!Oj z$zXi=Kt`_8@`-gOjru}G^02+2aSOEz9PP)v~Hc_g_@3& zO3sEDxelpJJ9Utxv|-t(4*#g=6)X1;Nt2>9JDEIaF-&+nMoriJl?G~QSIHXJ;Mna? zAae+E#2rx6OQmQFdWT-_k>A|6T6}2R>9Ddm48P80vQYzFhp)IR&fxs_m?6_p>Z4Jf#jwQ<~!Chq3h)ujrGl#2TEJ@bJP$|DOM|<0XfBxIwEv_jrZqC}0c-@(?TKp$+cMZM z`VhV}3mHe*rLVY1@pW~dofSY%rnf4m!l?Y|+|9D>rtLbrE|*VKt*X(JmaB=j4HKp* zI*qvQb_cj7hXtQD@i?j4X{ zfpE7ij%Gw)V_i9Tpup#15*epU)PxJ0n+5p2$QUtPRdyY+S5W7;e| z^wB_cVEZKex-HWm27dP;^@1)mk9X!o z1k`?;+f+`NEJzZsjjHK6F<~^cL8;sCQdY&&5B)wEmZxuUO0=%LMfdFGciCKqel9;M z#jux}3dhUo=LKC3>XhMsY{Ypwu92$o>QWdhR{WDpfRww(bLv0`?V5Spsu|}p;sr+8 zuaaAY_)l$eSD_FNY0pc@pcpyX)S$zdhUp=93As3z+r8k=iX&Pq=f4@li_0jx4>AKt ziXD2eI_{BV#22*9!j5LO4B?^+J}Bg%UBQ7b9`oCnX@(+9DqkdI%i8=t!w%0JD2srf}M z!>~w7luRXMTo;0m=6zPKPZ%`ob!HuA3#=Kd5ALk2M!;h1-k&xS$bCafT_WBV!saiJ zKe{nK=sr$;V@PHV&Zqp|v{$#V^zo(VaT-FIb@6yi&%&5ygK@0Yo=u8rv+ zOG12qWo(Iw?WbMgZclPG(L-8=YpT!K9*y#qT#|&=aGU2gv14BAD2QhiV9Ex%HceNgtJ%Y*Hn%nZ-1d@%U_|h0v5sc%tn~80+Y)UIIA2u&&{b(9A99Ch!{g6A z3jtHvP)gIJk~X?jQS$t|KcvmJtN8k@g?g zdaEy()xzLV_Jj;;GPB!qm=y5oYLt7EevwqWZj3vD^5(78-=X#i>^cE7{9Jd+g!EB> zgGdx11J)goIn2$_Na#tgggm{tsa7^ZG2 z9G34w4d6ivfgkSf511`lynuNb>XdXpoxCnH^5a{8o3Lwc9*NX0$7%@}_iZDhmi94&)|8i=FY;?UUQ0Vmdc?rOl2F2^dXlYV zSSK_jiC5>gNB>Uh_m7%%bz}LqEEds4GK*m|(xD*Cab%2s4e`BC?#-IIqSggZ(ArB! zsd-k2u0n;rym*~^+};F6-~#9_-E-TYm8zQZm;t63eHk3U=G6ZJV_{kF1=;I(c?%q! z+A#3l;kmHxF}mrXyM`V42O%asx`vz$uf_KXG2z3!V(qh_sOz2k;o~swp9H3>KN5D< zfL$-dzW-yC>;r75+1Swo4tzGqRz)16_9IYasxGR8TTD8={MwD&g|DgDE!c{)LZJZw-W86Dp01@M-jhJuzTDzz8&f7BTL|HO_*Ht^N$3+0 z)QE9DQ_3IWiQJ~6Zh6i-ZugdcEZFC>6-DP{Hai_(%)avrIcxFE7%^G0x=kT;K>qVZ zU*e>%;}*WJq!L%K)K(uLlCXCWIp|rV@Mmd)s@5t`1Z7h7I&%D6e`F)5T@_2zGN2zn z7z8aY&@d4vgI=9zaxx^7=$~wm7#(nnpO*AGrpEbfFrl%&O>^VuJed95r~D}QKIGiC zp5yV#s)}dt%UeJP`ULaXUGTUZAX*Ag59y^qd4gJ_?Hghq-%^ zz8~{vbu*=6r&V+62lZP+=)-;ip14@MYQtowv1TihClbr$&0WtRNtRx{WVfcan9Sne zYz=5;JX^xO7Y0t~F2PX}OQ@B)hJ4IL?7s7yvV}j5Yk_8A%{-yee;5c47f=Zj^JN&( zF6LiRA5QlM+qKiI%$o(-(|;&n6y^9mh*3@#1R3@{yf<`Z{;JN;E_l9U%xrW)h!4xU zDbU%*F{9m`_o#?DmfycUQSXg)fJLq>GA}2wuDD*zKy+1XguBs}>t3P6h%dXeqor78 zQ;pzNU!f<}t9uwA(nF2gUNJk1vqTT=%#;&Waw<<3@l%|Mq+&1pVh{0u%J_4<5r((yALrM)??l z{Oz*_&Ynm`p%SeW=X)3i6djyfJULSjzpLMV#e<>s&;VCC0Y+?t86@H_6bF@wn1x;u zz)_wM7}Oo#{T7T1(tuiZ(^VO@shYw>4OChykSdUdiZdQQKEQA{K!1J6)!`ur`&{ut z@;ixv>S3K_Ko1LVIQ<01An`F>Z9_%B;QHr3aWb>BV@c$zCN@d7bu)F zaNFhP4`h3L`_lOZp4Hj*pNNSoZ-?huQe-Fn9xmIH$ti>dxPqgrP}3q9Q6uu5<64vd z0xR^~1@xrQyJ1N^I=N(6z6{zK$6Jvg+WqUo%gQRhbMfRNX%TN8uY!4XtSC&)$){w| zeeV}O=X;9kmhQ3=TtPmA%^nw7uiZcGO?S3y)bPiLWTy~QUq?Cn;RKfa;(nJ6szdFR}6O})-&{D&+6ha?MF^l zur^c^&Ig}Xkdu)u)95JSZH!D0fu=8%=Xq;>{rdPjg5mhj^Us_cn zm?0V$2TGdX1RM=aUAHDHzU$7+W9buy&dFD6=+qt zqmhA}Adb^Cvn^V%yRun5%9*7EG($MzeZ0eP-=B2{dq?bSvJP@oIN;hIuWoqDo!j_q zGgDPbM2GD@Va#8|IRynZ%zBq4elmu#?>+Tw^t#x=ZW7ZYEr21BR;k=B2_V{M`BwKO zx91u~8$i`-!D$t7QBjNy9>T{G65d8Aw(2QF4CtJsr*~S{qywn7@Klk%F%j+!@r&5v zN~m0|=bW`vV_@cVg1`I$jv5Zlk15~wO6Up^uVY=^?7_yNQ!PF_&NK?U>V0h^xLs{) zEqGjP*evHGQEF9mQkN%|7%nVug(9o+Uh6w+Q+FlSjYV>MdRMF=hFKa|7sN)OEVtqF zg!$~%1r=>mg(q1x4m+LH?N{b+VevB*!{uSn@1r;cw+W2KXG;5L6&ebs6PhAto-|)m zdeXD!xnjy8|5Ru@xSPdV&#mcEeZVA-qAG2%a`{1oYJ1sw_TGMf*;(v^=gLpl>BI7c z4ZZ12>|?TA1ZbEr59ah_RN5d_^pi8<#-0VDhQmje1Kj<2_#DX=kH41eJgQG}Qy~eo zNCv0NCqpgcL&ZX8g!th)vtr_u!D(o$#goR>kFn)O!PsYSQ*Om5UT(#_fn<1ZF=(A8 z)78m_Ze66lNA?6`J5ZN>QG)Ud`0k!QhvRf8Y=vfn7sOoS#gFBJ!bEbUYTte;ztliv zn%lbHZlw;N{6?+->G-`$zSo3Xcet9!RF>0-j&K^E8Df-Y@vhM*^_Y7n-`+e&j`7rI{1noteZ%gZOUjTU7I}KmuR=+yrj|NCl9%oT zmtzbqCF*vn=gwKY_d~(X)$oSGcII@HL_3@(i&`R7SHj!Cu9UdnY}MaV%)|HAS}uA& zFZMV(YLx?SC{}dtT*pfjN;ZNM7{x68BM>S8b`&C26k2}cY1K`$L}RHJ*y(uB%l(qw ztFa@|edR!;w61km;S?f~RW>KK)ptpx>r1Y(Mf_mKjz!ItxWe@Fyh9TTZsa{al;oZ| z9^|>AsYmZiR3*Bf>wE;;^MB#;G)-ae_iSW6`l!xWz2%+2Q%-Ya=1Q#suis3cV}LglTfggj#7anbNpY&> zx~@a%>0wO5-d=36VW?W=MQXi z^F-S!-dR$dr(hScdqC(Cr1inZUx<9P$6Hy;A z!JJ;5ysLX&W^>tJMKP=_XWsdIl!?g#HA4XK_|p6Mx3_8>8+*cul2Ur7f$IJJ3DJ_8(%5=D+c7wBtuF}4_)iBVUDyd!8>24 zx%s#$^gg*>DERL@vVc=CP|VJP{dT|jFXxya9fkQmdY8J->~SFRn$>l2!awS9hZz2h zh2s|lUt6UkK_S968NcJ9 zzo+ldh&Ts#V7h$n6RV2xk(a9dP~RploRG!_?d)2=VkU{vu1B5}B%++Q>&q{cIK_!7 z;&em4kuMl;N-{$Ywok)y+)5UNiVVxmVM1XBfAY*7uy<@M1S{WPrMc_zzNuWJ3#xu#A0@{ggHz5J6IsHaQFcRcU0 zcJlGV0>O{T#rwlwlYzAfzg8EKi`6dSyepIU+flb`F&2-^j&67Ma_e{0$R~v52@MES ztQc(3-LV$g7@%at45Vsq7$C_y6IW%_;)+_Q8l6ojEbF9T;E#1<7!W=Ey0n_@ddzX~h^{adUIrrC1iPx~jC`!(BC)l|C+#<8t zVv;LaL~jce9O8e|uTOs?|VLYK&|&%cZZOD`_WR)XDX> z#MMOU7fjaYW!1DeVx|3l>CToJq7RC`eB!Mny!0re@Eg^k)(;W=tlSd@`)*c{^HwiD z)@&;P)-j%?6qN3_)$ml?<#z`X)a6d@>Wcz_58Pd=o`vq`G2omb58HGjkY+BNu@ zhoNVl1CBFmGnsfc(>BHv9lkGpoyitT`BzW^qZJHWeKX{Sq(ns)e|$D81s-7ZE*2b{ zuU2K zeIW`;d#b*;`MZTp?yE-NC9)~P1qjY;!?FxI(1x5-bFI1`2?ttK+y|JdV$H|O=h|B*&q6K|9s>^B`AfXLYVvN0JalOevmV?DYh!54XNo79;Jw^#rRy^3)lzD>~O-m|%C)MkQ^ zKD@19YWt4N`Rj^g!&Cx#WHa3tFhcsgOZ3uTvP2IvW_@a;+VfNDWm&DQW(A^N#zB27%j&TOD zrn!~5TmT7%V$+xtwo}EiK-g~c`brrN!~jP{3$M=t;Fl4Qs>36e|Ld@fDIt3HZqEm6 z6$3yA^m^tIO|uk6oO?a|s@?`KA;shgsgo^q$daLl!T2pu&N2x=lj`OX?YGT4ivRf? z-~?#a50AO6VMT=Yhyep!bxQfLy|@GD;2#72d#CIEe^WAmS4~_ql+XLy&3hw*5~G72oJt=JhPo@V*dg9L7U>`-g?ss^_xm8{!R+uB}R zGh?s$v>Ep%H0-hlIF43(>r>XK_h6%3dxkuRBdd&qvG1ZE`}IE3y1=DKWw|e5_Xl(? z#Jnmvcx0;XJcV88JxM~Ko0g};_(IYt2(iz8V;zKO_k;u+vWrJm(XrD>f5>`5OsUJl zW*xS}_gUjMB|<-Lu>Ay;S8(eZD_`)5 z!CzXaN-vh=&v_p=ROOiegzLsZO+r3t27!&H_I1dRC-)(MsK65jr2CuWqj^fa-oGBR zwc-DOj#4ao7P$ynDiXSy$U}6dE^-oiFBVN+HwbxWC=hpqSKY-M^$}^bZ%-#ccBnBQ zV(jKr*`p86FE6UF_gB@UV5JFTfJEGX+52m`8m5ep={egxb?Qy8cWQ^`^(EW-ex~Sy zgrI7^BfV!Ox`eX=PKqeK>ZjQ#If#}<&TTHR9&PGc$b4VDHf=|;blje4U-3go4F1+% zEElh~uA)VXv+$-e)I3+3lRiI_Z_{m_)}SgJF|)X=pHOqQ8Shl#(W@6xW8SKzqE2#$ zAM;%gUBv|a+6TPc(M6K*&}gdq(z)x~Wtgy7@Yi~g_q2)5gWr{HCVzTgE%trvBRBTB zdh_?9=ogu-8)nUTowc~>Xzr+^9o>BL8XI9lD{Je6ZIrSKZlv~&Y?@r>#Ik2dbDJ^b zz|a8E1>n~>ke8K+pAgN;v2QH+gx|o3v(AY+hZDuth2GP*-kDE~y=QyZXN$8^r6CSw zD^TsJvbv37`Jgz?!zSpy*0CtoMEG(}{4JRrH# zK!L%5K1SWTS19smTiE@@3T|Z2{a;|7ESv8bg$Tja=tu+;X08zuPEJlun$~fGTXI@t2>h1E%o6Gu zP|=GMg*-vJU84nsw$+Z_?`w*gKXOuaW-q_{-=Y9k9zo3rK=gIH;Y-(Ri!i-tzugDG zyM8!;OwG^?a%x{NVxQ)^s}Fci4?t=WoWG60!@K15U+wzbi;pO~hU<^66@}5bf zR>j%yM)cMA@iMm)5yb1N038f>Qm);*0rG1&x0L}Tj28d4+1-c}CN)*z3At{)c{)}M zeHdFGUhix->p5cRbK>TGbp!WQMy_8Yns27xPrjL027$O977qM?Yu;Ej!swbm*nIiQ zSpVx^&uuqd?x}}givesjI9&^Ly{}9d!Z}ad zjw3>F^U&UL-d&_8h#+fxr52@5|6jpi6$HyQOT<9$t7H0eLpj+y;De1IPfm6zFN4ci zQ_~{)Bb%Y>_&|8C3`KW{tL+gi?Gz?AU)AQ6ti9dVO^b?7 zJ%C66*x3E9?7lB8+on4R_y1`hGJhOgz%F7eG(*SU|~EC8_lGnSmE&SO`Z;!7i2!$*f&-#dAc zId|T0z6}Y=ab%hQ^+V}Y`VZ7iG^YiajIHLtR?7(&ozJOP+40A3C-_YFs^GL+RotYbMQc(W9#K75rv8zJjT$GDj(;OK)>(ZYmbV z1i2Dab*t($a1l82(87ikA04sRwB<@GNmOjyM-u;$b3UQ>IeN(|B@ICxgs#%{Kzki( zFQ+r$3n4-u0FyfU%@pUzloN|b#cw&oqiHJ{|NZAVJj9jrtun``EVhTu_DbA?ZJL=} z>0*fh;k5pX*Mp)%{Uh!swv!zW1uka?>-H#nfh;;STOYt>$zO90j%u}vKHY$sXAfgS zB=)IpqpqylGh$ky852fbOn(V-qCap^AB~aDC_CcyUb{jXjn@RzrV}j(sJ%hyQ(ecwYKtWu^_(p;K+iSEuD*2QI3Qu z!ARIIAF{$TQI);tO<%XL(dzbrDscb=+>sR2*}AN*_80OORXo)4XQR1Hjg01bv8rAI zYr5e-a5lf+1a|O+mo7Q|>%jAd z4&Yrk2^IX`8m_abYkl7ARoA(TiN3AoD-D^E_O@fasQc5;g2R5}CK(dv-6ij>vYu5Z zt`hgZdm|B8MIT;i?qjL1Kd?+iQz0)WA%@H?j z!+E052e8CYe5CvZ*3F)1th*nN+*|v-w|0k-i6IY$+#)Md-zYzNk#cd;I3k=cDQky5 zJe)Hphh(HS1FXwWr3DBAyzXnDIjk=}Ao=J7d4;O_8ykB^$H(ort@@{wWciECCJZ53 zTGBTC1$uXrVX*6Qc{8MpffL@#%zIdN<9%4?`r+!)|A(-j_&s=5Lutlt+1~seVnDY` zxI9jG%mdx~8CF$MzSNxkY?#mN+8bB~%VhXZ*I5R-so+%9oNpQIGW-=UlOo;2Cy^cH-bbJH6aW#z1^4szN{ z5B@aV4KnU13)PT72_AKx#Pl4di$8aI@Zs~s3)>y8-#M@Ys=nZ7q4(l4r3NFvrInNw zj)hKVgje28og9hww@(yysC|dbE#ge#7e3m`xmLL`bemE8-#rj8%Y8vK&CJZqcu}5O zmgCr1wC}g-Tf=3Ih0^t?Lpf8~jazV}d68wEs8dv?_cYsYwbdeCmX_mPRfAObh*h;h z*EI#5sX7TA@RXmEUji^ux~=HtuBc4V1y#1pTxN%7dLy&)bvCU>yA-YUyyN%9MP*P$ z$+m=}N(zT-w(yUIcrZ*nJ^Fvj56rhi%oz#Sy#YNI zr9%Bw=feiD;4miO{ZM^hB^_Acf`mf%fwjGIti>k1_i5^4 z5+Gf1*0g}z8$KJp6* zPZXS?M)NwF+uDpRMO#9g)jUrnclR>r5X15Hbt)ve?`C;vUOsN>HcI!?lgpCu)BECb zxcE_a(9xX4Y1c9oHX`0V{x1C7X-I+O^%grjkQ%zeb$cdKaNOOczN!J?B-m{+Q0P+p z6BROk&b8&avX%-35ZhNFc(f@gkILLo4f{=-hXJ}fO~%f(#qwZLLI~wx1(C(eM$d~F zKaP~OJE4LpfD#^9icDAF0SF(v=~n$*R6gsd+vriv9367d6=1u=)vSg}V04IG=g{e- z%oOmme>T^q6sR87*IzI?on3eIS_B}Av3xoU^B)oU4ba|n|JQG^KrKV!x^MdOkp1Zt-`mL=AjwvBGX%l3R9X$PsQi&uL9_7icbf#m1JCHLSZqwRo|)ZS`uH?8w#PtVjP zj{w(z-C+>K+7)ot>%<2zb{FIE{;{A^z*sGYhuv*wM`)jE^+>^s+~-_XXNn3pLpS`_ zcl#4I!dT;+@K#b`kuGMOu>2Eb{4I#BrFmCqkz9pduJZV&<3xTMaGJ{HUGn-PgwF`L zHObS{B`!%9OvEHlwU73FJ)d6x0tnXN>a&)Qyo=zm6V_7X;pTl? z0i^8IOc1cFY*mogcP%Mt8@YeMUw@l-IrMyyIc1+QdMn+0{9ns$WsIBY%9www=2Z!b zWg`tucB-&h;_xh2!5GcV6!H4xi%AQDcKZNrf*glp(Huv2EWV@4vsD^dX0s;$wL}iO7|c9xh(_VDC|Ch&93K5g6HGG zTTa$TSvDC5gomReC#<1CTwe7m>e+NlCo!ya5MMRXS*ASR>I8m=THC&*>-;wSs`&71Z&ybqz!VD^5o7sIPf=?f6CerWZ+e*fOYBurH0w; z+k(rn(a-I@8w(7r^UsKNMzg}yW}1OOdYzBV&T_j^(GW&gZ@2Mlw(*m~hq+{QW$Dl~ z<**1nRPF)V#Ti{OJI1+JvUwfsMD`zdra(#04%-6qfnw@qcj*i#8)A3*ya3)mbB;`s zU5uWfhTT)BQ7&Iyv36rHJL{1ag?NsxlC*~ZRlj5mP&SX*`=dK zsLx|p#7v{!zUE?#{qP;DVY=tGy%U1*Et2UxJ3LnJpo_niK)OLK4h3=R%Hm|dJZ=}O z)7Adr!6^*GlT;l9(#fv8o}-2a78P2vP`bRz+#S;N2>?elLjR{ik_gR@%rN7Aby72n4nD5tK_GiJm&%Z z8?w6lp>=tHmmO7=Feg0_-a=22_gj81>nzP8mR9rjhGg^&4yOn5&}AB1kUE;3X3uai zf)jvD(1Z}ZU7_bGyos4fEa-H0;CZ3C#ElPO`8v=;ly1n9d{^MvO7vx9wdt(<-)8mS zN>Pm~;jXPvKaQ=wzKtlIf2~CIFU=I>+M5q+58!Xo!DP&SavTol3FQ^(h+Zxqa)wiy z_X?#w;{yEW<F;9H-4(do2*YxJ(yWG- z@Nx0h26G)?L>_W4F-2QNJ$wD`(C7rDCU)j0vC?B+IAPZxcL%Su^+vzRR_$-cIMd!sFo`H3XL8nvllq#G`6(e9(ov;kz;F zJW+4siEZ)+NLQQ7G1FBWFX#SDyKZEtu3xq`%cR48Wj#^(#d1aptYKpxh_ryL?3x=u z9~zHt9QNiIXYQUb+lj7D18SKmrJ?+Ik(_+X-OgYShCJYStRV)tF>?{e+}UZaveQpK z_nYvFr;p-VZ&0TWL3w%Ivx0{7QQ`QV*O|cE<5_8(+v93j0(XoYb`q(Bl(*zG4~qGp9LqLX zg|_1_kRQR$ht(?GS<>$)tSi5jB~=9X@!#Zm2p+L(%WX{UPq{;59dI}MIo13#UZb0W zoN7D#_myc;q1|Foi$GXxYgq%AN;CFHYy&@`VZR*U4XQ&E3mNXW#&`EU)r5vLntV`2 zbGjHOI>gxW=vV08HoI}UIZ+CJa6WmBSpN%y+|;mS@%)T?7+Z) zDNn;r^`PuK{}Xvjtt+n%^jFxs6xhbb23+@Yql|!`m|Si)S3_G@)U`uNNvYj%P#2>` z_kIFQG3Q_+1O=n~^uTVRdpI*A<}J_m=4Q|8KKecpI&uK11H2+vM(J%uYX@{#32s;( zeapka$q8S!|GPu7u*-HCWq2QlU~u(^Vd0X72D_aQ)LdhVT-FxTLnKq`#FPPwM*p!! z`qOC@BVO?Z<>E1(w30ujVzkU~P22j)zOV-sm3)=f)O^9tvgkr#mBEi6yqQ;*f^};2 z`q|HC6ciLx^G1h1YS3wUJf@FYVE>F7pQfj&=qg3#?2hYsZ*6Yk>3#NVA{Vy|U##v7 zr)PbDI0&M<=U)Y4JKCU?m5rj~naj3fctz z(v{QJP5H&R>P~4NE~@>2ihHNV8T)*#GLr`S9WVbd7^WR5C|RwcT13c!Gkq38T@<^{EMOqnBzr#duoUqt`_9 zc>4IqEoNH^Yt&=)^&%Br2eW_T`<%dyt@V7gM!y&YY#k3wbXJ>q>V`9*LufRbQ1m=v z)$JIA0_#Re@jRxLm6Z(*;v0PEoY8oViMmb2Lr1Sd{GG1DNhM?cyF#_MQzmFQG%Cs! zA4^I}OH&`YX#sC|;#mMn0q!;BS5}VgOFavFIzeNjX|i4zpS?xVm$#L27qk{ zrc?Frk-TKVLJL?)6P%r$ZFW%qHN0it!_o0zG*4|bPKH*4jl4Xgb3^{@O&|VZq74A(y4I zhEucJ8}EQbaF5A|M<9{Nkr8E>F5Hd=v$TaAt3ihM`}gmhmT;>VmJJ=Zad5m(mg63m zb>=~=zdnq7tW)c_euiq~kC!14Fv8O#I&RTkfu~%RqJitbnMMyq;8DHe>D(_~#9o^4 zfWff*d@J{8aiY^9As(J#!;s*eJaeX%PWAi(U0OSI z_h}}2!Ty?PgOEy)B@(yZ-*ko?>kH?c=g~~hq_Fp8{k9n72*jvHgro0aIBNYt+<)z> z=Aex-&kIYf!H(5=qWydXHI1%%ooB_|3j4~ruIWY&JjtUG(H|Fo0uR{&fdt(4ehp}5 z4V&)|))jz2$ECf)dcYgO(g-}zXR+W1VE2PH2%3eJ6&nOXPu97h{0ZqBOo7|UE=UIq z5Syy5?(FF3As8Z+)0fDPM|}%a3|y@SE+eyK_+BoI6=<;?=VO7YKP`MkooQO`_Uu>C zA8k!BBQZd)Y;3k${Rv|fpFrkn3VXi7pMyTPw7hwiaoPJ3&UPF|2WGLl1!@W+W7QrX z6}@vI{LJ|AePR$u-A=6t1_R&u>irS!ibiTUJ6Hbb2Z4SFI+z$48Oh6szqpJCXN*)> zj+?-t)|WB~&LGfJc6Qke#mQq+bT5ORv~*9BphKq72?$hezZ|sccFOtYO2XT_aZx}} zP;fZU0}%8D-rc(*a3v}HXAp4;KlzlGGu3vC%a|aUILg?Bgak*Sf~&V{x1MEq%*|EV z(k~~TfgnS{oOaD#2cAYjj9ML&LjAgVWRXwsQ@}J+ZQ?S0K=c%^7-&iHYe5 zH5aFtFdu4%?u{^g616K*R8YYFAXqGY5TE)*$R-OB=+&w!aCzJ7;uO#;KQC{+$I0^; lDg62tY5@ou6EsiaCMAN!E;xV!uGoVl#pK=; + } + + class RouteCollector { + public function __construct(RouteParser $routeParser, DataGenerator $dataGenerator); + public function addRoute(mixed $httpMethod, string $route, mixed $handler): void; + public function getData(): array; + } + + class Route { + public function __construct(string $httpMethod, mixed $handler, string $regex, array $variables); + public function matches(string $str): bool; + } + + interface DataGenerator { + public function addRoute(string $httpMethod, array $routeData, mixed $handler); + public function getData(): array; + } + + interface Dispatcher { + const int NOT_FOUND = 0; + const int FOUND = 1; + const int METHOD_NOT_ALLOWED = 2; + public function dispatch(string $httpMethod, string $uri): array; + } + + function simpleDispatcher( + (function(RouteCollector): void) $routeDefinitionCallback, + shape( + 'routeParser' => ?classname, + 'dataGenerator' => ?classname, + 'dispatcher' => ?classname, + 'routeCollector' => ?classname, + ) $options = shape()): Dispatcher; + + function cachedDispatcher( + (function(RouteCollector): void) $routeDefinitionCallback, + shape( + 'routeParser' => ?classname, + 'dataGenerator' => ?classname, + 'dispatcher' => ?classname, + 'routeCollector' => ?classname, + 'cacheDisabled' => ?bool, + 'cacheFile' => ?string, + ) $options = shape()): Dispatcher; +} + +namespace FastRoute\DataGenerator { + abstract class RegexBasedAbstract implements \FastRoute\DataGenerator { + protected abstract function getApproxChunkSize(); + protected abstract function processChunk($regexToRoutesMap); + + public function addRoute(string $httpMethod, array $routeData, mixed $handler): void; + public function getData(): array; + } + + class CharCountBased extends RegexBasedAbstract { + protected function getApproxChunkSize(): int; + protected function processChunk(array $regexToRoutesMap): array; + } + + class GroupCountBased extends RegexBasedAbstract { + protected function getApproxChunkSize(): int; + protected function processChunk(array $regexToRoutesMap): array; + } + + class GroupPosBased extends RegexBasedAbstract { + protected function getApproxChunkSize(): int; + protected function processChunk(array $regexToRoutesMap): array; + } + + class MarkBased extends RegexBasedAbstract { + protected function getApproxChunkSize(): int; + protected function processChunk(array $regexToRoutesMap): array; + } +} + +namespace FastRoute\Dispatcher { + abstract class RegexBasedAbstract implements \FastRoute\Dispatcher { + protected abstract function dispatchVariableRoute(array $routeData, string $uri): array; + + public function dispatch(string $httpMethod, string $uri): array; + } + + class GroupPosBased extends RegexBasedAbstract { + public function __construct(array $data); + protected function dispatchVariableRoute(array $routeData, string $uri): array; + } + + class GroupCountBased extends RegexBasedAbstract { + public function __construct(array $data); + protected function dispatchVariableRoute(array $routeData, string $uri): array; + } + + class CharCountBased extends RegexBasedAbstract { + public function __construct(array $data); + protected function dispatchVariableRoute(array $routeData, string $uri): array; + } + + class MarkBased extends RegexBasedAbstract { + public function __construct(array $data); + protected function dispatchVariableRoute(array $routeData, string $uri): array; + } +} + +namespace FastRoute\RouteParser { + class Std implements \FastRoute\RouteParser { + const string VARIABLE_REGEX = <<<'REGEX' +\{ + \s* ([a-zA-Z][a-zA-Z0-9_]*) \s* + (?: + : \s* ([^{}]*(?:\{(?-1)\}[^{}]*)*) + )? +\} +REGEX; + const string DEFAULT_DISPATCH_REGEX = '[^/]+'; + public function parse(string $route): array; + } +} diff --git a/system/vendor/nikic/fast-route/LICENSE b/system/vendor/nikic/fast-route/LICENSE new file mode 100644 index 0000000..478e764 --- /dev/null +++ b/system/vendor/nikic/fast-route/LICENSE @@ -0,0 +1,31 @@ +Copyright (c) 2013 by Nikita Popov. + +Some 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. + + * The names of the contributors may not 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/system/vendor/nikic/fast-route/README.md b/system/vendor/nikic/fast-route/README.md new file mode 100644 index 0000000..91bd466 --- /dev/null +++ b/system/vendor/nikic/fast-route/README.md @@ -0,0 +1,313 @@ +FastRoute - Fast request router for PHP +======================================= + +This library provides a fast implementation of a regular expression based router. [Blog post explaining how the +implementation works and why it is fast.][blog_post] + +Install +------- + +To install with composer: + +```sh +composer require nikic/fast-route +``` + +Requires PHP 5.4 or newer. + +Usage +----- + +Here's a basic usage example: + +```php +addRoute('GET', '/users', 'get_all_users_handler'); + // {id} must be a number (\d+) + $r->addRoute('GET', '/user/{id:\d+}', 'get_user_handler'); + // The /{title} suffix is optional + $r->addRoute('GET', '/articles/{id:\d+}[/{title}]', 'get_article_handler'); +}); + +// Fetch method and URI from somewhere +$httpMethod = $_SERVER['REQUEST_METHOD']; +$uri = $_SERVER['REQUEST_URI']; + +// Strip query string (?foo=bar) and decode URI +if (false !== $pos = strpos($uri, '?')) { + $uri = substr($uri, 0, $pos); +} +$uri = rawurldecode($uri); + +$routeInfo = $dispatcher->dispatch($httpMethod, $uri); +switch ($routeInfo[0]) { + case FastRoute\Dispatcher::NOT_FOUND: + // ... 404 Not Found + break; + case FastRoute\Dispatcher::METHOD_NOT_ALLOWED: + $allowedMethods = $routeInfo[1]; + // ... 405 Method Not Allowed + break; + case FastRoute\Dispatcher::FOUND: + $handler = $routeInfo[1]; + $vars = $routeInfo[2]; + // ... call $handler with $vars + break; +} +``` + +### Defining routes + +The routes are defined by calling the `FastRoute\simpleDispatcher()` function, which accepts +a callable taking a `FastRoute\RouteCollector` instance. The routes are added by calling +`addRoute()` on the collector instance: + +```php +$r->addRoute($method, $routePattern, $handler); +``` + +The `$method` is an uppercase HTTP method string for which a certain route should match. It +is possible to specify multiple valid methods using an array: + +```php +// These two calls +$r->addRoute('GET', '/test', 'handler'); +$r->addRoute('POST', '/test', 'handler'); +// Are equivalent to this one call +$r->addRoute(['GET', 'POST'], '/test', 'handler'); +``` + +By default the `$routePattern` uses a syntax where `{foo}` specifies a placeholder with name `foo` +and matching the regex `[^/]+`. To adjust the pattern the placeholder matches, you can specify +a custom pattern by writing `{bar:[0-9]+}`. Some examples: + +```php +// Matches /user/42, but not /user/xyz +$r->addRoute('GET', '/user/{id:\d+}', 'handler'); + +// Matches /user/foobar, but not /user/foo/bar +$r->addRoute('GET', '/user/{name}', 'handler'); + +// Matches /user/foo/bar as well +$r->addRoute('GET', '/user/{name:.+}', 'handler'); +``` + +Custom patterns for route placeholders cannot use capturing groups. For example `{lang:(en|de)}` +is not a valid placeholder, because `()` is a capturing group. Instead you can use either +`{lang:en|de}` or `{lang:(?:en|de)}`. + +Furthermore parts of the route enclosed in `[...]` are considered optional, so that `/foo[bar]` +will match both `/foo` and `/foobar`. Optional parts are only supported in a trailing position, +not in the middle of a route. + +```php +// This route +$r->addRoute('GET', '/user/{id:\d+}[/{name}]', 'handler'); +// Is equivalent to these two routes +$r->addRoute('GET', '/user/{id:\d+}', 'handler'); +$r->addRoute('GET', '/user/{id:\d+}/{name}', 'handler'); + +// Multiple nested optional parts are possible as well +$r->addRoute('GET', '/user[/{id:\d+}[/{name}]]', 'handler'); + +// This route is NOT valid, because optional parts can only occur at the end +$r->addRoute('GET', '/user[/{id:\d+}]/{name}', 'handler'); +``` + +The `$handler` parameter does not necessarily have to be a callback, it could also be a controller +class name or any other kind of data you wish to associate with the route. FastRoute only tells you +which handler corresponds to your URI, how you interpret it is up to you. + +#### Shorcut methods for common request methods + +For the `GET`, `POST`, `PUT`, `PATCH`, `DELETE` and `HEAD` request methods shortcut methods are available. For example: + +```php +$r->get('/get-route', 'get_handler'); +$r->post('/post-route', 'post_handler'); +``` + +Is equivalent to: + +```php +$r->addRoute('GET', '/get-route', 'get_handler'); +$r->addRoute('POST', '/post-route', 'post_handler'); +``` + +#### Route Groups + +Additionally, you can specify routes inside of a group. All routes defined inside a group will have a common prefix. + +For example, defining your routes as: + +```php +$r->addGroup('/admin', function (RouteCollector $r) { + $r->addRoute('GET', '/do-something', 'handler'); + $r->addRoute('GET', '/do-another-thing', 'handler'); + $r->addRoute('GET', '/do-something-else', 'handler'); +}); +``` + +Will have the same result as: + + ```php +$r->addRoute('GET', '/admin/do-something', 'handler'); +$r->addRoute('GET', '/admin/do-another-thing', 'handler'); +$r->addRoute('GET', '/admin/do-something-else', 'handler'); + ``` + +Nested groups are also supported, in which case the prefixes of all the nested groups are combined. + +### Caching + +The reason `simpleDispatcher` accepts a callback for defining the routes is to allow seamless +caching. By using `cachedDispatcher` instead of `simpleDispatcher` you can cache the generated +routing data and construct the dispatcher from the cached information: + +```php +addRoute('GET', '/user/{name}/{id:[0-9]+}', 'handler0'); + $r->addRoute('GET', '/user/{id:[0-9]+}', 'handler1'); + $r->addRoute('GET', '/user/{name}', 'handler2'); +}, [ + 'cacheFile' => __DIR__ . '/route.cache', /* required */ + 'cacheDisabled' => IS_DEBUG_ENABLED, /* optional, enabled by default */ +]); +``` + +The second parameter to the function is an options array, which can be used to specify the cache +file location, among other things. + +### Dispatching a URI + +A URI is dispatched by calling the `dispatch()` method of the created dispatcher. This method +accepts the HTTP method and a URI. Getting those two bits of information (and normalizing them +appropriately) is your job - this library is not bound to the PHP web SAPIs. + +The `dispatch()` method returns an array whose first element contains a status code. It is one +of `Dispatcher::NOT_FOUND`, `Dispatcher::METHOD_NOT_ALLOWED` and `Dispatcher::FOUND`. For the +method not allowed status the second array element contains a list of HTTP methods allowed for +the supplied URI. For example: + + [FastRoute\Dispatcher::METHOD_NOT_ALLOWED, ['GET', 'POST']] + +> **NOTE:** The HTTP specification requires that a `405 Method Not Allowed` response include the +`Allow:` header to detail available methods for the requested resource. Applications using FastRoute +should use the second array element to add this header when relaying a 405 response. + +For the found status the second array element is the handler that was associated with the route +and the third array element is a dictionary of placeholder names to their values. For example: + + /* Routing against GET /user/nikic/42 */ + + [FastRoute\Dispatcher::FOUND, 'handler0', ['name' => 'nikic', 'id' => '42']] + +### Overriding the route parser and dispatcher + +The routing process makes use of three components: A route parser, a data generator and a +dispatcher. The three components adhere to the following interfaces: + +```php + 'FastRoute\\RouteParser\\Std', + 'dataGenerator' => 'FastRoute\\DataGenerator\\GroupCountBased', + 'dispatcher' => 'FastRoute\\Dispatcher\\GroupCountBased', +]); +``` + +The above options array corresponds to the defaults. By replacing `GroupCountBased` by +`GroupPosBased` you could switch to a different dispatching strategy. + +### A Note on HEAD Requests + +The HTTP spec requires servers to [support both GET and HEAD methods][2616-511]: + +> The methods GET and HEAD MUST be supported by all general-purpose servers + +To avoid forcing users to manually register HEAD routes for each resource we fallback to matching an +available GET route for a given resource. The PHP web SAPI transparently removes the entity body +from HEAD responses so this behavior has no effect on the vast majority of users. + +However, implementers using FastRoute outside the web SAPI environment (e.g. a custom server) MUST +NOT send entity bodies generated in response to HEAD requests. If you are a non-SAPI user this is +*your responsibility*; FastRoute has no purview to prevent you from breaking HTTP in such cases. + +Finally, note that applications MAY always specify their own HEAD method route for a given +resource to bypass this behavior entirely. + +### Credits + +This library is based on a router that [Levi Morrison][levi] implemented for the Aerys server. + +A large number of tests, as well as HTTP compliance considerations, were provided by [Daniel Lowrey][rdlowrey]. + + +[2616-511]: http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html#sec5.1.1 "RFC 2616 Section 5.1.1" +[blog_post]: http://nikic.github.io/2014/02/18/Fast-request-routing-using-regular-expressions.html +[levi]: https://github.com/morrisonlevi +[rdlowrey]: https://github.com/rdlowrey diff --git a/system/vendor/nikic/fast-route/composer.json b/system/vendor/nikic/fast-route/composer.json new file mode 100644 index 0000000..62aad22 --- /dev/null +++ b/system/vendor/nikic/fast-route/composer.json @@ -0,0 +1,21 @@ +{ + "name": "nikic/fast-route", + "description": "Fast request router for PHP", + "keywords": ["routing", "router"], + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Nikita Popov", + "email": "nikic@php.net" + } + ], + "require": { + "php": ">=5.4.0" + }, + "autoload": { + "psr-4": { + "FastRoute\\": "src/" + }, + "files": ["src/functions.php"] + } +} diff --git a/system/vendor/nikic/fast-route/phpunit.xml b/system/vendor/nikic/fast-route/phpunit.xml new file mode 100644 index 0000000..3c807b6 --- /dev/null +++ b/system/vendor/nikic/fast-route/phpunit.xml @@ -0,0 +1,24 @@ + + + + + + ./test/ + + + + + + ./src/ + + + diff --git a/system/vendor/nikic/fast-route/src/BadRouteException.php b/system/vendor/nikic/fast-route/src/BadRouteException.php new file mode 100644 index 0000000..7e38479 --- /dev/null +++ b/system/vendor/nikic/fast-route/src/BadRouteException.php @@ -0,0 +1,6 @@ + $route) { + $suffixLen++; + $suffix .= "\t"; + + $regexes[] = '(?:' . $regex . '/(\t{' . $suffixLen . '})\t{' . ($count - $suffixLen) . '})'; + $routeMap[$suffix] = [$route->handler, $route->variables]; + } + + $regex = '~^(?|' . implode('|', $regexes) . ')$~'; + return ['regex' => $regex, 'suffix' => '/' . $suffix, 'routeMap' => $routeMap]; + } +} diff --git a/system/vendor/nikic/fast-route/src/DataGenerator/GroupCountBased.php b/system/vendor/nikic/fast-route/src/DataGenerator/GroupCountBased.php new file mode 100644 index 0000000..d51807f --- /dev/null +++ b/system/vendor/nikic/fast-route/src/DataGenerator/GroupCountBased.php @@ -0,0 +1,28 @@ + $route) { + $numVariables = count($route->variables); + $numGroups = max($numGroups, $numVariables); + + $regexes[] = $regex . str_repeat('()', $numGroups - $numVariables); + $routeMap[$numGroups + 1] = [$route->handler, $route->variables]; + + ++$numGroups; + } + + $regex = '~^(?|' . implode('|', $regexes) . ')$~'; + return ['regex' => $regex, 'routeMap' => $routeMap]; + } +} + diff --git a/system/vendor/nikic/fast-route/src/DataGenerator/GroupPosBased.php b/system/vendor/nikic/fast-route/src/DataGenerator/GroupPosBased.php new file mode 100644 index 0000000..4152f7a --- /dev/null +++ b/system/vendor/nikic/fast-route/src/DataGenerator/GroupPosBased.php @@ -0,0 +1,25 @@ + $route) { + $regexes[] = $regex; + $routeMap[$offset] = [$route->handler, $route->variables]; + + $offset += count($route->variables); + } + + $regex = '~^(?:' . implode('|', $regexes) . ')$~'; + return ['regex' => $regex, 'routeMap' => $routeMap]; + } +} + diff --git a/system/vendor/nikic/fast-route/src/DataGenerator/MarkBased.php b/system/vendor/nikic/fast-route/src/DataGenerator/MarkBased.php new file mode 100644 index 0000000..61359f5 --- /dev/null +++ b/system/vendor/nikic/fast-route/src/DataGenerator/MarkBased.php @@ -0,0 +1,25 @@ + $route) { + $regexes[] = $regex . '(*MARK:' . $markName . ')'; + $routeMap[$markName] = [$route->handler, $route->variables]; + + ++$markName; + } + + $regex = '~^(?|' . implode('|', $regexes) . ')$~'; + return ['regex' => $regex, 'routeMap' => $routeMap]; + } +} + diff --git a/system/vendor/nikic/fast-route/src/DataGenerator/RegexBasedAbstract.php b/system/vendor/nikic/fast-route/src/DataGenerator/RegexBasedAbstract.php new file mode 100644 index 0000000..713d897 --- /dev/null +++ b/system/vendor/nikic/fast-route/src/DataGenerator/RegexBasedAbstract.php @@ -0,0 +1,144 @@ +isStaticRoute($routeData)) { + $this->addStaticRoute($httpMethod, $routeData, $handler); + } else { + $this->addVariableRoute($httpMethod, $routeData, $handler); + } + } + + public function getData() { + if (empty($this->methodToRegexToRoutesMap)) { + return [$this->staticRoutes, []]; + } + + return [$this->staticRoutes, $this->generateVariableRouteData()]; + } + + private function generateVariableRouteData() { + $data = []; + foreach ($this->methodToRegexToRoutesMap as $method => $regexToRoutesMap) { + $chunkSize = $this->computeChunkSize(count($regexToRoutesMap)); + $chunks = array_chunk($regexToRoutesMap, $chunkSize, true); + $data[$method] = array_map([$this, 'processChunk'], $chunks); + } + return $data; + } + + private function computeChunkSize($count) { + $numParts = max(1, round($count / $this->getApproxChunkSize())); + return ceil($count / $numParts); + } + + private function isStaticRoute($routeData) { + return count($routeData) === 1 && is_string($routeData[0]); + } + + private function addStaticRoute($httpMethod, $routeData, $handler) { + $routeStr = $routeData[0]; + + if (isset($this->staticRoutes[$httpMethod][$routeStr])) { + throw new BadRouteException(sprintf( + 'Cannot register two routes matching "%s" for method "%s"', + $routeStr, $httpMethod + )); + } + + if (isset($this->methodToRegexToRoutesMap[$httpMethod])) { + foreach ($this->methodToRegexToRoutesMap[$httpMethod] as $route) { + if ($route->matches($routeStr)) { + throw new BadRouteException(sprintf( + 'Static route "%s" is shadowed by previously defined variable route "%s" for method "%s"', + $routeStr, $route->regex, $httpMethod + )); + } + } + } + + $this->staticRoutes[$httpMethod][$routeStr] = $handler; + } + + private function addVariableRoute($httpMethod, $routeData, $handler) { + list($regex, $variables) = $this->buildRegexForRoute($routeData); + + if (isset($this->methodToRegexToRoutesMap[$httpMethod][$regex])) { + throw new BadRouteException(sprintf( + 'Cannot register two routes matching "%s" for method "%s"', + $regex, $httpMethod + )); + } + + $this->methodToRegexToRoutesMap[$httpMethod][$regex] = new Route( + $httpMethod, $handler, $regex, $variables + ); + } + + private function buildRegexForRoute($routeData) { + $regex = ''; + $variables = []; + foreach ($routeData as $part) { + if (is_string($part)) { + $regex .= preg_quote($part, '~'); + continue; + } + + list($varName, $regexPart) = $part; + + if (isset($variables[$varName])) { + throw new BadRouteException(sprintf( + 'Cannot use the same placeholder "%s" twice', $varName + )); + } + + if ($this->regexHasCapturingGroups($regexPart)) { + throw new BadRouteException(sprintf( + 'Regex "%s" for parameter "%s" contains a capturing group', + $regexPart, $varName + )); + } + + $variables[$varName] = $varName; + $regex .= '(' . $regexPart . ')'; + } + + return [$regex, $variables]; + } + + private function regexHasCapturingGroups($regex) { + if (false === strpos($regex, '(')) { + // Needs to have at least a ( to contain a capturing group + return false; + } + + // Semi-accurate detection for capturing groups + return preg_match( + '~ + (?: + \(\?\( + | \[ [^\]\\\\]* (?: \\\\ . [^\]\\\\]* )* \] + | \\\\ . + ) (*SKIP)(*FAIL) | + \( + (?! + \? (?! <(?![!=]) | P< | \' ) + | \* + ) + ~x', + $regex + ); + } +} diff --git a/system/vendor/nikic/fast-route/src/Dispatcher.php b/system/vendor/nikic/fast-route/src/Dispatcher.php new file mode 100644 index 0000000..ea98009 --- /dev/null +++ b/system/vendor/nikic/fast-route/src/Dispatcher.php @@ -0,0 +1,25 @@ + 'value', ...]] + * + * @param string $httpMethod + * @param string $uri + * + * @return array + */ + public function dispatch($httpMethod, $uri); +} diff --git a/system/vendor/nikic/fast-route/src/Dispatcher/CharCountBased.php b/system/vendor/nikic/fast-route/src/Dispatcher/CharCountBased.php new file mode 100644 index 0000000..22ba240 --- /dev/null +++ b/system/vendor/nikic/fast-route/src/Dispatcher/CharCountBased.php @@ -0,0 +1,28 @@ +staticRouteMap, $this->variableRouteData) = $data; + } + + protected function dispatchVariableRoute($routeData, $uri) { + foreach ($routeData as $data) { + if (!preg_match($data['regex'], $uri . $data['suffix'], $matches)) { + continue; + } + + list($handler, $varNames) = $data['routeMap'][end($matches)]; + + $vars = []; + $i = 0; + foreach ($varNames as $varName) { + $vars[$varName] = $matches[++$i]; + } + return [self::FOUND, $handler, $vars]; + } + + return [self::NOT_FOUND]; + } +} diff --git a/system/vendor/nikic/fast-route/src/Dispatcher/GroupCountBased.php b/system/vendor/nikic/fast-route/src/Dispatcher/GroupCountBased.php new file mode 100644 index 0000000..0abd322 --- /dev/null +++ b/system/vendor/nikic/fast-route/src/Dispatcher/GroupCountBased.php @@ -0,0 +1,28 @@ +staticRouteMap, $this->variableRouteData) = $data; + } + + protected function dispatchVariableRoute($routeData, $uri) { + foreach ($routeData as $data) { + if (!preg_match($data['regex'], $uri, $matches)) { + continue; + } + + list($handler, $varNames) = $data['routeMap'][count($matches)]; + + $vars = []; + $i = 0; + foreach ($varNames as $varName) { + $vars[$varName] = $matches[++$i]; + } + return [self::FOUND, $handler, $vars]; + } + + return [self::NOT_FOUND]; + } +} diff --git a/system/vendor/nikic/fast-route/src/Dispatcher/GroupPosBased.php b/system/vendor/nikic/fast-route/src/Dispatcher/GroupPosBased.php new file mode 100644 index 0000000..32227d4 --- /dev/null +++ b/system/vendor/nikic/fast-route/src/Dispatcher/GroupPosBased.php @@ -0,0 +1,30 @@ +staticRouteMap, $this->variableRouteData) = $data; + } + + protected function dispatchVariableRoute($routeData, $uri) { + foreach ($routeData as $data) { + if (!preg_match($data['regex'], $uri, $matches)) { + continue; + } + + // find first non-empty match + for ($i = 1; '' === $matches[$i]; ++$i); + + list($handler, $varNames) = $data['routeMap'][$i]; + + $vars = []; + foreach ($varNames as $varName) { + $vars[$varName] = $matches[$i++]; + } + return [self::FOUND, $handler, $vars]; + } + + return [self::NOT_FOUND]; + } +} diff --git a/system/vendor/nikic/fast-route/src/Dispatcher/MarkBased.php b/system/vendor/nikic/fast-route/src/Dispatcher/MarkBased.php new file mode 100644 index 0000000..fefa711 --- /dev/null +++ b/system/vendor/nikic/fast-route/src/Dispatcher/MarkBased.php @@ -0,0 +1,28 @@ +staticRouteMap, $this->variableRouteData) = $data; + } + + protected function dispatchVariableRoute($routeData, $uri) { + foreach ($routeData as $data) { + if (!preg_match($data['regex'], $uri, $matches)) { + continue; + } + + list($handler, $varNames) = $data['routeMap'][$matches['MARK']]; + + $vars = []; + $i = 0; + foreach ($varNames as $varName) { + $vars[$varName] = $matches[++$i]; + } + return [self::FOUND, $handler, $vars]; + } + + return [self::NOT_FOUND]; + } +} diff --git a/system/vendor/nikic/fast-route/src/Dispatcher/RegexBasedAbstract.php b/system/vendor/nikic/fast-route/src/Dispatcher/RegexBasedAbstract.php new file mode 100644 index 0000000..8823b9b --- /dev/null +++ b/system/vendor/nikic/fast-route/src/Dispatcher/RegexBasedAbstract.php @@ -0,0 +1,80 @@ +staticRouteMap[$httpMethod][$uri])) { + $handler = $this->staticRouteMap[$httpMethod][$uri]; + return [self::FOUND, $handler, []]; + } + + $varRouteData = $this->variableRouteData; + if (isset($varRouteData[$httpMethod])) { + $result = $this->dispatchVariableRoute($varRouteData[$httpMethod], $uri); + if ($result[0] === self::FOUND) { + return $result; + } + } + + // For HEAD requests, attempt fallback to GET + if ($httpMethod === 'HEAD') { + if (isset($this->staticRouteMap['GET'][$uri])) { + $handler = $this->staticRouteMap['GET'][$uri]; + return [self::FOUND, $handler, []]; + } + if (isset($varRouteData['GET'])) { + $result = $this->dispatchVariableRoute($varRouteData['GET'], $uri); + if ($result[0] === self::FOUND) { + return $result; + } + } + } + + // If nothing else matches, try fallback routes + if (isset($this->staticRouteMap['*'][$uri])) { + $handler = $this->staticRouteMap['*'][$uri]; + return [self::FOUND, $handler, []]; + } + if (isset($varRouteData['*'])) { + $result = $this->dispatchVariableRoute($varRouteData['*'], $uri); + if ($result[0] === self::FOUND) { + return $result; + } + } + + // Find allowed methods for this URI by matching against all other HTTP methods as well + $allowedMethods = []; + + foreach ($this->staticRouteMap as $method => $uriMap) { + if ($method !== $httpMethod && isset($uriMap[$uri])) { + $allowedMethods[] = $method; + } + } + + foreach ($varRouteData as $method => $routeData) { + if ($method === $httpMethod) { + continue; + } + + $result = $this->dispatchVariableRoute($routeData, $uri); + if ($result[0] === self::FOUND) { + $allowedMethods[] = $method; + } + } + + // If there are no allowed methods the route simply does not exist + if ($allowedMethods) { + return [self::METHOD_NOT_ALLOWED, $allowedMethods]; + } else { + return [self::NOT_FOUND]; + } + } +} diff --git a/system/vendor/nikic/fast-route/src/Route.php b/system/vendor/nikic/fast-route/src/Route.php new file mode 100644 index 0000000..d71ded1 --- /dev/null +++ b/system/vendor/nikic/fast-route/src/Route.php @@ -0,0 +1,38 @@ +httpMethod = $httpMethod; + $this->handler = $handler; + $this->regex = $regex; + $this->variables = $variables; + } + + /** + * Tests whether this route matches the given string. + * + * @param string $str + * + * @return bool + */ + public function matches($str) { + $regex = '~^' . $this->regex . '$~'; + return (bool) preg_match($regex, $str); + } +} + diff --git a/system/vendor/nikic/fast-route/src/RouteCollector.php b/system/vendor/nikic/fast-route/src/RouteCollector.php new file mode 100644 index 0000000..7d7667b --- /dev/null +++ b/system/vendor/nikic/fast-route/src/RouteCollector.php @@ -0,0 +1,136 @@ +routeParser = $routeParser; + $this->dataGenerator = $dataGenerator; + $this->currentGroupPrefix = ''; + } + + /** + * Adds a route to the collection. + * + * The syntax used in the $route string depends on the used route parser. + * + * @param string|string[] $httpMethod + * @param string $route + * @param mixed $handler + */ + public function addRoute($httpMethod, $route, $handler) { + $route = $this->currentGroupPrefix . $route; + $routeDatas = $this->routeParser->parse($route); + foreach ((array) $httpMethod as $method) { + foreach ($routeDatas as $routeData) { + $this->dataGenerator->addRoute($method, $routeData, $handler); + } + } + } + + /** + * Create a route group with a common prefix. + * + * All routes created in the passed callback will have the given group prefix prepended. + * + * @param string $prefix + * @param callable $callback + */ + public function addGroup($prefix, callable $callback) { + $previousGroupPrefix = $this->currentGroupPrefix; + $this->currentGroupPrefix = $previousGroupPrefix . $prefix; + $callback($this); + $this->currentGroupPrefix = $previousGroupPrefix; + } + + /** + * Adds a GET route to the collection + * + * This is simply an alias of $this->addRoute('GET', $route, $handler) + * + * @param string $route + * @param mixed $handler + */ + public function get($route, $handler) { + $this->addRoute('GET', $route, $handler); + } + + /** + * Adds a POST route to the collection + * + * This is simply an alias of $this->addRoute('POST', $route, $handler) + * + * @param string $route + * @param mixed $handler + */ + public function post($route, $handler) { + $this->addRoute('POST', $route, $handler); + } + + /** + * Adds a PUT route to the collection + * + * This is simply an alias of $this->addRoute('PUT', $route, $handler) + * + * @param string $route + * @param mixed $handler + */ + public function put($route, $handler) { + $this->addRoute('PUT', $route, $handler); + } + + /** + * Adds a DELETE route to the collection + * + * This is simply an alias of $this->addRoute('DELETE', $route, $handler) + * + * @param string $route + * @param mixed $handler + */ + public function delete($route, $handler) { + $this->addRoute('DELETE', $route, $handler); + } + + /** + * Adds a PATCH route to the collection + * + * This is simply an alias of $this->addRoute('PATCH', $route, $handler) + * + * @param string $route + * @param mixed $handler + */ + public function patch($route, $handler) { + $this->addRoute('PATCH', $route, $handler); + } + + /** + * Adds a HEAD route to the collection + * + * This is simply an alias of $this->addRoute('HEAD', $route, $handler) + * + * @param string $route + * @param mixed $handler + */ + public function head($route, $handler) { + $this->addRoute('HEAD', $route, $handler); + } + + /** + * Returns the collected route data, as provided by the data generator. + * + * @return array + */ + public function getData() { + return $this->dataGenerator->getData(); + } +} diff --git a/system/vendor/nikic/fast-route/src/RouteParser.php b/system/vendor/nikic/fast-route/src/RouteParser.php new file mode 100644 index 0000000..c089c31 --- /dev/null +++ b/system/vendor/nikic/fast-route/src/RouteParser.php @@ -0,0 +1,36 @@ + $segment) { + if ($segment === '' && $n !== 0) { + throw new BadRouteException("Empty optional part"); + } + + $currentRoute .= $segment; + $routeDatas[] = $this->parsePlaceholders($currentRoute); + } + return $routeDatas; + } + + /** + * Parses a route string that does not contain optional segments. + */ + private function parsePlaceholders($route) { + if (!preg_match_all( + '~' . self::VARIABLE_REGEX . '~x', $route, $matches, + PREG_OFFSET_CAPTURE | PREG_SET_ORDER + )) { + return [$route]; + } + + $offset = 0; + $routeData = []; + foreach ($matches as $set) { + if ($set[0][1] > $offset) { + $routeData[] = substr($route, $offset, $set[0][1] - $offset); + } + $routeData[] = [ + $set[1][0], + isset($set[2]) ? trim($set[2][0]) : self::DEFAULT_DISPATCH_REGEX + ]; + $offset = $set[0][1] + strlen($set[0][0]); + } + + if ($offset != strlen($route)) { + $routeData[] = substr($route, $offset); + } + + return $routeData; + } +} diff --git a/system/vendor/nikic/fast-route/src/bootstrap.php b/system/vendor/nikic/fast-route/src/bootstrap.php new file mode 100644 index 0000000..add216c --- /dev/null +++ b/system/vendor/nikic/fast-route/src/bootstrap.php @@ -0,0 +1,12 @@ + 'FastRoute\\RouteParser\\Std', + 'dataGenerator' => 'FastRoute\\DataGenerator\\GroupCountBased', + 'dispatcher' => 'FastRoute\\Dispatcher\\GroupCountBased', + 'routeCollector' => 'FastRoute\\RouteCollector', + ]; + + /** @var RouteCollector $routeCollector */ + $routeCollector = new $options['routeCollector']( + new $options['routeParser'], new $options['dataGenerator'] + ); + $routeDefinitionCallback($routeCollector); + + return new $options['dispatcher']($routeCollector->getData()); + } + + /** + * @param callable $routeDefinitionCallback + * @param array $options + * + * @return Dispatcher + */ + function cachedDispatcher(callable $routeDefinitionCallback, array $options = []) { + $options += [ + 'routeParser' => 'FastRoute\\RouteParser\\Std', + 'dataGenerator' => 'FastRoute\\DataGenerator\\GroupCountBased', + 'dispatcher' => 'FastRoute\\Dispatcher\\GroupCountBased', + 'routeCollector' => 'FastRoute\\RouteCollector', + 'cacheDisabled' => false, + ]; + + if (!isset($options['cacheFile'])) { + throw new \LogicException('Must specify "cacheFile" option'); + } + + if (!$options['cacheDisabled'] && file_exists($options['cacheFile'])) { + $dispatchData = require $options['cacheFile']; + if (!is_array($dispatchData)) { + throw new \RuntimeException('Invalid cache file "' . $options['cacheFile'] . '"'); + } + return new $options['dispatcher']($dispatchData); + } + + $routeCollector = new $options['routeCollector']( + new $options['routeParser'], new $options['dataGenerator'] + ); + $routeDefinitionCallback($routeCollector); + + /** @var RouteCollector $routeCollector */ + $dispatchData = $routeCollector->getData(); + if (!$options['cacheDisabled']) { + file_put_contents( + $options['cacheFile'], + ' $this->getDataGeneratorClass(), + 'dispatcher' => $this->getDispatcherClass() + ]; + } + + /** + * @dataProvider provideFoundDispatchCases + */ + public function testFoundDispatches($method, $uri, $callback, $handler, $argDict) { + $dispatcher = \FastRoute\simpleDispatcher($callback, $this->generateDispatcherOptions()); + $info = $dispatcher->dispatch($method, $uri); + $this->assertSame($dispatcher::FOUND, $info[0]); + $this->assertSame($handler, $info[1]); + $this->assertSame($argDict, $info[2]); + } + + /** + * @dataProvider provideNotFoundDispatchCases + */ + public function testNotFoundDispatches($method, $uri, $callback) { + $dispatcher = \FastRoute\simpleDispatcher($callback, $this->generateDispatcherOptions()); + $routeInfo = $dispatcher->dispatch($method, $uri); + $this->assertFalse(isset($routeInfo[1]), + "NOT_FOUND result must only contain a single element in the returned info array" + ); + $this->assertSame($dispatcher::NOT_FOUND, $routeInfo[0]); + } + + /** + * @dataProvider provideMethodNotAllowedDispatchCases + */ + public function testMethodNotAllowedDispatches($method, $uri, $callback, $availableMethods) { + $dispatcher = \FastRoute\simpleDispatcher($callback, $this->generateDispatcherOptions()); + $routeInfo = $dispatcher->dispatch($method, $uri); + $this->assertTrue(isset($routeInfo[1]), + "METHOD_NOT_ALLOWED result must return an array of allowed methods at index 1" + ); + + list($routedStatus, $methodArray) = $dispatcher->dispatch($method, $uri); + $this->assertSame($dispatcher::METHOD_NOT_ALLOWED, $routedStatus); + $this->assertSame($availableMethods, $methodArray); + } + + /** + * @expectedException \FastRoute\BadRouteException + * @expectedExceptionMessage Cannot use the same placeholder "test" twice + */ + public function testDuplicateVariableNameError() { + \FastRoute\simpleDispatcher(function(RouteCollector $r) { + $r->addRoute('GET', '/foo/{test}/{test:\d+}', 'handler0'); + }, $this->generateDispatcherOptions()); + } + + /** + * @expectedException \FastRoute\BadRouteException + * @expectedExceptionMessage Cannot register two routes matching "/user/([^/]+)" for method "GET" + */ + public function testDuplicateVariableRoute() { + \FastRoute\simpleDispatcher(function(RouteCollector $r) { + $r->addRoute('GET', '/user/{id}', 'handler0'); // oops, forgot \d+ restriction ;) + $r->addRoute('GET', '/user/{name}', 'handler1'); + }, $this->generateDispatcherOptions()); + } + + /** + * @expectedException \FastRoute\BadRouteException + * @expectedExceptionMessage Cannot register two routes matching "/user" for method "GET" + */ + public function testDuplicateStaticRoute() { + \FastRoute\simpleDispatcher(function(RouteCollector $r) { + $r->addRoute('GET', '/user', 'handler0'); + $r->addRoute('GET', '/user', 'handler1'); + }, $this->generateDispatcherOptions()); + } + + /** + * @expectedException \FastRoute\BadRouteException + * @expectedExceptionMessage Static route "/user/nikic" is shadowed by previously defined variable route "/user/([^/]+)" for method "GET" + */ + public function testShadowedStaticRoute() { + \FastRoute\simpleDispatcher(function(RouteCollector $r) { + $r->addRoute('GET', '/user/{name}', 'handler0'); + $r->addRoute('GET', '/user/nikic', 'handler1'); + }, $this->generateDispatcherOptions()); + } + + /** + * @expectedException \FastRoute\BadRouteException + * @expectedExceptionMessage Regex "(en|de)" for parameter "lang" contains a capturing group + */ + public function testCapturing() { + \FastRoute\simpleDispatcher(function(RouteCollector $r) { + $r->addRoute('GET', '/{lang:(en|de)}', 'handler0'); + }, $this->generateDispatcherOptions()); + } + + public function provideFoundDispatchCases() { + $cases = []; + + // 0 --------------------------------------------------------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/resource/123/456', 'handler0'); + }; + + $method = 'GET'; + $uri = '/resource/123/456'; + $handler = 'handler0'; + $argDict = []; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 1 --------------------------------------------------------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/handler0', 'handler0'); + $r->addRoute('GET', '/handler1', 'handler1'); + $r->addRoute('GET', '/handler2', 'handler2'); + }; + + $method = 'GET'; + $uri = '/handler2'; + $handler = 'handler2'; + $argDict = []; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 2 --------------------------------------------------------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/user/{name}/{id:[0-9]+}', 'handler0'); + $r->addRoute('GET', '/user/{id:[0-9]+}', 'handler1'); + $r->addRoute('GET', '/user/{name}', 'handler2'); + }; + + $method = 'GET'; + $uri = '/user/rdlowrey'; + $handler = 'handler2'; + $argDict = ['name' => 'rdlowrey']; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 3 --------------------------------------------------------------------------------------> + + // reuse $callback from #2 + + $method = 'GET'; + $uri = '/user/12345'; + $handler = 'handler1'; + $argDict = ['id' => '12345']; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 4 --------------------------------------------------------------------------------------> + + // reuse $callback from #3 + + $method = 'GET'; + $uri = '/user/NaN'; + $handler = 'handler2'; + $argDict = ['name' => 'NaN']; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 5 --------------------------------------------------------------------------------------> + + // reuse $callback from #4 + + $method = 'GET'; + $uri = '/user/rdlowrey/12345'; + $handler = 'handler0'; + $argDict = ['name' => 'rdlowrey', 'id' => '12345']; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 6 --------------------------------------------------------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/user/{id:[0-9]+}', 'handler0'); + $r->addRoute('GET', '/user/12345/extension', 'handler1'); + $r->addRoute('GET', '/user/{id:[0-9]+}.{extension}', 'handler2'); + + }; + + $method = 'GET'; + $uri = '/user/12345.svg'; + $handler = 'handler2'; + $argDict = ['id' => '12345', 'extension' => 'svg']; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 7 ----- Test GET method fallback on HEAD route miss ------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/user/{name}', 'handler0'); + $r->addRoute('GET', '/user/{name}/{id:[0-9]+}', 'handler1'); + $r->addRoute('GET', '/static0', 'handler2'); + $r->addRoute('GET', '/static1', 'handler3'); + $r->addRoute('HEAD', '/static1', 'handler4'); + }; + + $method = 'HEAD'; + $uri = '/user/rdlowrey'; + $handler = 'handler0'; + $argDict = ['name' => 'rdlowrey']; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 8 ----- Test GET method fallback on HEAD route miss ------------------------------------> + + // reuse $callback from #7 + + $method = 'HEAD'; + $uri = '/user/rdlowrey/1234'; + $handler = 'handler1'; + $argDict = ['name' => 'rdlowrey', 'id' => '1234']; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 9 ----- Test GET method fallback on HEAD route miss ------------------------------------> + + // reuse $callback from #8 + + $method = 'HEAD'; + $uri = '/static0'; + $handler = 'handler2'; + $argDict = []; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 10 ---- Test existing HEAD route used if available (no fallback) -----------------------> + + // reuse $callback from #9 + + $method = 'HEAD'; + $uri = '/static1'; + $handler = 'handler4'; + $argDict = []; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 11 ---- More specified routes are not shadowed by less specific of another method ------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/user/{name}', 'handler0'); + $r->addRoute('POST', '/user/{name:[a-z]+}', 'handler1'); + }; + + $method = 'POST'; + $uri = '/user/rdlowrey'; + $handler = 'handler1'; + $argDict = ['name' => 'rdlowrey']; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 12 ---- Handler of more specific routes is used, if it occurs first --------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/user/{name}', 'handler0'); + $r->addRoute('POST', '/user/{name:[a-z]+}', 'handler1'); + $r->addRoute('POST', '/user/{name}', 'handler2'); + }; + + $method = 'POST'; + $uri = '/user/rdlowrey'; + $handler = 'handler1'; + $argDict = ['name' => 'rdlowrey']; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 13 ---- Route with constant suffix -----------------------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/user/{name}', 'handler0'); + $r->addRoute('GET', '/user/{name}/edit', 'handler1'); + }; + + $method = 'GET'; + $uri = '/user/rdlowrey/edit'; + $handler = 'handler1'; + $argDict = ['name' => 'rdlowrey']; + + $cases[] = [$method, $uri, $callback, $handler, $argDict]; + + // 14 ---- Handle multiple methods with the same handler ----------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute(['GET', 'POST'], '/user', 'handlerGetPost'); + $r->addRoute(['DELETE'], '/user', 'handlerDelete'); + $r->addRoute([], '/user', 'handlerNone'); + }; + + $argDict = []; + $cases[] = ['GET', '/user', $callback, 'handlerGetPost', $argDict]; + $cases[] = ['POST', '/user', $callback, 'handlerGetPost', $argDict]; + $cases[] = ['DELETE', '/user', $callback, 'handlerDelete', $argDict]; + + // 15 ---- + + $callback = function(RouteCollector $r) { + $r->addRoute('POST', '/user.json', 'handler0'); + $r->addRoute('GET', '/{entity}.json', 'handler1'); + }; + + $cases[] = ['GET', '/user.json', $callback, 'handler1', ['entity' => 'user']]; + + // 16 ---- + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '', 'handler0'); + }; + + $cases[] = ['GET', '', $callback, 'handler0', []]; + + // 17 ---- + + $callback = function(RouteCollector $r) { + $r->addRoute('HEAD', '/a/{foo}', 'handler0'); + $r->addRoute('GET', '/b/{foo}', 'handler1'); + }; + + $cases[] = ['HEAD', '/b/bar', $callback, 'handler1', ['foo' => 'bar']]; + + // 18 ---- + + $callback = function(RouteCollector $r) { + $r->addRoute('HEAD', '/a', 'handler0'); + $r->addRoute('GET', '/b', 'handler1'); + }; + + $cases[] = ['HEAD', '/b', $callback, 'handler1', []]; + + // 19 ---- + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/foo', 'handler0'); + $r->addRoute('HEAD', '/{bar}', 'handler1'); + }; + + $cases[] = ['HEAD', '/foo', $callback, 'handler1', ['bar' => 'foo']]; + + // 20 ---- + + $callback = function(RouteCollector $r) { + $r->addRoute('*', '/user', 'handler0'); + $r->addRoute('*', '/{user}', 'handler1'); + $r->addRoute('GET', '/user', 'handler2'); + }; + + $cases[] = ['GET', '/user', $callback, 'handler2', []]; + + // 21 ---- + + $callback = function(RouteCollector $r) { + $r->addRoute('*', '/user', 'handler0'); + $r->addRoute('GET', '/user', 'handler1'); + }; + + $cases[] = ['POST', '/user', $callback, 'handler0', []]; + + // 22 ---- + + $cases[] = ['HEAD', '/user', $callback, 'handler1', []]; + + // 23 ---- + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/{bar}', 'handler0'); + $r->addRoute('*', '/foo', 'handler1'); + }; + + $cases[] = ['GET', '/foo', $callback, 'handler0', ['bar' => 'foo']]; + + // x --------------------------------------------------------------------------------------> + + return $cases; + } + + public function provideNotFoundDispatchCases() { + $cases = []; + + // 0 --------------------------------------------------------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/resource/123/456', 'handler0'); + }; + + $method = 'GET'; + $uri = '/not-found'; + + $cases[] = [$method, $uri, $callback]; + + // 1 --------------------------------------------------------------------------------------> + + // reuse callback from #0 + $method = 'POST'; + $uri = '/not-found'; + + $cases[] = [$method, $uri, $callback]; + + // 2 --------------------------------------------------------------------------------------> + + // reuse callback from #1 + $method = 'PUT'; + $uri = '/not-found'; + + $cases[] = [$method, $uri, $callback]; + + // 3 --------------------------------------------------------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/handler0', 'handler0'); + $r->addRoute('GET', '/handler1', 'handler1'); + $r->addRoute('GET', '/handler2', 'handler2'); + }; + + $method = 'GET'; + $uri = '/not-found'; + + $cases[] = [$method, $uri, $callback]; + + // 4 --------------------------------------------------------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/user/{name}/{id:[0-9]+}', 'handler0'); + $r->addRoute('GET', '/user/{id:[0-9]+}', 'handler1'); + $r->addRoute('GET', '/user/{name}', 'handler2'); + }; + + $method = 'GET'; + $uri = '/not-found'; + + $cases[] = [$method, $uri, $callback]; + + // 5 --------------------------------------------------------------------------------------> + + // reuse callback from #4 + $method = 'GET'; + $uri = '/user/rdlowrey/12345/not-found'; + + $cases[] = [$method, $uri, $callback]; + + // 6 --------------------------------------------------------------------------------------> + + // reuse callback from #5 + $method = 'HEAD'; + + $cases[] = array($method, $uri, $callback); + + // x --------------------------------------------------------------------------------------> + + return $cases; + } + + public function provideMethodNotAllowedDispatchCases() { + $cases = []; + + // 0 --------------------------------------------------------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/resource/123/456', 'handler0'); + }; + + $method = 'POST'; + $uri = '/resource/123/456'; + $allowedMethods = ['GET']; + + $cases[] = [$method, $uri, $callback, $allowedMethods]; + + // 1 --------------------------------------------------------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/resource/123/456', 'handler0'); + $r->addRoute('POST', '/resource/123/456', 'handler1'); + $r->addRoute('PUT', '/resource/123/456', 'handler2'); + $r->addRoute('*', '/', 'handler3'); + }; + + $method = 'DELETE'; + $uri = '/resource/123/456'; + $allowedMethods = ['GET', 'POST', 'PUT']; + + $cases[] = [$method, $uri, $callback, $allowedMethods]; + + // 2 --------------------------------------------------------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('GET', '/user/{name}/{id:[0-9]+}', 'handler0'); + $r->addRoute('POST', '/user/{name}/{id:[0-9]+}', 'handler1'); + $r->addRoute('PUT', '/user/{name}/{id:[0-9]+}', 'handler2'); + $r->addRoute('PATCH', '/user/{name}/{id:[0-9]+}', 'handler3'); + }; + + $method = 'DELETE'; + $uri = '/user/rdlowrey/42'; + $allowedMethods = ['GET', 'POST', 'PUT', 'PATCH']; + + $cases[] = [$method, $uri, $callback, $allowedMethods]; + + // 3 --------------------------------------------------------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute('POST', '/user/{name}', 'handler1'); + $r->addRoute('PUT', '/user/{name:[a-z]+}', 'handler2'); + $r->addRoute('PATCH', '/user/{name:[a-z]+}', 'handler3'); + }; + + $method = 'GET'; + $uri = '/user/rdlowrey'; + $allowedMethods = ['POST', 'PUT', 'PATCH']; + + $cases[] = [$method, $uri, $callback, $allowedMethods]; + + // 4 --------------------------------------------------------------------------------------> + + $callback = function(RouteCollector $r) { + $r->addRoute(['GET', 'POST'], '/user', 'handlerGetPost'); + $r->addRoute(['DELETE'], '/user', 'handlerDelete'); + $r->addRoute([], '/user', 'handlerNone'); + }; + + $cases[] = ['PUT', '/user', $callback, ['GET', 'POST', 'DELETE']]; + + // 5 + + $callback = function(RouteCollector $r) { + $r->addRoute('POST', '/user.json', 'handler0'); + $r->addRoute('GET', '/{entity}.json', 'handler1'); + }; + + $cases[] = ['PUT', '/user.json', $callback, ['POST', 'GET']]; + + // x --------------------------------------------------------------------------------------> + + return $cases; + } + +} diff --git a/system/vendor/nikic/fast-route/test/Dispatcher/GroupCountBasedTest.php b/system/vendor/nikic/fast-route/test/Dispatcher/GroupCountBasedTest.php new file mode 100644 index 0000000..74820fc --- /dev/null +++ b/system/vendor/nikic/fast-route/test/Dispatcher/GroupCountBasedTest.php @@ -0,0 +1,13 @@ +markTestSkipped('PHP 5.6 required for MARK support'); + } + } + + protected function getDispatcherClass() { + return 'FastRoute\\Dispatcher\\MarkBased'; + } + + protected function getDataGeneratorClass() { + return 'FastRoute\\DataGenerator\\MarkBased'; + } +} diff --git a/system/vendor/nikic/fast-route/test/HackTypechecker/HackTypecheckerTest.php b/system/vendor/nikic/fast-route/test/HackTypechecker/HackTypecheckerTest.php new file mode 100644 index 0000000..7bc6ebb --- /dev/null +++ b/system/vendor/nikic/fast-route/test/HackTypechecker/HackTypecheckerTest.php @@ -0,0 +1,39 @@ +markTestSkipped("HHVM only"); + } + if (!version_compare(HHVM_VERSION, '3.9.0', '>=')) { + $this->markTestSkipped('classname requires HHVM 3.9+'); + } + + // The typechecker recurses the whole tree, so it makes sure + // that everything in fixtures/ is valid when this runs. + + $output = array(); + $exit_code = null; + exec( + 'hh_server --check '.escapeshellarg(__DIR__.'/../../').' 2>&1', + $output, + $exit_code + ); + if ($exit_code === self::SERVER_ALREADY_RUNNING_CODE) { + $this->assertTrue( + $recurse, + "Typechecker still running after running hh_client stop" + ); + // Server already running - 3.10 => 3.11 regression: + // https://github.com/facebook/hhvm/issues/6646 + exec('hh_client stop 2>/dev/null'); + $this->testTypechecks(/* recurse = */ false); + return; + + } + $this->assertSame(0, $exit_code, implode("\n", $output)); + } +} diff --git a/system/vendor/nikic/fast-route/test/HackTypechecker/fixtures/all_options.php b/system/vendor/nikic/fast-route/test/HackTypechecker/fixtures/all_options.php new file mode 100644 index 0000000..05a9af2 --- /dev/null +++ b/system/vendor/nikic/fast-route/test/HackTypechecker/fixtures/all_options.php @@ -0,0 +1,29 @@ + {}, + shape( + 'routeParser' => \FastRoute\RouteParser\Std::class, + 'dataGenerator' => \FastRoute\DataGenerator\GroupCountBased::class, + 'dispatcher' => \FastRoute\Dispatcher\GroupCountBased::class, + 'routeCollector' => \FastRoute\RouteCollector::class, + ), + ); +} + +function all_options_cached(): \FastRoute\Dispatcher { + return \FastRoute\cachedDispatcher( + $collector ==> {}, + shape( + 'routeParser' => \FastRoute\RouteParser\Std::class, + 'dataGenerator' => \FastRoute\DataGenerator\GroupCountBased::class, + 'dispatcher' => \FastRoute\Dispatcher\GroupCountBased::class, + 'routeCollector' => \FastRoute\RouteCollector::class, + 'cacheFile' => '/dev/null', + 'cacheDisabled' => false, + ), + ); +} diff --git a/system/vendor/nikic/fast-route/test/HackTypechecker/fixtures/empty_options.php b/system/vendor/nikic/fast-route/test/HackTypechecker/fixtures/empty_options.php new file mode 100644 index 0000000..61eb541 --- /dev/null +++ b/system/vendor/nikic/fast-route/test/HackTypechecker/fixtures/empty_options.php @@ -0,0 +1,11 @@ + {}, shape()); +} + +function empty_options_cached(): \FastRoute\Dispatcher { + return \FastRoute\cachedDispatcher($collector ==> {}, shape()); +} diff --git a/system/vendor/nikic/fast-route/test/HackTypechecker/fixtures/no_options.php b/system/vendor/nikic/fast-route/test/HackTypechecker/fixtures/no_options.php new file mode 100644 index 0000000..44b5422 --- /dev/null +++ b/system/vendor/nikic/fast-route/test/HackTypechecker/fixtures/no_options.php @@ -0,0 +1,11 @@ + {}); +} + +function no_options_cached(): \FastRoute\Dispatcher { + return \FastRoute\cachedDispatcher($collector ==> {}); +} diff --git a/system/vendor/nikic/fast-route/test/RouteCollectorTest.php b/system/vendor/nikic/fast-route/test/RouteCollectorTest.php new file mode 100644 index 0000000..11bcf1c --- /dev/null +++ b/system/vendor/nikic/fast-route/test/RouteCollectorTest.php @@ -0,0 +1,97 @@ +delete('/delete', 'delete'); + $r->get('/get', 'get'); + $r->head('/head', 'head'); + $r->patch('/patch', 'patch'); + $r->post('/post', 'post'); + $r->put('/put', 'put'); + + $expected = [ + ['DELETE', '/delete', 'delete'], + ['GET', '/get', 'get'], + ['HEAD', '/head', 'head'], + ['PATCH', '/patch', 'patch'], + ['POST', '/post', 'post'], + ['PUT', '/put', 'put'], + ]; + + $this->assertSame($expected, $r->routes); + } + + public function testGroups() { + $r = new DummyRouteCollector(); + + $r->delete('/delete', 'delete'); + $r->get('/get', 'get'); + $r->head('/head', 'head'); + $r->patch('/patch', 'patch'); + $r->post('/post', 'post'); + $r->put('/put', 'put'); + + $r->addGroup('/group-one', function (DummyRouteCollector $r) { + $r->delete('/delete', 'delete'); + $r->get('/get', 'get'); + $r->head('/head', 'head'); + $r->patch('/patch', 'patch'); + $r->post('/post', 'post'); + $r->put('/put', 'put'); + + $r->addGroup('/group-two', function (DummyRouteCollector $r) { + $r->delete('/delete', 'delete'); + $r->get('/get', 'get'); + $r->head('/head', 'head'); + $r->patch('/patch', 'patch'); + $r->post('/post', 'post'); + $r->put('/put', 'put'); + }); + }); + + $r->addGroup('/admin', function (DummyRouteCollector $r) { + $r->get('-some-info', 'admin-some-info'); + }); + $r->addGroup('/admin-', function (DummyRouteCollector $r) { + $r->get('more-info', 'admin-more-info'); + }); + + $expected = [ + ['DELETE', '/delete', 'delete'], + ['GET', '/get', 'get'], + ['HEAD', '/head', 'head'], + ['PATCH', '/patch', 'patch'], + ['POST', '/post', 'post'], + ['PUT', '/put', 'put'], + ['DELETE', '/group-one/delete', 'delete'], + ['GET', '/group-one/get', 'get'], + ['HEAD', '/group-one/head', 'head'], + ['PATCH', '/group-one/patch', 'patch'], + ['POST', '/group-one/post', 'post'], + ['PUT', '/group-one/put', 'put'], + ['DELETE', '/group-one/group-two/delete', 'delete'], + ['GET', '/group-one/group-two/get', 'get'], + ['HEAD', '/group-one/group-two/head', 'head'], + ['PATCH', '/group-one/group-two/patch', 'patch'], + ['POST', '/group-one/group-two/post', 'post'], + ['PUT', '/group-one/group-two/put', 'put'], + ['GET', '/admin-some-info', 'admin-some-info'], + ['GET', '/admin-more-info', 'admin-more-info'], + ]; + + $this->assertSame($expected, $r->routes); + } +} + +class DummyRouteCollector extends RouteCollector { + public $routes = []; + public function __construct() {} + public function addRoute($method, $route, $handler) { + $route = $this->currentGroupPrefix . $route; + $this->routes[] = [$method, $route, $handler]; + } +} \ No newline at end of file diff --git a/system/vendor/nikic/fast-route/test/RouteParser/StdTest.php b/system/vendor/nikic/fast-route/test/RouteParser/StdTest.php new file mode 100644 index 0000000..41f194b --- /dev/null +++ b/system/vendor/nikic/fast-route/test/RouteParser/StdTest.php @@ -0,0 +1,147 @@ +parse($routeString); + $this->assertSame($expectedRouteDatas, $routeDatas); + } + + /** @dataProvider provideTestParseError */ + public function testParseError($routeString, $expectedExceptionMessage) { + $parser = new Std(); + $this->setExpectedException('FastRoute\\BadRouteException', $expectedExceptionMessage); + $parser->parse($routeString); + } + + public function provideTestParse() { + return [ + [ + '/test', + [ + ['/test'], + ] + ], + [ + '/test/{param}', + [ + ['/test/', ['param', '[^/]+']], + ] + ], + [ + '/te{ param }st', + [ + ['/te', ['param', '[^/]+'], 'st'] + ] + ], + [ + '/test/{param1}/test2/{param2}', + [ + ['/test/', ['param1', '[^/]+'], '/test2/', ['param2', '[^/]+']] + ] + ], + [ + '/test/{param:\d+}', + [ + ['/test/', ['param', '\d+']] + ] + ], + [ + '/test/{ param : \d{1,9} }', + [ + ['/test/', ['param', '\d{1,9}']] + ] + ], + [ + '/test[opt]', + [ + ['/test'], + ['/testopt'], + ] + ], + [ + '/test[/{param}]', + [ + ['/test'], + ['/test/', ['param', '[^/]+']], + ] + ], + [ + '/{param}[opt]', + [ + ['/', ['param', '[^/]+']], + ['/', ['param', '[^/]+'], 'opt'] + ] + ], + [ + '/test[/{name}[/{id:[0-9]+}]]', + [ + ['/test'], + ['/test/', ['name', '[^/]+']], + ['/test/', ['name', '[^/]+'], '/', ['id', '[0-9]+']], + ] + ], + [ + '', + [ + [''], + ] + ], + [ + '[test]', + [ + [''], + ['test'], + ] + ], + [ + '/{foo-bar}', + [ + ['/', ['foo-bar', '[^/]+']] + ] + ], + [ + '/{_foo:.*}', + [ + ['/', ['_foo', '.*']] + ] + ], + ]; + } + + public function provideTestParseError() { + return [ + [ + '/test[opt', + "Number of opening '[' and closing ']' does not match" + ], + [ + '/test[opt[opt2]', + "Number of opening '[' and closing ']' does not match" + ], + [ + '/testopt]', + "Number of opening '[' and closing ']' does not match" + ], + [ + '/test[]', + "Empty optional part" + ], + [ + '/test[[opt]]', + "Empty optional part" + ], + [ + '[[test]]', + "Empty optional part" + ], + [ + '/test[/opt]/required', + "Optional segments can only occur at the end of a route" + ], + ]; + } +} diff --git a/system/vendor/nikic/fast-route/test/bootstrap.php b/system/vendor/nikic/fast-route/test/bootstrap.php new file mode 100644 index 0000000..27e6d4c --- /dev/null +++ b/system/vendor/nikic/fast-route/test/bootstrap.php @@ -0,0 +1,11 @@ +> `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 + - cd ../.. + - phpunit + +matrix: + exclude: + - php: hhvm + env: PIMPLE_EXT=yes diff --git a/system/vendor/pimple/pimple/CHANGELOG b/system/vendor/pimple/pimple/CHANGELOG new file mode 100644 index 0000000..cc67997 --- /dev/null +++ b/system/vendor/pimple/pimple/CHANGELOG @@ -0,0 +1,35 @@ +* 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/system/vendor/pimple/pimple/LICENSE b/system/vendor/pimple/pimple/LICENSE new file mode 100644 index 0000000..d7949e2 --- /dev/null +++ b/system/vendor/pimple/pimple/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2009-2015 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/system/vendor/pimple/pimple/README.rst b/system/vendor/pimple/pimple/README.rst new file mode 100644 index 0000000..93fb35a --- /dev/null +++ b/system/vendor/pimple/pimple/README.rst @@ -0,0 +1,201 @@ +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 + +Alternatively, Pimple is also available as a PHP C extension: + +.. code-block:: bash + + $ git clone https://github.com/silexphp/Pimple + $ cd Pimple/ext/pimple + $ phpize + $ ./configure + $ make + $ make install + +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 +``session_storage_class`` 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'); + +.. _Pimple 1.x documentation: https://github.com/silexphp/Pimple/tree/1.1 diff --git a/system/vendor/pimple/pimple/composer.json b/system/vendor/pimple/pimple/composer.json new file mode 100644 index 0000000..a5268f1 --- /dev/null +++ b/system/vendor/pimple/pimple/composer.json @@ -0,0 +1,25 @@ +{ + "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" + }, + "autoload": { + "psr-0": { "Pimple": "src/" } + }, + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + } +} diff --git a/system/vendor/pimple/pimple/ext/pimple/.gitignore b/system/vendor/pimple/pimple/ext/pimple/.gitignore new file mode 100644 index 0000000..1861088 --- /dev/null +++ b/system/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/system/vendor/pimple/pimple/ext/pimple/README.md b/system/vendor/pimple/pimple/ext/pimple/README.md new file mode 100644 index 0000000..7b39eb2 --- /dev/null +++ b/system/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/system/vendor/pimple/pimple/ext/pimple/config.m4 b/system/vendor/pimple/pimple/ext/pimple/config.m4 new file mode 100644 index 0000000..c9ba17d --- /dev/null +++ b/system/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/system/vendor/pimple/pimple/ext/pimple/config.w32 b/system/vendor/pimple/pimple/ext/pimple/config.w32 new file mode 100644 index 0000000..39857b3 --- /dev/null +++ b/system/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/system/vendor/pimple/pimple/ext/pimple/php_pimple.h b/system/vendor/pimple/pimple/ext/pimple/php_pimple.h new file mode 100644 index 0000000..49431f0 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/php_pimple.h @@ -0,0 +1,121 @@ + +/* + * 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.0.2" +#define PIMPLE_NS "Pimple" + +#define PIMPLE_DEFAULT_ZVAL_CACHE_NUM 5 +#define PIMPLE_DEFAULT_ZVAL_VALUES_NUM 10 + +zend_module_entry *get_module(void); + +PHP_MINIT_FUNCTION(pimple); +PHP_MINFO_FUNCTION(pimple); + +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[] = ""; + +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/system/vendor/pimple/pimple/ext/pimple/pimple.c b/system/vendor/pimple/pimple/ext/pimple/pimple.c new file mode 100644 index 0000000..239c01d --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/pimple.c @@ -0,0 +1,922 @@ + +/* + * 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; +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); + +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() + +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_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 +}; + +static const zend_function_entry pimple_serviceprovider_iface_ce_functions[] = { + PHP_ABSTRACT_ME(ServiceProviderInterface, register, arginfo_serviceprovider_register) + PHP_FE_END +}; + +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); + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Cannot override frozen service \"%s\".", Z_STRVAL_P(offset)); + 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); + zend_throw_exception_ex(spl_ce_RuntimeException, 0 TSRMLS_CC, "Cannot override frozen service \"%ld\".", index); + 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) { + zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "Identifier \"%s\" is not defined.", Z_STRVAL_P(offset)); + 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 everytime 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(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(spl_ce_InvalidArgumentException, "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) { + zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "Identifier \"%s\" is not defined.", Z_STRVAL_P(offset)); + 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) { + zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "Identifier \"%s\" is not defined.", Z_STRVAL_P(offset)); + RETURN_NULL(); + } + if (value->type != PIMPLE_IS_SERVICE) { + zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "Identifier \"%s\" does not contain an object definition.", Z_STRVAL_P(offset)); + 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) { + zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "Identifier \"%ld\" is not defined.", index); + RETURN_NULL(); + } + if (value->type != PIMPLE_IS_SERVICE) { + zend_throw_exception_ex(spl_ce_InvalidArgumentException, 0 TSRMLS_CC, "Identifier \"%ld\" does not contain an object definition.", index); + RETURN_NULL(); + } + 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(spl_ce_InvalidArgumentException, "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(spl_ce_InvalidArgumentException, "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 || !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_pimple_ce, tmp_pimple_closure_ce, tmp_pimple_serviceprovider_iface_ce; + 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/system/vendor/pimple/pimple/ext/pimple/pimple_compat.h b/system/vendor/pimple/pimple/ext/pimple/pimple_compat.h new file mode 100644 index 0000000..d234e17 --- /dev/null +++ b/system/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/system/vendor/pimple/pimple/ext/pimple/tests/001.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/001.phpt new file mode 100644 index 0000000..0809ea2 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/001.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test for read_dim/write_dim handlers +--SKIPIF-- + +--FILE-- + + +--EXPECTF-- +foo +42 +foo2 +foo99 +baz +strstr \ No newline at end of file diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/002.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/002.phpt new file mode 100644 index 0000000..7b56d2c --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/002.phpt @@ -0,0 +1,15 @@ +--TEST-- +Test for constructor +--SKIPIF-- + +--FILE-- +'foo')); +var_dump($p[42]); +?> +--EXPECT-- +NULL +string(3) "foo" diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/003.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/003.phpt new file mode 100644 index 0000000..a22cfa3 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/003.phpt @@ -0,0 +1,16 @@ +--TEST-- +Test empty dimensions +--SKIPIF-- + +--FILE-- + +--EXPECT-- +int(42) +string(3) "bar" \ No newline at end of file diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/004.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/004.phpt new file mode 100644 index 0000000..1e1d251 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/004.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test has/unset dim handlers +--SKIPIF-- + +--FILE-- + +--EXPECT-- +int(42) +NULL +bool(true) +bool(false) +bool(true) +bool(true) \ No newline at end of file diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/005.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/005.phpt new file mode 100644 index 0000000..0479ee0 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/005.phpt @@ -0,0 +1,27 @@ +--TEST-- +Test simple class inheritance +--SKIPIF-- + +--FILE-- +someAttr; +?> +--EXPECT-- +string(3) "hit" +foo +fooAttr \ No newline at end of file diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/006.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/006.phpt new file mode 100644 index 0000000..cfe8a11 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/006.phpt @@ -0,0 +1,51 @@ +--TEST-- +Test complex class inheritance +--SKIPIF-- + +--FILE-- + '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/system/vendor/pimple/pimple/ext/pimple/tests/007.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/007.phpt new file mode 100644 index 0000000..5aac683 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/007.phpt @@ -0,0 +1,22 @@ +--TEST-- +Test for read_dim/write_dim handlers +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +foo +42 \ No newline at end of file diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/008.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/008.phpt new file mode 100644 index 0000000..db7eeec --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/008.phpt @@ -0,0 +1,29 @@ +--TEST-- +Test frozen services +--SKIPIF-- + +--FILE-- + +--EXPECTF-- diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/009.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/009.phpt new file mode 100644 index 0000000..bb05ea2 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/009.phpt @@ -0,0 +1,13 @@ +--TEST-- +Test service is called as callback, and only once +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +bool(true) \ No newline at end of file diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/010.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/010.phpt new file mode 100644 index 0000000..badce01 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/010.phpt @@ -0,0 +1,45 @@ +--TEST-- +Test service is called as callback for every callback type +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +callme +called +Foo::bar +array(2) { + [0]=> + string(3) "Foo" + [1]=> + string(3) "bar" +} \ No newline at end of file diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/011.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/011.phpt new file mode 100644 index 0000000..6682ab8 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/011.phpt @@ -0,0 +1,19 @@ +--TEST-- +Test service callback throwing an exception +--SKIPIF-- + +--FILE-- + +--EXPECTF-- +all right! \ No newline at end of file diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/012.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/012.phpt new file mode 100644 index 0000000..4c6ac48 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/012.phpt @@ -0,0 +1,28 @@ +--TEST-- +Test service factory +--SKIPIF-- + +--FILE-- +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/system/vendor/pimple/pimple/ext/pimple/tests/013.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/013.phpt new file mode 100644 index 0000000..f419958 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/013.phpt @@ -0,0 +1,33 @@ +--TEST-- +Test keys() +--SKIPIF-- + +--FILE-- +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/system/vendor/pimple/pimple/ext/pimple/tests/014.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/014.phpt new file mode 100644 index 0000000..ac93721 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/014.phpt @@ -0,0 +1,30 @@ +--TEST-- +Test raw() +--SKIPIF-- + +--FILE-- +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/system/vendor/pimple/pimple/ext/pimple/tests/015.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/015.phpt new file mode 100644 index 0000000..314f008 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/015.phpt @@ -0,0 +1,17 @@ +--TEST-- +Test protect() +--SKIPIF-- + +--FILE-- +protect($f); + +var_dump($p['foo']); +--EXPECTF-- +object(Closure)#%i (0) { +} \ No newline at end of file diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/016.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/016.phpt new file mode 100644 index 0000000..e55edb0 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/016.phpt @@ -0,0 +1,24 @@ +--TEST-- +Test extend() +--SKIPIF-- + +--FILE-- +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/system/vendor/pimple/pimple/ext/pimple/tests/017.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/017.phpt new file mode 100644 index 0000000..bac23ce --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/017.phpt @@ -0,0 +1,17 @@ +--TEST-- +Test extend() with exception in service extension +--SKIPIF-- + +--FILE-- +extend(12, function ($w) { throw new BadMethodCallException; }); + +try { + $p[12]; + echo "Exception expected"; +} catch (BadMethodCallException $e) { } +--EXPECTF-- diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt new file mode 100644 index 0000000..8f881d6 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/017_1.phpt @@ -0,0 +1,17 @@ +--TEST-- +Test extend() with exception in service factory +--SKIPIF-- + +--FILE-- +extend(12, function ($w) { return 'foobar'; }); + +try { + $p[12]; + echo "Exception expected"; +} catch (BadMethodCallException $e) { } +--EXPECTF-- diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/018.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/018.phpt new file mode 100644 index 0000000..27c12a1 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/018.phpt @@ -0,0 +1,23 @@ +--TEST-- +Test register() +--SKIPIF-- + +--FILE-- +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/system/vendor/pimple/pimple/ext/pimple/tests/019.phpt b/system/vendor/pimple/pimple/ext/pimple/tests/019.phpt new file mode 100644 index 0000000..28a9aec --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/019.phpt @@ -0,0 +1,18 @@ +--TEST-- +Test register() returns static and is a fluent interface +--SKIPIF-- + +--FILE-- +register(new Foo)); +--EXPECTF-- +bool(true) diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/bench.phpb b/system/vendor/pimple/pimple/ext/pimple/tests/bench.phpb new file mode 100644 index 0000000..8f983e6 --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/bench.phpb @@ -0,0 +1,51 @@ +factory($factory); + +$p['factory'] = $factory; + +echo $p['factory']; +echo $p['factory']; +echo $p['factory']; + +} + +echo microtime(true) - $time; diff --git a/system/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb b/system/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb new file mode 100644 index 0000000..aec541f --- /dev/null +++ b/system/vendor/pimple/pimple/ext/pimple/tests/bench_shared.phpb @@ -0,0 +1,25 @@ + diff --git a/system/vendor/pimple/pimple/phpunit.xml.dist b/system/vendor/pimple/pimple/phpunit.xml.dist new file mode 100644 index 0000000..5c8d487 --- /dev/null +++ b/system/vendor/pimple/pimple/phpunit.xml.dist @@ -0,0 +1,14 @@ + + + + + + ./src/Pimple/Tests + + + diff --git a/system/vendor/pimple/pimple/src/Pimple/Container.php b/system/vendor/pimple/pimple/src/Pimple/Container.php new file mode 100644 index 0000000..c976431 --- /dev/null +++ b/system/vendor/pimple/pimple/src/Pimple/Container.php @@ -0,0 +1,282 @@ +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 \RuntimeException Prevent override of a frozen service + */ + public function offsetSet($id, $value) + { + if (isset($this->frozen[$id])) { + throw new \RuntimeException(sprintf('Cannot override frozen service "%s".', $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 \InvalidArgumentException if the identifier is not defined + */ + public function offsetGet($id) + { + if (!isset($this->keys[$id])) { + throw new \InvalidArgumentException(sprintf('Identifier "%s" is not defined.', $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 \InvalidArgumentException Service definition has to be a closure of an invokable object + */ + public function factory($callable) + { + if (!method_exists($callable, '__invoke')) { + throw new \InvalidArgumentException('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 \InvalidArgumentException Service definition has to be a closure of an invokable object + */ + public function protect($callable) + { + if (!method_exists($callable, '__invoke')) { + throw new \InvalidArgumentException('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 \InvalidArgumentException if the identifier is not defined + */ + public function raw($id) + { + if (!isset($this->keys[$id])) { + throw new \InvalidArgumentException(sprintf('Identifier "%s" is not defined.', $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 \InvalidArgumentException if the identifier is not defined or not a service definition + */ + public function extend($id, $callable) + { + if (!isset($this->keys[$id])) { + throw new \InvalidArgumentException(sprintf('Identifier "%s" is not defined.', $id)); + } + + if (!is_object($this->values[$id]) || !method_exists($this->values[$id], '__invoke')) { + throw new \InvalidArgumentException(sprintf('Identifier "%s" does not contain an object definition.', $id)); + } + + if (!is_object($callable) || !method_exists($callable, '__invoke')) { + throw new \InvalidArgumentException('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/system/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php b/system/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php new file mode 100644 index 0000000..c004594 --- /dev/null +++ b/system/vendor/pimple/pimple/src/Pimple/ServiceProviderInterface.php @@ -0,0 +1,46 @@ +value = $value; + + return $service; + } +} diff --git a/system/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php b/system/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php new file mode 100644 index 0000000..33cd4e5 --- /dev/null +++ b/system/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/NonInvokable.php @@ -0,0 +1,34 @@ +factory(function () { + return new Service(); + }); + } +} diff --git a/system/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php b/system/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php new file mode 100644 index 0000000..d71b184 --- /dev/null +++ b/system/vendor/pimple/pimple/src/Pimple/Tests/Fixtures/Service.php @@ -0,0 +1,35 @@ + + */ +class Service +{ + public $value; +} diff --git a/system/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php b/system/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php new file mode 100644 index 0000000..8e5c4c7 --- /dev/null +++ b/system/vendor/pimple/pimple/src/Pimple/Tests/PimpleServiceProviderInterfaceTest.php @@ -0,0 +1,76 @@ + + */ +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/system/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php b/system/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php new file mode 100644 index 0000000..918f620 --- /dev/null +++ b/system/vendor/pimple/pimple/src/Pimple/Tests/PimpleTest.php @@ -0,0 +1,440 @@ + + */ +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 \InvalidArgumentException + * @expectedExceptionMessage Identifier "foo" is not defined. + */ + public function testOffsetGetValidatesKeyIsPresent() + { + $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->getMock('Pimple\ServiceProviderInterface'))); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Identifier "foo" is not defined. + */ + public function testRawValidatesKeyIsPresent() + { + $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 \InvalidArgumentException + * @expectedExceptionMessage Identifier "foo" is not defined. + */ + public function testExtendValidatesKeyIsPresent() + { + $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 \InvalidArgumentException + * @expectedExceptionMessage Service definition is not a Closure or invokable object. + */ + public function testFactoryFailsForInvalidServiceDefinitions($service) + { + $pimple = new Container(); + $pimple->factory($service); + } + + /** + * @dataProvider badServiceDefinitionProvider + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Callable is not a Closure or invokable object. + */ + public function testProtectFailsForInvalidServiceDefinitions($service) + { + $pimple = new Container(); + $pimple->protect($service); + } + + /** + * @dataProvider badServiceDefinitionProvider + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage Identifier "foo" does not contain an object definition. + */ + public function testExtendFailsForKeysNotContainingServiceDefinitions($service) + { + $pimple = new Container(); + $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 Container(); + $pimple['foo'] = function () {}; + $pimple->extend('foo', $service); + } + + /** + * 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 \RuntimeException + * @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'; + }; + } + + 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/system/vendor/psr/container/.gitignore b/system/vendor/psr/container/.gitignore new file mode 100644 index 0000000..b2395aa --- /dev/null +++ b/system/vendor/psr/container/.gitignore @@ -0,0 +1,3 @@ +composer.lock +composer.phar +/vendor/ diff --git a/system/vendor/psr/container/LICENSE b/system/vendor/psr/container/LICENSE new file mode 100644 index 0000000..2877a48 --- /dev/null +++ b/system/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/system/vendor/psr/container/README.md b/system/vendor/psr/container/README.md new file mode 100644 index 0000000..084f6df --- /dev/null +++ b/system/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/system/vendor/psr/container/composer.json b/system/vendor/psr/container/composer.json new file mode 100644 index 0000000..b8ee012 --- /dev/null +++ b/system/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/system/vendor/psr/container/src/ContainerExceptionInterface.php b/system/vendor/psr/container/src/ContainerExceptionInterface.php new file mode 100644 index 0000000..d35c6b4 --- /dev/null +++ b/system/vendor/psr/container/src/ContainerExceptionInterface.php @@ -0,0 +1,13 @@ +=5.3.0" + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + } +} diff --git a/system/vendor/psr/http-message/src/MessageInterface.php b/system/vendor/psr/http-message/src/MessageInterface.php new file mode 100644 index 0000000..dd46e5e --- /dev/null +++ b/system/vendor/psr/http-message/src/MessageInterface.php @@ -0,0 +1,187 @@ +getHeaders() as $name => $values) { + * echo $name . ": " . implode(", ", $values); + * } + * + * // Emit headers iteratively: + * foreach ($message->getHeaders() as $name => $values) { + * foreach ($values as $value) { + * header(sprintf('%s: %s', $name, $value), false); + * } + * } + * + * While header names are not case-sensitive, getHeaders() will preserve the + * exact case in which headers were originally specified. + * + * @return string[][] Returns an associative array of the message's headers. Each + * key MUST be a header name, and each value MUST be an array of strings + * for that header. + */ + public function getHeaders(); + + /** + * Checks if a header exists by the given case-insensitive name. + * + * @param string $name Case-insensitive header field name. + * @return bool Returns true if any header names match the given header + * name using a case-insensitive string comparison. Returns false if + * no matching header name is found in the message. + */ + public function hasHeader($name); + + /** + * Retrieves a message header value by the given case-insensitive name. + * + * This method returns an array of all the header values of the given + * case-insensitive header name. + * + * If the header does not appear in the message, this method MUST return an + * empty array. + * + * @param string $name Case-insensitive header field name. + * @return string[] An array of string values as provided for the given + * header. If the header does not appear in the message, this method MUST + * return an empty array. + */ + public function getHeader($name); + + /** + * Retrieves a comma-separated string of the values for a single header. + * + * This method returns all of the header values of the given + * case-insensitive header name as a string concatenated together using + * a comma. + * + * NOTE: Not all header values may be appropriately represented using + * comma concatenation. For such headers, use getHeader() instead + * and supply your own delimiter when concatenating. + * + * If the header does not appear in the message, this method MUST return + * an empty string. + * + * @param string $name Case-insensitive header field name. + * @return string A string of values as provided for the given header + * concatenated together using a comma. If the header does not appear in + * the message, this method MUST return an empty string. + */ + public function getHeaderLine($name); + + /** + * Return an instance with the provided value replacing the specified header. + * + * While header names are case-insensitive, the casing of the header will + * be preserved by this function, and returned from getHeaders(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * new and/or updated header and value. + * + * @param string $name Case-insensitive header field name. + * @param string|string[] $value Header value(s). + * @return static + * @throws \InvalidArgumentException for invalid header names or values. + */ + public function withHeader($name, $value); + + /** + * Return an instance with the specified header appended with the given value. + * + * Existing values for the specified header will be maintained. The new + * value(s) will be appended to the existing list. If the header did not + * exist previously, it will be added. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * new header and/or value. + * + * @param string $name Case-insensitive header field name to add. + * @param string|string[] $value Header value(s). + * @return static + * @throws \InvalidArgumentException for invalid header names or values. + */ + public function withAddedHeader($name, $value); + + /** + * Return an instance without the specified header. + * + * Header resolution MUST be done without case-sensitivity. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that removes + * the named header. + * + * @param string $name Case-insensitive header field name to remove. + * @return static + */ + public function withoutHeader($name); + + /** + * Gets the body of the message. + * + * @return StreamInterface Returns the body as a stream. + */ + public function getBody(); + + /** + * Return an instance with the specified message body. + * + * The body MUST be a StreamInterface object. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return a new instance that has the + * new body stream. + * + * @param StreamInterface $body Body. + * @return static + * @throws \InvalidArgumentException When the body is not valid. + */ + public function withBody(StreamInterface $body); +} diff --git a/system/vendor/psr/http-message/src/RequestInterface.php b/system/vendor/psr/http-message/src/RequestInterface.php new file mode 100644 index 0000000..a96d4fd --- /dev/null +++ b/system/vendor/psr/http-message/src/RequestInterface.php @@ -0,0 +1,129 @@ +getQuery()` + * or from the `QUERY_STRING` server param. + * + * @return array + */ + public function getQueryParams(); + + /** + * Return an instance with the specified query string arguments. + * + * These values SHOULD remain immutable over the course of the incoming + * request. They MAY be injected during instantiation, such as from PHP's + * $_GET superglobal, or MAY be derived from some other value such as the + * URI. In cases where the arguments are parsed from the URI, the data + * MUST be compatible with what PHP's parse_str() would return for + * purposes of how duplicate query parameters are handled, and how nested + * sets are handled. + * + * Setting query string arguments MUST NOT change the URI stored by the + * request, nor the values in the server params. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated query string arguments. + * + * @param array $query Array of query string arguments, typically from + * $_GET. + * @return static + */ + public function withQueryParams(array $query); + + /** + * Retrieve normalized file upload data. + * + * This method returns upload metadata in a normalized tree, with each leaf + * an instance of Psr\Http\Message\UploadedFileInterface. + * + * These values MAY be prepared from $_FILES or the message body during + * instantiation, or MAY be injected via withUploadedFiles(). + * + * @return array An array tree of UploadedFileInterface instances; an empty + * array MUST be returned if no data is present. + */ + public function getUploadedFiles(); + + /** + * Create a new instance with the specified uploaded files. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated body parameters. + * + * @param array $uploadedFiles An array tree of UploadedFileInterface instances. + * @return static + * @throws \InvalidArgumentException if an invalid structure is provided. + */ + public function withUploadedFiles(array $uploadedFiles); + + /** + * Retrieve any parameters provided in the request body. + * + * If the request Content-Type is either application/x-www-form-urlencoded + * or multipart/form-data, and the request method is POST, this method MUST + * return the contents of $_POST. + * + * Otherwise, this method may return any results of deserializing + * the request body content; as parsing returns structured content, the + * potential types MUST be arrays or objects only. A null value indicates + * the absence of body content. + * + * @return null|array|object The deserialized body parameters, if any. + * These will typically be an array or object. + */ + public function getParsedBody(); + + /** + * Return an instance with the specified body parameters. + * + * These MAY be injected during instantiation. + * + * If the request Content-Type is either application/x-www-form-urlencoded + * or multipart/form-data, and the request method is POST, use this method + * ONLY to inject the contents of $_POST. + * + * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of + * deserializing the request body content. Deserialization/parsing returns + * structured data, and, as such, this method ONLY accepts arrays or objects, + * or a null value if nothing was available to parse. + * + * As an example, if content negotiation determines that the request data + * is a JSON payload, this method could be used to create a request + * instance with the deserialized parameters. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated body parameters. + * + * @param null|array|object $data The deserialized body data. This will + * typically be in an array or object. + * @return static + * @throws \InvalidArgumentException if an unsupported argument type is + * provided. + */ + public function withParsedBody($data); + + /** + * Retrieve attributes derived from the request. + * + * The request "attributes" may be used to allow injection of any + * parameters derived from the request: e.g., the results of path + * match operations; the results of decrypting cookies; the results of + * deserializing non-form-encoded message bodies; etc. Attributes + * will be application and request specific, and CAN be mutable. + * + * @return array Attributes derived from the request. + */ + public function getAttributes(); + + /** + * Retrieve a single derived request attribute. + * + * Retrieves a single derived request attribute as described in + * getAttributes(). If the attribute has not been previously set, returns + * the default value as provided. + * + * This method obviates the need for a hasAttribute() method, as it allows + * specifying a default value to return if the attribute is not found. + * + * @see getAttributes() + * @param string $name The attribute name. + * @param mixed $default Default value to return if the attribute does not exist. + * @return mixed + */ + public function getAttribute($name, $default = null); + + /** + * Return an instance with the specified derived request attribute. + * + * This method allows setting a single derived request attribute as + * described in getAttributes(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated attribute. + * + * @see getAttributes() + * @param string $name The attribute name. + * @param mixed $value The value of the attribute. + * @return static + */ + public function withAttribute($name, $value); + + /** + * Return an instance that removes the specified derived request attribute. + * + * This method allows removing a single derived request attribute as + * described in getAttributes(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that removes + * the attribute. + * + * @see getAttributes() + * @param string $name The attribute name. + * @return static + */ + public function withoutAttribute($name); +} diff --git a/system/vendor/psr/http-message/src/StreamInterface.php b/system/vendor/psr/http-message/src/StreamInterface.php new file mode 100644 index 0000000..f68f391 --- /dev/null +++ b/system/vendor/psr/http-message/src/StreamInterface.php @@ -0,0 +1,158 @@ + + * [user-info@]host[:port] + * + * + * If the port component is not set or is the standard port for the current + * scheme, it SHOULD NOT be included. + * + * @see https://tools.ietf.org/html/rfc3986#section-3.2 + * @return string The URI authority, in "[user-info@]host[:port]" format. + */ + public function getAuthority(); + + /** + * Retrieve the user information component of the URI. + * + * If no user information is present, this method MUST return an empty + * string. + * + * If a user is present in the URI, this will return that value; + * additionally, if the password is also present, it will be appended to the + * user value, with a colon (":") separating the values. + * + * The trailing "@" character is not part of the user information and MUST + * NOT be added. + * + * @return string The URI user information, in "username[:password]" format. + */ + public function getUserInfo(); + + /** + * Retrieve the host component of the URI. + * + * If no host is present, this method MUST return an empty string. + * + * The value returned MUST be normalized to lowercase, per RFC 3986 + * Section 3.2.2. + * + * @see http://tools.ietf.org/html/rfc3986#section-3.2.2 + * @return string The URI host. + */ + public function getHost(); + + /** + * Retrieve the port component of the URI. + * + * If a port is present, and it is non-standard for the current scheme, + * this method MUST return it as an integer. If the port is the standard port + * used with the current scheme, this method SHOULD return null. + * + * If no port is present, and no scheme is present, this method MUST return + * a null value. + * + * If no port is present, but a scheme is present, this method MAY return + * the standard port for that scheme, but SHOULD return null. + * + * @return null|int The URI port. + */ + public function getPort(); + + /** + * Retrieve the path component of the URI. + * + * The path can either be empty or absolute (starting with a slash) or + * rootless (not starting with a slash). Implementations MUST support all + * three syntaxes. + * + * Normally, the empty path "" and absolute path "/" are considered equal as + * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically + * do this normalization because in contexts with a trimmed base path, e.g. + * the front controller, this difference becomes significant. It's the task + * of the user to handle both "" and "/". + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.3. + * + * As an example, if the value should include a slash ("/") not intended as + * delimiter between path segments, that value MUST be passed in encoded + * form (e.g., "%2F") to the instance. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.3 + * @return string The URI path. + */ + public function getPath(); + + /** + * Retrieve the query string of the URI. + * + * If no query string is present, this method MUST return an empty string. + * + * The leading "?" character is not part of the query and MUST NOT be + * added. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.4. + * + * As an example, if a value in a key/value pair of the query string should + * include an ampersand ("&") not intended as a delimiter between values, + * that value MUST be passed in encoded form (e.g., "%26") to the instance. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.4 + * @return string The URI query string. + */ + public function getQuery(); + + /** + * Retrieve the fragment component of the URI. + * + * If no fragment is present, this method MUST return an empty string. + * + * The leading "#" character is not part of the fragment and MUST NOT be + * added. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.5. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.5 + * @return string The URI fragment. + */ + public function getFragment(); + + /** + * Return an instance with the specified scheme. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified scheme. + * + * Implementations MUST support the schemes "http" and "https" case + * insensitively, and MAY accommodate other schemes if required. + * + * An empty scheme is equivalent to removing the scheme. + * + * @param string $scheme The scheme to use with the new instance. + * @return static A new instance with the specified scheme. + * @throws \InvalidArgumentException for invalid or unsupported schemes. + */ + public function withScheme($scheme); + + /** + * Return an instance with the specified user information. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified user information. + * + * Password is optional, but the user information MUST include the + * user; an empty string for the user is equivalent to removing user + * information. + * + * @param string $user The user name to use for authority. + * @param null|string $password The password associated with $user. + * @return static A new instance with the specified user information. + */ + public function withUserInfo($user, $password = null); + + /** + * Return an instance with the specified host. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified host. + * + * An empty host value is equivalent to removing the host. + * + * @param string $host The hostname to use with the new instance. + * @return static A new instance with the specified host. + * @throws \InvalidArgumentException for invalid hostnames. + */ + public function withHost($host); + + /** + * Return an instance with the specified port. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified port. + * + * Implementations MUST raise an exception for ports outside the + * established TCP and UDP port ranges. + * + * A null value provided for the port is equivalent to removing the port + * information. + * + * @param null|int $port The port to use with the new instance; a null value + * removes the port information. + * @return static A new instance with the specified port. + * @throws \InvalidArgumentException for invalid ports. + */ + public function withPort($port); + + /** + * Return an instance with the specified path. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified path. + * + * The path can either be empty or absolute (starting with a slash) or + * rootless (not starting with a slash). Implementations MUST support all + * three syntaxes. + * + * If the path is intended to be domain-relative rather than path relative then + * it must begin with a slash ("/"). Paths not starting with a slash ("/") + * are assumed to be relative to some base path known to the application or + * consumer. + * + * Users can provide both encoded and decoded path characters. + * Implementations ensure the correct encoding as outlined in getPath(). + * + * @param string $path The path to use with the new instance. + * @return static A new instance with the specified path. + * @throws \InvalidArgumentException for invalid paths. + */ + public function withPath($path); + + /** + * Return an instance with the specified query string. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified query string. + * + * Users can provide both encoded and decoded query characters. + * Implementations ensure the correct encoding as outlined in getQuery(). + * + * An empty query string value is equivalent to removing the query string. + * + * @param string $query The query string to use with the new instance. + * @return static A new instance with the specified query string. + * @throws \InvalidArgumentException for invalid query strings. + */ + public function withQuery($query); + + /** + * Return an instance with the specified URI fragment. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified URI fragment. + * + * Users can provide both encoded and decoded fragment characters. + * Implementations ensure the correct encoding as outlined in getFragment(). + * + * An empty fragment value is equivalent to removing the fragment. + * + * @param string $fragment The fragment to use with the new instance. + * @return static A new instance with the specified fragment. + */ + public function withFragment($fragment); + + /** + * Return the string representation as a URI reference. + * + * Depending on which components of the URI are present, the resulting + * string is either a full URI or relative reference according to RFC 3986, + * Section 4.1. The method concatenates the various components of the URI, + * using the appropriate delimiters: + * + * - If a scheme is present, it MUST be suffixed by ":". + * - If an authority is present, it MUST be prefixed by "//". + * - The path can be concatenated without delimiters. But there are two + * cases where the path has to be adjusted to make the URI reference + * valid as PHP does not allow to throw an exception in __toString(): + * - If the path is rootless and an authority is present, the path MUST + * be prefixed by "/". + * - If the path is starting with more than one "/" and no authority is + * present, the starting slashes MUST be reduced to one. + * - If a query is present, it MUST be prefixed by "?". + * - If a fragment is present, it MUST be prefixed by "#". + * + * @see http://tools.ietf.org/html/rfc3986#section-4.1 + * @return string + */ + public function __toString(); +} diff --git a/system/vendor/slim/flash b/system/vendor/slim/flash new file mode 160000 index 0000000..3c9a26b --- /dev/null +++ b/system/vendor/slim/flash @@ -0,0 +1 @@ +Subproject commit 3c9a26b3163820acc48080336c504d0a3cac6f30 diff --git a/system/vendor/slim/slim/LICENSE.md b/system/vendor/slim/slim/LICENSE.md new file mode 100644 index 0000000..682c21d --- /dev/null +++ b/system/vendor/slim/slim/LICENSE.md @@ -0,0 +1,19 @@ +Copyright (c) 2011-2017 Josh Lockhart + +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/system/vendor/slim/slim/Slim/App.php b/system/vendor/slim/slim/Slim/App.php new file mode 100644 index 0000000..587e671 --- /dev/null +++ b/system/vendor/slim/slim/Slim/App.php @@ -0,0 +1,677 @@ +container = $container; + } + + /** + * Enable access to the DI container by consumers of $app + * + * @return ContainerInterface + */ + public function getContainer() + { + return $this->container; + } + + /** + * Add middleware + * + * This method prepends new middleware to the app's middleware stack. + * + * @param callable|string $callable The callback routine + * + * @return static + */ + public function add($callable) + { + return $this->addMiddleware(new DeferredCallable($callable, $this->container)); + } + + /** + * Calling a non-existant method on App checks to see if there's an item + * in the container that is callable and if so, calls it. + * + * @param string $method + * @param array $args + * @return mixed + */ + public function __call($method, $args) + { + if ($this->container->has($method)) { + $obj = $this->container->get($method); + if (is_callable($obj)) { + return call_user_func_array($obj, $args); + } + } + + throw new \BadMethodCallException("Method $method is not a valid method"); + } + + /******************************************************************************** + * Router proxy methods + *******************************************************************************/ + + /** + * Add GET route + * + * @param string $pattern The route URI pattern + * @param callable|string $callable The route callback routine + * + * @return \Slim\Interfaces\RouteInterface + */ + public function get($pattern, $callable) + { + return $this->map(['GET'], $pattern, $callable); + } + + /** + * Add POST route + * + * @param string $pattern The route URI pattern + * @param callable|string $callable The route callback routine + * + * @return \Slim\Interfaces\RouteInterface + */ + public function post($pattern, $callable) + { + return $this->map(['POST'], $pattern, $callable); + } + + /** + * Add PUT route + * + * @param string $pattern The route URI pattern + * @param callable|string $callable The route callback routine + * + * @return \Slim\Interfaces\RouteInterface + */ + public function put($pattern, $callable) + { + return $this->map(['PUT'], $pattern, $callable); + } + + /** + * Add PATCH route + * + * @param string $pattern The route URI pattern + * @param callable|string $callable The route callback routine + * + * @return \Slim\Interfaces\RouteInterface + */ + public function patch($pattern, $callable) + { + return $this->map(['PATCH'], $pattern, $callable); + } + + /** + * Add DELETE route + * + * @param string $pattern The route URI pattern + * @param callable|string $callable The route callback routine + * + * @return \Slim\Interfaces\RouteInterface + */ + public function delete($pattern, $callable) + { + return $this->map(['DELETE'], $pattern, $callable); + } + + /** + * Add OPTIONS route + * + * @param string $pattern The route URI pattern + * @param callable|string $callable The route callback routine + * + * @return \Slim\Interfaces\RouteInterface + */ + public function options($pattern, $callable) + { + return $this->map(['OPTIONS'], $pattern, $callable); + } + + /** + * Add route for any HTTP method + * + * @param string $pattern The route URI pattern + * @param callable|string $callable The route callback routine + * + * @return \Slim\Interfaces\RouteInterface + */ + public function any($pattern, $callable) + { + return $this->map(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'OPTIONS'], $pattern, $callable); + } + + /** + * Add route with multiple methods + * + * @param string[] $methods Numeric array of HTTP method names + * @param string $pattern The route URI pattern + * @param callable|string $callable The route callback routine + * + * @return RouteInterface + */ + public function map(array $methods, $pattern, $callable) + { + if ($callable instanceof Closure) { + $callable = $callable->bindTo($this->container); + } + + $route = $this->container->get('router')->map($methods, $pattern, $callable); + if (is_callable([$route, 'setContainer'])) { + $route->setContainer($this->container); + } + + if (is_callable([$route, 'setOutputBuffering'])) { + $route->setOutputBuffering($this->container->get('settings')['outputBuffering']); + } + + return $route; + } + + /** + * Route Groups + * + * This method accepts a route pattern and a callback. All route + * declarations in the callback will be prepended by the group(s) + * that it is in. + * + * @param string $pattern + * @param callable $callable + * + * @return RouteGroupInterface + */ + public function group($pattern, $callable) + { + /** @var RouteGroup $group */ + $group = $this->container->get('router')->pushGroup($pattern, $callable); + $group->setContainer($this->container); + $group($this); + $this->container->get('router')->popGroup(); + return $group; + } + + /******************************************************************************** + * Runner + *******************************************************************************/ + + /** + * Run application + * + * This method traverses the application middleware stack and then sends the + * resultant Response object to the HTTP client. + * + * @param bool|false $silent + * @return ResponseInterface + * + * @throws Exception + * @throws MethodNotAllowedException + * @throws NotFoundException + */ + public function run($silent = false) + { + $response = $this->container->get('response'); + + try { + $response = $this->process($this->container->get('request'), $response); + } catch (InvalidMethodException $e) { + $response = $this->processInvalidMethod($e->getRequest(), $response); + } + + if (!$silent) { + $this->respond($response); + } + + return $response; + } + + /** + * Pull route info for a request with a bad method to decide whether to + * return a not-found error (default) or a bad-method error, then run + * the handler for that error, returning the resulting response. + * + * Used for cases where an incoming request has an unrecognized method, + * rather than throwing an exception and not catching it all the way up. + * + * @param ServerRequestInterface $request + * @param ResponseInterface $response + * @return ResponseInterface + */ + protected function processInvalidMethod(ServerRequestInterface $request, ResponseInterface $response) + { + $router = $this->container->get('router'); + if (is_callable([$request->getUri(), 'getBasePath']) && is_callable([$router, 'setBasePath'])) { + $router->setBasePath($request->getUri()->getBasePath()); + } + + $request = $this->dispatchRouterAndPrepareRoute($request, $router); + $routeInfo = $request->getAttribute('routeInfo', [RouterInterface::DISPATCH_STATUS => Dispatcher::NOT_FOUND]); + + if ($routeInfo[RouterInterface::DISPATCH_STATUS] === Dispatcher::METHOD_NOT_ALLOWED) { + return $this->handleException( + new MethodNotAllowedException($request, $response, $routeInfo[RouterInterface::ALLOWED_METHODS]), + $request, + $response + ); + } + + return $this->handleException(new NotFoundException($request, $response), $request, $response); + } + + /** + * Process a request + * + * This method traverses the application middleware stack and then returns the + * resultant Response object. + * + * @param ServerRequestInterface $request + * @param ResponseInterface $response + * @return ResponseInterface + * + * @throws Exception + * @throws MethodNotAllowedException + * @throws NotFoundException + */ + public function process(ServerRequestInterface $request, ResponseInterface $response) + { + // Ensure basePath is set + $router = $this->container->get('router'); + if (is_callable([$request->getUri(), 'getBasePath']) && is_callable([$router, 'setBasePath'])) { + $router->setBasePath($request->getUri()->getBasePath()); + } + + // Dispatch the Router first if the setting for this is on + if ($this->container->get('settings')['determineRouteBeforeAppMiddleware'] === true) { + // Dispatch router (note: you won't be able to alter routes after this) + $request = $this->dispatchRouterAndPrepareRoute($request, $router); + } + + // Traverse middleware stack + try { + $response = $this->callMiddlewareStack($request, $response); + } catch (Exception $e) { + $response = $this->handleException($e, $request, $response); + } catch (Throwable $e) { + $response = $this->handlePhpError($e, $request, $response); + } + + $response = $this->finalize($response); + + return $response; + } + + /** + * Send the response the client + * + * @param ResponseInterface $response + */ + public function respond(ResponseInterface $response) + { + // Send response + if (!headers_sent()) { + // Status + header(sprintf( + 'HTTP/%s %s %s', + $response->getProtocolVersion(), + $response->getStatusCode(), + $response->getReasonPhrase() + )); + + // Headers + foreach ($response->getHeaders() as $name => $values) { + foreach ($values as $value) { + header(sprintf('%s: %s', $name, $value), false); + } + } + } + + // Body + if (!$this->isEmptyResponse($response)) { + $body = $response->getBody(); + if ($body->isSeekable()) { + $body->rewind(); + } + $settings = $this->container->get('settings'); + $chunkSize = $settings['responseChunkSize']; + + $contentLength = $response->getHeaderLine('Content-Length'); + if (!$contentLength) { + $contentLength = $body->getSize(); + } + + + if (isset($contentLength)) { + $amountToRead = $contentLength; + while ($amountToRead > 0 && !$body->eof()) { + $data = $body->read(min($chunkSize, $amountToRead)); + echo $data; + + $amountToRead -= strlen($data); + + if (connection_status() != CONNECTION_NORMAL) { + break; + } + } + } else { + while (!$body->eof()) { + echo $body->read($chunkSize); + if (connection_status() != CONNECTION_NORMAL) { + break; + } + } + } + } + } + + /** + * Invoke application + * + * This method implements the middleware interface. It receives + * Request and Response objects, and it returns a Response object + * after compiling the routes registered in the Router and dispatching + * the Request object to the appropriate Route callback routine. + * + * @param ServerRequestInterface $request The most recent Request object + * @param ResponseInterface $response The most recent Response object + * + * @return ResponseInterface + * @throws MethodNotAllowedException + * @throws NotFoundException + */ + public function __invoke(ServerRequestInterface $request, ResponseInterface $response) + { + // Get the route info + $routeInfo = $request->getAttribute('routeInfo'); + + /** @var \Slim\Interfaces\RouterInterface $router */ + $router = $this->container->get('router'); + + // If router hasn't been dispatched or the URI changed then dispatch + if (null === $routeInfo || ($routeInfo['request'] !== [$request->getMethod(), (string) $request->getUri()])) { + $request = $this->dispatchRouterAndPrepareRoute($request, $router); + $routeInfo = $request->getAttribute('routeInfo'); + } + + if ($routeInfo[0] === Dispatcher::FOUND) { + $route = $router->lookupRoute($routeInfo[1]); + return $route->run($request, $response); + } elseif ($routeInfo[0] === Dispatcher::METHOD_NOT_ALLOWED) { + if (!$this->container->has('notAllowedHandler')) { + throw new MethodNotAllowedException($request, $response, $routeInfo[1]); + } + /** @var callable $notAllowedHandler */ + $notAllowedHandler = $this->container->get('notAllowedHandler'); + return $notAllowedHandler($request, $response, $routeInfo[1]); + } + + if (!$this->container->has('notFoundHandler')) { + throw new NotFoundException($request, $response); + } + /** @var callable $notFoundHandler */ + $notFoundHandler = $this->container->get('notFoundHandler'); + return $notFoundHandler($request, $response); + } + + /** + * Perform a sub-request from within an application route + * + * This method allows you to prepare and initiate a sub-request, run within + * the context of the current request. This WILL NOT issue a remote HTTP + * request. Instead, it will route the provided URL, method, headers, + * cookies, body, and server variables against the set of registered + * application routes. The result response object is returned. + * + * @param string $method The request method (e.g., GET, POST, PUT, etc.) + * @param string $path The request URI path + * @param string $query The request URI query string + * @param array $headers The request headers (key-value array) + * @param array $cookies The request cookies (key-value array) + * @param string $bodyContent The request body + * @param ResponseInterface $response The response object (optional) + * @return ResponseInterface + */ + public function subRequest( + $method, + $path, + $query = '', + array $headers = [], + array $cookies = [], + $bodyContent = '', + ResponseInterface $response = null + ) { + $env = $this->container->get('environment'); + $uri = Uri::createFromEnvironment($env)->withPath($path)->withQuery($query); + $headers = new Headers($headers); + $serverParams = $env->all(); + $body = new Body(fopen('php://temp', 'r+')); + $body->write($bodyContent); + $body->rewind(); + $request = new Request($method, $uri, $headers, $cookies, $serverParams, $body); + + if (!$response) { + $response = $this->container->get('response'); + } + + return $this($request, $response); + } + + /** + * Dispatch the router to find the route. Prepare the route for use. + * + * @param ServerRequestInterface $request + * @param RouterInterface $router + * @return ServerRequestInterface + */ + protected function dispatchRouterAndPrepareRoute(ServerRequestInterface $request, RouterInterface $router) + { + $routeInfo = $router->dispatch($request); + + if ($routeInfo[0] === Dispatcher::FOUND) { + $routeArguments = []; + foreach ($routeInfo[2] as $k => $v) { + $routeArguments[$k] = urldecode($v); + } + + $route = $router->lookupRoute($routeInfo[1]); + $route->prepare($request, $routeArguments); + + // add route to the request's attributes in case a middleware or handler needs access to the route + $request = $request->withAttribute('route', $route); + } + + $routeInfo['request'] = [$request->getMethod(), (string) $request->getUri()]; + + return $request->withAttribute('routeInfo', $routeInfo); + } + + /** + * Finalize response + * + * @param ResponseInterface $response + * @return ResponseInterface + */ + protected function finalize(ResponseInterface $response) + { + // stop PHP sending a Content-Type automatically + ini_set('default_mimetype', ''); + + if ($this->isEmptyResponse($response)) { + return $response->withoutHeader('Content-Type')->withoutHeader('Content-Length'); + } + + // Add Content-Length header if `addContentLengthHeader` setting is set + if (isset($this->container->get('settings')['addContentLengthHeader']) && + $this->container->get('settings')['addContentLengthHeader'] == true) { + if (ob_get_length() > 0) { + throw new \RuntimeException("Unexpected data in output buffer. " . + "Maybe you have characters before an opening getBody()->getSize(); + if ($size !== null && !$response->hasHeader('Content-Length')) { + $response = $response->withHeader('Content-Length', (string) $size); + } + } + + return $response; + } + + /** + * Helper method, which returns true if the provided response must not output a body and false + * if the response could have a body. + * + * @see https://tools.ietf.org/html/rfc7231 + * + * @param ResponseInterface $response + * @return bool + */ + protected function isEmptyResponse(ResponseInterface $response) + { + if (method_exists($response, 'isEmpty')) { + return $response->isEmpty(); + } + + return in_array($response->getStatusCode(), [204, 205, 304]); + } + + /** + * Call relevant handler from the Container if needed. If it doesn't exist, + * then just re-throw. + * + * @param Exception $e + * @param ServerRequestInterface $request + * @param ResponseInterface $response + * + * @return ResponseInterface + * @throws Exception if a handler is needed and not found + */ + protected function handleException(Exception $e, ServerRequestInterface $request, ResponseInterface $response) + { + if ($e instanceof MethodNotAllowedException) { + $handler = 'notAllowedHandler'; + $params = [$e->getRequest(), $e->getResponse(), $e->getAllowedMethods()]; + } elseif ($e instanceof NotFoundException) { + $handler = 'notFoundHandler'; + $params = [$e->getRequest(), $e->getResponse(), $e]; + } elseif ($e instanceof SlimException) { + // This is a Stop exception and contains the response + return $e->getResponse(); + } else { + // Other exception, use $request and $response params + $handler = 'errorHandler'; + $params = [$request, $response, $e]; + } + + if ($this->container->has($handler)) { + $callable = $this->container->get($handler); + // Call the registered handler + return call_user_func_array($callable, $params); + } + + // No handlers found, so just throw the exception + throw $e; + } + + /** + * Call relevant handler from the Container if needed. If it doesn't exist, + * then just re-throw. + * + * @param Throwable $e + * @param ServerRequestInterface $request + * @param ResponseInterface $response + * @return ResponseInterface + * @throws Throwable + */ + protected function handlePhpError(Throwable $e, ServerRequestInterface $request, ResponseInterface $response) + { + $handler = 'phpErrorHandler'; + $params = [$request, $response, $e]; + + if ($this->container->has($handler)) { + $callable = $this->container->get($handler); + // Call the registered handler + return call_user_func_array($callable, $params); + } + + // No handlers found, so just throw the exception + throw $e; + } +} diff --git a/system/vendor/slim/slim/Slim/CallableResolver.php b/system/vendor/slim/slim/Slim/CallableResolver.php new file mode 100644 index 0000000..b2ce368 --- /dev/null +++ b/system/vendor/slim/slim/Slim/CallableResolver.php @@ -0,0 +1,110 @@ +container = $container; + } + + /** + * Resolve toResolve into a closure that that the router can dispatch. + * + * If toResolve is of the format 'class:method', then try to extract 'class' + * from the container otherwise instantiate it and then dispatch 'method'. + * + * @param mixed $toResolve + * + * @return callable + * + * @throws RuntimeException if the callable does not exist + * @throws RuntimeException if the callable is not resolvable + */ + public function resolve($toResolve) + { + if (is_callable($toResolve)) { + return $toResolve; + } + + if (!is_string($toResolve)) { + $this->assertCallable($toResolve); + } + + // check for slim callable as "class:method" + if (preg_match(self::CALLABLE_PATTERN, $toResolve, $matches)) { + $resolved = $this->resolveCallable($matches[1], $matches[2]); + $this->assertCallable($resolved); + + return $resolved; + } + + $resolved = $this->resolveCallable($toResolve); + $this->assertCallable($resolved); + + return $resolved; + } + + /** + * Check if string is something in the DIC + * that's callable or is a class name which has an __invoke() method. + * + * @param string $class + * @param string $method + * @return callable + * + * @throws \RuntimeException if the callable does not exist + */ + protected function resolveCallable($class, $method = '__invoke') + { + if ($this->container->has($class)) { + return [$this->container->get($class), $method]; + } + + if (!class_exists($class)) { + throw new RuntimeException(sprintf('Callable %s does not exist', $class)); + } + + return [new $class($this->container), $method]; + } + + /** + * @param Callable $callable + * + * @throws \RuntimeException if the callable is not resolvable + */ + protected function assertCallable($callable) + { + if (!is_callable($callable)) { + throw new RuntimeException(sprintf( + '%s is not resolvable', + is_array($callable) || is_object($callable) ? json_encode($callable) : $callable + )); + } + } +} diff --git a/system/vendor/slim/slim/Slim/CallableResolverAwareTrait.php b/system/vendor/slim/slim/Slim/CallableResolverAwareTrait.php new file mode 100644 index 0000000..ffb4eb2 --- /dev/null +++ b/system/vendor/slim/slim/Slim/CallableResolverAwareTrait.php @@ -0,0 +1,47 @@ +container instanceof ContainerInterface) { + return $callable; + } + + /** @var CallableResolverInterface $resolver */ + $resolver = $this->container->get('callableResolver'); + + return $resolver->resolve($callable); + } +} diff --git a/system/vendor/slim/slim/Slim/Collection.php b/system/vendor/slim/slim/Slim/Collection.php new file mode 100644 index 0000000..728bb73 --- /dev/null +++ b/system/vendor/slim/slim/Slim/Collection.php @@ -0,0 +1,202 @@ +replace($items); + } + + /******************************************************************************** + * Collection interface + *******************************************************************************/ + + /** + * Set collection item + * + * @param string $key The data key + * @param mixed $value The data value + */ + public function set($key, $value) + { + $this->data[$key] = $value; + } + + /** + * Get collection item for key + * + * @param string $key The data key + * @param mixed $default The default value to return if data key does not exist + * + * @return mixed The key's value, or the default value + */ + public function get($key, $default = null) + { + return $this->has($key) ? $this->data[$key] : $default; + } + + /** + * Add item to collection, replacing existing items with the same data key + * + * @param array $items Key-value array of data to append to this collection + */ + public function replace(array $items) + { + foreach ($items as $key => $value) { + $this->set($key, $value); + } + } + + /** + * Get all items in collection + * + * @return array The collection's source data + */ + public function all() + { + return $this->data; + } + + /** + * Get collection keys + * + * @return array The collection's source data keys + */ + public function keys() + { + return array_keys($this->data); + } + + /** + * Does this collection have a given key? + * + * @param string $key The data key + * + * @return bool + */ + public function has($key) + { + return array_key_exists($key, $this->data); + } + + /** + * Remove item from collection + * + * @param string $key The data key + */ + public function remove($key) + { + unset($this->data[$key]); + } + + /** + * Remove all items from collection + */ + public function clear() + { + $this->data = []; + } + + /******************************************************************************** + * ArrayAccess interface + *******************************************************************************/ + + /** + * Does this collection have a given key? + * + * @param string $key The data key + * + * @return bool + */ + public function offsetExists($key) + { + return $this->has($key); + } + + /** + * Get collection item for key + * + * @param string $key The data key + * + * @return mixed The key's value, or the default value + */ + public function offsetGet($key) + { + return $this->get($key); + } + + /** + * Set collection item + * + * @param string $key The data key + * @param mixed $value The data value + */ + public function offsetSet($key, $value) + { + $this->set($key, $value); + } + + /** + * Remove item from collection + * + * @param string $key The data key + */ + public function offsetUnset($key) + { + $this->remove($key); + } + + /** + * Get number of items in collection + * + * @return int + */ + public function count() + { + return count($this->data); + } + + /******************************************************************************** + * IteratorAggregate interface + *******************************************************************************/ + + /** + * Get collection iterator + * + * @return \ArrayIterator + */ + public function getIterator() + { + return new ArrayIterator($this->data); + } +} diff --git a/system/vendor/slim/slim/Slim/Container.php b/system/vendor/slim/slim/Slim/Container.php new file mode 100644 index 0000000..ac0d917 --- /dev/null +++ b/system/vendor/slim/slim/Slim/Container.php @@ -0,0 +1,179 @@ + '1.1', + 'responseChunkSize' => 4096, + 'outputBuffering' => 'append', + 'determineRouteBeforeAppMiddleware' => false, + 'displayErrorDetails' => false, + 'addContentLengthHeader' => true, + 'routerCacheFile' => false, + ]; + + /** + * Create new container + * + * @param array $values The parameters or objects. + */ + public function __construct(array $values = []) + { + parent::__construct($values); + + $userSettings = isset($values['settings']) ? $values['settings'] : []; + $this->registerDefaultServices($userSettings); + } + + /** + * This function registers the default services that Slim needs to work. + * + * All services are shared - that is, they are registered such that the + * same instance is returned on subsequent calls. + * + * @param array $userSettings Associative array of application settings + * + * @return void + */ + private function registerDefaultServices($userSettings) + { + $defaultSettings = $this->defaultSettings; + + /** + * This service MUST return an array or an + * instance of \ArrayAccess. + * + * @return array|\ArrayAccess + */ + $this['settings'] = function () use ($userSettings, $defaultSettings) { + return new Collection(array_merge($defaultSettings, $userSettings)); + }; + + $defaultProvider = new DefaultServicesProvider(); + $defaultProvider->register($this); + } + + /******************************************************************************** + * Methods to satisfy Interop\Container\ContainerInterface + *******************************************************************************/ + + /** + * Finds an entry of the container by its identifier and returns it. + * + * @param string $id Identifier of the entry to look for. + * + * @throws ContainerValueNotFoundException No entry was found for this identifier. + * @throws ContainerException Error while retrieving the entry. + * + * @return mixed Entry. + */ + public function get($id) + { + if (!$this->offsetExists($id)) { + throw new ContainerValueNotFoundException(sprintf('Identifier "%s" is not defined.', $id)); + } + try { + return $this->offsetGet($id); + } catch (\InvalidArgumentException $exception) { + if ($this->exceptionThrownByContainer($exception)) { + throw new SlimContainerException( + sprintf('Container error while retrieving "%s"', $id), + null, + $exception + ); + } else { + throw $exception; + } + } + } + + /** + * Tests whether an exception needs to be recast for compliance with Container-Interop. This will be if the + * exception was thrown by Pimple. + * + * @param \InvalidArgumentException $exception + * + * @return bool + */ + private function exceptionThrownByContainer(\InvalidArgumentException $exception) + { + $trace = $exception->getTrace()[0]; + + return $trace['class'] === PimpleContainer::class && $trace['function'] === 'offsetGet'; + } + + /** + * Returns true if the container can return an entry for the given identifier. + * Returns false otherwise. + * + * @param string $id Identifier of the entry to look for. + * + * @return boolean + */ + public function has($id) + { + return $this->offsetExists($id); + } + + + /******************************************************************************** + * Magic methods for convenience + *******************************************************************************/ + + public function __get($name) + { + return $this->get($name); + } + + public function __isset($name) + { + return $this->has($name); + } +} diff --git a/system/vendor/slim/slim/Slim/DefaultServicesProvider.php b/system/vendor/slim/slim/Slim/DefaultServicesProvider.php new file mode 100644 index 0000000..7087e4e --- /dev/null +++ b/system/vendor/slim/slim/Slim/DefaultServicesProvider.php @@ -0,0 +1,209 @@ +get('environment')); + }; + } + + if (!isset($container['response'])) { + /** + * PSR-7 Response object + * + * @param Container $container + * + * @return ResponseInterface + */ + $container['response'] = function ($container) { + $headers = new Headers(['Content-Type' => 'text/html; charset=UTF-8']); + $response = new Response(200, $headers); + + return $response->withProtocolVersion($container->get('settings')['httpVersion']); + }; + } + + if (!isset($container['router'])) { + /** + * This service MUST return a SHARED instance + * of \Slim\Interfaces\RouterInterface. + * + * @param Container $container + * + * @return RouterInterface + */ + $container['router'] = function ($container) { + $routerCacheFile = false; + if (isset($container->get('settings')['routerCacheFile'])) { + $routerCacheFile = $container->get('settings')['routerCacheFile']; + } + + + $router = (new Router)->setCacheFile($routerCacheFile); + if (method_exists($router, 'setContainer')) { + $router->setContainer($container); + } + + return $router; + }; + } + + if (!isset($container['foundHandler'])) { + /** + * This service MUST return a SHARED instance + * of \Slim\Interfaces\InvocationStrategyInterface. + * + * @return InvocationStrategyInterface + */ + $container['foundHandler'] = function () { + return new RequestResponse; + }; + } + + if (!isset($container['phpErrorHandler'])) { + /** + * This service MUST return a callable + * that accepts three arguments: + * + * 1. Instance of \Psr\Http\Message\ServerRequestInterface + * 2. Instance of \Psr\Http\Message\ResponseInterface + * 3. Instance of \Error + * + * The callable MUST return an instance of + * \Psr\Http\Message\ResponseInterface. + * + * @param Container $container + * + * @return callable + */ + $container['phpErrorHandler'] = function ($container) { + return new PhpError($container->get('settings')['displayErrorDetails']); + }; + } + + if (!isset($container['errorHandler'])) { + /** + * This service MUST return a callable + * that accepts three arguments: + * + * 1. Instance of \Psr\Http\Message\ServerRequestInterface + * 2. Instance of \Psr\Http\Message\ResponseInterface + * 3. Instance of \Exception + * + * The callable MUST return an instance of + * \Psr\Http\Message\ResponseInterface. + * + * @param Container $container + * + * @return callable + */ + $container['errorHandler'] = function ($container) { + return new Error($container->get('settings')['displayErrorDetails']); + }; + } + + if (!isset($container['notFoundHandler'])) { + /** + * This service MUST return a callable + * that accepts two arguments: + * + * 1. Instance of \Psr\Http\Message\ServerRequestInterface + * 2. Instance of \Psr\Http\Message\ResponseInterface + * + * The callable MUST return an instance of + * \Psr\Http\Message\ResponseInterface. + * + * @return callable + */ + $container['notFoundHandler'] = function () { + return new NotFound; + }; + } + + if (!isset($container['notAllowedHandler'])) { + /** + * This service MUST return a callable + * that accepts three arguments: + * + * 1. Instance of \Psr\Http\Message\ServerRequestInterface + * 2. Instance of \Psr\Http\Message\ResponseInterface + * 3. Array of allowed HTTP methods + * + * The callable MUST return an instance of + * \Psr\Http\Message\ResponseInterface. + * + * @return callable + */ + $container['notAllowedHandler'] = function () { + return new NotAllowed; + }; + } + + if (!isset($container['callableResolver'])) { + /** + * Instance of \Slim\Interfaces\CallableResolverInterface + * + * @param Container $container + * + * @return CallableResolverInterface + */ + $container['callableResolver'] = function ($container) { + return new CallableResolver($container); + }; + } + } +} diff --git a/system/vendor/slim/slim/Slim/DeferredCallable.php b/system/vendor/slim/slim/Slim/DeferredCallable.php new file mode 100644 index 0000000..22887c0 --- /dev/null +++ b/system/vendor/slim/slim/Slim/DeferredCallable.php @@ -0,0 +1,45 @@ +callable = $callable; + $this->container = $container; + } + + public function __invoke() + { + $callable = $this->resolveCallable($this->callable); + if ($callable instanceof Closure) { + $callable = $callable->bindTo($this->container); + } + + $args = func_get_args(); + + return call_user_func_array($callable, $args); + } +} diff --git a/system/vendor/slim/slim/Slim/Exception/ContainerException.php b/system/vendor/slim/slim/Slim/Exception/ContainerException.php new file mode 100644 index 0000000..b147eb9 --- /dev/null +++ b/system/vendor/slim/slim/Slim/Exception/ContainerException.php @@ -0,0 +1,20 @@ +request = $request; + parent::__construct(sprintf('Unsupported HTTP method "%s" provided', $method)); + } + + public function getRequest() + { + return $this->request; + } +} diff --git a/system/vendor/slim/slim/Slim/Exception/MethodNotAllowedException.php b/system/vendor/slim/slim/Slim/Exception/MethodNotAllowedException.php new file mode 100644 index 0000000..e73b99e --- /dev/null +++ b/system/vendor/slim/slim/Slim/Exception/MethodNotAllowedException.php @@ -0,0 +1,45 @@ +allowedMethods = $allowedMethods; + } + + /** + * Get allowed methods + * + * @return string[] + */ + public function getAllowedMethods() + { + return $this->allowedMethods; + } +} diff --git a/system/vendor/slim/slim/Slim/Exception/NotFoundException.php b/system/vendor/slim/slim/Slim/Exception/NotFoundException.php new file mode 100644 index 0000000..8095eac --- /dev/null +++ b/system/vendor/slim/slim/Slim/Exception/NotFoundException.php @@ -0,0 +1,14 @@ +request = $request; + $this->response = $response; + } + + /** + * Get request + * + * @return ServerRequestInterface + */ + public function getRequest() + { + return $this->request; + } + + /** + * Get response + * + * @return ResponseInterface + */ + public function getResponse() + { + return $this->response; + } +} diff --git a/system/vendor/slim/slim/Slim/Handlers/AbstractError.php b/system/vendor/slim/slim/Slim/Handlers/AbstractError.php new file mode 100644 index 0000000..42f8dde --- /dev/null +++ b/system/vendor/slim/slim/Slim/Handlers/AbstractError.php @@ -0,0 +1,99 @@ +displayErrorDetails = (bool) $displayErrorDetails; + } + + /** + * Write to the error log if displayErrorDetails is false + * + * @param \Exception|\Throwable $throwable + * + * @return void + */ + protected function writeToErrorLog($throwable) + { + if ($this->displayErrorDetails) { + return; + } + + $message = 'Slim Application Error:' . PHP_EOL; + $message .= $this->renderThrowableAsText($throwable); + while ($throwable = $throwable->getPrevious()) { + $message .= PHP_EOL . 'Previous error:' . PHP_EOL; + $message .= $this->renderThrowableAsText($throwable); + } + + $message .= PHP_EOL . 'View in rendered output by enabling the "displayErrorDetails" setting.' . PHP_EOL; + + $this->logError($message); + } + + /** + * Render error as Text. + * + * @param \Exception|\Throwable $throwable + * + * @return string + */ + protected function renderThrowableAsText($throwable) + { + $text = sprintf('Type: %s' . PHP_EOL, get_class($throwable)); + + if ($code = $throwable->getCode()) { + $text .= sprintf('Code: %s' . PHP_EOL, $code); + } + + if ($message = $throwable->getMessage()) { + $text .= sprintf('Message: %s' . PHP_EOL, htmlentities($message)); + } + + if ($file = $throwable->getFile()) { + $text .= sprintf('File: %s' . PHP_EOL, $file); + } + + if ($line = $throwable->getLine()) { + $text .= sprintf('Line: %s' . PHP_EOL, $line); + } + + if ($trace = $throwable->getTraceAsString()) { + $text .= sprintf('Trace: %s', $trace); + } + + return $text; + } + + /** + * Wraps the error_log function so that this can be easily tested + * + * @param $message + */ + protected function logError($message) + { + error_log($message); + } +} diff --git a/system/vendor/slim/slim/Slim/Handlers/AbstractHandler.php b/system/vendor/slim/slim/Slim/Handlers/AbstractHandler.php new file mode 100644 index 0000000..b166a15 --- /dev/null +++ b/system/vendor/slim/slim/Slim/Handlers/AbstractHandler.php @@ -0,0 +1,59 @@ +getHeaderLine('Accept'); + $selectedContentTypes = array_intersect(explode(',', $acceptHeader), $this->knownContentTypes); + + if (count($selectedContentTypes)) { + return current($selectedContentTypes); + } + + // handle +json and +xml specially + if (preg_match('/\+(json|xml)/', $acceptHeader, $matches)) { + $mediaType = 'application/' . $matches[1]; + if (in_array($mediaType, $this->knownContentTypes)) { + return $mediaType; + } + } + + return 'text/html'; + } +} diff --git a/system/vendor/slim/slim/Slim/Handlers/Error.php b/system/vendor/slim/slim/Slim/Handlers/Error.php new file mode 100644 index 0000000..dd0bc8d --- /dev/null +++ b/system/vendor/slim/slim/Slim/Handlers/Error.php @@ -0,0 +1,224 @@ +determineContentType($request); + switch ($contentType) { + case 'application/json': + $output = $this->renderJsonErrorMessage($exception); + break; + + case 'text/xml': + case 'application/xml': + $output = $this->renderXmlErrorMessage($exception); + break; + + case 'text/html': + $output = $this->renderHtmlErrorMessage($exception); + break; + + default: + throw new UnexpectedValueException('Cannot render unknown content type ' . $contentType); + } + + $this->writeToErrorLog($exception); + + $body = new Body(fopen('php://temp', 'r+')); + $body->write($output); + + return $response + ->withStatus(500) + ->withHeader('Content-type', $contentType) + ->withBody($body); + } + + /** + * Render HTML error page + * + * @param \Exception $exception + * + * @return string + */ + protected function renderHtmlErrorMessage(\Exception $exception) + { + $title = 'Slim Application Error'; + + if ($this->displayErrorDetails) { + $html = '

    The application could not run because of the following error:

    '; + $html .= '

    Details

    '; + $html .= $this->renderHtmlException($exception); + + while ($exception = $exception->getPrevious()) { + $html .= '

    Previous exception

    '; + $html .= $this->renderHtmlExceptionOrError($exception); + } + } else { + $html = '

    A website error has occurred. Sorry for the temporary inconvenience.

    '; + } + + $output = sprintf( + "" . + "%s

    %s

    %s", + $title, + $title, + $html + ); + + return $output; + } + + /** + * Render exception as HTML. + * + * Provided for backwards compatibility; use renderHtmlExceptionOrError(). + * + * @param \Exception $exception + * + * @return string + */ + protected function renderHtmlException(\Exception $exception) + { + return $this->renderHtmlExceptionOrError($exception); + } + + /** + * Render exception or error as HTML. + * + * @param \Exception|\Error $exception + * + * @return string + */ + protected function renderHtmlExceptionOrError($exception) + { + if (!$exception instanceof \Exception && !$exception instanceof \Error) { + throw new \RuntimeException("Unexpected type. Expected Exception or Error."); + } + + $html = sprintf('
    Type: %s
    ', get_class($exception)); + + if (($code = $exception->getCode())) { + $html .= sprintf('
    Code: %s
    ', $code); + } + + if (($message = $exception->getMessage())) { + $html .= sprintf('
    Message: %s
    ', htmlentities($message)); + } + + if (($file = $exception->getFile())) { + $html .= sprintf('
    File: %s
    ', $file); + } + + if (($line = $exception->getLine())) { + $html .= sprintf('
    Line: %s
    ', $line); + } + + if (($trace = $exception->getTraceAsString())) { + $html .= '

    Trace

    '; + $html .= sprintf('
    %s
    ', htmlentities($trace)); + } + + return $html; + } + + /** + * Render JSON error + * + * @param \Exception $exception + * + * @return string + */ + protected function renderJsonErrorMessage(\Exception $exception) + { + $error = [ + 'message' => 'Slim Application Error', + ]; + + if ($this->displayErrorDetails) { + $error['exception'] = []; + + do { + $error['exception'][] = [ + 'type' => get_class($exception), + 'code' => $exception->getCode(), + 'message' => $exception->getMessage(), + 'file' => $exception->getFile(), + 'line' => $exception->getLine(), + 'trace' => explode("\n", $exception->getTraceAsString()), + ]; + } while ($exception = $exception->getPrevious()); + } + + return json_encode($error, JSON_PRETTY_PRINT); + } + + /** + * Render XML error + * + * @param \Exception $exception + * + * @return string + */ + protected function renderXmlErrorMessage(\Exception $exception) + { + $xml = "\n Slim Application Error\n"; + if ($this->displayErrorDetails) { + do { + $xml .= " \n"; + $xml .= " " . get_class($exception) . "\n"; + $xml .= " " . $exception->getCode() . "\n"; + $xml .= " " . $this->createCdataSection($exception->getMessage()) . "\n"; + $xml .= " " . $exception->getFile() . "\n"; + $xml .= " " . $exception->getLine() . "\n"; + $xml .= " " . $this->createCdataSection($exception->getTraceAsString()) . "\n"; + $xml .= " \n"; + } while ($exception = $exception->getPrevious()); + } + $xml .= ""; + + return $xml; + } + + /** + * Returns a CDATA section with the given content. + * + * @param string $content + * @return string + */ + private function createCdataSection($content) + { + return sprintf('', str_replace(']]>', ']]]]>', $content)); + } +} diff --git a/system/vendor/slim/slim/Slim/Handlers/NotAllowed.php b/system/vendor/slim/slim/Slim/Handlers/NotAllowed.php new file mode 100644 index 0000000..9f382c4 --- /dev/null +++ b/system/vendor/slim/slim/Slim/Handlers/NotAllowed.php @@ -0,0 +1,147 @@ +getMethod() === 'OPTIONS') { + $status = 200; + $contentType = 'text/plain'; + $output = $this->renderPlainNotAllowedMessage($methods); + } else { + $status = 405; + $contentType = $this->determineContentType($request); + switch ($contentType) { + case 'application/json': + $output = $this->renderJsonNotAllowedMessage($methods); + break; + + case 'text/xml': + case 'application/xml': + $output = $this->renderXmlNotAllowedMessage($methods); + break; + + case 'text/html': + $output = $this->renderHtmlNotAllowedMessage($methods); + break; + default: + throw new UnexpectedValueException('Cannot render unknown content type ' . $contentType); + } + } + + $body = new Body(fopen('php://temp', 'r+')); + $body->write($output); + $allow = implode(', ', $methods); + + return $response + ->withStatus($status) + ->withHeader('Content-type', $contentType) + ->withHeader('Allow', $allow) + ->withBody($body); + } + + /** + * Render PLAIN not allowed message + * + * @param array $methods + * @return string + */ + protected function renderPlainNotAllowedMessage($methods) + { + $allow = implode(', ', $methods); + + return 'Allowed methods: ' . $allow; + } + + /** + * Render JSON not allowed message + * + * @param array $methods + * @return string + */ + protected function renderJsonNotAllowedMessage($methods) + { + $allow = implode(', ', $methods); + + return '{"message":"Method not allowed. Must be one of: ' . $allow . '"}'; + } + + /** + * Render XML not allowed message + * + * @param array $methods + * @return string + */ + protected function renderXmlNotAllowedMessage($methods) + { + $allow = implode(', ', $methods); + + return "Method not allowed. Must be one of: $allow"; + } + + /** + * Render HTML not allowed message + * + * @param array $methods + * @return string + */ + protected function renderHtmlNotAllowedMessage($methods) + { + $allow = implode(', ', $methods); + $output = << + + Method not allowed + + + +

    Method not allowed

    +

    Method not allowed. Must be one of: $allow

    + + +END; + + return $output; + } +} diff --git a/system/vendor/slim/slim/Slim/Handlers/NotFound.php b/system/vendor/slim/slim/Slim/Handlers/NotFound.php new file mode 100644 index 0000000..d4a9dec --- /dev/null +++ b/system/vendor/slim/slim/Slim/Handlers/NotFound.php @@ -0,0 +1,126 @@ +determineContentType($request); + switch ($contentType) { + case 'application/json': + $output = $this->renderJsonNotFoundOutput(); + break; + + case 'text/xml': + case 'application/xml': + $output = $this->renderXmlNotFoundOutput(); + break; + + case 'text/html': + $output = $this->renderHtmlNotFoundOutput($request); + break; + + default: + throw new UnexpectedValueException('Cannot render unknown content type ' . $contentType); + } + + $body = new Body(fopen('php://temp', 'r+')); + $body->write($output); + + return $response->withStatus(404) + ->withHeader('Content-Type', $contentType) + ->withBody($body); + } + + /** + * Return a response for application/json content not found + * + * @return ResponseInterface + */ + protected function renderJsonNotFoundOutput() + { + return '{"message":"Not found"}'; + } + + /** + * Return a response for xml content not found + * + * @return ResponseInterface + */ + protected function renderXmlNotFoundOutput() + { + return 'Not found'; + } + + /** + * Return a response for text/html content not found + * + * @param ServerRequestInterface $request The most recent Request object + * + * @return ResponseInterface + */ + protected function renderHtmlNotFoundOutput(ServerRequestInterface $request) + { + $homeUrl = (string)($request->getUri()->withPath('')->withQuery('')->withFragment('')); + return << + + Page Not Found + + + +

    Page Not Found

    +

    + The page you are looking for could not be found. Check the address bar + to ensure your URL is spelled correctly. If all else fails, you can + visit our home page at the link below. +

    + Visit the Home Page + + +END; + } +} diff --git a/system/vendor/slim/slim/Slim/Handlers/PhpError.php b/system/vendor/slim/slim/Slim/Handlers/PhpError.php new file mode 100644 index 0000000..3ecce30 --- /dev/null +++ b/system/vendor/slim/slim/Slim/Handlers/PhpError.php @@ -0,0 +1,205 @@ +determineContentType($request); + switch ($contentType) { + case 'application/json': + $output = $this->renderJsonErrorMessage($error); + break; + + case 'text/xml': + case 'application/xml': + $output = $this->renderXmlErrorMessage($error); + break; + + case 'text/html': + $output = $this->renderHtmlErrorMessage($error); + break; + default: + throw new UnexpectedValueException('Cannot render unknown content type ' . $contentType); + } + + $this->writeToErrorLog($error); + + $body = new Body(fopen('php://temp', 'r+')); + $body->write($output); + + return $response + ->withStatus(500) + ->withHeader('Content-type', $contentType) + ->withBody($body); + } + + /** + * Render HTML error page + * + * @param \Throwable $error + * + * @return string + */ + protected function renderHtmlErrorMessage(\Throwable $error) + { + $title = 'Slim Application Error'; + + if ($this->displayErrorDetails) { + $html = '

    The application could not run because of the following error:

    '; + $html .= '

    Details

    '; + $html .= $this->renderHtmlError($error); + + while ($error = $error->getPrevious()) { + $html .= '

    Previous error

    '; + $html .= $this->renderHtmlError($error); + } + } else { + $html = '

    A website error has occurred. Sorry for the temporary inconvenience.

    '; + } + + $output = sprintf( + "" . + "%s

    %s

    %s", + $title, + $title, + $html + ); + + return $output; + } + + /** + * Render error as HTML. + * + * @param \Throwable $error + * + * @return string + */ + protected function renderHtmlError(\Throwable $error) + { + $html = sprintf('
    Type: %s
    ', get_class($error)); + + if (($code = $error->getCode())) { + $html .= sprintf('
    Code: %s
    ', $code); + } + + if (($message = $error->getMessage())) { + $html .= sprintf('
    Message: %s
    ', htmlentities($message)); + } + + if (($file = $error->getFile())) { + $html .= sprintf('
    File: %s
    ', $file); + } + + if (($line = $error->getLine())) { + $html .= sprintf('
    Line: %s
    ', $line); + } + + if (($trace = $error->getTraceAsString())) { + $html .= '

    Trace

    '; + $html .= sprintf('
    %s
    ', htmlentities($trace)); + } + + return $html; + } + + /** + * Render JSON error + * + * @param \Throwable $error + * + * @return string + */ + protected function renderJsonErrorMessage(\Throwable $error) + { + $json = [ + 'message' => 'Slim Application Error', + ]; + + if ($this->displayErrorDetails) { + $json['error'] = []; + + do { + $json['error'][] = [ + 'type' => get_class($error), + 'code' => $error->getCode(), + 'message' => $error->getMessage(), + 'file' => $error->getFile(), + 'line' => $error->getLine(), + 'trace' => explode("\n", $error->getTraceAsString()), + ]; + } while ($error = $error->getPrevious()); + } + + return json_encode($json, JSON_PRETTY_PRINT); + } + + /** + * Render XML error + * + * @param \Throwable $error + * + * @return string + */ + protected function renderXmlErrorMessage(\Throwable $error) + { + $xml = "\n Slim Application Error\n"; + if ($this->displayErrorDetails) { + do { + $xml .= " \n"; + $xml .= " " . get_class($error) . "\n"; + $xml .= " " . $error->getCode() . "\n"; + $xml .= " " . $this->createCdataSection($error->getMessage()) . "\n"; + $xml .= " " . $error->getFile() . "\n"; + $xml .= " " . $error->getLine() . "\n"; + $xml .= " " . $this->createCdataSection($error->getTraceAsString()) . "\n"; + $xml .= " \n"; + } while ($error = $error->getPrevious()); + } + $xml .= ""; + + return $xml; + } + + /** + * Returns a CDATA section with the given content. + * + * @param string $content + * @return string + */ + private function createCdataSection($content) + { + return sprintf('', str_replace(']]>', ']]]]>', $content)); + } +} diff --git a/system/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php b/system/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php new file mode 100644 index 0000000..ad99b56 --- /dev/null +++ b/system/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponse.php @@ -0,0 +1,43 @@ + $v) { + $request = $request->withAttribute($k, $v); + } + + return call_user_func($callable, $request, $response, $routeArguments); + } +} diff --git a/system/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php b/system/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php new file mode 100644 index 0000000..739cc7e --- /dev/null +++ b/system/vendor/slim/slim/Slim/Handlers/Strategies/RequestResponseArgs.php @@ -0,0 +1,42 @@ + '', + 'domain' => null, + 'hostonly' => null, + 'path' => null, + 'expires' => null, + 'secure' => false, + 'httponly' => false + ]; + + /** + * Create new cookies helper + * + * @param array $cookies + */ + public function __construct(array $cookies = []) + { + $this->requestCookies = $cookies; + } + + /** + * Set default cookie properties + * + * @param array $settings + */ + public function setDefaults(array $settings) + { + $this->defaults = array_replace($this->defaults, $settings); + } + + /** + * Get request cookie + * + * @param string $name Cookie name + * @param mixed $default Cookie default value + * + * @return mixed Cookie value if present, else default + */ + public function get($name, $default = null) + { + return isset($this->requestCookies[$name]) ? $this->requestCookies[$name] : $default; + } + + /** + * Set response cookie + * + * @param string $name Cookie name + * @param string|array $value Cookie value, or cookie properties + */ + public function set($name, $value) + { + if (!is_array($value)) { + $value = ['value' => (string)$value]; + } + $this->responseCookies[$name] = array_replace($this->defaults, $value); + } + + /** + * Convert to `Set-Cookie` headers + * + * @return string[] + */ + public function toHeaders() + { + $headers = []; + foreach ($this->responseCookies as $name => $properties) { + $headers[] = $this->toHeader($name, $properties); + } + + return $headers; + } + + /** + * Convert to `Set-Cookie` header + * + * @param string $name Cookie name + * @param array $properties Cookie properties + * + * @return string + */ + protected function toHeader($name, array $properties) + { + $result = urlencode($name) . '=' . urlencode($properties['value']); + + if (isset($properties['domain'])) { + $result .= '; domain=' . $properties['domain']; + } + + if (isset($properties['path'])) { + $result .= '; path=' . $properties['path']; + } + + if (isset($properties['expires'])) { + if (is_string($properties['expires'])) { + $timestamp = strtotime($properties['expires']); + } else { + $timestamp = (int)$properties['expires']; + } + if ($timestamp !== 0) { + $result .= '; expires=' . gmdate('D, d-M-Y H:i:s e', $timestamp); + } + } + + if (isset($properties['secure']) && $properties['secure']) { + $result .= '; secure'; + } + + if (isset($properties['hostonly']) && $properties['hostonly']) { + $result .= '; HostOnly'; + } + + if (isset($properties['httponly']) && $properties['httponly']) { + $result .= '; HttpOnly'; + } + + return $result; + } + + /** + * Parse HTTP request `Cookie:` header and extract + * into a PHP associative array. + * + * @param string $header The raw HTTP request `Cookie:` header + * + * @return array Associative array of cookie names and values + * + * @throws InvalidArgumentException if the cookie data cannot be parsed + */ + public static function parseHeader($header) + { + if (is_array($header) === true) { + $header = isset($header[0]) ? $header[0] : ''; + } + + if (is_string($header) === false) { + throw new InvalidArgumentException('Cannot parse Cookie data. Header value must be a string.'); + } + + $header = rtrim($header, "\r\n"); + $pieces = preg_split('@[;]\s*@', $header); + $cookies = []; + + foreach ($pieces as $cookie) { + $cookie = explode('=', $cookie, 2); + + if (count($cookie) === 2) { + $key = urldecode($cookie[0]); + $value = urldecode($cookie[1]); + + if (!isset($cookies[$key])) { + $cookies[$key] = $value; + } + } + } + + return $cookies; + } +} diff --git a/system/vendor/slim/slim/Slim/Http/Environment.php b/system/vendor/slim/slim/Slim/Http/Environment.php new file mode 100644 index 0000000..786dc0a --- /dev/null +++ b/system/vendor/slim/slim/Slim/Http/Environment.php @@ -0,0 +1,52 @@ + 'HTTP/1.1', + 'REQUEST_METHOD' => 'GET', + 'SCRIPT_NAME' => '', + 'REQUEST_URI' => '', + 'QUERY_STRING' => '', + 'SERVER_NAME' => 'localhost', + 'SERVER_PORT' => 80, + 'HTTP_HOST' => 'localhost', + 'HTTP_ACCEPT' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', + 'HTTP_ACCEPT_LANGUAGE' => 'en-US,en;q=0.8', + 'HTTP_ACCEPT_CHARSET' => 'ISO-8859-1,utf-8;q=0.7,*;q=0.3', + 'HTTP_USER_AGENT' => 'Slim Framework', + 'REMOTE_ADDR' => '127.0.0.1', + 'REQUEST_TIME' => time(), + 'REQUEST_TIME_FLOAT' => microtime(true), + ], $userData); + + return new static($data); + } +} diff --git a/system/vendor/slim/slim/Slim/Http/Headers.php b/system/vendor/slim/slim/Slim/Http/Headers.php new file mode 100644 index 0000000..f8c4ac1 --- /dev/null +++ b/system/vendor/slim/slim/Slim/Http/Headers.php @@ -0,0 +1,222 @@ + 1, + 'CONTENT_LENGTH' => 1, + 'PHP_AUTH_USER' => 1, + 'PHP_AUTH_PW' => 1, + 'PHP_AUTH_DIGEST' => 1, + 'AUTH_TYPE' => 1, + ]; + + /** + * Create new headers collection with data extracted from + * the application Environment object + * + * @param Environment $environment The Slim application Environment + * + * @return self + */ + public static function createFromEnvironment(Environment $environment) + { + $data = []; + $environment = self::determineAuthorization($environment); + foreach ($environment as $key => $value) { + $key = strtoupper($key); + if (isset(static::$special[$key]) || strpos($key, 'HTTP_') === 0) { + if ($key !== 'HTTP_CONTENT_LENGTH') { + $data[$key] = $value; + } + } + } + + return new static($data); + } + + /** + * If HTTP_AUTHORIZATION does not exist tries to get it from + * getallheaders() when available. + * + * @param Environment $environment The Slim application Environment + * + * @return Environment + */ + + public static function determineAuthorization(Environment $environment) + { + $authorization = $environment->get('HTTP_AUTHORIZATION'); + + if (null === $authorization && is_callable('getallheaders')) { + $headers = getallheaders(); + $headers = array_change_key_case($headers, CASE_LOWER); + if (isset($headers['authorization'])) { + $environment->set('HTTP_AUTHORIZATION', $headers['authorization']); + } + } + + return $environment; + } + + /** + * Return array of HTTP header names and values. + * This method returns the _original_ header name + * as specified by the end user. + * + * @return array + */ + public function all() + { + $all = parent::all(); + $out = []; + foreach ($all as $key => $props) { + $out[$props['originalKey']] = $props['value']; + } + + return $out; + } + + /** + * Set HTTP header value + * + * This method sets a header value. It replaces + * any values that may already exist for the header name. + * + * @param string $key The case-insensitive header name + * @param string $value The header value + */ + public function set($key, $value) + { + if (!is_array($value)) { + $value = [$value]; + } + parent::set($this->normalizeKey($key), [ + 'value' => $value, + 'originalKey' => $key + ]); + } + + /** + * Get HTTP header value + * + * @param string $key The case-insensitive header name + * @param mixed $default The default value if key does not exist + * + * @return string[] + */ + public function get($key, $default = null) + { + if ($this->has($key)) { + return parent::get($this->normalizeKey($key))['value']; + } + + return $default; + } + + /** + * Get HTTP header key as originally specified + * + * @param string $key The case-insensitive header name + * @param mixed $default The default value if key does not exist + * + * @return string + */ + public function getOriginalKey($key, $default = null) + { + if ($this->has($key)) { + return parent::get($this->normalizeKey($key))['originalKey']; + } + + return $default; + } + + /** + * Add HTTP header value + * + * This method appends a header value. Unlike the set() method, + * this method _appends_ this new value to any values + * that already exist for this header name. + * + * @param string $key The case-insensitive header name + * @param array|string $value The new header value(s) + */ + public function add($key, $value) + { + $oldValues = $this->get($key, []); + $newValues = is_array($value) ? $value : [$value]; + $this->set($key, array_merge($oldValues, array_values($newValues))); + } + + /** + * Does this collection have a given header? + * + * @param string $key The case-insensitive header name + * + * @return bool + */ + public function has($key) + { + return parent::has($this->normalizeKey($key)); + } + + /** + * Remove header from collection + * + * @param string $key The case-insensitive header name + */ + public function remove($key) + { + parent::remove($this->normalizeKey($key)); + } + + /** + * Normalize header name + * + * This method transforms header names into a + * normalized form. This is how we enable case-insensitive + * header names in the other methods in this class. + * + * @param string $key The case-insensitive header name + * + * @return string Normalized header name + */ + public function normalizeKey($key) + { + $key = strtr(strtolower($key), '_', '-'); + if (strpos($key, 'http-') === 0) { + $key = substr($key, 5); + } + + return $key; + } +} diff --git a/system/vendor/slim/slim/Slim/Http/Message.php b/system/vendor/slim/slim/Slim/Http/Message.php new file mode 100644 index 0000000..d02a43c --- /dev/null +++ b/system/vendor/slim/slim/Slim/Http/Message.php @@ -0,0 +1,304 @@ + true, + '1.1' => true, + '2.0' => true, + ]; + + /** + * Headers + * + * @var \Slim\Interfaces\Http\HeadersInterface + */ + protected $headers; + + /** + * Body object + * + * @var \Psr\Http\Message\StreamInterface + */ + protected $body; + + + /** + * Disable magic setter to ensure immutability + */ + public function __set($name, $value) + { + // Do nothing + } + + /******************************************************************************* + * Protocol + ******************************************************************************/ + + /** + * Retrieves the HTTP protocol version as a string. + * + * The string MUST contain only the HTTP version number (e.g., "1.1", "1.0"). + * + * @return string HTTP protocol version. + */ + public function getProtocolVersion() + { + return $this->protocolVersion; + } + + /** + * Return an instance with the specified HTTP protocol version. + * + * The version string MUST contain only the HTTP version number (e.g., + * "1.1", "1.0"). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * new protocol version. + * + * @param string $version HTTP protocol version + * @return static + * @throws InvalidArgumentException if the http version is an invalid number + */ + public function withProtocolVersion($version) + { + if (!isset(self::$validProtocolVersions[$version])) { + throw new InvalidArgumentException( + 'Invalid HTTP version. Must be one of: ' + . implode(', ', array_keys(self::$validProtocolVersions)) + ); + } + $clone = clone $this; + $clone->protocolVersion = $version; + + return $clone; + } + + /******************************************************************************* + * Headers + ******************************************************************************/ + + /** + * Retrieves all message header values. + * + * The keys represent the header name as it will be sent over the wire, and + * each value is an array of strings associated with the header. + * + * // Represent the headers as a string + * foreach ($message->getHeaders() as $name => $values) { + * echo $name . ": " . implode(", ", $values); + * } + * + * // Emit headers iteratively: + * foreach ($message->getHeaders() as $name => $values) { + * foreach ($values as $value) { + * header(sprintf('%s: %s', $name, $value), false); + * } + * } + * + * While header names are not case-sensitive, getHeaders() will preserve the + * exact case in which headers were originally specified. + * + * @return array Returns an associative array of the message's headers. Each + * key MUST be a header name, and each value MUST be an array of strings + * for that header. + */ + public function getHeaders() + { + return $this->headers->all(); + } + + /** + * Checks if a header exists by the given case-insensitive name. + * + * @param string $name Case-insensitive header field name. + * @return bool Returns true if any header names match the given header + * name using a case-insensitive string comparison. Returns false if + * no matching header name is found in the message. + */ + public function hasHeader($name) + { + return $this->headers->has($name); + } + + /** + * Retrieves a message header value by the given case-insensitive name. + * + * This method returns an array of all the header values of the given + * case-insensitive header name. + * + * If the header does not appear in the message, this method MUST return an + * empty array. + * + * @param string $name Case-insensitive header field name. + * @return string[] An array of string values as provided for the given + * header. If the header does not appear in the message, this method MUST + * return an empty array. + */ + public function getHeader($name) + { + return $this->headers->get($name, []); + } + + /** + * Retrieves a comma-separated string of the values for a single header. + * + * This method returns all of the header values of the given + * case-insensitive header name as a string concatenated together using + * a comma. + * + * NOTE: Not all header values may be appropriately represented using + * comma concatenation. For such headers, use getHeader() instead + * and supply your own delimiter when concatenating. + * + * If the header does not appear in the message, this method MUST return + * an empty string. + * + * @param string $name Case-insensitive header field name. + * @return string A string of values as provided for the given header + * concatenated together using a comma. If the header does not appear in + * the message, this method MUST return an empty string. + */ + public function getHeaderLine($name) + { + return implode(',', $this->headers->get($name, [])); + } + + /** + * Return an instance with the provided value replacing the specified header. + * + * While header names are case-insensitive, the casing of the header will + * be preserved by this function, and returned from getHeaders(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * new and/or updated header and value. + * + * @param string $name Case-insensitive header field name. + * @param string|string[] $value Header value(s). + * @return static + * @throws \InvalidArgumentException for invalid header names or values. + */ + public function withHeader($name, $value) + { + $clone = clone $this; + $clone->headers->set($name, $value); + + return $clone; + } + + /** + * Return an instance with the specified header appended with the given value. + * + * Existing values for the specified header will be maintained. The new + * value(s) will be appended to the existing list. If the header did not + * exist previously, it will be added. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * new header and/or value. + * + * @param string $name Case-insensitive header field name to add. + * @param string|string[] $value Header value(s). + * @return static + * @throws \InvalidArgumentException for invalid header names or values. + */ + public function withAddedHeader($name, $value) + { + $clone = clone $this; + $clone->headers->add($name, $value); + + return $clone; + } + + /** + * Return an instance without the specified header. + * + * Header resolution MUST be done without case-sensitivity. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that removes + * the named header. + * + * @param string $name Case-insensitive header field name to remove. + * @return static + */ + public function withoutHeader($name) + { + $clone = clone $this; + $clone->headers->remove($name); + + return $clone; + } + + /******************************************************************************* + * Body + ******************************************************************************/ + + /** + * Gets the body of the message. + * + * @return StreamInterface Returns the body as a stream. + */ + public function getBody() + { + return $this->body; + } + + /** + * Return an instance with the specified message body. + * + * The body MUST be a StreamInterface object. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return a new instance that has the + * new body stream. + * + * @param StreamInterface $body Body. + * @return static + * @throws \InvalidArgumentException When the body is not valid. + */ + public function withBody(StreamInterface $body) + { + // TODO: Test for invalid body? + $clone = clone $this; + $clone->body = $body; + + return $clone; + } +} diff --git a/system/vendor/slim/slim/Slim/Http/Request.php b/system/vendor/slim/slim/Slim/Http/Request.php new file mode 100644 index 0000000..f67050b --- /dev/null +++ b/system/vendor/slim/slim/Slim/Http/Request.php @@ -0,0 +1,1216 @@ + 1, + 'DELETE' => 1, + 'GET' => 1, + 'HEAD' => 1, + 'OPTIONS' => 1, + 'PATCH' => 1, + 'POST' => 1, + 'PUT' => 1, + 'TRACE' => 1, + ]; + + /** + * Create new HTTP request with data extracted from the application + * Environment object + * + * @param Environment $environment The Slim application Environment + * + * @return static + */ + public static function createFromEnvironment(Environment $environment) + { + $method = $environment['REQUEST_METHOD']; + $uri = Uri::createFromEnvironment($environment); + $headers = Headers::createFromEnvironment($environment); + $cookies = Cookies::parseHeader($headers->get('Cookie', [])); + $serverParams = $environment->all(); + $body = new RequestBody(); + $uploadedFiles = UploadedFile::createFromEnvironment($environment); + + $request = new static($method, $uri, $headers, $cookies, $serverParams, $body, $uploadedFiles); + + if ($method === 'POST' && + in_array($request->getMediaType(), ['application/x-www-form-urlencoded', 'multipart/form-data']) + ) { + // parsed body must be $_POST + $request = $request->withParsedBody($_POST); + } + return $request; + } + + /** + * Create new HTTP request. + * + * Adds a host header when none was provided and a host is defined in uri. + * + * @param string $method The request method + * @param UriInterface $uri The request URI object + * @param HeadersInterface $headers The request headers collection + * @param array $cookies The request cookies collection + * @param array $serverParams The server environment variables + * @param StreamInterface $body The request body object + * @param array $uploadedFiles The request uploadedFiles collection + * @throws InvalidMethodException on invalid HTTP method + */ + public function __construct( + $method, + UriInterface $uri, + HeadersInterface $headers, + array $cookies, + array $serverParams, + StreamInterface $body, + array $uploadedFiles = [] + ) { + try { + $this->originalMethod = $this->filterMethod($method); + } catch (InvalidMethodException $e) { + $this->originalMethod = $method; + } + + $this->uri = $uri; + $this->headers = $headers; + $this->cookies = $cookies; + $this->serverParams = $serverParams; + $this->attributes = new Collection(); + $this->body = $body; + $this->uploadedFiles = $uploadedFiles; + + if (isset($serverParams['SERVER_PROTOCOL'])) { + $this->protocolVersion = str_replace('HTTP/', '', $serverParams['SERVER_PROTOCOL']); + } + + if (!$this->headers->has('Host') || $this->uri->getHost() !== '') { + $this->headers->set('Host', $this->uri->getHost()); + } + + $this->registerMediaTypeParser('application/json', function ($input) { + $result = json_decode($input, true); + if (!is_array($result)) { + return null; + } + return $result; + }); + + $this->registerMediaTypeParser('application/xml', function ($input) { + $backup = libxml_disable_entity_loader(true); + $backup_errors = libxml_use_internal_errors(true); + $result = simplexml_load_string($input); + libxml_disable_entity_loader($backup); + libxml_clear_errors(); + libxml_use_internal_errors($backup_errors); + if ($result === false) { + return null; + } + return $result; + }); + + $this->registerMediaTypeParser('text/xml', function ($input) { + $backup = libxml_disable_entity_loader(true); + $backup_errors = libxml_use_internal_errors(true); + $result = simplexml_load_string($input); + libxml_disable_entity_loader($backup); + libxml_clear_errors(); + libxml_use_internal_errors($backup_errors); + if ($result === false) { + return null; + } + return $result; + }); + + $this->registerMediaTypeParser('application/x-www-form-urlencoded', function ($input) { + parse_str($input, $data); + return $data; + }); + + // if the request had an invalid method, we can throw it now + if (isset($e) && $e instanceof InvalidMethodException) { + throw $e; + } + } + + /** + * This method is applied to the cloned object + * after PHP performs an initial shallow-copy. This + * method completes a deep-copy by creating new objects + * for the cloned object's internal reference pointers. + */ + public function __clone() + { + $this->headers = clone $this->headers; + $this->attributes = clone $this->attributes; + $this->body = clone $this->body; + } + + /******************************************************************************* + * Method + ******************************************************************************/ + + /** + * Retrieves the HTTP method of the request. + * + * @return string Returns the request method. + */ + public function getMethod() + { + if ($this->method === null) { + $this->method = $this->originalMethod; + $customMethod = $this->getHeaderLine('X-Http-Method-Override'); + + if ($customMethod) { + $this->method = $this->filterMethod($customMethod); + } elseif ($this->originalMethod === 'POST') { + $overrideMethod = $this->filterMethod($this->getParsedBodyParam('_METHOD')); + if ($overrideMethod !== null) { + $this->method = $overrideMethod; + } + + if ($this->getBody()->eof()) { + $this->getBody()->rewind(); + } + } + } + + return $this->method; + } + + /** + * Get the original HTTP method (ignore override). + * + * Note: This method is not part of the PSR-7 standard. + * + * @return string + */ + public function getOriginalMethod() + { + return $this->originalMethod; + } + + /** + * Return an instance with the provided HTTP method. + * + * While HTTP method names are typically all uppercase characters, HTTP + * method names are case-sensitive and thus implementations SHOULD NOT + * modify the given string. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * changed request method. + * + * @param string $method Case-sensitive method. + * @return static + * @throws \InvalidArgumentException for invalid HTTP methods. + */ + public function withMethod($method) + { + $method = $this->filterMethod($method); + $clone = clone $this; + $clone->originalMethod = $method; + $clone->method = $method; + + return $clone; + } + + /** + * Validate the HTTP method + * + * @param null|string $method + * @return null|string + * @throws \InvalidArgumentException on invalid HTTP method. + */ + protected function filterMethod($method) + { + if ($method === null) { + return $method; + } + + if (!is_string($method)) { + throw new InvalidArgumentException(sprintf( + 'Unsupported HTTP method; must be a string, received %s', + (is_object($method) ? get_class($method) : gettype($method)) + )); + } + + $method = strtoupper($method); + if (!isset($this->validMethods[$method])) { + throw new InvalidMethodException($this, $method); + } + + return $method; + } + + /** + * Does this request use a given method? + * + * Note: This method is not part of the PSR-7 standard. + * + * @param string $method HTTP method + * @return bool + */ + public function isMethod($method) + { + return $this->getMethod() === $method; + } + + /** + * Is this a GET request? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isGet() + { + return $this->isMethod('GET'); + } + + /** + * Is this a POST request? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isPost() + { + return $this->isMethod('POST'); + } + + /** + * Is this a PUT request? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isPut() + { + return $this->isMethod('PUT'); + } + + /** + * Is this a PATCH request? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isPatch() + { + return $this->isMethod('PATCH'); + } + + /** + * Is this a DELETE request? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isDelete() + { + return $this->isMethod('DELETE'); + } + + /** + * Is this a HEAD request? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isHead() + { + return $this->isMethod('HEAD'); + } + + /** + * Is this a OPTIONS request? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isOptions() + { + return $this->isMethod('OPTIONS'); + } + + /** + * Is this an XHR request? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isXhr() + { + return $this->getHeaderLine('X-Requested-With') === 'XMLHttpRequest'; + } + + /******************************************************************************* + * URI + ******************************************************************************/ + + /** + * Retrieves the message's request target. + * + * Retrieves the message's request-target either as it will appear (for + * clients), as it appeared at request (for servers), or as it was + * specified for the instance (see withRequestTarget()). + * + * In most cases, this will be the origin-form of the composed URI, + * unless a value was provided to the concrete implementation (see + * withRequestTarget() below). + * + * If no URI is available, and no request-target has been specifically + * provided, this method MUST return the string "/". + * + * @return string + */ + public function getRequestTarget() + { + if ($this->requestTarget) { + return $this->requestTarget; + } + + if ($this->uri === null) { + return '/'; + } + + $basePath = $this->uri->getBasePath(); + $path = $this->uri->getPath(); + $path = $basePath . '/' . ltrim($path, '/'); + + $query = $this->uri->getQuery(); + if ($query) { + $path .= '?' . $query; + } + $this->requestTarget = $path; + + return $this->requestTarget; + } + + /** + * Return an instance with the specific request-target. + * + * If the request needs a non-origin-form request-target — e.g., for + * specifying an absolute-form, authority-form, or asterisk-form — + * this method may be used to create an instance with the specified + * request-target, verbatim. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * changed request target. + * + * @link http://tools.ietf.org/html/rfc7230#section-2.7 (for the various + * request-target forms allowed in request messages) + * @param mixed $requestTarget + * @return static + * @throws InvalidArgumentException if the request target is invalid + */ + public function withRequestTarget($requestTarget) + { + if (preg_match('#\s#', $requestTarget)) { + throw new InvalidArgumentException( + 'Invalid request target provided; must be a string and cannot contain whitespace' + ); + } + $clone = clone $this; + $clone->requestTarget = $requestTarget; + + return $clone; + } + + /** + * Retrieves the URI instance. + * + * This method MUST return a UriInterface instance. + * + * @link http://tools.ietf.org/html/rfc3986#section-4.3 + * @return UriInterface Returns a UriInterface instance + * representing the URI of the request. + */ + public function getUri() + { + return $this->uri; + } + + /** + * Returns an instance with the provided URI. + * + * This method MUST update the Host header of the returned request by + * default if the URI contains a host component. If the URI does not + * contain a host component, any pre-existing Host header MUST be carried + * over to the returned request. + * + * You can opt-in to preserving the original state of the Host header by + * setting `$preserveHost` to `true`. When `$preserveHost` is set to + * `true`, this method interacts with the Host header in the following ways: + * + * - If the the Host header is missing or empty, and the new URI contains + * a host component, this method MUST update the Host header in the returned + * request. + * - If the Host header is missing or empty, and the new URI does not contain a + * host component, this method MUST NOT update the Host header in the returned + * request. + * - If a Host header is present and non-empty, this method MUST NOT update + * the Host header in the returned request. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * new UriInterface instance. + * + * @link http://tools.ietf.org/html/rfc3986#section-4.3 + * @param UriInterface $uri New request URI to use. + * @param bool $preserveHost Preserve the original state of the Host header. + * @return static + */ + public function withUri(UriInterface $uri, $preserveHost = false) + { + $clone = clone $this; + $clone->uri = $uri; + + if (!$preserveHost) { + if ($uri->getHost() !== '') { + $clone->headers->set('Host', $uri->getHost()); + } + } else { + if ($uri->getHost() !== '' && (!$this->hasHeader('Host') || $this->getHeaderLine('Host') === '')) { + $clone->headers->set('Host', $uri->getHost()); + } + } + + return $clone; + } + + /** + * Get request content type. + * + * Note: This method is not part of the PSR-7 standard. + * + * @return string|null The request content type, if known + */ + public function getContentType() + { + $result = $this->getHeader('Content-Type'); + + return $result ? $result[0] : null; + } + + /** + * Get request media type, if known. + * + * Note: This method is not part of the PSR-7 standard. + * + * @return string|null The request media type, minus content-type params + */ + public function getMediaType() + { + $contentType = $this->getContentType(); + if ($contentType) { + $contentTypeParts = preg_split('/\s*[;,]\s*/', $contentType); + + return strtolower($contentTypeParts[0]); + } + + return null; + } + + /** + * Get request media type params, if known. + * + * Note: This method is not part of the PSR-7 standard. + * + * @return array + */ + public function getMediaTypeParams() + { + $contentType = $this->getContentType(); + $contentTypeParams = []; + if ($contentType) { + $contentTypeParts = preg_split('/\s*[;,]\s*/', $contentType); + $contentTypePartsLength = count($contentTypeParts); + for ($i = 1; $i < $contentTypePartsLength; $i++) { + $paramParts = explode('=', $contentTypeParts[$i]); + $contentTypeParams[strtolower($paramParts[0])] = $paramParts[1]; + } + } + + return $contentTypeParams; + } + + /** + * Get request content character set, if known. + * + * Note: This method is not part of the PSR-7 standard. + * + * @return string|null + */ + public function getContentCharset() + { + $mediaTypeParams = $this->getMediaTypeParams(); + if (isset($mediaTypeParams['charset'])) { + return $mediaTypeParams['charset']; + } + + return null; + } + + /** + * Get request content length, if known. + * + * Note: This method is not part of the PSR-7 standard. + * + * @return int|null + */ + public function getContentLength() + { + $result = $this->headers->get('Content-Length'); + + return $result ? (int)$result[0] : null; + } + + /******************************************************************************* + * Cookies + ******************************************************************************/ + + /** + * Retrieve cookies. + * + * Retrieves cookies sent by the client to the server. + * + * The data MUST be compatible with the structure of the $_COOKIE + * superglobal. + * + * @return array + */ + public function getCookieParams() + { + return $this->cookies; + } + + /** + * Fetch cookie value from cookies sent by the client to the server. + * + * Note: This method is not part of the PSR-7 standard. + * + * @param string $key The attribute name. + * @param mixed $default Default value to return if the attribute does not exist. + * + * @return mixed + */ + public function getCookieParam($key, $default = null) + { + $cookies = $this->getCookieParams(); + $result = $default; + if (isset($cookies[$key])) { + $result = $cookies[$key]; + } + + return $result; + } + + /** + * Return an instance with the specified cookies. + * + * The data IS NOT REQUIRED to come from the $_COOKIE superglobal, but MUST + * be compatible with the structure of $_COOKIE. Typically, this data will + * be injected at instantiation. + * + * This method MUST NOT update the related Cookie header of the request + * instance, nor related values in the server params. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated cookie values. + * + * @param array $cookies Array of key/value pairs representing cookies. + * @return static + */ + public function withCookieParams(array $cookies) + { + $clone = clone $this; + $clone->cookies = $cookies; + + return $clone; + } + + /******************************************************************************* + * Query Params + ******************************************************************************/ + + /** + * Retrieve query string arguments. + * + * Retrieves the deserialized query string arguments, if any. + * + * Note: the query params might not be in sync with the URI or server + * params. If you need to ensure you are only getting the original + * values, you may need to parse the query string from `getUri()->getQuery()` + * or from the `QUERY_STRING` server param. + * + * @return array + */ + public function getQueryParams() + { + if (is_array($this->queryParams)) { + return $this->queryParams; + } + + if ($this->uri === null) { + return []; + } + + parse_str($this->uri->getQuery(), $this->queryParams); // <-- URL decodes data + + return $this->queryParams; + } + + /** + * Return an instance with the specified query string arguments. + * + * These values SHOULD remain immutable over the course of the incoming + * request. They MAY be injected during instantiation, such as from PHP's + * $_GET superglobal, or MAY be derived from some other value such as the + * URI. In cases where the arguments are parsed from the URI, the data + * MUST be compatible with what PHP's parse_str() would return for + * purposes of how duplicate query parameters are handled, and how nested + * sets are handled. + * + * Setting query string arguments MUST NOT change the URI stored by the + * request, nor the values in the server params. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated query string arguments. + * + * @param array $query Array of query string arguments, typically from + * $_GET. + * @return static + */ + public function withQueryParams(array $query) + { + $clone = clone $this; + $clone->queryParams = $query; + + return $clone; + } + + /******************************************************************************* + * File Params + ******************************************************************************/ + + /** + * Retrieve normalized file upload data. + * + * This method returns upload metadata in a normalized tree, with each leaf + * an instance of Psr\Http\Message\UploadedFileInterface. + * + * These values MAY be prepared from $_FILES or the message body during + * instantiation, or MAY be injected via withUploadedFiles(). + * + * @return array An array tree of UploadedFileInterface instances; an empty + * array MUST be returned if no data is present. + */ + public function getUploadedFiles() + { + return $this->uploadedFiles; + } + + /** + * Create a new instance with the specified uploaded files. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated body parameters. + * + * @param array $uploadedFiles An array tree of UploadedFileInterface instances. + * @return static + * @throws \InvalidArgumentException if an invalid structure is provided. + */ + public function withUploadedFiles(array $uploadedFiles) + { + $clone = clone $this; + $clone->uploadedFiles = $uploadedFiles; + + return $clone; + } + + /******************************************************************************* + * Server Params + ******************************************************************************/ + + /** + * Retrieve server parameters. + * + * Retrieves data related to the incoming request environment, + * typically derived from PHP's $_SERVER superglobal. The data IS NOT + * REQUIRED to originate from $_SERVER. + * + * @return array + */ + public function getServerParams() + { + return $this->serverParams; + } + + /** + * Retrieve a server parameter. + * + * Note: This method is not part of the PSR-7 standard. + * + * @param string $key + * @param mixed $default + * @return mixed + */ + public function getServerParam($key, $default = null) + { + $serverParams = $this->getServerParams(); + + return isset($serverParams[$key]) ? $serverParams[$key] : $default; + } + + /******************************************************************************* + * Attributes + ******************************************************************************/ + + /** + * Retrieve attributes derived from the request. + * + * The request "attributes" may be used to allow injection of any + * parameters derived from the request: e.g., the results of path + * match operations; the results of decrypting cookies; the results of + * deserializing non-form-encoded message bodies; etc. Attributes + * will be application and request specific, and CAN be mutable. + * + * @return array Attributes derived from the request. + */ + public function getAttributes() + { + return $this->attributes->all(); + } + + /** + * Retrieve a single derived request attribute. + * + * Retrieves a single derived request attribute as described in + * getAttributes(). If the attribute has not been previously set, returns + * the default value as provided. + * + * This method obviates the need for a hasAttribute() method, as it allows + * specifying a default value to return if the attribute is not found. + * + * @see getAttributes() + * @param string $name The attribute name. + * @param mixed $default Default value to return if the attribute does not exist. + * @return mixed + */ + public function getAttribute($name, $default = null) + { + return $this->attributes->get($name, $default); + } + + /** + * Return an instance with the specified derived request attribute. + * + * This method allows setting a single derived request attribute as + * described in getAttributes(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated attribute. + * + * @see getAttributes() + * @param string $name The attribute name. + * @param mixed $value The value of the attribute. + * @return static + */ + public function withAttribute($name, $value) + { + $clone = clone $this; + $clone->attributes->set($name, $value); + + return $clone; + } + + /** + * Create a new instance with the specified derived request attributes. + * + * Note: This method is not part of the PSR-7 standard. + * + * This method allows setting all new derived request attributes as + * described in getAttributes(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return a new instance that has the + * updated attributes. + * + * @param array $attributes New attributes + * @return static + */ + public function withAttributes(array $attributes) + { + $clone = clone $this; + $clone->attributes = new Collection($attributes); + + return $clone; + } + + /** + * Return an instance that removes the specified derived request attribute. + * + * This method allows removing a single derived request attribute as + * described in getAttributes(). + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that removes + * the attribute. + * + * @see getAttributes() + * @param string $name The attribute name. + * @return static + */ + public function withoutAttribute($name) + { + $clone = clone $this; + $clone->attributes->remove($name); + + return $clone; + } + + /******************************************************************************* + * Body + ******************************************************************************/ + + /** + * Retrieve any parameters provided in the request body. + * + * If the request Content-Type is either application/x-www-form-urlencoded + * or multipart/form-data, and the request method is POST, this method MUST + * return the contents of $_POST. + * + * Otherwise, this method may return any results of deserializing + * the request body content; as parsing returns structured content, the + * potential types MUST be arrays or objects only. A null value indicates + * the absence of body content. + * + * @return null|array|object The deserialized body parameters, if any. + * These will typically be an array or object. + * @throws RuntimeException if the request body media type parser returns an invalid value + */ + public function getParsedBody() + { + if ($this->bodyParsed !== false) { + return $this->bodyParsed; + } + + if (!$this->body) { + return null; + } + + $mediaType = $this->getMediaType(); + + // look for a media type with a structured syntax suffix (RFC 6839) + $parts = explode('+', $mediaType); + if (count($parts) >= 2) { + $mediaType = 'application/' . $parts[count($parts)-1]; + } + + if (isset($this->bodyParsers[$mediaType]) === true) { + $body = (string)$this->getBody(); + $parsed = $this->bodyParsers[$mediaType]($body); + + if (!is_null($parsed) && !is_object($parsed) && !is_array($parsed)) { + throw new RuntimeException( + 'Request body media type parser return value must be an array, an object, or null' + ); + } + $this->bodyParsed = $parsed; + return $this->bodyParsed; + } + + return null; + } + + /** + * Return an instance with the specified body parameters. + * + * These MAY be injected during instantiation. + * + * If the request Content-Type is either application/x-www-form-urlencoded + * or multipart/form-data, and the request method is POST, use this method + * ONLY to inject the contents of $_POST. + * + * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of + * deserializing the request body content. Deserialization/parsing returns + * structured data, and, as such, this method ONLY accepts arrays or objects, + * or a null value if nothing was available to parse. + * + * As an example, if content negotiation determines that the request data + * is a JSON payload, this method could be used to create a request + * instance with the deserialized parameters. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated body parameters. + * + * @param null|array|object $data The deserialized body data. This will + * typically be in an array or object. + * @return static + * @throws \InvalidArgumentException if an unsupported argument type is + * provided. + */ + public function withParsedBody($data) + { + if (!is_null($data) && !is_object($data) && !is_array($data)) { + throw new InvalidArgumentException('Parsed body value must be an array, an object, or null'); + } + + $clone = clone $this; + $clone->bodyParsed = $data; + + return $clone; + } + + /** + * Force Body to be parsed again. + * + * Note: This method is not part of the PSR-7 standard. + * + * @return $this + */ + public function reparseBody() + { + $this->bodyParsed = false; + + return $this; + } + + /** + * Register media type parser. + * + * Note: This method is not part of the PSR-7 standard. + * + * @param string $mediaType A HTTP media type (excluding content-type + * params). + * @param callable $callable A callable that returns parsed contents for + * media type. + */ + public function registerMediaTypeParser($mediaType, callable $callable) + { + if ($callable instanceof Closure) { + $callable = $callable->bindTo($this); + } + $this->bodyParsers[(string)$mediaType] = $callable; + } + + /******************************************************************************* + * Parameters (e.g., POST and GET data) + ******************************************************************************/ + + /** + * Fetch request parameter value from body or query string (in that order). + * + * Note: This method is not part of the PSR-7 standard. + * + * @param string $key The parameter key. + * @param string $default The default value. + * + * @return mixed The parameter value. + */ + public function getParam($key, $default = null) + { + $postParams = $this->getParsedBody(); + $getParams = $this->getQueryParams(); + $result = $default; + if (is_array($postParams) && isset($postParams[$key])) { + $result = $postParams[$key]; + } elseif (is_object($postParams) && property_exists($postParams, $key)) { + $result = $postParams->$key; + } elseif (isset($getParams[$key])) { + $result = $getParams[$key]; + } + + return $result; + } + + /** + * Fetch parameter value from request body. + * + * Note: This method is not part of the PSR-7 standard. + * + * @param string $key + * @param mixed $default + * + * @return mixed + */ + public function getParsedBodyParam($key, $default = null) + { + $postParams = $this->getParsedBody(); + $result = $default; + if (is_array($postParams) && isset($postParams[$key])) { + $result = $postParams[$key]; + } elseif (is_object($postParams) && property_exists($postParams, $key)) { + $result = $postParams->$key; + } + + return $result; + } + + /** + * Fetch parameter value from query string. + * + * Note: This method is not part of the PSR-7 standard. + * + * @param string $key + * @param mixed $default + * + * @return mixed + */ + public function getQueryParam($key, $default = null) + { + $getParams = $this->getQueryParams(); + $result = $default; + if (isset($getParams[$key])) { + $result = $getParams[$key]; + } + + return $result; + } + + /** + * Fetch associative array of body and query string parameters. + * + * Note: This method is not part of the PSR-7 standard. + * + * @return array + */ + public function getParams() + { + $params = $this->getQueryParams(); + $postParams = $this->getParsedBody(); + if ($postParams) { + $params = array_merge($params, (array)$postParams); + } + + return $params; + } +} diff --git a/system/vendor/slim/slim/Slim/Http/RequestBody.php b/system/vendor/slim/slim/Slim/Http/RequestBody.php new file mode 100644 index 0000000..50887fd --- /dev/null +++ b/system/vendor/slim/slim/Slim/Http/RequestBody.php @@ -0,0 +1,27 @@ + 'Continue', + 101 => 'Switching Protocols', + 102 => 'Processing', + //Successful 2xx + 200 => 'OK', + 201 => 'Created', + 202 => 'Accepted', + 203 => 'Non-Authoritative Information', + 204 => 'No Content', + 205 => 'Reset Content', + 206 => 'Partial Content', + 207 => 'Multi-Status', + 208 => 'Already Reported', + 226 => 'IM Used', + //Redirection 3xx + 300 => 'Multiple Choices', + 301 => 'Moved Permanently', + 302 => 'Found', + 303 => 'See Other', + 304 => 'Not Modified', + 305 => 'Use Proxy', + 306 => '(Unused)', + 307 => 'Temporary Redirect', + 308 => 'Permanent Redirect', + //Client Error 4xx + 400 => 'Bad Request', + 401 => 'Unauthorized', + 402 => 'Payment Required', + 403 => 'Forbidden', + 404 => 'Not Found', + 405 => 'Method Not Allowed', + 406 => 'Not Acceptable', + 407 => 'Proxy Authentication Required', + 408 => 'Request Timeout', + 409 => 'Conflict', + 410 => 'Gone', + 411 => 'Length Required', + 412 => 'Precondition Failed', + 413 => 'Request Entity Too Large', + 414 => 'Request-URI Too Long', + 415 => 'Unsupported Media Type', + 416 => 'Requested Range Not Satisfiable', + 417 => 'Expectation Failed', + 418 => 'I\'m a teapot', + 421 => 'Misdirected Request', + 422 => 'Unprocessable Entity', + 423 => 'Locked', + 424 => 'Failed Dependency', + 426 => 'Upgrade Required', + 428 => 'Precondition Required', + 429 => 'Too Many Requests', + 431 => 'Request Header Fields Too Large', + 444 => 'Connection Closed Without Response', + 451 => 'Unavailable For Legal Reasons', + 499 => 'Client Closed Request', + //Server Error 5xx + 500 => 'Internal Server Error', + 501 => 'Not Implemented', + 502 => 'Bad Gateway', + 503 => 'Service Unavailable', + 504 => 'Gateway Timeout', + 505 => 'HTTP Version Not Supported', + 506 => 'Variant Also Negotiates', + 507 => 'Insufficient Storage', + 508 => 'Loop Detected', + 510 => 'Not Extended', + 511 => 'Network Authentication Required', + 599 => 'Network Connect Timeout Error', + ]; + + /** + * EOL characters used for HTTP response. + * + * @var string + */ + const EOL = "\r\n"; + + /** + * Create new HTTP response. + * + * @param int $status The response status code. + * @param HeadersInterface|null $headers The response headers. + * @param StreamInterface|null $body The response body. + */ + public function __construct($status = 200, HeadersInterface $headers = null, StreamInterface $body = null) + { + $this->status = $this->filterStatus($status); + $this->headers = $headers ? $headers : new Headers(); + $this->body = $body ? $body : new Body(fopen('php://temp', 'r+')); + } + + /** + * This method is applied to the cloned object + * after PHP performs an initial shallow-copy. This + * method completes a deep-copy by creating new objects + * for the cloned object's internal reference pointers. + */ + public function __clone() + { + $this->headers = clone $this->headers; + } + + /******************************************************************************* + * Status + ******************************************************************************/ + + /** + * Gets the response status code. + * + * The status code is a 3-digit integer result code of the server's attempt + * to understand and satisfy the request. + * + * @return int Status code. + */ + public function getStatusCode() + { + return $this->status; + } + + /** + * Return an instance with the specified status code and, optionally, reason phrase. + * + * If no reason phrase is specified, implementations MAY choose to default + * to the RFC 7231 or IANA recommended reason phrase for the response's + * status code. + * + * This method MUST be implemented in such a way as to retain the + * immutability of the message, and MUST return an instance that has the + * updated status and reason phrase. + * + * @link http://tools.ietf.org/html/rfc7231#section-6 + * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml + * @param int $code The 3-digit integer result code to set. + * @param string $reasonPhrase The reason phrase to use with the + * provided status code; if none is provided, implementations MAY + * use the defaults as suggested in the HTTP specification. + * @return static + * @throws \InvalidArgumentException For invalid status code arguments. + */ + public function withStatus($code, $reasonPhrase = '') + { + $code = $this->filterStatus($code); + + if (!is_string($reasonPhrase) && !method_exists($reasonPhrase, '__toString')) { + throw new InvalidArgumentException('ReasonPhrase must be a string'); + } + + $clone = clone $this; + $clone->status = $code; + if ($reasonPhrase === '' && isset(static::$messages[$code])) { + $reasonPhrase = static::$messages[$code]; + } + + if ($reasonPhrase === '') { + throw new InvalidArgumentException('ReasonPhrase must be supplied for this code'); + } + + $clone->reasonPhrase = $reasonPhrase; + + return $clone; + } + + /** + * Filter HTTP status code. + * + * @param int $status HTTP status code. + * @return int + * @throws \InvalidArgumentException If an invalid HTTP status code is provided. + */ + protected function filterStatus($status) + { + if (!is_integer($status) || $status<100 || $status>599) { + throw new InvalidArgumentException('Invalid HTTP status code'); + } + + return $status; + } + + /** + * Gets the response reason phrase associated with the status code. + * + * Because a reason phrase is not a required element in a response + * status line, the reason phrase value MAY be null. Implementations MAY + * choose to return the default RFC 7231 recommended reason phrase (or those + * listed in the IANA HTTP Status Code Registry) for the response's + * status code. + * + * @link http://tools.ietf.org/html/rfc7231#section-6 + * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml + * @return string Reason phrase; must return an empty string if none present. + */ + public function getReasonPhrase() + { + if ($this->reasonPhrase) { + return $this->reasonPhrase; + } + if (isset(static::$messages[$this->status])) { + return static::$messages[$this->status]; + } + return ''; + } + + /******************************************************************************* + * Body + ******************************************************************************/ + + /** + * Write data to the response body. + * + * Note: This method is not part of the PSR-7 standard. + * + * Proxies to the underlying stream and writes the provided data to it. + * + * @param string $data + * @return $this + */ + public function write($data) + { + $this->getBody()->write($data); + + return $this; + } + + /******************************************************************************* + * Response Helpers + ******************************************************************************/ + + /** + * Redirect. + * + * Note: This method is not part of the PSR-7 standard. + * + * This method prepares the response object to return an HTTP Redirect + * response to the client. + * + * @param string|UriInterface $url The redirect destination. + * @param int|null $status The redirect HTTP status code. + * @return static + */ + public function withRedirect($url, $status = null) + { + $responseWithRedirect = $this->withHeader('Location', (string)$url); + + if (is_null($status) && $this->getStatusCode() === 200) { + $status = 302; + } + + if (!is_null($status)) { + return $responseWithRedirect->withStatus($status); + } + + return $responseWithRedirect; + } + + /** + * Json. + * + * Note: This method is not part of the PSR-7 standard. + * + * This method prepares the response object to return an HTTP Json + * response to the client. + * + * @param mixed $data The data + * @param int $status The HTTP status code. + * @param int $encodingOptions Json encoding options + * @throws \RuntimeException + * @return static + */ + public function withJson($data, $status = null, $encodingOptions = 0) + { + $response = $this->withBody(new Body(fopen('php://temp', 'r+'))); + $response->body->write($json = json_encode($data, $encodingOptions)); + + // Ensure that the json encoding passed successfully + if ($json === false) { + throw new \RuntimeException(json_last_error_msg(), json_last_error()); + } + + $responseWithJson = $response->withHeader('Content-Type', 'application/json;charset=utf-8'); + if (isset($status)) { + return $responseWithJson->withStatus($status); + } + return $responseWithJson; + } + + /** + * Is this response empty? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isEmpty() + { + return in_array($this->getStatusCode(), [204, 205, 304]); + } + + /** + * Is this response informational? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isInformational() + { + return $this->getStatusCode() >= 100 && $this->getStatusCode() < 200; + } + + /** + * Is this response OK? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isOk() + { + return $this->getStatusCode() === 200; + } + + /** + * Is this response successful? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isSuccessful() + { + return $this->getStatusCode() >= 200 && $this->getStatusCode() < 300; + } + + /** + * Is this response a redirect? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isRedirect() + { + return in_array($this->getStatusCode(), [301, 302, 303, 307]); + } + + /** + * Is this response a redirection? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isRedirection() + { + return $this->getStatusCode() >= 300 && $this->getStatusCode() < 400; + } + + /** + * Is this response forbidden? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + * @api + */ + public function isForbidden() + { + return $this->getStatusCode() === 403; + } + + /** + * Is this response not Found? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isNotFound() + { + return $this->getStatusCode() === 404; + } + + /** + * Is this response a client error? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isClientError() + { + return $this->getStatusCode() >= 400 && $this->getStatusCode() < 500; + } + + /** + * Is this response a server error? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + public function isServerError() + { + return $this->getStatusCode() >= 500 && $this->getStatusCode() < 600; + } + + /** + * Convert response to string. + * + * Note: This method is not part of the PSR-7 standard. + * + * @return string + */ + public function __toString() + { + $output = sprintf( + 'HTTP/%s %s %s', + $this->getProtocolVersion(), + $this->getStatusCode(), + $this->getReasonPhrase() + ); + $output .= Response::EOL; + foreach ($this->getHeaders() as $name => $values) { + $output .= sprintf('%s: %s', $name, $this->getHeaderLine($name)) . Response::EOL; + } + $output .= Response::EOL; + $output .= (string)$this->getBody(); + + return $output; + } +} diff --git a/system/vendor/slim/slim/Slim/Http/Stream.php b/system/vendor/slim/slim/Slim/Http/Stream.php new file mode 100644 index 0000000..27c7a76 --- /dev/null +++ b/system/vendor/slim/slim/Slim/Http/Stream.php @@ -0,0 +1,450 @@ + ['r', 'r+', 'w+', 'a+', 'x+', 'c+'], + 'writable' => ['r+', 'w', 'w+', 'a', 'a+', 'x', 'x+', 'c', 'c+'], + ]; + + /** + * The underlying stream resource + * + * @var resource + */ + protected $stream; + + /** + * Stream metadata + * + * @var array + */ + protected $meta; + + /** + * Is this stream readable? + * + * @var bool + */ + protected $readable; + + /** + * Is this stream writable? + * + * @var bool + */ + protected $writable; + + /** + * Is this stream seekable? + * + * @var bool + */ + protected $seekable; + + /** + * The size of the stream if known + * + * @var null|int + */ + protected $size; + + /** + * Is this stream a pipe? + * + * @var bool + */ + protected $isPipe; + + /** + * Create a new Stream. + * + * @param resource $stream A PHP resource handle. + * + * @throws InvalidArgumentException If argument is not a resource. + */ + public function __construct($stream) + { + $this->attach($stream); + } + + /** + * Get stream metadata as an associative array or retrieve a specific key. + * + * The keys returned are identical to the keys returned from PHP's + * stream_get_meta_data() function. + * + * @link http://php.net/manual/en/function.stream-get-meta-data.php + * + * @param string $key Specific metadata to retrieve. + * + * @return array|mixed|null Returns an associative array if no key is + * provided. Returns a specific key value if a key is provided and the + * value is found, or null if the key is not found. + */ + public function getMetadata($key = null) + { + $this->meta = stream_get_meta_data($this->stream); + if (is_null($key) === true) { + return $this->meta; + } + + return isset($this->meta[$key]) ? $this->meta[$key] : null; + } + + /** + * Is a resource attached to this stream? + * + * Note: This method is not part of the PSR-7 standard. + * + * @return bool + */ + protected function isAttached() + { + return is_resource($this->stream); + } + + /** + * Attach new resource to this object. + * + * Note: This method is not part of the PSR-7 standard. + * + * @param resource $newStream A PHP resource handle. + * + * @throws InvalidArgumentException If argument is not a valid PHP resource. + */ + protected function attach($newStream) + { + if (is_resource($newStream) === false) { + throw new InvalidArgumentException(__METHOD__ . ' argument must be a valid PHP resource'); + } + + if ($this->isAttached() === true) { + $this->detach(); + } + + $this->stream = $newStream; + } + + /** + * Separates any underlying resources from the stream. + * + * After the stream has been detached, the stream is in an unusable state. + * + * @return resource|null Underlying PHP stream, if any + */ + public function detach() + { + $oldResource = $this->stream; + $this->stream = null; + $this->meta = null; + $this->readable = null; + $this->writable = null; + $this->seekable = null; + $this->size = null; + $this->isPipe = null; + + return $oldResource; + } + + /** + * Reads all data from the stream into a string, from the beginning to end. + * + * This method MUST attempt to seek to the beginning of the stream before + * reading data and read the stream until the end is reached. + * + * Warning: This could attempt to load a large amount of data into memory. + * + * This method MUST NOT raise an exception in order to conform with PHP's + * string casting operations. + * + * @see http://php.net/manual/en/language.oop5.magic.php#object.tostring + * @return string + */ + public function __toString() + { + if (!$this->isAttached()) { + return ''; + } + + try { + $this->rewind(); + return $this->getContents(); + } catch (RuntimeException $e) { + return ''; + } + } + + /** + * Closes the stream and any underlying resources. + */ + public function close() + { + if ($this->isAttached() === true) { + if ($this->isPipe()) { + pclose($this->stream); + } else { + fclose($this->stream); + } + } + + $this->detach(); + } + + /** + * Get the size of the stream if known. + * + * @return int|null Returns the size in bytes if known, or null if unknown. + */ + public function getSize() + { + if (!$this->size && $this->isAttached() === true) { + $stats = fstat($this->stream); + $this->size = isset($stats['size']) && !$this->isPipe() ? $stats['size'] : null; + } + + return $this->size; + } + + /** + * Returns the current position of the file read/write pointer + * + * @return int Position of the file pointer + * + * @throws RuntimeException on error. + */ + public function tell() + { + if (!$this->isAttached() || ($position = ftell($this->stream)) === false || $this->isPipe()) { + throw new RuntimeException('Could not get the position of the pointer in stream'); + } + + return $position; + } + + /** + * Returns true if the stream is at the end of the stream. + * + * @return bool + */ + public function eof() + { + return $this->isAttached() ? feof($this->stream) : true; + } + + /** + * Returns whether or not the stream is readable. + * + * @return bool + */ + public function isReadable() + { + if ($this->readable === null) { + if ($this->isPipe()) { + $this->readable = true; + } else { + $this->readable = false; + if ($this->isAttached()) { + $meta = $this->getMetadata(); + foreach (self::$modes['readable'] as $mode) { + if (strpos($meta['mode'], $mode) === 0) { + $this->readable = true; + break; + } + } + } + } + } + + return $this->readable; + } + + /** + * Returns whether or not the stream is writable. + * + * @return bool + */ + public function isWritable() + { + if ($this->writable === null) { + $this->writable = false; + if ($this->isAttached()) { + $meta = $this->getMetadata(); + foreach (self::$modes['writable'] as $mode) { + if (strpos($meta['mode'], $mode) === 0) { + $this->writable = true; + break; + } + } + } + } + + return $this->writable; + } + + /** + * Returns whether or not the stream is seekable. + * + * @return bool + */ + public function isSeekable() + { + if ($this->seekable === null) { + $this->seekable = false; + if ($this->isAttached()) { + $meta = $this->getMetadata(); + $this->seekable = !$this->isPipe() && $meta['seekable']; + } + } + + return $this->seekable; + } + + /** + * Seek to a position in the stream. + * + * @link http://www.php.net/manual/en/function.fseek.php + * + * @param int $offset Stream offset + * @param int $whence Specifies how the cursor position will be calculated + * based on the seek offset. Valid values are identical to the built-in + * PHP $whence values for `fseek()`. SEEK_SET: Set position equal to + * offset bytes SEEK_CUR: Set position to current location plus offset + * SEEK_END: Set position to end-of-stream plus offset. + * + * @throws RuntimeException on failure. + */ + public function seek($offset, $whence = SEEK_SET) + { + // Note that fseek returns 0 on success! + if (!$this->isSeekable() || fseek($this->stream, $offset, $whence) === -1) { + throw new RuntimeException('Could not seek in stream'); + } + } + + /** + * Seek to the beginning of the stream. + * + * If the stream is not seekable, this method will raise an exception; + * otherwise, it will perform a seek(0). + * + * @see seek() + * + * @link http://www.php.net/manual/en/function.fseek.php + * + * @throws RuntimeException on failure. + */ + public function rewind() + { + if (!$this->isSeekable() || rewind($this->stream) === false) { + throw new RuntimeException('Could not rewind stream'); + } + } + + /** + * Read data from the stream. + * + * @param int $length Read up to $length bytes from the object and return + * them. Fewer than $length bytes may be returned if underlying stream + * call returns fewer bytes. + * + * @return string Returns the data read from the stream, or an empty string + * if no bytes are available. + * + * @throws RuntimeException if an error occurs. + */ + public function read($length) + { + if (!$this->isReadable() || ($data = fread($this->stream, $length)) === false) { + throw new RuntimeException('Could not read from stream'); + } + + return $data; + } + + /** + * Write data to the stream. + * + * @param string $string The string that is to be written. + * + * @return int Returns the number of bytes written to the stream. + * + * @throws RuntimeException on failure. + */ + public function write($string) + { + if (!$this->isWritable() || ($written = fwrite($this->stream, $string)) === false) { + throw new RuntimeException('Could not write to stream'); + } + + // reset size so that it will be recalculated on next call to getSize() + $this->size = null; + + return $written; + } + + /** + * Returns the remaining contents in a string + * + * @return string + * + * @throws RuntimeException if unable to read or an error occurs while + * reading. + */ + public function getContents() + { + if (!$this->isReadable() || ($contents = stream_get_contents($this->stream)) === false) { + throw new RuntimeException('Could not get contents of stream'); + } + + return $contents; + } + + /** + * Returns whether or not the stream is a pipe. + * + * @return bool + */ + public function isPipe() + { + if ($this->isPipe === null) { + $this->isPipe = false; + if ($this->isAttached()) { + $mode = fstat($this->stream)['mode']; + $this->isPipe = ($mode & self::FSTAT_MODE_S_IFIFO) !== 0; + } + } + + return $this->isPipe; + } +} diff --git a/system/vendor/slim/slim/Slim/Http/UploadedFile.php b/system/vendor/slim/slim/Slim/Http/UploadedFile.php new file mode 100644 index 0000000..ae5dfb6 --- /dev/null +++ b/system/vendor/slim/slim/Slim/Http/UploadedFile.php @@ -0,0 +1,327 @@ +has('slim.files')) { + return $env['slim.files']; + } elseif (isset($_FILES)) { + return static::parseUploadedFiles($_FILES); + } + + return []; + } + + /** + * Parse a non-normalized, i.e. $_FILES superglobal, tree of uploaded file data. + * + * @param array $uploadedFiles The non-normalized tree of uploaded file data. + * + * @return array A normalized tree of UploadedFile instances. + */ + private static function parseUploadedFiles(array $uploadedFiles) + { + $parsed = []; + foreach ($uploadedFiles as $field => $uploadedFile) { + if (!isset($uploadedFile['error'])) { + if (is_array($uploadedFile)) { + $parsed[$field] = static::parseUploadedFiles($uploadedFile); + } + continue; + } + + $parsed[$field] = []; + if (!is_array($uploadedFile['error'])) { + $parsed[$field] = new static( + $uploadedFile['tmp_name'], + isset($uploadedFile['name']) ? $uploadedFile['name'] : null, + isset($uploadedFile['type']) ? $uploadedFile['type'] : null, + isset($uploadedFile['size']) ? $uploadedFile['size'] : null, + $uploadedFile['error'], + true + ); + } else { + $subArray = []; + foreach ($uploadedFile['error'] as $fileIdx => $error) { + // normalise subarray and re-parse to move the input's keyname up a level + $subArray[$fileIdx]['name'] = $uploadedFile['name'][$fileIdx]; + $subArray[$fileIdx]['type'] = $uploadedFile['type'][$fileIdx]; + $subArray[$fileIdx]['tmp_name'] = $uploadedFile['tmp_name'][$fileIdx]; + $subArray[$fileIdx]['error'] = $uploadedFile['error'][$fileIdx]; + $subArray[$fileIdx]['size'] = $uploadedFile['size'][$fileIdx]; + + $parsed[$field] = static::parseUploadedFiles($subArray); + } + } + } + + return $parsed; + } + + /** + * Construct a new UploadedFile instance. + * + * @param string $file The full path to the uploaded file provided by the client. + * @param string|null $name The file name. + * @param string|null $type The file media type. + * @param int|null $size The file size in bytes. + * @param int $error The UPLOAD_ERR_XXX code representing the status of the upload. + * @param bool $sapi Indicates if the upload is in a SAPI environment. + */ + public function __construct($file, $name = null, $type = null, $size = null, $error = UPLOAD_ERR_OK, $sapi = false) + { + $this->file = $file; + $this->name = $name; + $this->type = $type; + $this->size = $size; + $this->error = $error; + $this->sapi = $sapi; + } + + /** + * Retrieve a stream representing the uploaded file. + * + * This method MUST return a StreamInterface instance, representing the + * uploaded file. The purpose of this method is to allow utilizing native PHP + * stream functionality to manipulate the file upload, such as + * stream_copy_to_stream() (though the result will need to be decorated in a + * native PHP stream wrapper to work with such functions). + * + * If the moveTo() method has been called previously, this method MUST raise + * an exception. + * + * @return StreamInterface Stream representation of the uploaded file. + * @throws \RuntimeException in cases when no stream is available or can be + * created. + */ + public function getStream() + { + if ($this->moved) { + throw new \RuntimeException(sprintf('Uploaded file %1s has already been moved', $this->name)); + } + if ($this->stream === null) { + $this->stream = new Stream(fopen($this->file, 'r')); + } + + return $this->stream; + } + + /** + * Move the uploaded file to a new location. + * + * Use this method as an alternative to move_uploaded_file(). This method is + * guaranteed to work in both SAPI and non-SAPI environments. + * Implementations must determine which environment they are in, and use the + * appropriate method (move_uploaded_file(), rename(), or a stream + * operation) to perform the operation. + * + * $targetPath may be an absolute path, or a relative path. If it is a + * relative path, resolution should be the same as used by PHP's rename() + * function. + * + * The original file or stream MUST be removed on completion. + * + * If this method is called more than once, any subsequent calls MUST raise + * an exception. + * + * When used in an SAPI environment where $_FILES is populated, when writing + * files via moveTo(), is_uploaded_file() and move_uploaded_file() SHOULD be + * used to ensure permissions and upload status are verified correctly. + * + * If you wish to move to a stream, use getStream(), as SAPI operations + * cannot guarantee writing to stream destinations. + * + * @see http://php.net/is_uploaded_file + * @see http://php.net/move_uploaded_file + * + * @param string $targetPath Path to which to move the uploaded file. + * + * @throws InvalidArgumentException if the $path specified is invalid. + * @throws RuntimeException on any error during the move operation, or on + * the second or subsequent call to the method. + */ + public function moveTo($targetPath) + { + if ($this->moved) { + throw new RuntimeException('Uploaded file already moved'); + } + + $targetIsStream = strpos($targetPath, '://') > 0; + if (!$targetIsStream && !is_writable(dirname($targetPath))) { + throw new InvalidArgumentException('Upload target path is not writable'); + } + + if ($targetIsStream) { + if (!copy($this->file, $targetPath)) { + throw new RuntimeException(sprintf('Error moving uploaded file %1s to %2s', $this->name, $targetPath)); + } + if (!unlink($this->file)) { + throw new RuntimeException(sprintf('Error removing uploaded file %1s', $this->name)); + } + } elseif ($this->sapi) { + if (!is_uploaded_file($this->file)) { + throw new RuntimeException(sprintf('%1s is not a valid uploaded file', $this->file)); + } + + if (!move_uploaded_file($this->file, $targetPath)) { + throw new RuntimeException(sprintf('Error moving uploaded file %1s to %2s', $this->name, $targetPath)); + } + } else { + if (!rename($this->file, $targetPath)) { + throw new RuntimeException(sprintf('Error moving uploaded file %1s to %2s', $this->name, $targetPath)); + } + } + + $this->moved = true; + } + + /** + * Retrieve the error associated with the uploaded file. + * + * The return value MUST be one of PHP's UPLOAD_ERR_XXX constants. + * + * If the file was uploaded successfully, this method MUST return + * UPLOAD_ERR_OK. + * + * Implementations SHOULD return the value stored in the "error" key of + * the file in the $_FILES array. + * + * @see http://php.net/manual/en/features.file-upload.errors.php + * + * @return int One of PHP's UPLOAD_ERR_XXX constants. + */ + public function getError() + { + return $this->error; + } + + /** + * Retrieve the filename sent by the client. + * + * Do not trust the value returned by this method. A client could send + * a malicious filename with the intention to corrupt or hack your + * application. + * + * Implementations SHOULD return the value stored in the "name" key of + * the file in the $_FILES array. + * + * @return string|null The filename sent by the client or null if none + * was provided. + */ + public function getClientFilename() + { + return $this->name; + } + + /** + * Retrieve the media type sent by the client. + * + * Do not trust the value returned by this method. A client could send + * a malicious media type with the intention to corrupt or hack your + * application. + * + * Implementations SHOULD return the value stored in the "type" key of + * the file in the $_FILES array. + * + * @return string|null The media type sent by the client or null if none + * was provided. + */ + public function getClientMediaType() + { + return $this->type; + } + + /** + * Retrieve the file size. + * + * Implementations SHOULD return the value stored in the "size" key of + * the file in the $_FILES array if available, as PHP calculates this based + * on the actual size transmitted. + * + * @return int|null The file size in bytes or null if unknown. + */ + public function getSize() + { + return $this->size; + } +} diff --git a/system/vendor/slim/slim/Slim/Http/Uri.php b/system/vendor/slim/slim/Slim/Http/Uri.php new file mode 100644 index 0000000..31f202a --- /dev/null +++ b/system/vendor/slim/slim/Slim/Http/Uri.php @@ -0,0 +1,824 @@ +scheme = $this->filterScheme($scheme); + $this->host = $host; + $this->port = $this->filterPort($port); + $this->path = empty($path) ? '/' : $this->filterPath($path); + $this->query = $this->filterQuery($query); + $this->fragment = $this->filterQuery($fragment); + $this->user = $user; + $this->password = $password; + } + + /** + * Create new Uri from string. + * + * @param string $uri Complete Uri string + * (i.e., https://user:pass@host:443/path?query). + * + * @return self + */ + public static function createFromString($uri) + { + if (!is_string($uri) && !method_exists($uri, '__toString')) { + throw new InvalidArgumentException('Uri must be a string'); + } + + $parts = parse_url($uri); + $scheme = isset($parts['scheme']) ? $parts['scheme'] : ''; + $user = isset($parts['user']) ? $parts['user'] : ''; + $pass = isset($parts['pass']) ? $parts['pass'] : ''; + $host = isset($parts['host']) ? $parts['host'] : ''; + $port = isset($parts['port']) ? $parts['port'] : null; + $path = isset($parts['path']) ? $parts['path'] : ''; + $query = isset($parts['query']) ? $parts['query'] : ''; + $fragment = isset($parts['fragment']) ? $parts['fragment'] : ''; + + return new static($scheme, $host, $port, $path, $query, $fragment, $user, $pass); + } + + /** + * Create new Uri from environment. + * + * @param Environment $env + * + * @return self + */ + public static function createFromEnvironment(Environment $env) + { + // Scheme + $isSecure = $env->get('HTTPS'); + $scheme = (empty($isSecure) || $isSecure === 'off') ? 'http' : 'https'; + + // Authority: Username and password + $username = $env->get('PHP_AUTH_USER', ''); + $password = $env->get('PHP_AUTH_PW', ''); + + // Authority: Host + if ($env->has('HTTP_HOST')) { + $host = $env->get('HTTP_HOST'); + } else { + $host = $env->get('SERVER_NAME'); + } + + // Authority: Port + $port = (int)$env->get('SERVER_PORT', 80); + if (preg_match('/^(\[[a-fA-F0-9:.]+\])(:\d+)?\z/', $host, $matches)) { + $host = $matches[1]; + + if ($matches[2]) { + $port = (int) substr($matches[2], 1); + } + } else { + $pos = strpos($host, ':'); + if ($pos !== false) { + $port = (int) substr($host, $pos + 1); + $host = strstr($host, ':', true); + } + } + + // Path + $requestScriptName = parse_url($env->get('SCRIPT_NAME'), PHP_URL_PATH); + $requestScriptDir = dirname($requestScriptName); + + // parse_url() requires a full URL. As we don't extract the domain name or scheme, + // we use a stand-in. + $requestUri = parse_url('http://example.com' . $env->get('REQUEST_URI'), PHP_URL_PATH); + + $basePath = ''; + $virtualPath = $requestUri; + if (stripos($requestUri, $requestScriptName) === 0) { + $basePath = $requestScriptName; + } elseif ($requestScriptDir !== '/' && stripos($requestUri, $requestScriptDir) === 0) { + $basePath = $requestScriptDir; + } + + if ($basePath) { + $virtualPath = ltrim(substr($requestUri, strlen($basePath)), '/'); + } + + // Query string + $queryString = $env->get('QUERY_STRING', ''); + if ($queryString === '') { + $queryString = parse_url('http://example.com' . $env->get('REQUEST_URI'), PHP_URL_QUERY); + } + + // Fragment + $fragment = ''; + + // Build Uri + $uri = new static($scheme, $host, $port, $virtualPath, $queryString, $fragment, $username, $password); + if ($basePath) { + $uri = $uri->withBasePath($basePath); + } + + return $uri; + } + + /******************************************************************************** + * Scheme + *******************************************************************************/ + + /** + * Retrieve the scheme component of the URI. + * + * If no scheme is present, this method MUST return an empty string. + * + * The value returned MUST be normalized to lowercase, per RFC 3986 + * Section 3.1. + * + * The trailing ":" character is not part of the scheme and MUST NOT be + * added. + * + * @see https://tools.ietf.org/html/rfc3986#section-3.1 + * @return string The URI scheme. + */ + public function getScheme() + { + return $this->scheme; + } + + /** + * Return an instance with the specified scheme. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified scheme. + * + * Implementations MUST support the schemes "http" and "https" case + * insensitively, and MAY accommodate other schemes if required. + * + * An empty scheme is equivalent to removing the scheme. + * + * @param string $scheme The scheme to use with the new instance. + * @return self A new instance with the specified scheme. + * @throws \InvalidArgumentException for invalid or unsupported schemes. + */ + public function withScheme($scheme) + { + $scheme = $this->filterScheme($scheme); + $clone = clone $this; + $clone->scheme = $scheme; + + return $clone; + } + + /** + * Filter Uri scheme. + * + * @param string $scheme Raw Uri scheme. + * @return string + * + * @throws InvalidArgumentException If the Uri scheme is not a string. + * @throws InvalidArgumentException If Uri scheme is not "", "https", or "http". + */ + protected function filterScheme($scheme) + { + static $valid = [ + '' => true, + 'https' => true, + 'http' => true, + ]; + + if (!is_string($scheme) && !method_exists($scheme, '__toString')) { + throw new InvalidArgumentException('Uri scheme must be a string'); + } + + $scheme = str_replace('://', '', strtolower((string)$scheme)); + if (!isset($valid[$scheme])) { + throw new InvalidArgumentException('Uri scheme must be one of: "", "https", "http"'); + } + + return $scheme; + } + + /******************************************************************************** + * Authority + *******************************************************************************/ + + /** + * Retrieve the authority component of the URI. + * + * If no authority information is present, this method MUST return an empty + * string. + * + * The authority syntax of the URI is: + * + *
    +     * [user-info@]host[:port]
    +     * 
    + * + * If the port component is not set or is the standard port for the current + * scheme, it SHOULD NOT be included. + * + * @see https://tools.ietf.org/html/rfc3986#section-3.2 + * @return string The URI authority, in "[user-info@]host[:port]" format. + */ + public function getAuthority() + { + $userInfo = $this->getUserInfo(); + $host = $this->getHost(); + $port = $this->getPort(); + + return ($userInfo ? $userInfo . '@' : '') . $host . ($port !== null ? ':' . $port : ''); + } + + /** + * Retrieve the user information component of the URI. + * + * If no user information is present, this method MUST return an empty + * string. + * + * If a user is present in the URI, this will return that value; + * additionally, if the password is also present, it will be appended to the + * user value, with a colon (":") separating the values. + * + * The trailing "@" character is not part of the user information and MUST + * NOT be added. + * + * @return string The URI user information, in "username[:password]" format. + */ + public function getUserInfo() + { + return $this->user . ($this->password ? ':' . $this->password : ''); + } + + /** + * Return an instance with the specified user information. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified user information. + * + * Password is optional, but the user information MUST include the + * user; an empty string for the user is equivalent to removing user + * information. + * + * @param string $user The user name to use for authority. + * @param null|string $password The password associated with $user. + * @return self A new instance with the specified user information. + */ + public function withUserInfo($user, $password = null) + { + $clone = clone $this; + $clone->user = $user; + $clone->password = $password ? $password : ''; + + return $clone; + } + + /** + * Retrieve the host component of the URI. + * + * If no host is present, this method MUST return an empty string. + * + * The value returned MUST be normalized to lowercase, per RFC 3986 + * Section 3.2.2. + * + * @see http://tools.ietf.org/html/rfc3986#section-3.2.2 + * @return string The URI host. + */ + public function getHost() + { + return $this->host; + } + + /** + * Return an instance with the specified host. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified host. + * + * An empty host value is equivalent to removing the host. + * + * @param string $host The hostname to use with the new instance. + * @return self A new instance with the specified host. + * @throws \InvalidArgumentException for invalid hostnames. + */ + public function withHost($host) + { + $clone = clone $this; + $clone->host = $host; + + return $clone; + } + + /** + * Retrieve the port component of the URI. + * + * If a port is present, and it is non-standard for the current scheme, + * this method MUST return it as an integer. If the port is the standard port + * used with the current scheme, this method SHOULD return null. + * + * If no port is present, and no scheme is present, this method MUST return + * a null value. + * + * If no port is present, but a scheme is present, this method MAY return + * the standard port for that scheme, but SHOULD return null. + * + * @return null|int The URI port. + */ + public function getPort() + { + return $this->port && !$this->hasStandardPort() ? $this->port : null; + } + + /** + * Return an instance with the specified port. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified port. + * + * Implementations MUST raise an exception for ports outside the + * established TCP and UDP port ranges. + * + * A null value provided for the port is equivalent to removing the port + * information. + * + * @param null|int $port The port to use with the new instance; a null value + * removes the port information. + * @return self A new instance with the specified port. + * @throws \InvalidArgumentException for invalid ports. + */ + public function withPort($port) + { + $port = $this->filterPort($port); + $clone = clone $this; + $clone->port = $port; + + return $clone; + } + + /** + * Does this Uri use a standard port? + * + * @return bool + */ + protected function hasStandardPort() + { + return ($this->scheme === 'http' && $this->port === 80) || ($this->scheme === 'https' && $this->port === 443); + } + + /** + * Filter Uri port. + * + * @param null|int $port The Uri port number. + * @return null|int + * + * @throws InvalidArgumentException If the port is invalid. + */ + protected function filterPort($port) + { + if (is_null($port) || (is_integer($port) && ($port >= 1 && $port <= 65535))) { + return $port; + } + + throw new InvalidArgumentException('Uri port must be null or an integer between 1 and 65535 (inclusive)'); + } + + /******************************************************************************** + * Path + *******************************************************************************/ + + /** + * Retrieve the path component of the URI. + * + * The path can either be empty or absolute (starting with a slash) or + * rootless (not starting with a slash). Implementations MUST support all + * three syntaxes. + * + * Normally, the empty path "" and absolute path "/" are considered equal as + * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically + * do this normalization because in contexts with a trimmed base path, e.g. + * the front controller, this difference becomes significant. It's the task + * of the user to handle both "" and "/". + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.3. + * + * As an example, if the value should include a slash ("/") not intended as + * delimiter between path segments, that value MUST be passed in encoded + * form (e.g., "%2F") to the instance. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.3 + * @return string The URI path. + */ + public function getPath() + { + return $this->path; + } + + /** + * Return an instance with the specified path. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified path. + * + * The path can either be empty or absolute (starting with a slash) or + * rootless (not starting with a slash). Implementations MUST support all + * three syntaxes. + * + * If the path is intended to be domain-relative rather than path relative then + * it must begin with a slash ("/"). Paths not starting with a slash ("/") + * are assumed to be relative to some base path known to the application or + * consumer. + * + * Users can provide both encoded and decoded path characters. + * Implementations ensure the correct encoding as outlined in getPath(). + * + * @param string $path The path to use with the new instance. + * @return self A new instance with the specified path. + * @throws \InvalidArgumentException for invalid paths. + */ + public function withPath($path) + { + if (!is_string($path)) { + throw new InvalidArgumentException('Uri path must be a string'); + } + + $clone = clone $this; + $clone->path = $this->filterPath($path); + + // if the path is absolute, then clear basePath + if (substr($path, 0, 1) == '/') { + $clone->basePath = ''; + } + + return $clone; + } + + /** + * Retrieve the base path segment of the URI. + * + * Note: This method is not part of the PSR-7 standard. + * + * This method MUST return a string; if no path is present it MUST return + * an empty string. + * + * @return string The base path segment of the URI. + */ + public function getBasePath() + { + return $this->basePath; + } + + /** + * Set base path. + * + * Note: This method is not part of the PSR-7 standard. + * + * @param string $basePath + * @return self + */ + public function withBasePath($basePath) + { + if (!is_string($basePath)) { + throw new InvalidArgumentException('Uri path must be a string'); + } + if (!empty($basePath)) { + $basePath = '/' . trim($basePath, '/'); // <-- Trim on both sides + } + $clone = clone $this; + + if ($basePath !== '/') { + $clone->basePath = $this->filterPath($basePath); + } + + return $clone; + } + + /** + * Filter Uri path. + * + * This method percent-encodes all reserved + * characters in the provided path string. This method + * will NOT double-encode characters that are already + * percent-encoded. + * + * @param string $path The raw uri path. + * @return string The RFC 3986 percent-encoded uri path. + * @link http://www.faqs.org/rfcs/rfc3986.html + */ + protected function filterPath($path) + { + return preg_replace_callback( + '/(?:[^a-zA-Z0-9_\-\.~:@&=\+\$,\/;%]+|%(?![A-Fa-f0-9]{2}))/', + function ($match) { + return rawurlencode($match[0]); + }, + $path + ); + } + + /******************************************************************************** + * Query + *******************************************************************************/ + + /** + * Retrieve the query string of the URI. + * + * If no query string is present, this method MUST return an empty string. + * + * The leading "?" character is not part of the query and MUST NOT be + * added. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.4. + * + * As an example, if a value in a key/value pair of the query string should + * include an ampersand ("&") not intended as a delimiter between values, + * that value MUST be passed in encoded form (e.g., "%26") to the instance. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.4 + * @return string The URI query string. + */ + public function getQuery() + { + return $this->query; + } + + /** + * Return an instance with the specified query string. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified query string. + * + * Users can provide both encoded and decoded query characters. + * Implementations ensure the correct encoding as outlined in getQuery(). + * + * An empty query string value is equivalent to removing the query string. + * + * @param string $query The query string to use with the new instance. + * @return self A new instance with the specified query string. + * @throws \InvalidArgumentException for invalid query strings. + */ + public function withQuery($query) + { + if (!is_string($query) && !method_exists($query, '__toString')) { + throw new InvalidArgumentException('Uri query must be a string'); + } + $query = ltrim((string)$query, '?'); + $clone = clone $this; + $clone->query = $this->filterQuery($query); + + return $clone; + } + + /** + * Filters the query string or fragment of a URI. + * + * @param string $query The raw uri query string. + * @return string The percent-encoded query string. + */ + protected function filterQuery($query) + { + return preg_replace_callback( + '/(?:[^a-zA-Z0-9_\-\.~!\$&\'\(\)\*\+,;=%:@\/\?]+|%(?![A-Fa-f0-9]{2}))/', + function ($match) { + return rawurlencode($match[0]); + }, + $query + ); + } + + /******************************************************************************** + * Fragment + *******************************************************************************/ + + /** + * Retrieve the fragment component of the URI. + * + * If no fragment is present, this method MUST return an empty string. + * + * The leading "#" character is not part of the fragment and MUST NOT be + * added. + * + * The value returned MUST be percent-encoded, but MUST NOT double-encode + * any characters. To determine what characters to encode, please refer to + * RFC 3986, Sections 2 and 3.5. + * + * @see https://tools.ietf.org/html/rfc3986#section-2 + * @see https://tools.ietf.org/html/rfc3986#section-3.5 + * @return string The URI fragment. + */ + public function getFragment() + { + return $this->fragment; + } + + /** + * Return an instance with the specified URI fragment. + * + * This method MUST retain the state of the current instance, and return + * an instance that contains the specified URI fragment. + * + * Users can provide both encoded and decoded fragment characters. + * Implementations ensure the correct encoding as outlined in getFragment(). + * + * An empty fragment value is equivalent to removing the fragment. + * + * @param string $fragment The fragment to use with the new instance. + * @return self A new instance with the specified fragment. + */ + public function withFragment($fragment) + { + if (!is_string($fragment) && !method_exists($fragment, '__toString')) { + throw new InvalidArgumentException('Uri fragment must be a string'); + } + $fragment = ltrim((string)$fragment, '#'); + $clone = clone $this; + $clone->fragment = $this->filterQuery($fragment); + + return $clone; + } + + /******************************************************************************** + * Helpers + *******************************************************************************/ + + /** + * Return the string representation as a URI reference. + * + * Depending on which components of the URI are present, the resulting + * string is either a full URI or relative reference according to RFC 3986, + * Section 4.1. The method concatenates the various components of the URI, + * using the appropriate delimiters: + * + * - If a scheme is present, it MUST be suffixed by ":". + * - If an authority is present, it MUST be prefixed by "//". + * - The path can be concatenated without delimiters. But there are two + * cases where the path has to be adjusted to make the URI reference + * valid as PHP does not allow to throw an exception in __toString(): + * - If the path is rootless and an authority is present, the path MUST + * be prefixed by "/". + * - If the path is starting with more than one "/" and no authority is + * present, the starting slashes MUST be reduced to one. + * - If a query is present, it MUST be prefixed by "?". + * - If a fragment is present, it MUST be prefixed by "#". + * + * @see http://tools.ietf.org/html/rfc3986#section-4.1 + * @return string + */ + public function __toString() + { + $scheme = $this->getScheme(); + $authority = $this->getAuthority(); + $basePath = $this->getBasePath(); + $path = $this->getPath(); + $query = $this->getQuery(); + $fragment = $this->getFragment(); + + $path = $basePath . '/' . ltrim($path, '/'); + + return ($scheme ? $scheme . ':' : '') + . ($authority ? '//' . $authority : '') + . $path + . ($query ? '?' . $query : '') + . ($fragment ? '#' . $fragment : ''); + } + + /** + * Return the fully qualified base URL. + * + * Note that this method never includes a trailing / + * + * This method is not part of PSR-7. + * + * @return string + */ + public function getBaseUrl() + { + $scheme = $this->getScheme(); + $authority = $this->getAuthority(); + $basePath = $this->getBasePath(); + + if ($authority && substr($basePath, 0, 1) !== '/') { + $basePath = $basePath . '/' . $basePath; + } + + return ($scheme ? $scheme . ':' : '') + . ($authority ? '//' . $authority : '') + . rtrim($basePath, '/'); + } +} diff --git a/system/vendor/slim/slim/Slim/Interfaces/CallableResolverInterface.php b/system/vendor/slim/slim/Slim/Interfaces/CallableResolverInterface.php new file mode 100644 index 0000000..17d81db --- /dev/null +++ b/system/vendor/slim/slim/Slim/Interfaces/CallableResolverInterface.php @@ -0,0 +1,27 @@ +middlewareLock) { + throw new RuntimeException('Middleware can’t be added once the stack is dequeuing'); + } + + if (is_null($this->stack)) { + $this->seedMiddlewareStack(); + } + $next = $this->stack->top(); + $this->stack[] = function ( + ServerRequestInterface $request, + ResponseInterface $response + ) use ( + $callable, + $next + ) { + $result = call_user_func($callable, $request, $response, $next); + if ($result instanceof ResponseInterface === false) { + throw new UnexpectedValueException( + 'Middleware must return instance of \Psr\Http\Message\ResponseInterface' + ); + } + + return $result; + }; + + return $this; + } + + /** + * Seed middleware stack with first callable + * + * @param callable $kernel The last item to run as middleware + * + * @throws RuntimeException if the stack is seeded more than once + */ + protected function seedMiddlewareStack(callable $kernel = null) + { + if (!is_null($this->stack)) { + throw new RuntimeException('MiddlewareStack can only be seeded once.'); + } + if ($kernel === null) { + $kernel = $this; + } + $this->stack = new SplStack; + $this->stack->setIteratorMode(SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_KEEP); + $this->stack[] = $kernel; + } + + /** + * Call middleware stack + * + * @param ServerRequestInterface $request A request object + * @param ResponseInterface $response A response object + * + * @return ResponseInterface + */ + public function callMiddlewareStack(ServerRequestInterface $request, ResponseInterface $response) + { + if (is_null($this->stack)) { + $this->seedMiddlewareStack(); + } + /** @var callable $start */ + $start = $this->stack->top(); + $this->middlewareLock = true; + $response = $start($request, $response); + $this->middlewareLock = false; + return $response; + } +} diff --git a/system/vendor/slim/slim/Slim/Routable.php b/system/vendor/slim/slim/Slim/Routable.php new file mode 100644 index 0000000..c912db4 --- /dev/null +++ b/system/vendor/slim/slim/Slim/Routable.php @@ -0,0 +1,106 @@ +middleware; + } + + /** + * Get the route pattern + * + * @return string + */ + public function getPattern() + { + return $this->pattern; + } + + /** + * Set container for use with resolveCallable + * + * @param ContainerInterface $container + * + * @return self + */ + public function setContainer(ContainerInterface $container) + { + $this->container = $container; + return $this; + } + + /** + * Prepend middleware to the middleware collection + * + * @param callable|string $callable The callback routine + * + * @return static + */ + public function add($callable) + { + $this->middleware[] = new DeferredCallable($callable, $this->container); + return $this; + } + + /** + * Set the route pattern + * + * @param string $newPattern + */ + public function setPattern($newPattern) + { + $this->pattern = $newPattern; + } +} diff --git a/system/vendor/slim/slim/Slim/Route.php b/system/vendor/slim/slim/Slim/Route.php new file mode 100644 index 0000000..6a44b3f --- /dev/null +++ b/system/vendor/slim/slim/Slim/Route.php @@ -0,0 +1,381 @@ +methods = is_string($methods) ? [$methods] : $methods; + $this->pattern = $pattern; + $this->callable = $callable; + $this->groups = $groups; + $this->identifier = 'route' . $identifier; + } + + /** + * Finalize the route in preparation for dispatching + */ + public function finalize() + { + if ($this->finalized) { + return; + } + + $groupMiddleware = []; + foreach ($this->getGroups() as $group) { + $groupMiddleware = array_merge($group->getMiddleware(), $groupMiddleware); + } + + $this->middleware = array_merge($this->middleware, $groupMiddleware); + + foreach ($this->getMiddleware() as $middleware) { + $this->addMiddleware($middleware); + } + + $this->finalized = true; + } + + /** + * Get route callable + * + * @return callable + */ + public function getCallable() + { + return $this->callable; + } + + /** + * This method enables you to override the Route's callable + * + * @param string|\Closure $callable + */ + public function setCallable($callable) + { + $this->callable = $callable; + } + + /** + * Get route methods + * + * @return string[] + */ + public function getMethods() + { + return $this->methods; + } + + /** + * Get parent route groups + * + * @return RouteGroup[] + */ + public function getGroups() + { + return $this->groups; + } + + /** + * Get route name + * + * @return null|string + */ + public function getName() + { + return $this->name; + } + + /** + * Get route identifier + * + * @return string + */ + public function getIdentifier() + { + return $this->identifier; + } + + /** + * Get output buffering mode + * + * @return boolean|string + */ + public function getOutputBuffering() + { + return $this->outputBuffering; + } + + /** + * Set output buffering mode + * + * One of: false, 'prepend' or 'append' + * + * @param boolean|string $mode + * + * @throws InvalidArgumentException If an unknown buffering mode is specified + */ + public function setOutputBuffering($mode) + { + if (!in_array($mode, [false, 'prepend', 'append'], true)) { + throw new InvalidArgumentException('Unknown output buffering mode'); + } + $this->outputBuffering = $mode; + } + + /** + * Set route name + * + * @param string $name + * + * @return self + * + * @throws InvalidArgumentException if the route name is not a string + */ + public function setName($name) + { + if (!is_string($name)) { + throw new InvalidArgumentException('Route name must be a string'); + } + $this->name = $name; + return $this; + } + + /** + * Set a route argument + * + * @param string $name + * @param string $value + * + * @return self + */ + public function setArgument($name, $value) + { + $this->arguments[$name] = $value; + return $this; + } + + /** + * Replace route arguments + * + * @param array $arguments + * + * @return self + */ + public function setArguments(array $arguments) + { + $this->arguments = $arguments; + return $this; + } + + /** + * Retrieve route arguments + * + * @return array + */ + public function getArguments() + { + return $this->arguments; + } + + /** + * Retrieve a specific route argument + * + * @param string $name + * @param string|null $default + * + * @return mixed + */ + public function getArgument($name, $default = null) + { + if (array_key_exists($name, $this->arguments)) { + return $this->arguments[$name]; + } + return $default; + } + + /******************************************************************************** + * Route Runner + *******************************************************************************/ + + /** + * Prepare the route for use + * + * @param ServerRequestInterface $request + * @param array $arguments + */ + public function prepare(ServerRequestInterface $request, array $arguments) + { + // Add the arguments + foreach ($arguments as $k => $v) { + $this->setArgument($k, $v); + } + } + + /** + * Run route + * + * This method traverses the middleware stack, including the route's callable + * and captures the resultant HTTP response object. It then sends the response + * back to the Application. + * + * @param ServerRequestInterface $request + * @param ResponseInterface $response + * + * @return ResponseInterface + */ + public function run(ServerRequestInterface $request, ResponseInterface $response) + { + // Finalise route now that we are about to run it + $this->finalize(); + + // Traverse middleware stack and fetch updated response + return $this->callMiddlewareStack($request, $response); + } + + /** + * Dispatch route callable against current Request and Response objects + * + * This method invokes the route object's callable. If middleware is + * registered for the route, each callable middleware is invoked in + * the order specified. + * + * @param ServerRequestInterface $request The current Request object + * @param ResponseInterface $response The current Response object + * @return \Psr\Http\Message\ResponseInterface + * @throws \Exception if the route callable throws an exception + */ + public function __invoke(ServerRequestInterface $request, ResponseInterface $response) + { + $this->callable = $this->resolveCallable($this->callable); + + /** @var InvocationStrategyInterface $handler */ + $handler = isset($this->container) ? $this->container->get('foundHandler') : new RequestResponse(); + + // invoke route callable + if ($this->outputBuffering === false) { + $newResponse = $handler($this->callable, $request, $response, $this->arguments); + } else { + try { + ob_start(); + $newResponse = $handler($this->callable, $request, $response, $this->arguments); + $output = ob_get_clean(); + // @codeCoverageIgnoreStart + } catch (Throwable $e) { + ob_end_clean(); + throw $e; + // @codeCoverageIgnoreEnd + } catch (Exception $e) { + ob_end_clean(); + throw $e; + } + } + + if ($newResponse instanceof ResponseInterface) { + // if route callback returns a ResponseInterface, then use it + $response = $newResponse; + } elseif (is_string($newResponse)) { + // if route callback returns a string, then append it to the response + if ($response->getBody()->isWritable()) { + $response->getBody()->write($newResponse); + } + } + + if (!empty($output) && $response->getBody()->isWritable()) { + if ($this->outputBuffering === 'prepend') { + // prepend output buffer content + $body = new Http\Body(fopen('php://temp', 'r+')); + $body->write($output . $response->getBody()); + $response = $response->withBody($body); + } elseif ($this->outputBuffering === 'append') { + // append output buffer content + $response->getBody()->write($output); + } + } + + return $response; + } +} diff --git a/system/vendor/slim/slim/Slim/RouteGroup.php b/system/vendor/slim/slim/Slim/RouteGroup.php new file mode 100644 index 0000000..705ac45 --- /dev/null +++ b/system/vendor/slim/slim/Slim/RouteGroup.php @@ -0,0 +1,47 @@ +pattern = $pattern; + $this->callable = $callable; + } + + /** + * Invoke the group to register any Routable objects within it. + * + * @param App $app The App to bind the callable to. + */ + public function __invoke(App $app = null) + { + $callable = $this->resolveCallable($this->callable); + if ($callable instanceof Closure && $app !== null) { + $callable = $callable->bindTo($app); + } + + $callable(); + } +} diff --git a/system/vendor/slim/slim/Slim/Router.php b/system/vendor/slim/slim/Slim/Router.php new file mode 100644 index 0000000..8311628 --- /dev/null +++ b/system/vendor/slim/slim/Slim/Router.php @@ -0,0 +1,455 @@ +routeParser = $parser ?: new StdParser; + } + + /** + * Set the base path used in pathFor() + * + * @param string $basePath + * + * @return self + */ + public function setBasePath($basePath) + { + if (!is_string($basePath)) { + throw new InvalidArgumentException('Router basePath must be a string'); + } + + $this->basePath = $basePath; + + return $this; + } + + /** + * Set path to fast route cache file. If this is false then route caching is disabled. + * + * @param string|false $cacheFile + * + * @return self + */ + public function setCacheFile($cacheFile) + { + if (!is_string($cacheFile) && $cacheFile !== false) { + throw new InvalidArgumentException('Router cacheFile must be a string or false'); + } + + $this->cacheFile = $cacheFile; + + if ($cacheFile !== false && !is_writable(dirname($cacheFile))) { + throw new RuntimeException('Router cacheFile directory must be writable'); + } + + + return $this; + } + + /** + * @param ContainerInterface $container + */ + public function setContainer(ContainerInterface $container) + { + $this->container = $container; + } + + /** + * Add route + * + * @param string[] $methods Array of HTTP methods + * @param string $pattern The route pattern + * @param callable $handler The route callable + * + * @return RouteInterface + * + * @throws InvalidArgumentException if the route pattern isn't a string + */ + public function map($methods, $pattern, $handler) + { + if (!is_string($pattern)) { + throw new InvalidArgumentException('Route pattern must be a string'); + } + + // Prepend parent group pattern(s) + if ($this->routeGroups) { + $pattern = $this->processGroups() . $pattern; + } + + // According to RFC methods are defined in uppercase (See RFC 7231) + $methods = array_map("strtoupper", $methods); + + // Add route + $route = $this->createRoute($methods, $pattern, $handler); + $this->routes[$route->getIdentifier()] = $route; + $this->routeCounter++; + + return $route; + } + + /** + * Dispatch router for HTTP request + * + * @param ServerRequestInterface $request The current HTTP request object + * + * @return array + * + * @link https://github.com/nikic/FastRoute/blob/master/src/Dispatcher.php + */ + public function dispatch(ServerRequestInterface $request) + { + $uri = '/' . ltrim($request->getUri()->getPath(), '/'); + + return $this->createDispatcher()->dispatch( + $request->getMethod(), + $uri + ); + } + + /** + * Create a new Route object + * + * @param string[] $methods Array of HTTP methods + * @param string $pattern The route pattern + * @param callable $callable The route callable + * + * @return \Slim\Interfaces\RouteInterface + */ + protected function createRoute($methods, $pattern, $callable) + { + $route = new Route($methods, $pattern, $callable, $this->routeGroups, $this->routeCounter); + if (!empty($this->container)) { + $route->setContainer($this->container); + } + + return $route; + } + + /** + * @return \FastRoute\Dispatcher + */ + protected function createDispatcher() + { + if ($this->dispatcher) { + return $this->dispatcher; + } + + $routeDefinitionCallback = function (RouteCollector $r) { + foreach ($this->getRoutes() as $route) { + $r->addRoute($route->getMethods(), $route->getPattern(), $route->getIdentifier()); + } + }; + + if ($this->cacheFile) { + $this->dispatcher = \FastRoute\cachedDispatcher($routeDefinitionCallback, [ + 'routeParser' => $this->routeParser, + 'cacheFile' => $this->cacheFile, + ]); + } else { + $this->dispatcher = \FastRoute\simpleDispatcher($routeDefinitionCallback, [ + 'routeParser' => $this->routeParser, + ]); + } + + return $this->dispatcher; + } + + /** + * @param \FastRoute\Dispatcher $dispatcher + */ + public function setDispatcher(Dispatcher $dispatcher) + { + $this->dispatcher = $dispatcher; + } + + /** + * Get route objects + * + * @return Route[] + */ + public function getRoutes() + { + return $this->routes; + } + + /** + * Get named route object + * + * @param string $name Route name + * + * @return Route + * + * @throws RuntimeException If named route does not exist + */ + public function getNamedRoute($name) + { + foreach ($this->routes as $route) { + if ($name == $route->getName()) { + return $route; + } + } + throw new RuntimeException('Named route does not exist for name: ' . $name); + } + + /** + * Remove named route + * + * @param string $name Route name + * + * @throws RuntimeException If named route does not exist + */ + public function removeNamedRoute($name) + { + $route = $this->getNamedRoute($name); + + // no exception, route exists, now remove by id + unset($this->routes[$route->getIdentifier()]); + } + + /** + * Process route groups + * + * @return string A group pattern to prefix routes with + */ + protected function processGroups() + { + $pattern = ""; + foreach ($this->routeGroups as $group) { + $pattern .= $group->getPattern(); + } + return $pattern; + } + + /** + * Add a route group to the array + * + * @param string $pattern + * @param callable $callable + * + * @return RouteGroupInterface + */ + public function pushGroup($pattern, $callable) + { + $group = new RouteGroup($pattern, $callable); + array_push($this->routeGroups, $group); + return $group; + } + + /** + * Removes the last route group from the array + * + * @return RouteGroup|bool The RouteGroup if successful, else False + */ + public function popGroup() + { + $group = array_pop($this->routeGroups); + return $group instanceof RouteGroup ? $group : false; + } + + /** + * @param $identifier + * @return \Slim\Interfaces\RouteInterface + */ + public function lookupRoute($identifier) + { + if (!isset($this->routes[$identifier])) { + throw new RuntimeException('Route not found, looks like your route cache is stale.'); + } + return $this->routes[$identifier]; + } + + /** + * Build the path for a named route excluding the base path + * + * @param string $name Route name + * @param array $data Named argument replacement data + * @param array $queryParams Optional query string parameters + * + * @return string + * + * @throws RuntimeException If named route does not exist + * @throws InvalidArgumentException If required data not provided + */ + public function relativePathFor($name, array $data = [], array $queryParams = []) + { + $route = $this->getNamedRoute($name); + $pattern = $route->getPattern(); + + $routeDatas = $this->routeParser->parse($pattern); + // $routeDatas is an array of all possible routes that can be made. There is + // one routedata for each optional parameter plus one for no optional parameters. + // + // The most specific is last, so we look for that first. + $routeDatas = array_reverse($routeDatas); + + $segments = []; + foreach ($routeDatas as $routeData) { + foreach ($routeData as $item) { + if (is_string($item)) { + // this segment is a static string + $segments[] = $item; + continue; + } + + // This segment has a parameter: first element is the name + if (!array_key_exists($item[0], $data)) { + // we don't have a data element for this segment: cancel + // testing this routeData item, so that we can try a less + // specific routeData item. + $segments = []; + $segmentName = $item[0]; + break; + } + $segments[] = $data[$item[0]]; + } + if (!empty($segments)) { + // we found all the parameters for this route data, no need to check + // less specific ones + break; + } + } + + if (empty($segments)) { + throw new InvalidArgumentException('Missing data for URL segment: ' . $segmentName); + } + $url = implode('', $segments); + + if ($queryParams) { + $url .= '?' . http_build_query($queryParams); + } + + return $url; + } + + + /** + * Build the path for a named route including the base path + * + * @param string $name Route name + * @param array $data Named argument replacement data + * @param array $queryParams Optional query string parameters + * + * @return string + * + * @throws RuntimeException If named route does not exist + * @throws InvalidArgumentException If required data not provided + */ + public function pathFor($name, array $data = [], array $queryParams = []) + { + $url = $this->relativePathFor($name, $data, $queryParams); + + if ($this->basePath) { + $url = $this->basePath . $url; + } + + return $url; + } + + /** + * Build the path for a named route. + * + * This method is deprecated. Use pathFor() from now on. + * + * @param string $name Route name + * @param array $data Named argument replacement data + * @param array $queryParams Optional query string parameters + * + * @return string + * + * @throws RuntimeException If named route does not exist + * @throws InvalidArgumentException If required data not provided + */ + public function urlFor($name, array $data = [], array $queryParams = []) + { + trigger_error('urlFor() is deprecated. Use pathFor() instead.', E_USER_DEPRECATED); + return $this->pathFor($name, $data, $queryParams); + } +} diff --git a/system/vendor/slim/slim/composer.json b/system/vendor/slim/slim/composer.json new file mode 100644 index 0000000..554a838 --- /dev/null +++ b/system/vendor/slim/slim/composer.json @@ -0,0 +1,58 @@ +{ + "name": "slim/slim", + "type": "library", + "description": "Slim is a PHP micro framework that helps you quickly write simple yet powerful web applications and APIs", + "keywords": ["framework","micro","api","router"], + "homepage": "https://slimframework.com", + "license": "MIT", + "authors": [ + { + "name": "Josh Lockhart", + "email": "hello@joshlockhart.com", + "homepage": "https://joshlockhart.com" + }, + { + "name": "Andrew Smith", + "email": "a.smith@silentworks.co.uk", + "homepage": "http://silentworks.co.uk" + }, + { + "name": "Rob Allen", + "email": "rob@akrabat.com", + "homepage": "http://akrabat.com" + }, + { + "name": "Gabriel Manricks", + "email": "gmanricks@me.com", + "homepage": "http://gabrielmanricks.com" + } + ], + "require": { + "php": ">=5.5.0", + "pimple/pimple": "^3.0", + "psr/http-message": "^1.0", + "nikic/fast-route": "^1.0", + "container-interop/container-interop": "^1.2", + "psr/container": "^1.0" + }, + "require-dev": { + "squizlabs/php_codesniffer": "^2.5", + "phpunit/phpunit": "^4.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "autoload": { + "psr-4": { + "Slim\\": "Slim" + } + }, + "scripts": { + "test": [ + "@phpunit", + "@phpcs" + ], + "phpunit": "php vendor/bin/phpunit", + "phpcs": "php vendor/bin/phpcs" + } +} diff --git a/system/vendor/slim/twig-view b/system/vendor/slim/twig-view new file mode 160000 index 0000000..a743ac4 --- /dev/null +++ b/system/vendor/slim/twig-view @@ -0,0 +1 @@ +Subproject commit a743ac45e2a089942159dda499c5ef5bc5f6bfa6 diff --git a/system/vendor/symfony/yaml/.gitignore b/system/vendor/symfony/yaml/.gitignore new file mode 100644 index 0000000..c49a5d8 --- /dev/null +++ b/system/vendor/symfony/yaml/.gitignore @@ -0,0 +1,3 @@ +vendor/ +composer.lock +phpunit.xml diff --git a/system/vendor/symfony/yaml/CHANGELOG.md b/system/vendor/symfony/yaml/CHANGELOG.md new file mode 100644 index 0000000..f55b570 --- /dev/null +++ b/system/vendor/symfony/yaml/CHANGELOG.md @@ -0,0 +1,28 @@ +CHANGELOG +========= + +2.8.0 +----- + + * Deprecated usage of a colon in an unquoted mapping value + * Deprecated usage of @, \`, | and > at the beginning of an unquoted string + * When surrounding strings with double-quotes, you must now escape `\` characters. Not + escaping those characters (when surrounded by double-quotes) is deprecated. + + Before: + + ```yml + class: "Foo\Var" + ``` + + After: + + ```yml + class: "Foo\\Var" + ``` + +2.1.0 +----- + + * Yaml::parse() does not evaluate loaded files as PHP files by default + anymore (call Yaml::enablePhpParsing() to get back the old behavior) diff --git a/system/vendor/symfony/yaml/Dumper.php b/system/vendor/symfony/yaml/Dumper.php new file mode 100644 index 0000000..05817f5 --- /dev/null +++ b/system/vendor/symfony/yaml/Dumper.php @@ -0,0 +1,77 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml; + +/** + * Dumper dumps PHP variables to YAML strings. + * + * @author Fabien Potencier + */ +class Dumper +{ + /** + * The amount of spaces to use for indentation of nested nodes. + * + * @var int + */ + protected $indentation = 4; + + /** + * Sets the indentation. + * + * @param int $num The amount of spaces to use for indentation of nested nodes + */ + public function setIndentation($num) + { + if ($num < 1) { + throw new \InvalidArgumentException('The indentation must be greater than zero.'); + } + + $this->indentation = (int) $num; + } + + /** + * Dumps a PHP value to YAML. + * + * @param mixed $input The PHP value + * @param int $inline The level where you switch to inline YAML + * @param int $indent The level of indentation (used internally) + * @param bool $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise + * @param bool $objectSupport true if object support is enabled, false otherwise + * + * @return string The YAML representation of the PHP value + */ + public function dump($input, $inline = 0, $indent = 0, $exceptionOnInvalidType = false, $objectSupport = false) + { + $output = ''; + $prefix = $indent ? str_repeat(' ', $indent) : ''; + + if ($inline <= 0 || !is_array($input) || empty($input)) { + $output .= $prefix.Inline::dump($input, $exceptionOnInvalidType, $objectSupport); + } else { + $isAHash = Inline::isHash($input); + + foreach ($input as $key => $value) { + $willBeInlined = $inline - 1 <= 0 || !is_array($value) || empty($value); + + $output .= sprintf('%s%s%s%s', + $prefix, + $isAHash ? Inline::dump($key, $exceptionOnInvalidType, $objectSupport).':' : '-', + $willBeInlined ? ' ' : "\n", + $this->dump($value, $inline - 1, $willBeInlined ? 0 : $indent + $this->indentation, $exceptionOnInvalidType, $objectSupport) + ).($willBeInlined ? "\n" : ''); + } + } + + return $output; + } +} diff --git a/system/vendor/symfony/yaml/Escaper.php b/system/vendor/symfony/yaml/Escaper.php new file mode 100644 index 0000000..a74f14d --- /dev/null +++ b/system/vendor/symfony/yaml/Escaper.php @@ -0,0 +1,99 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml; + +/** + * Escaper encapsulates escaping rules for single and double-quoted + * YAML strings. + * + * @author Matthew Lewinski + * + * @internal + */ +class Escaper +{ + // Characters that would cause a dumped string to require double quoting. + const REGEX_CHARACTER_TO_ESCAPE = "[\\x00-\\x1f]|\xc2\x85|\xc2\xa0|\xe2\x80\xa8|\xe2\x80\xa9"; + + // Mapping arrays for escaping a double quoted string. The backslash is + // first to ensure proper escaping because str_replace operates iteratively + // on the input arrays. This ordering of the characters avoids the use of strtr, + // which performs more slowly. + private static $escapees = array('\\', '\\\\', '\\"', '"', + "\x00", "\x01", "\x02", "\x03", "\x04", "\x05", "\x06", "\x07", + "\x08", "\x09", "\x0a", "\x0b", "\x0c", "\x0d", "\x0e", "\x0f", + "\x10", "\x11", "\x12", "\x13", "\x14", "\x15", "\x16", "\x17", + "\x18", "\x19", "\x1a", "\x1b", "\x1c", "\x1d", "\x1e", "\x1f", + "\xc2\x85", "\xc2\xa0", "\xe2\x80\xa8", "\xe2\x80\xa9"); + private static $escaped = array('\\\\', '\\"', '\\\\', '\\"', + '\\0', '\\x01', '\\x02', '\\x03', '\\x04', '\\x05', '\\x06', '\\a', + '\\b', '\\t', '\\n', '\\v', '\\f', '\\r', '\\x0e', '\\x0f', + '\\x10', '\\x11', '\\x12', '\\x13', '\\x14', '\\x15', '\\x16', '\\x17', + '\\x18', '\\x19', '\\x1a', '\\e', '\\x1c', '\\x1d', '\\x1e', '\\x1f', + '\\N', '\\_', '\\L', '\\P'); + + /** + * Determines if a PHP value would require double quoting in YAML. + * + * @param string $value A PHP value + * + * @return bool True if the value would require double quotes + */ + public static function requiresDoubleQuoting($value) + { + return preg_match('/'.self::REGEX_CHARACTER_TO_ESCAPE.'/u', $value); + } + + /** + * Escapes and surrounds a PHP value with double quotes. + * + * @param string $value A PHP value + * + * @return string The quoted, escaped string + */ + public static function escapeWithDoubleQuotes($value) + { + return sprintf('"%s"', str_replace(self::$escapees, self::$escaped, $value)); + } + + /** + * Determines if a PHP value would require single quoting in YAML. + * + * @param string $value A PHP value + * + * @return bool True if the value would require single quotes + */ + public static function requiresSingleQuoting($value) + { + // Determines if a PHP value is entirely composed of a value that would + // require single quoting in YAML. + if (in_array(strtolower($value), array('null', '~', 'true', 'false', 'y', 'n', 'yes', 'no', 'on', 'off'))) { + return true; + } + + // Determines if the PHP value contains any single characters that would + // cause it to require single quoting in YAML. + return preg_match('/[ \s \' " \: \{ \} \[ \] , & \* \# \?] | \A[ \- ? | < > = ! % @ ` ]/x', $value); + } + + /** + * Escapes and surrounds a PHP value with single quotes. + * + * @param string $value A PHP value + * + * @return string The quoted, escaped string + */ + public static function escapeWithSingleQuotes($value) + { + return sprintf("'%s'", str_replace('\'', '\'\'', $value)); + } +} diff --git a/system/vendor/symfony/yaml/Exception/DumpException.php b/system/vendor/symfony/yaml/Exception/DumpException.php new file mode 100644 index 0000000..cce972f --- /dev/null +++ b/system/vendor/symfony/yaml/Exception/DumpException.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Exception; + +/** + * Exception class thrown when an error occurs during dumping. + * + * @author Fabien Potencier + */ +class DumpException extends RuntimeException +{ +} diff --git a/system/vendor/symfony/yaml/Exception/ExceptionInterface.php b/system/vendor/symfony/yaml/Exception/ExceptionInterface.php new file mode 100644 index 0000000..ad850ee --- /dev/null +++ b/system/vendor/symfony/yaml/Exception/ExceptionInterface.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Exception; + +/** + * Exception interface for all exceptions thrown by the component. + * + * @author Fabien Potencier + */ +interface ExceptionInterface +{ +} diff --git a/system/vendor/symfony/yaml/Exception/ParseException.php b/system/vendor/symfony/yaml/Exception/ParseException.php new file mode 100644 index 0000000..b74eb91 --- /dev/null +++ b/system/vendor/symfony/yaml/Exception/ParseException.php @@ -0,0 +1,146 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Exception; + +/** + * Exception class thrown when an error occurs during parsing. + * + * @author Fabien Potencier + */ +class ParseException extends RuntimeException +{ + private $parsedFile; + private $parsedLine; + private $snippet; + private $rawMessage; + + /** + * Constructor. + * + * @param string $message The error message + * @param int $parsedLine The line where the error occurred + * @param int $snippet The snippet of code near the problem + * @param string $parsedFile The file name where the error occurred + * @param \Exception $previous The previous exception + */ + public function __construct($message, $parsedLine = -1, $snippet = null, $parsedFile = null, \Exception $previous = null) + { + $this->parsedFile = $parsedFile; + $this->parsedLine = $parsedLine; + $this->snippet = $snippet; + $this->rawMessage = $message; + + $this->updateRepr(); + + parent::__construct($this->message, 0, $previous); + } + + /** + * Gets the snippet of code near the error. + * + * @return string The snippet of code + */ + public function getSnippet() + { + return $this->snippet; + } + + /** + * Sets the snippet of code near the error. + * + * @param string $snippet The code snippet + */ + public function setSnippet($snippet) + { + $this->snippet = $snippet; + + $this->updateRepr(); + } + + /** + * Gets the filename where the error occurred. + * + * This method returns null if a string is parsed. + * + * @return string The filename + */ + public function getParsedFile() + { + return $this->parsedFile; + } + + /** + * Sets the filename where the error occurred. + * + * @param string $parsedFile The filename + */ + public function setParsedFile($parsedFile) + { + $this->parsedFile = $parsedFile; + + $this->updateRepr(); + } + + /** + * Gets the line where the error occurred. + * + * @return int The file line + */ + public function getParsedLine() + { + return $this->parsedLine; + } + + /** + * Sets the line where the error occurred. + * + * @param int $parsedLine The file line + */ + public function setParsedLine($parsedLine) + { + $this->parsedLine = $parsedLine; + + $this->updateRepr(); + } + + private function updateRepr() + { + $this->message = $this->rawMessage; + + $dot = false; + if ('.' === substr($this->message, -1)) { + $this->message = substr($this->message, 0, -1); + $dot = true; + } + + if (null !== $this->parsedFile) { + if (PHP_VERSION_ID >= 50400) { + $jsonOptions = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE; + } else { + $jsonOptions = 0; + } + $this->message .= sprintf(' in %s', json_encode($this->parsedFile, $jsonOptions)); + } + + if ($this->parsedLine >= 0) { + $this->message .= sprintf(' at line %d', $this->parsedLine); + } + + if ($this->snippet) { + $this->message .= sprintf(' (near "%s")', $this->snippet); + } + + if ($dot) { + $this->message .= '.'; + } + } +} diff --git a/system/vendor/symfony/yaml/Exception/RuntimeException.php b/system/vendor/symfony/yaml/Exception/RuntimeException.php new file mode 100644 index 0000000..3f36b73 --- /dev/null +++ b/system/vendor/symfony/yaml/Exception/RuntimeException.php @@ -0,0 +1,21 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Exception; + +/** + * Exception class thrown when an error occurs during parsing. + * + * @author Romain Neutron + */ +class RuntimeException extends \RuntimeException implements ExceptionInterface +{ +} diff --git a/system/vendor/symfony/yaml/Inline.php b/system/vendor/symfony/yaml/Inline.php new file mode 100644 index 0000000..a267436 --- /dev/null +++ b/system/vendor/symfony/yaml/Inline.php @@ -0,0 +1,589 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml; + +use Symfony\Component\Yaml\Exception\ParseException; +use Symfony\Component\Yaml\Exception\DumpException; + +/** + * Inline implements a YAML parser/dumper for the YAML inline syntax. + * + * @author Fabien Potencier + */ +class Inline +{ + const REGEX_QUOTED_STRING = '(?:"([^"\\\\]*+(?:\\\\.[^"\\\\]*+)*+)"|\'([^\']*+(?:\'\'[^\']*+)*+)\')'; + + private static $exceptionOnInvalidType = false; + private static $objectSupport = false; + private static $objectForMap = false; + + /** + * Converts a YAML string to a PHP value. + * + * @param string $value A YAML string + * @param bool $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise + * @param bool $objectSupport true if object support is enabled, false otherwise + * @param bool $objectForMap true if maps should return a stdClass instead of array() + * @param array $references Mapping of variable names to values + * + * @return mixed A PHP value + * + * @throws ParseException + */ + public static function parse($value, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false, $references = array()) + { + self::$exceptionOnInvalidType = $exceptionOnInvalidType; + self::$objectSupport = $objectSupport; + self::$objectForMap = $objectForMap; + + $value = trim($value); + + if ('' === $value) { + return ''; + } + + if (2 /* MB_OVERLOAD_STRING */ & (int) ini_get('mbstring.func_overload')) { + $mbEncoding = mb_internal_encoding(); + mb_internal_encoding('ASCII'); + } + + $i = 0; + switch ($value[0]) { + case '[': + $result = self::parseSequence($value, $i, $references); + ++$i; + break; + case '{': + $result = self::parseMapping($value, $i, $references); + ++$i; + break; + default: + $result = self::parseScalar($value, null, array('"', "'"), $i, true, $references); + } + + // some comments are allowed at the end + if (preg_replace('/\s+#.*$/A', '', substr($value, $i))) { + throw new ParseException(sprintf('Unexpected characters near "%s".', substr($value, $i))); + } + + if (isset($mbEncoding)) { + mb_internal_encoding($mbEncoding); + } + + return $result; + } + + /** + * Dumps a given PHP variable to a YAML string. + * + * @param mixed $value The PHP variable to convert + * @param bool $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise + * @param bool $objectSupport true if object support is enabled, false otherwise + * + * @return string The YAML string representing the PHP value + * + * @throws DumpException When trying to dump PHP resource + */ + public static function dump($value, $exceptionOnInvalidType = false, $objectSupport = false) + { + switch (true) { + case is_resource($value): + if ($exceptionOnInvalidType) { + throw new DumpException(sprintf('Unable to dump PHP resources in a YAML file ("%s").', get_resource_type($value))); + } + + return 'null'; + case is_object($value): + if ($objectSupport) { + return '!php/object:'.serialize($value); + } + + if ($exceptionOnInvalidType) { + throw new DumpException('Object support when dumping a YAML file has been disabled.'); + } + + return 'null'; + case is_array($value): + return self::dumpArray($value, $exceptionOnInvalidType, $objectSupport); + case null === $value: + return 'null'; + case true === $value: + return 'true'; + case false === $value: + return 'false'; + case ctype_digit($value): + return is_string($value) ? "'$value'" : (int) $value; + case is_numeric($value): + $locale = setlocale(LC_NUMERIC, 0); + if (false !== $locale) { + setlocale(LC_NUMERIC, 'C'); + } + if (is_float($value)) { + $repr = (string) $value; + if (is_infinite($value)) { + $repr = str_ireplace('INF', '.Inf', $repr); + } elseif (floor($value) == $value && $repr == $value) { + // Preserve float data type since storing a whole number will result in integer value. + $repr = '!!float '.$repr; + } + } else { + $repr = is_string($value) ? "'$value'" : (string) $value; + } + if (false !== $locale) { + setlocale(LC_NUMERIC, $locale); + } + + return $repr; + case '' == $value: + return "''"; + case Escaper::requiresDoubleQuoting($value): + return Escaper::escapeWithDoubleQuotes($value); + case Escaper::requiresSingleQuoting($value): + case Parser::preg_match(self::getHexRegex(), $value): + case Parser::preg_match(self::getTimestampRegex(), $value): + return Escaper::escapeWithSingleQuotes($value); + default: + return $value; + } + } + + /** + * Check if given array is hash or just normal indexed array. + * + * @internal + * + * @param array $value The PHP array to check + * + * @return bool true if value is hash array, false otherwise + */ + public static function isHash(array $value) + { + $expectedKey = 0; + + foreach ($value as $key => $val) { + if ($key !== $expectedKey++) { + return true; + } + } + + return false; + } + + /** + * Dumps a PHP array to a YAML string. + * + * @param array $value The PHP array to dump + * @param bool $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise + * @param bool $objectSupport true if object support is enabled, false otherwise + * + * @return string The YAML string representing the PHP array + */ + private static function dumpArray($value, $exceptionOnInvalidType, $objectSupport) + { + // array + if ($value && !self::isHash($value)) { + $output = array(); + foreach ($value as $val) { + $output[] = self::dump($val, $exceptionOnInvalidType, $objectSupport); + } + + return sprintf('[%s]', implode(', ', $output)); + } + + // hash + $output = array(); + foreach ($value as $key => $val) { + $output[] = sprintf('%s: %s', self::dump($key, $exceptionOnInvalidType, $objectSupport), self::dump($val, $exceptionOnInvalidType, $objectSupport)); + } + + return sprintf('{ %s }', implode(', ', $output)); + } + + /** + * Parses a YAML scalar. + * + * @param string $scalar + * @param string $delimiters + * @param array $stringDelimiters + * @param int &$i + * @param bool $evaluate + * @param array $references + * + * @return string + * + * @throws ParseException When malformed inline YAML string is parsed + * + * @internal + */ + public static function parseScalar($scalar, $delimiters = null, $stringDelimiters = array('"', "'"), &$i = 0, $evaluate = true, $references = array()) + { + if (in_array($scalar[$i], $stringDelimiters)) { + // quoted scalar + $output = self::parseQuotedScalar($scalar, $i); + + if (null !== $delimiters) { + $tmp = ltrim(substr($scalar, $i), ' '); + if (!in_array($tmp[0], $delimiters)) { + throw new ParseException(sprintf('Unexpected characters (%s).', substr($scalar, $i))); + } + } + } else { + // "normal" string + if (!$delimiters) { + $output = substr($scalar, $i); + $i += strlen($output); + + // remove comments + if (Parser::preg_match('/[ \t]+#/', $output, $match, PREG_OFFSET_CAPTURE)) { + $output = substr($output, 0, $match[0][1]); + } + } elseif (Parser::preg_match('/^(.+?)('.implode('|', $delimiters).')/', substr($scalar, $i), $match)) { + $output = $match[1]; + $i += strlen($output); + } else { + throw new ParseException(sprintf('Malformed inline YAML string: %s.', $scalar)); + } + + // a non-quoted string cannot start with @ or ` (reserved) nor with a scalar indicator (| or >) + if ($output && ('@' === $output[0] || '`' === $output[0] || '|' === $output[0] || '>' === $output[0])) { + @trigger_error(sprintf('Not quoting the scalar "%s" starting with "%s" is deprecated since Symfony 2.8 and will throw a ParseException in 3.0.', $output, $output[0]), E_USER_DEPRECATED); + + // to be thrown in 3.0 + // throw new ParseException(sprintf('The reserved indicator "%s" cannot start a plain scalar; you need to quote the scalar.', $output[0])); + } + + if ($evaluate) { + $output = self::evaluateScalar($output, $references); + } + } + + return $output; + } + + /** + * Parses a YAML quoted scalar. + * + * @param string $scalar + * @param int &$i + * + * @return string + * + * @throws ParseException When malformed inline YAML string is parsed + */ + private static function parseQuotedScalar($scalar, &$i) + { + if (!Parser::preg_match('/'.self::REGEX_QUOTED_STRING.'/Au', substr($scalar, $i), $match)) { + throw new ParseException(sprintf('Malformed inline YAML string: %s.', substr($scalar, $i))); + } + + $output = substr($match[0], 1, strlen($match[0]) - 2); + + $unescaper = new Unescaper(); + if ('"' == $scalar[$i]) { + $output = $unescaper->unescapeDoubleQuotedString($output); + } else { + $output = $unescaper->unescapeSingleQuotedString($output); + } + + $i += strlen($match[0]); + + return $output; + } + + /** + * Parses a YAML sequence. + * + * @param string $sequence + * @param int &$i + * @param array $references + * + * @return array + * + * @throws ParseException When malformed inline YAML string is parsed + */ + private static function parseSequence($sequence, &$i = 0, $references = array()) + { + $output = array(); + $len = strlen($sequence); + ++$i; + + // [foo, bar, ...] + while ($i < $len) { + switch ($sequence[$i]) { + case '[': + // nested sequence + $output[] = self::parseSequence($sequence, $i, $references); + break; + case '{': + // nested mapping + $output[] = self::parseMapping($sequence, $i, $references); + break; + case ']': + return $output; + case ',': + case ' ': + break; + default: + $isQuoted = in_array($sequence[$i], array('"', "'")); + $value = self::parseScalar($sequence, array(',', ']'), array('"', "'"), $i, true, $references); + + // the value can be an array if a reference has been resolved to an array var + if (!is_array($value) && !$isQuoted && false !== strpos($value, ': ')) { + // embedded mapping? + try { + $pos = 0; + $value = self::parseMapping('{'.$value.'}', $pos, $references); + } catch (\InvalidArgumentException $e) { + // no, it's not + } + } + + $output[] = $value; + + --$i; + } + + ++$i; + } + + throw new ParseException(sprintf('Malformed inline YAML string: %s.', $sequence)); + } + + /** + * Parses a YAML mapping. + * + * @param string $mapping + * @param int &$i + * @param array $references + * + * @return array|\stdClass + * + * @throws ParseException When malformed inline YAML string is parsed + */ + private static function parseMapping($mapping, &$i = 0, $references = array()) + { + $output = array(); + $len = strlen($mapping); + ++$i; + + // {foo: bar, bar:foo, ...} + while ($i < $len) { + switch ($mapping[$i]) { + case ' ': + case ',': + ++$i; + continue 2; + case '}': + if (self::$objectForMap) { + return (object) $output; + } + + return $output; + } + + // key + $key = self::parseScalar($mapping, array(':', ' '), array('"', "'"), $i, false); + + // value + $done = false; + + while ($i < $len) { + switch ($mapping[$i]) { + case '[': + // nested sequence + $value = self::parseSequence($mapping, $i, $references); + // Spec: Keys MUST be unique; first one wins. + // Parser cannot abort this mapping earlier, since lines + // are processed sequentially. + if (!isset($output[$key])) { + $output[$key] = $value; + } + $done = true; + break; + case '{': + // nested mapping + $value = self::parseMapping($mapping, $i, $references); + // Spec: Keys MUST be unique; first one wins. + // Parser cannot abort this mapping earlier, since lines + // are processed sequentially. + if (!isset($output[$key])) { + $output[$key] = $value; + } + $done = true; + break; + case ':': + case ' ': + break; + default: + $value = self::parseScalar($mapping, array(',', '}'), array('"', "'"), $i, true, $references); + // Spec: Keys MUST be unique; first one wins. + // Parser cannot abort this mapping earlier, since lines + // are processed sequentially. + if (!isset($output[$key])) { + $output[$key] = $value; + } + $done = true; + --$i; + } + + ++$i; + + if ($done) { + continue 2; + } + } + } + + throw new ParseException(sprintf('Malformed inline YAML string: %s.', $mapping)); + } + + /** + * Evaluates scalars and replaces magic values. + * + * @param string $scalar + * @param array $references + * + * @return string A YAML string + * + * @throws ParseException when object parsing support was disabled and the parser detected a PHP object or when a reference could not be resolved + */ + private static function evaluateScalar($scalar, $references = array()) + { + $scalar = trim($scalar); + $scalarLower = strtolower($scalar); + + if (0 === strpos($scalar, '*')) { + if (false !== $pos = strpos($scalar, '#')) { + $value = substr($scalar, 1, $pos - 2); + } else { + $value = substr($scalar, 1); + } + + // an unquoted * + if (false === $value || '' === $value) { + throw new ParseException('A reference must contain at least one character.'); + } + + if (!array_key_exists($value, $references)) { + throw new ParseException(sprintf('Reference "%s" does not exist.', $value)); + } + + return $references[$value]; + } + + switch (true) { + case 'null' === $scalarLower: + case '' === $scalar: + case '~' === $scalar: + return; + case 'true' === $scalarLower: + return true; + case 'false' === $scalarLower: + return false; + // Optimise for returning strings. + case $scalar[0] === '+' || $scalar[0] === '-' || $scalar[0] === '.' || $scalar[0] === '!' || is_numeric($scalar[0]): + switch (true) { + case 0 === strpos($scalar, '!str'): + return (string) substr($scalar, 5); + case 0 === strpos($scalar, '! '): + return (int) self::parseScalar(substr($scalar, 2)); + case 0 === strpos($scalar, '!php/object:'): + if (self::$objectSupport) { + return unserialize(substr($scalar, 12)); + } + + if (self::$exceptionOnInvalidType) { + throw new ParseException('Object support when parsing a YAML file has been disabled.'); + } + + return; + case 0 === strpos($scalar, '!!php/object:'): + if (self::$objectSupport) { + return unserialize(substr($scalar, 13)); + } + + if (self::$exceptionOnInvalidType) { + throw new ParseException('Object support when parsing a YAML file has been disabled.'); + } + + return; + case 0 === strpos($scalar, '!!float '): + return (float) substr($scalar, 8); + case ctype_digit($scalar): + $raw = $scalar; + $cast = (int) $scalar; + + return '0' == $scalar[0] ? octdec($scalar) : (((string) $raw == (string) $cast) ? $cast : $raw); + case '-' === $scalar[0] && ctype_digit(substr($scalar, 1)): + $raw = $scalar; + $cast = (int) $scalar; + + return '0' == $scalar[1] ? octdec($scalar) : (((string) $raw === (string) $cast) ? $cast : $raw); + case is_numeric($scalar): + case Parser::preg_match(self::getHexRegex(), $scalar): + return '0x' === $scalar[0].$scalar[1] ? hexdec($scalar) : (float) $scalar; + case '.inf' === $scalarLower: + case '.nan' === $scalarLower: + return -log(0); + case '-.inf' === $scalarLower: + return log(0); + case Parser::preg_match('/^(-|\+)?[0-9,]+(\.[0-9]+)?$/', $scalar): + return (float) str_replace(',', '', $scalar); + case Parser::preg_match(self::getTimestampRegex(), $scalar): + $timeZone = date_default_timezone_get(); + date_default_timezone_set('UTC'); + $time = strtotime($scalar); + date_default_timezone_set($timeZone); + + return $time; + } + default: + return (string) $scalar; + } + } + + /** + * Gets a regex that matches a YAML date. + * + * @return string The regular expression + * + * @see http://www.yaml.org/spec/1.2/spec.html#id2761573 + */ + private static function getTimestampRegex() + { + return <<[0-9][0-9][0-9][0-9]) + -(?P[0-9][0-9]?) + -(?P[0-9][0-9]?) + (?:(?:[Tt]|[ \t]+) + (?P[0-9][0-9]?) + :(?P[0-9][0-9]) + :(?P[0-9][0-9]) + (?:\.(?P[0-9]*))? + (?:[ \t]*(?PZ|(?P[-+])(?P[0-9][0-9]?) + (?::(?P[0-9][0-9]))?))?)? + $~x +EOF; + } + + /** + * Gets a regex that matches a YAML number in hexadecimal notation. + * + * @return string + */ + private static function getHexRegex() + { + return '~^0x[0-9a-f]++$~i'; + } +} diff --git a/system/vendor/symfony/yaml/LICENSE b/system/vendor/symfony/yaml/LICENSE new file mode 100644 index 0000000..17d16a1 --- /dev/null +++ b/system/vendor/symfony/yaml/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2004-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/system/vendor/symfony/yaml/Parser.php b/system/vendor/symfony/yaml/Parser.php new file mode 100644 index 0000000..25da4e9 --- /dev/null +++ b/system/vendor/symfony/yaml/Parser.php @@ -0,0 +1,824 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml; + +use Symfony\Component\Yaml\Exception\ParseException; + +/** + * Parser parses YAML strings to convert them to PHP arrays. + * + * @author Fabien Potencier + */ +class Parser +{ + const BLOCK_SCALAR_HEADER_PATTERN = '(?P\||>)(?P\+|\-|\d+|\+\d+|\-\d+|\d+\+|\d+\-)?(?P +#.*)?'; + // BC - wrongly named + const FOLDED_SCALAR_PATTERN = self::BLOCK_SCALAR_HEADER_PATTERN; + + private $offset = 0; + private $totalNumberOfLines; + private $lines = array(); + private $currentLineNb = -1; + private $currentLine = ''; + private $refs = array(); + private $skippedLineNumbers = array(); + private $locallySkippedLineNumbers = array(); + + /** + * Constructor. + * + * @param int $offset The offset of YAML document (used for line numbers in error messages) + * @param int|null $totalNumberOfLines The overall number of lines being parsed + * @param int[] $skippedLineNumbers Number of comment lines that have been skipped by the parser + */ + public function __construct($offset = 0, $totalNumberOfLines = null, array $skippedLineNumbers = array()) + { + $this->offset = $offset; + $this->totalNumberOfLines = $totalNumberOfLines; + $this->skippedLineNumbers = $skippedLineNumbers; + } + + /** + * Parses a YAML string to a PHP value. + * + * @param string $value A YAML string + * @param bool $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise + * @param bool $objectSupport true if object support is enabled, false otherwise + * @param bool $objectForMap true if maps should return a stdClass instead of array() + * + * @return mixed A PHP value + * + * @throws ParseException If the YAML is not valid + */ + public function parse($value, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false) + { + if (false === preg_match('//u', $value)) { + throw new ParseException('The YAML value does not appear to be valid UTF-8.'); + } + $this->currentLineNb = -1; + $this->currentLine = ''; + $value = $this->cleanup($value); + $this->lines = explode("\n", $value); + + if (null === $this->totalNumberOfLines) { + $this->totalNumberOfLines = count($this->lines); + } + + if (2 /* MB_OVERLOAD_STRING */ & (int) ini_get('mbstring.func_overload')) { + $mbEncoding = mb_internal_encoding(); + mb_internal_encoding('UTF-8'); + } + + $data = array(); + $context = null; + $allowOverwrite = false; + while ($this->moveToNextLine()) { + if ($this->isCurrentLineEmpty()) { + continue; + } + + // tab? + if ("\t" === $this->currentLine[0]) { + throw new ParseException('A YAML file cannot contain tabs as indentation.', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + + $isRef = $mergeNode = false; + if (self::preg_match('#^\-((?P\s+)(?P.+))?$#u', rtrim($this->currentLine), $values)) { + if ($context && 'mapping' == $context) { + throw new ParseException('You cannot define a sequence item when in a mapping', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + $context = 'sequence'; + + if (isset($values['value']) && self::preg_match('#^&(?P[^ ]+) *(?P.*)#u', $values['value'], $matches)) { + $isRef = $matches['ref']; + $values['value'] = $matches['value']; + } + + // array + if (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) { + $data[] = $this->parseBlock($this->getRealCurrentLineNb() + 1, $this->getNextEmbedBlock(null, true), $exceptionOnInvalidType, $objectSupport, $objectForMap); + } else { + if (isset($values['leadspaces']) + && self::preg_match('#^(?P'.Inline::REGEX_QUOTED_STRING.'|[^ \'"\{\[].*?) *\:(\s+(?P.+))?$#u', rtrim($values['value']), $matches) + ) { + // this is a compact notation element, add to next block and parse + $block = $values['value']; + if ($this->isNextLineIndented()) { + $block .= "\n".$this->getNextEmbedBlock($this->getCurrentLineIndentation() + strlen($values['leadspaces']) + 1); + } + + $data[] = $this->parseBlock($this->getRealCurrentLineNb(), $block, $exceptionOnInvalidType, $objectSupport, $objectForMap); + } else { + $data[] = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport, $objectForMap, $context); + } + } + if ($isRef) { + $this->refs[$isRef] = end($data); + } + } elseif ( + self::preg_match('#^(?P'.Inline::REGEX_QUOTED_STRING.'|[^ \'"\[\{].*?) *\:(\s+(?P.+))?$#u', rtrim($this->currentLine), $values) + && (false === strpos($values['key'], ' #') || in_array($values['key'][0], array('"', "'"))) + ) { + if ($context && 'sequence' == $context) { + throw new ParseException('You cannot define a mapping item when in a sequence', $this->currentLineNb + 1, $this->currentLine); + } + $context = 'mapping'; + + // force correct settings + Inline::parse(null, $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs); + try { + $key = Inline::parseScalar($values['key']); + } catch (ParseException $e) { + $e->setParsedLine($this->getRealCurrentLineNb() + 1); + $e->setSnippet($this->currentLine); + + throw $e; + } + + // Convert float keys to strings, to avoid being converted to integers by PHP + if (is_float($key)) { + $key = (string) $key; + } + + if ('<<' === $key) { + $mergeNode = true; + $allowOverwrite = true; + if (isset($values['value']) && 0 === strpos($values['value'], '*')) { + $refName = substr($values['value'], 1); + if (!array_key_exists($refName, $this->refs)) { + throw new ParseException(sprintf('Reference "%s" does not exist.', $refName), $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + + $refValue = $this->refs[$refName]; + + if (!is_array($refValue)) { + throw new ParseException('YAML merge keys used with a scalar value instead of an array.', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + + $data += $refValue; // array union + } else { + if (isset($values['value']) && $values['value'] !== '') { + $value = $values['value']; + } else { + $value = $this->getNextEmbedBlock(); + } + $parsed = $this->parseBlock($this->getRealCurrentLineNb() + 1, $value, $exceptionOnInvalidType, $objectSupport, $objectForMap); + + if (!is_array($parsed)) { + throw new ParseException('YAML merge keys used with a scalar value instead of an array.', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + + if (isset($parsed[0])) { + // If the value associated with the merge key is a sequence, then this sequence is expected to contain mapping nodes + // and each of these nodes is merged in turn according to its order in the sequence. Keys in mapping nodes earlier + // in the sequence override keys specified in later mapping nodes. + foreach ($parsed as $parsedItem) { + if (!is_array($parsedItem)) { + throw new ParseException('Merge items must be arrays.', $this->getRealCurrentLineNb() + 1, $parsedItem); + } + + $data += $parsedItem; // array union + } + } else { + // If the value associated with the key is a single mapping node, each of its key/value pairs is inserted into the + // current mapping, unless the key already exists in it. + $data += $parsed; // array union + } + } + } elseif (isset($values['value']) && self::preg_match('#^&(?P[^ ]+) *(?P.*)#u', $values['value'], $matches)) { + $isRef = $matches['ref']; + $values['value'] = $matches['value']; + } + + if ($mergeNode) { + // Merge keys + } elseif (!isset($values['value']) || '' == trim($values['value'], ' ') || 0 === strpos(ltrim($values['value'], ' '), '#')) { + // hash + // if next line is less indented or equal, then it means that the current value is null + if (!$this->isNextLineIndented() && !$this->isNextLineUnIndentedCollection()) { + // Spec: Keys MUST be unique; first one wins. + // But overwriting is allowed when a merge node is used in current block. + if ($allowOverwrite || !isset($data[$key])) { + $data[$key] = null; + } + } else { + $value = $this->parseBlock($this->getRealCurrentLineNb() + 1, $this->getNextEmbedBlock(), $exceptionOnInvalidType, $objectSupport, $objectForMap); + // Spec: Keys MUST be unique; first one wins. + // But overwriting is allowed when a merge node is used in current block. + if ($allowOverwrite || !isset($data[$key])) { + $data[$key] = $value; + } + } + } else { + $value = $this->parseValue($values['value'], $exceptionOnInvalidType, $objectSupport, $objectForMap, $context); + // Spec: Keys MUST be unique; first one wins. + // But overwriting is allowed when a merge node is used in current block. + if ($allowOverwrite || !isset($data[$key])) { + $data[$key] = $value; + } + } + if ($isRef) { + $this->refs[$isRef] = $data[$key]; + } + } else { + // multiple documents are not supported + if ('---' === $this->currentLine) { + throw new ParseException('Multiple documents are not supported.', $this->currentLineNb + 1, $this->currentLine); + } + + // 1-liner optionally followed by newline(s) + if (is_string($value) && $this->lines[0] === trim($value)) { + try { + $value = Inline::parse($this->lines[0], $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs); + } catch (ParseException $e) { + $e->setParsedLine($this->getRealCurrentLineNb() + 1); + $e->setSnippet($this->currentLine); + + throw $e; + } + + if (isset($mbEncoding)) { + mb_internal_encoding($mbEncoding); + } + + return $value; + } + + throw new ParseException('Unable to parse.', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + } + + if (isset($mbEncoding)) { + mb_internal_encoding($mbEncoding); + } + + if ($objectForMap && !is_object($data) && 'mapping' === $context) { + $object = new \stdClass(); + + foreach ($data as $key => $value) { + $object->$key = $value; + } + + $data = $object; + } + + return empty($data) ? null : $data; + } + + private function parseBlock($offset, $yaml, $exceptionOnInvalidType, $objectSupport, $objectForMap) + { + $skippedLineNumbers = $this->skippedLineNumbers; + + foreach ($this->locallySkippedLineNumbers as $lineNumber) { + if ($lineNumber < $offset) { + continue; + } + + $skippedLineNumbers[] = $lineNumber; + } + + $parser = new self($offset, $this->totalNumberOfLines, $skippedLineNumbers); + $parser->refs = &$this->refs; + + return $parser->parse($yaml, $exceptionOnInvalidType, $objectSupport, $objectForMap); + } + + /** + * Returns the current line number (takes the offset into account). + * + * @return int The current line number + */ + private function getRealCurrentLineNb() + { + $realCurrentLineNumber = $this->currentLineNb + $this->offset; + + foreach ($this->skippedLineNumbers as $skippedLineNumber) { + if ($skippedLineNumber > $realCurrentLineNumber) { + break; + } + + ++$realCurrentLineNumber; + } + + return $realCurrentLineNumber; + } + + /** + * Returns the current line indentation. + * + * @return int The current line indentation + */ + private function getCurrentLineIndentation() + { + return strlen($this->currentLine) - strlen(ltrim($this->currentLine, ' ')); + } + + /** + * Returns the next embed block of YAML. + * + * @param int $indentation The indent level at which the block is to be read, or null for default + * @param bool $inSequence True if the enclosing data structure is a sequence + * + * @return string A YAML string + * + * @throws ParseException When indentation problem are detected + */ + private function getNextEmbedBlock($indentation = null, $inSequence = false) + { + $oldLineIndentation = $this->getCurrentLineIndentation(); + $blockScalarIndentations = array(); + + if ($this->isBlockScalarHeader()) { + $blockScalarIndentations[] = $this->getCurrentLineIndentation(); + } + + if (!$this->moveToNextLine()) { + return; + } + + if (null === $indentation) { + $newIndent = $this->getCurrentLineIndentation(); + + $unindentedEmbedBlock = $this->isStringUnIndentedCollectionItem(); + + if (!$this->isCurrentLineEmpty() && 0 === $newIndent && !$unindentedEmbedBlock) { + throw new ParseException('Indentation problem.', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + } else { + $newIndent = $indentation; + } + + $data = array(); + if ($this->getCurrentLineIndentation() >= $newIndent) { + $data[] = substr($this->currentLine, $newIndent); + } else { + $this->moveToPreviousLine(); + + return; + } + + if ($inSequence && $oldLineIndentation === $newIndent && isset($data[0][0]) && '-' === $data[0][0]) { + // the previous line contained a dash but no item content, this line is a sequence item with the same indentation + // and therefore no nested list or mapping + $this->moveToPreviousLine(); + + return; + } + + $isItUnindentedCollection = $this->isStringUnIndentedCollectionItem(); + + if (empty($blockScalarIndentations) && $this->isBlockScalarHeader()) { + $blockScalarIndentations[] = $this->getCurrentLineIndentation(); + } + + $previousLineIndentation = $this->getCurrentLineIndentation(); + + while ($this->moveToNextLine()) { + $indent = $this->getCurrentLineIndentation(); + + // terminate all block scalars that are more indented than the current line + if (!empty($blockScalarIndentations) && $indent < $previousLineIndentation && trim($this->currentLine) !== '') { + foreach ($blockScalarIndentations as $key => $blockScalarIndentation) { + if ($blockScalarIndentation >= $this->getCurrentLineIndentation()) { + unset($blockScalarIndentations[$key]); + } + } + } + + if (empty($blockScalarIndentations) && !$this->isCurrentLineComment() && $this->isBlockScalarHeader()) { + $blockScalarIndentations[] = $this->getCurrentLineIndentation(); + } + + $previousLineIndentation = $indent; + + if ($isItUnindentedCollection && !$this->isCurrentLineEmpty() && !$this->isStringUnIndentedCollectionItem() && $newIndent === $indent) { + $this->moveToPreviousLine(); + break; + } + + if ($this->isCurrentLineBlank()) { + $data[] = substr($this->currentLine, $newIndent); + continue; + } + + // we ignore "comment" lines only when we are not inside a scalar block + if (empty($blockScalarIndentations) && $this->isCurrentLineComment()) { + // remember ignored comment lines (they are used later in nested + // parser calls to determine real line numbers) + // + // CAUTION: beware to not populate the global property here as it + // will otherwise influence the getRealCurrentLineNb() call here + // for consecutive comment lines and subsequent embedded blocks + $this->locallySkippedLineNumbers[] = $this->getRealCurrentLineNb(); + + continue; + } + + if ($indent >= $newIndent) { + $data[] = substr($this->currentLine, $newIndent); + } elseif (0 == $indent) { + $this->moveToPreviousLine(); + + break; + } else { + throw new ParseException('Indentation problem.', $this->getRealCurrentLineNb() + 1, $this->currentLine); + } + } + + return implode("\n", $data); + } + + /** + * Moves the parser to the next line. + * + * @return bool + */ + private function moveToNextLine() + { + if ($this->currentLineNb >= count($this->lines) - 1) { + return false; + } + + $this->currentLine = $this->lines[++$this->currentLineNb]; + + return true; + } + + /** + * Moves the parser to the previous line. + * + * @return bool + */ + private function moveToPreviousLine() + { + if ($this->currentLineNb < 1) { + return false; + } + + $this->currentLine = $this->lines[--$this->currentLineNb]; + + return true; + } + + /** + * Parses a YAML value. + * + * @param string $value A YAML value + * @param bool $exceptionOnInvalidType True if an exception must be thrown on invalid types false otherwise + * @param bool $objectSupport True if object support is enabled, false otherwise + * @param bool $objectForMap true if maps should return a stdClass instead of array() + * @param string $context The parser context (either sequence or mapping) + * + * @return mixed A PHP value + * + * @throws ParseException When reference does not exist + */ + private function parseValue($value, $exceptionOnInvalidType, $objectSupport, $objectForMap, $context) + { + if (0 === strpos($value, '*')) { + if (false !== $pos = strpos($value, '#')) { + $value = substr($value, 1, $pos - 2); + } else { + $value = substr($value, 1); + } + + if (!array_key_exists($value, $this->refs)) { + throw new ParseException(sprintf('Reference "%s" does not exist.', $value), $this->currentLineNb + 1, $this->currentLine); + } + + return $this->refs[$value]; + } + + if (self::preg_match('/^'.self::BLOCK_SCALAR_HEADER_PATTERN.'$/', $value, $matches)) { + $modifiers = isset($matches['modifiers']) ? $matches['modifiers'] : ''; + + return $this->parseBlockScalar($matches['separator'], preg_replace('#\d+#', '', $modifiers), (int) abs($modifiers)); + } + + try { + $parsedValue = Inline::parse($value, $exceptionOnInvalidType, $objectSupport, $objectForMap, $this->refs); + + if ('mapping' === $context && '"' !== $value[0] && "'" !== $value[0] && '[' !== $value[0] && '{' !== $value[0] && '!' !== $value[0] && false !== strpos($parsedValue, ': ')) { + @trigger_error(sprintf('Using a colon in the unquoted mapping value "%s" in line %d is deprecated since Symfony 2.8 and will throw a ParseException in 3.0.', $value, $this->getRealCurrentLineNb() + 1), E_USER_DEPRECATED); + + // to be thrown in 3.0 + // throw new ParseException('A colon cannot be used in an unquoted mapping value.'); + } + + return $parsedValue; + } catch (ParseException $e) { + $e->setParsedLine($this->getRealCurrentLineNb() + 1); + $e->setSnippet($this->currentLine); + + throw $e; + } + } + + /** + * Parses a block scalar. + * + * @param string $style The style indicator that was used to begin this block scalar (| or >) + * @param string $chomping The chomping indicator that was used to begin this block scalar (+ or -) + * @param int $indentation The indentation indicator that was used to begin this block scalar + * + * @return string The text value + */ + private function parseBlockScalar($style, $chomping = '', $indentation = 0) + { + $notEOF = $this->moveToNextLine(); + if (!$notEOF) { + return ''; + } + + $isCurrentLineBlank = $this->isCurrentLineBlank(); + $blockLines = array(); + + // leading blank lines are consumed before determining indentation + while ($notEOF && $isCurrentLineBlank) { + // newline only if not EOF + if ($notEOF = $this->moveToNextLine()) { + $blockLines[] = ''; + $isCurrentLineBlank = $this->isCurrentLineBlank(); + } + } + + // determine indentation if not specified + if (0 === $indentation) { + if (self::preg_match('/^ +/', $this->currentLine, $matches)) { + $indentation = strlen($matches[0]); + } + } + + if ($indentation > 0) { + $pattern = sprintf('/^ {%d}(.*)$/', $indentation); + + while ( + $notEOF && ( + $isCurrentLineBlank || + self::preg_match($pattern, $this->currentLine, $matches) + ) + ) { + if ($isCurrentLineBlank && strlen($this->currentLine) > $indentation) { + $blockLines[] = substr($this->currentLine, $indentation); + } elseif ($isCurrentLineBlank) { + $blockLines[] = ''; + } else { + $blockLines[] = $matches[1]; + } + + // newline only if not EOF + if ($notEOF = $this->moveToNextLine()) { + $isCurrentLineBlank = $this->isCurrentLineBlank(); + } + } + } elseif ($notEOF) { + $blockLines[] = ''; + } + + if ($notEOF) { + $blockLines[] = ''; + $this->moveToPreviousLine(); + } elseif (!$notEOF && !$this->isCurrentLineLastLineInDocument()) { + $blockLines[] = ''; + } + + // folded style + if ('>' === $style) { + $text = ''; + $previousLineIndented = false; + $previousLineBlank = false; + + for ($i = 0, $blockLinesCount = count($blockLines); $i < $blockLinesCount; ++$i) { + if ('' === $blockLines[$i]) { + $text .= "\n"; + $previousLineIndented = false; + $previousLineBlank = true; + } elseif (' ' === $blockLines[$i][0]) { + $text .= "\n".$blockLines[$i]; + $previousLineIndented = true; + $previousLineBlank = false; + } elseif ($previousLineIndented) { + $text .= "\n".$blockLines[$i]; + $previousLineIndented = false; + $previousLineBlank = false; + } elseif ($previousLineBlank || 0 === $i) { + $text .= $blockLines[$i]; + $previousLineIndented = false; + $previousLineBlank = false; + } else { + $text .= ' '.$blockLines[$i]; + $previousLineIndented = false; + $previousLineBlank = false; + } + } + } else { + $text = implode("\n", $blockLines); + } + + // deal with trailing newlines + if ('' === $chomping) { + $text = preg_replace('/\n+$/', "\n", $text); + } elseif ('-' === $chomping) { + $text = preg_replace('/\n+$/', '', $text); + } + + return $text; + } + + /** + * Returns true if the next line is indented. + * + * @return bool Returns true if the next line is indented, false otherwise + */ + private function isNextLineIndented() + { + $currentIndentation = $this->getCurrentLineIndentation(); + $EOF = !$this->moveToNextLine(); + + while (!$EOF && $this->isCurrentLineEmpty()) { + $EOF = !$this->moveToNextLine(); + } + + if ($EOF) { + return false; + } + + $ret = $this->getCurrentLineIndentation() > $currentIndentation; + + $this->moveToPreviousLine(); + + return $ret; + } + + /** + * Returns true if the current line is blank or if it is a comment line. + * + * @return bool Returns true if the current line is empty or if it is a comment line, false otherwise + */ + private function isCurrentLineEmpty() + { + return $this->isCurrentLineBlank() || $this->isCurrentLineComment(); + } + + /** + * Returns true if the current line is blank. + * + * @return bool Returns true if the current line is blank, false otherwise + */ + private function isCurrentLineBlank() + { + return '' == trim($this->currentLine, ' '); + } + + /** + * Returns true if the current line is a comment line. + * + * @return bool Returns true if the current line is a comment line, false otherwise + */ + private function isCurrentLineComment() + { + //checking explicitly the first char of the trim is faster than loops or strpos + $ltrimmedLine = ltrim($this->currentLine, ' '); + + return '' !== $ltrimmedLine && $ltrimmedLine[0] === '#'; + } + + private function isCurrentLineLastLineInDocument() + { + return ($this->offset + $this->currentLineNb) >= ($this->totalNumberOfLines - 1); + } + + /** + * Cleanups a YAML string to be parsed. + * + * @param string $value The input YAML string + * + * @return string A cleaned up YAML string + */ + private function cleanup($value) + { + $value = str_replace(array("\r\n", "\r"), "\n", $value); + + // strip YAML header + $count = 0; + $value = preg_replace('#^\%YAML[: ][\d\.]+.*\n#u', '', $value, -1, $count); + $this->offset += $count; + + // remove leading comments + $trimmedValue = preg_replace('#^(\#.*?\n)+#s', '', $value, -1, $count); + if ($count == 1) { + // items have been removed, update the offset + $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n"); + $value = $trimmedValue; + } + + // remove start of the document marker (---) + $trimmedValue = preg_replace('#^\-\-\-.*?\n#s', '', $value, -1, $count); + if ($count == 1) { + // items have been removed, update the offset + $this->offset += substr_count($value, "\n") - substr_count($trimmedValue, "\n"); + $value = $trimmedValue; + + // remove end of the document marker (...) + $value = preg_replace('#\.\.\.\s*$#', '', $value); + } + + return $value; + } + + /** + * Returns true if the next line starts unindented collection. + * + * @return bool Returns true if the next line starts unindented collection, false otherwise + */ + private function isNextLineUnIndentedCollection() + { + $currentIndentation = $this->getCurrentLineIndentation(); + $notEOF = $this->moveToNextLine(); + + while ($notEOF && $this->isCurrentLineEmpty()) { + $notEOF = $this->moveToNextLine(); + } + + if (false === $notEOF) { + return false; + } + + $ret = $this->getCurrentLineIndentation() === $currentIndentation && $this->isStringUnIndentedCollectionItem(); + + $this->moveToPreviousLine(); + + return $ret; + } + + /** + * Returns true if the string is un-indented collection item. + * + * @return bool Returns true if the string is un-indented collection item, false otherwise + */ + private function isStringUnIndentedCollectionItem() + { + return '-' === rtrim($this->currentLine) || 0 === strpos($this->currentLine, '- '); + } + + /** + * Tests whether or not the current line is the header of a block scalar. + * + * @return bool + */ + private function isBlockScalarHeader() + { + return (bool) self::preg_match('~'.self::BLOCK_SCALAR_HEADER_PATTERN.'$~', $this->currentLine); + } + + /** + * A local wrapper for `preg_match` which will throw a ParseException if there + * is an internal error in the PCRE engine. + * + * This avoids us needing to check for "false" every time PCRE is used + * in the YAML engine + * + * @throws ParseException on a PCRE internal error + * + * @see preg_last_error() + * + * @internal + */ + public static function preg_match($pattern, $subject, &$matches = null, $flags = 0, $offset = 0) + { + if (false === $ret = preg_match($pattern, $subject, $matches, $flags, $offset)) { + switch (preg_last_error()) { + case PREG_INTERNAL_ERROR: + $error = 'Internal PCRE error.'; + break; + case PREG_BACKTRACK_LIMIT_ERROR: + $error = 'pcre.backtrack_limit reached.'; + break; + case PREG_RECURSION_LIMIT_ERROR: + $error = 'pcre.recursion_limit reached.'; + break; + case PREG_BAD_UTF8_ERROR: + $error = 'Malformed UTF-8 data.'; + break; + case PREG_BAD_UTF8_OFFSET_ERROR: + $error = 'Offset doesn\'t correspond to the begin of a valid UTF-8 code point.'; + break; + default: + $error = 'Error.'; + } + + throw new ParseException($error); + } + + return $ret; + } +} diff --git a/system/vendor/symfony/yaml/README.md b/system/vendor/symfony/yaml/README.md new file mode 100644 index 0000000..0d32488 --- /dev/null +++ b/system/vendor/symfony/yaml/README.md @@ -0,0 +1,13 @@ +Yaml Component +============== + +The Yaml component loads and dumps YAML files. + +Resources +--------- + + * [Documentation](https://symfony.com/doc/current/components/yaml/index.html) + * [Contributing](https://symfony.com/doc/current/contributing/index.html) + * [Report issues](https://github.com/symfony/symfony/issues) and + [send Pull Requests](https://github.com/symfony/symfony/pulls) + in the [main Symfony repository](https://github.com/symfony/symfony) diff --git a/system/vendor/symfony/yaml/Tests/DumperTest.php b/system/vendor/symfony/yaml/Tests/DumperTest.php new file mode 100644 index 0000000..6a1b3ac --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/DumperTest.php @@ -0,0 +1,257 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Tests; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\Yaml\Parser; +use Symfony\Component\Yaml\Dumper; + +class DumperTest extends TestCase +{ + protected $parser; + protected $dumper; + protected $path; + + protected $array = array( + '' => 'bar', + 'foo' => '#bar', + 'foo\'bar' => array(), + 'bar' => array(1, 'foo'), + 'foobar' => array( + 'foo' => 'bar', + 'bar' => array(1, 'foo'), + 'foobar' => array( + 'foo' => 'bar', + 'bar' => array(1, 'foo'), + ), + ), + ); + + protected function setUp() + { + $this->parser = new Parser(); + $this->dumper = new Dumper(); + $this->path = __DIR__.'/Fixtures'; + } + + protected function tearDown() + { + $this->parser = null; + $this->dumper = null; + $this->path = null; + $this->array = null; + } + + public function testSetIndentation() + { + $this->dumper->setIndentation(7); + + $expected = <<<'EOF' +'': bar +foo: '#bar' +'foo''bar': { } +bar: + - 1 + - foo +foobar: + foo: bar + bar: + - 1 + - foo + foobar: + foo: bar + bar: + - 1 + - foo + +EOF; + $this->assertEquals($expected, $this->dumper->dump($this->array, 4, 0)); + } + + public function testSpecifications() + { + $files = $this->parser->parse(file_get_contents($this->path.'/index.yml')); + foreach ($files as $file) { + $yamls = file_get_contents($this->path.'/'.$file.'.yml'); + + // split YAMLs documents + foreach (preg_split('/^---( %YAML\:1\.0)?/m', $yamls) as $yaml) { + if (!$yaml) { + continue; + } + + $test = $this->parser->parse($yaml); + if (isset($test['dump_skip']) && $test['dump_skip']) { + continue; + } elseif (isset($test['todo']) && $test['todo']) { + // TODO + } else { + eval('$expected = '.trim($test['php']).';'); + $this->assertSame($expected, $this->parser->parse($this->dumper->dump($expected, 10)), $test['test']); + } + } + } + } + + public function testInlineLevel() + { + $expected = <<<'EOF' +{ '': bar, foo: '#bar', 'foo''bar': { }, bar: [1, foo], foobar: { foo: bar, bar: [1, foo], foobar: { foo: bar, bar: [1, foo] } } } +EOF; + $this->assertEquals($expected, $this->dumper->dump($this->array, -10), '->dump() takes an inline level argument'); + $this->assertEquals($expected, $this->dumper->dump($this->array, 0), '->dump() takes an inline level argument'); + + $expected = <<<'EOF' +'': bar +foo: '#bar' +'foo''bar': { } +bar: [1, foo] +foobar: { foo: bar, bar: [1, foo], foobar: { foo: bar, bar: [1, foo] } } + +EOF; + $this->assertEquals($expected, $this->dumper->dump($this->array, 1), '->dump() takes an inline level argument'); + + $expected = <<<'EOF' +'': bar +foo: '#bar' +'foo''bar': { } +bar: + - 1 + - foo +foobar: + foo: bar + bar: [1, foo] + foobar: { foo: bar, bar: [1, foo] } + +EOF; + $this->assertEquals($expected, $this->dumper->dump($this->array, 2), '->dump() takes an inline level argument'); + + $expected = <<<'EOF' +'': bar +foo: '#bar' +'foo''bar': { } +bar: + - 1 + - foo +foobar: + foo: bar + bar: + - 1 + - foo + foobar: + foo: bar + bar: [1, foo] + +EOF; + $this->assertEquals($expected, $this->dumper->dump($this->array, 3), '->dump() takes an inline level argument'); + + $expected = <<<'EOF' +'': bar +foo: '#bar' +'foo''bar': { } +bar: + - 1 + - foo +foobar: + foo: bar + bar: + - 1 + - foo + foobar: + foo: bar + bar: + - 1 + - foo + +EOF; + $this->assertEquals($expected, $this->dumper->dump($this->array, 4), '->dump() takes an inline level argument'); + $this->assertEquals($expected, $this->dumper->dump($this->array, 10), '->dump() takes an inline level argument'); + } + + public function testObjectSupportEnabled() + { + $dump = $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, false, true); + + $this->assertEquals('{ foo: !php/object:O:30:"Symfony\Component\Yaml\Tests\A":1:{s:1:"a";s:3:"foo";}, bar: 1 }', $dump, '->dump() is able to dump objects'); + } + + public function testObjectSupportDisabledButNoExceptions() + { + $dump = $this->dumper->dump(array('foo' => new A(), 'bar' => 1)); + + $this->assertEquals('{ foo: null, bar: 1 }', $dump, '->dump() does not dump objects when disabled'); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\DumpException + */ + public function testObjectSupportDisabledWithExceptions() + { + $this->dumper->dump(array('foo' => new A(), 'bar' => 1), 0, 0, true, false); + } + + /** + * @dataProvider getEscapeSequences + */ + public function testEscapedEscapeSequencesInQuotedScalar($input, $expected) + { + $this->assertEquals($expected, $this->dumper->dump($input)); + } + + public function getEscapeSequences() + { + return array( + 'empty string' => array('', "''"), + 'null' => array("\x0", '"\\0"'), + 'bell' => array("\x7", '"\\a"'), + 'backspace' => array("\x8", '"\\b"'), + 'horizontal-tab' => array("\t", '"\\t"'), + 'line-feed' => array("\n", '"\\n"'), + 'vertical-tab' => array("\v", '"\\v"'), + 'form-feed' => array("\xC", '"\\f"'), + 'carriage-return' => array("\r", '"\\r"'), + 'escape' => array("\x1B", '"\\e"'), + 'space' => array(' ', "' '"), + 'double-quote' => array('"', "'\"'"), + 'slash' => array('/', '/'), + 'backslash' => array('\\', '\\'), + 'next-line' => array("\xC2\x85", '"\\N"'), + 'non-breaking-space' => array("\xc2\xa0", '"\\_"'), + 'line-separator' => array("\xE2\x80\xA8", '"\\L"'), + 'paragraph-separator' => array("\xE2\x80\xA9", '"\\P"'), + 'colon' => array(':', "':'"), + ); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The indentation must be greater than zero + */ + public function testZeroIndentationThrowsException() + { + $this->dumper->setIndentation(0); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The indentation must be greater than zero + */ + public function testNegativeIndentationThrowsException() + { + $this->dumper->setIndentation(-4); + } +} + +class A +{ + public $a = 'foo'; +} diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/YtsAnchorAlias.yml b/system/vendor/symfony/yaml/Tests/Fixtures/YtsAnchorAlias.yml new file mode 100644 index 0000000..5f9c942 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/YtsAnchorAlias.yml @@ -0,0 +1,31 @@ +--- %YAML:1.0 +test: Simple Alias Example +brief: > + If you need to refer to the same item of data twice, + you can give that item an alias. The alias is a plain + string, starting with an ampersand. The item may then + be referred to by the alias throughout your document + by using an asterisk before the name of the alias. + This is called an anchor. +yaml: | + - &showell Steve + - Clark + - Brian + - Oren + - *showell +php: | + array('Steve', 'Clark', 'Brian', 'Oren', 'Steve') + +--- +test: Alias of a Mapping +brief: > + An alias can be used on any item of data, including + sequences, mappings, and other complex data types. +yaml: | + - &hello + Meat: pork + Starch: potato + - banana + - *hello +php: | + array(array('Meat'=>'pork', 'Starch'=>'potato'), 'banana', array('Meat'=>'pork', 'Starch'=>'potato')) diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/YtsBasicTests.yml b/system/vendor/symfony/yaml/Tests/Fixtures/YtsBasicTests.yml new file mode 100644 index 0000000..dfd9302 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/YtsBasicTests.yml @@ -0,0 +1,202 @@ +--- %YAML:1.0 +test: Simple Sequence +brief: | + You can specify a list in YAML by placing each + member of the list on a new line with an opening + dash. These lists are called sequences. +yaml: | + - apple + - banana + - carrot +php: | + array('apple', 'banana', 'carrot') +--- +test: Sequence With Item Being Null In The Middle +brief: | + You can specify a list in YAML by placing each + member of the list on a new line with an opening + dash. These lists are called sequences. +yaml: | + - apple + - + - carrot +php: | + array('apple', null, 'carrot') +--- +test: Sequence With Last Item Being Null +brief: | + You can specify a list in YAML by placing each + member of the list on a new line with an opening + dash. These lists are called sequences. +yaml: | + - apple + - banana + - +php: | + array('apple', 'banana', null) +--- +test: Nested Sequences +brief: | + You can include a sequence within another + sequence by giving the sequence an empty + dash, followed by an indented list. +yaml: | + - + - foo + - bar + - baz +php: | + array(array('foo', 'bar', 'baz')) +--- +test: Mixed Sequences +brief: | + Sequences can contain any YAML data, + including strings and other sequences. +yaml: | + - apple + - + - foo + - bar + - x123 + - banana + - carrot +php: | + array('apple', array('foo', 'bar', 'x123'), 'banana', 'carrot') +--- +test: Deeply Nested Sequences +brief: | + Sequences can be nested even deeper, with each + level of indentation representing a level of + depth. +yaml: | + - + - + - uno + - dos +php: | + array(array(array('uno', 'dos'))) +--- +test: Simple Mapping +brief: | + You can add a keyed list (also known as a dictionary or + hash) to your document by placing each member of the + list on a new line, with a colon separating the key + from its value. In YAML, this type of list is called + a mapping. +yaml: | + foo: whatever + bar: stuff +php: | + array('foo' => 'whatever', 'bar' => 'stuff') +--- +test: Sequence in a Mapping +brief: | + A value in a mapping can be a sequence. +yaml: | + foo: whatever + bar: + - uno + - dos +php: | + array('foo' => 'whatever', 'bar' => array('uno', 'dos')) +--- +test: Nested Mappings +brief: | + A value in a mapping can be another mapping. +yaml: | + foo: whatever + bar: + fruit: apple + name: steve + sport: baseball +php: | + array( + 'foo' => 'whatever', + 'bar' => array( + 'fruit' => 'apple', + 'name' => 'steve', + 'sport' => 'baseball' + ) + ) +--- +test: Mixed Mapping +brief: | + A mapping can contain any assortment + of mappings and sequences as values. +yaml: | + foo: whatever + bar: + - + fruit: apple + name: steve + sport: baseball + - more + - + python: rocks + perl: papers + ruby: scissorses +php: | + array( + 'foo' => 'whatever', + 'bar' => array( + array( + 'fruit' => 'apple', + 'name' => 'steve', + 'sport' => 'baseball' + ), + 'more', + array( + 'python' => 'rocks', + 'perl' => 'papers', + 'ruby' => 'scissorses' + ) + ) + ) +--- +test: Mapping-in-Sequence Shortcut +todo: true +brief: | + If you are adding a mapping to a sequence, you + can place the mapping on the same line as the + dash as a shortcut. +yaml: | + - work on YAML.py: + - work on Store +php: | + array(array('work on YAML.py' => array('work on Store'))) +--- +test: Sequence-in-Mapping Shortcut +todo: true +brief: | + The dash in a sequence counts as indentation, so + you can add a sequence inside of a mapping without + needing spaces as indentation. +yaml: | + allow: + - 'localhost' + - '%.sourceforge.net' + - '%.freepan.org' +php: | + array('allow' => array('localhost', '%.sourceforge.net', '%.freepan.org')) +--- +todo: true +test: Merge key +brief: | + A merge key ('<<') can be used in a mapping to insert other mappings. If + the value associated with the merge key is a mapping, each of its key/value + pairs is inserted into the current mapping. +yaml: | + mapping: + name: Joe + job: Accountant + <<: + age: 38 +php: | + array( + 'mapping' => + array( + 'name' => 'Joe', + 'job' => 'Accountant', + 'age' => 38 + ) + ) diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/YtsBlockMapping.yml b/system/vendor/symfony/yaml/Tests/Fixtures/YtsBlockMapping.yml new file mode 100644 index 0000000..f7ca469 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/YtsBlockMapping.yml @@ -0,0 +1,51 @@ +--- +test: One Element Mapping +brief: | + A mapping with one key/value pair +yaml: | + foo: bar +php: | + array('foo' => 'bar') +--- +test: Multi Element Mapping +brief: | + More than one key/value pair +yaml: | + red: baron + white: walls + blue: berries +php: | + array( + 'red' => 'baron', + 'white' => 'walls', + 'blue' => 'berries', + ) +--- +test: Values aligned +brief: | + Often times human editors of documents will align the values even + though YAML emitters generally don't. +yaml: | + red: baron + white: walls + blue: berries +php: | + array( + 'red' => 'baron', + 'white' => 'walls', + 'blue' => 'berries', + ) +--- +test: Colons aligned +brief: | + Spaces can come before the ': ' key/value separator. +yaml: | + red : baron + white : walls + blue : berries +php: | + array( + 'red' => 'baron', + 'white' => 'walls', + 'blue' => 'berries', + ) diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/YtsDocumentSeparator.yml b/system/vendor/symfony/yaml/Tests/Fixtures/YtsDocumentSeparator.yml new file mode 100644 index 0000000..d988102 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/YtsDocumentSeparator.yml @@ -0,0 +1,85 @@ +--- %YAML:1.0 +test: Trailing Document Separator +todo: true +brief: > + You can separate YAML documents + with a string of three dashes. +yaml: | + - foo: 1 + bar: 2 + --- + more: stuff +python: | + [ + [ { 'foo': 1, 'bar': 2 } ], + { 'more': 'stuff' } + ] +ruby: | + [ { 'foo' => 1, 'bar' => 2 } ] + +--- +test: Leading Document Separator +todo: true +brief: > + You can explicitly give an opening + document separator to your YAML stream. +yaml: | + --- + - foo: 1 + bar: 2 + --- + more: stuff +python: | + [ + [ {'foo': 1, 'bar': 2}], + {'more': 'stuff'} + ] +ruby: | + [ { 'foo' => 1, 'bar' => 2 } ] + +--- +test: YAML Header +todo: true +brief: > + The opening separator can contain directives + to the YAML parser, such as the version + number. +yaml: | + --- %YAML:1.0 + foo: 1 + bar: 2 +php: | + array('foo' => 1, 'bar' => 2) +documents: 1 + +--- +test: Red Herring Document Separator +brief: > + Separators included in blocks or strings + are treated as blocks or strings, as the + document separator should have no indentation + preceding it. +yaml: | + foo: | + --- +php: | + array('foo' => "---\n") + +--- +test: Multiple Document Separators in Block +brief: > + This technique allows you to embed other YAML + documents within literal blocks. +yaml: | + foo: | + --- + foo: bar + --- + yo: baz + bar: | + fooness +php: | + array( + 'foo' => "---\nfoo: bar\n---\nyo: baz\n", + 'bar' => "fooness\n" + ) diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/YtsErrorTests.yml b/system/vendor/symfony/yaml/Tests/Fixtures/YtsErrorTests.yml new file mode 100644 index 0000000..e8506fc --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/YtsErrorTests.yml @@ -0,0 +1,25 @@ +--- +test: Missing value for hash item +todo: true +brief: | + Third item in this hash doesn't have a value +yaml: | + okay: value + also okay: ~ + causes error because no value specified + last key: value okay here too +python-error: causes error because no value specified + +--- +test: Not indenting enough +brief: | + There was a bug in PyYaml where it was off by one + in the indentation check. It was allowing the YAML + below. +# This is actually valid YAML now. Someone should tell showell. +yaml: | + foo: + firstline: 1 + secondline: 2 +php: | + array('foo' => null, 'firstline' => 1, 'secondline' => 2) diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/YtsFlowCollections.yml b/system/vendor/symfony/yaml/Tests/Fixtures/YtsFlowCollections.yml new file mode 100644 index 0000000..03090e4 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/YtsFlowCollections.yml @@ -0,0 +1,60 @@ +--- +test: Simple Inline Array +brief: > + Sequences can be contained on a + single line, using the inline syntax. + Separate each entry with commas and + enclose in square brackets. +yaml: | + seq: [ a, b, c ] +php: | + array('seq' => array('a', 'b', 'c')) +--- +test: Simple Inline Hash +brief: > + Mapping can also be contained on + a single line, using the inline + syntax. Each key-value pair is + separated by a colon, with a comma + between each entry in the mapping. + Enclose with curly braces. +yaml: | + hash: { name: Steve, foo: bar } +php: | + array('hash' => array('name' => 'Steve', 'foo' => 'bar')) +--- +test: Multi-line Inline Collections +todo: true +brief: > + Both inline sequences and inline mappings + can span multiple lines, provided that you + indent the additional lines. +yaml: | + languages: [ Ruby, + Perl, + Python ] + websites: { YAML: yaml.org, + Ruby: ruby-lang.org, + Python: python.org, + Perl: use.perl.org } +php: | + array( + 'languages' => array('Ruby', 'Perl', 'Python'), + 'websites' => array( + 'YAML' => 'yaml.org', + 'Ruby' => 'ruby-lang.org', + 'Python' => 'python.org', + 'Perl' => 'use.perl.org' + ) + ) +--- +test: Commas in Values (not in the spec!) +todo: true +brief: > + List items in collections are delimited by commas, but + there must be a space after each comma. This allows you + to add numbers without quoting. +yaml: | + attendances: [ 45,123, 70,000, 17,222 ] +php: | + array('attendances' => array(45123, 70000, 17222)) diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/YtsFoldedScalars.yml b/system/vendor/symfony/yaml/Tests/Fixtures/YtsFoldedScalars.yml new file mode 100644 index 0000000..a14735a --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/YtsFoldedScalars.yml @@ -0,0 +1,176 @@ +--- %YAML:1.0 +test: Single ending newline +brief: > + A pipe character, followed by an indented + block of text is treated as a literal + block, in which newlines are preserved + throughout the block, including the final + newline. +yaml: | + --- + this: | + Foo + Bar +php: | + array('this' => "Foo\nBar\n") +--- +test: The '+' indicator +brief: > + The '+' indicator says to keep newlines at the end of text + blocks. +yaml: | + normal: | + extra new lines not kept + + preserving: |+ + extra new lines are kept + + + dummy: value +php: | + array( + 'normal' => "extra new lines not kept\n", + 'preserving' => "extra new lines are kept\n\n\n", + 'dummy' => 'value' + ) +--- +test: Three trailing newlines in literals +brief: > + To give you more control over how space + is preserved in text blocks, YAML has + the keep '+' and chomp '-' indicators. + The keep indicator will preserve all + ending newlines, while the chomp indicator + will strip all ending newlines. +yaml: | + clipped: | + This has one newline. + + + + same as "clipped" above: "This has one newline.\n" + + stripped: |- + This has no newline. + + + + same as "stripped" above: "This has no newline." + + kept: |+ + This has four newlines. + + + + same as "kept" above: "This has four newlines.\n\n\n\n" +php: | + array( + 'clipped' => "This has one newline.\n", + 'same as "clipped" above' => "This has one newline.\n", + 'stripped' => 'This has no newline.', + 'same as "stripped" above' => 'This has no newline.', + 'kept' => "This has four newlines.\n\n\n\n", + 'same as "kept" above' => "This has four newlines.\n\n\n\n" + ) +--- +test: Extra trailing newlines with spaces +todo: true +brief: > + Normally, only a single newline is kept + from the end of a literal block, unless the + keep '+' character is used in combination + with the pipe. The following example + will preserve all ending whitespace + since the last line of both literal blocks + contains spaces which extend past the indentation + level. +yaml: | + --- + this: | + Foo + + + kept: |+ + Foo + + +php: | + array('this' => "Foo\n\n \n", + 'kept' => "Foo\n\n \n" ) + +--- +test: Folded Block in a Sequence +brief: > + A greater-then character, followed by an indented + block of text is treated as a folded block, in + which lines of text separated by a single newline + are concatenated as a single line. +yaml: | + --- + - apple + - banana + - > + can't you see + the beauty of yaml? + hmm + - dog +php: | + array( + 'apple', + 'banana', + "can't you see the beauty of yaml? hmm\n", + 'dog' + ) +--- +test: Folded Block as a Mapping Value +brief: > + Both literal and folded blocks can be + used in collections, as values in a + sequence or a mapping. +yaml: | + --- + quote: > + Mark McGwire's + year was crippled + by a knee injury. + source: espn +php: | + array( + 'quote' => "Mark McGwire's year was crippled by a knee injury.\n", + 'source' => 'espn' + ) +--- +test: Three trailing newlines in folded blocks +brief: > + The keep and chomp indicators can also + be applied to folded blocks. +yaml: | + clipped: > + This has one newline. + + + + same as "clipped" above: "This has one newline.\n" + + stripped: >- + This has no newline. + + + + same as "stripped" above: "This has no newline." + + kept: >+ + This has four newlines. + + + + same as "kept" above: "This has four newlines.\n\n\n\n" +php: | + array( + 'clipped' => "This has one newline.\n", + 'same as "clipped" above' => "This has one newline.\n", + 'stripped' => 'This has no newline.', + 'same as "stripped" above' => 'This has no newline.', + 'kept' => "This has four newlines.\n\n\n\n", + 'same as "kept" above' => "This has four newlines.\n\n\n\n" + ) diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/YtsNullsAndEmpties.yml b/system/vendor/symfony/yaml/Tests/Fixtures/YtsNullsAndEmpties.yml new file mode 100644 index 0000000..9a5300f --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/YtsNullsAndEmpties.yml @@ -0,0 +1,45 @@ +--- %YAML:1.0 +test: Empty Sequence +brief: > + You can represent the empty sequence + with an empty inline sequence. +yaml: | + empty: [] +php: | + array('empty' => array()) +--- +test: Empty Mapping +brief: > + You can represent the empty mapping + with an empty inline mapping. +yaml: | + empty: {} +php: | + array('empty' => array()) +--- +test: Empty Sequence as Entire Document +yaml: | + [] +php: | + array() +--- +test: Empty Mapping as Entire Document +yaml: | + {} +php: | + array() +--- +test: Null as Document +yaml: | + ~ +php: | + null +--- +test: Empty String +brief: > + You can represent an empty string + with a pair of quotes. +yaml: | + '' +php: | + '' diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/YtsSpecificationExamples.yml b/system/vendor/symfony/yaml/Tests/Fixtures/YtsSpecificationExamples.yml new file mode 100644 index 0000000..ec1c4c3 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/YtsSpecificationExamples.yml @@ -0,0 +1,1697 @@ +--- %YAML:1.0 +test: Sequence of scalars +spec: 2.1 +yaml: | + - Mark McGwire + - Sammy Sosa + - Ken Griffey +php: | + array('Mark McGwire', 'Sammy Sosa', 'Ken Griffey') +--- +test: Mapping of scalars to scalars +spec: 2.2 +yaml: | + hr: 65 + avg: 0.278 + rbi: 147 +php: | + array('hr' => 65, 'avg' => 0.278, 'rbi' => 147) +--- +test: Mapping of scalars to sequences +spec: 2.3 +yaml: | + american: + - Boston Red Sox + - Detroit Tigers + - New York Yankees + national: + - New York Mets + - Chicago Cubs + - Atlanta Braves +php: | + array('american' => + array( 'Boston Red Sox', 'Detroit Tigers', + 'New York Yankees' ), + 'national' => + array( 'New York Mets', 'Chicago Cubs', + 'Atlanta Braves' ) + ) +--- +test: Sequence of mappings +spec: 2.4 +yaml: | + - + name: Mark McGwire + hr: 65 + avg: 0.278 + - + name: Sammy Sosa + hr: 63 + avg: 0.288 +php: | + array( + array('name' => 'Mark McGwire', 'hr' => 65, 'avg' => 0.278), + array('name' => 'Sammy Sosa', 'hr' => 63, 'avg' => 0.288) + ) +--- +test: Legacy A5 +todo: true +spec: legacy_A5 +yaml: | + ? + - New York Yankees + - Atlanta Braves + : + - 2001-07-02 + - 2001-08-12 + - 2001-08-14 + ? + - Detroit Tigers + - Chicago Cubs + : + - 2001-07-23 +perl-busted: > + YAML.pm will be able to emulate this behavior soon. In this regard + it may be somewhat more correct than Python's native behaviour which + can only use tuples as mapping keys. PyYAML will also need to figure + out some clever way to roundtrip structured keys. +python: | + [ + { + ('New York Yankees', 'Atlanta Braves'): + [yaml.timestamp('2001-07-02'), + yaml.timestamp('2001-08-12'), + yaml.timestamp('2001-08-14')], + ('Detroit Tigers', 'Chicago Cubs'): + [yaml.timestamp('2001-07-23')] + } + ] +ruby: | + { + [ 'New York Yankees', 'Atlanta Braves' ] => + [ Date.new( 2001, 7, 2 ), Date.new( 2001, 8, 12 ), Date.new( 2001, 8, 14 ) ], + [ 'Detroit Tigers', 'Chicago Cubs' ] => + [ Date.new( 2001, 7, 23 ) ] + } +syck: | + struct test_node seq1[] = { + { T_STR, 0, "New York Yankees" }, + { T_STR, 0, "Atlanta Braves" }, + end_node + }; + struct test_node seq2[] = { + { T_STR, 0, "2001-07-02" }, + { T_STR, 0, "2001-08-12" }, + { T_STR, 0, "2001-08-14" }, + end_node + }; + struct test_node seq3[] = { + { T_STR, 0, "Detroit Tigers" }, + { T_STR, 0, "Chicago Cubs" }, + end_node + }; + struct test_node seq4[] = { + { T_STR, 0, "2001-07-23" }, + end_node + }; + struct test_node map[] = { + { T_SEQ, 0, 0, seq1 }, + { T_SEQ, 0, 0, seq2 }, + { T_SEQ, 0, 0, seq3 }, + { T_SEQ, 0, 0, seq4 }, + end_node + }; + struct test_node stream[] = { + { T_MAP, 0, 0, map }, + end_node + }; + +--- +test: Sequence of sequences +spec: 2.5 +yaml: | + - [ name , hr , avg ] + - [ Mark McGwire , 65 , 0.278 ] + - [ Sammy Sosa , 63 , 0.288 ] +php: | + array( + array( 'name', 'hr', 'avg' ), + array( 'Mark McGwire', 65, 0.278 ), + array( 'Sammy Sosa', 63, 0.288 ) + ) +--- +test: Mapping of mappings +todo: true +spec: 2.6 +yaml: | + Mark McGwire: {hr: 65, avg: 0.278} + Sammy Sosa: { + hr: 63, + avg: 0.288 + } +php: | + array( + 'Mark McGwire' => + array( 'hr' => 65, 'avg' => 0.278 ), + 'Sammy Sosa' => + array( 'hr' => 63, 'avg' => 0.288 ) + ) +--- +test: Two documents in a stream each with a leading comment +todo: true +spec: 2.7 +yaml: | + # Ranking of 1998 home runs + --- + - Mark McGwire + - Sammy Sosa + - Ken Griffey + + # Team ranking + --- + - Chicago Cubs + - St Louis Cardinals +ruby: | + y = YAML::Stream.new + y.add( [ 'Mark McGwire', 'Sammy Sosa', 'Ken Griffey' ] ) + y.add( [ 'Chicago Cubs', 'St Louis Cardinals' ] ) +documents: 2 + +--- +test: Play by play feed from a game +todo: true +spec: 2.8 +yaml: | + --- + time: 20:03:20 + player: Sammy Sosa + action: strike (miss) + ... + --- + time: 20:03:47 + player: Sammy Sosa + action: grand slam + ... +perl: | + [ 'Mark McGwire', 'Sammy Sosa', 'Ken Griffey' ] +documents: 2 + +--- +test: Single document with two comments +spec: 2.9 +yaml: | + hr: # 1998 hr ranking + - Mark McGwire + - Sammy Sosa + rbi: + # 1998 rbi ranking + - Sammy Sosa + - Ken Griffey +php: | + array( + 'hr' => array( 'Mark McGwire', 'Sammy Sosa' ), + 'rbi' => array( 'Sammy Sosa', 'Ken Griffey' ) + ) +--- +test: Node for Sammy Sosa appears twice in this document +spec: 2.10 +yaml: | + --- + hr: + - Mark McGwire + # Following node labeled SS + - &SS Sammy Sosa + rbi: + - *SS # Subsequent occurrence + - Ken Griffey +php: | + array( + 'hr' => + array('Mark McGwire', 'Sammy Sosa'), + 'rbi' => + array('Sammy Sosa', 'Ken Griffey') + ) +--- +test: Mapping between sequences +todo: true +spec: 2.11 +yaml: | + ? # PLAY SCHEDULE + - Detroit Tigers + - Chicago Cubs + : + - 2001-07-23 + + ? [ New York Yankees, + Atlanta Braves ] + : [ 2001-07-02, 2001-08-12, + 2001-08-14 ] +ruby: | + { + [ 'Detroit Tigers', 'Chicago Cubs' ] => [ Date.new( 2001, 7, 23 ) ], + [ 'New York Yankees', 'Atlanta Braves' ] => [ Date.new( 2001, 7, 2 ), Date.new( 2001, 8, 12 ), Date.new( 2001, 8, 14 ) ] + } +syck: | + struct test_node seq1[] = { + { T_STR, 0, "New York Yankees" }, + { T_STR, 0, "Atlanta Braves" }, + end_node + }; + struct test_node seq2[] = { + { T_STR, 0, "2001-07-02" }, + { T_STR, 0, "2001-08-12" }, + { T_STR, 0, "2001-08-14" }, + end_node + }; + struct test_node seq3[] = { + { T_STR, 0, "Detroit Tigers" }, + { T_STR, 0, "Chicago Cubs" }, + end_node + }; + struct test_node seq4[] = { + { T_STR, 0, "2001-07-23" }, + end_node + }; + struct test_node map[] = { + { T_SEQ, 0, 0, seq3 }, + { T_SEQ, 0, 0, seq4 }, + { T_SEQ, 0, 0, seq1 }, + { T_SEQ, 0, 0, seq2 }, + end_node + }; + struct test_node stream[] = { + { T_MAP, 0, 0, map }, + end_node + }; + +--- +test: Sequence key shortcut +spec: 2.12 +yaml: | + --- + # products purchased + - item : Super Hoop + quantity: 1 + - item : Basketball + quantity: 4 + - item : Big Shoes + quantity: 1 +php: | + array ( + array ( + 'item' => 'Super Hoop', + 'quantity' => 1, + ), + array ( + 'item' => 'Basketball', + 'quantity' => 4, + ), + array ( + 'item' => 'Big Shoes', + 'quantity' => 1, + ) + ) +perl: | + [ + { item => 'Super Hoop', quantity => 1 }, + { item => 'Basketball', quantity => 4 }, + { item => 'Big Shoes', quantity => 1 } + ] + +ruby: | + [ + { 'item' => 'Super Hoop', 'quantity' => 1 }, + { 'item' => 'Basketball', 'quantity' => 4 }, + { 'item' => 'Big Shoes', 'quantity' => 1 } + ] +python: | + [ + { 'item': 'Super Hoop', 'quantity': 1 }, + { 'item': 'Basketball', 'quantity': 4 }, + { 'item': 'Big Shoes', 'quantity': 1 } + ] +syck: | + struct test_node map1[] = { + { T_STR, 0, "item" }, + { T_STR, 0, "Super Hoop" }, + { T_STR, 0, "quantity" }, + { T_STR, 0, "1" }, + end_node + }; + struct test_node map2[] = { + { T_STR, 0, "item" }, + { T_STR, 0, "Basketball" }, + { T_STR, 0, "quantity" }, + { T_STR, 0, "4" }, + end_node + }; + struct test_node map3[] = { + { T_STR, 0, "item" }, + { T_STR, 0, "Big Shoes" }, + { T_STR, 0, "quantity" }, + { T_STR, 0, "1" }, + end_node + }; + struct test_node seq[] = { + { T_MAP, 0, 0, map1 }, + { T_MAP, 0, 0, map2 }, + { T_MAP, 0, 0, map3 }, + end_node + }; + struct test_node stream[] = { + { T_SEQ, 0, 0, seq }, + end_node + }; + + +--- +test: Literal perserves newlines +todo: true +spec: 2.13 +yaml: | + # ASCII Art + --- | + \//||\/|| + // || ||_ +perl: | + "\\//||\\/||\n// || ||_\n" +ruby: | + "\\//||\\/||\n// || ||_\n" +python: | + [ + flushLeft( + """ + \//||\/|| + // || ||_ + """ + ) + ] +syck: | + struct test_node stream[] = { + { T_STR, 0, "\\//||\\/||\n// || ||_\n" }, + end_node + }; + +--- +test: Folded treats newlines as a space +todo: true +spec: 2.14 +yaml: | + --- + Mark McGwire's + year was crippled + by a knee injury. +perl: | + "Mark McGwire's year was crippled by a knee injury." +ruby: | + "Mark McGwire's year was crippled by a knee injury." +python: | + [ "Mark McGwire's year was crippled by a knee injury." ] +syck: | + struct test_node stream[] = { + { T_STR, 0, "Mark McGwire's year was crippled by a knee injury." }, + end_node + }; + +--- +test: Newlines preserved for indented and blank lines +todo: true +spec: 2.15 +yaml: | + --- > + Sammy Sosa completed another + fine season with great stats. + + 63 Home Runs + 0.288 Batting Average + + What a year! +perl: | + "Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n" +ruby: | + "Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n" +python: | + [ + flushLeft( + """ + Sammy Sosa completed another fine season with great stats. + + 63 Home Runs + 0.288 Batting Average + + What a year! + """ + ) + ] +syck: | + struct test_node stream[] = { + { T_STR, 0, "Sammy Sosa completed another fine season with great stats.\n\n 63 Home Runs\n 0.288 Batting Average\n\nWhat a year!\n" }, + end_node + }; + + +--- +test: Indentation determines scope +spec: 2.16 +yaml: | + name: Mark McGwire + accomplishment: > + Mark set a major league + home run record in 1998. + stats: | + 65 Home Runs + 0.278 Batting Average +php: | + array( + 'name' => 'Mark McGwire', + 'accomplishment' => "Mark set a major league home run record in 1998.\n", + 'stats' => "65 Home Runs\n0.278 Batting Average\n" + ) +--- +test: Quoted scalars +todo: true +spec: 2.17 +yaml: | + unicode: "Sosa did fine.\u263A" + control: "\b1998\t1999\t2000\n" + hexesc: "\x0D\x0A is \r\n" + + single: '"Howdy!" he cried.' + quoted: ' # not a ''comment''.' + tie-fighter: '|\-*-/|' +ruby: | + { + "tie-fighter" => "|\\-*-/|", + "control"=>"\0101998\t1999\t2000\n", + "unicode"=>"Sosa did fine." + ["263A".hex ].pack('U*'), + "quoted"=>" # not a 'comment'.", + "single"=>"\"Howdy!\" he cried.", + "hexesc"=>"\r\n is \r\n" + } +--- +test: Multiline flow scalars +todo: true +spec: 2.18 +yaml: | + plain: + This unquoted scalar + spans many lines. + + quoted: "So does this + quoted scalar.\n" +ruby: | + { + 'plain' => 'This unquoted scalar spans many lines.', + 'quoted' => "So does this quoted scalar.\n" + } +--- +test: Integers +spec: 2.19 +yaml: | + canonical: 12345 + decimal: +12,345 + octal: 014 + hexadecimal: 0xC +php: | + array( + 'canonical' => 12345, + 'decimal' => 12345.0, + 'octal' => 014, + 'hexadecimal' => 0xC + ) +--- +# FIX: spec shows parens around -inf and NaN +test: Floating point +spec: 2.20 +yaml: | + canonical: 1.23015e+3 + exponential: 12.3015e+02 + fixed: 1,230.15 + negative infinity: -.inf + not a number: .NaN + float as whole number: !!float 1 +php: | + array( + 'canonical' => 1230.15, + 'exponential' => 1230.15, + 'fixed' => 1230.15, + 'negative infinity' => log(0), + 'not a number' => -log(0), + 'float as whole number' => (float) 1 + ) +--- +test: Miscellaneous +spec: 2.21 +yaml: | + null: ~ + true: true + false: false + string: '12345' +php: | + array( + '' => null, + 1 => true, + 0 => false, + 'string' => '12345' + ) +--- +test: Timestamps +todo: true +spec: 2.22 +yaml: | + canonical: 2001-12-15T02:59:43.1Z + iso8601: 2001-12-14t21:59:43.10-05:00 + spaced: 2001-12-14 21:59:43.10 -05:00 + date: 2002-12-14 # Time is noon UTC +php: | + array( + 'canonical' => YAML::mktime( 2001, 12, 15, 2, 59, 43, 0.10 ), + 'iso8601' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ), + 'spaced' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ), + 'date' => Date.new( 2002, 12, 14 ) + ) +--- +test: legacy Timestamps test +todo: true +spec: legacy D4 +yaml: | + canonical: 2001-12-15T02:59:43.00Z + iso8601: 2001-02-28t21:59:43.00-05:00 + spaced: 2001-12-14 21:59:43.00 -05:00 + date: 2002-12-14 +php: | + array( + 'canonical' => Time::utc( 2001, 12, 15, 2, 59, 43, 0 ), + 'iso8601' => YAML::mktime( 2001, 2, 28, 21, 59, 43, 0, "-05:00" ), + 'spaced' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0, "-05:00" ), + 'date' => Date.new( 2002, 12, 14 ) + ) +--- +test: Various explicit families +todo: true +spec: 2.23 +yaml: | + not-date: !str 2002-04-28 + picture: !binary | + R0lGODlhDAAMAIQAAP//9/X + 17unp5WZmZgAAAOfn515eXv + Pz7Y6OjuDg4J+fn5OTk6enp + 56enmleECcgggoBADs= + + application specific tag: !!something | + The semantics of the tag + above may be different for + different documents. + +ruby-setup: | + YAML.add_private_type( "something" ) do |type, val| + "SOMETHING: #{val}" + end +ruby: | + { + 'not-date' => '2002-04-28', + 'picture' => "GIF89a\f\000\f\000\204\000\000\377\377\367\365\365\356\351\351\345fff\000\000\000\347\347\347^^^\363\363\355\216\216\216\340\340\340\237\237\237\223\223\223\247\247\247\236\236\236i^\020' \202\n\001\000;", + 'application specific tag' => "SOMETHING: The semantics of the tag\nabove may be different for\ndifferent documents.\n" + } +--- +test: Application specific family +todo: true +spec: 2.24 +yaml: | + # Establish a tag prefix + --- !clarkevans.com,2002/graph/^shape + # Use the prefix: shorthand for + # !clarkevans.com,2002/graph/circle + - !^circle + center: &ORIGIN {x: 73, 'y': 129} + radius: 7 + - !^line # !clarkevans.com,2002/graph/line + start: *ORIGIN + finish: { x: 89, 'y': 102 } + - !^label + start: *ORIGIN + color: 0xFFEEBB + value: Pretty vector drawing. +ruby-setup: | + YAML.add_domain_type( "clarkevans.com,2002", 'graph/shape' ) { |type, val| + if Array === val + val << "Shape Container" + val + else + raise YAML::Error, "Invalid graph of class #{ val.class }: " + val.inspect + end + } + one_shape_proc = Proc.new { |type, val| + scheme, domain, type = type.split( /:/, 3 ) + if val.is_a? ::Hash + val['TYPE'] = "Shape: #{type}" + val + else + raise YAML::Error, "Invalid graph of class #{ val.class }: " + val.inspect + end + } + YAML.add_domain_type( "clarkevans.com,2002", 'graph/circle', &one_shape_proc ) + YAML.add_domain_type( "clarkevans.com,2002", 'graph/line', &one_shape_proc ) + YAML.add_domain_type( "clarkevans.com,2002", 'graph/label', &one_shape_proc ) +ruby: | + [ + { + "radius" => 7, + "center"=> + { + "x" => 73, + "y" => 129 + }, + "TYPE" => "Shape: graph/circle" + }, { + "finish" => + { + "x" => 89, + "y" => 102 + }, + "TYPE" => "Shape: graph/line", + "start" => + { + "x" => 73, + "y" => 129 + } + }, { + "TYPE" => "Shape: graph/label", + "value" => "Pretty vector drawing.", + "start" => + { + "x" => 73, + "y" => 129 + }, + "color" => 16772795 + }, + "Shape Container" + ] +# --- +# test: Unordered set +# spec: 2.25 +# yaml: | +# # sets are represented as a +# # mapping where each key is +# # associated with the empty string +# --- !set +# ? Mark McGwire +# ? Sammy Sosa +# ? Ken Griff +--- +test: Ordered mappings +todo: true +spec: 2.26 +yaml: | + # ordered maps are represented as + # a sequence of mappings, with + # each mapping having one key + --- !omap + - Mark McGwire: 65 + - Sammy Sosa: 63 + - Ken Griffy: 58 +ruby: | + YAML::Omap[ + 'Mark McGwire', 65, + 'Sammy Sosa', 63, + 'Ken Griffy', 58 + ] +--- +test: Invoice +dump_skip: true +spec: 2.27 +yaml: | + --- !clarkevans.com,2002/^invoice + invoice: 34843 + date : 2001-01-23 + bill-to: &id001 + given : Chris + family : Dumars + address: + lines: | + 458 Walkman Dr. + Suite #292 + city : Royal Oak + state : MI + postal : 48046 + ship-to: *id001 + product: + - + sku : BL394D + quantity : 4 + description : Basketball + price : 450.00 + - + sku : BL4438H + quantity : 1 + description : Super Hoop + price : 2392.00 + tax : 251.42 + total: 4443.52 + comments: > + Late afternoon is best. + Backup contact is Nancy + Billsmer @ 338-4338. +php: | + array( + 'invoice' => 34843, 'date' => gmmktime(0, 0, 0, 1, 23, 2001), + 'bill-to' => + array( 'given' => 'Chris', 'family' => 'Dumars', 'address' => array( 'lines' => "458 Walkman Dr.\nSuite #292\n", 'city' => 'Royal Oak', 'state' => 'MI', 'postal' => 48046 ) ) + , 'ship-to' => + array( 'given' => 'Chris', 'family' => 'Dumars', 'address' => array( 'lines' => "458 Walkman Dr.\nSuite #292\n", 'city' => 'Royal Oak', 'state' => 'MI', 'postal' => 48046 ) ) + , 'product' => + array( + array( 'sku' => 'BL394D', 'quantity' => 4, 'description' => 'Basketball', 'price' => 450.00 ), + array( 'sku' => 'BL4438H', 'quantity' => 1, 'description' => 'Super Hoop', 'price' => 2392.00 ) + ), + 'tax' => 251.42, 'total' => 4443.52, + 'comments' => "Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.\n" + ) +--- +test: Log file +todo: true +spec: 2.28 +yaml: | + --- + Time: 2001-11-23 15:01:42 -05:00 + User: ed + Warning: > + This is an error message + for the log file + --- + Time: 2001-11-23 15:02:31 -05:00 + User: ed + Warning: > + A slightly different error + message. + --- + Date: 2001-11-23 15:03:17 -05:00 + User: ed + Fatal: > + Unknown variable "bar" + Stack: + - file: TopClass.py + line: 23 + code: | + x = MoreObject("345\n") + - file: MoreClass.py + line: 58 + code: |- + foo = bar +ruby: | + y = YAML::Stream.new + y.add( { 'Time' => YAML::mktime( 2001, 11, 23, 15, 01, 42, 00, "-05:00" ), + 'User' => 'ed', 'Warning' => "This is an error message for the log file\n" } ) + y.add( { 'Time' => YAML::mktime( 2001, 11, 23, 15, 02, 31, 00, "-05:00" ), + 'User' => 'ed', 'Warning' => "A slightly different error message.\n" } ) + y.add( { 'Date' => YAML::mktime( 2001, 11, 23, 15, 03, 17, 00, "-05:00" ), + 'User' => 'ed', 'Fatal' => "Unknown variable \"bar\"\n", + 'Stack' => [ + { 'file' => 'TopClass.py', 'line' => 23, 'code' => "x = MoreObject(\"345\\n\")\n" }, + { 'file' => 'MoreClass.py', 'line' => 58, 'code' => "foo = bar" } ] } ) +documents: 3 + +--- +test: Throwaway comments +yaml: | + ### These are four throwaway comment ### + + ### lines (the second line is empty). ### + this: | # Comments may trail lines. + contains three lines of text. + The third one starts with a + # character. This isn't a comment. + + # These are three throwaway comment + # lines (the first line is empty). +php: | + array( + 'this' => "contains three lines of text.\nThe third one starts with a\n# character. This isn't a comment.\n" + ) +--- +test: Document with a single value +todo: true +yaml: | + --- > + This YAML stream contains a single text value. + The next stream is a log file - a sequence of + log entries. Adding an entry to the log is a + simple matter of appending it at the end. +ruby: | + "This YAML stream contains a single text value. The next stream is a log file - a sequence of log entries. Adding an entry to the log is a simple matter of appending it at the end.\n" +--- +test: Document stream +todo: true +yaml: | + --- + at: 2001-08-12 09:25:00.00 Z + type: GET + HTTP: '1.0' + url: '/index.html' + --- + at: 2001-08-12 09:25:10.00 Z + type: GET + HTTP: '1.0' + url: '/toc.html' +ruby: | + y = YAML::Stream.new + y.add( { + 'at' => Time::utc( 2001, 8, 12, 9, 25, 00 ), + 'type' => 'GET', + 'HTTP' => '1.0', + 'url' => '/index.html' + } ) + y.add( { + 'at' => Time::utc( 2001, 8, 12, 9, 25, 10 ), + 'type' => 'GET', + 'HTTP' => '1.0', + 'url' => '/toc.html' + } ) +documents: 2 + +--- +test: Top level mapping +yaml: | + # This stream is an example of a top-level mapping. + invoice : 34843 + date : 2001-01-23 + total : 4443.52 +php: | + array( + 'invoice' => 34843, + 'date' => gmmktime(0, 0, 0, 1, 23, 2001), + 'total' => 4443.52 + ) +--- +test: Single-line documents +todo: true +yaml: | + # The following is a sequence of three documents. + # The first contains an empty mapping, the second + # an empty sequence, and the last an empty string. + --- {} + --- [ ] + --- '' +ruby: | + y = YAML::Stream.new + y.add( {} ) + y.add( [] ) + y.add( '' ) +documents: 3 + +--- +test: Document with pause +todo: true +yaml: | + # A communication channel based on a YAML stream. + --- + sent at: 2002-06-06 11:46:25.10 Z + payload: Whatever + # Receiver can process this as soon as the following is sent: + ... + # Even if the next message is sent long after: + --- + sent at: 2002-06-06 12:05:53.47 Z + payload: Whatever + ... +ruby: | + y = YAML::Stream.new + y.add( + { 'sent at' => YAML::mktime( 2002, 6, 6, 11, 46, 25, 0.10 ), + 'payload' => 'Whatever' } + ) + y.add( + { "payload" => "Whatever", "sent at" => YAML::mktime( 2002, 6, 6, 12, 5, 53, 0.47 ) } + ) +documents: 2 + +--- +test: Explicit typing +yaml: | + integer: 12 + also int: ! "12" + string: !str 12 +php: | + array( 'integer' => 12, 'also int' => 12, 'string' => '12' ) +--- +test: Private types +todo: true +yaml: | + # Both examples below make use of the 'x-private:ball' + # type family URI, but with different semantics. + --- + pool: !!ball + number: 8 + color: black + --- + bearing: !!ball + material: steel +ruby: | + y = YAML::Stream.new + y.add( { 'pool' => + YAML::PrivateType.new( 'ball', + { 'number' => 8, 'color' => 'black' } ) } + ) + y.add( { 'bearing' => + YAML::PrivateType.new( 'ball', + { 'material' => 'steel' } ) } + ) +documents: 2 + +--- +test: Type family under yaml.org +yaml: | + # The URI is 'tag:yaml.org,2002:str' + - !str a Unicode string +php: | + array( 'a Unicode string' ) +--- +test: Type family under perl.yaml.org +todo: true +yaml: | + # The URI is 'tag:perl.yaml.org,2002:Text::Tabs' + - !perl/Text::Tabs {} +ruby: | + [ YAML::DomainType.new( 'perl.yaml.org,2002', 'Text::Tabs', {} ) ] +--- +test: Type family under clarkevans.com +todo: true +yaml: | + # The URI is 'tag:clarkevans.com,2003-02:timesheet' + - !clarkevans.com,2003-02/timesheet {} +ruby: | + [ YAML::DomainType.new( 'clarkevans.com,2003-02', 'timesheet', {} ) ] +--- +test: URI Escaping +todo: true +yaml: | + same: + - !domain.tld,2002/type\x30 value + - !domain.tld,2002/type0 value + different: # As far as the YAML parser is concerned + - !domain.tld,2002/type%30 value + - !domain.tld,2002/type0 value +ruby-setup: | + YAML.add_domain_type( "domain.tld,2002", "type0" ) { |type, val| + "ONE: #{val}" + } + YAML.add_domain_type( "domain.tld,2002", "type%30" ) { |type, val| + "TWO: #{val}" + } +ruby: | + { 'same' => [ 'ONE: value', 'ONE: value' ], 'different' => [ 'TWO: value', 'ONE: value' ] } +--- +test: URI Prefixing +todo: true +yaml: | + # 'tag:domain.tld,2002:invoice' is some type family. + invoice: !domain.tld,2002/^invoice + # 'seq' is shorthand for 'tag:yaml.org,2002:seq'. + # This does not effect '^customer' below + # because it is does not specify a prefix. + customers: !seq + # '^customer' is shorthand for the full + # notation 'tag:domain.tld,2002:customer'. + - !^customer + given : Chris + family : Dumars +ruby-setup: | + YAML.add_domain_type( "domain.tld,2002", /(invoice|customer)/ ) { |type, val| + if val.is_a? ::Hash + scheme, domain, type = type.split( /:/, 3 ) + val['type'] = "domain #{type}" + val + else + raise YAML::Error, "Not a Hash in domain.tld/invoice: " + val.inspect + end + } +ruby: | + { "invoice"=> { "customers"=> [ { "given"=>"Chris", "type"=>"domain customer", "family"=>"Dumars" } ], "type"=>"domain invoice" } } + +--- +test: Overriding anchors +yaml: | + anchor : &A001 This scalar has an anchor. + override : &A001 > + The alias node below is a + repeated use of this value. + alias : *A001 +php: | + array( 'anchor' => 'This scalar has an anchor.', + 'override' => "The alias node below is a repeated use of this value.\n", + 'alias' => "The alias node below is a repeated use of this value.\n" ) +--- +test: Flow and block formatting +todo: true +yaml: | + empty: [] + flow: [ one, two, three # May span lines, + , four, # indentation is + five ] # mostly ignored. + block: + - First item in top sequence + - + - Subordinate sequence entry + - > + A folded sequence entry + - Sixth item in top sequence +ruby: | + { 'empty' => [], 'flow' => [ 'one', 'two', 'three', 'four', 'five' ], + 'block' => [ 'First item in top sequence', [ 'Subordinate sequence entry' ], + "A folded sequence entry\n", 'Sixth item in top sequence' ] } +--- +test: Complete mapping test +todo: true +yaml: | + empty: {} + flow: { one: 1, two: 2 } + spanning: { one: 1, + two: 2 } + block: + first : First entry + second: + key: Subordinate mapping + third: + - Subordinate sequence + - { } + - Previous mapping is empty. + - A key: value pair in a sequence. + A second: key:value pair. + - The previous entry is equal to the following one. + - + A key: value pair in a sequence. + A second: key:value pair. + !float 12 : This key is a float. + ? > + ? + : This key had to be protected. + "\a" : This key had to be escaped. + ? > + This is a + multi-line + folded key + : Whose value is + also multi-line. + ? this also works as a key + : with a value at the next line. + ? + - This key + - is a sequence + : + - With a sequence value. + ? + This: key + is a: mapping + : + with a: mapping value. +ruby: | + { 'empty' => {}, 'flow' => { 'one' => 1, 'two' => 2 }, + 'spanning' => { 'one' => 1, 'two' => 2 }, + 'block' => { 'first' => 'First entry', 'second' => + { 'key' => 'Subordinate mapping' }, 'third' => + [ 'Subordinate sequence', {}, 'Previous mapping is empty.', + { 'A key' => 'value pair in a sequence.', 'A second' => 'key:value pair.' }, + 'The previous entry is equal to the following one.', + { 'A key' => 'value pair in a sequence.', 'A second' => 'key:value pair.' } ], + 12.0 => 'This key is a float.', "?\n" => 'This key had to be protected.', + "\a" => 'This key had to be escaped.', + "This is a multi-line folded key\n" => "Whose value is also multi-line.", + 'this also works as a key' => 'with a value at the next line.', + [ 'This key', 'is a sequence' ] => [ 'With a sequence value.' ] } } + # Couldn't recreate map exactly, so we'll do a detailed check to be sure it's entact + obj_y['block'].keys.each { |k| + if Hash === k + v = obj_y['block'][k] + if k['This'] == 'key' and k['is a'] == 'mapping' and v['with a'] == 'mapping value.' + obj_r['block'][k] = v + end + end + } +--- +test: Literal explicit indentation +yaml: | + # Explicit indentation must + # be given in all the three + # following cases. + leading spaces: |2 + This value starts with four spaces. + + leading line break: |2 + + This value starts with a line break. + + leading comment indicator: |2 + # first line starts with a + # character. + + # Explicit indentation may + # also be given when it is + # not required. + redundant: |2 + This value is indented 2 spaces. +php: | + array( + 'leading spaces' => " This value starts with four spaces.\n", + 'leading line break' => "\nThis value starts with a line break.\n", + 'leading comment indicator' => "# first line starts with a\n# character.\n", + 'redundant' => "This value is indented 2 spaces.\n" + ) +--- +test: Chomping and keep modifiers +yaml: | + clipped: | + This has one newline. + + same as "clipped" above: "This has one newline.\n" + + stripped: |- + This has no newline. + + same as "stripped" above: "This has no newline." + + kept: |+ + This has two newlines. + + same as "kept" above: "This has two newlines.\n\n" +php: | + array( + 'clipped' => "This has one newline.\n", + 'same as "clipped" above' => "This has one newline.\n", + 'stripped' => 'This has no newline.', + 'same as "stripped" above' => 'This has no newline.', + 'kept' => "This has two newlines.\n\n", + 'same as "kept" above' => "This has two newlines.\n\n" + ) +--- +test: Literal combinations +todo: true +yaml: | + empty: | + + literal: | + The \ ' " characters may be + freely used. Leading white + space is significant. + + Line breaks are significant. + Thus this value contains one + empty line and ends with a + single line break, but does + not start with one. + + is equal to: "The \\ ' \" characters may \ + be\nfreely used. Leading white\n space \ + is significant.\n\nLine breaks are \ + significant.\nThus this value contains \ + one\nempty line and ends with a\nsingle \ + line break, but does\nnot start with one.\n" + + # Comments may follow a block + # scalar value. They must be + # less indented. + + # Modifiers may be combined in any order. + indented and chomped: |2- + This has no newline. + + also written as: |-2 + This has no newline. + + both are equal to: " This has no newline." +php: | + array( + 'empty' => '', + 'literal' => "The \\ ' \" characters may be\nfreely used. Leading white\n space " + + "is significant.\n\nLine breaks are significant.\nThus this value contains one\n" + + "empty line and ends with a\nsingle line break, but does\nnot start with one.\n", + 'is equal to' => "The \\ ' \" characters may be\nfreely used. Leading white\n space " + + "is significant.\n\nLine breaks are significant.\nThus this value contains one\n" + + "empty line and ends with a\nsingle line break, but does\nnot start with one.\n", + 'indented and chomped' => ' This has no newline.', + 'also written as' => ' This has no newline.', + 'both are equal to' => ' This has no newline.' + ) +--- +test: Folded combinations +todo: true +yaml: | + empty: > + + one paragraph: > + Line feeds are converted + to spaces, so this value + contains no line breaks + except for the final one. + + multiple paragraphs: >2 + + An empty line, either + at the start or in + the value: + + Is interpreted as a + line break. Thus this + value contains three + line breaks. + + indented text: > + This is a folded + paragraph followed + by a list: + * first entry + * second entry + Followed by another + folded paragraph, + another list: + + * first entry + + * second entry + + And a final folded + paragraph. + + above is equal to: | + This is a folded paragraph followed by a list: + * first entry + * second entry + Followed by another folded paragraph, another list: + + * first entry + + * second entry + + And a final folded paragraph. + + # Explicit comments may follow + # but must be less indented. +php: | + array( + 'empty' => '', + 'one paragraph' => 'Line feeds are converted to spaces, so this value'. + " contains no line breaks except for the final one.\n", + 'multiple paragraphs' => "\nAn empty line, either at the start or in the value:\n". + "Is interpreted as a line break. Thus this value contains three line breaks.\n", + 'indented text' => "This is a folded paragraph followed by a list:\n". + " * first entry\n * second entry\nFollowed by another folded paragraph, ". + "another list:\n\n * first entry\n\n * second entry\n\nAnd a final folded paragraph.\n", + 'above is equal to' => "This is a folded paragraph followed by a list:\n". + " * first entry\n * second entry\nFollowed by another folded paragraph, ". + "another list:\n\n * first entry\n\n * second entry\n\nAnd a final folded paragraph.\n" + ) +--- +test: Single quotes +todo: true +yaml: | + empty: '' + second: '! : \ etc. can be used freely.' + third: 'a single quote '' must be escaped.' + span: 'this contains + six spaces + + and one + line break' + is same as: "this contains six spaces\nand one line break" +php: | + array( + 'empty' => '', + 'second' => '! : \\ etc. can be used freely.', + 'third' => "a single quote ' must be escaped.", + 'span' => "this contains six spaces\nand one line break", + 'is same as' => "this contains six spaces\nand one line break" + ) +--- +test: Double quotes +todo: true +yaml: | + empty: "" + second: "! : etc. can be used freely." + third: "a \" or a \\ must be escaped." + fourth: "this value ends with an LF.\n" + span: "this contains + four \ + spaces" + is equal to: "this contains four spaces" +php: | + array( + 'empty' => '', + 'second' => '! : etc. can be used freely.', + 'third' => 'a " or a \\ must be escaped.', + 'fourth' => "this value ends with an LF.\n", + 'span' => "this contains four spaces", + 'is equal to' => "this contains four spaces" + ) +--- +test: Unquoted strings +todo: true +yaml: | + first: There is no unquoted empty string. + + second: 12 ## This is an integer. + + third: !str 12 ## This is a string. + + span: this contains + six spaces + + and one + line break + + indicators: this has no comments. + #:foo and bar# are + both text. + + flow: [ can span + lines, # comment + like + this ] + + note: { one-line keys: but multi-line values } + +php: | + array( + 'first' => 'There is no unquoted empty string.', + 'second' => 12, + 'third' => '12', + 'span' => "this contains six spaces\nand one line break", + 'indicators' => "this has no comments. #:foo and bar# are both text.", + 'flow' => [ 'can span lines', 'like this' ], + 'note' => { 'one-line keys' => 'but multi-line values' } + ) +--- +test: Spanning sequences +todo: true +yaml: | + # The following are equal seqs + # with different identities. + flow: [ one, two ] + spanning: [ one, + two ] + block: + - one + - two +php: | + array( + 'flow' => [ 'one', 'two' ], + 'spanning' => [ 'one', 'two' ], + 'block' => [ 'one', 'two' ] + ) +--- +test: Flow mappings +yaml: | + # The following are equal maps + # with different identities. + flow: { one: 1, two: 2 } + block: + one: 1 + two: 2 +php: | + array( + 'flow' => array( 'one' => 1, 'two' => 2 ), + 'block' => array( 'one' => 1, 'two' => 2 ) + ) +--- +test: Representations of 12 +todo: true +yaml: | + - 12 # An integer + # The following scalars + # are loaded to the + # string value '1' '2'. + - !str 12 + - '12' + - "12" + - "\ + 1\ + 2\ + " + # Strings containing paths and regexps can be unquoted: + - /foo/bar + - d:/foo/bar + - foo/bar + - /a.*b/ +php: | + array( 12, '12', '12', '12', '12', '/foo/bar', 'd:/foo/bar', 'foo/bar', '/a.*b/' ) +--- +test: "Null" +todo: true +yaml: | + canonical: ~ + + english: null + + # This sequence has five + # entries, two with values. + sparse: + - ~ + - 2nd entry + - Null + - 4th entry + - + + four: This mapping has five keys, + only two with values. + +php: | + array ( + 'canonical' => null, + 'english' => null, + 'sparse' => array( null, '2nd entry', null, '4th entry', null ]), + 'four' => 'This mapping has five keys, only two with values.' + ) +--- +test: Omap +todo: true +yaml: | + # Explicitly typed dictionary. + Bestiary: !omap + - aardvark: African pig-like ant eater. Ugly. + - anteater: South-American ant eater. Two species. + - anaconda: South-American constrictor snake. Scary. + # Etc. +ruby: | + { + 'Bestiary' => YAML::Omap[ + 'aardvark', 'African pig-like ant eater. Ugly.', + 'anteater', 'South-American ant eater. Two species.', + 'anaconda', 'South-American constrictor snake. Scary.' + ] + } + +--- +test: Pairs +todo: true +yaml: | + # Explicitly typed pairs. + tasks: !pairs + - meeting: with team. + - meeting: with boss. + - break: lunch. + - meeting: with client. +ruby: | + { + 'tasks' => YAML::Pairs[ + 'meeting', 'with team.', + 'meeting', 'with boss.', + 'break', 'lunch.', + 'meeting', 'with client.' + ] + } + +--- +test: Set +todo: true +yaml: | + # Explicitly typed set. + baseball players: !set + Mark McGwire: + Sammy Sosa: + Ken Griffey: +ruby: | + { + 'baseball players' => YAML::Set[ + 'Mark McGwire', nil, + 'Sammy Sosa', nil, + 'Ken Griffey', nil + ] + } + +--- +test: Boolean +yaml: | + false: used as key + logical: true + answer: false +php: | + array( + false => 'used as key', + 'logical' => true, + 'answer' => false + ) +--- +test: Integer +yaml: | + canonical: 12345 + decimal: +12,345 + octal: 014 + hexadecimal: 0xC +php: | + array( + 'canonical' => 12345, + 'decimal' => 12345.0, + 'octal' => 12, + 'hexadecimal' => 12 + ) +--- +test: Float +yaml: | + canonical: 1.23015e+3 + exponential: 12.3015e+02 + fixed: 1,230.15 + negative infinity: -.inf + not a number: .NaN +php: | + array( + 'canonical' => 1230.15, + 'exponential' => 1230.15, + 'fixed' => 1230.15, + 'negative infinity' => log(0), + 'not a number' => -log(0) + ) +--- +test: Timestamp +todo: true +yaml: | + canonical: 2001-12-15T02:59:43.1Z + valid iso8601: 2001-12-14t21:59:43.10-05:00 + space separated: 2001-12-14 21:59:43.10 -05:00 + date (noon UTC): 2002-12-14 +ruby: | + array( + 'canonical' => YAML::mktime( 2001, 12, 15, 2, 59, 43, 0.10 ), + 'valid iso8601' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ), + 'space separated' => YAML::mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ), + 'date (noon UTC)' => Date.new( 2002, 12, 14 ) + ) +--- +test: Binary +todo: true +yaml: | + canonical: !binary "\ + R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5\ + OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+\ + +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC\ + AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs=" + base64: !binary | + R0lGODlhDAAMAIQAAP//9/X17unp5WZmZgAAAOfn515eXvPz7Y6OjuDg4J+fn5 + OTk6enp56enmlpaWNjY6Ojo4SEhP/++f/++f/++f/++f/++f/++f/++f/++f/+ + +f/++f/++f/++f/++f/++SH+Dk1hZGUgd2l0aCBHSU1QACwAAAAADAAMAAAFLC + AgjoEwnuNAFOhpEMTRiggcz4BNJHrv/zCFcLiwMWYNG84BwwEeECcgggoBADs= + description: > + The binary value above is a tiny arrow + encoded as a gif image. +ruby-setup: | + arrow_gif = "GIF89a\f\000\f\000\204\000\000\377\377\367\365\365\356\351\351\345fff\000\000\000\347\347\347^^^\363\363\355\216\216\216\340\340\340\237\237\237\223\223\223\247\247\247\236\236\236iiiccc\243\243\243\204\204\204\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371\377\376\371!\376\016Made with GIMP\000,\000\000\000\000\f\000\f\000\000\005, \216\2010\236\343@\024\350i\020\304\321\212\010\034\317\200M$z\357\3770\205p\270\2601f\r\e\316\001\303\001\036\020' \202\n\001\000;" +ruby: | + { + 'canonical' => arrow_gif, + 'base64' => arrow_gif, + 'description' => "The binary value above is a tiny arrow encoded as a gif image.\n" + } + +--- +test: Merge key +todo: true +yaml: | + --- + - &CENTER { x: 1, y: 2 } + - &LEFT { x: 0, y: 2 } + - &BIG { r: 10 } + - &SMALL { r: 1 } + + # All the following maps are equal: + + - # Explicit keys + x: 1 + y: 2 + r: 10 + label: center/big + + - # Merge one map + << : *CENTER + r: 10 + label: center/big + + - # Merge multiple maps + << : [ *CENTER, *BIG ] + label: center/big + + - # Override + << : [ *BIG, *LEFT, *SMALL ] + x: 1 + label: center/big + +ruby-setup: | + center = { 'x' => 1, 'y' => 2 } + left = { 'x' => 0, 'y' => 2 } + big = { 'r' => 10 } + small = { 'r' => 1 } + node1 = { 'x' => 1, 'y' => 2, 'r' => 10, 'label' => 'center/big' } + node2 = center.dup + node2.update( { 'r' => 10, 'label' => 'center/big' } ) + node3 = big.dup + node3.update( center ) + node3.update( { 'label' => 'center/big' } ) + node4 = small.dup + node4.update( left ) + node4.update( big ) + node4.update( { 'x' => 1, 'label' => 'center/big' } ) + +ruby: | + [ + center, left, big, small, node1, node2, node3, node4 + ] + +--- +test: Default key +todo: true +yaml: | + --- # Old schema + link with: + - library1.dll + - library2.dll + --- # New schema + link with: + - = : library1.dll + version: 1.2 + - = : library2.dll + version: 2.3 +ruby: | + y = YAML::Stream.new + y.add( { 'link with' => [ 'library1.dll', 'library2.dll' ] } ) + obj_h = Hash[ 'version' => 1.2 ] + obj_h.default = 'library1.dll' + obj_h2 = Hash[ 'version' => 2.3 ] + obj_h2.default = 'library2.dll' + y.add( { 'link with' => [ obj_h, obj_h2 ] } ) +documents: 2 + +--- +test: Special keys +todo: true +yaml: | + "!": These three keys + "&": had to be quoted + "=": and are normal strings. + # NOTE: the following node should NOT be serialized this way. + encoded node : + !special '!' : '!type' + !special|canonical '&' : 12 + = : value + # The proper way to serialize the above node is as follows: + node : !!type &12 value +ruby: | + { '!' => 'These three keys', '&' => 'had to be quoted', + '=' => 'and are normal strings.', + 'encoded node' => YAML::PrivateType.new( 'type', 'value' ), + 'node' => YAML::PrivateType.new( 'type', 'value' ) } diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/YtsTypeTransfers.yml b/system/vendor/symfony/yaml/Tests/Fixtures/YtsTypeTransfers.yml new file mode 100644 index 0000000..46c8d4a --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/YtsTypeTransfers.yml @@ -0,0 +1,244 @@ +--- %YAML:1.0 +test: Strings +brief: > + Any group of characters beginning with an + alphabetic or numeric character is a string, + unless it belongs to one of the groups below + (such as an Integer or Time). +yaml: | + String +php: | + 'String' +--- +test: String characters +brief: > + A string can contain any alphabetic or + numeric character, along with many + punctuation characters, including the + period, dash, space, quotes, exclamation, and + question mark. +yaml: | + - What's Yaml? + - It's for writing data structures in plain text. + - And? + - And what? That's not good enough for you? + - No, I mean, "And what about Yaml?" + - Oh, oh yeah. Uh.. Yaml for Ruby. +php: | + array( + "What's Yaml?", + "It's for writing data structures in plain text.", + "And?", + "And what? That's not good enough for you?", + "No, I mean, \"And what about Yaml?\"", + "Oh, oh yeah. Uh.. Yaml for Ruby." + ) +--- +test: Indicators in Strings +brief: > + Be careful using indicators in strings. In particular, + the comma, colon, and pound sign must be used carefully. +yaml: | + the colon followed by space is an indicator: but is a string:right here + same for the pound sign: here we have it#in a string + the comma can, honestly, be used in most cases: [ but not in, inline collections ] +php: | + array( + 'the colon followed by space is an indicator' => 'but is a string:right here', + 'same for the pound sign' => 'here we have it#in a string', + 'the comma can, honestly, be used in most cases' => array('but not in', 'inline collections') + ) +--- +test: Forcing Strings +brief: > + Any YAML type can be forced into a string using the + explicit !str method. +yaml: | + date string: !str 2001-08-01 + number string: !str 192 +php: | + array( + 'date string' => '2001-08-01', + 'number string' => '192' + ) +--- +test: Single-quoted Strings +brief: > + You can also enclose your strings within single quotes, + which allows use of slashes, colons, and other indicators + freely. Inside single quotes, you can represent a single + quote in your string by using two single quotes next to + each other. +yaml: | + all my favorite symbols: '#:!/%.)' + a few i hate: '&(*' + why do i hate them?: 'it''s very hard to explain' + entities: '£ me' +php: | + array( + 'all my favorite symbols' => '#:!/%.)', + 'a few i hate' => '&(*', + 'why do i hate them?' => 'it\'s very hard to explain', + 'entities' => '£ me' + ) +--- +test: Double-quoted Strings +brief: > + Enclosing strings in double quotes allows you + to use escapings to represent ASCII and + Unicode characters. +yaml: | + i know where i want my line breaks: "one here\nand another here\n" +php: | + array( + 'i know where i want my line breaks' => "one here\nand another here\n" + ) +--- +test: Multi-line Quoted Strings +todo: true +brief: > + Both single- and double-quoted strings may be + carried on to new lines in your YAML document. + They must be indented a step and indentation + is interpreted as a single space. +yaml: | + i want a long string: "so i'm going to + let it go on and on to other lines + until i end it with a quote." +php: | + array('i want a long string' => "so i'm going to ". + "let it go on and on to other lines ". + "until i end it with a quote." + ) + +--- +test: Plain scalars +todo: true +brief: > + Unquoted strings may also span multiple lines, if they + are free of YAML space indicators and indented. +yaml: | + - My little toe is broken in two places; + - I'm crazy to have skied this way; + - I'm not the craziest he's seen, since there was always the German guy + who skied for 3 hours on a broken shin bone (just below the kneecap); + - Nevertheless, second place is respectable, and he doesn't + recommend going for the record; + - He's going to put my foot in plaster for a month; + - This would impair my skiing ability somewhat for the + duration, as can be imagined. +php: | + array( + "My little toe is broken in two places;", + "I'm crazy to have skied this way;", + "I'm not the craziest he's seen, since there was always ". + "the German guy who skied for 3 hours on a broken shin ". + "bone (just below the kneecap);", + "Nevertheless, second place is respectable, and he doesn't ". + "recommend going for the record;", + "He's going to put my foot in plaster for a month;", + "This would impair my skiing ability somewhat for the duration, ". + "as can be imagined." + ) +--- +test: 'Null' +brief: > + You can use the tilde '~' character for a null value. +yaml: | + name: Mr. Show + hosted by: Bob and David + date of next season: ~ +php: | + array( + 'name' => 'Mr. Show', + 'hosted by' => 'Bob and David', + 'date of next season' => null + ) +--- +test: Boolean +brief: > + You can use 'true' and 'false' for Boolean values. +yaml: | + Is Gus a Liar?: true + Do I rely on Gus for Sustenance?: false +php: | + array( + 'Is Gus a Liar?' => true, + 'Do I rely on Gus for Sustenance?' => false + ) +--- +test: Integers +dump_skip: true +brief: > + An integer is a series of numbers, optionally + starting with a positive or negative sign. Integers + may also contain commas for readability. +yaml: | + zero: 0 + simple: 12 + one-thousand: 1,000 + negative one-thousand: -1,000 +php: | + array( + 'zero' => 0, + 'simple' => 12, + 'one-thousand' => 1000.0, + 'negative one-thousand' => -1000.0 + ) +--- +test: Integers as Map Keys +brief: > + An integer can be used a dictionary key. +yaml: | + 1: one + 2: two + 3: three +php: | + array( + 1 => 'one', + 2 => 'two', + 3 => 'three' + ) +--- +test: Floats +dump_skip: true +brief: > + Floats are represented by numbers with decimals, + allowing for scientific notation, as well as + positive and negative infinity and "not a number." +yaml: | + a simple float: 2.00 + larger float: 1,000.09 + scientific notation: 1.00009e+3 +php: | + array( + 'a simple float' => 2.0, + 'larger float' => 1000.09, + 'scientific notation' => 1000.09 + ) +--- +test: Time +todo: true +brief: > + You can represent timestamps by using + ISO8601 format, or a variation which + allows spaces between the date, time and + time zone. +yaml: | + iso8601: 2001-12-14t21:59:43.10-05:00 + space separated: 2001-12-14 21:59:43.10 -05:00 +php: | + array( + 'iso8601' => mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ), + 'space separated' => mktime( 2001, 12, 14, 21, 59, 43, 0.10, "-05:00" ) + ) +--- +test: Date +todo: true +brief: > + A date can be represented by its year, + month and day in ISO8601 order. +yaml: | + 1976-07-31 +php: | + date( 1976, 7, 31 ) diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/embededPhp.yml b/system/vendor/symfony/yaml/Tests/Fixtures/embededPhp.yml new file mode 100644 index 0000000..ec456ed --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/embededPhp.yml @@ -0,0 +1 @@ +value: diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/escapedCharacters.yml b/system/vendor/symfony/yaml/Tests/Fixtures/escapedCharacters.yml new file mode 100644 index 0000000..6ca044c --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/escapedCharacters.yml @@ -0,0 +1,155 @@ +test: outside double quotes +yaml: | + \0 \ \a \b \n +php: | + "\\0 \\ \\a \\b \\n" +--- +test: null +yaml: | + "\0" +php: | + "\x00" +--- +test: bell +yaml: | + "\a" +php: | + "\x07" +--- +test: backspace +yaml: | + "\b" +php: | + "\x08" +--- +test: horizontal tab (1) +yaml: | + "\t" +php: | + "\x09" +--- +test: horizontal tab (2) +yaml: | + "\ " +php: | + "\x09" +--- +test: line feed +yaml: | + "\n" +php: | + "\x0a" +--- +test: vertical tab +yaml: | + "\v" +php: | + "\x0b" +--- +test: form feed +yaml: | + "\f" +php: | + "\x0c" +--- +test: carriage return +yaml: | + "\r" +php: | + "\x0d" +--- +test: escape +yaml: | + "\e" +php: | + "\x1b" +--- +test: space +yaml: | + "\ " +php: | + "\x20" +--- +test: slash +yaml: | + "\/" +php: | + "\x2f" +--- +test: backslash +yaml: | + "\\" +php: | + "\\" +--- +test: Unicode next line +yaml: | + "\N" +php: | + "\xc2\x85" +--- +test: Unicode non-breaking space +yaml: | + "\_" +php: | + "\xc2\xa0" +--- +test: Unicode line separator +yaml: | + "\L" +php: | + "\xe2\x80\xa8" +--- +test: Unicode paragraph separator +yaml: | + "\P" +php: | + "\xe2\x80\xa9" +--- +test: Escaped 8-bit Unicode +yaml: | + "\x42" +php: | + "B" +--- +test: Escaped 16-bit Unicode +yaml: | + "\u20ac" +php: | + "\xe2\x82\xac" +--- +test: Escaped 32-bit Unicode +yaml: | + "\U00000043" +php: | + "C" +--- +test: Example 5.13 Escaped Characters +note: | + Currently throws an error parsing first line. Maybe Symfony Yaml doesn't support + continuation of string across multiple lines? Keeping test here but disabled. +todo: true +yaml: | + "Fun with \\ + \" \a \b \e \f \ + \n \r \t \v \0 \ + \ \_ \N \L \P \ + \x41 \u0041 \U00000041" +php: | + "Fun with \x5C\n\x22 \x07 \x08 \x1B \x0C\n\x0A \x0D \x09 \x0B \x00\n\x20 \xA0 \x85 \xe2\x80\xa8 \xe2\x80\xa9\nA A A" +--- +test: Double quotes with a line feed +yaml: | + { double: "some value\n \"some quoted string\" and 'some single quotes one'" } +php: | + array( + 'double' => "some value\n \"some quoted string\" and 'some single quotes one'" + ) +--- +test: Backslashes +yaml: | + { single: 'foo\Var', no-quotes: foo\Var, double: "foo\\Var" } +php: | + array( + 'single' => 'foo\Var', 'no-quotes' => 'foo\Var', 'double' => 'foo\Var' + ) diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/index.yml b/system/vendor/symfony/yaml/Tests/Fixtures/index.yml new file mode 100644 index 0000000..3216a89 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/index.yml @@ -0,0 +1,18 @@ +- escapedCharacters +- sfComments +- sfCompact +- sfTests +- sfObjects +- sfMergeKey +- sfQuotes +- YtsAnchorAlias +- YtsBasicTests +- YtsBlockMapping +- YtsDocumentSeparator +- YtsErrorTests +- YtsFlowCollections +- YtsFoldedScalars +- YtsNullsAndEmpties +- YtsSpecificationExamples +- YtsTypeTransfers +- unindentedCollections diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/sfComments.yml b/system/vendor/symfony/yaml/Tests/Fixtures/sfComments.yml new file mode 100644 index 0000000..b72a9b6 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/sfComments.yml @@ -0,0 +1,76 @@ +--- %YAML:1.0 +test: Comments at the end of a line +brief: > + Comments at the end of a line +yaml: | + ex1: "foo # bar" + ex2: "foo # bar" # comment + ex3: 'foo # bar' # comment + ex4: foo # comment + ex5: foo # comment with tab before + ex6: foo#foo # comment here + ex7: foo # ignore me # and me +php: | + array('ex1' => 'foo # bar', 'ex2' => 'foo # bar', 'ex3' => 'foo # bar', 'ex4' => 'foo', 'ex5' => 'foo', 'ex6' => 'foo#foo', 'ex7' => 'foo') +--- +test: Comments in the middle +brief: > + Comments in the middle +yaml: | + foo: + # some comment + # some comment + bar: foo + # some comment + # some comment +php: | + array('foo' => array('bar' => 'foo')) +--- +test: Comments on a hash line +brief: > + Comments on a hash line +yaml: | + foo: # a comment + foo: bar # a comment +php: | + array('foo' => array('foo' => 'bar')) +--- +test: 'Value starting with a #' +brief: > + 'Value starting with a #' +yaml: | + foo: '#bar' +php: | + array('foo' => '#bar') +--- +test: Document starting with a comment and a separator +brief: > + Commenting before document start is allowed +yaml: | + # document comment + --- + foo: bar # a comment +php: | + array('foo' => 'bar') +--- +test: Comment containing a colon on a hash line +brief: > + Comment containing a colon on a scalar line +yaml: 'foo # comment: this is also part of the comment' +php: | + 'foo' +--- +test: 'Hash key containing a #' +brief: > + 'Hash key containing a #' +yaml: 'foo#bar: baz' +php: | + array('foo#bar' => 'baz') +--- +test: 'Hash key ending with a space and a #' +brief: > + 'Hash key ending with a space and a #' +yaml: | + 'foo #': baz +php: | + array('foo #' => 'baz') diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/sfCompact.yml b/system/vendor/symfony/yaml/Tests/Fixtures/sfCompact.yml new file mode 100644 index 0000000..1339d23 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/sfCompact.yml @@ -0,0 +1,159 @@ +--- %YAML:1.0 +test: Compact notation +brief: | + Compact notation for sets of mappings with single element +yaml: | + --- + # products purchased + - item : Super Hoop + - item : Basketball + quantity: 1 + - item: + name: Big Shoes + nick: Biggies + quantity: 1 +php: | + array ( + array ( + 'item' => 'Super Hoop', + ), + array ( + 'item' => 'Basketball', + 'quantity' => 1, + ), + array ( + 'item' => array( + 'name' => 'Big Shoes', + 'nick' => 'Biggies' + ), + 'quantity' => 1 + ) + ) +--- +test: Compact notation combined with inline notation +brief: | + Combinations of compact and inline notation are allowed +yaml: | + --- + items: + - { item: Super Hoop, quantity: 1 } + - [ Basketball, Big Shoes ] +php: | + array ( + 'items' => array ( + array ( + 'item' => 'Super Hoop', + 'quantity' => 1, + ), + array ( + 'Basketball', + 'Big Shoes' + ) + ) + ) +--- %YAML:1.0 +test: Compact notation +brief: | + Compact notation for sets of mappings with single element +yaml: | + --- + # products purchased + - item : Super Hoop + - item : Basketball + quantity: 1 + - item: + name: Big Shoes + nick: Biggies + quantity: 1 +php: | + array ( + array ( + 'item' => 'Super Hoop', + ), + array ( + 'item' => 'Basketball', + 'quantity' => 1, + ), + array ( + 'item' => array( + 'name' => 'Big Shoes', + 'nick' => 'Biggies' + ), + 'quantity' => 1 + ) + ) +--- +test: Compact notation combined with inline notation +brief: | + Combinations of compact and inline notation are allowed +yaml: | + --- + items: + - { item: Super Hoop, quantity: 1 } + - [ Basketball, Big Shoes ] +php: | + array ( + 'items' => array ( + array ( + 'item' => 'Super Hoop', + 'quantity' => 1, + ), + array ( + 'Basketball', + 'Big Shoes' + ) + ) + ) +--- %YAML:1.0 +test: Compact notation +brief: | + Compact notation for sets of mappings with single element +yaml: | + --- + # products purchased + - item : Super Hoop + - item : Basketball + quantity: 1 + - item: + name: Big Shoes + nick: Biggies + quantity: 1 +php: | + array ( + array ( + 'item' => 'Super Hoop', + ), + array ( + 'item' => 'Basketball', + 'quantity' => 1, + ), + array ( + 'item' => array( + 'name' => 'Big Shoes', + 'nick' => 'Biggies' + ), + 'quantity' => 1 + ) + ) +--- +test: Compact notation combined with inline notation +brief: | + Combinations of compact and inline notation are allowed +yaml: | + --- + items: + - { item: Super Hoop, quantity: 1 } + - [ Basketball, Big Shoes ] +php: | + array ( + 'items' => array ( + array ( + 'item' => 'Super Hoop', + 'quantity' => 1, + ), + array ( + 'Basketball', + 'Big Shoes' + ) + ) + ) diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/sfMergeKey.yml b/system/vendor/symfony/yaml/Tests/Fixtures/sfMergeKey.yml new file mode 100644 index 0000000..59f6125 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/sfMergeKey.yml @@ -0,0 +1,60 @@ +--- %YAML:1.0 +test: Simple In Place Substitution +brief: > + If you want to reuse an entire alias, only overwriting what is different + you can use a << in place substitution. This is not part of the official + YAML spec, but a widely implemented extension. See the following URL for + details: http://yaml.org/type/merge.html +yaml: | + foo: &foo + a: Steve + b: Clark + c: Brian + e: notnull + bar: + a: before + d: other + e: ~ + <<: *foo + b: new + x: Oren + c: + foo: bar + foo: ignore + bar: foo + duplicate: + foo: bar + foo: ignore + foo2: &foo2 + a: Ballmer + ding: &dong [ fi, fei, fo, fam] + check: + <<: + - *foo + - *dong + isit: tested + head: + <<: [ *foo , *dong , *foo2 ] + taz: &taz + a: Steve + w: + p: 1234 + nested: + <<: *taz + d: Doug + w: &nestedref + p: 12345 + z: + <<: *nestedref +php: | + array( + 'foo' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull'), + 'bar' => array('a' => 'before', 'd' => 'other', 'e' => null, 'b' => 'new', 'c' => array('foo' => 'bar', 'bar' => 'foo'), 'x' => 'Oren'), + 'duplicate' => array('foo' => 'bar'), + 'foo2' => array('a' => 'Ballmer'), + 'ding' => array('fi', 'fei', 'fo', 'fam'), + 'check' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull', 'fi', 'fei', 'fo', 'fam', 'isit' => 'tested'), + 'head' => array('a' => 'Steve', 'b' => 'Clark', 'c' => 'Brian', 'e' => 'notnull', 'fi', 'fei', 'fo', 'fam'), + 'taz' => array('a' => 'Steve', 'w' => array('p' => 1234)), + 'nested' => array('a' => 'Steve', 'w' => array('p' => 12345), 'd' => 'Doug', 'z' => array('p' => 12345)) + ) diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/sfObjects.yml b/system/vendor/symfony/yaml/Tests/Fixtures/sfObjects.yml new file mode 100644 index 0000000..ee124b2 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/sfObjects.yml @@ -0,0 +1,11 @@ +--- %YAML:1.0 +test: Objects +brief: > + Comments at the end of a line +yaml: | + ex1: "foo # bar" + ex2: "foo # bar" # comment + ex3: 'foo # bar' # comment + ex4: foo # comment +php: | + array('ex1' => 'foo # bar', 'ex2' => 'foo # bar', 'ex3' => 'foo # bar', 'ex4' => 'foo') diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/sfQuotes.yml b/system/vendor/symfony/yaml/Tests/Fixtures/sfQuotes.yml new file mode 100644 index 0000000..7c60bae --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/sfQuotes.yml @@ -0,0 +1,33 @@ +--- %YAML:1.0 +test: Some characters at the beginning of a string must be escaped +brief: > + Some characters at the beginning of a string must be escaped +yaml: | + foo: '| bar' +php: | + array('foo' => '| bar') +--- +test: A key can be a quoted string +brief: > + A key can be a quoted string +yaml: | + "foo1": bar + 'foo2': bar + "foo \" bar": bar + 'foo '' bar': bar + 'foo3: ': bar + "foo4: ": bar + foo5: { "foo \" bar: ": bar, 'foo '' bar: ': bar } +php: | + array( + 'foo1' => 'bar', + 'foo2' => 'bar', + 'foo " bar' => 'bar', + 'foo \' bar' => 'bar', + 'foo3: ' => 'bar', + 'foo4: ' => 'bar', + 'foo5' => array( + 'foo " bar: ' => 'bar', + 'foo \' bar: ' => 'bar', + ), + ) diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/sfTests.yml b/system/vendor/symfony/yaml/Tests/Fixtures/sfTests.yml new file mode 100644 index 0000000..a427be1 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/sfTests.yml @@ -0,0 +1,149 @@ +--- %YAML:1.0 +test: Multiple quoted string on one line +brief: > + Multiple quoted string on one line +yaml: | + stripped_title: { name: "foo bar", help: "bar foo" } +php: | + array('stripped_title' => array('name' => 'foo bar', 'help' => 'bar foo')) +--- +test: Empty sequence +yaml: | + foo: [ ] +php: | + array('foo' => array()) +--- +test: Empty value +yaml: | + foo: +php: | + array('foo' => null) +--- +test: Inline string parsing +brief: > + Inline string parsing +yaml: | + test: ['complex: string', 'another [string]'] +php: | + array('test' => array('complex: string', 'another [string]')) +--- +test: Boolean +brief: > + Boolean +yaml: | + - false + - true + - null + - ~ + - 'false' + - 'true' + - 'null' + - '~' +php: | + array( + false, + true, + null, + null, + 'false', + 'true', + 'null', + '~', + ) +--- +test: Empty lines in literal blocks +brief: > + Empty lines in literal blocks +yaml: | + foo: + bar: | + foo + + + + bar +php: | + array('foo' => array('bar' => "foo\n\n\n \nbar\n")) +--- +test: Empty lines in folded blocks +brief: > + Empty lines in folded blocks +yaml: | + foo: + bar: > + + foo + + + bar +php: | + array('foo' => array('bar' => "\nfoo\n\nbar\n")) +--- +test: IP addresses +brief: > + IP addresses +yaml: | + foo: 10.0.0.2 +php: | + array('foo' => '10.0.0.2') +--- +test: A sequence with an embedded mapping +brief: > + A sequence with an embedded mapping +yaml: | + - foo + - bar: { bar: foo } +php: | + array('foo', array('bar' => array('bar' => 'foo'))) +--- +test: A sequence with an unordered array +brief: > + A sequence with an unordered array +yaml: | + 1: foo + 0: bar +php: | + array(1 => 'foo', 0 => 'bar') +--- +test: Octal +brief: as in spec example 2.19, octal value is converted +yaml: | + foo: 0123 +php: | + array('foo' => 83) +--- +test: Octal strings +brief: Octal notation in a string must remain a string +yaml: | + foo: "0123" +php: | + array('foo' => '0123') +--- +test: Octal strings +brief: Octal notation in a string must remain a string +yaml: | + foo: '0123' +php: | + array('foo' => '0123') +--- +test: Octal strings +brief: Octal notation in a string must remain a string +yaml: | + foo: | + 0123 +php: | + array('foo' => "0123\n") +--- +test: Document as a simple hash +brief: Document as a simple hash +yaml: | + { foo: bar } +php: | + array('foo' => 'bar') +--- +test: Document as a simple array +brief: Document as a simple array +yaml: | + [ foo, bar ] +php: | + array('foo', 'bar') diff --git a/system/vendor/symfony/yaml/Tests/Fixtures/unindentedCollections.yml b/system/vendor/symfony/yaml/Tests/Fixtures/unindentedCollections.yml new file mode 100644 index 0000000..0c96108 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/Fixtures/unindentedCollections.yml @@ -0,0 +1,82 @@ +--- %YAML:1.0 +test: Unindented collection +brief: > + Unindented collection +yaml: | + collection: + - item1 + - item2 + - item3 +php: | + array('collection' => array('item1', 'item2', 'item3')) +--- +test: Nested unindented collection (two levels) +brief: > + Nested unindented collection +yaml: | + collection: + key: + - a + - b + - c +php: | + array('collection' => array('key' => array('a', 'b', 'c'))) +--- +test: Nested unindented collection (three levels) +brief: > + Nested unindented collection +yaml: | + collection: + key: + subkey: + - one + - two + - three +php: | + array('collection' => array('key' => array('subkey' => array('one', 'two', 'three')))) +--- +test: Key/value after unindented collection (1) +brief: > + Key/value after unindented collection (1) +yaml: | + collection: + key: + - a + - b + - c + foo: bar +php: | + array('collection' => array('key' => array('a', 'b', 'c')), 'foo' => 'bar') +--- +test: Key/value after unindented collection (at the same level) +brief: > + Key/value after unindented collection +yaml: | + collection: + key: + - a + - b + - c + foo: bar +php: | + array('collection' => array('key' => array('a', 'b', 'c'), 'foo' => 'bar')) +--- +test: Shortcut Key after unindented collection +brief: > + Key/value after unindented collection +yaml: | + collection: + - key: foo + foo: bar +php: | + array('collection' => array(array('key' => 'foo', 'foo' => 'bar'))) +--- +test: Shortcut Key after unindented collection with custom spaces +brief: > + Key/value after unindented collection +yaml: | + collection: + - key: foo + foo: bar +php: | + array('collection' => array(array('key' => 'foo', 'foo' => 'bar'))) diff --git a/system/vendor/symfony/yaml/Tests/InlineTest.php b/system/vendor/symfony/yaml/Tests/InlineTest.php new file mode 100644 index 0000000..e17df06 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/InlineTest.php @@ -0,0 +1,482 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Tests; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\Yaml\Inline; + +class InlineTest extends TestCase +{ + /** + * @dataProvider getTestsForParse + */ + public function testParse($yaml, $value) + { + $this->assertSame($value, Inline::parse($yaml), sprintf('::parse() converts an inline YAML to a PHP structure (%s)', $yaml)); + } + + /** + * @dataProvider getTestsForParseWithMapObjects + */ + public function testParseWithMapObjects($yaml, $value) + { + $actual = Inline::parse($yaml, false, false, true); + + $this->assertSame(serialize($value), serialize($actual)); + } + + /** + * @dataProvider getTestsForDump + */ + public function testDump($yaml, $value) + { + $this->assertEquals($yaml, Inline::dump($value), sprintf('::dump() converts a PHP structure to an inline YAML (%s)', $yaml)); + + $this->assertSame($value, Inline::parse(Inline::dump($value)), 'check consistency'); + } + + public function testDumpNumericValueWithLocale() + { + $locale = setlocale(LC_NUMERIC, 0); + if (false === $locale) { + $this->markTestSkipped('Your platform does not support locales.'); + } + + try { + $requiredLocales = array('fr_FR.UTF-8', 'fr_FR.UTF8', 'fr_FR.utf-8', 'fr_FR.utf8', 'French_France.1252'); + if (false === setlocale(LC_NUMERIC, $requiredLocales)) { + $this->markTestSkipped('Could not set any of required locales: '.implode(', ', $requiredLocales)); + } + + $this->assertEquals('1.2', Inline::dump(1.2)); + $this->assertContains('fr', strtolower(setlocale(LC_NUMERIC, 0))); + setlocale(LC_NUMERIC, $locale); + } catch (\Exception $e) { + setlocale(LC_NUMERIC, $locale); + throw $e; + } + } + + public function testHashStringsResemblingExponentialNumericsShouldNotBeChangedToINF() + { + $value = '686e444'; + + $this->assertSame($value, Inline::parse(Inline::dump($value))); + } + + /** + * @group legacy + * throws \Symfony\Component\Yaml\Exception\ParseException in 3.0 + */ + public function testParseScalarWithNonEscapedBlackslashShouldThrowException() + { + $this->assertSame('Foo\Var', Inline::parse('"Foo\Var"')); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testParseScalarWithNonEscapedBlackslashAtTheEndShouldThrowException() + { + Inline::parse('"Foo\\"'); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testParseScalarWithIncorrectlyQuotedStringShouldThrowException() + { + $value = "'don't do somthin' like that'"; + Inline::parse($value); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testParseScalarWithIncorrectlyDoubleQuotedStringShouldThrowException() + { + $value = '"don"t do somthin" like that"'; + Inline::parse($value); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testParseInvalidMappingKeyShouldThrowException() + { + $value = '{ "foo " bar": "bar" }'; + Inline::parse($value); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testParseInvalidMappingShouldThrowException() + { + Inline::parse('[foo] bar'); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testParseInvalidSequenceShouldThrowException() + { + Inline::parse('{ foo: bar } bar'); + } + + public function testParseScalarWithCorrectlyQuotedStringShouldReturnString() + { + $value = "'don''t do somthin'' like that'"; + $expect = "don't do somthin' like that"; + + $this->assertSame($expect, Inline::parseScalar($value)); + } + + /** + * @dataProvider getDataForParseReferences + */ + public function testParseReferences($yaml, $expected) + { + $this->assertSame($expected, Inline::parse($yaml, false, false, false, array('var' => 'var-value'))); + } + + public function getDataForParseReferences() + { + return array( + 'scalar' => array('*var', 'var-value'), + 'list' => array('[ *var ]', array('var-value')), + 'list-in-list' => array('[[ *var ]]', array(array('var-value'))), + 'map-in-list' => array('[ { key: *var } ]', array(array('key' => 'var-value'))), + 'embedded-mapping-in-list' => array('[ key: *var ]', array(array('key' => 'var-value'))), + 'map' => array('{ key: *var }', array('key' => 'var-value')), + 'list-in-map' => array('{ key: [*var] }', array('key' => array('var-value'))), + 'map-in-map' => array('{ foo: { bar: *var } }', array('foo' => array('bar' => 'var-value'))), + ); + } + + public function testParseMapReferenceInSequence() + { + $foo = array( + 'a' => 'Steve', + 'b' => 'Clark', + 'c' => 'Brian', + ); + $this->assertSame(array($foo), Inline::parse('[*foo]', false, false, false, array('foo' => $foo))); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + * @expectedExceptionMessage A reference must contain at least one character. + */ + public function testParseUnquotedAsterisk() + { + Inline::parse('{ foo: * }'); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + * @expectedExceptionMessage A reference must contain at least one character. + */ + public function testParseUnquotedAsteriskFollowedByAComment() + { + Inline::parse('{ foo: * #foo }'); + } + + /** + * @group legacy + * @dataProvider getReservedIndicators + * throws \Symfony\Component\Yaml\Exception\ParseException in 3.0 + */ + public function testParseUnquotedScalarStartingWithReservedIndicator($indicator) + { + Inline::parse(sprintf('{ foo: %sfoo }', $indicator)); + } + + public function getReservedIndicators() + { + return array(array('@'), array('`')); + } + + /** + * @group legacy + * @dataProvider getScalarIndicators + * throws \Symfony\Component\Yaml\Exception\ParseException in 3.0 + */ + public function testParseUnquotedScalarStartingWithScalarIndicator($indicator) + { + Inline::parse(sprintf('{ foo: %sfoo }', $indicator)); + } + + public function getScalarIndicators() + { + return array(array('|'), array('>')); + } + + /** + * @dataProvider getDataForIsHash + */ + public function testIsHash($array, $expected) + { + $this->assertSame($expected, Inline::isHash($array)); + } + + public function getDataForIsHash() + { + return array( + array(array(), false), + array(array(1, 2, 3), false), + array(array(2 => 1, 1 => 2, 0 => 3), true), + array(array('foo' => 1, 'bar' => 2), true), + ); + } + + public function getTestsForParse() + { + return array( + array('', ''), + array('null', null), + array('false', false), + array('true', true), + array('12', 12), + array('-12', -12), + array('"quoted string"', 'quoted string'), + array("'quoted string'", 'quoted string'), + array('12.30e+02', 12.30e+02), + array('0x4D2', 0x4D2), + array('02333', 02333), + array('.Inf', -log(0)), + array('-.Inf', log(0)), + array("'686e444'", '686e444'), + array('686e444', 646e444), + array('123456789123456789123456789123456789', '123456789123456789123456789123456789'), + array('"foo\r\nbar"', "foo\r\nbar"), + array("'foo#bar'", 'foo#bar'), + array("'foo # bar'", 'foo # bar'), + array("'#cfcfcf'", '#cfcfcf'), + array('::form_base.html.twig', '::form_base.html.twig'), + + // Pre-YAML-1.2 booleans + array("'y'", 'y'), + array("'n'", 'n'), + array("'yes'", 'yes'), + array("'no'", 'no'), + array("'on'", 'on'), + array("'off'", 'off'), + + array('2007-10-30', gmmktime(0, 0, 0, 10, 30, 2007)), + array('2007-10-30T02:59:43Z', gmmktime(2, 59, 43, 10, 30, 2007)), + array('2007-10-30 02:59:43 Z', gmmktime(2, 59, 43, 10, 30, 2007)), + array('1960-10-30 02:59:43 Z', gmmktime(2, 59, 43, 10, 30, 1960)), + array('1730-10-30T02:59:43Z', gmmktime(2, 59, 43, 10, 30, 1730)), + + array('"a \\"string\\" with \'quoted strings inside\'"', 'a "string" with \'quoted strings inside\''), + array("'a \"string\" with ''quoted strings inside'''", 'a "string" with \'quoted strings inside\''), + + // sequences + // urls are no key value mapping. see #3609. Valid yaml "key: value" mappings require a space after the colon + array('[foo, http://urls.are/no/mappings, false, null, 12]', array('foo', 'http://urls.are/no/mappings', false, null, 12)), + array('[ foo , bar , false , null , 12 ]', array('foo', 'bar', false, null, 12)), + array('[\'foo,bar\', \'foo bar\']', array('foo,bar', 'foo bar')), + + // mappings + array('{foo:bar,bar:foo,false:false,null:null,integer:12}', array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)), + array('{ foo : bar, bar : foo, false : false, null : null, integer : 12 }', array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)), + array('{foo: \'bar\', bar: \'foo: bar\'}', array('foo' => 'bar', 'bar' => 'foo: bar')), + array('{\'foo\': \'bar\', "bar": \'foo: bar\'}', array('foo' => 'bar', 'bar' => 'foo: bar')), + array('{\'foo\'\'\': \'bar\', "bar\"": \'foo: bar\'}', array('foo\'' => 'bar', 'bar"' => 'foo: bar')), + array('{\'foo: \': \'bar\', "bar: ": \'foo: bar\'}', array('foo: ' => 'bar', 'bar: ' => 'foo: bar')), + + // nested sequences and mappings + array('[foo, [bar, foo]]', array('foo', array('bar', 'foo'))), + array('[foo, {bar: foo}]', array('foo', array('bar' => 'foo'))), + array('{ foo: {bar: foo} }', array('foo' => array('bar' => 'foo'))), + array('{ foo: [bar, foo] }', array('foo' => array('bar', 'foo'))), + + array('[ foo, [ bar, foo ] ]', array('foo', array('bar', 'foo'))), + + array('[{ foo: {bar: foo} }]', array(array('foo' => array('bar' => 'foo')))), + + array('[foo, [bar, [foo, [bar, foo]], foo]]', array('foo', array('bar', array('foo', array('bar', 'foo')), 'foo'))), + + array('[foo, {bar: foo, foo: [foo, {bar: foo}]}, [foo, {bar: foo}]]', array('foo', array('bar' => 'foo', 'foo' => array('foo', array('bar' => 'foo'))), array('foo', array('bar' => 'foo')))), + + array('[foo, bar: { foo: bar }]', array('foo', '1' => array('bar' => array('foo' => 'bar')))), + array('[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']', array('foo', '@foo.baz', array('%foo%' => 'foo is %foo%', 'bar' => '%foo%'), true, '@service_container')), + ); + } + + public function getTestsForParseWithMapObjects() + { + return array( + array('', ''), + array('null', null), + array('false', false), + array('true', true), + array('12', 12), + array('-12', -12), + array('"quoted string"', 'quoted string'), + array("'quoted string'", 'quoted string'), + array('12.30e+02', 12.30e+02), + array('0x4D2', 0x4D2), + array('02333', 02333), + array('.Inf', -log(0)), + array('-.Inf', log(0)), + array("'686e444'", '686e444'), + array('686e444', 646e444), + array('123456789123456789123456789123456789', '123456789123456789123456789123456789'), + array('"foo\r\nbar"', "foo\r\nbar"), + array("'foo#bar'", 'foo#bar'), + array("'foo # bar'", 'foo # bar'), + array("'#cfcfcf'", '#cfcfcf'), + array('::form_base.html.twig', '::form_base.html.twig'), + + array('2007-10-30', gmmktime(0, 0, 0, 10, 30, 2007)), + array('2007-10-30T02:59:43Z', gmmktime(2, 59, 43, 10, 30, 2007)), + array('2007-10-30 02:59:43 Z', gmmktime(2, 59, 43, 10, 30, 2007)), + array('1960-10-30 02:59:43 Z', gmmktime(2, 59, 43, 10, 30, 1960)), + array('1730-10-30T02:59:43Z', gmmktime(2, 59, 43, 10, 30, 1730)), + + array('"a \\"string\\" with \'quoted strings inside\'"', 'a "string" with \'quoted strings inside\''), + array("'a \"string\" with ''quoted strings inside'''", 'a "string" with \'quoted strings inside\''), + + // sequences + // urls are no key value mapping. see #3609. Valid yaml "key: value" mappings require a space after the colon + array('[foo, http://urls.are/no/mappings, false, null, 12]', array('foo', 'http://urls.are/no/mappings', false, null, 12)), + array('[ foo , bar , false , null , 12 ]', array('foo', 'bar', false, null, 12)), + array('[\'foo,bar\', \'foo bar\']', array('foo,bar', 'foo bar')), + + // mappings + array('{foo:bar,bar:foo,false:false,null:null,integer:12}', (object) array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)), + array('{ foo : bar, bar : foo, false : false, null : null, integer : 12 }', (object) array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)), + array('{foo: \'bar\', bar: \'foo: bar\'}', (object) array('foo' => 'bar', 'bar' => 'foo: bar')), + array('{\'foo\': \'bar\', "bar": \'foo: bar\'}', (object) array('foo' => 'bar', 'bar' => 'foo: bar')), + array('{\'foo\'\'\': \'bar\', "bar\"": \'foo: bar\'}', (object) array('foo\'' => 'bar', 'bar"' => 'foo: bar')), + array('{\'foo: \': \'bar\', "bar: ": \'foo: bar\'}', (object) array('foo: ' => 'bar', 'bar: ' => 'foo: bar')), + + // nested sequences and mappings + array('[foo, [bar, foo]]', array('foo', array('bar', 'foo'))), + array('[foo, {bar: foo}]', array('foo', (object) array('bar' => 'foo'))), + array('{ foo: {bar: foo} }', (object) array('foo' => (object) array('bar' => 'foo'))), + array('{ foo: [bar, foo] }', (object) array('foo' => array('bar', 'foo'))), + + array('[ foo, [ bar, foo ] ]', array('foo', array('bar', 'foo'))), + + array('[{ foo: {bar: foo} }]', array((object) array('foo' => (object) array('bar' => 'foo')))), + + array('[foo, [bar, [foo, [bar, foo]], foo]]', array('foo', array('bar', array('foo', array('bar', 'foo')), 'foo'))), + + array('[foo, {bar: foo, foo: [foo, {bar: foo}]}, [foo, {bar: foo}]]', array('foo', (object) array('bar' => 'foo', 'foo' => array('foo', (object) array('bar' => 'foo'))), array('foo', (object) array('bar' => 'foo')))), + + array('[foo, bar: { foo: bar }]', array('foo', '1' => (object) array('bar' => (object) array('foo' => 'bar')))), + array('[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']', array('foo', '@foo.baz', (object) array('%foo%' => 'foo is %foo%', 'bar' => '%foo%'), true, '@service_container')), + + array('{}', new \stdClass()), + array('{ foo : bar, bar : {} }', (object) array('foo' => 'bar', 'bar' => new \stdClass())), + array('{ foo : [], bar : {} }', (object) array('foo' => array(), 'bar' => new \stdClass())), + array('{foo: \'bar\', bar: {} }', (object) array('foo' => 'bar', 'bar' => new \stdClass())), + array('{\'foo\': \'bar\', "bar": {}}', (object) array('foo' => 'bar', 'bar' => new \stdClass())), + array('{\'foo\': \'bar\', "bar": \'{}\'}', (object) array('foo' => 'bar', 'bar' => '{}')), + + array('[foo, [{}, {}]]', array('foo', array(new \stdClass(), new \stdClass()))), + array('[foo, [[], {}]]', array('foo', array(array(), new \stdClass()))), + array('[foo, [[{}, {}], {}]]', array('foo', array(array(new \stdClass(), new \stdClass()), new \stdClass()))), + array('[foo, {bar: {}}]', array('foo', '1' => (object) array('bar' => new \stdClass()))), + ); + } + + public function getTestsForDump() + { + return array( + array('null', null), + array('false', false), + array('true', true), + array('12', 12), + array("'quoted string'", 'quoted string'), + array('!!float 1230', 12.30e+02), + array('1234', 0x4D2), + array('1243', 02333), + array('.Inf', -log(0)), + array('-.Inf', log(0)), + array("'686e444'", '686e444'), + array('"foo\r\nbar"', "foo\r\nbar"), + array("'foo#bar'", 'foo#bar'), + array("'foo # bar'", 'foo # bar'), + array("'#cfcfcf'", '#cfcfcf'), + + array("'a \"string\" with ''quoted strings inside'''", 'a "string" with \'quoted strings inside\''), + + array("'-dash'", '-dash'), + array("'-'", '-'), + + // Pre-YAML-1.2 booleans + array("'y'", 'y'), + array("'n'", 'n'), + array("'yes'", 'yes'), + array("'no'", 'no'), + array("'on'", 'on'), + array("'off'", 'off'), + + // sequences + array('[foo, bar, false, null, 12]', array('foo', 'bar', false, null, 12)), + array('[\'foo,bar\', \'foo bar\']', array('foo,bar', 'foo bar')), + + // mappings + array('{ foo: bar, bar: foo, \'false\': false, \'null\': null, integer: 12 }', array('foo' => 'bar', 'bar' => 'foo', 'false' => false, 'null' => null, 'integer' => 12)), + array('{ foo: bar, bar: \'foo: bar\' }', array('foo' => 'bar', 'bar' => 'foo: bar')), + + // nested sequences and mappings + array('[foo, [bar, foo]]', array('foo', array('bar', 'foo'))), + + array('[foo, [bar, [foo, [bar, foo]], foo]]', array('foo', array('bar', array('foo', array('bar', 'foo')), 'foo'))), + + array('{ foo: { bar: foo } }', array('foo' => array('bar' => 'foo'))), + + array('[foo, { bar: foo }]', array('foo', array('bar' => 'foo'))), + + array('[foo, { bar: foo, foo: [foo, { bar: foo }] }, [foo, { bar: foo }]]', array('foo', array('bar' => 'foo', 'foo' => array('foo', array('bar' => 'foo'))), array('foo', array('bar' => 'foo')))), + + array('[foo, \'@foo.baz\', { \'%foo%\': \'foo is %foo%\', bar: \'%foo%\' }, true, \'@service_container\']', array('foo', '@foo.baz', array('%foo%' => 'foo is %foo%', 'bar' => '%foo%'), true, '@service_container')), + + array('{ foo: { bar: { 1: 2, baz: 3 } } }', array('foo' => array('bar' => array(1 => 2, 'baz' => 3)))), + ); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + * @expectedExceptionMessage Malformed inline YAML string: {this, is not, supported}. + */ + public function testNotSupportedMissingValue() + { + Inline::parse('{this, is not, supported}'); + } + + public function testVeryLongQuotedStrings() + { + $longStringWithQuotes = str_repeat("x\r\n\\\"x\"x", 1000); + + $yamlString = Inline::dump(array('longStringWithQuotes' => $longStringWithQuotes)); + $arrayFromYaml = Inline::parse($yamlString); + + $this->assertEquals($longStringWithQuotes, $arrayFromYaml['longStringWithQuotes']); + } + + public function testBooleanMappingKeysAreConvertedToStrings() + { + $this->assertSame(array('false' => 'foo'), Inline::parse('{false: foo}')); + $this->assertSame(array('true' => 'foo'), Inline::parse('{true: foo}')); + } + + public function testTheEmptyStringIsAValidMappingKey() + { + $this->assertSame(array('' => 'foo'), Inline::parse('{ "": foo }')); + } +} diff --git a/system/vendor/symfony/yaml/Tests/ParseExceptionTest.php b/system/vendor/symfony/yaml/Tests/ParseExceptionTest.php new file mode 100644 index 0000000..4f01ab9 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/ParseExceptionTest.php @@ -0,0 +1,42 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Tests; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\Yaml\Exception\ParseException; + +class ParseExceptionTest extends TestCase +{ + public function testGetMessage() + { + $exception = new ParseException('Error message', 42, 'foo: bar', '/var/www/app/config.yml'); + if (PHP_VERSION_ID >= 50400) { + $message = 'Error message in "/var/www/app/config.yml" at line 42 (near "foo: bar")'; + } else { + $message = 'Error message in "\\/var\\/www\\/app\\/config.yml" at line 42 (near "foo: bar")'; + } + + $this->assertEquals($message, $exception->getMessage()); + } + + public function testGetMessageWithUnicodeInFilename() + { + $exception = new ParseException('Error message', 42, 'foo: bar', 'äöü.yml'); + if (PHP_VERSION_ID >= 50400) { + $message = 'Error message in "äöü.yml" at line 42 (near "foo: bar")'; + } else { + $message = 'Error message in "\u00e4\u00f6\u00fc.yml" at line 42 (near "foo: bar")'; + } + + $this->assertEquals($message, $exception->getMessage()); + } +} diff --git a/system/vendor/symfony/yaml/Tests/ParserTest.php b/system/vendor/symfony/yaml/Tests/ParserTest.php new file mode 100644 index 0000000..97f0323 --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/ParserTest.php @@ -0,0 +1,1239 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Tests; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\Yaml\Yaml; +use Symfony\Component\Yaml\Parser; + +class ParserTest extends TestCase +{ + /** @var Parser */ + protected $parser; + + protected function setUp() + { + $this->parser = new Parser(); + } + + protected function tearDown() + { + $this->parser = null; + } + + /** + * @dataProvider getDataFormSpecifications + */ + public function testSpecifications($file, $expected, $yaml, $comment) + { + $this->assertEquals($expected, var_export($this->parser->parse($yaml), true), $comment); + } + + public function getDataFormSpecifications() + { + $parser = new Parser(); + $path = __DIR__.'/Fixtures'; + + $tests = array(); + $files = $parser->parse(file_get_contents($path.'/index.yml')); + foreach ($files as $file) { + $yamls = file_get_contents($path.'/'.$file.'.yml'); + + // split YAMLs documents + foreach (preg_split('/^---( %YAML\:1\.0)?/m', $yamls) as $yaml) { + if (!$yaml) { + continue; + } + + $test = $parser->parse($yaml); + if (isset($test['todo']) && $test['todo']) { + // TODO + } else { + eval('$expected = '.trim($test['php']).';'); + + $tests[] = array($file, var_export($expected, true), $test['yaml'], $test['test']); + } + } + } + + return $tests; + } + + public function testTabsInYaml() + { + // test tabs in YAML + $yamls = array( + "foo:\n bar", + "foo:\n bar", + "foo:\n bar", + "foo:\n bar", + ); + + foreach ($yamls as $yaml) { + try { + $content = $this->parser->parse($yaml); + + $this->fail('YAML files must not contain tabs'); + } catch (\Exception $e) { + $this->assertInstanceOf('\Exception', $e, 'YAML files must not contain tabs'); + $this->assertEquals('A YAML file cannot contain tabs as indentation at line 2 (near "'.strpbrk($yaml, "\t").'").', $e->getMessage(), 'YAML files must not contain tabs'); + } + } + } + + public function testEndOfTheDocumentMarker() + { + $yaml = <<<'EOF' +--- %YAML:1.0 +foo +... +EOF; + + $this->assertEquals('foo', $this->parser->parse($yaml)); + } + + public function getBlockChompingTests() + { + $tests = array(); + + $yaml = <<<'EOF' +foo: |- + one + two +bar: |- + one + two + +EOF; + $expected = array( + 'foo' => "one\ntwo", + 'bar' => "one\ntwo", + ); + $tests['Literal block chomping strip with single trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: |- + one + two + +bar: |- + one + two + + +EOF; + $expected = array( + 'foo' => "one\ntwo", + 'bar' => "one\ntwo", + ); + $tests['Literal block chomping strip with multiple trailing newlines'] = array($expected, $yaml); + + $yaml = <<<'EOF' +{} + + +EOF; + $expected = array(); + $tests['Literal block chomping strip with multiple trailing newlines after a 1-liner'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: |- + one + two +bar: |- + one + two +EOF; + $expected = array( + 'foo' => "one\ntwo", + 'bar' => "one\ntwo", + ); + $tests['Literal block chomping strip without trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: | + one + two +bar: | + one + two + +EOF; + $expected = array( + 'foo' => "one\ntwo\n", + 'bar' => "one\ntwo\n", + ); + $tests['Literal block chomping clip with single trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: | + one + two + +bar: | + one + two + + +EOF; + $expected = array( + 'foo' => "one\ntwo\n", + 'bar' => "one\ntwo\n", + ); + $tests['Literal block chomping clip with multiple trailing newlines'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: +- bar: | + one + + two +EOF; + $expected = array( + 'foo' => array( + array( + 'bar' => "one\n\ntwo", + ), + ), + ); + $tests['Literal block chomping clip with embedded blank line inside unindented collection'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: | + one + two +bar: | + one + two +EOF; + $expected = array( + 'foo' => "one\ntwo\n", + 'bar' => "one\ntwo", + ); + $tests['Literal block chomping clip without trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: |+ + one + two +bar: |+ + one + two + +EOF; + $expected = array( + 'foo' => "one\ntwo\n", + 'bar' => "one\ntwo\n", + ); + $tests['Literal block chomping keep with single trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: |+ + one + two + +bar: |+ + one + two + + +EOF; + $expected = array( + 'foo' => "one\ntwo\n\n", + 'bar' => "one\ntwo\n\n", + ); + $tests['Literal block chomping keep with multiple trailing newlines'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: |+ + one + two +bar: |+ + one + two +EOF; + $expected = array( + 'foo' => "one\ntwo\n", + 'bar' => "one\ntwo", + ); + $tests['Literal block chomping keep without trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: >- + one + two +bar: >- + one + two + +EOF; + $expected = array( + 'foo' => 'one two', + 'bar' => 'one two', + ); + $tests['Folded block chomping strip with single trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: >- + one + two + +bar: >- + one + two + + +EOF; + $expected = array( + 'foo' => 'one two', + 'bar' => 'one two', + ); + $tests['Folded block chomping strip with multiple trailing newlines'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: >- + one + two +bar: >- + one + two +EOF; + $expected = array( + 'foo' => 'one two', + 'bar' => 'one two', + ); + $tests['Folded block chomping strip without trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: > + one + two +bar: > + one + two + +EOF; + $expected = array( + 'foo' => "one two\n", + 'bar' => "one two\n", + ); + $tests['Folded block chomping clip with single trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: > + one + two + +bar: > + one + two + + +EOF; + $expected = array( + 'foo' => "one two\n", + 'bar' => "one two\n", + ); + $tests['Folded block chomping clip with multiple trailing newlines'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: > + one + two +bar: > + one + two +EOF; + $expected = array( + 'foo' => "one two\n", + 'bar' => 'one two', + ); + $tests['Folded block chomping clip without trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: >+ + one + two +bar: >+ + one + two + +EOF; + $expected = array( + 'foo' => "one two\n", + 'bar' => "one two\n", + ); + $tests['Folded block chomping keep with single trailing newline'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: >+ + one + two + +bar: >+ + one + two + + +EOF; + $expected = array( + 'foo' => "one two\n\n", + 'bar' => "one two\n\n", + ); + $tests['Folded block chomping keep with multiple trailing newlines'] = array($expected, $yaml); + + $yaml = <<<'EOF' +foo: >+ + one + two +bar: >+ + one + two +EOF; + $expected = array( + 'foo' => "one two\n", + 'bar' => 'one two', + ); + $tests['Folded block chomping keep without trailing newline'] = array($expected, $yaml); + + return $tests; + } + + /** + * @dataProvider getBlockChompingTests + */ + public function testBlockChomping($expected, $yaml) + { + $this->assertSame($expected, $this->parser->parse($yaml)); + } + + /** + * Regression test for issue #7989. + * + * @see https://github.com/symfony/symfony/issues/7989 + */ + public function testBlockLiteralWithLeadingNewlines() + { + $yaml = <<<'EOF' +foo: |- + + + bar + +EOF; + $expected = array( + 'foo' => "\n\nbar", + ); + + $this->assertSame($expected, $this->parser->parse($yaml)); + } + + public function testObjectSupportEnabled() + { + $input = <<<'EOF' +foo: !!php/object:O:30:"Symfony\Component\Yaml\Tests\B":1:{s:1:"b";s:3:"foo";} +bar: 1 +EOF; + $this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, false, true), '->parse() is able to parse objects'); + + $input = <<<'EOF' +foo: !php/object:O:30:"Symfony\Component\Yaml\Tests\B":1:{s:1:"b";s:3:"foo";} +bar: 1 +EOF; + $this->assertEquals(array('foo' => new B(), 'bar' => 1), $this->parser->parse($input, false, true), '->parse() is able to parse objects'); + } + + /** + * @dataProvider invalidDumpedObjectProvider + */ + public function testObjectSupportDisabledButNoExceptions($input) + { + $this->assertEquals(array('foo' => null, 'bar' => 1), $this->parser->parse($input), '->parse() does not parse objects'); + } + + /** + * @dataProvider getObjectForMapTests + */ + public function testObjectForMap($yaml, $expected) + { + $this->assertEquals($expected, $this->parser->parse($yaml, false, false, true)); + } + + public function getObjectForMapTests() + { + $tests = array(); + + $yaml = <<<'EOF' +foo: + fiz: [cat] +EOF; + $expected = new \stdClass(); + $expected->foo = new \stdClass(); + $expected->foo->fiz = array('cat'); + $tests['mapping'] = array($yaml, $expected); + + $yaml = '{ "foo": "bar", "fiz": "cat" }'; + $expected = new \stdClass(); + $expected->foo = 'bar'; + $expected->fiz = 'cat'; + $tests['inline-mapping'] = array($yaml, $expected); + + $yaml = "foo: bar\nbaz: foobar"; + $expected = new \stdClass(); + $expected->foo = 'bar'; + $expected->baz = 'foobar'; + $tests['object-for-map-is-applied-after-parsing'] = array($yaml, $expected); + + $yaml = <<<'EOT' +array: + - key: one + - key: two +EOT; + $expected = new \stdClass(); + $expected->array = array(); + $expected->array[0] = new \stdClass(); + $expected->array[0]->key = 'one'; + $expected->array[1] = new \stdClass(); + $expected->array[1]->key = 'two'; + $tests['nest-map-and-sequence'] = array($yaml, $expected); + + $yaml = <<<'YAML' +map: + 1: one + 2: two +YAML; + $expected = new \stdClass(); + $expected->map = new \stdClass(); + $expected->map->{1} = 'one'; + $expected->map->{2} = 'two'; + $tests['numeric-keys'] = array($yaml, $expected); + + $yaml = <<<'YAML' +map: + 0: one + 1: two +YAML; + $expected = new \stdClass(); + $expected->map = new \stdClass(); + $expected->map->{0} = 'one'; + $expected->map->{1} = 'two'; + $tests['zero-indexed-numeric-keys'] = array($yaml, $expected); + + return $tests; + } + + /** + * @dataProvider invalidDumpedObjectProvider + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testObjectsSupportDisabledWithExceptions($yaml) + { + $this->parser->parse($yaml, true, false); + } + + public function invalidDumpedObjectProvider() + { + $yamlTag = <<<'EOF' +foo: !!php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";} +bar: 1 +EOF; + $localTag = <<<'EOF' +foo: !php/object:O:30:"Symfony\Tests\Component\Yaml\B":1:{s:1:"b";s:3:"foo";} +bar: 1 +EOF; + + return array( + 'yaml-tag' => array($yamlTag), + 'local-tag' => array($localTag), + ); + } + + /** + * @requires extension iconv + */ + public function testNonUtf8Exception() + { + $yamls = array( + iconv('UTF-8', 'ISO-8859-1', "foo: 'äöüß'"), + iconv('UTF-8', 'ISO-8859-15', "euro: '€'"), + iconv('UTF-8', 'CP1252', "cp1252: '©ÉÇáñ'"), + ); + + foreach ($yamls as $yaml) { + try { + $this->parser->parse($yaml); + + $this->fail('charsets other than UTF-8 are rejected.'); + } catch (\Exception $e) { + $this->assertInstanceOf('Symfony\Component\Yaml\Exception\ParseException', $e, 'charsets other than UTF-8 are rejected.'); + } + } + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testUnindentedCollectionException() + { + $yaml = <<<'EOF' + +collection: +-item1 +-item2 +-item3 + +EOF; + + $this->parser->parse($yaml); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testShortcutKeyUnindentedCollectionException() + { + $yaml = <<<'EOF' + +collection: +- key: foo + foo: bar + +EOF; + + $this->parser->parse($yaml); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + * @expectedExceptionMessageRegExp /^Multiple documents are not supported.+/ + */ + public function testMultipleDocumentsNotSupportedException() + { + Yaml::parse(<<<'EOL' +# Ranking of 1998 home runs +--- +- Mark McGwire +- Sammy Sosa +- Ken Griffey + +# Team ranking +--- +- Chicago Cubs +- St Louis Cardinals +EOL + ); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testSequenceInAMapping() + { + Yaml::parse(<<<'EOF' +yaml: + hash: me + - array stuff +EOF + ); + } + + public function testSequenceInMappingStartedBySingleDashLine() + { + $yaml = <<<'EOT' +a: +- + b: + - + bar: baz +- foo +d: e +EOT; + $expected = array( + 'a' => array( + array( + 'b' => array( + array( + 'bar' => 'baz', + ), + ), + ), + 'foo', + ), + 'd' => 'e', + ); + + $this->assertSame($expected, $this->parser->parse($yaml)); + } + + public function testSequenceFollowedByCommentEmbeddedInMapping() + { + $yaml = <<<'EOT' +a: + b: + - c +# comment + d: e +EOT; + $expected = array( + 'a' => array( + 'b' => array('c'), + 'd' => 'e', + ), + ); + + $this->assertSame($expected, $this->parser->parse($yaml)); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + */ + public function testMappingInASequence() + { + Yaml::parse(<<<'EOF' +yaml: + - array stuff + hash: me +EOF + ); + } + + /** + * @expectedException \Symfony\Component\Yaml\Exception\ParseException + * @expectedExceptionMessage missing colon + */ + public function testScalarInSequence() + { + Yaml::parse(<<<'EOF' +foo: + - bar +"missing colon" + foo: bar +EOF + ); + } + + /** + * > It is an error for two equal keys to appear in the same mapping node. + * > In such a case the YAML processor may continue, ignoring the second + * > `key: value` pair and issuing an appropriate warning. This strategy + * > preserves a consistent information model for one-pass and random access + * > applications. + * + * @see http://yaml.org/spec/1.2/spec.html#id2759572 + * @see http://yaml.org/spec/1.1/#id932806 + */ + public function testMappingDuplicateKeyBlock() + { + $input = <<<'EOD' +parent: + child: first + child: duplicate +parent: + child: duplicate + child: duplicate +EOD; + $expected = array( + 'parent' => array( + 'child' => 'first', + ), + ); + $this->assertSame($expected, Yaml::parse($input)); + } + + public function testMappingDuplicateKeyFlow() + { + $input = <<<'EOD' +parent: { child: first, child: duplicate } +parent: { child: duplicate, child: duplicate } +EOD; + $expected = array( + 'parent' => array( + 'child' => 'first', + ), + ); + $this->assertSame($expected, Yaml::parse($input)); + } + + public function testEmptyValue() + { + $input = <<<'EOF' +hash: +EOF; + + $this->assertEquals(array('hash' => null), Yaml::parse($input)); + } + + public function testCommentAtTheRootIndent() + { + $this->assertEquals(array( + 'services' => array( + 'app.foo_service' => array( + 'class' => 'Foo', + ), + 'app/bar_service' => array( + 'class' => 'Bar', + ), + ), + ), Yaml::parse(<<<'EOF' +# comment 1 +services: +# comment 2 + # comment 3 + app.foo_service: + class: Foo +# comment 4 + # comment 5 + app/bar_service: + class: Bar +EOF + )); + } + + public function testStringBlockWithComments() + { + $this->assertEquals(array('content' => <<<'EOT' +# comment 1 +header + + # comment 2 + +

    title

    + + +footer # comment3 +EOT + ), Yaml::parse(<<<'EOF' +content: | + # comment 1 + header + + # comment 2 + +

    title

    + + + footer # comment3 +EOF + )); + } + + public function testFoldedStringBlockWithComments() + { + $this->assertEquals(array(array('content' => <<<'EOT' +# comment 1 +header + + # comment 2 + +

    title

    + + +footer # comment3 +EOT + )), Yaml::parse(<<<'EOF' +- + content: | + # comment 1 + header + + # comment 2 + +

    title

    + + + footer # comment3 +EOF + )); + } + + public function testNestedFoldedStringBlockWithComments() + { + $this->assertEquals(array(array( + 'title' => 'some title', + 'content' => <<<'EOT' +# comment 1 +header + + # comment 2 + +

    title

    + + +footer # comment3 +EOT + )), Yaml::parse(<<<'EOF' +- + title: some title + content: | + # comment 1 + header + + # comment 2 + +

    title

    + + + footer # comment3 +EOF + )); + } + + public function testReferenceResolvingInInlineStrings() + { + $this->assertEquals(array( + 'var' => 'var-value', + 'scalar' => 'var-value', + 'list' => array('var-value'), + 'list_in_list' => array(array('var-value')), + 'map_in_list' => array(array('key' => 'var-value')), + 'embedded_mapping' => array(array('key' => 'var-value')), + 'map' => array('key' => 'var-value'), + 'list_in_map' => array('key' => array('var-value')), + 'map_in_map' => array('foo' => array('bar' => 'var-value')), + ), Yaml::parse(<<<'EOF' +var: &var var-value +scalar: *var +list: [ *var ] +list_in_list: [[ *var ]] +map_in_list: [ { key: *var } ] +embedded_mapping: [ key: *var ] +map: { key: *var } +list_in_map: { key: [*var] } +map_in_map: { foo: { bar: *var } } +EOF + )); + } + + public function testYamlDirective() + { + $yaml = <<<'EOF' +%YAML 1.2 +--- +foo: 1 +bar: 2 +EOF; + $this->assertEquals(array('foo' => 1, 'bar' => 2), $this->parser->parse($yaml)); + } + + public function testFloatKeys() + { + $yaml = <<<'EOF' +foo: + 1.2: "bar" + 1.3: "baz" +EOF; + + $expected = array( + 'foo' => array( + '1.2' => 'bar', + '1.3' => 'baz', + ), + ); + + $this->assertEquals($expected, $this->parser->parse($yaml)); + } + + /** + * @group legacy + * @expectedDeprecation Using a colon in the unquoted mapping value "bar: baz" in line 1 is deprecated since Symfony 2.8 and will throw a ParseException in 3.0. + * throw ParseException in Symfony 3.0 + */ + public function testColonInMappingValueException() + { + $yaml = <<<'EOF' +foo: bar: baz +EOF; + + $this->parser->parse($yaml); + } + + public function testColonInMappingValueExceptionNotTriggeredByColonInComment() + { + $yaml = <<<'EOT' +foo: + bar: foobar # Note: a comment after a colon +EOT; + + $this->assertSame(array('foo' => array('bar' => 'foobar')), $this->parser->parse($yaml)); + } + + /** + * @dataProvider getCommentLikeStringInScalarBlockData + */ + public function testCommentLikeStringsAreNotStrippedInBlockScalars($yaml, $expectedParserResult) + { + $this->assertSame($expectedParserResult, $this->parser->parse($yaml)); + } + + public function getCommentLikeStringInScalarBlockData() + { + $tests = array(); + + $yaml = <<<'EOT' +pages: + - + title: some title + content: | + # comment 1 + header + + # comment 2 + +

    title

    + + + footer # comment3 +EOT; + $expected = array( + 'pages' => array( + array( + 'title' => 'some title', + 'content' => <<<'EOT' +# comment 1 +header + + # comment 2 + +

    title

    + + +footer # comment3 +EOT + , + ), + ), + ); + $tests[] = array($yaml, $expected); + + $yaml = <<<'EOT' +test: | + foo + # bar + baz +collection: + - one: | + foo + # bar + baz + - two: | + foo + # bar + baz +EOT; + $expected = array( + 'test' => <<<'EOT' +foo +# bar +baz + +EOT + , + 'collection' => array( + array( + 'one' => <<<'EOT' +foo +# bar +baz + +EOT + , + ), + array( + 'two' => <<<'EOT' +foo +# bar +baz +EOT + , + ), + ), + ); + $tests[] = array($yaml, $expected); + + $yaml = <<<'EOT' +foo: + bar: + scalar-block: > + line1 + line2> + baz: +# comment + foobar: ~ +EOT; + $expected = array( + 'foo' => array( + 'bar' => array( + 'scalar-block' => "line1 line2>\n", + ), + 'baz' => array( + 'foobar' => null, + ), + ), + ); + $tests[] = array($yaml, $expected); + + $yaml = <<<'EOT' +a: + b: hello +# c: | +# first row +# second row + d: hello +EOT; + $expected = array( + 'a' => array( + 'b' => 'hello', + 'd' => 'hello', + ), + ); + $tests[] = array($yaml, $expected); + + return $tests; + } + + public function testBlankLinesAreParsedAsNewLinesInFoldedBlocks() + { + $yaml = <<<'EOT' +test: > +

    A heading

    + +
      +
    • a list
    • +
    • may be a good example
    • +
    +EOT; + + $this->assertSame( + array( + 'test' => <<<'EOT' +

    A heading

    +
    • a list
    • may be a good example
    +EOT + , + ), + $this->parser->parse($yaml) + ); + } + + public function testAdditionallyIndentedLinesAreParsedAsNewLinesInFoldedBlocks() + { + $yaml = <<<'EOT' +test: > +

    A heading

    + +
      +
    • a list
    • +
    • may be a good example
    • +
    +EOT; + + $this->assertSame( + array( + 'test' => <<<'EOT' +

    A heading

    +
      +
    • a list
    • +
    • may be a good example
    • +
    +EOT + , + ), + $this->parser->parse($yaml) + ); + } + + /** + * @param $lineNumber + * @param $yaml + * @dataProvider parserThrowsExceptionWithCorrectLineNumberProvider + */ + public function testParserThrowsExceptionWithCorrectLineNumber($lineNumber, $yaml) + { + if (method_exists($this, 'expectException')) { + $this->expectException('\Symfony\Component\Yaml\Exception\ParseException'); + $this->expectExceptionMessage(sprintf('Unexpected characters near "," at line %d (near "bar: "123",").', $lineNumber)); + } else { + $this->setExpectedException('\Symfony\Component\Yaml\Exception\ParseException', sprintf('Unexpected characters near "," at line %d (near "bar: "123",").', $lineNumber)); + } + + $this->parser->parse($yaml); + } + + public function parserThrowsExceptionWithCorrectLineNumberProvider() + { + return array( + array( + 4, + <<<'YAML' +foo: + - + # bar + bar: "123", +YAML + ), + array( + 5, + <<<'YAML' +foo: + - + # bar + # bar + bar: "123", +YAML + ), + array( + 8, + <<<'YAML' +foo: + - + # foobar + baz: 123 +bar: + - + # bar + bar: "123", +YAML + ), + array( + 10, + <<<'YAML' +foo: + - + # foobar + # foobar + baz: 123 +bar: + - + # bar + # bar + bar: "123", +YAML + ), + ); + } + + public function testCanParseVeryLongValue() + { + $longStringWithSpaces = str_repeat('xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ', 20000); + $trickyVal = array('x' => $longStringWithSpaces); + + $yamlString = Yaml::dump($trickyVal); + $arrayFromYaml = $this->parser->parse($yamlString); + + $this->assertEquals($trickyVal, $arrayFromYaml); + } +} + +class B +{ + public $b = 'foo'; +} diff --git a/system/vendor/symfony/yaml/Tests/YamlTest.php b/system/vendor/symfony/yaml/Tests/YamlTest.php new file mode 100644 index 0000000..9e776ca --- /dev/null +++ b/system/vendor/symfony/yaml/Tests/YamlTest.php @@ -0,0 +1,56 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml\Tests; + +use PHPUnit\Framework\TestCase; +use Symfony\Component\Yaml\Yaml; + +class YamlTest extends TestCase +{ + public function testParseAndDump() + { + $data = array('lorem' => 'ipsum', 'dolor' => 'sit'); + $yml = Yaml::dump($data); + $parsed = Yaml::parse($yml); + $this->assertEquals($data, $parsed); + } + + /** + * @group legacy + */ + public function testLegacyParseFromFile() + { + $filename = __DIR__.'/Fixtures/index.yml'; + $contents = file_get_contents($filename); + $parsedByFilename = Yaml::parse($filename); + $parsedByContents = Yaml::parse($contents); + $this->assertEquals($parsedByFilename, $parsedByContents); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The indentation must be greater than zero + */ + public function testZeroIndentationThrowsException() + { + Yaml::dump(array('lorem' => 'ipsum', 'dolor' => 'sit'), 2, 0); + } + + /** + * @expectedException \InvalidArgumentException + * @expectedExceptionMessage The indentation must be greater than zero + */ + public function testNegativeIndentationThrowsException() + { + Yaml::dump(array('lorem' => 'ipsum', 'dolor' => 'sit'), 2, -4); + } +} diff --git a/system/vendor/symfony/yaml/Unescaper.php b/system/vendor/symfony/yaml/Unescaper.php new file mode 100644 index 0000000..1e02cc9 --- /dev/null +++ b/system/vendor/symfony/yaml/Unescaper.php @@ -0,0 +1,156 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml; + +/** + * Unescaper encapsulates unescaping rules for single and double-quoted + * YAML strings. + * + * @author Matthew Lewinski + * + * @internal + */ +class Unescaper +{ + /** + * Parser and Inline assume UTF-8 encoding, so escaped Unicode characters + * must be converted to that encoding. + * + * @deprecated since version 2.5, to be removed in 3.0 + * + * @internal + */ + const ENCODING = 'UTF-8'; + + /** + * Regex fragment that matches an escaped character in a double quoted string. + */ + const REGEX_ESCAPED_CHARACTER = '\\\\(x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8}|.)'; + + /** + * Unescapes a single quoted string. + * + * @param string $value A single quoted string + * + * @return string The unescaped string + */ + public function unescapeSingleQuotedString($value) + { + return str_replace('\'\'', '\'', $value); + } + + /** + * Unescapes a double quoted string. + * + * @param string $value A double quoted string + * + * @return string The unescaped string + */ + public function unescapeDoubleQuotedString($value) + { + $self = $this; + $callback = function ($match) use ($self) { + return $self->unescapeCharacter($match[0]); + }; + + // evaluate the string + return preg_replace_callback('/'.self::REGEX_ESCAPED_CHARACTER.'/u', $callback, $value); + } + + /** + * Unescapes a character that was found in a double-quoted string. + * + * @param string $value An escaped character + * + * @return string The unescaped character + * + * @internal This method is public to be usable as callback. It should not + * be used in user code. Should be changed in 3.0. + */ + public function unescapeCharacter($value) + { + switch ($value[1]) { + case '0': + return "\x0"; + case 'a': + return "\x7"; + case 'b': + return "\x8"; + case 't': + return "\t"; + case "\t": + return "\t"; + case 'n': + return "\n"; + case 'v': + return "\xB"; + case 'f': + return "\xC"; + case 'r': + return "\r"; + case 'e': + return "\x1B"; + case ' ': + return ' '; + case '"': + return '"'; + case '/': + return '/'; + case '\\': + return '\\'; + case 'N': + // U+0085 NEXT LINE + return "\xC2\x85"; + case '_': + // U+00A0 NO-BREAK SPACE + return "\xC2\xA0"; + case 'L': + // U+2028 LINE SEPARATOR + return "\xE2\x80\xA8"; + case 'P': + // U+2029 PARAGRAPH SEPARATOR + return "\xE2\x80\xA9"; + case 'x': + return self::utf8chr(hexdec(substr($value, 2, 2))); + case 'u': + return self::utf8chr(hexdec(substr($value, 2, 4))); + case 'U': + return self::utf8chr(hexdec(substr($value, 2, 8))); + default: + @trigger_error('Not escaping a backslash in a double-quoted string is deprecated since Symfony 2.8 and will throw a ParseException in 3.0.', E_USER_DEPRECATED); + + return $value; + } + } + + /** + * Get the UTF-8 character for the given code point. + * + * @param int $c The unicode code point + * + * @return string The corresponding UTF-8 character + */ + private static function utf8chr($c) + { + if (0x80 > $c %= 0x200000) { + return chr($c); + } + if (0x800 > $c) { + return chr(0xC0 | $c >> 6).chr(0x80 | $c & 0x3F); + } + if (0x10000 > $c) { + return chr(0xE0 | $c >> 12).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F); + } + + return chr(0xF0 | $c >> 18).chr(0x80 | $c >> 12 & 0x3F).chr(0x80 | $c >> 6 & 0x3F).chr(0x80 | $c & 0x3F); + } +} diff --git a/system/vendor/symfony/yaml/Yaml.php b/system/vendor/symfony/yaml/Yaml.php new file mode 100644 index 0000000..6fc4e92 --- /dev/null +++ b/system/vendor/symfony/yaml/Yaml.php @@ -0,0 +1,100 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Component\Yaml; + +use Symfony\Component\Yaml\Exception\ParseException; + +/** + * Yaml offers convenience methods to load and dump YAML. + * + * @author Fabien Potencier + */ +class Yaml +{ + /** + * Parses YAML into a PHP value. + * + * Usage: + * + * $array = Yaml::parse(file_get_contents('config.yml')); + * print_r($array); + * + * + * As this method accepts both plain strings and file names as an input, + * you must validate the input before calling this method. Passing a file + * as an input is a deprecated feature and will be removed in 3.0. + * + * Note: the ability to pass file names to the Yaml::parse method is deprecated since version 2.2 and will be removed in 3.0. Pass the YAML contents of the file instead. + * + * @param string $input Path to a YAML file or a string containing YAML + * @param bool $exceptionOnInvalidType True if an exception must be thrown on invalid types false otherwise + * @param bool $objectSupport True if object support is enabled, false otherwise + * @param bool $objectForMap True if maps should return a stdClass instead of array() + * + * @return mixed The YAML converted to a PHP value + * + * @throws ParseException If the YAML is not valid + */ + public static function parse($input, $exceptionOnInvalidType = false, $objectSupport = false, $objectForMap = false) + { + // if input is a file, process it + $file = ''; + if (strpos($input, "\n") === false && is_file($input)) { + @trigger_error('The ability to pass file names to the '.__METHOD__.' method is deprecated since version 2.2 and will be removed in 3.0. Pass the YAML contents of the file instead.', E_USER_DEPRECATED); + + if (false === is_readable($input)) { + throw new ParseException(sprintf('Unable to parse "%s" as the file is not readable.', $input)); + } + + $file = $input; + $input = file_get_contents($file); + } + + $yaml = new Parser(); + + try { + return $yaml->parse($input, $exceptionOnInvalidType, $objectSupport, $objectForMap); + } catch (ParseException $e) { + if ($file) { + $e->setParsedFile($file); + } + + throw $e; + } + } + + /** + * Dumps a PHP value to a YAML string. + * + * The dump method, when supplied with an array, will do its best + * to convert the array into friendly YAML. + * + * @param mixed $input The PHP value + * @param int $inline The level where you switch to inline YAML + * @param int $indent The amount of spaces to use for indentation of nested nodes + * @param bool $exceptionOnInvalidType true if an exception must be thrown on invalid types (a PHP resource or object), false otherwise + * @param bool $objectSupport true if object support is enabled, false otherwise + * + * @return string A YAML string representing the original PHP value + */ + public static function dump($input, $inline = 2, $indent = 4, $exceptionOnInvalidType = false, $objectSupport = false) + { + if ($indent < 1) { + throw new \InvalidArgumentException('The indentation must be greater than zero.'); + } + + $yaml = new Dumper(); + $yaml->setIndentation($indent); + + return $yaml->dump($input, $inline, 0, $exceptionOnInvalidType, $objectSupport); + } +} diff --git a/system/vendor/symfony/yaml/composer.json b/system/vendor/symfony/yaml/composer.json new file mode 100644 index 0000000..af97f80 --- /dev/null +++ b/system/vendor/symfony/yaml/composer.json @@ -0,0 +1,33 @@ +{ + "name": "symfony/yaml", + "type": "library", + "description": "Symfony Yaml Component", + "keywords": [], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=5.3.9" + }, + "autoload": { + "psr-4": { "Symfony\\Component\\Yaml\\": "" }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-master": "2.8-dev" + } + } +} diff --git a/system/vendor/symfony/yaml/phpunit.xml.dist b/system/vendor/symfony/yaml/phpunit.xml.dist new file mode 100644 index 0000000..6bdbea1 --- /dev/null +++ b/system/vendor/symfony/yaml/phpunit.xml.dist @@ -0,0 +1,28 @@ + + + + + + + + + + ./Tests/ + + + + + + ./ + + ./Tests + ./vendor + + + + diff --git a/system/vendor/twig/twig/.editorconfig b/system/vendor/twig/twig/.editorconfig new file mode 100644 index 0000000..270f1d1 --- /dev/null +++ b/system/vendor/twig/twig/.editorconfig @@ -0,0 +1,18 @@ +; top-most EditorConfig file +root = true + +; Unix-style newlines +[*] +end_of_line = LF + +[*.php] +indent_style = space +indent_size = 4 + +[*.test] +indent_style = space +indent_size = 4 + +[*.rst] +indent_style = space +indent_size = 4 diff --git a/system/vendor/twig/twig/.gitignore b/system/vendor/twig/twig/.gitignore new file mode 100644 index 0000000..3110362 --- /dev/null +++ b/system/vendor/twig/twig/.gitignore @@ -0,0 +1,5 @@ +/build +/composer.lock +/ext/twig/autom4te.cache/ +/phpunit.xml +/vendor diff --git a/system/vendor/twig/twig/.php_cs.dist b/system/vendor/twig/twig/.php_cs.dist new file mode 100644 index 0000000..cd75923 --- /dev/null +++ b/system/vendor/twig/twig/.php_cs.dist @@ -0,0 +1,15 @@ +setRules(array( + '@Symfony' => true, + '@Symfony:risky' => true, + 'array_syntax' => array('syntax' => 'long'), + 'php_unit_fqcn_annotation' => false, + 'no_unreachable_default_argument_value' => false, + 'braces' => array('allow_single_line_closure' => true), + 'heredoc_to_nowdoc' => false, + )) + ->setRiskyAllowed(true) + ->setFinder(PhpCsFixer\Finder::create()->in(__DIR__)) +; diff --git a/system/vendor/twig/twig/.travis.yml b/system/vendor/twig/twig/.travis.yml new file mode 100644 index 0000000..19f8fb5 --- /dev/null +++ b/system/vendor/twig/twig/.travis.yml @@ -0,0 +1,43 @@ +language: php + +sudo: false + +cache: + directories: + - vendor + - $HOME/.composer/cache/files + +php: + - 5.2 + - 5.3 + - 5.4 + - 5.5 + - 5.6 + - 7.0 + - 7.1 + - hhvm + +env: + - TWIG_EXT=no + - TWIG_EXT=yes + +before_install: + - if [[ ! $TRAVIS_PHP_VERSION = hhvm* ]]; then phpenv config-rm xdebug.ini || echo "xdebug not available"; fi + +install: + # Composer is not available on PHP 5.2 + - if [ ${TRAVIS_PHP_VERSION:0:3} != "5.2" ]; then travis_retry composer install; fi + +before_script: + - if [ "$TWIG_EXT" == "yes" ]; then sh -c "cd ext/twig && phpize && ./configure --enable-twig && make && make install"; fi + - if [ "$TWIG_EXT" == "yes" ]; then echo "extension=twig.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`; fi + +matrix: + fast_finish: true + exclude: + - php: hhvm + env: TWIG_EXT=yes + - php: 7.0 + env: TWIG_EXT=yes + - php: 7.1 + env: TWIG_EXT=yes diff --git a/system/vendor/twig/twig/CHANGELOG b/system/vendor/twig/twig/CHANGELOG new file mode 100644 index 0000000..886bc70 --- /dev/null +++ b/system/vendor/twig/twig/CHANGELOG @@ -0,0 +1,942 @@ +* 1.33.0 (2017-03-22) + + * fixed a race condition handling when writing cache files + * "length" filter now returns string length when applied to an object that does + not implement \Countable but provides __toString() + * "empty" test will now consider the return value of the __toString() method for + objects implement __toString() but not \Countable + * fixed JS escaping for unicode characters with higher code points + +* 1.32.0 (2017-02-26) + + * fixed deprecation notice in Twig_Util_DeprecationCollector + * added a PSR-11 compatible runtime loader + * added `side` argument to `trim` to allow left or right trimming only. + +* 1.31.0 (2017-01-11) + + * added Twig_NodeCaptureInterface for nodes that capture all output + * fixed marking the environment as initialized too early + * fixed C89 compat for the C extension + * turned fatal error into exception when a previously generated cache is corrupted + * fixed offline cache warm-ups for embedded templates + +* 1.30.0 (2016-12-23) + + * added Twig_FactoryRuntimeLoader + * deprecated function/test/filter/tag overriding + * deprecated the "disable_c_ext" attribute on Twig_Node_Expression_GetAttr + +* 1.29.0 (2016-12-13) + + * fixed sandbox being left enabled if an exception is thrown while rendering + * marked some classes as being final (via @final) + * made Twig_Error report real source path when possible + * added support for {{ _self }} to provide an upgrade path from 1.x to 2.0 (replaces {{ _self.templateName }}) + * deprecated silent display of undefined blocks + * deprecated support for mbstring.func_overload != 0 + +* 1.28.2 (2016-11-23) + + * fixed precedence between getFoo() and isFoo() in Twig_Template::getAttribute() + * improved a deprecation message + +* 1.28.1 (2016-11-18) + + * fixed block() function when used with a template argument + +* 1.28.0 (2016-11-17) + + * added support for the PHP 7 null coalescing operator for the ?? Twig implementation + * exposed a way to access template data and methods in a portable way + * changed context access to use the PHP 7 null coalescing operator when available + * added the "with" tag + * added support for a custom template on the block() function + * added "is defined" support for block() and constant() + * optimized the way attributes are fetched + +* 1.27.0 (2016-10-25) + + * deprecated Twig_Parser::getEnvironment() + * deprecated Twig_Parser::addHandler() and Twig_Parser::addNodeVisitor() + * deprecated Twig_Compiler::addIndentation() + * fixed regression when registering two extensions having the same class name + * deprecated Twig_LoaderInterface::getSource() (implement Twig_SourceContextLoaderInterface instead) + * fixed the filesystem loader with relative paths + * deprecated Twig_Node::getLine() in favor of Twig_Node::getTemplateLine() + * deprecated Twig_Template::getSource() in favor of Twig_Template::getSourceContext() + * deprecated Twig_Node::getFilename() in favor of Twig_Node::getTemplateName() + * deprecated the "filename" escaping strategy (use "name" instead) + * added Twig_Source to hold information about the original template + * deprecated Twig_Error::getTemplateFile() and Twig_Error::setTemplateFile() in favor of Twig_Error::getTemplateName() and Twig_Error::setTemplateName() + * deprecated Parser::getFilename() + * fixed template paths when a template name contains a protocol like vfs:// + * improved debugging with Twig_Sandbox_SecurityError exceptions for disallowed methods and properties + +* 1.26.1 (2016-10-05) + + * removed template source code from generated template classes when debug is disabled + * fixed default implementation of Twig_Template::getDebugInfo() for better BC + * fixed regression on static calls for functions/filters/tests + +* 1.26.0 (2016-10-02) + + * added template cache invalidation based on more environment options + * added a missing deprecation notice + * fixed template paths when a template is stored in a PHAR file + * allowed filters/functions/tests implementation to use a different class than the extension they belong to + * deprecated Twig_ExtensionInterface::getName() + +* 1.25.0 (2016-09-21) + + * changed the way we store template source in template classes + * removed usage of realpath in cache keys + * fixed Twig cache sharing when used with different versions of PHP + * removed embed parent workaround for simple use cases + * deprecated the ability to store non Node instances in Node::$nodes + * deprecated Twig_Environment::getLexer(), Twig_Environment::getParser(), Twig_Environment::getCompiler() + * deprecated Twig_Compiler::getFilename() + +* 1.24.2 (2016-09-01) + + * fixed static callables + * fixed a potential PHP warning when loading the cache + * fixed a case where the autoescaping does not work as expected + +* 1.24.1 (2016-05-30) + + * fixed reserved keywords (forbids true, false, null and none keywords for variables names) + * fixed support for PHP7 (Throwable support) + * marked the following methods as being internals on Twig_Environment: + getFunctions(), getFilters(), getTests(), getFunction(), getFilter(), getTest(), + getTokenParsers(), getTags(), getNodeVisitors(), getUnaryOperators(), getBinaryOperators(), + getFunctions(), getFilters(), getGlobals(), initGlobals(), initExtensions(), and initExtension() + +* 1.24.0 (2016-01-25) + + * adding support for the ?? operator + * fixed the defined test when used on a constant, a map, or a sequence + * undeprecated _self (should only be used to get the template name, not the template instance) + * fixed parsing on PHP7 + +* 1.23.3 (2016-01-11) + + * fixed typo + +* 1.23.2 (2015-01-11) + + * added versions in deprecated messages + * made file cache tolerant for trailing (back)slashes on directory configuration + * deprecated unused Twig_Node_Expression_ExtensionReference class + +* 1.23.1 (2015-11-05) + + * fixed some exception messages which triggered PHP warnings + * fixed BC on Twig_Test_NodeTestCase + +* 1.23.0 (2015-10-29) + + * deprecated the possibility to override an extension by registering another one with the same name + * deprecated Twig_ExtensionInterface::getGlobals() (added Twig_Extension_GlobalsInterface for BC) + * deprecated Twig_ExtensionInterface::initRuntime() (added Twig_Extension_InitRuntimeInterface for BC) + * deprecated Twig_Environment::computeAlternatives() + +* 1.22.3 (2015-10-13) + + * fixed regression when using null as a cache strategy + * improved performance when checking template freshness + * fixed warnings when loaded templates do not exist + * fixed template class name generation to prevent possible collisions + * fixed logic for custom escapers to call them even on integers and null values + * changed template cache names to take into account the Twig C extension + +* 1.22.2 (2015-09-22) + + * fixed a race condition in template loading + +* 1.22.1 (2015-09-15) + + * fixed regression in template_from_string + +* 1.22.0 (2015-09-13) + + * made Twig_Test_IntegrationTestCase more flexible + * added an option to force PHP bytecode invalidation when writing a compiled template into the cache + * fixed the profiler duration for the root node + * changed template cache names to take into account enabled extensions + * deprecated Twig_Environment::clearCacheFiles(), Twig_Environment::getCacheFilename(), + Twig_Environment::writeCacheFile(), and Twig_Environment::getTemplateClassPrefix() + * added a way to override the filesystem template cache system + * added a way to get the original template source from Twig_Template + +* 1.21.2 (2015-09-09) + + * fixed variable names for the deprecation triggering code + * fixed escaping strategy detection based on filename + * added Traversable support for replace, merge, and sort + * deprecated support for character by character replacement for the "replace" filter + +* 1.21.1 (2015-08-26) + + * fixed regression when using the deprecated Twig_Test_* classes + +* 1.21.0 (2015-08-24) + + * added deprecation notices for deprecated features + * added a deprecation "framework" for filters/functions/tests and test fixtures + +* 1.20.0 (2015-08-12) + + * forbid access to the Twig environment from templates and internal parts of Twig_Template + * fixed limited RCEs when in sandbox mode + * deprecated Twig_Template::getEnvironment() + * deprecated the _self variable for usage outside of the from and import tags + * added Twig_BaseNodeVisitor to ease the compatibility of node visitors + between 1.x and 2.x + +* 1.19.0 (2015-07-31) + + * fixed wrong error message when including an undefined template in a child template + * added support for variadic filters, functions, and tests + * added support for extra positional arguments in macros + * added ignore_missing flag to the source function + * fixed batch filter with zero items + * deprecated Twig_Environment::clearTemplateCache() + * fixed sandbox disabling when using the include function + +* 1.18.2 (2015-06-06) + + * fixed template/line guessing in exceptions for nested templates + * optimized the number of inodes and the size of realpath cache when using the cache + +* 1.18.1 (2015-04-19) + + * fixed memory leaks in the C extension + * deprecated Twig_Loader_String + * fixed the slice filter when used with a SimpleXMLElement object + * fixed filesystem loader when trying to load non-files (like directories) + +* 1.18.0 (2015-01-25) + + * fixed some error messages where the line was wrong (unknown variables or argument names) + * added a new way to customize the main Module node (via empty nodes) + * added Twig_Environment::createTemplate() to create a template from a string + * added a profiler + * fixed filesystem loader cache when different file paths are used for the same template + +* 1.17.0 (2015-01-14) + + * added a 'filename' autoescaping strategy, which dynamically chooses the + autoescaping strategy for a template based on template file extension. + +* 1.16.3 (2014-12-25) + + * fixed regression for dynamic parent templates + * fixed cache management with statcache + * fixed a regression in the slice filter + +* 1.16.2 (2014-10-17) + + * fixed timezone on dates as strings + * fixed 2-words test names when a custom node class is not used + * fixed macros when using an argument named like a PHP super global (like GET or POST) + * fixed date_modify when working with DateTimeImmutable + * optimized for loops + * fixed multi-byte characters handling in the split filter + * fixed a regression in the in operator + * fixed a regression in the slice filter + +* 1.16.1 (2014-10-10) + + * improved error reporting in a sandboxed template + * fixed missing error file/line information under certain circumstances + * fixed wrong error line number in some error messages + * fixed the in operator to use strict comparisons + * sped up the slice filter + * fixed for mb function overload mb_substr acting different + * fixed the attribute() function when passing a variable for the arguments + +* 1.16.0 (2014-07-05) + + * changed url_encode to always encode according to RFC 3986 + * fixed inheritance in a 'use'-hierarchy + * removed the __toString policy check when the sandbox is disabled + * fixed recursively calling blocks in templates with inheritance + +* 1.15.1 (2014-02-13) + + * fixed the conversion of the special '0000-00-00 00:00' date + * added an error message when trying to import an undefined block from a trait + * fixed a C extension crash when accessing defined but uninitialized property. + +* 1.15.0 (2013-12-06) + + * made ignoreStrictCheck in Template::getAttribute() works with __call() methods throwing BadMethodCallException + * added min and max functions + * added the round filter + * fixed a bug that prevented the optimizers to be enabled/disabled selectively + * fixed first and last filters for UTF-8 strings + * added a source function to include the content of a template without rendering it + * fixed the C extension sandbox behavior when get or set is prepend to method name + +* 1.14.2 (2013-10-30) + + * fixed error filename/line when an error occurs in an included file + * allowed operators that contain whitespaces to have more than one whitespace + * allowed tests to be made of 1 or 2 words (like "same as" or "divisible by") + +* 1.14.1 (2013-10-15) + + * made it possible to use named operators as variables + * fixed the possibility to have a variable named 'matches' + * added support for PHP 5.5 DateTimeInterface + +* 1.14.0 (2013-10-03) + + * fixed usage of the html_attr escaping strategy to avoid double-escaping with the html strategy + * added new operators: ends with, starts with, and matches + * fixed some compatibility issues with HHVM + * added a way to add custom escaping strategies + * fixed the C extension compilation on Windows + * fixed the batch filter when using a fill argument with an exact match of elements to batch + * fixed the filesystem loader cache when a template name exists in several namespaces + * fixed template_from_string when the template includes or extends other ones + * fixed a crash of the C extension on an edge case + +* 1.13.2 (2013-08-03) + + * fixed the error line number for an error occurs in and embedded template + * fixed crashes of the C extension on some edge cases + +* 1.13.1 (2013-06-06) + + * added the possibility to ignore the filesystem constructor argument in Twig_Loader_Filesystem + * fixed Twig_Loader_Chain::exists() for a loader which implements Twig_ExistsLoaderInterface + * adjusted backtrace call to reduce memory usage when an error occurs + * added support for object instances as the second argument of the constant test + * fixed the include function when used in an assignment + +* 1.13.0 (2013-05-10) + + * fixed getting a numeric-like item on a variable ('09' for instance) + * fixed getting a boolean or float key on an array, so it is consistent with PHP's array access: + `{{ array[false] }}` behaves the same as `echo $array[false];` (equals `$array[0]`) + * made the escape filter 20% faster for happy path (escaping string for html with UTF-8) + * changed ☃ to § in tests + * enforced usage of named arguments after positional ones + +* 1.12.3 (2013-04-08) + + * fixed a security issue in the filesystem loader where it was possible to include a template one + level above the configured path + * fixed fatal error that should be an exception when adding a filter/function/test too late + * added a batch filter + * added support for encoding an array as query string in the url_encode filter + +* 1.12.2 (2013-02-09) + + * fixed the timezone used by the date filter and function when the given date contains a timezone (like 2010-01-28T15:00:00+02:00) + * fixed globals when getGlobals is called early on + * added the first and last filter + +* 1.12.1 (2013-01-15) + + * added support for object instances as the second argument of the constant function + * relaxed globals management to avoid a BC break + * added support for {{ some_string[:2] }} + +* 1.12.0 (2013-01-08) + + * added verbatim as an alias for the raw tag to avoid confusion with the raw filter + * fixed registration of tests and functions as anonymous functions + * fixed globals management + +* 1.12.0-RC1 (2012-12-29) + + * added an include function (does the same as the include tag but in a more flexible way) + * added the ability to use any PHP callable to define filters, functions, and tests + * added a syntax error when using a loop variable that is not defined + * added the ability to set default values for macro arguments + * added support for named arguments for filters, tests, and functions + * moved filters/functions/tests syntax errors to the parser + * added support for extended ternary operator syntaxes + +* 1.11.1 (2012-11-11) + + * fixed debug info line numbering (was off by 2) + * fixed escaping when calling a macro inside another one (regression introduced in 1.9.1) + * optimized variable access on PHP 5.4 + * fixed a crash of the C extension when an exception was thrown from a macro called without being imported (using _self.XXX) + +* 1.11.0 (2012-11-07) + + * fixed macro compilation when a variable name is a PHP reserved keyword + * changed the date filter behavior to always apply the default timezone, except if false is passed as the timezone + * fixed bitwise operator precedences + * added the template_from_string function + * fixed default timezone usage for the date function + * optimized the way Twig exceptions are managed (to make them faster) + * added Twig_ExistsLoaderInterface (implementing this interface in your loader make the chain loader much faster) + +* 1.10.3 (2012-10-19) + + * fixed wrong template location in some error messages + * reverted a BC break introduced in 1.10.2 + * added a split filter + +* 1.10.2 (2012-10-15) + + * fixed macro calls on PHP 5.4 + +* 1.10.1 (2012-10-15) + + * made a speed optimization to macro calls when imported via the "import" tag + * fixed C extension compilation on Windows + * fixed a segfault in the C extension when using DateTime objects + +* 1.10.0 (2012-09-28) + + * extracted functional tests framework to make it reusable for third-party extensions + * added namespaced templates support in Twig_Loader_Filesystem + * added Twig_Loader_Filesystem::prependPath() + * fixed an error when a token parser pass a closure as a test to the subparse() method + +* 1.9.2 (2012-08-25) + + * fixed the in operator for objects that contain circular references + * fixed the C extension when accessing a public property of an object implementing the \ArrayAccess interface + +* 1.9.1 (2012-07-22) + + * optimized macro calls when auto-escaping is on + * fixed wrong parent class for Twig_Function_Node + * made Twig_Loader_Chain more explicit about problems + +* 1.9.0 (2012-07-13) + + * made the parsing independent of the template loaders + * fixed exception trace when an error occurs when rendering a child template + * added escaping strategies for CSS, URL, and HTML attributes + * fixed nested embed tag calls + * added the date_modify filter + +* 1.8.3 (2012-06-17) + + * fixed paths in the filesystem loader when passing a path that ends with a slash or a backslash + * fixed escaping when a project defines a function named html or js + * fixed chmod mode to apply the umask correctly + +* 1.8.2 (2012-05-30) + + * added the abs filter + * fixed a regression when using a number in template attributes + * fixed compiler when mbstring.func_overload is set to 2 + * fixed DateTimeZone support in date filter + +* 1.8.1 (2012-05-17) + + * fixed a regression when dealing with SimpleXMLElement instances in templates + * fixed "is_safe" value for the "dump" function when "html_errors" is not defined in php.ini + * switched to use mbstring whenever possible instead of iconv (you might need to update your encoding as mbstring and iconv encoding names sometimes differ) + +* 1.8.0 (2012-05-08) + + * enforced interface when adding tests, filters, functions, and node visitors from extensions + * fixed a side-effect of the date filter where the timezone might be changed + * simplified usage of the autoescape tag; the only (optional) argument is now the escaping strategy or false (with a BC layer) + * added a way to dynamically change the auto-escaping strategy according to the template "filename" + * changed the autoescape option to also accept a supported escaping strategy (for BC, true is equivalent to html) + * added an embed tag + +* 1.7.0 (2012-04-24) + + * fixed a PHP warning when using CIFS + * fixed template line number in some exceptions + * added an iterable test + * added an error when defining two blocks with the same name in a template + * added the preserves_safety option for filters + * fixed a PHP notice when trying to access a key on a non-object/array variable + * enhanced error reporting when the template file is an instance of SplFileInfo + * added Twig_Environment::mergeGlobals() + * added compilation checks to avoid misuses of the sandbox tag + * fixed filesystem loader freshness logic for high traffic websites + * fixed random function when charset is null + +* 1.6.5 (2012-04-11) + + * fixed a regression when a template only extends another one without defining any blocks + +* 1.6.4 (2012-04-02) + + * fixed PHP notice in Twig_Error::guessTemplateLine() introduced in 1.6.3 + * fixed performance when compiling large files + * optimized parent template creation when the template does not use dynamic inheritance + +* 1.6.3 (2012-03-22) + + * fixed usage of Z_ADDREF_P for PHP 5.2 in the C extension + * fixed compilation of numeric values used in templates when using a locale where the decimal separator is not a dot + * made the strategy used to guess the real template file name and line number in exception messages much faster and more accurate + +* 1.6.2 (2012-03-18) + + * fixed sandbox mode when used with inheritance + * added preserveKeys support for the slice filter + * fixed the date filter when a DateTime instance is passed with a specific timezone + * added a trim filter + +* 1.6.1 (2012-02-29) + + * fixed Twig C extension + * removed the creation of Twig_Markup instances when not needed + * added a way to set the default global timezone for dates + * fixed the slice filter on strings when the length is not specified + * fixed the creation of the cache directory in case of a race condition + +* 1.6.0 (2012-02-04) + + * fixed raw blocks when used with the whitespace trim option + * made a speed optimization to macro calls when imported via the "from" tag + * fixed globals, parsers, visitors, filters, tests, and functions management in Twig_Environment when a new one or new extension is added + * fixed the attribute function when passing arguments + * added slice notation support for the [] operator (syntactic sugar for the slice operator) + * added a slice filter + * added string support for the reverse filter + * fixed the empty test and the length filter for Twig_Markup instances + * added a date function to ease date comparison + * fixed unary operators precedence + * added recursive parsing support in the parser + * added string and integer handling for the random function + +* 1.5.1 (2012-01-05) + + * fixed a regression when parsing strings + +* 1.5.0 (2012-01-04) + + * added Traversable objects support for the join filter + +* 1.5.0-RC2 (2011-12-30) + + * added a way to set the default global date interval format + * fixed the date filter for DateInterval instances (setTimezone() does not exist for them) + * refactored Twig_Template::display() to ease its extension + * added a number_format filter + +* 1.5.0-RC1 (2011-12-26) + + * removed the need to quote hash keys + * allowed hash keys to be any expression + * added a do tag + * added a flush tag + * added support for dynamically named filters and functions + * added a dump function to help debugging templates + * added a nl2br filter + * added a random function + * added a way to change the default format for the date filter + * fixed the lexer when an operator ending with a letter ends a line + * added string interpolation support + * enhanced exceptions for unknown filters, functions, tests, and tags + +* 1.4.0 (2011-12-07) + + * fixed lexer when using big numbers (> PHP_INT_MAX) + * added missing preserveKeys argument to the reverse filter + * fixed macros containing filter tag calls + +* 1.4.0-RC2 (2011-11-27) + + * removed usage of Reflection in Twig_Template::getAttribute() + * added a C extension that can optionally replace Twig_Template::getAttribute() + * added negative timestamp support to the date filter + +* 1.4.0-RC1 (2011-11-20) + + * optimized variable access when using PHP 5.4 + * changed the precedence of the .. operator to be more consistent with languages that implements such a feature like Ruby + * added an Exception to Twig_Loader_Array::isFresh() method when the template does not exist to be consistent with other loaders + * added Twig_Function_Node to allow more complex functions to have their own Node class + * added Twig_Filter_Node to allow more complex filters to have their own Node class + * added Twig_Test_Node to allow more complex tests to have their own Node class + * added a better error message when a template is empty but contain a BOM + * fixed "in" operator for empty strings + * fixed the "defined" test and the "default" filter (now works with more than one call (foo.bar.foo) and for both values of the strict_variables option) + * changed the way extensions are loaded (addFilter/addFunction/addGlobal/addTest/addNodeVisitor/addTokenParser/addExtension can now be called in any order) + * added Twig_Environment::display() + * made the escape filter smarter when the encoding is not supported by PHP + * added a convert_encoding filter + * moved all node manipulations outside the compile() Node method + * made several speed optimizations + +* 1.3.0 (2011-10-08) + +no changes + +* 1.3.0-RC1 (2011-10-04) + + * added an optimization for the parent() function + * added cache reloading when auto_reload is true and an extension has been modified + * added the possibility to force the escaping of a string already marked as safe (instance of Twig_Markup) + * allowed empty templates to be used as traits + * added traits support for the "parent" function + +* 1.2.0 (2011-09-13) + +no changes + +* 1.2.0-RC1 (2011-09-10) + + * enhanced the exception when a tag remains unclosed + * added support for empty Countable objects for the "empty" test + * fixed algorithm that determines if a template using inheritance is valid (no output between block definitions) + * added better support for encoding problems when escaping a string (available as of PHP 5.4) + * added a way to ignore a missing template when using the "include" tag ({% include "foo" ignore missing %}) + * added support for an array of templates to the "include" and "extends" tags ({% include ['foo', 'bar'] %}) + * added support for bitwise operators in expressions + * added the "attribute" function to allow getting dynamic attributes on variables + * added Twig_Loader_Chain + * added Twig_Loader_Array::setTemplate() + * added an optimization for the set tag when used to capture a large chunk of static text + * changed name regex to match PHP one "[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*" (works for blocks, tags, functions, filters, and macros) + * removed the possibility to use the "extends" tag from a block + * added "if" modifier support to "for" loops + +* 1.1.2 (2011-07-30) + + * fixed json_encode filter on PHP 5.2 + * fixed regression introduced in 1.1.1 ({{ block(foo|lower) }}) + * fixed inheritance when using conditional parents + * fixed compilation of templates when the body of a child template is not empty + * fixed output when a macro throws an exception + * fixed a parsing problem when a large chunk of text is enclosed in a comment tag + * added PHPDoc for all Token parsers and Core extension functions + +* 1.1.1 (2011-07-17) + + * added a performance optimization in the Optimizer (also helps to lower the number of nested level calls) + * made some performance improvement for some edge cases + +* 1.1.0 (2011-06-28) + + * fixed json_encode filter + +* 1.1.0-RC3 (2011-06-24) + + * fixed method case-sensitivity when using the sandbox mode + * added timezone support for the date filter + * fixed possible security problems with NUL bytes + +* 1.1.0-RC2 (2011-06-16) + + * added an exception when the template passed to "use" is not a string + * made 'a.b is defined' not throw an exception if a is not defined (in strict mode) + * added {% line \d+ %} directive + +* 1.1.0-RC1 (2011-05-28) + +Flush your cache after upgrading. + + * fixed date filter when using a timestamp + * fixed the defined test for some cases + * fixed a parsing problem when a large chunk of text is enclosed in a raw tag + * added support for horizontal reuse of template blocks (see docs for more information) + * added whitespace control modifier to all tags (see docs for more information) + * added null as an alias for none (the null test is also an alias for the none test now) + * made TRUE, FALSE, NONE equivalent to their lowercase counterparts + * wrapped all compilation and runtime exceptions with Twig_Error_Runtime and added logic to guess the template name and line + * moved display() method to Twig_Template (generated templates should now use doDisplay() instead) + +* 1.0.0 (2011-03-27) + + * fixed output when using mbstring + * fixed duplicate call of methods when using the sandbox + * made the charset configurable for the escape filter + +* 1.0.0-RC2 (2011-02-21) + + * changed the way {% set %} works when capturing (the content is now marked as safe) + * added support for macro name in the endmacro tag + * make Twig_Error compatible with PHP 5.3.0 > + * fixed an infinite loop on some Windows configurations + * fixed the "length" filter for numbers + * fixed Template::getAttribute() as properties in PHP are case sensitive + * removed coupling between Twig_Node and Twig_Template + * fixed the ternary operator precedence rule + +* 1.0.0-RC1 (2011-01-09) + +Backward incompatibilities: + + * the "items" filter, which has been deprecated for quite a long time now, has been removed + * the "range" filter has been converted to a function: 0|range(10) -> range(0, 10) + * the "constant" filter has been converted to a function: {{ some_date|date('DATE_W3C'|constant) }} -> {{ some_date|date(constant('DATE_W3C')) }} + * the "cycle" filter has been converted to a function: {{ ['odd', 'even']|cycle(i) }} -> {{ cycle(['odd', 'even'], i) }} + * the "for" tag does not support "joined by" anymore + * the "autoescape" first argument is now "true"/"false" (instead of "on"/"off") + * the "parent" tag has been replaced by a "parent" function ({{ parent() }} instead of {% parent %}) + * the "display" tag has been replaced by a "block" function ({{ block('title') }} instead of {% display title %}) + * removed the grammar and simple token parser (moved to the Twig Extensions repository) + +Changes: + + * added "needs_context" option for filters and functions (the context is then passed as a first argument) + * added global variables support + * made macros return their value instead of echoing directly (fixes calling a macro in sandbox mode) + * added the "from" tag to import macros as functions + * added support for functions (a function is just syntactic sugar for a getAttribute() call) + * made macros callable when sandbox mode is enabled + * added an exception when a macro uses a reserved name + * the "default" filter now uses the "empty" test instead of just checking for null + * added the "empty" test + +* 0.9.10 (2010-12-16) + +Backward incompatibilities: + + * The Escaper extension is enabled by default, which means that all displayed + variables are now automatically escaped. You can revert to the previous + behavior by removing the extension via $env->removeExtension('escaper') + or just set the 'autoescape' option to 'false'. + * removed the "without loop" attribute for the "for" tag (not needed anymore + as the Optimizer take care of that for most cases) + * arrays and hashes have now a different syntax + * arrays keep the same syntax with square brackets: [1, 2] + * hashes now use curly braces (["a": "b"] should now be written as {"a": "b"}) + * support for "arrays with keys" and "hashes without keys" is not supported anymore ([1, "foo": "bar"] or {"foo": "bar", 1}) + * the i18n extension is now part of the Twig Extensions repository + +Changes: + + * added the merge filter + * removed 'is_escaper' option for filters (a left over from the previous version) -- you must use 'is_safe' now instead + * fixed usage of operators as method names (like is, in, and not) + * changed the order of execution for node visitors + * fixed default() filter behavior when used with strict_variables set to on + * fixed filesystem loader compatibility with PHAR files + * enhanced error messages when an unexpected token is parsed in an expression + * fixed filename not being added to syntax error messages + * added the autoescape option to enable/disable autoescaping + * removed the newline after a comment (mimics PHP behavior) + * added a syntax error exception when parent block is used on a template that does not extend another one + * made the Escaper extension enabled by default + * fixed sandbox extension when used with auto output escaping + * fixed escaper when wrapping a Twig_Node_Print (the original class must be preserved) + * added an Optimizer extension (enabled by default; optimizes "for" loops and "raw" filters) + * added priority to node visitors + +* 0.9.9 (2010-11-28) + +Backward incompatibilities: + * the self special variable has been renamed to _self + * the odd and even filters are now tests: + {{ foo|odd }} must now be written {{ foo is odd }} + * the "safe" filter has been renamed to "raw" + * in Node classes, + sub-nodes are now accessed via getNode() (instead of property access) + attributes via getAttribute() (instead of array access) + * the urlencode filter had been renamed to url_encode + * the include tag now merges the passed variables with the current context by default + (the old behavior is still possible by adding the "only" keyword) + * moved Exceptions to Twig_Error_* (Twig_SyntaxError/Twig_RuntimeError are now Twig_Error_Syntax/Twig_Error_Runtime) + * removed support for {{ 1 < i < 3 }} (use {{ i > 1 and i < 3 }} instead) + * the "in" filter has been removed ({{ a|in(b) }} should now be written {{ a in b }}) + +Changes: + * added file and line to Twig_Error_Runtime exceptions thrown from Twig_Template + * changed trans tag to accept any variable for the plural count + * fixed sandbox mode (__toString() method check was not enforced if called implicitly from complex statements) + * added the ** (power) operator + * changed the algorithm used for parsing expressions + * added the spaceless tag + * removed trim_blocks option + * added support for is*() methods for attributes (foo.bar now looks for foo->getBar() or foo->isBar()) + * changed all exceptions to extend Twig_Error + * fixed unary expressions ({{ not(1 or 0) }}) + * fixed child templates (with an extend tag) that uses one or more imports + * added support for {{ 1 not in [2, 3] }} (more readable than the current {{ not (1 in [2, 3]) }}) + * escaping has been rewritten + * the implementation of template inheritance has been rewritten + (blocks can now be called individually and still work with inheritance) + * fixed error handling for if tag when a syntax error occurs within a subparse process + * added a way to implement custom logic for resolving token parsers given a tag name + * fixed js escaper to be stricter (now uses a whilelist-based js escaper) + * added the following filers: "constant", "trans", "replace", "json_encode" + * added a "constant" test + * fixed objects with __toString() not being autoescaped + * fixed subscript expressions when calling __call() (methods now keep the case) + * added "test" feature (accessible via the "is" operator) + * removed the debug tag (should be done in an extension) + * fixed trans tag when no vars are used in plural form + * fixed race condition when writing template cache + * added the special _charset variable to reference the current charset + * added the special _context variable to reference the current context + * renamed self to _self (to avoid conflict) + * fixed Twig_Template::getAttribute() for protected properties + +* 0.9.8 (2010-06-28) + +Backward incompatibilities: + * the trans tag plural count is now attached to the plural tag: + old: `{% trans count %}...{% plural %}...{% endtrans %}` + new: `{% trans %}...{% plural count %}...{% endtrans %}` + + * added a way to translate strings coming from a variable ({% trans var %}) + * fixed trans tag when used with the Escaper extension + * fixed default cache umask + * removed Twig_Template instances from the debug tag output + * fixed objects with __isset() defined + * fixed set tag when used with a capture + * fixed type hinting for Twig_Environment::addFilter() method + +* 0.9.7 (2010-06-12) + +Backward incompatibilities: + * changed 'as' to '=' for the set tag ({% set title as "Title" %} must now be {% set title = "Title" %}) + * removed the sandboxed attribute of the include tag (use the new sandbox tag instead) + * refactored the Node system (if you have custom nodes, you will have to update them to use the new API) + + * added self as a special variable that refers to the current template (useful for importing macros from the current template) + * added Twig_Template instance support to the include tag + * added support for dynamic and conditional inheritance ({% extends some_var %} and {% extends standalone ? "minimum" : "base" %}) + * added a grammar sub-framework to ease the creation of custom tags + * fixed the for tag for large arrays (some loop variables are now only available for arrays and objects that implement the Countable interface) + * removed the Twig_Resource::resolveMissingFilter() method + * fixed the filter tag which did not apply filtering to included files + * added a bunch of unit tests + * added a bunch of phpdoc + * added a sandbox tag in the sandbox extension + * changed the date filter to support any date format supported by DateTime + * added strict_variable setting to throw an exception when an invalid variable is used in a template (disabled by default) + * added the lexer, parser, and compiler as arguments to the Twig_Environment constructor + * changed the cache option to only accepts an explicit path to a cache directory or false + * added a way to add token parsers, filters, and visitors without creating an extension + * added three interfaces: Twig_NodeInterface, Twig_TokenParserInterface, and Twig_FilterInterface + * changed the generated code to match the new coding standards + * fixed sandbox mode (__toString() method check was not enforced if called implicitly from a simple statement like {{ article }}) + * added an exception when a child template has a non-empty body (as it is always ignored when rendering) + +* 0.9.6 (2010-05-12) + + * fixed variables defined outside a loop and for which the value changes in a for loop + * fixed the test suite for PHP 5.2 and older versions of PHPUnit + * added support for __call() in expression resolution + * fixed node visiting for macros (macros are now visited by visitors as any other node) + * fixed nested block definitions with a parent call (rarely useful but nonetheless supported now) + * added the cycle filter + * fixed the Lexer when mbstring.func_overload is used with an mbstring.internal_encoding different from ASCII + * added a long-syntax for the set tag ({% set foo %}...{% endset %}) + * unit tests are now powered by PHPUnit + * added support for gettext via the `i18n` extension + * fixed twig_capitalize_string_filter() and fixed twig_length_filter() when used with UTF-8 values + * added a more useful exception if an if tag is not closed properly + * added support for escaping strategy in the autoescape tag + * fixed lexer when a template has a big chunk of text between/in a block + +* 0.9.5 (2010-01-20) + +As for any new release, don't forget to remove all cached templates after +upgrading. + +If you have defined custom filters, you MUST upgrade them for this release. To +upgrade, replace "array" with "new Twig_Filter_Function", and replace the +environment constant by the "needs_environment" option: + + // before + 'even' => array('twig_is_even_filter', false), + 'escape' => array('twig_escape_filter', true), + + // after + 'even' => new Twig_Filter_Function('twig_is_even_filter'), + 'escape' => new Twig_Filter_Function('twig_escape_filter', array('needs_environment' => true)), + +If you have created NodeTransformer classes, you will need to upgrade them to +the new interface (please note that the interface is not yet considered +stable). + + * fixed list nodes that did not extend the Twig_NodeListInterface + * added the "without loop" option to the for tag (it disables the generation of the loop variable) + * refactored node transformers to node visitors + * fixed automatic-escaping for blocks + * added a way to specify variables to pass to an included template + * changed the automatic-escaping rules to be more sensible and more configurable in custom filters (the documentation lists all the rules) + * improved the filter system to allow object methods to be used as filters + * changed the Array and String loaders to actually make use of the cache mechanism + * included the default filter function definitions in the extension class files directly (Core, Escaper) + * added the // operator (like the floor() PHP function) + * added the .. operator (as a syntactic sugar for the range filter when the step is 1) + * added the in operator (as a syntactic sugar for the in filter) + * added the following filters in the Core extension: in, range + * added support for arrays (same behavior as in PHP, a mix between lists and dictionaries, arrays and hashes) + * enhanced some error messages to provide better feedback in case of parsing errors + +* 0.9.4 (2009-12-02) + +If you have custom loaders, you MUST upgrade them for this release: The +Twig_Loader base class has been removed, and the Twig_LoaderInterface has also +been changed (see the source code for more information or the documentation). + + * added support for DateTime instances for the date filter + * fixed loop.last when the array only has one item + * made it possible to insert newlines in tag and variable blocks + * fixed a bug when a literal '\n' were present in a template text + * fixed bug when the filename of a template contains */ + * refactored loaders + +* 0.9.3 (2009-11-11) + +This release is NOT backward compatible with the previous releases. + + The loaders do not take the cache and autoReload arguments anymore. Instead, + the Twig_Environment class has two new options: cache and auto_reload. + Upgrading your code means changing this kind of code: + + $loader = new Twig_Loader_Filesystem('/path/to/templates', '/path/to/compilation_cache', true); + $twig = new Twig_Environment($loader); + + to something like this: + + $loader = new Twig_Loader_Filesystem('/path/to/templates'); + $twig = new Twig_Environment($loader, array( + 'cache' => '/path/to/compilation_cache', + 'auto_reload' => true, + )); + + * deprecated the "items" filter as it is not needed anymore + * made cache and auto_reload options of Twig_Environment instead of arguments of Twig_Loader + * optimized template loading speed + * removed output when an error occurs in a template and render() is used + * made major speed improvements for loops (up to 300% on even the smallest loops) + * added properties as part of the sandbox mode + * added public properties support (obj.item can now be the item property on the obj object) + * extended set tag to support expression as value ({% set foo as 'foo' ~ 'bar' %} ) + * fixed bug when \ was used in HTML + +* 0.9.2 (2009-10-29) + + * made some speed optimizations + * changed the cache extension to .php + * added a js escaping strategy + * added support for short block tag + * changed the filter tag to allow chained filters + * made lexer more flexible as you can now change the default delimiters + * added set tag + * changed default directory permission when cache dir does not exist (more secure) + * added macro support + * changed filters first optional argument to be a Twig_Environment instance instead of a Twig_Template instance + * made Twig_Autoloader::autoload() a static method + * avoid writing template file if an error occurs + * added $ escaping when outputting raw strings + * enhanced some error messages to ease debugging + * fixed empty cache files when the template contains an error + +* 0.9.1 (2009-10-14) + + * fixed a bug in PHP 5.2.6 + * fixed numbers with one than one decimal + * added support for method calls with arguments ({{ foo.bar('a', 43) }}) + * made small speed optimizations + * made minor tweaks to allow better extensibility and flexibility + +* 0.9.0 (2009-10-12) + + * Initial release diff --git a/system/vendor/twig/twig/LICENSE b/system/vendor/twig/twig/LICENSE new file mode 100644 index 0000000..b6e17a1 --- /dev/null +++ b/system/vendor/twig/twig/LICENSE @@ -0,0 +1,31 @@ +Copyright (c) 2009-2017 by the Twig Team. + +Some 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. + + * The names of the contributors may not 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/system/vendor/twig/twig/README.rst b/system/vendor/twig/twig/README.rst new file mode 100644 index 0000000..81737b0 --- /dev/null +++ b/system/vendor/twig/twig/README.rst @@ -0,0 +1,15 @@ +Twig, the flexible, fast, and secure template language for PHP +============================================================== + +Twig is a template language for PHP, released under the new BSD license (code +and documentation). + +Twig uses a syntax similar to the Django and Jinja template languages which +inspired the Twig runtime environment. + +More Information +---------------- + +Read the `documentation`_ for more information. + +.. _documentation: http://twig.sensiolabs.org/documentation diff --git a/system/vendor/twig/twig/composer.json b/system/vendor/twig/twig/composer.json new file mode 100644 index 0000000..b89f14c --- /dev/null +++ b/system/vendor/twig/twig/composer.json @@ -0,0 +1,47 @@ +{ + "name": "twig/twig", + "type": "library", + "description": "Twig, the flexible, fast, and secure template language for PHP", + "keywords": ["templating"], + "homepage": "http://twig.sensiolabs.org", + "license": "BSD-3-Clause", + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com", + "homepage": "http://fabien.potencier.org", + "role": "Lead Developer" + }, + { + "name": "Twig Team", + "homepage": "http://twig.sensiolabs.org/contributors", + "role": "Contributors" + }, + { + "name": "Armin Ronacher", + "email": "armin.ronacher@active-4.com", + "role": "Project Founder" + } + ], + "support": { + "forum": "https://groups.google.com/forum/#!forum/twig-users" + }, + "require": { + "php": ">=5.2.7" + }, + "require-dev": { + "symfony/phpunit-bridge": "~3.3@dev", + "symfony/debug": "~2.7", + "psr/container": "^1.0" + }, + "autoload": { + "psr-0" : { + "Twig_" : "lib/" + } + }, + "extra": { + "branch-alias": { + "dev-master": "1.33-dev" + } + } +} diff --git a/system/vendor/twig/twig/doc/advanced.rst b/system/vendor/twig/twig/doc/advanced.rst new file mode 100644 index 0000000..5e69e50 --- /dev/null +++ b/system/vendor/twig/twig/doc/advanced.rst @@ -0,0 +1,962 @@ +Extending Twig +============== + +.. caution:: + + This section describes how to extend Twig as of **Twig 1.12**. If you are + using an older version, read the :doc:`legacy` chapter + instead. + +Twig can be extended in many ways; you can add extra tags, filters, tests, +operators, global variables, and functions. You can even extend the parser +itself with node visitors. + +.. note:: + + The first section of this chapter describes how to extend Twig easily. If + you want to reuse your changes in different projects or if you want to + share them with others, you should then create an extension as described + in the following section. + +.. caution:: + + When extending Twig without creating an extension, Twig won't be able to + recompile your templates when the PHP code is updated. To see your changes + in real-time, either disable template caching or package your code into an + extension (see the next section of this chapter). + +Before extending Twig, you must understand the differences between all the +different possible extension points and when to use them. + +First, remember that Twig has two main language constructs: + +* ``{{ }}``: used to print the result of an expression evaluation; + +* ``{% %}``: used to execute statements. + +To understand why Twig exposes so many extension points, let's see how to +implement a *Lorem ipsum* generator (it needs to know the number of words to +generate). + +You can use a ``lipsum`` *tag*: + +.. code-block:: jinja + + {% lipsum 40 %} + +That works, but using a tag for ``lipsum`` is not a good idea for at least +three main reasons: + +* ``lipsum`` is not a language construct; +* The tag outputs something; +* The tag is not flexible as you cannot use it in an expression: + + .. code-block:: jinja + + {{ 'some text' ~ {% lipsum 40 %} ~ 'some more text' }} + +In fact, you rarely need to create tags; and that's good news because tags are +the most complex extension point of Twig. + +Now, let's use a ``lipsum`` *filter*: + +.. code-block:: jinja + + {{ 40|lipsum }} + +Again, it works, but it looks weird. A filter transforms the passed value to +something else but here we use the value to indicate the number of words to +generate (so, ``40`` is an argument of the filter, not the value we want to +transform). + +Next, let's use a ``lipsum`` *function*: + +.. code-block:: jinja + + {{ lipsum(40) }} + +Here we go. For this specific example, the creation of a function is the +extension point to use. And you can use it anywhere an expression is accepted: + +.. code-block:: jinja + + {{ 'some text' ~ lipsum(40) ~ 'some more text' }} + + {% set lipsum = lipsum(40) %} + +Last but not the least, you can also use a *global* object with a method able +to generate lorem ipsum text: + +.. code-block:: jinja + + {{ text.lipsum(40) }} + +As a rule of thumb, use functions for frequently used features and global +objects for everything else. + +Keep in mind the following when you want to extend Twig: + +========== ========================== ========== ========================= +What? Implementation difficulty? How often? When? +========== ========================== ========== ========================= +*macro* trivial frequent Content generation +*global* trivial frequent Helper object +*function* trivial frequent Content generation +*filter* trivial frequent Value transformation +*tag* complex rare DSL language construct +*test* trivial rare Boolean decision +*operator* trivial rare Values transformation +========== ========================== ========== ========================= + +Globals +------- + +A global variable is like any other template variable, except that it's +available in all templates and macros:: + + $twig = new Twig_Environment($loader); + $twig->addGlobal('text', new Text()); + +You can then use the ``text`` variable anywhere in a template: + +.. code-block:: jinja + + {{ text.lipsum(40) }} + +Filters +------- + +Creating a filter is as simple as associating a name with a PHP callable:: + + // an anonymous function + $filter = new Twig_SimpleFilter('rot13', function ($string) { + return str_rot13($string); + }); + + // or a simple PHP function + $filter = new Twig_SimpleFilter('rot13', 'str_rot13'); + + // or a class static method + $filter = new Twig_SimpleFilter('rot13', array('SomeClass', 'rot13Filter')); + $filter = new Twig_SimpleFilter('rot13', 'SomeClass::rot13Filter'); + + // or a class method + $filter = new Twig_SimpleFilter('rot13', array($this, 'rot13Filter')); + // the one below needs a runtime implementation (see below for more information) + $filter = new Twig_SimpleFilter('rot13', array('SomeClass', 'rot13Filter')); + +The first argument passed to the ``Twig_SimpleFilter`` constructor is the name +of the filter you will use in templates and the second one is the PHP callable +to associate with it. + +Then, add the filter to your Twig environment:: + + $twig = new Twig_Environment($loader); + $twig->addFilter($filter); + +And here is how to use it in a template: + +.. code-block:: jinja + + {{ 'Twig'|rot13 }} + + {# will output Gjvt #} + +When called by Twig, the PHP callable receives the left side of the filter +(before the pipe ``|``) as the first argument and the extra arguments passed +to the filter (within parentheses ``()``) as extra arguments. + +For instance, the following code: + +.. code-block:: jinja + + {{ 'TWIG'|lower }} + {{ now|date('d/m/Y') }} + +is compiled to something like the following:: + + + + +The ``Twig_SimpleFilter`` class takes an array of options as its last +argument:: + + $filter = new Twig_SimpleFilter('rot13', 'str_rot13', $options); + +Environment-aware Filters +~~~~~~~~~~~~~~~~~~~~~~~~~ + +If you want to access the current environment instance in your filter, set the +``needs_environment`` option to ``true``; Twig will pass the current +environment as the first argument to the filter call:: + + $filter = new Twig_SimpleFilter('rot13', function (Twig_Environment $env, $string) { + // get the current charset for instance + $charset = $env->getCharset(); + + return str_rot13($string); + }, array('needs_environment' => true)); + +Context-aware Filters +~~~~~~~~~~~~~~~~~~~~~ + +If you want to access the current context in your filter, set the +``needs_context`` option to ``true``; Twig will pass the current context as +the first argument to the filter call (or the second one if +``needs_environment`` is also set to ``true``):: + + $filter = new Twig_SimpleFilter('rot13', function ($context, $string) { + // ... + }, array('needs_context' => true)); + + $filter = new Twig_SimpleFilter('rot13', function (Twig_Environment $env, $context, $string) { + // ... + }, array('needs_context' => true, 'needs_environment' => true)); + +Automatic Escaping +~~~~~~~~~~~~~~~~~~ + +If automatic escaping is enabled, the output of the filter may be escaped +before printing. If your filter acts as an escaper (or explicitly outputs HTML +or JavaScript code), you will want the raw output to be printed. In such a +case, set the ``is_safe`` option:: + + $filter = new Twig_SimpleFilter('nl2br', 'nl2br', array('is_safe' => array('html'))); + +Some filters may need to work on input that is already escaped or safe, for +example when adding (safe) HTML tags to originally unsafe output. In such a +case, set the ``pre_escape`` option to escape the input data before it is run +through your filter:: + + $filter = new Twig_SimpleFilter('somefilter', 'somefilter', array('pre_escape' => 'html', 'is_safe' => array('html'))); + +Variadic Filters +~~~~~~~~~~~~~~~~ + +.. versionadded:: 1.19 + Support for variadic filters was added in Twig 1.19. + +When a filter should accept an arbitrary number of arguments, set the +``is_variadic`` option to ``true``; Twig will pass the extra arguments as the +last argument to the filter call as an array:: + + $filter = new Twig_SimpleFilter('thumbnail', function ($file, array $options = array()) { + // ... + }, array('is_variadic' => true)); + +Be warned that named arguments passed to a variadic filter cannot be checked +for validity as they will automatically end up in the option array. + +Dynamic Filters +~~~~~~~~~~~~~~~ + +A filter name containing the special ``*`` character is a dynamic filter as +the ``*`` can be any string:: + + $filter = new Twig_SimpleFilter('*_path', function ($name, $arguments) { + // ... + }); + +The following filters will be matched by the above defined dynamic filter: + +* ``product_path`` +* ``category_path`` + +A dynamic filter can define more than one dynamic parts:: + + $filter = new Twig_SimpleFilter('*_path_*', function ($name, $suffix, $arguments) { + // ... + }); + +The filter will receive all dynamic part values before the normal filter +arguments, but after the environment and the context. For instance, a call to +``'foo'|a_path_b()`` will result in the following arguments to be passed to +the filter: ``('a', 'b', 'foo')``. + +Deprecated Filters +~~~~~~~~~~~~~~~~~~ + +.. versionadded:: 1.21 + Support for deprecated filters was added in Twig 1.21. + +You can mark a filter as being deprecated by setting the ``deprecated`` option +to ``true``. You can also give an alternative filter that replaces the +deprecated one when that makes sense:: + + $filter = new Twig_SimpleFilter('obsolete', function () { + // ... + }, array('deprecated' => true, 'alternative' => 'new_one')); + +When a filter is deprecated, Twig emits a deprecation notice when compiling a +template using it. See :ref:`deprecation-notices` for more information. + +Functions +--------- + +Functions are defined in the exact same way as filters, but you need to create +an instance of ``Twig_SimpleFunction``:: + + $twig = new Twig_Environment($loader); + $function = new Twig_SimpleFunction('function_name', function () { + // ... + }); + $twig->addFunction($function); + +Functions support the same features as filters, except for the ``pre_escape`` +and ``preserves_safety`` options. + +Tests +----- + +Tests are defined in the exact same way as filters and functions, but you need +to create an instance of ``Twig_SimpleTest``:: + + $twig = new Twig_Environment($loader); + $test = new Twig_SimpleTest('test_name', function () { + // ... + }); + $twig->addTest($test); + +Tests allow you to create custom application specific logic for evaluating +boolean conditions. As a simple example, let's create a Twig test that checks if +objects are 'red':: + + $twig = new Twig_Environment($loader); + $test = new Twig_SimpleTest('red', function ($value) { + if (isset($value->color) && $value->color == 'red') { + return true; + } + if (isset($value->paint) && $value->paint == 'red') { + return true; + } + return false; + }); + $twig->addTest($test); + +Test functions should always return true/false. + +When creating tests you can use the ``node_class`` option to provide custom test +compilation. This is useful if your test can be compiled into PHP primitives. +This is used by many of the tests built into Twig:: + + $twig = new Twig_Environment($loader); + $test = new Twig_SimpleTest( + 'odd', + null, + array('node_class' => 'Twig_Node_Expression_Test_Odd')); + $twig->addTest($test); + + class Twig_Node_Expression_Test_Odd extends Twig_Node_Expression_Test + { + public function compile(Twig_Compiler $compiler) + { + $compiler + ->raw('(') + ->subcompile($this->getNode('node')) + ->raw(' % 2 == 1') + ->raw(')') + ; + } + } + +The above example shows how you can create tests that use a node class. The +node class has access to one sub-node called 'node'. This sub-node contains the +value that is being tested. When the ``odd`` filter is used in code such as: + +.. code-block:: jinja + + {% if my_value is odd %} + +The ``node`` sub-node will contain an expression of ``my_value``. Node-based +tests also have access to the ``arguments`` node. This node will contain the +various other arguments that have been provided to your test. + +If you want to pass a variable number of positional or named arguments to the +test, set the ``is_variadic`` option to ``true``. Tests also support dynamic +name feature as filters and functions. + +Tags +---- + +One of the most exciting features of a template engine like Twig is the +possibility to define new language constructs. This is also the most complex +feature as you need to understand how Twig's internals work. + +Let's create a simple ``set`` tag that allows the definition of simple +variables from within a template. The tag can be used like follows: + +.. code-block:: jinja + + {% set name = "value" %} + + {{ name }} + + {# should output value #} + +.. note:: + + The ``set`` tag is part of the Core extension and as such is always + available. The built-in version is slightly more powerful and supports + multiple assignments by default (cf. the template designers chapter for + more information). + +Three steps are needed to define a new tag: + +* Defining a Token Parser class (responsible for parsing the template code); + +* Defining a Node class (responsible for converting the parsed code to PHP); + +* Registering the tag. + +Registering a new tag +~~~~~~~~~~~~~~~~~~~~~ + +Adding a tag is as simple as calling the ``addTokenParser`` method on the +``Twig_Environment`` instance:: + + $twig = new Twig_Environment($loader); + $twig->addTokenParser(new Project_Set_TokenParser()); + +Defining a Token Parser +~~~~~~~~~~~~~~~~~~~~~~~ + +Now, let's see the actual code of this class:: + + class Project_Set_TokenParser extends Twig_TokenParser + { + public function parse(Twig_Token $token) + { + $parser = $this->parser; + $stream = $parser->getStream(); + + $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); + $stream->expect(Twig_Token::OPERATOR_TYPE, '='); + $value = $parser->getExpressionParser()->parseExpression(); + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + return new Project_Set_Node($name, $value, $token->getLine(), $this->getTag()); + } + + public function getTag() + { + return 'set'; + } + } + +The ``getTag()`` method must return the tag we want to parse, here ``set``. + +The ``parse()`` method is invoked whenever the parser encounters a ``set`` +tag. It should return a ``Twig_Node`` instance that represents the node (the +``Project_Set_Node`` calls creating is explained in the next section). + +The parsing process is simplified thanks to a bunch of methods you can call +from the token stream (``$this->parser->getStream()``): + +* ``getCurrent()``: Gets the current token in the stream. + +* ``next()``: Moves to the next token in the stream, *but returns the old one*. + +* ``test($type)``, ``test($value)`` or ``test($type, $value)``: Determines whether + the current token is of a particular type or value (or both). The value may be an + array of several possible values. + +* ``expect($type[, $value[, $message]])``: If the current token isn't of the given + type/value a syntax error is thrown. Otherwise, if the type and value are correct, + the token is returned and the stream moves to the next token. + +* ``look()``: Looks a the next token without consuming it. + +Parsing expressions is done by calling the ``parseExpression()`` like we did for +the ``set`` tag. + +.. tip:: + + Reading the existing ``TokenParser`` classes is the best way to learn all + the nitty-gritty details of the parsing process. + +Defining a Node +~~~~~~~~~~~~~~~ + +The ``Project_Set_Node`` class itself is rather simple:: + + class Project_Set_Node extends Twig_Node + { + public function __construct($name, Twig_Node_Expression $value, $line, $tag = null) + { + parent::__construct(array('value' => $value), array('name' => $name), $line, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write('$context[\''.$this->getAttribute('name').'\'] = ') + ->subcompile($this->getNode('value')) + ->raw(";\n") + ; + } + } + +The compiler implements a fluid interface and provides methods that helps the +developer generate beautiful and readable PHP code: + +* ``subcompile()``: Compiles a node. + +* ``raw()``: Writes the given string as is. + +* ``write()``: Writes the given string by adding indentation at the beginning + of each line. + +* ``string()``: Writes a quoted string. + +* ``repr()``: Writes a PHP representation of a given value (see + ``Twig_Node_For`` for a usage example). + +* ``addDebugInfo()``: Adds the line of the original template file related to + the current node as a comment. + +* ``indent()``: Indents the generated code (see ``Twig_Node_Block`` for a + usage example). + +* ``outdent()``: Outdents the generated code (see ``Twig_Node_Block`` for a + usage example). + +.. _creating_extensions: + +Creating an Extension +--------------------- + +The main motivation for writing an extension is to move often used code into a +reusable class like adding support for internationalization. An extension can +define tags, filters, tests, operators, global variables, functions, and node +visitors. + +Most of the time, it is useful to create a single extension for your project, +to host all the specific tags and filters you want to add to Twig. + +.. tip:: + + When packaging your code into an extension, Twig is smart enough to + recompile your templates whenever you make a change to it (when + ``auto_reload`` is enabled). + +.. note:: + + Before writing your own extensions, have a look at the Twig official + extension repository: http://github.com/twigphp/Twig-extensions. + +An extension is a class that implements the following interface:: + + interface Twig_ExtensionInterface + { + /** + * Initializes the runtime environment. + * + * This is where you can load some file that contains filter functions for instance. + * + * @deprecated since 1.23 (to be removed in 2.0), implement Twig_Extension_InitRuntimeInterface instead + */ + function initRuntime(Twig_Environment $environment); + + /** + * Returns the token parser instances to add to the existing list. + * + * @return (Twig_TokenParserInterface|Twig_TokenParserBrokerInterface)[] + */ + function getTokenParsers(); + + /** + * Returns the node visitor instances to add to the existing list. + * + * @return Twig_NodeVisitorInterface[] + */ + function getNodeVisitors(); + + /** + * Returns a list of filters to add to the existing list. + * + * @return Twig_SimpleFilter[] + */ + function getFilters(); + + /** + * Returns a list of tests to add to the existing list. + * + * @return Twig_SimpleTest[] + */ + function getTests(); + + /** + * Returns a list of functions to add to the existing list. + * + * @return Twig_SimpleFunction[] + */ + function getFunctions(); + + /** + * Returns a list of operators to add to the existing list. + * + * @return array First array of unary operators, second array of binary operators + */ + function getOperators(); + + /** + * Returns a list of global variables to add to the existing list. + * + * @return array An array of global variables + * + * @deprecated since 1.23 (to be removed in 2.0), implement Twig_Extension_GlobalsInterface instead + */ + function getGlobals(); + + /** + * Returns the name of the extension. + * + * @return string The extension name + * + * @deprecated since 1.26 (to be removed in 2.0), not used anymore internally + */ + function getName(); + } + +To keep your extension class clean and lean, inherit from the built-in +``Twig_Extension`` class instead of implementing the interface as it provides +empty implementations for all methods: + + class Project_Twig_Extension extends Twig_Extension + { + } + +Of course, this extension does nothing for now. We will customize it in the +next sections. + +.. note:: + + Prior to Twig 1.26, you must implement the ``getName()`` method which must + return a unique identifier for the extension. + +Twig does not care where you save your extension on the filesystem, as all +extensions must be registered explicitly to be available in your templates. + +You can register an extension by using the ``addExtension()`` method on your +main ``Environment`` object:: + + $twig = new Twig_Environment($loader); + $twig->addExtension(new Project_Twig_Extension()); + +.. tip:: + + The Twig core extensions are great examples of how extensions work. + +Globals +~~~~~~~ + +Global variables can be registered in an extension via the ``getGlobals()`` +method:: + + class Project_Twig_Extension extends Twig_Extension implements Twig_Extension_GlobalsInterface + { + public function getGlobals() + { + return array( + 'text' => new Text(), + ); + } + + // ... + } + +Functions +~~~~~~~~~ + +Functions can be registered in an extension via the ``getFunctions()`` +method:: + + class Project_Twig_Extension extends Twig_Extension + { + public function getFunctions() + { + return array( + new Twig_SimpleFunction('lipsum', 'generate_lipsum'), + ); + } + + // ... + } + +Filters +~~~~~~~ + +To add a filter to an extension, you need to override the ``getFilters()`` +method. This method must return an array of filters to add to the Twig +environment:: + + class Project_Twig_Extension extends Twig_Extension + { + public function getFilters() + { + return array( + new Twig_SimpleFilter('rot13', 'str_rot13'), + ); + } + + // ... + } + +Tags +~~~~ + +Adding a tag in an extension can be done by overriding the +``getTokenParsers()`` method. This method must return an array of tags to add +to the Twig environment:: + + class Project_Twig_Extension extends Twig_Extension + { + public function getTokenParsers() + { + return array(new Project_Set_TokenParser()); + } + + // ... + } + +In the above code, we have added a single new tag, defined by the +``Project_Set_TokenParser`` class. The ``Project_Set_TokenParser`` class is +responsible for parsing the tag and compiling it to PHP. + +Operators +~~~~~~~~~ + +The ``getOperators()`` methods lets you add new operators. Here is how to add +``!``, ``||``, and ``&&`` operators:: + + class Project_Twig_Extension extends Twig_Extension + { + public function getOperators() + { + return array( + array( + '!' => array('precedence' => 50, 'class' => 'Twig_Node_Expression_Unary_Not'), + ), + array( + '||' => array('precedence' => 10, 'class' => 'Twig_Node_Expression_Binary_Or', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '&&' => array('precedence' => 15, 'class' => 'Twig_Node_Expression_Binary_And', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + ), + ); + } + + // ... + } + +Tests +~~~~~ + +The ``getTests()`` method lets you add new test functions:: + + class Project_Twig_Extension extends Twig_Extension + { + public function getTests() + { + return array( + new Twig_SimpleTest('even', 'twig_test_even'), + ); + } + + // ... + } + +Definition vs Runtime +~~~~~~~~~~~~~~~~~~~~~ + +Twig filters, functions, and tests runtime implementations can be defined as +any valid PHP callable: + +* **functions/static methods**: Simple to implement and fast (used by all Twig + core extensions); but it is hard for the runtime to depend on external + objects; + +* **closures**: Simple to implement; + +* **object methods**: More flexible and required if your runtime code depends + on external objects. + +The simplest way to use methods is to define them on the extension itself:: + + class Project_Twig_Extension extends Twig_Extension + { + private $rot13Provider; + + public function __construct($rot13Provider) + { + $this->rot13Provider = $rot13Provider; + } + + public function getFunctions() + { + return array( + new Twig_SimpleFunction('rot13', array($this, 'rot13')), + ); + } + + public function rot13($value) + { + return $rot13Provider->rot13($value); + } + } + +This is very convenient but not recommended as it makes template compilation +depend on runtime dependencies even if they are not needed (think for instance +as a dependency that connects to a database engine). + +As of Twig 1.26, you can easily decouple the extension definitions from their +runtime implementations by registering a ``Twig_RuntimeLoaderInterface`` +instance on the environment that knows how to instantiate such runtime classes +(runtime classes must be autoload-able):: + + class RuntimeLoader implements Twig_RuntimeLoaderInterface + { + public function load($class) + { + // implement the logic to create an instance of $class + // and inject its dependencies + // most of the time, it means using your dependency injection container + if ('Project_Twig_RuntimeExtension' === $class) { + return new $class(new Rot13Provider()); + } else { + // ... + } + } + } + + $twig->addRuntimeLoader(new RuntimeLoader()); + +.. note:: + + As of Twig 1.32, Twig comes with a PSR-11 compatible runtime loader + (``Twig_ContainerRuntimeLoader``) that works on PHP 5.3+. + +It is now possible to move the runtime logic to a new +``Project_Twig_RuntimeExtension`` class and use it directly in the extension:: + + class Project_Twig_RuntimeExtension extends Twig_Extension + { + private $rot13Provider; + + public function __construct($rot13Provider) + { + $this->rot13Provider = $rot13Provider; + } + + public function rot13($value) + { + return $rot13Provider->rot13($value); + } + } + + class Project_Twig_Extension extends Twig_Extension + { + public function getFunctions() + { + return array( + new Twig_SimpleFunction('rot13', array('Project_Twig_RuntimeExtension', 'rot13')), + // or + new Twig_SimpleFunction('rot13', 'Project_Twig_RuntimeExtension::rot13'), + ); + } + } + +Overloading +----------- + +To overload an already defined filter, test, operator, global variable, or +function, re-define it in an extension and register it **as late as +possible** (order matters):: + + class MyCoreExtension extends Twig_Extension + { + public function getFilters() + { + return array( + new Twig_SimpleFilter('date', array($this, 'dateFilter')), + ); + } + + public function dateFilter($timestamp, $format = 'F j, Y H:i') + { + // do something different from the built-in date filter + } + } + + $twig = new Twig_Environment($loader); + $twig->addExtension(new MyCoreExtension()); + +Here, we have overloaded the built-in ``date`` filter with a custom one. + +If you do the same on the ``Twig_Environment`` itself, beware that it takes +precedence over any other registered extensions:: + + $twig = new Twig_Environment($loader); + $twig->addFilter(new Twig_SimpleFilter('date', function ($timestamp, $format = 'F j, Y H:i') { + // do something different from the built-in date filter + })); + // the date filter will come from the above registration, not + // from the registered extension below + $twig->addExtension(new MyCoreExtension()); + +.. caution:: + + Note that overloading the built-in Twig elements is not recommended as it + might be confusing. + +Testing an Extension +-------------------- + +Functional Tests +~~~~~~~~~~~~~~~~ + +You can create functional tests for extensions simply by creating the +following file structure in your test directory:: + + Fixtures/ + filters/ + foo.test + bar.test + functions/ + foo.test + bar.test + tags/ + foo.test + bar.test + IntegrationTest.php + +The ``IntegrationTest.php`` file should look like this:: + + class Project_Tests_IntegrationTest extends Twig_Test_IntegrationTestCase + { + public function getExtensions() + { + return array( + new Project_Twig_Extension1(), + new Project_Twig_Extension2(), + ); + } + + public function getFixturesDir() + { + return dirname(__FILE__).'/Fixtures/'; + } + } + +Fixtures examples can be found within the Twig repository +`tests/Twig/Fixtures`_ directory. + +Node Tests +~~~~~~~~~~ + +Testing the node visitors can be complex, so extend your test cases from +``Twig_Test_NodeTestCase``. Examples can be found in the Twig repository +`tests/Twig/Node`_ directory. + +.. _`rot13`: http://www.php.net/manual/en/function.str-rot13.php +.. _`tests/Twig/Fixtures`: https://github.com/twigphp/Twig/tree/master/test/Twig/Tests/Fixtures +.. _`tests/Twig/Node`: https://github.com/twigphp/Twig/tree/master/test/Twig/Tests/Node diff --git a/system/vendor/twig/twig/doc/advanced_legacy.rst b/system/vendor/twig/twig/doc/advanced_legacy.rst new file mode 100644 index 0000000..33e9f45 --- /dev/null +++ b/system/vendor/twig/twig/doc/advanced_legacy.rst @@ -0,0 +1,885 @@ +Extending Twig +============== + +.. caution:: + + This section describes how to extends Twig for versions **older than + 1.12**. If you are using a newer version, read the :doc:`newer` + chapter instead. + +Twig can be extended in many ways; you can add extra tags, filters, tests, +operators, global variables, and functions. You can even extend the parser +itself with node visitors. + +.. note:: + + The first section of this chapter describes how to extend Twig easily. If + you want to reuse your changes in different projects or if you want to + share them with others, you should then create an extension as described + in the following section. + +.. caution:: + + When extending Twig by calling methods on the Twig environment instance, + Twig won't be able to recompile your templates when the PHP code is + updated. To see your changes in real-time, either disable template caching + or package your code into an extension (see the next section of this + chapter). + +Before extending Twig, you must understand the differences between all the +different possible extension points and when to use them. + +First, remember that Twig has two main language constructs: + +* ``{{ }}``: used to print the result of an expression evaluation; + +* ``{% %}``: used to execute statements. + +To understand why Twig exposes so many extension points, let's see how to +implement a *Lorem ipsum* generator (it needs to know the number of words to +generate). + +You can use a ``lipsum`` *tag*: + +.. code-block:: jinja + + {% lipsum 40 %} + +That works, but using a tag for ``lipsum`` is not a good idea for at least +three main reasons: + +* ``lipsum`` is not a language construct; +* The tag outputs something; +* The tag is not flexible as you cannot use it in an expression: + + .. code-block:: jinja + + {{ 'some text' ~ {% lipsum 40 %} ~ 'some more text' }} + +In fact, you rarely need to create tags; and that's good news because tags are +the most complex extension point of Twig. + +Now, let's use a ``lipsum`` *filter*: + +.. code-block:: jinja + + {{ 40|lipsum }} + +Again, it works, but it looks weird. A filter transforms the passed value to +something else but here we use the value to indicate the number of words to +generate (so, ``40`` is an argument of the filter, not the value we want to +transform). + +Next, let's use a ``lipsum`` *function*: + +.. code-block:: jinja + + {{ lipsum(40) }} + +Here we go. For this specific example, the creation of a function is the +extension point to use. And you can use it anywhere an expression is accepted: + +.. code-block:: jinja + + {{ 'some text' ~ ipsum(40) ~ 'some more text' }} + + {% set ipsum = ipsum(40) %} + +Last but not the least, you can also use a *global* object with a method able +to generate lorem ipsum text: + +.. code-block:: jinja + + {{ text.lipsum(40) }} + +As a rule of thumb, use functions for frequently used features and global +objects for everything else. + +Keep in mind the following when you want to extend Twig: + +========== ========================== ========== ========================= +What? Implementation difficulty? How often? When? +========== ========================== ========== ========================= +*macro* trivial frequent Content generation +*global* trivial frequent Helper object +*function* trivial frequent Content generation +*filter* trivial frequent Value transformation +*tag* complex rare DSL language construct +*test* trivial rare Boolean decision +*operator* trivial rare Values transformation +========== ========================== ========== ========================= + +Globals +------- + +A global variable is like any other template variable, except that it's +available in all templates and macros:: + + $twig = new Twig_Environment($loader); + $twig->addGlobal('text', new Text()); + +You can then use the ``text`` variable anywhere in a template: + +.. code-block:: jinja + + {{ text.lipsum(40) }} + +Filters +------- + +A filter is a regular PHP function or an object method that takes the left +side of the filter (before the pipe ``|``) as first argument and the extra +arguments passed to the filter (within parentheses ``()``) as extra arguments. + +Defining a filter is as easy as associating the filter name with a PHP +callable. For instance, let's say you have the following code in a template: + +.. code-block:: jinja + + {{ 'TWIG'|lower }} + +When compiling this template to PHP, Twig looks for the PHP callable +associated with the ``lower`` filter. The ``lower`` filter is a built-in Twig +filter, and it is simply mapped to the PHP ``strtolower()`` function. After +compilation, the generated PHP code is roughly equivalent to: + +.. code-block:: html+php + + + +As you can see, the ``'TWIG'`` string is passed as a first argument to the PHP +function. + +A filter can also take extra arguments like in the following example: + +.. code-block:: jinja + + {{ now|date('d/m/Y') }} + +In this case, the extra arguments are passed to the function after the main +argument, and the compiled code is equivalent to: + +.. code-block:: html+php + + + +Let's see how to create a new filter. + +In this section, we will create a ``rot13`` filter, which should return the +`rot13`_ transformation of a string. Here is an example of its usage and the +expected output: + +.. code-block:: jinja + + {{ "Twig"|rot13 }} + + {# should displays Gjvt #} + +Adding a filter is as simple as calling the ``addFilter()`` method on the +``Twig_Environment`` instance:: + + $twig = new Twig_Environment($loader); + $twig->addFilter('rot13', new Twig_Filter_Function('str_rot13')); + +The second argument of ``addFilter()`` is an instance of ``Twig_Filter``. +Here, we use ``Twig_Filter_Function`` as the filter is a PHP function. The +first argument passed to the ``Twig_Filter_Function`` constructor is the name +of the PHP function to call, here ``str_rot13``, a native PHP function. + +Let's say I now want to be able to add a prefix before the converted string: + +.. code-block:: jinja + + {{ "Twig"|rot13('prefix_') }} + + {# should displays prefix_Gjvt #} + +As the PHP ``str_rot13()`` function does not support this requirement, let's +create a new PHP function:: + + function project_compute_rot13($string, $prefix = '') + { + return $prefix.str_rot13($string); + } + +As you can see, the ``prefix`` argument of the filter is passed as an extra +argument to the ``project_compute_rot13()`` function. + +Adding this filter is as easy as before:: + + $twig->addFilter('rot13', new Twig_Filter_Function('project_compute_rot13')); + +For better encapsulation, a filter can also be defined as a static method of a +class. The ``Twig_Filter_Function`` class can also be used to register such +static methods as filters:: + + $twig->addFilter('rot13', new Twig_Filter_Function('SomeClass::rot13Filter')); + +.. tip:: + + In an extension, you can also define a filter as a static method of the + extension class. + +Environment aware Filters +~~~~~~~~~~~~~~~~~~~~~~~~~ + +The ``Twig_Filter`` classes take options as their last argument. For instance, +if you want access to the current environment instance in your filter, set the +``needs_environment`` option to ``true``:: + + $filter = new Twig_Filter_Function('str_rot13', array('needs_environment' => true)); + +Twig will then pass the current environment as the first argument to the +filter call:: + + function twig_compute_rot13(Twig_Environment $env, $string) + { + // get the current charset for instance + $charset = $env->getCharset(); + + return str_rot13($string); + } + +Automatic Escaping +~~~~~~~~~~~~~~~~~~ + +If automatic escaping is enabled, the output of the filter may be escaped +before printing. If your filter acts as an escaper (or explicitly outputs HTML +or JavaScript code), you will want the raw output to be printed. In such a +case, set the ``is_safe`` option:: + + $filter = new Twig_Filter_Function('nl2br', array('is_safe' => array('html'))); + +Some filters may need to work on input that is already escaped or safe, for +example when adding (safe) HTML tags to originally unsafe output. In such a +case, set the ``pre_escape`` option to escape the input data before it is run +through your filter:: + + $filter = new Twig_Filter_Function('somefilter', array('pre_escape' => 'html', 'is_safe' => array('html'))); + +Dynamic Filters +~~~~~~~~~~~~~~~ + +.. versionadded:: 1.5 + Dynamic filters support was added in Twig 1.5. + +A filter name containing the special ``*`` character is a dynamic filter as +the ``*`` can be any string:: + + $twig->addFilter('*_path_*', new Twig_Filter_Function('twig_path')); + + function twig_path($name, $arguments) + { + // ... + } + +The following filters will be matched by the above defined dynamic filter: + +* ``product_path`` +* ``category_path`` + +A dynamic filter can define more than one dynamic parts:: + + $twig->addFilter('*_path_*', new Twig_Filter_Function('twig_path')); + + function twig_path($name, $suffix, $arguments) + { + // ... + } + +The filter will receive all dynamic part values before the normal filters +arguments. For instance, a call to ``'foo'|a_path_b()`` will result in the +following PHP call: ``twig_path('a', 'b', 'foo')``. + +Functions +--------- + +A function is a regular PHP function or an object method that can be called from +templates. + +.. code-block:: jinja + + {{ constant("DATE_W3C") }} + +When compiling this template to PHP, Twig looks for the PHP callable +associated with the ``constant`` function. The ``constant`` function is a built-in Twig +function, and it is simply mapped to the PHP ``constant()`` function. After +compilation, the generated PHP code is roughly equivalent to: + +.. code-block:: html+php + + + +Adding a function is similar to adding a filter. This can be done by calling the +``addFunction()`` method on the ``Twig_Environment`` instance:: + + $twig = new Twig_Environment($loader); + $twig->addFunction('functionName', new Twig_Function_Function('someFunction')); + +You can also expose extension methods as functions in your templates:: + + // $this is an object that implements Twig_ExtensionInterface. + $twig = new Twig_Environment($loader); + $twig->addFunction('otherFunction', new Twig_Function_Method($this, 'someMethod')); + +Functions also support ``needs_environment`` and ``is_safe`` parameters. + +Dynamic Functions +~~~~~~~~~~~~~~~~~ + +.. versionadded:: 1.5 + Dynamic functions support was added in Twig 1.5. + +A function name containing the special ``*`` character is a dynamic function +as the ``*`` can be any string:: + + $twig->addFunction('*_path', new Twig_Function_Function('twig_path')); + + function twig_path($name, $arguments) + { + // ... + } + +The following functions will be matched by the above defined dynamic function: + +* ``product_path`` +* ``category_path`` + +A dynamic function can define more than one dynamic parts:: + + $twig->addFilter('*_path_*', new Twig_Filter_Function('twig_path')); + + function twig_path($name, $suffix, $arguments) + { + // ... + } + +The function will receive all dynamic part values before the normal functions +arguments. For instance, a call to ``a_path_b('foo')`` will result in the +following PHP call: ``twig_path('a', 'b', 'foo')``. + +Tags +---- + +One of the most exciting feature of a template engine like Twig is the +possibility to define new language constructs. This is also the most complex +feature as you need to understand how Twig's internals work. + +Let's create a simple ``set`` tag that allows the definition of simple +variables from within a template. The tag can be used like follows: + +.. code-block:: jinja + + {% set name = "value" %} + + {{ name }} + + {# should output value #} + +.. note:: + + The ``set`` tag is part of the Core extension and as such is always + available. The built-in version is slightly more powerful and supports + multiple assignments by default (cf. the template designers chapter for + more information). + +Three steps are needed to define a new tag: + +* Defining a Token Parser class (responsible for parsing the template code); + +* Defining a Node class (responsible for converting the parsed code to PHP); + +* Registering the tag. + +Registering a new tag +~~~~~~~~~~~~~~~~~~~~~ + +Adding a tag is as simple as calling the ``addTokenParser`` method on the +``Twig_Environment`` instance:: + + $twig = new Twig_Environment($loader); + $twig->addTokenParser(new Project_Set_TokenParser()); + +Defining a Token Parser +~~~~~~~~~~~~~~~~~~~~~~~ + +Now, let's see the actual code of this class:: + + class Project_Set_TokenParser extends Twig_TokenParser + { + public function parse(Twig_Token $token) + { + $lineno = $token->getLine(); + $name = $this->parser->getStream()->expect(Twig_Token::NAME_TYPE)->getValue(); + $this->parser->getStream()->expect(Twig_Token::OPERATOR_TYPE, '='); + $value = $this->parser->getExpressionParser()->parseExpression(); + + $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); + + return new Project_Set_Node($name, $value, $lineno, $this->getTag()); + } + + public function getTag() + { + return 'set'; + } + } + +The ``getTag()`` method must return the tag we want to parse, here ``set``. + +The ``parse()`` method is invoked whenever the parser encounters a ``set`` +tag. It should return a ``Twig_Node`` instance that represents the node (the +``Project_Set_Node`` calls creating is explained in the next section). + +The parsing process is simplified thanks to a bunch of methods you can call +from the token stream (``$this->parser->getStream()``): + +* ``getCurrent()``: Gets the current token in the stream. + +* ``next()``: Moves to the next token in the stream, *but returns the old one*. + +* ``test($type)``, ``test($value)`` or ``test($type, $value)``: Determines whether + the current token is of a particular type or value (or both). The value may be an + array of several possible values. + +* ``expect($type[, $value[, $message]])``: If the current token isn't of the given + type/value a syntax error is thrown. Otherwise, if the type and value are correct, + the token is returned and the stream moves to the next token. + +* ``look()``: Looks a the next token without consuming it. + +Parsing expressions is done by calling the ``parseExpression()`` like we did for +the ``set`` tag. + +.. tip:: + + Reading the existing ``TokenParser`` classes is the best way to learn all + the nitty-gritty details of the parsing process. + +Defining a Node +~~~~~~~~~~~~~~~ + +The ``Project_Set_Node`` class itself is rather simple:: + + class Project_Set_Node extends Twig_Node + { + public function __construct($name, Twig_Node_Expression $value, $lineno, $tag = null) + { + parent::__construct(array('value' => $value), array('name' => $name), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write('$context[\''.$this->getAttribute('name').'\'] = ') + ->subcompile($this->getNode('value')) + ->raw(";\n") + ; + } + } + +The compiler implements a fluid interface and provides methods that helps the +developer generate beautiful and readable PHP code: + +* ``subcompile()``: Compiles a node. + +* ``raw()``: Writes the given string as is. + +* ``write()``: Writes the given string by adding indentation at the beginning + of each line. + +* ``string()``: Writes a quoted string. + +* ``repr()``: Writes a PHP representation of a given value (see + ``Twig_Node_For`` for a usage example). + +* ``addDebugInfo()``: Adds the line of the original template file related to + the current node as a comment. + +* ``indent()``: Indents the generated code (see ``Twig_Node_Block`` for a + usage example). + +* ``outdent()``: Outdents the generated code (see ``Twig_Node_Block`` for a + usage example). + +.. _creating_extensions: + +Creating an Extension +--------------------- + +The main motivation for writing an extension is to move often used code into a +reusable class like adding support for internationalization. An extension can +define tags, filters, tests, operators, global variables, functions, and node +visitors. + +Creating an extension also makes for a better separation of code that is +executed at compilation time and code needed at runtime. As such, it makes +your code faster. + +Most of the time, it is useful to create a single extension for your project, +to host all the specific tags and filters you want to add to Twig. + +.. tip:: + + When packaging your code into an extension, Twig is smart enough to + recompile your templates whenever you make a change to it (when the + ``auto_reload`` is enabled). + +.. note:: + + Before writing your own extensions, have a look at the Twig official + extension repository: http://github.com/twigphp/Twig-extensions. + +An extension is a class that implements the following interface:: + + interface Twig_ExtensionInterface + { + /** + * Initializes the runtime environment. + * + * This is where you can load some file that contains filter functions for instance. + */ + function initRuntime(Twig_Environment $environment); + + /** + * Returns the token parser instances to add to the existing list. + * + * @return (Twig_TokenParserInterface|Twig_TokenParserBrokerInterface)[] + */ + function getTokenParsers(); + + /** + * Returns the node visitor instances to add to the existing list. + * + * @return Twig_NodeVisitorInterface[] + */ + function getNodeVisitors(); + + /** + * Returns a list of filters to add to the existing list. + * + * @return Twig_SimpleFilter[] + */ + function getFilters(); + + /** + * Returns a list of tests to add to the existing list. + * + * @return Twig_SimpleTest[] + */ + function getTests(); + + /** + * Returns a list of functions to add to the existing list. + * + * @return Twig_SimpleFunction[] + */ + function getFunctions(); + + /** + * Returns a list of operators to add to the existing list. + * + * @return array First array of unary operators, second array of binary operators + */ + function getOperators(); + + /** + * Returns a list of global variables to add to the existing list. + * + * @return array An array of global variables + */ + function getGlobals(); + + /** + * Returns the name of the extension. + * + * @return string The extension name + */ + function getName(); + } + +To keep your extension class clean and lean, it can inherit from the built-in +``Twig_Extension`` class instead of implementing the whole interface. That +way, you just need to implement the ``getName()`` method as the +``Twig_Extension`` provides empty implementations for all other methods. + +The ``getName()`` method must return a unique identifier for your extension. + +Now, with this information in mind, let's create the most basic extension +possible:: + + class Project_Twig_Extension extends Twig_Extension + { + public function getName() + { + return 'project'; + } + } + +.. note:: + + Of course, this extension does nothing for now. We will customize it in + the next sections. + +Twig does not care where you save your extension on the filesystem, as all +extensions must be registered explicitly to be available in your templates. + +You can register an extension by using the ``addExtension()`` method on your +main ``Environment`` object:: + + $twig = new Twig_Environment($loader); + $twig->addExtension(new Project_Twig_Extension()); + +Of course, you need to first load the extension file by either using +``require_once()`` or by using an autoloader (see `spl_autoload_register()`_). + +.. tip:: + + The bundled extensions are great examples of how extensions work. + +Globals +~~~~~~~ + +Global variables can be registered in an extension via the ``getGlobals()`` +method:: + + class Project_Twig_Extension extends Twig_Extension + { + public function getGlobals() + { + return array( + 'text' => new Text(), + ); + } + + // ... + } + +Functions +~~~~~~~~~ + +Functions can be registered in an extension via the ``getFunctions()`` +method:: + + class Project_Twig_Extension extends Twig_Extension + { + public function getFunctions() + { + return array( + 'lipsum' => new Twig_Function_Function('generate_lipsum'), + ); + } + + // ... + } + +Filters +~~~~~~~ + +To add a filter to an extension, you need to override the ``getFilters()`` +method. This method must return an array of filters to add to the Twig +environment:: + + class Project_Twig_Extension extends Twig_Extension + { + public function getFilters() + { + return array( + 'rot13' => new Twig_Filter_Function('str_rot13'), + ); + } + + // ... + } + +As you can see in the above code, the ``getFilters()`` method returns an array +where keys are the name of the filters (``rot13``) and the values the +definition of the filter (``new Twig_Filter_Function('str_rot13')``). + +As seen in the previous chapter, you can also define filters as static methods +on the extension class:: + +$twig->addFilter('rot13', new Twig_Filter_Function('Project_Twig_Extension::rot13Filter')); + +You can also use ``Twig_Filter_Method`` instead of ``Twig_Filter_Function`` +when defining a filter to use a method:: + + class Project_Twig_Extension extends Twig_Extension + { + public function getFilters() + { + return array( + 'rot13' => new Twig_Filter_Method($this, 'rot13Filter'), + ); + } + + public function rot13Filter($string) + { + return str_rot13($string); + } + + // ... + } + +The first argument of the ``Twig_Filter_Method`` constructor is always +``$this``, the current extension object. The second one is the name of the +method to call. + +Using methods for filters is a great way to package your filter without +polluting the global namespace. This also gives the developer more flexibility +at the cost of a small overhead. + +Overriding default Filters +.......................... + +If some default core filters do not suit your needs, you can easily override +them by creating your own extension. Just use the same names as the one you +want to override:: + + class MyCoreExtension extends Twig_Extension + { + public function getFilters() + { + return array( + 'date' => new Twig_Filter_Method($this, 'dateFilter'), + // ... + ); + } + + public function dateFilter($timestamp, $format = 'F j, Y H:i') + { + return '...'.twig_date_format_filter($timestamp, $format); + } + + public function getName() + { + return 'project'; + } + } + +Here, we override the ``date`` filter with a custom one. Using this extension +is as simple as registering the ``MyCoreExtension`` extension by calling the +``addExtension()`` method on the environment instance:: + + $twig = new Twig_Environment($loader); + $twig->addExtension(new MyCoreExtension()); + +Tags +~~~~ + +Adding a tag in an extension can be done by overriding the +``getTokenParsers()`` method. This method must return an array of tags to add +to the Twig environment:: + + class Project_Twig_Extension extends Twig_Extension + { + public function getTokenParsers() + { + return array(new Project_Set_TokenParser()); + } + + // ... + } + +In the above code, we have added a single new tag, defined by the +``Project_Set_TokenParser`` class. The ``Project_Set_TokenParser`` class is +responsible for parsing the tag and compiling it to PHP. + +Operators +~~~~~~~~~ + +The ``getOperators()`` methods allows to add new operators. Here is how to add +``!``, ``||``, and ``&&`` operators:: + + class Project_Twig_Extension extends Twig_Extension + { + public function getOperators() + { + return array( + array( + '!' => array('precedence' => 50, 'class' => 'Twig_Node_Expression_Unary_Not'), + ), + array( + '||' => array('precedence' => 10, 'class' => 'Twig_Node_Expression_Binary_Or', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '&&' => array('precedence' => 15, 'class' => 'Twig_Node_Expression_Binary_And', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + ), + ); + } + + // ... + } + +Tests +~~~~~ + +The ``getTests()`` methods allows to add new test functions:: + + class Project_Twig_Extension extends Twig_Extension + { + public function getTests() + { + return array( + 'even' => new Twig_Test_Function('twig_test_even'), + ); + } + + // ... + } + +Testing an Extension +-------------------- + +.. versionadded:: 1.10 + Support for functional tests was added in Twig 1.10. + +Functional Tests +~~~~~~~~~~~~~~~~ + +You can create functional tests for extensions simply by creating the +following file structure in your test directory:: + + Fixtures/ + filters/ + foo.test + bar.test + functions/ + foo.test + bar.test + tags/ + foo.test + bar.test + IntegrationTest.php + +The ``IntegrationTest.php`` file should look like this:: + + class Project_Tests_IntegrationTest extends Twig_Test_IntegrationTestCase + { + public function getExtensions() + { + return array( + new Project_Twig_Extension1(), + new Project_Twig_Extension2(), + ); + } + + public function getFixturesDir() + { + return dirname(__FILE__).'/Fixtures/'; + } + } + +Fixtures examples can be found within the Twig repository +`tests/Twig/Fixtures`_ directory. + +Node Tests +~~~~~~~~~~ + +Testing the node visitors can be complex, so extend your test cases from +``Twig_Test_NodeTestCase``. Examples can be found in the Twig repository +`tests/Twig/Node`_ directory. + +.. _`spl_autoload_register()`: http://www.php.net/spl_autoload_register +.. _`rot13`: http://www.php.net/manual/en/function.str-rot13.php +.. _`tests/Twig/Fixtures`: https://github.com/twigphp/Twig/tree/master/test/Twig/Tests/Fixtures +.. _`tests/Twig/Node`: https://github.com/twigphp/Twig/tree/master/test/Twig/Tests/Node diff --git a/system/vendor/twig/twig/doc/api.rst b/system/vendor/twig/twig/doc/api.rst new file mode 100644 index 0000000..8be2b8a --- /dev/null +++ b/system/vendor/twig/twig/doc/api.rst @@ -0,0 +1,590 @@ +Twig for Developers +=================== + +This chapter describes the API to Twig and not the template language. It will +be most useful as reference to those implementing the template interface to +the application and not those who are creating Twig templates. + +Basics +------ + +Twig uses a central object called the **environment** (of class +``Twig_Environment``). Instances of this class are used to store the +configuration and extensions, and are used to load templates from the file +system or other locations. + +Most applications will create one ``Twig_Environment`` object on application +initialization and use that to load templates. In some cases it's however +useful to have multiple environments side by side, if different configurations +are in use. + +The simplest way to configure Twig to load templates for your application +looks roughly like this:: + + require_once '/path/to/lib/Twig/Autoloader.php'; + Twig_Autoloader::register(); + + $loader = new Twig_Loader_Filesystem('/path/to/templates'); + $twig = new Twig_Environment($loader, array( + 'cache' => '/path/to/compilation_cache', + )); + +This will create a template environment with the default settings and a loader +that looks up the templates in the ``/path/to/templates/`` folder. Different +loaders are available and you can also write your own if you want to load +templates from a database or other resources. + +.. note:: + + Notice that the second argument of the environment is an array of options. + The ``cache`` option is a compilation cache directory, where Twig caches + the compiled templates to avoid the parsing phase for sub-sequent + requests. It is very different from the cache you might want to add for + the evaluated templates. For such a need, you can use any available PHP + cache library. + +Rendering Templates +------------------- + +To load a template from a Twig environment, call the ``load()`` method which +returns a ``Twig_TemplateWrapper`` instance:: + + $template = $twig->load('index.html'); + +.. note:: + + Before Twig 1.28, you should use ``loadTemplate()`` instead which returns a + ``Twig_Template`` instance. + +To render the template with some variables, call the ``render()`` method:: + + echo $template->render(array('the' => 'variables', 'go' => 'here')); + +.. note:: + + The ``display()`` method is a shortcut to output the template directly. + +You can also load and render the template in one fell swoop:: + + echo $twig->render('index.html', array('the' => 'variables', 'go' => 'here')); + +.. versionadded:: 1.28 + The possibility to render blocks from the API was added in Twig 1.28. + +If a template defines blocks, they can be rendered individually via the +``renderBlock()`` call:: + + echo $template->renderBlock('block_name', array('the' => 'variables', 'go' => 'here')); + +.. _environment_options: + +Environment Options +------------------- + +When creating a new ``Twig_Environment`` instance, you can pass an array of +options as the constructor second argument:: + + $twig = new Twig_Environment($loader, array('debug' => true)); + +The following options are available: + +* ``debug`` *boolean* + + When set to ``true``, the generated templates have a + ``__toString()`` method that you can use to display the generated nodes + (default to ``false``). + +* ``charset`` *string* (defaults to ``utf-8``) + + The charset used by the templates. + +* ``base_template_class`` *string* (defaults to ``Twig_Template``) + + The base template class to use for generated + templates. + +* ``cache`` *string* or ``false`` + + An absolute path where to store the compiled templates, or + ``false`` to disable caching (which is the default). + +* ``auto_reload`` *boolean* + + When developing with Twig, it's useful to recompile the + template whenever the source code changes. If you don't provide a value for + the ``auto_reload`` option, it will be determined automatically based on the + ``debug`` value. + +* ``strict_variables`` *boolean* + + If set to ``false``, Twig will silently ignore invalid + variables (variables and or attributes/methods that do not exist) and + replace them with a ``null`` value. When set to ``true``, Twig throws an + exception instead (default to ``false``). + +* ``autoescape`` *string* or *boolean* + + If set to ``true``, HTML auto-escaping will be enabled by + default for all templates (default to ``true``). + + As of Twig 1.8, you can set the escaping strategy to use (``html``, ``js``, + ``false`` to disable). + + As of Twig 1.9, you can set the escaping strategy to use (``css``, ``url``, + ``html_attr``, or a PHP callback that takes the template name and must + return the escaping strategy to use -- the callback cannot be a function name + to avoid collision with built-in escaping strategies). + + As of Twig 1.17, the ``filename`` escaping strategy (renamed to ``name`` as + of Twig 1.27) determines the escaping strategy to use for a template based on + the template filename extension (this strategy does not incur any overhead at + runtime as auto-escaping is done at compilation time.) + +* ``optimizations`` *integer* + + A flag that indicates which optimizations to apply + (default to ``-1`` -- all optimizations are enabled; set it to ``0`` to + disable). + +Loaders +------- + +Loaders are responsible for loading templates from a resource such as the file +system. + +Compilation Cache +~~~~~~~~~~~~~~~~~ + +All template loaders can cache the compiled templates on the filesystem for +future reuse. It speeds up Twig a lot as templates are only compiled once; and +the performance boost is even larger if you use a PHP accelerator such as APC. +See the ``cache`` and ``auto_reload`` options of ``Twig_Environment`` above +for more information. + +Built-in Loaders +~~~~~~~~~~~~~~~~ + +Here is a list of the built-in loaders Twig provides: + +``Twig_Loader_Filesystem`` +.......................... + +.. versionadded:: 1.10 + The ``prependPath()`` and support for namespaces were added in Twig 1.10. + +.. versionadded:: 1.27 + Relative paths support was added in Twig 1.27. + +``Twig_Loader_Filesystem`` loads templates from the file system. This loader +can find templates in folders on the file system and is the preferred way to +load them:: + + $loader = new Twig_Loader_Filesystem($templateDir); + +It can also look for templates in an array of directories:: + + $loader = new Twig_Loader_Filesystem(array($templateDir1, $templateDir2)); + +With such a configuration, Twig will first look for templates in +``$templateDir1`` and if they do not exist, it will fallback to look for them +in the ``$templateDir2``. + +You can add or prepend paths via the ``addPath()`` and ``prependPath()`` +methods:: + + $loader->addPath($templateDir3); + $loader->prependPath($templateDir4); + +The filesystem loader also supports namespaced templates. This allows to group +your templates under different namespaces which have their own template paths. + +When using the ``setPaths()``, ``addPath()``, and ``prependPath()`` methods, +specify the namespace as the second argument (when not specified, these +methods act on the "main" namespace):: + + $loader->addPath($templateDir, 'admin'); + +Namespaced templates can be accessed via the special +``@namespace_name/template_path`` notation:: + + $twig->render('@admin/index.html', array()); + +``Twig_Loader_Filesystem`` support absolute and relative paths. Using relative +paths is preferred as it makes the cache keys independent of the project root +directory (for instance, it allows warming the cache from a build server where +the directory might be different from the one used on production servers):: + + $loader = new Twig_Loader_Filesystem('templates', getcwd().'/..'); + +.. note:: + + When not passing the root path as a second argument, Twig uses ``getcwd()`` + for relative paths. + +``Twig_Loader_Array`` +..................... + +``Twig_Loader_Array`` loads a template from a PHP array. It's passed an array +of strings bound to template names:: + + $loader = new Twig_Loader_Array(array( + 'index.html' => 'Hello {{ name }}!', + )); + $twig = new Twig_Environment($loader); + + echo $twig->render('index.html', array('name' => 'Fabien')); + +This loader is very useful for unit testing. It can also be used for small +projects where storing all templates in a single PHP file might make sense. + +.. tip:: + + When using the ``Array`` or ``String`` loaders with a cache mechanism, you + should know that a new cache key is generated each time a template content + "changes" (the cache key being the source code of the template). If you + don't want to see your cache grows out of control, you need to take care + of clearing the old cache file by yourself. + +``Twig_Loader_Chain`` +..................... + +``Twig_Loader_Chain`` delegates the loading of templates to other loaders:: + + $loader1 = new Twig_Loader_Array(array( + 'base.html' => '{% block content %}{% endblock %}', + )); + $loader2 = new Twig_Loader_Array(array( + 'index.html' => '{% extends "base.html" %}{% block content %}Hello {{ name }}{% endblock %}', + 'base.html' => 'Will never be loaded', + )); + + $loader = new Twig_Loader_Chain(array($loader1, $loader2)); + + $twig = new Twig_Environment($loader); + +When looking for a template, Twig will try each loader in turn and it will +return as soon as the template is found. When rendering the ``index.html`` +template from the above example, Twig will load it with ``$loader2`` but the +``base.html`` template will be loaded from ``$loader1``. + +``Twig_Loader_Chain`` accepts any loader that implements +``Twig_LoaderInterface``. + +.. note:: + + You can also add loaders via the ``addLoader()`` method. + +Create your own Loader +~~~~~~~~~~~~~~~~~~~~~~ + +All loaders implement the ``Twig_LoaderInterface``:: + + interface Twig_LoaderInterface + { + /** + * Gets the source code of a template, given its name. + * + * @param string $name string The name of the template to load + * + * @return string The template source code + * + * @deprecated since 1.27 (to be removed in 2.0), implement Twig_SourceContextLoaderInterface + */ + function getSource($name); + + /** + * Gets the cache key to use for the cache for a given template name. + * + * @param string $name string The name of the template to load + * + * @return string The cache key + */ + function getCacheKey($name); + + /** + * Returns true if the template is still fresh. + * + * @param string $name The template name + * @param timestamp $time The last modification time of the cached template + */ + function isFresh($name, $time); + } + +The ``isFresh()`` method must return ``true`` if the current cached template +is still fresh, given the last modification time, or ``false`` otherwise. + +.. note:: + + As of Twig 1.27, you should also implement + ``Twig_SourceContextLoaderInterface`` to avoid deprecation notices. + +.. tip:: + + As of Twig 1.11.0, you can also implement ``Twig_ExistsLoaderInterface`` + to make your loader faster when used with the chain loader. + +Using Extensions +---------------- + +Twig extensions are packages that add new features to Twig. Using an +extension is as simple as using the ``addExtension()`` method:: + + $twig->addExtension(new Twig_Extension_Sandbox()); + +Twig comes bundled with the following extensions: + +* *Twig_Extension_Core*: Defines all the core features of Twig. + +* *Twig_Extension_Escaper*: Adds automatic output-escaping and the possibility + to escape/unescape blocks of code. + +* *Twig_Extension_Sandbox*: Adds a sandbox mode to the default Twig + environment, making it safe to evaluate untrusted code. + +* *Twig_Extension_Profiler*: Enabled the built-in Twig profiler (as of Twig + 1.18). + +* *Twig_Extension_Optimizer*: Optimizes the node tree before compilation. + +The core, escaper, and optimizer extensions do not need to be added to the +Twig environment, as they are registered by default. + +Built-in Extensions +------------------- + +This section describes the features added by the built-in extensions. + +.. tip:: + + Read the chapter about extending Twig to learn how to create your own + extensions. + +Core Extension +~~~~~~~~~~~~~~ + +The ``core`` extension defines all the core features of Twig: + +* :doc:`Tags `; +* :doc:`Filters `; +* :doc:`Functions `; +* :doc:`Tests `. + +Escaper Extension +~~~~~~~~~~~~~~~~~ + +The ``escaper`` extension adds automatic output escaping to Twig. It defines a +tag, ``autoescape``, and a filter, ``raw``. + +When creating the escaper extension, you can switch on or off the global +output escaping strategy:: + + $escaper = new Twig_Extension_Escaper('html'); + $twig->addExtension($escaper); + +If set to ``html``, all variables in templates are escaped (using the ``html`` +escaping strategy), except those using the ``raw`` filter: + +.. code-block:: jinja + + {{ article.to_html|raw }} + +You can also change the escaping mode locally by using the ``autoescape`` tag +(see the :doc:`autoescape` doc for the syntax used before +Twig 1.8): + +.. code-block:: jinja + + {% autoescape 'html' %} + {{ var }} + {{ var|raw }} {# var won't be escaped #} + {{ var|escape }} {# var won't be double-escaped #} + {% endautoescape %} + +.. warning:: + + The ``autoescape`` tag has no effect on included files. + +The escaping rules are implemented as follows: + +* Literals (integers, booleans, arrays, ...) used in the template directly as + variables or filter arguments are never automatically escaped: + + .. code-block:: jinja + + {{ "Twig
    " }} {# won't be escaped #} + + {% set text = "Twig
    " %} + {{ text }} {# will be escaped #} + +* Expressions which the result is always a literal or a variable marked safe + are never automatically escaped: + + .. code-block:: jinja + + {{ foo ? "Twig
    " : "
    Twig" }} {# won't be escaped #} + + {% set text = "Twig
    " %} + {{ foo ? text : "
    Twig" }} {# will be escaped #} + + {% set text = "Twig
    " %} + {{ foo ? text|raw : "
    Twig" }} {# won't be escaped #} + + {% set text = "Twig
    " %} + {{ foo ? text|escape : "
    Twig" }} {# the result of the expression won't be escaped #} + +* Escaping is applied before printing, after any other filter is applied: + + .. code-block:: jinja + + {{ var|upper }} {# is equivalent to {{ var|upper|escape }} #} + +* The `raw` filter should only be used at the end of the filter chain: + + .. code-block:: jinja + + {{ var|raw|upper }} {# will be escaped #} + + {{ var|upper|raw }} {# won't be escaped #} + +* Automatic escaping is not applied if the last filter in the chain is marked + safe for the current context (e.g. ``html`` or ``js``). ``escape`` and + ``escape('html')`` are marked safe for HTML, ``escape('js')`` is marked + safe for JavaScript, ``raw`` is marked safe for everything. + + .. code-block:: jinja + + {% autoescape 'js' %} + {{ var|escape('html') }} {# will be escaped for HTML and JavaScript #} + {{ var }} {# will be escaped for JavaScript #} + {{ var|escape('js') }} {# won't be double-escaped #} + {% endautoescape %} + +.. note:: + + Note that autoescaping has some limitations as escaping is applied on + expressions after evaluation. For instance, when working with + concatenation, ``{{ foo|raw ~ bar }}`` won't give the expected result as + escaping is applied on the result of the concatenation, not on the + individual variables (so, the ``raw`` filter won't have any effect here). + +Sandbox Extension +~~~~~~~~~~~~~~~~~ + +The ``sandbox`` extension can be used to evaluate untrusted code. Access to +unsafe attributes and methods is prohibited. The sandbox security is managed +by a policy instance. By default, Twig comes with one policy class: +``Twig_Sandbox_SecurityPolicy``. This class allows you to white-list some +tags, filters, properties, and methods:: + + $tags = array('if'); + $filters = array('upper'); + $methods = array( + 'Article' => array('getTitle', 'getBody'), + ); + $properties = array( + 'Article' => array('title', 'body'), + ); + $functions = array('range'); + $policy = new Twig_Sandbox_SecurityPolicy($tags, $filters, $methods, $properties, $functions); + +With the previous configuration, the security policy will only allow usage of +the ``if`` tag, and the ``upper`` filter. Moreover, the templates will only be +able to call the ``getTitle()`` and ``getBody()`` methods on ``Article`` +objects, and the ``title`` and ``body`` public properties. Everything else +won't be allowed and will generate a ``Twig_Sandbox_SecurityError`` exception. + +The policy object is the first argument of the sandbox constructor:: + + $sandbox = new Twig_Extension_Sandbox($policy); + $twig->addExtension($sandbox); + +By default, the sandbox mode is disabled and should be enabled when including +untrusted template code by using the ``sandbox`` tag: + +.. code-block:: jinja + + {% sandbox %} + {% include 'user.html' %} + {% endsandbox %} + +You can sandbox all templates by passing ``true`` as the second argument of +the extension constructor:: + + $sandbox = new Twig_Extension_Sandbox($policy, true); + +Profiler Extension +~~~~~~~~~~~~~~~~~~ + +.. versionadded:: 1.18 + The Profile extension was added in Twig 1.18. + +The ``profiler`` extension enables a profiler for Twig templates; it should +only be used on your development machines as it adds some overhead:: + + $profile = new Twig_Profiler_Profile(); + $twig->addExtension(new Twig_Extension_Profiler($profile)); + + $dumper = new Twig_Profiler_Dumper_Text(); + echo $dumper->dump($profile); + +A profile contains information about time and memory consumption for template, +block, and macro executions. + +You can also dump the data in a `Blackfire.io `_ +compatible format:: + + $dumper = new Twig_Profiler_Dumper_Blackfire(); + file_put_contents('/path/to/profile.prof', $dumper->dump($profile)); + +Upload the profile to visualize it (create a `free account +`_ first): + +.. code-block:: sh + + blackfire --slot=7 upload /path/to/profile.prof + +Optimizer Extension +~~~~~~~~~~~~~~~~~~~ + +The ``optimizer`` extension optimizes the node tree before compilation:: + + $twig->addExtension(new Twig_Extension_Optimizer()); + +By default, all optimizations are turned on. You can select the ones you want +to enable by passing them to the constructor:: + + $optimizer = new Twig_Extension_Optimizer(Twig_NodeVisitor_Optimizer::OPTIMIZE_FOR); + + $twig->addExtension($optimizer); + +Twig supports the following optimizations: + +* ``Twig_NodeVisitor_Optimizer::OPTIMIZE_ALL``, enables all optimizations + (this is the default value). +* ``Twig_NodeVisitor_Optimizer::OPTIMIZE_NONE``, disables all optimizations. + This reduces the compilation time, but it can increase the execution time + and the consumed memory. +* ``Twig_NodeVisitor_Optimizer::OPTIMIZE_FOR``, optimizes the ``for`` tag by + removing the ``loop`` variable creation whenever possible. +* ``Twig_NodeVisitor_Optimizer::OPTIMIZE_RAW_FILTER``, removes the ``raw`` + filter whenever possible. +* ``Twig_NodeVisitor_Optimizer::OPTIMIZE_VAR_ACCESS``, simplifies the creation + and access of variables in the compiled templates whenever possible. + +Exceptions +---------- + +Twig can throw exceptions: + +* ``Twig_Error``: The base exception for all errors. + +* ``Twig_Error_Syntax``: Thrown to tell the user that there is a problem with + the template syntax. + +* ``Twig_Error_Runtime``: Thrown when an error occurs at runtime (when a filter + does not exist for instance). + +* ``Twig_Error_Loader``: Thrown when an error occurs during template loading. + +* ``Twig_Sandbox_SecurityError``: Thrown when an unallowed tag, filter, or + method is called in a sandboxed template. diff --git a/system/vendor/twig/twig/doc/coding_standards.rst b/system/vendor/twig/twig/doc/coding_standards.rst new file mode 100644 index 0000000..bf8ea91 --- /dev/null +++ b/system/vendor/twig/twig/doc/coding_standards.rst @@ -0,0 +1,101 @@ +Coding Standards +================ + +When writing Twig templates, we recommend you to follow these official coding +standards: + +* Put one (and only one) space after the start of a delimiter (``{{``, ``{%``, + and ``{#``) and before the end of a delimiter (``}}``, ``%}``, and ``#}``): + + .. code-block:: jinja + + {{ foo }} + {# comment #} + {% if foo %}{% endif %} + + When using the whitespace control character, do not put any spaces between + it and the delimiter: + + .. code-block:: jinja + + {{- foo -}} + {#- comment -#} + {%- if foo -%}{%- endif -%} + +* Put one (and only one) space before and after the following operators: + comparison operators (``==``, ``!=``, ``<``, ``>``, ``>=``, ``<=``), math + operators (``+``, ``-``, ``/``, ``*``, ``%``, ``//``, ``**``), logic + operators (``not``, ``and``, ``or``), ``~``, ``is``, ``in``, and the ternary + operator (``?:``): + + .. code-block:: jinja + + {{ 1 + 2 }} + {{ foo ~ bar }} + {{ true ? true : false }} + +* Put one (and only one) space after the ``:`` sign in hashes and ``,`` in + arrays and hashes: + + .. code-block:: jinja + + {{ [1, 2, 3] }} + {{ {'foo': 'bar'} }} + +* Do not put any spaces after an opening parenthesis and before a closing + parenthesis in expressions: + + .. code-block:: jinja + + {{ 1 + (2 * 3) }} + +* Do not put any spaces before and after string delimiters: + + .. code-block:: jinja + + {{ 'foo' }} + {{ "foo" }} + +* Do not put any spaces before and after the following operators: ``|``, + ``.``, ``..``, ``[]``: + + .. code-block:: jinja + + {{ foo|upper|lower }} + {{ user.name }} + {{ user[name] }} + {% for i in 1..12 %}{% endfor %} + +* Do not put any spaces before and after the parenthesis used for filter and + function calls: + + .. code-block:: jinja + + {{ foo|default('foo') }} + {{ range(1..10) }} + +* Do not put any spaces before and after the opening and the closing of arrays + and hashes: + + .. code-block:: jinja + + {{ [1, 2, 3] }} + {{ {'foo': 'bar'} }} + +* Use lower cased and underscored variable names: + + .. code-block:: jinja + + {% set foo = 'foo' %} + {% set foo_bar = 'foo' %} + +* Indent your code inside tags (use the same indentation as the one used for + the target language of the rendered template): + + .. code-block:: jinja + + {% block foo %} + {% if true %} + true + {% endif %} + {% endblock %} diff --git a/system/vendor/twig/twig/doc/deprecated.rst b/system/vendor/twig/twig/doc/deprecated.rst new file mode 100644 index 0000000..8b25cc4 --- /dev/null +++ b/system/vendor/twig/twig/doc/deprecated.rst @@ -0,0 +1,224 @@ +Deprecated Features +=================== + +This document lists all deprecated features in Twig. Deprecated features are +kept for backward compatibility and removed in the next major release (a +feature that was deprecated in Twig 1.x is removed in Twig 2.0). + +Deprecation Notices +------------------- + +As of Twig 1.21, Twig generates deprecation notices when a template uses +deprecated features. See :ref:`deprecation-notices` for more information. + +Macros +------ + +As of Twig 2.0, macros imported in a file are not available in child templates +anymore (via an ``include`` call for instance). You need to import macros +explicitly in each file where you are using them. + +Token Parsers +------------- + +* As of Twig 1.x, the token parser broker sub-system is deprecated. The + following class and interface will be removed in 2.0: + + * ``Twig_TokenParserBrokerInterface`` + * ``Twig_TokenParserBroker`` + +* As of Twig 1.27, ``Twig_Parser::getFilename()`` is deprecated. From a token + parser, use ``$this->parser->getStream()->getSourceContext()->getPath()`` instead. + +* As of Twig 1.27, ``Twig_Parser::getEnvironment()`` is deprecated. + +Extensions +---------- + +* As of Twig 1.x, the ability to remove an extension is deprecated and the + ``Twig_Environment::removeExtension()`` method will be removed in 2.0. + +* As of Twig 1.23, the ``Twig_ExtensionInterface::initRuntime()`` method is + deprecated. You have two options to avoid the deprecation notice: if you + implement this method to store the environment for your custom filters, + functions, or tests, use the ``needs_environment`` option instead; if you + have more complex needs, explicitly implement + ``Twig_Extension_InitRuntimeInterface`` (not recommended). + +* As of Twig 1.23, the ``Twig_ExtensionInterface::getGlobals()`` method is + deprecated. Implement ``Twig_Extension_GlobalsInterface`` to avoid + deprecation notices. + +* As of Twig 1.26, the ``Twig_ExtensionInterface::getName()`` method is + deprecated and it is not used internally anymore. + +PEAR +---- + +PEAR support has been discontinued in Twig 1.15.1, and no PEAR packages are +provided anymore. Use Composer instead. + +Filters +------- + +* As of Twig 1.x, use ``Twig_SimpleFilter`` to add a filter. The following + classes and interfaces will be removed in 2.0: + + * ``Twig_FilterInterface`` + * ``Twig_FilterCallableInterface`` + * ``Twig_Filter`` + * ``Twig_Filter_Function`` + * ``Twig_Filter_Method`` + * ``Twig_Filter_Node`` + +* As of Twig 2.x, the ``Twig_SimpleFilter`` class is deprecated and will be + removed in Twig 3.x (use ``Twig_Filter`` instead). In Twig 2.x, + ``Twig_SimpleFilter`` is just an alias for ``Twig_Filter``. + +Functions +--------- + +* As of Twig 1.x, use ``Twig_SimpleFunction`` to add a function. The following + classes and interfaces will be removed in 2.0: + + * ``Twig_FunctionInterface`` + * ``Twig_FunctionCallableInterface`` + * ``Twig_Function`` + * ``Twig_Function_Function`` + * ``Twig_Function_Method`` + * ``Twig_Function_Node`` + +* As of Twig 2.x, the ``Twig_SimpleFunction`` class is deprecated and will be + removed in Twig 3.x (use ``Twig_Function`` instead). In Twig 2.x, + ``Twig_SimpleFunction`` is just an alias for ``Twig_Function``. + +Tests +----- + +* As of Twig 1.x, use ``Twig_SimpleTest`` to add a test. The following classes + and interfaces will be removed in 2.0: + + * ``Twig_TestInterface`` + * ``Twig_TestCallableInterface`` + * ``Twig_Test`` + * ``Twig_Test_Function`` + * ``Twig_Test_Method`` + * ``Twig_Test_Node`` + +* As of Twig 2.x, the ``Twig_SimpleTest`` class is deprecated and will be + removed in Twig 3.x (use ``Twig_Test`` instead). In Twig 2.x, + ``Twig_SimpleTest`` is just an alias for ``Twig_Test``. + +* The ``sameas`` and ``divisibleby`` tests are deprecated in favor of ``same + as`` and ``divisible by`` respectively. + +Tags +---- + +* As of Twig 1.x, the ``raw`` tag is deprecated. You should use ``verbatim`` + instead. + +Nodes +----- + +* As of Twig 1.x, ``Node::toXml()`` is deprecated and will be removed in Twig + 2.0. + +* As of Twig 1.26, ``Node::$nodes`` should only contains ``Twig_Node`` + instances, storing a ``null`` value is deprecated and won't be possible in + Twig 2.x. + +* As of Twig 1.27, the ``filename`` attribute on ``Twig_Node_Module`` is + deprecated. Use ``getName()`` instead. + +* As of Twig 1.27, the ``Twig_Node::getFilename()/Twig_Node::getLine()`` + methods are deprecated, use + ``Twig_Node::getTemplateName()/Twig_Node::getTemplateLine()`` instead. + +Interfaces +---------- + +* As of Twig 2.x, the following interfaces are deprecated and empty (they will + be removed in Twig 3.0): + +* ``Twig_CompilerInterface`` (use ``Twig_Compiler`` instead) +* ``Twig_LexerInterface`` (use ``Twig_Lexer`` instead) +* ``Twig_NodeInterface`` (use ``Twig_Node`` instead) +* ``Twig_ParserInterface`` (use ``Twig_Parser`` instead) +* ``Twig_ExistsLoaderInterface`` (merged with ``Twig_LoaderInterface``) +* ``Twig_SourceContextLoaderInterface`` (merged with ``Twig_LoaderInterface``) +* ``Twig_TemplateInterface`` (use ``Twig_Template`` instead, and use + those constants Twig_Template::ANY_CALL, Twig_Template::ARRAY_CALL, + Twig_Template::METHOD_CALL) + +Compiler +-------- + +* As of Twig 1.26, the ``Twig_Compiler::getFilename()`` has been deprecated. + You should not use it anyway as its values is not reliable. + +* As of Twig 1.27, the ``Twig_Compiler::addIndentation()`` has been deprecated. + Use ``Twig_Compiler::write('')`` instead. + +Loaders +------- + +* As of Twig 1.x, ``Twig_Loader_String`` is deprecated and will be removed in + 2.0. You can render a string via ``Twig_Environment::createTemplate()``. + +* As of Twig 1.27, ``Twig_LoaderInterface::getSource()`` is deprecated. + Implement ``Twig_SourceContextLoaderInterface`` instead and use + ``getSourceContext()``. + +Node Visitors +------------- + +* Because of the removal of ``Twig_NodeInterface`` in 2.0, you need to extend + ``Twig_BaseNodeVisitor`` instead of implementing ``Twig_NodeVisitorInterface`` + directly to make your node visitors compatible with both Twig 1.x and 2.x. + +Globals +------- + +* As of Twig 2.x, the ability to register a global variable after the runtime + or the extensions have been initialized is not possible anymore (but + changing the value of an already registered global is possible). + +* As of Twig 1.x, using the ``_self`` global variable to get access to the + current ``Twig_Template`` instance is deprecated; most usages only need the + current template name, which will continue to work in Twig 2.0. In Twig 2.0, + ``_self`` returns the current template name instead of the current + ``Twig_Template`` instance. If you are using ``{{ _self.templateName }}``, + just replace it with ``{{ _self }}``. + +Miscellaneous +------------- + +* As of Twig 1.x, ``Twig_Environment::clearTemplateCache()``, + ``Twig_Environment::writeCacheFile()``, + ``Twig_Environment::clearCacheFiles()``, + ``Twig_Environment::getCacheFilename()``, + ``Twig_Environment::getTemplateClassPrefix()``, + ``Twig_Environment::getLexer()``, ``Twig_Environment::getParser()``, and + ``Twig_Environment::getCompiler()`` are deprecated and will be removed in 2.0. + +* As of Twig 1.x, ``Twig_Template::getEnvironment()`` and + ``Twig_TemplateInterface::getEnvironment()`` are deprecated and will be + removed in 2.0. + +* As of Twig 1.21, setting the environment option ``autoescape`` to ``true`` is + deprecated and will be removed in 2.0. Use ``"html"`` instead. + +* As of Twig 1.27, ``Twig_Error::getTemplateFile()`` and + ``Twig_Error::setTemplateFile()`` are deprecated. Use + ``Twig_Error::getTemplateName()`` and ``Twig_Error::setTemplateName()`` + instead. + +* As of Twig 1.27, ``Twig_Template::getSource()`` is deprecated. Use + ``Twig_Template::getSourceContext()`` instead. + +* As of Twig 1.27, ``Twig_Parser::addHandler()`` and + ``Twig_Parser::addNodeVisitor()`` are deprecated and will be removed in 2.0. + +* As of Twig 1.29, some classes are marked as being final via the `@final` + annotation. Those classes will be marked as final in 2.0. diff --git a/system/vendor/twig/twig/doc/filters/abs.rst b/system/vendor/twig/twig/doc/filters/abs.rst new file mode 100644 index 0000000..22fa59d --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/abs.rst @@ -0,0 +1,18 @@ +``abs`` +======= + +The ``abs`` filter returns the absolute value. + +.. code-block:: jinja + + {# number = -5 #} + + {{ number|abs }} + + {# outputs 5 #} + +.. note:: + + Internally, Twig uses the PHP `abs`_ function. + +.. _`abs`: http://php.net/abs diff --git a/system/vendor/twig/twig/doc/filters/batch.rst b/system/vendor/twig/twig/doc/filters/batch.rst new file mode 100644 index 0000000..f8b6fa9 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/batch.rst @@ -0,0 +1,51 @@ +``batch`` +========= + +.. versionadded:: 1.12.3 + The ``batch`` filter was added in Twig 1.12.3. + +The ``batch`` filter "batches" items by returning a list of lists with the +given number of items. A second parameter can be provided and used to fill in +missing items: + +.. code-block:: jinja + + {% set items = ['a', 'b', 'c', 'd', 'e', 'f', 'g'] %} + + + {% for row in items|batch(3, 'No item') %} + + {% for column in row %} + + {% endfor %} + + {% endfor %} +
    {{ column }}
    + +The above example will be rendered as: + +.. code-block:: jinja + + + + + + + + + + + + + + + + + +
    abc
    def
    gNo itemNo item
    + +Arguments +--------- + +* ``size``: The size of the batch; fractional numbers will be rounded up +* ``fill``: Used to fill in missing items diff --git a/system/vendor/twig/twig/doc/filters/capitalize.rst b/system/vendor/twig/twig/doc/filters/capitalize.rst new file mode 100644 index 0000000..10546a1 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/capitalize.rst @@ -0,0 +1,11 @@ +``capitalize`` +============== + +The ``capitalize`` filter capitalizes a value. The first character will be +uppercase, all others lowercase: + +.. code-block:: jinja + + {{ 'my first car'|capitalize }} + + {# outputs 'My first car' #} diff --git a/system/vendor/twig/twig/doc/filters/convert_encoding.rst b/system/vendor/twig/twig/doc/filters/convert_encoding.rst new file mode 100644 index 0000000..f4ebe58 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/convert_encoding.rst @@ -0,0 +1,28 @@ +``convert_encoding`` +==================== + +.. versionadded:: 1.4 + The ``convert_encoding`` filter was added in Twig 1.4. + +The ``convert_encoding`` filter converts a string from one encoding to +another. The first argument is the expected output charset and the second one +is the input charset: + +.. code-block:: jinja + + {{ data|convert_encoding('UTF-8', 'iso-2022-jp') }} + +.. note:: + + This filter relies on the `iconv`_ or `mbstring`_ extension, so one of + them must be installed. In case both are installed, `mbstring`_ is used by + default (Twig before 1.8.1 uses `iconv`_ by default). + +Arguments +--------- + +* ``to``: The output charset +* ``from``: The input charset + +.. _`iconv`: http://php.net/iconv +.. _`mbstring`: http://php.net/mbstring diff --git a/system/vendor/twig/twig/doc/filters/date.rst b/system/vendor/twig/twig/doc/filters/date.rst new file mode 100644 index 0000000..99a17ab --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/date.rst @@ -0,0 +1,100 @@ +``date`` +======== + +.. versionadded:: 1.1 + The timezone support has been added in Twig 1.1. + +.. versionadded:: 1.5 + The default date format support has been added in Twig 1.5. + +.. versionadded:: 1.6.1 + The default timezone support has been added in Twig 1.6.1. + +.. versionadded:: 1.11.0 + The introduction of the false value for the timezone was introduced in Twig 1.11.0 + +The ``date`` filter formats a date to a given format: + +.. code-block:: jinja + + {{ post.published_at|date("m/d/Y") }} + +The format specifier is the same as supported by `date`_, +except when the filtered data is of type `DateInterval`_, when the format must conform to +`DateInterval::format`_ instead. + +The ``date`` filter accepts strings (it must be in a format supported by the +`strtotime`_ function), `DateTime`_ instances, or `DateInterval`_ instances. For +instance, to display the current date, filter the word "now": + +.. code-block:: jinja + + {{ "now"|date("m/d/Y") }} + +To escape words and characters in the date format use ``\\`` in front of each +character: + +.. code-block:: jinja + + {{ post.published_at|date("F jS \\a\\t g:ia") }} + +If the value passed to the ``date`` filter is ``null``, it will return the +current date by default. If an empty string is desired instead of the current +date, use a ternary operator: + +.. code-block:: jinja + + {{ post.published_at is empty ? "" : post.published_at|date("m/d/Y") }} + +If no format is provided, Twig will use the default one: ``F j, Y H:i``. This +default can be easily changed by calling the ``setDateFormat()`` method on the +``core`` extension instance. The first argument is the default format for +dates and the second one is the default format for date intervals: + +.. code-block:: php + + $twig = new Twig_Environment($loader); + $twig->getExtension('Twig_Extension_Core')->setDateFormat('d/m/Y', '%d days'); + + // before Twig 1.26 + $twig->getExtension('core')->setDateFormat('d/m/Y', '%d days'); + +Timezone +-------- + +By default, the date is displayed by applying the default timezone (the one +specified in php.ini or declared in Twig -- see below), but you can override +it by explicitly specifying a timezone: + +.. code-block:: jinja + + {{ post.published_at|date("m/d/Y", "Europe/Paris") }} + +If the date is already a DateTime object, and if you want to keep its current +timezone, pass ``false`` as the timezone value: + +.. code-block:: jinja + + {{ post.published_at|date("m/d/Y", false) }} + +The default timezone can also be set globally by calling ``setTimezone()``: + +.. code-block:: php + + $twig = new Twig_Environment($loader); + $twig->getExtension('Twig_Extension_Core')->setTimezone('Europe/Paris'); + + // before Twig 1.26 + $twig->getExtension('core')->setTimezone('Europe/Paris'); + +Arguments +--------- + +* ``format``: The date format +* ``timezone``: The date timezone + +.. _`strtotime`: http://www.php.net/strtotime +.. _`DateTime`: http://www.php.net/DateTime +.. _`DateInterval`: http://www.php.net/DateInterval +.. _`date`: http://www.php.net/date +.. _`DateInterval::format`: http://www.php.net/DateInterval.format diff --git a/system/vendor/twig/twig/doc/filters/date_modify.rst b/system/vendor/twig/twig/doc/filters/date_modify.rst new file mode 100644 index 0000000..add40b5 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/date_modify.rst @@ -0,0 +1,23 @@ +``date_modify`` +=============== + +.. versionadded:: 1.9.0 + The date_modify filter has been added in Twig 1.9.0. + +The ``date_modify`` filter modifies a date with a given modifier string: + +.. code-block:: jinja + + {{ post.published_at|date_modify("+1 day")|date("m/d/Y") }} + +The ``date_modify`` filter accepts strings (it must be in a format supported +by the `strtotime`_ function) or `DateTime`_ instances. You can easily combine +it with the :doc:`date` filter for formatting. + +Arguments +--------- + +* ``modifier``: The modifier + +.. _`strtotime`: http://www.php.net/strtotime +.. _`DateTime`: http://www.php.net/DateTime diff --git a/system/vendor/twig/twig/doc/filters/default.rst b/system/vendor/twig/twig/doc/filters/default.rst new file mode 100644 index 0000000..641ac6e --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/default.rst @@ -0,0 +1,33 @@ +``default`` +=========== + +The ``default`` filter returns the passed default value if the value is +undefined or empty, otherwise the value of the variable: + +.. code-block:: jinja + + {{ var|default('var is not defined') }} + + {{ var.foo|default('foo item on var is not defined') }} + + {{ var['foo']|default('foo item on var is not defined') }} + + {{ ''|default('passed var is empty') }} + +When using the ``default`` filter on an expression that uses variables in some +method calls, be sure to use the ``default`` filter whenever a variable can be +undefined: + +.. code-block:: jinja + + {{ var.method(foo|default('foo'))|default('foo') }} + +.. note:: + + Read the documentation for the :doc:`defined<../tests/defined>` and + :doc:`empty<../tests/empty>` tests to learn more about their semantics. + +Arguments +--------- + +* ``default``: The default value diff --git a/system/vendor/twig/twig/doc/filters/escape.rst b/system/vendor/twig/twig/doc/filters/escape.rst new file mode 100644 index 0000000..2149134 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/escape.rst @@ -0,0 +1,119 @@ +``escape`` +========== + +.. versionadded:: 1.9.0 + The ``css``, ``url``, and ``html_attr`` strategies were added in Twig + 1.9.0. + +.. versionadded:: 1.14.0 + The ability to define custom escapers was added in Twig 1.14.0. + +The ``escape`` filter escapes a string for safe insertion into the final +output. It supports different escaping strategies depending on the template +context. + +By default, it uses the HTML escaping strategy: + +.. code-block:: jinja + + {{ user.username|escape }} + +For convenience, the ``e`` filter is defined as an alias: + +.. code-block:: jinja + + {{ user.username|e }} + +The ``escape`` filter can also be used in other contexts than HTML thanks to +an optional argument which defines the escaping strategy to use: + +.. code-block:: jinja + + {{ user.username|e }} + {# is equivalent to #} + {{ user.username|e('html') }} + +And here is how to escape variables included in JavaScript code: + +.. code-block:: jinja + + {{ user.username|escape('js') }} + {{ user.username|e('js') }} + +The ``escape`` filter supports the following escaping strategies: + +* ``html``: escapes a string for the **HTML body** context. + +* ``js``: escapes a string for the **JavaScript context**. + +* ``css``: escapes a string for the **CSS context**. CSS escaping can be + applied to any string being inserted into CSS and escapes everything except + alphanumerics. + +* ``url``: escapes a string for the **URI or parameter contexts**. This should + not be used to escape an entire URI; only a subcomponent being inserted. + +* ``html_attr``: escapes a string for the **HTML attribute** context. + +.. note:: + + Internally, ``escape`` uses the PHP native `htmlspecialchars`_ function + for the HTML escaping strategy. + +.. caution:: + + When using automatic escaping, Twig tries to not double-escape a variable + when the automatic escaping strategy is the same as the one applied by the + escape filter; but that does not work when using a variable as the + escaping strategy: + + .. code-block:: jinja + + {% set strategy = 'html' %} + + {% autoescape 'html' %} + {{ var|escape('html') }} {# won't be double-escaped #} + {{ var|escape(strategy) }} {# will be double-escaped #} + {% endautoescape %} + + When using a variable as the escaping strategy, you should disable + automatic escaping: + + .. code-block:: jinja + + {% set strategy = 'html' %} + + {% autoescape 'html' %} + {{ var|escape(strategy)|raw }} {# won't be double-escaped #} + {% endautoescape %} + +Custom Escapers +--------------- + +You can define custom escapers by calling the ``setEscaper()`` method on the +``core`` extension instance. The first argument is the escaper name (to be +used in the ``escape`` call) and the second one must be a valid PHP callable: + +.. code-block:: php + + $twig = new Twig_Environment($loader); + $twig->getExtension('Twig_Extension_Core')->setEscaper('csv', 'csv_escaper'); + + // before Twig 1.26 + $twig->getExtension('core')->setEscaper('csv', 'csv_escaper'); + +When called by Twig, the callable receives the Twig environment instance, the +string to escape, and the charset. + +.. note:: + + Built-in escapers cannot be overridden mainly they should be considered as + the final implementation and also for better performance. + +Arguments +--------- + +* ``strategy``: The escaping strategy +* ``charset``: The string charset + +.. _`htmlspecialchars`: http://php.net/htmlspecialchars diff --git a/system/vendor/twig/twig/doc/filters/first.rst b/system/vendor/twig/twig/doc/filters/first.rst new file mode 100644 index 0000000..674c1f9 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/first.rst @@ -0,0 +1,25 @@ +``first`` +========= + +.. versionadded:: 1.12.2 + The ``first`` filter was added in Twig 1.12.2. + +The ``first`` filter returns the first "element" of a sequence, a mapping, or +a string: + +.. code-block:: jinja + + {{ [1, 2, 3, 4]|first }} + {# outputs 1 #} + + {{ { a: 1, b: 2, c: 3, d: 4 }|first }} + {# outputs 1 #} + + {{ '1234'|first }} + {# outputs 1 #} + +.. note:: + + It also works with objects implementing the `Traversable`_ interface. + +.. _`Traversable`: http://php.net/manual/en/class.traversable.php diff --git a/system/vendor/twig/twig/doc/filters/format.rst b/system/vendor/twig/twig/doc/filters/format.rst new file mode 100644 index 0000000..f8effd9 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/format.rst @@ -0,0 +1,16 @@ +``format`` +========== + +The ``format`` filter formats a given string by replacing the placeholders +(placeholders follows the `sprintf`_ notation): + +.. code-block:: jinja + + {{ "I like %s and %s."|format(foo, "bar") }} + + {# outputs I like foo and bar + if the foo parameter equals to the foo string. #} + +.. _`sprintf`: http://www.php.net/sprintf + +.. seealso:: :doc:`replace` diff --git a/system/vendor/twig/twig/doc/filters/index.rst b/system/vendor/twig/twig/doc/filters/index.rst new file mode 100644 index 0000000..8daa961 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/index.rst @@ -0,0 +1,37 @@ +Filters +======= + +.. toctree:: + :maxdepth: 1 + + abs + batch + capitalize + convert_encoding + date + date_modify + default + escape + first + format + join + json_encode + keys + last + length + lower + merge + nl2br + number_format + raw + replace + reverse + round + slice + sort + split + striptags + title + trim + upper + url_encode diff --git a/system/vendor/twig/twig/doc/filters/join.rst b/system/vendor/twig/twig/doc/filters/join.rst new file mode 100644 index 0000000..2fab945 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/join.rst @@ -0,0 +1,23 @@ +``join`` +======== + +The ``join`` filter returns a string which is the concatenation of the items +of a sequence: + +.. code-block:: jinja + + {{ [1, 2, 3]|join }} + {# returns 123 #} + +The separator between elements is an empty string per default, but you can +define it with the optional first parameter: + +.. code-block:: jinja + + {{ [1, 2, 3]|join('|') }} + {# outputs 1|2|3 #} + +Arguments +--------- + +* ``glue``: The separator diff --git a/system/vendor/twig/twig/doc/filters/json_encode.rst b/system/vendor/twig/twig/doc/filters/json_encode.rst new file mode 100644 index 0000000..a39bb47 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/json_encode.rst @@ -0,0 +1,21 @@ +``json_encode`` +=============== + +The ``json_encode`` filter returns the JSON representation of a value: + +.. code-block:: jinja + + {{ data|json_encode() }} + +.. note:: + + Internally, Twig uses the PHP `json_encode`_ function. + +Arguments +--------- + +* ``options``: A bitmask of `json_encode options`_ (``{{ + data|json_encode(constant('JSON_PRETTY_PRINT')) }}``) + +.. _`json_encode`: http://php.net/json_encode +.. _`json_encode options`: http://www.php.net/manual/en/json.constants.php diff --git a/system/vendor/twig/twig/doc/filters/keys.rst b/system/vendor/twig/twig/doc/filters/keys.rst new file mode 100644 index 0000000..e4f090c --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/keys.rst @@ -0,0 +1,11 @@ +``keys`` +======== + +The ``keys`` filter returns the keys of an array. It is useful when you want to +iterate over the keys of an array: + +.. code-block:: jinja + + {% for key in array|keys %} + ... + {% endfor %} diff --git a/system/vendor/twig/twig/doc/filters/last.rst b/system/vendor/twig/twig/doc/filters/last.rst new file mode 100644 index 0000000..345b657 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/last.rst @@ -0,0 +1,25 @@ +``last`` +======== + +.. versionadded:: 1.12.2 + The ``last`` filter was added in Twig 1.12.2. + +The ``last`` filter returns the last "element" of a sequence, a mapping, or +a string: + +.. code-block:: jinja + + {{ [1, 2, 3, 4]|last }} + {# outputs 4 #} + + {{ { a: 1, b: 2, c: 3, d: 4 }|last }} + {# outputs 4 #} + + {{ '1234'|last }} + {# outputs 4 #} + +.. note:: + + It also works with objects implementing the `Traversable`_ interface. + +.. _`Traversable`: http://php.net/manual/en/class.traversable.php diff --git a/system/vendor/twig/twig/doc/filters/length.rst b/system/vendor/twig/twig/doc/filters/length.rst new file mode 100644 index 0000000..5620f3b --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/length.rst @@ -0,0 +1,21 @@ +``length`` +========== + +.. versionadded:: 1.33 + + Support for the ``__toString()`` magic method has been added in Twig 1.33. + +The ``length`` filter returns the number of items of a sequence or mapping, or +the length of a string. + +For objects that implement the ``Countable`` interface, ``length`` will use the +return value of the ``count()`` method. + +For objects that implement the ``__toString()`` magic method (and not ``Countable``), +it will return the length of the string provided by that method. + +.. code-block:: jinja + + {% if users|length > 10 %} + ... + {% endif %} diff --git a/system/vendor/twig/twig/doc/filters/lower.rst b/system/vendor/twig/twig/doc/filters/lower.rst new file mode 100644 index 0000000..ef9faa9 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/lower.rst @@ -0,0 +1,10 @@ +``lower`` +========= + +The ``lower`` filter converts a value to lowercase: + +.. code-block:: jinja + + {{ 'WELCOME'|lower }} + + {# outputs 'welcome' #} diff --git a/system/vendor/twig/twig/doc/filters/merge.rst b/system/vendor/twig/twig/doc/filters/merge.rst new file mode 100644 index 0000000..88780dd --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/merge.rst @@ -0,0 +1,48 @@ +``merge`` +========= + +The ``merge`` filter merges an array with another array: + +.. code-block:: jinja + + {% set values = [1, 2] %} + + {% set values = values|merge(['apple', 'orange']) %} + + {# values now contains [1, 2, 'apple', 'orange'] #} + +New values are added at the end of the existing ones. + +The ``merge`` filter also works on hashes: + +.. code-block:: jinja + + {% set items = { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'unknown' } %} + + {% set items = items|merge({ 'peugeot': 'car', 'renault': 'car' }) %} + + {# items now contains { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'car', 'renault': 'car' } #} + +For hashes, the merging process occurs on the keys: if the key does not +already exist, it is added but if the key already exists, its value is +overridden. + +.. tip:: + + If you want to ensure that some values are defined in an array (by given + default values), reverse the two elements in the call: + + .. code-block:: jinja + + {% set items = { 'apple': 'fruit', 'orange': 'fruit' } %} + + {% set items = { 'apple': 'unknown' }|merge(items) %} + + {# items now contains { 'apple': 'fruit', 'orange': 'fruit' } #} + +.. note:: + + Internally, Twig uses the PHP `array_merge`_ function. It supports + Traversable objects by transforming those to arrays. + +.. _`array_merge`: http://php.net/array_merge diff --git a/system/vendor/twig/twig/doc/filters/nl2br.rst b/system/vendor/twig/twig/doc/filters/nl2br.rst new file mode 100644 index 0000000..5c923e1 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/nl2br.rst @@ -0,0 +1,22 @@ +``nl2br`` +========= + +.. versionadded:: 1.5 + The ``nl2br`` filter was added in Twig 1.5. + +The ``nl2br`` filter inserts HTML line breaks before all newlines in a string: + +.. code-block:: jinja + + {{ "I like Twig.\nYou will like it too."|nl2br }} + {# outputs + + I like Twig.
    + You will like it too. + + #} + +.. note:: + + The ``nl2br`` filter pre-escapes the input before applying the + transformation. diff --git a/system/vendor/twig/twig/doc/filters/number_format.rst b/system/vendor/twig/twig/doc/filters/number_format.rst new file mode 100644 index 0000000..f42ede1 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/number_format.rst @@ -0,0 +1,48 @@ +``number_format`` +================= + +.. versionadded:: 1.5 + The ``number_format`` filter was added in Twig 1.5 + +The ``number_format`` filter formats numbers. It is a wrapper around PHP's +`number_format`_ function: + +.. code-block:: jinja + + {{ 200.35|number_format }} + +You can control the number of decimal places, decimal point, and thousands +separator using the additional arguments: + +.. code-block:: jinja + + {{ 9800.333|number_format(2, '.', ',') }} + +If no formatting options are provided then Twig will use the default formatting +options of: + +* 0 decimal places. +* ``.`` as the decimal point. +* ``,`` as the thousands separator. + +These defaults can be easily changed through the core extension: + +.. code-block:: php + + $twig = new Twig_Environment($loader); + $twig->getExtension('Twig_Extension_Core')->setNumberFormat(3, '.', ','); + + // before Twig 1.26 + $twig->getExtension('core')->setNumberFormat(3, '.', ','); + +The defaults set for ``number_format`` can be over-ridden upon each call using the +additional parameters. + +Arguments +--------- + +* ``decimal``: The number of decimal points to display +* ``decimal_point``: The character(s) to use for the decimal point +* ``thousand_sep``: The character(s) to use for the thousands separator + +.. _`number_format`: http://php.net/number_format diff --git a/system/vendor/twig/twig/doc/filters/raw.rst b/system/vendor/twig/twig/doc/filters/raw.rst new file mode 100644 index 0000000..e5e5b12 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/raw.rst @@ -0,0 +1,36 @@ +``raw`` +======= + +The ``raw`` filter marks the value as being "safe", which means that in an +environment with automatic escaping enabled this variable will not be escaped +if ``raw`` is the last filter applied to it: + +.. code-block:: jinja + + {% autoescape %} + {{ var|raw }} {# var won't be escaped #} + {% endautoescape %} + +.. note:: + + Be careful when using the ``raw`` filter inside expressions: + + .. code-block:: jinja + + {% autoescape %} + {% set hello = 'Hello' %} + {% set hola = 'Hola' %} + + {{ false ? 'Hola' : hello|raw }} + does not render the same as + {{ false ? hola : hello|raw }} + but renders the same as + {{ (false ? hola : hello)|raw }} + {% endautoescape %} + + The first ternary statement is not escaped: ``hello`` is marked as being + safe and Twig does not escape static values (see + :doc:`escape<../tags/autoescape>`). In the second ternary statement, even + if ``hello`` is marked as safe, ``hola`` remains unsafe and so is the whole + expression. The third ternary statement is marked as safe and the result is + not escaped. diff --git a/system/vendor/twig/twig/doc/filters/replace.rst b/system/vendor/twig/twig/doc/filters/replace.rst new file mode 100644 index 0000000..8dbb745 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/replace.rst @@ -0,0 +1,19 @@ +``replace`` +=========== + +The ``replace`` filter formats a given string by replacing the placeholders +(placeholders are free-form): + +.. code-block:: jinja + + {{ "I like %this% and %that%."|replace({'%this%': foo, '%that%': "bar"}) }} + + {# outputs I like foo and bar + if the foo parameter equals to the foo string. #} + +Arguments +--------- + +* ``from``: The placeholder values + +.. seealso:: :doc:`format` diff --git a/system/vendor/twig/twig/doc/filters/reverse.rst b/system/vendor/twig/twig/doc/filters/reverse.rst new file mode 100644 index 0000000..76fd2c1 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/reverse.rst @@ -0,0 +1,47 @@ +``reverse`` +=========== + +.. versionadded:: 1.6 + Support for strings has been added in Twig 1.6. + +The ``reverse`` filter reverses a sequence, a mapping, or a string: + +.. code-block:: jinja + + {% for user in users|reverse %} + ... + {% endfor %} + + {{ '1234'|reverse }} + + {# outputs 4321 #} + +.. tip:: + + For sequences and mappings, numeric keys are not preserved. To reverse + them as well, pass ``true`` as an argument to the ``reverse`` filter: + + .. code-block:: jinja + + {% for key, value in {1: "a", 2: "b", 3: "c"}|reverse %} + {{ key }}: {{ value }} + {%- endfor %} + + {# output: 0: c 1: b 2: a #} + + {% for key, value in {1: "a", 2: "b", 3: "c"}|reverse(true) %} + {{ key }}: {{ value }} + {%- endfor %} + + {# output: 3: c 2: b 1: a #} + +.. note:: + + It also works with objects implementing the `Traversable`_ interface. + +Arguments +--------- + +* ``preserve_keys``: Preserve keys when reversing a mapping or a sequence. + +.. _`Traversable`: http://php.net/Traversable diff --git a/system/vendor/twig/twig/doc/filters/round.rst b/system/vendor/twig/twig/doc/filters/round.rst new file mode 100644 index 0000000..2521cf1 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/round.rst @@ -0,0 +1,37 @@ +``round`` +========= + +.. versionadded:: 1.15.0 + The ``round`` filter was added in Twig 1.15.0. + +The ``round`` filter rounds a number to a given precision: + +.. code-block:: jinja + + {{ 42.55|round }} + {# outputs 43 #} + + {{ 42.55|round(1, 'floor') }} + {# outputs 42.5 #} + +The ``round`` filter takes two optional arguments; the first one specifies the +precision (default is ``0``) and the second the rounding method (default is +``common``): + +* ``common`` rounds either up or down (rounds the value up to precision decimal + places away from zero, when it is half way there -- making 1.5 into 2 and + -1.5 into -2); + +* ``ceil`` always rounds up; + +* ``floor`` always rounds down. + +.. note:: + + The ``//`` operator is equivalent to ``|round(0, 'floor')``. + +Arguments +--------- + +* ``precision``: The rounding precision +* ``method``: The rounding method diff --git a/system/vendor/twig/twig/doc/filters/slice.rst b/system/vendor/twig/twig/doc/filters/slice.rst new file mode 100644 index 0000000..70bf139 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/slice.rst @@ -0,0 +1,71 @@ +``slice`` +=========== + +.. versionadded:: 1.6 + The ``slice`` filter was added in Twig 1.6. + +The ``slice`` filter extracts a slice of a sequence, a mapping, or a string: + +.. code-block:: jinja + + {% for i in [1, 2, 3, 4, 5]|slice(1, 2) %} + {# will iterate over 2 and 3 #} + {% endfor %} + + {{ '12345'|slice(1, 2) }} + + {# outputs 23 #} + +You can use any valid expression for both the start and the length: + +.. code-block:: jinja + + {% for i in [1, 2, 3, 4, 5]|slice(start, length) %} + {# ... #} + {% endfor %} + +As syntactic sugar, you can also use the ``[]`` notation: + +.. code-block:: jinja + + {% for i in [1, 2, 3, 4, 5][start:length] %} + {# ... #} + {% endfor %} + + {{ '12345'[1:2] }} {# will display "23" #} + + {# you can omit the first argument -- which is the same as 0 #} + {{ '12345'[:2] }} {# will display "12" #} + + {# you can omit the last argument -- which will select everything till the end #} + {{ '12345'[2:] }} {# will display "345" #} + +The ``slice`` filter works as the `array_slice`_ PHP function for arrays and +`mb_substr`_ for strings with a fallback to `substr`_. + +If the start is non-negative, the sequence will start at that start in the +variable. If start is negative, the sequence will start that far from the end +of the variable. + +If length is given and is positive, then the sequence will have up to that +many elements in it. If the variable is shorter than the length, then only the +available variable elements will be present. If length is given and is +negative then the sequence will stop that many elements from the end of the +variable. If it is omitted, then the sequence will have everything from offset +up until the end of the variable. + +.. note:: + + It also works with objects implementing the `Traversable`_ interface. + +Arguments +--------- + +* ``start``: The start of the slice +* ``length``: The size of the slice +* ``preserve_keys``: Whether to preserve key or not (when the input is an array) + +.. _`Traversable`: http://php.net/manual/en/class.traversable.php +.. _`array_slice`: http://php.net/array_slice +.. _`mb_substr` : http://php.net/mb-substr +.. _`substr`: http://php.net/substr diff --git a/system/vendor/twig/twig/doc/filters/sort.rst b/system/vendor/twig/twig/doc/filters/sort.rst new file mode 100644 index 0000000..350207f --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/sort.rst @@ -0,0 +1,18 @@ +``sort`` +======== + +The ``sort`` filter sorts an array: + +.. code-block:: jinja + + {% for user in users|sort %} + ... + {% endfor %} + +.. note:: + + Internally, Twig uses the PHP `asort`_ function to maintain index + association. It supports Traversable objects by transforming + those to arrays. + +.. _`asort`: http://php.net/asort diff --git a/system/vendor/twig/twig/doc/filters/split.rst b/system/vendor/twig/twig/doc/filters/split.rst new file mode 100644 index 0000000..bbc6d79 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/split.rst @@ -0,0 +1,53 @@ +``split`` +========= + +.. versionadded:: 1.10.3 + The ``split`` filter was added in Twig 1.10.3. + +The ``split`` filter splits a string by the given delimiter and returns a list +of strings: + +.. code-block:: jinja + + {% set foo = "one,two,three"|split(',') %} + {# foo contains ['one', 'two', 'three'] #} + +You can also pass a ``limit`` argument: + + * If ``limit`` is positive, the returned array will contain a maximum of + limit elements with the last element containing the rest of string; + + * If ``limit`` is negative, all components except the last -limit are + returned; + + * If ``limit`` is zero, then this is treated as 1. + +.. code-block:: jinja + + {% set foo = "one,two,three,four,five"|split(',', 3) %} + {# foo contains ['one', 'two', 'three,four,five'] #} + +If the ``delimiter`` is an empty string, then value will be split by equal +chunks. Length is set by the ``limit`` argument (one character by default). + +.. code-block:: jinja + + {% set foo = "123"|split('') %} + {# foo contains ['1', '2', '3'] #} + + {% set bar = "aabbcc"|split('', 2) %} + {# bar contains ['aa', 'bb', 'cc'] #} + +.. note:: + + Internally, Twig uses the PHP `explode`_ or `str_split`_ (if delimiter is + empty) functions for string splitting. + +Arguments +--------- + +* ``delimiter``: The delimiter +* ``limit``: The limit argument + +.. _`explode`: http://php.net/explode +.. _`str_split`: http://php.net/str_split diff --git a/system/vendor/twig/twig/doc/filters/striptags.rst b/system/vendor/twig/twig/doc/filters/striptags.rst new file mode 100644 index 0000000..82953b7 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/striptags.rst @@ -0,0 +1,29 @@ +``striptags`` +============= + +The ``striptags`` filter strips SGML/XML tags and replace adjacent whitespace +by one space: + +.. code-block:: jinja + + {{ some_html|striptags }} + +You can also provide tags which should not be stripped: + +.. code-block:: jinja + + {{ some_html|striptags('

    ') }} + +In this example, the ``
    ``, ``
    ``, ``

    ``, and ``

    `` tags won't be +removed from the string. + +.. note:: + + Internally, Twig uses the PHP `strip_tags`_ function. + +Arguments +--------- + +* ``allowable_tags``: Tags which should not be stripped + +.. _`strip_tags`: http://php.net/strip_tags diff --git a/system/vendor/twig/twig/doc/filters/title.rst b/system/vendor/twig/twig/doc/filters/title.rst new file mode 100644 index 0000000..c5a318e --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/title.rst @@ -0,0 +1,11 @@ +``title`` +========= + +The ``title`` filter returns a titlecased version of the value. Words will +start with uppercase letters, all remaining characters are lowercase: + +.. code-block:: jinja + + {{ 'my first car'|title }} + + {# outputs 'My First Car' #} diff --git a/system/vendor/twig/twig/doc/filters/trim.rst b/system/vendor/twig/twig/doc/filters/trim.rst new file mode 100644 index 0000000..b598363 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/trim.rst @@ -0,0 +1,45 @@ +``trim`` +======== + +.. versionadded:: 1.32 + The ``side`` argument was added in Twig 1.32. + +.. versionadded:: 1.6.2 + The ``trim`` filter was added in Twig 1.6.2. + +The ``trim`` filter strips whitespace (or other characters) from the beginning +and end of a string: + +.. code-block:: jinja + + {{ ' I like Twig. '|trim }} + + {# outputs 'I like Twig.' #} + + {{ ' I like Twig.'|trim('.') }} + + {# outputs ' I like Twig' #} + + {{ ' I like Twig. '|trim(side='left') }} + + {# outputs 'I like Twig. ' #} + + {{ ' I like Twig. '|trim(' ', 'right') }} + + {# outputs ' I like Twig.' #} + +.. note:: + + Internally, Twig uses the PHP `trim`_, `ltrim`_, and `rtrim`_ functions. + +Arguments +--------- + +* ``character_mask``: The characters to strip + +* ``side``: The default is to strip from the left and the right (`both`) sides, but `left` + and `right` will strip from either the left side or right side only + +.. _`trim`: http://php.net/trim +.. _`ltrim`: http://php.net/ltrim +.. _`rtrim`: http://php.net/rtrim diff --git a/system/vendor/twig/twig/doc/filters/upper.rst b/system/vendor/twig/twig/doc/filters/upper.rst new file mode 100644 index 0000000..561cebe --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/upper.rst @@ -0,0 +1,10 @@ +``upper`` +========= + +The ``upper`` filter converts a value to uppercase: + +.. code-block:: jinja + + {{ 'welcome'|upper }} + + {# outputs 'WELCOME' #} diff --git a/system/vendor/twig/twig/doc/filters/url_encode.rst b/system/vendor/twig/twig/doc/filters/url_encode.rst new file mode 100644 index 0000000..5944e59 --- /dev/null +++ b/system/vendor/twig/twig/doc/filters/url_encode.rst @@ -0,0 +1,34 @@ +``url_encode`` +============== + +.. versionadded:: 1.12.3 + Support for encoding an array as query string was added in Twig 1.12.3. + +.. versionadded:: 1.16.0 + The ``raw`` argument was removed in Twig 1.16.0. Twig now always encodes + according to RFC 3986. + +The ``url_encode`` filter percent encodes a given string as URL segment +or an array as query string: + +.. code-block:: jinja + + {{ "path-seg*ment"|url_encode }} + {# outputs "path-seg%2Ament" #} + + {{ "string with spaces"|url_encode }} + {# outputs "string%20with%20spaces" #} + + {{ {'param': 'value', 'foo': 'bar'}|url_encode }} + {# outputs "param=value&foo=bar" #} + +.. note:: + + Internally, Twig uses the PHP `urlencode`_ (or `rawurlencode`_ if you pass + ``true`` as the first parameter) or the `http_build_query`_ function. Note + that as of Twig 1.16.0, ``urlencode`` **always** uses ``rawurlencode`` (the + ``raw`` argument was removed.) + +.. _`urlencode`: http://php.net/urlencode +.. _`rawurlencode`: http://php.net/rawurlencode +.. _`http_build_query`: http://php.net/http_build_query diff --git a/system/vendor/twig/twig/doc/functions/attribute.rst b/system/vendor/twig/twig/doc/functions/attribute.rst new file mode 100644 index 0000000..ceba96b --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/attribute.rst @@ -0,0 +1,26 @@ +``attribute`` +============= + +.. versionadded:: 1.2 + The ``attribute`` function was added in Twig 1.2. + +The ``attribute`` function can be used to access a "dynamic" attribute of a +variable: + +.. code-block:: jinja + + {{ attribute(object, method) }} + {{ attribute(object, method, arguments) }} + {{ attribute(array, item) }} + +In addition, the ``defined`` test can check for the existence of a dynamic +attribute: + +.. code-block:: jinja + + {{ attribute(object, method) is defined ? 'Method exists' : 'Method does not exist' }} + +.. note:: + + The resolution algorithm is the same as the one used for the ``.`` + notation, except that the item can be any valid expression. diff --git a/system/vendor/twig/twig/doc/functions/block.rst b/system/vendor/twig/twig/doc/functions/block.rst new file mode 100644 index 0000000..f5d683c --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/block.rst @@ -0,0 +1,41 @@ +``block`` +========= + +.. versionadded: 1.28 + Using ``block`` with the ``defined`` test was added in Twig 1.28. + +.. versionadded: 1.28 + Support for the template argument was added in Twig 1.28. + +When a template uses inheritance and if you want to print a block multiple +times, use the ``block`` function: + +.. code-block:: jinja + + {% block title %}{% endblock %} + +

    {{ block('title') }}

    + + {% block body %}{% endblock %} + +The ``block`` function can also be used to display one block of another +template: + +.. code-block:: jinja + + {{ block("title", "common_blocks.twig") }} + +Use the ``defined`` test to check if a block exists in the context of the +current template: + +.. code-block:: jinja + + {% if block("footer") is defined %} + ... + {% endif %} + + {% if block("footer", "common_blocks.twig") is defined %} + ... + {% endif %} + +.. seealso:: :doc:`extends<../tags/extends>`, :doc:`parent<../functions/parent>` diff --git a/system/vendor/twig/twig/doc/functions/constant.rst b/system/vendor/twig/twig/doc/functions/constant.rst new file mode 100644 index 0000000..97aa5c8 --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/constant.rst @@ -0,0 +1,29 @@ +``constant`` +============ + +.. versionadded: 1.12.1 + constant now accepts object instances as the second argument. + +.. versionadded: 1.28 + Using ``constant`` with the ``defined`` test was added in Twig 1.28. + +``constant`` returns the constant value for a given string: + +.. code-block:: jinja + + {{ some_date|date(constant('DATE_W3C')) }} + {{ constant('Namespace\\Classname::CONSTANT_NAME') }} + +As of 1.12.1 you can read constants from object instances as well: + +.. code-block:: jinja + + {{ constant('RSS', date) }} + +Use the ``defined`` test to check if a constant is defined: + +.. code-block:: jinja + + {% if constant('SOME_CONST') is defined %} + ... + {% endif %} diff --git a/system/vendor/twig/twig/doc/functions/cycle.rst b/system/vendor/twig/twig/doc/functions/cycle.rst new file mode 100644 index 0000000..e343493 --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/cycle.rst @@ -0,0 +1,28 @@ +``cycle`` +========= + +The ``cycle`` function cycles on an array of values: + +.. code-block:: jinja + + {% set start_year = date() | date('Y') %} + {% set end_year = start_year + 5 %} + + {% for year in start_year..end_year %} + {{ cycle(['odd', 'even'], loop.index0) }} + {% endfor %} + +The array can contain any number of values: + +.. code-block:: jinja + + {% set fruits = ['apple', 'orange', 'citrus'] %} + + {% for i in 0..10 %} + {{ cycle(fruits, i) }} + {% endfor %} + +Arguments +--------- + +* ``position``: The cycle position diff --git a/system/vendor/twig/twig/doc/functions/date.rst b/system/vendor/twig/twig/doc/functions/date.rst new file mode 100644 index 0000000..158dd6a --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/date.rst @@ -0,0 +1,55 @@ +``date`` +======== + +.. versionadded:: 1.6 + The date function has been added in Twig 1.6. + +.. versionadded:: 1.6.1 + The default timezone support has been added in Twig 1.6.1. + +Converts an argument to a date to allow date comparison: + +.. code-block:: jinja + + {% if date(user.created_at) < date('-2days') %} + {# do something #} + {% endif %} + +The argument must be in one of PHP’s supported `date and time formats`_. + +You can pass a timezone as the second argument: + +.. code-block:: jinja + + {% if date(user.created_at) < date('-2days', 'Europe/Paris') %} + {# do something #} + {% endif %} + +If no argument is passed, the function returns the current date: + +.. code-block:: jinja + + {% if date(user.created_at) < date() %} + {# always! #} + {% endif %} + +.. note:: + + You can set the default timezone globally by calling ``setTimezone()`` on + the ``core`` extension instance: + + .. code-block:: php + + $twig = new Twig_Environment($loader); + $twig->getExtension('Twig_Extension_Core')->setTimezone('Europe/Paris'); + + // before Twig 1.26 + $twig->getExtension('core')->setTimezone('Europe/Paris'); + +Arguments +--------- + +* ``date``: The date +* ``timezone``: The timezone + +.. _`date and time formats`: http://php.net/manual/en/datetime.formats.php diff --git a/system/vendor/twig/twig/doc/functions/dump.rst b/system/vendor/twig/twig/doc/functions/dump.rst new file mode 100644 index 0000000..a231f08 --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/dump.rst @@ -0,0 +1,69 @@ +``dump`` +======== + +.. versionadded:: 1.5 + The ``dump`` function was added in Twig 1.5. + +The ``dump`` function dumps information about a template variable. This is +mostly useful to debug a template that does not behave as expected by +introspecting its variables: + +.. code-block:: jinja + + {{ dump(user) }} + +.. note:: + + The ``dump`` function is not available by default. You must add the + ``Twig_Extension_Debug`` extension explicitly when creating your Twig + environment:: + + $twig = new Twig_Environment($loader, array( + 'debug' => true, + // ... + )); + $twig->addExtension(new Twig_Extension_Debug()); + + Even when enabled, the ``dump`` function won't display anything if the + ``debug`` option on the environment is not enabled (to avoid leaking debug + information on a production server). + +In an HTML context, wrap the output with a ``pre`` tag to make it easier to +read: + +.. code-block:: jinja + +
    +        {{ dump(user) }}
    +    
    + +.. tip:: + + Using a ``pre`` tag is not needed when `XDebug`_ is enabled and + ``html_errors`` is ``on``; as a bonus, the output is also nicer with + XDebug enabled. + +You can debug several variables by passing them as additional arguments: + +.. code-block:: jinja + + {{ dump(user, categories) }} + +If you don't pass any value, all variables from the current context are +dumped: + +.. code-block:: jinja + + {{ dump() }} + +.. note:: + + Internally, Twig uses the PHP `var_dump`_ function. + +Arguments +--------- + +* ``context``: The context to dump + +.. _`XDebug`: http://xdebug.org/docs/display +.. _`var_dump`: http://php.net/var_dump diff --git a/system/vendor/twig/twig/doc/functions/include.rst b/system/vendor/twig/twig/doc/functions/include.rst new file mode 100644 index 0000000..2f88ed7 --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/include.rst @@ -0,0 +1,84 @@ +``include`` +=========== + +.. versionadded:: 1.12 + The ``include`` function was added in Twig 1.12. + +The ``include`` function returns the rendered content of a template: + +.. code-block:: jinja + + {{ include('template.html') }} + {{ include(some_var) }} + +Included templates have access to the variables of the active context. + +If you are using the filesystem loader, the templates are looked for in the +paths defined by it. + +The context is passed by default to the template but you can also pass +additional variables: + +.. code-block:: jinja + + {# template.html will have access to the variables from the current context and the additional ones provided #} + {{ include('template.html', {foo: 'bar'}) }} + +You can disable access to the context by setting ``with_context`` to +``false``: + +.. code-block:: jinja + + {# only the foo variable will be accessible #} + {{ include('template.html', {foo: 'bar'}, with_context = false) }} + +.. code-block:: jinja + + {# no variables will be accessible #} + {{ include('template.html', with_context = false) }} + +And if the expression evaluates to a ``Twig_Template`` or a +``Twig_TemplateWrapper`` instance, Twig will use it directly:: + + // {{ include(template) }} + + // deprecated as of Twig 1.28 + $template = $twig->loadTemplate('some_template.twig'); + + // as of Twig 1.28 + $template = $twig->load('some_template.twig'); + + $twig->display('template.twig', array('template' => $template)); + +When you set the ``ignore_missing`` flag, Twig will return an empty string if +the template does not exist: + +.. code-block:: jinja + + {{ include('sidebar.html', ignore_missing = true) }} + +You can also provide a list of templates that are checked for existence before +inclusion. The first template that exists will be rendered: + +.. code-block:: jinja + + {{ include(['page_detailed.html', 'page.html']) }} + +If ``ignore_missing`` is set, it will fall back to rendering nothing if none +of the templates exist, otherwise it will throw an exception. + +When including a template created by an end user, you should consider +sandboxing it: + +.. code-block:: jinja + + {{ include('page.html', sandboxed = true) }} + +Arguments +--------- + +* ``template``: The template to render +* ``variables``: The variables to pass to the template +* ``with_context``: Whether to pass the current context variables or not +* ``ignore_missing``: Whether to ignore missing templates or not +* ``sandboxed``: Whether to sandbox the template or not diff --git a/system/vendor/twig/twig/doc/functions/index.rst b/system/vendor/twig/twig/doc/functions/index.rst new file mode 100644 index 0000000..07214a7 --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/index.rst @@ -0,0 +1,20 @@ +Functions +========= + +.. toctree:: + :maxdepth: 1 + + attribute + block + constant + cycle + date + dump + include + max + min + parent + random + range + source + template_from_string diff --git a/system/vendor/twig/twig/doc/functions/max.rst b/system/vendor/twig/twig/doc/functions/max.rst new file mode 100644 index 0000000..6f3cfc5 --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/max.rst @@ -0,0 +1,20 @@ +``max`` +======= + +.. versionadded:: 1.15 + The ``max`` function was added in Twig 1.15. + +``max`` returns the biggest value of a sequence or a set of values: + +.. code-block:: jinja + + {{ max(1, 3, 2) }} + {{ max([1, 3, 2]) }} + +When called with a mapping, max ignores keys and only compares values: + +.. code-block:: jinja + + {{ max({2: "e", 1: "a", 3: "b", 5: "d", 4: "c"}) }} + {# returns "e" #} + diff --git a/system/vendor/twig/twig/doc/functions/min.rst b/system/vendor/twig/twig/doc/functions/min.rst new file mode 100644 index 0000000..7b6a65e --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/min.rst @@ -0,0 +1,20 @@ +``min`` +======= + +.. versionadded:: 1.15 + The ``min`` function was added in Twig 1.15. + +``min`` returns the lowest value of a sequence or a set of values: + +.. code-block:: jinja + + {{ min(1, 3, 2) }} + {{ min([1, 3, 2]) }} + +When called with a mapping, min ignores keys and only compares values: + +.. code-block:: jinja + + {{ min({2: "e", 3: "a", 1: "b", 5: "d", 4: "c"}) }} + {# returns "a" #} + diff --git a/system/vendor/twig/twig/doc/functions/parent.rst b/system/vendor/twig/twig/doc/functions/parent.rst new file mode 100644 index 0000000..f5bd200 --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/parent.rst @@ -0,0 +1,20 @@ +``parent`` +========== + +When a template uses inheritance, it's possible to render the contents of the +parent block when overriding a block by using the ``parent`` function: + +.. code-block:: jinja + + {% extends "base.html" %} + + {% block sidebar %} +

    Table Of Contents

    + ... + {{ parent() }} + {% endblock %} + +The ``parent()`` call will return the content of the ``sidebar`` block as +defined in the ``base.html`` template. + +.. seealso:: :doc:`extends<../tags/extends>`, :doc:`block<../functions/block>`, :doc:`block<../tags/block>` diff --git a/system/vendor/twig/twig/doc/functions/random.rst b/system/vendor/twig/twig/doc/functions/random.rst new file mode 100644 index 0000000..168e74f --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/random.rst @@ -0,0 +1,29 @@ +``random`` +========== + +.. versionadded:: 1.5 + The ``random`` function was added in Twig 1.5. + +.. versionadded:: 1.6 + String and integer handling was added in Twig 1.6. + +The ``random`` function returns a random value depending on the supplied +parameter type: + +* a random item from a sequence; +* a random character from a string; +* a random integer between 0 and the integer parameter (inclusive). + +.. code-block:: jinja + + {{ random(['apple', 'orange', 'citrus']) }} {# example output: orange #} + {{ random('ABC') }} {# example output: C #} + {{ random() }} {# example output: 15386094 (works as the native PHP mt_rand function) #} + {{ random(5) }} {# example output: 3 #} + +Arguments +--------- + +* ``values``: The values + +.. _`mt_rand`: http://php.net/mt_rand diff --git a/system/vendor/twig/twig/doc/functions/range.rst b/system/vendor/twig/twig/doc/functions/range.rst new file mode 100644 index 0000000..5c9db08 --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/range.rst @@ -0,0 +1,58 @@ +``range`` +========= + +Returns a list containing an arithmetic progression of integers: + +.. code-block:: jinja + + {% for i in range(0, 3) %} + {{ i }}, + {% endfor %} + + {# outputs 0, 1, 2, 3, #} + +When step is given (as the third parameter), it specifies the increment (or +decrement for negative values): + +.. code-block:: jinja + + {% for i in range(0, 6, 2) %} + {{ i }}, + {% endfor %} + + {# outputs 0, 2, 4, 6, #} + +.. note:: + + Note that if the start is greater than the end, ``range`` assumes a step of + ``-1``: + + .. code-block:: jinja + + {% for i in range(3, 0) %} + {{ i }}, + {% endfor %} + + {# outputs 3, 2, 1, 0, #} + +The Twig built-in ``..`` operator is just syntactic sugar for the ``range`` +function (with a step of ``1``, or ``-1`` if the start is greater than the end): + +.. code-block:: jinja + + {% for i in 0..3 %} + {{ i }}, + {% endfor %} + +.. tip:: + + The ``range`` function works as the native PHP `range`_ function. + +Arguments +--------- + +* ``low``: The first value of the sequence. +* ``high``: The highest possible value of the sequence. +* ``step``: The increment between elements of the sequence. + +.. _`range`: http://php.net/range diff --git a/system/vendor/twig/twig/doc/functions/source.rst b/system/vendor/twig/twig/doc/functions/source.rst new file mode 100644 index 0000000..3c921b1 --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/source.rst @@ -0,0 +1,32 @@ +``source`` +========== + +.. versionadded:: 1.15 + The ``source`` function was added in Twig 1.15. + +.. versionadded:: 1.18.3 + The ``ignore_missing`` flag was added in Twig 1.18.3. + +The ``source`` function returns the content of a template without rendering it: + +.. code-block:: jinja + + {{ source('template.html') }} + {{ source(some_var) }} + +When you set the ``ignore_missing`` flag, Twig will return an empty string if +the template does not exist: + +.. code-block:: jinja + + {{ source('template.html', ignore_missing = true) }} + +The function uses the same template loaders as the ones used to include +templates. So, if you are using the filesystem loader, the templates are looked +for in the paths defined by it. + +Arguments +--------- + +* ``name``: The name of the template to read +* ``ignore_missing``: Whether to ignore missing templates or not diff --git a/system/vendor/twig/twig/doc/functions/template_from_string.rst b/system/vendor/twig/twig/doc/functions/template_from_string.rst new file mode 100644 index 0000000..ce6a60d --- /dev/null +++ b/system/vendor/twig/twig/doc/functions/template_from_string.rst @@ -0,0 +1,32 @@ +``template_from_string`` +======================== + +.. versionadded:: 1.11 + The ``template_from_string`` function was added in Twig 1.11. + +The ``template_from_string`` function loads a template from a string: + +.. code-block:: jinja + + {{ include(template_from_string("Hello {{ name }}")) }} + {{ include(template_from_string(page.template)) }} + +.. note:: + + The ``template_from_string`` function is not available by default. You + must add the ``Twig_Extension_StringLoader`` extension explicitly when + creating your Twig environment:: + + $twig = new Twig_Environment(...); + $twig->addExtension(new Twig_Extension_StringLoader()); + +.. note:: + + Even if you will probably always use the ``template_from_string`` function + with the ``include`` function, you can use it with any tag or function that + takes a template as an argument (like the ``embed`` or ``extends`` tags). + +Arguments +--------- + +* ``template``: The template diff --git a/system/vendor/twig/twig/doc/index.rst b/system/vendor/twig/twig/doc/index.rst new file mode 100644 index 0000000..358bd73 --- /dev/null +++ b/system/vendor/twig/twig/doc/index.rst @@ -0,0 +1,19 @@ +Twig +==== + +.. toctree:: + :maxdepth: 2 + + intro + installation + templates + api + advanced + internals + deprecated + recipes + coding_standards + tags/index + filters/index + functions/index + tests/index diff --git a/system/vendor/twig/twig/doc/installation.rst b/system/vendor/twig/twig/doc/installation.rst new file mode 100644 index 0000000..afdcf16 --- /dev/null +++ b/system/vendor/twig/twig/doc/installation.rst @@ -0,0 +1,116 @@ +Installation +============ + +You have multiple ways to install Twig. + +Installing the Twig PHP package +------------------------------- + +Installing via Composer (recommended) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Install `Composer`_ and run the following command to get the latest version: + +.. code-block:: bash + + composer require twig/twig:~1.0 + +Installing from the tarball release +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +1. Download the most recent tarball from the `download page`_ +2. Verify the integrity of the tarball http://fabien.potencier.org/article/73/signing-project-releases +3. Unpack the tarball +4. Move the files somewhere in your project + +Installing the development version +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. code-block:: bash + + git clone git://github.com/twigphp/Twig.git + +Installing the PEAR package +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +.. note:: + + Using PEAR for installing Twig is deprecated and Twig 1.15.1 was the last + version published on the PEAR channel; use Composer instead. + +.. code-block:: bash + + pear channel-discover pear.twig-project.org + pear install twig/Twig + +Installing the C extension +-------------------------- + +.. versionadded:: 1.4 + The C extension was added in Twig 1.4. + +.. note:: + + The C extension is **optional** but it brings some nice performance + improvements. Note that the extension is not a replacement for the PHP + code; it only implements a small part of the PHP code to improve the + performance at runtime; you must still install the regular PHP code. + +Twig comes with a C extension that enhances the performance of the Twig +runtime engine; install it like any other PHP extensions: + +.. code-block:: bash + + cd ext/twig + phpize + ./configure + make + make install + +.. note:: + + You can also install the C extension via PEAR (note that this method is + deprecated and newer versions of Twig are not available on the PEAR + channel): + + .. code-block:: bash + + pear channel-discover pear.twig-project.org + pear install twig/CTwig + +For Windows: + +1. Setup the build environment following the `PHP documentation`_ +2. Put Twig's C extension source code into ``C:\php-sdk\phpdev\vcXX\x86\php-source-directory\ext\twig`` +3. Use the ``configure --disable-all --enable-cli --enable-twig=shared`` command instead of step 14 +4. ``nmake`` +5. Copy the ``C:\php-sdk\phpdev\vcXX\x86\php-source-directory\Release_TS\php_twig.dll`` file to your PHP setup. + +.. tip:: + + For Windows ZendServer, ZTS is not enabled as mentioned in `Zend Server + FAQ`_. + + You have to use ``configure --disable-all --disable-zts --enable-cli + --enable-twig=shared`` to be able to build the twig C extension for + ZendServer. + + The built DLL will be available in + ``C:\\php-sdk\\phpdev\\vcXX\\x86\\php-source-directory\\Release`` + +Finally, enable the extension in your ``php.ini`` configuration file: + +.. code-block:: ini + + extension=twig.so #For Unix systems + extension=php_twig.dll #For Windows systems + +And from now on, Twig will automatically compile your templates to take +advantage of the C extension. Note that this extension does not replace the +PHP code but only provides an optimized version of the +``Twig_Template::getAttribute()`` method. + +.. _`download page`: https://github.com/twigphp/Twig/tags +.. _`Composer`: https://getcomposer.org/download/ +.. _`PHP documentation`: https://wiki.php.net/internals/windows/stepbystepbuild +.. _`Zend Server FAQ`: http://www.zend.com/en/products/server/faq#faqD6 diff --git a/system/vendor/twig/twig/doc/internals.rst b/system/vendor/twig/twig/doc/internals.rst new file mode 100644 index 0000000..f38089f --- /dev/null +++ b/system/vendor/twig/twig/doc/internals.rst @@ -0,0 +1,142 @@ +Twig Internals +============== + +Twig is very extensible and you can easily hack it. Keep in mind that you +should probably try to create an extension before hacking the core, as most +features and enhancements can be handled with extensions. This chapter is also +useful for people who want to understand how Twig works under the hood. + +How does Twig work? +------------------- + +The rendering of a Twig template can be summarized into four key steps: + +* **Load** the template: If the template is already compiled, load it and go + to the *evaluation* step, otherwise: + + * First, the **lexer** tokenizes the template source code into small pieces + for easier processing; + * Then, the **parser** converts the token stream into a meaningful tree + of nodes (the Abstract Syntax Tree); + * Eventually, the *compiler* transforms the AST into PHP code. + +* **Evaluate** the template: It basically means calling the ``display()`` + method of the compiled template and passing it the context. + +The Lexer +--------- + +The lexer tokenizes a template source code into a token stream (each token is +an instance of ``Twig_Token``, and the stream is an instance of +``Twig_TokenStream``). The default lexer recognizes 13 different token types: + +* ``Twig_Token::BLOCK_START_TYPE``, ``Twig_Token::BLOCK_END_TYPE``: Delimiters for blocks (``{% %}``) +* ``Twig_Token::VAR_START_TYPE``, ``Twig_Token::VAR_END_TYPE``: Delimiters for variables (``{{ }}``) +* ``Twig_Token::TEXT_TYPE``: A text outside an expression; +* ``Twig_Token::NAME_TYPE``: A name in an expression; +* ``Twig_Token::NUMBER_TYPE``: A number in an expression; +* ``Twig_Token::STRING_TYPE``: A string in an expression; +* ``Twig_Token::OPERATOR_TYPE``: An operator; +* ``Twig_Token::PUNCTUATION_TYPE``: A punctuation sign; +* ``Twig_Token::INTERPOLATION_START_TYPE``, ``Twig_Token::INTERPOLATION_END_TYPE`` (as of Twig 1.5): Delimiters for string interpolation; +* ``Twig_Token::EOF_TYPE``: Ends of template. + +You can manually convert a source code into a token stream by calling the +``tokenize()`` method of an environment:: + + $stream = $twig->tokenize(new Twig_Source($source, $identifier)); + +.. versionadded:: 1.27 + ``Twig_Source`` was introduced in version 1.27, pass the source and the + identifier directly on previous versions. + +As the stream has a ``__toString()`` method, you can have a textual +representation of it by echoing the object:: + + echo $stream."\n"; + +Here is the output for the ``Hello {{ name }}`` template: + +.. code-block:: text + + TEXT_TYPE(Hello ) + VAR_START_TYPE() + NAME_TYPE(name) + VAR_END_TYPE() + EOF_TYPE() + +.. note:: + + The default lexer (``Twig_Lexer``) can be changed by calling + the ``setLexer()`` method:: + + $twig->setLexer($lexer); + +The Parser +---------- + +The parser converts the token stream into an AST (Abstract Syntax Tree), or a +node tree (an instance of ``Twig_Node_Module``). The core extension defines +the basic nodes like: ``for``, ``if``, ... and the expression nodes. + +You can manually convert a token stream into a node tree by calling the +``parse()`` method of an environment:: + + $nodes = $twig->parse($stream); + +Echoing the node object gives you a nice representation of the tree:: + + echo $nodes."\n"; + +Here is the output for the ``Hello {{ name }}`` template: + +.. code-block:: text + + Twig_Node_Module( + Twig_Node_Text(Hello ) + Twig_Node_Print( + Twig_Node_Expression_Name(name) + ) + ) + +.. note:: + + The default parser (``Twig_TokenParser``) can be changed by calling the + ``setParser()`` method:: + + $twig->setParser($parser); + +The Compiler +------------ + +The last step is done by the compiler. It takes a node tree as an input and +generates PHP code usable for runtime execution of the template. + +You can manually compile a node tree to PHP code with the ``compile()`` method +of an environment:: + + $php = $twig->compile($nodes); + +The generated template for a ``Hello {{ name }}`` template reads as follows +(the actual output can differ depending on the version of Twig you are +using):: + + /* Hello {{ name }} */ + class __TwigTemplate_1121b6f109fe93ebe8c6e22e3712bceb extends Twig_Template + { + protected function doDisplay(array $context, array $blocks = array()) + { + // line 1 + echo "Hello "; + echo twig_escape_filter($this->env, isset($context["name"]) ? $context["name"] : null), "html", null, true); + } + + // some more code + } + +.. note:: + + The default compiler (``Twig_Compiler``) can be changed by calling the + ``setCompiler()`` method:: + + $twig->setCompiler($compiler); diff --git a/system/vendor/twig/twig/doc/intro.rst b/system/vendor/twig/twig/doc/intro.rst new file mode 100644 index 0000000..3522869 --- /dev/null +++ b/system/vendor/twig/twig/doc/intro.rst @@ -0,0 +1,85 @@ +Introduction +============ + +This is the documentation for Twig, the flexible, fast, and secure template +engine for PHP. + +If you have any exposure to other text-based template languages, such as +Smarty, Django, or Jinja, you should feel right at home with Twig. It's both +designer and developer friendly by sticking to PHP's principles and adding +functionality useful for templating environments. + +The key-features are... + +* *Fast*: Twig compiles templates down to plain optimized PHP code. The + overhead compared to regular PHP code was reduced to the very minimum. + +* *Secure*: Twig has a sandbox mode to evaluate untrusted template code. This + allows Twig to be used as a template language for applications where users + may modify the template design. + +* *Flexible*: Twig is powered by a flexible lexer and parser. This allows the + developer to define their own custom tags and filters, and to create their own DSL. + +Twig is used by many Open-Source projects like Symfony, Drupal8, eZPublish, +phpBB, Piwik, OroCRM; and many frameworks have support for it as well like +Slim, Yii, Laravel, Codeigniter and Kohana — just to name a few. + +Prerequisites +------------- + +Twig needs at least **PHP 5.2.7** to run. + +Installation +------------ + +The recommended way to install Twig is via Composer: + +.. code-block:: bash + + composer require "twig/twig:~1.0" + +.. note:: + + To learn more about the other installation methods, read the + :doc:`installation` chapter; it also explains how to install + the Twig C extension. + +Basic API Usage +--------------- + +This section gives you a brief introduction to the PHP API for Twig. + +.. code-block:: php + + require_once '/path/to/vendor/autoload.php'; + + $loader = new Twig_Loader_Array(array( + 'index' => 'Hello {{ name }}!', + )); + $twig = new Twig_Environment($loader); + + echo $twig->render('index', array('name' => 'Fabien')); + +Twig uses a loader (``Twig_Loader_Array``) to locate templates, and an +environment (``Twig_Environment``) to store the configuration. + +The ``render()`` method loads the template passed as a first argument and +renders it with the variables passed as a second argument. + +As templates are generally stored on the filesystem, Twig also comes with a +filesystem loader:: + + $loader = new Twig_Loader_Filesystem('/path/to/templates'); + $twig = new Twig_Environment($loader, array( + 'cache' => '/path/to/compilation_cache', + )); + + echo $twig->render('index.html', array('name' => 'Fabien')); + +.. tip:: + + If you are not using Composer, use the Twig built-in autoloader:: + + require_once '/path/to/lib/Twig/Autoloader.php'; + Twig_Autoloader::register(); diff --git a/system/vendor/twig/twig/doc/recipes.rst b/system/vendor/twig/twig/doc/recipes.rst new file mode 100644 index 0000000..b3ba7f4 --- /dev/null +++ b/system/vendor/twig/twig/doc/recipes.rst @@ -0,0 +1,568 @@ +Recipes +======= + +.. _deprecation-notices: + +Displaying Deprecation Notices +------------------------------ + +.. versionadded:: 1.21 + This works as of Twig 1.21. + +Deprecated features generate deprecation notices (via a call to the +``trigger_error()`` PHP function). By default, they are silenced and never +displayed nor logged. + +To easily remove all deprecated feature usages from your templates, write and +run a script along the lines of the following:: + + require_once __DIR__.'/vendor/autoload.php'; + + $twig = create_your_twig_env(); + + $deprecations = new Twig_Util_DeprecationCollector($twig); + + print_r($deprecations->collectDir(__DIR__.'/templates')); + +The ``collectDir()`` method compiles all templates found in a directory, +catches deprecation notices, and return them. + +.. tip:: + + If your templates are not stored on the filesystem, use the ``collect()`` + method instead. ``collect()`` takes a ``Traversable`` which must return + template names as keys and template contents as values (as done by + ``Twig_Util_TemplateDirIterator``). + +However, this code won't find all deprecations (like using deprecated some Twig +classes). To catch all notices, register a custom error handler like the one +below:: + + $deprecations = array(); + set_error_handler(function ($type, $msg) use (&$deprecations) { + if (E_USER_DEPRECATED === $type) { + $deprecations[] = $msg; + } + }); + + // run your application + + print_r($deprecations); + +Note that most deprecation notices are triggered during **compilation**, so +they won't be generated when templates are already cached. + +.. tip:: + + If you want to manage the deprecation notices from your PHPUnit tests, have + a look at the `symfony/phpunit-bridge + `_ package, which eases the + process a lot. + +Making a Layout conditional +--------------------------- + +Working with Ajax means that the same content is sometimes displayed as is, +and sometimes decorated with a layout. As Twig layout template names can be +any valid expression, you can pass a variable that evaluates to ``true`` when +the request is made via Ajax and choose the layout accordingly: + +.. code-block:: jinja + + {% extends request.ajax ? "base_ajax.html" : "base.html" %} + + {% block content %} + This is the content to be displayed. + {% endblock %} + +Making an Include dynamic +------------------------- + +When including a template, its name does not need to be a string. For +instance, the name can depend on the value of a variable: + +.. code-block:: jinja + + {% include var ~ '_foo.html' %} + +If ``var`` evaluates to ``index``, the ``index_foo.html`` template will be +rendered. + +As a matter of fact, the template name can be any valid expression, such as +the following: + +.. code-block:: jinja + + {% include var|default('index') ~ '_foo.html' %} + +Overriding a Template that also extends itself +---------------------------------------------- + +A template can be customized in two different ways: + +* *Inheritance*: A template *extends* a parent template and overrides some + blocks; + +* *Replacement*: If you use the filesystem loader, Twig loads the first + template it finds in a list of configured directories; a template found in a + directory *replaces* another one from a directory further in the list. + +But how do you combine both: *replace* a template that also extends itself +(aka a template in a directory further in the list)? + +Let's say that your templates are loaded from both ``.../templates/mysite`` +and ``.../templates/default`` in this order. The ``page.twig`` template, +stored in ``.../templates/default`` reads as follows: + +.. code-block:: jinja + + {# page.twig #} + {% extends "layout.twig" %} + + {% block content %} + {% endblock %} + +You can replace this template by putting a file with the same name in +``.../templates/mysite``. And if you want to extend the original template, you +might be tempted to write the following: + +.. code-block:: jinja + + {# page.twig in .../templates/mysite #} + {% extends "page.twig" %} {# from .../templates/default #} + +Of course, this will not work as Twig will always load the template from +``.../templates/mysite``. + +It turns out it is possible to get this to work, by adding a directory right +at the end of your template directories, which is the parent of all of the +other directories: ``.../templates`` in our case. This has the effect of +making every template file within our system uniquely addressable. Most of the +time you will use the "normal" paths, but in the special case of wanting to +extend a template with an overriding version of itself we can reference its +parent's full, unambiguous template path in the extends tag: + +.. code-block:: jinja + + {# page.twig in .../templates/mysite #} + {% extends "default/page.twig" %} {# from .../templates #} + +.. note:: + + This recipe was inspired by the following Django wiki page: + http://code.djangoproject.com/wiki/ExtendingTemplates + +Customizing the Syntax +---------------------- + +Twig allows some syntax customization for the block delimiters. It's not +recommended to use this feature as templates will be tied with your custom +syntax. But for specific projects, it can make sense to change the defaults. + +To change the block delimiters, you need to create your own lexer object:: + + $twig = new Twig_Environment(); + + $lexer = new Twig_Lexer($twig, array( + 'tag_comment' => array('{#', '#}'), + 'tag_block' => array('{%', '%}'), + 'tag_variable' => array('{{', '}}'), + 'interpolation' => array('#{', '}'), + )); + $twig->setLexer($lexer); + +Here are some configuration example that simulates some other template engines +syntax:: + + // Ruby erb syntax + $lexer = new Twig_Lexer($twig, array( + 'tag_comment' => array('<%#', '%>'), + 'tag_block' => array('<%', '%>'), + 'tag_variable' => array('<%=', '%>'), + )); + + // SGML Comment Syntax + $lexer = new Twig_Lexer($twig, array( + 'tag_comment' => array(''), + 'tag_block' => array(''), + 'tag_variable' => array('${', '}'), + )); + + // Smarty like + $lexer = new Twig_Lexer($twig, array( + 'tag_comment' => array('{*', '*}'), + 'tag_block' => array('{', '}'), + 'tag_variable' => array('{$', '}'), + )); + +Using dynamic Object Properties +------------------------------- + +When Twig encounters a variable like ``article.title``, it tries to find a +``title`` public property in the ``article`` object. + +It also works if the property does not exist but is rather defined dynamically +thanks to the magic ``__get()`` method; you just need to also implement the +``__isset()`` magic method like shown in the following snippet of code:: + + class Article + { + public function __get($name) + { + if ('title' == $name) { + return 'The title'; + } + + // throw some kind of error + } + + public function __isset($name) + { + if ('title' == $name) { + return true; + } + + return false; + } + } + +Accessing the parent Context in Nested Loops +-------------------------------------------- + +Sometimes, when using nested loops, you need to access the parent context. The +parent context is always accessible via the ``loop.parent`` variable. For +instance, if you have the following template data:: + + $data = array( + 'topics' => array( + 'topic1' => array('Message 1 of topic 1', 'Message 2 of topic 1'), + 'topic2' => array('Message 1 of topic 2', 'Message 2 of topic 2'), + ), + ); + +And the following template to display all messages in all topics: + +.. code-block:: jinja + + {% for topic, messages in topics %} + * {{ loop.index }}: {{ topic }} + {% for message in messages %} + - {{ loop.parent.loop.index }}.{{ loop.index }}: {{ message }} + {% endfor %} + {% endfor %} + +The output will be similar to: + +.. code-block:: text + + * 1: topic1 + - 1.1: The message 1 of topic 1 + - 1.2: The message 2 of topic 1 + * 2: topic2 + - 2.1: The message 1 of topic 2 + - 2.2: The message 2 of topic 2 + +In the inner loop, the ``loop.parent`` variable is used to access the outer +context. So, the index of the current ``topic`` defined in the outer for loop +is accessible via the ``loop.parent.loop.index`` variable. + +Defining undefined Functions and Filters on the Fly +--------------------------------------------------- + +When a function (or a filter) is not defined, Twig defaults to throw a +``Twig_Error_Syntax`` exception. However, it can also call a `callback`_ (any +valid PHP callable) which should return a function (or a filter). + +For filters, register callbacks with ``registerUndefinedFilterCallback()``. +For functions, use ``registerUndefinedFunctionCallback()``:: + + // auto-register all native PHP functions as Twig functions + // don't try this at home as it's not secure at all! + $twig->registerUndefinedFunctionCallback(function ($name) { + if (function_exists($name)) { + return new Twig_SimpleFunction($name, $name); + } + + return false; + }); + +If the callable is not able to return a valid function (or filter), it must +return ``false``. + +If you register more than one callback, Twig will call them in turn until one +does not return ``false``. + +.. tip:: + + As the resolution of functions and filters is done during compilation, + there is no overhead when registering these callbacks. + +Validating the Template Syntax +------------------------------ + +When template code is provided by a third-party (through a web interface for +instance), it might be interesting to validate the template syntax before +saving it. If the template code is stored in a `$template` variable, here is +how you can do it:: + + try { + $twig->parse($twig->tokenize(new Twig_Source($template))); + + // the $template is valid + } catch (Twig_Error_Syntax $e) { + // $template contains one or more syntax errors + } + +If you iterate over a set of files, you can pass the filename to the +``tokenize()`` method to get the filename in the exception message:: + + foreach ($files as $file) { + try { + $twig->parse($twig->tokenize(new Twig_Source($template, $file->getFilename(), $file))); + + // the $template is valid + } catch (Twig_Error_Syntax $e) { + // $template contains one or more syntax errors + } + } + +.. versionadded:: 1.27 + ``Twig_Source`` was introduced in version 1.27, pass the source and the + identifier directly on previous versions. + +.. note:: + + This method won't catch any sandbox policy violations because the policy + is enforced during template rendering (as Twig needs the context for some + checks like allowed methods on objects). + +Refreshing modified Templates when OPcache or APC is enabled +------------------------------------------------------------ + +When using OPcache with ``opcache.validate_timestamps`` set to ``0`` or APC +with ``apc.stat`` set to ``0`` and Twig cache enabled, clearing the template +cache won't update the cache. + +To get around this, force Twig to invalidate the bytecode cache:: + + $twig = new Twig_Environment($loader, array( + 'cache' => new Twig_Cache_Filesystem('/some/cache/path', Twig_Cache_Filesystem::FORCE_BYTECODE_INVALIDATION), + // ... + )); + +.. note:: + + Before Twig 1.22, you should extend ``Twig_Environment`` instead:: + + class OpCacheAwareTwigEnvironment extends Twig_Environment + { + protected function writeCacheFile($file, $content) + { + parent::writeCacheFile($file, $content); + + // Compile cached file into bytecode cache + if (function_exists('opcache_invalidate')) { + opcache_invalidate($file, true); + } elseif (function_exists('apc_compile_file')) { + apc_compile_file($file); + } + } + } + +Reusing a stateful Node Visitor +------------------------------- + +When attaching a visitor to a ``Twig_Environment`` instance, Twig uses it to +visit *all* templates it compiles. If you need to keep some state information +around, you probably want to reset it when visiting a new template. + +This can be easily achieved with the following code:: + + protected $someTemplateState = array(); + + public function enterNode(Twig_NodeInterface $node, Twig_Environment $env) + { + if ($node instanceof Twig_Node_Module) { + // reset the state as we are entering a new template + $this->someTemplateState = array(); + } + + // ... + + return $node; + } + +Using a Database to store Templates +----------------------------------- + +If you are developing a CMS, templates are usually stored in a database. This +recipe gives you a simple PDO template loader you can use as a starting point +for your own. + +First, let's create a temporary in-memory SQLite3 database to work with:: + + $dbh = new PDO('sqlite::memory:'); + $dbh->exec('CREATE TABLE templates (name STRING, source STRING, last_modified INTEGER)'); + $base = '{% block content %}{% endblock %}'; + $index = ' + {% extends "base.twig" %} + {% block content %}Hello {{ name }}{% endblock %} + '; + $now = time(); + $dbh->exec("INSERT INTO templates (name, source, last_modified) VALUES ('base.twig', '$base', $now)"); + $dbh->exec("INSERT INTO templates (name, source, last_modified) VALUES ('index.twig', '$index', $now)"); + +We have created a simple ``templates`` table that hosts two templates: +``base.twig`` and ``index.twig``. + +Now, let's define a loader able to use this database:: + + class DatabaseTwigLoader implements Twig_LoaderInterface, Twig_ExistsLoaderInterface, Twig_SourceContextLoaderInterface + { + protected $dbh; + + public function __construct(PDO $dbh) + { + $this->dbh = $dbh; + } + + public function getSource($name) + { + if (false === $source = $this->getValue('source', $name)) { + throw new Twig_Error_Loader(sprintf('Template "%s" does not exist.', $name)); + } + + return $source; + } + + // Twig_SourceContextLoaderInterface as of Twig 1.27 + public function getSourceContext($name) + { + if (false === $source = $this->getValue('source', $name)) { + throw new Twig_Error_Loader(sprintf('Template "%s" does not exist.', $name)); + } + + return new Twig_Source($source, $name); + } + + // Twig_ExistsLoaderInterface as of Twig 1.11 + public function exists($name) + { + return $name === $this->getValue('name', $name); + } + + public function getCacheKey($name) + { + return $name; + } + + public function isFresh($name, $time) + { + if (false === $lastModified = $this->getValue('last_modified', $name)) { + return false; + } + + return $lastModified <= $time; + } + + protected function getValue($column, $name) + { + $sth = $this->dbh->prepare('SELECT '.$column.' FROM templates WHERE name = :name'); + $sth->execute(array(':name' => (string) $name)); + + return $sth->fetchColumn(); + } + } + +Finally, here is an example on how you can use it:: + + $loader = new DatabaseTwigLoader($dbh); + $twig = new Twig_Environment($loader); + + echo $twig->render('index.twig', array('name' => 'Fabien')); + +Using different Template Sources +-------------------------------- + +This recipe is the continuation of the previous one. Even if you store the +contributed templates in a database, you might want to keep the original/base +templates on the filesystem. When templates can be loaded from different +sources, you need to use the ``Twig_Loader_Chain`` loader. + +As you can see in the previous recipe, we reference the template in the exact +same way as we would have done it with a regular filesystem loader. This is +the key to be able to mix and match templates coming from the database, the +filesystem, or any other loader for that matter: the template name should be a +logical name, and not the path from the filesystem:: + + $loader1 = new DatabaseTwigLoader($dbh); + $loader2 = new Twig_Loader_Array(array( + 'base.twig' => '{% block content %}{% endblock %}', + )); + $loader = new Twig_Loader_Chain(array($loader1, $loader2)); + + $twig = new Twig_Environment($loader); + + echo $twig->render('index.twig', array('name' => 'Fabien')); + +Now that the ``base.twig`` templates is defined in an array loader, you can +remove it from the database, and everything else will still work as before. + +Loading a Template from a String +-------------------------------- + +From a template, you can easily load a template stored in a string via the +``template_from_string`` function (available as of Twig 1.11 via the +``Twig_Extension_StringLoader`` extension): + +.. code-block:: jinja + + {{ include(template_from_string("Hello {{ name }}")) }} + +From PHP, it's also possible to load a template stored in a string via +``Twig_Environment::createTemplate()`` (available as of Twig 1.18):: + + $template = $twig->createTemplate('hello {{ name }}'); + echo $template->render(array('name' => 'Fabien')); + +.. note:: + + Never use the ``Twig_Loader_String`` loader, which has severe limitations. + +Using Twig and AngularJS in the same Templates +---------------------------------------------- + +Mixing different template syntaxes in the same file is not a recommended +practice as both AngularJS and Twig use the same delimiters in their syntax: +``{{`` and ``}}``. + +Still, if you want to use AngularJS and Twig in the same template, there are +two ways to make it work depending on the amount of AngularJS you need to +include in your templates: + +* Escaping the AngularJS delimiters by wrapping AngularJS sections with the + ``{% verbatim %}`` tag or by escaping each delimiter via ``{{ '{{' }}`` and + ``{{ '}}' }}``; + +* Changing the delimiters of one of the template engines (depending on which + engine you introduced last): + + * For AngularJS, change the interpolation tags using the + ``interpolateProvider`` service, for instance at the module initialization + time: + + .. code-block:: javascript + + angular.module('myApp', []).config(function($interpolateProvider) { + $interpolateProvider.startSymbol('{[').endSymbol(']}'); + }); + + * For Twig, change the delimiters via the ``tag_variable`` Lexer option: + + .. code-block:: php + + $env->setLexer(new Twig_Lexer($env, array( + 'tag_variable' => array('{[', ']}'), + ))); + +.. _callback: http://www.php.net/manual/en/function.is-callable.php diff --git a/system/vendor/twig/twig/doc/tags/autoescape.rst b/system/vendor/twig/twig/doc/tags/autoescape.rst new file mode 100644 index 0000000..8aa8c75 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/autoescape.rst @@ -0,0 +1,81 @@ +``autoescape`` +============== + +Whether automatic escaping is enabled or not, you can mark a section of a +template to be escaped or not by using the ``autoescape`` tag: + +.. code-block:: jinja + + {% autoescape %} + Everything will be automatically escaped in this block + using the HTML strategy + {% endautoescape %} + + {% autoescape 'html' %} + Everything will be automatically escaped in this block + using the HTML strategy + {% endautoescape %} + + {% autoescape 'js' %} + Everything will be automatically escaped in this block + using the js escaping strategy + {% endautoescape %} + + {% autoescape false %} + Everything will be outputted as is in this block + {% endautoescape %} + +.. note:: + + Before Twig 1.8, the syntax was different: + + .. code-block:: jinja + + {% autoescape true %} + Everything will be automatically escaped in this block + using the HTML strategy + {% endautoescape %} + + {% autoescape false %} + Everything will be outputted as is in this block + {% endautoescape %} + + {% autoescape true js %} + Everything will be automatically escaped in this block + using the js escaping strategy + {% endautoescape %} + +When automatic escaping is enabled everything is escaped by default except for +values explicitly marked as safe. Those can be marked in the template by using +the :doc:`raw<../filters/raw>` filter: + +.. code-block:: jinja + + {% autoescape %} + {{ safe_value|raw }} + {% endautoescape %} + +Functions returning template data (like :doc:`macros` and +:doc:`parent<../functions/parent>`) always return safe markup. + +.. note:: + + Twig is smart enough to not escape an already escaped value by the + :doc:`escape<../filters/escape>` filter. + +.. note:: + + Twig does not escape static expressions: + + .. code-block:: jinja + + {% set hello = "Hello" %} + {{ hello }} + {{ "world" }} + + Will be rendered "Hello **world**". + +.. note:: + + The chapter :doc:`Twig for Developers<../api>` gives more information + about when and how automatic escaping is applied. diff --git a/system/vendor/twig/twig/doc/tags/block.rst b/system/vendor/twig/twig/doc/tags/block.rst new file mode 100644 index 0000000..e380482 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/block.rst @@ -0,0 +1,11 @@ +``block`` +========= + +Blocks are used for inheritance and act as placeholders and replacements at +the same time. They are documented in detail in the documentation for the +:doc:`extends<../tags/extends>` tag. + +Block names should consist of alphanumeric characters, and underscores. Dashes +are not permitted. + +.. seealso:: :doc:`block<../functions/block>`, :doc:`parent<../functions/parent>`, :doc:`use<../tags/use>`, :doc:`extends<../tags/extends>` diff --git a/system/vendor/twig/twig/doc/tags/do.rst b/system/vendor/twig/twig/doc/tags/do.rst new file mode 100644 index 0000000..1c344e3 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/do.rst @@ -0,0 +1,12 @@ +``do`` +====== + +.. versionadded:: 1.5 + The ``do`` tag was added in Twig 1.5. + +The ``do`` tag works exactly like the regular variable expression (``{{ ... +}}``) just that it doesn't print anything: + +.. code-block:: jinja + + {% do 1 + 2 %} diff --git a/system/vendor/twig/twig/doc/tags/embed.rst b/system/vendor/twig/twig/doc/tags/embed.rst new file mode 100644 index 0000000..66fc21b --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/embed.rst @@ -0,0 +1,178 @@ +``embed`` +========= + +.. versionadded:: 1.8 + The ``embed`` tag was added in Twig 1.8. + +The ``embed`` tag combines the behaviour of :doc:`include` and +:doc:`extends`. +It allows you to include another template's contents, just like ``include`` +does. But it also allows you to override any block defined inside the +included template, like when extending a template. + +Think of an embedded template as a "micro layout skeleton". + +.. code-block:: jinja + + {% embed "teasers_skeleton.twig" %} + {# These blocks are defined in "teasers_skeleton.twig" #} + {# and we override them right here: #} + {% block left_teaser %} + Some content for the left teaser box + {% endblock %} + {% block right_teaser %} + Some content for the right teaser box + {% endblock %} + {% endembed %} + +The ``embed`` tag takes the idea of template inheritance to the level of +content fragments. While template inheritance allows for "document skeletons", +which are filled with life by child templates, the ``embed`` tag allows you to +create "skeletons" for smaller units of content and re-use and fill them +anywhere you like. + +Since the use case may not be obvious, let's look at a simplified example. +Imagine a base template shared by multiple HTML pages, defining a single block +named "content": + +.. code-block:: text + + ┌─── page layout ─────────────────────┠+ │ │ + │ ┌── block "content" ──┠│ + │ │ │ │ + │ │ │ │ + │ │ (child template to │ │ + │ │ put content here) │ │ + │ │ │ │ + │ │ │ │ + │ └─────────────────────┘ │ + │ │ + └─────────────────────────────────────┘ + +Some pages ("foo" and "bar") share the same content structure - +two vertically stacked boxes: + +.. code-block:: text + + ┌─── page layout ─────────────────────┠+ │ │ + │ ┌── block "content" ──┠│ + │ │ ┌─ block "top" ───┠│ │ + │ │ │ │ │ │ + │ │ └─────────────────┘ │ │ + │ │ ┌─ block "bottom" ┠│ │ + │ │ │ │ │ │ + │ │ └─────────────────┘ │ │ + │ └─────────────────────┘ │ + │ │ + └─────────────────────────────────────┘ + +While other pages ("boom" and "baz") share a different content structure - +two boxes side by side: + +.. code-block:: text + + ┌─── page layout ─────────────────────┠+ │ │ + │ ┌── block "content" ──┠│ + │ │ │ │ + │ │ ┌ block ┠┌ block ┠│ │ + │ │ │"left" │ │"right"│ │ │ + │ │ │ │ │ │ │ │ + │ │ │ │ │ │ │ │ + │ │ └───────┘ └───────┘ │ │ + │ └─────────────────────┘ │ + │ │ + └─────────────────────────────────────┘ + +Without the ``embed`` tag, you have two ways to design your templates: + + * Create two "intermediate" base templates that extend the master layout + template: one with vertically stacked boxes to be used by the "foo" and + "bar" pages and another one with side-by-side boxes for the "boom" and + "baz" pages. + + * Embed the markup for the top/bottom and left/right boxes into each page + template directly. + +These two solutions do not scale well because they each have a major drawback: + + * The first solution may indeed work for this simplified example. But imagine + we add a sidebar, which may again contain different, recurring structures + of content. Now we would need to create intermediate base templates for + all occurring combinations of content structure and sidebar structure... + and so on. + + * The second solution involves duplication of common code with all its negative + consequences: any change involves finding and editing all affected copies + of the structure, correctness has to be verified for each copy, copies may + go out of sync by careless modifications etc. + +In such a situation, the ``embed`` tag comes in handy. The common layout +code can live in a single base template, and the two different content structures, +let's call them "micro layouts" go into separate templates which are embedded +as necessary: + +Page template ``foo.twig``: + +.. code-block:: jinja + + {% extends "layout_skeleton.twig" %} + + {% block content %} + {% embed "vertical_boxes_skeleton.twig" %} + {% block top %} + Some content for the top box + {% endblock %} + + {% block bottom %} + Some content for the bottom box + {% endblock %} + {% endembed %} + {% endblock %} + +And here is the code for ``vertical_boxes_skeleton.twig``: + +.. code-block:: html+jinja + +
    + {% block top %} + Top box default content + {% endblock %} +
    + +
    + {% block bottom %} + Bottom box default content + {% endblock %} +
    + +The goal of the ``vertical_boxes_skeleton.twig`` template being to factor +out the HTML markup for the boxes. + +The ``embed`` tag takes the exact same arguments as the ``include`` tag: + +.. code-block:: jinja + + {% embed "base" with {'foo': 'bar'} %} + ... + {% endembed %} + + {% embed "base" with {'foo': 'bar'} only %} + ... + {% endembed %} + + {% embed "base" ignore missing %} + ... + {% endembed %} + +.. warning:: + + As embedded templates do not have "names", auto-escaping strategies based + on the template name won't work as expected if you change the context (for + instance, if you embed a CSS/JavaScript template into an HTML one). In that + case, explicitly set the default auto-escaping strategy with the + ``autoescape`` tag. + +.. seealso:: :doc:`include<../tags/include>` diff --git a/system/vendor/twig/twig/doc/tags/extends.rst b/system/vendor/twig/twig/doc/tags/extends.rst new file mode 100644 index 0000000..8bf29c4 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/extends.rst @@ -0,0 +1,272 @@ +``extends`` +=========== + +The ``extends`` tag can be used to extend a template from another one. + +.. note:: + + Like PHP, Twig does not support multiple inheritance. So you can only have + one extends tag called per rendering. However, Twig supports horizontal + :doc:`reuse`. + +Let's define a base template, ``base.html``, which defines a simple HTML +skeleton document: + +.. code-block:: html+jinja + + + + + {% block head %} + + {% block title %}{% endblock %} - My Webpage + {% endblock %} + + +
    {% block content %}{% endblock %}
    + + + + +In this example, the :doc:`block` tags define four blocks that child +templates can fill in. + +All the ``block`` tag does is to tell the template engine that a child +template may override those portions of the template. + +Child Template +-------------- + +A child template might look like this: + +.. code-block:: jinja + + {% extends "base.html" %} + + {% block title %}Index{% endblock %} + {% block head %} + {{ parent() }} + + {% endblock %} + {% block content %} +

    Index

    +

    + Welcome on my awesome homepage. +

    + {% endblock %} + +The ``extends`` tag is the key here. It tells the template engine that this +template "extends" another template. When the template system evaluates this +template, first it locates the parent. The extends tag should be the first tag +in the template. + +Note that since the child template doesn't define the ``footer`` block, the +value from the parent template is used instead. + +You can't define multiple ``block`` tags with the same name in the same +template. This limitation exists because a block tag works in "both" +directions. That is, a block tag doesn't just provide a hole to fill - it also +defines the content that fills the hole in the *parent*. If there were two +similarly-named ``block`` tags in a template, that template's parent wouldn't +know which one of the blocks' content to use. + +If you want to print a block multiple times you can however use the +``block`` function: + +.. code-block:: jinja + + {% block title %}{% endblock %} +

    {{ block('title') }}

    + {% block body %}{% endblock %} + +Parent Blocks +------------- + +It's possible to render the contents of the parent block by using the +:doc:`parent<../functions/parent>` function. This gives back the results of +the parent block: + +.. code-block:: jinja + + {% block sidebar %} +

    Table Of Contents

    + ... + {{ parent() }} + {% endblock %} + +Named Block End-Tags +-------------------- + +Twig allows you to put the name of the block after the end tag for better +readability: + +.. code-block:: jinja + + {% block sidebar %} + {% block inner_sidebar %} + ... + {% endblock inner_sidebar %} + {% endblock sidebar %} + +Of course, the name after the ``endblock`` word must match the block name. + +Block Nesting and Scope +----------------------- + +Blocks can be nested for more complex layouts. Per default, blocks have access +to variables from outer scopes: + +.. code-block:: jinja + + {% for item in seq %} +
  • {% block loop_item %}{{ item }}{% endblock %}
  • + {% endfor %} + +Block Shortcuts +--------------- + +For blocks with little content, it's possible to use a shortcut syntax. The +following constructs do the same thing: + +.. code-block:: jinja + + {% block title %} + {{ page_title|title }} + {% endblock %} + +.. code-block:: jinja + + {% block title page_title|title %} + +Dynamic Inheritance +------------------- + +Twig supports dynamic inheritance by using a variable as the base template: + +.. code-block:: jinja + + {% extends some_var %} + +If the variable evaluates to a ``Twig_Template`` or a ``Twig_TemplateWrapper`` +instance, Twig will use it as the parent template:: + + // {% extends layout %} + + // deprecated as of Twig 1.28 + $layout = $twig->loadTemplate('some_layout_template.twig'); + + // as of Twig 1.28 + $layout = $twig->load('some_layout_template.twig'); + + $twig->display('template.twig', array('layout' => $layout)); + +.. versionadded:: 1.2 + The possibility to pass an array of templates has been added in Twig 1.2. + +You can also provide a list of templates that are checked for existence. The +first template that exists will be used as a parent: + +.. code-block:: jinja + + {% extends ['layout.html', 'base_layout.html'] %} + +Conditional Inheritance +----------------------- + +As the template name for the parent can be any valid Twig expression, it's +possible to make the inheritance mechanism conditional: + +.. code-block:: jinja + + {% extends standalone ? "minimum.html" : "base.html" %} + +In this example, the template will extend the "minimum.html" layout template +if the ``standalone`` variable evaluates to ``true``, and "base.html" +otherwise. + +How do blocks work? +------------------- + +A block provides a way to change how a certain part of a template is rendered +but it does not interfere in any way with the logic around it. + +Let's take the following example to illustrate how a block works and more +importantly, how it does not work: + +.. code-block:: jinja + + {# base.twig #} + + {% for post in posts %} + {% block post %} +

    {{ post.title }}

    +

    {{ post.body }}

    + {% endblock %} + {% endfor %} + +If you render this template, the result would be exactly the same with or +without the ``block`` tag. The ``block`` inside the ``for`` loop is just a way +to make it overridable by a child template: + +.. code-block:: jinja + + {# child.twig #} + + {% extends "base.twig" %} + + {% block post %} +
    +
    {{ post.title }}
    +
    {{ post.text }}
    +
    + {% endblock %} + +Now, when rendering the child template, the loop is going to use the block +defined in the child template instead of the one defined in the base one; the +executed template is then equivalent to the following one: + +.. code-block:: jinja + + {% for post in posts %} +
    +
    {{ post.title }}
    +
    {{ post.text }}
    +
    + {% endfor %} + +Let's take another example: a block included within an ``if`` statement: + +.. code-block:: jinja + + {% if posts is empty %} + {% block head %} + {{ parent() }} + + + {% endblock head %} + {% endif %} + +Contrary to what you might think, this template does not define a block +conditionally; it just makes overridable by a child template the output of +what will be rendered when the condition is ``true``. + +If you want the output to be displayed conditionally, use the following +instead: + +.. code-block:: jinja + + {% block head %} + {{ parent() }} + + {% if posts is empty %} + + {% endif %} + {% endblock head %} + +.. seealso:: :doc:`block<../functions/block>`, :doc:`block<../tags/block>`, :doc:`parent<../functions/parent>`, :doc:`use<../tags/use>` diff --git a/system/vendor/twig/twig/doc/tags/filter.rst b/system/vendor/twig/twig/doc/tags/filter.rst new file mode 100644 index 0000000..82ca5c6 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/filter.rst @@ -0,0 +1,21 @@ +``filter`` +========== + +Filter sections allow you to apply regular Twig filters on a block of template +data. Just wrap the code in the special ``filter`` section: + +.. code-block:: jinja + + {% filter upper %} + This text becomes uppercase + {% endfilter %} + +You can also chain filters: + +.. code-block:: jinja + + {% filter lower|escape %} + SOME TEXT + {% endfilter %} + + {# outputs "<strong>some text</strong>" #} diff --git a/system/vendor/twig/twig/doc/tags/flush.rst b/system/vendor/twig/twig/doc/tags/flush.rst new file mode 100644 index 0000000..55ef593 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/flush.rst @@ -0,0 +1,17 @@ +``flush`` +========= + +.. versionadded:: 1.5 + The flush tag was added in Twig 1.5. + +The ``flush`` tag tells Twig to flush the output buffer: + +.. code-block:: jinja + + {% flush %} + +.. note:: + + Internally, Twig uses the PHP `flush`_ function. + +.. _`flush`: http://php.net/flush diff --git a/system/vendor/twig/twig/doc/tags/for.rst b/system/vendor/twig/twig/doc/tags/for.rst new file mode 100644 index 0000000..0673b55 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/for.rst @@ -0,0 +1,172 @@ +``for`` +======= + +Loop over each item in a sequence. For example, to display a list of users +provided in a variable called ``users``: + +.. code-block:: jinja + +

    Members

    +
      + {% for user in users %} +
    • {{ user.username|e }}
    • + {% endfor %} +
    + +.. note:: + + A sequence can be either an array or an object implementing the + ``Traversable`` interface. + +If you do need to iterate over a sequence of numbers, you can use the ``..`` +operator: + +.. code-block:: jinja + + {% for i in 0..10 %} + * {{ i }} + {% endfor %} + +The above snippet of code would print all numbers from 0 to 10. + +It can be also useful with letters: + +.. code-block:: jinja + + {% for letter in 'a'..'z' %} + * {{ letter }} + {% endfor %} + +The ``..`` operator can take any expression at both sides: + +.. code-block:: jinja + + {% for letter in 'a'|upper..'z'|upper %} + * {{ letter }} + {% endfor %} + +.. tip: + + If you need a step different from 1, you can use the ``range`` function + instead. + +The `loop` variable +------------------- + +Inside of a ``for`` loop block you can access some special variables: + +===================== ============================================================= +Variable Description +===================== ============================================================= +``loop.index`` The current iteration of the loop. (1 indexed) +``loop.index0`` The current iteration of the loop. (0 indexed) +``loop.revindex`` The number of iterations from the end of the loop (1 indexed) +``loop.revindex0`` The number of iterations from the end of the loop (0 indexed) +``loop.first`` True if first iteration +``loop.last`` True if last iteration +``loop.length`` The number of items in the sequence +``loop.parent`` The parent context +===================== ============================================================= + +.. code-block:: jinja + + {% for user in users %} + {{ loop.index }} - {{ user.username }} + {% endfor %} + +.. note:: + + The ``loop.length``, ``loop.revindex``, ``loop.revindex0``, and + ``loop.last`` variables are only available for PHP arrays, or objects that + implement the ``Countable`` interface. They are also not available when + looping with a condition. + +.. versionadded:: 1.2 + The ``if`` modifier support has been added in Twig 1.2. + +Adding a condition +------------------ + +Unlike in PHP, it's not possible to ``break`` or ``continue`` in a loop. You +can however filter the sequence during iteration which allows you to skip +items. The following example skips all the users which are not active: + +.. code-block:: jinja + +
      + {% for user in users if user.active %} +
    • {{ user.username|e }}
    • + {% endfor %} +
    + +The advantage is that the special loop variable will count correctly thus not +counting the users not iterated over. Keep in mind that properties like +``loop.last`` will not be defined when using loop conditions. + +.. note:: + + Using the ``loop`` variable within the condition is not recommended as it + will probably not be doing what you expect it to. For instance, adding a + condition like ``loop.index > 4`` won't work as the index is only + incremented when the condition is true (so the condition will never + match). + +The `else` Clause +----------------- + +If no iteration took place because the sequence was empty, you can render a +replacement block by using ``else``: + +.. code-block:: jinja + +
      + {% for user in users %} +
    • {{ user.username|e }}
    • + {% else %} +
    • no user found
    • + {% endfor %} +
    + +Iterating over Keys +------------------- + +By default, a loop iterates over the values of the sequence. You can iterate +on keys by using the ``keys`` filter: + +.. code-block:: jinja + +

    Members

    +
      + {% for key in users|keys %} +
    • {{ key }}
    • + {% endfor %} +
    + +Iterating over Keys and Values +------------------------------ + +You can also access both keys and values: + +.. code-block:: jinja + +

    Members

    +
      + {% for key, user in users %} +
    • {{ key }}: {{ user.username|e }}
    • + {% endfor %} +
    + +Iterating over a Subset +----------------------- + +You might want to iterate over a subset of values. This can be achieved using +the :doc:`slice <../filters/slice>` filter: + +.. code-block:: jinja + +

    Top Ten Members

    +
      + {% for user in users|slice(0, 10) %} +
    • {{ user.username|e }}
    • + {% endfor %} +
    diff --git a/system/vendor/twig/twig/doc/tags/from.rst b/system/vendor/twig/twig/doc/tags/from.rst new file mode 100644 index 0000000..39334fd --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/from.rst @@ -0,0 +1,8 @@ +``from`` +======== + +The ``from`` tag imports :doc:`macro<../tags/macro>` names into the current +namespace. The tag is documented in detail in the documentation for the +:doc:`import<../tags/import>` tag. + +.. seealso:: :doc:`macro<../tags/macro>`, :doc:`import<../tags/import>` diff --git a/system/vendor/twig/twig/doc/tags/if.rst b/system/vendor/twig/twig/doc/tags/if.rst new file mode 100644 index 0000000..12edf98 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/if.rst @@ -0,0 +1,76 @@ +``if`` +====== + +The ``if`` statement in Twig is comparable with the if statements of PHP. + +In the simplest form you can use it to test if an expression evaluates to +``true``: + +.. code-block:: jinja + + {% if online == false %} +

    Our website is in maintenance mode. Please, come back later.

    + {% endif %} + +You can also test if an array is not empty: + +.. code-block:: jinja + + {% if users %} +
      + {% for user in users %} +
    • {{ user.username|e }}
    • + {% endfor %} +
    + {% endif %} + +.. note:: + + If you want to test if the variable is defined, use ``if users is + defined`` instead. + +You can also use ``not`` to check for values that evaluate to ``false``: + +.. code-block:: jinja + + {% if not user.subscribed %} +

    You are not subscribed to our mailing list.

    + {% endif %} + +For multiple conditions, ``and`` and ``or`` can be used: + +.. code-block:: jinja + + {% if temperature > 18 and temperature < 27 %} +

    It's a nice day for a walk in the park.

    + {% endif %} + +For multiple branches ``elseif`` and ``else`` can be used like in PHP. You can +use more complex ``expressions`` there too: + +.. code-block:: jinja + + {% if kenny.sick %} + Kenny is sick. + {% elseif kenny.dead %} + You killed Kenny! You bastard!!! + {% else %} + Kenny looks okay --- so far + {% endif %} + +.. note:: + + The rules to determine if an expression is ``true`` or ``false`` are the + same as in PHP; here are the edge cases rules: + + ====================== ==================== + Value Boolean evaluation + ====================== ==================== + empty string false + numeric zero false + whitespace-only string true + empty array false + null false + non-empty array true + object true + ====================== ==================== diff --git a/system/vendor/twig/twig/doc/tags/import.rst b/system/vendor/twig/twig/doc/tags/import.rst new file mode 100644 index 0000000..21a1e19 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/import.rst @@ -0,0 +1,57 @@ +``import`` +========== + +Twig supports putting often used code into :doc:`macros<../tags/macro>`. These +macros can go into different templates and get imported from there. + +There are two ways to import templates. You can import the complete template +into a variable or request specific macros from it. + +Imagine we have a helper module that renders forms (called ``forms.html``): + +.. code-block:: jinja + + {% macro input(name, value, type, size) %} + + {% endmacro %} + + {% macro textarea(name, value, rows, cols) %} + + {% endmacro %} + +The easiest and most flexible is importing the whole module into a variable. +That way you can access the attributes: + +.. code-block:: jinja + + {% import 'forms.html' as forms %} + +
    +
    Username
    +
    {{ forms.input('username') }}
    +
    Password
    +
    {{ forms.input('password', null, 'password') }}
    +
    +

    {{ forms.textarea('comment') }}

    + +Alternatively you can import names from the template into the current +namespace: + +.. code-block:: jinja + + {% from 'forms.html' import input as input_field, textarea %} + +
    +
    Username
    +
    {{ input_field('username') }}
    +
    Password
    +
    {{ input_field('password', '', 'password') }}
    +
    +

    {{ textarea('comment') }}

    + +.. tip:: + + To import macros from the current file, use the special ``_self`` variable + for the source. + +.. seealso:: :doc:`macro<../tags/macro>`, :doc:`from<../tags/from>` diff --git a/system/vendor/twig/twig/doc/tags/include.rst b/system/vendor/twig/twig/doc/tags/include.rst new file mode 100644 index 0000000..24ff24d --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/include.rst @@ -0,0 +1,90 @@ +``include`` +=========== + +The ``include`` statement includes a template and returns the rendered content +of that file into the current namespace: + +.. code-block:: jinja + + {% include 'header.html' %} + Body + {% include 'footer.html' %} + +Included templates have access to the variables of the active context. + +If you are using the filesystem loader, the templates are looked for in the +paths defined by it. + +You can add additional variables by passing them after the ``with`` keyword: + +.. code-block:: jinja + + {# template.html will have access to the variables from the current context and the additional ones provided #} + {% include 'template.html' with {'foo': 'bar'} %} + + {% set vars = {'foo': 'bar'} %} + {% include 'template.html' with vars %} + +You can disable access to the context by appending the ``only`` keyword: + +.. code-block:: jinja + + {# only the foo variable will be accessible #} + {% include 'template.html' with {'foo': 'bar'} only %} + +.. code-block:: jinja + + {# no variables will be accessible #} + {% include 'template.html' only %} + +.. tip:: + + When including a template created by an end user, you should consider + sandboxing it. More information in the :doc:`Twig for Developers<../api>` + chapter and in the :doc:`sandbox<../tags/sandbox>` tag documentation. + +The template name can be any valid Twig expression: + +.. code-block:: jinja + + {% include some_var %} + {% include ajax ? 'ajax.html' : 'not_ajax.html' %} + +And if the expression evaluates to a ``Twig_Template`` or a +``Twig_TemplateWrapper`` instance, Twig will use it directly:: + + // {% include template %} + + // deprecated as of Twig 1.28 + $template = $twig->loadTemplate('some_template.twig'); + + // as of Twig 1.28 + $template = $twig->load('some_template.twig'); + + $twig->display('template.twig', array('template' => $template)); + +.. versionadded:: 1.2 + The ``ignore missing`` feature has been added in Twig 1.2. + +You can mark an include with ``ignore missing`` in which case Twig will ignore +the statement if the template to be included does not exist. It has to be +placed just after the template name. Here some valid examples: + +.. code-block:: jinja + + {% include 'sidebar.html' ignore missing %} + {% include 'sidebar.html' ignore missing with {'foo': 'bar'} %} + {% include 'sidebar.html' ignore missing only %} + +.. versionadded:: 1.2 + The possibility to pass an array of templates has been added in Twig 1.2. + +You can also provide a list of templates that are checked for existence before +inclusion. The first template that exists will be included: + +.. code-block:: jinja + + {% include ['page_detailed.html', 'page.html'] %} + +If ``ignore missing`` is given, it will fall back to rendering nothing if none +of the templates exist, otherwise it will throw an exception. diff --git a/system/vendor/twig/twig/doc/tags/index.rst b/system/vendor/twig/twig/doc/tags/index.rst new file mode 100644 index 0000000..dbe2459 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/index.rst @@ -0,0 +1,25 @@ +Tags +==== + +.. toctree:: + :maxdepth: 1 + + autoescape + block + do + embed + extends + filter + flush + for + from + if + import + include + macro + sandbox + set + spaceless + use + verbatim + with diff --git a/system/vendor/twig/twig/doc/tags/macro.rst b/system/vendor/twig/twig/doc/tags/macro.rst new file mode 100644 index 0000000..a8aa76f --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/macro.rst @@ -0,0 +1,103 @@ +``macro`` +========= + +Macros are comparable with functions in regular programming languages. They +are useful to put often used HTML idioms into reusable elements to not repeat +yourself. + +Here is a small example of a macro that renders a form element: + +.. code-block:: jinja + + {% macro input(name, value, type, size) %} + + {% endmacro %} + +Macros differ from native PHP functions in a few ways: + +* Default argument values are defined by using the ``default`` filter in the + macro body; + +* Arguments of a macro are always optional. + +* If extra positional arguments are passed to a macro, they end up in the + special ``varargs`` variable as a list of values. + +But as with PHP functions, macros don't have access to the current template +variables. + +.. tip:: + + You can pass the whole context as an argument by using the special + ``_context`` variable. + +Import +------ + +Macros can be defined in any template, and need to be "imported" before being +used (see the documentation for the :doc:`import<../tags/import>` tag for more +information): + +.. code-block:: jinja + + {% import "forms.html" as forms %} + +The above ``import`` call imports the "forms.html" file (which can contain only +macros, or a template and some macros), and import the functions as items of +the ``forms`` variable. + +The macro can then be called at will: + +.. code-block:: jinja + +

    {{ forms.input('username') }}

    +

    {{ forms.input('password', null, 'password') }}

    + +If macros are defined and used in the same template, you can use the +special ``_self`` variable to import them: + +.. code-block:: jinja + + {% import _self as forms %} + +

    {{ forms.input('username') }}

    + +.. warning:: + + When you define a macro in the template where you are going to use it, you + might be tempted to call the macro directly via ``_self.input()`` instead + of importing it; even if seems to work, this is just a side-effect of the + current implementation and it won't work anymore in Twig 2.x. + +When you want to use a macro in another macro from the same file, you need to +import it locally: + +.. code-block:: jinja + + {% macro input(name, value, type, size) %} + + {% endmacro %} + + {% macro wrapped_input(name, value, type, size) %} + {% import _self as forms %} + +
    + {{ forms.input(name, value, type, size) }} +
    + {% endmacro %} + +Named Macro End-Tags +-------------------- + +Twig allows you to put the name of the macro after the end tag for better +readability: + +.. code-block:: jinja + + {% macro input() %} + ... + {% endmacro input %} + +Of course, the name after the ``endmacro`` word must match the macro name. + +.. seealso:: :doc:`from<../tags/from>`, :doc:`import<../tags/import>` diff --git a/system/vendor/twig/twig/doc/tags/sandbox.rst b/system/vendor/twig/twig/doc/tags/sandbox.rst new file mode 100644 index 0000000..e186726 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/sandbox.rst @@ -0,0 +1,30 @@ +``sandbox`` +=========== + +The ``sandbox`` tag can be used to enable the sandboxing mode for an included +template, when sandboxing is not enabled globally for the Twig environment: + +.. code-block:: jinja + + {% sandbox %} + {% include 'user.html' %} + {% endsandbox %} + +.. warning:: + + The ``sandbox`` tag is only available when the sandbox extension is + enabled (see the :doc:`Twig for Developers<../api>` chapter). + +.. note:: + + The ``sandbox`` tag can only be used to sandbox an include tag and it + cannot be used to sandbox a section of a template. The following example + won't work: + + .. code-block:: jinja + + {% sandbox %} + {% for i in 1..2 %} + {{ i }} + {% endfor %} + {% endsandbox %} diff --git a/system/vendor/twig/twig/doc/tags/set.rst b/system/vendor/twig/twig/doc/tags/set.rst new file mode 100644 index 0000000..3eba239 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/set.rst @@ -0,0 +1,78 @@ +``set`` +======= + +Inside code blocks you can also assign values to variables. Assignments use +the ``set`` tag and can have multiple targets. + +Here is how you can assign the ``bar`` value to the ``foo`` variable: + +.. code-block:: jinja + + {% set foo = 'bar' %} + +After the ``set`` call, the ``foo`` variable is available in the template like +any other ones: + +.. code-block:: jinja + + {# displays bar #} + {{ foo }} + +The assigned value can be any valid :ref:`Twig expressions +`: + +.. code-block:: jinja + + {% set foo = [1, 2] %} + {% set foo = {'foo': 'bar'} %} + {% set foo = 'foo' ~ 'bar' %} + +Several variables can be assigned in one block: + +.. code-block:: jinja + + {% set foo, bar = 'foo', 'bar' %} + + {# is equivalent to #} + + {% set foo = 'foo' %} + {% set bar = 'bar' %} + +The ``set`` tag can also be used to 'capture' chunks of text: + +.. code-block:: jinja + + {% set foo %} + + {% endset %} + +.. caution:: + + If you enable automatic output escaping, Twig will only consider the + content to be safe when capturing chunks of text. + +.. note:: + + Note that loops are scoped in Twig; therefore a variable declared inside a + ``for`` loop is not accessible outside the loop itself: + + .. code-block:: jinja + + {% for item in list %} + {% set foo = item %} + {% endfor %} + + {# foo is NOT available #} + + If you want to access the variable, just declare it before the loop: + + .. code-block:: jinja + + {% set foo = "" %} + {% for item in list %} + {% set foo = item %} + {% endfor %} + + {# foo is available #} diff --git a/system/vendor/twig/twig/doc/tags/spaceless.rst b/system/vendor/twig/twig/doc/tags/spaceless.rst new file mode 100644 index 0000000..b39cb27 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/spaceless.rst @@ -0,0 +1,37 @@ +``spaceless`` +============= + +Use the ``spaceless`` tag to remove whitespace *between HTML tags*, not +whitespace within HTML tags or whitespace in plain text: + +.. code-block:: jinja + + {% spaceless %} +
    + foo +
    + {% endspaceless %} + + {# output will be
    foo
    #} + +This tag is not meant to "optimize" the size of the generated HTML content but +merely to avoid extra whitespace between HTML tags to avoid browser rendering +quirks under some circumstances. + +.. tip:: + + If you want to optimize the size of the generated HTML content, gzip + compress the output instead. + +.. tip:: + + If you want to create a tag that actually removes all extra whitespace in + an HTML string, be warned that this is not as easy as it seems to be + (think of ``textarea`` or ``pre`` tags for instance). Using a third-party + library like Tidy is probably a better idea. + +.. tip:: + + For more information on whitespace control, read the + :ref:`dedicated section ` of the documentation and learn how + you can also use the whitespace control modifier on your tags. diff --git a/system/vendor/twig/twig/doc/tags/use.rst b/system/vendor/twig/twig/doc/tags/use.rst new file mode 100644 index 0000000..a6fdefb --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/use.rst @@ -0,0 +1,124 @@ +``use`` +======= + +.. versionadded:: 1.1 + Horizontal reuse was added in Twig 1.1. + +.. note:: + + Horizontal reuse is an advanced Twig feature that is hardly ever needed in + regular templates. It is mainly used by projects that need to make + template blocks reusable without using inheritance. + +Template inheritance is one of the most powerful features of Twig but it is +limited to single inheritance; a template can only extend one other template. +This limitation makes template inheritance simple to understand and easy to +debug: + +.. code-block:: jinja + + {% extends "base.html" %} + + {% block title %}{% endblock %} + {% block content %}{% endblock %} + +Horizontal reuse is a way to achieve the same goal as multiple inheritance, +but without the associated complexity: + +.. code-block:: jinja + + {% extends "base.html" %} + + {% use "blocks.html" %} + + {% block title %}{% endblock %} + {% block content %}{% endblock %} + +The ``use`` statement tells Twig to import the blocks defined in +``blocks.html`` into the current template (it's like macros, but for blocks): + +.. code-block:: jinja + + {# blocks.html #} + + {% block sidebar %}{% endblock %} + +In this example, the ``use`` statement imports the ``sidebar`` block into the +main template. The code is mostly equivalent to the following one (the +imported blocks are not outputted automatically): + +.. code-block:: jinja + + {% extends "base.html" %} + + {% block sidebar %}{% endblock %} + {% block title %}{% endblock %} + {% block content %}{% endblock %} + +.. note:: + + The ``use`` tag only imports a template if it does not extend another + template, if it does not define macros, and if the body is empty. But it + can *use* other templates. + +.. note:: + + Because ``use`` statements are resolved independently of the context + passed to the template, the template reference cannot be an expression. + +The main template can also override any imported block. If the template +already defines the ``sidebar`` block, then the one defined in ``blocks.html`` +is ignored. To avoid name conflicts, you can rename imported blocks: + +.. code-block:: jinja + + {% extends "base.html" %} + + {% use "blocks.html" with sidebar as base_sidebar, title as base_title %} + + {% block sidebar %}{% endblock %} + {% block title %}{% endblock %} + {% block content %}{% endblock %} + +.. versionadded:: 1.3 + The ``parent()`` support was added in Twig 1.3. + +The ``parent()`` function automatically determines the correct inheritance +tree, so it can be used when overriding a block defined in an imported +template: + +.. code-block:: jinja + + {% extends "base.html" %} + + {% use "blocks.html" %} + + {% block sidebar %} + {{ parent() }} + {% endblock %} + + {% block title %}{% endblock %} + {% block content %}{% endblock %} + +In this example, ``parent()`` will correctly call the ``sidebar`` block from +the ``blocks.html`` template. + +.. tip:: + + In Twig 1.2, renaming allows you to simulate inheritance by calling the + "parent" block: + + .. code-block:: jinja + + {% extends "base.html" %} + + {% use "blocks.html" with sidebar as parent_sidebar %} + + {% block sidebar %} + {{ block('parent_sidebar') }} + {% endblock %} + +.. note:: + + You can use as many ``use`` statements as you want in any given template. + If two imported templates define the same block, the latest one wins. diff --git a/system/vendor/twig/twig/doc/tags/verbatim.rst b/system/vendor/twig/twig/doc/tags/verbatim.rst new file mode 100644 index 0000000..fe61ca1 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/verbatim.rst @@ -0,0 +1,24 @@ +``verbatim`` +============ + +.. versionadded:: 1.12 + The ``verbatim`` tag was added in Twig 1.12 (it was named ``raw`` before). + +The ``verbatim`` tag marks sections as being raw text that should not be +parsed. For example to put Twig syntax as example into a template you can use +this snippet: + +.. code-block:: jinja + + {% verbatim %} +
      + {% for item in seq %} +
    • {{ item }}
    • + {% endfor %} +
    + {% endverbatim %} + +.. note:: + + The ``verbatim`` tag works in the exact same way as the old ``raw`` tag, + but was renamed to avoid confusion with the ``raw`` filter. \ No newline at end of file diff --git a/system/vendor/twig/twig/doc/tags/with.rst b/system/vendor/twig/twig/doc/tags/with.rst new file mode 100644 index 0000000..815b069 --- /dev/null +++ b/system/vendor/twig/twig/doc/tags/with.rst @@ -0,0 +1,44 @@ +``with`` +======== + +.. versionadded:: 1.28 + The ``with`` tag was added in Twig 1.28. + +Use the ``with`` tag to create a new inner scope. Variables set within this +scope are not visible outside of the scope: + +.. code-block:: jinja + + {% with %} + {% set foo = 42 %} + {{ foo }} foo is 42 here + {% endwith %} + foo is not visible here any longer + +Instead of defining variables at the beginning of the scope, you can pass a +hash of variables you want to define in the ``with`` tag; the previous example +is equivalent to the following one: + +.. code-block:: jinja + + {% with { foo: 42 } %} + {{ foo }} foo is 42 here + {% endwith %} + foo is not visible here any longer + + {# it works with any expression that resolves to a hash #} + {% set vars = { foo: 42 } %} + {% with vars %} + ... + {% endwith %} + +By default, the inner scope has access to the outer scope context; you can +disable this behavior by appending the ``only`` keyword: + +.. code-block:: jinja + + {% set bar = 'bar' %} + {% with { foo: 42 } only %} + {# only foo is defined #} + {# bar is not defined #} + {% endwith %} diff --git a/system/vendor/twig/twig/doc/templates.rst b/system/vendor/twig/twig/doc/templates.rst new file mode 100644 index 0000000..d4dbe32 --- /dev/null +++ b/system/vendor/twig/twig/doc/templates.rst @@ -0,0 +1,908 @@ +Twig for Template Designers +=========================== + +This document describes the syntax and semantics of the template engine and +will be most useful as reference to those creating Twig templates. + +Synopsis +-------- + +A template is simply a text file. It can generate any text-based format (HTML, +XML, CSV, LaTeX, etc.). It doesn't have a specific extension, ``.html`` or +``.xml`` are just fine. + +A template contains **variables** or **expressions**, which get replaced with +values when the template is evaluated, and **tags**, which control the logic +of the template. + +Below is a minimal template that illustrates a few basics. We will cover further +details later on: + +.. code-block:: html+jinja + + + + + My Webpage + + + + +

    My Webpage

    + {{ a_variable }} + + + +There are two kinds of delimiters: ``{% ... %}`` and ``{{ ... }}``. The first +one is used to execute statements such as for-loops, the latter prints the +result of an expression to the template. + +IDEs Integration +---------------- + +Many IDEs support syntax highlighting and auto-completion for Twig: + +* *Textmate* via the `Twig bundle`_ +* *Vim* via the `Jinja syntax plugin`_ or the `vim-twig plugin`_ +* *Netbeans* via the `Twig syntax plugin`_ (until 7.1, native as of 7.2) +* *PhpStorm* (native as of 2.1) +* *Eclipse* via the `Twig plugin`_ +* *Sublime Text* via the `Twig bundle`_ +* *GtkSourceView* via the `Twig language definition`_ (used by gedit and other projects) +* *Coda* and *SubEthaEdit* via the `Twig syntax mode`_ +* *Coda 2* via the `other Twig syntax mode`_ +* *Komodo* and *Komodo Edit* via the Twig highlight/syntax check mode +* *Notepad++* via the `Notepad++ Twig Highlighter`_ +* *Emacs* via `web-mode.el`_ +* *Atom* via the `PHP-twig for atom`_ +* *Visual Studio Code* via the `Twig pack`_ + +Also, `TwigFiddle`_ is an online service that allows you to execute Twig templates +from a browser; it supports all versions of Twig. + +Variables +--------- + +The application passes variables to the templates for manipulation in the +template. Variables may have attributes or elements you can access, +too. The visual representation of a variable depends heavily on the application providing +it. + +You can use a dot (``.``) to access attributes of a variable (methods or +properties of a PHP object, or items of a PHP array), or the so-called +"subscript" syntax (``[]``): + +.. code-block:: jinja + + {{ foo.bar }} + {{ foo['bar'] }} + +When the attribute contains special characters (like ``-`` that would be +interpreted as the minus operator), use the ``attribute`` function instead to +access the variable attribute: + +.. code-block:: jinja + + {# equivalent to the non-working foo.data-foo #} + {{ attribute(foo, 'data-foo') }} + +.. note:: + + It's important to know that the curly braces are *not* part of the + variable but the print statement. When accessing variables inside tags, + don't put the braces around them. + +If a variable or attribute does not exist, you will receive a ``null`` value +when the ``strict_variables`` option is set to ``false``; alternatively, if ``strict_variables`` +is set, Twig will throw an error (see :ref:`environment options`). + +.. sidebar:: Implementation + + For convenience's sake ``foo.bar`` does the following things on the PHP + layer: + + * check if ``foo`` is an array and ``bar`` a valid element; + * if not, and if ``foo`` is an object, check that ``bar`` is a valid property; + * if not, and if ``foo`` is an object, check that ``bar`` is a valid method + (even if ``bar`` is the constructor - use ``__construct()`` instead); + * if not, and if ``foo`` is an object, check that ``getBar`` is a valid method; + * if not, and if ``foo`` is an object, check that ``isBar`` is a valid method; + * if not, return a ``null`` value. + + ``foo['bar']`` on the other hand only works with PHP arrays: + + * check if ``foo`` is an array and ``bar`` a valid element; + * if not, return a ``null`` value. + +.. note:: + + If you want to access a dynamic attribute of a variable, use the + :doc:`attribute` function instead. + +Global Variables +~~~~~~~~~~~~~~~~ + +The following variables are always available in templates: + +* ``_self``: references the current template; +* ``_context``: references the current context; +* ``_charset``: references the current charset. + +Setting Variables +~~~~~~~~~~~~~~~~~ + +You can assign values to variables inside code blocks. Assignments use the +:doc:`set` tag: + +.. code-block:: jinja + + {% set foo = 'foo' %} + {% set foo = [1, 2] %} + {% set foo = {'foo': 'bar'} %} + +Filters +------- + +Variables can be modified by **filters**. Filters are separated from the +variable by a pipe symbol (``|``) and may have optional arguments in +parentheses. Multiple filters can be chained. The output of one filter is +applied to the next. + +The following example removes all HTML tags from the ``name`` and title-cases +it: + +.. code-block:: jinja + + {{ name|striptags|title }} + +Filters that accept arguments have parentheses around the arguments. This +example will join a list by commas: + +.. code-block:: jinja + + {{ list|join(', ') }} + +To apply a filter on a section of code, wrap it in the +:doc:`filter` tag: + +.. code-block:: jinja + + {% filter upper %} + This text becomes uppercase + {% endfilter %} + +Go to the :doc:`filters` page to learn more about built-in +filters. + +Functions +--------- + +Functions can be called to generate content. Functions are called by their +name followed by parentheses (``()``) and may have arguments. + +For instance, the ``range`` function returns a list containing an arithmetic +progression of integers: + +.. code-block:: jinja + + {% for i in range(0, 3) %} + {{ i }}, + {% endfor %} + +Go to the :doc:`functions` page to learn more about the +built-in functions. + +Named Arguments +--------------- + +.. versionadded:: 1.12 + Support for named arguments was added in Twig 1.12. + +.. code-block:: jinja + + {% for i in range(low=1, high=10, step=2) %} + {{ i }}, + {% endfor %} + +Using named arguments makes your templates more explicit about the meaning of +the values you pass as arguments: + +.. code-block:: jinja + + {{ data|convert_encoding('UTF-8', 'iso-2022-jp') }} + + {# versus #} + + {{ data|convert_encoding(from='iso-2022-jp', to='UTF-8') }} + +Named arguments also allow you to skip some arguments for which you don't want +to change the default value: + +.. code-block:: jinja + + {# the first argument is the date format, which defaults to the global date format if null is passed #} + {{ "now"|date(null, "Europe/Paris") }} + + {# or skip the format value by using a named argument for the time zone #} + {{ "now"|date(timezone="Europe/Paris") }} + +You can also use both positional and named arguments in one call, in which +case positional arguments must always come before named arguments: + +.. code-block:: jinja + + {{ "now"|date('d/m/Y H:i', timezone="Europe/Paris") }} + +.. tip:: + + Each function and filter documentation page has a section where the names + of all arguments are listed when supported. + +Control Structure +----------------- + +A control structure refers to all those things that control the flow of a +program - conditionals (i.e. ``if``/``elseif``/``else``), ``for``-loops, as +well as things like blocks. Control structures appear inside ``{% ... %}`` +blocks. + +For example, to display a list of users provided in a variable called +``users``, use the :doc:`for` tag: + +.. code-block:: jinja + +

    Members

    +
      + {% for user in users %} +
    • {{ user.username|e }}
    • + {% endfor %} +
    + +The :doc:`if` tag can be used to test an expression: + +.. code-block:: jinja + + {% if users|length > 0 %} +
      + {% for user in users %} +
    • {{ user.username|e }}
    • + {% endfor %} +
    + {% endif %} + +Go to the :doc:`tags` page to learn more about the built-in tags. + +Comments +-------- + +To comment-out part of a line in a template, use the comment syntax ``{# ... +#}``. This is useful for debugging or to add information for other template +designers or yourself: + +.. code-block:: jinja + + {# note: disabled template because we no longer use this + {% for user in users %} + ... + {% endfor %} + #} + +Including other Templates +------------------------- + +The :doc:`include` function is useful to include a template +and return the rendered content of that template into the current one: + +.. code-block:: jinja + + {{ include('sidebar.html') }} + +By default, included templates have access to the same context as the template +which includes them. This means that any variable defined in the main template +will be available in the included template too: + +.. code-block:: jinja + + {% for box in boxes %} + {{ include('render_box.html') }} + {% endfor %} + +The included template ``render_box.html`` is able to access the ``box`` variable. + +The filename of the template depends on the template loader. For instance, the +``Twig_Loader_Filesystem`` allows you to access other templates by giving the +filename. You can access templates in subdirectories with a slash: + +.. code-block:: jinja + + {{ include('sections/articles/sidebar.html') }} + +This behavior depends on the application embedding Twig. + +Template Inheritance +-------------------- + +The most powerful part of Twig is template inheritance. Template inheritance +allows you to build a base "skeleton" template that contains all the common +elements of your site and defines **blocks** that child templates can +override. + +Sounds complicated but it is very basic. It's easier to understand it by +starting with an example. + +Let's define a base template, ``base.html``, which defines a simple HTML +skeleton document that you might use for a simple two-column page: + +.. code-block:: html+jinja + + + + + {% block head %} + + {% block title %}{% endblock %} - My Webpage + {% endblock %} + + +
    {% block content %}{% endblock %}
    + + + + +In this example, the :doc:`block` tags define four blocks that +child templates can fill in. All the ``block`` tag does is to tell the +template engine that a child template may override those portions of the +template. + +A child template might look like this: + +.. code-block:: jinja + + {% extends "base.html" %} + + {% block title %}Index{% endblock %} + {% block head %} + {{ parent() }} + + {% endblock %} + {% block content %} +

    Index

    +

    + Welcome to my awesome homepage. +

    + {% endblock %} + +The :doc:`extends` tag is the key here. It tells the template +engine that this template "extends" another template. When the template system +evaluates this template, first it locates the parent. The extends tag should +be the first tag in the template. + +Note that since the child template doesn't define the ``footer`` block, the +value from the parent template is used instead. + +It's possible to render the contents of the parent block by using the +:doc:`parent` function. This gives back the results of the +parent block: + +.. code-block:: jinja + + {% block sidebar %} +

    Table Of Contents

    + ... + {{ parent() }} + {% endblock %} + +.. tip:: + + The documentation page for the :doc:`extends` tag describes + more advanced features like block nesting, scope, dynamic inheritance, and + conditional inheritance. + +.. note:: + + Twig also supports multiple inheritance with the so called horizontal reuse + with the help of the :doc:`use` tag. This is an advanced feature + hardly ever needed in regular templates. + +HTML Escaping +------------- + +When generating HTML from templates, there's always a risk that a variable +will include characters that affect the resulting HTML. There are two +approaches: manually escaping each variable or automatically escaping +everything by default. + +Twig supports both, automatic escaping is enabled by default. + +The automatic escaping strategy can be configured via the +:ref:`autoescape` option and defaults to ``html``. + +Working with Manual Escaping +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +If manual escaping is enabled, it is **your** responsibility to escape +variables if needed. What to escape? Any variable you don't trust. + +Escaping works by piping the variable through the +:doc:`escape` or ``e`` filter: + +.. code-block:: jinja + + {{ user.username|e }} + +By default, the ``escape`` filter uses the ``html`` strategy, but depending on +the escaping context, you might want to explicitly use any other available +strategies: + +.. code-block:: jinja + + {{ user.username|e('js') }} + {{ user.username|e('css') }} + {{ user.username|e('url') }} + {{ user.username|e('html_attr') }} + +Working with Automatic Escaping +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Whether automatic escaping is enabled or not, you can mark a section of a +template to be escaped or not by using the :doc:`autoescape` +tag: + +.. code-block:: jinja + + {% autoescape %} + Everything will be automatically escaped in this block (using the HTML strategy) + {% endautoescape %} + +By default, auto-escaping uses the ``html`` escaping strategy. If you output +variables in other contexts, you need to explicitly escape them with the +appropriate escaping strategy: + +.. code-block:: jinja + + {% autoescape 'js' %} + Everything will be automatically escaped in this block (using the JS strategy) + {% endautoescape %} + +Escaping +-------- + +It is sometimes desirable or even necessary to have Twig ignore parts it would +otherwise handle as variables or blocks. For example if the default syntax is +used and you want to use ``{{`` as raw string in the template and not start a +variable you have to use a trick. + +The easiest way is to output the variable delimiter (``{{``) by using a variable +expression: + +.. code-block:: jinja + + {{ '{{' }} + +For bigger sections it makes sense to mark a block +:doc:`verbatim`. + +Macros +------ + +.. versionadded:: 1.12 + Support for default argument values was added in Twig 1.12. + +Macros are comparable with functions in regular programming languages. They +are useful to reuse often used HTML fragments to not repeat yourself. + +A macro is defined via the :doc:`macro` tag. Here is a small example +(subsequently called ``forms.html``) of a macro that renders a form element: + +.. code-block:: jinja + + {% macro input(name, value, type, size) %} + + {% endmacro %} + +Macros can be defined in any template, and need to be "imported" via the +:doc:`import` tag before being used: + +.. code-block:: jinja + + {% import "forms.html" as forms %} + +

    {{ forms.input('username') }}

    + +Alternatively, you can import individual macro names from a template into the +current namespace via the :doc:`from` tag and optionally alias them: + +.. code-block:: jinja + + {% from 'forms.html' import input as input_field %} + +
    +
    Username
    +
    {{ input_field('username') }}
    +
    Password
    +
    {{ input_field('password', '', 'password') }}
    +
    + +A default value can also be defined for macro arguments when not provided in a +macro call: + +.. code-block:: jinja + + {% macro input(name, value = "", type = "text", size = 20) %} + + {% endmacro %} + +If extra positional arguments are passed to a macro call, they end up in the +special ``varargs`` variable as a list of values. + +.. _twig-expressions: + +Expressions +----------- + +Twig allows expressions everywhere. These work very similar to regular PHP and +even if you're not working with PHP you should feel comfortable with it. + +.. note:: + + The operator precedence is as follows, with the lowest-precedence + operators listed first: ``b-and``, ``b-xor``, ``b-or``, ``or``, ``and``, + ``==``, ``!=``, ``<``, ``>``, ``>=``, ``<=``, ``in``, ``matches``, + ``starts with``, ``ends with``, ``..``, ``+``, ``-``, ``~``, ``*``, ``/``, + ``//``, ``%``, ``is``, ``**``, ``|``, ``[]``, and ``.``: + + .. code-block:: jinja + + {% set greeting = 'Hello ' %} + {% set name = 'Fabien' %} + + {{ greeting ~ name|lower }} {# Hello fabien #} + + {# use parenthesis to change precedence #} + {{ (greeting ~ name)|lower }} {# hello fabien #} + +Literals +~~~~~~~~ + +.. versionadded:: 1.5 + Support for hash keys as names and expressions was added in Twig 1.5. + +The simplest form of expressions are literals. Literals are representations +for PHP types such as strings, numbers, and arrays. The following literals +exist: + +* ``"Hello World"``: Everything between two double or single quotes is a + string. They are useful whenever you need a string in the template (for + example as arguments to function calls, filters or just to extend or include + a template). A string can contain a delimiter if it is preceded by a + backslash (``\``) -- like in ``'It\'s good'``. If the string contains a + backslash (e.g. ``'c:\Program Files'``) escape it by doubling it + (e.g. ``'c:\\Program Files'``). + +* ``42`` / ``42.23``: Integers and floating point numbers are created by just + writing the number down. If a dot is present the number is a float, + otherwise an integer. + +* ``["foo", "bar"]``: Arrays are defined by a sequence of expressions + separated by a comma (``,``) and wrapped with squared brackets (``[]``). + +* ``{"foo": "bar"}``: Hashes are defined by a list of keys and values + separated by a comma (``,``) and wrapped with curly braces (``{}``): + + .. code-block:: jinja + + {# keys as string #} + { 'foo': 'foo', 'bar': 'bar' } + + {# keys as names (equivalent to the previous hash) -- as of Twig 1.5 #} + { foo: 'foo', bar: 'bar' } + + {# keys as integer #} + { 2: 'foo', 4: 'bar' } + + {# keys as expressions (the expression must be enclosed into parentheses) -- as of Twig 1.5 #} + { (1 + 1): 'foo', (a ~ 'b'): 'bar' } + +* ``true`` / ``false``: ``true`` represents the true value, ``false`` + represents the false value. + +* ``null``: ``null`` represents no specific value. This is the value returned + when a variable does not exist. ``none`` is an alias for ``null``. + +Arrays and hashes can be nested: + +.. code-block:: jinja + + {% set foo = [1, {"foo": "bar"}] %} + +.. tip:: + + Using double-quoted or single-quoted strings has no impact on performance + but string interpolation is only supported in double-quoted strings. + +Math +~~~~ + +Twig allows you to calculate with values. This is rarely useful in templates +but exists for completeness' sake. The following operators are supported: + +* ``+``: Adds two objects together (the operands are casted to numbers). ``{{ + 1 + 1 }}`` is ``2``. + +* ``-``: Subtracts the second number from the first one. ``{{ 3 - 2 }}`` is + ``1``. + +* ``/``: Divides two numbers. The returned value will be a floating point + number. ``{{ 1 / 2 }}`` is ``{{ 0.5 }}``. + +* ``%``: Calculates the remainder of an integer division. ``{{ 11 % 7 }}`` is + ``4``. + +* ``//``: Divides two numbers and returns the floored integer result. ``{{ 20 + // 7 }}`` is ``2``, ``{{ -20 // 7 }}`` is ``-3`` (this is just syntactic + sugar for the :doc:`round` filter). + +* ``*``: Multiplies the left operand with the right one. ``{{ 2 * 2 }}`` would + return ``4``. + +* ``**``: Raises the left operand to the power of the right operand. ``{{ 2 ** + 3 }}`` would return ``8``. + +Logic +~~~~~ + +You can combine multiple expressions with the following operators: + +* ``and``: Returns true if the left and the right operands are both true. + +* ``or``: Returns true if the left or the right operand is true. + +* ``not``: Negates a statement. + +* ``(expr)``: Groups an expression. + +.. note:: + + Twig also support bitwise operators (``b-and``, ``b-xor``, and ``b-or``). + +.. note:: + + Operators are case sensitive. + +Comparisons +~~~~~~~~~~~ + +The following comparison operators are supported in any expression: ``==``, +``!=``, ``<``, ``>``, ``>=``, and ``<=``. + +You can also check if a string ``starts with`` or ``ends with`` another +string: + +.. code-block:: jinja + + {% if 'Fabien' starts with 'F' %} + {% endif %} + + {% if 'Fabien' ends with 'n' %} + {% endif %} + +.. note:: + + For complex string comparisons, the ``matches`` operator allows you to use + `regular expressions`_: + + .. code-block:: jinja + + {% if phone matches '/^[\\d\\.]+$/' %} + {% endif %} + +Containment Operator +~~~~~~~~~~~~~~~~~~~~ + +The ``in`` operator performs containment test. + +It returns ``true`` if the left operand is contained in the right: + +.. code-block:: jinja + + {# returns true #} + + {{ 1 in [1, 2, 3] }} + + {{ 'cd' in 'abcde' }} + +.. tip:: + + You can use this filter to perform a containment test on strings, arrays, + or objects implementing the ``Traversable`` interface. + +To perform a negative test, use the ``not in`` operator: + +.. code-block:: jinja + + {% if 1 not in [1, 2, 3] %} + + {# is equivalent to #} + {% if not (1 in [1, 2, 3]) %} + +Test Operator +~~~~~~~~~~~~~ + +The ``is`` operator performs tests. Tests can be used to test a variable against +a common expression. The right operand is name of the test: + +.. code-block:: jinja + + {# find out if a variable is odd #} + + {{ name is odd }} + +Tests can accept arguments too: + +.. code-block:: jinja + + {% if post.status is constant('Post::PUBLISHED') %} + +Tests can be negated by using the ``is not`` operator: + +.. code-block:: jinja + + {% if post.status is not constant('Post::PUBLISHED') %} + + {# is equivalent to #} + {% if not (post.status is constant('Post::PUBLISHED')) %} + +Go to the :doc:`tests` page to learn more about the built-in +tests. + +Other Operators +~~~~~~~~~~~~~~~ + +.. versionadded:: 1.12.0 + Support for the extended ternary operator was added in Twig 1.12.0. + +The following operators don't fit into any of the other categories: + +* ``|``: Applies a filter. + +* ``..``: Creates a sequence based on the operand before and after the operator + (this is just syntactic sugar for the :doc:`range` function): + + .. code-block:: jinja + + {{ 1..5 }} + + {# equivalent to #} + {{ range(1, 5) }} + + Note that you must use parentheses when combining it with the filter operator + due to the :ref:`operator precedence rules `: + + .. code-block:: jinja + + (1..5)|join(', ') + +* ``~``: Converts all operands into strings and concatenates them. ``{{ "Hello + " ~ name ~ "!" }}`` would return (assuming ``name`` is ``'John'``) ``Hello + John!``. + +* ``.``, ``[]``: Gets an attribute of an object. + +* ``?:``: The ternary operator: + + .. code-block:: jinja + + {{ foo ? 'yes' : 'no' }} + + {# as of Twig 1.12.0 #} + {{ foo ?: 'no' }} is the same as {{ foo ? foo : 'no' }} + {{ foo ? 'yes' }} is the same as {{ foo ? 'yes' : '' }} + +* ``??``: The null-coalescing operator: + + .. code-block:: jinja + + {# returns the value of foo if it is defined and not null, 'no' otherwise #} + {{ foo ?? 'no' }} + +String Interpolation +~~~~~~~~~~~~~~~~~~~~ + +.. versionadded:: 1.5 + String interpolation was added in Twig 1.5. + +String interpolation (``#{expression}``) allows any valid expression to appear +within a *double-quoted string*. The result of evaluating that expression is +inserted into the string: + +.. code-block:: jinja + + {{ "foo #{bar} baz" }} + {{ "foo #{1 + 2} baz" }} + +.. _templates-whitespace-control: + +Whitespace Control +------------------ + +.. versionadded:: 1.1 + Tag level whitespace control was added in Twig 1.1. + +The first newline after a template tag is removed automatically (like in PHP.) +Whitespace is not further modified by the template engine, so each whitespace +(spaces, tabs, newlines etc.) is returned unchanged. + +Use the ``spaceless`` tag to remove whitespace *between HTML tags*: + +.. code-block:: jinja + + {% spaceless %} +
    + foo bar +
    + {% endspaceless %} + + {# output will be
    foo bar
    #} + +In addition to the spaceless tag you can also control whitespace on a per tag +level. By using the whitespace control modifier on your tags, you can trim +leading and or trailing whitespace: + +.. code-block:: jinja + + {% set value = 'no spaces' %} + {#- No leading/trailing whitespace -#} + {%- if true -%} + {{- value -}} + {%- endif -%} + + {# output 'no spaces' #} + +The above sample shows the default whitespace control modifier, and how you can +use it to remove whitespace around tags. Trimming space will consume all whitespace +for that side of the tag. It is possible to use whitespace trimming on one side +of a tag: + +.. code-block:: jinja + + {% set value = 'no spaces' %} +
  • {{- value }}
  • + + {# outputs '
  • no spaces
  • ' #} + +Extensions +---------- + +Twig can be easily extended. + +If you are looking for new tags, filters, or functions, have a look at the Twig official +`extension repository`_. + +If you want to create your own, read the :ref:`Creating an +Extension` chapter. + +.. _`Twig bundle`: https://github.com/Anomareh/PHP-Twig.tmbundle +.. _`Jinja syntax plugin`: http://jinja.pocoo.org/docs/integration/#vim +.. _`vim-twig plugin`: https://github.com/lumiliet/vim-twig +.. _`Twig syntax plugin`: http://plugins.netbeans.org/plugin/37069/php-twig +.. _`Twig plugin`: https://github.com/pulse00/Twig-Eclipse-Plugin +.. _`Twig language definition`: https://github.com/gabrielcorpse/gedit-twig-template-language +.. _`extension repository`: http://github.com/twigphp/Twig-extensions +.. _`Twig syntax mode`: https://github.com/bobthecow/Twig-HTML.mode +.. _`other Twig syntax mode`: https://github.com/muxx/Twig-HTML.mode +.. _`Notepad++ Twig Highlighter`: https://github.com/Banane9/notepadplusplus-twig +.. _`web-mode.el`: http://web-mode.org/ +.. _`regular expressions`: http://php.net/manual/en/pcre.pattern.php +.. _`PHP-twig for atom`: https://github.com/reesef/php-twig +.. _`TwigFiddle`: http://twigfiddle.com/ +.. _`Twig pack`: https://marketplace.visualstudio.com/items?itemName=bajdzis.vscode-twig-pack diff --git a/system/vendor/twig/twig/doc/tests/constant.rst b/system/vendor/twig/twig/doc/tests/constant.rst new file mode 100644 index 0000000..8d0724a --- /dev/null +++ b/system/vendor/twig/twig/doc/tests/constant.rst @@ -0,0 +1,22 @@ +``constant`` +============ + +.. versionadded: 1.13.1 + constant now accepts object instances as the second argument. + +``constant`` checks if a variable has the exact same value as a constant. You +can use either global constants or class constants: + +.. code-block:: jinja + + {% if post.status is constant('Post::PUBLISHED') %} + the status attribute is exactly the same as Post::PUBLISHED + {% endif %} + +You can test constants from object instances as well: + +.. code-block:: jinja + + {% if post.status is constant('PUBLISHED', post) %} + the status attribute is exactly the same as Post::PUBLISHED + {% endif %} diff --git a/system/vendor/twig/twig/doc/tests/defined.rst b/system/vendor/twig/twig/doc/tests/defined.rst new file mode 100644 index 0000000..702ce72 --- /dev/null +++ b/system/vendor/twig/twig/doc/tests/defined.rst @@ -0,0 +1,30 @@ +``defined`` +=========== + +``defined`` checks if a variable is defined in the current context. This is very +useful if you use the ``strict_variables`` option: + +.. code-block:: jinja + + {# defined works with variable names #} + {% if foo is defined %} + ... + {% endif %} + + {# and attributes on variables names #} + {% if foo.bar is defined %} + ... + {% endif %} + + {% if foo['bar'] is defined %} + ... + {% endif %} + +When using the ``defined`` test on an expression that uses variables in some +method calls, be sure that they are all defined first: + +.. code-block:: jinja + + {% if var is defined and foo.method(var) is defined %} + ... + {% endif %} diff --git a/system/vendor/twig/twig/doc/tests/divisibleby.rst b/system/vendor/twig/twig/doc/tests/divisibleby.rst new file mode 100644 index 0000000..6c693b2 --- /dev/null +++ b/system/vendor/twig/twig/doc/tests/divisibleby.rst @@ -0,0 +1,14 @@ +``divisible by`` +================ + +.. versionadded:: 1.14.2 + The ``divisible by`` test was added in Twig 1.14.2 as an alias for + ``divisibleby``. + +``divisible by`` checks if a variable is divisible by a number: + +.. code-block:: jinja + + {% if loop.index is divisible by(3) %} + ... + {% endif %} diff --git a/system/vendor/twig/twig/doc/tests/empty.rst b/system/vendor/twig/twig/doc/tests/empty.rst new file mode 100644 index 0000000..639cdcc --- /dev/null +++ b/system/vendor/twig/twig/doc/tests/empty.rst @@ -0,0 +1,22 @@ +``empty`` +========= + +.. versionadded:: 1.33 + + Support for the ``__toString()`` magic method has been added in Twig 1.33. + +``empty`` checks if a variable is an empty string, an empty array, an empty +hash, exactly ``false``, or exactly ``null``. + +For objects that implement the ``Countable`` interface, ``empty`` will check the +return value of the ``count()`` method. + +For objects that implement the ``__toString()`` magic method (and not ``Countable``), +it will check if an empty string is returned. + +.. code-block:: jinja + + {% if foo is empty %} + ... + {% endif %} + diff --git a/system/vendor/twig/twig/doc/tests/even.rst b/system/vendor/twig/twig/doc/tests/even.rst new file mode 100644 index 0000000..6ab5cc3 --- /dev/null +++ b/system/vendor/twig/twig/doc/tests/even.rst @@ -0,0 +1,10 @@ +``even`` +======== + +``even`` returns ``true`` if the given number is even: + +.. code-block:: jinja + + {{ var is even }} + +.. seealso:: :doc:`odd<../tests/odd>` diff --git a/system/vendor/twig/twig/doc/tests/index.rst b/system/vendor/twig/twig/doc/tests/index.rst new file mode 100644 index 0000000..c63208e --- /dev/null +++ b/system/vendor/twig/twig/doc/tests/index.rst @@ -0,0 +1,15 @@ +Tests +===== + +.. toctree:: + :maxdepth: 1 + + constant + defined + divisibleby + empty + even + iterable + null + odd + sameas diff --git a/system/vendor/twig/twig/doc/tests/iterable.rst b/system/vendor/twig/twig/doc/tests/iterable.rst new file mode 100644 index 0000000..89a172f --- /dev/null +++ b/system/vendor/twig/twig/doc/tests/iterable.rst @@ -0,0 +1,19 @@ +``iterable`` +============ + +.. versionadded:: 1.7 + The iterable test was added in Twig 1.7. + +``iterable`` checks if a variable is an array or a traversable object: + +.. code-block:: jinja + + {# evaluates to true if the foo variable is iterable #} + {% if users is iterable %} + {% for user in users %} + Hello {{ user }}! + {% endfor %} + {% else %} + {# users is probably a string #} + Hello {{ users }}! + {% endif %} diff --git a/system/vendor/twig/twig/doc/tests/null.rst b/system/vendor/twig/twig/doc/tests/null.rst new file mode 100644 index 0000000..44eec62 --- /dev/null +++ b/system/vendor/twig/twig/doc/tests/null.rst @@ -0,0 +1,12 @@ +``null`` +======== + +``null`` returns ``true`` if the variable is ``null``: + +.. code-block:: jinja + + {{ var is null }} + +.. note:: + + ``none`` is an alias for ``null``. diff --git a/system/vendor/twig/twig/doc/tests/odd.rst b/system/vendor/twig/twig/doc/tests/odd.rst new file mode 100644 index 0000000..9eece77 --- /dev/null +++ b/system/vendor/twig/twig/doc/tests/odd.rst @@ -0,0 +1,10 @@ +``odd`` +======= + +``odd`` returns ``true`` if the given number is odd: + +.. code-block:: jinja + + {{ var is odd }} + +.. seealso:: :doc:`even<../tests/even>` diff --git a/system/vendor/twig/twig/doc/tests/sameas.rst b/system/vendor/twig/twig/doc/tests/sameas.rst new file mode 100644 index 0000000..16f904d --- /dev/null +++ b/system/vendor/twig/twig/doc/tests/sameas.rst @@ -0,0 +1,14 @@ +``same as`` +=========== + +.. versionadded:: 1.14.2 + The ``same as`` test was added in Twig 1.14.2 as an alias for ``sameas``. + +``same as`` checks if a variable is the same as another variable. +This is the equivalent to ``===`` in PHP: + +.. code-block:: jinja + + {% if foo.attribute is same as(false) %} + the foo attribute really is the 'false' PHP value + {% endif %} diff --git a/system/vendor/twig/twig/ext/twig/.gitignore b/system/vendor/twig/twig/ext/twig/.gitignore new file mode 100644 index 0000000..56ea76c --- /dev/null +++ b/system/vendor/twig/twig/ext/twig/.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 +twig.loT +.libs/ +modules/ +twig.la +twig.lo diff --git a/system/vendor/twig/twig/ext/twig/config.m4 b/system/vendor/twig/twig/ext/twig/config.m4 new file mode 100644 index 0000000..83486be --- /dev/null +++ b/system/vendor/twig/twig/ext/twig/config.m4 @@ -0,0 +1,8 @@ +dnl config.m4 for extension twig + +PHP_ARG_ENABLE(twig, whether to enable twig support, +[ --enable-twig Enable twig support]) + +if test "$PHP_TWIG" != "no"; then + PHP_NEW_EXTENSION(twig, twig.c, $ext_shared) +fi diff --git a/system/vendor/twig/twig/ext/twig/config.w32 b/system/vendor/twig/twig/ext/twig/config.w32 new file mode 100644 index 0000000..cb287b9 --- /dev/null +++ b/system/vendor/twig/twig/ext/twig/config.w32 @@ -0,0 +1,8 @@ +// vim:ft=javascript + +ARG_ENABLE("twig", "Twig support", "no"); + +if (PHP_TWIG != "no") { + AC_DEFINE('HAVE_TWIG', 1); + EXTENSION('twig', 'twig.c'); +} diff --git a/system/vendor/twig/twig/ext/twig/php_twig.h b/system/vendor/twig/twig/ext/twig/php_twig.h new file mode 100644 index 0000000..3a4aa7e --- /dev/null +++ b/system/vendor/twig/twig/ext/twig/php_twig.h @@ -0,0 +1,35 @@ +/* + +----------------------------------------------------------------------+ + | Twig Extension | + +----------------------------------------------------------------------+ + | Copyright (c) 2011 Derick Rethans | + +----------------------------------------------------------------------+ + | Redistribution and use in source and binary forms, with or without | + | modification, are permitted provided that the conditions mentioned | + | in the accompanying LICENSE file are met (BSD-3-Clause). | + +----------------------------------------------------------------------+ + | Author: Derick Rethans | + +----------------------------------------------------------------------+ + */ + +#ifndef PHP_TWIG_H +#define PHP_TWIG_H + +#define PHP_TWIG_VERSION "1.33.0" + +#include "php.h" + +extern zend_module_entry twig_module_entry; +#define phpext_twig_ptr &twig_module_entry +#ifndef PHP_WIN32 +zend_module_entry *get_module(void); +#endif + +#ifdef ZTS +#include "TSRM.h" +#endif + +PHP_FUNCTION(twig_template_get_attributes); +PHP_RSHUTDOWN_FUNCTION(twig); + +#endif diff --git a/system/vendor/twig/twig/ext/twig/twig.c b/system/vendor/twig/twig/ext/twig/twig.c new file mode 100644 index 0000000..6173c00 --- /dev/null +++ b/system/vendor/twig/twig/ext/twig/twig.c @@ -0,0 +1,1215 @@ +/* + +----------------------------------------------------------------------+ + | Twig Extension | + +----------------------------------------------------------------------+ + | Copyright (c) 2011 Derick Rethans | + +----------------------------------------------------------------------+ + | Redistribution and use in source and binary forms, with or without | + | modification, are permitted provided that the conditions mentioned | + | in the accompanying LICENSE file are met (BSD-3-Clause). | + +----------------------------------------------------------------------+ + | Author: Derick Rethans | + +----------------------------------------------------------------------+ + */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "php.h" +#include "php_twig.h" +#include "ext/standard/php_var.h" +#include "ext/standard/php_string.h" +#include "ext/standard/php_smart_str.h" +#include "ext/spl/spl_exceptions.h" + +#include "Zend/zend_object_handlers.h" +#include "Zend/zend_interfaces.h" +#include "Zend/zend_exceptions.h" + +#ifndef Z_ADDREF_P +#define Z_ADDREF_P(pz) (pz)->refcount++ +#endif + +#ifndef E_USER_DEPRECATED +#define E_USER_DEPRECATED (1<<14L) +#endif + +#define FREE_DTOR(z) \ + zval_dtor(z); \ + efree(z); + +#if PHP_VERSION_ID >= 50300 + #define APPLY_TSRMLS_DC TSRMLS_DC + #define APPLY_TSRMLS_CC TSRMLS_CC + #define APPLY_TSRMLS_FETCH() +#else + #define APPLY_TSRMLS_DC + #define APPLY_TSRMLS_CC + #define APPLY_TSRMLS_FETCH() TSRMLS_FETCH() +#endif + +ZEND_BEGIN_ARG_INFO_EX(twig_template_get_attribute_args, ZEND_SEND_BY_VAL, ZEND_RETURN_VALUE, 6) + ZEND_ARG_INFO(0, template) + ZEND_ARG_INFO(0, object) + ZEND_ARG_INFO(0, item) + ZEND_ARG_INFO(0, arguments) + ZEND_ARG_INFO(0, type) + ZEND_ARG_INFO(0, isDefinedTest) +ZEND_END_ARG_INFO() + +#ifndef PHP_FE_END +#define PHP_FE_END { NULL, NULL, NULL} +#endif + +static const zend_function_entry twig_functions[] = { + PHP_FE(twig_template_get_attributes, twig_template_get_attribute_args) + PHP_FE_END +}; + +PHP_RSHUTDOWN_FUNCTION(twig) +{ +#if ZEND_DEBUG + CG(unclean_shutdown) = 0; /* get rid of PHPUnit's exit() and report memleaks */ +#endif + return SUCCESS; +} + +zend_module_entry twig_module_entry = { + STANDARD_MODULE_HEADER, + "twig", + twig_functions, + NULL, + NULL, + NULL, + PHP_RSHUTDOWN(twig), + NULL, + PHP_TWIG_VERSION, + STANDARD_MODULE_PROPERTIES +}; + + +#ifdef COMPILE_DL_TWIG +ZEND_GET_MODULE(twig) +#endif + +static int TWIG_ARRAY_KEY_EXISTS(zval *array, zval *key) +{ + if (Z_TYPE_P(array) != IS_ARRAY) { + return 0; + } + + switch (Z_TYPE_P(key)) { + case IS_NULL: + return zend_hash_exists(Z_ARRVAL_P(array), "", 1); + + case IS_BOOL: + case IS_DOUBLE: + convert_to_long(key); + case IS_LONG: + return zend_hash_index_exists(Z_ARRVAL_P(array), Z_LVAL_P(key)); + + default: + convert_to_string(key); + return zend_symtable_exists(Z_ARRVAL_P(array), Z_STRVAL_P(key), Z_STRLEN_P(key) + 1); + } +} + +static int TWIG_INSTANCE_OF(zval *object, zend_class_entry *interface TSRMLS_DC) +{ + if (Z_TYPE_P(object) != IS_OBJECT) { + return 0; + } + return instanceof_function(Z_OBJCE_P(object), interface TSRMLS_CC); +} + +static int TWIG_INSTANCE_OF_USERLAND(zval *object, char *interface TSRMLS_DC) +{ + zend_class_entry **pce; + if (Z_TYPE_P(object) != IS_OBJECT) { + return 0; + } + if (zend_lookup_class(interface, strlen(interface), &pce TSRMLS_CC) == FAILURE) { + return 0; + } + return instanceof_function(Z_OBJCE_P(object), *pce TSRMLS_CC); +} + +static zval *TWIG_GET_ARRAYOBJECT_ELEMENT(zval *object, zval *offset TSRMLS_DC) +{ + zend_class_entry *ce = Z_OBJCE_P(object); + zval *retval; + + if (Z_TYPE_P(object) == IS_OBJECT) { + SEPARATE_ARG_IF_REF(offset); + zend_call_method_with_1_params(&object, ce, NULL, "offsetget", &retval, offset); + + zval_ptr_dtor(&offset); + + if (!retval) { + if (!EG(exception)) { + zend_error(E_ERROR, "Undefined offset for object of type %s used as array.", ce->name); + } + return NULL; + } + + return retval; + } + return NULL; +} + +static int TWIG_ISSET_ARRAYOBJECT_ELEMENT(zval *object, zval *offset TSRMLS_DC) +{ + zend_class_entry *ce = Z_OBJCE_P(object); + zval *retval; + + if (Z_TYPE_P(object) == IS_OBJECT) { + SEPARATE_ARG_IF_REF(offset); + zend_call_method_with_1_params(&object, ce, NULL, "offsetexists", &retval, offset); + + zval_ptr_dtor(&offset); + + if (!retval) { + if (!EG(exception)) { + zend_error(E_ERROR, "Undefined offset for object of type %s used as array.", ce->name); + } + return 0; + } + + return (retval && Z_TYPE_P(retval) == IS_BOOL && Z_LVAL_P(retval)); + } + return 0; +} + +static char *TWIG_STRTOLOWER(const char *str, int str_len) +{ + char *item_dup; + + item_dup = estrndup(str, str_len); + php_strtolower(item_dup, str_len); + return item_dup; +} + +static zval *TWIG_CALL_USER_FUNC_ARRAY(zval *object, char *function, zval *arguments TSRMLS_DC) +{ + zend_fcall_info fci; + zval ***args = NULL; + int arg_count = 0; + HashTable *table; + HashPosition pos; + int i = 0; + zval *retval_ptr; + zval *zfunction; + + if (arguments) { + table = HASH_OF(arguments); + args = safe_emalloc(sizeof(zval **), table->nNumOfElements, 0); + + zend_hash_internal_pointer_reset_ex(table, &pos); + + while (zend_hash_get_current_data_ex(table, (void **)&args[i], &pos) == SUCCESS) { + i++; + zend_hash_move_forward_ex(table, &pos); + } + arg_count = table->nNumOfElements; + } + + MAKE_STD_ZVAL(zfunction); + ZVAL_STRING(zfunction, function, 1); + fci.size = sizeof(fci); + fci.function_table = EG(function_table); + fci.function_name = zfunction; + fci.symbol_table = NULL; +#if PHP_VERSION_ID >= 50300 + fci.object_ptr = object; +#else + fci.object_pp = &object; +#endif + fci.retval_ptr_ptr = &retval_ptr; + fci.param_count = arg_count; + fci.params = args; + fci.no_separation = 0; + + if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE) { + ALLOC_INIT_ZVAL(retval_ptr); + ZVAL_BOOL(retval_ptr, 0); + } + + if (args) { + efree(fci.params); + } + FREE_DTOR(zfunction); + return retval_ptr; +} + +static int TWIG_CALL_BOOLEAN(zval *object, char *functionName TSRMLS_DC) +{ + zval *ret; + int res; + + ret = TWIG_CALL_USER_FUNC_ARRAY(object, functionName, NULL TSRMLS_CC); + res = Z_LVAL_P(ret); + zval_ptr_dtor(&ret); + return res; +} + +static zval *TWIG_GET_STATIC_PROPERTY(zval *class, char *prop_name TSRMLS_DC) +{ + zval **tmp_zval; + zend_class_entry *ce; + + if (class == NULL || Z_TYPE_P(class) != IS_OBJECT) { + return NULL; + } + + ce = zend_get_class_entry(class TSRMLS_CC); +#if PHP_VERSION_ID >= 50400 + tmp_zval = zend_std_get_static_property(ce, prop_name, strlen(prop_name), 0, NULL TSRMLS_CC); +#else + tmp_zval = zend_std_get_static_property(ce, prop_name, strlen(prop_name), 0 TSRMLS_CC); +#endif + return *tmp_zval; +} + +static zval *TWIG_GET_ARRAY_ELEMENT_ZVAL(zval *class, zval *prop_name TSRMLS_DC) +{ + zval **tmp_zval; + + if (class == NULL || Z_TYPE_P(class) != IS_ARRAY) { + if (class != NULL && Z_TYPE_P(class) == IS_OBJECT && TWIG_INSTANCE_OF(class, zend_ce_arrayaccess TSRMLS_CC)) { + // array access object + return TWIG_GET_ARRAYOBJECT_ELEMENT(class, prop_name TSRMLS_CC); + } + return NULL; + } + + switch(Z_TYPE_P(prop_name)) { + case IS_NULL: + zend_hash_find(HASH_OF(class), "", 1, (void**) &tmp_zval); + return *tmp_zval; + + case IS_BOOL: + case IS_DOUBLE: + convert_to_long(prop_name); + case IS_LONG: + zend_hash_index_find(HASH_OF(class), Z_LVAL_P(prop_name), (void **) &tmp_zval); + return *tmp_zval; + + case IS_STRING: + zend_symtable_find(HASH_OF(class), Z_STRVAL_P(prop_name), Z_STRLEN_P(prop_name) + 1, (void**) &tmp_zval); + return *tmp_zval; + } + + return NULL; +} + +static zval *TWIG_GET_ARRAY_ELEMENT(zval *class, char *prop_name, int prop_name_length TSRMLS_DC) +{ + zval **tmp_zval; + + if (class == NULL/* || Z_TYPE_P(class) != IS_ARRAY*/) { + return NULL; + } + + if (class != NULL && Z_TYPE_P(class) == IS_OBJECT && TWIG_INSTANCE_OF(class, zend_ce_arrayaccess TSRMLS_CC)) { + // array access object + zval *tmp_name_zval; + zval *tmp_ret_zval; + + ALLOC_INIT_ZVAL(tmp_name_zval); + ZVAL_STRING(tmp_name_zval, prop_name, 1); + tmp_ret_zval = TWIG_GET_ARRAYOBJECT_ELEMENT(class, tmp_name_zval TSRMLS_CC); + FREE_DTOR(tmp_name_zval); + return tmp_ret_zval; + } + + if (zend_symtable_find(HASH_OF(class), prop_name, prop_name_length+1, (void**)&tmp_zval) == SUCCESS) { + return *tmp_zval; + } + return NULL; +} + +static zval *TWIG_PROPERTY(zval *object, zval *propname TSRMLS_DC) +{ + zval *tmp = NULL; + + if (Z_OBJ_HT_P(object)->read_property) { +#if PHP_VERSION_ID >= 50400 + tmp = Z_OBJ_HT_P(object)->read_property(object, propname, BP_VAR_IS, NULL TSRMLS_CC); +#else + tmp = Z_OBJ_HT_P(object)->read_property(object, propname, BP_VAR_IS TSRMLS_CC); +#endif + if (tmp == EG(uninitialized_zval_ptr)) { + ZVAL_NULL(tmp); + } + } + return tmp; +} + +static int TWIG_HAS_PROPERTY(zval *object, zval *propname TSRMLS_DC) +{ + if (Z_OBJ_HT_P(object)->has_property) { +#if PHP_VERSION_ID >= 50400 + return Z_OBJ_HT_P(object)->has_property(object, propname, 0, NULL TSRMLS_CC); +#else + return Z_OBJ_HT_P(object)->has_property(object, propname, 0 TSRMLS_CC); +#endif + } + return 0; +} + +static int TWIG_HAS_DYNAMIC_PROPERTY(zval *object, char *prop, int prop_len TSRMLS_DC) +{ + if (Z_OBJ_HT_P(object)->get_properties) { + return zend_hash_quick_exists( + Z_OBJ_HT_P(object)->get_properties(object TSRMLS_CC), // the properties hash + prop, // property name + prop_len + 1, // property length + zend_get_hash_value(prop, prop_len + 1) // hash value + ); + } + return 0; +} + +static zval *TWIG_PROPERTY_CHAR(zval *object, char *propname TSRMLS_DC) +{ + zval *tmp_name_zval, *tmp; + + ALLOC_INIT_ZVAL(tmp_name_zval); + ZVAL_STRING(tmp_name_zval, propname, 1); + tmp = TWIG_PROPERTY(object, tmp_name_zval TSRMLS_CC); + FREE_DTOR(tmp_name_zval); + return tmp; +} + +static zval *TWIG_CALL_S(zval *object, char *method, char *arg0 TSRMLS_DC) +{ + zend_fcall_info fci; + zval **args[1]; + zval *argument; + zval *zfunction; + zval *retval_ptr; + + MAKE_STD_ZVAL(argument); + ZVAL_STRING(argument, arg0, 1); + args[0] = &argument; + + MAKE_STD_ZVAL(zfunction); + ZVAL_STRING(zfunction, method, 1); + fci.size = sizeof(fci); + fci.function_table = EG(function_table); + fci.function_name = zfunction; + fci.symbol_table = NULL; +#if PHP_VERSION_ID >= 50300 + fci.object_ptr = object; +#else + fci.object_pp = &object; +#endif + fci.retval_ptr_ptr = &retval_ptr; + fci.param_count = 1; + fci.params = args; + fci.no_separation = 0; + + if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE) { + FREE_DTOR(zfunction); + zval_ptr_dtor(&argument); + return 0; + } + FREE_DTOR(zfunction); + zval_ptr_dtor(&argument); + return retval_ptr; +} + +static int TWIG_CALL_SB(zval *object, char *method, char *arg0 TSRMLS_DC) +{ + zval *retval_ptr; + int success; + + retval_ptr = TWIG_CALL_S(object, method, arg0 TSRMLS_CC); + success = (retval_ptr && (Z_TYPE_P(retval_ptr) == IS_BOOL) && Z_LVAL_P(retval_ptr)); + + if (retval_ptr) { + zval_ptr_dtor(&retval_ptr); + } + + return success; +} + +static int TWIG_CALL_ZZ(zval *object, char *method, zval *arg1, zval *arg2 TSRMLS_DC) +{ + zend_fcall_info fci; + zval **args[2]; + zval *zfunction; + zval *retval_ptr; + int success; + + args[0] = &arg1; + args[1] = &arg2; + + MAKE_STD_ZVAL(zfunction); + ZVAL_STRING(zfunction, method, 1); + fci.size = sizeof(fci); + fci.function_table = EG(function_table); + fci.function_name = zfunction; + fci.symbol_table = NULL; +#if PHP_VERSION_ID >= 50300 + fci.object_ptr = object; +#else + fci.object_pp = &object; +#endif + fci.retval_ptr_ptr = &retval_ptr; + fci.param_count = 2; + fci.params = args; + fci.no_separation = 0; + + if (zend_call_function(&fci, NULL TSRMLS_CC) == FAILURE) { + FREE_DTOR(zfunction); + return 0; + } + + FREE_DTOR(zfunction); + + success = (retval_ptr && (Z_TYPE_P(retval_ptr) == IS_BOOL) && Z_LVAL_P(retval_ptr)); + if (retval_ptr) { + zval_ptr_dtor(&retval_ptr); + } + + return success; +} + +#ifndef Z_SET_REFCOUNT_P +# define Z_SET_REFCOUNT_P(pz, rc) pz->refcount = rc +# define Z_UNSET_ISREF_P(pz) pz->is_ref = 0 +#endif + +static void TWIG_NEW(zval *object, char *class, zval *arg0, zval *arg1 TSRMLS_DC) +{ + zend_class_entry **pce; + + if (zend_lookup_class(class, strlen(class), &pce TSRMLS_CC) == FAILURE) { + return; + } + + Z_TYPE_P(object) = IS_OBJECT; + object_init_ex(object, *pce); + Z_SET_REFCOUNT_P(object, 1); + Z_UNSET_ISREF_P(object); + + TWIG_CALL_ZZ(object, "__construct", arg0, arg1 TSRMLS_CC); +} + +static int twig_add_array_key_to_string(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) +{ + smart_str *buf; + char *joiner; + APPLY_TSRMLS_FETCH(); + + buf = va_arg(args, smart_str*); + joiner = va_arg(args, char*); + + if (buf->len != 0) { + smart_str_appends(buf, joiner); + } + + if (hash_key->nKeyLength == 0) { + smart_str_append_long(buf, (long) hash_key->h); + } else { + char *key, *tmp_str; + int key_len, tmp_len; + key = php_addcslashes(hash_key->arKey, hash_key->nKeyLength - 1, &key_len, 0, "'\\", 2 TSRMLS_CC); + tmp_str = php_str_to_str_ex(key, key_len, "\0", 1, "' . \"\\0\" . '", 12, &tmp_len, 0, NULL); + + smart_str_appendl(buf, tmp_str, tmp_len); + efree(key); + efree(tmp_str); + } + + return 0; +} + +static char *TWIG_IMPLODE_ARRAY_KEYS(char *joiner, zval *array TSRMLS_DC) +{ + smart_str collector = { 0, 0, 0 }; + + smart_str_appendl(&collector, "", 0); + zend_hash_apply_with_arguments(HASH_OF(array) APPLY_TSRMLS_CC, twig_add_array_key_to_string, 2, &collector, joiner); + smart_str_0(&collector); + + return collector.c; +} + +static void TWIG_RUNTIME_ERROR(zval *template TSRMLS_DC, char *message, ...) +{ + char *buffer; + va_list args; + zend_class_entry **pce; + zval *ex; + zval *constructor; + zval *zmessage; + zval *lineno; + zval *filename_func; + zval *filename; + zval *constructor_args[3]; + zval *constructor_retval; + + if (zend_lookup_class("Twig_Error_Runtime", strlen("Twig_Error_Runtime"), &pce TSRMLS_CC) == FAILURE) { + return; + } + + va_start(args, message); + vspprintf(&buffer, 0, message, args); + va_end(args); + + MAKE_STD_ZVAL(ex); + object_init_ex(ex, *pce); + + // Call Twig_Error constructor + MAKE_STD_ZVAL(constructor); + MAKE_STD_ZVAL(zmessage); + MAKE_STD_ZVAL(lineno); + MAKE_STD_ZVAL(filename); + MAKE_STD_ZVAL(filename_func); + MAKE_STD_ZVAL(constructor_retval); + + ZVAL_STRINGL(constructor, "__construct", sizeof("__construct")-1, 1); + ZVAL_STRING(zmessage, buffer, 1); + ZVAL_LONG(lineno, -1); + + // Get template filename + ZVAL_STRINGL(filename_func, "getTemplateName", sizeof("getTemplateName")-1, 1); + call_user_function(EG(function_table), &template, filename_func, filename, 0, 0 TSRMLS_CC); + + constructor_args[0] = zmessage; + constructor_args[1] = lineno; + constructor_args[2] = filename; + call_user_function(EG(function_table), &ex, constructor, constructor_retval, 3, constructor_args TSRMLS_CC); + + zval_ptr_dtor(&constructor_retval); + zval_ptr_dtor(&zmessage); + zval_ptr_dtor(&lineno); + zval_ptr_dtor(&filename); + FREE_DTOR(constructor); + FREE_DTOR(filename_func); + efree(buffer); + + zend_throw_exception_object(ex TSRMLS_CC); +} + +static char *TWIG_GET_CLASS_NAME(zval *object TSRMLS_DC) +{ + char *class_name; + zend_uint class_name_len; + + if (Z_TYPE_P(object) != IS_OBJECT) { + return ""; + } +#if PHP_API_VERSION >= 20100412 + zend_get_object_classname(object, (const char **) &class_name, &class_name_len TSRMLS_CC); +#else + zend_get_object_classname(object, &class_name, &class_name_len TSRMLS_CC); +#endif + return class_name; +} + +static int twig_add_method_to_class(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) +{ + zend_class_entry *ce; + zval *retval; + char *item; + size_t item_len; + zend_function *mptr = (zend_function *) pDest; + APPLY_TSRMLS_FETCH(); + + if (!(mptr->common.fn_flags & ZEND_ACC_PUBLIC)) { + return 0; + } + + ce = *va_arg(args, zend_class_entry**); + retval = va_arg(args, zval*); + + item_len = strlen(mptr->common.function_name); + item = estrndup(mptr->common.function_name, item_len); + php_strtolower(item, item_len); + + if (strcmp("getenvironment", item) == 0) { + zend_class_entry **twig_template_ce; + if (zend_lookup_class("Twig_Template", strlen("Twig_Template"), &twig_template_ce TSRMLS_CC) == FAILURE) { + return 0; + } + if (instanceof_function(ce, *twig_template_ce TSRMLS_CC)) { + return 0; + } + } + + add_assoc_stringl_ex(retval, item, item_len+1, item, item_len, 0); + + return 0; +} + +static int twig_add_property_to_class(void *pDest APPLY_TSRMLS_DC, int num_args, va_list args, zend_hash_key *hash_key) +{ + zend_class_entry *ce; + zval *retval; + char *class_name, *prop_name; + zend_property_info *pptr = (zend_property_info *) pDest; + APPLY_TSRMLS_FETCH(); + + if (!(pptr->flags & ZEND_ACC_PUBLIC) || (pptr->flags & ZEND_ACC_STATIC)) { + return 0; + } + + ce = *va_arg(args, zend_class_entry**); + retval = va_arg(args, zval*); + +#if PHP_API_VERSION >= 20100412 + zend_unmangle_property_name(pptr->name, pptr->name_length, (const char **) &class_name, (const char **) &prop_name); +#else + zend_unmangle_property_name(pptr->name, pptr->name_length, &class_name, &prop_name); +#endif + + add_assoc_string(retval, prop_name, prop_name, 1); + + return 0; +} + +static void twig_add_class_to_cache(zval *cache, zval *object, char *class_name TSRMLS_DC) +{ + zval *class_info, *class_methods, *class_properties; + zend_class_entry *class_ce; + + class_ce = zend_get_class_entry(object TSRMLS_CC); + + ALLOC_INIT_ZVAL(class_info); + ALLOC_INIT_ZVAL(class_methods); + ALLOC_INIT_ZVAL(class_properties); + array_init(class_info); + array_init(class_methods); + array_init(class_properties); + // add all methods to self::cache[$class]['methods'] + zend_hash_apply_with_arguments(&class_ce->function_table APPLY_TSRMLS_CC, twig_add_method_to_class, 2, &class_ce, class_methods); + zend_hash_apply_with_arguments(&class_ce->properties_info APPLY_TSRMLS_CC, twig_add_property_to_class, 2, &class_ce, class_properties); + + add_assoc_zval(class_info, "methods", class_methods); + add_assoc_zval(class_info, "properties", class_properties); + add_assoc_zval(cache, class_name, class_info); +} + +/* {{{ proto mixed twig_template_get_attributes(TwigTemplate template, mixed object, mixed item, array arguments, string type, boolean isDefinedTest, boolean ignoreStrictCheck) + A C implementation of TwigTemplate::getAttribute() */ +PHP_FUNCTION(twig_template_get_attributes) +{ + zval *template; + zval *object; + char *item; + int item_len; + zval *zitem, ztmpitem; + zval *arguments = NULL; + zval *ret = NULL; + char *type = NULL; + int type_len = 0; + zend_bool isDefinedTest = 0; + zend_bool ignoreStrictCheck = 0; + int free_ret = 0; + zval *tmp_self_cache; + char *class_name = NULL; + zval *tmp_class; + char *type_name; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ozz|asbb", &template, &object, &zitem, &arguments, &type, &type_len, &isDefinedTest, &ignoreStrictCheck) == FAILURE) { + return; + } + + // convert the item to a string + ztmpitem = *zitem; + zval_copy_ctor(&ztmpitem); + convert_to_string(&ztmpitem); + item_len = Z_STRLEN(ztmpitem); + item = estrndup(Z_STRVAL(ztmpitem), item_len); + zval_dtor(&ztmpitem); + + if (!type) { + type = "any"; + } + +/* + // array + if (Twig_Template::METHOD_CALL !== $type) { + $arrayItem = is_bool($item) || is_float($item) ? (int) $item : $item; + + if ((is_array($object) && array_key_exists($arrayItem, $object)) + || ($object instanceof ArrayAccess && isset($object[$arrayItem])) + ) { + if ($isDefinedTest) { + return true; + } + + return $object[$arrayItem]; + } +*/ + + + if (strcmp("method", type) != 0) { + if ((TWIG_ARRAY_KEY_EXISTS(object, zitem)) + || (TWIG_INSTANCE_OF(object, zend_ce_arrayaccess TSRMLS_CC) && TWIG_ISSET_ARRAYOBJECT_ELEMENT(object, zitem TSRMLS_CC)) + ) { + + if (isDefinedTest) { + efree(item); + RETURN_TRUE; + } + + ret = TWIG_GET_ARRAY_ELEMENT_ZVAL(object, zitem TSRMLS_CC); + + if (!ret) { + ret = &EG(uninitialized_zval); + } + RETVAL_ZVAL(ret, 1, 0); + if (free_ret) { + zval_ptr_dtor(&ret); + } + efree(item); + return; + } +/* + if (Twig_Template::ARRAY_CALL === $type) { + if ($isDefinedTest) { + return false; + } + if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { + return null; + } +*/ + if (strcmp("array", type) == 0 || Z_TYPE_P(object) != IS_OBJECT) { + if (isDefinedTest) { + efree(item); + RETURN_FALSE; + } + if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) { + efree(item); + return; + } +/* + if ($object instanceof ArrayAccess) { + $message = sprintf('Key "%s" in object with ArrayAccess of class "%s" does not exist', $arrayItem, get_class($object)); + } elseif (is_object($object)) { + $message = sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface', $item, get_class($object)); + } elseif (is_array($object)) { + if (empty($object)) { + $message = sprintf('Key "%s" does not exist as the array is empty', $arrayItem); + } else { + $message = sprintf('Key "%s" for array with keys "%s" does not exist', $arrayItem, implode(', ', array_keys($object))); + } + } elseif (Twig_Template::ARRAY_CALL === $type) { + if (null === $object) { + $message = sprintf('Impossible to access a key ("%s") on a null variable', $item); + } else { + $message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s")', $item, gettype($object), $object); + } + } elseif (null === $object) { + $message = sprintf('Impossible to access an attribute ("%s") on a null variable', $item); + } else { + $message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s")', $item, gettype($object), $object); + } + throw new Twig_Error_Runtime($message, -1, $this->getTemplateName()); + } + } +*/ + if (TWIG_INSTANCE_OF(object, zend_ce_arrayaccess TSRMLS_CC)) { + TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Key \"%s\" in object with ArrayAccess of class \"%s\" does not exist.", item, TWIG_GET_CLASS_NAME(object TSRMLS_CC)); + } else if (Z_TYPE_P(object) == IS_OBJECT) { + TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to access a key \"%s\" on an object of class \"%s\" that does not implement ArrayAccess interface.", item, TWIG_GET_CLASS_NAME(object TSRMLS_CC)); + } else if (Z_TYPE_P(object) == IS_ARRAY) { + if (0 == zend_hash_num_elements(Z_ARRVAL_P(object))) { + TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Key \"%s\" does not exist as the array is empty.", item); + } else { + char *array_keys = TWIG_IMPLODE_ARRAY_KEYS(", ", object TSRMLS_CC); + TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Key \"%s\" for array with keys \"%s\" does not exist.", item, array_keys); + efree(array_keys); + } + } else { + char *type_name = zend_zval_type_name(object); + Z_ADDREF_P(object); + if (Z_TYPE_P(object) == IS_NULL) { + convert_to_string(object); + TWIG_RUNTIME_ERROR(template TSRMLS_CC, + (strcmp("array", type) == 0) + ? "Impossible to access a key (\"%s\") on a %s variable." + : "Impossible to access an attribute (\"%s\") on a %s variable.", + item, type_name); + } else { + convert_to_string(object); + TWIG_RUNTIME_ERROR(template TSRMLS_CC, + (strcmp("array", type) == 0) + ? "Impossible to access a key (\"%s\") on a %s variable (\"%s\")." + : "Impossible to access an attribute (\"%s\") on a %s variable (\"%s\").", + item, type_name, Z_STRVAL_P(object)); + } + zval_ptr_dtor(&object); + } + efree(item); + return; + } + } + +/* + if (!is_object($object)) { + if ($isDefinedTest) { + return false; + } +*/ + + if (Z_TYPE_P(object) != IS_OBJECT) { + if (isDefinedTest) { + efree(item); + RETURN_FALSE; + } +/* + if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { + return null; + } + + if (null === $object) { + $message = sprintf('Impossible to invoke a method ("%s") on a null variable', $item); + } else { + $message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s")', $item, gettype($object), $object); + } + + throw new Twig_Error_Runtime($message, -1, $this->getTemplateName()); + } +*/ + if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) { + efree(item); + return; + } + + type_name = zend_zval_type_name(object); + Z_ADDREF_P(object); + if (Z_TYPE_P(object) == IS_NULL) { + convert_to_string_ex(&object); + + TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on a %s variable.", item, type_name); + } else { + convert_to_string_ex(&object); + + TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Impossible to invoke a method (\"%s\") on a %s variable (\"%s\").", item, type_name, Z_STRVAL_P(object)); + } + + zval_ptr_dtor(&object); + efree(item); + return; + } +/* + $class = get_class($object); +*/ + + class_name = TWIG_GET_CLASS_NAME(object TSRMLS_CC); + tmp_self_cache = TWIG_GET_STATIC_PROPERTY(template, "cache" TSRMLS_CC); + tmp_class = TWIG_GET_ARRAY_ELEMENT(tmp_self_cache, class_name, strlen(class_name) TSRMLS_CC); + + if (!tmp_class) { + twig_add_class_to_cache(tmp_self_cache, object, class_name TSRMLS_CC); + tmp_class = TWIG_GET_ARRAY_ELEMENT(tmp_self_cache, class_name, strlen(class_name) TSRMLS_CC); + } + efree(class_name); + +/* + // object property + if (Twig_Template::METHOD_CALL !== $type && !$object instanceof Twig_Template) { + if (isset($object->$item) || array_key_exists((string) $item, $object)) { + if ($isDefinedTest) { + return true; + } + + if ($this->env->hasExtension('Twig_Extension_Sandbox')) { + $this->env->getExtension('Twig_Extension_Sandbox')->checkPropertyAllowed($object, $item); + } + + return $object->$item; + } + } +*/ + if (strcmp("method", type) != 0 && !TWIG_INSTANCE_OF_USERLAND(object, "Twig_Template" TSRMLS_CC)) { + zval *tmp_properties, *tmp_item; + + tmp_properties = TWIG_GET_ARRAY_ELEMENT(tmp_class, "properties", strlen("properties") TSRMLS_CC); + tmp_item = TWIG_GET_ARRAY_ELEMENT(tmp_properties, item, item_len TSRMLS_CC); + + if (tmp_item || TWIG_HAS_PROPERTY(object, zitem TSRMLS_CC) || TWIG_HAS_DYNAMIC_PROPERTY(object, item, item_len TSRMLS_CC)) { + if (isDefinedTest) { + efree(item); + RETURN_TRUE; + } + if (TWIG_CALL_SB(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "hasExtension", "Twig_Extension_Sandbox" TSRMLS_CC)) { + TWIG_CALL_ZZ(TWIG_CALL_S(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "getExtension", "Twig_Extension_Sandbox" TSRMLS_CC), "checkPropertyAllowed", object, zitem TSRMLS_CC); + } + if (EG(exception)) { + efree(item); + return; + } + + ret = TWIG_PROPERTY(object, zitem TSRMLS_CC); + efree(item); + RETURN_ZVAL(ret, 1, 0); + } + } +/* + // object method + if (!isset(self::$cache[$class]['methods'])) { + if ($object instanceof self) { + $ref = new ReflectionClass($class); + $methods = array(); + + foreach ($ref->getMethods(ReflectionMethod::IS_PUBLIC) as $refMethod) { + $methodName = strtolower($refMethod->name); + + // Accessing the environment from templates is forbidden to prevent untrusted changes to the environment + if ('getenvironment' !== $methodName) { + $methods[$methodName] = true; + } + } + + self::$cache[$class]['methods'] = $methods; + } else { + self::$cache[$class]['methods'] = array_change_key_case(array_flip(get_class_methods($object))); + } + } + + $call = false; + $lcItem = strtolower($item); + if (isset(self::$cache[$class]['methods'][$lcItem])) { + $method = (string) $item; + } elseif (isset(self::$cache[$class]['methods']['get'.$lcItem])) { + $method = 'get'.$item; + } elseif (isset(self::$cache[$class]['methods']['is'.$lcItem])) { + $method = 'is'.$item; + } elseif (isset(self::$cache[$class]['methods']['__call'])) { + $method = (string) $item; + $call = true; +*/ + { + int call = 0; + char *lcItem = TWIG_STRTOLOWER(item, item_len); + int lcItem_length; + char *method = NULL; + char *methodForDeprecation = NULL; + char *tmp_method_name_get; + char *tmp_method_name_is; + zval *zmethod; + zval *tmp_methods; + + lcItem_length = strlen(lcItem); + tmp_method_name_get = emalloc(4 + lcItem_length); + tmp_method_name_is = emalloc(3 + lcItem_length); + + sprintf(tmp_method_name_get, "get%s", lcItem); + sprintf(tmp_method_name_is, "is%s", lcItem); + + tmp_methods = TWIG_GET_ARRAY_ELEMENT(tmp_class, "methods", strlen("methods") TSRMLS_CC); + methodForDeprecation = emalloc(item_len + 1); + sprintf(methodForDeprecation, "%s", item); + + if (TWIG_GET_ARRAY_ELEMENT(tmp_methods, lcItem, lcItem_length TSRMLS_CC)) { + method = item; + } else if (TWIG_GET_ARRAY_ELEMENT(tmp_methods, tmp_method_name_get, lcItem_length + 3 TSRMLS_CC)) { + method = tmp_method_name_get; + } else if (TWIG_GET_ARRAY_ELEMENT(tmp_methods, tmp_method_name_is, lcItem_length + 2 TSRMLS_CC)) { + method = tmp_method_name_is; + } else if (TWIG_GET_ARRAY_ELEMENT(tmp_methods, "__call", 6 TSRMLS_CC)) { + method = item; + call = 1; +/* + } else { + if ($isDefinedTest) { + return false; + } + + if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { + return null; + } + + throw new Twig_Error_Runtime(sprintf('Method "%s" for object "%s" does not exist.', $item, get_class($object)), -1, $this->getTemplateName()); + } + + if ($isDefinedTest) { + return true; + } +*/ + } else { + efree(tmp_method_name_get); + efree(tmp_method_name_is); + efree(lcItem); + + if (isDefinedTest) { + efree(item); + RETURN_FALSE; + } + if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) { + efree(item); + return; + } + TWIG_RUNTIME_ERROR(template TSRMLS_CC, "Neither the property \"%s\" nor one of the methods \"%s()\", \"get%s()\"/\"is%s()\" or \"__call()\" exist and have public access in class \"%s\".", item, item, item, item, TWIG_GET_CLASS_NAME(object TSRMLS_CC)); + efree(item); + return; + } + + if (isDefinedTest) { + efree(tmp_method_name_get); + efree(tmp_method_name_is); + efree(lcItem);efree(item); + RETURN_TRUE; + } +/* + if ($this->env->hasExtension('Twig_Extension_Sandbox')) { + $this->env->getExtension('Twig_Extension_Sandbox')->checkMethodAllowed($object, $method); + } +*/ + MAKE_STD_ZVAL(zmethod); + ZVAL_STRING(zmethod, method, 1); + if (TWIG_CALL_SB(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "hasExtension", "Twig_Extension_Sandbox" TSRMLS_CC)) { + TWIG_CALL_ZZ(TWIG_CALL_S(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "getExtension", "Twig_Extension_Sandbox" TSRMLS_CC), "checkMethodAllowed", object, zmethod TSRMLS_CC); + } + zval_ptr_dtor(&zmethod); + if (EG(exception)) { + efree(tmp_method_name_get); + efree(tmp_method_name_is); + efree(lcItem);efree(item); + return; + } +/* + // Some objects throw exceptions when they have __call, and the method we try + // to call is not supported. If ignoreStrictCheck is true, we should return null. + try { + $ret = call_user_func_array(array($object, $method), $arguments); + } catch (BadMethodCallException $e) { + if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) { + return null; + } + throw $e; + } +*/ + ret = TWIG_CALL_USER_FUNC_ARRAY(object, method, arguments TSRMLS_CC); + if (EG(exception) && TWIG_INSTANCE_OF(EG(exception), spl_ce_BadMethodCallException TSRMLS_CC)) { + if (ignoreStrictCheck || !TWIG_CALL_BOOLEAN(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "isStrictVariables" TSRMLS_CC)) { + efree(tmp_method_name_get); + efree(tmp_method_name_is); + efree(lcItem);efree(item); + zend_clear_exception(TSRMLS_C); + return; + } + } + free_ret = 1; + efree(tmp_method_name_get); + efree(tmp_method_name_is); + efree(lcItem); +/* + // @deprecated in 1.28 + if ($object instanceof Twig_TemplateInterface) { + $self = $object->getTemplateName() === $this->getTemplateName(); + $message = sprintf('Calling "%s" on template "%s" from template "%s" is deprecated since version 1.28 and won\'t be supported anymore in 2.0.', $item, $object->getTemplateName(), $this->getTemplateName()); + if ('renderBlock' === $method || 'displayBlock' === $method) { + $message .= sprintf(' Use block("%s"%s) instead).', $arguments[0], $self ? '' : ', template'); + } elseif ('hasBlock' === $method) { + $message .= sprintf(' Use "block("%s"%s) is defined" instead).', $arguments[0], $self ? '' : ', template'); + } elseif ('render' === $method || 'display' === $method) { + $message .= sprintf(' Use include("%s") instead).', $object->getTemplateName()); + } + @trigger_error($message, E_USER_DEPRECATED); + + return $ret === '' ? '' : new Twig_Markup($ret, $this->env->getCharset()); + } + + return $ret; +*/ + efree(item); + // ret can be null, if e.g. the called method throws an exception + if (ret) { + if (TWIG_INSTANCE_OF_USERLAND(object, "Twig_TemplateInterface" TSRMLS_CC)) { + int self; + int old_error_reporting; + zval *object_filename; + zval *this_filename; + zval *filename_func; + char *deprecation_message_complement = NULL; + char *deprecation_message = NULL; + + MAKE_STD_ZVAL(object_filename); + MAKE_STD_ZVAL(this_filename); + MAKE_STD_ZVAL(filename_func); + + // Get templates names + ZVAL_STRINGL(filename_func, "getTemplateName", sizeof("getTemplateName")-1, 1); + call_user_function(EG(function_table), &object, filename_func, object_filename, 0, 0 TSRMLS_CC); + ZVAL_STRINGL(filename_func, "getTemplateName", sizeof("getTemplateName")-1, 1); + call_user_function(EG(function_table), &template, filename_func, this_filename, 0, 0 TSRMLS_CC); + + self = (strcmp(Z_STRVAL_P(object_filename), Z_STRVAL_P(this_filename)) == 0); + + if (strcmp(methodForDeprecation, "renderBlock") == 0 || strcmp(methodForDeprecation, "displayBlock") == 0) { + zval **arg0; + zend_hash_index_find(HASH_OF(arguments), 0, (void **) &arg0); + asprintf( + &deprecation_message_complement, + " Use block(\"%s\"%s) instead).", + Z_STRVAL_PP(arg0), + self ? "" : ", template" + ); + } else if (strcmp(methodForDeprecation, "hasBlock") == 0) { + zval **arg0; + zend_hash_index_find(HASH_OF(arguments), 0, (void **) &arg0); + asprintf( + &deprecation_message_complement, + " Use \"block(\"%s\"%s) is defined\" instead).", + Z_STRVAL_PP(arg0), + self ? "" : ", template" + ); + } else if (strcmp(methodForDeprecation, "render") == 0 || strcmp(methodForDeprecation, "display") == 0) { + asprintf( + &deprecation_message_complement, + " Use include(\"%s\") instead).", + Z_STRVAL_P(object_filename) + ); + } else { + deprecation_message_complement = (char*)calloc(0, sizeof(char)); + } + + asprintf( + &deprecation_message, + "Calling \"%s\" on template \"%s\" from template \"%s\" is deprecated since version 1.28 and won't be supported anymore in 2.0.%s", + methodForDeprecation, + Z_STRVAL_P(object_filename), + Z_STRVAL_P(this_filename), + deprecation_message_complement + ); + + old_error_reporting = EG(error_reporting); + EG(error_reporting) = 0; + zend_error(E_USER_DEPRECATED, "%s", deprecation_message); + EG(error_reporting) = old_error_reporting; + + FREE_DTOR(filename_func) + FREE_DTOR(object_filename) + FREE_DTOR(this_filename) + free(deprecation_message); + free(deprecation_message_complement); + + if (Z_STRLEN_P(ret) != 0) { + zval *charset = TWIG_CALL_USER_FUNC_ARRAY(TWIG_PROPERTY_CHAR(template, "env" TSRMLS_CC), "getCharset", NULL TSRMLS_CC); + TWIG_NEW(return_value, "Twig_Markup", ret, charset TSRMLS_CC); + zval_ptr_dtor(&charset); + if (ret) { + zval_ptr_dtor(&ret); + } + efree(methodForDeprecation); + return; + } + } + + RETVAL_ZVAL(ret, 1, 0); + if (free_ret) { + zval_ptr_dtor(&ret); + } + } + + efree(methodForDeprecation); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Autoloader.php b/system/vendor/twig/twig/lib/Twig/Autoloader.php new file mode 100644 index 0000000..212af54 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Autoloader.php @@ -0,0 +1,54 @@ + + * + * @deprecated since 1.21 and will be removed in 2.0. Use Composer instead. 2.0. + */ +class Twig_Autoloader +{ + /** + * Registers Twig_Autoloader as an SPL autoloader. + * + * @param bool $prepend whether to prepend the autoloader or not + */ + public static function register($prepend = false) + { + @trigger_error('Using Twig_Autoloader is deprecated since version 1.21. Use Composer instead.', E_USER_DEPRECATED); + + if (PHP_VERSION_ID < 50300) { + spl_autoload_register(array(__CLASS__, 'autoload')); + } else { + spl_autoload_register(array(__CLASS__, 'autoload'), true, $prepend); + } + } + + /** + * Handles autoloading of classes. + * + * @param string $class a class name + */ + public static function autoload($class) + { + if (0 !== strpos($class, 'Twig')) { + return; + } + + if (is_file($file = dirname(__FILE__).'/../'.str_replace(array('_', "\0"), array('/', ''), $class).'.php')) { + require $file; + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php b/system/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php new file mode 100644 index 0000000..1c917d2 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/BaseNodeVisitor.php @@ -0,0 +1,50 @@ + + */ +abstract class Twig_BaseNodeVisitor implements Twig_NodeVisitorInterface +{ + final public function enterNode(Twig_NodeInterface $node, Twig_Environment $env) + { + if (!$node instanceof Twig_Node) { + throw new LogicException('Twig_BaseNodeVisitor only supports Twig_Node instances.'); + } + + return $this->doEnterNode($node, $env); + } + + final public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env) + { + if (!$node instanceof Twig_Node) { + throw new LogicException('Twig_BaseNodeVisitor only supports Twig_Node instances.'); + } + + return $this->doLeaveNode($node, $env); + } + + /** + * Called before child nodes are visited. + * + * @return Twig_Node The modified node + */ + abstract protected function doEnterNode(Twig_Node $node, Twig_Environment $env); + + /** + * Called after child nodes are visited. + * + * @return Twig_Node|false The modified node or false if the node must be removed + */ + abstract protected function doLeaveNode(Twig_Node $node, Twig_Environment $env); +} diff --git a/system/vendor/twig/twig/lib/Twig/Cache/Filesystem.php b/system/vendor/twig/twig/lib/Twig/Cache/Filesystem.php new file mode 100644 index 0000000..cb3fec4 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Cache/Filesystem.php @@ -0,0 +1,91 @@ + + */ +class Twig_Cache_Filesystem implements Twig_CacheInterface +{ + const FORCE_BYTECODE_INVALIDATION = 1; + + private $directory; + private $options; + + /** + * @param $directory string The root cache directory + * @param $options int A set of options + */ + public function __construct($directory, $options = 0) + { + $this->directory = rtrim($directory, '\/').'/'; + $this->options = $options; + } + + public function generateKey($name, $className) + { + $hash = hash('sha256', $className); + + return $this->directory.$hash[0].$hash[1].'/'.$hash.'.php'; + } + + public function load($key) + { + if (file_exists($key)) { + @include_once $key; + } + } + + public function write($key, $content) + { + $dir = dirname($key); + if (!is_dir($dir)) { + if (false === @mkdir($dir, 0777, true)) { + if (PHP_VERSION_ID >= 50300) { + clearstatcache(true, $dir); + } + if (!is_dir($dir)) { + throw new RuntimeException(sprintf('Unable to create the cache directory (%s).', $dir)); + } + } + } elseif (!is_writable($dir)) { + throw new RuntimeException(sprintf('Unable to write in the cache directory (%s).', $dir)); + } + + $tmpFile = tempnam($dir, basename($key)); + if (false !== @file_put_contents($tmpFile, $content) && @rename($tmpFile, $key)) { + @chmod($key, 0666 & ~umask()); + + if (self::FORCE_BYTECODE_INVALIDATION == ($this->options & self::FORCE_BYTECODE_INVALIDATION)) { + // Compile cached file into bytecode cache + if (function_exists('opcache_invalidate')) { + opcache_invalidate($key, true); + } elseif (function_exists('apc_compile_file')) { + apc_compile_file($key); + } + } + + return; + } + + throw new RuntimeException(sprintf('Failed to write cache file "%s".', $key)); + } + + public function getTimestamp($key) + { + if (!file_exists($key)) { + return 0; + } + + return (int) @filemtime($key); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Cache/Null.php b/system/vendor/twig/twig/lib/Twig/Cache/Null.php new file mode 100644 index 0000000..7a19495 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Cache/Null.php @@ -0,0 +1,38 @@ + + */ +class Twig_Cache_Null implements Twig_CacheInterface +{ + public function generateKey($name, $className) + { + return ''; + } + + public function write($key, $content) + { + } + + public function load($key) + { + } + + public function getTimestamp($key) + { + return 0; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/CacheInterface.php b/system/vendor/twig/twig/lib/Twig/CacheInterface.php new file mode 100644 index 0000000..2a3f04d --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/CacheInterface.php @@ -0,0 +1,56 @@ + + */ +interface Twig_CacheInterface +{ + /** + * Generates a cache key for the given template class name. + * + * @param string $name The template name + * @param string $className The template class name + * + * @return string + */ + public function generateKey($name, $className); + + /** + * Writes the compiled template to cache. + * + * @param string $key The cache key + * @param string $content The template representation as a PHP class + */ + public function write($key, $content); + + /** + * Loads a template from the cache. + * + * @param string $key The cache key + */ + public function load($key); + + /** + * Returns the modification timestamp of a key. + * + * @param string $key The cache key + * + * @return int + */ + public function getTimestamp($key); +} diff --git a/system/vendor/twig/twig/lib/Twig/Compiler.php b/system/vendor/twig/twig/lib/Twig/Compiler.php new file mode 100644 index 0000000..170fcb6 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Compiler.php @@ -0,0 +1,281 @@ + + */ +class Twig_Compiler implements Twig_CompilerInterface +{ + protected $lastLine; + protected $source; + protected $indentation; + protected $env; + protected $debugInfo = array(); + protected $sourceOffset; + protected $sourceLine; + protected $filename; + + public function __construct(Twig_Environment $env) + { + $this->env = $env; + } + + /** + * @deprecated since 1.25 (to be removed in 2.0) + */ + public function getFilename() + { + @trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); + + return $this->filename; + } + + /** + * Returns the environment instance related to this compiler. + * + * @return Twig_Environment + */ + public function getEnvironment() + { + return $this->env; + } + + /** + * Gets the current PHP code after compilation. + * + * @return string The PHP code + */ + public function getSource() + { + return $this->source; + } + + /** + * Compiles a node. + * + * @param Twig_NodeInterface $node The node to compile + * @param int $indentation The current indentation + * + * @return $this + */ + public function compile(Twig_NodeInterface $node, $indentation = 0) + { + $this->lastLine = null; + $this->source = ''; + $this->debugInfo = array(); + $this->sourceOffset = 0; + // source code starts at 1 (as we then increment it when we encounter new lines) + $this->sourceLine = 1; + $this->indentation = $indentation; + + if ($node instanceof Twig_Node_Module) { + // to be removed in 2.0 + $this->filename = $node->getTemplateName(); + } + + $node->compile($this); + + return $this; + } + + public function subcompile(Twig_NodeInterface $node, $raw = true) + { + if (false === $raw) { + $this->source .= str_repeat(' ', $this->indentation * 4); + } + + $node->compile($this); + + return $this; + } + + /** + * Adds a raw string to the compiled code. + * + * @param string $string The string + * + * @return $this + */ + public function raw($string) + { + $this->source .= $string; + + return $this; + } + + /** + * Writes a string to the compiled code by adding indentation. + * + * @return $this + */ + public function write() + { + $strings = func_get_args(); + foreach ($strings as $string) { + $this->source .= str_repeat(' ', $this->indentation * 4).$string; + } + + return $this; + } + + /** + * Appends an indentation to the current PHP code after compilation. + * + * @return $this + * + * @deprecated since 1.27 (to be removed in 2.0). + */ + public function addIndentation() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use write(\'\') instead.', E_USER_DEPRECATED); + + $this->source .= str_repeat(' ', $this->indentation * 4); + + return $this; + } + + /** + * Adds a quoted string to the compiled code. + * + * @param string $value The string + * + * @return $this + */ + public function string($value) + { + $this->source .= sprintf('"%s"', addcslashes($value, "\0\t\"\$\\")); + + return $this; + } + + /** + * Returns a PHP representation of a given value. + * + * @param mixed $value The value to convert + * + * @return $this + */ + public function repr($value) + { + if (is_int($value) || is_float($value)) { + if (false !== $locale = setlocale(LC_NUMERIC, '0')) { + setlocale(LC_NUMERIC, 'C'); + } + + $this->raw($value); + + if (false !== $locale) { + setlocale(LC_NUMERIC, $locale); + } + } elseif (null === $value) { + $this->raw('null'); + } elseif (is_bool($value)) { + $this->raw($value ? 'true' : 'false'); + } elseif (is_array($value)) { + $this->raw('array('); + $first = true; + foreach ($value as $key => $v) { + if (!$first) { + $this->raw(', '); + } + $first = false; + $this->repr($key); + $this->raw(' => '); + $this->repr($v); + } + $this->raw(')'); + } else { + $this->string($value); + } + + return $this; + } + + /** + * Adds debugging information. + * + * @return $this + */ + public function addDebugInfo(Twig_NodeInterface $node) + { + if ($node->getTemplateLine() != $this->lastLine) { + $this->write(sprintf("// line %d\n", $node->getTemplateLine())); + + // when mbstring.func_overload is set to 2 + // mb_substr_count() replaces substr_count() + // but they have different signatures! + if (((int) ini_get('mbstring.func_overload')) & 2) { + @trigger_error('Support for having "mbstring.func_overload" different from 0 is deprecated version 1.29 and will be removed in 2.0.', E_USER_DEPRECATED); + + // this is much slower than the "right" version + $this->sourceLine += mb_substr_count(mb_substr($this->source, $this->sourceOffset), "\n"); + } else { + $this->sourceLine += substr_count($this->source, "\n", $this->sourceOffset); + } + $this->sourceOffset = strlen($this->source); + $this->debugInfo[$this->sourceLine] = $node->getTemplateLine(); + + $this->lastLine = $node->getTemplateLine(); + } + + return $this; + } + + public function getDebugInfo() + { + ksort($this->debugInfo); + + return $this->debugInfo; + } + + /** + * Indents the generated code. + * + * @param int $step The number of indentation to add + * + * @return $this + */ + public function indent($step = 1) + { + $this->indentation += $step; + + return $this; + } + + /** + * Outdents the generated code. + * + * @param int $step The number of indentation to remove + * + * @return $this + * + * @throws LogicException When trying to outdent too much so the indentation would become negative + */ + public function outdent($step = 1) + { + // can't outdent by more steps than the current indentation level + if ($this->indentation < $step) { + throw new LogicException('Unable to call outdent() as the indentation would become negative.'); + } + + $this->indentation -= $step; + + return $this; + } + + public function getVarName() + { + return sprintf('__internal_%s', hash('sha256', uniqid(mt_rand(), true), false)); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/CompilerInterface.php b/system/vendor/twig/twig/lib/Twig/CompilerInterface.php new file mode 100644 index 0000000..42872c9 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/CompilerInterface.php @@ -0,0 +1,34 @@ + + * + * @deprecated since 1.12 (to be removed in 3.0) + */ +interface Twig_CompilerInterface +{ + /** + * Compiles a node. + * + * @return $this + */ + public function compile(Twig_NodeInterface $node); + + /** + * Gets the current PHP code after compilation. + * + * @return string The PHP code + */ + public function getSource(); +} diff --git a/system/vendor/twig/twig/lib/Twig/ContainerRuntimeLoader.php b/system/vendor/twig/twig/lib/Twig/ContainerRuntimeLoader.php new file mode 100644 index 0000000..3284569 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/ContainerRuntimeLoader.php @@ -0,0 +1,37 @@ + + * @author Robin Chalas + */ +class Twig_ContainerRuntimeLoader implements Twig_RuntimeLoaderInterface +{ + private $container; + + public function __construct(ContainerInterface $container) + { + $this->container = $container; + } + + public function load($class) + { + if ($this->container->has($class)) { + return $this->container->get($class); + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Environment.php b/system/vendor/twig/twig/lib/Twig/Environment.php new file mode 100644 index 0000000..11c1f38 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Environment.php @@ -0,0 +1,1561 @@ + + */ +class Twig_Environment +{ + const VERSION = '1.33.0'; + const VERSION_ID = 13300; + const MAJOR_VERSION = 1; + const MINOR_VERSION = 33; + const RELEASE_VERSION = 0; + const EXTRA_VERSION = ''; + + protected $charset; + protected $loader; + protected $debug; + protected $autoReload; + protected $cache; + protected $lexer; + protected $parser; + protected $compiler; + protected $baseTemplateClass; + protected $extensions; + protected $parsers; + protected $visitors; + protected $filters; + protected $tests; + protected $functions; + protected $globals; + protected $runtimeInitialized = false; + protected $extensionInitialized = false; + protected $loadedTemplates; + protected $strictVariables; + protected $unaryOperators; + protected $binaryOperators; + protected $templateClassPrefix = '__TwigTemplate_'; + protected $functionCallbacks = array(); + protected $filterCallbacks = array(); + protected $staging; + + private $originalCache; + private $bcWriteCacheFile = false; + private $bcGetCacheFilename = false; + private $lastModifiedExtension = 0; + private $extensionsByClass = array(); + private $runtimeLoaders = array(); + private $runtimes = array(); + private $optionsHash; + + /** + * Constructor. + * + * Available options: + * + * * debug: When set to true, it automatically set "auto_reload" to true as + * well (default to false). + * + * * charset: The charset used by the templates (default to UTF-8). + * + * * base_template_class: The base template class to use for generated + * templates (default to Twig_Template). + * + * * cache: An absolute path where to store the compiled templates, + * a Twig_Cache_Interface implementation, + * or false to disable compilation cache (default). + * + * * auto_reload: Whether to reload the template if the original source changed. + * If you don't provide the auto_reload option, it will be + * determined automatically based on the debug value. + * + * * strict_variables: Whether to ignore invalid variables in templates + * (default to false). + * + * * autoescape: Whether to enable auto-escaping (default to html): + * * false: disable auto-escaping + * * true: equivalent to html + * * html, js: set the autoescaping to one of the supported strategies + * * name: set the autoescaping strategy based on the template name extension + * * PHP callback: a PHP callback that returns an escaping strategy based on the template "name" + * + * * optimizations: A flag that indicates which optimizations to apply + * (default to -1 which means that all optimizations are enabled; + * set it to 0 to disable). + * + * @param Twig_LoaderInterface $loader + * @param array $options An array of options + */ + public function __construct(Twig_LoaderInterface $loader = null, $options = array()) + { + if (null !== $loader) { + $this->setLoader($loader); + } else { + @trigger_error('Not passing a Twig_LoaderInterface as the first constructor argument of Twig_Environment is deprecated since version 1.21.', E_USER_DEPRECATED); + } + + $options = array_merge(array( + 'debug' => false, + 'charset' => 'UTF-8', + 'base_template_class' => 'Twig_Template', + 'strict_variables' => false, + 'autoescape' => 'html', + 'cache' => false, + 'auto_reload' => null, + 'optimizations' => -1, + ), $options); + + $this->debug = (bool) $options['debug']; + $this->charset = strtoupper($options['charset']); + $this->baseTemplateClass = $options['base_template_class']; + $this->autoReload = null === $options['auto_reload'] ? $this->debug : (bool) $options['auto_reload']; + $this->strictVariables = (bool) $options['strict_variables']; + $this->setCache($options['cache']); + + $this->addExtension(new Twig_Extension_Core()); + $this->addExtension(new Twig_Extension_Escaper($options['autoescape'])); + $this->addExtension(new Twig_Extension_Optimizer($options['optimizations'])); + $this->staging = new Twig_Extension_Staging(); + + // For BC + if (is_string($this->originalCache)) { + $r = new ReflectionMethod($this, 'writeCacheFile'); + if ($r->getDeclaringClass()->getName() !== __CLASS__) { + @trigger_error('The Twig_Environment::writeCacheFile method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED); + + $this->bcWriteCacheFile = true; + } + + $r = new ReflectionMethod($this, 'getCacheFilename'); + if ($r->getDeclaringClass()->getName() !== __CLASS__) { + @trigger_error('The Twig_Environment::getCacheFilename method is deprecated since version 1.22 and will be removed in Twig 2.0.', E_USER_DEPRECATED); + + $this->bcGetCacheFilename = true; + } + } + } + + /** + * Gets the base template class for compiled templates. + * + * @return string The base template class name + */ + public function getBaseTemplateClass() + { + return $this->baseTemplateClass; + } + + /** + * Sets the base template class for compiled templates. + * + * @param string $class The base template class name + */ + public function setBaseTemplateClass($class) + { + $this->baseTemplateClass = $class; + $this->updateOptionsHash(); + } + + /** + * Enables debugging mode. + */ + public function enableDebug() + { + $this->debug = true; + $this->updateOptionsHash(); + } + + /** + * Disables debugging mode. + */ + public function disableDebug() + { + $this->debug = false; + $this->updateOptionsHash(); + } + + /** + * Checks if debug mode is enabled. + * + * @return bool true if debug mode is enabled, false otherwise + */ + public function isDebug() + { + return $this->debug; + } + + /** + * Enables the auto_reload option. + */ + public function enableAutoReload() + { + $this->autoReload = true; + } + + /** + * Disables the auto_reload option. + */ + public function disableAutoReload() + { + $this->autoReload = false; + } + + /** + * Checks if the auto_reload option is enabled. + * + * @return bool true if auto_reload is enabled, false otherwise + */ + public function isAutoReload() + { + return $this->autoReload; + } + + /** + * Enables the strict_variables option. + */ + public function enableStrictVariables() + { + $this->strictVariables = true; + $this->updateOptionsHash(); + } + + /** + * Disables the strict_variables option. + */ + public function disableStrictVariables() + { + $this->strictVariables = false; + $this->updateOptionsHash(); + } + + /** + * Checks if the strict_variables option is enabled. + * + * @return bool true if strict_variables is enabled, false otherwise + */ + public function isStrictVariables() + { + return $this->strictVariables; + } + + /** + * Gets the current cache implementation. + * + * @param bool $original Whether to return the original cache option or the real cache instance + * + * @return Twig_CacheInterface|string|false A Twig_CacheInterface implementation, + * an absolute path to the compiled templates, + * or false to disable cache + */ + public function getCache($original = true) + { + return $original ? $this->originalCache : $this->cache; + } + + /** + * Sets the current cache implementation. + * + * @param Twig_CacheInterface|string|false $cache A Twig_CacheInterface implementation, + * an absolute path to the compiled templates, + * or false to disable cache + */ + public function setCache($cache) + { + if (is_string($cache)) { + $this->originalCache = $cache; + $this->cache = new Twig_Cache_Filesystem($cache); + } elseif (false === $cache) { + $this->originalCache = $cache; + $this->cache = new Twig_Cache_Null(); + } elseif (null === $cache) { + @trigger_error('Using "null" as the cache strategy is deprecated since version 1.23 and will be removed in Twig 2.0.', E_USER_DEPRECATED); + $this->originalCache = false; + $this->cache = new Twig_Cache_Null(); + } elseif ($cache instanceof Twig_CacheInterface) { + $this->originalCache = $this->cache = $cache; + } else { + throw new LogicException(sprintf('Cache can only be a string, false, or a Twig_CacheInterface implementation.')); + } + } + + /** + * Gets the cache filename for a given template. + * + * @param string $name The template name + * + * @return string|false The cache file name or false when caching is disabled + * + * @deprecated since 1.22 (to be removed in 2.0) + */ + public function getCacheFilename($name) + { + @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); + + $key = $this->cache->generateKey($name, $this->getTemplateClass($name)); + + return !$key ? false : $key; + } + + /** + * Gets the template class associated with the given string. + * + * The generated template class is based on the following parameters: + * + * * The cache key for the given template; + * * The currently enabled extensions; + * * Whether the Twig C extension is available or not; + * * PHP version; + * * Twig version; + * * Options with what environment was created. + * + * @param string $name The name for which to calculate the template class name + * @param int|null $index The index if it is an embedded template + * + * @return string The template class name + */ + public function getTemplateClass($name, $index = null) + { + $key = $this->getLoader()->getCacheKey($name).$this->optionsHash; + + return $this->templateClassPrefix.hash('sha256', $key).(null === $index ? '' : '_'.$index); + } + + /** + * Gets the template class prefix. + * + * @return string The template class prefix + * + * @deprecated since 1.22 (to be removed in 2.0) + */ + public function getTemplateClassPrefix() + { + @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); + + return $this->templateClassPrefix; + } + + /** + * Renders a template. + * + * @param string $name The template name + * @param array $context An array of parameters to pass to the template + * + * @return string The rendered template + * + * @throws Twig_Error_Loader When the template cannot be found + * @throws Twig_Error_Syntax When an error occurred during compilation + * @throws Twig_Error_Runtime When an error occurred during rendering + */ + public function render($name, array $context = array()) + { + return $this->loadTemplate($name)->render($context); + } + + /** + * Displays a template. + * + * @param string $name The template name + * @param array $context An array of parameters to pass to the template + * + * @throws Twig_Error_Loader When the template cannot be found + * @throws Twig_Error_Syntax When an error occurred during compilation + * @throws Twig_Error_Runtime When an error occurred during rendering + */ + public function display($name, array $context = array()) + { + $this->loadTemplate($name)->display($context); + } + + /** + * Loads a template. + * + * @param string|Twig_TemplateWrapper|Twig_Template $name The template name + * + * @return Twig_TemplateWrapper + */ + public function load($name) + { + if ($name instanceof Twig_TemplateWrapper) { + return $name; + } + + if ($name instanceof Twig_Template) { + return new Twig_TemplateWrapper($this, $name); + } + + return new Twig_TemplateWrapper($this, $this->loadTemplate($name)); + } + + /** + * Loads a template internal representation. + * + * This method is for internal use only and should never be called + * directly. + * + * @param string $name The template name + * @param int $index The index if it is an embedded template + * + * @return Twig_TemplateInterface A template instance representing the given template name + * + * @throws Twig_Error_Loader When the template cannot be found + * @throws Twig_Error_Runtime When a previously generated cache is corrupted + * @throws Twig_Error_Syntax When an error occurred during compilation + * + * @internal + */ + public function loadTemplate($name, $index = null) + { + $cls = $mainCls = $this->getTemplateClass($name); + if (null !== $index) { + $cls .= '_'.$index; + } + + if (isset($this->loadedTemplates[$cls])) { + return $this->loadedTemplates[$cls]; + } + + if (!class_exists($cls, false)) { + if ($this->bcGetCacheFilename) { + $key = $this->getCacheFilename($name); + } else { + $key = $this->cache->generateKey($name, $mainCls); + } + + if (!$this->isAutoReload() || $this->isTemplateFresh($name, $this->cache->getTimestamp($key))) { + $this->cache->load($key); + } + + if (!class_exists($cls, false)) { + $loader = $this->getLoader(); + if (!$loader instanceof Twig_SourceContextLoaderInterface) { + $source = new Twig_Source($loader->getSource($name), $name); + } else { + $source = $loader->getSourceContext($name); + } + + $content = $this->compileSource($source); + + if ($this->bcWriteCacheFile) { + $this->writeCacheFile($key, $content); + } else { + $this->cache->write($key, $content); + $this->cache->load($key); + } + + if (!class_exists($mainCls, false)) { + /* Last line of defense if either $this->bcWriteCacheFile was used, + * $this->cache is implemented as a no-op or we have a race condition + * where the cache was cleared between the above calls to write to and load from + * the cache. + */ + eval('?>'.$content); + } + } + + if (!class_exists($cls, false)) { + throw new Twig_Error_Runtime(sprintf('Failed to load Twig template "%s", index "%s": cache is corrupted.', $name, $index), -1, $source); + } + } + + if (!$this->runtimeInitialized) { + $this->initRuntime(); + } + + return $this->loadedTemplates[$cls] = new $cls($this); + } + + /** + * Creates a template from source. + * + * This method should not be used as a generic way to load templates. + * + * @param string $template The template name + * + * @return Twig_Template A template instance representing the given template name + * + * @throws Twig_Error_Loader When the template cannot be found + * @throws Twig_Error_Syntax When an error occurred during compilation + */ + public function createTemplate($template) + { + $name = sprintf('__string_template__%s', hash('sha256', uniqid(mt_rand(), true), false)); + + $loader = new Twig_Loader_Chain(array( + new Twig_Loader_Array(array($name => $template)), + $current = $this->getLoader(), + )); + + $this->setLoader($loader); + try { + $template = $this->loadTemplate($name); + } catch (Exception $e) { + $this->setLoader($current); + + throw $e; + } catch (Throwable $e) { + $this->setLoader($current); + + throw $e; + } + $this->setLoader($current); + + return $template; + } + + /** + * Returns true if the template is still fresh. + * + * Besides checking the loader for freshness information, + * this method also checks if the enabled extensions have + * not changed. + * + * @param string $name The template name + * @param int $time The last modification time of the cached template + * + * @return bool true if the template is fresh, false otherwise + */ + public function isTemplateFresh($name, $time) + { + if (0 === $this->lastModifiedExtension) { + foreach ($this->extensions as $extension) { + $r = new ReflectionObject($extension); + if (file_exists($r->getFileName()) && ($extensionTime = filemtime($r->getFileName())) > $this->lastModifiedExtension) { + $this->lastModifiedExtension = $extensionTime; + } + } + } + + return $this->lastModifiedExtension <= $time && $this->getLoader()->isFresh($name, $time); + } + + /** + * Tries to load a template consecutively from an array. + * + * Similar to loadTemplate() but it also accepts Twig_TemplateInterface instances and an array + * of templates where each is tried to be loaded. + * + * @param string|Twig_Template|array $names A template or an array of templates to try consecutively + * + * @return Twig_Template + * + * @throws Twig_Error_Loader When none of the templates can be found + * @throws Twig_Error_Syntax When an error occurred during compilation + */ + public function resolveTemplate($names) + { + if (!is_array($names)) { + $names = array($names); + } + + foreach ($names as $name) { + if ($name instanceof Twig_Template) { + return $name; + } + + try { + return $this->loadTemplate($name); + } catch (Twig_Error_Loader $e) { + } + } + + if (1 === count($names)) { + throw $e; + } + + throw new Twig_Error_Loader(sprintf('Unable to find one of the following templates: "%s".', implode('", "', $names))); + } + + /** + * Clears the internal template cache. + * + * @deprecated since 1.18.3 (to be removed in 2.0) + */ + public function clearTemplateCache() + { + @trigger_error(sprintf('The %s method is deprecated since version 1.18.3 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); + + $this->loadedTemplates = array(); + } + + /** + * Clears the template cache files on the filesystem. + * + * @deprecated since 1.22 (to be removed in 2.0) + */ + public function clearCacheFiles() + { + @trigger_error(sprintf('The %s method is deprecated since version 1.22 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); + + if (is_string($this->originalCache)) { + foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($this->originalCache), RecursiveIteratorIterator::LEAVES_ONLY) as $file) { + if ($file->isFile()) { + @unlink($file->getPathname()); + } + } + } + } + + /** + * Gets the Lexer instance. + * + * @return Twig_LexerInterface + * + * @deprecated since 1.25 (to be removed in 2.0) + */ + public function getLexer() + { + @trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); + + if (null === $this->lexer) { + $this->lexer = new Twig_Lexer($this); + } + + return $this->lexer; + } + + public function setLexer(Twig_LexerInterface $lexer) + { + $this->lexer = $lexer; + } + + /** + * Tokenizes a source code. + * + * @param string|Twig_Source $source The template source code + * @param string $name The template name (deprecated) + * + * @return Twig_TokenStream + * + * @throws Twig_Error_Syntax When the code is syntactically wrong + */ + public function tokenize($source, $name = null) + { + if (!$source instanceof Twig_Source) { + @trigger_error(sprintf('Passing a string as the $source argument of %s() is deprecated since version 1.27. Pass a Twig_Source instance instead.', __METHOD__), E_USER_DEPRECATED); + $source = new Twig_Source($source, $name); + } + + if (null === $this->lexer) { + $this->lexer = new Twig_Lexer($this); + } + + return $this->lexer->tokenize($source); + } + + /** + * Gets the Parser instance. + * + * @return Twig_ParserInterface + * + * @deprecated since 1.25 (to be removed in 2.0) + */ + public function getParser() + { + @trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); + + if (null === $this->parser) { + $this->parser = new Twig_Parser($this); + } + + return $this->parser; + } + + public function setParser(Twig_ParserInterface $parser) + { + $this->parser = $parser; + } + + /** + * Converts a token stream to a node tree. + * + * @return Twig_Node_Module + * + * @throws Twig_Error_Syntax When the token stream is syntactically or semantically wrong + */ + public function parse(Twig_TokenStream $stream) + { + if (null === $this->parser) { + $this->parser = new Twig_Parser($this); + } + + return $this->parser->parse($stream); + } + + /** + * Gets the Compiler instance. + * + * @return Twig_CompilerInterface + * + * @deprecated since 1.25 (to be removed in 2.0) + */ + public function getCompiler() + { + @trigger_error(sprintf('The %s() method is deprecated since version 1.25 and will be removed in 2.0.', __FUNCTION__), E_USER_DEPRECATED); + + if (null === $this->compiler) { + $this->compiler = new Twig_Compiler($this); + } + + return $this->compiler; + } + + public function setCompiler(Twig_CompilerInterface $compiler) + { + $this->compiler = $compiler; + } + + /** + * Compiles a node and returns the PHP code. + * + * @return string The compiled PHP source code + */ + public function compile(Twig_NodeInterface $node) + { + if (null === $this->compiler) { + $this->compiler = new Twig_Compiler($this); + } + + return $this->compiler->compile($node)->getSource(); + } + + /** + * Compiles a template source code. + * + * @param string|Twig_Source $source The template source code + * @param string $name The template name (deprecated) + * + * @return string The compiled PHP source code + * + * @throws Twig_Error_Syntax When there was an error during tokenizing, parsing or compiling + */ + public function compileSource($source, $name = null) + { + if (!$source instanceof Twig_Source) { + @trigger_error(sprintf('Passing a string as the $source argument of %s() is deprecated since version 1.27. Pass a Twig_Source instance instead.', __METHOD__), E_USER_DEPRECATED); + $source = new Twig_Source($source, $name); + } + + try { + return $this->compile($this->parse($this->tokenize($source))); + } catch (Twig_Error $e) { + $e->setSourceContext($source); + throw $e; + } catch (Exception $e) { + throw new Twig_Error_Syntax(sprintf('An exception has been thrown during the compilation of a template ("%s").', $e->getMessage()), -1, $source, $e); + } + } + + public function setLoader(Twig_LoaderInterface $loader) + { + if (!$loader instanceof Twig_SourceContextLoaderInterface && 0 !== strpos(get_class($loader), 'Mock_Twig_LoaderInterface')) { + @trigger_error(sprintf('Twig loader "%s" should implement Twig_SourceContextLoaderInterface since version 1.27.', get_class($loader)), E_USER_DEPRECATED); + } + + $this->loader = $loader; + } + + /** + * Gets the Loader instance. + * + * @return Twig_LoaderInterface + */ + public function getLoader() + { + if (null === $this->loader) { + throw new LogicException('You must set a loader first.'); + } + + return $this->loader; + } + + /** + * Sets the default template charset. + * + * @param string $charset The default charset + */ + public function setCharset($charset) + { + $this->charset = strtoupper($charset); + } + + /** + * Gets the default template charset. + * + * @return string The default charset + */ + public function getCharset() + { + return $this->charset; + } + + /** + * Initializes the runtime environment. + * + * @deprecated since 1.23 (to be removed in 2.0) + */ + public function initRuntime() + { + $this->runtimeInitialized = true; + + foreach ($this->getExtensions() as $name => $extension) { + if (!$extension instanceof Twig_Extension_InitRuntimeInterface) { + $m = new ReflectionMethod($extension, 'initRuntime'); + + if ('Twig_Extension' !== $m->getDeclaringClass()->getName()) { + @trigger_error(sprintf('Defining the initRuntime() method in the "%s" extension is deprecated since version 1.23. Use the `needs_environment` option to get the Twig_Environment instance in filters, functions, or tests; or explicitly implement Twig_Extension_InitRuntimeInterface if needed (not recommended).', $name), E_USER_DEPRECATED); + } + } + + $extension->initRuntime($this); + } + } + + /** + * Returns true if the given extension is registered. + * + * @param string $class The extension class name + * + * @return bool Whether the extension is registered or not + */ + public function hasExtension($class) + { + $class = ltrim($class, '\\'); + if (isset($this->extensions[$class])) { + if ($class !== get_class($this->extensions[$class])) { + @trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED); + } + + return true; + } + + return isset($this->extensionsByClass[$class]); + } + + /** + * Adds a runtime loader. + */ + public function addRuntimeLoader(Twig_RuntimeLoaderInterface $loader) + { + $this->runtimeLoaders[] = $loader; + } + + /** + * Gets an extension by class name. + * + * @param string $class The extension class name + * + * @return Twig_ExtensionInterface + */ + public function getExtension($class) + { + $class = ltrim($class, '\\'); + + if (isset($this->extensions[$class])) { + if ($class !== get_class($this->extensions[$class])) { + @trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED); + } + + return $this->extensions[$class]; + } + + if (!isset($this->extensionsByClass[$class])) { + throw new Twig_Error_Runtime(sprintf('The "%s" extension is not enabled.', $class)); + } + + return $this->extensionsByClass[$class]; + } + + /** + * Returns the runtime implementation of a Twig element (filter/function/test). + * + * @param string $class A runtime class name + * + * @return object The runtime implementation + * + * @throws Twig_Error_Runtime When the template cannot be found + */ + public function getRuntime($class) + { + if (isset($this->runtimes[$class])) { + return $this->runtimes[$class]; + } + + foreach ($this->runtimeLoaders as $loader) { + if (null !== $runtime = $loader->load($class)) { + return $this->runtimes[$class] = $runtime; + } + } + + throw new Twig_Error_Runtime(sprintf('Unable to load the "%s" runtime.', $class)); + } + + public function addExtension(Twig_ExtensionInterface $extension) + { + if ($this->extensionInitialized) { + throw new LogicException(sprintf('Unable to register extension "%s" as extensions have already been initialized.', $extension->getName())); + } + + $class = get_class($extension); + if ($class !== $extension->getName()) { + if (isset($this->extensions[$extension->getName()])) { + unset($this->extensions[$extension->getName()], $this->extensionsByClass[$class]); + @trigger_error(sprintf('The possibility to register the same extension twice ("%s") is deprecated since version 1.23 and will be removed in Twig 2.0. Use proper PHP inheritance instead.', $extension->getName()), E_USER_DEPRECATED); + } + } + + $this->lastModifiedExtension = 0; + $this->extensionsByClass[$class] = $extension; + $this->extensions[$extension->getName()] = $extension; + $this->updateOptionsHash(); + } + + /** + * Removes an extension by name. + * + * This method is deprecated and you should not use it. + * + * @param string $name The extension name + * + * @deprecated since 1.12 (to be removed in 2.0) + */ + public function removeExtension($name) + { + @trigger_error(sprintf('The %s method is deprecated since version 1.12 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); + + if ($this->extensionInitialized) { + throw new LogicException(sprintf('Unable to remove extension "%s" as extensions have already been initialized.', $name)); + } + + $class = ltrim($name, '\\'); + if (isset($this->extensions[$class])) { + if ($class !== get_class($this->extensions[$class])) { + @trigger_error(sprintf('Referencing the "%s" extension by its name (defined by getName()) is deprecated since 1.26 and will be removed in Twig 2.0. Use the Fully Qualified Extension Class Name instead.', $class), E_USER_DEPRECATED); + } + + unset($this->extensions[$class]); + } + + unset($this->extensions[$class]); + $this->updateOptionsHash(); + } + + /** + * Registers an array of extensions. + * + * @param array $extensions An array of extensions + */ + public function setExtensions(array $extensions) + { + foreach ($extensions as $extension) { + $this->addExtension($extension); + } + } + + /** + * Returns all registered extensions. + * + * @return Twig_ExtensionInterface[] An array of extensions (keys are for internal usage only and should not be relied on) + */ + public function getExtensions() + { + return $this->extensions; + } + + public function addTokenParser(Twig_TokenParserInterface $parser) + { + if ($this->extensionInitialized) { + throw new LogicException('Unable to add a token parser as extensions have already been initialized.'); + } + + $this->staging->addTokenParser($parser); + } + + /** + * Gets the registered Token Parsers. + * + * @return Twig_TokenParserBrokerInterface + * + * @internal + */ + public function getTokenParsers() + { + if (!$this->extensionInitialized) { + $this->initExtensions(); + } + + return $this->parsers; + } + + /** + * Gets registered tags. + * + * Be warned that this method cannot return tags defined by Twig_TokenParserBrokerInterface classes. + * + * @return Twig_TokenParserInterface[] + * + * @internal + */ + public function getTags() + { + $tags = array(); + foreach ($this->getTokenParsers()->getParsers() as $parser) { + if ($parser instanceof Twig_TokenParserInterface) { + $tags[$parser->getTag()] = $parser; + } + } + + return $tags; + } + + public function addNodeVisitor(Twig_NodeVisitorInterface $visitor) + { + if ($this->extensionInitialized) { + throw new LogicException('Unable to add a node visitor as extensions have already been initialized.'); + } + + $this->staging->addNodeVisitor($visitor); + } + + /** + * Gets the registered Node Visitors. + * + * @return Twig_NodeVisitorInterface[] + * + * @internal + */ + public function getNodeVisitors() + { + if (!$this->extensionInitialized) { + $this->initExtensions(); + } + + return $this->visitors; + } + + /** + * Registers a Filter. + * + * @param string|Twig_SimpleFilter $name The filter name or a Twig_SimpleFilter instance + * @param Twig_FilterInterface|Twig_SimpleFilter $filter + */ + public function addFilter($name, $filter = null) + { + if (!$name instanceof Twig_SimpleFilter && !($filter instanceof Twig_SimpleFilter || $filter instanceof Twig_FilterInterface)) { + throw new LogicException('A filter must be an instance of Twig_FilterInterface or Twig_SimpleFilter.'); + } + + if ($name instanceof Twig_SimpleFilter) { + $filter = $name; + $name = $filter->getName(); + } else { + @trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleFilter" instead when defining filter "%s".', __METHOD__, $name), E_USER_DEPRECATED); + } + + if ($this->extensionInitialized) { + throw new LogicException(sprintf('Unable to add filter "%s" as extensions have already been initialized.', $name)); + } + + $this->staging->addFilter($name, $filter); + } + + /** + * Get a filter by name. + * + * Subclasses may override this method and load filters differently; + * so no list of filters is available. + * + * @param string $name The filter name + * + * @return Twig_Filter|false A Twig_Filter instance or false if the filter does not exist + * + * @internal + */ + public function getFilter($name) + { + if (!$this->extensionInitialized) { + $this->initExtensions(); + } + + if (isset($this->filters[$name])) { + return $this->filters[$name]; + } + + foreach ($this->filters as $pattern => $filter) { + $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); + + if ($count) { + if (preg_match('#^'.$pattern.'$#', $name, $matches)) { + array_shift($matches); + $filter->setArguments($matches); + + return $filter; + } + } + } + + foreach ($this->filterCallbacks as $callback) { + if (false !== $filter = call_user_func($callback, $name)) { + return $filter; + } + } + + return false; + } + + public function registerUndefinedFilterCallback($callable) + { + $this->filterCallbacks[] = $callable; + } + + /** + * Gets the registered Filters. + * + * Be warned that this method cannot return filters defined with registerUndefinedFilterCallback. + * + * @return Twig_FilterInterface[] + * + * @see registerUndefinedFilterCallback + * + * @internal + */ + public function getFilters() + { + if (!$this->extensionInitialized) { + $this->initExtensions(); + } + + return $this->filters; + } + + /** + * Registers a Test. + * + * @param string|Twig_SimpleTest $name The test name or a Twig_SimpleTest instance + * @param Twig_TestInterface|Twig_SimpleTest $test A Twig_TestInterface instance or a Twig_SimpleTest instance + */ + public function addTest($name, $test = null) + { + if (!$name instanceof Twig_SimpleTest && !($test instanceof Twig_SimpleTest || $test instanceof Twig_TestInterface)) { + throw new LogicException('A test must be an instance of Twig_TestInterface or Twig_SimpleTest.'); + } + + if ($name instanceof Twig_SimpleTest) { + $test = $name; + $name = $test->getName(); + } else { + @trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleTest" instead when defining test "%s".', __METHOD__, $name), E_USER_DEPRECATED); + } + + if ($this->extensionInitialized) { + throw new LogicException(sprintf('Unable to add test "%s" as extensions have already been initialized.', $name)); + } + + $this->staging->addTest($name, $test); + } + + /** + * Gets the registered Tests. + * + * @return Twig_TestInterface[] + * + * @internal + */ + public function getTests() + { + if (!$this->extensionInitialized) { + $this->initExtensions(); + } + + return $this->tests; + } + + /** + * Gets a test by name. + * + * @param string $name The test name + * + * @return Twig_Test|false A Twig_Test instance or false if the test does not exist + * + * @internal + */ + public function getTest($name) + { + if (!$this->extensionInitialized) { + $this->initExtensions(); + } + + if (isset($this->tests[$name])) { + return $this->tests[$name]; + } + + return false; + } + + /** + * Registers a Function. + * + * @param string|Twig_SimpleFunction $name The function name or a Twig_SimpleFunction instance + * @param Twig_FunctionInterface|Twig_SimpleFunction $function + */ + public function addFunction($name, $function = null) + { + if (!$name instanceof Twig_SimpleFunction && !($function instanceof Twig_SimpleFunction || $function instanceof Twig_FunctionInterface)) { + throw new LogicException('A function must be an instance of Twig_FunctionInterface or Twig_SimpleFunction.'); + } + + if ($name instanceof Twig_SimpleFunction) { + $function = $name; + $name = $function->getName(); + } else { + @trigger_error(sprintf('Passing a name as a first argument to the %s method is deprecated since version 1.21. Pass an instance of "Twig_SimpleFunction" instead when defining function "%s".', __METHOD__, $name), E_USER_DEPRECATED); + } + + if ($this->extensionInitialized) { + throw new LogicException(sprintf('Unable to add function "%s" as extensions have already been initialized.', $name)); + } + + $this->staging->addFunction($name, $function); + } + + /** + * Get a function by name. + * + * Subclasses may override this method and load functions differently; + * so no list of functions is available. + * + * @param string $name function name + * + * @return Twig_Function|false A Twig_Function instance or false if the function does not exist + * + * @internal + */ + public function getFunction($name) + { + if (!$this->extensionInitialized) { + $this->initExtensions(); + } + + if (isset($this->functions[$name])) { + return $this->functions[$name]; + } + + foreach ($this->functions as $pattern => $function) { + $pattern = str_replace('\\*', '(.*?)', preg_quote($pattern, '#'), $count); + + if ($count) { + if (preg_match('#^'.$pattern.'$#', $name, $matches)) { + array_shift($matches); + $function->setArguments($matches); + + return $function; + } + } + } + + foreach ($this->functionCallbacks as $callback) { + if (false !== $function = call_user_func($callback, $name)) { + return $function; + } + } + + return false; + } + + public function registerUndefinedFunctionCallback($callable) + { + $this->functionCallbacks[] = $callable; + } + + /** + * Gets registered functions. + * + * Be warned that this method cannot return functions defined with registerUndefinedFunctionCallback. + * + * @return Twig_FunctionInterface[] + * + * @see registerUndefinedFunctionCallback + * + * @internal + */ + public function getFunctions() + { + if (!$this->extensionInitialized) { + $this->initExtensions(); + } + + return $this->functions; + } + + /** + * Registers a Global. + * + * New globals can be added before compiling or rendering a template; + * but after, you can only update existing globals. + * + * @param string $name The global name + * @param mixed $value The global value + */ + public function addGlobal($name, $value) + { + if ($this->extensionInitialized || $this->runtimeInitialized) { + if (null === $this->globals) { + $this->globals = $this->initGlobals(); + } + + if (!array_key_exists($name, $this->globals)) { + // The deprecation notice must be turned into the following exception in Twig 2.0 + @trigger_error(sprintf('Registering global variable "%s" at runtime or when the extensions have already been initialized is deprecated since version 1.21.', $name), E_USER_DEPRECATED); + //throw new LogicException(sprintf('Unable to add global "%s" as the runtime or the extensions have already been initialized.', $name)); + } + } + + if ($this->extensionInitialized || $this->runtimeInitialized) { + // update the value + $this->globals[$name] = $value; + } else { + $this->staging->addGlobal($name, $value); + } + } + + /** + * Gets the registered Globals. + * + * @return array An array of globals + * + * @internal + */ + public function getGlobals() + { + if (!$this->runtimeInitialized && !$this->extensionInitialized) { + return $this->initGlobals(); + } + + if (null === $this->globals) { + $this->globals = $this->initGlobals(); + } + + return $this->globals; + } + + /** + * Merges a context with the defined globals. + * + * @param array $context An array representing the context + * + * @return array The context merged with the globals + */ + public function mergeGlobals(array $context) + { + // we don't use array_merge as the context being generally + // bigger than globals, this code is faster. + foreach ($this->getGlobals() as $key => $value) { + if (!array_key_exists($key, $context)) { + $context[$key] = $value; + } + } + + return $context; + } + + /** + * Gets the registered unary Operators. + * + * @return array An array of unary operators + * + * @internal + */ + public function getUnaryOperators() + { + if (!$this->extensionInitialized) { + $this->initExtensions(); + } + + return $this->unaryOperators; + } + + /** + * Gets the registered binary Operators. + * + * @return array An array of binary operators + * + * @internal + */ + public function getBinaryOperators() + { + if (!$this->extensionInitialized) { + $this->initExtensions(); + } + + return $this->binaryOperators; + } + + /** + * @deprecated since 1.23 (to be removed in 2.0) + */ + public function computeAlternatives($name, $items) + { + @trigger_error(sprintf('The %s method is deprecated since version 1.23 and will be removed in Twig 2.0.', __METHOD__), E_USER_DEPRECATED); + + return Twig_Error_Syntax::computeAlternatives($name, $items); + } + + /** + * @internal + */ + protected function initGlobals() + { + $globals = array(); + foreach ($this->extensions as $name => $extension) { + if (!$extension instanceof Twig_Extension_GlobalsInterface) { + $m = new ReflectionMethod($extension, 'getGlobals'); + + if ('Twig_Extension' !== $m->getDeclaringClass()->getName()) { + @trigger_error(sprintf('Defining the getGlobals() method in the "%s" extension without explicitly implementing Twig_Extension_GlobalsInterface is deprecated since version 1.23.', $name), E_USER_DEPRECATED); + } + } + + $extGlob = $extension->getGlobals(); + if (!is_array($extGlob)) { + throw new UnexpectedValueException(sprintf('"%s::getGlobals()" must return an array of globals.', get_class($extension))); + } + + $globals[] = $extGlob; + } + + $globals[] = $this->staging->getGlobals(); + + return call_user_func_array('array_merge', $globals); + } + + /** + * @internal + */ + protected function initExtensions() + { + if ($this->extensionInitialized) { + return; + } + + $this->parsers = new Twig_TokenParserBroker(array(), array(), false); + $this->filters = array(); + $this->functions = array(); + $this->tests = array(); + $this->visitors = array(); + $this->unaryOperators = array(); + $this->binaryOperators = array(); + + foreach ($this->extensions as $extension) { + $this->initExtension($extension); + } + $this->initExtension($this->staging); + // Done at the end only, so that an exception during initialization does not mark the environment as initialized when catching the exception + $this->extensionInitialized = true; + } + + /** + * @internal + */ + protected function initExtension(Twig_ExtensionInterface $extension) + { + // filters + foreach ($extension->getFilters() as $name => $filter) { + if ($filter instanceof Twig_SimpleFilter) { + $name = $filter->getName(); + } else { + @trigger_error(sprintf('Using an instance of "%s" for filter "%s" is deprecated since version 1.21. Use Twig_SimpleFilter instead.', get_class($filter), $name), E_USER_DEPRECATED); + } + + $this->filters[$name] = $filter; + } + + // functions + foreach ($extension->getFunctions() as $name => $function) { + if ($function instanceof Twig_SimpleFunction) { + $name = $function->getName(); + } else { + @trigger_error(sprintf('Using an instance of "%s" for function "%s" is deprecated since version 1.21. Use Twig_SimpleFunction instead.', get_class($function), $name), E_USER_DEPRECATED); + } + + $this->functions[$name] = $function; + } + + // tests + foreach ($extension->getTests() as $name => $test) { + if ($test instanceof Twig_SimpleTest) { + $name = $test->getName(); + } else { + @trigger_error(sprintf('Using an instance of "%s" for test "%s" is deprecated since version 1.21. Use Twig_SimpleTest instead.', get_class($test), $name), E_USER_DEPRECATED); + } + + $this->tests[$name] = $test; + } + + // token parsers + foreach ($extension->getTokenParsers() as $parser) { + if ($parser instanceof Twig_TokenParserInterface) { + $this->parsers->addTokenParser($parser); + } elseif ($parser instanceof Twig_TokenParserBrokerInterface) { + @trigger_error('Registering a Twig_TokenParserBrokerInterface instance is deprecated since version 1.21.', E_USER_DEPRECATED); + + $this->parsers->addTokenParserBroker($parser); + } else { + throw new LogicException('getTokenParsers() must return an array of Twig_TokenParserInterface or Twig_TokenParserBrokerInterface instances.'); + } + } + + // node visitors + foreach ($extension->getNodeVisitors() as $visitor) { + $this->visitors[] = $visitor; + } + + // operators + if ($operators = $extension->getOperators()) { + if (!is_array($operators)) { + throw new InvalidArgumentException(sprintf('"%s::getOperators()" must return an array with operators, got "%s".', get_class($extension), is_object($operators) ? get_class($operators) : gettype($operators).(is_resource($operators) ? '' : '#'.$operators))); + } + + if (2 !== count($operators)) { + throw new InvalidArgumentException(sprintf('"%s::getOperators()" must return an array of 2 elements, got %d.', get_class($extension), count($operators))); + } + + $this->unaryOperators = array_merge($this->unaryOperators, $operators[0]); + $this->binaryOperators = array_merge($this->binaryOperators, $operators[1]); + } + } + + /** + * @deprecated since 1.22 (to be removed in 2.0) + */ + protected function writeCacheFile($file, $content) + { + $this->cache->write($file, $content); + } + + private function updateOptionsHash() + { + $hashParts = array_merge( + array_keys($this->extensions), + array( + (int) function_exists('twig_template_get_attributes'), + PHP_MAJOR_VERSION, + PHP_MINOR_VERSION, + self::VERSION, + (int) $this->debug, + $this->baseTemplateClass, + (int) $this->strictVariables, + ) + ); + $this->optionsHash = implode(':', $hashParts); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Error.php b/system/vendor/twig/twig/lib/Twig/Error.php new file mode 100644 index 0000000..358a03b --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Error.php @@ -0,0 +1,365 @@ + + */ +class Twig_Error extends Exception +{ + protected $lineno; + // to be renamed to name in 2.0 + protected $filename; + protected $rawMessage; + protected $previous; + + private $sourcePath; + private $sourceCode; + + /** + * Constructor. + * + * Set both the line number and the name to false to + * disable automatic guessing of the original template name + * and line number. + * + * Set the line number to -1 to enable its automatic guessing. + * Set the name to null to enable its automatic guessing. + * + * By default, automatic guessing is enabled. + * + * @param string $message The error message + * @param int $lineno The template line where the error occurred + * @param Twig_Source|string|null $source The source context where the error occurred + * @param Exception $previous The previous exception + */ + public function __construct($message, $lineno = -1, $source = null, Exception $previous = null) + { + if (null === $source) { + $name = null; + } elseif (!$source instanceof Twig_Source) { + // for compat with the Twig C ext., passing the template name as string is accepted + $name = $source; + } else { + $name = $source->getName(); + $this->sourceCode = $source->getCode(); + $this->sourcePath = $source->getPath(); + } + if (PHP_VERSION_ID < 50300) { + $this->previous = $previous; + parent::__construct(''); + } else { + parent::__construct('', 0, $previous); + } + + $this->lineno = $lineno; + $this->filename = $name; + + if (-1 === $lineno || null === $name || null === $this->sourcePath) { + $this->guessTemplateInfo(); + } + + $this->rawMessage = $message; + + $this->updateRepr(); + } + + /** + * Gets the raw message. + * + * @return string The raw message + */ + public function getRawMessage() + { + return $this->rawMessage; + } + + /** + * Gets the logical name where the error occurred. + * + * @return string The name + * + * @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead. + */ + public function getTemplateFile() + { + @trigger_error(sprintf('The "%s" method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', __METHOD__), E_USER_DEPRECATED); + + return $this->filename; + } + + /** + * Sets the logical name where the error occurred. + * + * @param string $name The name + * + * @deprecated since 1.27 (to be removed in 2.0). Use setSourceContext() instead. + */ + public function setTemplateFile($name) + { + @trigger_error(sprintf('The "%s" method is deprecated since version 1.27 and will be removed in 2.0. Use setSourceContext() instead.', __METHOD__), E_USER_DEPRECATED); + + $this->filename = $name; + + $this->updateRepr(); + } + + /** + * Gets the logical name where the error occurred. + * + * @return string The name + * + * @deprecated since 1.29 (to be removed in 2.0). Use getSourceContext() instead. + */ + public function getTemplateName() + { + @trigger_error(sprintf('The "%s" method is deprecated since version 1.29 and will be removed in 2.0. Use getSourceContext() instead.', __METHOD__), E_USER_DEPRECATED); + + return $this->filename; + } + + /** + * Sets the logical name where the error occurred. + * + * @param string $name The name + * + * @deprecated since 1.29 (to be removed in 2.0). Use setSourceContext() instead. + */ + public function setTemplateName($name) + { + @trigger_error(sprintf('The "%s" method is deprecated since version 1.29 and will be removed in 2.0. Use setSourceContext() instead.', __METHOD__), E_USER_DEPRECATED); + + $this->filename = $name; + $this->sourceCode = $this->sourcePath = null; + + $this->updateRepr(); + } + + /** + * Gets the template line where the error occurred. + * + * @return int The template line + */ + public function getTemplateLine() + { + return $this->lineno; + } + + /** + * Sets the template line where the error occurred. + * + * @param int $lineno The template line + */ + public function setTemplateLine($lineno) + { + $this->lineno = $lineno; + + $this->updateRepr(); + } + + /** + * Gets the source context of the Twig template where the error occurred. + * + * @return Twig_Source|null + */ + public function getSourceContext() + { + return $this->filename ? new Twig_Source($this->sourceCode, $this->filename, $this->sourcePath) : null; + } + + /** + * Sets the source context of the Twig template where the error occurred. + */ + public function setSourceContext(Twig_Source $source = null) + { + if (null === $source) { + $this->sourceCode = $this->filename = $this->sourcePath = null; + } else { + $this->sourceCode = $source->getCode(); + $this->filename = $source->getName(); + $this->sourcePath = $source->getPath(); + } + + $this->updateRepr(); + } + + public function guess() + { + $this->guessTemplateInfo(); + $this->updateRepr(); + } + + /** + * For PHP < 5.3.0, provides access to the getPrevious() method. + * + * @param string $method The method name + * @param array $arguments The parameters to be passed to the method + * + * @return Exception The previous exception or null + * + * @throws BadMethodCallException + */ + public function __call($method, $arguments) + { + if ('getprevious' == strtolower($method)) { + return $this->previous; + } + + throw new BadMethodCallException(sprintf('Method "Twig_Error::%s()" does not exist.', $method)); + } + + public function appendMessage($rawMessage) + { + $this->rawMessage .= $rawMessage; + $this->updateRepr(); + } + + /** + * @internal + */ + protected function updateRepr() + { + $this->message = $this->rawMessage; + + if ($this->sourcePath && $this->lineno > 0) { + $this->file = $this->sourcePath; + $this->line = $this->lineno; + + return; + } + + $dot = false; + if ('.' === substr($this->message, -1)) { + $this->message = substr($this->message, 0, -1); + $dot = true; + } + + $questionMark = false; + if ('?' === substr($this->message, -1)) { + $this->message = substr($this->message, 0, -1); + $questionMark = true; + } + + if ($this->filename) { + if (is_string($this->filename) || (is_object($this->filename) && method_exists($this->filename, '__toString'))) { + $name = sprintf('"%s"', $this->filename); + } else { + $name = json_encode($this->filename); + } + $this->message .= sprintf(' in %s', $name); + } + + if ($this->lineno && $this->lineno >= 0) { + $this->message .= sprintf(' at line %d', $this->lineno); + } + + if ($dot) { + $this->message .= '.'; + } + + if ($questionMark) { + $this->message .= '?'; + } + } + + /** + * @internal + */ + protected function guessTemplateInfo() + { + $template = null; + $templateClass = null; + + if (PHP_VERSION_ID >= 50306) { + $backtrace = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS | DEBUG_BACKTRACE_PROVIDE_OBJECT); + } else { + $backtrace = debug_backtrace(); + } + + foreach ($backtrace as $trace) { + if (isset($trace['object']) && $trace['object'] instanceof Twig_Template && 'Twig_Template' !== get_class($trace['object'])) { + $currentClass = get_class($trace['object']); + $isEmbedContainer = 0 === strpos($templateClass, $currentClass); + if (null === $this->filename || ($this->filename == $trace['object']->getTemplateName() && !$isEmbedContainer)) { + $template = $trace['object']; + $templateClass = get_class($trace['object']); + } + } + } + + // update template name + if (null !== $template && null === $this->filename) { + $this->filename = $template->getTemplateName(); + } + + // update template path if any + if (null !== $template && null === $this->sourcePath) { + $src = $template->getSourceContext(); + $this->sourceCode = $src->getCode(); + $this->sourcePath = $src->getPath(); + } + + if (null === $template || $this->lineno > -1) { + return; + } + + $r = new ReflectionObject($template); + $file = $r->getFileName(); + + // hhvm has a bug where eval'ed files comes out as the current directory + if (is_dir($file)) { + $file = ''; + } + + $exceptions = array($e = $this); + while (($e instanceof self || method_exists($e, 'getPrevious')) && $e = $e->getPrevious()) { + $exceptions[] = $e; + } + + while ($e = array_pop($exceptions)) { + $traces = $e->getTrace(); + array_unshift($traces, array('file' => $e->getFile(), 'line' => $e->getLine())); + + while ($trace = array_shift($traces)) { + if (!isset($trace['file']) || !isset($trace['line']) || $file != $trace['file']) { + continue; + } + + foreach ($template->getDebugInfo() as $codeLine => $templateLine) { + if ($codeLine <= $trace['line']) { + // update template line + $this->lineno = $templateLine; + + return; + } + } + } + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Error/Loader.php b/system/vendor/twig/twig/lib/Twig/Error/Loader.php new file mode 100644 index 0000000..6829720 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Error/Loader.php @@ -0,0 +1,38 @@ + + */ +class Twig_Error_Loader extends Twig_Error +{ + public function __construct($message, $lineno = -1, $source = null, Exception $previous = null) + { + if (PHP_VERSION_ID < 50300) { + $this->previous = $previous; + Exception::__construct(''); + } else { + Exception::__construct('', 0, $previous); + } + $this->appendMessage($message); + $this->setTemplateLine(false); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Error/Runtime.php b/system/vendor/twig/twig/lib/Twig/Error/Runtime.php new file mode 100644 index 0000000..c4e41b1 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Error/Runtime.php @@ -0,0 +1,20 @@ + + */ +class Twig_Error_Runtime extends Twig_Error +{ +} diff --git a/system/vendor/twig/twig/lib/Twig/Error/Syntax.php b/system/vendor/twig/twig/lib/Twig/Error/Syntax.php new file mode 100644 index 0000000..bded07e --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Error/Syntax.php @@ -0,0 +1,53 @@ + + */ +class Twig_Error_Syntax extends Twig_Error +{ + /** + * Tweaks the error message to include suggestions. + * + * @param string $name The original name of the item that does not exist + * @param array $items An array of possible items + */ + public function addSuggestions($name, array $items) + { + if (!$alternatives = self::computeAlternatives($name, $items)) { + return; + } + + $this->appendMessage(sprintf(' Did you mean "%s"?', implode('", "', $alternatives))); + } + + /** + * @internal + * + * To be merged with the addSuggestions() method in 2.0. + */ + public static function computeAlternatives($name, $items) + { + $alternatives = array(); + foreach ($items as $item) { + $lev = levenshtein($name, $item); + if ($lev <= strlen($name) / 3 || false !== strpos($item, $name)) { + $alternatives[$item] = $lev; + } + } + asort($alternatives); + + return array_keys($alternatives); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/ExistsLoaderInterface.php b/system/vendor/twig/twig/lib/Twig/ExistsLoaderInterface.php new file mode 100644 index 0000000..553fb4e --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/ExistsLoaderInterface.php @@ -0,0 +1,29 @@ + + * + * @deprecated since 1.12 (to be removed in 3.0) + */ +interface Twig_ExistsLoaderInterface +{ + /** + * Check if we have the source code of a template, given its name. + * + * @param string $name The name of the template to check if we can load + * + * @return bool If the template source code is handled by this loader or not + */ + public function exists($name); +} diff --git a/system/vendor/twig/twig/lib/Twig/ExpressionParser.php b/system/vendor/twig/twig/lib/Twig/ExpressionParser.php new file mode 100644 index 0000000..517ad14 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/ExpressionParser.php @@ -0,0 +1,739 @@ + + * + * @internal + */ +class Twig_ExpressionParser +{ + const OPERATOR_LEFT = 1; + const OPERATOR_RIGHT = 2; + + protected $parser; + protected $unaryOperators; + protected $binaryOperators; + + private $env; + + public function __construct(Twig_Parser $parser, $env = null) + { + $this->parser = $parser; + + if ($env instanceof Twig_Environment) { + $this->env = $env; + $this->unaryOperators = $env->getUnaryOperators(); + $this->binaryOperators = $env->getBinaryOperators(); + } else { + @trigger_error('Passing the operators as constructor arguments to '.__METHOD__.' is deprecated since version 1.27. Pass the environment instead.', E_USER_DEPRECATED); + + $this->env = $parser->getEnvironment(); + $this->unaryOperators = func_get_arg(1); + $this->binaryOperators = func_get_arg(2); + } + } + + public function parseExpression($precedence = 0) + { + $expr = $this->getPrimary(); + $token = $this->parser->getCurrentToken(); + while ($this->isBinary($token) && $this->binaryOperators[$token->getValue()]['precedence'] >= $precedence) { + $op = $this->binaryOperators[$token->getValue()]; + $this->parser->getStream()->next(); + + if ('is not' === $token->getValue()) { + $expr = $this->parseNotTestExpression($expr); + } elseif ('is' === $token->getValue()) { + $expr = $this->parseTestExpression($expr); + } elseif (isset($op['callable'])) { + $expr = call_user_func($op['callable'], $this->parser, $expr); + } else { + $expr1 = $this->parseExpression(self::OPERATOR_LEFT === $op['associativity'] ? $op['precedence'] + 1 : $op['precedence']); + $class = $op['class']; + $expr = new $class($expr, $expr1, $token->getLine()); + } + + $token = $this->parser->getCurrentToken(); + } + + if (0 === $precedence) { + return $this->parseConditionalExpression($expr); + } + + return $expr; + } + + protected function getPrimary() + { + $token = $this->parser->getCurrentToken(); + + if ($this->isUnary($token)) { + $operator = $this->unaryOperators[$token->getValue()]; + $this->parser->getStream()->next(); + $expr = $this->parseExpression($operator['precedence']); + $class = $operator['class']; + + return $this->parsePostfixExpression(new $class($expr, $token->getLine())); + } elseif ($token->test(Twig_Token::PUNCTUATION_TYPE, '(')) { + $this->parser->getStream()->next(); + $expr = $this->parseExpression(); + $this->parser->getStream()->expect(Twig_Token::PUNCTUATION_TYPE, ')', 'An opened parenthesis is not properly closed'); + + return $this->parsePostfixExpression($expr); + } + + return $this->parsePrimaryExpression(); + } + + protected function parseConditionalExpression($expr) + { + while ($this->parser->getStream()->nextIf(Twig_Token::PUNCTUATION_TYPE, '?')) { + if (!$this->parser->getStream()->nextIf(Twig_Token::PUNCTUATION_TYPE, ':')) { + $expr2 = $this->parseExpression(); + if ($this->parser->getStream()->nextIf(Twig_Token::PUNCTUATION_TYPE, ':')) { + $expr3 = $this->parseExpression(); + } else { + $expr3 = new Twig_Node_Expression_Constant('', $this->parser->getCurrentToken()->getLine()); + } + } else { + $expr2 = $expr; + $expr3 = $this->parseExpression(); + } + + $expr = new Twig_Node_Expression_Conditional($expr, $expr2, $expr3, $this->parser->getCurrentToken()->getLine()); + } + + return $expr; + } + + protected function isUnary(Twig_Token $token) + { + return $token->test(Twig_Token::OPERATOR_TYPE) && isset($this->unaryOperators[$token->getValue()]); + } + + protected function isBinary(Twig_Token $token) + { + return $token->test(Twig_Token::OPERATOR_TYPE) && isset($this->binaryOperators[$token->getValue()]); + } + + public function parsePrimaryExpression() + { + $token = $this->parser->getCurrentToken(); + switch ($token->getType()) { + case Twig_Token::NAME_TYPE: + $this->parser->getStream()->next(); + switch ($token->getValue()) { + case 'true': + case 'TRUE': + $node = new Twig_Node_Expression_Constant(true, $token->getLine()); + break; + + case 'false': + case 'FALSE': + $node = new Twig_Node_Expression_Constant(false, $token->getLine()); + break; + + case 'none': + case 'NONE': + case 'null': + case 'NULL': + $node = new Twig_Node_Expression_Constant(null, $token->getLine()); + break; + + default: + if ('(' === $this->parser->getCurrentToken()->getValue()) { + $node = $this->getFunctionNode($token->getValue(), $token->getLine()); + } else { + $node = new Twig_Node_Expression_Name($token->getValue(), $token->getLine()); + } + } + break; + + case Twig_Token::NUMBER_TYPE: + $this->parser->getStream()->next(); + $node = new Twig_Node_Expression_Constant($token->getValue(), $token->getLine()); + break; + + case Twig_Token::STRING_TYPE: + case Twig_Token::INTERPOLATION_START_TYPE: + $node = $this->parseStringExpression(); + break; + + case Twig_Token::OPERATOR_TYPE: + if (preg_match(Twig_Lexer::REGEX_NAME, $token->getValue(), $matches) && $matches[0] == $token->getValue()) { + // in this context, string operators are variable names + $this->parser->getStream()->next(); + $node = new Twig_Node_Expression_Name($token->getValue(), $token->getLine()); + break; + } elseif (isset($this->unaryOperators[$token->getValue()])) { + $class = $this->unaryOperators[$token->getValue()]['class']; + + $ref = new ReflectionClass($class); + $negClass = 'Twig_Node_Expression_Unary_Neg'; + $posClass = 'Twig_Node_Expression_Unary_Pos'; + if (!(in_array($ref->getName(), array($negClass, $posClass)) || $ref->isSubclassOf($negClass) || $ref->isSubclassOf($posClass))) { + throw new Twig_Error_Syntax(sprintf('Unexpected unary operator "%s".', $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); + } + + $this->parser->getStream()->next(); + $expr = $this->parsePrimaryExpression(); + + $node = new $class($expr, $token->getLine()); + break; + } + + default: + if ($token->test(Twig_Token::PUNCTUATION_TYPE, '[')) { + $node = $this->parseArrayExpression(); + } elseif ($token->test(Twig_Token::PUNCTUATION_TYPE, '{')) { + $node = $this->parseHashExpression(); + } else { + throw new Twig_Error_Syntax(sprintf('Unexpected token "%s" of value "%s".', Twig_Token::typeToEnglish($token->getType()), $token->getValue()), $token->getLine(), $this->parser->getStream()->getSourceContext()); + } + } + + return $this->parsePostfixExpression($node); + } + + public function parseStringExpression() + { + $stream = $this->parser->getStream(); + + $nodes = array(); + // a string cannot be followed by another string in a single expression + $nextCanBeString = true; + while (true) { + if ($nextCanBeString && $token = $stream->nextIf(Twig_Token::STRING_TYPE)) { + $nodes[] = new Twig_Node_Expression_Constant($token->getValue(), $token->getLine()); + $nextCanBeString = false; + } elseif ($stream->nextIf(Twig_Token::INTERPOLATION_START_TYPE)) { + $nodes[] = $this->parseExpression(); + $stream->expect(Twig_Token::INTERPOLATION_END_TYPE); + $nextCanBeString = true; + } else { + break; + } + } + + $expr = array_shift($nodes); + foreach ($nodes as $node) { + $expr = new Twig_Node_Expression_Binary_Concat($expr, $node, $node->getTemplateLine()); + } + + return $expr; + } + + public function parseArrayExpression() + { + $stream = $this->parser->getStream(); + $stream->expect(Twig_Token::PUNCTUATION_TYPE, '[', 'An array element was expected'); + + $node = new Twig_Node_Expression_Array(array(), $stream->getCurrent()->getLine()); + $first = true; + while (!$stream->test(Twig_Token::PUNCTUATION_TYPE, ']')) { + if (!$first) { + $stream->expect(Twig_Token::PUNCTUATION_TYPE, ',', 'An array element must be followed by a comma'); + + // trailing ,? + if ($stream->test(Twig_Token::PUNCTUATION_TYPE, ']')) { + break; + } + } + $first = false; + + $node->addElement($this->parseExpression()); + } + $stream->expect(Twig_Token::PUNCTUATION_TYPE, ']', 'An opened array is not properly closed'); + + return $node; + } + + public function parseHashExpression() + { + $stream = $this->parser->getStream(); + $stream->expect(Twig_Token::PUNCTUATION_TYPE, '{', 'A hash element was expected'); + + $node = new Twig_Node_Expression_Array(array(), $stream->getCurrent()->getLine()); + $first = true; + while (!$stream->test(Twig_Token::PUNCTUATION_TYPE, '}')) { + if (!$first) { + $stream->expect(Twig_Token::PUNCTUATION_TYPE, ',', 'A hash value must be followed by a comma'); + + // trailing ,? + if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '}')) { + break; + } + } + $first = false; + + // a hash key can be: + // + // * a number -- 12 + // * a string -- 'a' + // * a name, which is equivalent to a string -- a + // * an expression, which must be enclosed in parentheses -- (1 + 2) + if (($token = $stream->nextIf(Twig_Token::STRING_TYPE)) || ($token = $stream->nextIf(Twig_Token::NAME_TYPE)) || $token = $stream->nextIf(Twig_Token::NUMBER_TYPE)) { + $key = new Twig_Node_Expression_Constant($token->getValue(), $token->getLine()); + } elseif ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) { + $key = $this->parseExpression(); + } else { + $current = $stream->getCurrent(); + + throw new Twig_Error_Syntax(sprintf('A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "%s" of value "%s".', Twig_Token::typeToEnglish($current->getType()), $current->getValue()), $current->getLine(), $stream->getSourceContext()); + } + + $stream->expect(Twig_Token::PUNCTUATION_TYPE, ':', 'A hash key must be followed by a colon (:)'); + $value = $this->parseExpression(); + + $node->addElement($value, $key); + } + $stream->expect(Twig_Token::PUNCTUATION_TYPE, '}', 'An opened hash is not properly closed'); + + return $node; + } + + public function parsePostfixExpression($node) + { + while (true) { + $token = $this->parser->getCurrentToken(); + if ($token->getType() == Twig_Token::PUNCTUATION_TYPE) { + if ('.' == $token->getValue() || '[' == $token->getValue()) { + $node = $this->parseSubscriptExpression($node); + } elseif ('|' == $token->getValue()) { + $node = $this->parseFilterExpression($node); + } else { + break; + } + } else { + break; + } + } + + return $node; + } + + public function getFunctionNode($name, $line) + { + switch ($name) { + case 'parent': + $this->parseArguments(); + if (!count($this->parser->getBlockStack())) { + throw new Twig_Error_Syntax('Calling "parent" outside a block is forbidden.', $line, $this->parser->getStream()->getSourceContext()); + } + + if (!$this->parser->getParent() && !$this->parser->hasTraits()) { + throw new Twig_Error_Syntax('Calling "parent" on a template that does not extend nor "use" another template is forbidden.', $line, $this->parser->getStream()->getSourceContext()); + } + + return new Twig_Node_Expression_Parent($this->parser->peekBlockStack(), $line); + case 'block': + $args = $this->parseArguments(); + if (count($args) < 1) { + throw new Twig_Error_Syntax('The "block" function takes one argument (the block name).', $line, $this->parser->getStream()->getSourceContext()); + } + + return new Twig_Node_Expression_BlockReference($args->getNode(0), count($args) > 1 ? $args->getNode(1) : null, $line); + case 'attribute': + $args = $this->parseArguments(); + if (count($args) < 2) { + throw new Twig_Error_Syntax('The "attribute" function takes at least two arguments (the variable and the attributes).', $line, $this->parser->getStream()->getSourceContext()); + } + + return new Twig_Node_Expression_GetAttr($args->getNode(0), $args->getNode(1), count($args) > 2 ? $args->getNode(2) : null, Twig_Template::ANY_CALL, $line); + default: + if (null !== $alias = $this->parser->getImportedSymbol('function', $name)) { + $arguments = new Twig_Node_Expression_Array(array(), $line); + foreach ($this->parseArguments() as $n) { + $arguments->addElement($n); + } + + $node = new Twig_Node_Expression_MethodCall($alias['node'], $alias['name'], $arguments, $line); + $node->setAttribute('safe', true); + + return $node; + } + + $args = $this->parseArguments(true); + $class = $this->getFunctionNodeClass($name, $line); + + return new $class($name, $args, $line); + } + } + + public function parseSubscriptExpression($node) + { + $stream = $this->parser->getStream(); + $token = $stream->next(); + $lineno = $token->getLine(); + $arguments = new Twig_Node_Expression_Array(array(), $lineno); + $type = Twig_Template::ANY_CALL; + if ($token->getValue() == '.') { + $token = $stream->next(); + if ( + $token->getType() == Twig_Token::NAME_TYPE + || + $token->getType() == Twig_Token::NUMBER_TYPE + || + ($token->getType() == Twig_Token::OPERATOR_TYPE && preg_match(Twig_Lexer::REGEX_NAME, $token->getValue())) + ) { + $arg = new Twig_Node_Expression_Constant($token->getValue(), $lineno); + + if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) { + $type = Twig_Template::METHOD_CALL; + foreach ($this->parseArguments() as $n) { + $arguments->addElement($n); + } + } + } else { + throw new Twig_Error_Syntax('Expected name or number.', $lineno, $stream->getSourceContext()); + } + + if ($node instanceof Twig_Node_Expression_Name && null !== $this->parser->getImportedSymbol('template', $node->getAttribute('name'))) { + if (!$arg instanceof Twig_Node_Expression_Constant) { + throw new Twig_Error_Syntax(sprintf('Dynamic macro names are not supported (called on "%s").', $node->getAttribute('name')), $token->getLine(), $stream->getSourceContext()); + } + + $name = $arg->getAttribute('value'); + + if ($this->parser->isReservedMacroName($name)) { + throw new Twig_Error_Syntax(sprintf('"%s" cannot be called as macro as it is a reserved keyword.', $name), $token->getLine(), $stream->getSourceContext()); + } + + $node = new Twig_Node_Expression_MethodCall($node, 'get'.$name, $arguments, $lineno); + $node->setAttribute('safe', true); + + return $node; + } + } else { + $type = Twig_Template::ARRAY_CALL; + + // slice? + $slice = false; + if ($stream->test(Twig_Token::PUNCTUATION_TYPE, ':')) { + $slice = true; + $arg = new Twig_Node_Expression_Constant(0, $token->getLine()); + } else { + $arg = $this->parseExpression(); + } + + if ($stream->nextIf(Twig_Token::PUNCTUATION_TYPE, ':')) { + $slice = true; + } + + if ($slice) { + if ($stream->test(Twig_Token::PUNCTUATION_TYPE, ']')) { + $length = new Twig_Node_Expression_Constant(null, $token->getLine()); + } else { + $length = $this->parseExpression(); + } + + $class = $this->getFilterNodeClass('slice', $token->getLine()); + $arguments = new Twig_Node(array($arg, $length)); + $filter = new $class($node, new Twig_Node_Expression_Constant('slice', $token->getLine()), $arguments, $token->getLine()); + + $stream->expect(Twig_Token::PUNCTUATION_TYPE, ']'); + + return $filter; + } + + $stream->expect(Twig_Token::PUNCTUATION_TYPE, ']'); + } + + return new Twig_Node_Expression_GetAttr($node, $arg, $arguments, $type, $lineno); + } + + public function parseFilterExpression($node) + { + $this->parser->getStream()->next(); + + return $this->parseFilterExpressionRaw($node); + } + + public function parseFilterExpressionRaw($node, $tag = null) + { + while (true) { + $token = $this->parser->getStream()->expect(Twig_Token::NAME_TYPE); + + $name = new Twig_Node_Expression_Constant($token->getValue(), $token->getLine()); + if (!$this->parser->getStream()->test(Twig_Token::PUNCTUATION_TYPE, '(')) { + $arguments = new Twig_Node(); + } else { + $arguments = $this->parseArguments(true); + } + + $class = $this->getFilterNodeClass($name->getAttribute('value'), $token->getLine()); + + $node = new $class($node, $name, $arguments, $token->getLine(), $tag); + + if (!$this->parser->getStream()->test(Twig_Token::PUNCTUATION_TYPE, '|')) { + break; + } + + $this->parser->getStream()->next(); + } + + return $node; + } + + /** + * Parses arguments. + * + * @param bool $namedArguments Whether to allow named arguments or not + * @param bool $definition Whether we are parsing arguments for a function definition + * + * @return Twig_Node + * + * @throws Twig_Error_Syntax + */ + public function parseArguments($namedArguments = false, $definition = false) + { + $args = array(); + $stream = $this->parser->getStream(); + + $stream->expect(Twig_Token::PUNCTUATION_TYPE, '(', 'A list of arguments must begin with an opening parenthesis'); + while (!$stream->test(Twig_Token::PUNCTUATION_TYPE, ')')) { + if (!empty($args)) { + $stream->expect(Twig_Token::PUNCTUATION_TYPE, ',', 'Arguments must be separated by a comma'); + } + + if ($definition) { + $token = $stream->expect(Twig_Token::NAME_TYPE, null, 'An argument must be a name'); + $value = new Twig_Node_Expression_Name($token->getValue(), $this->parser->getCurrentToken()->getLine()); + } else { + $value = $this->parseExpression(); + } + + $name = null; + if ($namedArguments && $token = $stream->nextIf(Twig_Token::OPERATOR_TYPE, '=')) { + if (!$value instanceof Twig_Node_Expression_Name) { + throw new Twig_Error_Syntax(sprintf('A parameter name must be a string, "%s" given.', get_class($value)), $token->getLine(), $stream->getSourceContext()); + } + $name = $value->getAttribute('name'); + + if ($definition) { + $value = $this->parsePrimaryExpression(); + + if (!$this->checkConstantExpression($value)) { + throw new Twig_Error_Syntax(sprintf('A default value for an argument must be a constant (a boolean, a string, a number, or an array).'), $token->getLine(), $stream->getSourceContext()); + } + } else { + $value = $this->parseExpression(); + } + } + + if ($definition) { + if (null === $name) { + $name = $value->getAttribute('name'); + $value = new Twig_Node_Expression_Constant(null, $this->parser->getCurrentToken()->getLine()); + } + $args[$name] = $value; + } else { + if (null === $name) { + $args[] = $value; + } else { + $args[$name] = $value; + } + } + } + $stream->expect(Twig_Token::PUNCTUATION_TYPE, ')', 'A list of arguments must be closed by a parenthesis'); + + return new Twig_Node($args); + } + + public function parseAssignmentExpression() + { + $stream = $this->parser->getStream(); + $targets = array(); + while (true) { + $token = $stream->expect(Twig_Token::NAME_TYPE, null, 'Only variables can be assigned to'); + $value = $token->getValue(); + if (in_array(strtolower($value), array('true', 'false', 'none', 'null'))) { + throw new Twig_Error_Syntax(sprintf('You cannot assign a value to "%s".', $value), $token->getLine(), $stream->getSourceContext()); + } + $targets[] = new Twig_Node_Expression_AssignName($value, $token->getLine()); + + if (!$stream->nextIf(Twig_Token::PUNCTUATION_TYPE, ',')) { + break; + } + } + + return new Twig_Node($targets); + } + + public function parseMultitargetExpression() + { + $targets = array(); + while (true) { + $targets[] = $this->parseExpression(); + if (!$this->parser->getStream()->nextIf(Twig_Token::PUNCTUATION_TYPE, ',')) { + break; + } + } + + return new Twig_Node($targets); + } + + private function parseNotTestExpression(Twig_NodeInterface $node) + { + return new Twig_Node_Expression_Unary_Not($this->parseTestExpression($node), $this->parser->getCurrentToken()->getLine()); + } + + private function parseTestExpression(Twig_NodeInterface $node) + { + $stream = $this->parser->getStream(); + list($name, $test) = $this->getTest($node->getTemplateLine()); + + $class = $this->getTestNodeClass($test); + $arguments = null; + if ($stream->test(Twig_Token::PUNCTUATION_TYPE, '(')) { + $arguments = $this->parser->getExpressionParser()->parseArguments(true); + } + + return new $class($node, $name, $arguments, $this->parser->getCurrentToken()->getLine()); + } + + private function getTest($line) + { + $stream = $this->parser->getStream(); + $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); + + if ($test = $this->env->getTest($name)) { + return array($name, $test); + } + + if ($stream->test(Twig_Token::NAME_TYPE)) { + // try 2-words tests + $name = $name.' '.$this->parser->getCurrentToken()->getValue(); + + if ($test = $this->env->getTest($name)) { + $stream->next(); + + return array($name, $test); + } + } + + $e = new Twig_Error_Syntax(sprintf('Unknown "%s" test.', $name), $line, $stream->getSourceContext()); + $e->addSuggestions($name, array_keys($this->env->getTests())); + + throw $e; + } + + private function getTestNodeClass($test) + { + if ($test instanceof Twig_SimpleTest && $test->isDeprecated()) { + $stream = $this->parser->getStream(); + $message = sprintf('Twig Test "%s" is deprecated', $test->getName()); + if (!is_bool($test->getDeprecatedVersion())) { + $message .= sprintf(' since version %s', $test->getDeprecatedVersion()); + } + if ($test->getAlternative()) { + $message .= sprintf('. Use "%s" instead', $test->getAlternative()); + } + $src = $stream->getSourceContext(); + $message .= sprintf(' in %s at line %d.', $src->getPath() ? $src->getPath() : $src->getName(), $stream->getCurrent()->getLine()); + + @trigger_error($message, E_USER_DEPRECATED); + } + + if ($test instanceof Twig_SimpleTest) { + return $test->getNodeClass(); + } + + return $test instanceof Twig_Test_Node ? $test->getClass() : 'Twig_Node_Expression_Test'; + } + + protected function getFunctionNodeClass($name, $line) + { + if (false === $function = $this->env->getFunction($name)) { + $e = new Twig_Error_Syntax(sprintf('Unknown "%s" function.', $name), $line, $this->parser->getStream()->getSourceContext()); + $e->addSuggestions($name, array_keys($this->env->getFunctions())); + + throw $e; + } + + if ($function instanceof Twig_SimpleFunction && $function->isDeprecated()) { + $message = sprintf('Twig Function "%s" is deprecated', $function->getName()); + if (!is_bool($function->getDeprecatedVersion())) { + $message .= sprintf(' since version %s', $function->getDeprecatedVersion()); + } + if ($function->getAlternative()) { + $message .= sprintf('. Use "%s" instead', $function->getAlternative()); + } + $src = $this->parser->getStream()->getSourceContext(); + $message .= sprintf(' in %s at line %d.', $src->getPath() ? $src->getPath() : $src->getName(), $line); + + @trigger_error($message, E_USER_DEPRECATED); + } + + if ($function instanceof Twig_SimpleFunction) { + return $function->getNodeClass(); + } + + return $function instanceof Twig_Function_Node ? $function->getClass() : 'Twig_Node_Expression_Function'; + } + + protected function getFilterNodeClass($name, $line) + { + if (false === $filter = $this->env->getFilter($name)) { + $e = new Twig_Error_Syntax(sprintf('Unknown "%s" filter.', $name), $line, $this->parser->getStream()->getSourceContext()); + $e->addSuggestions($name, array_keys($this->env->getFilters())); + + throw $e; + } + + if ($filter instanceof Twig_SimpleFilter && $filter->isDeprecated()) { + $message = sprintf('Twig Filter "%s" is deprecated', $filter->getName()); + if (!is_bool($filter->getDeprecatedVersion())) { + $message .= sprintf(' since version %s', $filter->getDeprecatedVersion()); + } + if ($filter->getAlternative()) { + $message .= sprintf('. Use "%s" instead', $filter->getAlternative()); + } + $src = $this->parser->getStream()->getSourceContext(); + $message .= sprintf(' in %s at line %d.', $src->getPath() ? $src->getPath() : $src->getName(), $line); + + @trigger_error($message, E_USER_DEPRECATED); + } + + if ($filter instanceof Twig_SimpleFilter) { + return $filter->getNodeClass(); + } + + return $filter instanceof Twig_Filter_Node ? $filter->getClass() : 'Twig_Node_Expression_Filter'; + } + + // checks that the node only contains "constant" elements + protected function checkConstantExpression(Twig_NodeInterface $node) + { + if (!($node instanceof Twig_Node_Expression_Constant || $node instanceof Twig_Node_Expression_Array + || $node instanceof Twig_Node_Expression_Unary_Neg || $node instanceof Twig_Node_Expression_Unary_Pos + )) { + return false; + } + + foreach ($node as $n) { + if (!$this->checkConstantExpression($n)) { + return false; + } + } + + return true; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Extension.php b/system/vendor/twig/twig/lib/Twig/Extension.php new file mode 100644 index 0000000..5d72634 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Extension.php @@ -0,0 +1,65 @@ +escapers[$strategy] = $callable; + } + + /** + * Gets all defined escapers. + * + * @return array An array of escapers + */ + public function getEscapers() + { + return $this->escapers; + } + + /** + * Sets the default format to be used by the date filter. + * + * @param string $format The default date format string + * @param string $dateIntervalFormat The default date interval format string + */ + public function setDateFormat($format = null, $dateIntervalFormat = null) + { + if (null !== $format) { + $this->dateFormats[0] = $format; + } + + if (null !== $dateIntervalFormat) { + $this->dateFormats[1] = $dateIntervalFormat; + } + } + + /** + * Gets the default format to be used by the date filter. + * + * @return array The default date format string and the default date interval format string + */ + public function getDateFormat() + { + return $this->dateFormats; + } + + /** + * Sets the default timezone to be used by the date filter. + * + * @param DateTimeZone|string $timezone The default timezone string or a DateTimeZone object + */ + public function setTimezone($timezone) + { + $this->timezone = $timezone instanceof DateTimeZone ? $timezone : new DateTimeZone($timezone); + } + + /** + * Gets the default timezone to be used by the date filter. + * + * @return DateTimeZone The default timezone currently in use + */ + public function getTimezone() + { + if (null === $this->timezone) { + $this->timezone = new DateTimeZone(date_default_timezone_get()); + } + + return $this->timezone; + } + + /** + * Sets the default format to be used by the number_format filter. + * + * @param int $decimal the number of decimal places to use + * @param string $decimalPoint the character(s) to use for the decimal point + * @param string $thousandSep the character(s) to use for the thousands separator + */ + public function setNumberFormat($decimal, $decimalPoint, $thousandSep) + { + $this->numberFormat = array($decimal, $decimalPoint, $thousandSep); + } + + /** + * Get the default format used by the number_format filter. + * + * @return array The arguments for number_format() + */ + public function getNumberFormat() + { + return $this->numberFormat; + } + + public function getTokenParsers() + { + return array( + new Twig_TokenParser_For(), + new Twig_TokenParser_If(), + new Twig_TokenParser_Extends(), + new Twig_TokenParser_Include(), + new Twig_TokenParser_Block(), + new Twig_TokenParser_Use(), + new Twig_TokenParser_Filter(), + new Twig_TokenParser_Macro(), + new Twig_TokenParser_Import(), + new Twig_TokenParser_From(), + new Twig_TokenParser_Set(), + new Twig_TokenParser_Spaceless(), + new Twig_TokenParser_Flush(), + new Twig_TokenParser_Do(), + new Twig_TokenParser_Embed(), + new Twig_TokenParser_With(), + ); + } + + public function getFilters() + { + $filters = array( + // formatting filters + new Twig_SimpleFilter('date', 'twig_date_format_filter', array('needs_environment' => true)), + new Twig_SimpleFilter('date_modify', 'twig_date_modify_filter', array('needs_environment' => true)), + new Twig_SimpleFilter('format', 'sprintf'), + new Twig_SimpleFilter('replace', 'twig_replace_filter'), + new Twig_SimpleFilter('number_format', 'twig_number_format_filter', array('needs_environment' => true)), + new Twig_SimpleFilter('abs', 'abs'), + new Twig_SimpleFilter('round', 'twig_round'), + + // encoding + new Twig_SimpleFilter('url_encode', 'twig_urlencode_filter'), + new Twig_SimpleFilter('json_encode', 'twig_jsonencode_filter'), + new Twig_SimpleFilter('convert_encoding', 'twig_convert_encoding'), + + // string filters + new Twig_SimpleFilter('title', 'twig_title_string_filter', array('needs_environment' => true)), + new Twig_SimpleFilter('capitalize', 'twig_capitalize_string_filter', array('needs_environment' => true)), + new Twig_SimpleFilter('upper', 'strtoupper'), + new Twig_SimpleFilter('lower', 'strtolower'), + new Twig_SimpleFilter('striptags', 'strip_tags'), + new Twig_SimpleFilter('trim', 'twig_trim_filter'), + new Twig_SimpleFilter('nl2br', 'nl2br', array('pre_escape' => 'html', 'is_safe' => array('html'))), + + // array helpers + new Twig_SimpleFilter('join', 'twig_join_filter'), + new Twig_SimpleFilter('split', 'twig_split_filter', array('needs_environment' => true)), + new Twig_SimpleFilter('sort', 'twig_sort_filter'), + new Twig_SimpleFilter('merge', 'twig_array_merge'), + new Twig_SimpleFilter('batch', 'twig_array_batch'), + + // string/array filters + new Twig_SimpleFilter('reverse', 'twig_reverse_filter', array('needs_environment' => true)), + new Twig_SimpleFilter('length', 'twig_length_filter', array('needs_environment' => true)), + new Twig_SimpleFilter('slice', 'twig_slice', array('needs_environment' => true)), + new Twig_SimpleFilter('first', 'twig_first', array('needs_environment' => true)), + new Twig_SimpleFilter('last', 'twig_last', array('needs_environment' => true)), + + // iteration and runtime + new Twig_SimpleFilter('default', '_twig_default_filter', array('node_class' => 'Twig_Node_Expression_Filter_Default')), + new Twig_SimpleFilter('keys', 'twig_get_array_keys_filter'), + + // escaping + new Twig_SimpleFilter('escape', 'twig_escape_filter', array('needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe')), + new Twig_SimpleFilter('e', 'twig_escape_filter', array('needs_environment' => true, 'is_safe_callback' => 'twig_escape_filter_is_safe')), + ); + + if (function_exists('mb_get_info')) { + $filters[] = new Twig_SimpleFilter('upper', 'twig_upper_filter', array('needs_environment' => true)); + $filters[] = new Twig_SimpleFilter('lower', 'twig_lower_filter', array('needs_environment' => true)); + } + + return $filters; + } + + public function getFunctions() + { + return array( + new Twig_SimpleFunction('max', 'max'), + new Twig_SimpleFunction('min', 'min'), + new Twig_SimpleFunction('range', 'range'), + new Twig_SimpleFunction('constant', 'twig_constant'), + new Twig_SimpleFunction('cycle', 'twig_cycle'), + new Twig_SimpleFunction('random', 'twig_random', array('needs_environment' => true)), + new Twig_SimpleFunction('date', 'twig_date_converter', array('needs_environment' => true)), + new Twig_SimpleFunction('include', 'twig_include', array('needs_environment' => true, 'needs_context' => true, 'is_safe' => array('all'))), + new Twig_SimpleFunction('source', 'twig_source', array('needs_environment' => true, 'is_safe' => array('all'))), + ); + } + + public function getTests() + { + return array( + new Twig_SimpleTest('even', null, array('node_class' => 'Twig_Node_Expression_Test_Even')), + new Twig_SimpleTest('odd', null, array('node_class' => 'Twig_Node_Expression_Test_Odd')), + new Twig_SimpleTest('defined', null, array('node_class' => 'Twig_Node_Expression_Test_Defined')), + new Twig_SimpleTest('sameas', null, array('node_class' => 'Twig_Node_Expression_Test_Sameas', 'deprecated' => '1.21', 'alternative' => 'same as')), + new Twig_SimpleTest('same as', null, array('node_class' => 'Twig_Node_Expression_Test_Sameas')), + new Twig_SimpleTest('none', null, array('node_class' => 'Twig_Node_Expression_Test_Null')), + new Twig_SimpleTest('null', null, array('node_class' => 'Twig_Node_Expression_Test_Null')), + new Twig_SimpleTest('divisibleby', null, array('node_class' => 'Twig_Node_Expression_Test_Divisibleby', 'deprecated' => '1.21', 'alternative' => 'divisible by')), + new Twig_SimpleTest('divisible by', null, array('node_class' => 'Twig_Node_Expression_Test_Divisibleby')), + new Twig_SimpleTest('constant', null, array('node_class' => 'Twig_Node_Expression_Test_Constant')), + new Twig_SimpleTest('empty', 'twig_test_empty'), + new Twig_SimpleTest('iterable', 'twig_test_iterable'), + ); + } + + public function getOperators() + { + return array( + array( + 'not' => array('precedence' => 50, 'class' => 'Twig_Node_Expression_Unary_Not'), + '-' => array('precedence' => 500, 'class' => 'Twig_Node_Expression_Unary_Neg'), + '+' => array('precedence' => 500, 'class' => 'Twig_Node_Expression_Unary_Pos'), + ), + array( + 'or' => array('precedence' => 10, 'class' => 'Twig_Node_Expression_Binary_Or', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + 'and' => array('precedence' => 15, 'class' => 'Twig_Node_Expression_Binary_And', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + 'b-or' => array('precedence' => 16, 'class' => 'Twig_Node_Expression_Binary_BitwiseOr', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + 'b-xor' => array('precedence' => 17, 'class' => 'Twig_Node_Expression_Binary_BitwiseXor', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + 'b-and' => array('precedence' => 18, 'class' => 'Twig_Node_Expression_Binary_BitwiseAnd', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '==' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Equal', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '!=' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_NotEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '<' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Less', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '>' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Greater', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '>=' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_GreaterEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '<=' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_LessEqual', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + 'not in' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_NotIn', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + 'in' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_In', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + 'matches' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_Matches', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + 'starts with' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_StartsWith', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + 'ends with' => array('precedence' => 20, 'class' => 'Twig_Node_Expression_Binary_EndsWith', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '..' => array('precedence' => 25, 'class' => 'Twig_Node_Expression_Binary_Range', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '+' => array('precedence' => 30, 'class' => 'Twig_Node_Expression_Binary_Add', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '-' => array('precedence' => 30, 'class' => 'Twig_Node_Expression_Binary_Sub', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '~' => array('precedence' => 40, 'class' => 'Twig_Node_Expression_Binary_Concat', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '*' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Mul', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '/' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Div', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '//' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_FloorDiv', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '%' => array('precedence' => 60, 'class' => 'Twig_Node_Expression_Binary_Mod', 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + 'is' => array('precedence' => 100, 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + 'is not' => array('precedence' => 100, 'associativity' => Twig_ExpressionParser::OPERATOR_LEFT), + '**' => array('precedence' => 200, 'class' => 'Twig_Node_Expression_Binary_Power', 'associativity' => Twig_ExpressionParser::OPERATOR_RIGHT), + '??' => array('precedence' => 300, 'class' => 'Twig_Node_Expression_NullCoalesce', 'associativity' => Twig_ExpressionParser::OPERATOR_RIGHT), + ), + ); + } + + public function getName() + { + return 'core'; + } +} + +/** + * Cycles over a value. + * + * @param ArrayAccess|array $values + * @param int $position The cycle position + * + * @return string The next value in the cycle + */ +function twig_cycle($values, $position) +{ + if (!is_array($values) && !$values instanceof ArrayAccess) { + return $values; + } + + return $values[$position % count($values)]; +} + +/** + * Returns a random value depending on the supplied parameter type: + * - a random item from a Traversable or array + * - a random character from a string + * - a random integer between 0 and the integer parameter. + * + * @param Twig_Environment $env + * @param Traversable|array|int|float|string $values The values to pick a random item from + * + * @throws Twig_Error_Runtime when $values is an empty array (does not apply to an empty string which is returned as is) + * + * @return mixed A random value from the given sequence + */ +function twig_random(Twig_Environment $env, $values = null) +{ + if (null === $values) { + return mt_rand(); + } + + if (is_int($values) || is_float($values)) { + return $values < 0 ? mt_rand($values, 0) : mt_rand(0, $values); + } + + if ($values instanceof Traversable) { + $values = iterator_to_array($values); + } elseif (is_string($values)) { + if ('' === $values) { + return ''; + } + if (null !== $charset = $env->getCharset()) { + if ('UTF-8' !== $charset) { + $values = twig_convert_encoding($values, 'UTF-8', $charset); + } + + // unicode version of str_split() + // split at all positions, but not after the start and not before the end + $values = preg_split('/(? $value) { + $values[$i] = twig_convert_encoding($value, $charset, 'UTF-8'); + } + } + } else { + return $values[mt_rand(0, strlen($values) - 1)]; + } + } + + if (!is_array($values)) { + return $values; + } + + if (0 === count($values)) { + throw new Twig_Error_Runtime('The random function cannot pick from an empty array.'); + } + + return $values[array_rand($values, 1)]; +} + +/** + * Converts a date to the given format. + * + *
    + *   {{ post.published_at|date("m/d/Y") }}
    + * 
    + * + * @param Twig_Environment $env + * @param DateTime|DateTimeInterface|DateInterval|string $date A date + * @param string|null $format The target format, null to use the default + * @param DateTimeZone|string|null|false $timezone The target timezone, null to use the default, false to leave unchanged + * + * @return string The formatted date + */ +function twig_date_format_filter(Twig_Environment $env, $date, $format = null, $timezone = null) +{ + if (null === $format) { + $formats = $env->getExtension('Twig_Extension_Core')->getDateFormat(); + $format = $date instanceof DateInterval ? $formats[1] : $formats[0]; + } + + if ($date instanceof DateInterval) { + return $date->format($format); + } + + return twig_date_converter($env, $date, $timezone)->format($format); +} + +/** + * Returns a new date object modified. + * + *
    + *   {{ post.published_at|date_modify("-1day")|date("m/d/Y") }}
    + * 
    + * + * @param Twig_Environment $env + * @param DateTime|string $date A date + * @param string $modifier A modifier string + * + * @return DateTime A new date object + */ +function twig_date_modify_filter(Twig_Environment $env, $date, $modifier) +{ + $date = twig_date_converter($env, $date, false); + $resultDate = $date->modify($modifier); + + // This is a hack to ensure PHP 5.2 support and support for DateTimeImmutable + // DateTime::modify does not return the modified DateTime object < 5.3.0 + // and DateTimeImmutable does not modify $date. + return null === $resultDate ? $date : $resultDate; +} + +/** + * Converts an input to a DateTime instance. + * + *
    + *    {% if date(user.created_at) < date('+2days') %}
    + *      {# do something #}
    + *    {% endif %}
    + * 
    + * + * @param Twig_Environment $env + * @param DateTime|DateTimeInterface|string|null $date A date + * @param DateTimeZone|string|null|false $timezone The target timezone, null to use the default, false to leave unchanged + * + * @return DateTime A DateTime instance + */ +function twig_date_converter(Twig_Environment $env, $date = null, $timezone = null) +{ + // determine the timezone + if (false !== $timezone) { + if (null === $timezone) { + $timezone = $env->getExtension('Twig_Extension_Core')->getTimezone(); + } elseif (!$timezone instanceof DateTimeZone) { + $timezone = new DateTimeZone($timezone); + } + } + + // immutable dates + if ($date instanceof DateTimeImmutable) { + return false !== $timezone ? $date->setTimezone($timezone) : $date; + } + + if ($date instanceof DateTime || $date instanceof DateTimeInterface) { + $date = clone $date; + if (false !== $timezone) { + $date->setTimezone($timezone); + } + + return $date; + } + + if (null === $date || 'now' === $date) { + return new DateTime($date, false !== $timezone ? $timezone : $env->getExtension('Twig_Extension_Core')->getTimezone()); + } + + $asString = (string) $date; + if (ctype_digit($asString) || (!empty($asString) && '-' === $asString[0] && ctype_digit(substr($asString, 1)))) { + $date = new DateTime('@'.$date); + } else { + $date = new DateTime($date, $env->getExtension('Twig_Extension_Core')->getTimezone()); + } + + if (false !== $timezone) { + $date->setTimezone($timezone); + } + + return $date; +} + +/** + * Replaces strings within a string. + * + * @param string $str String to replace in + * @param array|Traversable $from Replace values + * @param string|null $to Replace to, deprecated (@see http://php.net/manual/en/function.strtr.php) + * + * @return string + */ +function twig_replace_filter($str, $from, $to = null) +{ + if ($from instanceof Traversable) { + $from = iterator_to_array($from); + } elseif (is_string($from) && is_string($to)) { + @trigger_error('Using "replace" with character by character replacement is deprecated since version 1.22 and will be removed in Twig 2.0', E_USER_DEPRECATED); + + return strtr($str, $from, $to); + } elseif (!is_array($from)) { + throw new Twig_Error_Runtime(sprintf('The "replace" filter expects an array or "Traversable" as replace values, got "%s".', is_object($from) ? get_class($from) : gettype($from))); + } + + return strtr($str, $from); +} + +/** + * Rounds a number. + * + * @param int|float $value The value to round + * @param int|float $precision The rounding precision + * @param string $method The method to use for rounding + * + * @return int|float The rounded number + */ +function twig_round($value, $precision = 0, $method = 'common') +{ + if ('common' == $method) { + return round($value, $precision); + } + + if ('ceil' != $method && 'floor' != $method) { + throw new Twig_Error_Runtime('The round filter only supports the "common", "ceil", and "floor" methods.'); + } + + return $method($value * pow(10, $precision)) / pow(10, $precision); +} + +/** + * Number format filter. + * + * All of the formatting options can be left null, in that case the defaults will + * be used. Supplying any of the parameters will override the defaults set in the + * environment object. + * + * @param Twig_Environment $env + * @param mixed $number A float/int/string of the number to format + * @param int $decimal the number of decimal points to display + * @param string $decimalPoint the character(s) to use for the decimal point + * @param string $thousandSep the character(s) to use for the thousands separator + * + * @return string The formatted number + */ +function twig_number_format_filter(Twig_Environment $env, $number, $decimal = null, $decimalPoint = null, $thousandSep = null) +{ + $defaults = $env->getExtension('Twig_Extension_Core')->getNumberFormat(); + if (null === $decimal) { + $decimal = $defaults[0]; + } + + if (null === $decimalPoint) { + $decimalPoint = $defaults[1]; + } + + if (null === $thousandSep) { + $thousandSep = $defaults[2]; + } + + return number_format((float) $number, $decimal, $decimalPoint, $thousandSep); +} + +/** + * URL encodes (RFC 3986) a string as a path segment or an array as a query string. + * + * @param string|array $url A URL or an array of query parameters + * + * @return string The URL encoded value + */ +function twig_urlencode_filter($url) +{ + if (is_array($url)) { + if (defined('PHP_QUERY_RFC3986')) { + return http_build_query($url, '', '&', PHP_QUERY_RFC3986); + } + + return http_build_query($url, '', '&'); + } + + return rawurlencode($url); +} + +if (PHP_VERSION_ID < 50300) { + /** + * JSON encodes a variable. + * + * @param mixed $value the value to encode + * @param int $options Not used on PHP 5.2.x + * + * @return mixed The JSON encoded value + */ + function twig_jsonencode_filter($value, $options = 0) + { + if ($value instanceof Twig_Markup) { + $value = (string) $value; + } elseif (is_array($value)) { + array_walk_recursive($value, '_twig_markup2string'); + } + + return json_encode($value); + } +} else { + /** + * JSON encodes a variable. + * + * @param mixed $value the value to encode + * @param int $options Bitmask consisting of JSON_HEX_QUOT, JSON_HEX_TAG, JSON_HEX_AMP, JSON_HEX_APOS, JSON_NUMERIC_CHECK, JSON_PRETTY_PRINT, JSON_UNESCAPED_SLASHES, JSON_FORCE_OBJECT + * + * @return mixed The JSON encoded value + */ + function twig_jsonencode_filter($value, $options = 0) + { + if ($value instanceof Twig_Markup) { + $value = (string) $value; + } elseif (is_array($value)) { + array_walk_recursive($value, '_twig_markup2string'); + } + + return json_encode($value, $options); + } +} + +function _twig_markup2string(&$value) +{ + if ($value instanceof Twig_Markup) { + $value = (string) $value; + } +} + +/** + * Merges an array with another one. + * + *
    + *  {% set items = { 'apple': 'fruit', 'orange': 'fruit' } %}
    + *
    + *  {% set items = items|merge({ 'peugeot': 'car' }) %}
    + *
    + *  {# items now contains { 'apple': 'fruit', 'orange': 'fruit', 'peugeot': 'car' } #}
    + * 
    + * + * @param array|Traversable $arr1 An array + * @param array|Traversable $arr2 An array + * + * @return array The merged array + */ +function twig_array_merge($arr1, $arr2) +{ + if ($arr1 instanceof Traversable) { + $arr1 = iterator_to_array($arr1); + } elseif (!is_array($arr1)) { + throw new Twig_Error_Runtime(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as first argument.', gettype($arr1))); + } + + if ($arr2 instanceof Traversable) { + $arr2 = iterator_to_array($arr2); + } elseif (!is_array($arr2)) { + throw new Twig_Error_Runtime(sprintf('The merge filter only works with arrays or "Traversable", got "%s" as second argument.', gettype($arr2))); + } + + return array_merge($arr1, $arr2); +} + +/** + * Slices a variable. + * + * @param Twig_Environment $env + * @param mixed $item A variable + * @param int $start Start of the slice + * @param int $length Size of the slice + * @param bool $preserveKeys Whether to preserve key or not (when the input is an array) + * + * @return mixed The sliced variable + */ +function twig_slice(Twig_Environment $env, $item, $start, $length = null, $preserveKeys = false) +{ + if ($item instanceof Traversable) { + while ($item instanceof IteratorAggregate) { + $item = $item->getIterator(); + } + + if ($start >= 0 && $length >= 0 && $item instanceof Iterator) { + try { + return iterator_to_array(new LimitIterator($item, $start, $length === null ? -1 : $length), $preserveKeys); + } catch (OutOfBoundsException $exception) { + return array(); + } + } + + $item = iterator_to_array($item, $preserveKeys); + } + + if (is_array($item)) { + return array_slice($item, $start, $length, $preserveKeys); + } + + $item = (string) $item; + + if (function_exists('mb_get_info') && null !== $charset = $env->getCharset()) { + return (string) mb_substr($item, $start, null === $length ? mb_strlen($item, $charset) - $start : $length, $charset); + } + + return (string) (null === $length ? substr($item, $start) : substr($item, $start, $length)); +} + +/** + * Returns the first element of the item. + * + * @param Twig_Environment $env + * @param mixed $item A variable + * + * @return mixed The first element of the item + */ +function twig_first(Twig_Environment $env, $item) +{ + $elements = twig_slice($env, $item, 0, 1, false); + + return is_string($elements) ? $elements : current($elements); +} + +/** + * Returns the last element of the item. + * + * @param Twig_Environment $env + * @param mixed $item A variable + * + * @return mixed The last element of the item + */ +function twig_last(Twig_Environment $env, $item) +{ + $elements = twig_slice($env, $item, -1, 1, false); + + return is_string($elements) ? $elements : current($elements); +} + +/** + * Joins the values to a string. + * + * The separator between elements is an empty string per default, you can define it with the optional parameter. + * + *
    + *  {{ [1, 2, 3]|join('|') }}
    + *  {# returns 1|2|3 #}
    + *
    + *  {{ [1, 2, 3]|join }}
    + *  {# returns 123 #}
    + * 
    + * + * @param array $value An array + * @param string $glue The separator + * + * @return string The concatenated string + */ +function twig_join_filter($value, $glue = '') +{ + if ($value instanceof Traversable) { + $value = iterator_to_array($value, false); + } + + return implode($glue, (array) $value); +} + +/** + * Splits the string into an array. + * + *
    + *  {{ "one,two,three"|split(',') }}
    + *  {# returns [one, two, three] #}
    + *
    + *  {{ "one,two,three,four,five"|split(',', 3) }}
    + *  {# returns [one, two, "three,four,five"] #}
    + *
    + *  {{ "123"|split('') }}
    + *  {# returns [1, 2, 3] #}
    + *
    + *  {{ "aabbcc"|split('', 2) }}
    + *  {# returns [aa, bb, cc] #}
    + * 
    + * + * @param Twig_Environment $env + * @param string $value A string + * @param string $delimiter The delimiter + * @param int $limit The limit + * + * @return array The split string as an array + */ +function twig_split_filter(Twig_Environment $env, $value, $delimiter, $limit = null) +{ + if (!empty($delimiter)) { + return null === $limit ? explode($delimiter, $value) : explode($delimiter, $value, $limit); + } + + if (!function_exists('mb_get_info') || null === $charset = $env->getCharset()) { + return str_split($value, null === $limit ? 1 : $limit); + } + + if ($limit <= 1) { + return preg_split('/(? + * {% for key in array|keys %} + * {# ... #} + * {% endfor %} + * + * + * @param array $array An array + * + * @return array The keys + */ +function twig_get_array_keys_filter($array) +{ + if ($array instanceof Traversable) { + while ($array instanceof IteratorAggregate) { + $array = $array->getIterator(); + } + + if ($array instanceof Iterator) { + $keys = array(); + $array->rewind(); + while ($array->valid()) { + $keys[] = $array->key(); + $array->next(); + } + + return $keys; + } + + $keys = array(); + foreach ($array as $key => $item) { + $keys[] = $key; + } + + return $keys; + } + + if (!is_array($array)) { + return array(); + } + + return array_keys($array); +} + +/** + * Reverses a variable. + * + * @param Twig_Environment $env + * @param array|Traversable|string $item An array, a Traversable instance, or a string + * @param bool $preserveKeys Whether to preserve key or not + * + * @return mixed The reversed input + */ +function twig_reverse_filter(Twig_Environment $env, $item, $preserveKeys = false) +{ + if ($item instanceof Traversable) { + return array_reverse(iterator_to_array($item), $preserveKeys); + } + + if (is_array($item)) { + return array_reverse($item, $preserveKeys); + } + + if (null !== $charset = $env->getCharset()) { + $string = (string) $item; + + if ('UTF-8' !== $charset) { + $item = twig_convert_encoding($string, 'UTF-8', $charset); + } + + preg_match_all('/./us', $item, $matches); + + $string = implode('', array_reverse($matches[0])); + + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, $charset, 'UTF-8'); + } + + return $string; + } + + return strrev((string) $item); +} + +/** + * Sorts an array. + * + * @param array|Traversable $array + * + * @return array + */ +function twig_sort_filter($array) +{ + if ($array instanceof Traversable) { + $array = iterator_to_array($array); + } elseif (!is_array($array)) { + throw new Twig_Error_Runtime(sprintf('The sort filter only works with arrays or "Traversable", got "%s".', gettype($array))); + } + + asort($array); + + return $array; +} + +/** + * @internal + */ +function twig_in_filter($value, $compare) +{ + if (is_array($compare)) { + return in_array($value, $compare, is_object($value) || is_resource($value)); + } elseif (is_string($compare) && (is_string($value) || is_int($value) || is_float($value))) { + return '' === $value || false !== strpos($compare, (string) $value); + } elseif ($compare instanceof Traversable) { + if (is_object($value) || is_resource($value)) { + foreach ($compare as $item) { + if ($item === $value) { + return true; + } + } + } else { + foreach ($compare as $item) { + if ($item == $value) { + return true; + } + } + } + + return false; + } + + return false; +} + +/** + * Returns a trimmed string. + * + * @return string + * + * @throws Twig_Error_Runtime When an invalid trimming side is used (not a string or not 'left', 'right', or 'both') + */ +function twig_trim_filter($string, $characterMask = null, $side = 'both') +{ + if (null === $characterMask) { + $characterMask = " \t\n\r\0\x0B"; + } + + switch ($side) { + case 'both': + return trim($string, $characterMask); + case 'left': + return ltrim($string, $characterMask); + case 'right': + return rtrim($string, $characterMask); + default: + throw new Twig_Error_Runtime('Trimming side must be "left", "right" or "both".'); + } +} + +/** + * Escapes a string. + * + * @param Twig_Environment $env + * @param mixed $string The value to be escaped + * @param string $strategy The escaping strategy + * @param string $charset The charset + * @param bool $autoescape Whether the function is called by the auto-escaping feature (true) or by the developer (false) + * + * @return string + */ +function twig_escape_filter(Twig_Environment $env, $string, $strategy = 'html', $charset = null, $autoescape = false) +{ + if ($autoescape && $string instanceof Twig_Markup) { + return $string; + } + + if (!is_string($string)) { + if (is_object($string) && method_exists($string, '__toString')) { + $string = (string) $string; + } elseif (in_array($strategy, array('html', 'js', 'css', 'html_attr', 'url'))) { + return $string; + } + } + + if (null === $charset) { + $charset = $env->getCharset(); + } + + switch ($strategy) { + case 'html': + // see http://php.net/htmlspecialchars + + // Using a static variable to avoid initializing the array + // each time the function is called. Moving the declaration on the + // top of the function slow downs other escaping strategies. + static $htmlspecialcharsCharsets; + + if (null === $htmlspecialcharsCharsets) { + if (defined('HHVM_VERSION')) { + $htmlspecialcharsCharsets = array('utf-8' => true, 'UTF-8' => true); + } else { + $htmlspecialcharsCharsets = array( + 'ISO-8859-1' => true, 'ISO8859-1' => true, + 'ISO-8859-15' => true, 'ISO8859-15' => true, + 'utf-8' => true, 'UTF-8' => true, + 'CP866' => true, 'IBM866' => true, '866' => true, + 'CP1251' => true, 'WINDOWS-1251' => true, 'WIN-1251' => true, + '1251' => true, + 'CP1252' => true, 'WINDOWS-1252' => true, '1252' => true, + 'KOI8-R' => true, 'KOI8-RU' => true, 'KOI8R' => true, + 'BIG5' => true, '950' => true, + 'GB2312' => true, '936' => true, + 'BIG5-HKSCS' => true, + 'SHIFT_JIS' => true, 'SJIS' => true, '932' => true, + 'EUC-JP' => true, 'EUCJP' => true, + 'ISO8859-5' => true, 'ISO-8859-5' => true, 'MACROMAN' => true, + ); + } + } + + if (isset($htmlspecialcharsCharsets[$charset])) { + return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset); + } + + if (isset($htmlspecialcharsCharsets[strtoupper($charset)])) { + // cache the lowercase variant for future iterations + $htmlspecialcharsCharsets[$charset] = true; + + return htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, $charset); + } + + $string = twig_convert_encoding($string, 'UTF-8', $charset); + $string = htmlspecialchars($string, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8'); + + return twig_convert_encoding($string, $charset, 'UTF-8'); + + case 'js': + // escape all non-alphanumeric characters + // into their \xHH or \uHHHH representations + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, 'UTF-8', $charset); + } + + if (0 == strlen($string) ? false : 1 !== preg_match('/^./su', $string)) { + throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); + } + + $string = preg_replace_callback('#[^a-zA-Z0-9,\._]#Su', '_twig_escape_js_callback', $string); + + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, $charset, 'UTF-8'); + } + + return $string; + + case 'css': + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, 'UTF-8', $charset); + } + + if (0 == strlen($string) ? false : 1 !== preg_match('/^./su', $string)) { + throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); + } + + $string = preg_replace_callback('#[^a-zA-Z0-9]#Su', '_twig_escape_css_callback', $string); + + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, $charset, 'UTF-8'); + } + + return $string; + + case 'html_attr': + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, 'UTF-8', $charset); + } + + if (0 == strlen($string) ? false : 1 !== preg_match('/^./su', $string)) { + throw new Twig_Error_Runtime('The string to escape is not a valid UTF-8 string.'); + } + + $string = preg_replace_callback('#[^a-zA-Z0-9,\.\-_]#Su', '_twig_escape_html_attr_callback', $string); + + if ('UTF-8' !== $charset) { + $string = twig_convert_encoding($string, $charset, 'UTF-8'); + } + + return $string; + + case 'url': + if (PHP_VERSION_ID < 50300) { + return str_replace('%7E', '~', rawurlencode($string)); + } + + return rawurlencode($string); + + default: + static $escapers; + + if (null === $escapers) { + $escapers = $env->getExtension('Twig_Extension_Core')->getEscapers(); + } + + if (isset($escapers[$strategy])) { + return call_user_func($escapers[$strategy], $env, $string, $charset); + } + + $validStrategies = implode(', ', array_merge(array('html', 'js', 'url', 'css', 'html_attr'), array_keys($escapers))); + + throw new Twig_Error_Runtime(sprintf('Invalid escaping strategy "%s" (valid ones: %s).', $strategy, $validStrategies)); + } +} + +/** + * @internal + */ +function twig_escape_filter_is_safe(Twig_Node $filterArgs) +{ + foreach ($filterArgs as $arg) { + if ($arg instanceof Twig_Node_Expression_Constant) { + return array($arg->getAttribute('value')); + } + + return array(); + } + + return array('html'); +} + +if (function_exists('mb_convert_encoding')) { + function twig_convert_encoding($string, $to, $from) + { + return mb_convert_encoding($string, $to, $from); + } +} elseif (function_exists('iconv')) { + function twig_convert_encoding($string, $to, $from) + { + return iconv($from, $to, $string); + } +} else { + function twig_convert_encoding($string, $to, $from) + { + throw new Twig_Error_Runtime('No suitable convert encoding function (use UTF-8 as your encoding or install the iconv or mbstring extension).'); + } +} + +function _twig_escape_js_callback($matches) +{ + $char = $matches[0]; + + // \xHH + if (!isset($char[1])) { + return '\\x'.strtoupper(substr('00'.bin2hex($char), -2)); + } + + // \uHHHH + $char = twig_convert_encoding($char, 'UTF-16BE', 'UTF-8'); + $char = strtoupper(bin2hex($char)); + + if (4 >= strlen($char)) { + return sprintf('\u%04s', $char); + } + + return sprintf('\u%04s\u%04s', substr($char, 0, -4), substr($char, -4)); +} + +function _twig_escape_css_callback($matches) +{ + $char = $matches[0]; + + // \xHH + if (!isset($char[1])) { + $hex = ltrim(strtoupper(bin2hex($char)), '0'); + if (0 === strlen($hex)) { + $hex = '0'; + } + + return '\\'.$hex.' '; + } + + // \uHHHH + $char = twig_convert_encoding($char, 'UTF-16BE', 'UTF-8'); + + return '\\'.ltrim(strtoupper(bin2hex($char)), '0').' '; +} + +/** + * This function is adapted from code coming from Zend Framework. + * + * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) + * @license http://framework.zend.com/license/new-bsd New BSD License + */ +function _twig_escape_html_attr_callback($matches) +{ + /* + * While HTML supports far more named entities, the lowest common denominator + * has become HTML5's XML Serialisation which is restricted to the those named + * entities that XML supports. Using HTML entities would result in this error: + * XML Parsing Error: undefined entity + */ + static $entityMap = array( + 34 => 'quot', /* quotation mark */ + 38 => 'amp', /* ampersand */ + 60 => 'lt', /* less-than sign */ + 62 => 'gt', /* greater-than sign */ + ); + + $chr = $matches[0]; + $ord = ord($chr); + + /* + * The following replaces characters undefined in HTML with the + * hex entity for the Unicode replacement character. + */ + if (($ord <= 0x1f && $chr != "\t" && $chr != "\n" && $chr != "\r") || ($ord >= 0x7f && $ord <= 0x9f)) { + return '�'; + } + + /* + * Check if the current character to escape has a name entity we should + * replace it with while grabbing the hex value of the character. + */ + if (strlen($chr) == 1) { + $hex = strtoupper(substr('00'.bin2hex($chr), -2)); + } else { + $chr = twig_convert_encoding($chr, 'UTF-16BE', 'UTF-8'); + $hex = strtoupper(substr('0000'.bin2hex($chr), -4)); + } + + $int = hexdec($hex); + if (array_key_exists($int, $entityMap)) { + return sprintf('&%s;', $entityMap[$int]); + } + + /* + * Per OWASP recommendations, we'll use hex entities for any other + * characters where a named entity does not exist. + */ + return sprintf('&#x%s;', $hex); +} + +// add multibyte extensions if possible +if (function_exists('mb_get_info')) { + /** + * Returns the length of a variable. + * + * @param Twig_Environment $env + * @param mixed $thing A variable + * + * @return int The length of the value + */ + function twig_length_filter(Twig_Environment $env, $thing) + { + if (is_scalar($thing)) { + return mb_strlen($thing, $env->getCharset()); + } + + if (method_exists($thing, '__toString') && !$thing instanceof \Countable) { + return mb_strlen((string) $thing, $env->getCharset()); + } + + return count($thing); + } + + /** + * Converts a string to uppercase. + * + * @param Twig_Environment $env + * @param string $string A string + * + * @return string The uppercased string + */ + function twig_upper_filter(Twig_Environment $env, $string) + { + if (null !== $charset = $env->getCharset()) { + return mb_strtoupper($string, $charset); + } + + return strtoupper($string); + } + + /** + * Converts a string to lowercase. + * + * @param Twig_Environment $env + * @param string $string A string + * + * @return string The lowercased string + */ + function twig_lower_filter(Twig_Environment $env, $string) + { + if (null !== $charset = $env->getCharset()) { + return mb_strtolower($string, $charset); + } + + return strtolower($string); + } + + /** + * Returns a titlecased string. + * + * @param Twig_Environment $env + * @param string $string A string + * + * @return string The titlecased string + */ + function twig_title_string_filter(Twig_Environment $env, $string) + { + if (null !== $charset = $env->getCharset()) { + return mb_convert_case($string, MB_CASE_TITLE, $charset); + } + + return ucwords(strtolower($string)); + } + + /** + * Returns a capitalized string. + * + * @param Twig_Environment $env + * @param string $string A string + * + * @return string The capitalized string + */ + function twig_capitalize_string_filter(Twig_Environment $env, $string) + { + if (null !== $charset = $env->getCharset()) { + return mb_strtoupper(mb_substr($string, 0, 1, $charset), $charset).mb_strtolower(mb_substr($string, 1, mb_strlen($string, $charset), $charset), $charset); + } + + return ucfirst(strtolower($string)); + } +} +// and byte fallback +else { + /** + * Returns the length of a variable. + * + * @param Twig_Environment $env + * @param mixed $thing A variable + * + * @return int The length of the value + */ + function twig_length_filter(Twig_Environment $env, $thing) + { + if (is_scalar($thing)) { + return strlen($thing); + } + + if (method_exists($thing, '__toString') && !$thing instanceof \Countable) { + return strlen((string) $thing); + } + + return count($thing); + } + + /** + * Returns a titlecased string. + * + * @param Twig_Environment $env + * @param string $string A string + * + * @return string The titlecased string + */ + function twig_title_string_filter(Twig_Environment $env, $string) + { + return ucwords(strtolower($string)); + } + + /** + * Returns a capitalized string. + * + * @param Twig_Environment $env + * @param string $string A string + * + * @return string The capitalized string + */ + function twig_capitalize_string_filter(Twig_Environment $env, $string) + { + return ucfirst(strtolower($string)); + } +} + +/** + * @internal + */ +function twig_ensure_traversable($seq) +{ + if ($seq instanceof Traversable || is_array($seq)) { + return $seq; + } + + return array(); +} + +/** + * Checks if a variable is empty. + * + *
    + * {# evaluates to true if the foo variable is null, false, or the empty string #}
    + * {% if foo is empty %}
    + *     {# ... #}
    + * {% endif %}
    + * 
    + * + * @param mixed $value A variable + * + * @return bool true if the value is empty, false otherwise + */ +function twig_test_empty($value) +{ + if ($value instanceof Countable) { + return 0 == count($value); + } + + if (method_exists($value, '__toString')) { + return '' === (string) $value; + } + + return '' === $value || false === $value || null === $value || array() === $value; +} + +/** + * Checks if a variable is traversable. + * + *
    + * {# evaluates to true if the foo variable is an array or a traversable object #}
    + * {% if foo is traversable %}
    + *     {# ... #}
    + * {% endif %}
    + * 
    + * + * @param mixed $value A variable + * + * @return bool true if the value is traversable + */ +function twig_test_iterable($value) +{ + return $value instanceof Traversable || is_array($value); +} + +/** + * Renders a template. + * + * @param Twig_Environment $env + * @param array $context + * @param string|array $template The template to render or an array of templates to try consecutively + * @param array $variables The variables to pass to the template + * @param bool $withContext + * @param bool $ignoreMissing Whether to ignore missing templates or not + * @param bool $sandboxed Whether to sandbox the template or not + * + * @return string The rendered template + */ +function twig_include(Twig_Environment $env, $context, $template, $variables = array(), $withContext = true, $ignoreMissing = false, $sandboxed = false) +{ + $alreadySandboxed = false; + $sandbox = null; + if ($withContext) { + $variables = array_merge($context, $variables); + } + + if ($isSandboxed = $sandboxed && $env->hasExtension('Twig_Extension_Sandbox')) { + $sandbox = $env->getExtension('Twig_Extension_Sandbox'); + if (!$alreadySandboxed = $sandbox->isSandboxed()) { + $sandbox->enableSandbox(); + } + } + + $result = null; + try { + $result = $env->resolveTemplate($template)->render($variables); + } catch (Twig_Error_Loader $e) { + if (!$ignoreMissing) { + if ($isSandboxed && !$alreadySandboxed) { + $sandbox->disableSandbox(); + } + + throw $e; + } + } catch (Throwable $e) { + if ($isSandboxed && !$alreadySandboxed) { + $sandbox->disableSandbox(); + } + + throw $e; + } catch (Exception $e) { + if ($isSandboxed && !$alreadySandboxed) { + $sandbox->disableSandbox(); + } + + throw $e; + } + + if ($isSandboxed && !$alreadySandboxed) { + $sandbox->disableSandbox(); + } + + return $result; +} + +/** + * Returns a template content without rendering it. + * + * @param Twig_Environment $env + * @param string $name The template name + * @param bool $ignoreMissing Whether to ignore missing templates or not + * + * @return string The template source + */ +function twig_source(Twig_Environment $env, $name, $ignoreMissing = false) +{ + $loader = $env->getLoader(); + try { + if (!$loader instanceof Twig_SourceContextLoaderInterface) { + return $loader->getSource($name); + } else { + return $loader->getSourceContext($name)->getCode(); + } + } catch (Twig_Error_Loader $e) { + if (!$ignoreMissing) { + throw $e; + } + } +} + +/** + * Provides the ability to get constants from instances as well as class/global constants. + * + * @param string $constant The name of the constant + * @param null|object $object The object to get the constant from + * + * @return string + */ +function twig_constant($constant, $object = null) +{ + if (null !== $object) { + $constant = get_class($object).'::'.$constant; + } + + return constant($constant); +} + +/** + * Checks if a constant exists. + * + * @param string $constant The name of the constant + * @param null|object $object The object to get the constant from + * + * @return bool + */ +function twig_constant_is_defined($constant, $object = null) +{ + if (null !== $object) { + $constant = get_class($object).'::'.$constant; + } + + return defined($constant); +} + +/** + * Batches item. + * + * @param array $items An array of items + * @param int $size The size of the batch + * @param mixed $fill A value used to fill missing items + * + * @return array + */ +function twig_array_batch($items, $size, $fill = null) +{ + if ($items instanceof Traversable) { + $items = iterator_to_array($items, false); + } + + $size = ceil($size); + + $result = array_chunk($items, $size, true); + + if (null !== $fill && !empty($result)) { + $last = count($result) - 1; + if ($fillCount = $size - count($result[$last])) { + $result[$last] = array_merge( + $result[$last], + array_fill(0, $fillCount, $fill) + ); + } + } + + return $result; +} diff --git a/system/vendor/twig/twig/lib/Twig/Extension/Debug.php b/system/vendor/twig/twig/lib/Twig/Extension/Debug.php new file mode 100644 index 0000000..d22a385 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Extension/Debug.php @@ -0,0 +1,65 @@ + $isDumpOutputHtmlSafe ? array('html') : array(), 'needs_context' => true, 'needs_environment' => true)), + ); + } + + public function getName() + { + return 'debug'; + } +} + +function twig_var_dump(Twig_Environment $env, $context) +{ + if (!$env->isDebug()) { + return; + } + + ob_start(); + + $count = func_num_args(); + if (2 === $count) { + $vars = array(); + foreach ($context as $key => $value) { + if (!$value instanceof Twig_Template) { + $vars[$key] = $value; + } + } + + var_dump($vars); + } else { + for ($i = 2; $i < $count; ++$i) { + var_dump(func_get_arg($i)); + } + } + + return ob_get_clean(); +} diff --git a/system/vendor/twig/twig/lib/Twig/Extension/Escaper.php b/system/vendor/twig/twig/lib/Twig/Extension/Escaper.php new file mode 100644 index 0000000..118b6b3 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Extension/Escaper.php @@ -0,0 +1,110 @@ +setDefaultStrategy($defaultStrategy); + } + + public function getTokenParsers() + { + return array(new Twig_TokenParser_AutoEscape()); + } + + public function getNodeVisitors() + { + return array(new Twig_NodeVisitor_Escaper()); + } + + public function getFilters() + { + return array( + new Twig_SimpleFilter('raw', 'twig_raw_filter', array('is_safe' => array('all'))), + ); + } + + /** + * Sets the default strategy to use when not defined by the user. + * + * The strategy can be a valid PHP callback that takes the template + * name as an argument and returns the strategy to use. + * + * @param string|false|callable $defaultStrategy An escaping strategy + */ + public function setDefaultStrategy($defaultStrategy) + { + // for BC + if (true === $defaultStrategy) { + @trigger_error('Using "true" as the default strategy is deprecated since version 1.21. Use "html" instead.', E_USER_DEPRECATED); + + $defaultStrategy = 'html'; + } + + if ('filename' === $defaultStrategy) { + @trigger_error('Using "filename" as the default strategy is deprecated since version 1.27. Use "name" instead.', E_USER_DEPRECATED); + + $defaultStrategy = 'name'; + } + + if ('name' === $defaultStrategy) { + $defaultStrategy = array('Twig_FileExtensionEscapingStrategy', 'guess'); + } + + $this->defaultStrategy = $defaultStrategy; + } + + /** + * Gets the default strategy to use when not defined by the user. + * + * @param string $name The template name + * + * @return string|false The default strategy to use for the template + */ + public function getDefaultStrategy($name) + { + // disable string callables to avoid calling a function named html or js, + // or any other upcoming escaping strategy + if (!is_string($this->defaultStrategy) && false !== $this->defaultStrategy) { + return call_user_func($this->defaultStrategy, $name); + } + + return $this->defaultStrategy; + } + + public function getName() + { + return 'escaper'; + } +} + +/** + * Marks a variable as being safe. + * + * @param string $string A PHP variable + * + * @return string + */ +function twig_raw_filter($string) +{ + return $string; +} diff --git a/system/vendor/twig/twig/lib/Twig/Extension/GlobalsInterface.php b/system/vendor/twig/twig/lib/Twig/Extension/GlobalsInterface.php new file mode 100644 index 0000000..5370b8e --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Extension/GlobalsInterface.php @@ -0,0 +1,22 @@ + + */ +interface Twig_Extension_GlobalsInterface +{ +} diff --git a/system/vendor/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php b/system/vendor/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php new file mode 100644 index 0000000..7a07582 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Extension/InitRuntimeInterface.php @@ -0,0 +1,22 @@ + + */ +interface Twig_Extension_InitRuntimeInterface +{ +} diff --git a/system/vendor/twig/twig/lib/Twig/Extension/Optimizer.php b/system/vendor/twig/twig/lib/Twig/Extension/Optimizer.php new file mode 100644 index 0000000..e100f0b --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Extension/Optimizer.php @@ -0,0 +1,33 @@ +optimizers = $optimizers; + } + + public function getNodeVisitors() + { + return array(new Twig_NodeVisitor_Optimizer($this->optimizers)); + } + + public function getName() + { + return 'optimizer'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Extension/Profiler.php b/system/vendor/twig/twig/lib/Twig/Extension/Profiler.php new file mode 100644 index 0000000..1d874ef --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Extension/Profiler.php @@ -0,0 +1,46 @@ +actives[] = $profile; + } + + public function enter(Twig_Profiler_Profile $profile) + { + $this->actives[0]->addProfile($profile); + array_unshift($this->actives, $profile); + } + + public function leave(Twig_Profiler_Profile $profile) + { + $profile->leave(); + array_shift($this->actives); + + if (1 === count($this->actives)) { + $this->actives[0]->leave(); + } + } + + public function getNodeVisitors() + { + return array(new Twig_Profiler_NodeVisitor_Profiler(get_class($this))); + } + + public function getName() + { + return 'profiler'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Extension/Sandbox.php b/system/vendor/twig/twig/lib/Twig/Extension/Sandbox.php new file mode 100644 index 0000000..1469a1e --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Extension/Sandbox.php @@ -0,0 +1,101 @@ +policy = $policy; + $this->sandboxedGlobally = $sandboxed; + } + + public function getTokenParsers() + { + return array(new Twig_TokenParser_Sandbox()); + } + + public function getNodeVisitors() + { + return array(new Twig_NodeVisitor_Sandbox()); + } + + public function enableSandbox() + { + $this->sandboxed = true; + } + + public function disableSandbox() + { + $this->sandboxed = false; + } + + public function isSandboxed() + { + return $this->sandboxedGlobally || $this->sandboxed; + } + + public function isSandboxedGlobally() + { + return $this->sandboxedGlobally; + } + + public function setSecurityPolicy(Twig_Sandbox_SecurityPolicyInterface $policy) + { + $this->policy = $policy; + } + + public function getSecurityPolicy() + { + return $this->policy; + } + + public function checkSecurity($tags, $filters, $functions) + { + if ($this->isSandboxed()) { + $this->policy->checkSecurity($tags, $filters, $functions); + } + } + + public function checkMethodAllowed($obj, $method) + { + if ($this->isSandboxed()) { + $this->policy->checkMethodAllowed($obj, $method); + } + } + + public function checkPropertyAllowed($obj, $method) + { + if ($this->isSandboxed()) { + $this->policy->checkPropertyAllowed($obj, $method); + } + } + + public function ensureToStringAllowed($obj) + { + if ($this->isSandboxed() && is_object($obj)) { + $this->policy->checkMethodAllowed($obj, '__toString'); + } + + return $obj; + } + + public function getName() + { + return 'sandbox'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Extension/Staging.php b/system/vendor/twig/twig/lib/Twig/Extension/Staging.php new file mode 100644 index 0000000..34b71d2 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Extension/Staging.php @@ -0,0 +1,110 @@ + + * + * @internal + */ +class Twig_Extension_Staging extends Twig_Extension +{ + protected $functions = array(); + protected $filters = array(); + protected $visitors = array(); + protected $tokenParsers = array(); + protected $globals = array(); + protected $tests = array(); + + public function addFunction($name, $function) + { + if (isset($this->functions[$name])) { + @trigger_error(sprintf('Overriding function "%s" that is already registered is deprecated since version 1.30 and won\'t be possible anymore in 2.0.', $name), E_USER_DEPRECATED); + } + + $this->functions[$name] = $function; + } + + public function getFunctions() + { + return $this->functions; + } + + public function addFilter($name, $filter) + { + if (isset($this->filters[$name])) { + @trigger_error(sprintf('Overriding filter "%s" that is already registered is deprecated since version 1.30 and won\'t be possible anymore in 2.0.', $name), E_USER_DEPRECATED); + } + + $this->filters[$name] = $filter; + } + + public function getFilters() + { + return $this->filters; + } + + public function addNodeVisitor(Twig_NodeVisitorInterface $visitor) + { + $this->visitors[] = $visitor; + } + + public function getNodeVisitors() + { + return $this->visitors; + } + + public function addTokenParser(Twig_TokenParserInterface $parser) + { + if (isset($this->tokenParsers[$parser->getTag()])) { + @trigger_error(sprintf('Overriding tag "%s" that is already registered is deprecated since version 1.30 and won\'t be possible anymore in 2.0.', $parser->getTag()), E_USER_DEPRECATED); + } + + $this->tokenParsers[$parser->getTag()] = $parser; + } + + public function getTokenParsers() + { + return $this->tokenParsers; + } + + public function addGlobal($name, $value) + { + $this->globals[$name] = $value; + } + + public function getGlobals() + { + return $this->globals; + } + + public function addTest($name, $test) + { + if (isset($this->tests[$name])) { + @trigger_error(sprintf('Overriding test "%s" that is already registered is deprecated since version 1.30 and won\'t be possible anymore in 2.0.', $name), E_USER_DEPRECATED); + } + + $this->tests[$name] = $test; + } + + public function getTests() + { + return $this->tests; + } + + public function getName() + { + return 'staging'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Extension/StringLoader.php b/system/vendor/twig/twig/lib/Twig/Extension/StringLoader.php new file mode 100644 index 0000000..c415173 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Extension/StringLoader.php @@ -0,0 +1,45 @@ + true)), + ); + } + + public function getName() + { + return 'string_loader'; + } +} + +/** + * Loads a template from a string. + * + *
    + * {{ include(template_from_string("Hello {{ name }}")) }}
    + * 
    + * + * @param Twig_Environment $env A Twig_Environment instance + * @param string $template A template as a string or object implementing __toString() + * + * @return Twig_Template + */ +function twig_template_from_string(Twig_Environment $env, $template) +{ + return $env->createTemplate((string) $template); +} diff --git a/system/vendor/twig/twig/lib/Twig/ExtensionInterface.php b/system/vendor/twig/twig/lib/Twig/ExtensionInterface.php new file mode 100644 index 0000000..c5214bd --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/ExtensionInterface.php @@ -0,0 +1,87 @@ + + */ +interface Twig_ExtensionInterface +{ + /** + * Initializes the runtime environment. + * + * This is where you can load some file that contains filter functions for instance. + * + * @deprecated since 1.23 (to be removed in 2.0), implement Twig_Extension_InitRuntimeInterface instead + */ + public function initRuntime(Twig_Environment $environment); + + /** + * Returns the token parser instances to add to the existing list. + * + * @return Twig_TokenParserInterface[] + */ + public function getTokenParsers(); + + /** + * Returns the node visitor instances to add to the existing list. + * + * @return Twig_NodeVisitorInterface[] + */ + public function getNodeVisitors(); + + /** + * Returns a list of filters to add to the existing list. + * + * @return Twig_SimpleFilter[] + */ + public function getFilters(); + + /** + * Returns a list of tests to add to the existing list. + * + * @return Twig_SimpleTest[] + */ + public function getTests(); + + /** + * Returns a list of functions to add to the existing list. + * + * @return Twig_SimpleFunction[] + */ + public function getFunctions(); + + /** + * Returns a list of operators to add to the existing list. + * + * @return array First array of unary operators, second array of binary operators + */ + public function getOperators(); + + /** + * Returns a list of global variables to add to the existing list. + * + * @return array An array of global variables + * + * @deprecated since 1.23 (to be removed in 2.0), implement Twig_Extension_GlobalsInterface instead + */ + public function getGlobals(); + + /** + * Returns the name of the extension. + * + * @return string The extension name + * + * @deprecated since 1.26 (to be removed in 2.0), not used anymore internally + */ + public function getName(); +} diff --git a/system/vendor/twig/twig/lib/Twig/FactoryRuntimeLoader.php b/system/vendor/twig/twig/lib/Twig/FactoryRuntimeLoader.php new file mode 100644 index 0000000..f428047 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/FactoryRuntimeLoader.php @@ -0,0 +1,37 @@ + + */ +class Twig_FactoryRuntimeLoader implements Twig_RuntimeLoaderInterface +{ + private $map; + + /** + * @param array $map An array where keys are class names and values factory callables + */ + public function __construct($map = array()) + { + $this->map = $map; + } + + public function load($class) + { + if (isset($this->map[$class])) { + $runtimeFactory = $this->map[$class]; + + return $runtimeFactory(); + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php b/system/vendor/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php new file mode 100644 index 0000000..4718372 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/FileExtensionEscapingStrategy.php @@ -0,0 +1,58 @@ + + */ +class Twig_FileExtensionEscapingStrategy +{ + /** + * Guesses the best autoescaping strategy based on the file name. + * + * @param string $name The template name + * + * @return string|false The escaping strategy name to use or false to disable + */ + public static function guess($name) + { + if (in_array(substr($name, -1), array('/', '\\'))) { + return 'html'; // return html for directories + } + + if ('.twig' === substr($name, -5)) { + $name = substr($name, 0, -5); + } + + $extension = pathinfo($name, PATHINFO_EXTENSION); + + switch ($extension) { + case 'js': + return 'js'; + + case 'css': + return 'css'; + + case 'txt': + return false; + + default: + return 'html'; + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Filter.php b/system/vendor/twig/twig/lib/Twig/Filter.php new file mode 100644 index 0000000..893d75d --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Filter.php @@ -0,0 +1,84 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +abstract class Twig_Filter implements Twig_FilterInterface, Twig_FilterCallableInterface +{ + protected $options; + protected $arguments = array(); + + public function __construct(array $options = array()) + { + $this->options = array_merge(array( + 'needs_environment' => false, + 'needs_context' => false, + 'pre_escape' => null, + 'preserves_safety' => null, + 'callable' => null, + ), $options); + } + + public function setArguments($arguments) + { + $this->arguments = $arguments; + } + + public function getArguments() + { + return $this->arguments; + } + + public function needsEnvironment() + { + return $this->options['needs_environment']; + } + + public function needsContext() + { + return $this->options['needs_context']; + } + + public function getSafe(Twig_Node $filterArgs) + { + if (isset($this->options['is_safe'])) { + return $this->options['is_safe']; + } + + if (isset($this->options['is_safe_callback'])) { + return call_user_func($this->options['is_safe_callback'], $filterArgs); + } + } + + public function getPreservesSafety() + { + return $this->options['preserves_safety']; + } + + public function getPreEscape() + { + return $this->options['pre_escape']; + } + + public function getCallable() + { + return $this->options['callable']; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Filter/Function.php b/system/vendor/twig/twig/lib/Twig/Filter/Function.php new file mode 100644 index 0000000..71b1655 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Filter/Function.php @@ -0,0 +1,40 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +class Twig_Filter_Function extends Twig_Filter +{ + protected $function; + + public function __construct($function, array $options = array()) + { + $options['callable'] = $function; + + parent::__construct($options); + + $this->function = $function; + } + + public function compile() + { + return $this->function; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Filter/Method.php b/system/vendor/twig/twig/lib/Twig/Filter/Method.php new file mode 100644 index 0000000..1b75676 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Filter/Method.php @@ -0,0 +1,42 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +class Twig_Filter_Method extends Twig_Filter +{ + protected $extension; + protected $method; + + public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array()) + { + $options['callable'] = array($extension, $method); + + parent::__construct($options); + + $this->extension = $extension; + $this->method = $method; + } + + public function compile() + { + return sprintf('$this->env->getExtension(\'%s\')->%s', get_class($this->extension), $this->method); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Filter/Node.php b/system/vendor/twig/twig/lib/Twig/Filter/Node.php new file mode 100644 index 0000000..3e6b12e --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Filter/Node.php @@ -0,0 +1,42 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +class Twig_Filter_Node extends Twig_Filter +{ + protected $class; + + public function __construct($class, array $options = array()) + { + parent::__construct($options); + + $this->class = $class; + } + + public function getClass() + { + return $this->class; + } + + public function compile() + { + } +} diff --git a/system/vendor/twig/twig/lib/Twig/FilterCallableInterface.php b/system/vendor/twig/twig/lib/Twig/FilterCallableInterface.php new file mode 100644 index 0000000..21b028c --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/FilterCallableInterface.php @@ -0,0 +1,24 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +interface Twig_FilterCallableInterface +{ + public function getCallable(); +} diff --git a/system/vendor/twig/twig/lib/Twig/FilterInterface.php b/system/vendor/twig/twig/lib/Twig/FilterInterface.php new file mode 100644 index 0000000..9d7e9ab --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/FilterInterface.php @@ -0,0 +1,43 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +interface Twig_FilterInterface +{ + /** + * Compiles a filter. + * + * @return string The PHP code for the filter + */ + public function compile(); + + public function needsEnvironment(); + + public function needsContext(); + + public function getSafe(Twig_Node $filterArgs); + + public function getPreservesSafety(); + + public function getPreEscape(); + + public function setArguments($arguments); + + public function getArguments(); +} diff --git a/system/vendor/twig/twig/lib/Twig/Function.php b/system/vendor/twig/twig/lib/Twig/Function.php new file mode 100644 index 0000000..9dc16e9 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Function.php @@ -0,0 +1,74 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +abstract class Twig_Function implements Twig_FunctionInterface, Twig_FunctionCallableInterface +{ + protected $options; + protected $arguments = array(); + + public function __construct(array $options = array()) + { + $this->options = array_merge(array( + 'needs_environment' => false, + 'needs_context' => false, + 'callable' => null, + ), $options); + } + + public function setArguments($arguments) + { + $this->arguments = $arguments; + } + + public function getArguments() + { + return $this->arguments; + } + + public function needsEnvironment() + { + return $this->options['needs_environment']; + } + + public function needsContext() + { + return $this->options['needs_context']; + } + + public function getSafe(Twig_Node $functionArgs) + { + if (isset($this->options['is_safe'])) { + return $this->options['is_safe']; + } + + if (isset($this->options['is_safe_callback'])) { + return call_user_func($this->options['is_safe_callback'], $functionArgs); + } + + return array(); + } + + public function getCallable() + { + return $this->options['callable']; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Function/Function.php b/system/vendor/twig/twig/lib/Twig/Function/Function.php new file mode 100644 index 0000000..97c0eb7 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Function/Function.php @@ -0,0 +1,41 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +class Twig_Function_Function extends Twig_Function +{ + protected $function; + + public function __construct($function, array $options = array()) + { + $options['callable'] = $function; + + parent::__construct($options); + + $this->function = $function; + } + + public function compile() + { + return $this->function; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Function/Method.php b/system/vendor/twig/twig/lib/Twig/Function/Method.php new file mode 100644 index 0000000..4299e11 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Function/Method.php @@ -0,0 +1,43 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +class Twig_Function_Method extends Twig_Function +{ + protected $extension; + protected $method; + + public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array()) + { + $options['callable'] = array($extension, $method); + + parent::__construct($options); + + $this->extension = $extension; + $this->method = $method; + } + + public function compile() + { + return sprintf('$this->env->getExtension(\'%s\')->%s', get_class($this->extension), $this->method); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Function/Node.php b/system/vendor/twig/twig/lib/Twig/Function/Node.php new file mode 100644 index 0000000..0adc5d9 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Function/Node.php @@ -0,0 +1,42 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +class Twig_Function_Node extends Twig_Function +{ + protected $class; + + public function __construct($class, array $options = array()) + { + parent::__construct($options); + + $this->class = $class; + } + + public function getClass() + { + return $this->class; + } + + public function compile() + { + } +} diff --git a/system/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php b/system/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php new file mode 100644 index 0000000..d23d691 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/FunctionCallableInterface.php @@ -0,0 +1,24 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +interface Twig_FunctionCallableInterface +{ + public function getCallable(); +} diff --git a/system/vendor/twig/twig/lib/Twig/FunctionInterface.php b/system/vendor/twig/twig/lib/Twig/FunctionInterface.php new file mode 100644 index 0000000..00d4f95 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/FunctionInterface.php @@ -0,0 +1,40 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +interface Twig_FunctionInterface +{ + /** + * Compiles a function. + * + * @return string The PHP code for the function + */ + public function compile(); + + public function needsEnvironment(); + + public function needsContext(); + + public function getSafe(Twig_Node $filterArgs); + + public function setArguments($arguments); + + public function getArguments(); +} diff --git a/system/vendor/twig/twig/lib/Twig/Lexer.php b/system/vendor/twig/twig/lib/Twig/Lexer.php new file mode 100644 index 0000000..834b54f --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Lexer.php @@ -0,0 +1,422 @@ + + */ +class Twig_Lexer implements Twig_LexerInterface +{ + protected $tokens; + protected $code; + protected $cursor; + protected $lineno; + protected $end; + protected $state; + protected $states; + protected $brackets; + protected $env; + // to be renamed to $name in 2.0 (where it is private) + protected $filename; + protected $options; + protected $regexes; + protected $position; + protected $positions; + protected $currentVarBlockLine; + + private $source; + + const STATE_DATA = 0; + const STATE_BLOCK = 1; + const STATE_VAR = 2; + const STATE_STRING = 3; + const STATE_INTERPOLATION = 4; + + const REGEX_NAME = '/[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/A'; + const REGEX_NUMBER = '/[0-9]+(?:\.[0-9]+)?/A'; + const REGEX_STRING = '/"([^#"\\\\]*(?:\\\\.[^#"\\\\]*)*)"|\'([^\'\\\\]*(?:\\\\.[^\'\\\\]*)*)\'/As'; + const REGEX_DQ_STRING_DELIM = '/"/A'; + const REGEX_DQ_STRING_PART = '/[^#"\\\\]*(?:(?:\\\\.|#(?!\{))[^#"\\\\]*)*/As'; + const PUNCTUATION = '()[]{}?:.,|'; + + public function __construct(Twig_Environment $env, array $options = array()) + { + $this->env = $env; + + $this->options = array_merge(array( + 'tag_comment' => array('{#', '#}'), + 'tag_block' => array('{%', '%}'), + 'tag_variable' => array('{{', '}}'), + 'whitespace_trim' => '-', + 'interpolation' => array('#{', '}'), + ), $options); + + $this->regexes = array( + 'lex_var' => '/\s*'.preg_quote($this->options['whitespace_trim'].$this->options['tag_variable'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_variable'][1], '/').'/A', + 'lex_block' => '/\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')\n?/A', + 'lex_raw_data' => '/('.preg_quote($this->options['tag_block'][0].$this->options['whitespace_trim'], '/').'|'.preg_quote($this->options['tag_block'][0], '/').')\s*(?:end%s)\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')/s', + 'operator' => $this->getOperatorRegex(), + 'lex_comment' => '/(?:'.preg_quote($this->options['whitespace_trim'], '/').preg_quote($this->options['tag_comment'][1], '/').'\s*|'.preg_quote($this->options['tag_comment'][1], '/').')\n?/s', + 'lex_block_raw' => '/\s*(raw|verbatim)\s*(?:'.preg_quote($this->options['whitespace_trim'].$this->options['tag_block'][1], '/').'\s*|\s*'.preg_quote($this->options['tag_block'][1], '/').')/As', + 'lex_block_line' => '/\s*line\s+(\d+)\s*'.preg_quote($this->options['tag_block'][1], '/').'/As', + 'lex_tokens_start' => '/('.preg_quote($this->options['tag_variable'][0], '/').'|'.preg_quote($this->options['tag_block'][0], '/').'|'.preg_quote($this->options['tag_comment'][0], '/').')('.preg_quote($this->options['whitespace_trim'], '/').')?/s', + 'interpolation_start' => '/'.preg_quote($this->options['interpolation'][0], '/').'\s*/A', + 'interpolation_end' => '/\s*'.preg_quote($this->options['interpolation'][1], '/').'/A', + ); + } + + public function tokenize($code, $name = null) + { + if (!$code instanceof Twig_Source) { + @trigger_error(sprintf('Passing a string as the $code argument of %s() is deprecated since version 1.27 and will be removed in 2.0. Pass a Twig_Source instance instead.', __METHOD__), E_USER_DEPRECATED); + $this->source = new Twig_Source($code, $name); + } else { + $this->source = $code; + } + + if (((int) ini_get('mbstring.func_overload')) & 2) { + @trigger_error('Support for having "mbstring.func_overload" different from 0 is deprecated version 1.29 and will be removed in 2.0.', E_USER_DEPRECATED); + } + + if (function_exists('mb_internal_encoding') && ((int) ini_get('mbstring.func_overload')) & 2) { + $mbEncoding = mb_internal_encoding(); + mb_internal_encoding('ASCII'); + } else { + $mbEncoding = null; + } + + $this->code = str_replace(array("\r\n", "\r"), "\n", $this->source->getCode()); + $this->filename = $this->source->getName(); + $this->cursor = 0; + $this->lineno = 1; + $this->end = strlen($this->code); + $this->tokens = array(); + $this->state = self::STATE_DATA; + $this->states = array(); + $this->brackets = array(); + $this->position = -1; + + // find all token starts in one go + preg_match_all($this->regexes['lex_tokens_start'], $this->code, $matches, PREG_OFFSET_CAPTURE); + $this->positions = $matches; + + while ($this->cursor < $this->end) { + // dispatch to the lexing functions depending + // on the current state + switch ($this->state) { + case self::STATE_DATA: + $this->lexData(); + break; + + case self::STATE_BLOCK: + $this->lexBlock(); + break; + + case self::STATE_VAR: + $this->lexVar(); + break; + + case self::STATE_STRING: + $this->lexString(); + break; + + case self::STATE_INTERPOLATION: + $this->lexInterpolation(); + break; + } + } + + $this->pushToken(Twig_Token::EOF_TYPE); + + if (!empty($this->brackets)) { + list($expect, $lineno) = array_pop($this->brackets); + throw new Twig_Error_Syntax(sprintf('Unclosed "%s".', $expect), $lineno, $this->source); + } + + if ($mbEncoding) { + mb_internal_encoding($mbEncoding); + } + + return new Twig_TokenStream($this->tokens, $this->source); + } + + protected function lexData() + { + // if no matches are left we return the rest of the template as simple text token + if ($this->position == count($this->positions[0]) - 1) { + $this->pushToken(Twig_Token::TEXT_TYPE, substr($this->code, $this->cursor)); + $this->cursor = $this->end; + + return; + } + + // Find the first token after the current cursor + $position = $this->positions[0][++$this->position]; + while ($position[1] < $this->cursor) { + if ($this->position == count($this->positions[0]) - 1) { + return; + } + $position = $this->positions[0][++$this->position]; + } + + // push the template text first + $text = $textContent = substr($this->code, $this->cursor, $position[1] - $this->cursor); + if (isset($this->positions[2][$this->position][0])) { + $text = rtrim($text); + } + $this->pushToken(Twig_Token::TEXT_TYPE, $text); + $this->moveCursor($textContent.$position[0]); + + switch ($this->positions[1][$this->position][0]) { + case $this->options['tag_comment'][0]: + $this->lexComment(); + break; + + case $this->options['tag_block'][0]: + // raw data? + if (preg_match($this->regexes['lex_block_raw'], $this->code, $match, null, $this->cursor)) { + $this->moveCursor($match[0]); + $this->lexRawData($match[1]); + // {% line \d+ %} + } elseif (preg_match($this->regexes['lex_block_line'], $this->code, $match, null, $this->cursor)) { + $this->moveCursor($match[0]); + $this->lineno = (int) $match[1]; + } else { + $this->pushToken(Twig_Token::BLOCK_START_TYPE); + $this->pushState(self::STATE_BLOCK); + $this->currentVarBlockLine = $this->lineno; + } + break; + + case $this->options['tag_variable'][0]: + $this->pushToken(Twig_Token::VAR_START_TYPE); + $this->pushState(self::STATE_VAR); + $this->currentVarBlockLine = $this->lineno; + break; + } + } + + protected function lexBlock() + { + if (empty($this->brackets) && preg_match($this->regexes['lex_block'], $this->code, $match, null, $this->cursor)) { + $this->pushToken(Twig_Token::BLOCK_END_TYPE); + $this->moveCursor($match[0]); + $this->popState(); + } else { + $this->lexExpression(); + } + } + + protected function lexVar() + { + if (empty($this->brackets) && preg_match($this->regexes['lex_var'], $this->code, $match, null, $this->cursor)) { + $this->pushToken(Twig_Token::VAR_END_TYPE); + $this->moveCursor($match[0]); + $this->popState(); + } else { + $this->lexExpression(); + } + } + + protected function lexExpression() + { + // whitespace + if (preg_match('/\s+/A', $this->code, $match, null, $this->cursor)) { + $this->moveCursor($match[0]); + + if ($this->cursor >= $this->end) { + throw new Twig_Error_Syntax(sprintf('Unclosed "%s".', $this->state === self::STATE_BLOCK ? 'block' : 'variable'), $this->currentVarBlockLine, $this->source); + } + } + + // operators + if (preg_match($this->regexes['operator'], $this->code, $match, null, $this->cursor)) { + $this->pushToken(Twig_Token::OPERATOR_TYPE, preg_replace('/\s+/', ' ', $match[0])); + $this->moveCursor($match[0]); + } + // names + elseif (preg_match(self::REGEX_NAME, $this->code, $match, null, $this->cursor)) { + $this->pushToken(Twig_Token::NAME_TYPE, $match[0]); + $this->moveCursor($match[0]); + } + // numbers + elseif (preg_match(self::REGEX_NUMBER, $this->code, $match, null, $this->cursor)) { + $number = (float) $match[0]; // floats + if (ctype_digit($match[0]) && $number <= PHP_INT_MAX) { + $number = (int) $match[0]; // integers lower than the maximum + } + $this->pushToken(Twig_Token::NUMBER_TYPE, $number); + $this->moveCursor($match[0]); + } + // punctuation + elseif (false !== strpos(self::PUNCTUATION, $this->code[$this->cursor])) { + // opening bracket + if (false !== strpos('([{', $this->code[$this->cursor])) { + $this->brackets[] = array($this->code[$this->cursor], $this->lineno); + } + // closing bracket + elseif (false !== strpos(')]}', $this->code[$this->cursor])) { + if (empty($this->brackets)) { + throw new Twig_Error_Syntax(sprintf('Unexpected "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); + } + + list($expect, $lineno) = array_pop($this->brackets); + if ($this->code[$this->cursor] != strtr($expect, '([{', ')]}')) { + throw new Twig_Error_Syntax(sprintf('Unclosed "%s".', $expect), $lineno, $this->source); + } + } + + $this->pushToken(Twig_Token::PUNCTUATION_TYPE, $this->code[$this->cursor]); + ++$this->cursor; + } + // strings + elseif (preg_match(self::REGEX_STRING, $this->code, $match, null, $this->cursor)) { + $this->pushToken(Twig_Token::STRING_TYPE, stripcslashes(substr($match[0], 1, -1))); + $this->moveCursor($match[0]); + } + // opening double quoted string + elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, null, $this->cursor)) { + $this->brackets[] = array('"', $this->lineno); + $this->pushState(self::STATE_STRING); + $this->moveCursor($match[0]); + } + // unlexable + else { + throw new Twig_Error_Syntax(sprintf('Unexpected character "%s".', $this->code[$this->cursor]), $this->lineno, $this->source); + } + } + + protected function lexRawData($tag) + { + if ('raw' === $tag) { + @trigger_error(sprintf('Twig Tag "raw" is deprecated since version 1.21. Use "verbatim" instead in %s at line %d.', $this->filename, $this->lineno), E_USER_DEPRECATED); + } + + if (!preg_match(str_replace('%s', $tag, $this->regexes['lex_raw_data']), $this->code, $match, PREG_OFFSET_CAPTURE, $this->cursor)) { + throw new Twig_Error_Syntax(sprintf('Unexpected end of file: Unclosed "%s" block.', $tag), $this->lineno, $this->source); + } + + $text = substr($this->code, $this->cursor, $match[0][1] - $this->cursor); + $this->moveCursor($text.$match[0][0]); + + if (false !== strpos($match[1][0], $this->options['whitespace_trim'])) { + $text = rtrim($text); + } + + $this->pushToken(Twig_Token::TEXT_TYPE, $text); + } + + protected function lexComment() + { + if (!preg_match($this->regexes['lex_comment'], $this->code, $match, PREG_OFFSET_CAPTURE, $this->cursor)) { + throw new Twig_Error_Syntax('Unclosed comment.', $this->lineno, $this->source); + } + + $this->moveCursor(substr($this->code, $this->cursor, $match[0][1] - $this->cursor).$match[0][0]); + } + + protected function lexString() + { + if (preg_match($this->regexes['interpolation_start'], $this->code, $match, null, $this->cursor)) { + $this->brackets[] = array($this->options['interpolation'][0], $this->lineno); + $this->pushToken(Twig_Token::INTERPOLATION_START_TYPE); + $this->moveCursor($match[0]); + $this->pushState(self::STATE_INTERPOLATION); + } elseif (preg_match(self::REGEX_DQ_STRING_PART, $this->code, $match, null, $this->cursor) && strlen($match[0]) > 0) { + $this->pushToken(Twig_Token::STRING_TYPE, stripcslashes($match[0])); + $this->moveCursor($match[0]); + } elseif (preg_match(self::REGEX_DQ_STRING_DELIM, $this->code, $match, null, $this->cursor)) { + list($expect, $lineno) = array_pop($this->brackets); + if ($this->code[$this->cursor] != '"') { + throw new Twig_Error_Syntax(sprintf('Unclosed "%s".', $expect), $lineno, $this->source); + } + + $this->popState(); + ++$this->cursor; + } + } + + protected function lexInterpolation() + { + $bracket = end($this->brackets); + if ($this->options['interpolation'][0] === $bracket[0] && preg_match($this->regexes['interpolation_end'], $this->code, $match, null, $this->cursor)) { + array_pop($this->brackets); + $this->pushToken(Twig_Token::INTERPOLATION_END_TYPE); + $this->moveCursor($match[0]); + $this->popState(); + } else { + $this->lexExpression(); + } + } + + protected function pushToken($type, $value = '') + { + // do not push empty text tokens + if (Twig_Token::TEXT_TYPE === $type && '' === $value) { + return; + } + + $this->tokens[] = new Twig_Token($type, $value, $this->lineno); + } + + protected function moveCursor($text) + { + $this->cursor += strlen($text); + $this->lineno += substr_count($text, "\n"); + } + + protected function getOperatorRegex() + { + $operators = array_merge( + array('='), + array_keys($this->env->getUnaryOperators()), + array_keys($this->env->getBinaryOperators()) + ); + + $operators = array_combine($operators, array_map('strlen', $operators)); + arsort($operators); + + $regex = array(); + foreach ($operators as $operator => $length) { + // an operator that ends with a character must be followed by + // a whitespace or a parenthesis + if (ctype_alpha($operator[$length - 1])) { + $r = preg_quote($operator, '/').'(?=[\s()])'; + } else { + $r = preg_quote($operator, '/'); + } + + // an operator with a space can be any amount of whitespaces + $r = preg_replace('/\s+/', '\s+', $r); + + $regex[] = $r; + } + + return '/'.implode('|', $regex).'/A'; + } + + protected function pushState($state) + { + $this->states[] = $this->state; + $this->state = $state; + } + + protected function popState() + { + if (0 === count($this->states)) { + throw new Exception('Cannot pop state without a previous state.'); + } + + $this->state = array_pop($this->states); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/LexerInterface.php b/system/vendor/twig/twig/lib/Twig/LexerInterface.php new file mode 100644 index 0000000..c10bbfe --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/LexerInterface.php @@ -0,0 +1,32 @@ + + * + * @deprecated since 1.12 (to be removed in 3.0) + */ +interface Twig_LexerInterface +{ + /** + * Tokenizes a source code. + * + * @param string|Twig_Source $code The source code + * @param string $name A unique identifier for the source code + * + * @return Twig_TokenStream + * + * @throws Twig_Error_Syntax When the code is syntactically wrong + */ + public function tokenize($code, $name = null); +} diff --git a/system/vendor/twig/twig/lib/Twig/Loader/Array.php b/system/vendor/twig/twig/lib/Twig/Loader/Array.php new file mode 100644 index 0000000..430efd0 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Loader/Array.php @@ -0,0 +1,95 @@ + + */ +class Twig_Loader_Array implements Twig_LoaderInterface, Twig_ExistsLoaderInterface, Twig_SourceContextLoaderInterface +{ + protected $templates = array(); + + /** + * @param array $templates An array of templates (keys are the names, and values are the source code) + */ + public function __construct(array $templates = array()) + { + $this->templates = $templates; + } + + /** + * Adds or overrides a template. + * + * @param string $name The template name + * @param string $template The template source + */ + public function setTemplate($name, $template) + { + $this->templates[(string) $name] = $template; + } + + public function getSource($name) + { + @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', get_class($this)), E_USER_DEPRECATED); + + $name = (string) $name; + if (!isset($this->templates[$name])) { + throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name)); + } + + return $this->templates[$name]; + } + + public function getSourceContext($name) + { + $name = (string) $name; + if (!isset($this->templates[$name])) { + throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name)); + } + + return new Twig_Source($this->templates[$name], $name); + } + + public function exists($name) + { + return isset($this->templates[(string) $name]); + } + + public function getCacheKey($name) + { + $name = (string) $name; + if (!isset($this->templates[$name])) { + throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name)); + } + + return $this->templates[$name]; + } + + public function isFresh($name, $time) + { + $name = (string) $name; + if (!isset($this->templates[$name])) { + throw new Twig_Error_Loader(sprintf('Template "%s" is not defined.', $name)); + } + + return true; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Loader/Chain.php b/system/vendor/twig/twig/lib/Twig/Loader/Chain.php new file mode 100644 index 0000000..ffa892b --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Loader/Chain.php @@ -0,0 +1,149 @@ + + */ +class Twig_Loader_Chain implements Twig_LoaderInterface, Twig_ExistsLoaderInterface, Twig_SourceContextLoaderInterface +{ + private $hasSourceCache = array(); + protected $loaders = array(); + + /** + * @param Twig_LoaderInterface[] $loaders + */ + public function __construct(array $loaders = array()) + { + foreach ($loaders as $loader) { + $this->addLoader($loader); + } + } + + public function addLoader(Twig_LoaderInterface $loader) + { + $this->loaders[] = $loader; + $this->hasSourceCache = array(); + } + + public function getSource($name) + { + @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', get_class($this)), E_USER_DEPRECATED); + + $exceptions = array(); + foreach ($this->loaders as $loader) { + if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) { + continue; + } + + try { + return $loader->getSource($name); + } catch (Twig_Error_Loader $e) { + $exceptions[] = $e->getMessage(); + } + } + + throw new Twig_Error_Loader(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); + } + + public function getSourceContext($name) + { + $exceptions = array(); + foreach ($this->loaders as $loader) { + if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) { + continue; + } + + try { + if ($loader instanceof Twig_SourceContextLoaderInterface) { + return $loader->getSourceContext($name); + } + + return new Twig_Source($loader->getSource($name), $name); + } catch (Twig_Error_Loader $e) { + $exceptions[] = $e->getMessage(); + } + } + + throw new Twig_Error_Loader(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); + } + + public function exists($name) + { + $name = (string) $name; + + if (isset($this->hasSourceCache[$name])) { + return $this->hasSourceCache[$name]; + } + + foreach ($this->loaders as $loader) { + if ($loader instanceof Twig_ExistsLoaderInterface) { + if ($loader->exists($name)) { + return $this->hasSourceCache[$name] = true; + } + + continue; + } + + try { + if ($loader instanceof Twig_SourceContextLoaderInterface) { + $loader->getSourceContext($name); + } else { + $loader->getSource($name); + } + + return $this->hasSourceCache[$name] = true; + } catch (Twig_Error_Loader $e) { + } + } + + return $this->hasSourceCache[$name] = false; + } + + public function getCacheKey($name) + { + $exceptions = array(); + foreach ($this->loaders as $loader) { + if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) { + continue; + } + + try { + return $loader->getCacheKey($name); + } catch (Twig_Error_Loader $e) { + $exceptions[] = get_class($loader).': '.$e->getMessage(); + } + } + + throw new Twig_Error_Loader(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); + } + + public function isFresh($name, $time) + { + $exceptions = array(); + foreach ($this->loaders as $loader) { + if ($loader instanceof Twig_ExistsLoaderInterface && !$loader->exists($name)) { + continue; + } + + try { + return $loader->isFresh($name, $time); + } catch (Twig_Error_Loader $e) { + $exceptions[] = get_class($loader).': '.$e->getMessage(); + } + } + + throw new Twig_Error_Loader(sprintf('Template "%s" is not defined%s.', $name, $exceptions ? ' ('.implode(', ', $exceptions).')' : '')); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Loader/Filesystem.php b/system/vendor/twig/twig/lib/Twig/Loader/Filesystem.php new file mode 100644 index 0000000..25be4e2 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Loader/Filesystem.php @@ -0,0 +1,288 @@ + + */ +class Twig_Loader_Filesystem implements Twig_LoaderInterface, Twig_ExistsLoaderInterface, Twig_SourceContextLoaderInterface +{ + /** Identifier of the main namespace. */ + const MAIN_NAMESPACE = '__main__'; + + protected $paths = array(); + protected $cache = array(); + protected $errorCache = array(); + + private $rootPath; + + /** + * @param string|array $paths A path or an array of paths where to look for templates + * @param string|null $rootPath The root path common to all relative paths (null for getcwd()) + */ + public function __construct($paths = array(), $rootPath = null) + { + $this->rootPath = (null === $rootPath ? getcwd() : $rootPath).DIRECTORY_SEPARATOR; + if (false !== $realPath = realpath($rootPath)) { + $this->rootPath = $realPath.DIRECTORY_SEPARATOR; + } + + if ($paths) { + $this->setPaths($paths); + } + } + + /** + * Returns the paths to the templates. + * + * @param string $namespace A path namespace + * + * @return array The array of paths where to look for templates + */ + public function getPaths($namespace = self::MAIN_NAMESPACE) + { + return isset($this->paths[$namespace]) ? $this->paths[$namespace] : array(); + } + + /** + * Returns the path namespaces. + * + * The main namespace is always defined. + * + * @return array The array of defined namespaces + */ + public function getNamespaces() + { + return array_keys($this->paths); + } + + /** + * Sets the paths where templates are stored. + * + * @param string|array $paths A path or an array of paths where to look for templates + * @param string $namespace A path namespace + */ + public function setPaths($paths, $namespace = self::MAIN_NAMESPACE) + { + if (!is_array($paths)) { + $paths = array($paths); + } + + $this->paths[$namespace] = array(); + foreach ($paths as $path) { + $this->addPath($path, $namespace); + } + } + + /** + * Adds a path where templates are stored. + * + * @param string $path A path where to look for templates + * @param string $namespace A path namespace + * + * @throws Twig_Error_Loader + */ + public function addPath($path, $namespace = self::MAIN_NAMESPACE) + { + // invalidate the cache + $this->cache = $this->errorCache = array(); + + $checkPath = $this->isAbsolutePath($path) ? $path : $this->rootPath.$path; + if (!is_dir($checkPath)) { + throw new Twig_Error_Loader(sprintf('The "%s" directory does not exist ("%s").', $path, $checkPath)); + } + + $this->paths[$namespace][] = rtrim($path, '/\\'); + } + + /** + * Prepends a path where templates are stored. + * + * @param string $path A path where to look for templates + * @param string $namespace A path namespace + * + * @throws Twig_Error_Loader + */ + public function prependPath($path, $namespace = self::MAIN_NAMESPACE) + { + // invalidate the cache + $this->cache = $this->errorCache = array(); + + $checkPath = $this->isAbsolutePath($path) ? $path : $this->rootPath.$path; + if (!is_dir($checkPath)) { + throw new Twig_Error_Loader(sprintf('The "%s" directory does not exist ("%s").', $path, $checkPath)); + } + + $path = rtrim($path, '/\\'); + + if (!isset($this->paths[$namespace])) { + $this->paths[$namespace][] = $path; + } else { + array_unshift($this->paths[$namespace], $path); + } + } + + public function getSource($name) + { + @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', get_class($this)), E_USER_DEPRECATED); + + return file_get_contents($this->findTemplate($name)); + } + + public function getSourceContext($name) + { + $path = $this->findTemplate($name); + + return new Twig_Source(file_get_contents($path), $name, $path); + } + + public function getCacheKey($name) + { + $path = $this->findTemplate($name); + $len = strlen($this->rootPath); + if (0 === strncmp($this->rootPath, $path, $len)) { + return substr($path, $len); + } + + return $path; + } + + public function exists($name) + { + $name = $this->normalizeName($name); + + if (isset($this->cache[$name])) { + return true; + } + + try { + return false !== $this->findTemplate($name, false); + } catch (Twig_Error_Loader $exception) { + @trigger_error(sprintf('In %s::findTemplate(), you must accept a second argument that when set to "false" returns "false" instead of throwing an exception. Not supporting this argument is deprecated since version 1.27.', get_class($this)), E_USER_DEPRECATED); + + return false; + } + } + + public function isFresh($name, $time) + { + return filemtime($this->findTemplate($name)) <= $time; + } + + protected function findTemplate($name) + { + $throw = func_num_args() > 1 ? func_get_arg(1) : true; + $name = $this->normalizeName($name); + + if (isset($this->cache[$name])) { + return $this->cache[$name]; + } + + if (isset($this->errorCache[$name])) { + if (!$throw) { + return false; + } + + throw new Twig_Error_Loader($this->errorCache[$name]); + } + + $this->validateName($name); + + list($namespace, $shortname) = $this->parseName($name); + + if (!isset($this->paths[$namespace])) { + $this->errorCache[$name] = sprintf('There are no registered paths for namespace "%s".', $namespace); + + if (!$throw) { + return false; + } + + throw new Twig_Error_Loader($this->errorCache[$name]); + } + + foreach ($this->paths[$namespace] as $path) { + if (!$this->isAbsolutePath($path)) { + $path = $this->rootPath.'/'.$path; + } + + if (is_file($path.'/'.$shortname)) { + if (false !== $realpath = realpath($path.'/'.$shortname)) { + return $this->cache[$name] = $realpath; + } + + return $this->cache[$name] = $path.'/'.$shortname; + } + } + + $this->errorCache[$name] = sprintf('Unable to find template "%s" (looked into: %s).', $name, implode(', ', $this->paths[$namespace])); + + if (!$throw) { + return false; + } + + throw new Twig_Error_Loader($this->errorCache[$name]); + } + + protected function parseName($name, $default = self::MAIN_NAMESPACE) + { + if (isset($name[0]) && '@' == $name[0]) { + if (false === $pos = strpos($name, '/')) { + throw new Twig_Error_Loader(sprintf('Malformed namespaced template name "%s" (expecting "@namespace/template_name").', $name)); + } + + $namespace = substr($name, 1, $pos - 1); + $shortname = substr($name, $pos + 1); + + return array($namespace, $shortname); + } + + return array($default, $name); + } + + protected function normalizeName($name) + { + return preg_replace('#/{2,}#', '/', str_replace('\\', '/', (string) $name)); + } + + protected function validateName($name) + { + if (false !== strpos($name, "\0")) { + throw new Twig_Error_Loader('A template name cannot contain NUL bytes.'); + } + + $name = ltrim($name, '/'); + $parts = explode('/', $name); + $level = 0; + foreach ($parts as $part) { + if ('..' === $part) { + --$level; + } elseif ('.' !== $part) { + ++$level; + } + + if ($level < 0) { + throw new Twig_Error_Loader(sprintf('Looks like you try to load a template outside configured directories (%s).', $name)); + } + } + } + + private function isAbsolutePath($file) + { + return strspn($file, '/\\', 0, 1) + || (strlen($file) > 3 && ctype_alpha($file[0]) + && substr($file, 1, 1) === ':' + && strspn($file, '/\\', 2, 1) + ) + || null !== parse_url($file, PHP_URL_SCHEME) + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Loader/String.php b/system/vendor/twig/twig/lib/Twig/Loader/String.php new file mode 100644 index 0000000..950bd35 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Loader/String.php @@ -0,0 +1,58 @@ + + */ +class Twig_Loader_String implements Twig_LoaderInterface, Twig_ExistsLoaderInterface, Twig_SourceContextLoaderInterface +{ + public function getSource($name) + { + @trigger_error(sprintf('Calling "getSource" on "%s" is deprecated since 1.27. Use getSourceContext() instead.', get_class($this)), E_USER_DEPRECATED); + + return $name; + } + + public function getSourceContext($name) + { + return new Twig_Source($name, $name); + } + + public function exists($name) + { + return true; + } + + public function getCacheKey($name) + { + return $name; + } + + public function isFresh($name, $time) + { + return true; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/LoaderInterface.php b/system/vendor/twig/twig/lib/Twig/LoaderInterface.php new file mode 100644 index 0000000..b029997 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/LoaderInterface.php @@ -0,0 +1,55 @@ + + */ +interface Twig_LoaderInterface +{ + /** + * Gets the source code of a template, given its name. + * + * @param string $name The name of the template to load + * + * @return string The template source code + * + * @throws Twig_Error_Loader When $name is not found + * + * @deprecated since 1.27 (to be removed in 2.0), implement Twig_SourceContextLoaderInterface + */ + public function getSource($name); + + /** + * Gets the cache key to use for the cache for a given template name. + * + * @param string $name The name of the template to load + * + * @return string The cache key + * + * @throws Twig_Error_Loader When $name is not found + */ + public function getCacheKey($name); + + /** + * Returns true if the template is still fresh. + * + * @param string $name The template name + * @param int $time Timestamp of the last modification time of the + * cached template + * + * @return bool true if the template is fresh, false otherwise + * + * @throws Twig_Error_Loader When $name is not found + */ + public function isFresh($name, $time); +} diff --git a/system/vendor/twig/twig/lib/Twig/Markup.php b/system/vendor/twig/twig/lib/Twig/Markup.php new file mode 100644 index 0000000..535ebe9 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Markup.php @@ -0,0 +1,37 @@ + + */ +class Twig_Markup implements Countable +{ + protected $content; + protected $charset; + + public function __construct($content, $charset) + { + $this->content = (string) $content; + $this->charset = $charset; + } + + public function __toString() + { + return $this->content; + } + + public function count() + { + return function_exists('mb_get_info') ? mb_strlen($this->content, $this->charset) : strlen($this->content); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node.php b/system/vendor/twig/twig/lib/Twig/Node.php new file mode 100644 index 0000000..807f198 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node.php @@ -0,0 +1,253 @@ + + */ +class Twig_Node implements Twig_NodeInterface +{ + protected $nodes; + protected $attributes; + protected $lineno; + protected $tag; + + private $name; + + /** + * Constructor. + * + * The nodes are automatically made available as properties ($this->node). + * The attributes are automatically made available as array items ($this['name']). + * + * @param array $nodes An array of named nodes + * @param array $attributes An array of attributes (should not be nodes) + * @param int $lineno The line number + * @param string $tag The tag name associated with the Node + */ + public function __construct(array $nodes = array(), array $attributes = array(), $lineno = 0, $tag = null) + { + foreach ($nodes as $name => $node) { + if (!$node instanceof Twig_NodeInterface) { + @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', is_object($node) ? get_class($node) : null === $node ? 'null' : gettype($node), $name, get_class($this)), E_USER_DEPRECATED); + } + } + $this->nodes = $nodes; + $this->attributes = $attributes; + $this->lineno = $lineno; + $this->tag = $tag; + } + + public function __toString() + { + $attributes = array(); + foreach ($this->attributes as $name => $value) { + $attributes[] = sprintf('%s: %s', $name, str_replace("\n", '', var_export($value, true))); + } + + $repr = array(get_class($this).'('.implode(', ', $attributes)); + + if (count($this->nodes)) { + foreach ($this->nodes as $name => $node) { + $len = strlen($name) + 4; + $noderepr = array(); + foreach (explode("\n", (string) $node) as $line) { + $noderepr[] = str_repeat(' ', $len).$line; + } + + $repr[] = sprintf(' %s: %s', $name, ltrim(implode("\n", $noderepr))); + } + + $repr[] = ')'; + } else { + $repr[0] .= ')'; + } + + return implode("\n", $repr); + } + + /** + * @deprecated since 1.16.1 (to be removed in 2.0) + */ + public function toXml($asDom = false) + { + @trigger_error(sprintf('%s is deprecated since version 1.16.1 and will be removed in 2.0.', __METHOD__), E_USER_DEPRECATED); + + $dom = new DOMDocument('1.0', 'UTF-8'); + $dom->formatOutput = true; + $dom->appendChild($xml = $dom->createElement('twig')); + + $xml->appendChild($node = $dom->createElement('node')); + $node->setAttribute('class', get_class($this)); + + foreach ($this->attributes as $name => $value) { + $node->appendChild($attribute = $dom->createElement('attribute')); + $attribute->setAttribute('name', $name); + $attribute->appendChild($dom->createTextNode($value)); + } + + foreach ($this->nodes as $name => $n) { + if (null === $n) { + continue; + } + + $child = $n->toXml(true)->getElementsByTagName('node')->item(0); + $child = $dom->importNode($child, true); + $child->setAttribute('name', $name); + + $node->appendChild($child); + } + + return $asDom ? $dom : $dom->saveXML(); + } + + public function compile(Twig_Compiler $compiler) + { + foreach ($this->nodes as $node) { + $node->compile($compiler); + } + } + + public function getTemplateLine() + { + return $this->lineno; + } + + /** + * @deprecated since 1.27 (to be removed in 2.0) + */ + public function getLine() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getTemplateLine() instead.', E_USER_DEPRECATED); + + return $this->lineno; + } + + public function getNodeTag() + { + return $this->tag; + } + + /** + * @return bool + */ + public function hasAttribute($name) + { + return array_key_exists($name, $this->attributes); + } + + /** + * @return mixed + */ + public function getAttribute($name) + { + if (!array_key_exists($name, $this->attributes)) { + throw new LogicException(sprintf('Attribute "%s" does not exist for Node "%s".', $name, get_class($this))); + } + + return $this->attributes[$name]; + } + + /** + * @param string $name + * @param mixed $value + */ + public function setAttribute($name, $value) + { + $this->attributes[$name] = $value; + } + + public function removeAttribute($name) + { + unset($this->attributes[$name]); + } + + /** + * @return bool + */ + public function hasNode($name) + { + return array_key_exists($name, $this->nodes); + } + + /** + * @return Twig_Node + */ + public function getNode($name) + { + if (!array_key_exists($name, $this->nodes)) { + throw new LogicException(sprintf('Node "%s" does not exist for Node "%s".', $name, get_class($this))); + } + + return $this->nodes[$name]; + } + + public function setNode($name, $node = null) + { + if (!$node instanceof Twig_NodeInterface) { + @trigger_error(sprintf('Using "%s" for the value of node "%s" of "%s" is deprecated since version 1.25 and will be removed in 2.0.', is_object($node) ? get_class($node) : null === $node ? 'null' : gettype($node), $name, get_class($this)), E_USER_DEPRECATED); + } + + $this->nodes[$name] = $node; + } + + public function removeNode($name) + { + unset($this->nodes[$name]); + } + + public function count() + { + return count($this->nodes); + } + + public function getIterator() + { + return new ArrayIterator($this->nodes); + } + + public function setTemplateName($name) + { + $this->name = $name; + foreach ($this->nodes as $node) { + if (null !== $node) { + $node->setTemplateName($name); + } + } + } + + public function getTemplateName() + { + return $this->name; + } + + /** + * @deprecated since 1.27 (to be removed in 2.0) + */ + public function setFilename($name) + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use setTemplateName() instead.', E_USER_DEPRECATED); + + $this->setTemplateName($name); + } + + /** + * @deprecated since 1.27 (to be removed in 2.0) + */ + public function getFilename() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getTemplateName() instead.', E_USER_DEPRECATED); + + return $this->name; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/AutoEscape.php b/system/vendor/twig/twig/lib/Twig/Node/AutoEscape.php new file mode 100644 index 0000000..570f23e --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/AutoEscape.php @@ -0,0 +1,34 @@ + + */ +class Twig_Node_AutoEscape extends Twig_Node +{ + public function __construct($value, Twig_NodeInterface $body, $lineno, $tag = 'autoescape') + { + parent::__construct(array('body' => $body), array('value' => $value), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler->subcompile($this->getNode('body')); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Block.php b/system/vendor/twig/twig/lib/Twig/Node/Block.php new file mode 100644 index 0000000..dfd8ceb --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Block.php @@ -0,0 +1,39 @@ + + */ +class Twig_Node_Block extends Twig_Node +{ + public function __construct($name, Twig_NodeInterface $body, $lineno, $tag = null) + { + parent::__construct(array('body' => $body), array('name' => $name), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write(sprintf("public function block_%s(\$context, array \$blocks = array())\n", $this->getAttribute('name')), "{\n") + ->indent() + ; + + $compiler + ->subcompile($this->getNode('body')) + ->outdent() + ->write("}\n\n") + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/BlockReference.php b/system/vendor/twig/twig/lib/Twig/Node/BlockReference.php new file mode 100644 index 0000000..d9b5937 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/BlockReference.php @@ -0,0 +1,32 @@ + + */ +class Twig_Node_BlockReference extends Twig_Node implements Twig_NodeOutputInterface +{ + public function __construct($name, $lineno, $tag = null) + { + parent::__construct(array(), array('name' => $name), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write(sprintf("\$this->displayBlock('%s', \$context, \$blocks);\n", $this->getAttribute('name'))) + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Body.php b/system/vendor/twig/twig/lib/Twig/Node/Body.php new file mode 100644 index 0000000..2314c9a --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Body.php @@ -0,0 +1,19 @@ + + */ +class Twig_Node_Body extends Twig_Node +{ +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php b/system/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php new file mode 100644 index 0000000..b9cf054 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/CheckSecurity.php @@ -0,0 +1,78 @@ + + */ +class Twig_Node_CheckSecurity extends Twig_Node +{ + protected $usedFilters; + protected $usedTags; + protected $usedFunctions; + + public function __construct(array $usedFilters, array $usedTags, array $usedFunctions) + { + $this->usedFilters = $usedFilters; + $this->usedTags = $usedTags; + $this->usedFunctions = $usedFunctions; + + parent::__construct(); + } + + public function compile(Twig_Compiler $compiler) + { + $tags = $filters = $functions = array(); + foreach (array('tags', 'filters', 'functions') as $type) { + foreach ($this->{'used'.ucfirst($type)} as $name => $node) { + if ($node instanceof Twig_Node) { + ${$type}[$name] = $node->getTemplateLine(); + } else { + ${$type}[$node] = null; + } + } + } + + $compiler + ->write('$tags = ')->repr(array_filter($tags))->raw(";\n") + ->write('$filters = ')->repr(array_filter($filters))->raw(";\n") + ->write('$functions = ')->repr(array_filter($functions))->raw(";\n\n") + ->write("try {\n") + ->indent() + ->write("\$this->env->getExtension('Twig_Extension_Sandbox')->checkSecurity(\n") + ->indent() + ->write(!$tags ? "array(),\n" : "array('".implode("', '", array_keys($tags))."'),\n") + ->write(!$filters ? "array(),\n" : "array('".implode("', '", array_keys($filters))."'),\n") + ->write(!$functions ? "array()\n" : "array('".implode("', '", array_keys($functions))."')\n") + ->outdent() + ->write(");\n") + ->outdent() + ->write("} catch (Twig_Sandbox_SecurityError \$e) {\n") + ->indent() + ->write("\$e->setSourceContext(\$this->getSourceContext());\n\n") + ->write("if (\$e instanceof Twig_Sandbox_SecurityNotAllowedTagError && isset(\$tags[\$e->getTagName()])) {\n") + ->indent() + ->write("\$e->setTemplateLine(\$tags[\$e->getTagName()]);\n") + ->outdent() + ->write("} elseif (\$e instanceof Twig_Sandbox_SecurityNotAllowedFilterError && isset(\$filters[\$e->getFilterName()])) {\n") + ->indent() + ->write("\$e->setTemplateLine(\$filters[\$e->getFilterName()]);\n") + ->outdent() + ->write("} elseif (\$e instanceof Twig_Sandbox_SecurityNotAllowedFunctionError && isset(\$functions[\$e->getFunctionName()])) {\n") + ->indent() + ->write("\$e->setTemplateLine(\$functions[\$e->getFunctionName()]);\n") + ->outdent() + ->write("}\n\n") + ->write("throw \$e;\n") + ->outdent() + ->write("}\n\n") + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Do.php b/system/vendor/twig/twig/lib/Twig/Node/Do.php new file mode 100644 index 0000000..94305c7 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Do.php @@ -0,0 +1,33 @@ + + */ +class Twig_Node_Do extends Twig_Node +{ + public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null) + { + parent::__construct(array('expr' => $expr), array(), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write('') + ->subcompile($this->getNode('expr')) + ->raw(";\n") + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Embed.php b/system/vendor/twig/twig/lib/Twig/Node/Embed.php new file mode 100644 index 0000000..1786f36 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Embed.php @@ -0,0 +1,44 @@ + + */ +class Twig_Node_Embed extends Twig_Node_Include +{ + // we don't inject the module to avoid node visitors to traverse it twice (as it will be already visited in the main module) + public function __construct($name, $index, Twig_Node_Expression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null) + { + parent::__construct(new Twig_Node_Expression_Constant('not_used', $lineno), $variables, $only, $ignoreMissing, $lineno, $tag); + + $this->setAttribute('name', $name); + // to be removed in 2.0, used name instead + $this->setAttribute('filename', $name); + $this->setAttribute('index', $index); + } + + protected function addGetTemplate(Twig_Compiler $compiler) + { + $compiler + ->write('$this->loadTemplate(') + ->string($this->getAttribute('name')) + ->raw(', ') + ->repr($this->getTemplateName()) + ->raw(', ') + ->repr($this->getTemplateLine()) + ->raw(', ') + ->string($this->getAttribute('index')) + ->raw(')') + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression.php b/system/vendor/twig/twig/lib/Twig/Node/Expression.php new file mode 100644 index 0000000..e609d81 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression.php @@ -0,0 +1,20 @@ + + */ +abstract class Twig_Node_Expression extends Twig_Node +{ +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Array.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Array.php new file mode 100644 index 0000000..0c726c0 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Array.php @@ -0,0 +1,81 @@ +index = -1; + foreach ($this->getKeyValuePairs() as $pair) { + if ($pair['key'] instanceof Twig_Node_Expression_Constant && ctype_digit((string) $pair['key']->getAttribute('value')) && $pair['key']->getAttribute('value') > $this->index) { + $this->index = $pair['key']->getAttribute('value'); + } + } + } + + public function getKeyValuePairs() + { + $pairs = array(); + + foreach (array_chunk($this->nodes, 2) as $pair) { + $pairs[] = array( + 'key' => $pair[0], + 'value' => $pair[1], + ); + } + + return $pairs; + } + + public function hasElement(Twig_Node_Expression $key) + { + foreach ($this->getKeyValuePairs() as $pair) { + // we compare the string representation of the keys + // to avoid comparing the line numbers which are not relevant here. + if ((string) $key === (string) $pair['key']) { + return true; + } + } + + return false; + } + + public function addElement(Twig_Node_Expression $value, Twig_Node_Expression $key = null) + { + if (null === $key) { + $key = new Twig_Node_Expression_Constant(++$this->index, $value->getTemplateLine()); + } + + array_push($this->nodes, $key, $value); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler->raw('array('); + $first = true; + foreach ($this->getKeyValuePairs() as $pair) { + if (!$first) { + $compiler->raw(', '); + } + $first = false; + + $compiler + ->subcompile($pair['key']) + ->raw(' => ') + ->subcompile($pair['value']) + ; + } + $compiler->raw(')'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/AssignName.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/AssignName.php new file mode 100644 index 0000000..ceb7282 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/AssignName.php @@ -0,0 +1,23 @@ +raw('$context[') + ->string($this->getAttribute('name')) + ->raw(']') + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary.php new file mode 100644 index 0000000..d478769 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary.php @@ -0,0 +1,35 @@ + $left, 'right' => $right), array(), $lineno); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->raw('(') + ->subcompile($this->getNode('left')) + ->raw(' ') + ; + $this->operator($compiler); + $compiler + ->raw(' ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + abstract public function operator(Twig_Compiler $compiler); +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Add.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Add.php new file mode 100644 index 0000000..51bba48 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Add.php @@ -0,0 +1,18 @@ +raw('+'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/And.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/And.php new file mode 100644 index 0000000..9b3997d --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/And.php @@ -0,0 +1,18 @@ +raw('&&'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php new file mode 100644 index 0000000..fa9729d --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseAnd.php @@ -0,0 +1,18 @@ +raw('&'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php new file mode 100644 index 0000000..e3be548 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseOr.php @@ -0,0 +1,18 @@ +raw('|'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php new file mode 100644 index 0000000..9255d8f --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/BitwiseXor.php @@ -0,0 +1,18 @@ +raw('^'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php new file mode 100644 index 0000000..7de9070 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Concat.php @@ -0,0 +1,18 @@ +raw('.'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Div.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Div.php new file mode 100644 index 0000000..386b4ea --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Div.php @@ -0,0 +1,18 @@ +raw('/'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php new file mode 100644 index 0000000..c24b720 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/EndsWith.php @@ -0,0 +1,30 @@ +getVarName(); + $right = $compiler->getVarName(); + $compiler + ->raw(sprintf('(is_string($%s = ', $left)) + ->subcompile($this->getNode('left')) + ->raw(sprintf(') && is_string($%s = ', $right)) + ->subcompile($this->getNode('right')) + ->raw(sprintf(') && (\'\' === $%2$s || $%2$s === substr($%1$s, -strlen($%2$s))))', $left, $right)) + ; + } + + public function operator(Twig_Compiler $compiler) + { + return $compiler->raw(''); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php new file mode 100644 index 0000000..4535cd0 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Equal.php @@ -0,0 +1,17 @@ +raw('=='); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php new file mode 100644 index 0000000..b386ae3 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/FloorDiv.php @@ -0,0 +1,24 @@ +raw('(int) floor('); + parent::compile($compiler); + $compiler->raw(')'); + } + + public function operator(Twig_Compiler $compiler) + { + return $compiler->raw('/'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php new file mode 100644 index 0000000..52dcb33 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Greater.php @@ -0,0 +1,17 @@ +raw('>'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php new file mode 100644 index 0000000..1d66d6c --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/GreaterEqual.php @@ -0,0 +1,17 @@ +raw('>='); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/In.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/In.php new file mode 100644 index 0000000..ba44961 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/In.php @@ -0,0 +1,28 @@ +raw('twig_in_filter(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + public function operator(Twig_Compiler $compiler) + { + return $compiler->raw('in'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Less.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Less.php new file mode 100644 index 0000000..c9d20c4 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Less.php @@ -0,0 +1,17 @@ +raw('<'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php new file mode 100644 index 0000000..219b3bd --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/LessEqual.php @@ -0,0 +1,17 @@ +raw('<='); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php new file mode 100644 index 0000000..b22debf --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Matches.php @@ -0,0 +1,28 @@ +raw('preg_match(') + ->subcompile($this->getNode('right')) + ->raw(', ') + ->subcompile($this->getNode('left')) + ->raw(')') + ; + } + + public function operator(Twig_Compiler $compiler) + { + return $compiler->raw(''); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php new file mode 100644 index 0000000..c99874c --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mod.php @@ -0,0 +1,18 @@ +raw('%'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php new file mode 100644 index 0000000..0d24cee --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Mul.php @@ -0,0 +1,18 @@ +raw('*'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php new file mode 100644 index 0000000..69eae7e --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotEqual.php @@ -0,0 +1,17 @@ +raw('!='); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php new file mode 100644 index 0000000..f276da7 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/NotIn.php @@ -0,0 +1,28 @@ +raw('!twig_in_filter(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + public function operator(Twig_Compiler $compiler) + { + return $compiler->raw('not in'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Or.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Or.php new file mode 100644 index 0000000..7621763 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Or.php @@ -0,0 +1,18 @@ +raw('||'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Power.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Power.php new file mode 100644 index 0000000..d3225de --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Power.php @@ -0,0 +1,32 @@ += 50600) { + return parent::compile($compiler); + } + + $compiler + ->raw('pow(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + public function operator(Twig_Compiler $compiler) + { + return $compiler->raw('**'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Range.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Range.php new file mode 100644 index 0000000..4261cde --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Range.php @@ -0,0 +1,28 @@ +raw('range(') + ->subcompile($this->getNode('left')) + ->raw(', ') + ->subcompile($this->getNode('right')) + ->raw(')') + ; + } + + public function operator(Twig_Compiler $compiler) + { + return $compiler->raw('..'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php new file mode 100644 index 0000000..d1e9a5a --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/StartsWith.php @@ -0,0 +1,30 @@ +getVarName(); + $right = $compiler->getVarName(); + $compiler + ->raw(sprintf('(is_string($%s = ', $left)) + ->subcompile($this->getNode('left')) + ->raw(sprintf(') && is_string($%s = ', $right)) + ->subcompile($this->getNode('right')) + ->raw(sprintf(') && (\'\' === $%2$s || 0 === strpos($%1$s, $%2$s)))', $left, $right)) + ; + } + + public function operator(Twig_Compiler $compiler) + { + return $compiler->raw(''); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php new file mode 100644 index 0000000..b423d3e --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Binary/Sub.php @@ -0,0 +1,18 @@ +raw('-'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php new file mode 100644 index 0000000..056d991 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/BlockReference.php @@ -0,0 +1,91 @@ + + */ +class Twig_Node_Expression_BlockReference extends Twig_Node_Expression +{ + /** + * @param Twig_Node|null $template + */ + public function __construct(Twig_NodeInterface $name, $template = null, $lineno, $tag = null) + { + if (is_bool($template)) { + @trigger_error(sprintf('The %s method "$asString" argument is deprecated since version 1.28 and will be removed in 2.0.', __METHOD__), E_USER_DEPRECATED); + + $template = null; + } + + $nodes = array('name' => $name); + if (null !== $template) { + $nodes['template'] = $template; + } + + parent::__construct($nodes, array('is_defined_test' => false, 'output' => false), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + if ($this->getAttribute('is_defined_test')) { + $this->compileTemplateCall($compiler, 'hasBlock'); + } else { + if ($this->getAttribute('output')) { + $compiler->addDebugInfo($this); + + $this + ->compileTemplateCall($compiler, 'displayBlock') + ->raw(";\n"); + } else { + $this->compileTemplateCall($compiler, 'renderBlock'); + } + } + } + + private function compileTemplateCall(Twig_Compiler $compiler, $method) + { + if (!$this->hasNode('template')) { + $compiler->write('$this'); + } else { + $compiler + ->write('$this->loadTemplate(') + ->subcompile($this->getNode('template')) + ->raw(', ') + ->repr($this->getTemplateName()) + ->raw(', ') + ->repr($this->getTemplateLine()) + ->raw(')') + ; + } + + $compiler->raw(sprintf('->%s', $method)); + $this->compileBlockArguments($compiler); + + return $compiler; + } + + private function compileBlockArguments(Twig_Compiler $compiler) + { + $compiler + ->raw('(') + ->subcompile($this->getNode('name')) + ->raw(', $context'); + + if (!$this->hasNode('template')) { + $compiler->raw(', $blocks'); + } + + return $compiler->raw(')'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Call.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Call.php new file mode 100644 index 0000000..2776797 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Call.php @@ -0,0 +1,289 @@ +hasAttribute('callable') && $callable = $this->getAttribute('callable')) { + if (is_string($callable) && false === strpos($callable, '::')) { + $compiler->raw($callable); + } else { + list($r, $callable) = $this->reflectCallable($callable); + if ($r instanceof ReflectionMethod && is_string($callable[0])) { + if ($r->isStatic()) { + $compiler->raw(sprintf('%s::%s', $callable[0], $callable[1])); + } else { + $compiler->raw(sprintf('$this->env->getRuntime(\'%s\')->%s', $callable[0], $callable[1])); + } + } elseif ($r instanceof ReflectionMethod && $callable[0] instanceof Twig_ExtensionInterface) { + $compiler->raw(sprintf('$this->env->getExtension(\'%s\')->%s', get_class($callable[0]), $callable[1])); + } else { + $type = ucfirst($this->getAttribute('type')); + $compiler->raw(sprintf('call_user_func_array($this->env->get%s(\'%s\')->getCallable(), array', $type, $this->getAttribute('name'))); + $closingParenthesis = true; + } + } + } else { + $compiler->raw($this->getAttribute('thing')->compile()); + } + + $this->compileArguments($compiler); + + if ($closingParenthesis) { + $compiler->raw(')'); + } + } + + protected function compileArguments(Twig_Compiler $compiler) + { + $compiler->raw('('); + + $first = true; + + if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) { + $compiler->raw('$this->env'); + $first = false; + } + + if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) { + if (!$first) { + $compiler->raw(', '); + } + $compiler->raw('$context'); + $first = false; + } + + if ($this->hasAttribute('arguments')) { + foreach ($this->getAttribute('arguments') as $argument) { + if (!$first) { + $compiler->raw(', '); + } + $compiler->string($argument); + $first = false; + } + } + + if ($this->hasNode('node')) { + if (!$first) { + $compiler->raw(', '); + } + $compiler->subcompile($this->getNode('node')); + $first = false; + } + + if ($this->hasNode('arguments')) { + $callable = $this->hasAttribute('callable') ? $this->getAttribute('callable') : null; + + $arguments = $this->getArguments($callable, $this->getNode('arguments')); + + foreach ($arguments as $node) { + if (!$first) { + $compiler->raw(', '); + } + $compiler->subcompile($node); + $first = false; + } + } + + $compiler->raw(')'); + } + + protected function getArguments($callable, $arguments) + { + $callType = $this->getAttribute('type'); + $callName = $this->getAttribute('name'); + + $parameters = array(); + $named = false; + foreach ($arguments as $name => $node) { + if (!is_int($name)) { + $named = true; + $name = $this->normalizeName($name); + } elseif ($named) { + throw new Twig_Error_Syntax(sprintf('Positional arguments cannot be used after named arguments for %s "%s".', $callType, $callName)); + } + + $parameters[$name] = $node; + } + + $isVariadic = $this->hasAttribute('is_variadic') && $this->getAttribute('is_variadic'); + if (!$named && !$isVariadic) { + return $parameters; + } + + if (!$callable) { + if ($named) { + $message = sprintf('Named arguments are not supported for %s "%s".', $callType, $callName); + } else { + $message = sprintf('Arbitrary positional arguments are not supported for %s "%s".', $callType, $callName); + } + + throw new LogicException($message); + } + + $callableParameters = $this->getCallableParameters($callable, $isVariadic); + $arguments = array(); + $names = array(); + $missingArguments = array(); + $optionalArguments = array(); + $pos = 0; + foreach ($callableParameters as $callableParameter) { + $names[] = $name = $this->normalizeName($callableParameter->name); + + if (array_key_exists($name, $parameters)) { + if (array_key_exists($pos, $parameters)) { + throw new Twig_Error_Syntax(sprintf('Argument "%s" is defined twice for %s "%s".', $name, $callType, $callName)); + } + + if (count($missingArguments)) { + throw new Twig_Error_Syntax(sprintf( + 'Argument "%s" could not be assigned for %s "%s(%s)" because it is mapped to an internal PHP function which cannot determine default value for optional argument%s "%s".', + $name, $callType, $callName, implode(', ', $names), count($missingArguments) > 1 ? 's' : '', implode('", "', $missingArguments)) + ); + } + + $arguments = array_merge($arguments, $optionalArguments); + $arguments[] = $parameters[$name]; + unset($parameters[$name]); + $optionalArguments = array(); + } elseif (array_key_exists($pos, $parameters)) { + $arguments = array_merge($arguments, $optionalArguments); + $arguments[] = $parameters[$pos]; + unset($parameters[$pos]); + $optionalArguments = array(); + ++$pos; + } elseif ($callableParameter->isDefaultValueAvailable()) { + $optionalArguments[] = new Twig_Node_Expression_Constant($callableParameter->getDefaultValue(), -1); + } elseif ($callableParameter->isOptional()) { + if (empty($parameters)) { + break; + } else { + $missingArguments[] = $name; + } + } else { + throw new Twig_Error_Syntax(sprintf('Value for argument "%s" is required for %s "%s".', $name, $callType, $callName)); + } + } + + if ($isVariadic) { + $arbitraryArguments = new Twig_Node_Expression_Array(array(), -1); + foreach ($parameters as $key => $value) { + if (is_int($key)) { + $arbitraryArguments->addElement($value); + } else { + $arbitraryArguments->addElement($value, new Twig_Node_Expression_Constant($key, -1)); + } + unset($parameters[$key]); + } + + if ($arbitraryArguments->count()) { + $arguments = array_merge($arguments, $optionalArguments); + $arguments[] = $arbitraryArguments; + } + } + + if (!empty($parameters)) { + $unknownParameter = null; + foreach ($parameters as $parameter) { + if ($parameter instanceof Twig_Node) { + $unknownParameter = $parameter; + break; + } + } + + throw new Twig_Error_Syntax(sprintf( + 'Unknown argument%s "%s" for %s "%s(%s)".', + count($parameters) > 1 ? 's' : '', implode('", "', array_keys($parameters)), $callType, $callName, implode(', ', $names) + ), $unknownParameter ? $unknownParameter->getTemplateLine() : -1); + } + + return $arguments; + } + + protected function normalizeName($name) + { + return strtolower(preg_replace(array('/([A-Z]+)([A-Z][a-z])/', '/([a-z\d])([A-Z])/'), array('\\1_\\2', '\\1_\\2'), $name)); + } + + private function getCallableParameters($callable, $isVariadic) + { + list($r) = $this->reflectCallable($callable); + if (null === $r) { + return array(); + } + + $parameters = $r->getParameters(); + if ($this->hasNode('node')) { + array_shift($parameters); + } + if ($this->hasAttribute('needs_environment') && $this->getAttribute('needs_environment')) { + array_shift($parameters); + } + if ($this->hasAttribute('needs_context') && $this->getAttribute('needs_context')) { + array_shift($parameters); + } + if ($this->hasAttribute('arguments') && null !== $this->getAttribute('arguments')) { + foreach ($this->getAttribute('arguments') as $argument) { + array_shift($parameters); + } + } + if ($isVariadic) { + $argument = end($parameters); + if ($argument && $argument->isArray() && $argument->isDefaultValueAvailable() && array() === $argument->getDefaultValue()) { + array_pop($parameters); + } else { + $callableName = $r->name; + if ($r instanceof ReflectionMethod) { + $callableName = $r->getDeclaringClass()->name.'::'.$callableName; + } + + throw new LogicException(sprintf('The last parameter of "%s" for %s "%s" must be an array with default value, eg. "array $arg = array()".', $callableName, $this->getAttribute('type'), $this->getAttribute('name'))); + } + } + + return $parameters; + } + + private function reflectCallable($callable) + { + if (null !== $this->reflector) { + return $this->reflector; + } + + if (is_array($callable)) { + if (!method_exists($callable[0], $callable[1])) { + // __call() + return array(null, array()); + } + $r = new ReflectionMethod($callable[0], $callable[1]); + } elseif (is_object($callable) && !$callable instanceof Closure) { + $r = new ReflectionObject($callable); + $r = $r->getMethod('__invoke'); + $callable = array($callable, '__invoke'); + } elseif (is_string($callable) && false !== $pos = strpos($callable, '::')) { + $class = substr($callable, 0, $pos); + $method = substr($callable, $pos + 2); + if (!method_exists($class, $method)) { + // __staticCall() + return array(null, array()); + } + $r = new ReflectionMethod($callable); + $callable = array($class, $method); + } else { + $r = new ReflectionFunction($callable); + } + + return $this->reflector = array($r, $callable); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Conditional.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Conditional.php new file mode 100644 index 0000000..67cca1f --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Conditional.php @@ -0,0 +1,31 @@ + $expr1, 'expr2' => $expr2, 'expr3' => $expr3), array(), $lineno); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->raw('((') + ->subcompile($this->getNode('expr1')) + ->raw(') ? (') + ->subcompile($this->getNode('expr2')) + ->raw(') : (') + ->subcompile($this->getNode('expr3')) + ->raw('))') + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Constant.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Constant.php new file mode 100644 index 0000000..1a2c596 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Constant.php @@ -0,0 +1,23 @@ + $value), $lineno); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler->repr($this->getAttribute('value')); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php new file mode 100644 index 0000000..114b5cd --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/ExtensionReference.php @@ -0,0 +1,32 @@ + + * + * @deprecated since 1.23 and will be removed in 2.0. + */ +class Twig_Node_Expression_ExtensionReference extends Twig_Node_Expression +{ + public function __construct($name, $lineno, $tag = null) + { + parent::__construct(array(), array('name' => $name), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler->raw(sprintf("\$this->env->getExtension('%s')", $this->getAttribute('name'))); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php new file mode 100644 index 0000000..a8fa847 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Filter.php @@ -0,0 +1,39 @@ + $node, 'filter' => $filterName, 'arguments' => $arguments), array(), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $name = $this->getNode('filter')->getAttribute('value'); + $filter = $compiler->getEnvironment()->getFilter($name); + + $this->setAttribute('name', $name); + $this->setAttribute('type', 'filter'); + $this->setAttribute('thing', $filter); + $this->setAttribute('needs_environment', $filter->needsEnvironment()); + $this->setAttribute('needs_context', $filter->needsContext()); + $this->setAttribute('arguments', $filter->getArguments()); + if ($filter instanceof Twig_FilterCallableInterface || $filter instanceof Twig_SimpleFilter) { + $this->setAttribute('callable', $filter->getCallable()); + } + if ($filter instanceof Twig_SimpleFilter) { + $this->setAttribute('is_variadic', $filter->isVariadic()); + } + + $this->compileCallable($compiler); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Filter/Default.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Filter/Default.php new file mode 100644 index 0000000..d32d86d --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Filter/Default.php @@ -0,0 +1,43 @@ + + * {{ var.foo|default('foo item on var is not defined') }} + * + * + * @author Fabien Potencier + */ +class Twig_Node_Expression_Filter_Default extends Twig_Node_Expression_Filter +{ + public function __construct(Twig_NodeInterface $node, Twig_Node_Expression_Constant $filterName, Twig_NodeInterface $arguments, $lineno, $tag = null) + { + $default = new Twig_Node_Expression_Filter($node, new Twig_Node_Expression_Constant('default', $node->getTemplateLine()), $arguments, $node->getTemplateLine()); + + if ('default' === $filterName->getAttribute('value') && ($node instanceof Twig_Node_Expression_Name || $node instanceof Twig_Node_Expression_GetAttr)) { + $test = new Twig_Node_Expression_Test_Defined(clone $node, 'defined', new Twig_Node(), $node->getTemplateLine()); + $false = count($arguments) ? $arguments->getNode(0) : new Twig_Node_Expression_Constant('', $node->getTemplateLine()); + + $node = new Twig_Node_Expression_Conditional($test, $default, $false, $node->getTemplateLine()); + } else { + $node = $default; + } + + parent::__construct($node, $filterName, $arguments, $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler->subcompile($this->getNode('node')); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Function.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Function.php new file mode 100644 index 0000000..eaad56e --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Function.php @@ -0,0 +1,43 @@ + $arguments), array('name' => $name, 'is_defined_test' => false), $lineno); + } + + public function compile(Twig_Compiler $compiler) + { + $name = $this->getAttribute('name'); + $function = $compiler->getEnvironment()->getFunction($name); + + $this->setAttribute('name', $name); + $this->setAttribute('type', 'function'); + $this->setAttribute('thing', $function); + $this->setAttribute('needs_environment', $function->needsEnvironment()); + $this->setAttribute('needs_context', $function->needsContext()); + $this->setAttribute('arguments', $function->getArguments()); + if ($function instanceof Twig_FunctionCallableInterface || $function instanceof Twig_SimpleFunction) { + $callable = $function->getCallable(); + if ('constant' === $name && $this->getAttribute('is_defined_test')) { + $callable = 'twig_constant_is_defined'; + } + + $this->setAttribute('callable', $callable); + } + if ($function instanceof Twig_SimpleFunction) { + $this->setAttribute('is_variadic', $function->isVariadic()); + } + + $this->compileCallable($compiler); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php new file mode 100644 index 0000000..7581426 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/GetAttr.php @@ -0,0 +1,72 @@ + $node, 'attribute' => $attribute); + if (null !== $arguments) { + $nodes['arguments'] = $arguments; + } + + parent::__construct($nodes, array('type' => $type, 'is_defined_test' => false, 'ignore_strict_check' => false, 'disable_c_ext' => false), $lineno); + } + + public function compile(Twig_Compiler $compiler) + { + if ($this->getAttribute('disable_c_ext')) { + @trigger_error(sprintf('Using the "disable_c_ext" attribute on %s is deprecated since version 1.30 and will be removed in 2.0.', __CLASS__), E_USER_DEPRECATED); + } + + if (function_exists('twig_template_get_attributes') && !$this->getAttribute('disable_c_ext')) { + $compiler->raw('twig_template_get_attributes($this, '); + } else { + $compiler->raw('$this->getAttribute('); + } + + if ($this->getAttribute('ignore_strict_check')) { + $this->getNode('node')->setAttribute('ignore_strict_check', true); + } + + $compiler->subcompile($this->getNode('node')); + + $compiler->raw(', ')->subcompile($this->getNode('attribute')); + + // only generate optional arguments when needed (to make generated code more readable) + $needFourth = $this->getAttribute('ignore_strict_check'); + $needThird = $needFourth || $this->getAttribute('is_defined_test'); + $needSecond = $needThird || Twig_Template::ANY_CALL !== $this->getAttribute('type'); + $needFirst = $needSecond || $this->hasNode('arguments'); + + if ($needFirst) { + if ($this->hasNode('arguments')) { + $compiler->raw(', ')->subcompile($this->getNode('arguments')); + } else { + $compiler->raw(', array()'); + } + } + + if ($needSecond) { + $compiler->raw(', ')->repr($this->getAttribute('type')); + } + + if ($needThird) { + $compiler->raw(', ')->repr($this->getAttribute('is_defined_test')); + } + + if ($needFourth) { + $compiler->raw(', ')->repr($this->getAttribute('ignore_strict_check')); + } + + $compiler->raw(')'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/MethodCall.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/MethodCall.php new file mode 100644 index 0000000..3948133 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/MethodCall.php @@ -0,0 +1,41 @@ + $node, 'arguments' => $arguments), array('method' => $method, 'safe' => false), $lineno); + + if ($node instanceof Twig_Node_Expression_Name) { + $node->setAttribute('always_defined', true); + } + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->subcompile($this->getNode('node')) + ->raw('->') + ->raw($this->getAttribute('method')) + ->raw('(') + ; + $first = true; + foreach ($this->getNode('arguments')->getKeyValuePairs() as $pair) { + if (!$first) { + $compiler->raw(', '); + } + $first = false; + + $compiler->subcompile($pair['value']); + } + $compiler->raw(')'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Name.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Name.php new file mode 100644 index 0000000..e03ca35 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Name.php @@ -0,0 +1,100 @@ + '$this', + '_context' => '$context', + '_charset' => '$this->env->getCharset()', + ); + + public function __construct($name, $lineno) + { + parent::__construct(array(), array('name' => $name, 'is_defined_test' => false, 'ignore_strict_check' => false, 'always_defined' => false), $lineno); + } + + public function compile(Twig_Compiler $compiler) + { + $name = $this->getAttribute('name'); + + $compiler->addDebugInfo($this); + + if ($this->getAttribute('is_defined_test')) { + if ($this->isSpecial()) { + $compiler->repr(true); + } else { + $compiler->raw('array_key_exists(')->repr($name)->raw(', $context)'); + } + } elseif ($this->isSpecial()) { + $compiler->raw($this->specialVars[$name]); + } elseif ($this->getAttribute('always_defined')) { + $compiler + ->raw('$context[') + ->string($name) + ->raw(']') + ; + } else { + if (PHP_VERSION_ID >= 70000) { + // use PHP 7 null coalescing operator + $compiler + ->raw('($context[') + ->string($name) + ->raw('] ?? ') + ; + + if ($this->getAttribute('ignore_strict_check') || !$compiler->getEnvironment()->isStrictVariables()) { + $compiler->raw('null)'); + } else { + $compiler->raw('$this->getContext($context, ')->string($name)->raw('))'); + } + } elseif (PHP_VERSION_ID >= 50400) { + // PHP 5.4 ternary operator performance was optimized + $compiler + ->raw('(isset($context[') + ->string($name) + ->raw(']) ? $context[') + ->string($name) + ->raw('] : ') + ; + + if ($this->getAttribute('ignore_strict_check') || !$compiler->getEnvironment()->isStrictVariables()) { + $compiler->raw('null)'); + } else { + $compiler->raw('$this->getContext($context, ')->string($name)->raw('))'); + } + } else { + $compiler + ->raw('$this->getContext($context, ') + ->string($name) + ; + + if ($this->getAttribute('ignore_strict_check')) { + $compiler->raw(', true'); + } + + $compiler + ->raw(')') + ; + } + } + } + + public function isSpecial() + { + return isset($this->specialVars[$this->getAttribute('name')]); + } + + public function isSimple() + { + return !$this->isSpecial() && !$this->getAttribute('is_defined_test'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/NullCoalesce.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/NullCoalesce.php new file mode 100644 index 0000000..14f6358 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/NullCoalesce.php @@ -0,0 +1,46 @@ +getTemplateLine()), + new Twig_Node_Expression_Unary_Not(new Twig_Node_Expression_Test_Null($left, 'null', new Twig_Node(), $left->getTemplateLine()), $left->getTemplateLine()), + $left->getTemplateLine() + ); + + parent::__construct($test, $left, $right, $lineno); + } + + public function compile(Twig_Compiler $compiler) + { + /* + * This optimizes only one case. PHP 7 also supports more complex expressions + * that can return null. So, for instance, if log is defined, log("foo") ?? "..." works, + * but log($a["foo"]) ?? "..." does not if $a["foo"] is not defined. More advanced + * cases might be implemented as an optimizer node visitor, but has not been done + * as benefits are probably not worth the added complexity. + */ + if (PHP_VERSION_ID >= 70000 && $this->getNode('expr2') instanceof Twig_Node_Expression_Name) { + $this->getNode('expr2')->setAttribute('always_defined', true); + $compiler + ->raw('((') + ->subcompile($this->getNode('expr2')) + ->raw(') ?? (') + ->subcompile($this->getNode('expr3')) + ->raw('))') + ; + } else { + parent::compile($compiler); + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php new file mode 100644 index 0000000..e7d82d8 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Parent.php @@ -0,0 +1,42 @@ + + */ +class Twig_Node_Expression_Parent extends Twig_Node_Expression +{ + public function __construct($name, $lineno, $tag = null) + { + parent::__construct(array(), array('output' => false, 'name' => $name), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + if ($this->getAttribute('output')) { + $compiler + ->addDebugInfo($this) + ->write('$this->displayParentBlock(') + ->string($this->getAttribute('name')) + ->raw(", \$context, \$blocks);\n") + ; + } else { + $compiler + ->raw('$this->renderParentBlock(') + ->string($this->getAttribute('name')) + ->raw(', $context, $blocks)') + ; + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/TempName.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/TempName.php new file mode 100644 index 0000000..09a04a3 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/TempName.php @@ -0,0 +1,26 @@ + $name), $lineno); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->raw('$_') + ->raw($this->getAttribute('name')) + ->raw('_') + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Test.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test.php new file mode 100644 index 0000000..3dfe4f1 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test.php @@ -0,0 +1,40 @@ + $node); + if (null !== $arguments) { + $nodes['arguments'] = $arguments; + } + + parent::__construct($nodes, array('name' => $name), $lineno); + } + + public function compile(Twig_Compiler $compiler) + { + $name = $this->getAttribute('name'); + $test = $compiler->getEnvironment()->getTest($name); + + $this->setAttribute('name', $name); + $this->setAttribute('type', 'test'); + $this->setAttribute('thing', $test); + if ($test instanceof Twig_TestCallableInterface || $test instanceof Twig_SimpleTest) { + $this->setAttribute('callable', $test->getCallable()); + } + if ($test instanceof Twig_SimpleTest) { + $this->setAttribute('is_variadic', $test->isVariadic()); + } + + $this->compileCallable($compiler); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Constant.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Constant.php new file mode 100644 index 0000000..ffde348 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Constant.php @@ -0,0 +1,46 @@ + + * {% if post.status is constant('Post::PUBLISHED') %} + * the status attribute is exactly the same as Post::PUBLISHED + * {% endif %} + * + * + * @author Fabien Potencier + */ +class Twig_Node_Expression_Test_Constant extends Twig_Node_Expression_Test +{ + public function compile(Twig_Compiler $compiler) + { + $compiler + ->raw('(') + ->subcompile($this->getNode('node')) + ->raw(' === constant(') + ; + + if ($this->getNode('arguments')->hasNode(1)) { + $compiler + ->raw('get_class(') + ->subcompile($this->getNode('arguments')->getNode(1)) + ->raw(')."::".') + ; + } + + $compiler + ->subcompile($this->getNode('arguments')->getNode(0)) + ->raw('))') + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Defined.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Defined.php new file mode 100644 index 0000000..31cd987 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Defined.php @@ -0,0 +1,59 @@ + + * {# defined works with variable names and variable attributes #} + * {% if foo is defined %} + * {# ... #} + * {% endif %} + * + * + * @author Fabien Potencier + */ +class Twig_Node_Expression_Test_Defined extends Twig_Node_Expression_Test +{ + public function __construct(Twig_NodeInterface $node, $name, Twig_NodeInterface $arguments = null, $lineno) + { + if ($node instanceof Twig_Node_Expression_Name) { + $node->setAttribute('is_defined_test', true); + } elseif ($node instanceof Twig_Node_Expression_GetAttr) { + $node->setAttribute('is_defined_test', true); + $this->changeIgnoreStrictCheck($node); + } elseif ($node instanceof Twig_Node_Expression_BlockReference) { + $node->setAttribute('is_defined_test', true); + } elseif ($node instanceof Twig_Node_Expression_Function && 'constant' === $node->getAttribute('name')) { + $node->setAttribute('is_defined_test', true); + } elseif ($node instanceof Twig_Node_Expression_Constant || $node instanceof Twig_Node_Expression_Array) { + $node = new Twig_Node_Expression_Constant(true, $node->getTemplateLine()); + } else { + throw new Twig_Error_Syntax('The "defined" test only works with simple variables.', $this->getTemplateLine()); + } + + parent::__construct($node, $name, $arguments, $lineno); + } + + protected function changeIgnoreStrictCheck(Twig_Node_Expression_GetAttr $node) + { + $node->setAttribute('ignore_strict_check', true); + + if ($node->getNode('node') instanceof Twig_Node_Expression_GetAttr) { + $this->changeIgnoreStrictCheck($node->getNode('node')); + } + } + + public function compile(Twig_Compiler $compiler) + { + $compiler->subcompile($this->getNode('node')); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php new file mode 100644 index 0000000..0d6bdb4 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Divisibleby.php @@ -0,0 +1,33 @@ + + * {% if loop.index is divisible by(3) %} + * + * + * @author Fabien Potencier + */ +class Twig_Node_Expression_Test_Divisibleby extends Twig_Node_Expression_Test +{ + public function compile(Twig_Compiler $compiler) + { + $compiler + ->raw('(0 == ') + ->subcompile($this->getNode('node')) + ->raw(' % ') + ->subcompile($this->getNode('arguments')->getNode(0)) + ->raw(')') + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Even.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Even.php new file mode 100644 index 0000000..fe42e62 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Even.php @@ -0,0 +1,32 @@ + + * {{ var is even }} + * + * + * @author Fabien Potencier + */ +class Twig_Node_Expression_Test_Even extends Twig_Node_Expression_Test +{ + public function compile(Twig_Compiler $compiler) + { + $compiler + ->raw('(') + ->subcompile($this->getNode('node')) + ->raw(' % 2 == 0') + ->raw(')') + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Null.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Null.php new file mode 100644 index 0000000..934d835 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Null.php @@ -0,0 +1,31 @@ + + * {{ var is none }} + * + * + * @author Fabien Potencier + */ +class Twig_Node_Expression_Test_Null extends Twig_Node_Expression_Test +{ + public function compile(Twig_Compiler $compiler) + { + $compiler + ->raw('(null === ') + ->subcompile($this->getNode('node')) + ->raw(')') + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Odd.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Odd.php new file mode 100644 index 0000000..4f16029 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Odd.php @@ -0,0 +1,32 @@ + + * {{ var is odd }} + * + * + * @author Fabien Potencier + */ +class Twig_Node_Expression_Test_Odd extends Twig_Node_Expression_Test +{ + public function compile(Twig_Compiler $compiler) + { + $compiler + ->raw('(') + ->subcompile($this->getNode('node')) + ->raw(' % 2 == 1') + ->raw(')') + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php new file mode 100644 index 0000000..abc2f5b --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Test/Sameas.php @@ -0,0 +1,29 @@ + + */ +class Twig_Node_Expression_Test_Sameas extends Twig_Node_Expression_Test +{ + public function compile(Twig_Compiler $compiler) + { + $compiler + ->raw('(') + ->subcompile($this->getNode('node')) + ->raw(' === ') + ->subcompile($this->getNode('arguments')->getNode(0)) + ->raw(')') + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Unary.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Unary.php new file mode 100644 index 0000000..0ea2c2c --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Unary.php @@ -0,0 +1,27 @@ + $node), array(), $lineno); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler->raw(' '); + $this->operator($compiler); + $compiler->subcompile($this->getNode('node')); + } + + abstract public function operator(Twig_Compiler $compiler); +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php new file mode 100644 index 0000000..ca3ef8f --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Neg.php @@ -0,0 +1,18 @@ +raw('-'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Not.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Not.php new file mode 100644 index 0000000..a5e4f19 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Not.php @@ -0,0 +1,18 @@ +raw('!'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php b/system/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php new file mode 100644 index 0000000..5497532 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Expression/Unary/Pos.php @@ -0,0 +1,18 @@ +raw('+'); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Flush.php b/system/vendor/twig/twig/lib/Twig/Node/Flush.php new file mode 100644 index 0000000..cd4be41 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Flush.php @@ -0,0 +1,31 @@ + + */ +class Twig_Node_Flush extends Twig_Node +{ + public function __construct($lineno, $tag) + { + parent::__construct(array(), array(), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write("flush();\n") + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/For.php b/system/vendor/twig/twig/lib/Twig/Node/For.php new file mode 100644 index 0000000..f93d9c8 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/For.php @@ -0,0 +1,111 @@ + + */ +class Twig_Node_For extends Twig_Node +{ + protected $loop; + + public function __construct(Twig_Node_Expression_AssignName $keyTarget, Twig_Node_Expression_AssignName $valueTarget, Twig_Node_Expression $seq, Twig_Node_Expression $ifexpr = null, Twig_NodeInterface $body, Twig_NodeInterface $else = null, $lineno, $tag = null) + { + $body = new Twig_Node(array($body, $this->loop = new Twig_Node_ForLoop($lineno, $tag))); + + if (null !== $ifexpr) { + $body = new Twig_Node_If(new Twig_Node(array($ifexpr, $body)), null, $lineno, $tag); + } + + $nodes = array('key_target' => $keyTarget, 'value_target' => $valueTarget, 'seq' => $seq, 'body' => $body); + if (null !== $else) { + $nodes['else'] = $else; + } + + parent::__construct($nodes, array('with_loop' => true, 'ifexpr' => null !== $ifexpr), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write("\$context['_parent'] = \$context;\n") + ->write("\$context['_seq'] = twig_ensure_traversable(") + ->subcompile($this->getNode('seq')) + ->raw(");\n") + ; + + if ($this->hasNode('else')) { + $compiler->write("\$context['_iterated'] = false;\n"); + } + + if ($this->getAttribute('with_loop')) { + $compiler + ->write("\$context['loop'] = array(\n") + ->write(" 'parent' => \$context['_parent'],\n") + ->write(" 'index0' => 0,\n") + ->write(" 'index' => 1,\n") + ->write(" 'first' => true,\n") + ->write(");\n") + ; + + if (!$this->getAttribute('ifexpr')) { + $compiler + ->write("if (is_array(\$context['_seq']) || (is_object(\$context['_seq']) && \$context['_seq'] instanceof Countable)) {\n") + ->indent() + ->write("\$length = count(\$context['_seq']);\n") + ->write("\$context['loop']['revindex0'] = \$length - 1;\n") + ->write("\$context['loop']['revindex'] = \$length;\n") + ->write("\$context['loop']['length'] = \$length;\n") + ->write("\$context['loop']['last'] = 1 === \$length;\n") + ->outdent() + ->write("}\n") + ; + } + } + + $this->loop->setAttribute('else', $this->hasNode('else')); + $this->loop->setAttribute('with_loop', $this->getAttribute('with_loop')); + $this->loop->setAttribute('ifexpr', $this->getAttribute('ifexpr')); + + $compiler + ->write("foreach (\$context['_seq'] as ") + ->subcompile($this->getNode('key_target')) + ->raw(' => ') + ->subcompile($this->getNode('value_target')) + ->raw(") {\n") + ->indent() + ->subcompile($this->getNode('body')) + ->outdent() + ->write("}\n") + ; + + if ($this->hasNode('else')) { + $compiler + ->write("if (!\$context['_iterated']) {\n") + ->indent() + ->subcompile($this->getNode('else')) + ->outdent() + ->write("}\n") + ; + } + + $compiler->write("\$_parent = \$context['_parent'];\n"); + + // remove some "private" loop variables (needed for nested loops) + $compiler->write('unset($context[\'_seq\'], $context[\'_iterated\'], $context[\''.$this->getNode('key_target')->getAttribute('name').'\'], $context[\''.$this->getNode('value_target')->getAttribute('name').'\'], $context[\'_parent\'], $context[\'loop\']);'."\n"); + + // keep the values set in the inner context for variables defined in the outer context + $compiler->write("\$context = array_intersect_key(\$context, \$_parent) + \$_parent;\n"); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/ForLoop.php b/system/vendor/twig/twig/lib/Twig/Node/ForLoop.php new file mode 100644 index 0000000..ab0215e --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/ForLoop.php @@ -0,0 +1,50 @@ + + */ +class Twig_Node_ForLoop extends Twig_Node +{ + public function __construct($lineno, $tag = null) + { + parent::__construct(array(), array('with_loop' => false, 'ifexpr' => false, 'else' => false), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + if ($this->getAttribute('else')) { + $compiler->write("\$context['_iterated'] = true;\n"); + } + + if ($this->getAttribute('with_loop')) { + $compiler + ->write("++\$context['loop']['index0'];\n") + ->write("++\$context['loop']['index'];\n") + ->write("\$context['loop']['first'] = false;\n") + ; + + if (!$this->getAttribute('ifexpr')) { + $compiler + ->write("if (isset(\$context['loop']['length'])) {\n") + ->indent() + ->write("--\$context['loop']['revindex0'];\n") + ->write("--\$context['loop']['revindex'];\n") + ->write("\$context['loop']['last'] = 0 === \$context['loop']['revindex0'];\n") + ->outdent() + ->write("}\n") + ; + } + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/If.php b/system/vendor/twig/twig/lib/Twig/Node/If.php new file mode 100644 index 0000000..9cd78f4 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/If.php @@ -0,0 +1,66 @@ + + */ +class Twig_Node_If extends Twig_Node +{ + public function __construct(Twig_NodeInterface $tests, Twig_NodeInterface $else = null, $lineno, $tag = null) + { + $nodes = array('tests' => $tests); + if (null !== $else) { + $nodes['else'] = $else; + } + + parent::__construct($nodes, array(), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler->addDebugInfo($this); + for ($i = 0, $count = count($this->getNode('tests')); $i < $count; $i += 2) { + if ($i > 0) { + $compiler + ->outdent() + ->write('} elseif (') + ; + } else { + $compiler + ->write('if (') + ; + } + + $compiler + ->subcompile($this->getNode('tests')->getNode($i)) + ->raw(") {\n") + ->indent() + ->subcompile($this->getNode('tests')->getNode($i + 1)) + ; + } + + if ($this->hasNode('else')) { + $compiler + ->outdent() + ->write("} else {\n") + ->indent() + ->subcompile($this->getNode('else')) + ; + } + + $compiler + ->outdent() + ->write("}\n"); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Import.php b/system/vendor/twig/twig/lib/Twig/Node/Import.php new file mode 100644 index 0000000..759bb5c --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Import.php @@ -0,0 +1,49 @@ + + */ +class Twig_Node_Import extends Twig_Node +{ + public function __construct(Twig_Node_Expression $expr, Twig_Node_Expression $var, $lineno, $tag = null) + { + parent::__construct(array('expr' => $expr, 'var' => $var), array(), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write('') + ->subcompile($this->getNode('var')) + ->raw(' = ') + ; + + if ($this->getNode('expr') instanceof Twig_Node_Expression_Name && '_self' === $this->getNode('expr')->getAttribute('name')) { + $compiler->raw('$this'); + } else { + $compiler + ->raw('$this->loadTemplate(') + ->subcompile($this->getNode('expr')) + ->raw(', ') + ->repr($this->getTemplateName()) + ->raw(', ') + ->repr($this->getTemplateLine()) + ->raw(')') + ; + } + + $compiler->raw(";\n"); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Include.php b/system/vendor/twig/twig/lib/Twig/Node/Include.php new file mode 100644 index 0000000..15a27ca --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Include.php @@ -0,0 +1,88 @@ + + */ +class Twig_Node_Include extends Twig_Node implements Twig_NodeOutputInterface +{ + public function __construct(Twig_Node_Expression $expr, Twig_Node_Expression $variables = null, $only = false, $ignoreMissing = false, $lineno, $tag = null) + { + $nodes = array('expr' => $expr); + if (null !== $variables) { + $nodes['variables'] = $variables; + } + + parent::__construct($nodes, array('only' => (bool) $only, 'ignore_missing' => (bool) $ignoreMissing), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler->addDebugInfo($this); + + if ($this->getAttribute('ignore_missing')) { + $compiler + ->write("try {\n") + ->indent() + ; + } + + $this->addGetTemplate($compiler); + + $compiler->raw('->display('); + + $this->addTemplateArguments($compiler); + + $compiler->raw(");\n"); + + if ($this->getAttribute('ignore_missing')) { + $compiler + ->outdent() + ->write("} catch (Twig_Error_Loader \$e) {\n") + ->indent() + ->write("// ignore missing template\n") + ->outdent() + ->write("}\n\n") + ; + } + } + + protected function addGetTemplate(Twig_Compiler $compiler) + { + $compiler + ->write('$this->loadTemplate(') + ->subcompile($this->getNode('expr')) + ->raw(', ') + ->repr($this->getTemplateName()) + ->raw(', ') + ->repr($this->getTemplateLine()) + ->raw(')') + ; + } + + protected function addTemplateArguments(Twig_Compiler $compiler) + { + if (!$this->hasNode('variables')) { + $compiler->raw(false === $this->getAttribute('only') ? '$context' : 'array()'); + } elseif (false === $this->getAttribute('only')) { + $compiler + ->raw('array_merge($context, ') + ->subcompile($this->getNode('variables')) + ->raw(')') + ; + } else { + $compiler->subcompile($this->getNode('variables')); + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Macro.php b/system/vendor/twig/twig/lib/Twig/Node/Macro.php new file mode 100644 index 0000000..e9e1421 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Macro.php @@ -0,0 +1,123 @@ + + */ +class Twig_Node_Macro extends Twig_Node +{ + const VARARGS_NAME = 'varargs'; + + public function __construct($name, Twig_NodeInterface $body, Twig_NodeInterface $arguments, $lineno, $tag = null) + { + foreach ($arguments as $argumentName => $argument) { + if (self::VARARGS_NAME === $argumentName) { + throw new Twig_Error_Syntax(sprintf('The argument "%s" in macro "%s" cannot be defined because the variable "%s" is reserved for arbitrary arguments.', self::VARARGS_NAME, $name, self::VARARGS_NAME), $argument->getTemplateLine()); + } + } + + parent::__construct(array('body' => $body, 'arguments' => $arguments), array('name' => $name), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write(sprintf('public function get%s(', $this->getAttribute('name'))) + ; + + $count = count($this->getNode('arguments')); + $pos = 0; + foreach ($this->getNode('arguments') as $name => $default) { + $compiler + ->raw('$__'.$name.'__ = ') + ->subcompile($default) + ; + + if (++$pos < $count) { + $compiler->raw(', '); + } + } + + if (PHP_VERSION_ID >= 50600) { + if ($count) { + $compiler->raw(', '); + } + + $compiler->raw('...$__varargs__'); + } + + $compiler + ->raw(")\n") + ->write("{\n") + ->indent() + ; + + $compiler + ->write("\$context = \$this->env->mergeGlobals(array(\n") + ->indent() + ; + + foreach ($this->getNode('arguments') as $name => $default) { + $compiler + ->write('') + ->string($name) + ->raw(' => $__'.$name.'__') + ->raw(",\n") + ; + } + + $compiler + ->write('') + ->string(self::VARARGS_NAME) + ->raw(' => ') + ; + + if (PHP_VERSION_ID >= 50600) { + $compiler->raw("\$__varargs__,\n"); + } else { + $compiler + ->raw('func_num_args() > ') + ->repr($count) + ->raw(' ? array_slice(func_get_args(), ') + ->repr($count) + ->raw(") : array(),\n") + ; + } + + $compiler + ->outdent() + ->write("));\n\n") + ->write("\$blocks = array();\n\n") + ->write("ob_start();\n") + ->write("try {\n") + ->indent() + ->subcompile($this->getNode('body')) + ->outdent() + ->write("} catch (Exception \$e) {\n") + ->indent() + ->write("ob_end_clean();\n\n") + ->write("throw \$e;\n") + ->outdent() + ->write("} catch (Throwable \$e) {\n") + ->indent() + ->write("ob_end_clean();\n\n") + ->write("throw \$e;\n") + ->outdent() + ->write("}\n\n") + ->write("return ('' === \$tmp = ob_get_clean()) ? '' : new Twig_Markup(\$tmp, \$this->env->getCharset());\n") + ->outdent() + ->write("}\n\n") + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Module.php b/system/vendor/twig/twig/lib/Twig/Node/Module.php new file mode 100644 index 0000000..5bfcc92 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Module.php @@ -0,0 +1,459 @@ + + */ +class Twig_Node_Module extends Twig_Node +{ + private $source; + + public function __construct(Twig_NodeInterface $body, Twig_Node_Expression $parent = null, Twig_NodeInterface $blocks, Twig_NodeInterface $macros, Twig_NodeInterface $traits, $embeddedTemplates, $name, $source = '') + { + if (!$name instanceof Twig_Source) { + @trigger_error(sprintf('Passing a string as the $name argument of %s() is deprecated since version 1.27. Pass a Twig_Source instance instead.', __METHOD__), E_USER_DEPRECATED); + $this->source = new Twig_Source($source, $name); + } else { + $this->source = $name; + } + + $nodes = array( + 'body' => $body, + 'blocks' => $blocks, + 'macros' => $macros, + 'traits' => $traits, + 'display_start' => new Twig_Node(), + 'display_end' => new Twig_Node(), + 'constructor_start' => new Twig_Node(), + 'constructor_end' => new Twig_Node(), + 'class_end' => new Twig_Node(), + ); + if (null !== $parent) { + $nodes['parent'] = $parent; + } + + // embedded templates are set as attributes so that they are only visited once by the visitors + parent::__construct($nodes, array( + // source to be remove in 2.0 + 'source' => $this->source->getCode(), + // filename to be remove in 2.0 (use getTemplateName() instead) + 'filename' => $this->source->getName(), + 'index' => null, + 'embedded_templates' => $embeddedTemplates, + ), 1); + + // populate the template name of all node children + $this->setTemplateName($this->source->getName()); + } + + public function setIndex($index) + { + $this->setAttribute('index', $index); + } + + public function compile(Twig_Compiler $compiler) + { + $this->compileTemplate($compiler); + + foreach ($this->getAttribute('embedded_templates') as $template) { + $compiler->subcompile($template); + } + } + + protected function compileTemplate(Twig_Compiler $compiler) + { + if (!$this->getAttribute('index')) { + $compiler->write('compileClassHeader($compiler); + + if ( + count($this->getNode('blocks')) + || count($this->getNode('traits')) + || !$this->hasNode('parent') + || $this->getNode('parent') instanceof Twig_Node_Expression_Constant + || count($this->getNode('constructor_start')) + || count($this->getNode('constructor_end')) + ) { + $this->compileConstructor($compiler); + } + + $this->compileGetParent($compiler); + + $this->compileDisplay($compiler); + + $compiler->subcompile($this->getNode('blocks')); + + $this->compileMacros($compiler); + + $this->compileGetTemplateName($compiler); + + $this->compileIsTraitable($compiler); + + $this->compileDebugInfo($compiler); + + $this->compileGetSource($compiler); + + $this->compileGetSourceContext($compiler); + + $this->compileClassFooter($compiler); + } + + protected function compileGetParent(Twig_Compiler $compiler) + { + if (!$this->hasNode('parent')) { + return; + } + $parent = $this->getNode('parent'); + + $compiler + ->write("protected function doGetParent(array \$context)\n", "{\n") + ->indent() + ->addDebugInfo($parent) + ->write('return ') + ; + + if ($parent instanceof Twig_Node_Expression_Constant) { + $compiler->subcompile($parent); + } else { + $compiler + ->raw('$this->loadTemplate(') + ->subcompile($parent) + ->raw(', ') + ->repr($this->source->getName()) + ->raw(', ') + ->repr($parent->getTemplateLine()) + ->raw(')') + ; + } + + $compiler + ->raw(";\n") + ->outdent() + ->write("}\n\n") + ; + } + + protected function compileClassHeader(Twig_Compiler $compiler) + { + $compiler + ->write("\n\n") + // if the template name contains */, add a blank to avoid a PHP parse error + ->write('/* '.str_replace('*/', '* /', $this->source->getName())." */\n") + ->write('class '.$compiler->getEnvironment()->getTemplateClass($this->source->getName(), $this->getAttribute('index'))) + ->raw(sprintf(" extends %s\n", $compiler->getEnvironment()->getBaseTemplateClass())) + ->write("{\n") + ->indent() + ; + } + + protected function compileConstructor(Twig_Compiler $compiler) + { + $compiler + ->write("public function __construct(Twig_Environment \$env)\n", "{\n") + ->indent() + ->subcompile($this->getNode('constructor_start')) + ->write("parent::__construct(\$env);\n\n") + ; + + // parent + if (!$this->hasNode('parent')) { + $compiler->write("\$this->parent = false;\n\n"); + } elseif (($parent = $this->getNode('parent')) && $parent instanceof Twig_Node_Expression_Constant) { + $compiler + ->addDebugInfo($parent) + ->write('$this->parent = $this->loadTemplate(') + ->subcompile($parent) + ->raw(', ') + ->repr($this->source->getName()) + ->raw(', ') + ->repr($parent->getTemplateLine()) + ->raw(");\n") + ; + } + + $countTraits = count($this->getNode('traits')); + if ($countTraits) { + // traits + foreach ($this->getNode('traits') as $i => $trait) { + $this->compileLoadTemplate($compiler, $trait->getNode('template'), sprintf('$_trait_%s', $i)); + + $compiler + ->addDebugInfo($trait->getNode('template')) + ->write(sprintf("if (!\$_trait_%s->isTraitable()) {\n", $i)) + ->indent() + ->write("throw new Twig_Error_Runtime('Template \"'.") + ->subcompile($trait->getNode('template')) + ->raw(".'\" cannot be used as a trait.');\n") + ->outdent() + ->write("}\n") + ->write(sprintf("\$_trait_%s_blocks = \$_trait_%s->getBlocks();\n\n", $i, $i)) + ; + + foreach ($trait->getNode('targets') as $key => $value) { + $compiler + ->write(sprintf('if (!isset($_trait_%s_blocks[', $i)) + ->string($key) + ->raw("])) {\n") + ->indent() + ->write("throw new Twig_Error_Runtime(sprintf('Block ") + ->string($key) + ->raw(' is not defined in trait ') + ->subcompile($trait->getNode('template')) + ->raw(".'));\n") + ->outdent() + ->write("}\n\n") + + ->write(sprintf('$_trait_%s_blocks[', $i)) + ->subcompile($value) + ->raw(sprintf('] = $_trait_%s_blocks[', $i)) + ->string($key) + ->raw(sprintf(']; unset($_trait_%s_blocks[', $i)) + ->string($key) + ->raw("]);\n\n") + ; + } + } + + if ($countTraits > 1) { + $compiler + ->write("\$this->traits = array_merge(\n") + ->indent() + ; + + for ($i = 0; $i < $countTraits; ++$i) { + $compiler + ->write(sprintf('$_trait_%s_blocks'.($i == $countTraits - 1 ? '' : ',')."\n", $i)) + ; + } + + $compiler + ->outdent() + ->write(");\n\n") + ; + } else { + $compiler + ->write("\$this->traits = \$_trait_0_blocks;\n\n") + ; + } + + $compiler + ->write("\$this->blocks = array_merge(\n") + ->indent() + ->write("\$this->traits,\n") + ->write("array(\n") + ; + } else { + $compiler + ->write("\$this->blocks = array(\n") + ; + } + + // blocks + $compiler + ->indent() + ; + + foreach ($this->getNode('blocks') as $name => $node) { + $compiler + ->write(sprintf("'%s' => array(\$this, 'block_%s'),\n", $name, $name)) + ; + } + + if ($countTraits) { + $compiler + ->outdent() + ->write(")\n") + ; + } + + $compiler + ->outdent() + ->write(");\n") + ->outdent() + ->subcompile($this->getNode('constructor_end')) + ->write("}\n\n") + ; + } + + protected function compileDisplay(Twig_Compiler $compiler) + { + $compiler + ->write("protected function doDisplay(array \$context, array \$blocks = array())\n", "{\n") + ->indent() + ->subcompile($this->getNode('display_start')) + ->subcompile($this->getNode('body')) + ; + + if ($this->hasNode('parent')) { + $parent = $this->getNode('parent'); + $compiler->addDebugInfo($parent); + if ($parent instanceof Twig_Node_Expression_Constant) { + $compiler->write('$this->parent'); + } else { + $compiler->write('$this->getParent($context)'); + } + $compiler->raw("->display(\$context, array_merge(\$this->blocks, \$blocks));\n"); + } + + $compiler + ->subcompile($this->getNode('display_end')) + ->outdent() + ->write("}\n\n") + ; + } + + protected function compileClassFooter(Twig_Compiler $compiler) + { + $compiler + ->subcompile($this->getNode('class_end')) + ->outdent() + ->write("}\n") + ; + } + + protected function compileMacros(Twig_Compiler $compiler) + { + $compiler->subcompile($this->getNode('macros')); + } + + protected function compileGetTemplateName(Twig_Compiler $compiler) + { + $compiler + ->write("public function getTemplateName()\n", "{\n") + ->indent() + ->write('return ') + ->repr($this->source->getName()) + ->raw(";\n") + ->outdent() + ->write("}\n\n") + ; + } + + protected function compileIsTraitable(Twig_Compiler $compiler) + { + // A template can be used as a trait if: + // * it has no parent + // * it has no macros + // * it has no body + // + // Put another way, a template can be used as a trait if it + // only contains blocks and use statements. + $traitable = !$this->hasNode('parent') && 0 === count($this->getNode('macros')); + if ($traitable) { + if ($this->getNode('body') instanceof Twig_Node_Body) { + $nodes = $this->getNode('body')->getNode(0); + } else { + $nodes = $this->getNode('body'); + } + + if (!count($nodes)) { + $nodes = new Twig_Node(array($nodes)); + } + + foreach ($nodes as $node) { + if (!count($node)) { + continue; + } + + if ($node instanceof Twig_Node_Text && ctype_space($node->getAttribute('data'))) { + continue; + } + + if ($node instanceof Twig_Node_BlockReference) { + continue; + } + + $traitable = false; + break; + } + } + + if ($traitable) { + return; + } + + $compiler + ->write("public function isTraitable()\n", "{\n") + ->indent() + ->write(sprintf("return %s;\n", $traitable ? 'true' : 'false')) + ->outdent() + ->write("}\n\n") + ; + } + + protected function compileDebugInfo(Twig_Compiler $compiler) + { + $compiler + ->write("public function getDebugInfo()\n", "{\n") + ->indent() + ->write(sprintf("return %s;\n", str_replace("\n", '', var_export(array_reverse($compiler->getDebugInfo(), true), true)))) + ->outdent() + ->write("}\n\n") + ; + } + + protected function compileGetSource(Twig_Compiler $compiler) + { + $compiler + ->write("/** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */\n") + ->write("public function getSource()\n", "{\n") + ->indent() + ->write("@trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED);\n\n") + ->write('return $this->getSourceContext()->getCode();') + ->raw("\n") + ->outdent() + ->write("}\n\n") + ; + } + + protected function compileGetSourceContext(Twig_Compiler $compiler) + { + $compiler + ->write("public function getSourceContext()\n", "{\n") + ->indent() + ->write('return new Twig_Source(') + ->string($compiler->getEnvironment()->isDebug() ? $this->source->getCode() : '') + ->raw(', ') + ->string($this->source->getName()) + ->raw(', ') + ->string($this->source->getPath()) + ->raw(");\n") + ->outdent() + ->write("}\n") + ; + } + + protected function compileLoadTemplate(Twig_Compiler $compiler, $node, $var) + { + if ($node instanceof Twig_Node_Expression_Constant) { + $compiler + ->write(sprintf('%s = $this->loadTemplate(', $var)) + ->subcompile($node) + ->raw(', ') + ->repr($node->getTemplateName()) + ->raw(', ') + ->repr($node->getTemplateLine()) + ->raw(");\n") + ; + } else { + throw new LogicException('Trait templates can only be constant nodes.'); + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Print.php b/system/vendor/twig/twig/lib/Twig/Node/Print.php new file mode 100644 index 0000000..9e317c8 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Print.php @@ -0,0 +1,34 @@ + + */ +class Twig_Node_Print extends Twig_Node implements Twig_NodeOutputInterface +{ + public function __construct(Twig_Node_Expression $expr, $lineno, $tag = null) + { + parent::__construct(array('expr' => $expr), array(), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write('echo ') + ->subcompile($this->getNode('expr')) + ->raw(";\n") + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Sandbox.php b/system/vendor/twig/twig/lib/Twig/Node/Sandbox.php new file mode 100644 index 0000000..658e068 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Sandbox.php @@ -0,0 +1,42 @@ + + */ +class Twig_Node_Sandbox extends Twig_Node +{ + public function __construct(Twig_NodeInterface $body, $lineno, $tag = null) + { + parent::__construct(array('body' => $body), array(), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write("\$sandbox = \$this->env->getExtension('Twig_Extension_Sandbox');\n") + ->write("if (!\$alreadySandboxed = \$sandbox->isSandboxed()) {\n") + ->indent() + ->write("\$sandbox->enableSandbox();\n") + ->outdent() + ->write("}\n") + ->subcompile($this->getNode('body')) + ->write("if (!\$alreadySandboxed) {\n") + ->indent() + ->write("\$sandbox->disableSandbox();\n") + ->outdent() + ->write("}\n") + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php b/system/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php new file mode 100644 index 0000000..fba0051 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/SandboxedPrint.php @@ -0,0 +1,49 @@ + + */ +class Twig_Node_SandboxedPrint extends Twig_Node_Print +{ + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write('echo $this->env->getExtension(\'Twig_Extension_Sandbox\')->ensureToStringAllowed(') + ->subcompile($this->getNode('expr')) + ->raw(");\n") + ; + } + + /** + * Removes node filters. + * + * This is mostly needed when another visitor adds filters (like the escaper one). + * + * @return Twig_Node + */ + protected function removeNodeFilter(Twig_Node $node) + { + if ($node instanceof Twig_Node_Expression_Filter) { + return $this->removeNodeFilter($node->getNode('node')); + } + + return $node; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Set.php b/system/vendor/twig/twig/lib/Twig/Node/Set.php new file mode 100644 index 0000000..36e05cc --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Set.php @@ -0,0 +1,96 @@ + + */ +class Twig_Node_Set extends Twig_Node implements Twig_NodeCaptureInterface +{ + public function __construct($capture, Twig_NodeInterface $names, Twig_NodeInterface $values, $lineno, $tag = null) + { + parent::__construct(array('names' => $names, 'values' => $values), array('capture' => $capture, 'safe' => false), $lineno, $tag); + + /* + * Optimizes the node when capture is used for a large block of text. + * + * {% set foo %}foo{% endset %} is compiled to $context['foo'] = new Twig_Markup("foo"); + */ + if ($this->getAttribute('capture')) { + $this->setAttribute('safe', true); + + $values = $this->getNode('values'); + if ($values instanceof Twig_Node_Text) { + $this->setNode('values', new Twig_Node_Expression_Constant($values->getAttribute('data'), $values->getTemplateLine())); + $this->setAttribute('capture', false); + } + } + } + + public function compile(Twig_Compiler $compiler) + { + $compiler->addDebugInfo($this); + + if (count($this->getNode('names')) > 1) { + $compiler->write('list('); + foreach ($this->getNode('names') as $idx => $node) { + if ($idx) { + $compiler->raw(', '); + } + + $compiler->subcompile($node); + } + $compiler->raw(')'); + } else { + if ($this->getAttribute('capture')) { + $compiler + ->write("ob_start();\n") + ->subcompile($this->getNode('values')) + ; + } + + $compiler->subcompile($this->getNode('names'), false); + + if ($this->getAttribute('capture')) { + $compiler->raw(" = ('' === \$tmp = ob_get_clean()) ? '' : new Twig_Markup(\$tmp, \$this->env->getCharset())"); + } + } + + if (!$this->getAttribute('capture')) { + $compiler->raw(' = '); + + if (count($this->getNode('names')) > 1) { + $compiler->write('array('); + foreach ($this->getNode('values') as $idx => $value) { + if ($idx) { + $compiler->raw(', '); + } + + $compiler->subcompile($value); + } + $compiler->raw(')'); + } else { + if ($this->getAttribute('safe')) { + $compiler + ->raw("('' === \$tmp = ") + ->subcompile($this->getNode('values')) + ->raw(") ? '' : new Twig_Markup(\$tmp, \$this->env->getCharset())") + ; + } else { + $compiler->subcompile($this->getNode('values')); + } + } + } + + $compiler->raw(";\n"); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/SetTemp.php b/system/vendor/twig/twig/lib/Twig/Node/SetTemp.php new file mode 100644 index 0000000..0f43c7d --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/SetTemp.php @@ -0,0 +1,35 @@ + $name), $lineno); + } + + public function compile(Twig_Compiler $compiler) + { + $name = $this->getAttribute('name'); + $compiler + ->addDebugInfo($this) + ->write('if (isset($context[') + ->string($name) + ->raw('])) { $_') + ->raw($name) + ->raw('_ = $context[') + ->repr($name) + ->raw(']; } else { $_') + ->raw($name) + ->raw("_ = null; }\n") + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Spaceless.php b/system/vendor/twig/twig/lib/Twig/Node/Spaceless.php new file mode 100644 index 0000000..00419e2 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Spaceless.php @@ -0,0 +1,35 @@ + + */ +class Twig_Node_Spaceless extends Twig_Node +{ + public function __construct(Twig_NodeInterface $body, $lineno, $tag = 'spaceless') + { + parent::__construct(array('body' => $body), array(), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write("ob_start();\n") + ->subcompile($this->getNode('body')) + ->write("echo trim(preg_replace('/>\s+<', ob_get_clean()));\n") + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/Text.php b/system/vendor/twig/twig/lib/Twig/Node/Text.php new file mode 100644 index 0000000..2c013cd --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/Text.php @@ -0,0 +1,34 @@ + + */ +class Twig_Node_Text extends Twig_Node implements Twig_NodeOutputInterface +{ + public function __construct($data, $lineno) + { + parent::__construct(array(), array('data' => $data), $lineno); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->addDebugInfo($this) + ->write('echo ') + ->string($this->getAttribute('data')) + ->raw(";\n") + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Node/With.php b/system/vendor/twig/twig/lib/Twig/Node/With.php new file mode 100644 index 0000000..4978f37 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Node/With.php @@ -0,0 +1,62 @@ + + */ +class Twig_Node_With extends Twig_Node +{ + public function __construct(Twig_Node $body, Twig_Node $variables = null, $only = false, $lineno, $tag = null) + { + $nodes = array('body' => $body); + if (null !== $variables) { + $nodes['variables'] = $variables; + } + + parent::__construct($nodes, array('only' => (bool) $only), $lineno, $tag); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler->addDebugInfo($this); + + if ($this->hasNode('variables')) { + $varsName = $compiler->getVarName(); + $compiler + ->write(sprintf('$%s = ', $varsName)) + ->subcompile($this->getNode('variables')) + ->raw(";\n") + ->write(sprintf("if (!is_array(\$%s)) {\n", $varsName)) + ->indent() + ->write("throw new Twig_Error_Runtime('Variables passed to the \"with\" tag must be a hash.');\n") + ->outdent() + ->write("}\n") + ; + + if ($this->getAttribute('only')) { + $compiler->write("\$context = array('_parent' => \$context);\n"); + } else { + $compiler->write("\$context['_parent'] = \$context;\n"); + } + + $compiler->write(sprintf("\$context = array_merge(\$context, \$%s);\n", $varsName)); + } else { + $compiler->write("\$context['_parent'] = \$context;\n"); + } + + $compiler + ->subcompile($this->getNode('body')) + ->write("\$context = \$context['_parent'];\n") + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/NodeCaptureInterface.php b/system/vendor/twig/twig/lib/Twig/NodeCaptureInterface.php new file mode 100644 index 0000000..97ffb6a --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/NodeCaptureInterface.php @@ -0,0 +1,19 @@ + + */ +interface Twig_NodeCaptureInterface +{ +} diff --git a/system/vendor/twig/twig/lib/Twig/NodeInterface.php b/system/vendor/twig/twig/lib/Twig/NodeInterface.php new file mode 100644 index 0000000..78e758b --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/NodeInterface.php @@ -0,0 +1,32 @@ + + * + * @deprecated since 1.12 (to be removed in 3.0) + */ +interface Twig_NodeInterface extends Countable, IteratorAggregate +{ + /** + * Compiles the node to PHP. + */ + public function compile(Twig_Compiler $compiler); + + /** + * @deprecated since 1.27 (to be removed in 2.0) + */ + public function getLine(); + + public function getNodeTag(); +} diff --git a/system/vendor/twig/twig/lib/Twig/NodeOutputInterface.php b/system/vendor/twig/twig/lib/Twig/NodeOutputInterface.php new file mode 100644 index 0000000..e6bbd96 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/NodeOutputInterface.php @@ -0,0 +1,19 @@ + + */ +interface Twig_NodeOutputInterface +{ +} diff --git a/system/vendor/twig/twig/lib/Twig/NodeTraverser.php b/system/vendor/twig/twig/lib/Twig/NodeTraverser.php new file mode 100644 index 0000000..3532217 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/NodeTraverser.php @@ -0,0 +1,82 @@ + + */ +class Twig_NodeTraverser +{ + protected $env; + protected $visitors = array(); + + /** + * @param Twig_Environment $env + * @param Twig_NodeVisitorInterface[] $visitors + */ + public function __construct(Twig_Environment $env, array $visitors = array()) + { + $this->env = $env; + foreach ($visitors as $visitor) { + $this->addVisitor($visitor); + } + } + + public function addVisitor(Twig_NodeVisitorInterface $visitor) + { + if (!isset($this->visitors[$visitor->getPriority()])) { + $this->visitors[$visitor->getPriority()] = array(); + } + + $this->visitors[$visitor->getPriority()][] = $visitor; + } + + /** + * Traverses a node and calls the registered visitors. + * + * @return Twig_NodeInterface + */ + public function traverse(Twig_NodeInterface $node) + { + ksort($this->visitors); + foreach ($this->visitors as $visitors) { + foreach ($visitors as $visitor) { + $node = $this->traverseForVisitor($visitor, $node); + } + } + + return $node; + } + + protected function traverseForVisitor(Twig_NodeVisitorInterface $visitor, Twig_NodeInterface $node = null) + { + if (null === $node) { + return; + } + + $node = $visitor->enterNode($node, $this->env); + + foreach ($node as $k => $n) { + if (false !== $n = $this->traverseForVisitor($visitor, $n)) { + $node->setNode($k, $n); + } else { + $node->removeNode($k); + } + } + + return $visitor->leaveNode($node, $this->env); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php b/system/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php new file mode 100644 index 0000000..7169f6f --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/NodeVisitor/Escaper.php @@ -0,0 +1,152 @@ + + */ +class Twig_NodeVisitor_Escaper extends Twig_BaseNodeVisitor +{ + protected $statusStack = array(); + protected $blocks = array(); + protected $safeAnalysis; + protected $traverser; + protected $defaultStrategy = false; + protected $safeVars = array(); + + public function __construct() + { + $this->safeAnalysis = new Twig_NodeVisitor_SafeAnalysis(); + } + + protected function doEnterNode(Twig_Node $node, Twig_Environment $env) + { + if ($node instanceof Twig_Node_Module) { + if ($env->hasExtension('Twig_Extension_Escaper') && $defaultStrategy = $env->getExtension('Twig_Extension_Escaper')->getDefaultStrategy($node->getTemplateName())) { + $this->defaultStrategy = $defaultStrategy; + } + $this->safeVars = array(); + $this->blocks = array(); + } elseif ($node instanceof Twig_Node_AutoEscape) { + $this->statusStack[] = $node->getAttribute('value'); + } elseif ($node instanceof Twig_Node_Block) { + $this->statusStack[] = isset($this->blocks[$node->getAttribute('name')]) ? $this->blocks[$node->getAttribute('name')] : $this->needEscaping($env); + } elseif ($node instanceof Twig_Node_Import) { + $this->safeVars[] = $node->getNode('var')->getAttribute('name'); + } + + return $node; + } + + protected function doLeaveNode(Twig_Node $node, Twig_Environment $env) + { + if ($node instanceof Twig_Node_Module) { + $this->defaultStrategy = false; + $this->safeVars = array(); + $this->blocks = array(); + } elseif ($node instanceof Twig_Node_Expression_Filter) { + return $this->preEscapeFilterNode($node, $env); + } elseif ($node instanceof Twig_Node_Print) { + return $this->escapePrintNode($node, $env, $this->needEscaping($env)); + } + + if ($node instanceof Twig_Node_AutoEscape || $node instanceof Twig_Node_Block) { + array_pop($this->statusStack); + } elseif ($node instanceof Twig_Node_BlockReference) { + $this->blocks[$node->getAttribute('name')] = $this->needEscaping($env); + } + + return $node; + } + + protected function escapePrintNode(Twig_Node_Print $node, Twig_Environment $env, $type) + { + if (false === $type) { + return $node; + } + + $expression = $node->getNode('expr'); + + if ($this->isSafeFor($type, $expression, $env)) { + return $node; + } + + $class = get_class($node); + + return new $class( + $this->getEscaperFilter($type, $expression), + $node->getTemplateLine() + ); + } + + protected function preEscapeFilterNode(Twig_Node_Expression_Filter $filter, Twig_Environment $env) + { + $name = $filter->getNode('filter')->getAttribute('value'); + + $type = $env->getFilter($name)->getPreEscape(); + if (null === $type) { + return $filter; + } + + $node = $filter->getNode('node'); + if ($this->isSafeFor($type, $node, $env)) { + return $filter; + } + + $filter->setNode('node', $this->getEscaperFilter($type, $node)); + + return $filter; + } + + protected function isSafeFor($type, Twig_NodeInterface $expression, $env) + { + $safe = $this->safeAnalysis->getSafe($expression); + + if (null === $safe) { + if (null === $this->traverser) { + $this->traverser = new Twig_NodeTraverser($env, array($this->safeAnalysis)); + } + + $this->safeAnalysis->setSafeVars($this->safeVars); + + $this->traverser->traverse($expression); + $safe = $this->safeAnalysis->getSafe($expression); + } + + return in_array($type, $safe) || in_array('all', $safe); + } + + protected function needEscaping(Twig_Environment $env) + { + if (count($this->statusStack)) { + return $this->statusStack[count($this->statusStack) - 1]; + } + + return $this->defaultStrategy ? $this->defaultStrategy : false; + } + + protected function getEscaperFilter($type, Twig_NodeInterface $node) + { + $line = $node->getTemplateLine(); + $name = new Twig_Node_Expression_Constant('escape', $line); + $args = new Twig_Node(array(new Twig_Node_Expression_Constant((string) $type, $line), new Twig_Node_Expression_Constant(null, $line), new Twig_Node_Expression_Constant(true, $line))); + + return new Twig_Node_Expression_Filter($node, $name, $args, $line); + } + + public function getPriority() + { + return 0; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php b/system/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php new file mode 100644 index 0000000..43453c4 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/NodeVisitor/Optimizer.php @@ -0,0 +1,251 @@ + + */ +class Twig_NodeVisitor_Optimizer extends Twig_BaseNodeVisitor +{ + const OPTIMIZE_ALL = -1; + const OPTIMIZE_NONE = 0; + const OPTIMIZE_FOR = 2; + const OPTIMIZE_RAW_FILTER = 4; + const OPTIMIZE_VAR_ACCESS = 8; + + protected $loops = array(); + protected $loopsTargets = array(); + protected $optimizers; + protected $prependedNodes = array(); + protected $inABody = false; + + /** + * @param int $optimizers The optimizer mode + */ + public function __construct($optimizers = -1) + { + if (!is_int($optimizers) || $optimizers > (self::OPTIMIZE_FOR | self::OPTIMIZE_RAW_FILTER | self::OPTIMIZE_VAR_ACCESS)) { + throw new InvalidArgumentException(sprintf('Optimizer mode "%s" is not valid.', $optimizers)); + } + + $this->optimizers = $optimizers; + } + + protected function doEnterNode(Twig_Node $node, Twig_Environment $env) + { + if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) { + $this->enterOptimizeFor($node, $env); + } + + if (PHP_VERSION_ID < 50400 && self::OPTIMIZE_VAR_ACCESS === (self::OPTIMIZE_VAR_ACCESS & $this->optimizers) && !$env->isStrictVariables() && !$env->hasExtension('Twig_Extension_Sandbox')) { + if ($this->inABody) { + if (!$node instanceof Twig_Node_Expression) { + if (get_class($node) !== 'Twig_Node') { + array_unshift($this->prependedNodes, array()); + } + } else { + $node = $this->optimizeVariables($node, $env); + } + } elseif ($node instanceof Twig_Node_Body) { + $this->inABody = true; + } + } + + return $node; + } + + protected function doLeaveNode(Twig_Node $node, Twig_Environment $env) + { + $expression = $node instanceof Twig_Node_Expression; + + if (self::OPTIMIZE_FOR === (self::OPTIMIZE_FOR & $this->optimizers)) { + $this->leaveOptimizeFor($node, $env); + } + + if (self::OPTIMIZE_RAW_FILTER === (self::OPTIMIZE_RAW_FILTER & $this->optimizers)) { + $node = $this->optimizeRawFilter($node, $env); + } + + $node = $this->optimizePrintNode($node, $env); + + if (self::OPTIMIZE_VAR_ACCESS === (self::OPTIMIZE_VAR_ACCESS & $this->optimizers) && !$env->isStrictVariables() && !$env->hasExtension('Twig_Extension_Sandbox')) { + if ($node instanceof Twig_Node_Body) { + $this->inABody = false; + } elseif ($this->inABody) { + if (!$expression && get_class($node) !== 'Twig_Node' && $prependedNodes = array_shift($this->prependedNodes)) { + $nodes = array(); + foreach (array_unique($prependedNodes) as $name) { + $nodes[] = new Twig_Node_SetTemp($name, $node->getTemplateLine()); + } + + $nodes[] = $node; + $node = new Twig_Node($nodes); + } + } + } + + return $node; + } + + protected function optimizeVariables(Twig_NodeInterface $node, Twig_Environment $env) + { + if ('Twig_Node_Expression_Name' === get_class($node) && $node->isSimple()) { + $this->prependedNodes[0][] = $node->getAttribute('name'); + + return new Twig_Node_Expression_TempName($node->getAttribute('name'), $node->getTemplateLine()); + } + + return $node; + } + + /** + * Optimizes print nodes. + * + * It replaces: + * + * * "echo $this->render(Parent)Block()" with "$this->display(Parent)Block()" + * + * @return Twig_NodeInterface + */ + protected function optimizePrintNode(Twig_NodeInterface $node, Twig_Environment $env) + { + if (!$node instanceof Twig_Node_Print) { + return $node; + } + + $exprNode = $node->getNode('expr'); + if ( + $exprNode instanceof Twig_Node_Expression_BlockReference || + $exprNode instanceof Twig_Node_Expression_Parent + ) { + $exprNode->setAttribute('output', true); + + return $exprNode; + } + + return $node; + } + + /** + * Removes "raw" filters. + * + * @return Twig_NodeInterface + */ + protected function optimizeRawFilter(Twig_NodeInterface $node, Twig_Environment $env) + { + if ($node instanceof Twig_Node_Expression_Filter && 'raw' == $node->getNode('filter')->getAttribute('value')) { + return $node->getNode('node'); + } + + return $node; + } + + /** + * Optimizes "for" tag by removing the "loop" variable creation whenever possible. + */ + protected function enterOptimizeFor(Twig_NodeInterface $node, Twig_Environment $env) + { + if ($node instanceof Twig_Node_For) { + // disable the loop variable by default + $node->setAttribute('with_loop', false); + array_unshift($this->loops, $node); + array_unshift($this->loopsTargets, $node->getNode('value_target')->getAttribute('name')); + array_unshift($this->loopsTargets, $node->getNode('key_target')->getAttribute('name')); + } elseif (!$this->loops) { + // we are outside a loop + return; + } + + // when do we need to add the loop variable back? + + // the loop variable is referenced for the current loop + elseif ($node instanceof Twig_Node_Expression_Name && 'loop' === $node->getAttribute('name')) { + $node->setAttribute('always_defined', true); + $this->addLoopToCurrent(); + } + + // optimize access to loop targets + elseif ($node instanceof Twig_Node_Expression_Name && in_array($node->getAttribute('name'), $this->loopsTargets)) { + $node->setAttribute('always_defined', true); + } + + // block reference + elseif ($node instanceof Twig_Node_BlockReference || $node instanceof Twig_Node_Expression_BlockReference) { + $this->addLoopToCurrent(); + } + + // include without the only attribute + elseif ($node instanceof Twig_Node_Include && !$node->getAttribute('only')) { + $this->addLoopToAll(); + } + + // include function without the with_context=false parameter + elseif ($node instanceof Twig_Node_Expression_Function + && 'include' === $node->getAttribute('name') + && (!$node->getNode('arguments')->hasNode('with_context') + || false !== $node->getNode('arguments')->getNode('with_context')->getAttribute('value') + ) + ) { + $this->addLoopToAll(); + } + + // the loop variable is referenced via an attribute + elseif ($node instanceof Twig_Node_Expression_GetAttr + && (!$node->getNode('attribute') instanceof Twig_Node_Expression_Constant + || 'parent' === $node->getNode('attribute')->getAttribute('value') + ) + && (true === $this->loops[0]->getAttribute('with_loop') + || ($node->getNode('node') instanceof Twig_Node_Expression_Name + && 'loop' === $node->getNode('node')->getAttribute('name') + ) + ) + ) { + $this->addLoopToAll(); + } + } + + /** + * Optimizes "for" tag by removing the "loop" variable creation whenever possible. + */ + protected function leaveOptimizeFor(Twig_NodeInterface $node, Twig_Environment $env) + { + if ($node instanceof Twig_Node_For) { + array_shift($this->loops); + array_shift($this->loopsTargets); + array_shift($this->loopsTargets); + } + } + + protected function addLoopToCurrent() + { + $this->loops[0]->setAttribute('with_loop', true); + } + + protected function addLoopToAll() + { + foreach ($this->loops as $loop) { + $loop->setAttribute('with_loop', true); + } + } + + public function getPriority() + { + return 255; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php b/system/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php new file mode 100644 index 0000000..6997f35 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/NodeVisitor/SafeAnalysis.php @@ -0,0 +1,148 @@ +safeVars = $safeVars; + } + + public function getSafe(Twig_NodeInterface $node) + { + $hash = spl_object_hash($node); + if (!isset($this->data[$hash])) { + return; + } + + foreach ($this->data[$hash] as $bucket) { + if ($bucket['key'] !== $node) { + continue; + } + + if (in_array('html_attr', $bucket['value'])) { + $bucket['value'][] = 'html'; + } + + return $bucket['value']; + } + } + + protected function setSafe(Twig_NodeInterface $node, array $safe) + { + $hash = spl_object_hash($node); + if (isset($this->data[$hash])) { + foreach ($this->data[$hash] as &$bucket) { + if ($bucket['key'] === $node) { + $bucket['value'] = $safe; + + return; + } + } + } + $this->data[$hash][] = array( + 'key' => $node, + 'value' => $safe, + ); + } + + protected function doEnterNode(Twig_Node $node, Twig_Environment $env) + { + return $node; + } + + protected function doLeaveNode(Twig_Node $node, Twig_Environment $env) + { + if ($node instanceof Twig_Node_Expression_Constant) { + // constants are marked safe for all + $this->setSafe($node, array('all')); + } elseif ($node instanceof Twig_Node_Expression_BlockReference) { + // blocks are safe by definition + $this->setSafe($node, array('all')); + } elseif ($node instanceof Twig_Node_Expression_Parent) { + // parent block is safe by definition + $this->setSafe($node, array('all')); + } elseif ($node instanceof Twig_Node_Expression_Conditional) { + // intersect safeness of both operands + $safe = $this->intersectSafe($this->getSafe($node->getNode('expr2')), $this->getSafe($node->getNode('expr3'))); + $this->setSafe($node, $safe); + } elseif ($node instanceof Twig_Node_Expression_Filter) { + // filter expression is safe when the filter is safe + $name = $node->getNode('filter')->getAttribute('value'); + $args = $node->getNode('arguments'); + if (false !== $filter = $env->getFilter($name)) { + $safe = $filter->getSafe($args); + if (null === $safe) { + $safe = $this->intersectSafe($this->getSafe($node->getNode('node')), $filter->getPreservesSafety()); + } + $this->setSafe($node, $safe); + } else { + $this->setSafe($node, array()); + } + } elseif ($node instanceof Twig_Node_Expression_Function) { + // function expression is safe when the function is safe + $name = $node->getAttribute('name'); + $args = $node->getNode('arguments'); + $function = $env->getFunction($name); + if (false !== $function) { + $this->setSafe($node, $function->getSafe($args)); + } else { + $this->setSafe($node, array()); + } + } elseif ($node instanceof Twig_Node_Expression_MethodCall) { + if ($node->getAttribute('safe')) { + $this->setSafe($node, array('all')); + } else { + $this->setSafe($node, array()); + } + } elseif ($node instanceof Twig_Node_Expression_GetAttr && $node->getNode('node') instanceof Twig_Node_Expression_Name) { + $name = $node->getNode('node')->getAttribute('name'); + // attributes on template instances are safe + if ('_self' == $name || in_array($name, $this->safeVars)) { + $this->setSafe($node, array('all')); + } else { + $this->setSafe($node, array()); + } + } else { + $this->setSafe($node, array()); + } + + return $node; + } + + protected function intersectSafe(array $a = null, array $b = null) + { + if (null === $a || null === $b) { + return array(); + } + + if (in_array('all', $a)) { + return $b; + } + + if (in_array('all', $b)) { + return $a; + } + + return array_intersect($a, $b); + } + + public function getPriority() + { + return 0; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php b/system/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php new file mode 100644 index 0000000..baf00a0 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/NodeVisitor/Sandbox.php @@ -0,0 +1,75 @@ + + */ +class Twig_NodeVisitor_Sandbox extends Twig_BaseNodeVisitor +{ + protected $inAModule = false; + protected $tags; + protected $filters; + protected $functions; + + protected function doEnterNode(Twig_Node $node, Twig_Environment $env) + { + if ($node instanceof Twig_Node_Module) { + $this->inAModule = true; + $this->tags = array(); + $this->filters = array(); + $this->functions = array(); + + return $node; + } elseif ($this->inAModule) { + // look for tags + if ($node->getNodeTag() && !isset($this->tags[$node->getNodeTag()])) { + $this->tags[$node->getNodeTag()] = $node; + } + + // look for filters + if ($node instanceof Twig_Node_Expression_Filter && !isset($this->filters[$node->getNode('filter')->getAttribute('value')])) { + $this->filters[$node->getNode('filter')->getAttribute('value')] = $node; + } + + // look for functions + if ($node instanceof Twig_Node_Expression_Function && !isset($this->functions[$node->getAttribute('name')])) { + $this->functions[$node->getAttribute('name')] = $node; + } + + // wrap print to check __toString() calls + if ($node instanceof Twig_Node_Print) { + return new Twig_Node_SandboxedPrint($node->getNode('expr'), $node->getTemplateLine(), $node->getNodeTag()); + } + } + + return $node; + } + + protected function doLeaveNode(Twig_Node $node, Twig_Environment $env) + { + if ($node instanceof Twig_Node_Module) { + $this->inAModule = false; + + $node->setNode('display_start', new Twig_Node(array(new Twig_Node_CheckSecurity($this->filters, $this->tags, $this->functions), $node->getNode('display_start')))); + } + + return $node; + } + + public function getPriority() + { + return 0; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/NodeVisitorInterface.php b/system/vendor/twig/twig/lib/Twig/NodeVisitorInterface.php new file mode 100644 index 0000000..092d36a --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/NodeVisitorInterface.php @@ -0,0 +1,41 @@ + + */ +interface Twig_NodeVisitorInterface +{ + /** + * Called before child nodes are visited. + * + * @return Twig_NodeInterface The modified node + */ + public function enterNode(Twig_NodeInterface $node, Twig_Environment $env); + + /** + * Called after child nodes are visited. + * + * @return Twig_NodeInterface|false The modified node or false if the node must be removed + */ + public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env); + + /** + * Returns the priority for this visitor. + * + * Priority should be between -10 and 10 (0 is the default). + * + * @return int The priority level + */ + public function getPriority(); +} diff --git a/system/vendor/twig/twig/lib/Twig/Parser.php b/system/vendor/twig/twig/lib/Twig/Parser.php new file mode 100644 index 0000000..070f301 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Parser.php @@ -0,0 +1,406 @@ + + */ +class Twig_Parser implements Twig_ParserInterface +{ + protected $stack = array(); + protected $stream; + protected $parent; + protected $handlers; + protected $visitors; + protected $expressionParser; + protected $blocks; + protected $blockStack; + protected $macros; + protected $env; + protected $reservedMacroNames; + protected $importedSymbols; + protected $traits; + protected $embeddedTemplates = array(); + + public function __construct(Twig_Environment $env) + { + $this->env = $env; + } + + /** + * @deprecated since 1.27 (to be removed in 2.0) + */ + public function getEnvironment() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0.', E_USER_DEPRECATED); + + return $this->env; + } + + public function getVarName() + { + return sprintf('__internal_%s', hash('sha256', uniqid(mt_rand(), true), false)); + } + + /** + * @deprecated since 1.27 (to be removed in 2.0). Use $parser->getStream()->getSourceContext()->getPath() instead. + */ + public function getFilename() + { + @trigger_error(sprintf('The "%s" method is deprecated since version 1.27 and will be removed in 2.0. Use $parser->getStream()->getSourceContext()->getPath() instead.', __METHOD__), E_USER_DEPRECATED); + + return $this->stream->getSourceContext()->getName(); + } + + public function parse(Twig_TokenStream $stream, $test = null, $dropNeedle = false) + { + // push all variables into the stack to keep the current state of the parser + // using get_object_vars() instead of foreach would lead to https://bugs.php.net/71336 + // This hack can be removed when min version if PHP 7.0 + $vars = array(); + foreach ($this as $k => $v) { + $vars[$k] = $v; + } + + unset($vars['stack'], $vars['env'], $vars['handlers'], $vars['visitors'], $vars['expressionParser'], $vars['reservedMacroNames']); + $this->stack[] = $vars; + + // tag handlers + if (null === $this->handlers) { + $this->handlers = $this->env->getTokenParsers(); + $this->handlers->setParser($this); + } + + // node visitors + if (null === $this->visitors) { + $this->visitors = $this->env->getNodeVisitors(); + } + + if (null === $this->expressionParser) { + $this->expressionParser = new Twig_ExpressionParser($this, $this->env); + } + + $this->stream = $stream; + $this->parent = null; + $this->blocks = array(); + $this->macros = array(); + $this->traits = array(); + $this->blockStack = array(); + $this->importedSymbols = array(array()); + $this->embeddedTemplates = array(); + + try { + $body = $this->subparse($test, $dropNeedle); + + if (null !== $this->parent && null === $body = $this->filterBodyNodes($body)) { + $body = new Twig_Node(); + } + } catch (Twig_Error_Syntax $e) { + if (!$e->getSourceContext()) { + $e->setSourceContext($this->stream->getSourceContext()); + } + + if (!$e->getTemplateLine()) { + $e->setTemplateLine($this->stream->getCurrent()->getLine()); + } + + throw $e; + } + + $node = new Twig_Node_Module(new Twig_Node_Body(array($body)), $this->parent, new Twig_Node($this->blocks), new Twig_Node($this->macros), new Twig_Node($this->traits), $this->embeddedTemplates, $stream->getSourceContext()); + + $traverser = new Twig_NodeTraverser($this->env, $this->visitors); + + $node = $traverser->traverse($node); + + // restore previous stack so previous parse() call can resume working + foreach (array_pop($this->stack) as $key => $val) { + $this->$key = $val; + } + + return $node; + } + + public function subparse($test, $dropNeedle = false) + { + $lineno = $this->getCurrentToken()->getLine(); + $rv = array(); + while (!$this->stream->isEOF()) { + switch ($this->getCurrentToken()->getType()) { + case Twig_Token::TEXT_TYPE: + $token = $this->stream->next(); + $rv[] = new Twig_Node_Text($token->getValue(), $token->getLine()); + break; + + case Twig_Token::VAR_START_TYPE: + $token = $this->stream->next(); + $expr = $this->expressionParser->parseExpression(); + $this->stream->expect(Twig_Token::VAR_END_TYPE); + $rv[] = new Twig_Node_Print($expr, $token->getLine()); + break; + + case Twig_Token::BLOCK_START_TYPE: + $this->stream->next(); + $token = $this->getCurrentToken(); + + if ($token->getType() !== Twig_Token::NAME_TYPE) { + throw new Twig_Error_Syntax('A block must start with a tag name.', $token->getLine(), $this->stream->getSourceContext()); + } + + if (null !== $test && call_user_func($test, $token)) { + if ($dropNeedle) { + $this->stream->next(); + } + + if (1 === count($rv)) { + return $rv[0]; + } + + return new Twig_Node($rv, array(), $lineno); + } + + $subparser = $this->handlers->getTokenParser($token->getValue()); + if (null === $subparser) { + if (null !== $test) { + $e = new Twig_Error_Syntax(sprintf('Unexpected "%s" tag', $token->getValue()), $token->getLine(), $this->stream->getSourceContext()); + + if (is_array($test) && isset($test[0]) && $test[0] instanceof Twig_TokenParserInterface) { + $e->appendMessage(sprintf(' (expecting closing tag for the "%s" tag defined near line %s).', $test[0]->getTag(), $lineno)); + } + } else { + $e = new Twig_Error_Syntax(sprintf('Unknown "%s" tag.', $token->getValue()), $token->getLine(), $this->stream->getSourceContext()); + $e->addSuggestions($token->getValue(), array_keys($this->env->getTags())); + } + + throw $e; + } + + $this->stream->next(); + + $node = $subparser->parse($token); + if (null !== $node) { + $rv[] = $node; + } + break; + + default: + throw new Twig_Error_Syntax('Lexer or parser ended up in unsupported state.', $this->getCurrentToken()->getLine(), $this->stream->getSourceContext()); + } + } + + if (1 === count($rv)) { + return $rv[0]; + } + + return new Twig_Node($rv, array(), $lineno); + } + + /** + * @deprecated since 1.27 (to be removed in 2.0) + */ + public function addHandler($name, $class) + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0.', E_USER_DEPRECATED); + + $this->handlers[$name] = $class; + } + + /** + * @deprecated since 1.27 (to be removed in 2.0) + */ + public function addNodeVisitor(Twig_NodeVisitorInterface $visitor) + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0.', E_USER_DEPRECATED); + + $this->visitors[] = $visitor; + } + + public function getBlockStack() + { + return $this->blockStack; + } + + public function peekBlockStack() + { + return $this->blockStack[count($this->blockStack) - 1]; + } + + public function popBlockStack() + { + array_pop($this->blockStack); + } + + public function pushBlockStack($name) + { + $this->blockStack[] = $name; + } + + public function hasBlock($name) + { + return isset($this->blocks[$name]); + } + + public function getBlock($name) + { + return $this->blocks[$name]; + } + + public function setBlock($name, Twig_Node_Block $value) + { + $this->blocks[$name] = new Twig_Node_Body(array($value), array(), $value->getTemplateLine()); + } + + public function hasMacro($name) + { + return isset($this->macros[$name]); + } + + public function setMacro($name, Twig_Node_Macro $node) + { + if ($this->isReservedMacroName($name)) { + throw new Twig_Error_Syntax(sprintf('"%s" cannot be used as a macro name as it is a reserved keyword.', $name), $node->getTemplateLine(), $this->stream->getSourceContext()); + } + + $this->macros[$name] = $node; + } + + public function isReservedMacroName($name) + { + if (null === $this->reservedMacroNames) { + $this->reservedMacroNames = array(); + $r = new ReflectionClass($this->env->getBaseTemplateClass()); + foreach ($r->getMethods() as $method) { + $methodName = strtolower($method->getName()); + + if ('get' === substr($methodName, 0, 3) && isset($methodName[3])) { + $this->reservedMacroNames[] = substr($methodName, 3); + } + } + } + + return in_array(strtolower($name), $this->reservedMacroNames); + } + + public function addTrait($trait) + { + $this->traits[] = $trait; + } + + public function hasTraits() + { + return count($this->traits) > 0; + } + + public function embedTemplate(Twig_Node_Module $template) + { + $template->setIndex(mt_rand()); + + $this->embeddedTemplates[] = $template; + } + + public function addImportedSymbol($type, $alias, $name = null, Twig_Node_Expression $node = null) + { + $this->importedSymbols[0][$type][$alias] = array('name' => $name, 'node' => $node); + } + + public function getImportedSymbol($type, $alias) + { + foreach ($this->importedSymbols as $functions) { + if (isset($functions[$type][$alias])) { + return $functions[$type][$alias]; + } + } + } + + public function isMainScope() + { + return 1 === count($this->importedSymbols); + } + + public function pushLocalScope() + { + array_unshift($this->importedSymbols, array()); + } + + public function popLocalScope() + { + array_shift($this->importedSymbols); + } + + /** + * @return Twig_ExpressionParser + */ + public function getExpressionParser() + { + return $this->expressionParser; + } + + public function getParent() + { + return $this->parent; + } + + public function setParent($parent) + { + $this->parent = $parent; + } + + /** + * @return Twig_TokenStream + */ + public function getStream() + { + return $this->stream; + } + + /** + * @return Twig_Token + */ + public function getCurrentToken() + { + return $this->stream->getCurrent(); + } + + protected function filterBodyNodes(Twig_NodeInterface $node) + { + // check that the body does not contain non-empty output nodes + if ( + ($node instanceof Twig_Node_Text && !ctype_space($node->getAttribute('data'))) + || + (!$node instanceof Twig_Node_Text && !$node instanceof Twig_Node_BlockReference && $node instanceof Twig_NodeOutputInterface) + ) { + if (false !== strpos((string) $node, chr(0xEF).chr(0xBB).chr(0xBF))) { + throw new Twig_Error_Syntax('A template that extends another one cannot start with a byte order mark (BOM); it must be removed.', $node->getTemplateLine(), $this->stream->getSourceContext()); + } + + throw new Twig_Error_Syntax('A template that extends another one cannot include contents outside Twig blocks. Did you forget to put the contents inside a {% block %} tag?', $node->getTemplateLine(), $this->stream->getSourceContext()); + } + + // bypass nodes that will "capture" the output + if ($node instanceof Twig_NodeCaptureInterface) { + return $node; + } + + if ($node instanceof Twig_NodeOutputInterface) { + return; + } + + foreach ($node as $k => $n) { + if (null !== $n && null === $this->filterBodyNodes($n)) { + $node->removeNode($k); + } + } + + return $node; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/ParserInterface.php b/system/vendor/twig/twig/lib/Twig/ParserInterface.php new file mode 100644 index 0000000..85c6e67 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/ParserInterface.php @@ -0,0 +1,29 @@ + + * + * @deprecated since 1.12 (to be removed in 3.0) + */ +interface Twig_ParserInterface +{ + /** + * Converts a token stream to a node tree. + * + * @return Twig_Node_Module + * + * @throws Twig_Error_Syntax When the token stream is syntactically or semantically wrong + */ + public function parse(Twig_TokenStream $stream); +} diff --git a/system/vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php b/system/vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php new file mode 100644 index 0000000..6be67ed --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Profiler/Dumper/Blackfire.php @@ -0,0 +1,70 @@ + + * + * @final + */ +class Twig_Profiler_Dumper_Blackfire +{ + public function dump(Twig_Profiler_Profile $profile) + { + $data = array(); + $this->dumpProfile('main()', $profile, $data); + $this->dumpChildren('main()', $profile, $data); + + $start = microtime(true); + $str = << $values) { + $str .= "{$name}//{$values['ct']} {$values['wt']} {$values['mu']} {$values['pmu']}\n"; + } + + return $str; + } + + private function dumpChildren($parent, Twig_Profiler_Profile $profile, &$data) + { + foreach ($profile as $p) { + if ($p->isTemplate()) { + $name = $p->getTemplate(); + } else { + $name = sprintf('%s::%s(%s)', $p->getTemplate(), $p->getType(), $p->getName()); + } + $this->dumpProfile(sprintf('%s==>%s', $parent, $name), $p, $data); + $this->dumpChildren($name, $p, $data); + } + } + + private function dumpProfile($edge, Twig_Profiler_Profile $profile, &$data) + { + if (isset($data[$edge])) { + $data[$edge]['ct'] += 1; + $data[$edge]['wt'] += floor($profile->getDuration() * 1000000); + $data[$edge]['mu'] += $profile->getMemoryUsage(); + $data[$edge]['pmu'] += $profile->getPeakMemoryUsage(); + } else { + $data[$edge] = array( + 'ct' => 1, + 'wt' => floor($profile->getDuration() * 1000000), + 'mu' => $profile->getMemoryUsage(), + 'pmu' => $profile->getPeakMemoryUsage(), + ); + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php b/system/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php new file mode 100644 index 0000000..f0fa406 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Profiler/Dumper/Html.php @@ -0,0 +1,45 @@ + + * + * @final + */ +class Twig_Profiler_Dumper_Html extends Twig_Profiler_Dumper_Text +{ + private static $colors = array( + 'block' => '#dfd', + 'macro' => '#ddf', + 'template' => '#ffd', + 'big' => '#d44', + ); + + public function dump(Twig_Profiler_Profile $profile) + { + return '
    '.parent::dump($profile).'
    '; + } + + protected function formatTemplate(Twig_Profiler_Profile $profile, $prefix) + { + return sprintf('%s└ %s', $prefix, self::$colors['template'], $profile->getTemplate()); + } + + protected function formatNonTemplate(Twig_Profiler_Profile $profile, $prefix) + { + return sprintf('%s└ %s::%s(%s)', $prefix, $profile->getTemplate(), $profile->getType(), isset(self::$colors[$profile->getType()]) ? self::$colors[$profile->getType()] : 'auto', $profile->getName()); + } + + protected function formatTime(Twig_Profiler_Profile $profile, $percent) + { + return sprintf('%.2fms/%.0f%%', $percent > 20 ? self::$colors['big'] : 'auto', $profile->getDuration() * 1000, $percent); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Profiler/Dumper/Text.php b/system/vendor/twig/twig/lib/Twig/Profiler/Dumper/Text.php new file mode 100644 index 0000000..c77e691 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Profiler/Dumper/Text.php @@ -0,0 +1,70 @@ + + * + * @final + */ +class Twig_Profiler_Dumper_Text +{ + private $root; + + public function dump(Twig_Profiler_Profile $profile) + { + return $this->dumpProfile($profile); + } + + protected function formatTemplate(Twig_Profiler_Profile $profile, $prefix) + { + return sprintf('%s└ %s', $prefix, $profile->getTemplate()); + } + + protected function formatNonTemplate(Twig_Profiler_Profile $profile, $prefix) + { + return sprintf('%s└ %s::%s(%s)', $prefix, $profile->getTemplate(), $profile->getType(), $profile->getName()); + } + + protected function formatTime(Twig_Profiler_Profile $profile, $percent) + { + return sprintf('%.2fms/%.0f%%', $profile->getDuration() * 1000, $percent); + } + + private function dumpProfile(Twig_Profiler_Profile $profile, $prefix = '', $sibling = false) + { + if ($profile->isRoot()) { + $this->root = $profile->getDuration(); + $start = $profile->getName(); + } else { + if ($profile->isTemplate()) { + $start = $this->formatTemplate($profile, $prefix); + } else { + $start = $this->formatNonTemplate($profile, $prefix); + } + $prefix .= $sibling ? '│ ' : ' '; + } + + $percent = $this->root ? $profile->getDuration() / $this->root * 100 : 0; + + if ($profile->getDuration() * 1000 < 1) { + $str = $start."\n"; + } else { + $str = sprintf("%s %s\n", $start, $this->formatTime($profile, $percent)); + } + + $nCount = count($profile->getProfiles()); + foreach ($profile as $i => $p) { + $str .= $this->dumpProfile($p, $prefix, $i + 1 !== $nCount); + } + + return $str; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php b/system/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php new file mode 100644 index 0000000..e10d857 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Profiler/Node/EnterProfile.php @@ -0,0 +1,37 @@ + + */ +class Twig_Profiler_Node_EnterProfile extends Twig_Node +{ + public function __construct($extensionName, $type, $name, $varName) + { + parent::__construct(array(), array('extension_name' => $extensionName, 'name' => $name, 'type' => $type, 'var_name' => $varName)); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->write(sprintf('$%s = $this->env->getExtension(', $this->getAttribute('var_name'))) + ->repr($this->getAttribute('extension_name')) + ->raw(");\n") + ->write(sprintf('$%s->enter($%s = new Twig_Profiler_Profile($this->getTemplateName(), ', $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof')) + ->repr($this->getAttribute('type')) + ->raw(', ') + ->repr($this->getAttribute('name')) + ->raw("));\n\n") + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php b/system/vendor/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php new file mode 100644 index 0000000..e4d0beb --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Profiler/Node/LeaveProfile.php @@ -0,0 +1,31 @@ + + */ +class Twig_Profiler_Node_LeaveProfile extends Twig_Node +{ + public function __construct($varName) + { + parent::__construct(array(), array('var_name' => $varName)); + } + + public function compile(Twig_Compiler $compiler) + { + $compiler + ->write("\n") + ->write(sprintf("\$%s->leave(\$%s);\n\n", $this->getAttribute('var_name'), $this->getAttribute('var_name').'_prof')) + ; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php b/system/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php new file mode 100644 index 0000000..a990474 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Profiler/NodeVisitor/Profiler.php @@ -0,0 +1,65 @@ + + * + * @final + */ +class Twig_Profiler_NodeVisitor_Profiler extends Twig_BaseNodeVisitor +{ + private $extensionName; + + public function __construct($extensionName) + { + $this->extensionName = $extensionName; + } + + protected function doEnterNode(Twig_Node $node, Twig_Environment $env) + { + return $node; + } + + protected function doLeaveNode(Twig_Node $node, Twig_Environment $env) + { + if ($node instanceof Twig_Node_Module) { + $varName = $this->getVarName(); + $node->setNode('display_start', new Twig_Node(array(new Twig_Profiler_Node_EnterProfile($this->extensionName, Twig_Profiler_Profile::TEMPLATE, $node->getTemplateName(), $varName), $node->getNode('display_start')))); + $node->setNode('display_end', new Twig_Node(array(new Twig_Profiler_Node_LeaveProfile($varName), $node->getNode('display_end')))); + } elseif ($node instanceof Twig_Node_Block) { + $varName = $this->getVarName(); + $node->setNode('body', new Twig_Node_Body(array( + new Twig_Profiler_Node_EnterProfile($this->extensionName, Twig_Profiler_Profile::BLOCK, $node->getAttribute('name'), $varName), + $node->getNode('body'), + new Twig_Profiler_Node_LeaveProfile($varName), + ))); + } elseif ($node instanceof Twig_Node_Macro) { + $varName = $this->getVarName(); + $node->setNode('body', new Twig_Node_Body(array( + new Twig_Profiler_Node_EnterProfile($this->extensionName, Twig_Profiler_Profile::MACRO, $node->getAttribute('name'), $varName), + $node->getNode('body'), + new Twig_Profiler_Node_LeaveProfile($varName), + ))); + } + + return $node; + } + + private function getVarName() + { + return sprintf('__internal_%s', hash('sha256', uniqid(mt_rand(), true), false)); + } + + public function getPriority() + { + return 0; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Profiler/Profile.php b/system/vendor/twig/twig/lib/Twig/Profiler/Profile.php new file mode 100644 index 0000000..9274da2 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Profiler/Profile.php @@ -0,0 +1,162 @@ + + * + * @final + */ +class Twig_Profiler_Profile implements IteratorAggregate, Serializable +{ + const ROOT = 'ROOT'; + const BLOCK = 'block'; + const TEMPLATE = 'template'; + const MACRO = 'macro'; + + private $template; + private $name; + private $type; + private $starts = array(); + private $ends = array(); + private $profiles = array(); + + public function __construct($template = 'main', $type = self::ROOT, $name = 'main') + { + $this->template = $template; + $this->type = $type; + $this->name = 0 === strpos($name, '__internal_') ? 'INTERNAL' : $name; + $this->enter(); + } + + public function getTemplate() + { + return $this->template; + } + + public function getType() + { + return $this->type; + } + + public function getName() + { + return $this->name; + } + + public function isRoot() + { + return self::ROOT === $this->type; + } + + public function isTemplate() + { + return self::TEMPLATE === $this->type; + } + + public function isBlock() + { + return self::BLOCK === $this->type; + } + + public function isMacro() + { + return self::MACRO === $this->type; + } + + public function getProfiles() + { + return $this->profiles; + } + + public function addProfile(Twig_Profiler_Profile $profile) + { + $this->profiles[] = $profile; + } + + /** + * Returns the duration in microseconds. + * + * @return int + */ + public function getDuration() + { + if ($this->isRoot() && $this->profiles) { + // for the root node with children, duration is the sum of all child durations + $duration = 0; + foreach ($this->profiles as $profile) { + $duration += $profile->getDuration(); + } + + return $duration; + } + + return isset($this->ends['wt']) && isset($this->starts['wt']) ? $this->ends['wt'] - $this->starts['wt'] : 0; + } + + /** + * Returns the memory usage in bytes. + * + * @return int + */ + public function getMemoryUsage() + { + return isset($this->ends['mu']) && isset($this->starts['mu']) ? $this->ends['mu'] - $this->starts['mu'] : 0; + } + + /** + * Returns the peak memory usage in bytes. + * + * @return int + */ + public function getPeakMemoryUsage() + { + return isset($this->ends['pmu']) && isset($this->starts['pmu']) ? $this->ends['pmu'] - $this->starts['pmu'] : 0; + } + + /** + * Starts the profiling. + */ + public function enter() + { + $this->starts = array( + 'wt' => microtime(true), + 'mu' => memory_get_usage(), + 'pmu' => memory_get_peak_usage(), + ); + } + + /** + * Stops the profiling. + */ + public function leave() + { + $this->ends = array( + 'wt' => microtime(true), + 'mu' => memory_get_usage(), + 'pmu' => memory_get_peak_usage(), + ); + } + + public function getIterator() + { + return new ArrayIterator($this->profiles); + } + + public function serialize() + { + return serialize(array($this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles)); + } + + public function unserialize($data) + { + list($this->template, $this->name, $this->type, $this->starts, $this->ends, $this->profiles) = unserialize($data); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/RuntimeLoaderInterface.php b/system/vendor/twig/twig/lib/Twig/RuntimeLoaderInterface.php new file mode 100644 index 0000000..c41f44a --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/RuntimeLoaderInterface.php @@ -0,0 +1,27 @@ + + */ +interface Twig_RuntimeLoaderInterface +{ + /** + * Creates the runtime implementation of a Twig element (filter/function/test). + * + * @param string $class A runtime class + * + * @return object|null The runtime instance or null if the loader does not know how to create the runtime for this class + */ + public function load($class); +} diff --git a/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityError.php b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityError.php new file mode 100644 index 0000000..5a4e021 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityError.php @@ -0,0 +1,19 @@ + + */ +class Twig_Sandbox_SecurityError extends Twig_Error +{ +} diff --git a/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php new file mode 100644 index 0000000..1967cf7 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFilterError.php @@ -0,0 +1,31 @@ + + */ +class Twig_Sandbox_SecurityNotAllowedFilterError extends Twig_Sandbox_SecurityError +{ + private $filterName; + + public function __construct($message, $functionName, $lineno = -1, $filename = null, Exception $previous = null) + { + parent::__construct($message, $lineno, $filename, $previous); + $this->filterName = $functionName; + } + + public function getFilterName() + { + return $this->filterName; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php new file mode 100644 index 0000000..79a400f --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedFunctionError.php @@ -0,0 +1,31 @@ + + */ +class Twig_Sandbox_SecurityNotAllowedFunctionError extends Twig_Sandbox_SecurityError +{ + private $functionName; + + public function __construct($message, $functionName, $lineno = -1, $filename = null, Exception $previous = null) + { + parent::__construct($message, $lineno, $filename, $previous); + $this->functionName = $functionName; + } + + public function getFunctionName() + { + return $this->functionName; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedMethodError.php b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedMethodError.php new file mode 100644 index 0000000..9e5d4df --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedMethodError.php @@ -0,0 +1,38 @@ + + */ +class Twig_Sandbox_SecurityNotAllowedMethodError extends Twig_Sandbox_SecurityError +{ + private $className; + private $methodName; + + public function __construct($message, $className, $methodName, $lineno = -1, $filename = null, Exception $previous = null) + { + parent::__construct($message, $lineno, $filename, $previous); + $this->className = $className; + $this->methodName = $methodName; + } + + public function getClassName() + { + return $this->className; + } + + public function getMethodName() + { + return $this->methodName; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedPropertyError.php b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedPropertyError.php new file mode 100644 index 0000000..9f7eab2 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedPropertyError.php @@ -0,0 +1,38 @@ + + */ +class Twig_Sandbox_SecurityNotAllowedPropertyError extends Twig_Sandbox_SecurityError +{ + private $className; + private $propertyName; + + public function __construct($message, $className, $propertyName, $lineno = -1, $filename = null, Exception $previous = null) + { + parent::__construct($message, $lineno, $filename, $previous); + $this->className = $className; + $this->propertyName = $propertyName; + } + + public function getClassName() + { + return $this->className; + } + + public function getPropertyName() + { + return $this->propertyName; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php new file mode 100644 index 0000000..a177206 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityNotAllowedTagError.php @@ -0,0 +1,31 @@ + + */ +class Twig_Sandbox_SecurityNotAllowedTagError extends Twig_Sandbox_SecurityError +{ + private $tagName; + + public function __construct($message, $tagName, $lineno = -1, $filename = null, Exception $previous = null) + { + parent::__construct($message, $lineno, $filename, $previous); + $this->tagName = $tagName; + } + + public function getTagName() + { + return $this->tagName; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php new file mode 100644 index 0000000..4470c39 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicy.php @@ -0,0 +1,123 @@ + + */ +class Twig_Sandbox_SecurityPolicy implements Twig_Sandbox_SecurityPolicyInterface +{ + protected $allowedTags; + protected $allowedFilters; + protected $allowedMethods; + protected $allowedProperties; + protected $allowedFunctions; + + public function __construct(array $allowedTags = array(), array $allowedFilters = array(), array $allowedMethods = array(), array $allowedProperties = array(), array $allowedFunctions = array()) + { + $this->allowedTags = $allowedTags; + $this->allowedFilters = $allowedFilters; + $this->setAllowedMethods($allowedMethods); + $this->allowedProperties = $allowedProperties; + $this->allowedFunctions = $allowedFunctions; + } + + public function setAllowedTags(array $tags) + { + $this->allowedTags = $tags; + } + + public function setAllowedFilters(array $filters) + { + $this->allowedFilters = $filters; + } + + public function setAllowedMethods(array $methods) + { + $this->allowedMethods = array(); + foreach ($methods as $class => $m) { + $this->allowedMethods[$class] = array_map('strtolower', is_array($m) ? $m : array($m)); + } + } + + public function setAllowedProperties(array $properties) + { + $this->allowedProperties = $properties; + } + + public function setAllowedFunctions(array $functions) + { + $this->allowedFunctions = $functions; + } + + public function checkSecurity($tags, $filters, $functions) + { + foreach ($tags as $tag) { + if (!in_array($tag, $this->allowedTags)) { + throw new Twig_Sandbox_SecurityNotAllowedTagError(sprintf('Tag "%s" is not allowed.', $tag), $tag); + } + } + + foreach ($filters as $filter) { + if (!in_array($filter, $this->allowedFilters)) { + throw new Twig_Sandbox_SecurityNotAllowedFilterError(sprintf('Filter "%s" is not allowed.', $filter), $filter); + } + } + + foreach ($functions as $function) { + if (!in_array($function, $this->allowedFunctions)) { + throw new Twig_Sandbox_SecurityNotAllowedFunctionError(sprintf('Function "%s" is not allowed.', $function), $function); + } + } + } + + public function checkMethodAllowed($obj, $method) + { + if ($obj instanceof Twig_TemplateInterface || $obj instanceof Twig_Markup) { + return true; + } + + $allowed = false; + $method = strtolower($method); + foreach ($this->allowedMethods as $class => $methods) { + if ($obj instanceof $class) { + $allowed = in_array($method, $methods); + + break; + } + } + + if (!$allowed) { + $class = get_class($obj); + throw new Twig_Sandbox_SecurityNotAllowedMethodError(sprintf('Calling "%s" method on a "%s" object is not allowed.', $method, $class), $class, $method); + } + } + + public function checkPropertyAllowed($obj, $property) + { + $allowed = false; + foreach ($this->allowedProperties as $class => $properties) { + if ($obj instanceof $class) { + $allowed = in_array($property, is_array($properties) ? $properties : array($properties)); + + break; + } + } + + if (!$allowed) { + $class = get_class($obj); + throw new Twig_Sandbox_SecurityNotAllowedPropertyError(sprintf('Calling "%s" property on a "%s" object is not allowed.', $property, $class), $class, $property); + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php new file mode 100644 index 0000000..2111a03 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Sandbox/SecurityPolicyInterface.php @@ -0,0 +1,24 @@ + + */ +interface Twig_Sandbox_SecurityPolicyInterface +{ + public function checkSecurity($tags, $filters, $functions); + + public function checkMethodAllowed($obj, $method); + + public function checkPropertyAllowed($obj, $method); +} diff --git a/system/vendor/twig/twig/lib/Twig/SimpleFilter.php b/system/vendor/twig/twig/lib/Twig/SimpleFilter.php new file mode 100644 index 0000000..a0b98af --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/SimpleFilter.php @@ -0,0 +1,119 @@ + + */ +class Twig_SimpleFilter +{ + protected $name; + protected $callable; + protected $options; + protected $arguments = array(); + + public function __construct($name, $callable, array $options = array()) + { + $this->name = $name; + $this->callable = $callable; + $this->options = array_merge(array( + 'needs_environment' => false, + 'needs_context' => false, + 'is_variadic' => false, + 'is_safe' => null, + 'is_safe_callback' => null, + 'pre_escape' => null, + 'preserves_safety' => null, + 'node_class' => 'Twig_Node_Expression_Filter', + 'deprecated' => false, + 'alternative' => null, + ), $options); + } + + public function getName() + { + return $this->name; + } + + public function getCallable() + { + return $this->callable; + } + + public function getNodeClass() + { + return $this->options['node_class']; + } + + public function setArguments($arguments) + { + $this->arguments = $arguments; + } + + public function getArguments() + { + return $this->arguments; + } + + public function needsEnvironment() + { + return $this->options['needs_environment']; + } + + public function needsContext() + { + return $this->options['needs_context']; + } + + public function getSafe(Twig_Node $filterArgs) + { + if (null !== $this->options['is_safe']) { + return $this->options['is_safe']; + } + + if (null !== $this->options['is_safe_callback']) { + return call_user_func($this->options['is_safe_callback'], $filterArgs); + } + } + + public function getPreservesSafety() + { + return $this->options['preserves_safety']; + } + + public function getPreEscape() + { + return $this->options['pre_escape']; + } + + public function isVariadic() + { + return $this->options['is_variadic']; + } + + public function isDeprecated() + { + return (bool) $this->options['deprecated']; + } + + public function getDeprecatedVersion() + { + return $this->options['deprecated']; + } + + public function getAlternative() + { + return $this->options['alternative']; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/SimpleFunction.php b/system/vendor/twig/twig/lib/Twig/SimpleFunction.php new file mode 100644 index 0000000..b7ef92a --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/SimpleFunction.php @@ -0,0 +1,109 @@ + + */ +class Twig_SimpleFunction +{ + protected $name; + protected $callable; + protected $options; + protected $arguments = array(); + + public function __construct($name, $callable, array $options = array()) + { + $this->name = $name; + $this->callable = $callable; + $this->options = array_merge(array( + 'needs_environment' => false, + 'needs_context' => false, + 'is_variadic' => false, + 'is_safe' => null, + 'is_safe_callback' => null, + 'node_class' => 'Twig_Node_Expression_Function', + 'deprecated' => false, + 'alternative' => null, + ), $options); + } + + public function getName() + { + return $this->name; + } + + public function getCallable() + { + return $this->callable; + } + + public function getNodeClass() + { + return $this->options['node_class']; + } + + public function setArguments($arguments) + { + $this->arguments = $arguments; + } + + public function getArguments() + { + return $this->arguments; + } + + public function needsEnvironment() + { + return $this->options['needs_environment']; + } + + public function needsContext() + { + return $this->options['needs_context']; + } + + public function getSafe(Twig_Node $functionArgs) + { + if (null !== $this->options['is_safe']) { + return $this->options['is_safe']; + } + + if (null !== $this->options['is_safe_callback']) { + return call_user_func($this->options['is_safe_callback'], $functionArgs); + } + + return array(); + } + + public function isVariadic() + { + return $this->options['is_variadic']; + } + + public function isDeprecated() + { + return (bool) $this->options['deprecated']; + } + + public function getDeprecatedVersion() + { + return $this->options['deprecated']; + } + + public function getAlternative() + { + return $this->options['alternative']; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/SimpleTest.php b/system/vendor/twig/twig/lib/Twig/SimpleTest.php new file mode 100644 index 0000000..b9ae8f1 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/SimpleTest.php @@ -0,0 +1,71 @@ + + */ +class Twig_SimpleTest +{ + protected $name; + protected $callable; + protected $options; + + public function __construct($name, $callable, array $options = array()) + { + $this->name = $name; + $this->callable = $callable; + $this->options = array_merge(array( + 'is_variadic' => false, + 'node_class' => 'Twig_Node_Expression_Test', + 'deprecated' => false, + 'alternative' => null, + ), $options); + } + + public function getName() + { + return $this->name; + } + + public function getCallable() + { + return $this->callable; + } + + public function getNodeClass() + { + return $this->options['node_class']; + } + + public function isVariadic() + { + return $this->options['is_variadic']; + } + + public function isDeprecated() + { + return (bool) $this->options['deprecated']; + } + + public function getDeprecatedVersion() + { + return $this->options['deprecated']; + } + + public function getAlternative() + { + return $this->options['alternative']; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Source.php b/system/vendor/twig/twig/lib/Twig/Source.php new file mode 100644 index 0000000..389317e --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Source.php @@ -0,0 +1,51 @@ + + */ +class Twig_Source +{ + private $code; + private $name; + private $path; + + /** + * @param string $code The template source code + * @param string $name The template logical name + * @param string $path The filesystem path of the template if any + */ + public function __construct($code, $name, $path = '') + { + $this->code = $code; + $this->name = $name; + $this->path = $path; + } + + public function getCode() + { + return $this->code; + } + + public function getName() + { + return $this->name; + } + + public function getPath() + { + return $this->path; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/SourceContextLoaderInterface.php b/system/vendor/twig/twig/lib/Twig/SourceContextLoaderInterface.php new file mode 100644 index 0000000..acf21e3 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/SourceContextLoaderInterface.php @@ -0,0 +1,31 @@ + + * + * @deprecated since 1.27 (to be removed in 3.0) + */ +interface Twig_SourceContextLoaderInterface +{ + /** + * Returns the source context for a given template logical name. + * + * @param string $name The template logical name + * + * @return Twig_Source + * + * @throws Twig_Error_Loader When $name is not found + */ + public function getSourceContext($name); +} diff --git a/system/vendor/twig/twig/lib/Twig/Template.php b/system/vendor/twig/twig/lib/Twig/Template.php new file mode 100644 index 0000000..f1855f1 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Template.php @@ -0,0 +1,701 @@ +load() + * instead, which returns an instance of Twig_TemplateWrapper. + * + * @author Fabien Potencier + * + * @internal + */ +abstract class Twig_Template implements Twig_TemplateInterface +{ + /** + * @internal + */ + protected static $cache = array(); + + protected $parent; + protected $parents = array(); + protected $env; + protected $blocks = array(); + protected $traits = array(); + + public function __construct(Twig_Environment $env) + { + $this->env = $env; + } + + /** + * @internal this method will be removed in 2.0 and is only used internally to provide an upgrade path from 1.x to 2.0 + */ + public function __toString() + { + return $this->getTemplateName(); + } + + /** + * Returns the template name. + * + * @return string The template name + */ + abstract public function getTemplateName(); + + /** + * Returns debug information about the template. + * + * @return array Debug information + * + * @internal + */ + public function getDebugInfo() + { + return array(); + } + + /** + * Returns the template source code. + * + * @return string The template source code + * + * @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead + */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return ''; + } + + /** + * Returns information about the original template source code. + * + * @return Twig_Source + */ + public function getSourceContext() + { + return new Twig_Source('', $this->getTemplateName()); + } + + /** + * @deprecated since 1.20 (to be removed in 2.0) + */ + public function getEnvironment() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.20 and will be removed in 2.0.', E_USER_DEPRECATED); + + return $this->env; + } + + /** + * Returns the parent template. + * + * This method is for internal use only and should never be called + * directly. + * + * @param array $context + * + * @return Twig_TemplateInterface|false The parent template or false if there is no parent + * + * @internal + */ + public function getParent(array $context) + { + if (null !== $this->parent) { + return $this->parent; + } + + try { + $parent = $this->doGetParent($context); + + if (false === $parent) { + return false; + } + + if ($parent instanceof self) { + return $this->parents[$parent->getTemplateName()] = $parent; + } + + if (!isset($this->parents[$parent])) { + $this->parents[$parent] = $this->loadTemplate($parent); + } + } catch (Twig_Error_Loader $e) { + $e->setSourceContext(null); + $e->guess(); + + throw $e; + } + + return $this->parents[$parent]; + } + + protected function doGetParent(array $context) + { + return false; + } + + public function isTraitable() + { + return true; + } + + /** + * Displays a parent block. + * + * This method is for internal use only and should never be called + * directly. + * + * @param string $name The block name to display from the parent + * @param array $context The context + * @param array $blocks The current set of blocks + * + * @internal + */ + public function displayParentBlock($name, array $context, array $blocks = array()) + { + $name = (string) $name; + + if (isset($this->traits[$name])) { + $this->traits[$name][0]->displayBlock($name, $context, $blocks, false); + } elseif (false !== $parent = $this->getParent($context)) { + $parent->displayBlock($name, $context, $blocks, false); + } else { + throw new Twig_Error_Runtime(sprintf('The template has no parent and no traits defining the "%s" block.', $name), -1, $this->getSourceContext()); + } + } + + /** + * Displays a block. + * + * This method is for internal use only and should never be called + * directly. + * + * @param string $name The block name to display + * @param array $context The context + * @param array $blocks The current set of blocks + * @param bool $useBlocks Whether to use the current set of blocks + * + * @internal + */ + public function displayBlock($name, array $context, array $blocks = array(), $useBlocks = true) + { + $name = (string) $name; + + if ($useBlocks && isset($blocks[$name])) { + $template = $blocks[$name][0]; + $block = $blocks[$name][1]; + } elseif (isset($this->blocks[$name])) { + $template = $this->blocks[$name][0]; + $block = $this->blocks[$name][1]; + } else { + $template = null; + $block = null; + } + + // avoid RCEs when sandbox is enabled + if (null !== $template && !$template instanceof self) { + throw new LogicException('A block must be a method on a Twig_Template instance.'); + } + + if (null !== $template) { + try { + $template->$block($context, $blocks); + } catch (Twig_Error $e) { + if (!$e->getSourceContext()) { + $e->setSourceContext($template->getSourceContext()); + } + + // this is mostly useful for Twig_Error_Loader exceptions + // see Twig_Error_Loader + if (false === $e->getTemplateLine()) { + $e->setTemplateLine(-1); + $e->guess(); + } + + throw $e; + } catch (Exception $e) { + throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $template->getSourceContext(), $e); + } + } elseif (false !== $parent = $this->getParent($context)) { + $parent->displayBlock($name, $context, array_merge($this->blocks, $blocks), false); + } else { + @trigger_error(sprintf('Silent display of undefined block "%s" in template "%s" is deprecated since version 1.29 and will throw an exception in 2.0. Use the "block(\'%s\') is defined" expression to test for block existence.', $name, $this->getTemplateName(), $name), E_USER_DEPRECATED); + } + } + + /** + * Renders a parent block. + * + * This method is for internal use only and should never be called + * directly. + * + * @param string $name The block name to render from the parent + * @param array $context The context + * @param array $blocks The current set of blocks + * + * @return string The rendered block + * + * @internal + */ + public function renderParentBlock($name, array $context, array $blocks = array()) + { + ob_start(); + $this->displayParentBlock($name, $context, $blocks); + + return ob_get_clean(); + } + + /** + * Renders a block. + * + * This method is for internal use only and should never be called + * directly. + * + * @param string $name The block name to render + * @param array $context The context + * @param array $blocks The current set of blocks + * @param bool $useBlocks Whether to use the current set of blocks + * + * @return string The rendered block + * + * @internal + */ + public function renderBlock($name, array $context, array $blocks = array(), $useBlocks = true) + { + ob_start(); + $this->displayBlock($name, $context, $blocks, $useBlocks); + + return ob_get_clean(); + } + + /** + * Returns whether a block exists or not in the current context of the template. + * + * This method checks blocks defined in the current template + * or defined in "used" traits or defined in parent templates. + * + * @param string $name The block name + * @param array $context The context + * @param array $blocks The current set of blocks + * + * @return bool true if the block exists, false otherwise + * + * @internal + */ + public function hasBlock($name, array $context = null, array $blocks = array()) + { + if (null === $context) { + @trigger_error('The '.__METHOD__.' method is internal and should never be called; calling it directly is deprecated since version 1.28 and won\'t be possible anymore in 2.0.', E_USER_DEPRECATED); + + return isset($this->blocks[(string) $name]); + } + + if (isset($blocks[$name])) { + return $blocks[$name][0] instanceof self; + } + + if (isset($this->blocks[$name])) { + return true; + } + + if (false !== $parent = $this->getParent($context)) { + return $parent->hasBlock($name, $context); + } + + return false; + } + + /** + * Returns all block names in the current context of the template. + * + * This method checks blocks defined in the current template + * or defined in "used" traits or defined in parent templates. + * + * @param array $context The context + * @param array $blocks The current set of blocks + * + * @return array An array of block names + * + * @internal + */ + public function getBlockNames(array $context = null, array $blocks = array()) + { + if (null === $context) { + @trigger_error('The '.__METHOD__.' method is internal and should never be called; calling it directly is deprecated since version 1.28 and won\'t be possible anymore in 2.0.', E_USER_DEPRECATED); + + return array_keys($this->blocks); + } + + $names = array_merge(array_keys($blocks), array_keys($this->blocks)); + + if (false !== $parent = $this->getParent($context)) { + $names = array_merge($names, $parent->getBlockNames($context)); + } + + return array_unique($names); + } + + protected function loadTemplate($template, $templateName = null, $line = null, $index = null) + { + try { + if (is_array($template)) { + return $this->env->resolveTemplate($template); + } + + if ($template instanceof self) { + return $template; + } + + if ($template instanceof Twig_TemplateWrapper) { + return $template; + } + + return $this->env->loadTemplate($template, $index); + } catch (Twig_Error $e) { + if (!$e->getSourceContext()) { + $e->setSourceContext($templateName ? new Twig_Source('', $templateName) : $this->getSourceContext()); + } + + if ($e->getTemplateLine()) { + throw $e; + } + + if (!$line) { + $e->guess(); + } else { + $e->setTemplateLine($line); + } + + throw $e; + } + } + + /** + * Returns all blocks. + * + * This method is for internal use only and should never be called + * directly. + * + * @return array An array of blocks + * + * @internal + */ + public function getBlocks() + { + return $this->blocks; + } + + public function display(array $context, array $blocks = array()) + { + $this->displayWithErrorHandling($this->env->mergeGlobals($context), array_merge($this->blocks, $blocks)); + } + + public function render(array $context) + { + $level = ob_get_level(); + ob_start(); + try { + $this->display($context); + } catch (Exception $e) { + while (ob_get_level() > $level) { + ob_end_clean(); + } + + throw $e; + } catch (Throwable $e) { + while (ob_get_level() > $level) { + ob_end_clean(); + } + + throw $e; + } + + return ob_get_clean(); + } + + protected function displayWithErrorHandling(array $context, array $blocks = array()) + { + try { + $this->doDisplay($context, $blocks); + } catch (Twig_Error $e) { + if (!$e->getSourceContext()) { + $e->setSourceContext($this->getSourceContext()); + } + + // this is mostly useful for Twig_Error_Loader exceptions + // see Twig_Error_Loader + if (false === $e->getTemplateLine()) { + $e->setTemplateLine(-1); + $e->guess(); + } + + throw $e; + } catch (Exception $e) { + throw new Twig_Error_Runtime(sprintf('An exception has been thrown during the rendering of a template ("%s").', $e->getMessage()), -1, $this->getSourceContext(), $e); + } + } + + /** + * Auto-generated method to display the template with the given context. + * + * @param array $context An array of parameters to pass to the template + * @param array $blocks An array of blocks to pass to the template + */ + abstract protected function doDisplay(array $context, array $blocks = array()); + + /** + * Returns a variable from the context. + * + * This method is for internal use only and should never be called + * directly. + * + * This method should not be overridden in a sub-class as this is an + * implementation detail that has been introduced to optimize variable + * access for versions of PHP before 5.4. This is not a way to override + * the way to get a variable value. + * + * @param array $context The context + * @param string $item The variable to return from the context + * @param bool $ignoreStrictCheck Whether to ignore the strict variable check or not + * + * @return mixed The content of the context variable + * + * @throws Twig_Error_Runtime if the variable does not exist and Twig is running in strict mode + * + * @internal + */ + final protected function getContext($context, $item, $ignoreStrictCheck = false) + { + if (!array_key_exists($item, $context)) { + if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { + return; + } + + throw new Twig_Error_Runtime(sprintf('Variable "%s" does not exist.', $item), -1, $this->getSourceContext()); + } + + return $context[$item]; + } + + /** + * Returns the attribute value for a given array/object. + * + * @param mixed $object The object or array from where to get the item + * @param mixed $item The item to get from the array or object + * @param array $arguments An array of arguments to pass if the item is an object method + * @param string $type The type of attribute (@see Twig_Template constants) + * @param bool $isDefinedTest Whether this is only a defined check + * @param bool $ignoreStrictCheck Whether to ignore the strict attribute check or not + * + * @return mixed The attribute value, or a Boolean when $isDefinedTest is true, or null when the attribute is not set and $ignoreStrictCheck is true + * + * @throws Twig_Error_Runtime if the attribute does not exist and Twig is running in strict mode and $isDefinedTest is false + * + * @internal + */ + protected function getAttribute($object, $item, array $arguments = array(), $type = self::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false) + { + // array + if (self::METHOD_CALL !== $type) { + $arrayItem = is_bool($item) || is_float($item) ? (int) $item : $item; + + if ((is_array($object) && (isset($object[$arrayItem]) || array_key_exists($arrayItem, $object))) + || ($object instanceof ArrayAccess && isset($object[$arrayItem])) + ) { + if ($isDefinedTest) { + return true; + } + + return $object[$arrayItem]; + } + + if (self::ARRAY_CALL === $type || !is_object($object)) { + if ($isDefinedTest) { + return false; + } + + if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { + return; + } + + if ($object instanceof ArrayAccess) { + $message = sprintf('Key "%s" in object with ArrayAccess of class "%s" does not exist.', $arrayItem, get_class($object)); + } elseif (is_object($object)) { + $message = sprintf('Impossible to access a key "%s" on an object of class "%s" that does not implement ArrayAccess interface.', $item, get_class($object)); + } elseif (is_array($object)) { + if (empty($object)) { + $message = sprintf('Key "%s" does not exist as the array is empty.', $arrayItem); + } else { + $message = sprintf('Key "%s" for array with keys "%s" does not exist.', $arrayItem, implode(', ', array_keys($object))); + } + } elseif (self::ARRAY_CALL === $type) { + if (null === $object) { + $message = sprintf('Impossible to access a key ("%s") on a null variable.', $item); + } else { + $message = sprintf('Impossible to access a key ("%s") on a %s variable ("%s").', $item, gettype($object), $object); + } + } elseif (null === $object) { + $message = sprintf('Impossible to access an attribute ("%s") on a null variable.', $item); + } else { + $message = sprintf('Impossible to access an attribute ("%s") on a %s variable ("%s").', $item, gettype($object), $object); + } + + throw new Twig_Error_Runtime($message, -1, $this->getSourceContext()); + } + } + + if (!is_object($object)) { + if ($isDefinedTest) { + return false; + } + + if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { + return; + } + + if (null === $object) { + $message = sprintf('Impossible to invoke a method ("%s") on a null variable.', $item); + } else { + $message = sprintf('Impossible to invoke a method ("%s") on a %s variable ("%s").', $item, gettype($object), $object); + } + + throw new Twig_Error_Runtime($message, -1, $this->getSourceContext()); + } + + // object property + if (self::METHOD_CALL !== $type && !$object instanceof self) { // Twig_Template does not have public properties, and we don't want to allow access to internal ones + if (isset($object->$item) || array_key_exists((string) $item, $object)) { + if ($isDefinedTest) { + return true; + } + + if ($this->env->hasExtension('Twig_Extension_Sandbox')) { + $this->env->getExtension('Twig_Extension_Sandbox')->checkPropertyAllowed($object, $item); + } + + return $object->$item; + } + } + + $class = get_class($object); + + // object method + if (!isset(self::$cache[$class])) { + // get_class_methods returns all methods accessible in the scope, but we only want public ones to be accessible in templates + if ($object instanceof self) { + $ref = new ReflectionClass($class); + $methods = array(); + + foreach ($ref->getMethods(ReflectionMethod::IS_PUBLIC) as $refMethod) { + // Accessing the environment from templates is forbidden to prevent untrusted changes to the environment + if ('getenvironment' !== strtolower($refMethod->name)) { + $methods[] = $refMethod->name; + } + } + } else { + $methods = get_class_methods($object); + } + // sort values to have consistent behavior, so that "get" methods win precedence over "is" methods + sort($methods); + + $cache = array(); + + foreach ($methods as $method) { + $cache[$method] = $method; + $cache[$lcName = strtolower($method)] = $method; + + if ('g' === $lcName[0] && 0 === strpos($lcName, 'get')) { + $name = substr($method, 3); + $lcName = substr($lcName, 3); + } elseif ('i' === $lcName[0] && 0 === strpos($lcName, 'is')) { + $name = substr($method, 2); + $lcName = substr($lcName, 2); + } else { + continue; + } + + if (!isset($cache[$name])) { + $cache[$name] = $method; + } + if (!isset($cache[$lcName])) { + $cache[$lcName] = $method; + } + } + self::$cache[$class] = $cache; + } + + $call = false; + if (isset(self::$cache[$class][$item])) { + $method = self::$cache[$class][$item]; + } elseif (isset(self::$cache[$class][$lcItem = strtolower($item)])) { + $method = self::$cache[$class][$lcItem]; + } elseif (isset(self::$cache[$class]['__call'])) { + $method = $item; + $call = true; + } else { + if ($isDefinedTest) { + return false; + } + + if ($ignoreStrictCheck || !$this->env->isStrictVariables()) { + return; + } + + throw new Twig_Error_Runtime(sprintf('Neither the property "%1$s" nor one of the methods "%1$s()", "get%1$s()"/"is%1$s()" or "__call()" exist and have public access in class "%2$s".', $item, $class), -1, $this->getSourceContext()); + } + + if ($isDefinedTest) { + return true; + } + + if ($this->env->hasExtension('Twig_Extension_Sandbox')) { + $this->env->getExtension('Twig_Extension_Sandbox')->checkMethodAllowed($object, $method); + } + + // Some objects throw exceptions when they have __call, and the method we try + // to call is not supported. If ignoreStrictCheck is true, we should return null. + try { + if (!$arguments) { + $ret = $object->$method(); + } else { + $ret = call_user_func_array(array($object, $method), $arguments); + } + } catch (BadMethodCallException $e) { + if ($call && ($ignoreStrictCheck || !$this->env->isStrictVariables())) { + return; + } + throw $e; + } + + // @deprecated in 1.28 + if ($object instanceof Twig_TemplateInterface) { + $self = $object->getTemplateName() === $this->getTemplateName(); + $message = sprintf('Calling "%s" on template "%s" from template "%s" is deprecated since version 1.28 and won\'t be supported anymore in 2.0.', $item, $object->getTemplateName(), $this->getTemplateName()); + if ('renderBlock' === $method || 'displayBlock' === $method) { + $message .= sprintf(' Use block("%s"%s) instead).', $arguments[0], $self ? '' : ', template'); + } elseif ('hasBlock' === $method) { + $message .= sprintf(' Use "block("%s"%s) is defined" instead).', $arguments[0], $self ? '' : ', template'); + } elseif ('render' === $method || 'display' === $method) { + $message .= sprintf(' Use include("%s") instead).', $object->getTemplateName()); + } + @trigger_error($message, E_USER_DEPRECATED); + + return $ret === '' ? '' : new Twig_Markup($ret, $this->env->getCharset()); + } + + return $ret; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TemplateInterface.php b/system/vendor/twig/twig/lib/Twig/TemplateInterface.php new file mode 100644 index 0000000..457ef7d --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TemplateInterface.php @@ -0,0 +1,48 @@ + + * + * @deprecated since 1.12 (to be removed in 3.0) + */ +interface Twig_TemplateInterface +{ + const ANY_CALL = 'any'; + const ARRAY_CALL = 'array'; + const METHOD_CALL = 'method'; + + /** + * Renders the template with the given context and returns it as string. + * + * @param array $context An array of parameters to pass to the template + * + * @return string The rendered template + */ + public function render(array $context); + + /** + * Displays the template with the given context. + * + * @param array $context An array of parameters to pass to the template + * @param array $blocks An array of blocks to pass to the template + */ + public function display(array $context, array $blocks = array()); + + /** + * Returns the bound environment for this template. + * + * @return Twig_Environment + */ + public function getEnvironment(); +} diff --git a/system/vendor/twig/twig/lib/Twig/TemplateWrapper.php b/system/vendor/twig/twig/lib/Twig/TemplateWrapper.php new file mode 100644 index 0000000..b72b92c --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TemplateWrapper.php @@ -0,0 +1,131 @@ + + */ +final class Twig_TemplateWrapper +{ + private $env; + private $template; + + /** + * This method is for internal use only and should never be called + * directly (use Twig_Environment::load() instead). + * + * @internal + */ + public function __construct(Twig_Environment $env, Twig_Template $template) + { + $this->env = $env; + $this->template = $template; + } + + /** + * Renders the template. + * + * @param array $context An array of parameters to pass to the template + * + * @return string The rendered template + */ + public function render($context = array()) + { + return $this->template->render($context); + } + + /** + * Displays the template. + * + * @param array $context An array of parameters to pass to the template + */ + public function display($context = array()) + { + $this->template->display($context); + } + + /** + * Checks if a block is defined. + * + * @param string $name The block name + * @param array $context An array of parameters to pass to the template + * + * @return bool + */ + public function hasBlock($name, $context = array()) + { + return $this->template->hasBlock($name, $context); + } + + /** + * Returns defined block names in the template. + * + * @param array $context An array of parameters to pass to the template + * + * @return string[] An array of defined template block names + */ + public function getBlockNames($context = array()) + { + return $this->template->getBlockNames($context); + } + + /** + * Renders a template block. + * + * @param string $name The block name to render + * @param array $context An array of parameters to pass to the template + * + * @return string The rendered block + */ + public function renderBlock($name, $context = array()) + { + $context = $this->env->mergeGlobals($context); + $level = ob_get_level(); + ob_start(); + try { + $this->template->displayBlock($name, $context); + } catch (Exception $e) { + while (ob_get_level() > $level) { + ob_end_clean(); + } + + throw $e; + } catch (Throwable $e) { + while (ob_get_level() > $level) { + ob_end_clean(); + } + + throw $e; + } + + return ob_get_clean(); + } + + /** + * Displays a template block. + * + * @param string $name The block name to render + * @param array $context An array of parameters to pass to the template + */ + public function displayBlock($name, $context = array()) + { + $this->template->displayBlock($name, $this->env->mergeGlobals($context)); + } + + /** + * @return Twig_Source + */ + public function getSourceContext() + { + return $this->template->getSourceContext(); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Test.php b/system/vendor/twig/twig/lib/Twig/Test.php new file mode 100644 index 0000000..b450ec6 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Test.php @@ -0,0 +1,37 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +abstract class Twig_Test implements Twig_TestInterface, Twig_TestCallableInterface +{ + protected $options; + protected $arguments = array(); + + public function __construct(array $options = array()) + { + $this->options = array_merge(array( + 'callable' => null, + ), $options); + } + + public function getCallable() + { + return $this->options['callable']; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Test/Function.php b/system/vendor/twig/twig/lib/Twig/Test/Function.php new file mode 100644 index 0000000..9e83c3f --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Test/Function.php @@ -0,0 +1,38 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +class Twig_Test_Function extends Twig_Test +{ + protected $function; + + public function __construct($function, array $options = array()) + { + $options['callable'] = $function; + + parent::__construct($options); + + $this->function = $function; + } + + public function compile() + { + return $this->function; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php b/system/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php new file mode 100644 index 0000000..2253f71 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Test/IntegrationTestCase.php @@ -0,0 +1,232 @@ + + * @author Karma Dordrak + */ +abstract class Twig_Test_IntegrationTestCase extends PHPUnit_Framework_TestCase +{ + /** + * @return string + */ + abstract protected function getFixturesDir(); + + /** + * @return Twig_ExtensionInterface[] + */ + protected function getExtensions() + { + return array(); + } + + /** + * @return Twig_SimpleFilter[] + */ + protected function getTwigFilters() + { + return array(); + } + + /** + * @return Twig_SimpleFunction[] + */ + protected function getTwigFunctions() + { + return array(); + } + + /** + * @return Twig_SimpleTest[] + */ + protected function getTwigTests() + { + return array(); + } + + /** + * @dataProvider getTests + */ + public function testIntegration($file, $message, $condition, $templates, $exception, $outputs) + { + $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs); + } + + /** + * @dataProvider getLegacyTests + * @group legacy + */ + public function testLegacyIntegration($file, $message, $condition, $templates, $exception, $outputs) + { + $this->doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs); + } + + public function getTests($name, $legacyTests = false) + { + $fixturesDir = realpath($this->getFixturesDir()); + $tests = array(); + + foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($fixturesDir), RecursiveIteratorIterator::LEAVES_ONLY) as $file) { + if (!preg_match('/\.test$/', $file)) { + continue; + } + + if ($legacyTests xor false !== strpos($file->getRealpath(), '.legacy.test')) { + continue; + } + + $test = file_get_contents($file->getRealpath()); + + if (preg_match('/--TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)\s*(?:--DATA--\s*(.*))?\s*--EXCEPTION--\s*(.*)/sx', $test, $match)) { + $message = $match[1]; + $condition = $match[2]; + $templates = self::parseTemplates($match[3]); + $exception = $match[5]; + $outputs = array(array(null, $match[4], null, '')); + } elseif (preg_match('/--TEST--\s*(.*?)\s*(?:--CONDITION--\s*(.*))?\s*((?:--TEMPLATE(?:\(.*?\))?--(?:.*?))+)--DATA--.*?--EXPECT--.*/s', $test, $match)) { + $message = $match[1]; + $condition = $match[2]; + $templates = self::parseTemplates($match[3]); + $exception = false; + preg_match_all('/--DATA--(.*?)(?:--CONFIG--(.*?))?--EXPECT--(.*?)(?=\-\-DATA\-\-|$)/s', $test, $outputs, PREG_SET_ORDER); + } else { + throw new InvalidArgumentException(sprintf('Test "%s" is not valid.', str_replace($fixturesDir.'/', '', $file))); + } + + $tests[] = array(str_replace($fixturesDir.'/', '', $file), $message, $condition, $templates, $exception, $outputs); + } + + if ($legacyTests && empty($tests)) { + // add a dummy test to avoid a PHPUnit message + return array(array('not', '-', '', array(), '', array())); + } + + return $tests; + } + + public function getLegacyTests() + { + return $this->getTests('testLegacyIntegration', true); + } + + protected function doIntegrationTest($file, $message, $condition, $templates, $exception, $outputs) + { + if (!$outputs) { + $this->markTestSkipped('no legacy tests to run'); + } + + if ($condition) { + eval('$ret = '.$condition.';'); + if (!$ret) { + $this->markTestSkipped($condition); + } + } + + $loader = new Twig_Loader_Array($templates); + + foreach ($outputs as $i => $match) { + $config = array_merge(array( + 'cache' => false, + 'strict_variables' => true, + ), $match[2] ? eval($match[2].';') : array()); + $twig = new Twig_Environment($loader, $config); + $twig->addGlobal('global', 'global'); + foreach ($this->getExtensions() as $extension) { + $twig->addExtension($extension); + } + + foreach ($this->getTwigFilters() as $filter) { + $twig->addFilter($filter); + } + + foreach ($this->getTwigTests() as $test) { + $twig->addTest($test); + } + + foreach ($this->getTwigFunctions() as $function) { + $twig->addFunction($function); + } + + // avoid using the same PHP class name for different cases + // only for PHP 5.2+ + if (PHP_VERSION_ID >= 50300) { + $p = new ReflectionProperty($twig, 'templateClassPrefix'); + $p->setAccessible(true); + $p->setValue($twig, '__TwigTemplate_'.hash('sha256', uniqid(mt_rand(), true), false).'_'); + } + + try { + $template = $twig->loadTemplate('index.twig'); + } catch (Exception $e) { + if (false !== $exception) { + $message = $e->getMessage(); + $this->assertSame(trim($exception), trim(sprintf('%s: %s', get_class($e), $message))); + $last = substr($message, strlen($message) - 1); + $this->assertTrue('.' === $last || '?' === $last, $message, 'Exception message must end with a dot or a question mark.'); + + return; + } + + throw new Twig_Error(sprintf('%s: %s', get_class($e), $e->getMessage()), -1, $file, $e); + } + + try { + $output = trim($template->render(eval($match[1].';')), "\n "); + } catch (Exception $e) { + if (false !== $exception) { + $this->assertSame(trim($exception), trim(sprintf('%s: %s', get_class($e), $e->getMessage()))); + + return; + } + + $e = new Twig_Error(sprintf('%s: %s', get_class($e), $e->getMessage()), -1, $file, $e); + + $output = trim(sprintf('%s: %s', get_class($e), $e->getMessage())); + } + + if (false !== $exception) { + list($class) = explode(':', $exception); + $this->assertThat(null, new PHPUnit_Framework_Constraint_Exception($class)); + } + + $expected = trim($match[3], "\n "); + + if ($expected !== $output) { + printf("Compiled templates that failed on case %d:\n", $i + 1); + + foreach (array_keys($templates) as $name) { + echo "Template: $name\n"; + $loader = $twig->getLoader(); + if (!$loader instanceof Twig_SourceContextLoaderInterface) { + $source = new Twig_Source($loader->getSource($name), $name); + } else { + $source = $loader->getSourceContext($name); + } + echo $twig->compile($twig->parse($twig->tokenize($source))); + } + } + $this->assertEquals($expected, $output, $message.' (in '.$file.')'); + } + } + + protected static function parseTemplates($test) + { + $templates = array(); + preg_match_all('/--TEMPLATE(?:\((.*?)\))?--(.*?)(?=\-\-TEMPLATE|$)/s', $test, $matches, PREG_SET_ORDER); + foreach ($matches as $match) { + $templates[($match[1] ? $match[1] : 'index.twig')] = $match[2]; + } + + return $templates; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Test/Method.php b/system/vendor/twig/twig/lib/Twig/Test/Method.php new file mode 100644 index 0000000..feccd5d --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Test/Method.php @@ -0,0 +1,40 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +class Twig_Test_Method extends Twig_Test +{ + protected $extension; + protected $method; + + public function __construct(Twig_ExtensionInterface $extension, $method, array $options = array()) + { + $options['callable'] = array($extension, $method); + + parent::__construct($options); + + $this->extension = $extension; + $this->method = $method; + } + + public function compile() + { + return sprintf('$this->env->getExtension(\'%s\')->%s', get_class($this->extension), $this->method); + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Test/Node.php b/system/vendor/twig/twig/lib/Twig/Test/Node.php new file mode 100644 index 0000000..6098a52 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Test/Node.php @@ -0,0 +1,40 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +class Twig_Test_Node extends Twig_Test +{ + protected $class; + + public function __construct($class, array $options = array()) + { + parent::__construct($options); + + $this->class = $class; + } + + public function getClass() + { + return $this->class; + } + + public function compile() + { + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Test/NodeTestCase.php b/system/vendor/twig/twig/lib/Twig/Test/NodeTestCase.php new file mode 100644 index 0000000..a6b550c --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Test/NodeTestCase.php @@ -0,0 +1,68 @@ +assertNodeCompilation($source, $node, $environment, $isPattern); + } + + public function assertNodeCompilation($source, Twig_Node $node, Twig_Environment $environment = null, $isPattern = false) + { + $compiler = $this->getCompiler($environment); + $compiler->compile($node); + + if ($isPattern) { + $this->assertStringMatchesFormat($source, trim($compiler->getSource())); + } else { + $this->assertEquals($source, trim($compiler->getSource())); + } + } + + protected function getCompiler(Twig_Environment $environment = null) + { + return new Twig_Compiler(null === $environment ? $this->getEnvironment() : $environment); + } + + protected function getEnvironment() + { + return new Twig_Environment(new Twig_Loader_Array(array())); + } + + protected function getVariableGetter($name, $line = false) + { + $line = $line > 0 ? "// line {$line}\n" : ''; + + if (PHP_VERSION_ID >= 70000) { + return sprintf('%s($context["%s"] ?? null)', $line, $name, $name); + } + + if (PHP_VERSION_ID >= 50400) { + return sprintf('%s(isset($context["%s"]) ? $context["%s"] : null)', $line, $name, $name); + } + + return sprintf('%s$this->getContext($context, "%s")', $line, $name); + } + + protected function getAttributeGetter() + { + if (function_exists('twig_template_get_attributes')) { + return 'twig_template_get_attributes($this, '; + } + + return '$this->getAttribute('; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TestCallableInterface.php b/system/vendor/twig/twig/lib/Twig/TestCallableInterface.php new file mode 100644 index 0000000..51ecb9a --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TestCallableInterface.php @@ -0,0 +1,22 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +interface Twig_TestCallableInterface +{ + public function getCallable(); +} diff --git a/system/vendor/twig/twig/lib/Twig/TestInterface.php b/system/vendor/twig/twig/lib/Twig/TestInterface.php new file mode 100644 index 0000000..9166407 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TestInterface.php @@ -0,0 +1,27 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +interface Twig_TestInterface +{ + /** + * Compiles a test. + * + * @return string The PHP code for the test + */ + public function compile(); +} diff --git a/system/vendor/twig/twig/lib/Twig/Token.php b/system/vendor/twig/twig/lib/Twig/Token.php new file mode 100644 index 0000000..717ab08 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Token.php @@ -0,0 +1,205 @@ + + * + * @final + */ +class Twig_Token +{ + protected $value; + protected $type; + protected $lineno; + + const EOF_TYPE = -1; + const TEXT_TYPE = 0; + const BLOCK_START_TYPE = 1; + const VAR_START_TYPE = 2; + const BLOCK_END_TYPE = 3; + const VAR_END_TYPE = 4; + const NAME_TYPE = 5; + const NUMBER_TYPE = 6; + const STRING_TYPE = 7; + const OPERATOR_TYPE = 8; + const PUNCTUATION_TYPE = 9; + const INTERPOLATION_START_TYPE = 10; + const INTERPOLATION_END_TYPE = 11; + + /** + * @param int $type The type of the token + * @param string $value The token value + * @param int $lineno The line position in the source + */ + public function __construct($type, $value, $lineno) + { + $this->type = $type; + $this->value = $value; + $this->lineno = $lineno; + } + + public function __toString() + { + return sprintf('%s(%s)', self::typeToString($this->type, true), $this->value); + } + + /** + * Tests the current token for a type and/or a value. + * + * Parameters may be: + * * just type + * * type and value (or array of possible values) + * * just value (or array of possible values) (NAME_TYPE is used as type) + * + * @param array|int $type The type to test + * @param array|string|null $values The token value + * + * @return bool + */ + public function test($type, $values = null) + { + if (null === $values && !is_int($type)) { + $values = $type; + $type = self::NAME_TYPE; + } + + return ($this->type === $type) && ( + null === $values || + (is_array($values) && in_array($this->value, $values)) || + $this->value == $values + ); + } + + /** + * @return int + */ + public function getLine() + { + return $this->lineno; + } + + /** + * @return int + */ + public function getType() + { + return $this->type; + } + + /** + * @return string + */ + public function getValue() + { + return $this->value; + } + + /** + * Returns the constant representation (internal) of a given type. + * + * @param int $type The type as an integer + * @param bool $short Whether to return a short representation or not + * + * @return string The string representation + */ + public static function typeToString($type, $short = false) + { + switch ($type) { + case self::EOF_TYPE: + $name = 'EOF_TYPE'; + break; + case self::TEXT_TYPE: + $name = 'TEXT_TYPE'; + break; + case self::BLOCK_START_TYPE: + $name = 'BLOCK_START_TYPE'; + break; + case self::VAR_START_TYPE: + $name = 'VAR_START_TYPE'; + break; + case self::BLOCK_END_TYPE: + $name = 'BLOCK_END_TYPE'; + break; + case self::VAR_END_TYPE: + $name = 'VAR_END_TYPE'; + break; + case self::NAME_TYPE: + $name = 'NAME_TYPE'; + break; + case self::NUMBER_TYPE: + $name = 'NUMBER_TYPE'; + break; + case self::STRING_TYPE: + $name = 'STRING_TYPE'; + break; + case self::OPERATOR_TYPE: + $name = 'OPERATOR_TYPE'; + break; + case self::PUNCTUATION_TYPE: + $name = 'PUNCTUATION_TYPE'; + break; + case self::INTERPOLATION_START_TYPE: + $name = 'INTERPOLATION_START_TYPE'; + break; + case self::INTERPOLATION_END_TYPE: + $name = 'INTERPOLATION_END_TYPE'; + break; + default: + throw new LogicException(sprintf('Token of type "%s" does not exist.', $type)); + } + + return $short ? $name : 'Twig_Token::'.$name; + } + + /** + * Returns the English representation of a given type. + * + * @param int $type The type as an integer + * + * @return string The string representation + */ + public static function typeToEnglish($type) + { + switch ($type) { + case self::EOF_TYPE: + return 'end of template'; + case self::TEXT_TYPE: + return 'text'; + case self::BLOCK_START_TYPE: + return 'begin of statement block'; + case self::VAR_START_TYPE: + return 'begin of print statement'; + case self::BLOCK_END_TYPE: + return 'end of statement block'; + case self::VAR_END_TYPE: + return 'end of print statement'; + case self::NAME_TYPE: + return 'name'; + case self::NUMBER_TYPE: + return 'number'; + case self::STRING_TYPE: + return 'string'; + case self::OPERATOR_TYPE: + return 'operator'; + case self::PUNCTUATION_TYPE: + return 'punctuation'; + case self::INTERPOLATION_START_TYPE: + return 'begin of string interpolation'; + case self::INTERPOLATION_END_TYPE: + return 'end of string interpolation'; + default: + throw new LogicException(sprintf('Token of type "%s" does not exist.', $type)); + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser.php b/system/vendor/twig/twig/lib/Twig/TokenParser.php new file mode 100644 index 0000000..700a227 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser.php @@ -0,0 +1,31 @@ + + */ +abstract class Twig_TokenParser implements Twig_TokenParserInterface +{ + /** + * @var Twig_Parser + */ + protected $parser; + + /** + * Sets the parser associated with this token parser. + */ + public function setParser(Twig_Parser $parser) + { + $this->parser = $parser; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/AutoEscape.php b/system/vendor/twig/twig/lib/Twig/TokenParser/AutoEscape.php new file mode 100644 index 0000000..176820e --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/AutoEscape.php @@ -0,0 +1,81 @@ + + * {% autoescape true %} + * Everything will be automatically escaped in this block + * {% endautoescape %} + * + * {% autoescape false %} + * Everything will be outputed as is in this block + * {% endautoescape %} + * + * {% autoescape true js %} + * Everything will be automatically escaped in this block + * using the js escaping strategy + * {% endautoescape %} + * + * + * @final + */ +class Twig_TokenParser_AutoEscape extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $lineno = $token->getLine(); + $stream = $this->parser->getStream(); + + if ($stream->test(Twig_Token::BLOCK_END_TYPE)) { + $value = 'html'; + } else { + $expr = $this->parser->getExpressionParser()->parseExpression(); + if (!$expr instanceof Twig_Node_Expression_Constant) { + throw new Twig_Error_Syntax('An escaping strategy must be a string or a bool.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + $value = $expr->getAttribute('value'); + + $compat = true === $value || false === $value; + + if (true === $value) { + $value = 'html'; + } + + if ($compat && $stream->test(Twig_Token::NAME_TYPE)) { + @trigger_error('Using the autoescape tag with "true" or "false" before the strategy name is deprecated since version 1.21.', E_USER_DEPRECATED); + + if (false === $value) { + throw new Twig_Error_Syntax('Unexpected escaping strategy as you set autoescaping to false.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + + $value = $stream->next()->getValue(); + } + } + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true); + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + return new Twig_Node_AutoEscape($value, $body, $lineno, $this->getTag()); + } + + public function decideBlockEnd(Twig_Token $token) + { + return $token->test('endautoescape'); + } + + public function getTag() + { + return 'autoescape'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/Block.php b/system/vendor/twig/twig/lib/Twig/TokenParser/Block.php new file mode 100644 index 0000000..9dae2b9 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/Block.php @@ -0,0 +1,71 @@ + + * {% block head %} + * + * {% block title %}{% endblock %} - My Webpage + * {% endblock %} + * + * + * @final + */ +class Twig_TokenParser_Block extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $lineno = $token->getLine(); + $stream = $this->parser->getStream(); + $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); + if ($this->parser->hasBlock($name)) { + throw new Twig_Error_Syntax(sprintf("The block '%s' has already been defined line %d.", $name, $this->parser->getBlock($name)->getTemplateLine()), $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + $this->parser->setBlock($name, $block = new Twig_Node_Block($name, new Twig_Node(array()), $lineno)); + $this->parser->pushLocalScope(); + $this->parser->pushBlockStack($name); + + if ($stream->nextIf(Twig_Token::BLOCK_END_TYPE)) { + $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true); + if ($token = $stream->nextIf(Twig_Token::NAME_TYPE)) { + $value = $token->getValue(); + + if ($value != $name) { + throw new Twig_Error_Syntax(sprintf('Expected endblock for block "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + } + } else { + $body = new Twig_Node(array( + new Twig_Node_Print($this->parser->getExpressionParser()->parseExpression(), $lineno), + )); + } + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + $block->setNode('body', $body); + $this->parser->popBlockStack(); + $this->parser->popLocalScope(); + + return new Twig_Node_BlockReference($name, $lineno, $this->getTag()); + } + + public function decideBlockEnd(Twig_Token $token) + { + return $token->test('endblock'); + } + + public function getTag() + { + return 'block'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/Do.php b/system/vendor/twig/twig/lib/Twig/TokenParser/Do.php new file mode 100644 index 0000000..fd03a29 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/Do.php @@ -0,0 +1,32 @@ +parser->getExpressionParser()->parseExpression(); + + $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); + + return new Twig_Node_Do($expr, $token->getLine(), $this->getTag()); + } + + public function getTag() + { + return 'do'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/Embed.php b/system/vendor/twig/twig/lib/Twig/TokenParser/Embed.php new file mode 100644 index 0000000..019d978 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/Embed.php @@ -0,0 +1,65 @@ +parser->getStream(); + + $parent = $this->parser->getExpressionParser()->parseExpression(); + + list($variables, $only, $ignoreMissing) = $this->parseArguments(); + + $parentToken = $fakeParentToken = new Twig_Token(Twig_Token::STRING_TYPE, '__parent__', $token->getLine()); + if ($parent instanceof Twig_Node_Expression_Constant) { + $parentToken = new Twig_Token(Twig_Token::STRING_TYPE, $parent->getAttribute('value'), $token->getLine()); + } elseif ($parent instanceof Twig_Node_Expression_Name) { + $parentToken = new Twig_Token(Twig_Token::NAME_TYPE, $parent->getAttribute('name'), $token->getLine()); + } + + // inject a fake parent to make the parent() function work + $stream->injectTokens(array( + new Twig_Token(Twig_Token::BLOCK_START_TYPE, '', $token->getLine()), + new Twig_Token(Twig_Token::NAME_TYPE, 'extends', $token->getLine()), + $parentToken, + new Twig_Token(Twig_Token::BLOCK_END_TYPE, '', $token->getLine()), + )); + + $module = $this->parser->parse($stream, array($this, 'decideBlockEnd'), true); + + // override the parent with the correct one + if ($fakeParentToken === $parentToken) { + $module->setNode('parent', $parent); + } + + $this->parser->embedTemplate($module); + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + return new Twig_Node_Embed($module->getTemplateName(), $module->getAttribute('index'), $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); + } + + public function decideBlockEnd(Twig_Token $token) + { + return $token->test('endembed'); + } + + public function getTag() + { + return 'embed'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/Extends.php b/system/vendor/twig/twig/lib/Twig/TokenParser/Extends.php new file mode 100644 index 0000000..b8454d2 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/Extends.php @@ -0,0 +1,44 @@ + + * {% extends "base.html" %} + * + * + * @final + */ +class Twig_TokenParser_Extends extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $stream = $this->parser->getStream(); + + if (!$this->parser->isMainScope()) { + throw new Twig_Error_Syntax('Cannot extend from a block.', $token->getLine(), $stream->getSourceContext()); + } + + if (null !== $this->parser->getParent()) { + throw new Twig_Error_Syntax('Multiple extends tags are forbidden.', $token->getLine(), $stream->getSourceContext()); + } + $this->parser->setParent($this->parser->getExpressionParser()->parseExpression()); + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + } + + public function getTag() + { + return 'extends'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/Filter.php b/system/vendor/twig/twig/lib/Twig/TokenParser/Filter.php new file mode 100644 index 0000000..1cdc0dd --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/Filter.php @@ -0,0 +1,51 @@ + + * {% filter upper %} + * This text becomes uppercase + * {% endfilter %} + * + * + * @final + */ +class Twig_TokenParser_Filter extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $name = $this->parser->getVarName(); + $ref = new Twig_Node_Expression_BlockReference(new Twig_Node_Expression_Constant($name, $token->getLine()), null, $token->getLine(), $this->getTag()); + + $filter = $this->parser->getExpressionParser()->parseFilterExpressionRaw($ref, $this->getTag()); + $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); + + $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true); + $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); + + $block = new Twig_Node_Block($name, $body, $token->getLine()); + $this->parser->setBlock($name, $block); + + return new Twig_Node_Print($filter, $token->getLine(), $this->getTag()); + } + + public function decideBlockEnd(Twig_Token $token) + { + return $token->test('endfilter'); + } + + public function getTag() + { + return 'filter'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/Flush.php b/system/vendor/twig/twig/lib/Twig/TokenParser/Flush.php new file mode 100644 index 0000000..b09ff95 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/Flush.php @@ -0,0 +1,32 @@ +parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); + + return new Twig_Node_Flush($token->getLine(), $this->getTag()); + } + + public function getTag() + { + return 'flush'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/For.php b/system/vendor/twig/twig/lib/Twig/TokenParser/For.php new file mode 100644 index 0000000..6407afa --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/For.php @@ -0,0 +1,125 @@ + + *
      + * {% for user in users %} + *
    • {{ user.username|e }}
    • + * {% endfor %} + *
    + * + * + * @final + */ +class Twig_TokenParser_For extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $lineno = $token->getLine(); + $stream = $this->parser->getStream(); + $targets = $this->parser->getExpressionParser()->parseAssignmentExpression(); + $stream->expect(Twig_Token::OPERATOR_TYPE, 'in'); + $seq = $this->parser->getExpressionParser()->parseExpression(); + + $ifexpr = null; + if ($stream->nextIf(Twig_Token::NAME_TYPE, 'if')) { + $ifexpr = $this->parser->getExpressionParser()->parseExpression(); + } + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + $body = $this->parser->subparse(array($this, 'decideForFork')); + if ($stream->next()->getValue() == 'else') { + $stream->expect(Twig_Token::BLOCK_END_TYPE); + $else = $this->parser->subparse(array($this, 'decideForEnd'), true); + } else { + $else = null; + } + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + if (count($targets) > 1) { + $keyTarget = $targets->getNode(0); + $keyTarget = new Twig_Node_Expression_AssignName($keyTarget->getAttribute('name'), $keyTarget->getTemplateLine()); + $valueTarget = $targets->getNode(1); + $valueTarget = new Twig_Node_Expression_AssignName($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine()); + } else { + $keyTarget = new Twig_Node_Expression_AssignName('_key', $lineno); + $valueTarget = $targets->getNode(0); + $valueTarget = new Twig_Node_Expression_AssignName($valueTarget->getAttribute('name'), $valueTarget->getTemplateLine()); + } + + if ($ifexpr) { + $this->checkLoopUsageCondition($stream, $ifexpr); + $this->checkLoopUsageBody($stream, $body); + } + + return new Twig_Node_For($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, $lineno, $this->getTag()); + } + + public function decideForFork(Twig_Token $token) + { + return $token->test(array('else', 'endfor')); + } + + public function decideForEnd(Twig_Token $token) + { + return $token->test('endfor'); + } + + // the loop variable cannot be used in the condition + protected function checkLoopUsageCondition(Twig_TokenStream $stream, Twig_NodeInterface $node) + { + if ($node instanceof Twig_Node_Expression_GetAttr && $node->getNode('node') instanceof Twig_Node_Expression_Name && 'loop' == $node->getNode('node')->getAttribute('name')) { + throw new Twig_Error_Syntax('The "loop" variable cannot be used in a looping condition.', $node->getTemplateLine(), $stream->getSourceContext()); + } + + foreach ($node as $n) { + if (!$n) { + continue; + } + + $this->checkLoopUsageCondition($stream, $n); + } + } + + // check usage of non-defined loop-items + // it does not catch all problems (for instance when a for is included into another or when the variable is used in an include) + protected function checkLoopUsageBody(Twig_TokenStream $stream, Twig_NodeInterface $node) + { + if ($node instanceof Twig_Node_Expression_GetAttr && $node->getNode('node') instanceof Twig_Node_Expression_Name && 'loop' == $node->getNode('node')->getAttribute('name')) { + $attribute = $node->getNode('attribute'); + if ($attribute instanceof Twig_Node_Expression_Constant && in_array($attribute->getAttribute('value'), array('length', 'revindex0', 'revindex', 'last'))) { + throw new Twig_Error_Syntax(sprintf('The "loop.%s" variable is not defined when looping with a condition.', $attribute->getAttribute('value')), $node->getTemplateLine(), $stream->getSourceContext()); + } + } + + // should check for parent.loop.XXX usage + if ($node instanceof Twig_Node_For) { + return; + } + + foreach ($node as $n) { + if (!$n) { + continue; + } + + $this->checkLoopUsageBody($stream, $n); + } + } + + public function getTag() + { + return 'for'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/From.php b/system/vendor/twig/twig/lib/Twig/TokenParser/From.php new file mode 100644 index 0000000..69c09c2 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/From.php @@ -0,0 +1,64 @@ + + * {% from 'forms.html' import forms %} + * + * + * @final + */ +class Twig_TokenParser_From extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $macro = $this->parser->getExpressionParser()->parseExpression(); + $stream = $this->parser->getStream(); + $stream->expect('import'); + + $targets = array(); + do { + $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); + + $alias = $name; + if ($stream->nextIf('as')) { + $alias = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); + } + + $targets[$name] = $alias; + + if (!$stream->nextIf(Twig_Token::PUNCTUATION_TYPE, ',')) { + break; + } + } while (true); + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + $node = new Twig_Node_Import($macro, new Twig_Node_Expression_AssignName($this->parser->getVarName(), $token->getLine()), $token->getLine(), $this->getTag()); + + foreach ($targets as $name => $alias) { + if ($this->parser->isReservedMacroName($name)) { + throw new Twig_Error_Syntax(sprintf('"%s" cannot be an imported macro as it is a reserved keyword.', $name), $token->getLine(), $stream->getSourceContext()); + } + + $this->parser->addImportedSymbol('function', $alias, 'get'.$name, $node->getNode('var')); + } + + return $node; + } + + public function getTag() + { + return 'from'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/If.php b/system/vendor/twig/twig/lib/Twig/TokenParser/If.php new file mode 100644 index 0000000..0545940 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/If.php @@ -0,0 +1,84 @@ + + * {% if users %} + *
      + * {% for user in users %} + *
    • {{ user.username|e }}
    • + * {% endfor %} + *
    + * {% endif %} + * + * + * @final + */ +class Twig_TokenParser_If extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $lineno = $token->getLine(); + $expr = $this->parser->getExpressionParser()->parseExpression(); + $stream = $this->parser->getStream(); + $stream->expect(Twig_Token::BLOCK_END_TYPE); + $body = $this->parser->subparse(array($this, 'decideIfFork')); + $tests = array($expr, $body); + $else = null; + + $end = false; + while (!$end) { + switch ($stream->next()->getValue()) { + case 'else': + $stream->expect(Twig_Token::BLOCK_END_TYPE); + $else = $this->parser->subparse(array($this, 'decideIfEnd')); + break; + + case 'elseif': + $expr = $this->parser->getExpressionParser()->parseExpression(); + $stream->expect(Twig_Token::BLOCK_END_TYPE); + $body = $this->parser->subparse(array($this, 'decideIfFork')); + $tests[] = $expr; + $tests[] = $body; + break; + + case 'endif': + $end = true; + break; + + default: + throw new Twig_Error_Syntax(sprintf('Unexpected end of template. Twig was looking for the following tags "else", "elseif", or "endif" to close the "if" block started at line %d).', $lineno), $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + } + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + return new Twig_Node_If(new Twig_Node($tests), $else, $lineno, $this->getTag()); + } + + public function decideIfFork(Twig_Token $token) + { + return $token->test(array('elseif', 'else', 'endif')); + } + + public function decideIfEnd(Twig_Token $token) + { + return $token->test(array('endif')); + } + + public function getTag() + { + return 'if'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/Import.php b/system/vendor/twig/twig/lib/Twig/TokenParser/Import.php new file mode 100644 index 0000000..fa5ebae --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/Import.php @@ -0,0 +1,39 @@ + + * {% import 'forms.html' as forms %} + * + * + * @final + */ +class Twig_TokenParser_Import extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $macro = $this->parser->getExpressionParser()->parseExpression(); + $this->parser->getStream()->expect('as'); + $var = new Twig_Node_Expression_AssignName($this->parser->getStream()->expect(Twig_Token::NAME_TYPE)->getValue(), $token->getLine()); + $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); + + $this->parser->addImportedSymbol('template', $var->getAttribute('name')); + + return new Twig_Node_Import($macro, $var, $token->getLine(), $this->getTag()); + } + + public function getTag() + { + return 'import'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/Include.php b/system/vendor/twig/twig/lib/Twig/TokenParser/Include.php new file mode 100644 index 0000000..b3ac1bc --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/Include.php @@ -0,0 +1,65 @@ + + * {% include 'header.html' %} + * Body + * {% include 'footer.html' %} + * + * + * @final + */ +class Twig_TokenParser_Include extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $expr = $this->parser->getExpressionParser()->parseExpression(); + + list($variables, $only, $ignoreMissing) = $this->parseArguments(); + + return new Twig_Node_Include($expr, $variables, $only, $ignoreMissing, $token->getLine(), $this->getTag()); + } + + protected function parseArguments() + { + $stream = $this->parser->getStream(); + + $ignoreMissing = false; + if ($stream->nextIf(Twig_Token::NAME_TYPE, 'ignore')) { + $stream->expect(Twig_Token::NAME_TYPE, 'missing'); + + $ignoreMissing = true; + } + + $variables = null; + if ($stream->nextIf(Twig_Token::NAME_TYPE, 'with')) { + $variables = $this->parser->getExpressionParser()->parseExpression(); + } + + $only = false; + if ($stream->nextIf(Twig_Token::NAME_TYPE, 'only')) { + $only = true; + } + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + return array($variables, $only, $ignoreMissing); + } + + public function getTag() + { + return 'include'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/Macro.php b/system/vendor/twig/twig/lib/Twig/TokenParser/Macro.php new file mode 100644 index 0000000..b845c90 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/Macro.php @@ -0,0 +1,58 @@ + + * {% macro input(name, value, type, size) %} + * + * {% endmacro %} + * + * + * @final + */ +class Twig_TokenParser_Macro extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $lineno = $token->getLine(); + $stream = $this->parser->getStream(); + $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); + + $arguments = $this->parser->getExpressionParser()->parseArguments(true, true); + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + $this->parser->pushLocalScope(); + $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true); + if ($token = $stream->nextIf(Twig_Token::NAME_TYPE)) { + $value = $token->getValue(); + + if ($value != $name) { + throw new Twig_Error_Syntax(sprintf('Expected endmacro for macro "%s" (but "%s" given).', $name, $value), $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + } + $this->parser->popLocalScope(); + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + $this->parser->setMacro($name, new Twig_Node_Macro($name, new Twig_Node_Body(array($body)), $arguments, $lineno, $this->getTag())); + } + + public function decideBlockEnd(Twig_Token $token) + { + return $token->test('endmacro'); + } + + public function getTag() + { + return 'macro'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/Sandbox.php b/system/vendor/twig/twig/lib/Twig/TokenParser/Sandbox.php new file mode 100644 index 0000000..0b08fe6 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/Sandbox.php @@ -0,0 +1,59 @@ + + * {% sandbox %} + * {% include 'user.html' %} + * {% endsandbox %} + * + * + * @see http://www.twig-project.org/doc/api.html#sandbox-extension for details + * + * @final + */ +class Twig_TokenParser_Sandbox extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $stream = $this->parser->getStream(); + $stream->expect(Twig_Token::BLOCK_END_TYPE); + $body = $this->parser->subparse(array($this, 'decideBlockEnd'), true); + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + // in a sandbox tag, only include tags are allowed + if (!$body instanceof Twig_Node_Include) { + foreach ($body as $node) { + if ($node instanceof Twig_Node_Text && ctype_space($node->getAttribute('data'))) { + continue; + } + + if (!$node instanceof Twig_Node_Include) { + throw new Twig_Error_Syntax('Only "include" tags are allowed within a "sandbox" section.', $node->getTemplateLine(), $stream->getSourceContext()); + } + } + } + + return new Twig_Node_Sandbox($body, $token->getLine(), $this->getTag()); + } + + public function decideBlockEnd(Twig_Token $token) + { + return $token->test('endsandbox'); + } + + public function getTag() + { + return 'sandbox'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/Set.php b/system/vendor/twig/twig/lib/Twig/TokenParser/Set.php new file mode 100644 index 0000000..d03a36b --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/Set.php @@ -0,0 +1,73 @@ + + * {% set foo = 'foo' %} + * + * {% set foo = [1, 2] %} + * + * {% set foo = {'foo': 'bar'} %} + * + * {% set foo = 'foo' ~ 'bar' %} + * + * {% set foo, bar = 'foo', 'bar' %} + * + * {% set foo %}Some content{% endset %} + * + * + * @final + */ +class Twig_TokenParser_Set extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $lineno = $token->getLine(); + $stream = $this->parser->getStream(); + $names = $this->parser->getExpressionParser()->parseAssignmentExpression(); + + $capture = false; + if ($stream->nextIf(Twig_Token::OPERATOR_TYPE, '=')) { + $values = $this->parser->getExpressionParser()->parseMultitargetExpression(); + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + if (count($names) !== count($values)) { + throw new Twig_Error_Syntax('When using set, you must have the same number of variables and assignments.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + } else { + $capture = true; + + if (count($names) > 1) { + throw new Twig_Error_Syntax('When using set with a block, you cannot have a multi-target.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + $values = $this->parser->subparse(array($this, 'decideBlockEnd'), true); + $stream->expect(Twig_Token::BLOCK_END_TYPE); + } + + return new Twig_Node_Set($capture, $names, $values, $lineno, $this->getTag()); + } + + public function decideBlockEnd(Twig_Token $token) + { + return $token->test('endset'); + } + + public function getTag() + { + return 'set'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/Spaceless.php b/system/vendor/twig/twig/lib/Twig/TokenParser/Spaceless.php new file mode 100644 index 0000000..e8b2638 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/Spaceless.php @@ -0,0 +1,49 @@ + + * {% spaceless %} + *
    + * foo + *
    + * {% endspaceless %} + * + * {# output will be
    foo
    #} + * + * + * @final + */ +class Twig_TokenParser_Spaceless extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $lineno = $token->getLine(); + + $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); + $body = $this->parser->subparse(array($this, 'decideSpacelessEnd'), true); + $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); + + return new Twig_Node_Spaceless($body, $lineno, $this->getTag()); + } + + public function decideSpacelessEnd(Twig_Token $token) + { + return $token->test('endspaceless'); + } + + public function getTag() + { + return 'spaceless'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/Use.php b/system/vendor/twig/twig/lib/Twig/TokenParser/Use.php new file mode 100644 index 0000000..c3fb069 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/Use.php @@ -0,0 +1,66 @@ + + * {% extends "base.html" %} + * + * {% use "blocks.html" %} + * + * {% block title %}{% endblock %} + * {% block content %}{% endblock %} + * + * + * @see http://www.twig-project.org/doc/templates.html#horizontal-reuse for details. + * + * @final + */ +class Twig_TokenParser_Use extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $template = $this->parser->getExpressionParser()->parseExpression(); + $stream = $this->parser->getStream(); + + if (!$template instanceof Twig_Node_Expression_Constant) { + throw new Twig_Error_Syntax('The template references in a "use" statement must be a string.', $stream->getCurrent()->getLine(), $stream->getSourceContext()); + } + + $targets = array(); + if ($stream->nextIf('with')) { + do { + $name = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); + + $alias = $name; + if ($stream->nextIf('as')) { + $alias = $stream->expect(Twig_Token::NAME_TYPE)->getValue(); + } + + $targets[$name] = new Twig_Node_Expression_Constant($alias, -1); + + if (!$stream->nextIf(Twig_Token::PUNCTUATION_TYPE, ',')) { + break; + } + } while (true); + } + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + $this->parser->addTrait(new Twig_Node(array('template' => $template, 'targets' => new Twig_Node($targets)))); + } + + public function getTag() + { + return 'use'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParser/With.php b/system/vendor/twig/twig/lib/Twig/TokenParser/With.php new file mode 100644 index 0000000..8d078d9 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParser/With.php @@ -0,0 +1,50 @@ + + * + * @final + */ +class Twig_TokenParser_With extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $stream = $this->parser->getStream(); + + $variables = null; + $only = false; + if (!$stream->test(Twig_Token::BLOCK_END_TYPE)) { + $variables = $this->parser->getExpressionParser()->parseExpression(); + $only = $stream->nextIf(Twig_Token::NAME_TYPE, 'only'); + } + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + $body = $this->parser->subparse(array($this, 'decideWithEnd'), true); + + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + return new Twig_Node_With($body, $variables, $only, $token->getLine(), $this->getTag()); + } + + public function decideWithEnd(Twig_Token $token) + { + return $token->test('endwith'); + } + + public function getTag() + { + return 'with'; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParserBroker.php b/system/vendor/twig/twig/lib/Twig/TokenParserBroker.php new file mode 100644 index 0000000..a640135 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParserBroker.php @@ -0,0 +1,120 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +class Twig_TokenParserBroker implements Twig_TokenParserBrokerInterface +{ + protected $parser; + protected $parsers = array(); + protected $brokers = array(); + + /** + * @param array|Traversable $parsers A Traversable of Twig_TokenParserInterface instances + * @param array|Traversable $brokers A Traversable of Twig_TokenParserBrokerInterface instances + * @param bool $triggerDeprecationError + */ + public function __construct($parsers = array(), $brokers = array(), $triggerDeprecationError = true) + { + if ($triggerDeprecationError) { + @trigger_error('The '.__CLASS__.' class is deprecated since version 1.12 and will be removed in 2.0.', E_USER_DEPRECATED); + } + + foreach ($parsers as $parser) { + if (!$parser instanceof Twig_TokenParserInterface) { + throw new LogicException('$parsers must a an array of Twig_TokenParserInterface.'); + } + $this->parsers[$parser->getTag()] = $parser; + } + foreach ($brokers as $broker) { + if (!$broker instanceof Twig_TokenParserBrokerInterface) { + throw new LogicException('$brokers must a an array of Twig_TokenParserBrokerInterface.'); + } + $this->brokers[] = $broker; + } + } + + public function addTokenParser(Twig_TokenParserInterface $parser) + { + $this->parsers[$parser->getTag()] = $parser; + } + + public function removeTokenParser(Twig_TokenParserInterface $parser) + { + $name = $parser->getTag(); + if (isset($this->parsers[$name]) && $parser === $this->parsers[$name]) { + unset($this->parsers[$name]); + } + } + + public function addTokenParserBroker(Twig_TokenParserBroker $broker) + { + $this->brokers[] = $broker; + } + + public function removeTokenParserBroker(Twig_TokenParserBroker $broker) + { + if (false !== $pos = array_search($broker, $this->brokers)) { + unset($this->brokers[$pos]); + } + } + + /** + * Gets a suitable TokenParser for a tag. + * + * First looks in parsers, then in brokers. + * + * @param string $tag A tag name + * + * @return null|Twig_TokenParserInterface A Twig_TokenParserInterface or null if no suitable TokenParser was found + */ + public function getTokenParser($tag) + { + if (isset($this->parsers[$tag])) { + return $this->parsers[$tag]; + } + $broker = end($this->brokers); + while (false !== $broker) { + $parser = $broker->getTokenParser($tag); + if (null !== $parser) { + return $parser; + } + $broker = prev($this->brokers); + } + } + + public function getParsers() + { + return $this->parsers; + } + + public function getParser() + { + return $this->parser; + } + + public function setParser(Twig_ParserInterface $parser) + { + $this->parser = $parser; + foreach ($this->parsers as $tokenParser) { + $tokenParser->setParser($parser); + } + foreach ($this->brokers as $broker) { + $broker->setParser($parser); + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php b/system/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php new file mode 100644 index 0000000..6c93f5e --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParserBrokerInterface.php @@ -0,0 +1,44 @@ + + * + * @deprecated since 1.12 (to be removed in 2.0) + */ +interface Twig_TokenParserBrokerInterface +{ + /** + * Gets a TokenParser suitable for a tag. + * + * @param string $tag A tag name + * + * @return Twig_TokenParserInterface|null A Twig_TokenParserInterface or null if no suitable TokenParser was found + */ + public function getTokenParser($tag); + + /** + * Calls Twig_TokenParserInterface::setParser on all parsers the implementation knows of. + */ + public function setParser(Twig_ParserInterface $parser); + + /** + * Gets the Twig_ParserInterface. + * + * @return null|Twig_ParserInterface A Twig_ParserInterface instance or null + */ + public function getParser(); +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenParserInterface.php b/system/vendor/twig/twig/lib/Twig/TokenParserInterface.php new file mode 100644 index 0000000..aea9699 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenParserInterface.php @@ -0,0 +1,39 @@ + + */ +interface Twig_TokenParserInterface +{ + /** + * Sets the parser associated with this token parser. + */ + public function setParser(Twig_Parser $parser); + + /** + * Parses a token and returns a node. + * + * @return Twig_NodeInterface + * + * @throws Twig_Error_Syntax + */ + public function parse(Twig_Token $token); + + /** + * Gets the tag name associated with this token parser. + * + * @return string The tag name + */ + public function getTag(); +} diff --git a/system/vendor/twig/twig/lib/Twig/TokenStream.php b/system/vendor/twig/twig/lib/Twig/TokenStream.php new file mode 100644 index 0000000..27ca1a7 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/TokenStream.php @@ -0,0 +1,194 @@ + + */ +class Twig_TokenStream +{ + protected $tokens; + protected $current = 0; + protected $filename; + + private $source; + + /** + * @param array $tokens An array of tokens + * @param string|null $name The name of the template which tokens are associated with + * @param string|null $source The source code associated with the tokens + */ + public function __construct(array $tokens, $name = null, $source = null) + { + if (!$name instanceof Twig_Source) { + if (null !== $name || null !== $source) { + @trigger_error(sprintf('Passing a string as the $name argument of %s() is deprecated since version 1.27. Pass a Twig_Source instance instead.', __METHOD__), E_USER_DEPRECATED); + } + $this->source = new Twig_Source($source, $name); + } else { + $this->source = $name; + } + + $this->tokens = $tokens; + + // deprecated, not used anymore, to be removed in 2.0 + $this->filename = $this->source->getName(); + } + + public function __toString() + { + return implode("\n", $this->tokens); + } + + public function injectTokens(array $tokens) + { + $this->tokens = array_merge(array_slice($this->tokens, 0, $this->current), $tokens, array_slice($this->tokens, $this->current)); + } + + /** + * Sets the pointer to the next token and returns the old one. + * + * @return Twig_Token + */ + public function next() + { + if (!isset($this->tokens[++$this->current])) { + throw new Twig_Error_Syntax('Unexpected end of template.', $this->tokens[$this->current - 1]->getLine(), $this->source); + } + + return $this->tokens[$this->current - 1]; + } + + /** + * Tests a token, sets the pointer to the next one and returns it or throws a syntax error. + * + * @return Twig_Token|null The next token if the condition is true, null otherwise + */ + public function nextIf($primary, $secondary = null) + { + if ($this->tokens[$this->current]->test($primary, $secondary)) { + return $this->next(); + } + } + + /** + * Tests a token and returns it or throws a syntax error. + * + * @return Twig_Token + */ + public function expect($type, $value = null, $message = null) + { + $token = $this->tokens[$this->current]; + if (!$token->test($type, $value)) { + $line = $token->getLine(); + throw new Twig_Error_Syntax(sprintf('%sUnexpected token "%s" of value "%s" ("%s" expected%s).', + $message ? $message.'. ' : '', + Twig_Token::typeToEnglish($token->getType()), $token->getValue(), + Twig_Token::typeToEnglish($type), $value ? sprintf(' with value "%s"', $value) : ''), + $line, + $this->source + ); + } + $this->next(); + + return $token; + } + + /** + * Looks at the next token. + * + * @param int $number + * + * @return Twig_Token + */ + public function look($number = 1) + { + if (!isset($this->tokens[$this->current + $number])) { + throw new Twig_Error_Syntax('Unexpected end of template.', $this->tokens[$this->current + $number - 1]->getLine(), $this->source); + } + + return $this->tokens[$this->current + $number]; + } + + /** + * Tests the current token. + * + * @return bool + */ + public function test($primary, $secondary = null) + { + return $this->tokens[$this->current]->test($primary, $secondary); + } + + /** + * Checks if end of stream was reached. + * + * @return bool + */ + public function isEOF() + { + return $this->tokens[$this->current]->getType() === Twig_Token::EOF_TYPE; + } + + /** + * @return Twig_Token + */ + public function getCurrent() + { + return $this->tokens[$this->current]; + } + + /** + * Gets the name associated with this stream (null if not defined). + * + * @return string|null + * + * @deprecated since 1.27 (to be removed in 2.0) + */ + public function getFilename() + { + @trigger_error(sprintf('The %s() method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', __METHOD__), E_USER_DEPRECATED); + + return $this->source->getName(); + } + + /** + * Gets the source code associated with this stream. + * + * @return string + * + * @internal Don't use this as it might be empty depending on the environment configuration + * + * @deprecated since 1.27 (to be removed in 2.0) + */ + public function getSource() + { + @trigger_error(sprintf('The %s() method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', __METHOD__), E_USER_DEPRECATED); + + return $this->source->getCode(); + } + + /** + * Gets the source associated with this stream. + * + * @return Twig_Source + * + * @internal + */ + public function getSourceContext() + { + return $this->source; + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Util/DeprecationCollector.php b/system/vendor/twig/twig/lib/Twig/Util/DeprecationCollector.php new file mode 100644 index 0000000..884cf05 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Util/DeprecationCollector.php @@ -0,0 +1,84 @@ + + * + * @final + */ +class Twig_Util_DeprecationCollector +{ + private $twig; + private $deprecations; + + public function __construct(Twig_Environment $twig) + { + $this->twig = $twig; + } + + /** + * Returns deprecations for templates contained in a directory. + * + * @param string $dir A directory where templates are stored + * @param string $ext Limit the loaded templates by extension + * + * @return array An array of deprecations + */ + public function collectDir($dir, $ext = '.twig') + { + $iterator = new RegexIterator( + new RecursiveIteratorIterator( + new RecursiveDirectoryIterator($dir), RecursiveIteratorIterator::LEAVES_ONLY + ), '{'.preg_quote($ext).'$}' + ); + + return $this->collect(new Twig_Util_TemplateDirIterator($iterator)); + } + + /** + * Returns deprecations for passed templates. + * + * @param Traversable $iterator An iterator of templates (where keys are template names and values the contents of the template) + * + * @return array An array of deprecations + */ + public function collect(Traversable $iterator) + { + $this->deprecations = array(); + + set_error_handler(array($this, 'errorHandler')); + + foreach ($iterator as $name => $contents) { + try { + $this->twig->parse($this->twig->tokenize(new Twig_Source($contents, $name))); + } catch (Twig_Error_Syntax $e) { + // ignore templates containing syntax errors + } + } + + restore_error_handler(); + + $deprecations = $this->deprecations; + $this->deprecations = array(); + + return $deprecations; + } + + /** + * @internal + */ + public function errorHandler($type, $msg) + { + if (E_USER_DEPRECATED === $type) { + $this->deprecations[] = $msg; + } + } +} diff --git a/system/vendor/twig/twig/lib/Twig/Util/TemplateDirIterator.php b/system/vendor/twig/twig/lib/Twig/Util/TemplateDirIterator.php new file mode 100644 index 0000000..3fb8932 --- /dev/null +++ b/system/vendor/twig/twig/lib/Twig/Util/TemplateDirIterator.php @@ -0,0 +1,26 @@ + + */ +class Twig_Util_TemplateDirIterator extends IteratorIterator +{ + public function current() + { + return file_get_contents(parent::current()); + } + + public function key() + { + return (string) parent::key(); + } +} diff --git a/system/vendor/twig/twig/phpunit.xml.dist b/system/vendor/twig/twig/phpunit.xml.dist new file mode 100644 index 0000000..d800c57 --- /dev/null +++ b/system/vendor/twig/twig/phpunit.xml.dist @@ -0,0 +1,33 @@ + + + + + + ./test/Twig/ + + + + + + + + + + + + + + ./lib/Twig/ + + + diff --git a/system/vendor/twig/twig/test/Twig/Tests/AutoloaderTest.php b/system/vendor/twig/twig/test/Twig/Tests/AutoloaderTest.php new file mode 100644 index 0000000..52107c0 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/AutoloaderTest.php @@ -0,0 +1,24 @@ +assertFalse(class_exists('FooBarFoo'), '->autoload() does not try to load classes that does not begin with Twig'); + + $autoloader = new Twig_Autoloader(); + $this->assertNull($autoloader->autoload('Foo'), '->autoload() returns false if it is not able to load a class'); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Cache/FilesystemTest.php b/system/vendor/twig/twig/test/Twig/Tests/Cache/FilesystemTest.php new file mode 100644 index 0000000..aca68ce --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Cache/FilesystemTest.php @@ -0,0 +1,193 @@ +classname = '__Twig_Tests_Cache_FilesystemTest_Template_'.$nonce; + $this->directory = sys_get_temp_dir().'/twig-test'; + $this->cache = new Twig_Cache_Filesystem($this->directory); + } + + protected function tearDown() + { + if (file_exists($this->directory)) { + Twig_Tests_FilesystemHelper::removeDir($this->directory); + } + } + + public function testLoad() + { + $key = $this->directory.'/cache/cachefile.php'; + + $dir = dirname($key); + @mkdir($dir, 0777, true); + $this->assertTrue(is_dir($dir)); + $this->assertFalse(class_exists($this->classname, false)); + + $content = $this->generateSource(); + file_put_contents($key, $content); + + $this->cache->load($key); + + $this->assertTrue(class_exists($this->classname, false)); + } + + public function testLoadMissing() + { + $key = $this->directory.'/cache/cachefile.php'; + + $this->assertFalse(class_exists($this->classname, false)); + + $this->cache->load($key); + + $this->assertFalse(class_exists($this->classname, false)); + } + + public function testWrite() + { + $key = $this->directory.'/cache/cachefile.php'; + $content = $this->generateSource(); + + $this->assertFileNotExists($key); + $this->assertFileNotExists($this->directory); + + $this->cache->write($key, $content); + + $this->assertFileExists($this->directory); + $this->assertFileExists($key); + $this->assertSame(file_get_contents($key), $content); + } + + /** + * @expectedException RuntimeException + * @expectedExceptionMessage Unable to create the cache directory + */ + public function testWriteFailMkdir() + { + if (defined('PHP_WINDOWS_VERSION_BUILD')) { + $this->markTestSkipped('Read-only directories not possible on Windows.'); + } + + $key = $this->directory.'/cache/cachefile.php'; + $content = $this->generateSource(); + + $this->assertFileNotExists($key); + + // Create read-only root directory. + @mkdir($this->directory, 0555, true); + $this->assertTrue(is_dir($this->directory)); + + $this->cache->write($key, $content); + } + + /** + * @expectedException RuntimeException + * @expectedExceptionMessage Unable to write in the cache directory + */ + public function testWriteFailDirWritable() + { + if (defined('PHP_WINDOWS_VERSION_BUILD')) { + $this->markTestSkipped('Read-only directories not possible on Windows.'); + } + + $key = $this->directory.'/cache/cachefile.php'; + $content = $this->generateSource(); + + $this->assertFileNotExists($key); + + // Create root directory. + @mkdir($this->directory, 0777, true); + // Create read-only subdirectory. + @mkdir($this->directory.'/cache', 0555); + $this->assertTrue(is_dir($this->directory.'/cache')); + + $this->cache->write($key, $content); + } + + /** + * @expectedException RuntimeException + * @expectedExceptionMessage Failed to write cache file + */ + public function testWriteFailWriteFile() + { + $key = $this->directory.'/cache/cachefile.php'; + $content = $this->generateSource(); + + $this->assertFileNotExists($key); + + // Create a directory in the place of the cache file. + @mkdir($key, 0777, true); + $this->assertTrue(is_dir($key)); + + $this->cache->write($key, $content); + } + + public function testGetTimestamp() + { + $key = $this->directory.'/cache/cachefile.php'; + + $dir = dirname($key); + @mkdir($dir, 0777, true); + $this->assertTrue(is_dir($dir)); + + // Create the file with a specific modification time. + touch($key, 1234567890); + + $this->assertSame(1234567890, $this->cache->getTimestamp($key)); + } + + public function testGetTimestampMissingFile() + { + $key = $this->directory.'/cache/cachefile.php'; + $this->assertSame(0, $this->cache->getTimestamp($key)); + } + + /** + * Test file cache is tolerant towards trailing (back)slashes on the configured cache directory. + * + * @dataProvider provideDirectories + */ + public function testGenerateKey($expected, $input) + { + $cache = new Twig_Cache_Filesystem($input); + $this->assertRegExp($expected, $cache->generateKey('_test_', get_class($this))); + } + + public function provideDirectories() + { + $pattern = '#a/b/[a-zA-Z0-9]+/[a-zA-Z0-9]+.php$#'; + + return array( + array($pattern, 'a/b'), + array($pattern, 'a/b/'), + array($pattern, 'a/b\\'), + array($pattern, 'a/b\\/'), + array($pattern, 'a/b\\//'), + array('#/'.substr($pattern, 1), '/a/b'), + ); + } + + private function generateSource() + { + return strtr(' $this->classname, + )); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/CompilerTest.php b/system/vendor/twig/twig/test/Twig/Tests/CompilerTest.php new file mode 100644 index 0000000..da7f533 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/CompilerTest.php @@ -0,0 +1,33 @@ +getMockBuilder('Twig_LoaderInterface')->getMock())); + + $locale = setlocale(LC_NUMERIC, 0); + if (false === $locale) { + $this->markTestSkipped('Your platform does not support locales.'); + } + + $required_locales = array('fr_FR.UTF-8', 'fr_FR.UTF8', 'fr_FR.utf-8', 'fr_FR.utf8', 'French_France.1252'); + if (false === setlocale(LC_NUMERIC, $required_locales)) { + $this->markTestSkipped('Could not set any of required locales: '.implode(', ', $required_locales)); + } + + $this->assertEquals('1.2', $compiler->repr(1.2)->getSource()); + $this->assertContains('fr', strtolower(setlocale(LC_NUMERIC, 0))); + + setlocale(LC_NUMERIC, $locale); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/ContainerRuntimeLoaderTest.php b/system/vendor/twig/twig/test/Twig/Tests/ContainerRuntimeLoaderTest.php new file mode 100644 index 0000000..48d590f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/ContainerRuntimeLoaderTest.php @@ -0,0 +1,40 @@ +getMockBuilder('Psr\Container\ContainerInterface')->getMock(); + $container->expects($this->once())->method('has')->with('stdClass')->willReturn(true); + $container->expects($this->once())->method('get')->with('stdClass')->willReturn(new Stdclass()); + + $loader = new Twig_ContainerRuntimeLoader($container); + + $this->assertInstanceOf('stdClass', $loader->load('stdClass')); + } + + /** + * @requires PHP 5.3 + */ + public function testLoadUnknownRuntimeReturnsNull() + { + $container = $this->getMockBuilder('Psr\Container\ContainerInterface')->getMock(); + $container->expects($this->once())->method('has')->with('Foo'); + $container->expects($this->never())->method('get'); + + $loader = new Twig_ContainerRuntimeLoader($container); + $this->assertNull($loader->load('Foo')); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/CustomExtensionTest.php b/system/vendor/twig/twig/test/Twig/Tests/CustomExtensionTest.php new file mode 100644 index 0000000..c706df2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/CustomExtensionTest.php @@ -0,0 +1,93 @@ +expectException('InvalidArgumentException'); + $this->expectExceptionMessage($expectedExceptionMessage); + } else { + $this->setExpectedException('InvalidArgumentException', $expectedExceptionMessage); + } + + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $env->addExtension($extension); + $env->getUnaryOperators(); + } + + public function provideInvalidExtensions() + { + return array( + array(new InvalidOperatorExtension(new stdClass()), '"InvalidOperatorExtension::getOperators()" must return an array with operators, got "stdClass".'), + array(new InvalidOperatorExtension(array(1, 2, 3)), '"InvalidOperatorExtension::getOperators()" must return an array of 2 elements, got 3.'), + ); + } +} + +class InvalidOperatorExtension implements Twig_ExtensionInterface +{ + private $operators; + + public function __construct($operators) + { + $this->operators = $operators; + } + + public function initRuntime(Twig_Environment $environment) + { + } + + public function getTokenParsers() + { + return array(); + } + + public function getNodeVisitors() + { + return array(); + } + + public function getFilters() + { + return array(); + } + + public function getTests() + { + return array(); + } + + public function getFunctions() + { + return array(); + } + + public function getGlobals() + { + return array(); + } + + public function getOperators() + { + return $this->operators; + } + + public function getName() + { + return __CLASS__; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/EnvironmentTest.php b/system/vendor/twig/twig/test/Twig/Tests/EnvironmentTest.php new file mode 100644 index 0000000..2fde48a --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/EnvironmentTest.php @@ -0,0 +1,655 @@ +tokenize('{{ foo }}', 'foo'); + $this->assertEquals('{{ foo }}', $stream->getSource()); + $this->assertEquals('foo', $stream->getFilename()); + } + + /** + * @group legacy + */ + public function testLegacyCompileSourceSignature() + { + $loader = new Twig_Loader_Array(array('foo' => '{{ foo }}')); + $env = new Twig_Environment($loader); + $this->assertContains('getTemplateName', $env->compileSource('{{ foo }}', 'foo')); + } + + /** + * @expectedException LogicException + * @expectedExceptionMessage You must set a loader first. + * @group legacy + */ + public function testRenderNoLoader() + { + $env = new Twig_Environment(); + $env->render('test'); + } + + public function testAutoescapeOption() + { + $loader = new Twig_Loader_Array(array( + 'html' => '{{ foo }} {{ foo }}', + 'js' => '{{ bar }} {{ bar }}', + )); + + $twig = new Twig_Environment($loader, array( + 'debug' => true, + 'cache' => false, + 'autoescape' => array($this, 'escapingStrategyCallback'), + )); + + $this->assertEquals('foo<br/ > foo<br/ >', $twig->render('html', array('foo' => 'foo
    '))); + $this->assertEquals('foo\x3Cbr\x2F\x20\x3E foo\x3Cbr\x2F\x20\x3E', $twig->render('js', array('bar' => 'foo
    '))); + } + + public function escapingStrategyCallback($name) + { + return $name; + } + + public function testGlobals() + { + // to be removed in 2.0 + $loader = $this->getMockBuilder('Twig_EnvironmentTestLoaderInterface')->getMock(); + //$loader = $this->getMockBuilder(array('Twig_LoaderInterface', 'Twig_SourceContextLoaderInterface'))->getMock(); + $loader->expects($this->any())->method('getSourceContext')->will($this->returnValue(new Twig_Source('', ''))); + + // globals can be added after calling getGlobals + + $twig = new Twig_Environment($loader); + $twig->addGlobal('foo', 'foo'); + $twig->getGlobals(); + $twig->addGlobal('foo', 'bar'); + $globals = $twig->getGlobals(); + $this->assertEquals('bar', $globals['foo']); + + // globals can be modified after a template has been loaded + $twig = new Twig_Environment($loader); + $twig->addGlobal('foo', 'foo'); + $twig->getGlobals(); + $twig->loadTemplate('index'); + $twig->addGlobal('foo', 'bar'); + $globals = $twig->getGlobals(); + $this->assertEquals('bar', $globals['foo']); + + // globals can be modified after extensions init + $twig = new Twig_Environment($loader); + $twig->addGlobal('foo', 'foo'); + $twig->getGlobals(); + $twig->getFunctions(); + $twig->addGlobal('foo', 'bar'); + $globals = $twig->getGlobals(); + $this->assertEquals('bar', $globals['foo']); + + // globals can be modified after extensions and a template has been loaded + $arrayLoader = new Twig_Loader_Array(array('index' => '{{foo}}')); + $twig = new Twig_Environment($arrayLoader); + $twig->addGlobal('foo', 'foo'); + $twig->getGlobals(); + $twig->getFunctions(); + $twig->loadTemplate('index'); + $twig->addGlobal('foo', 'bar'); + $globals = $twig->getGlobals(); + $this->assertEquals('bar', $globals['foo']); + + $twig = new Twig_Environment($arrayLoader); + $twig->getGlobals(); + $twig->addGlobal('foo', 'bar'); + $template = $twig->loadTemplate('index'); + $this->assertEquals('bar', $template->render(array())); + + /* to be uncomment in Twig 2.0 + // globals cannot be added after a template has been loaded + $twig = new Twig_Environment($loader); + $twig->addGlobal('foo', 'foo'); + $twig->getGlobals(); + $twig->loadTemplate('index'); + try { + $twig->addGlobal('bar', 'bar'); + $this->fail(); + } catch (LogicException $e) { + $this->assertFalse(array_key_exists('bar', $twig->getGlobals())); + } + + // globals cannot be added after extensions init + $twig = new Twig_Environment($loader); + $twig->addGlobal('foo', 'foo'); + $twig->getGlobals(); + $twig->getFunctions(); + try { + $twig->addGlobal('bar', 'bar'); + $this->fail(); + } catch (LogicException $e) { + $this->assertFalse(array_key_exists('bar', $twig->getGlobals())); + } + + // globals cannot be added after extensions and a template has been loaded + $twig = new Twig_Environment($loader); + $twig->addGlobal('foo', 'foo'); + $twig->getGlobals(); + $twig->getFunctions(); + $twig->loadTemplate('index'); + try { + $twig->addGlobal('bar', 'bar'); + $this->fail(); + } catch (LogicException $e) { + $this->assertFalse(array_key_exists('bar', $twig->getGlobals())); + } + + // test adding globals after a template has been loaded without call to getGlobals + $twig = new Twig_Environment($loader); + $twig->loadTemplate('index'); + try { + $twig->addGlobal('bar', 'bar'); + $this->fail(); + } catch (LogicException $e) { + $this->assertFalse(array_key_exists('bar', $twig->getGlobals())); + } + */ + } + + public function testExtensionsAreNotInitializedWhenRenderingACompiledTemplate() + { + $cache = new Twig_Cache_Filesystem($dir = sys_get_temp_dir().'/twig'); + $options = array('cache' => $cache, 'auto_reload' => false, 'debug' => false); + + // force compilation + $twig = new Twig_Environment($loader = new Twig_Loader_Array(array('index' => '{{ foo }}')), $options); + + $key = $cache->generateKey('index', $twig->getTemplateClass('index')); + $cache->write($key, $twig->compileSource(new Twig_Source('{{ foo }}', 'index'))); + + // check that extensions won't be initialized when rendering a template that is already in the cache + $twig = $this + ->getMockBuilder('Twig_Environment') + ->setConstructorArgs(array($loader, $options)) + ->setMethods(array('initExtensions')) + ->getMock() + ; + + $twig->expects($this->never())->method('initExtensions'); + + // render template + $output = $twig->render('index', array('foo' => 'bar')); + $this->assertEquals('bar', $output); + + Twig_Tests_FilesystemHelper::removeDir($dir); + } + + public function testAutoReloadCacheMiss() + { + $templateName = __FUNCTION__; + $templateContent = __FUNCTION__; + + $cache = $this->getMockBuilder('Twig_CacheInterface')->getMock(); + $loader = $this->getMockLoader($templateName, $templateContent); + $twig = new Twig_Environment($loader, array('cache' => $cache, 'auto_reload' => true, 'debug' => false)); + + // Cache miss: getTimestamp returns 0 and as a result the load() is + // skipped. + $cache->expects($this->once()) + ->method('generateKey') + ->will($this->returnValue('key')); + $cache->expects($this->once()) + ->method('getTimestamp') + ->will($this->returnValue(0)); + $loader->expects($this->never()) + ->method('isFresh'); + $cache->expects($this->once()) + ->method('write'); + $cache->expects($this->once()) + ->method('load'); + + $twig->loadTemplate($templateName); + } + + public function testAutoReloadCacheHit() + { + $templateName = __FUNCTION__; + $templateContent = __FUNCTION__; + + $cache = $this->getMockBuilder('Twig_CacheInterface')->getMock(); + $loader = $this->getMockLoader($templateName, $templateContent); + $twig = new Twig_Environment($loader, array('cache' => $cache, 'auto_reload' => true, 'debug' => false)); + + $now = time(); + + // Cache hit: getTimestamp returns something > extension timestamps and + // the loader returns true for isFresh(). + $cache->expects($this->once()) + ->method('generateKey') + ->will($this->returnValue('key')); + $cache->expects($this->once()) + ->method('getTimestamp') + ->will($this->returnValue($now)); + $loader->expects($this->once()) + ->method('isFresh') + ->will($this->returnValue(true)); + $cache->expects($this->atLeastOnce()) + ->method('load'); + + $twig->loadTemplate($templateName); + } + + public function testAutoReloadOutdatedCacheHit() + { + $templateName = __FUNCTION__; + $templateContent = __FUNCTION__; + + $cache = $this->getMockBuilder('Twig_CacheInterface')->getMock(); + $loader = $this->getMockLoader($templateName, $templateContent); + $twig = new Twig_Environment($loader, array('cache' => $cache, 'auto_reload' => true, 'debug' => false)); + + $now = time(); + + $cache->expects($this->once()) + ->method('generateKey') + ->will($this->returnValue('key')); + $cache->expects($this->once()) + ->method('getTimestamp') + ->will($this->returnValue($now)); + $loader->expects($this->once()) + ->method('isFresh') + ->will($this->returnValue(false)); + $cache->expects($this->once()) + ->method('write'); + $cache->expects($this->once()) + ->method('load'); + + $twig->loadTemplate($templateName); + } + + /** + * @group legacy + */ + public function testHasGetExtensionWithDynamicName() + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + + $ext1 = new Twig_Tests_EnvironmentTest_Extension_DynamicWithDeprecatedName('ext1'); + $ext2 = new Twig_Tests_EnvironmentTest_Extension_DynamicWithDeprecatedName('ext2'); + $twig->addExtension($ext1); + $twig->addExtension($ext2); + + $this->assertTrue($twig->hasExtension('ext1')); + $this->assertTrue($twig->hasExtension('ext2')); + + $this->assertTrue($twig->hasExtension('Twig_Tests_EnvironmentTest_Extension_DynamicWithDeprecatedName')); + + $this->assertSame($ext1, $twig->getExtension('ext1')); + $this->assertSame($ext2, $twig->getExtension('ext2')); + } + + public function testHasGetExtensionByClassName() + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $twig->addExtension($ext = new Twig_Tests_EnvironmentTest_Extension()); + $this->assertTrue($twig->hasExtension('Twig_Tests_EnvironmentTest_Extension')); + $this->assertTrue($twig->hasExtension('\Twig_Tests_EnvironmentTest_Extension')); + + $this->assertSame($ext, $twig->getExtension('Twig_Tests_EnvironmentTest_Extension')); + $this->assertSame($ext, $twig->getExtension('\Twig_Tests_EnvironmentTest_Extension')); + } + + public function testAddExtension() + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $twig->addExtension(new Twig_Tests_EnvironmentTest_Extension()); + + $this->assertArrayHasKey('test', $twig->getTags()); + $this->assertArrayHasKey('foo_filter', $twig->getFilters()); + $this->assertArrayHasKey('foo_function', $twig->getFunctions()); + $this->assertArrayHasKey('foo_test', $twig->getTests()); + $this->assertArrayHasKey('foo_unary', $twig->getUnaryOperators()); + $this->assertArrayHasKey('foo_binary', $twig->getBinaryOperators()); + $this->assertArrayHasKey('foo_global', $twig->getGlobals()); + $visitors = $twig->getNodeVisitors(); + $found = false; + foreach ($visitors as $visitor) { + if ($visitor instanceof Twig_Tests_EnvironmentTest_NodeVisitor) { + $found = true; + } + } + $this->assertTrue($found); + } + + /** + * @requires PHP 5.3 + */ + public function testAddExtensionWithDeprecatedGetGlobals() + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $twig->addExtension(new Twig_Tests_EnvironmentTest_Extension_WithGlobals()); + + $this->deprecations = array(); + set_error_handler(array($this, 'handleError')); + + $this->assertArrayHasKey('foo_global', $twig->getGlobals()); + + $this->assertCount(1, $this->deprecations); + $this->assertContains('Defining the getGlobals() method in the "Twig_Tests_EnvironmentTest_Extension_WithGlobals" extension ', $this->deprecations[0]); + + restore_error_handler(); + } + + /** + * @group legacy + */ + public function testRemoveExtension() + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $twig->addExtension(new Twig_Tests_EnvironmentTest_Extension_WithDeprecatedName()); + $twig->removeExtension('environment_test'); + + $this->assertArrayNotHasKey('test', $twig->getTags()); + $this->assertArrayNotHasKey('foo_filter', $twig->getFilters()); + $this->assertArrayNotHasKey('foo_function', $twig->getFunctions()); + $this->assertArrayNotHasKey('foo_test', $twig->getTests()); + $this->assertArrayNotHasKey('foo_unary', $twig->getUnaryOperators()); + $this->assertArrayNotHasKey('foo_binary', $twig->getBinaryOperators()); + $this->assertArrayNotHasKey('foo_global', $twig->getGlobals()); + $this->assertCount(2, $twig->getNodeVisitors()); + } + + public function testAddMockExtension() + { + // should be replaced by the following in 2.0 (this current code is just to avoid a dep notice) + // $extension = $this->getMockBuilder('Twig_Extension')->getMock(); + $extension = eval(<< 'hey')); + + $twig = new Twig_Environment($loader); + $twig->addExtension($extension); + + $this->assertInstanceOf('Twig_ExtensionInterface', $twig->getExtension(get_class($extension))); + $this->assertTrue($twig->isTemplateFresh('page', time())); + } + + public function testInitRuntimeWithAnExtensionUsingInitRuntimeNoDeprecation() + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $twig->addExtension(new Twig_Tests_EnvironmentTest_ExtensionWithoutDeprecationInitRuntime()); + $twig->initRuntime(); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without throwing any deprecations + $this->addToAssertionCount(1); + } + + /** + * @requires PHP 5.3 + */ + public function testInitRuntimeWithAnExtensionUsingInitRuntimeDeprecation() + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $twig->addExtension(new Twig_Tests_EnvironmentTest_ExtensionWithDeprecationInitRuntime()); + + $this->deprecations = array(); + set_error_handler(array($this, 'handleError')); + + $twig->initRuntime(); + + $this->assertCount(1, $this->deprecations); + $this->assertContains('Defining the initRuntime() method in the "Twig_Tests_EnvironmentTest_ExtensionWithDeprecationInitRuntime" extension is deprecated since version 1.23.', $this->deprecations[0]); + + restore_error_handler(); + } + + public function handleError($type, $msg) + { + if (E_USER_DEPRECATED === $type) { + $this->deprecations[] = $msg; + } + } + + /** + * @requires PHP 5.3 + */ + public function testOverrideExtension() + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $twig->addExtension(new Twig_Tests_EnvironmentTest_ExtensionWithDeprecationInitRuntime()); + + $this->deprecations = array(); + set_error_handler(array($this, 'handleError')); + + $twig->addExtension(new Twig_Tests_EnvironmentTest_Extension_WithDeprecatedName()); + $twig->addExtension(new Twig_Tests_EnvironmentTest_Extension_WithDeprecatedName()); + + $this->assertCount(1, $this->deprecations); + $this->assertContains('The possibility to register the same extension twice', $this->deprecations[0]); + + restore_error_handler(); + } + + public function testAddRuntimeLoader() + { + $runtimeLoader = $this->getMockBuilder('Twig_RuntimeLoaderInterface')->getMock(); + $runtimeLoader->expects($this->any())->method('load')->will($this->returnValue(new Twig_Tests_EnvironmentTest_Runtime())); + + $loader = new Twig_Loader_Array(array( + 'func_array' => '{{ from_runtime_array("foo") }}', + 'func_array_default' => '{{ from_runtime_array() }}', + 'func_array_named_args' => '{{ from_runtime_array(name="foo") }}', + 'func_string' => '{{ from_runtime_string("foo") }}', + 'func_string_default' => '{{ from_runtime_string() }}', + 'func_string_named_args' => '{{ from_runtime_string(name="foo") }}', + )); + + $twig = new Twig_Environment($loader); + $twig->addExtension(new Twig_Tests_EnvironmentTest_ExtensionWithoutRuntime()); + $twig->addRuntimeLoader($runtimeLoader); + + $this->assertEquals('foo', $twig->render('func_array')); + $this->assertEquals('bar', $twig->render('func_array_default')); + $this->assertEquals('foo', $twig->render('func_array_named_args')); + $this->assertEquals('foo', $twig->render('func_string')); + $this->assertEquals('bar', $twig->render('func_string_default')); + $this->assertEquals('foo', $twig->render('func_string_named_args')); + } + + protected function getMockLoader($templateName, $templateContent) + { + // to be removed in 2.0 + $loader = $this->getMockBuilder('Twig_EnvironmentTestLoaderInterface')->getMock(); + //$loader = $this->getMockBuilder(array('Twig_LoaderInterface', 'Twig_SourceContextLoaderInterface'))->getMock(); + $loader->expects($this->any()) + ->method('getSourceContext') + ->with($templateName) + ->will($this->returnValue(new Twig_Source($templateContent, $templateName))); + $loader->expects($this->any()) + ->method('getCacheKey') + ->with($templateName) + ->will($this->returnValue($templateName)); + + return $loader; + } +} + +class Twig_Tests_EnvironmentTest_Extension_WithGlobals extends Twig_Extension +{ + public function getGlobals() + { + return array( + 'foo_global' => 'foo_global', + ); + } +} + +class Twig_Tests_EnvironmentTest_Extension extends Twig_Extension implements Twig_Extension_GlobalsInterface +{ + public function getTokenParsers() + { + return array( + new Twig_Tests_EnvironmentTest_TokenParser(), + ); + } + + public function getNodeVisitors() + { + return array( + new Twig_Tests_EnvironmentTest_NodeVisitor(), + ); + } + + public function getFilters() + { + return array( + new Twig_SimpleFilter('foo_filter', 'foo_filter'), + ); + } + + public function getTests() + { + return array( + new Twig_SimpleTest('foo_test', 'foo_test'), + ); + } + + public function getFunctions() + { + return array( + new Twig_SimpleFunction('foo_function', 'foo_function'), + ); + } + + public function getOperators() + { + return array( + array('foo_unary' => array()), + array('foo_binary' => array()), + ); + } + + public function getGlobals() + { + return array( + 'foo_global' => 'foo_global', + ); + } +} + +class Twig_Tests_EnvironmentTest_Extension_WithDeprecatedName extends Twig_Extension +{ + public function getName() + { + return 'environment_test'; + } +} + +class Twig_Tests_EnvironmentTest_Extension_DynamicWithDeprecatedName extends Twig_Extension +{ + private $name; + + public function __construct($name) + { + $this->name = $name; + } + + public function getName() + { + return $this->name; + } +} + +class Twig_Tests_EnvironmentTest_TokenParser extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + } + + public function getTag() + { + return 'test'; + } +} + +class Twig_Tests_EnvironmentTest_NodeVisitor implements Twig_NodeVisitorInterface +{ + public function enterNode(Twig_NodeInterface $node, Twig_Environment $env) + { + return $node; + } + + public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env) + { + return $node; + } + + public function getPriority() + { + return 0; + } +} + +class Twig_Tests_EnvironmentTest_ExtensionWithDeprecationInitRuntime extends Twig_Extension +{ + public function initRuntime(Twig_Environment $env) + { + } +} + +class Twig_Tests_EnvironmentTest_ExtensionWithoutDeprecationInitRuntime extends Twig_Extension implements Twig_Extension_InitRuntimeInterface +{ + public function initRuntime(Twig_Environment $env) + { + } +} + +class Twig_Tests_EnvironmentTest_ExtensionWithoutRuntime extends Twig_Extension +{ + public function getFunctions() + { + return array( + new Twig_SimpleFunction('from_runtime_array', array('Twig_Tests_EnvironmentTest_Runtime', 'fromRuntime')), + new Twig_SimpleFunction('from_runtime_string', 'Twig_Tests_EnvironmentTest_Runtime::fromRuntime'), + ); + } + + public function getName() + { + return 'from_runtime'; + } +} + +class Twig_Tests_EnvironmentTest_Runtime +{ + public function fromRuntime($name = 'bar') + { + return $name; + } +} + +// to be removed in 2.0 +interface Twig_EnvironmentTestLoaderInterface extends Twig_LoaderInterface, Twig_SourceContextLoaderInterface +{ +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/ErrorTest.php b/system/vendor/twig/twig/test/Twig/Tests/ErrorTest.php new file mode 100644 index 0000000..b0eeca2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/ErrorTest.php @@ -0,0 +1,211 @@ +setSourceContext(new Twig_Source('', new SplFileInfo(__FILE__))); + + $this->assertContains('test'.DIRECTORY_SEPARATOR.'Twig'.DIRECTORY_SEPARATOR.'Tests'.DIRECTORY_SEPARATOR.'ErrorTest.php', $error->getMessage()); + } + + public function testErrorWithArrayFilename() + { + $error = new Twig_Error('foo'); + $error->setSourceContext(new Twig_Source('', array('foo' => 'bar'))); + + $this->assertEquals('foo in {"foo":"bar"}', $error->getMessage()); + } + + public function testTwigExceptionGuessWithMissingVarAndArrayLoader() + { + $loader = new Twig_Loader_Array(array( + 'base.html' => '{% block content %}{% endblock %}', + 'index.html' => << true, 'debug' => true, 'cache' => false)); + + $template = $twig->loadTemplate('index.html'); + try { + $template->render(array()); + + $this->fail(); + } catch (Twig_Error_Runtime $e) { + $this->assertEquals('Variable "foo" does not exist in "index.html" at line 3.', $e->getMessage()); + $this->assertEquals(3, $e->getTemplateLine()); + $this->assertEquals('index.html', $e->getSourceContext()->getName()); + } + } + + public function testTwigExceptionGuessWithExceptionAndArrayLoader() + { + $loader = new Twig_Loader_Array(array( + 'base.html' => '{% block content %}{% endblock %}', + 'index.html' => << true, 'debug' => true, 'cache' => false)); + + $template = $twig->loadTemplate('index.html'); + try { + $template->render(array('foo' => new Twig_Tests_ErrorTest_Foo())); + + $this->fail(); + } catch (Twig_Error_Runtime $e) { + $this->assertEquals('An exception has been thrown during the rendering of a template ("Runtime error...") in "index.html" at line 3.', $e->getMessage()); + $this->assertEquals(3, $e->getTemplateLine()); + $this->assertEquals('index.html', $e->getSourceContext()->getName()); + } + } + + public function testTwigExceptionGuessWithMissingVarAndFilesystemLoader() + { + $loader = new Twig_Loader_Filesystem(dirname(__FILE__).'/Fixtures/errors'); + $twig = new Twig_Environment($loader, array('strict_variables' => true, 'debug' => true, 'cache' => false)); + + $template = $twig->loadTemplate('index.html'); + try { + $template->render(array()); + + $this->fail(); + } catch (Twig_Error_Runtime $e) { + $this->assertEquals('Variable "foo" does not exist.', $e->getMessage()); + $this->assertEquals(3, $e->getTemplateLine()); + $this->assertEquals('index.html', $e->getSourceContext()->getName()); + $this->assertEquals(3, $e->getLine()); + $this->assertEquals(strtr(dirname(__FILE__).'/Fixtures/errors/index.html', '/', DIRECTORY_SEPARATOR), $e->getFile()); + } + } + + public function testTwigExceptionGuessWithExceptionAndFilesystemLoader() + { + $loader = new Twig_Loader_Filesystem(dirname(__FILE__).'/Fixtures/errors'); + $twig = new Twig_Environment($loader, array('strict_variables' => true, 'debug' => true, 'cache' => false)); + + $template = $twig->loadTemplate('index.html'); + try { + $template->render(array('foo' => new Twig_Tests_ErrorTest_Foo())); + + $this->fail(); + } catch (Twig_Error_Runtime $e) { + $this->assertEquals('An exception has been thrown during the rendering of a template ("Runtime error...").', $e->getMessage()); + $this->assertEquals(3, $e->getTemplateLine()); + $this->assertEquals('index.html', $e->getSourceContext()->getName()); + $this->assertEquals(3, $e->getLine()); + $this->assertEquals(strtr(dirname(__FILE__).'/Fixtures/errors/index.html', '/', DIRECTORY_SEPARATOR), $e->getFile()); + } + } + + /** + * @dataProvider getErroredTemplates + */ + public function testTwigExceptionAddsFileAndLine($templates, $name, $line) + { + $loader = new Twig_Loader_Array($templates); + $twig = new Twig_Environment($loader, array('strict_variables' => true, 'debug' => true, 'cache' => false)); + + $template = $twig->loadTemplate('index'); + + try { + $template->render(array()); + + $this->fail(); + } catch (Twig_Error_Runtime $e) { + $this->assertEquals(sprintf('Variable "foo" does not exist in "%s" at line %d.', $name, $line), $e->getMessage()); + $this->assertEquals($line, $e->getTemplateLine()); + $this->assertEquals($name, $e->getSourceContext()->getName()); + } + + try { + $template->render(array('foo' => new Twig_Tests_ErrorTest_Foo())); + + $this->fail(); + } catch (Twig_Error_Runtime $e) { + $this->assertEquals(sprintf('An exception has been thrown during the rendering of a template ("Runtime error...") in "%s" at line %d.', $name, $line), $e->getMessage()); + $this->assertEquals($line, $e->getTemplateLine()); + $this->assertEquals($name, $e->getSourceContext()->getName()); + } + } + + public function getErroredTemplates() + { + return array( + // error occurs in a template + array( + array( + 'index' => "\n\n{{ foo.bar }}\n\n\n{{ 'foo' }}", + ), + 'index', 3, + ), + + // error occurs in an included template + array( + array( + 'index' => "{% include 'partial' %}", + 'partial' => '{{ foo.bar }}', + ), + 'partial', 1, + ), + + // error occurs in a parent block when called via parent() + array( + array( + 'index' => "{% extends 'base' %} + {% block content %} + {{ parent() }} + {% endblock %}", + 'base' => '{% block content %}{{ foo.bar }}{% endblock %}', + ), + 'base', 1, + ), + + // error occurs in a block from the child + array( + array( + 'index' => "{% extends 'base' %} + {% block content %} + {{ foo.bar }} + {% endblock %} + {% block foo %} + {{ foo.bar }} + {% endblock %}", + 'base' => '{% block content %}{% endblock %}', + ), + 'index', 3, + ), + ); + } +} + +class Twig_Tests_ErrorTest_Foo +{ + public function bar() + { + throw new Exception('Runtime error...'); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/ExpressionParserTest.php b/system/vendor/twig/twig/test/Twig/Tests/ExpressionParserTest.php new file mode 100644 index 0000000..54f2ecc --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/ExpressionParserTest.php @@ -0,0 +1,377 @@ +getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $parser = new Twig_Parser($env); + + $parser->parse($env->tokenize(new Twig_Source($template, 'index'))); + } + + public function getFailingTestsForAssignment() + { + return array( + array('{% set false = "foo" %}'), + array('{% set FALSE = "foo" %}'), + array('{% set true = "foo" %}'), + array('{% set TRUE = "foo" %}'), + array('{% set none = "foo" %}'), + array('{% set NONE = "foo" %}'), + array('{% set null = "foo" %}'), + array('{% set NULL = "foo" %}'), + array('{% set 3 = "foo" %}'), + array('{% set 1 + 2 = "foo" %}'), + array('{% set "bar" = "foo" %}'), + array('{% set %}{% endset %}'), + ); + } + + /** + * @dataProvider getTestsForArray + */ + public function testArrayExpression($template, $expected) + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $stream = $env->tokenize(new Twig_Source($template, '')); + $parser = new Twig_Parser($env); + + $this->assertEquals($expected, $parser->parse($stream)->getNode('body')->getNode(0)->getNode('expr')); + } + + /** + * @expectedException Twig_Error_Syntax + * @dataProvider getFailingTestsForArray + */ + public function testArraySyntaxError($template) + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $parser = new Twig_Parser($env); + + $parser->parse($env->tokenize(new Twig_Source($template, 'index'))); + } + + public function getFailingTestsForArray() + { + return array( + array('{{ [1, "a": "b"] }}'), + array('{{ {"a": "b", 2} }}'), + ); + } + + public function getTestsForArray() + { + return array( + // simple array + array('{{ [1, 2] }}', new Twig_Node_Expression_Array(array( + new Twig_Node_Expression_Constant(0, 1), + new Twig_Node_Expression_Constant(1, 1), + + new Twig_Node_Expression_Constant(1, 1), + new Twig_Node_Expression_Constant(2, 1), + ), 1), + ), + + // array with trailing , + array('{{ [1, 2, ] }}', new Twig_Node_Expression_Array(array( + new Twig_Node_Expression_Constant(0, 1), + new Twig_Node_Expression_Constant(1, 1), + + new Twig_Node_Expression_Constant(1, 1), + new Twig_Node_Expression_Constant(2, 1), + ), 1), + ), + + // simple hash + array('{{ {"a": "b", "b": "c"} }}', new Twig_Node_Expression_Array(array( + new Twig_Node_Expression_Constant('a', 1), + new Twig_Node_Expression_Constant('b', 1), + + new Twig_Node_Expression_Constant('b', 1), + new Twig_Node_Expression_Constant('c', 1), + ), 1), + ), + + // hash with trailing , + array('{{ {"a": "b", "b": "c", } }}', new Twig_Node_Expression_Array(array( + new Twig_Node_Expression_Constant('a', 1), + new Twig_Node_Expression_Constant('b', 1), + + new Twig_Node_Expression_Constant('b', 1), + new Twig_Node_Expression_Constant('c', 1), + ), 1), + ), + + // hash in an array + array('{{ [1, {"a": "b", "b": "c"}] }}', new Twig_Node_Expression_Array(array( + new Twig_Node_Expression_Constant(0, 1), + new Twig_Node_Expression_Constant(1, 1), + + new Twig_Node_Expression_Constant(1, 1), + new Twig_Node_Expression_Array(array( + new Twig_Node_Expression_Constant('a', 1), + new Twig_Node_Expression_Constant('b', 1), + + new Twig_Node_Expression_Constant('b', 1), + new Twig_Node_Expression_Constant('c', 1), + ), 1), + ), 1), + ), + + // array in a hash + array('{{ {"a": [1, 2], "b": "c"} }}', new Twig_Node_Expression_Array(array( + new Twig_Node_Expression_Constant('a', 1), + new Twig_Node_Expression_Array(array( + new Twig_Node_Expression_Constant(0, 1), + new Twig_Node_Expression_Constant(1, 1), + + new Twig_Node_Expression_Constant(1, 1), + new Twig_Node_Expression_Constant(2, 1), + ), 1), + new Twig_Node_Expression_Constant('b', 1), + new Twig_Node_Expression_Constant('c', 1), + ), 1), + ), + ); + } + + /** + * @expectedException Twig_Error_Syntax + */ + public function testStringExpressionDoesNotConcatenateTwoConsecutiveStrings() + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false, 'optimizations' => 0)); + $stream = $env->tokenize(new Twig_Source('{{ "a" "b" }}', 'index')); + $parser = new Twig_Parser($env); + + $parser->parse($stream); + } + + /** + * @dataProvider getTestsForString + */ + public function testStringExpression($template, $expected) + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false, 'optimizations' => 0)); + $stream = $env->tokenize(new Twig_Source($template, '')); + $parser = new Twig_Parser($env); + + $this->assertEquals($expected, $parser->parse($stream)->getNode('body')->getNode(0)->getNode('expr')); + } + + public function getTestsForString() + { + return array( + array( + '{{ "foo" }}', new Twig_Node_Expression_Constant('foo', 1), + ), + array( + '{{ "foo #{bar}" }}', new Twig_Node_Expression_Binary_Concat( + new Twig_Node_Expression_Constant('foo ', 1), + new Twig_Node_Expression_Name('bar', 1), + 1 + ), + ), + array( + '{{ "foo #{bar} baz" }}', new Twig_Node_Expression_Binary_Concat( + new Twig_Node_Expression_Binary_Concat( + new Twig_Node_Expression_Constant('foo ', 1), + new Twig_Node_Expression_Name('bar', 1), + 1 + ), + new Twig_Node_Expression_Constant(' baz', 1), + 1 + ), + ), + + array( + '{{ "foo #{"foo #{bar} baz"} baz" }}', new Twig_Node_Expression_Binary_Concat( + new Twig_Node_Expression_Binary_Concat( + new Twig_Node_Expression_Constant('foo ', 1), + new Twig_Node_Expression_Binary_Concat( + new Twig_Node_Expression_Binary_Concat( + new Twig_Node_Expression_Constant('foo ', 1), + new Twig_Node_Expression_Name('bar', 1), + 1 + ), + new Twig_Node_Expression_Constant(' baz', 1), + 1 + ), + 1 + ), + new Twig_Node_Expression_Constant(' baz', 1), + 1 + ), + ), + ); + } + + /** + * @expectedException Twig_Error_Syntax + */ + public function testAttributeCallDoesNotSupportNamedArguments() + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $parser = new Twig_Parser($env); + + $parser->parse($env->tokenize(new Twig_Source('{{ foo.bar(name="Foo") }}', 'index'))); + } + + /** + * @expectedException Twig_Error_Syntax + */ + public function testMacroCallDoesNotSupportNamedArguments() + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $parser = new Twig_Parser($env); + + $parser->parse($env->tokenize(new Twig_Source('{% from _self import foo %}{% macro foo() %}{% endmacro %}{{ foo(name="Foo") }}', 'index'))); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage An argument must be a name. Unexpected token "string" of value "a" ("name" expected) in "index" at line 1. + */ + public function testMacroDefinitionDoesNotSupportNonNameVariableName() + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $parser = new Twig_Parser($env); + + $parser->parse($env->tokenize(new Twig_Source('{% macro foo("a") %}{% endmacro %}', 'index'))); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage A default value for an argument must be a constant (a boolean, a string, a number, or an array) in "index" at line 1 + * @dataProvider getMacroDefinitionDoesNotSupportNonConstantDefaultValues + */ + public function testMacroDefinitionDoesNotSupportNonConstantDefaultValues($template) + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $parser = new Twig_Parser($env); + + $parser->parse($env->tokenize(new Twig_Source($template, 'index'))); + } + + public function getMacroDefinitionDoesNotSupportNonConstantDefaultValues() + { + return array( + array('{% macro foo(name = "a #{foo} a") %}{% endmacro %}'), + array('{% macro foo(name = [["b", "a #{foo} a"]]) %}{% endmacro %}'), + ); + } + + /** + * @dataProvider getMacroDefinitionSupportsConstantDefaultValues + */ + public function testMacroDefinitionSupportsConstantDefaultValues($template) + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $parser = new Twig_Parser($env); + + $parser->parse($env->tokenize(new Twig_Source($template, 'index'))); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without throwing any exceptions + $this->addToAssertionCount(1); + } + + public function getMacroDefinitionSupportsConstantDefaultValues() + { + return array( + array('{% macro foo(name = "aa") %}{% endmacro %}'), + array('{% macro foo(name = 12) %}{% endmacro %}'), + array('{% macro foo(name = true) %}{% endmacro %}'), + array('{% macro foo(name = ["a"]) %}{% endmacro %}'), + array('{% macro foo(name = [["a"]]) %}{% endmacro %}'), + array('{% macro foo(name = {a: "a"}) %}{% endmacro %}'), + array('{% macro foo(name = {a: {b: "a"}}) %}{% endmacro %}'), + ); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unknown "cycl" function. Did you mean "cycle" in "index" at line 1? + */ + public function testUnknownFunction() + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $parser = new Twig_Parser($env); + + $parser->parse($env->tokenize(new Twig_Source('{{ cycl() }}', 'index'))); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unknown "foobar" function in "index" at line 1. + */ + public function testUnknownFunctionWithoutSuggestions() + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $parser = new Twig_Parser($env); + + $parser->parse($env->tokenize(new Twig_Source('{{ foobar() }}', 'index'))); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unknown "lowe" filter. Did you mean "lower" in "index" at line 1? + */ + public function testUnknownFilter() + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $parser = new Twig_Parser($env); + + $parser->parse($env->tokenize(new Twig_Source('{{ 1|lowe }}', 'index'))); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unknown "foobar" filter in "index" at line 1. + */ + public function testUnknownFilterWithoutSuggestions() + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $parser = new Twig_Parser($env); + + $parser->parse($env->tokenize(new Twig_Source('{{ 1|foobar }}', 'index'))); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unknown "nul" test. Did you mean "null" in "index" at line 1 + */ + public function testUnknownTest() + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $parser = new Twig_Parser($env); + $stream = $env->tokenize(new Twig_Source('{{ 1 is nul }}', 'index')); + $parser->parse($stream); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unknown "foobar" test in "index" at line 1. + */ + public function testUnknownTestWithoutSuggestions() + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $parser = new Twig_Parser($env); + + $parser->parse($env->tokenize(new Twig_Source('{{ 1 is foobar }}', 'index'))); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Extension/CoreTest.php b/system/vendor/twig/twig/test/Twig/Tests/Extension/CoreTest.php new file mode 100644 index 0000000..c5429d4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Extension/CoreTest.php @@ -0,0 +1,355 @@ +getMockBuilder('Twig_LoaderInterface')->getMock()); + + for ($i = 0; $i < 100; ++$i) { + $this->assertTrue(in_array(twig_random($env, $value), $expectedInArray, true)); // assertContains() would not consider the type + } + } + + public function getRandomFunctionTestData() + { + return array( + array(// array + array('apple', 'orange', 'citrus'), + array('apple', 'orange', 'citrus'), + ), + array(// Traversable + new ArrayObject(array('apple', 'orange', 'citrus')), + array('apple', 'orange', 'citrus'), + ), + array(// unicode string + 'Ä€é', + array('Ä', '€', 'é'), + ), + array(// numeric but string + '123', + array('1', '2', '3'), + ), + array(// integer + 5, + range(0, 5, 1), + ), + array(// float + 5.9, + range(0, 5, 1), + ), + array(// negative + -2, + array(0, -1, -2), + ), + ); + } + + public function testRandomFunctionWithoutParameter() + { + $max = mt_getrandmax(); + + for ($i = 0; $i < 100; ++$i) { + $val = twig_random(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $this->assertTrue(is_int($val) && $val >= 0 && $val <= $max); + } + } + + public function testRandomFunctionReturnsAsIs() + { + $this->assertSame('', twig_random(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()), '')); + $this->assertSame('', twig_random(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('charset' => null)), '')); + + $instance = new stdClass(); + $this->assertSame($instance, twig_random(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()), $instance)); + } + + /** + * @expectedException Twig_Error_Runtime + */ + public function testRandomFunctionOfEmptyArrayThrowsException() + { + twig_random(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()), array()); + } + + public function testRandomFunctionOnNonUTF8String() + { + if (!function_exists('iconv') && !function_exists('mb_convert_encoding')) { + $this->markTestSkipped('needs iconv or mbstring'); + } + + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $twig->setCharset('ISO-8859-1'); + + $text = twig_convert_encoding('Äé', 'ISO-8859-1', 'UTF-8'); + for ($i = 0; $i < 30; ++$i) { + $rand = twig_random($twig, $text); + $this->assertTrue(in_array(twig_convert_encoding($rand, 'UTF-8', 'ISO-8859-1'), array('Ä', 'é'), true)); + } + } + + public function testReverseFilterOnNonUTF8String() + { + if (!function_exists('iconv') && !function_exists('mb_convert_encoding')) { + $this->markTestSkipped('needs iconv or mbstring'); + } + + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $twig->setCharset('ISO-8859-1'); + + $input = twig_convert_encoding('Äé', 'ISO-8859-1', 'UTF-8'); + $output = twig_convert_encoding(twig_reverse_filter($twig, $input), 'UTF-8', 'ISO-8859-1'); + + $this->assertEquals($output, 'éÄ'); + } + + /** + * @dataProvider provideCustomEscaperCases + */ + public function testCustomEscaper($expected, $string, $strategy) + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $twig->getExtension('Twig_Extension_Core')->setEscaper('foo', 'foo_escaper_for_test'); + + $this->assertSame($expected, twig_escape_filter($twig, $string, $strategy)); + } + + public function provideCustomEscaperCases() + { + return array( + array('fooUTF-8', 'foo', 'foo'), + array('UTF-8', null, 'foo'), + array('42UTF-8', 42, 'foo'), + ); + } + + /** + * @expectedException Twig_Error_Runtime + */ + public function testUnknownCustomEscaper() + { + twig_escape_filter(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()), 'foo', 'bar'); + } + + /** + * @dataProvider provideTwigFirstCases + */ + public function testTwigFirst($expected, $input) + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $this->assertSame($expected, twig_first($twig, $input)); + } + + public function provideTwigFirstCases() + { + $i = array(1 => 'a', 2 => 'b', 3 => 'c'); + + return array( + array('a', 'abc'), + array(1, array(1, 2, 3)), + array('', null), + array('', ''), + array('a', new CoreTestIterator($i, array_keys($i), true, 3)), + ); + } + + /** + * @dataProvider provideTwigLastCases + */ + public function testTwigLast($expected, $input) + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $this->assertSame($expected, twig_last($twig, $input)); + } + + public function provideTwigLastCases() + { + $i = array(1 => 'a', 2 => 'b', 3 => 'c'); + + return array( + array('c', 'abc'), + array(3, array(1, 2, 3)), + array('', null), + array('', ''), + array('c', new CoreTestIterator($i, array_keys($i), true)), + ); + } + + /** + * @dataProvider provideArrayKeyCases + */ + public function testArrayKeysFilter(array $expected, $input) + { + $this->assertSame($expected, twig_get_array_keys_filter($input)); + } + + public function provideArrayKeyCases() + { + $array = array('a' => 'a1', 'b' => 'b1', 'c' => 'c1'); + $keys = array_keys($array); + + return array( + array($keys, $array), + array($keys, new CoreTestIterator($array, $keys)), + array($keys, new CoreTestIteratorAggregate($array, $keys)), + array($keys, new CoreTestIteratorAggregateAggregate($array, $keys)), + array(array(), null), + array(array('a'), new SimpleXMLElement('')), + ); + } + + /** + * @dataProvider provideInFilterCases + */ + public function testInFilter($expected, $value, $compare) + { + $this->assertSame($expected, twig_in_filter($value, $compare)); + } + + public function provideInFilterCases() + { + $array = array(1, 2, 'a' => 3, 5, 6, 7); + $keys = array_keys($array); + + return array( + array(true, 1, $array), + array(true, '3', $array), + array(true, '3', 'abc3def'), + array(true, 1, new CoreTestIterator($array, $keys, true, 1)), + array(true, '3', new CoreTestIterator($array, $keys, true, 3)), + array(true, '3', new CoreTestIteratorAggregateAggregate($array, $keys, true, 3)), + array(false, 4, $array), + array(false, 4, new CoreTestIterator($array, $keys, true)), + array(false, 4, new CoreTestIteratorAggregateAggregate($array, $keys, true)), + array(false, 1, 1), + array(true, 'b', new SimpleXMLElement('b')), + ); + } + + /** + * @dataProvider provideSliceFilterCases + */ + public function testSliceFilter($expected, $input, $start, $length = null, $preserveKeys = false) + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $this->assertSame($expected, twig_slice($twig, $input, $start, $length, $preserveKeys)); + } + + public function provideSliceFilterCases() + { + $i = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4); + $keys = array_keys($i); + + return array( + array(array('a' => 1), $i, 0, 1, true), + array(array('a' => 1), $i, 0, 1, false), + array(array('b' => 2, 'c' => 3), $i, 1, 2), + array(array(1), array(1, 2, 3, 4), 0, 1), + array(array(2, 3), array(1, 2, 3, 4), 1, 2), + array(array(2, 3), new CoreTestIterator($i, $keys, true), 1, 2), + array(array('c' => 3, 'd' => 4), new CoreTestIteratorAggregate($i, $keys, true), 2, null, true), + array($i, new CoreTestIterator($i, $keys, true), 0, count($keys) + 10, true), + array(array(), new CoreTestIterator($i, $keys, true), count($keys) + 10), + array('de', 'abcdef', 3, 2), + array(array(), new SimpleXMLElement('12'), 3), + array(array(), new ArrayIterator(array(1, 2)), 3) + ); + } +} + +function foo_escaper_for_test(Twig_Environment $env, $string, $charset) +{ + return $string.$charset; +} + +final class CoreTestIteratorAggregate implements IteratorAggregate +{ + private $iterator; + + public function __construct(array $array, array $keys, $allowAccess = false, $maxPosition = false) + { + $this->iterator = new CoreTestIterator($array, $keys, $allowAccess, $maxPosition); + } + + public function getIterator() + { + return $this->iterator; + } +} + +final class CoreTestIteratorAggregateAggregate implements IteratorAggregate +{ + private $iterator; + + public function __construct(array $array, array $keys, $allowValueAccess = false, $maxPosition = false) + { + $this->iterator = new CoreTestIteratorAggregate($array, $keys, $allowValueAccess, $maxPosition); + } + + public function getIterator() + { + return $this->iterator; + } +} + +final class CoreTestIterator implements Iterator +{ + private $position; + private $array; + private $arrayKeys; + private $allowValueAccess; + private $maxPosition; + + public function __construct(array $values, array $keys, $allowValueAccess = false, $maxPosition = false) + { + $this->array = $values; + $this->arrayKeys = $keys; + $this->position = 0; + $this->allowValueAccess = $allowValueAccess; + $this->maxPosition = false === $maxPosition ? count($values) + 1 : $maxPosition; + } + + public function rewind() + { + $this->position = 0; + } + + public function current() + { + if ($this->allowValueAccess) { + return $this->array[$this->key()]; + } + + throw new LogicException('Code should only use the keys, not the values provided by iterator.'); + } + + public function key() + { + return $this->arrayKeys[$this->position]; + } + + public function next() + { + ++$this->position; + if ($this->position === $this->maxPosition) { + throw new LogicException(sprintf('Code should not iterate beyond %d.', $this->maxPosition)); + } + } + + public function valid() + { + return isset($this->arrayKeys[$this->position]); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Extension/SandboxTest.php b/system/vendor/twig/twig/test/Twig/Tests/Extension/SandboxTest.php new file mode 100644 index 0000000..0b21582 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Extension/SandboxTest.php @@ -0,0 +1,304 @@ + 'Fabien', + 'obj' => new FooObject(), + 'arr' => array('obj' => new FooObject()), + ); + + self::$templates = array( + '1_basic1' => '{{ obj.foo }}', + '1_basic2' => '{{ name|upper }}', + '1_basic3' => '{% if name %}foo{% endif %}', + '1_basic4' => '{{ obj.bar }}', + '1_basic5' => '{{ obj }}', + '1_basic6' => '{{ arr.obj }}', + '1_basic7' => '{{ cycle(["foo","bar"], 1) }}', + '1_basic8' => '{{ obj.getfoobar }}{{ obj.getFooBar }}', + '1_basic9' => '{{ obj.foobar }}{{ obj.fooBar }}', + '1_basic' => '{% if obj.foo %}{{ obj.foo|upper }}{% endif %}', + '1_layout' => '{% block content %}{% endblock %}', + '1_child' => "{% extends \"1_layout\" %}\n{% block content %}\n{{ \"a\"|json_encode }}\n{% endblock %}", + '1_include' => '{{ include("1_basic1", sandboxed=true) }}', + ); + } + + /** + * @expectedException Twig_Sandbox_SecurityError + * @expectedExceptionMessage Filter "json_encode" is not allowed in "1_child" at line 3. + */ + public function testSandboxWithInheritance() + { + $twig = $this->getEnvironment(true, array(), self::$templates, array('block')); + $twig->loadTemplate('1_child')->render(array()); + } + + public function testSandboxGloballySet() + { + $twig = $this->getEnvironment(false, array(), self::$templates); + $this->assertEquals('FOO', $twig->loadTemplate('1_basic')->render(self::$params), 'Sandbox does nothing if it is disabled globally'); + } + + public function testSandboxUnallowedMethodAccessor() + { + $twig = $this->getEnvironment(true, array(), self::$templates); + try { + $twig->loadTemplate('1_basic1')->render(self::$params); + $this->fail('Sandbox throws a SecurityError exception if an unallowed method is called'); + } catch (Twig_Sandbox_SecurityError $e) { + $this->assertInstanceOf('Twig_Sandbox_SecurityNotAllowedMethodError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedMethodError'); + $this->assertEquals('FooObject', $e->getClassName(), 'Exception should be raised on the "FooObject" class'); + $this->assertEquals('foo', $e->getMethodName(), 'Exception should be raised on the "foo" method'); + } + } + + public function testSandboxUnallowedFilter() + { + $twig = $this->getEnvironment(true, array(), self::$templates); + try { + $twig->loadTemplate('1_basic2')->render(self::$params); + $this->fail('Sandbox throws a SecurityError exception if an unallowed filter is called'); + } catch (Twig_Sandbox_SecurityError $e) { + $this->assertInstanceOf('Twig_Sandbox_SecurityNotAllowedFilterError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedFilterError'); + $this->assertEquals('upper', $e->getFilterName(), 'Exception should be raised on the "upper" filter'); + } + } + + public function testSandboxUnallowedTag() + { + $twig = $this->getEnvironment(true, array(), self::$templates); + try { + $twig->loadTemplate('1_basic3')->render(self::$params); + $this->fail('Sandbox throws a SecurityError exception if an unallowed tag is used in the template'); + } catch (Twig_Sandbox_SecurityError $e) { + $this->assertInstanceOf('Twig_Sandbox_SecurityNotAllowedTagError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedTagError'); + $this->assertEquals('if', $e->getTagName(), 'Exception should be raised on the "if" tag'); + } + } + + public function testSandboxUnallowedProperty() + { + $twig = $this->getEnvironment(true, array(), self::$templates); + try { + $twig->loadTemplate('1_basic4')->render(self::$params); + $this->fail('Sandbox throws a SecurityError exception if an unallowed property is called in the template'); + } catch (Twig_Sandbox_SecurityError $e) { + $this->assertInstanceOf('Twig_Sandbox_SecurityNotAllowedPropertyError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedPropertyError'); + $this->assertEquals('FooObject', $e->getClassName(), 'Exception should be raised on the "FooObject" class'); + $this->assertEquals('bar', $e->getPropertyName(), 'Exception should be raised on the "bar" property'); + } + } + + public function testSandboxUnallowedToString() + { + $twig = $this->getEnvironment(true, array(), self::$templates); + try { + $twig->loadTemplate('1_basic5')->render(self::$params); + $this->fail('Sandbox throws a SecurityError exception if an unallowed method (__toString()) is called in the template'); + } catch (Twig_Sandbox_SecurityError $e) { + $this->assertInstanceOf('Twig_Sandbox_SecurityNotAllowedMethodError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedMethodError'); + $this->assertEquals('FooObject', $e->getClassName(), 'Exception should be raised on the "FooObject" class'); + $this->assertEquals('__tostring', $e->getMethodName(), 'Exception should be raised on the "__toString" method'); + } + } + + public function testSandboxUnallowedToStringArray() + { + $twig = $this->getEnvironment(true, array(), self::$templates); + try { + $twig->loadTemplate('1_basic6')->render(self::$params); + $this->fail('Sandbox throws a SecurityError exception if an unallowed method (__toString()) is called in the template'); + } catch (Twig_Sandbox_SecurityError $e) { + $this->assertInstanceOf('Twig_Sandbox_SecurityNotAllowedMethodError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedMethodError'); + $this->assertEquals('FooObject', $e->getClassName(), 'Exception should be raised on the "FooObject" class'); + $this->assertEquals('__tostring', $e->getMethodName(), 'Exception should be raised on the "__toString" method'); + } + } + + public function testSandboxUnallowedFunction() + { + $twig = $this->getEnvironment(true, array(), self::$templates); + try { + $twig->loadTemplate('1_basic7')->render(self::$params); + $this->fail('Sandbox throws a SecurityError exception if an unallowed function is called in the template'); + } catch (Twig_Sandbox_SecurityError $e) { + $this->assertInstanceOf('Twig_Sandbox_SecurityNotAllowedFunctionError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedFunctionError'); + $this->assertEquals('cycle', $e->getFunctionName(), 'Exception should be raised on the "cycle" function'); + } + } + + public function testSandboxAllowMethodFoo() + { + $twig = $this->getEnvironment(true, array(), self::$templates, array(), array(), array('FooObject' => 'foo')); + FooObject::reset(); + $this->assertEquals('foo', $twig->loadTemplate('1_basic1')->render(self::$params), 'Sandbox allow some methods'); + $this->assertEquals(1, FooObject::$called['foo'], 'Sandbox only calls method once'); + } + + public function testSandboxAllowMethodToString() + { + $twig = $this->getEnvironment(true, array(), self::$templates, array(), array(), array('FooObject' => '__toString')); + FooObject::reset(); + $this->assertEquals('foo', $twig->loadTemplate('1_basic5')->render(self::$params), 'Sandbox allow some methods'); + $this->assertEquals(1, FooObject::$called['__toString'], 'Sandbox only calls method once'); + } + + public function testSandboxAllowMethodToStringDisabled() + { + $twig = $this->getEnvironment(false, array(), self::$templates); + FooObject::reset(); + $this->assertEquals('foo', $twig->loadTemplate('1_basic5')->render(self::$params), 'Sandbox allows __toString when sandbox disabled'); + $this->assertEquals(1, FooObject::$called['__toString'], 'Sandbox only calls method once'); + } + + public function testSandboxAllowFilter() + { + $twig = $this->getEnvironment(true, array(), self::$templates, array(), array('upper')); + $this->assertEquals('FABIEN', $twig->loadTemplate('1_basic2')->render(self::$params), 'Sandbox allow some filters'); + } + + public function testSandboxAllowTag() + { + $twig = $this->getEnvironment(true, array(), self::$templates, array('if')); + $this->assertEquals('foo', $twig->loadTemplate('1_basic3')->render(self::$params), 'Sandbox allow some tags'); + } + + public function testSandboxAllowProperty() + { + $twig = $this->getEnvironment(true, array(), self::$templates, array(), array(), array(), array('FooObject' => 'bar')); + $this->assertEquals('bar', $twig->loadTemplate('1_basic4')->render(self::$params), 'Sandbox allow some properties'); + } + + public function testSandboxAllowFunction() + { + $twig = $this->getEnvironment(true, array(), self::$templates, array(), array(), array(), array(), array('cycle')); + $this->assertEquals('bar', $twig->loadTemplate('1_basic7')->render(self::$params), 'Sandbox allow some functions'); + } + + public function testSandboxAllowFunctionsCaseInsensitive() + { + foreach (array('getfoobar', 'getFoobar', 'getFooBar') as $name) { + $twig = $this->getEnvironment(true, array(), self::$templates, array(), array(), array('FooObject' => $name)); + FooObject::reset(); + $this->assertEquals('foobarfoobar', $twig->loadTemplate('1_basic8')->render(self::$params), 'Sandbox allow methods in a case-insensitive way'); + $this->assertEquals(2, FooObject::$called['getFooBar'], 'Sandbox only calls method once'); + + $this->assertEquals('foobarfoobar', $twig->loadTemplate('1_basic9')->render(self::$params), 'Sandbox allow methods via shortcut names (ie. without get/set)'); + } + } + + public function testSandboxLocallySetForAnInclude() + { + self::$templates = array( + '2_basic' => '{{ obj.foo }}{% include "2_included" %}{{ obj.foo }}', + '2_included' => '{% if obj.foo %}{{ obj.foo|upper }}{% endif %}', + ); + + $twig = $this->getEnvironment(false, array(), self::$templates); + $this->assertEquals('fooFOOfoo', $twig->loadTemplate('2_basic')->render(self::$params), 'Sandbox does nothing if disabled globally and sandboxed not used for the include'); + + self::$templates = array( + '3_basic' => '{{ obj.foo }}{% sandbox %}{% include "3_included" %}{% endsandbox %}{{ obj.foo }}', + '3_included' => '{% if obj.foo %}{{ obj.foo|upper }}{% endif %}', + ); + + $twig = $this->getEnvironment(true, array(), self::$templates); + try { + $twig->loadTemplate('3_basic')->render(self::$params); + $this->fail('Sandbox throws a SecurityError exception when the included file is sandboxed'); + } catch (Twig_Sandbox_SecurityError $e) { + $this->assertInstanceOf('Twig_Sandbox_SecurityNotAllowedTagError', $e, 'Exception should be an instance of Twig_Sandbox_SecurityNotAllowedTagError'); + $this->assertEquals('sandbox', $e->getTagName()); + } + } + + public function testMacrosInASandbox() + { + $twig = $this->getEnvironment(true, array('autoescape' => 'html'), array('index' => <<{{ text }}

    {% endmacro %} + +{{- macros.test('username') }} +EOF + ), array('macro', 'import'), array('escape')); + + $this->assertEquals('

    username

    ', $twig->loadTemplate('index')->render(array())); + } + + public function testSandboxDisabledAfterIncludeFunctionError() + { + $twig = $this->getEnvironment(false, array(), self::$templates); + + $e = null; + try { + $twig->loadTemplate('1_include')->render(self::$params); + } catch (Throwable $e) { + } catch (Exception $e) { + } + if ($e === null) { + $this->fail('An exception should be thrown for this test to be valid.'); + } + + $this->assertFalse($twig->getExtension('Twig_Extension_Sandbox')->isSandboxed(), 'Sandboxed include() function call should not leave Sandbox enabled when an error occurs.'); + } + + protected function getEnvironment($sandboxed, $options, $templates, $tags = array(), $filters = array(), $methods = array(), $properties = array(), $functions = array()) + { + $loader = new Twig_Loader_Array($templates); + $twig = new Twig_Environment($loader, array_merge(array('debug' => true, 'cache' => false, 'autoescape' => false), $options)); + $policy = new Twig_Sandbox_SecurityPolicy($tags, $filters, $methods, $properties, $functions); + $twig->addExtension(new Twig_Extension_Sandbox($policy, $sandboxed)); + + return $twig; + } +} + +class FooObject +{ + public static $called = array('__toString' => 0, 'foo' => 0, 'getFooBar' => 0); + + public $bar = 'bar'; + + public static function reset() + { + self::$called = array('__toString' => 0, 'foo' => 0, 'getFooBar' => 0); + } + + public function __toString() + { + ++self::$called['__toString']; + + return 'foo'; + } + + public function foo() + { + ++self::$called['foo']; + + return 'foo'; + } + + public function getFooBar() + { + ++self::$called['getFooBar']; + + return 'foobar'; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/FactoryRuntimeLoaderTest.php b/system/vendor/twig/twig/test/Twig/Tests/FactoryRuntimeLoaderTest.php new file mode 100644 index 0000000..f418edf --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/FactoryRuntimeLoaderTest.php @@ -0,0 +1,32 @@ + 'getRuntime')); + + $this->assertInstanceOf('stdClass', $loader->load('stdClass')); + } + + public function testLoadReturnsNullForUnmappedRuntime() + { + $loader = new Twig_FactoryRuntimeLoader(); + + $this->assertNull($loader->load('stdClass')); + } +} + +function getRuntime() +{ + return new stdClass(); +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/FileCachingTest.php b/system/vendor/twig/twig/test/Twig/Tests/FileCachingTest.php new file mode 100644 index 0000000..f7ff53c --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/FileCachingTest.php @@ -0,0 +1,63 @@ +tmpDir = sys_get_temp_dir().'/TwigTests'; + if (!file_exists($this->tmpDir)) { + @mkdir($this->tmpDir, 0777, true); + } + + if (!is_writable($this->tmpDir)) { + $this->markTestSkipped(sprintf('Unable to run the tests as "%s" is not writable.', $this->tmpDir)); + } + + $this->env = new Twig_Environment(new Twig_Loader_Array(array('index' => 'index', 'index2' => 'index2')), array('cache' => $this->tmpDir)); + } + + protected function tearDown() + { + Twig_Tests_FilesystemHelper::removeDir($this->tmpDir); + } + + /** + * @group legacy + */ + public function testWritingCacheFiles() + { + $name = 'index'; + $this->env->loadTemplate($name); + $cacheFileName = $this->env->getCacheFilename($name); + + $this->assertFileExists($cacheFileName, 'Cache file does not exist.'); + } + + /** + * @group legacy + */ + public function testClearingCacheFiles() + { + $name = 'index2'; + $this->env->loadTemplate($name); + $cacheFileName = $this->env->getCacheFilename($name); + + $this->assertFileExists($cacheFileName, 'Cache file does not exist.'); + $this->env->clearCacheFiles(); + $this->assertFileNotExists($cacheFileName, 'Cache file was not cleared.'); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/FileExtensionEscapingStrategyTest.php b/system/vendor/twig/twig/test/Twig/Tests/FileExtensionEscapingStrategyTest.php new file mode 100644 index 0000000..b310a5b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/FileExtensionEscapingStrategyTest.php @@ -0,0 +1,51 @@ +assertSame($strategy, Twig_FileExtensionEscapingStrategy::guess($filename)); + } + + public function getGuessData() + { + return array( + // default + array('html', 'foo.html'), + array('html', 'foo.html.twig'), + array('html', 'foo'), + array('html', 'foo.bar.twig'), + array('html', 'foo.txt/foo'), + array('html', 'foo.txt/foo.js/'), + + // css + array('css', 'foo.css'), + array('css', 'foo.css.twig'), + array('css', 'foo.twig.css'), + array('css', 'foo.js.css'), + array('css', 'foo.js.css.twig'), + + // js + array('js', 'foo.js'), + array('js', 'foo.js.twig'), + array('js', 'foo.txt/foo.js'), + array('js', 'foo.txt.twig/foo.js'), + + // txt + array(false, 'foo.txt'), + array(false, 'foo.txt.twig'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/FilesystemHelper.php b/system/vendor/twig/twig/test/Twig/Tests/FilesystemHelper.php new file mode 100644 index 0000000..0e315e8 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/FilesystemHelper.php @@ -0,0 +1,30 @@ + $fileInfo) { + if ($iterator->isDot()) { + continue; + } + + if ($fileInfo->isDir()) { + rmdir($filename); + } else { + unlink($filename); + } + } + rmdir($dir); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/autoescape/block.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/autoescape/block.test new file mode 100644 index 0000000..1290973 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/autoescape/block.test @@ -0,0 +1,21 @@ +--TEST-- +blocks and autoescape +--TEMPLATE-- +{{ include('unrelated.txt.twig') -}} +{{ include('template.html.twig') -}} +--TEMPLATE(unrelated.txt.twig)-- +{% block content %}{% endblock %} +--TEMPLATE(template.html.twig)-- +{% extends 'parent.html.twig' %} +{% block content %} +{{ br -}} +{% endblock %} +--TEMPLATE(parent.html.twig)-- +{% set _content = block('content')|raw %} +{{ _content|raw }} +--DATA-- +return array('br' => '
    ') +--CONFIG-- +return array('autoescape' => 'name') +--EXPECT-- +<br /> diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/autoescape/name.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/autoescape/name.test new file mode 100644 index 0000000..801c477 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/autoescape/name.test @@ -0,0 +1,18 @@ +--TEST-- +"name" autoescape strategy +--TEMPLATE-- +{{ br -}} +{{ include('index.html.twig') -}} +{{ include('index.txt.twig') -}} +--TEMPLATE(index.html.twig)-- +{{ br -}} +--TEMPLATE(index.txt.twig)-- +{{ br -}} +--DATA-- +return array('br' => '
    ') +--CONFIG-- +return array('autoescape' => 'name') +--EXPECT-- +<br /> +<br /> +
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/errors/base.html b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/errors/base.html new file mode 100644 index 0000000..cb0dbe4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/errors/base.html @@ -0,0 +1 @@ +{% block content %}{% endblock %} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/errors/index.html b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/errors/index.html new file mode 100644 index 0000000..df57c82 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/errors/index.html @@ -0,0 +1,7 @@ +{% extends 'base.html' %} +{% block content %} + {{ foo.bar }} +{% endblock %} +{% block foo %} + {{ foo.bar }} +{% endblock %} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/child_contents_outside_blocks.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/child_contents_outside_blocks.test new file mode 100644 index 0000000..a3f0b50 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/child_contents_outside_blocks.test @@ -0,0 +1,15 @@ +--TEST-- +Exception for child templates defining contents outside blocks defined by parent +--TEMPLATE-- +{% extends 'base.twig' %} + +Content outside a block. + +{% block sidebar %} + Content inside a block. +{% endblock %} +--TEMPLATE(base.twig)-- +{% block sidebar %} +{% endblock %} +--EXCEPTION-- +Twig_Error_Syntax: A template that extends another one cannot include contents outside Twig blocks. Did you forget to put the contents inside a {% block %} tag in "index.twig" at line 3? diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_array_with_undefined_variable.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_array_with_undefined_variable.test new file mode 100644 index 0000000..7ff2eed --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_array_with_undefined_variable.test @@ -0,0 +1,18 @@ +--TEST-- +Exception for multiline array with undefined variable +--TEMPLATE-- +{% set foo = { + foo: 'foo', + bar: 'bar', + + + foobar: foobar, + + + + foo2: foo2, +} %} +--DATA-- +return array('foobar' => 'foobar') +--EXCEPTION-- +Twig_Error_Runtime: Variable "foo2" does not exist in "index.twig" at line 11. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_array_with_undefined_variable_again.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_array_with_undefined_variable_again.test new file mode 100644 index 0000000..c425069 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_array_with_undefined_variable_again.test @@ -0,0 +1,18 @@ +--TEST-- +Exception for multiline array with undefined variable +--TEMPLATE-- +{% set foo = { + foo: 'foo', + bar: 'bar', + + + foobar: foobar, + + + + foo2: foo2, +} %} +--DATA-- +return array() +--EXCEPTION-- +Twig_Error_Runtime: Variable "foobar" does not exist in "index.twig" at line 7. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_function_with_undefined_variable.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_function_with_undefined_variable.test new file mode 100644 index 0000000..2f94a5e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_function_with_undefined_variable.test @@ -0,0 +1,12 @@ +--TEST-- +Exception for multile function with undefined variable +--TEMPLATE-- +{{ include('foo', + with_context=with_context +) }} +--TEMPLATE(foo)-- +Foo +--DATA-- +return array() +--EXCEPTION-- +Twig_Error_Runtime: Variable "with_context" does not exist in "index.twig" at line 3. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_function_with_unknown_argument.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_function_with_unknown_argument.test new file mode 100644 index 0000000..64761fc --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_function_with_unknown_argument.test @@ -0,0 +1,9 @@ +--TEST-- +Exception for multiline function with unknown argument +--TEMPLATE-- +{{ include('foo', + with_context=True, + invalid=False +) }} +--EXCEPTION-- +Twig_Error_Syntax: Unknown argument "invalid" for function "include(template, variables, with_context, ignore_missing, sandboxed)" in "index.twig" at line 4. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_tag_with_undefined_variable.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_tag_with_undefined_variable.test new file mode 100644 index 0000000..7b3b1da --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/multiline_tag_with_undefined_variable.test @@ -0,0 +1,12 @@ +--TEST-- +Exception for multiline tag with undefined variable +--TEMPLATE-- +{% include 'foo' + with vars +%} +--TEMPLATE(foo)-- +Foo +--DATA-- +return array() +--EXCEPTION-- +Twig_Error_Runtime: Variable "vars" does not exist in "index.twig" at line 3. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/syntax_error_in_reused_template.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/syntax_error_in_reused_template.test new file mode 100644 index 0000000..9ca418b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/syntax_error_in_reused_template.test @@ -0,0 +1,10 @@ +--TEST-- +Exception for syntax error in reused template +--TEMPLATE-- +{% use 'foo.twig' %} +--TEMPLATE(foo.twig)-- +{% block bar %} + {% do node.data = 5 %} +{% endblock %} +--EXCEPTION-- +Twig_Error_Syntax: Unexpected token "operator" of value "=" ("end of statement block" expected) in "foo.twig" at line 3. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/unclosed_tag.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/unclosed_tag.test new file mode 100644 index 0000000..2c35ad5 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/unclosed_tag.test @@ -0,0 +1,20 @@ +--TEST-- +Exception for an unclosed tag +--TEMPLATE-- +{% block foo %} + {% if foo %} + + + + + {% for i in fo %} + + + + {% endfor %} + + + +{% endblock %} +--EXCEPTION-- +Twig_Error_Syntax: Unexpected "endblock" tag (expecting closing tag for the "if" tag defined near line 4) in "index.twig" at line 16. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_parent.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_parent.test new file mode 100644 index 0000000..c8e7a09 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_parent.test @@ -0,0 +1,8 @@ +--TEST-- +Exception for an undefined parent +--TEMPLATE-- +{% extends 'foo.html' %} + +{% set foo = "foo" %} +--EXCEPTION-- +Twig_Error_Loader: Template "foo.html" is not defined in "index.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_template_in_child_template.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_template_in_child_template.test new file mode 100644 index 0000000..1992510 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_template_in_child_template.test @@ -0,0 +1,15 @@ +--TEST-- +Exception for an undefined template in a child template +--TEMPLATE-- +{% extends 'base.twig' %} + +{% block sidebar %} + {{ include('include.twig') }} +{% endblock %} +--TEMPLATE(base.twig)-- +{% block sidebar %} +{% endblock %} +--DATA-- +return array() +--EXCEPTION-- +Twig_Error_Loader: Template "include.twig" is not defined in "index.twig" at line 5. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_trait.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_trait.test new file mode 100644 index 0000000..6679fbe --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/exceptions/undefined_trait.test @@ -0,0 +1,9 @@ +--TEST-- +Exception for an undefined trait +--TEMPLATE-- +{% use 'foo' with foobar as bar %} +--TEMPLATE(foo)-- +{% block bar %} +{% endblock %} +--EXCEPTION-- +Twig_Error_Runtime: Block "foobar" is not defined in trait "foo" in "index.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/_self.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/_self.test new file mode 100644 index 0000000..32fed8f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/_self.test @@ -0,0 +1,8 @@ +--TEST-- +_self returns the template name +--TEMPLATE-- +{{ _self }} +--DATA-- +return array() +--EXPECT-- +index.twig diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/array.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/array.test new file mode 100644 index 0000000..c69b119 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/array.test @@ -0,0 +1,61 @@ +--TEST-- +Twig supports array notation +--TEMPLATE-- +{# empty array #} +{{ []|join(',') }} + +{{ [1, 2]|join(',') }} +{{ ['foo', "bar"]|join(',') }} +{{ {0: 1, 'foo': 'bar'}|join(',') }} +{{ {0: 1, 'foo': 'bar'}|keys|join(',') }} + +{{ {0: 1, foo: 'bar'}|join(',') }} +{{ {0: 1, foo: 'bar'}|keys|join(',') }} + +{# nested arrays #} +{% set a = [1, 2, [1, 2], {'foo': {'foo': 'bar'}}] %} +{{ a[2]|join(',') }} +{{ a[3]["foo"]|join(',') }} + +{# works even if [] is used inside the array #} +{{ [foo[bar]]|join(',') }} + +{# elements can be any expression #} +{{ ['foo'|upper, bar|upper, bar == foo]|join(',') }} + +{# arrays can have a trailing , like in PHP #} +{{ + [ + 1, + 2, + ]|join(',') +}} + +{# keys can be any expression #} +{% set a = 1 %} +{% set b = "foo" %} +{% set ary = { (a): 'a', (b): 'b', 'c': 'c', (a ~ b): 'd' } %} +{{ ary|keys|join(',') }} +{{ ary|join(',') }} +--DATA-- +return array('bar' => 'bar', 'foo' => array('bar' => 'bar')) +--EXPECT-- +1,2 +foo,bar +1,bar +0,foo + +1,bar +0,foo + +1,2 +bar + +bar + +FOO,BAR, + +1,2 + +1,foo,c,1foo +a,b,c,d diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/array_call.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/array_call.test new file mode 100644 index 0000000..f3df328 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/array_call.test @@ -0,0 +1,14 @@ +--TEST-- +Twig supports method calls +--TEMPLATE-- +{{ items.foo }} +{{ items['foo'] }} +{{ items[foo] }} +{{ items[items[foo]] }} +--DATA-- +return array('foo' => 'bar', 'items' => array('foo' => 'bar', 'bar' => 'foo')) +--EXPECT-- +bar +bar +foo +bar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/binary.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/binary.test new file mode 100644 index 0000000..f5e6845 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/binary.test @@ -0,0 +1,46 @@ +--TEST-- +Twig supports binary operations (+, -, *, /, ~, %, and, or) +--TEMPLATE-- +{{ 1 + 1 }} +{{ 2 - 1 }} +{{ 2 * 2 }} +{{ 2 / 2 }} +{{ 3 % 2 }} +{{ 1 and 1 }} +{{ 1 and 0 }} +{{ 0 and 1 }} +{{ 0 and 0 }} +{{ 1 or 1 }} +{{ 1 or 0 }} +{{ 0 or 1 }} +{{ 0 or 0 }} +{{ 0 or 1 and 0 }} +{{ 1 or 0 and 1 }} +{{ "foo" ~ "bar" }} +{{ foo ~ "bar" }} +{{ "foo" ~ bar }} +{{ foo ~ bar }} +{{ 20 // 7 }} +--DATA-- +return array('foo' => 'bar', 'bar' => 'foo') +--EXPECT-- +2 +1 +4 +1 +1 +1 + + + +1 +1 +1 + + +1 +foobar +barbar +foofoo +barfoo +2 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/bitwise.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/bitwise.test new file mode 100644 index 0000000..74fe6ca --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/bitwise.test @@ -0,0 +1,14 @@ +--TEST-- +Twig supports bitwise operations +--TEMPLATE-- +{{ 1 b-and 5 }} +{{ 1 b-or 5 }} +{{ 1 b-xor 5 }} +{{ (1 and 0 b-or 0) is same as(1 and (0 b-or 0)) ? 'ok' : 'ko' }} +--DATA-- +return array() +--EXPECT-- +1 +5 +4 +ok diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/comparison.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/comparison.test new file mode 100644 index 0000000..726b850 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/comparison.test @@ -0,0 +1,14 @@ +--TEST-- +Twig supports comparison operators (==, !=, <, >, >=, <=) +--TEMPLATE-- +{{ 1 > 2 }}/{{ 1 > 1 }}/{{ 1 >= 2 }}/{{ 1 >= 1 }} +{{ 1 < 2 }}/{{ 1 < 1 }}/{{ 1 <= 2 }}/{{ 1 <= 1 }} +{{ 1 == 1 }}/{{ 1 == 2 }} +{{ 1 != 1 }}/{{ 1 != 2 }} +--DATA-- +return array() +--EXPECT-- +///1 +1//1/1 +1/ +/1 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/divisibleby.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/divisibleby.test new file mode 100644 index 0000000..238dd27 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/divisibleby.test @@ -0,0 +1,17 @@ +--TEST-- +Twig supports the "divisible by" operator +--TEMPLATE-- +{{ 8 is divisible by(2) ? 'OK' }} +{{ 8 is not divisible by(3) ? 'OK' }} +{{ 8 is divisible by (2) ? 'OK' }} +{{ 8 is not + divisible + by + (3) ? 'OK' }} +--DATA-- +return array() +--EXPECT-- +OK +OK +OK +OK diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/dotdot.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/dotdot.test new file mode 100644 index 0000000..9cd0676 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/dotdot.test @@ -0,0 +1,20 @@ +--TEST-- +Twig supports the .. operator +--TEMPLATE-- +{% for i in 0..10 %}{{ i }} {% endfor %} + +{% for letter in 'a'..'z' %}{{ letter }} {% endfor %} + +{% for letter in 'a'|upper..'z'|upper %}{{ letter }} {% endfor %} + +{% for i in foo[0]..foo[1] %}{{ i }} {% endfor %} + +{% for i in 0 + 1 .. 10 - 1 %}{{ i }} {% endfor %} +--DATA-- +return array('foo' => array(1, 10)) +--EXPECT-- +0 1 2 3 4 5 6 7 8 9 10 +a b c d e f g h i j k l m n o p q r s t u v w x y z +A B C D E F G H I J K L M N O P Q R S T U V W X Y Z +1 2 3 4 5 6 7 8 9 10 +1 2 3 4 5 6 7 8 9 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ends_with.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ends_with.test new file mode 100644 index 0000000..9ad5e5e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ends_with.test @@ -0,0 +1,26 @@ +--TEST-- +Twig supports the "ends with" operator +--TEMPLATE-- +{{ 'foo' ends with 'o' ? 'OK' : 'KO' }} +{{ not ('foo' ends with 'f') ? 'OK' : 'KO' }} +{{ not ('foo' ends with 'foowaytoolong') ? 'OK' : 'KO' }} +{{ 'foo' ends with '' ? 'OK' : 'KO' }} +{{ '1' ends with true ? 'OK' : 'KO' }} +{{ 1 ends with true ? 'OK' : 'KO' }} +{{ 0 ends with false ? 'OK' : 'KO' }} +{{ '' ends with false ? 'OK' : 'KO' }} +{{ false ends with false ? 'OK' : 'KO' }} +{{ false ends with '' ? 'OK' : 'KO' }} +--DATA-- +return array() +--EXPECT-- +OK +OK +OK +OK +KO +KO +KO +KO +KO +KO diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/grouping.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/grouping.test new file mode 100644 index 0000000..79f8e0b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/grouping.test @@ -0,0 +1,8 @@ +--TEST-- +Twig supports grouping of expressions +--TEMPLATE-- +{{ (2 + 2) / 2 }} +--DATA-- +return array() +--EXPECT-- +2 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/literals.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/literals.test new file mode 100644 index 0000000..7ae3bae --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/literals.test @@ -0,0 +1,22 @@ +--TEST-- +Twig supports literals +--TEMPLATE-- +1 {{ true }} +2 {{ TRUE }} +3 {{ false }} +4 {{ FALSE }} +5 {{ none }} +6 {{ NONE }} +7 {{ null }} +8 {{ NULL }} +--DATA-- +return array() +--EXPECT-- +1 1 +2 1 +3 +4 +5 +6 +7 +8 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/magic_call.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/magic_call.test new file mode 100644 index 0000000..1a27a2d --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/magic_call.test @@ -0,0 +1,27 @@ +--TEST-- +Twig supports __call() for attributes +--TEMPLATE-- +{{ foo.foo }} +{{ foo.bar }} +--DATA-- +class TestClassForMagicCallAttributes +{ + public function getBar() + { + return 'bar_from_getbar'; + } + + public function __call($method, $arguments) + { + if ('foo' === $method) { + return 'foo_from_call'; + } + + return false; + } +} + +return array('foo' => new TestClassForMagicCallAttributes()) +--EXPECT-- +foo_from_call +bar_from_getbar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/matches.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/matches.test new file mode 100644 index 0000000..b6c7716 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/matches.test @@ -0,0 +1,12 @@ +--TEST-- +Twig supports the "matches" operator +--TEMPLATE-- +{{ 'foo' matches '/o/' ? 'OK' : 'KO' }} +{{ 'foo' matches '/^fo/' ? 'OK' : 'KO' }} +{{ 'foo' matches '/O/i' ? 'OK' : 'KO' }} +--DATA-- +return array() +--EXPECT-- +OK +OK +OK diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/method_call.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/method_call.test new file mode 100644 index 0000000..5f801e6 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/method_call.test @@ -0,0 +1,28 @@ +--TEST-- +Twig supports method calls +--TEMPLATE-- +{{ items.foo.foo }} +{{ items.foo.getFoo() }} +{{ items.foo.bar }} +{{ items.foo['bar'] }} +{{ items.foo.bar('a', 43) }} +{{ items.foo.bar(foo) }} +{{ items.foo.self.foo() }} +{{ items.foo.is }} +{{ items.foo.in }} +{{ items.foo.not }} +--DATA-- +return array('foo' => 'bar', 'items' => array('foo' => new TwigTestFoo(), 'bar' => 'foo')) +--CONFIG-- +return array('strict_variables' => false) +--EXPECT-- +foo +foo +bar + +bar_a-43 +bar_bar +foo +is +in +not diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/negative_numbers.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/negative_numbers.test new file mode 100644 index 0000000..1853b1b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/negative_numbers.test @@ -0,0 +1,18 @@ +--TEST-- +Twig manages negative numbers correctly +--TEMPLATE-- +{{ -1 }} +{{ - 1 }} +{{ 5 - 1 }} +{{ 5-1 }} +{{ 5 + -1 }} +{{ 5 + - 1 }} +--DATA-- +return array() +--EXPECT-- +-1 +-1 +4 +4 +4 +4 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/operators_as_variables.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/operators_as_variables.test new file mode 100644 index 0000000..fe29d08 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/operators_as_variables.test @@ -0,0 +1,16 @@ +--TEST-- +Twig allows to use named operators as variable names +--TEMPLATE-- +{% for match in matches %} + {{- match }} +{% endfor %} +{{ in }} +{{ is }} +--DATA-- +return array('matches' => array(1, 2, 3), 'in' => 'in', 'is' => 'is') +--EXPECT-- +1 +2 +3 +in +is diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/postfix.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/postfix.test new file mode 100644 index 0000000..542c350 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/postfix.test @@ -0,0 +1,22 @@ +--TEST-- +Twig parses postfix expressions +--TEMPLATE-- +{% import _self as macros %} + +{% macro foo() %}foo{% endmacro %} + +{{ 'a' }} +{{ 'a'|upper }} +{{ ('a')|upper }} +{{ -1|upper }} +{{ macros.foo() }} +{{ (macros).foo() }} +--DATA-- +return array(); +--EXPECT-- +a +A +A +-1 +foo +foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/power.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/power.test new file mode 100644 index 0000000..eacc98f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/power.test @@ -0,0 +1,20 @@ +--TEST-- +Twig parses power expressions +--TEMPLATE-- +{{ 2**3 }} +{{ (-2)**3 }} +{{ (-2)**(-3) }} +{{ a ** a }} +{{ a ** b }} +{{ b ** a }} +{{ b ** b }} +--DATA-- +return array('a' => 4, 'b' => -2); +--EXPECT-- +8 +-8 +-0.125 +256 +0.0625 +16 +0.25 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/sameas.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/sameas.test new file mode 100644 index 0000000..601201d --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/sameas.test @@ -0,0 +1,21 @@ +--TEST-- +Twig supports the "same as" operator +--TEMPLATE-- +{{ 1 is same as(1) ? 'OK' }} +{{ 1 is not same as(true) ? 'OK' }} +{{ 1 is same as(1) ? 'OK' }} +{{ 1 is not same as(true) ? 'OK' }} +{{ 1 is same as (1) ? 'OK' }} +{{ 1 is not + same + as + (true) ? 'OK' }} +--DATA-- +return array() +--EXPECT-- +OK +OK +OK +OK +OK +OK diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/starts_with.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/starts_with.test new file mode 100644 index 0000000..75d331e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/starts_with.test @@ -0,0 +1,27 @@ +--TEST-- +Twig supports the "starts with" operator +--TEMPLATE-- +{{ 'foo' starts with 'f' ? 'OK' : 'KO' }} +{{ not ('foo' starts with 'oo') ? 'OK' : 'KO' }} +{{ not ('foo' starts with 'foowaytoolong') ? 'OK' : 'KO' }} +{{ 'foo' starts with 'f' ? 'OK' : 'KO' }} +{{ 'foo' starts +with 'f' ? 'OK' : 'KO' }} +{{ 'foo' starts with '' ? 'OK' : 'KO' }} +{{ '1' starts with true ? 'OK' : 'KO' }} +{{ '' starts with false ? 'OK' : 'KO' }} +{{ 'a' starts with false ? 'OK' : 'KO' }} +{{ false starts with '' ? 'OK' : 'KO' }} +--DATA-- +return array() +--EXPECT-- +OK +OK +OK +OK +OK +OK +KO +KO +KO +KO diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/strings.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/strings.test new file mode 100644 index 0000000..a911661 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/strings.test @@ -0,0 +1,10 @@ +--TEST-- +Twig supports string interpolation +--TEMPLATE-- +{{ "foo #{"foo #{bar} baz"} baz" }} +{{ "foo #{bar}#{bar} baz" }} +--DATA-- +return array('bar' => 'BAR'); +--EXPECT-- +foo foo BAR baz baz +foo BARBAR baz diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ternary_operator.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ternary_operator.test new file mode 100644 index 0000000..0e6fa96 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ternary_operator.test @@ -0,0 +1,18 @@ +--TEST-- +Twig supports the ternary operator +--TEMPLATE-- +{{ 1 ? 'YES' : 'NO' }} +{{ 0 ? 'YES' : 'NO' }} +{{ 0 ? 'YES' : (1 ? 'YES1' : 'NO1') }} +{{ 0 ? 'YES' : (0 ? 'YES1' : 'NO1') }} +{{ 1 == 1 ? 'foo
    ':'' }} +{{ foo ~ (bar ? ('-' ~ bar) : '') }} +--DATA-- +return array('foo' => 'foo', 'bar' => 'bar') +--EXPECT-- +YES +NO +YES1 +NO1 +foo
    +foo-bar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ternary_operator_noelse.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ternary_operator_noelse.test new file mode 100644 index 0000000..fdc660f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ternary_operator_noelse.test @@ -0,0 +1,10 @@ +--TEST-- +Twig supports the ternary operator +--TEMPLATE-- +{{ 1 ? 'YES' }} +{{ 0 ? 'YES' }} +--DATA-- +return array() +--EXPECT-- +YES + diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ternary_operator_nothen.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ternary_operator_nothen.test new file mode 100644 index 0000000..9057e83 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/ternary_operator_nothen.test @@ -0,0 +1,10 @@ +--TEST-- +Twig supports the ternary operator +--TEMPLATE-- +{{ 'YES' ?: 'NO' }} +{{ 0 ?: 'NO' }} +--DATA-- +return array() +--EXPECT-- +YES +NO diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/two_word_operators_as_variables.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/two_word_operators_as_variables.test new file mode 100644 index 0000000..0eaabb4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/two_word_operators_as_variables.test @@ -0,0 +1,8 @@ +--TEST-- +Twig does not allow to use two-word named operators as variable names +--TEMPLATE-- +{{ starts with }} +--DATA-- +return array() +--EXCEPTION-- +Twig_Error_Syntax: Unexpected token "operator" of value "starts with" in "index.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/unary.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/unary.test new file mode 100644 index 0000000..b79219a --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/unary.test @@ -0,0 +1,12 @@ +--TEST-- +Twig supports unary operators (not, -, +) +--TEMPLATE-- +{{ not 1 }}/{{ not 0 }} +{{ +1 + 1 }}/{{ -1 - 1 }} +{{ not (false or true) }} +--DATA-- +return array() +--EXPECT-- +/1 +2/-2 + diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/unary_macro_arguments.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/unary_macro_arguments.test new file mode 100644 index 0000000..ad84a9c --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/unary_macro_arguments.test @@ -0,0 +1,22 @@ +--TEST-- +Twig manages negative numbers as default parameters +--TEMPLATE-- +{% import _self as macros %} +{{ macros.negative_number1() }} +{{ macros.negative_number2() }} +{{ macros.negative_number3() }} +{{ macros.positive_number1() }} +{{ macros.positive_number2() }} +{% macro negative_number1(nb=-1) %}{{ nb }}{% endmacro %} +{% macro negative_number2(nb = --1) %}{{ nb }}{% endmacro %} +{% macro negative_number3(nb = - 1) %}{{ nb }}{% endmacro %} +{% macro positive_number1(nb = +1) %}{{ nb }}{% endmacro %} +{% macro positive_number2(nb = ++1) %}{{ nb }}{% endmacro %} +--DATA-- +return array() +--EXPECT-- +-1 +1 +-1 +1 +1 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/unary_precedence.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/unary_precedence.test new file mode 100644 index 0000000..cc6eef8 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/expressions/unary_precedence.test @@ -0,0 +1,14 @@ +--TEST-- +Twig unary operators precedence +--TEMPLATE-- +{{ -1 - 1 }} +{{ -1 - -1 }} +{{ -1 * -1 }} +{{ 4 / -1 * 5 }} +--DATA-- +return array() +--EXPECT-- +-2 +0 +1 +-20 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/abs.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/abs.test new file mode 100644 index 0000000..27e93fd --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/abs.test @@ -0,0 +1,30 @@ +--TEST-- +"abs" filter +--TEMPLATE-- +{{ (-5.5)|abs }} +{{ (-5)|abs }} +{{ (-0)|abs }} +{{ 0|abs }} +{{ 5|abs }} +{{ 5.5|abs }} +{{ number1|abs }} +{{ number2|abs }} +{{ number3|abs }} +{{ number4|abs }} +{{ number5|abs }} +{{ number6|abs }} +--DATA-- +return array('number1' => -5.5, 'number2' => -5, 'number3' => -0, 'number4' => 0, 'number5' => 5, 'number6' => 5.5) +--EXPECT-- +5.5 +5 +0 +0 +5 +5.5 +5.5 +5 +0 +0 +5 +5.5 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch.test new file mode 100644 index 0000000..cb6de7f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch.test @@ -0,0 +1,31 @@ +--TEST-- +"batch" filter +--TEMPLATE-- +{% for row in items|batch(3) %} +
    + {% for column in row %} +
    {{ column }}
    + {% endfor %} +
    +{% endfor %} +--DATA-- +return array('items' => array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j')) +--EXPECT-- +
    +
    a
    +
    b
    +
    c
    +
    +
    +
    d
    +
    e
    +
    f
    +
    +
    +
    g
    +
    h
    +
    i
    +
    +
    +
    j
    +
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_float.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_float.test new file mode 100644 index 0000000..e2ec4be --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_float.test @@ -0,0 +1,29 @@ +--TEST-- +"batch" filter +--TEMPLATE-- +{% for row in items|batch(3.1) %} +
    + {% for column in row %} +
    {{ column }}
    + {% endfor %} +
    +{% endfor %} +--DATA-- +return array('items' => array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j')) +--EXPECT-- +
    +
    a
    +
    b
    +
    c
    +
    d
    +
    +
    +
    e
    +
    f
    +
    g
    +
    h
    +
    +
    +
    i
    +
    j
    +
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_empty_fill.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_empty_fill.test new file mode 100644 index 0000000..af996f2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_empty_fill.test @@ -0,0 +1,37 @@ +--TEST-- +"batch" filter +--TEMPLATE-- + +{% for row in items|batch(3, '') %} + + {% for column in row %} + + {% endfor %} + +{% endfor %} +
    {{ column }}
    +--DATA-- +return array('items' => array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j')) +--EXPECT-- + + + + + + + + + + + + + + + + + + + + + +
    abc
    def
    ghi
    j
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_exact_elements.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_exact_elements.test new file mode 100644 index 0000000..72483f4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_exact_elements.test @@ -0,0 +1,33 @@ +--TEST-- +"batch" filter +--TEMPLATE-- +{% for row in items|batch(3, 'fill') %} +
    + {% for column in row %} +
    {{ column }}
    + {% endfor %} +
    +{% endfor %} +--DATA-- +return array('items' => array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l')) +--EXPECT-- +
    +
    a
    +
    b
    +
    c
    +
    +
    +
    d
    +
    e
    +
    f
    +
    +
    +
    g
    +
    h
    +
    i
    +
    +
    +
    j
    +
    k
    +
    l
    +
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_fill.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_fill.test new file mode 100644 index 0000000..746295f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_fill.test @@ -0,0 +1,37 @@ +--TEST-- +"batch" filter +--TEMPLATE-- + +{% for row in items|batch(3, 'fill') %} + + {% for column in row %} + + {% endfor %} + +{% endfor %} +
    {{ column }}
    +--DATA-- +return array('items' => array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j')) +--EXPECT-- + + + + + + + + + + + + + + + + + + + + + +
    abc
    def
    ghi
    jfillfill
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_keys.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_keys.test new file mode 100644 index 0000000..6015380 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_keys.test @@ -0,0 +1,10 @@ +--TEST-- +"batch" filter preserves array keys +--TEMPLATE-- +{{ {'foo': 'bar', 'key': 'value'}|batch(4)|first|keys|join(',') }} +{{ {'foo': 'bar', 'key': 'value'}|batch(4, 'fill')|first|keys|join(',') }} +--DATA-- +return array() +--EXPECT-- +foo,key +foo,key,0,1 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_zero_elements.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_zero_elements.test new file mode 100644 index 0000000..b9c058d --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/batch_with_zero_elements.test @@ -0,0 +1,10 @@ +--TEST-- +"batch" filter with zero elements +--TEMPLATE-- +{{ []|batch(3)|length }} +{{ []|batch(3, 'fill')|length }} +--DATA-- +return array() +--EXPECT-- +0 +0 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/convert_encoding.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/convert_encoding.test new file mode 100644 index 0000000..380b04b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/convert_encoding.test @@ -0,0 +1,10 @@ +--TEST-- +"convert_encoding" filter +--CONDITION-- +function_exists('iconv') || function_exists('mb_convert_encoding') +--TEMPLATE-- +{{ "æ„›ã—ã¦ã„ã¾ã™ã‹ï¼Ÿ"|convert_encoding('ISO-2022-JP', 'UTF-8')|convert_encoding('UTF-8', 'ISO-2022-JP') }} +--DATA-- +return array() +--EXPECT-- +æ„›ã—ã¦ã„ã¾ã™ã‹ï¼Ÿ diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date.test new file mode 100644 index 0000000..d17e5e2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date.test @@ -0,0 +1,90 @@ +--TEST-- +"date" filter +--TEMPLATE-- +{{ date1|date }} +{{ date1|date('d/m/Y') }} +{{ date1|date('d/m/Y H:i:s', 'Asia/Hong_Kong') }} +{{ date1|date('d/m/Y H:i:s P', 'Asia/Hong_Kong') }} +{{ date1|date('d/m/Y H:i:s P', 'America/Chicago') }} +{{ date1|date('e') }} +{{ date1|date('d/m/Y H:i:s') }} + +{{ date2|date }} +{{ date2|date('d/m/Y') }} +{{ date2|date('d/m/Y H:i:s', 'Asia/Hong_Kong') }} +{{ date2|date('d/m/Y H:i:s', timezone1) }} +{{ date2|date('d/m/Y H:i:s') }} + +{{ date3|date }} +{{ date3|date('d/m/Y') }} + +{{ date4|date }} +{{ date4|date('d/m/Y') }} + +{{ date5|date }} +{{ date5|date('d/m/Y') }} + +{{ date6|date('d/m/Y H:i:s P', 'Europe/Paris') }} +{{ date6|date('d/m/Y H:i:s P', 'Asia/Hong_Kong') }} +{{ date6|date('d/m/Y H:i:s P', false) }} +{{ date6|date('e', 'Europe/Paris') }} +{{ date6|date('e', false) }} + +{{ date7|date }} +{{ date7|date(timezone='Europe/Paris') }} +{{ date7|date(timezone='Asia/Hong_Kong') }} +{{ date7|date(timezone=false) }} +{{ date7|date(timezone='Indian/Mauritius') }} + +{{ '2010-01-28 15:00:00'|date(timezone="Europe/Paris") }} +{{ '2010-01-28 15:00:00'|date(timezone="Asia/Hong_Kong") }} +--DATA-- +date_default_timezone_set('Europe/Paris'); +return array( + 'date1' => mktime(13, 45, 0, 10, 4, 2010), + 'date2' => new DateTime('2010-10-04 13:45'), + 'date3' => '2010-10-04 13:45', + 'date4' => 1286199900, // DateTime::createFromFormat('Y-m-d H:i', '2010-10-04 13:45', new DateTimeZone('UTC'))->getTimestamp() -- A unixtimestamp is always GMT + 'date5' => -189291360, // DateTime::createFromFormat('Y-m-d H:i', '1964-01-02 03:04', new DateTimeZone('UTC'))->getTimestamp(), + 'date6' => new DateTime('2010-10-04 13:45', new DateTimeZone('America/New_York')), + 'date7' => '2010-01-28T15:00:00+04:00', + 'timezone1' => new DateTimeZone('America/New_York'), +) +--EXPECT-- +October 4, 2010 13:45 +04/10/2010 +04/10/2010 19:45:00 +04/10/2010 19:45:00 +08:00 +04/10/2010 06:45:00 -05:00 +Europe/Paris +04/10/2010 13:45:00 + +October 4, 2010 13:45 +04/10/2010 +04/10/2010 19:45:00 +04/10/2010 07:45:00 +04/10/2010 13:45:00 + +October 4, 2010 13:45 +04/10/2010 + +October 4, 2010 15:45 +04/10/2010 + +January 2, 1964 04:04 +02/01/1964 + +04/10/2010 19:45:00 +02:00 +05/10/2010 01:45:00 +08:00 +04/10/2010 13:45:00 -04:00 +Europe/Paris +America/New_York + +January 28, 2010 12:00 +January 28, 2010 12:00 +January 28, 2010 19:00 +January 28, 2010 15:00 +January 28, 2010 15:00 + +January 28, 2010 15:00 +January 28, 2010 22:00 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_default_format.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_default_format.test new file mode 100644 index 0000000..6ad504c --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_default_format.test @@ -0,0 +1,14 @@ +--TEST-- +"date" filter +--TEMPLATE-- +{{ date1|date }} +{{ date1|date('d/m/Y') }} +--DATA-- +date_default_timezone_set('UTC'); +$twig->getExtension('Twig_Extension_Core')->setDateFormat('Y-m-d', '%d days %h hours'); +return array( + 'date1' => mktime(13, 45, 0, 10, 4, 2010), +) +--EXPECT-- +2010-10-04 +04/10/2010 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_default_format_interval.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_default_format_interval.test new file mode 100644 index 0000000..be4a642 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_default_format_interval.test @@ -0,0 +1,16 @@ +--TEST-- +"date" filter (interval support as of PHP 5.3) +--CONDITION-- +version_compare(phpversion(), '5.3.0', '>=') +--TEMPLATE-- +{{ date2|date }} +{{ date2|date('%d days') }} +--DATA-- +date_default_timezone_set('UTC'); +$twig->getExtension('Twig_Extension_Core')->setDateFormat('Y-m-d', '%d days %h hours'); +return array( + 'date2' => new DateInterval('P2D'), +) +--EXPECT-- +2 days 0 hours +2 days diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_immutable.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_immutable.test new file mode 100644 index 0000000..4e18325 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_immutable.test @@ -0,0 +1,37 @@ +--TEST-- +"date" filter +--CONDITION-- +version_compare(phpversion(), '5.5.0', '>=') +--TEMPLATE-- +{{ date1|date }} +{{ date1|date('d/m/Y') }} +{{ date1|date('d/m/Y H:i:s', 'Asia/Hong_Kong') }} +{{ date1|date('d/m/Y H:i:s', timezone1) }} +{{ date1|date('d/m/Y H:i:s') }} +{{ date1|date_modify('+1 hour')|date('d/m/Y H:i:s') }} + +{{ date2|date('d/m/Y H:i:s P', 'Europe/Paris') }} +{{ date2|date('d/m/Y H:i:s P', 'Asia/Hong_Kong') }} +{{ date2|date('d/m/Y H:i:s P', false) }} +{{ date2|date('e', 'Europe/Paris') }} +{{ date2|date('e', false) }} +--DATA-- +date_default_timezone_set('Europe/Paris'); +return array( + 'date1' => new DateTimeImmutable('2010-10-04 13:45'), + 'date2' => new DateTimeImmutable('2010-10-04 13:45', new DateTimeZone('America/New_York')), + 'timezone1' => new DateTimeZone('America/New_York'), +) +--EXPECT-- +October 4, 2010 13:45 +04/10/2010 +04/10/2010 19:45:00 +04/10/2010 07:45:00 +04/10/2010 13:45:00 +04/10/2010 14:45:00 + +04/10/2010 19:45:00 +02:00 +05/10/2010 01:45:00 +08:00 +04/10/2010 13:45:00 -04:00 +Europe/Paris +America/New_York diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_interval.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_interval.test new file mode 100644 index 0000000..0c8c6f1 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_interval.test @@ -0,0 +1,19 @@ +--TEST-- +"date" filter (interval support as of PHP 5.3) +--CONDITION-- +version_compare(phpversion(), '5.3.0', '>=') +--TEMPLATE-- +{{ date1|date }} +{{ date1|date('%d days %h hours') }} +{{ date1|date('%d days %h hours', timezone1) }} +--DATA-- +date_default_timezone_set('UTC'); +return array( + 'date1' => new DateInterval('P2D'), + // This should have no effect on DateInterval formatting + 'timezone1' => new DateTimeZone('America/New_York'), +) +--EXPECT-- +2 days +2 days 0 hours +2 days 0 hours diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_modify.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_modify.test new file mode 100644 index 0000000..53d3a69 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_modify.test @@ -0,0 +1,14 @@ +--TEST-- +"date_modify" filter +--TEMPLATE-- +{{ date1|date_modify('-1day')|date('Y-m-d H:i:s') }} +{{ date2|date_modify('-1day')|date('Y-m-d H:i:s') }} +--DATA-- +date_default_timezone_set('UTC'); +return array( + 'date1' => '2010-10-04 13:45', + 'date2' => new DateTime('2010-10-04 13:45'), +) +--EXPECT-- +2010-10-03 13:45:00 +2010-10-03 13:45:00 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_namedargs.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_namedargs.test new file mode 100644 index 0000000..4ecde8a --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/date_namedargs.test @@ -0,0 +1,13 @@ +--TEST-- +"date" filter +--TEMPLATE-- +{{ date|date(format='d/m/Y H:i:s P', timezone='America/Chicago') }} +{{ date|date(timezone='America/Chicago', format='d/m/Y H:i:s P') }} +{{ date|date('d/m/Y H:i:s P', timezone='America/Chicago') }} +--DATA-- +date_default_timezone_set('UTC'); +return array('date' => mktime(13, 45, 0, 10, 4, 2010)) +--EXPECT-- +04/10/2010 08:45:00 -05:00 +04/10/2010 08:45:00 -05:00 +04/10/2010 08:45:00 -05:00 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/default.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/default.test new file mode 100644 index 0000000..b8d1d66 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/default.test @@ -0,0 +1,150 @@ +--TEST-- +"default" filter +--TEMPLATE-- +Variable: +{{ definedVar |default('default') is same as('default') ? 'ko' : 'ok' }} +{{ zeroVar |default('default') is same as('default') ? 'ko' : 'ok' }} +{{ emptyVar |default('default') is same as('default') ? 'ok' : 'ko' }} +{{ nullVar |default('default') is same as('default') ? 'ok' : 'ko' }} +{{ undefinedVar |default('default') is same as('default') ? 'ok' : 'ko' }} +Array access: +{{ nested.definedVar |default('default') is same as('default') ? 'ko' : 'ok' }} +{{ nested['definedVar'] |default('default') is same as('default') ? 'ko' : 'ok' }} +{{ nested.zeroVar |default('default') is same as('default') ? 'ko' : 'ok' }} +{{ nested.emptyVar |default('default') is same as('default') ? 'ok' : 'ko' }} +{{ nested.nullVar |default('default') is same as('default') ? 'ok' : 'ko' }} +{{ nested.undefinedVar |default('default') is same as('default') ? 'ok' : 'ko' }} +{{ nested['undefinedVar'] |default('default') is same as('default') ? 'ok' : 'ko' }} +{{ undefinedVar.foo |default('default') is same as('default') ? 'ok' : 'ko' }} +Plain values: +{{ 'defined' |default('default') is same as('default') ? 'ko' : 'ok' }} +{{ 0 |default('default') is same as('default') ? 'ko' : 'ok' }} +{{ '' |default('default') is same as('default') ? 'ok' : 'ko' }} +{{ null |default('default') is same as('default') ? 'ok' : 'ko' }} +Precedence: +{{ 'o' ~ nullVar |default('k') }} +{{ 'o' ~ nested.nullVar |default('k') }} +Object methods: +{{ object.foo |default('default') is same as('default') ? 'ko' : 'ok' }} +{{ object.undefinedMethod |default('default') is same as('default') ? 'ok' : 'ko' }} +{{ object.getFoo() |default('default') is same as('default') ? 'ko' : 'ok' }} +{{ object.getFoo('a') |default('default') is same as('default') ? 'ko' : 'ok' }} +{{ object.undefinedMethod() |default('default') is same as('default') ? 'ok' : 'ko' }} +{{ object.undefinedMethod('a') |default('default') is same as('default') ? 'ok' : 'ko' }} +Deep nested: +{{ nested.undefinedVar.foo.bar |default('default') is same as('default') ? 'ok' : 'ko' }} +{{ nested.definedArray.0 |default('default') is same as('default') ? 'ko' : 'ok' }} +{{ nested['definedArray'][0] |default('default') is same as('default') ? 'ko' : 'ok' }} +{{ object.self.foo |default('default') is same as('default') ? 'ko' : 'ok' }} +{{ object.self.undefinedMethod |default('default') is same as('default') ? 'ok' : 'ko' }} +{{ object.undefinedMethod.self |default('default') is same as('default') ? 'ok' : 'ko' }} +--DATA-- +return array( + 'definedVar' => 'defined', + 'zeroVar' => 0, + 'emptyVar' => '', + 'nullVar' => null, + 'nested' => array( + 'definedVar' => 'defined', + 'zeroVar' => 0, + 'emptyVar' => '', + 'nullVar' => null, + 'definedArray' => array(0), + ), + 'object' => new TwigTestFoo(), +) +--CONFIG-- +return array('strict_variables' => false) +--EXPECT-- +Variable: +ok +ok +ok +ok +ok +Array access: +ok +ok +ok +ok +ok +ok +ok +ok +Plain values: +ok +ok +ok +ok +Precedence: +ok +ok +Object methods: +ok +ok +ok +ok +ok +ok +Deep nested: +ok +ok +ok +ok +ok +ok +--DATA-- +return array( + 'definedVar' => 'defined', + 'zeroVar' => 0, + 'emptyVar' => '', + 'nullVar' => null, + 'nested' => array( + 'definedVar' => 'defined', + 'zeroVar' => 0, + 'emptyVar' => '', + 'nullVar' => null, + 'definedArray' => array(0), + ), + 'object' => new TwigTestFoo(), +) +--CONFIG-- +return array('strict_variables' => true) +--EXPECT-- +Variable: +ok +ok +ok +ok +ok +Array access: +ok +ok +ok +ok +ok +ok +ok +ok +Plain values: +ok +ok +ok +ok +Precedence: +ok +ok +Object methods: +ok +ok +ok +ok +ok +ok +Deep nested: +ok +ok +ok +ok +ok +ok diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/dynamic_filter.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/dynamic_filter.test new file mode 100644 index 0000000..93c5913 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/dynamic_filter.test @@ -0,0 +1,10 @@ +--TEST-- +dynamic filter +--TEMPLATE-- +{{ 'bar'|foo_path }} +{{ 'bar'|a_foo_b_bar }} +--DATA-- +return array() +--EXPECT-- +foo/bar +a/b/bar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape.test new file mode 100644 index 0000000..a606c10 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape.test @@ -0,0 +1,8 @@ +--TEST-- +"escape" filter +--TEMPLATE-- +{{ "foo
    "|e }} +--DATA-- +return array() +--EXPECT-- +foo <br /> diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_html_attr.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_html_attr.test new file mode 100644 index 0000000..009a245 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_html_attr.test @@ -0,0 +1,8 @@ +--TEST-- +"escape" filter does not escape with the html strategy when using the html_attr strategy +--TEMPLATE-- +{{ '
    '|escape('html_attr') }} +--DATA-- +return array() +--EXPECT-- +<br /> diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_javascript.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_javascript.test new file mode 100644 index 0000000..647147a --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_javascript.test @@ -0,0 +1,8 @@ +--TEST-- +"escape" filter +--TEMPLATE-- +{{ "é ♜ ðŒ†"|e('js') }} +--DATA-- +return array() +--EXPECT-- +\u00E9\x20\u265C\x20\uD834\uDF06 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_non_supported_charset.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_non_supported_charset.test new file mode 100644 index 0000000..bba26a0 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/escape_non_supported_charset.test @@ -0,0 +1,8 @@ +--TEST-- +"escape" filter +--TEMPLATE-- +{{ "æ„›ã—ã¦ã„ã¾ã™ã‹ï¼Ÿ
    "|e }} +--DATA-- +return array() +--EXPECT-- +æ„›ã—ã¦ã„ã¾ã™ã‹ï¼Ÿ <br /> diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/first.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/first.test new file mode 100644 index 0000000..aa54645 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/first.test @@ -0,0 +1,17 @@ +--TEST-- +"first" filter +--TEMPLATE-- +{{ [1, 2, 3, 4]|first }} +{{ {a: 1, b: 2, c: 3, d: 4}|first }} +{{ '1234'|first }} +{{ arr|first }} +{{ 'Ä€é'|first }} +{{ ''|first }} +--DATA-- +return array('arr' => new ArrayObject(array(1, 2, 3, 4))) +--EXPECT-- +1 +1 +1 +1 +Ä diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/force_escape.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/force_escape.test new file mode 100644 index 0000000..85a9b71 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/force_escape.test @@ -0,0 +1,18 @@ +--TEST-- +"escape" filter +--TEMPLATE-- +{% set foo %} + foo
    +{% endset %} + +{{ foo|e('html') -}} +{{ foo|e('js') }} +{% autoescape true %} + {{ foo }} +{% endautoescape %} +--DATA-- +return array() +--EXPECT-- + foo<br /> +\x20\x20\x20\x20foo\x3Cbr\x20\x2F\x3E\x0A + foo
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/format.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/format.test new file mode 100644 index 0000000..97221ff --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/format.test @@ -0,0 +1,8 @@ +--TEST-- +"format" filter +--TEMPLATE-- +{{ string|format(foo, 3) }} +--DATA-- +return array('string' => '%s/%d', 'foo' => 'bar') +--EXPECT-- +bar/3 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/join.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/join.test new file mode 100644 index 0000000..b342c17 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/join.test @@ -0,0 +1,12 @@ +--TEST-- +"join" filter +--TEMPLATE-- +{{ ["foo", "bar"]|join(', ') }} +{{ foo|join(', ') }} +{{ bar|join(', ') }} +--DATA-- +return array('foo' => new TwigTestFoo(), 'bar' => new ArrayObject(array(3, 4))) +--EXPECT-- +foo, bar +1, 2 +3, 4 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/json_encode.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/json_encode.test new file mode 100644 index 0000000..1738d40 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/json_encode.test @@ -0,0 +1,12 @@ +--TEST-- +"json_encode" filter +--TEMPLATE-- +{{ "foo"|json_encode|raw }} +{{ foo|json_encode|raw }} +{{ [foo, "foo"]|json_encode|raw }} +--DATA-- +return array('foo' => new Twig_Markup('foo', 'UTF-8')) +--EXPECT-- +"foo" +"foo" +["foo","foo"] diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/last.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/last.test new file mode 100644 index 0000000..1b8031e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/last.test @@ -0,0 +1,17 @@ +--TEST-- +"last" filter +--TEMPLATE-- +{{ [1, 2, 3, 4]|last }} +{{ {a: 1, b: 2, c: 3, d: 4}|last }} +{{ '1234'|last }} +{{ arr|last }} +{{ 'Ä€é'|last }} +{{ ''|last }} +--DATA-- +return array('arr' => new ArrayObject(array(1, 2, 3, 4))) +--EXPECT-- +4 +4 +4 +4 +é diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/length.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/length.test new file mode 100644 index 0000000..599c3fd --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/length.test @@ -0,0 +1,25 @@ +--TEST-- +"length" filter +--TEMPLATE-- +{{ array|length }} +{{ string|length }} +{{ number|length }} +{{ to_string_able|length }} +{{ countable|length }} +{{ magic|length }} +--DATA-- +return array( + 'array' => array(1, 4), + 'string' => 'foo', + 'number' => 1000, + 'to_string_able' => new ToStringStub('foobar'), + 'countable' => new CountableStub(42), /* also asserts we do *not* call __toString() */ + 'magic' => new MagicCallStub(), /* used to assert we do *not* call __call */ +); +--EXPECT-- +2 +3 +4 +6 +42 +1 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/length_utf8.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/length_utf8.test new file mode 100644 index 0000000..5d5e243 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/length_utf8.test @@ -0,0 +1,12 @@ +--TEST-- +"length" filter +--CONDITION-- +function_exists('mb_get_info') +--TEMPLATE-- +{{ string|length }} +{{ markup|length }} +--DATA-- +return array('string' => 'été', 'markup' => new Twig_Markup('foo', 'UTF-8')) +--EXPECT-- +3 +3 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/merge.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/merge.test new file mode 100644 index 0000000..81371a4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/merge.test @@ -0,0 +1,18 @@ +--TEST-- +"merge" filter +--TEMPLATE-- +{{ items|merge({'bar': 'foo'})|join }} +{{ items|merge({'bar': 'foo'})|keys|join }} +{{ {'bar': 'foo'}|merge(items)|join }} +{{ {'bar': 'foo'}|merge(items)|keys|join }} +{{ numerics|merge([4, 5, 6])|join }} +{{ traversable.a|merge(traversable.b)|join }} +--DATA-- +return array('items' => array('foo' => 'bar'), 'numerics' => array(1, 2, 3), 'traversable' => array('a' => new ArrayObject(array(0 => 1, 1 => 2, 2 => 3)), 'b' => new ArrayObject(array('a' => 'b')))) +--EXPECT-- +barfoo +foobar +foobar +barfoo +123456 +123b diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/nl2br.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/nl2br.test new file mode 100644 index 0000000..6545a9b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/nl2br.test @@ -0,0 +1,14 @@ +--TEST-- +"nl2br" filter +--TEMPLATE-- +{{ "I like Twig.\nYou will like it too.\n\nEverybody like it!"|nl2br }} +{{ text|nl2br }} +--DATA-- +return array('text' => "If you have some HTML\nit will be escaped.") +--EXPECT-- +I like Twig.
    +You will like it too.
    +
    +Everybody like it! +If you have some <strong>HTML</strong>
    +it will be escaped. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/number_format.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/number_format.test new file mode 100644 index 0000000..639a865 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/number_format.test @@ -0,0 +1,18 @@ +--TEST-- +"number_format" filter +--TEMPLATE-- +{{ 20|number_format }} +{{ 20.25|number_format }} +{{ 20.25|number_format(2) }} +{{ 20.25|number_format(2, ',') }} +{{ 1020.25|number_format(2, ',') }} +{{ 1020.25|number_format(2, ',', '.') }} +--DATA-- +return array(); +--EXPECT-- +20 +20 +20.25 +20,25 +1,020,25 +1.020,25 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/number_format_default.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/number_format_default.test new file mode 100644 index 0000000..65c1cdb --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/number_format_default.test @@ -0,0 +1,21 @@ +--TEST-- +"number_format" filter with defaults. +--TEMPLATE-- +{{ 20|number_format }} +{{ 20.25|number_format }} +{{ 20.25|number_format(1) }} +{{ 20.25|number_format(2, ',') }} +{{ 1020.25|number_format }} +{{ 1020.25|number_format(2, ',') }} +{{ 1020.25|number_format(2, ',', '.') }} +--DATA-- +$twig->getExtension('Twig_Extension_Core')->setNumberFormat(2, '!', '='); +return array(); +--EXPECT-- +20!00 +20!25 +20!3 +20,25 +1=020!25 +1=020,25 +1.020,25 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/replace.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/replace.test new file mode 100644 index 0000000..06be7e2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/replace.test @@ -0,0 +1,12 @@ +--TEST-- +"replace" filter +--TEMPLATE-- +{{ "I liké %this% and %that%."|replace({'%this%': "foo", '%that%': "bar"}) }} +{{ 'I like single replace operation only %that%'|replace({'%that%' : '%that%1'}) }} +{{ 'I like %this% and %that%.'|replace(traversable) }} +--DATA-- +return array('traversable' => new ArrayObject(array('%this%' => 'foo', '%that%' => 'bar'))) +--EXPECT-- +I liké foo and bar. +I like single replace operation only %that%1 +I like foo and bar. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/replace_invalid_arg.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/replace_invalid_arg.test new file mode 100644 index 0000000..2143a86 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/replace_invalid_arg.test @@ -0,0 +1,8 @@ +--TEST-- +Exception for invalid argument type in replace call +--TEMPLATE-- +{{ 'test %foo%'|replace(stdClass) }} +--DATA-- +return array('stdClass' => new stdClass()) +--EXCEPTION-- +Twig_Error_Runtime: The "replace" filter expects an array or "Traversable" as replace values, got "stdClass" in "index.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/reverse.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/reverse.test new file mode 100644 index 0000000..7948ac4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/reverse.test @@ -0,0 +1,18 @@ +--TEST-- +"reverse" filter +--TEMPLATE-- +{{ [1, 2, 3, 4]|reverse|join('') }} +{{ '1234évènement'|reverse }} +{{ arr|reverse|join('') }} +{{ {'a': 'c', 'b': 'a'}|reverse()|join(',') }} +{{ {'a': 'c', 'b': 'a'}|reverse(preserveKeys=true)|join(glue=',') }} +{{ {'a': 'c', 'b': 'a'}|reverse(preserve_keys=true)|join(glue=',') }} +--DATA-- +return array('arr' => new ArrayObject(array(1, 2, 3, 4))) +--EXPECT-- +4321 +tnemenèvé4321 +4321 +a,c +a,c +a,c diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/round.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/round.test new file mode 100644 index 0000000..57806b6 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/round.test @@ -0,0 +1,22 @@ +--TEST-- +"round" filter +--TEMPLATE-- +{{ 2.7|round }} +{{ 2.1|round }} +{{ 2.1234|round(3, 'floor') }} +{{ 2.1|round(0, 'ceil') }} + +{{ 21.3|round(-1)}} +{{ 21.3|round(-1, 'ceil')}} +{{ 21.3|round(-1, 'floor')}} +--DATA-- +return array() +--EXPECT-- +3 +2 +2.123 +3 + +20 +30 +20 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/slice.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/slice.test new file mode 100644 index 0000000..b49b89f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/slice.test @@ -0,0 +1,54 @@ +--TEST-- +"slice" filter +--TEMPLATE-- +{{ [1, 2, 3, 4][1:2]|join('') }} +{{ {a: 1, b: 2, c: 3, d: 4}[1:2]|join('') }} +{{ [1, 2, 3, 4][start:length]|join('') }} +{{ [1, 2, 3, 4]|slice(1, 2)|join('') }} +{{ [1, 2, 3, 4]|slice(1, 2)|keys|join('') }} +{{ [1, 2, 3, 4]|slice(1, 2, true)|keys|join('') }} +{{ {a: 1, b: 2, c: 3, d: 4}|slice(1, 2)|join('') }} +{{ {a: 1, b: 2, c: 3, d: 4}|slice(1, 2)|keys|join('') }} +{{ '1234'|slice(1, 2) }} +{{ '1234'[1:2] }} +{{ arr|slice(1, 2)|join('') }} +{{ arr[1:2]|join('') }} +{{ arr[4:1]|join('') }} +{{ arr[3:2]|join('') }} + +{{ [1, 2, 3, 4]|slice(1)|join('') }} +{{ [1, 2, 3, 4][1:]|join('') }} +{{ '1234'|slice(1) }} +{{ '1234'[1:] }} +{{ '1234'[:1] }} + +{{ arr|slice(3)|join('') }} +{{ arr[2:]|join('') }} +{{ xml|slice(1)|join('')}} +--DATA-- +return array('start' => 1, 'length' => 2, 'arr' => new ArrayObject(array(1, 2, 3, 4)), 'xml' => new SimpleXMLElement('12')) +--EXPECT-- +23 +23 +23 +23 +01 +12 +23 +bc +23 +23 +23 +23 + +4 + +234 +234 +234 +234 +1 + +4 +34 +2 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/sort.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/sort.test new file mode 100644 index 0000000..c67c18e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/sort.test @@ -0,0 +1,12 @@ +--TEST-- +"sort" filter +--TEMPLATE-- +{{ array1|sort|join }} +{{ array2|sort|join }} +{{ traversable|sort|join }} +--DATA-- +return array('array1' => array(4, 1), 'array2' => array('foo', 'bar'), 'traversable' => new ArrayObject(array(0 => 3, 1 => 2, 2 => 1))) +--EXPECT-- +14 +barfoo +123 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/special_chars.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/special_chars.test new file mode 100644 index 0000000..dbaf7dc --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/special_chars.test @@ -0,0 +1,8 @@ +--TEST-- +"§" custom filter +--TEMPLATE-- +{{ 'foo'|§ }} +--DATA-- +return array() +--EXPECT-- +§foo§ diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/split.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/split.test new file mode 100644 index 0000000..a093ed7 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/split.test @@ -0,0 +1,20 @@ +--TEST-- +"split" filter +--TEMPLATE-- +{{ "one,two,three,four,five"|split(',')|join('-') }} +{{ foo|split(',')|join('-') }} +{{ foo|split(',', 3)|join('-') }} +{{ baz|split('')|join('-') }} +{{ baz|split('', 1)|join('-') }} +{{ baz|split('', 2)|join('-') }} +{{ foo|split(',', -2)|join('-') }} +--DATA-- +return array('foo' => "one,two,three,four,five", 'baz' => '12345',) +--EXPECT-- +one-two-three-four-five +one-two-three-four-five +one-two-three,four,five +1-2-3-4-5 +1-2-3-4-5 +12-34-5 +one-two-three \ No newline at end of file diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/split_utf8.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/split_utf8.test new file mode 100644 index 0000000..305e162 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/split_utf8.test @@ -0,0 +1,24 @@ +--TEST-- +"split" filter +--CONDITION-- +function_exists('mb_get_info') +--TEMPLATE-- +{{ "é"|split('', 10)|join('-') }} +{{ foo|split(',')|join('-') }} +{{ foo|split(',', 1)|join('-') }} +{{ foo|split(',', 2)|join('-') }} +{{ foo|split(',', 3)|join('-') }} +{{ baz|split('')|join('-') }} +{{ baz|split('', 1)|join('-') }} +{{ baz|split('', 2)|join('-') }} +--DATA-- +return array('foo' => 'Ä,é,Äã»', 'baz' => 'éÄßã”a',) +--EXPECT-- +é +Ä-é-Ä㻠+Ä,é,Ä㻠+Ä-é,Ä㻠+Ä-é-Ä㻠+é-Ä-ß-ã”-a +é-Ä-ß-ã”-a +éÄ-ßã”-a \ No newline at end of file diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/static_calls.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/static_calls.test new file mode 100644 index 0000000..4e17b77 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/static_calls.test @@ -0,0 +1,10 @@ +--TEST-- +Filters as static method calls +--TEMPLATE-- +{{ 'foo'|static_call_string }} +{{ 'foo'|static_call_array }} +--DATA-- +return array('foo' => 'foo') +--EXPECT-- +*foo* +*foo* diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/trim.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/trim.test new file mode 100644 index 0000000..b1ef7b4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/trim.test @@ -0,0 +1,24 @@ +--TEST-- +"trim" filter +--TEMPLATE-- +{{ " I like Twig. "|trim }} +{{ text|trim }} +{{ " foo/"|trim("/") }} +{{ "xxxI like Twig.xxx"|trim(character_mask="x", side="left") }} +{{ "xxxI like Twig.xxx"|trim(side="right", character_mask="x") }} +{{ "xxxI like Twig.xxx"|trim("x", "right") }} +{{ "/ foo/"|trim("/", "left") }} +{{ "/ foo/"|trim(character_mask="/", side="left") }} +{{ " do nothing. "|trim("", "right") }} +--DATA-- +return array('text' => " If you have some HTML it will be escaped. ") +--EXPECT-- +I like Twig. +If you have some <strong>HTML</strong> it will be escaped. + foo +I like Twig.xxx +xxxI like Twig. +xxxI like Twig. + foo/ + foo/ + do nothing. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/urlencode.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/urlencode.test new file mode 100644 index 0000000..8726159 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/urlencode.test @@ -0,0 +1,16 @@ +--TEST-- +"url_encode" filter +--CONDITION-- +defined('PHP_QUERY_RFC3986') +--TEMPLATE-- +{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode }} +{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode|raw }} +{{ {}|url_encode|default("default") }} +{{ 'spéßi%le%c0d@dspa ce'|url_encode }} +--DATA-- +return array() +--EXPECT-- +foo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa%20ce= +foo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa%20ce= +default +sp%C3%A9%C3%9Fi%25le%25c0d%40dspa%20ce diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/urlencode_deprecated.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/urlencode_deprecated.test new file mode 100644 index 0000000..11800e9 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/filters/urlencode_deprecated.test @@ -0,0 +1,16 @@ +--TEST-- +"url_encode" filter for PHP < 5.4 and HHVM +--CONDITION-- +defined('PHP_QUERY_RFC3986') +--TEMPLATE-- +{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode }} +{{ {foo: "bar", number: 3, "spéßi%l": "e%c0d@d", "spa ce": ""}|url_encode|raw }} +{{ {}|url_encode|default("default") }} +{{ 'spéßi%le%c0d@dspa ce'|url_encode }} +--DATA-- +return array() +--EXPECT-- +foo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa%20ce= +foo=bar&number=3&sp%C3%A9%C3%9Fi%25l=e%25c0d%40d&spa%20ce= +default +sp%C3%A9%C3%9Fi%25le%25c0d%40dspa%20ce diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/attribute.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/attribute.test new file mode 100644 index 0000000..71b2038 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/attribute.test @@ -0,0 +1,18 @@ +--TEST-- +"attribute" function +--TEMPLATE-- +{{ attribute(obj, method) }} +{{ attribute(array, item) }} +{{ attribute(obj, "bar", ["a", "b"]) }} +{{ attribute(obj, "bar", arguments) }} +{{ attribute(obj, method) is defined ? 'ok' : 'ko' }} +{{ attribute(obj, nonmethod) is defined ? 'ok' : 'ko' }} +--DATA-- +return array('obj' => new TwigTestFoo(), 'method' => 'foo', 'array' => array('foo' => 'bar'), 'item' => 'foo', 'nonmethod' => 'xxx', 'arguments' => array('a', 'b')) +--EXPECT-- +foo +bar +bar_a-b +bar_a-b +ok +ko diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/block.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/block.test new file mode 100644 index 0000000..8e54059 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/block.test @@ -0,0 +1,12 @@ +--TEST-- +"block" function +--TEMPLATE-- +{% extends 'base.twig' %} +{% block bar %}BAR{% endblock %} +--TEMPLATE(base.twig)-- +{% block foo %}{{ block('bar') }}{% endblock %} +{% block bar %}BAR_BASE{% endblock %} +--DATA-- +return array() +--EXPECT-- +BARBAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/block_with_template.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/block_with_template.test new file mode 100644 index 0000000..8305eb6 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/block_with_template.test @@ -0,0 +1,22 @@ +--TEST-- +"block" function with a template argument +--TEMPLATE-- +{{ block('foo', 'included.twig') }} +{{ block('foo', included_loaded) }} +{{ block('foo', included_loaded_internal) }} +{% set output = block('foo', 'included.twig') %} +{{ output }} +{% block foo %}NOT FOO{% endblock %} +--TEMPLATE(included.twig)-- +{% block foo %}FOO{% endblock %} +--DATA-- +return array( + 'included_loaded' => $twig->load('included.twig'), + 'included_loaded_internal' => $twig->loadTemplate('included.twig'), +) +--EXPECT-- +FOO +FOO +FOO +FOO +NOT FOO diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/block_without_name.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/block_without_name.test new file mode 100644 index 0000000..665cc87 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/block_without_name.test @@ -0,0 +1,12 @@ +--TEST-- +"block" function without arguments +--TEMPLATE-- +{% extends 'base.twig' %} +{% block bar %}BAR{% endblock %} +--TEMPLATE(base.twig)-- +{% block foo %}{{ block() }}{% endblock %} +{% block bar %}BAR_BASE{% endblock %} +--DATA-- +return array() +--EXCEPTION-- +Twig_Error_Syntax: The "block" function takes one argument (the block name) in "base.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/constant.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/constant.test new file mode 100644 index 0000000..6312879 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/constant.test @@ -0,0 +1,10 @@ +--TEST-- +"constant" function +--TEMPLATE-- +{{ constant('DATE_W3C') == expect ? 'true' : 'false' }} +{{ constant('ARRAY_AS_PROPS', object) }} +--DATA-- +return array('expect' => DATE_W3C, 'object' => new ArrayObject(array('hi'))); +--EXPECT-- +true +2 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/cycle.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/cycle.test new file mode 100644 index 0000000..522a63b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/cycle.test @@ -0,0 +1,16 @@ +--TEST-- +"cycle" function +--TEMPLATE-- +{% for i in 0..6 %} +{{ cycle(array1, i) }}-{{ cycle(array2, i) }} +{% endfor %} +--DATA-- +return array('array1' => array('odd', 'even'), 'array2' => array('apple', 'orange', 'citrus')) +--EXPECT-- +odd-apple +even-orange +odd-citrus +even-apple +odd-orange +even-citrus +odd-apple diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/date.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/date.test new file mode 100644 index 0000000..a9ffe40 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/date.test @@ -0,0 +1,25 @@ +--TEST-- +"date" function +--TEMPLATE-- +{{ date().format('r') == date('now').format('r') ? 'OK' : 'KO' }} +{{ date(date1) == date('2010-10-04 13:45') ? 'OK' : 'KO' }} +{{ date(date2) == date('2010-10-04 13:45') ? 'OK' : 'KO' }} +{{ date(date3) == date('2010-10-04 13:45') ? 'OK' : 'KO' }} +{{ date(date4) == date('2010-10-04 13:45') ? 'OK' : 'KO' }} +{{ date(date5) == date('1964-01-02 03:04') ? 'OK' : 'KO' }} +--DATA-- +date_default_timezone_set('UTC'); +return array( + 'date1' => mktime(13, 45, 0, 10, 4, 2010), + 'date2' => new DateTime('2010-10-04 13:45'), + 'date3' => '2010-10-04 13:45', + 'date4' => 1286199900, // DateTime::createFromFormat('Y-m-d H:i', '2010-10-04 13:45', new DateTimeZone('UTC'))->getTimestamp() -- A unixtimestamp is always GMT + 'date5' => -189291360, // DateTime::createFromFormat('Y-m-d H:i', '1964-01-02 03:04', new DateTimeZone('UTC'))->getTimestamp(), +) +--EXPECT-- +OK +OK +OK +OK +OK +OK diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/date_namedargs.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/date_namedargs.test new file mode 100644 index 0000000..b9dd9e3 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/date_namedargs.test @@ -0,0 +1,11 @@ +--TEST-- +"date" function +--TEMPLATE-- +{{ date(date, "America/New_York")|date('d/m/Y H:i:s P', false) }} +{{ date(timezone="America/New_York", date=date)|date('d/m/Y H:i:s P', false) }} +--DATA-- +date_default_timezone_set('UTC'); +return array('date' => mktime(13, 45, 0, 10, 4, 2010)) +--EXPECT-- +04/10/2010 09:45:00 -04:00 +04/10/2010 09:45:00 -04:00 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/dump.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/dump.test new file mode 100644 index 0000000..f407237 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/dump.test @@ -0,0 +1,16 @@ +--TEST-- +"dump" function +--CONDITION-- +!extension_loaded('xdebug') +--TEMPLATE-- +{{ dump('foo') }} +{{ dump('foo', 'bar') }} +--DATA-- +return array('foo' => 'foo', 'bar' => 'bar') +--CONFIG-- +return array('debug' => true, 'autoescape' => false); +--EXPECT-- +string(3) "foo" + +string(3) "foo" +string(3) "bar" diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/dump_array.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/dump_array.test new file mode 100644 index 0000000..889b7a9 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/dump_array.test @@ -0,0 +1,19 @@ +--TEST-- +"dump" function, xdebug is not loaded or xdebug <2.2-dev is loaded +--CONDITION-- +!extension_loaded('xdebug') || (($r = new ReflectionExtension('xdebug')) && version_compare($r->getVersion(), '2.2-dev', '<')) +--TEMPLATE-- +{{ dump() }} +--DATA-- +return array('foo' => 'foo', 'bar' => 'bar') +--CONFIG-- +return array('debug' => true, 'autoescape' => false); +--EXPECT-- +array(3) { + ["foo"]=> + string(3) "foo" + ["bar"]=> + string(3) "bar" + ["global"]=> + string(6) "global" +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/dynamic_function.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/dynamic_function.test new file mode 100644 index 0000000..913fbc9 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/dynamic_function.test @@ -0,0 +1,10 @@ +--TEST-- +dynamic function +--TEMPLATE-- +{{ foo_path('bar') }} +{{ a_foo_b_bar('bar') }} +--DATA-- +return array() +--EXPECT-- +foo/bar +a/b/bar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/assignment.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/assignment.test new file mode 100644 index 0000000..b7653b4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/assignment.test @@ -0,0 +1,13 @@ +--TEST-- +"include" function +--TEMPLATE-- +{% set tmp = include("foo.twig") %} + +FOO{{ tmp }}BAR +--TEMPLATE(foo.twig)-- +FOOBAR +--DATA-- +return array() +--EXPECT-- +FOO +FOOBARBAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/autoescaping.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/autoescaping.test new file mode 100644 index 0000000..56f8f3b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/autoescaping.test @@ -0,0 +1,10 @@ +--TEST-- +"include" function is safe for auto-escaping +--TEMPLATE-- +{{ include("foo.twig") }} +--TEMPLATE(foo.twig)-- +

    Test

    +--DATA-- +return array() +--EXPECT-- +

    Test

    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/basic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/basic.test new file mode 100644 index 0000000..a434182 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/basic.test @@ -0,0 +1,17 @@ +--TEST-- +"include" function +--TEMPLATE-- +FOO +{{ include("foo.twig") }} + +BAR +--TEMPLATE(foo.twig)-- +FOOBAR +--DATA-- +return array() +--EXPECT-- +FOO + +FOOBAR + +BAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/expression.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/expression.test new file mode 100644 index 0000000..aba30ce --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/expression.test @@ -0,0 +1,17 @@ +--TEST-- +"include" function allows expressions for the template to include +--TEMPLATE-- +FOO +{{ include(foo) }} + +BAR +--TEMPLATE(foo.twig)-- +FOOBAR +--DATA-- +return array('foo' => 'foo.twig') +--EXPECT-- +FOO + +FOOBAR + +BAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/ignore_missing.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/ignore_missing.test new file mode 100644 index 0000000..43a2ccc --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/ignore_missing.test @@ -0,0 +1,10 @@ +--TEST-- +"include" function +--TEMPLATE-- +{{ include(["foo.twig", "bar.twig"], ignore_missing = true) }} +{{ include("foo.twig", ignore_missing = true) }} +{{ include("foo.twig", ignore_missing = true, variables = {}) }} +{{ include("foo.twig", ignore_missing = true, variables = {}, with_context = true) }} +--DATA-- +return array() +--EXPECT-- diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/missing.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/missing.test new file mode 100644 index 0000000..4d2f6cf --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/missing.test @@ -0,0 +1,8 @@ +--TEST-- +"include" function +--TEMPLATE-- +{{ include("foo.twig") }} +--DATA-- +return array(); +--EXCEPTION-- +Twig_Error_Loader: Template "foo.twig" is not defined in "index.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/missing_nested.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/missing_nested.test new file mode 100644 index 0000000..78fddc7 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/missing_nested.test @@ -0,0 +1,16 @@ +--TEST-- +"include" function +--TEMPLATE-- +{% extends "base.twig" %} + +{% block content %} + {{ parent() }} +{% endblock %} +--TEMPLATE(base.twig)-- +{% block content %} + {{ include("foo.twig") }} +{% endblock %} +--DATA-- +return array(); +--EXCEPTION-- +Twig_Error_Loader: Template "foo.twig" is not defined in "base.twig" at line 3. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox.test new file mode 100644 index 0000000..7b9ccac --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox.test @@ -0,0 +1,13 @@ +--TEST-- +"include" tag sandboxed +--TEMPLATE-- +{{ include("foo.twig", sandboxed = true) }} +--TEMPLATE(foo.twig)-- + + +{{ foo|e }} +{{ foo|e }} +--DATA-- +return array() +--EXCEPTION-- +Twig_Sandbox_SecurityNotAllowedFilterError: Filter "e" is not allowed in "foo.twig" at line 4. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling.test new file mode 100644 index 0000000..8ffc492 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling.test @@ -0,0 +1,16 @@ +--TEST-- +"include" tag sandboxed +--TEMPLATE-- +{{ include("foo.twig", sandboxed = true) }} +{{ include("bar.twig") }} +--TEMPLATE(foo.twig)-- +foo +--TEMPLATE(bar.twig)-- +{{ foo|e }} +--DATA-- +return array('foo' => 'bar
    ') +--EXPECT-- +foo + + +bar<br /> diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test new file mode 100644 index 0000000..8bf6e10 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/sandbox_disabling_ignore_missing.test @@ -0,0 +1,13 @@ +--TEST-- +"include" tag sandboxed +--TEMPLATE-- +{{ include("unknown.twig", sandboxed = true, ignore_missing = true) }} +{{ include("bar.twig") }} +--TEMPLATE(bar.twig)-- +{{ foo|e }} +--DATA-- +return array('foo' => 'bar
    ') +--EXPECT-- + + +bar<br /> diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/template_instance.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/template_instance.test new file mode 100644 index 0000000..18d405a --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/template_instance.test @@ -0,0 +1,10 @@ +--TEST-- +"include" function accepts Twig_Template instance +--TEMPLATE-- +{{ include(foo) }} FOO +--TEMPLATE(foo.twig)-- +BAR +--DATA-- +return array('foo' => $twig->loadTemplate('foo.twig')) +--EXPECT-- +BAR FOO diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/templates_as_array.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/templates_as_array.test new file mode 100644 index 0000000..1a81006 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/templates_as_array.test @@ -0,0 +1,12 @@ +--TEST-- +"include" function +--TEMPLATE-- +{{ include(["foo.twig", "bar.twig"]) }} +{{- include(["bar.twig", "foo.twig"]) }} +--TEMPLATE(foo.twig)-- +foo +--DATA-- +return array() +--EXPECT-- +foo +foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/with_context.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/with_context.test new file mode 100644 index 0000000..35611fb --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/with_context.test @@ -0,0 +1,16 @@ +--TEST-- +"include" function accept variables and with_context +--TEMPLATE-- +{{ include("foo.twig") }} +{{- include("foo.twig", with_context = false) }} +{{- include("foo.twig", {'foo1': 'bar'}) }} +{{- include("foo.twig", {'foo1': 'bar'}, with_context = false) }} +--TEMPLATE(foo.twig)-- +{% for k, v in _context %}{{ k }},{% endfor %} +--DATA-- +return array('foo' => 'bar') +--EXPECT-- +foo,global,_parent, +global,_parent, +foo,global,foo1,_parent, +foo1,global,_parent, diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/with_variables.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/with_variables.test new file mode 100644 index 0000000..b2ace94 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/include/with_variables.test @@ -0,0 +1,12 @@ +--TEST-- +"include" function accept variables +--TEMPLATE-- +{{ include("foo.twig", {'foo': 'bar'}) }} +{{- include("foo.twig", vars) }} +--TEMPLATE(foo.twig)-- +{{ foo }} +--DATA-- +return array('vars' => array('foo' => 'bar')) +--EXPECT-- +bar +bar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/magic_call.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/magic_call.test new file mode 100644 index 0000000..9335443 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/magic_call.test @@ -0,0 +1,8 @@ +--TEST-- +__call calls +--TEMPLATE-- +{{ 'foo'|magic_call }} +--DATA-- +return array() +--EXPECT-- +magic_foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/magic_call53.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/magic_call53.test new file mode 100644 index 0000000..a0f55e1 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/magic_call53.test @@ -0,0 +1,12 @@ +--TEST-- +__staticCall calls +--CONDITION-- +version_compare(phpversion(), '5.3.0', '>=') +--TEMPLATE-- +{{ 'foo'|magic_call_string }} +{{ 'foo'|magic_call_array }} +--DATA-- +return array() +--EXPECT-- +static_magic_foo +static_magic_foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/max.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/max.test new file mode 100644 index 0000000..e6c94af --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/max.test @@ -0,0 +1,12 @@ +--TEST-- +"max" function +--TEMPLATE-- +{{ max([2, 1, 3, 5, 4]) }} +{{ max(2, 1, 3, 5, 4) }} +{{ max({2:"two", 1:"one", 3:"three", 5:"five", 4:"for"}) }} +--DATA-- +return array() +--EXPECT-- +5 +5 +two diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/min.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/min.test new file mode 100644 index 0000000..660471c --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/min.test @@ -0,0 +1,12 @@ +--TEST-- +"min" function +--TEMPLATE-- +{{ min(2, 1, 3, 5, 4) }} +{{ min([2, 1, 3, 5, 4]) }} +{{ min({2:"two", 1:"one", 3:"three", 5:"five", 4:"for"}) }} +--DATA-- +return array() +--EXPECT-- +1 +1 +five diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/range.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/range.test new file mode 100644 index 0000000..e0377c8 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/range.test @@ -0,0 +1,8 @@ +--TEST-- +"range" function +--TEMPLATE-- +{{ range(low=0+1, high=10+0, step=2)|join(',') }} +--DATA-- +return array() +--EXPECT-- +1,3,5,7,9 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/recursive_block_with_inheritance.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/recursive_block_with_inheritance.test new file mode 100644 index 0000000..bf0556d --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/recursive_block_with_inheritance.test @@ -0,0 +1,21 @@ +--TEST-- +"block" function recursively called in a parent template +--TEMPLATE-- +{% extends "ordered_menu.twig" %} +{% block label %}"{{ parent() }}"{% endblock %} +{% block list %}{% set class = 'b' %}{{ parent() }}{% endblock %} +--TEMPLATE(ordered_menu.twig)-- +{% extends "menu.twig" %} +{% block list %}{% set class = class|default('a') %}
      {{ block('children') }}
    {% endblock %} +--TEMPLATE(menu.twig)-- +{% extends "base.twig" %} +{% block list %}
      {{ block('children') }}
    {% endblock %} +{% block children %}{% set currentItem = item %}{% for item in currentItem %}{{ block('item') }}{% endfor %}{% set item = currentItem %}{% endblock %} +{% block item %}
  • {% if item is not iterable %}{{ block('label') }}{% else %}{{ block('list') }}{% endif %}
  • {% endblock %} +{% block label %}{{ item }}{% endblock %} +--TEMPLATE(base.twig)-- +{{ block('list') }} +--DATA-- +return array('item' => array('1', '2', array('3.1', array('3.2.1', '3.2.2'), '3.4'))) +--EXPECT-- +
    1. "1"
    2. "2"
      1. "3.1"
        1. "3.2.1"
        2. "3.2.2"
      2. "3.4"
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/source.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/source.test new file mode 100644 index 0000000..0e094c3 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/source.test @@ -0,0 +1,17 @@ +--TEST-- +"source" function +--TEMPLATE-- +FOO +{{ source("foo.twig") }} + +BAR +--TEMPLATE(foo.twig)-- +{{ foo }}
    +--DATA-- +return array() +--EXPECT-- +FOO + +{{ foo }}
    + +BAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/special_chars.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/special_chars.test new file mode 100644 index 0000000..30c3df5 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/special_chars.test @@ -0,0 +1,8 @@ +--TEST-- +"§" custom function +--TEMPLATE-- +{{ §('foo') }} +--DATA-- +return array() +--EXPECT-- +§foo§ diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/static_calls.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/static_calls.test new file mode 100644 index 0000000..57e5be3 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/static_calls.test @@ -0,0 +1,10 @@ +--TEST-- +Functions as static method calls +--TEMPLATE-- +{{ static_call_string('foo') }} +{{ static_call_array('foo') }} +--DATA-- +return array('foo' => 'foo') +--EXPECT-- +*foo* +*foo* diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/template_from_string.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/template_from_string.test new file mode 100644 index 0000000..3d3b958 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/functions/template_from_string.test @@ -0,0 +1,15 @@ +--TEST-- +"template_from_string" function +--TEMPLATE-- +{% include template_from_string(template) %} + +{% include template_from_string("Hello {{ name }}") %} +{% include template_from_string('{% extends "parent.twig" %}{% block content %}Hello {{ name }}{% endblock %}') %} +--TEMPLATE(parent.twig)-- +{% block content %}{% endblock %} +--DATA-- +return array('name' => 'Fabien', 'template' => "Hello {{ name }}") +--EXPECT-- +Hello Fabien +Hello Fabien +Hello Fabien diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/default_values.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/default_values.test new file mode 100644 index 0000000..4ccff7b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/default_values.test @@ -0,0 +1,16 @@ +--TEST-- +macro +--TEMPLATE-- +{% from _self import test %} + +{% macro test(a, b = 'bar') -%} +{{ a }}{{ b }} +{%- endmacro %} + +{{ test('foo') }} +{{ test('bar', 'foo') }} +--DATA-- +return array(); +--EXPECT-- +foobar +barfoo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/nested_calls.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/nested_calls.test new file mode 100644 index 0000000..cd25428 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/nested_calls.test @@ -0,0 +1,18 @@ +--TEST-- +macro +--TEMPLATE-- +{% import _self as macros %} + +{% macro foo(data) %} + {{ data }} +{% endmacro %} + +{% macro bar() %} +
    +{% endmacro %} + +{{ macros.foo(macros.bar()) }} +--DATA-- +return array(); +--EXPECT-- +
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/reserved_variables.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/reserved_variables.test new file mode 100644 index 0000000..cbfb921 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/reserved_variables.test @@ -0,0 +1,14 @@ +--TEST-- +macro +--TEMPLATE-- +{% from _self import test %} + +{% macro test(this) -%} + {{ this }} +{%- endmacro %} + +{{ test(this) }} +--DATA-- +return array('this' => 'foo'); +--EXPECT-- +foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/simple.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/simple.test new file mode 100644 index 0000000..6a366cd --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/simple.test @@ -0,0 +1,22 @@ +--TEST-- +macro +--TEMPLATE-- +{% import _self as test %} +{% from _self import test %} + +{% macro test(a, b) -%} + {{ a|default('a') }}
    + {{- b|default('b') }}
    +{%- endmacro %} + +{{ test.test() }} +{{ test() }} +{{ test.test(1, "c") }} +{{ test(1, "c") }} +--DATA-- +return array(); +--EXPECT-- +a
    b
    +a
    b
    +1
    c
    +1
    c
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs.test new file mode 100644 index 0000000..412c90f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs.test @@ -0,0 +1,21 @@ +--TEST-- +macro with arbitrary arguments +--TEMPLATE-- +{% from _self import test1, test2 %} + +{% macro test1(var) %} + {{- var }}: {{ varargs|join(", ") }} +{% endmacro %} + +{% macro test2() %} + {{- varargs|join(", ") }} +{% endmacro %} + +{{ test1("foo", "bar", "foobar") }} +{{ test2("foo", "bar", "foobar") }} +--DATA-- +return array(); +--EXPECT-- +foo: bar, foobar + +foo, bar, foobar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs_argument.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs_argument.test new file mode 100644 index 0000000..800c262 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/varargs_argument.test @@ -0,0 +1,7 @@ +--TEST-- +macro with varargs argument +--TEMPLATE-- +{% macro test(varargs) %} +{% endmacro %} +--EXCEPTION-- +Twig_Error_Syntax: The argument "varargs" in macro "test" cannot be defined because the variable "varargs" is reserved for arbitrary arguments in "index.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/with_filters.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/with_filters.test new file mode 100644 index 0000000..685626f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/macros/with_filters.test @@ -0,0 +1,14 @@ +--TEST-- +macro with a filter +--TEMPLATE-- +{% import _self as test %} + +{% macro test() %} + {% filter escape %}foo
    {% endfilter %} +{% endmacro %} + +{{ test.test() }} +--DATA-- +return array(); +--EXPECT-- +foo<br /> diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/combined_debug_info.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/combined_debug_info.test new file mode 100644 index 0000000..ff977ad --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/combined_debug_info.test @@ -0,0 +1,15 @@ +--TEST-- +Exception with bad line number +--TEMPLATE-- +{% block content %} + {{ foo }} + {{ include("foo") }} +{% endblock %} +index +--TEMPLATE(foo)-- +foo +{{ foo.bar }} +--DATA-- +return array('foo' => 'foo'); +--EXCEPTION-- +Twig_Error_Runtime: Impossible to access an attribute ("bar") on a string variable ("foo") in "foo" at line 3. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/empty_token.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/empty_token.test new file mode 100644 index 0000000..65f6cd2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/empty_token.test @@ -0,0 +1,8 @@ +--TEST-- +Twig outputs 0 nodes correctly +--TEMPLATE-- +{{ foo }}0{{ foo }} +--DATA-- +return array('foo' => 'foo') +--EXPECT-- +foo0foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/issue_1143.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/issue_1143.test new file mode 100644 index 0000000..ff7c8bb --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/issue_1143.test @@ -0,0 +1,23 @@ +--TEST-- +error in twig extension +--TEMPLATE-- +{{ object.region is not null ? object.regionChoices[object.region] }} +--DATA-- +class House +{ + const REGION_S = 1; + const REGION_P = 2; + + public static $regionChoices = array(self::REGION_S => 'house.region.s', self::REGION_P => 'house.region.p'); + + public function getRegionChoices() + { + return self::$regionChoices; + } +} + +$object = new House(); +$object->region = 1; +return array('object' => $object) +--EXPECT-- +house.region.s diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/multi_word_tests.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/multi_word_tests.test new file mode 100644 index 0000000..269a305 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/multi_word_tests.test @@ -0,0 +1,10 @@ +--TEST-- +Twig allows multi-word tests without a custom node class +--TEMPLATE-- +{{ 'foo' is multi word ? 'yes' : 'no' }} +{{ 'foo bar' is multi word ? 'yes' : 'no' }} +--DATA-- +return array() +--EXPECT-- +no +yes diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/simple_xml_element.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/simple_xml_element.test new file mode 100644 index 0000000..60c3c51 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/simple_xml_element.test @@ -0,0 +1,19 @@ +--TEST-- +Twig is able to deal with SimpleXMLElement instances as variables +--CONDITION-- +version_compare(phpversion(), '5.3.0', '>=') +--TEMPLATE-- +Hello '{{ images.image.0.group }}'! +{{ images.image.0.group.attributes.myattr }} +{{ images.children().image.count() }} +{% for image in images %} + - {{ image.group }} +{% endfor %} +--DATA-- +return array('images' => new SimpleXMLElement('foobar')) +--EXPECT-- +Hello 'foo'! +example +2 + - foo + - bar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/strings_like_numbers.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/strings_like_numbers.test new file mode 100644 index 0000000..e18e110 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/regression/strings_like_numbers.test @@ -0,0 +1,8 @@ +--TEST-- +Twig does not confuse strings with integers in getAttribute() +--TEMPLATE-- +{{ hash['2e2'] }} +--DATA-- +return array('hash' => array('2e2' => 'works')) +--EXPECT-- +works diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/basic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/basic.test new file mode 100644 index 0000000..2f6a3e1 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/basic.test @@ -0,0 +1,26 @@ +--TEST-- +"autoescape" tag applies escaping on its children +--TEMPLATE-- +{% autoescape %} +{{ var }}
    +{% endautoescape %} +{% autoescape 'html' %} +{{ var }}
    +{% endautoescape %} +{% autoescape false %} +{{ var }}
    +{% endautoescape %} +{% autoescape true %} +{{ var }}
    +{% endautoescape %} +{% autoescape false %} +{{ var }}
    +{% endautoescape %} +--DATA-- +return array('var' => '
    ') +--EXPECT-- +<br />
    +<br />
    +

    +<br />
    +

    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/blocks.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/blocks.test new file mode 100644 index 0000000..05ab83c --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/blocks.test @@ -0,0 +1,12 @@ +--TEST-- +"autoescape" tag applies escaping on embedded blocks +--TEMPLATE-- +{% autoescape 'html' %} + {% block foo %} + {{ var }} + {% endblock %} +{% endautoescape %} +--DATA-- +return array('var' => '
    ') +--EXPECT-- +<br /> diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/double_escaping.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/double_escaping.test new file mode 100644 index 0000000..9c09724 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/double_escaping.test @@ -0,0 +1,10 @@ +--TEST-- +"autoescape" tag does not double-escape +--TEMPLATE-- +{% autoescape 'html' %} +{{ var|escape }} +{% endautoescape %} +--DATA-- +return array('var' => '
    ') +--EXPECT-- +<br /> diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/functions.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/functions.test new file mode 100644 index 0000000..ce7ea78 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/functions.test @@ -0,0 +1,83 @@ +--TEST-- +"autoescape" tag applies escaping after calling functions +--TEMPLATE-- + +autoescape false +{% autoescape false %} + +safe_br +{{ safe_br() }} + +unsafe_br +{{ unsafe_br() }} + +{% endautoescape %} + +autoescape 'html' +{% autoescape 'html' %} + +safe_br +{{ safe_br() }} + +unsafe_br +{{ unsafe_br() }} + +unsafe_br()|raw +{{ (unsafe_br())|raw }} + +safe_br()|escape +{{ (safe_br())|escape }} + +safe_br()|raw +{{ (safe_br())|raw }} + +unsafe_br()|escape +{{ (unsafe_br())|escape }} + +{% endautoescape %} + +autoescape js +{% autoescape 'js' %} + +safe_br +{{ safe_br() }} + +{% endautoescape %} +--DATA-- +return array() +--EXPECT-- + +autoescape false + +safe_br +
    + +unsafe_br +
    + + +autoescape 'html' + +safe_br +
    + +unsafe_br +<br /> + +unsafe_br()|raw +
    + +safe_br()|escape +<br /> + +safe_br()|raw +
    + +unsafe_br()|escape +<br /> + + +autoescape js + +safe_br +\x3Cbr\x20\x2F\x3E diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/literal.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/literal.test new file mode 100644 index 0000000..e389d4d --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/literal.test @@ -0,0 +1,45 @@ +--TEST-- +"autoescape" tag does not apply escaping on literals +--TEMPLATE-- +{% autoescape 'html' %} + +1. Simple literal +{{ "
    " }} + +2. Conditional expression with only literals +{{ true ? "
    " : "
    " }} + +3. Conditional expression with a variable +{{ true ? "
    " : someVar }} + +4. Nested conditionals with only literals +{{ true ? (true ? "
    " : "
    ") : "\n" }} + +5. Nested conditionals with a variable +{{ true ? (true ? "
    " : someVar) : "\n" }} + +6. Nested conditionals with a variable marked safe +{{ true ? (true ? "
    " : someVar|raw) : "\n" }} + +{% endautoescape %} +--DATA-- +return array() +--EXPECT-- + +1. Simple literal +
    + +2. Conditional expression with only literals +
    + +3. Conditional expression with a variable +<br /> + +4. Nested conditionals with only literals +
    + +5. Nested conditionals with a variable +<br /> + +6. Nested conditionals with a variable marked safe +
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/nested.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/nested.test new file mode 100644 index 0000000..798e6fe --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/nested.test @@ -0,0 +1,26 @@ +--TEST-- +"autoescape" tags can be nested at will +--TEMPLATE-- +{{ var }} +{% autoescape 'html' %} + {{ var }} + {% autoescape false %} + {{ var }} + {% autoescape 'html' %} + {{ var }} + {% endautoescape %} + {{ var }} + {% endautoescape %} + {{ var }} +{% endautoescape %} +{{ var }} +--DATA-- +return array('var' => '
    ') +--EXPECT-- +<br /> + <br /> +
    + <br /> +
    + <br /> +<br /> diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/objects.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/objects.test new file mode 100644 index 0000000..e896aa4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/objects.test @@ -0,0 +1,26 @@ +--TEST-- +"autoescape" tag applies escaping to object method calls +--TEMPLATE-- +{% autoescape 'html' %} +{{ user.name }} +{{ user.name|lower }} +{{ user }} +{% endautoescape %} +--DATA-- +class UserForAutoEscapeTest +{ + public function getName() + { + return 'Fabien
    '; + } + + public function __toString() + { + return 'Fabien
    '; + } +} +return array('user' => new UserForAutoEscapeTest()) +--EXPECT-- +Fabien<br /> +fabien<br /> +Fabien<br /> diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/raw.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/raw.test new file mode 100644 index 0000000..9f1cedd --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/raw.test @@ -0,0 +1,10 @@ +--TEST-- +"autoescape" tag does not escape when raw is used as a filter +--TEMPLATE-- +{% autoescape 'html' %} +{{ var|raw }} +{% endautoescape %} +--DATA-- +return array('var' => '
    ') +--EXPECT-- +
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/strategy.legacy.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/strategy.legacy.test new file mode 100644 index 0000000..bbf1356 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/strategy.legacy.test @@ -0,0 +1,11 @@ +--TEST-- +"autoescape" tag accepts an escaping strategy +--TEMPLATE-- +{% autoescape true js %}{{ var }}{% endautoescape %} + +{% autoescape true html %}{{ var }}{% endautoescape %} +--DATA-- +return array('var' => '
    "') +--EXPECT-- +\x3Cbr\x20\x2F\x3E\x22 +<br />" diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/strategy.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/strategy.test new file mode 100644 index 0000000..e496f60 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/strategy.test @@ -0,0 +1,11 @@ +--TEST-- +"autoescape" tag accepts an escaping strategy +--TEMPLATE-- +{% autoescape 'js' %}{{ var }}{% endautoescape %} + +{% autoescape 'html' %}{{ var }}{% endautoescape %} +--DATA-- +return array('var' => '
    "') +--EXPECT-- +\x3Cbr\x20\x2F\x3E\x22 +<br />" diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/type.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/type.test new file mode 100644 index 0000000..4f41520 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/type.test @@ -0,0 +1,69 @@ +--TEST-- +escape types +--TEMPLATE-- + +1. autoescape 'html' |escape('js') + +{% autoescape 'html' %} + +{% endautoescape %} + +2. autoescape 'html' |escape('js') + +{% autoescape 'html' %} + +{% endautoescape %} + +3. autoescape 'js' |escape('js') + +{% autoescape 'js' %} + +{% endautoescape %} + +4. no escape + +{% autoescape false %} + +{% endautoescape %} + +5. |escape('js')|escape('html') + +{% autoescape false %} + +{% endautoescape %} + +6. autoescape 'html' |escape('js')|escape('html') + +{% autoescape 'html' %} + +{% endautoescape %} + +--DATA-- +return array('msg' => "<>\n'\"") +--EXPECT-- + +1. autoescape 'html' |escape('js') + + + +2. autoescape 'html' |escape('js') + + + +3. autoescape 'js' |escape('js') + + + +4. no escape + + + +5. |escape('js')|escape('html') + + + +6. autoescape 'html' |escape('js')|escape('html') + + + diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_filters.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_filters.test new file mode 100644 index 0000000..7821a9a --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_filters.test @@ -0,0 +1,131 @@ +--TEST-- +"autoescape" tag applies escaping after calling filters +--TEMPLATE-- +{% autoescape 'html' %} + +(escape_and_nl2br is an escaper filter) + +1. Don't escape escaper filter output +( var is escaped by |escape_and_nl2br, line-breaks are added, + the output is not escaped ) +{{ var|escape_and_nl2br }} + +2. Don't escape escaper filter output +( var is escaped by |escape_and_nl2br, line-breaks are added, + the output is not escaped, |raw is redundant ) +{{ var|escape_and_nl2br|raw }} + +3. Explicit escape +( var is escaped by |escape_and_nl2br, line-breaks are added, + the output is explicitly escaped by |escape ) +{{ var|escape_and_nl2br|escape }} + +4. Escape non-escaper filter output +( var is upper-cased by |upper, + the output is auto-escaped ) +{{ var|upper }} + +5. Escape if last filter is not an escaper +( var is escaped by |escape_and_nl2br, line-breaks are added, + the output is upper-cased by |upper, + the output is auto-escaped as |upper is not an escaper ) +{{ var|escape_and_nl2br|upper }} + +6. Don't escape escaper filter output +( var is upper cased by upper, + the output is escaped by |escape_and_nl2br, line-breaks are added, + the output is not escaped as |escape_and_nl2br is an escaper ) +{{ var|upper|escape_and_nl2br }} + +7. Escape if last filter is not an escaper +( the output of |format is "" ~ var ~ "", + the output is auto-escaped ) +{{ "%s"|format(var) }} + +8. Escape if last filter is not an escaper +( the output of |format is "" ~ var ~ "", + |raw is redundant, + the output is auto-escaped ) +{{ "%s"|raw|format(var) }} + +9. Don't escape escaper filter output +( the output of |format is "" ~ var ~ "", + the output is not escaped due to |raw filter at the end ) +{{ "%s"|format(var)|raw }} + +10. Don't escape escaper filter output +( the output of |format is "" ~ var ~ "", + the output is not escaped due to |raw filter at the end, + the |raw filter on var is redundant ) +{{ "%s"|format(var|raw)|raw }} + +{% endautoescape %} +--DATA-- +return array('var' => "\nTwig") +--EXPECT-- + +(escape_and_nl2br is an escaper filter) + +1. Don't escape escaper filter output +( var is escaped by |escape_and_nl2br, line-breaks are added, + the output is not escaped ) +<Fabien>
    +Twig + +2. Don't escape escaper filter output +( var is escaped by |escape_and_nl2br, line-breaks are added, + the output is not escaped, |raw is redundant ) +<Fabien>
    +Twig + +3. Explicit escape +( var is escaped by |escape_and_nl2br, line-breaks are added, + the output is explicitly escaped by |escape ) +&lt;Fabien&gt;<br /> +Twig + +4. Escape non-escaper filter output +( var is upper-cased by |upper, + the output is auto-escaped ) +<FABIEN> +TWIG + +5. Escape if last filter is not an escaper +( var is escaped by |escape_and_nl2br, line-breaks are added, + the output is upper-cased by |upper, + the output is auto-escaped as |upper is not an escaper ) +&LT;FABIEN&GT;<BR /> +TWIG + +6. Don't escape escaper filter output +( var is upper cased by upper, + the output is escaped by |escape_and_nl2br, line-breaks are added, + the output is not escaped as |escape_and_nl2br is an escaper ) +<FABIEN>
    +TWIG + +7. Escape if last filter is not an escaper +( the output of |format is "" ~ var ~ "", + the output is auto-escaped ) +<b><Fabien> +Twig</b> + +8. Escape if last filter is not an escaper +( the output of |format is "" ~ var ~ "", + |raw is redundant, + the output is auto-escaped ) +<b><Fabien> +Twig</b> + +9. Don't escape escaper filter output +( the output of |format is "" ~ var ~ "", + the output is not escaped due to |raw filter at the end ) + +Twig + +10. Don't escape escaper filter output +( the output of |format is "" ~ var ~ "", + the output is not escaped due to |raw filter at the end, + the |raw filter on var is redundant ) + +Twig diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_filters_arguments.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_filters_arguments.test new file mode 100644 index 0000000..f58a1e0 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_filters_arguments.test @@ -0,0 +1,23 @@ +--TEST-- +"autoescape" tag do not applies escaping on filter arguments +--TEMPLATE-- +{% autoescape 'html' %} +{{ var|nl2br("
    ") }} +{{ var|nl2br("
    "|escape) }} +{{ var|nl2br(sep) }} +{{ var|nl2br(sep|raw) }} +{{ var|nl2br(sep|escape) }} +{% endautoescape %} +--DATA-- +return array('var' => "\nTwig", 'sep' => '
    ') +--EXPECT-- +<Fabien>
    +Twig +<Fabien><br /> +Twig +<Fabien>
    +Twig +<Fabien>
    +Twig +<Fabien><br /> +Twig diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_pre_escape_filters.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_pre_escape_filters.test new file mode 100644 index 0000000..134c77e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_pre_escape_filters.test @@ -0,0 +1,68 @@ +--TEST-- +"autoescape" tag applies escaping after calling filters, and before calling pre_escape filters +--TEMPLATE-- +{% autoescape 'html' %} + +(nl2br is pre_escaped for "html" and declared safe for "html") + +1. Pre-escape and don't post-escape +( var|escape|nl2br ) +{{ var|nl2br }} + +2. Don't double-pre-escape +( var|escape|nl2br ) +{{ var|escape|nl2br }} + +3. Don't escape safe values +( var|raw|nl2br ) +{{ var|raw|nl2br }} + +4. Don't escape safe values +( var|escape|nl2br|nl2br ) +{{ var|nl2br|nl2br }} + +5. Re-escape values that are escaped for an other contexts +( var|escape_something|escape|nl2br ) +{{ var|escape_something|nl2br }} + +6. Still escape when using filters not declared safe +( var|escape|nl2br|upper|escape ) +{{ var|nl2br|upper }} + +{% endautoescape %} +--DATA-- +return array('var' => "\nTwig") +--EXPECT-- + +(nl2br is pre_escaped for "html" and declared safe for "html") + +1. Pre-escape and don't post-escape +( var|escape|nl2br ) +<Fabien>
    +Twig + +2. Don't double-pre-escape +( var|escape|nl2br ) +<Fabien>
    +Twig + +3. Don't escape safe values +( var|raw|nl2br ) +
    +Twig + +4. Don't escape safe values +( var|escape|nl2br|nl2br ) +<Fabien>

    +Twig + +5. Re-escape values that are escaped for an other contexts +( var|escape_something|escape|nl2br ) +<FABIEN>
    +TWIG + +6. Still escape when using filters not declared safe +( var|escape|nl2br|upper|escape ) +&LT;FABIEN&GT;<BR /> +TWIG + diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_preserves_safety_filters.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_preserves_safety_filters.test new file mode 100644 index 0000000..32d3943 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/autoescape/with_preserves_safety_filters.test @@ -0,0 +1,50 @@ +--TEST-- +"autoescape" tag handles filters preserving the safety +--TEMPLATE-- +{% autoescape 'html' %} + +(preserves_safety is preserving safety for "html") + +1. Unsafe values are still unsafe +( var|preserves_safety|escape ) +{{ var|preserves_safety }} + +2. Safe values are still safe +( var|escape|preserves_safety ) +{{ var|escape|preserves_safety }} + +3. Re-escape values that are escaped for an other contexts +( var|escape_something|preserves_safety|escape ) +{{ var|escape_something|preserves_safety }} + +4. Still escape when using filters not declared safe +( var|escape|preserves_safety|replace({'FABIEN': 'FABPOT'})|escape ) +{{ var|escape|preserves_safety|replace({'FABIEN': 'FABPOT'}) }} + +{% endautoescape %} +--DATA-- +return array('var' => "\nTwig") +--EXPECT-- + +(preserves_safety is preserving safety for "html") + +1. Unsafe values are still unsafe +( var|preserves_safety|escape ) +<FABIEN> +TWIG + +2. Safe values are still safe +( var|escape|preserves_safety ) +<FABIEN> +TWIG + +3. Re-escape values that are escaped for an other contexts +( var|escape_something|preserves_safety|escape ) +<FABIEN> +TWIG + +4. Still escape when using filters not declared safe +( var|escape|preserves_safety|replace({'FABIEN': 'FABPOT'})|escape ) +&LT;FABPOT&GT; +TWIG + diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/block/basic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/block/basic.test new file mode 100644 index 0000000..360dcf0 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/block/basic.test @@ -0,0 +1,11 @@ +--TEST-- +"block" tag +--TEMPLATE-- +{% block title1 %}FOO{% endblock %} +{% block title2 foo|lower %} +--TEMPLATE(foo.twig)-- +{% block content %}{% endblock %} +--DATA-- +return array('foo' => 'bar') +--EXPECT-- +FOObar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/block/block_unique_name.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/block/block_unique_name.test new file mode 100644 index 0000000..bc89ec8 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/block/block_unique_name.test @@ -0,0 +1,11 @@ +--TEST-- +"block" tag +--TEMPLATE-- +{% block content %} + {% block content %} + {% endblock %} +{% endblock %} +--DATA-- +return array() +--EXCEPTION-- +Twig_Error_Syntax: The block 'content' has already been defined line 2 in "index.twig" at line 3. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/block/special_chars.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/block/special_chars.test new file mode 100644 index 0000000..be17fed --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/block/special_chars.test @@ -0,0 +1,10 @@ +--TEST-- +"§" special chars in a block name +--TEMPLATE-- +{% block § %} +§ +{% endblock § %} +--DATA-- +return array() +--EXPECT-- +§ diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/basic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/basic.test new file mode 100644 index 0000000..f44296e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/basic.test @@ -0,0 +1,35 @@ +--TEST-- +"embed" tag +--TEMPLATE-- +FOO +{% embed "foo.twig" %} + {% block c1 %} + {{ parent() }} + block1extended + {% endblock %} +{% endembed %} + +BAR +--TEMPLATE(foo.twig)-- +A +{% block c1 %} + block1 +{% endblock %} +B +{% block c2 %} + block2 +{% endblock %} +C +--DATA-- +return array() +--EXPECT-- +FOO + +A + block1 + + block1extended + B + block2 +C +BAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/complex_dynamic_parent.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/complex_dynamic_parent.test new file mode 100644 index 0000000..de5ea7e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/complex_dynamic_parent.test @@ -0,0 +1,35 @@ +--TEST-- +"embed" tag +--TEMPLATE-- +FOO +{% embed foo ~ ".twig" %} + {% block c1 %} + {{ parent() }} + block1extended + {% endblock %} +{% endembed %} + +BAR +--TEMPLATE(foo.twig)-- +A +{% block c1 %} + block1 +{% endblock %} +B +{% block c2 %} + block2 +{% endblock %} +C +--DATA-- +return array('foo' => 'foo') +--EXPECT-- +FOO + +A + block1 + + block1extended + B + block2 +C +BAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/dynamic_parent.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/dynamic_parent.test new file mode 100644 index 0000000..2a125e6 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/dynamic_parent.test @@ -0,0 +1,35 @@ +--TEST-- +"embed" tag +--TEMPLATE-- +FOO +{% embed foo %} + {% block c1 %} + {{ parent() }} + block1extended + {% endblock %} +{% endembed %} + +BAR +--TEMPLATE(foo.twig)-- +A +{% block c1 %} + block1 +{% endblock %} +B +{% block c2 %} + block2 +{% endblock %} +C +--DATA-- +return array('foo' => 'foo.twig') +--EXPECT-- +FOO + +A + block1 + + block1extended + B + block2 +C +BAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/error_line.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/error_line.test new file mode 100644 index 0000000..4314737 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/error_line.test @@ -0,0 +1,16 @@ +--TEST-- +"embed" tag +--TEMPLATE(index.twig)-- +FOO +{% embed "foo.twig" %} + {% block c1 %} + {{ nothing }} + {% endblock %} +{% endembed %} +BAR +--TEMPLATE(foo.twig)-- +{% block c1 %}{% endblock %} +--DATA-- +return array() +--EXCEPTION-- +Twig_Error_Runtime: Variable "nothing" does not exist in "index.twig" at line 5. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/multiple.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/multiple.test new file mode 100644 index 0000000..da161e6 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/multiple.test @@ -0,0 +1,50 @@ +--TEST-- +"embed" tag +--TEMPLATE-- +FOO +{% embed "foo.twig" %} + {% block c1 %} + {{ parent() }} + block1extended + {% endblock %} +{% endembed %} + +{% embed "foo.twig" %} + {% block c1 %} + {{ parent() }} + block1extended + {% endblock %} +{% endembed %} + +BAR +--TEMPLATE(foo.twig)-- +A +{% block c1 %} + block1 +{% endblock %} +B +{% block c2 %} + block2 +{% endblock %} +C +--DATA-- +return array() +--EXPECT-- +FOO + +A + block1 + + block1extended + B + block2 +C + +A + block1 + + block1extended + B + block2 +C +BAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/nested.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/nested.test new file mode 100644 index 0000000..81563dc --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/nested.test @@ -0,0 +1,42 @@ +--TEST-- +"embed" tag +--TEMPLATE-- +{% embed "foo.twig" %} + {% block c1 %} + {{ parent() }} + {% embed "foo.twig" %} + {% block c1 %} + {{ parent() }} + block1extended + {% endblock %} + {% endembed %} + + {% endblock %} +{% endembed %} +--TEMPLATE(foo.twig)-- +A +{% block c1 %} + block1 +{% endblock %} +B +{% block c2 %} + block2 +{% endblock %} +C +--DATA-- +return array() +--EXPECT-- +A + block1 + + +A + block1 + + block1extended + B + block2 +C + B + block2 +C diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/with_extends.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/with_extends.test new file mode 100644 index 0000000..2c1dd58 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/embed/with_extends.test @@ -0,0 +1,60 @@ +--TEST-- +"embed" tag +--TEMPLATE-- +{% extends "base.twig" %} + +{% block c1 %} + {{ parent() }} + blockc1baseextended +{% endblock %} + +{% block c2 %} + {{ parent() }} + + {% embed "foo.twig" %} + {% block c1 %} + {{ parent() }} + block1extended + {% endblock %} + {% endembed %} + {{ parent() }} +{% endblock %} +--TEMPLATE(base.twig)-- +A +{% block c1 %} + blockc1base +{% endblock %} +{% block c2 %} + blockc2base +{% endblock %} +B +--TEMPLATE(foo.twig)-- +A +{% block c1 %} + block1 +{% endblock %} +B +{% block c2 %} + block2 +{% endblock %} +C +--DATA-- +return array() +--EXPECT-- +A + blockc1base + + blockc1baseextended + blockc2base + + + +A + block1 + + block1extended + B + block2 +C blockc2base + +B \ No newline at end of file diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/basic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/basic.test new file mode 100644 index 0000000..82094f2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/basic.test @@ -0,0 +1,10 @@ +--TEST-- +"filter" tag applies a filter on its children +--TEMPLATE-- +{% filter upper %} +Some text with a {{ var }} +{% endfilter %} +--DATA-- +return array('var' => 'var') +--EXPECT-- +SOME TEXT WITH A VAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/json_encode.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/json_encode.test new file mode 100644 index 0000000..3e7148b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/json_encode.test @@ -0,0 +1,8 @@ +--TEST-- +"filter" tag applies a filter on its children +--TEMPLATE-- +{% filter json_encode|raw %}test{% endfilter %} +--DATA-- +return array() +--EXPECT-- +"test" diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/multiple.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/multiple.test new file mode 100644 index 0000000..75512ef --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/multiple.test @@ -0,0 +1,10 @@ +--TEST-- +"filter" tags accept multiple chained filters +--TEMPLATE-- +{% filter lower|title %} + {{ var }} +{% endfilter %} +--DATA-- +return array('var' => 'VAR') +--EXPECT-- + Var diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/nested.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/nested.test new file mode 100644 index 0000000..7e4e4eb --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/nested.test @@ -0,0 +1,16 @@ +--TEST-- +"filter" tags can be nested at will +--TEMPLATE-- +{% filter lower|title %} + {{ var }} + {% filter upper %} + {{ var }} + {% endfilter %} + {{ var }} +{% endfilter %} +--DATA-- +return array('var' => 'var') +--EXPECT-- + Var + Var + Var diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/with_for_tag.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/with_for_tag.test new file mode 100644 index 0000000..22745ea --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/with_for_tag.test @@ -0,0 +1,13 @@ +--TEST-- +"filter" tag applies the filter on "for" tags +--TEMPLATE-- +{% filter upper %} +{% for item in items %} +{{ item }} +{% endfor %} +{% endfilter %} +--DATA-- +return array('items' => array('a', 'b')) +--EXPECT-- +A +B diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/with_if_tag.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/with_if_tag.test new file mode 100644 index 0000000..afd95b2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/filter/with_if_tag.test @@ -0,0 +1,29 @@ +--TEST-- +"filter" tag applies the filter on "if" tags +--TEMPLATE-- +{% filter upper %} +{% if items %} +{{ items|join(', ') }} +{% endif %} + +{% if items.3 is defined %} +FOO +{% else %} +{{ items.1 }} +{% endif %} + +{% if items.3 is defined %} +FOO +{% elseif items.1 %} +{{ items.0 }} +{% endif %} + +{% endfilter %} +--DATA-- +return array('items' => array('a', 'b')) +--EXPECT-- +A, B + +B + +A diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/condition.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/condition.test new file mode 100644 index 0000000..380531f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/condition.test @@ -0,0 +1,14 @@ +--TEST-- +"for" tag takes a condition +--TEMPLATE-- +{% for i in 1..5 if i is odd -%} + {{ loop.index }}.{{ i }}{{ foo.bar }} +{% endfor %} +--DATA-- +return array('foo' => array('bar' => 'X')) +--CONFIG-- +return array('strict_variables' => false) +--EXPECT-- +1.1X +2.3X +3.5X diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/context.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/context.test new file mode 100644 index 0000000..ddc6930 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/context.test @@ -0,0 +1,18 @@ +--TEST-- +"for" tag keeps the context safe +--TEMPLATE-- +{% for item in items %} + {% for item in items %} + * {{ item }} + {% endfor %} + * {{ item }} +{% endfor %} +--DATA-- +return array('items' => array('a', 'b')) +--EXPECT-- + * a + * b + * a + * a + * b + * b diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/else.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/else.test new file mode 100644 index 0000000..20ccc88 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/else.test @@ -0,0 +1,23 @@ +--TEST-- +"for" tag can use an "else" clause +--TEMPLATE-- +{% for item in items %} + * {{ item }} +{% else %} + no item +{% endfor %} +--DATA-- +return array('items' => array('a', 'b')) +--EXPECT-- + * a + * b +--DATA-- +return array('items' => array()) +--EXPECT-- + no item +--DATA-- +return array() +--CONFIG-- +return array('strict_variables' => false) +--EXPECT-- + no item diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/inner_variables.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/inner_variables.test new file mode 100644 index 0000000..49fb9ca --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/inner_variables.test @@ -0,0 +1,17 @@ +--TEST-- +"for" tag does not reset inner variables +--TEMPLATE-- +{% for i in 1..2 %} + {% for j in 0..2 %} + {{k}}{% set k = k+1 %} {{ loop.parent.loop.index }} + {% endfor %} +{% endfor %} +--DATA-- +return array('k' => 0) +--EXPECT-- + 0 1 + 1 1 + 2 1 + 3 2 + 4 2 + 5 2 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/keys.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/keys.test new file mode 100644 index 0000000..4e22cb4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/keys.test @@ -0,0 +1,11 @@ +--TEST-- +"for" tag can iterate over keys +--TEMPLATE-- +{% for key in items|keys %} + * {{ key }} +{% endfor %} +--DATA-- +return array('items' => array('a', 'b')) +--EXPECT-- + * 0 + * 1 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/keys_and_values.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/keys_and_values.test new file mode 100644 index 0000000..4c21168 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/keys_and_values.test @@ -0,0 +1,11 @@ +--TEST-- +"for" tag can iterate over keys and values +--TEMPLATE-- +{% for key, item in items %} + * {{ key }}/{{ item }} +{% endfor %} +--DATA-- +return array('items' => array('a', 'b')) +--EXPECT-- + * 0/a + * 1/b diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_context.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_context.test new file mode 100644 index 0000000..93bc76a --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_context.test @@ -0,0 +1,19 @@ +--TEST-- +"for" tag adds a loop variable to the context +--TEMPLATE-- +{% for item in items %} + * {{ loop.index }}/{{ loop.index0 }} + * {{ loop.revindex }}/{{ loop.revindex0 }} + * {{ loop.first }}/{{ loop.last }}/{{ loop.length }} + +{% endfor %} +--DATA-- +return array('items' => array('a', 'b')) +--EXPECT-- + * 1/0 + * 2/1 + * 1//2 + + * 2/1 + * 1/0 + * /1/2 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_context_local.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_context_local.test new file mode 100644 index 0000000..58af2c3 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_context_local.test @@ -0,0 +1,10 @@ +--TEST-- +"for" tag adds a loop variable to the context locally +--TEMPLATE-- +{% for item in items %} +{% endfor %} +{% if loop is not defined %}WORKS{% endif %} +--DATA-- +return array('items' => array()) +--EXPECT-- +WORKS diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_not_defined.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_not_defined.test new file mode 100644 index 0000000..6a2af63 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_not_defined.test @@ -0,0 +1,10 @@ +--TEST-- +"for" tag +--TEMPLATE-- +{% for i, item in items if i > 0 %} + {{ loop.last }} +{% endfor %} +--DATA-- +return array('items' => array('a', 'b')) +--EXCEPTION-- +Twig_Error_Syntax: The "loop.last" variable is not defined when looping with a condition in "index.twig" at line 3. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_not_defined_cond.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_not_defined_cond.test new file mode 100644 index 0000000..1e819ca --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/loop_not_defined_cond.test @@ -0,0 +1,9 @@ +--TEST-- +"for" tag +--TEMPLATE-- +{% for i, item in items if loop.last > 0 %} +{% endfor %} +--DATA-- +return array('items' => array('a', 'b')) +--EXCEPTION-- +Twig_Error_Syntax: The "loop" variable cannot be used in a looping condition in "index.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/nested_else.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/nested_else.test new file mode 100644 index 0000000..f8b9f6b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/nested_else.test @@ -0,0 +1,17 @@ +--TEST-- +"for" tag can use an "else" clause +--TEMPLATE-- +{% for item in items %} + {% for item in items1 %} + * {{ item }} + {% else %} + no {{ item }} + {% endfor %} +{% else %} + no item1 +{% endfor %} +--DATA-- +return array('items' => array('a', 'b'), 'items1' => array()) +--EXPECT-- +no a + no b diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/objects.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/objects.test new file mode 100644 index 0000000..5034437 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/objects.test @@ -0,0 +1,43 @@ +--TEST-- +"for" tag iterates over iterable objects +--TEMPLATE-- +{% for item in items %} + * {{ item }} + * {{ loop.index }}/{{ loop.index0 }} + * {{ loop.first }} + +{% endfor %} + +{% for key, value in items %} + * {{ key }}/{{ value }} +{% endfor %} + +{% for key in items|keys %} + * {{ key }} +{% endfor %} +--DATA-- +class ItemsIterator implements Iterator +{ + protected $values = array('foo' => 'bar', 'bar' => 'foo'); + public function current() { return current($this->values); } + public function key() { return key($this->values); } + public function next() { return next($this->values); } + public function rewind() { return reset($this->values); } + public function valid() { return false !== current($this->values); } +} +return array('items' => new ItemsIterator()) +--EXPECT-- + * bar + * 1/0 + * 1 + + * foo + * 2/1 + * + + + * foo/bar + * bar/foo + + * foo + * bar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/objects_countable.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/objects_countable.test new file mode 100644 index 0000000..4a1ff61 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/objects_countable.test @@ -0,0 +1,47 @@ +--TEST-- +"for" tag iterates over iterable and countable objects +--TEMPLATE-- +{% for item in items %} + * {{ item }} + * {{ loop.index }}/{{ loop.index0 }} + * {{ loop.revindex }}/{{ loop.revindex0 }} + * {{ loop.first }}/{{ loop.last }}/{{ loop.length }} + +{% endfor %} + +{% for key, value in items %} + * {{ key }}/{{ value }} +{% endfor %} + +{% for key in items|keys %} + * {{ key }} +{% endfor %} +--DATA-- +class ItemsIteratorCountable implements Iterator, Countable +{ + protected $values = array('foo' => 'bar', 'bar' => 'foo'); + public function current() { return current($this->values); } + public function key() { return key($this->values); } + public function next() { return next($this->values); } + public function rewind() { return reset($this->values); } + public function valid() { return false !== current($this->values); } + public function count() { return count($this->values); } +} +return array('items' => new ItemsIteratorCountable()) +--EXPECT-- + * bar + * 1/0 + * 2/1 + * 1//2 + + * foo + * 2/1 + * 1/0 + * /1/2 + + + * foo/bar + * bar/foo + + * foo + * bar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/recursive.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/recursive.test new file mode 100644 index 0000000..17b2e22 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/recursive.test @@ -0,0 +1,18 @@ +--TEST-- +"for" tags can be nested +--TEMPLATE-- +{% for key, item in items %} +* {{ key }} ({{ loop.length }}): +{% for value in item %} + * {{ value }} ({{ loop.length }}) +{% endfor %} +{% endfor %} +--DATA-- +return array('items' => array('a' => array('a1', 'a2', 'a3'), 'b' => array('b1'))) +--EXPECT-- +* a (2): + * a1 (3) + * a2 (3) + * a3 (3) +* b (2): + * b1 (1) diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/values.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/values.test new file mode 100644 index 0000000..82f2ae8 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/for/values.test @@ -0,0 +1,11 @@ +--TEST-- +"for" tag iterates over item values +--TEMPLATE-- +{% for item in items %} + * {{ item }} +{% endfor %} +--DATA-- +return array('items' => array('a', 'b')) +--EXPECT-- + * a + * b diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/from.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/from.test new file mode 100644 index 0000000..5f5da0e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/from.test @@ -0,0 +1,14 @@ +--TEST-- +global variables +--TEMPLATE-- +{% include "included.twig" %} +{% from "included.twig" import foobar %} +{{ foobar() }} +--TEMPLATE(included.twig)-- +{% macro foobar() %} +called foobar +{% endmacro %} +--DATA-- +return array(); +--EXPECT-- +called foobar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/if/basic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/if/basic.test new file mode 100644 index 0000000..c1c3d27 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/if/basic.test @@ -0,0 +1,22 @@ +--TEST-- +"if" creates a condition +--TEMPLATE-- +{% if a is defined %} + {{ a }} +{% elseif b is defined %} + {{ b }} +{% else %} + NOTHING +{% endif %} +--DATA-- +return array('a' => 'a') +--EXPECT-- + a +--DATA-- +return array('b' => 'b') +--EXPECT-- + b +--DATA-- +return array() +--EXPECT-- + NOTHING diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/if/expression.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/if/expression.test new file mode 100644 index 0000000..edfb73d --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/if/expression.test @@ -0,0 +1,22 @@ +--TEST-- +"if" takes an expression as a test +--TEMPLATE-- +{% if a < 2 %} + A1 +{% elseif a > 10 %} + A2 +{% else %} + A3 +{% endif %} +--DATA-- +return array('a' => 1) +--EXPECT-- + A1 +--DATA-- +return array('a' => 12) +--EXPECT-- + A2 +--DATA-- +return array('a' => 7) +--EXPECT-- + A3 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/basic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/basic.test new file mode 100644 index 0000000..8fe1a6c --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/basic.test @@ -0,0 +1,16 @@ +--TEST-- +"include" tag +--TEMPLATE-- +FOO +{% include "foo.twig" %} + +BAR +--TEMPLATE(foo.twig)-- +FOOBAR +--DATA-- +return array() +--EXPECT-- +FOO + +FOOBAR +BAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/expression.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/expression.test new file mode 100644 index 0000000..eaeeb11 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/expression.test @@ -0,0 +1,16 @@ +--TEST-- +"include" tag allows expressions for the template to include +--TEMPLATE-- +FOO +{% include foo %} + +BAR +--TEMPLATE(foo.twig)-- +FOOBAR +--DATA-- +return array('foo' => 'foo.twig') +--EXPECT-- +FOO + +FOOBAR +BAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/ignore_missing.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/ignore_missing.test new file mode 100644 index 0000000..24aed06 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/ignore_missing.test @@ -0,0 +1,10 @@ +--TEST-- +"include" tag +--TEMPLATE-- +{% include ["foo.twig", "bar.twig"] ignore missing %} +{% include "foo.twig" ignore missing %} +{% include "foo.twig" ignore missing with {} %} +{% include "foo.twig" ignore missing with {} only %} +--DATA-- +return array() +--EXPECT-- diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/missing.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/missing.test new file mode 100644 index 0000000..f25e871 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/missing.test @@ -0,0 +1,8 @@ +--TEST-- +"include" tag +--TEMPLATE-- +{% include "foo.twig" %} +--DATA-- +return array(); +--EXCEPTION-- +Twig_Error_Loader: Template "foo.twig" is not defined in "index.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/missing_nested.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/missing_nested.test new file mode 100644 index 0000000..86c1864 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/missing_nested.test @@ -0,0 +1,16 @@ +--TEST-- +"include" tag +--TEMPLATE-- +{% extends "base.twig" %} + +{% block content %} + {{ parent() }} +{% endblock %} +--TEMPLATE(base.twig)-- +{% block content %} + {% include "foo.twig" %} +{% endblock %} +--DATA-- +return array(); +--EXCEPTION-- +Twig_Error_Loader: Template "foo.twig" is not defined in "base.twig" at line 3. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/only.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/only.test new file mode 100644 index 0000000..77760a0 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/only.test @@ -0,0 +1,16 @@ +--TEST-- +"include" tag accept variables and only +--TEMPLATE-- +{% include "foo.twig" %} +{% include "foo.twig" only %} +{% include "foo.twig" with {'foo1': 'bar'} %} +{% include "foo.twig" with {'foo1': 'bar'} only %} +--TEMPLATE(foo.twig)-- +{% for k, v in _context %}{{ k }},{% endfor %} +--DATA-- +return array('foo' => 'bar') +--EXPECT-- +foo,global,_parent, +global,_parent, +foo,global,foo1,_parent, +foo1,global,_parent, diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/template_instance.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/template_instance.test new file mode 100644 index 0000000..6ba064a --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/template_instance.test @@ -0,0 +1,10 @@ +--TEST-- +"include" tag accepts Twig_Template instance +--TEMPLATE-- +{% include foo %} FOO +--TEMPLATE(foo.twig)-- +BAR +--DATA-- +return array('foo' => $twig->loadTemplate('foo.twig')) +--EXPECT-- +BAR FOO diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/templates_as_array.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/templates_as_array.test new file mode 100644 index 0000000..ab670ee --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/templates_as_array.test @@ -0,0 +1,12 @@ +--TEST-- +"include" tag +--TEMPLATE-- +{% include ["foo.twig", "bar.twig"] %} +{% include ["bar.twig", "foo.twig"] %} +--TEMPLATE(foo.twig)-- +foo +--DATA-- +return array() +--EXPECT-- +foo +foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/with_variables.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/with_variables.test new file mode 100644 index 0000000..41384ac --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/include/with_variables.test @@ -0,0 +1,12 @@ +--TEST-- +"include" tag accept variables +--TEMPLATE-- +{% include "foo.twig" with {'foo': 'bar'} %} +{% include "foo.twig" with vars %} +--TEMPLATE(foo.twig)-- +{{ foo }} +--DATA-- +return array('vars' => array('foo' => 'bar')) +--EXPECT-- +bar +bar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/basic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/basic.test new file mode 100644 index 0000000..0778a4b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/basic.test @@ -0,0 +1,14 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% extends "foo.twig" %} + +{% block content %} +FOO +{% endblock %} +--TEMPLATE(foo.twig)-- +{% block content %}{% endblock %} +--DATA-- +return array() +--EXPECT-- +FOO diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/block_expr.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/block_expr.test new file mode 100644 index 0000000..9a81499 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/block_expr.test @@ -0,0 +1,32 @@ +--TEST-- +block_expr +--TEMPLATE-- +{% extends "base.twig" %} + +{% block element -%} + Element: + {{- parent() -}} +{% endblock %} +--TEMPLATE(base.twig)-- +{% spaceless %} +{% block element -%} +
    + {%- if item.children is defined %} + {%- for item in item.children %} + {{- block('element') -}} + {% endfor %} + {%- endif -%} +
    +{%- endblock %} +{% endspaceless %} +--DATA-- +return array( + 'item' => array( + 'children' => array( + null, + null, + ) + ) +) +--EXPECT-- +Element:
    Element:
    Element:
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/block_expr2.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/block_expr2.test new file mode 100644 index 0000000..3e868c0 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/block_expr2.test @@ -0,0 +1,34 @@ +--TEST-- +block_expr2 +--TEMPLATE-- +{% extends "base2.twig" %} + +{% block element -%} + Element: + {{- parent() -}} +{% endblock %} +--TEMPLATE(base2.twig)-- +{% extends "base.twig" %} +--TEMPLATE(base.twig)-- +{% spaceless %} +{% block element -%} +
    + {%- if item.children is defined %} + {%- for item in item.children %} + {{- block('element') -}} + {% endfor %} + {%- endif -%} +
    +{%- endblock %} +{% endspaceless %} +--DATA-- +return array( + 'item' => array( + 'children' => array( + null, + null, + ) + ) +) +--EXPECT-- +Element:
    Element:
    Element:
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/conditional.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/conditional.test new file mode 100644 index 0000000..8576e77 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/conditional.test @@ -0,0 +1,14 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% extends standalone ? foo : 'bar.twig' %} + +{% block content %}{{ parent() }}FOO{% endblock %} +--TEMPLATE(foo.twig)-- +{% block content %}FOO{% endblock %} +--TEMPLATE(bar.twig)-- +{% block content %}BAR{% endblock %} +--DATA-- +return array('foo' => 'foo.twig', 'standalone' => true) +--EXPECT-- +FOOFOO diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/dynamic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/dynamic.test new file mode 100644 index 0000000..ee06ddc --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/dynamic.test @@ -0,0 +1,14 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% extends foo %} + +{% block content %} +FOO +{% endblock %} +--TEMPLATE(foo.twig)-- +{% block content %}{% endblock %} +--DATA-- +return array('foo' => 'foo.twig') +--EXPECT-- +FOO diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/empty.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/empty.test new file mode 100644 index 0000000..784f357 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/empty.test @@ -0,0 +1,10 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% extends "foo.twig" %} +--TEMPLATE(foo.twig)-- +{% block content %}FOO{% endblock %} +--DATA-- +return array() +--EXPECT-- +FOO diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/extends_as_array.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/extends_as_array.test new file mode 100644 index 0000000..a1cb1ce --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/extends_as_array.test @@ -0,0 +1,12 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% extends ["foo.twig", "bar.twig"] %} +--TEMPLATE(bar.twig)-- +{% block content %} +foo +{% endblock %} +--DATA-- +return array() +--EXPECT-- +foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/extends_as_array_with_empty_name.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/extends_as_array_with_empty_name.test new file mode 100644 index 0000000..acc74f6 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/extends_as_array_with_empty_name.test @@ -0,0 +1,12 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% extends ["", "bar.twig"] %} +--TEMPLATE(bar.twig)-- +{% block content %} +foo +{% endblock %} +--DATA-- +return array() +--EXPECT-- +foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/extends_as_array_with_null_name.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/extends_as_array_with_null_name.test new file mode 100644 index 0000000..cfa648d --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/extends_as_array_with_null_name.test @@ -0,0 +1,12 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% extends [null, "bar.twig"] %} +--TEMPLATE(bar.twig)-- +{% block content %} +foo +{% endblock %} +--DATA-- +return array() +--EXPECT-- +foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/multiple.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/multiple.test new file mode 100644 index 0000000..dfc2b6c --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/multiple.test @@ -0,0 +1,12 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% extends "layout.twig" %}{% block content %}{{ parent() }}index {% endblock %} +--TEMPLATE(layout.twig)-- +{% extends "base.twig" %}{% block content %}{{ parent() }}layout {% endblock %} +--TEMPLATE(base.twig)-- +{% block content %}base {% endblock %} +--DATA-- +return array() +--EXPECT-- +base layout index diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/multiple_dynamic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/multiple_dynamic.test new file mode 100644 index 0000000..1d3e639 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/multiple_dynamic.test @@ -0,0 +1,22 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% set foo = 1 %} +{{ include('parent.twig') }} +{{ include('parent.twig') }} +{% set foo = 2 %} +{{ include('parent.twig') }} +--TEMPLATE(parent.twig)-- +{% extends foo~'_parent.twig' %}{% block content %}{{ parent() }} parent{% endblock %} +--TEMPLATE(1_parent.twig)-- +{% block content %}1{% endblock %} +--TEMPLATE(2_parent.twig)-- +{% block content %}2{% endblock %} +--DATA-- +return array() +--EXPECT-- +1 parent + +1 parent + +2 parent diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/nested_blocks.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/nested_blocks.test new file mode 100644 index 0000000..faca925 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/nested_blocks.test @@ -0,0 +1,22 @@ +--TEST-- +"block" tag +--TEMPLATE-- +{% extends "foo.twig" %} + +{% block content %} + {% block subcontent %} + {% block subsubcontent %} + SUBSUBCONTENT + {% endblock %} + {% endblock %} +{% endblock %} +--TEMPLATE(foo.twig)-- +{% block content %} + {% block subcontent %} + SUBCONTENT + {% endblock %} +{% endblock %} +--DATA-- +return array() +--EXPECT-- +SUBSUBCONTENT diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/nested_blocks_parent_only.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/nested_blocks_parent_only.test new file mode 100644 index 0000000..0ad11d0 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/nested_blocks_parent_only.test @@ -0,0 +1,15 @@ +--TEST-- +"block" tag +--TEMPLATE-- +{% block content %} + CONTENT + {%- block subcontent -%} + SUBCONTENT + {%- endblock -%} + ENDCONTENT +{% endblock %} +--TEMPLATE(foo.twig)-- +--DATA-- +return array() +--EXPECT-- +CONTENTSUBCONTENTENDCONTENT diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/nested_inheritance.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/nested_inheritance.test new file mode 100644 index 0000000..71e3cdf --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/nested_inheritance.test @@ -0,0 +1,16 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% extends "layout.twig" %} +{% block inside %}INSIDE{% endblock inside %} +--TEMPLATE(layout.twig)-- +{% extends "base.twig" %} +{% block body %} + {% block inside '' %} +{% endblock body %} +--TEMPLATE(base.twig)-- +{% block body '' %} +--DATA-- +return array() +--EXPECT-- +INSIDE diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent.test new file mode 100644 index 0000000..4f975db --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent.test @@ -0,0 +1,12 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% extends "foo.twig" %} + +{% block content %}{{ parent() }}FOO{{ parent() }}{% endblock %} +--TEMPLATE(foo.twig)-- +{% block content %}BAR{% endblock %} +--DATA-- +return array() +--EXPECT-- +BARFOOBAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_change.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_change.test new file mode 100644 index 0000000..a8bc90c --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_change.test @@ -0,0 +1,16 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% extends foo ? 'foo.twig' : 'bar.twig' %} +--TEMPLATE(foo.twig)-- +FOO +--TEMPLATE(bar.twig)-- +BAR +--DATA-- +return array('foo' => true) +--EXPECT-- +FOO +--DATA-- +return array('foo' => false) +--EXPECT-- +BAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_in_a_block.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_in_a_block.test new file mode 100644 index 0000000..cca6dbc --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_in_a_block.test @@ -0,0 +1,8 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% block content %} + {% extends "foo.twig" %} +{% endblock %} +--EXCEPTION-- +Twig_Error_Syntax: Cannot extend from a block in "index.twig" at line 3. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_isolation.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_isolation.test new file mode 100644 index 0000000..6281671 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_isolation.test @@ -0,0 +1,20 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% extends "base.twig" %} +{% block content %}{% include "included.twig" %}{% endblock %} + +{% block footer %}Footer{% endblock %} +--TEMPLATE(included.twig)-- +{% extends "base.twig" %} +{% block content %}Included Content{% endblock %} +--TEMPLATE(base.twig)-- +{% block content %}Default Content{% endblock %} + +{% block footer %}Default Footer{% endblock %} +--DATA-- +return array() +--EXPECT-- +Included Content +Default Footer +Footer diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_nested.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_nested.test new file mode 100644 index 0000000..71e7c20 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_nested.test @@ -0,0 +1,28 @@ +--TEST-- +"extends" tag +--TEMPLATE-- +{% extends "foo.twig" %} + +{% block content %} + {% block inside %} + INSIDE OVERRIDDEN + {% endblock %} + + BEFORE + {{ parent() }} + AFTER +{% endblock %} +--TEMPLATE(foo.twig)-- +{% block content %} + BAR +{% endblock %} +--DATA-- +return array() +--EXPECT-- + +INSIDE OVERRIDDEN + + BEFORE + BAR + + AFTER diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_without_extends.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_without_extends.test new file mode 100644 index 0000000..e29b1ac --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_without_extends.test @@ -0,0 +1,8 @@ +--TEST-- +"parent" tag +--TEMPLATE-- +{% block content %} + {{ parent() }} +{% endblock %} +--EXCEPTION-- +Twig_Error_Syntax: Calling "parent" on a template that does not extend nor "use" another template is forbidden in "index.twig" at line 3. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_without_extends_but_traits.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_without_extends_but_traits.test new file mode 100644 index 0000000..63c7305 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/parent_without_extends_but_traits.test @@ -0,0 +1,14 @@ +--TEST-- +"parent" tag +--TEMPLATE-- +{% use 'foo.twig' %} + +{% block content %} + {{ parent() }} +{% endblock %} +--TEMPLATE(foo.twig)-- +{% block content %}BAR{% endblock %} +--DATA-- +return array() +--EXPECT-- +BAR diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/template_instance.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/template_instance.test new file mode 100644 index 0000000..d1876a5 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/template_instance.test @@ -0,0 +1,14 @@ +--TEST-- +"extends" tag accepts Twig_Template instance +--TEMPLATE-- +{% extends foo %} + +{% block content %} +{{ parent() }}FOO +{% endblock %} +--TEMPLATE(foo.twig)-- +{% block content %}BAR{% endblock %} +--DATA-- +return array('foo' => $twig->loadTemplate('foo.twig')) +--EXPECT-- +BARFOO diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/use.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/use.test new file mode 100644 index 0000000..8f9ece7 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/inheritance/use.test @@ -0,0 +1,44 @@ +--TEST-- +"parent" function +--TEMPLATE-- +{% extends "parent.twig" %} + +{% use "use1.twig" %} +{% use "use2.twig" %} + +{% block content_parent %} + {{ parent() }} +{% endblock %} + +{% block content_use1 %} + {{ parent() }} +{% endblock %} + +{% block content_use2 %} + {{ parent() }} +{% endblock %} + +{% block content %} + {{ block('content_use1_only') }} + {{ block('content_use2_only') }} +{% endblock %} +--TEMPLATE(parent.twig)-- +{% block content_parent 'content_parent' %} +{% block content_use1 'content_parent' %} +{% block content_use2 'content_parent' %} +{% block content '' %} +--TEMPLATE(use1.twig)-- +{% block content_use1 'content_use1' %} +{% block content_use2 'content_use1' %} +{% block content_use1_only 'content_use1_only' %} +--TEMPLATE(use2.twig)-- +{% block content_use2 'content_use2' %} +{% block content_use2_only 'content_use2_only' %} +--DATA-- +return array() +--EXPECT-- + content_parent + content_use1 + content_use2 + content_use1_only + content_use2_only diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/basic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/basic.test new file mode 100644 index 0000000..eef0c10 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/basic.test @@ -0,0 +1,17 @@ +--TEST-- +"macro" tag +--TEMPLATE-- +{% import _self as macros %} + +{{ macros.input('username') }} +{{ macros.input('password', null, 'password', 1) }} + +{% macro input(name, value, type, size) %} + +{% endmacro %} +--DATA-- +return array() +--EXPECT-- + + + diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/endmacro_name.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/endmacro_name.test new file mode 100644 index 0000000..ae6203b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/endmacro_name.test @@ -0,0 +1,16 @@ +--TEST-- +"macro" tag supports name for endmacro +--TEMPLATE-- +{% import _self as macros %} + +{{ macros.foo() }} +{{ macros.bar() }} + +{% macro foo() %}foo{% endmacro %} +{% macro bar() %}bar{% endmacro bar %} +--DATA-- +return array() +--EXPECT-- +foo +bar + diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/external.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/external.test new file mode 100644 index 0000000..5cd3dae --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/external.test @@ -0,0 +1,17 @@ +--TEST-- +"macro" tag +--TEMPLATE-- +{% import 'forms.twig' as forms %} + +{{ forms.input('username') }} +{{ forms.input('password', null, 'password', 1) }} +--TEMPLATE(forms.twig)-- +{% macro input(name, value, type, size) %} + +{% endmacro %} +--DATA-- +return array() +--EXPECT-- + + + diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/from.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/from.test new file mode 100644 index 0000000..205f591 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/from.test @@ -0,0 +1,18 @@ +--TEST-- +"macro" tag +--TEMPLATE-- +{% from 'forms.twig' import foo %} +{% from 'forms.twig' import foo as foobar, bar %} + +{{ foo('foo') }} +{{ foobar('foo') }} +{{ bar('foo') }} +--TEMPLATE(forms.twig)-- +{% macro foo(name) %}foo{{ name }}{% endmacro %} +{% macro bar(name) %}bar{{ name }}{% endmacro %} +--DATA-- +return array() +--EXPECT-- +foofoo +foofoo +barfoo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/from_with_reserved_name.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/from_with_reserved_name.test new file mode 100644 index 0000000..2de9765 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/from_with_reserved_name.test @@ -0,0 +1,9 @@ +--TEST-- +"from" tag with reserved name +--TEMPLATE-- +{% from 'forms.twig' import templateName %} +--TEMPLATE(forms.twig)-- +--DATA-- +return array() +--EXCEPTION-- +Twig_Error_Syntax: "templateName" cannot be an imported macro as it is a reserved keyword in "index.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/global.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/global.test new file mode 100644 index 0000000..6b37176 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/global.test @@ -0,0 +1,14 @@ +--TEST-- +"macro" tag +--TEMPLATE-- +{% from 'forms.twig' import foo %} + +{{ foo('foo') }} +{{ foo() }} +--TEMPLATE(forms.twig)-- +{% macro foo(name) %}{{ name|default('foo') }}{{ global }}{% endmacro %} +--DATA-- +return array() +--EXPECT-- +fooglobal +fooglobal diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/import_with_reserved_nam.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/import_with_reserved_nam.test new file mode 100644 index 0000000..7bd93c6 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/import_with_reserved_nam.test @@ -0,0 +1,11 @@ +--TEST-- +"from" tag with reserved name +--TEMPLATE-- +{% import 'forms.twig' as macros %} + +{{ macros.parent() }} +--TEMPLATE(forms.twig)-- +--DATA-- +return array() +--EXCEPTION-- +Twig_Error_Syntax: "parent" cannot be called as macro as it is a reserved keyword in "index.twig" at line 4. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/reserved_name.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/reserved_name.test new file mode 100644 index 0000000..f7c102f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/reserved_name.test @@ -0,0 +1,10 @@ +--TEST-- +"macro" tag with reserved name +--TEMPLATE-- +{% macro parent(arg1, arg2) %} + parent +{% endmacro %} +--DATA-- +return array() +--EXCEPTION-- +Twig_Error_Syntax: "parent" cannot be used as a macro name as it is a reserved keyword in "index.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/self_import.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/self_import.test new file mode 100644 index 0000000..17756cb --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/self_import.test @@ -0,0 +1,17 @@ +--TEST-- +"macro" tag +--TEMPLATE-- +{% import _self as forms %} + +{{ forms.input('username') }} +{{ forms.input('password', null, 'password', 1) }} + +{% macro input(name, value, type, size) %} + +{% endmacro %} +--DATA-- +return array() +--EXPECT-- + + + diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/special_chars.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/special_chars.test new file mode 100644 index 0000000..3721770 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/special_chars.test @@ -0,0 +1,14 @@ +--TEST-- +"§" as a macro name +--TEMPLATE-- +{% import _self as macros %} + +{{ macros.§('foo') }} + +{% macro §(foo) %} + §{{ foo }}§ +{% endmacro %} +--DATA-- +return array() +--EXPECT-- +§foo§ diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/super_globals.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/super_globals.test new file mode 100644 index 0000000..5679462 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/macro/super_globals.test @@ -0,0 +1,14 @@ +--TEST-- +Super globals as macro arguments +--TEMPLATE-- +{% import _self as macros %} + +{{ macros.foo('foo') }} + +{% macro foo(GET) %} + {{ GET }} +{% endmacro %} +--DATA-- +return array() +--EXPECT-- +foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/raw/basic.legacy.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/raw/basic.legacy.test new file mode 100644 index 0000000..0445e85 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/raw/basic.legacy.test @@ -0,0 +1,10 @@ +--TEST-- +"raw" tag +--TEMPLATE-- +{% raw %} +{{ foo }} +{% endraw %} +--DATA-- +return array() +--EXPECT-- +{{ foo }} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/raw/mixed_usage_with_raw.legacy.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/raw/mixed_usage_with_raw.legacy.test new file mode 100644 index 0000000..99deefc --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/raw/mixed_usage_with_raw.legacy.test @@ -0,0 +1,10 @@ +--TEST-- +"raw" tag +--TEMPLATE-- +{% raw %} +{{ foo }} +{% endverbatim %} +--DATA-- +return array() +--EXCEPTION-- +Twig_Error_Syntax: Unexpected end of file: Unclosed "raw" block in "index.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/raw/whitespace_control.legacy.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/raw/whitespace_control.legacy.test new file mode 100644 index 0000000..352bb18 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/raw/whitespace_control.legacy.test @@ -0,0 +1,56 @@ +--TEST-- +"raw" tag +--TEMPLATE-- +1*** + +{%- raw %} + {{ 'bla' }} +{% endraw %} + +1*** +2*** + +{%- raw -%} + {{ 'bla' }} +{% endraw %} + +2*** +3*** + +{%- raw -%} + {{ 'bla' }} +{% endraw -%} + +3*** +4*** + +{%- raw -%} + {{ 'bla' }} +{%- endraw %} + +4*** +5*** + +{%- raw -%} + {{ 'bla' }} +{%- endraw -%} + +5*** +--DATA-- +return array() +--EXPECT-- +1*** + {{ 'bla' }} + + +1*** +2***{{ 'bla' }} + + +2*** +3***{{ 'bla' }} +3*** +4***{{ 'bla' }} + +4*** +5***{{ 'bla' }}5*** diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/sandbox/not_valid1.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/sandbox/not_valid1.test new file mode 100644 index 0000000..dfddc15 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/sandbox/not_valid1.test @@ -0,0 +1,11 @@ +--TEST-- +sandbox tag +--TEMPLATE-- +{%- sandbox %} + {%- include "foo.twig" %} + a +{%- endsandbox %} +--TEMPLATE(foo.twig)-- +foo +--EXCEPTION-- +Twig_Error_Syntax: Only "include" tags are allowed within a "sandbox" section in "index.twig" at line 4. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/sandbox/not_valid2.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/sandbox/not_valid2.test new file mode 100644 index 0000000..a33a13e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/sandbox/not_valid2.test @@ -0,0 +1,14 @@ +--TEST-- +sandbox tag +--TEMPLATE-- +{%- sandbox %} + {%- include "foo.twig" %} + + {% if 1 %} + {%- include "foo.twig" %} + {% endif %} +{%- endsandbox %} +--TEMPLATE(foo.twig)-- +foo +--EXCEPTION-- +Twig_Error_Syntax: Only "include" tags are allowed within a "sandbox" section in "index.twig" at line 5. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/sandbox/simple.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/sandbox/simple.test new file mode 100644 index 0000000..de20f3d --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/sandbox/simple.test @@ -0,0 +1,22 @@ +--TEST-- +sandbox tag +--TEMPLATE-- +{%- sandbox %} + {%- include "foo.twig" %} +{%- endsandbox %} + +{%- sandbox %} + {%- include "foo.twig" %} + {%- include "foo.twig" %} +{%- endsandbox %} + +{%- sandbox %}{% include "foo.twig" %}{% endsandbox %} +--TEMPLATE(foo.twig)-- +foo +--DATA-- +return array() +--EXPECT-- +foo +foo +foo +foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/basic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/basic.test new file mode 100644 index 0000000..a5a9f83 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/basic.test @@ -0,0 +1,20 @@ +--TEST-- +"set" tag +--TEMPLATE-- +{% set foo = 'foo' %} +{% set bar = 'foo
    ' %} + +{{ foo }} +{{ bar }} + +{% set foo, bar = 'foo', 'bar' %} + +{{ foo }}{{ bar }} +--DATA-- +return array() +--EXPECT-- +foo +foo<br /> + + +foobar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/capture-empty.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/capture-empty.test new file mode 100644 index 0000000..ec657f0 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/capture-empty.test @@ -0,0 +1,9 @@ +--TEST-- +"set" tag block empty capture +--TEMPLATE-- +{% set foo %}{% endset %} + +{% if foo %}FAIL{% endif %} +--DATA-- +return array() +--EXPECT-- diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/capture.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/capture.test new file mode 100644 index 0000000..f156a1a --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/capture.test @@ -0,0 +1,10 @@ +--TEST-- +"set" tag block capture +--TEMPLATE-- +{% set foo %}f
    o
    o{% endset %} + +{{ foo }} +--DATA-- +return array() +--EXPECT-- +f
    o
    o diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/expression.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/expression.test new file mode 100644 index 0000000..8ff434a --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/set/expression.test @@ -0,0 +1,12 @@ +--TEST-- +"set" tag +--TEMPLATE-- +{% set foo, bar = 'foo' ~ 'bar', 'bar' ~ 'foo' %} + +{{ foo }} +{{ bar }} +--DATA-- +return array() +--EXPECT-- +foobar +barfoo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/spaceless/simple.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/spaceless/simple.test new file mode 100644 index 0000000..dd06dec --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/spaceless/simple.test @@ -0,0 +1,12 @@ +--TEST-- +"spaceless" tag removes whites between HTML tags +--TEMPLATE-- +{% spaceless %} + +
    foo
    + +{% endspaceless %} +--DATA-- +return array() +--EXPECT-- +
    foo
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/special_chars.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/special_chars.test new file mode 100644 index 0000000..789b4ba --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/special_chars.test @@ -0,0 +1,8 @@ +--TEST-- +"§" custom tag +--TEMPLATE-- +{% § %} +--DATA-- +return array() +--EXPECT-- +§ diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/trim_block.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/trim_block.test new file mode 100644 index 0000000..1d2273f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/trim_block.test @@ -0,0 +1,74 @@ +--TEST-- +Whitespace trimming on tags. +--TEMPLATE-- +{{ 5 * '{#-'|length }} +{{ '{{-'|length * 5 + '{%-'|length }} + +Trim on control tag: +{% for i in range(1, 9) -%} + {{ i }} +{%- endfor %} + + +Trim on output tag: +{% for i in range(1, 9) %} + {{- i -}} +{% endfor %} + + +Trim comments: + +{#- Invisible -#} + +After the comment. + +Trim leading space: +{% if leading %} + + {{- leading }} +{% endif %} + +{%- if leading %} + {{- leading }} + +{%- endif %} + + +Trim trailing space: +{% if trailing -%} + {{ trailing -}} + +{% endif -%} + +Combined: + +{%- if both -%} +
      +
    • {{- both -}}
    • +
    + +{%- endif -%} + +end +--DATA-- +return array('leading' => 'leading space', 'trailing' => 'trailing space', 'both' => 'both') +--EXPECT-- +15 +18 + +Trim on control tag: +123456789 + +Trim on output tag: +123456789 + +Trim comments:After the comment. + +Trim leading space: +leading space +leading space + +Trim trailing space: +trailing spaceCombined:
      +
    • both
    • +
    end diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/aliases.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/aliases.test new file mode 100644 index 0000000..f887006 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/aliases.test @@ -0,0 +1,12 @@ +--TEST-- +"use" tag +--TEMPLATE-- +{% use "blocks.twig" with content as foo %} + +{{ block('foo') }} +--TEMPLATE(blocks.twig)-- +{% block content 'foo' %} +--DATA-- +return array() +--EXPECT-- +foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/basic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/basic.test new file mode 100644 index 0000000..7364d76 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/basic.test @@ -0,0 +1,12 @@ +--TEST-- +"use" tag +--TEMPLATE-- +{% use "blocks.twig" %} + +{{ block('content') }} +--TEMPLATE(blocks.twig)-- +{% block content 'foo' %} +--DATA-- +return array() +--EXPECT-- +foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/deep.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/deep.test new file mode 100644 index 0000000..b551a1e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/deep.test @@ -0,0 +1,22 @@ +--TEST-- +"use" tag +--TEMPLATE-- +{% use "foo.twig" %} + +{{ block('content') }} +{{ block('foo') }} +{{ block('bar') }} +--TEMPLATE(foo.twig)-- +{% use "bar.twig" %} + +{% block content 'foo' %} +{% block foo 'foo' %} +--TEMPLATE(bar.twig)-- +{% block content 'bar' %} +{% block bar 'bar' %} +--DATA-- +return array() +--EXPECT-- +foo +foo +bar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/deep_empty.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/deep_empty.test new file mode 100644 index 0000000..05cca68 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/deep_empty.test @@ -0,0 +1,10 @@ +--TEST-- +"use" tag +--TEMPLATE-- +{% use "foo.twig" %} +--TEMPLATE(foo.twig)-- +{% use "bar.twig" %} +--TEMPLATE(bar.twig)-- +--DATA-- +return array() +--EXPECT-- diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/inheritance.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/inheritance.test new file mode 100644 index 0000000..0d0d470 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/inheritance.test @@ -0,0 +1,25 @@ +--TEST-- +"use" tag +--TEMPLATE-- +{% use "parent.twig" %} + +{{ block('container') }} +--TEMPLATE(parent.twig)-- +{% use "ancestor.twig" %} + +{% block sub_container %} +
    overridden sub_container
    +{% endblock %} +--TEMPLATE(ancestor.twig)-- +{% block container %} +
    {{ block('sub_container') }}
    +{% endblock %} + +{% block sub_container %} +
    sub_container
    +{% endblock %} +--DATA-- +return array() +--EXPECT-- +
    overridden sub_container
    +
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/inheritance2.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/inheritance2.test new file mode 100644 index 0000000..df95599 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/inheritance2.test @@ -0,0 +1,24 @@ +--TEST-- +"use" tag +--TEMPLATE-- +{% use "ancestor.twig" %} +{% use "parent.twig" %} + +{{ block('container') }} +--TEMPLATE(parent.twig)-- +{% block sub_container %} +
    overridden sub_container
    +{% endblock %} +--TEMPLATE(ancestor.twig)-- +{% block container %} +
    {{ block('sub_container') }}
    +{% endblock %} + +{% block sub_container %} +
    sub_container
    +{% endblock %} +--DATA-- +return array() +--EXPECT-- +
    overridden sub_container
    +
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/multiple.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/multiple.test new file mode 100644 index 0000000..198be0c --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/multiple.test @@ -0,0 +1,21 @@ +--TEST-- +"use" tag +--TEMPLATE-- +{% use "foo.twig" %} +{% use "bar.twig" %} + +{{ block('content') }} +{{ block('foo') }} +{{ block('bar') }} +--TEMPLATE(foo.twig)-- +{% block content 'foo' %} +{% block foo 'foo' %} +--TEMPLATE(bar.twig)-- +{% block content 'bar' %} +{% block bar 'bar' %} +--DATA-- +return array() +--EXPECT-- +bar +foo +bar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/multiple_aliases.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/multiple_aliases.test new file mode 100644 index 0000000..8de871a --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/multiple_aliases.test @@ -0,0 +1,23 @@ +--TEST-- +"use" tag +--TEMPLATE-- +{% use "foo.twig" with content as foo_content %} +{% use "bar.twig" %} + +{{ block('content') }} +{{ block('foo') }} +{{ block('bar') }} +{{ block('foo_content') }} +--TEMPLATE(foo.twig)-- +{% block content 'foo' %} +{% block foo 'foo' %} +--TEMPLATE(bar.twig)-- +{% block content 'bar' %} +{% block bar 'bar' %} +--DATA-- +return array() +--EXPECT-- +bar +foo +bar +foo diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block.test new file mode 100644 index 0000000..59db23d --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block.test @@ -0,0 +1,24 @@ +--TEST-- +"use" tag +--TEMPLATE-- +{% use 'file2.html.twig' with foobar as base_base_foobar %} +{% block foobar %} + {{- block('base_base_foobar') -}} + Content of block (second override) +{% endblock foobar %} +--TEMPLATE(file2.html.twig)-- +{% use 'file1.html.twig' with foobar as base_foobar %} +{% block foobar %} + {{- block('base_foobar') -}} + Content of block (first override) +{% endblock foobar %} +--TEMPLATE(file1.html.twig)-- +{% block foobar -%} + Content of block +{% endblock foobar %} +--DATA-- +return array() +--EXPECT-- +Content of block +Content of block (first override) +Content of block (second override) diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block2.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block2.test new file mode 100644 index 0000000..d3f302d --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block2.test @@ -0,0 +1,24 @@ +--TEST-- +"use" tag +--TEMPLATE-- +{% use 'file2.html.twig'%} +{% block foobar %} + {{- parent() -}} + Content of block (second override) +{% endblock foobar %} +--TEMPLATE(file2.html.twig)-- +{% use 'file1.html.twig' %} +{% block foobar %} + {{- parent() -}} + Content of block (first override) +{% endblock foobar %} +--TEMPLATE(file1.html.twig)-- +{% block foobar -%} + Content of block +{% endblock foobar %} +--DATA-- +return array() +--EXPECT-- +Content of block +Content of block (first override) +Content of block (second override) diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block3.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block3.test new file mode 100644 index 0000000..95b55a4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/use/parent_block3.test @@ -0,0 +1,38 @@ +--TEST-- +"use" tag +--TEMPLATE-- +{% use 'file2.html.twig' %} +{% use 'file1.html.twig' with foo %} +{% block foo %} + {{- parent() -}} + Content of foo (second override) +{% endblock foo %} +{% block bar %} + {{- parent() -}} + Content of bar (second override) +{% endblock bar %} +--TEMPLATE(file2.html.twig)-- +{% use 'file1.html.twig' %} +{% block foo %} + {{- parent() -}} + Content of foo (first override) +{% endblock foo %} +{% block bar %} + {{- parent() -}} + Content of bar (first override) +{% endblock bar %} +--TEMPLATE(file1.html.twig)-- +{% block foo -%} + Content of foo +{% endblock foo %} +{% block bar -%} + Content of bar +{% endblock bar %} +--DATA-- +return array() +--EXPECT-- +Content of foo +Content of foo (first override) +Content of foo (second override) +Content of bar +Content of bar (second override) diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/basic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/basic.test new file mode 100644 index 0000000..a95be55 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/basic.test @@ -0,0 +1,10 @@ +--TEST-- +"verbatim" tag +--TEMPLATE-- +{% verbatim %} +{{ foo }} +{% endverbatim %} +--DATA-- +return array() +--EXPECT-- +{{ foo }} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/mixed_usage_with_raw.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/mixed_usage_with_raw.test new file mode 100644 index 0000000..28626a8 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/mixed_usage_with_raw.test @@ -0,0 +1,10 @@ +--TEST-- +"verbatim" tag +--TEMPLATE-- +{% verbatim %} +{{ foo }} +{% endraw %} +--DATA-- +return array() +--EXCEPTION-- +Twig_Error_Syntax: Unexpected end of file: Unclosed "verbatim" block in "index.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/whitespace_control.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/whitespace_control.test new file mode 100644 index 0000000..eb61044 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/verbatim/whitespace_control.test @@ -0,0 +1,56 @@ +--TEST-- +"verbatim" tag +--TEMPLATE-- +1*** + +{%- verbatim %} + {{ 'bla' }} +{% endverbatim %} + +1*** +2*** + +{%- verbatim -%} + {{ 'bla' }} +{% endverbatim %} + +2*** +3*** + +{%- verbatim -%} + {{ 'bla' }} +{% endverbatim -%} + +3*** +4*** + +{%- verbatim -%} + {{ 'bla' }} +{%- endverbatim %} + +4*** +5*** + +{%- verbatim -%} + {{ 'bla' }} +{%- endverbatim -%} + +5*** +--DATA-- +return array() +--EXPECT-- +1*** + {{ 'bla' }} + + +1*** +2***{{ 'bla' }} + + +2*** +3***{{ 'bla' }} +3*** +4***{{ 'bla' }} + +4*** +5***{{ 'bla' }}5*** diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/basic.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/basic.test new file mode 100644 index 0000000..264ca5e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/basic.test @@ -0,0 +1,13 @@ +--TEST-- +"with" tag +--TEMPLATE-- +{% with %} + {% set bar = 'BAZ' %} + {{ foo }}{{ bar }} +{% endwith %} +{{ foo }}{{ bar }} +--DATA-- +return array('foo' => 'foo', 'bar' => 'bar') +--EXPECT-- +fooBAZ +foobar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/expression.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/expression.test new file mode 100644 index 0000000..32ed091 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/expression.test @@ -0,0 +1,10 @@ +--TEST-- +"with" tag with expression +--TEMPLATE-- +{% with {foo: 'foo', bar: 'BAZ'} %} + {{ foo }}{{ bar }} +{% endwith %} +--DATA-- +return array('foo' => 'baz') +--EXPECT-- +fooBAZ diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/nested.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/nested.test new file mode 100644 index 0000000..98e3aef --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/nested.test @@ -0,0 +1,15 @@ +--TEST-- +nested "with" tags +--TEMPLATE-- +{% set foo, bar = 'foo', 'bar' %} +{% with {bar: 'BAZ'} %} + {% with {foo: 'FOO'} %} + {{ foo }}{{ bar }} + {% endwith %} +{% endwith %} +{{ foo }}{{ bar }} +--DATA-- +return array() +--EXPECT-- +FOOBAZ + foobar diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/with_no_hash.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/with_no_hash.test new file mode 100644 index 0000000..93689f4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/with_no_hash.test @@ -0,0 +1,10 @@ +--TEST-- +"with" tag with an expression that is not a hash +--TEMPLATE-- +{% with vars %} + {{ foo }}{{ bar }} +{% endwith %} +--DATA-- +return array('vars' => 'no-hash') +--EXCEPTION-- +Twig_Error_Runtime: Variables passed to the "with" tag must be a hash in "index.twig" at line 2. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/with_only.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/with_only.test new file mode 100644 index 0000000..6247617 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tags/with/with_only.test @@ -0,0 +1,10 @@ +--TEST-- +"with" tag with expression and only +--TEMPLATE-- +{% with {foo: 'foo', bar: 'BAZ'} only %} + {{ foo }}{{ bar }}{{ baz }} +{% endwith %} +--DATA-- +return array('foo' => 'baz', 'baz' => 'baz') +--EXCEPTION-- +Twig_Error_Runtime: Variable "baz" does not exist in "index.twig" at line 3. diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/array.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/array.test new file mode 100644 index 0000000..1429d37 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/array.test @@ -0,0 +1,24 @@ +--TEST-- +array index test +--TEMPLATE-- +{% for key, value in days %} +{{ key }} +{% endfor %} +--DATA-- +return array('days' => array( + 1 => array('money' => 9), + 2 => array('money' => 21), + 3 => array('money' => 38), + 4 => array('money' => 6), + 18 => array('money' => 6), + 19 => array('money' => 3), + 31 => array('money' => 11), +)); +--EXPECT-- +1 +2 +3 +4 +18 +19 +31 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/constant.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/constant.test new file mode 100644 index 0000000..60218ac --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/constant.test @@ -0,0 +1,14 @@ +--TEST-- +"const" test +--TEMPLATE-- +{{ 8 is constant('E_NOTICE') ? 'ok' : 'no' }} +{{ 'bar' is constant('TwigTestFoo::BAR_NAME') ? 'ok' : 'no' }} +{{ value is constant('TwigTestFoo::BAR_NAME') ? 'ok' : 'no' }} +{{ 2 is constant('ARRAY_AS_PROPS', object) ? 'ok' : 'no' }} +--DATA-- +return array('value' => 'bar', 'object' => new ArrayObject(array('hi'))); +--EXPECT-- +ok +ok +ok +ok \ No newline at end of file diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined.test new file mode 100644 index 0000000..d4e204e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined.test @@ -0,0 +1,129 @@ +--TEST-- +"defined" test +--TEMPLATE-- +{{ definedVar is defined ? 'ok' : 'ko' }} +{{ definedVar is not defined ? 'ko' : 'ok' }} +{{ undefinedVar is defined ? 'ko' : 'ok' }} +{{ undefinedVar is not defined ? 'ok' : 'ko' }} +{{ zeroVar is defined ? 'ok' : 'ko' }} +{{ nullVar is defined ? 'ok' : 'ko' }} +{{ nested.definedVar is defined ? 'ok' : 'ko' }} +{{ nested['definedVar'] is defined ? 'ok' : 'ko' }} +{{ nested.definedVar is not defined ? 'ko' : 'ok' }} +{{ nested.undefinedVar is defined ? 'ko' : 'ok' }} +{{ nested['undefinedVar'] is defined ? 'ko' : 'ok' }} +{{ nested.undefinedVar is not defined ? 'ok' : 'ko' }} +{{ nested.zeroVar is defined ? 'ok' : 'ko' }} +{{ nested.nullVar is defined ? 'ok' : 'ko' }} +{{ nested.definedArray.0 is defined ? 'ok' : 'ko' }} +{{ nested['definedArray'][0] is defined ? 'ok' : 'ko' }} +{{ object.foo is defined ? 'ok' : 'ko' }} +{{ object.undefinedMethod is defined ? 'ko' : 'ok' }} +{{ object.getFoo() is defined ? 'ok' : 'ko' }} +{{ object.getFoo('a') is defined ? 'ok' : 'ko' }} +{{ object.undefinedMethod() is defined ? 'ko' : 'ok' }} +{{ object.undefinedMethod('a') is defined ? 'ko' : 'ok' }} +{{ object.self.foo is defined ? 'ok' : 'ko' }} +{{ object.self.undefinedMethod is defined ? 'ko' : 'ok' }} +{{ object.undefinedMethod.self is defined ? 'ko' : 'ok' }} +{{ 0 is defined ? 'ok' : 'ko' }} +{{ "foo" is defined ? 'ok' : 'ko' }} +{{ true is defined ? 'ok' : 'ko' }} +{{ false is defined ? 'ok' : 'ko' }} +{{ null is defined ? 'ok' : 'ko' }} +{{ [1, 2] is defined ? 'ok' : 'ko' }} +{{ { foo: "bar" } is defined ? 'ok' : 'ko' }} +--DATA-- +return array( + 'definedVar' => 'defined', + 'zeroVar' => 0, + 'nullVar' => null, + 'nested' => array( + 'definedVar' => 'defined', + 'zeroVar' => 0, + 'nullVar' => null, + 'definedArray' => array(0), + ), + 'object' => new TwigTestFoo(), +); +--EXPECT-- +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +--DATA-- +return array( + 'definedVar' => 'defined', + 'zeroVar' => 0, + 'nullVar' => null, + 'nested' => array( + 'definedVar' => 'defined', + 'zeroVar' => 0, + 'nullVar' => null, + 'definedArray' => array(0), + ), + 'object' => new TwigTestFoo(), +); +--CONFIG-- +return array('strict_variables' => false) +--EXPECT-- +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_attribute.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_attribute.test new file mode 100644 index 0000000..4a5b8dc --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_attribute.test @@ -0,0 +1,35 @@ +--TEST-- +"defined" support for attribute +--TEMPLATE-- +{{ attribute(nested, "definedVar") is defined ? 'ok' : 'ko' }} +{{ attribute(nested, "undefinedVar") is not defined ? 'ok' : 'ko' }} +{{ attribute(nested, definedVarName) is defined ? 'ok' : 'ko' }} +{{ attribute(nested, undefinedVarName) is not defined ? 'ok' : 'ko' }} +--DATA-- +return array( + 'nested' => array( + 'definedVar' => 'defined', + ), + 'definedVarName' => 'definedVar', + 'undefinedVarName' => 'undefinedVar', +); +--EXPECT-- +ok +ok +ok +ok +--DATA-- +return array( + 'nested' => array( + 'definedVar' => 'defined', + ), + 'definedVarName' => 'definedVar', + 'undefinedVarName' => 'undefinedVar', +); +--CONFIG-- +return array('strict_variables' => false) +--EXPECT-- +ok +ok +ok +ok diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_blocks.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_blocks.test new file mode 100644 index 0000000..64d7d04 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_blocks.test @@ -0,0 +1,38 @@ +--TEST-- +"defined" support for blocks +--TEMPLATE-- +{% extends 'parent' %} +{% block icon %}icon{% endblock %} +{% block body %} + {{ parent() }} + {{ block('foo') is defined ? 'ok' : 'ko' }} + {{ block('footer') is defined ? 'ok' : 'ko' }} + {{ block('icon') is defined ? 'ok' : 'ko' }} + {{ block('block1') is defined ? 'ok' : 'ko' }} + {%- embed 'embed' %} + {% block content %}content{% endblock %} + {% endembed %} +{% endblock %} +{% use 'blocks' %} +--TEMPLATE(parent)-- +{% block body %} + {{ block('icon') is defined ? 'ok' : 'ko' -}} +{% endblock %} +{% block footer %}{% endblock %} +--TEMPLATE(embed)-- +{{ block('icon') is defined ? 'ok' : 'ko' }} +{{ block('content') is defined ? 'ok' : 'ko' }} +{{ block('block1') is defined ? 'ok' : 'ko' }} +--TEMPLATE(blocks)-- +{% block block1 %}{%endblock %} +--DATA-- +return array() +--EXPECT-- +ok + ko + ok + ok + ok +ko +ok +ko diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_blocks_with_template.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_blocks_with_template.test new file mode 100644 index 0000000..2c65165 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_blocks_with_template.test @@ -0,0 +1,17 @@ +--TEST-- +"defined" support for blocks with a template argument +--TEMPLATE-- +{{ block('foo', 'included.twig') is defined ? 'ok' : 'ko' }} +{{ block('foo', included_loaded) is defined ? 'ok' : 'ko' }} +{{ block('foo', included_loaded_internal) is defined ? 'ok' : 'ko' }} +--TEMPLATE(included.twig)-- +{% block foo %}FOO{% endblock %} +--DATA-- +return array( + 'included_loaded' => $twig->load('included.twig'), + 'included_loaded_internal' => $twig->loadTemplate('included.twig'), +) +--EXPECT-- +ok +ok +ok diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_constants.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_constants.test new file mode 100644 index 0000000..2fa9929 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/defined_for_constants.test @@ -0,0 +1,14 @@ +--TEST-- +"defined" support for constants +--TEMPLATE-- +{{ constant('DATE_W3C') is defined ? 'ok' : 'ko' }} +{{ constant('ARRAY_AS_PROPS', object) is defined ? 'ok' : 'ko' }} +{{ constant('FOOBAR') is not defined ? 'ok' : 'ko' }} +{{ constant('FOOBAR', object) is not defined ? 'ok' : 'ko' }} +--DATA-- +return array('expect' => DATE_W3C, 'object' => new ArrayObject(array('hi'))); +--EXPECT-- +ok +ok +ok +ok diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/empty.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/empty.test new file mode 100644 index 0000000..807c0ed --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/empty.test @@ -0,0 +1,42 @@ +--TEST-- +"empty" test +--TEMPLATE-- +{{ string_empty is empty ? 'ok' : 'ko' }} +{{ string_zero is empty ? 'ko' : 'ok' }} +{{ value_null is empty ? 'ok' : 'ko' }} +{{ value_false is empty ? 'ok' : 'ko' }} +{{ value_int_zero is empty ? 'ko' : 'ok' }} +{{ array_empty is empty ? 'ok' : 'ko' }} +{{ array_not_empty is empty ? 'ko' : 'ok' }} +{{ magically_callable is empty ? 'ko' : 'ok' }} +{{ countable_empty is empty ? 'ok' : 'ko' }} +{{ countable_not_empty is empty ? 'ko' : 'ok' }} +{{ tostring_empty is empty ? 'ok' : 'ko' }} +{{ tostring_not_empty is empty ? 'ko' : 'ok' }} +{{ markup_empty is empty ? 'ok' : 'ko' }} +{{ markup_not_empty is empty ? 'ko' : 'ok' }} +--DATA-- +return array( + 'string_empty' => '', 'string_zero' => '0', + 'value_null' => null, 'value_false' => false, 'value_int_zero' => 0, + 'array_empty' => array(), 'array_not_empty' => array(1, 2), + 'magically_callable' => new MagicCallStub(), + 'countable_empty' => new CountableStub(array()), 'countable_not_empty' => new CountableStub(array(1, 2)), + 'tostring_empty' => new ToStringStub(''), 'tostring_not_empty' => new ToStringStub('0' /* edge case of using "0" as the string */), + 'markup_empty' => new Twig_Markup('', 'UTF-8'), 'markup_not_empty' => new Twig_Markup('test', 'UTF-8'), +); +--EXPECT-- +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok +ok diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/even.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/even.test new file mode 100644 index 0000000..695b4c2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/even.test @@ -0,0 +1,14 @@ +--TEST-- +"even" test +--TEMPLATE-- +{{ 1 is even ? 'ko' : 'ok' }} +{{ 2 is even ? 'ok' : 'ko' }} +{{ 1 is not even ? 'ok' : 'ko' }} +{{ 2 is not even ? 'ko' : 'ok' }} +--DATA-- +return array() +--EXPECT-- +ok +ok +ok +ok diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/in.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/in.test new file mode 100644 index 0000000..545f51f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/in.test @@ -0,0 +1,128 @@ +--TEST-- +Twig supports the in operator +--TEMPLATE-- +{% if bar in foo %} +TRUE +{% endif %} +{% if not (bar in foo) %} +{% else %} +TRUE +{% endif %} +{% if bar not in foo %} +{% else %} +TRUE +{% endif %} +{% if 'a' in bar %} +TRUE +{% endif %} +{% if 'c' not in bar %} +TRUE +{% endif %} +{% if '' in bar %} +TRUE +{% endif %} +{% if '' in '' %} +TRUE +{% endif %} +{% if '0' not in '' %} +TRUE +{% endif %} +{% if 'a' not in '0' %} +TRUE +{% endif %} +{% if '0' in '0' %} +TRUE +{% endif %} + +{{ false in [0, 1] ? 'TRUE' : 'FALSE' }} +{{ true in [0, 1] ? 'TRUE' : 'FALSE' }} +{{ '0' in [0, 1] ? 'TRUE' : 'FALSE' }} +{{ '' in [0, 1] ? 'TRUE' : 'FALSE' }} +{{ 0 in ['', 1] ? 'TRUE' : 'FALSE' }} + +{{ '' in 'foo' ? 'TRUE' : 'FALSE' }} +{{ 0 in 'foo' ? 'TRUE' : 'FALSE' }} +{{ false in 'foo' ? 'TRUE' : 'FALSE' }} +{{ false in '100' ? 'TRUE' : 'FALSE' }} +{{ true in '100' ? 'TRUE' : 'FALSE' }} + +{{ [] in [true, false] ? 'TRUE' : 'FALSE' }} +{{ [] in [true, ''] ? 'TRUE' : 'FALSE' }} +{{ [] in [true, []] ? 'TRUE' : 'FALSE' }} + +{{ resource ? 'TRUE' : 'FALSE' }} +{{ resource in 'foo'~resource ? 'TRUE' : 'FALSE' }} +{{ object in 'stdClass' ? 'TRUE' : 'FALSE' }} +{{ [] in 'Array' ? 'TRUE' : 'FALSE' }} +{{ dir_object in 'foo'~dir_object ? 'TRUE' : 'FALSE' }} + +{{ ''~resource in resource ? 'TRUE' : 'FALSE' }} +{{ 'stdClass' in object ? 'TRUE' : 'FALSE' }} +{{ 'Array' in [] ? 'TRUE' : 'FALSE' }} +{{ ''~dir_object in dir_object ? 'TRUE' : 'FALSE' }} + +{{ resource in [''~resource] ? 'TRUE' : 'FALSE' }} +{{ resource in [resource + 1 - 1] ? 'TRUE' : 'FALSE' }} +{{ dir_object in [''~dir_object] ? 'TRUE' : 'FALSE' }} + +{{ 5 in 125 ? 'TRUE' : 'FALSE' }} +{{ 5 in '125' ? 'TRUE' : 'FALSE' }} +{{ '5' in 125 ? 'TRUE' : 'FALSE' }} +{{ '5' in '125' ? 'TRUE' : 'FALSE' }} + +{{ 5.5 in 125.5 ? 'TRUE' : 'FALSE' }} +{{ 5.5 in '125.5' ? 'TRUE' : 'FALSE' }} +{{ '5.5' in 125.5 ? 'TRUE' : 'FALSE' }} +--DATA-- +return array('bar' => 'bar', 'foo' => array('bar' => 'bar'), 'dir_object' => new SplFileInfo(dirname(__FILE__)), 'object' => new stdClass(), 'resource' => opendir(dirname(__FILE__))) +--EXPECT-- +TRUE +TRUE +TRUE +TRUE +TRUE +TRUE +TRUE +TRUE +TRUE +TRUE + +TRUE +TRUE +TRUE +TRUE +TRUE + +TRUE +FALSE +FALSE +FALSE +FALSE + +TRUE +FALSE +TRUE + +TRUE +FALSE +FALSE +FALSE +FALSE + +FALSE +FALSE +FALSE +FALSE + +FALSE +FALSE +FALSE + +FALSE +TRUE +FALSE +TRUE + +FALSE +TRUE +FALSE diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/in_with_objects.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/in_with_objects.test new file mode 100644 index 0000000..8e08061 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/in_with_objects.test @@ -0,0 +1,19 @@ +--TEST-- +Twig supports the in operator when using objects +--TEMPLATE-- +{% if object in object_list %} +TRUE +{% endif %} +--DATA-- +$foo = new TwigTestFoo(); +$foo1 = new TwigTestFoo(); + +$foo->position = $foo1; +$foo1->position = $foo; + +return array( + 'object' => $foo, + 'object_list' => array($foo1, $foo), +); +--EXPECT-- +TRUE diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/iterable.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/iterable.test new file mode 100644 index 0000000..ec52550 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/iterable.test @@ -0,0 +1,19 @@ +--TEST-- +"iterable" test +--TEMPLATE-- +{{ foo is iterable ? 'ok' : 'ko' }} +{{ traversable is iterable ? 'ok' : 'ko' }} +{{ obj is iterable ? 'ok' : 'ko' }} +{{ val is iterable ? 'ok' : 'ko' }} +--DATA-- +return array( + 'foo' => array(), + 'traversable' => new ArrayIterator(array()), + 'obj' => new stdClass(), + 'val' => 'test', +); +--EXPECT-- +ok +ok +ko +ko \ No newline at end of file diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/null_coalesce.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/null_coalesce.test new file mode 100644 index 0000000..3d148c8 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/null_coalesce.test @@ -0,0 +1,30 @@ +--TEST-- +Twig supports the ?? operator +--TEMPLATE-- +{{ 'OK' ?? 'KO' }} +{{ null ?? 'OK' }} +{{ bar ?? 'KO' }} +{{ baz ?? 'OK' }} +{{ foo.bar ?? 'KO' }} +{{ foo.missing ?? 'OK' }} +{{ foo.bar.baz.missing ?? 'OK' }} +{{ foo['bar'] ?? 'KO' }} +{{ foo['missing'] ?? 'OK' }} +{{ nope ?? nada ?? 'OK' }} +{{ 1 + nope ?? nada ?? 2 }} +{{ 1 + nope ?? 3 + nada ?? 2 }} +--DATA-- +return array('bar' => 'OK', 'foo' => array('bar' => 'OK')) +--EXPECT-- +OK +OK +OK +OK +OK +OK +OK +OK +OK +OK +3 +6 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/odd.test b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/odd.test new file mode 100644 index 0000000..1b8311e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Fixtures/tests/odd.test @@ -0,0 +1,10 @@ +--TEST-- +"odd" test +--TEMPLATE-- +{{ 1 is odd ? 'ok' : 'ko' }} +{{ 2 is odd ? 'ko' : 'ok' }} +--DATA-- +return array() +--EXPECT-- +ok +ok \ No newline at end of file diff --git a/system/vendor/twig/twig/test/Twig/Tests/IntegrationTest.php b/system/vendor/twig/twig/test/Twig/Tests/IntegrationTest.php new file mode 100644 index 0000000..5d20112 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/IntegrationTest.php @@ -0,0 +1,309 @@ +position = 0; + } + + public function current() + { + return $this->array[$this->position]; + } + + public function key() + { + return 'a'; + } + + public function next() + { + ++$this->position; + } + + public function valid() + { + return isset($this->array[$this->position]); + } +} + +class TwigTestTokenParser_§ extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); + + return new Twig_Node_Print(new Twig_Node_Expression_Constant('§', -1), -1); + } + + public function getTag() + { + return '§'; + } +} + +class TwigTestExtension extends Twig_Extension +{ + public function getTokenParsers() + { + return array( + new TwigTestTokenParser_§(), + ); + } + + public function getFilters() + { + return array( + new Twig_SimpleFilter('§', array($this, '§Filter')), + new Twig_SimpleFilter('escape_and_nl2br', array($this, 'escape_and_nl2br'), array('needs_environment' => true, 'is_safe' => array('html'))), + new Twig_SimpleFilter('nl2br', array($this, 'nl2br'), array('pre_escape' => 'html', 'is_safe' => array('html'))), + new Twig_SimpleFilter('escape_something', array($this, 'escape_something'), array('is_safe' => array('something'))), + new Twig_SimpleFilter('preserves_safety', array($this, 'preserves_safety'), array('preserves_safety' => array('html'))), + new Twig_SimpleFilter('static_call_string', 'TwigTestExtension::staticCall'), + new Twig_SimpleFilter('static_call_array', array('TwigTestExtension', 'staticCall')), + new Twig_SimpleFilter('magic_call', array($this, 'magicCall')), + new Twig_SimpleFilter('magic_call_string', 'TwigTestExtension::magicStaticCall'), + new Twig_SimpleFilter('magic_call_array', array('TwigTestExtension', 'magicStaticCall')), + new Twig_SimpleFilter('*_path', array($this, 'dynamic_path')), + new Twig_SimpleFilter('*_foo_*_bar', array($this, 'dynamic_foo')), + ); + } + + public function getFunctions() + { + return array( + new Twig_SimpleFunction('§', array($this, '§Function')), + new Twig_SimpleFunction('safe_br', array($this, 'br'), array('is_safe' => array('html'))), + new Twig_SimpleFunction('unsafe_br', array($this, 'br')), + new Twig_SimpleFunction('static_call_string', 'TwigTestExtension::staticCall'), + new Twig_SimpleFunction('static_call_array', array('TwigTestExtension', 'staticCall')), + new Twig_SimpleFunction('*_path', array($this, 'dynamic_path')), + new Twig_SimpleFunction('*_foo_*_bar', array($this, 'dynamic_foo')), + ); + } + + public function getTests() + { + return array( + new Twig_SimpleTest('multi word', array($this, 'is_multi_word')), + ); + } + + public function §Filter($value) + { + return "§{$value}§"; + } + + public function §Function($value) + { + return "§{$value}§"; + } + + /** + * nl2br which also escapes, for testing escaper filters. + */ + public function escape_and_nl2br($env, $value, $sep = '
    ') + { + return $this->nl2br(twig_escape_filter($env, $value, 'html'), $sep); + } + + /** + * nl2br only, for testing filters with pre_escape. + */ + public function nl2br($value, $sep = '
    ') + { + // not secure if $value contains html tags (not only entities) + // don't use + return str_replace("\n", "$sep\n", $value); + } + + public function dynamic_path($element, $item) + { + return $element.'/'.$item; + } + + public function dynamic_foo($foo, $bar, $item) + { + return $foo.'/'.$bar.'/'.$item; + } + + public function escape_something($value) + { + return strtoupper($value); + } + + public function preserves_safety($value) + { + return strtoupper($value); + } + + public static function staticCall($value) + { + return "*$value*"; + } + + public function br() + { + return '
    '; + } + + public function is_multi_word($value) + { + return false !== strpos($value, ' '); + } + + public function __call($method, $arguments) + { + if ('magicCall' !== $method) { + throw new BadMethodCallException('Unexpected call to __call'); + } + + return 'magic_'.$arguments[0]; + } + + public static function __callStatic($method, $arguments) + { + if ('magicStaticCall' !== $method) { + throw new BadMethodCallException('Unexpected call to __callStatic'); + } + + return 'static_magic_'.$arguments[0]; + } +} + +/** + * This class is used in tests for the "length" filter and "empty" test. It asserts that __call is not + * used to convert such objects to strings. + */ +class MagicCallStub +{ + public function __call($name, $args) + { + throw new Exception('__call shall not be called'); + } +} + +class ToStringStub +{ + /** + * @var string + */ + private $string; + + public function __construct($string) + { + $this->string = $string; + } + + public function __toString() + { + return $this->string; + } +} + +/** + * This class is used in tests for the length filter and empty test to show + * that when \Countable is implemented, it is preferred over the __toString() + * method. + */ +class CountableStub implements \Countable +{ + private $count; + + public function __construct($count) + { + $this->count = $count; + } + + public function count() + { + return $this->count; + } + + public function __toString() + { + throw new Exception('__toString shall not be called on \Countables'); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/LegacyFixtures/autoescape/filename.legacy.test b/system/vendor/twig/twig/test/Twig/Tests/LegacyFixtures/autoescape/filename.legacy.test new file mode 100644 index 0000000..b091ad3 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/LegacyFixtures/autoescape/filename.legacy.test @@ -0,0 +1,18 @@ +--TEST-- +"filename" autoescape strategy +--TEMPLATE-- +{{ br -}} +{{ include('index.html.twig') -}} +{{ include('index.txt.twig') -}} +--TEMPLATE(index.html.twig)-- +{{ br -}} +--TEMPLATE(index.txt.twig)-- +{{ br -}} +--DATA-- +return array('br' => '
    ') +--CONFIG-- +return array('autoescape' => 'filename') +--EXPECT-- +<br /> +<br /> +
    diff --git a/system/vendor/twig/twig/test/Twig/Tests/LegacyFixtures/functions/undefined_block.legacy.test b/system/vendor/twig/twig/test/Twig/Tests/LegacyFixtures/functions/undefined_block.legacy.test new file mode 100644 index 0000000..62e24f0 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/LegacyFixtures/functions/undefined_block.legacy.test @@ -0,0 +1,12 @@ +--TEST-- +"block" function with undefined block +--TEMPLATE-- +{% extends "base.twig" %} +{% block foo %}{{ parent() }}{{ block('unknown') }}{{ block('bar') }}{% endblock %} +--TEMPLATE(base.twig)-- +{% block foo %}Foo{% endblock %} +{% block bar %}Bar{% endblock %} +--DATA-- +return array() +--EXPECT-- +FooBarBar diff --git a/system/vendor/twig/twig/test/Twig/Tests/LegacyFixtures/test.legacy.test b/system/vendor/twig/twig/test/Twig/Tests/LegacyFixtures/test.legacy.test new file mode 100644 index 0000000..d9c1d50 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/LegacyFixtures/test.legacy.test @@ -0,0 +1,8 @@ +--TEST-- +Old test classes usage +--TEMPLATE-- +{{ 'foo' is multi word ? 'yes' : 'no' }} +--DATA-- +return array() +--EXPECT-- +no diff --git a/system/vendor/twig/twig/test/Twig/Tests/LegacyIntegrationTest.php b/system/vendor/twig/twig/test/Twig/Tests/LegacyIntegrationTest.php new file mode 100644 index 0000000..2ed7580 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/LegacyIntegrationTest.php @@ -0,0 +1,54 @@ + new Twig_Test_Method($this, 'is_multi_word'), + ); + } + + public function is_multi_word($value) + { + return false !== strpos($value, ' '); + } + + public function getName() + { + return 'legacy_integration_test'; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/LexerTest.php b/system/vendor/twig/twig/test/Twig/Tests/LexerTest.php new file mode 100644 index 0000000..c460449 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/LexerTest.php @@ -0,0 +1,347 @@ +getMockBuilder('Twig_LoaderInterface')->getMock())); + $stream = $lexer->tokenize('{{ foo }}', 'foo'); + $this->assertEquals('foo', $stream->getFilename()); + $this->assertEquals('{{ foo }}', $stream->getSource()); + } + + public function testNameLabelForTag() + { + $template = '{% § %}'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $stream = $lexer->tokenize(new Twig_Source($template, 'index')); + + $stream->expect(Twig_Token::BLOCK_START_TYPE); + $this->assertSame('§', $stream->expect(Twig_Token::NAME_TYPE)->getValue()); + } + + public function testNameLabelForFunction() + { + $template = '{{ §() }}'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $stream = $lexer->tokenize(new Twig_Source($template, 'index')); + + $stream->expect(Twig_Token::VAR_START_TYPE); + $this->assertSame('§', $stream->expect(Twig_Token::NAME_TYPE)->getValue()); + } + + public function testBracketsNesting() + { + $template = '{{ {"a":{"b":"c"}} }}'; + + $this->assertEquals(2, $this->countToken($template, Twig_Token::PUNCTUATION_TYPE, '{')); + $this->assertEquals(2, $this->countToken($template, Twig_Token::PUNCTUATION_TYPE, '}')); + } + + protected function countToken($template, $type, $value = null) + { + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $stream = $lexer->tokenize(new Twig_Source($template, 'index')); + + $count = 0; + while (!$stream->isEOF()) { + $token = $stream->next(); + if ($type === $token->getType()) { + if (null === $value || $value === $token->getValue()) { + ++$count; + } + } + } + + return $count; + } + + public function testLineDirective() + { + $template = "foo\n" + ."bar\n" + ."{% line 10 %}\n" + ."{{\n" + ."baz\n" + ."}}\n"; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $stream = $lexer->tokenize(new Twig_Source($template, 'index')); + + // foo\nbar\n + $this->assertSame(1, $stream->expect(Twig_Token::TEXT_TYPE)->getLine()); + // \n (after {% line %}) + $this->assertSame(10, $stream->expect(Twig_Token::TEXT_TYPE)->getLine()); + // {{ + $this->assertSame(11, $stream->expect(Twig_Token::VAR_START_TYPE)->getLine()); + // baz + $this->assertSame(12, $stream->expect(Twig_Token::NAME_TYPE)->getLine()); + } + + public function testLineDirectiveInline() + { + $template = "foo\n" + ."bar{% line 10 %}{{\n" + ."baz\n" + ."}}\n"; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $stream = $lexer->tokenize(new Twig_Source($template, 'index')); + + // foo\nbar + $this->assertSame(1, $stream->expect(Twig_Token::TEXT_TYPE)->getLine()); + // {{ + $this->assertSame(10, $stream->expect(Twig_Token::VAR_START_TYPE)->getLine()); + // baz + $this->assertSame(11, $stream->expect(Twig_Token::NAME_TYPE)->getLine()); + } + + public function testLongComments() + { + $template = '{# '.str_repeat('*', 100000).' #}'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $lexer->tokenize(new Twig_Source($template, 'index')); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without throwing any exceptions + $this->addToAssertionCount(1); + } + + public function testLongVerbatim() + { + $template = '{% verbatim %}'.str_repeat('*', 100000).'{% endverbatim %}'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $lexer->tokenize(new Twig_Source($template, 'index')); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without throwing any exceptions + $this->addToAssertionCount(1); + } + + public function testLongVar() + { + $template = '{{ '.str_repeat('x', 100000).' }}'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $lexer->tokenize(new Twig_Source($template, 'index')); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without throwing any exceptions + $this->addToAssertionCount(1); + } + + public function testLongBlock() + { + $template = '{% '.str_repeat('x', 100000).' %}'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $lexer->tokenize(new Twig_Source($template, 'index')); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without throwing any exceptions + $this->addToAssertionCount(1); + } + + public function testBigNumbers() + { + $template = '{{ 922337203685477580700 }}'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $stream = $lexer->tokenize(new Twig_Source($template, 'index')); + $stream->next(); + $node = $stream->next(); + $this->assertEquals('922337203685477580700', $node->getValue()); + } + + public function testStringWithEscapedDelimiter() + { + $tests = array( + "{{ 'foo \' bar' }}" => 'foo \' bar', + '{{ "foo \" bar" }}' => 'foo " bar', + ); + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + foreach ($tests as $template => $expected) { + $stream = $lexer->tokenize(new Twig_Source($template, 'index')); + $stream->expect(Twig_Token::VAR_START_TYPE); + $stream->expect(Twig_Token::STRING_TYPE, $expected); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without throwing any exceptions + $this->addToAssertionCount(1); + } + } + + public function testStringWithInterpolation() + { + $template = 'foo {{ "bar #{ baz + 1 }" }}'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $stream = $lexer->tokenize(new Twig_Source($template, 'index')); + $stream->expect(Twig_Token::TEXT_TYPE, 'foo '); + $stream->expect(Twig_Token::VAR_START_TYPE); + $stream->expect(Twig_Token::STRING_TYPE, 'bar '); + $stream->expect(Twig_Token::INTERPOLATION_START_TYPE); + $stream->expect(Twig_Token::NAME_TYPE, 'baz'); + $stream->expect(Twig_Token::OPERATOR_TYPE, '+'); + $stream->expect(Twig_Token::NUMBER_TYPE, '1'); + $stream->expect(Twig_Token::INTERPOLATION_END_TYPE); + $stream->expect(Twig_Token::VAR_END_TYPE); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without throwing any exceptions + $this->addToAssertionCount(1); + } + + public function testStringWithEscapedInterpolation() + { + $template = '{{ "bar \#{baz+1}" }}'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $stream = $lexer->tokenize(new Twig_Source($template, 'index')); + $stream->expect(Twig_Token::VAR_START_TYPE); + $stream->expect(Twig_Token::STRING_TYPE, 'bar #{baz+1}'); + $stream->expect(Twig_Token::VAR_END_TYPE); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without throwing any exceptions + $this->addToAssertionCount(1); + } + + public function testStringWithHash() + { + $template = '{{ "bar # baz" }}'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $stream = $lexer->tokenize(new Twig_Source($template, 'index')); + $stream->expect(Twig_Token::VAR_START_TYPE); + $stream->expect(Twig_Token::STRING_TYPE, 'bar # baz'); + $stream->expect(Twig_Token::VAR_END_TYPE); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without throwing any exceptions + $this->addToAssertionCount(1); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unclosed """ + */ + public function testStringWithUnterminatedInterpolation() + { + $template = '{{ "bar #{x" }}'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $lexer->tokenize(new Twig_Source($template, 'index')); + } + + public function testStringWithNestedInterpolations() + { + $template = '{{ "bar #{ "foo#{bar}" }" }}'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $stream = $lexer->tokenize(new Twig_Source($template, 'index')); + $stream->expect(Twig_Token::VAR_START_TYPE); + $stream->expect(Twig_Token::STRING_TYPE, 'bar '); + $stream->expect(Twig_Token::INTERPOLATION_START_TYPE); + $stream->expect(Twig_Token::STRING_TYPE, 'foo'); + $stream->expect(Twig_Token::INTERPOLATION_START_TYPE); + $stream->expect(Twig_Token::NAME_TYPE, 'bar'); + $stream->expect(Twig_Token::INTERPOLATION_END_TYPE); + $stream->expect(Twig_Token::INTERPOLATION_END_TYPE); + $stream->expect(Twig_Token::VAR_END_TYPE); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without throwing any exceptions + $this->addToAssertionCount(1); + } + + public function testStringWithNestedInterpolationsInBlock() + { + $template = '{% foo "bar #{ "foo#{bar}" }" %}'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $stream = $lexer->tokenize(new Twig_Source($template, 'index')); + $stream->expect(Twig_Token::BLOCK_START_TYPE); + $stream->expect(Twig_Token::NAME_TYPE, 'foo'); + $stream->expect(Twig_Token::STRING_TYPE, 'bar '); + $stream->expect(Twig_Token::INTERPOLATION_START_TYPE); + $stream->expect(Twig_Token::STRING_TYPE, 'foo'); + $stream->expect(Twig_Token::INTERPOLATION_START_TYPE); + $stream->expect(Twig_Token::NAME_TYPE, 'bar'); + $stream->expect(Twig_Token::INTERPOLATION_END_TYPE); + $stream->expect(Twig_Token::INTERPOLATION_END_TYPE); + $stream->expect(Twig_Token::BLOCK_END_TYPE); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without throwing any exceptions + $this->addToAssertionCount(1); + } + + public function testOperatorEndingWithALetterAtTheEndOfALine() + { + $template = "{{ 1 and\n0}}"; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $stream = $lexer->tokenize(new Twig_Source($template, 'index')); + $stream->expect(Twig_Token::VAR_START_TYPE); + $stream->expect(Twig_Token::NUMBER_TYPE, 1); + $stream->expect(Twig_Token::OPERATOR_TYPE, 'and'); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without throwing any exceptions + $this->addToAssertionCount(1); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unclosed "variable" in "index" at line 3 + */ + public function testUnterminatedVariable() + { + $template = ' + +{{ + +bar + + +'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $lexer->tokenize(new Twig_Source($template, 'index')); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unclosed "block" in "index" at line 3 + */ + public function testUnterminatedBlock() + { + $template = ' + +{% + +bar + + +'; + + $lexer = new Twig_Lexer(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $lexer->tokenize(new Twig_Source($template, 'index')); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/ArrayTest.php b/system/vendor/twig/twig/test/Twig/Tests/Loader/ArrayTest.php new file mode 100644 index 0000000..ac3c73e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/ArrayTest.php @@ -0,0 +1,115 @@ + 'bar')); + + $this->assertEquals('bar', $loader->getSource('foo')); + } + + /** + * @group legacy + * @expectedException Twig_Error_Loader + */ + public function testGetSourceWhenTemplateDoesNotExist() + { + $loader = new Twig_Loader_Array(array()); + + $loader->getSource('foo'); + } + + /** + * @expectedException Twig_Error_Loader + */ + public function testGetSourceContextWhenTemplateDoesNotExist() + { + $loader = new Twig_Loader_Array(array()); + + $loader->getSourceContext('foo'); + } + + public function testGetCacheKey() + { + $loader = new Twig_Loader_Array(array('foo' => 'bar')); + + $this->assertEquals('bar', $loader->getCacheKey('foo')); + } + + /** + * @expectedException Twig_Error_Loader + */ + public function testGetCacheKeyWhenTemplateDoesNotExist() + { + $loader = new Twig_Loader_Array(array()); + + $loader->getCacheKey('foo'); + } + + public function testSetTemplate() + { + $loader = new Twig_Loader_Array(array()); + $loader->setTemplate('foo', 'bar'); + + $this->assertEquals('bar', $loader->getSourceContext('foo')->getCode()); + } + + public function testIsFresh() + { + $loader = new Twig_Loader_Array(array('foo' => 'bar')); + $this->assertTrue($loader->isFresh('foo', time())); + } + + /** + * @expectedException Twig_Error_Loader + */ + public function testIsFreshWhenTemplateDoesNotExist() + { + $loader = new Twig_Loader_Array(array()); + + $loader->isFresh('foo', time()); + } + + public function testTemplateReference() + { + $name = new Twig_Test_Loader_TemplateReference('foo'); + $loader = new Twig_Loader_Array(array('foo' => 'bar')); + + $loader->getCacheKey($name); + $loader->getSourceContext($name); + $loader->isFresh($name, time()); + $loader->setTemplate($name, 'foobar'); + + // add a dummy assertion here to satisfy PHPUnit, the only thing we want to test is that the code above + // can be executed without crashing PHP + $this->addToAssertionCount(1); + } +} + +class Twig_Test_Loader_TemplateReference +{ + private $name; + + public function __construct($name) + { + $this->name = $name; + } + + public function __toString() + { + return $this->name; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/ChainTest.php b/system/vendor/twig/twig/test/Twig/Tests/Loader/ChainTest.php new file mode 100644 index 0000000..17ec482 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/ChainTest.php @@ -0,0 +1,124 @@ + 'bar')), + new Twig_Loader_Array(array('foo' => 'foobar', 'bar' => 'foo')), + )); + + $this->assertEquals('bar', $loader->getSource('foo')); + $this->assertEquals('foo', $loader->getSource('bar')); + } + + public function testGetSourceContext() + { + $path = dirname(__FILE__).'/../Fixtures'; + $loader = new Twig_Loader_Chain(array( + new Twig_Loader_Array(array('foo' => 'bar')), + new Twig_Loader_Array(array('errors/index.html' => 'baz')), + new Twig_Loader_Filesystem(array($path)), + )); + + $this->assertEquals('foo', $loader->getSourceContext('foo')->getName()); + $this->assertSame('', $loader->getSourceContext('foo')->getPath()); + + $this->assertEquals('errors/index.html', $loader->getSourceContext('errors/index.html')->getName()); + $this->assertSame('', $loader->getSourceContext('errors/index.html')->getPath()); + $this->assertEquals('baz', $loader->getSourceContext('errors/index.html')->getCode()); + + $this->assertEquals('errors/base.html', $loader->getSourceContext('errors/base.html')->getName()); + $this->assertEquals(realpath($path.'/errors/base.html'), realpath($loader->getSourceContext('errors/base.html')->getPath())); + $this->assertNotEquals('baz', $loader->getSourceContext('errors/base.html')->getCode()); + } + + /** + * @expectedException Twig_Error_Loader + */ + public function testGetSourceContextWhenTemplateDoesNotExist() + { + $loader = new Twig_Loader_Chain(array()); + + $loader->getSourceContext('foo'); + } + + /** + * @group legacy + * @expectedException Twig_Error_Loader + */ + public function testGetSourceWhenTemplateDoesNotExist() + { + $loader = new Twig_Loader_Chain(array()); + + $loader->getSource('foo'); + } + + public function testGetCacheKey() + { + $loader = new Twig_Loader_Chain(array( + new Twig_Loader_Array(array('foo' => 'bar')), + new Twig_Loader_Array(array('foo' => 'foobar', 'bar' => 'foo')), + )); + + $this->assertEquals('bar', $loader->getCacheKey('foo')); + $this->assertEquals('foo', $loader->getCacheKey('bar')); + } + + /** + * @expectedException Twig_Error_Loader + */ + public function testGetCacheKeyWhenTemplateDoesNotExist() + { + $loader = new Twig_Loader_Chain(array()); + + $loader->getCacheKey('foo'); + } + + public function testAddLoader() + { + $loader = new Twig_Loader_Chain(); + $loader->addLoader(new Twig_Loader_Array(array('foo' => 'bar'))); + + $this->assertEquals('bar', $loader->getSourceContext('foo')->getCode()); + } + + public function testExists() + { + $loader1 = $this->getMockBuilder('Twig_ChainTestLoaderWithExistsInterface')->getMock(); + $loader1->expects($this->once())->method('exists')->will($this->returnValue(false)); + $loader1->expects($this->never())->method('getSourceContext'); + + // can be removed in 2.0 + $loader2 = $this->getMockBuilder('Twig_ChainTestLoaderInterface')->getMock(); + //$loader2 = $this->getMockBuilder(array('Twig_LoaderInterface', 'Twig_SourceContextLoaderInterface'))->getMock(); + $loader2->expects($this->once())->method('getSourceContext')->will($this->returnValue(new Twig_Source('content', 'index'))); + + $loader = new Twig_Loader_Chain(); + $loader->addLoader($loader1); + $loader->addLoader($loader2); + + $this->assertTrue($loader->exists('foo')); + } +} + +interface Twig_ChainTestLoaderInterface extends Twig_LoaderInterface, Twig_SourceContextLoaderInterface +{ +} + +interface Twig_ChainTestLoaderWithExistsInterface extends Twig_LoaderInterface, Twig_ExistsLoaderInterface, Twig_SourceContextLoaderInterface +{ +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/FilesystemTest.php b/system/vendor/twig/twig/test/Twig/Tests/Loader/FilesystemTest.php new file mode 100644 index 0000000..c8cbaf7 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/FilesystemTest.php @@ -0,0 +1,226 @@ +assertEquals('errors/index.html', $loader->getSourceContext('errors/index.html')->getName()); + $this->assertEquals(realpath($path.'/errors/index.html'), realpath($loader->getSourceContext('errors/index.html')->getPath())); + } + + /** + * @dataProvider getSecurityTests + */ + public function testSecurity($template) + { + $loader = new Twig_Loader_Filesystem(array(dirname(__FILE__).'/../Fixtures')); + + try { + $loader->getCacheKey($template); + $this->fail(); + } catch (Twig_Error_Loader $e) { + $this->assertNotContains('Unable to find template', $e->getMessage()); + } + } + + public function getSecurityTests() + { + return array( + array("AutoloaderTest\0.php"), + array('..\\AutoloaderTest.php'), + array('..\\\\\\AutoloaderTest.php'), + array('../AutoloaderTest.php'), + array('..////AutoloaderTest.php'), + array('./../AutoloaderTest.php'), + array('.\\..\\AutoloaderTest.php'), + array('././././././../AutoloaderTest.php'), + array('.\\./.\\./.\\./../AutoloaderTest.php'), + array('foo/../../AutoloaderTest.php'), + array('foo\\..\\..\\AutoloaderTest.php'), + array('foo/../bar/../../AutoloaderTest.php'), + array('foo/bar/../../../AutoloaderTest.php'), + array('filters/../../AutoloaderTest.php'), + array('filters//..//..//AutoloaderTest.php'), + array('filters\\..\\..\\AutoloaderTest.php'), + array('filters\\\\..\\\\..\\\\AutoloaderTest.php'), + array('filters\\//../\\/\\..\\AutoloaderTest.php'), + array('/../AutoloaderTest.php'), + ); + } + + /** + * @dataProvider getBasePaths + */ + public function testPaths($basePath, $cacheKey, $rootPath) + { + $loader = new Twig_Loader_Filesystem(array($basePath.'/normal', $basePath.'/normal_bis'), $rootPath); + $loader->setPaths(array($basePath.'/named', $basePath.'/named_bis'), 'named'); + $loader->addPath($basePath.'/named_ter', 'named'); + $loader->addPath($basePath.'/normal_ter'); + $loader->prependPath($basePath.'/normal_final'); + $loader->prependPath($basePath.'/named/../named_quater', 'named'); + $loader->prependPath($basePath.'/named_final', 'named'); + + $this->assertEquals(array( + $basePath.'/normal_final', + $basePath.'/normal', + $basePath.'/normal_bis', + $basePath.'/normal_ter', + ), $loader->getPaths()); + $this->assertEquals(array( + $basePath.'/named_final', + $basePath.'/named/../named_quater', + $basePath.'/named', + $basePath.'/named_bis', + $basePath.'/named_ter', + ), $loader->getPaths('named')); + + // do not use realpath here as it would make the test unuseful + $this->assertEquals($cacheKey, str_replace('\\', '/', $loader->getCacheKey('@named/named_absolute.html'))); + $this->assertEquals("path (final)\n", $loader->getSourceContext('index.html')->getCode()); + $this->assertEquals("path (final)\n", $loader->getSourceContext('@__main__/index.html')->getCode()); + $this->assertEquals("named path (final)\n", $loader->getSourceContext('@named/index.html')->getCode()); + } + + public function getBasePaths() + { + return array( + array( + dirname(__FILE__).'/Fixtures', + 'test/Twig/Tests/Loader/Fixtures/named_quater/named_absolute.html', + null, + ), + array( + dirname(__FILE__).'/Fixtures/../Fixtures', + 'test/Twig/Tests/Loader/Fixtures/named_quater/named_absolute.html', + null, + ), + array( + 'test/Twig/Tests/Loader/Fixtures', + 'test/Twig/Tests/Loader/Fixtures/named_quater/named_absolute.html', + getcwd(), + ), + array( + 'Fixtures', + 'Fixtures/named_quater/named_absolute.html', + getcwd().'/test/Twig/Tests/Loader', + ), + array( + 'Fixtures', + 'Fixtures/named_quater/named_absolute.html', + getcwd().'/test/../test/Twig/Tests/Loader', + ), + ); + } + + public function testEmptyConstructor() + { + $loader = new Twig_Loader_Filesystem(); + $this->assertEquals(array(), $loader->getPaths()); + } + + public function testGetNamespaces() + { + $loader = new Twig_Loader_Filesystem(sys_get_temp_dir()); + $this->assertEquals(array(Twig_Loader_Filesystem::MAIN_NAMESPACE), $loader->getNamespaces()); + + $loader->addPath(sys_get_temp_dir(), 'named'); + $this->assertEquals(array(Twig_Loader_Filesystem::MAIN_NAMESPACE, 'named'), $loader->getNamespaces()); + } + + public function testFindTemplateExceptionNamespace() + { + $basePath = dirname(__FILE__).'/Fixtures'; + + $loader = new Twig_Loader_Filesystem(array($basePath.'/normal')); + $loader->addPath($basePath.'/named', 'named'); + + try { + $loader->getSourceContext('@named/nowhere.html'); + } catch (Exception $e) { + $this->assertInstanceof('Twig_Error_Loader', $e); + $this->assertContains('Unable to find template "@named/nowhere.html"', $e->getMessage()); + } + } + + public function testFindTemplateWithCache() + { + $basePath = dirname(__FILE__).'/Fixtures'; + + $loader = new Twig_Loader_Filesystem(array($basePath.'/normal')); + $loader->addPath($basePath.'/named', 'named'); + + // prime the cache for index.html in the named namespace + $namedSource = $loader->getSourceContext('@named/index.html')->getCode(); + $this->assertEquals("named path\n", $namedSource); + + // get index.html from the main namespace + $this->assertEquals("path\n", $loader->getSourceContext('index.html')->getCode()); + } + + public function testLoadTemplateAndRenderBlockWithCache() + { + $loader = new Twig_Loader_Filesystem(array()); + $loader->addPath(dirname(__FILE__).'/Fixtures/themes/theme2'); + $loader->addPath(dirname(__FILE__).'/Fixtures/themes/theme1'); + $loader->addPath(dirname(__FILE__).'/Fixtures/themes/theme1', 'default_theme'); + + $twig = new Twig_Environment($loader); + + $template = $twig->loadTemplate('blocks.html.twig'); + $this->assertSame('block from theme 1', $template->renderBlock('b1', array())); + + $template = $twig->loadTemplate('blocks.html.twig'); + $this->assertSame('block from theme 2', $template->renderBlock('b2', array())); + } + + public function getArrayInheritanceTests() + { + return array( + 'valid array inheritance' => array('array_inheritance_valid_parent.html.twig'), + 'array inheritance with null first template' => array('array_inheritance_null_parent.html.twig'), + 'array inheritance with empty first template' => array('array_inheritance_empty_parent.html.twig'), + 'array inheritance with non-existent first template' => array('array_inheritance_nonexistent_parent.html.twig'), + ); + } + + /** + * @dataProvider getArrayInheritanceTests + * + * @param $templateName string Template name with array inheritance + */ + public function testArrayInheritance($templateName) + { + $loader = new Twig_Loader_Filesystem(array()); + $loader->addPath(dirname(__FILE__).'/Fixtures/inheritance'); + + $twig = new Twig_Environment($loader); + + $template = $twig->loadTemplate($templateName); + $this->assertSame('VALID Child', $template->renderBlock('body', array())); + } + + /** + * @requires PHP 5.3 + */ + public function testLoadTemplateFromPhar() + { + $loader = new Twig_Loader_Filesystem(array()); + // phar-sample.phar was created with the following script: + // $f = new Phar('phar-test.phar'); + // $f->addFromString('hello.twig', 'hello from phar'); + $loader->addPath('phar://'.dirname(__FILE__).'/Fixtures/phar/phar-sample.phar'); + $this->assertSame('hello from phar', $loader->getSourceContext('hello.twig')->getCode()); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_empty_parent.html.twig b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_empty_parent.html.twig new file mode 100644 index 0000000..6977ebf --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_empty_parent.html.twig @@ -0,0 +1,3 @@ +{% extends ['','parent.html.twig'] %} + +{% block body %}{{ parent() }} Child{% endblock %} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_nonexistent_parent.html.twig b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_nonexistent_parent.html.twig new file mode 100644 index 0000000..5b50a8b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_nonexistent_parent.html.twig @@ -0,0 +1,3 @@ +{% extends ['nonexistent.html.twig','parent.html.twig'] %} + +{% block body %}{{ parent() }} Child{% endblock %} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_null_parent.html.twig b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_null_parent.html.twig new file mode 100644 index 0000000..a16b3ad --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_null_parent.html.twig @@ -0,0 +1,3 @@ +{% extends [null,'parent.html.twig'] %} + +{% block body %}{{ parent() }} Child{% endblock %} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_valid_parent.html.twig b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_valid_parent.html.twig new file mode 100644 index 0000000..4940dad --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/array_inheritance_valid_parent.html.twig @@ -0,0 +1,3 @@ +{% extends ['parent.html.twig','spare_parent.html.twig'] %} + +{% block body %}{{ parent() }} Child{% endblock %} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/parent.html.twig b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/parent.html.twig new file mode 100644 index 0000000..d594c0e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/parent.html.twig @@ -0,0 +1 @@ +{% block body %}VALID{% endblock %} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/spare_parent.html.twig b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/spare_parent.html.twig new file mode 100644 index 0000000..70b7360 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/inheritance/spare_parent.html.twig @@ -0,0 +1 @@ +{% block body %}SPARE PARENT{% endblock %} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named/index.html b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named/index.html new file mode 100644 index 0000000..9e5449c --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named/index.html @@ -0,0 +1 @@ +named path diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_bis/index.html b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_bis/index.html new file mode 100644 index 0000000..d3a272b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_bis/index.html @@ -0,0 +1 @@ +named path (bis) diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_final/index.html b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_final/index.html new file mode 100644 index 0000000..9f05d15 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_final/index.html @@ -0,0 +1 @@ +named path (final) diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_quater/named_absolute.html b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_quater/named_absolute.html new file mode 100644 index 0000000..b1fb5f5 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_quater/named_absolute.html @@ -0,0 +1 @@ +named path (quater) diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_ter/index.html b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_ter/index.html new file mode 100644 index 0000000..24fb68a --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/named_ter/index.html @@ -0,0 +1 @@ +named path (ter) diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal/index.html b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal/index.html new file mode 100644 index 0000000..e7a8fd4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal/index.html @@ -0,0 +1 @@ +path diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal_bis/index.html b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal_bis/index.html new file mode 100644 index 0000000..bfa9160 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal_bis/index.html @@ -0,0 +1 @@ +path (bis) diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal_final/index.html b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal_final/index.html new file mode 100644 index 0000000..73a089b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal_final/index.html @@ -0,0 +1 @@ +path (final) diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal_ter/index.html b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal_ter/index.html new file mode 100644 index 0000000..b7ad97d --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/normal_ter/index.html @@ -0,0 +1 @@ +path (ter) diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/phar/phar-sample.phar b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/phar/phar-sample.phar new file mode 100644 index 0000000000000000000000000000000000000000..092bbfae3e4c98b308dc98bf7653ead68ae3ee6e GIT binary patch literal 6786 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 AZ~y=R literal 0 HcmV?d00001 diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/themes/theme1/blocks.html.twig b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/themes/theme1/blocks.html.twig new file mode 100644 index 0000000..dd0cbc2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/themes/theme1/blocks.html.twig @@ -0,0 +1,3 @@ +{% block b1 %}block from theme 1{% endblock %} + +{% block b2 %}block from theme 1{% endblock %} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/themes/theme2/blocks.html.twig b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/themes/theme2/blocks.html.twig new file mode 100644 index 0000000..07cf9db --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Loader/Fixtures/themes/theme2/blocks.html.twig @@ -0,0 +1,3 @@ +{% use '@default_theme/blocks.html.twig' %} + +{% block b2 %}block from theme 2{% endblock %} diff --git a/system/vendor/twig/twig/test/Twig/Tests/NativeExtensionTest.php b/system/vendor/twig/twig/test/Twig/Tests/NativeExtensionTest.php new file mode 100644 index 0000000..a692be1 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/NativeExtensionTest.php @@ -0,0 +1,36 @@ +markTestSkipped('Skip under HHVM as the behavior is not the same as plain PHP (which is an edge case anyway)'); + } + + $twig = new Twig_Environment(new Twig_Loader_Array(array('index' => '{{ d1.date }}{{ d2.date }}')), array( + 'debug' => true, + 'cache' => false, + 'autoescape' => false, + )); + + $d1 = new DateTime(); + $d2 = new DateTime(); + $output = $twig->render('index', compact('d1', 'd2')); + + // If it fails, PHP will crash. + $this->assertEquals($output, $d1->date.$d2->date); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/AutoEscapeTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/AutoEscapeTest.php new file mode 100644 index 0000000..25d1602 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/AutoEscapeTest.php @@ -0,0 +1,32 @@ +assertEquals($body, $node->getNode('body')); + $this->assertTrue($node->getAttribute('value')); + } + + public function getTests() + { + $body = new Twig_Node(array(new Twig_Node_Text('foo', 1))); + $node = new Twig_Node_AutoEscape(true, $body, 1); + + return array( + array($node, "// line 1\necho \"foo\";"), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/BlockReferenceTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/BlockReferenceTest.php new file mode 100644 index 0000000..84dac9b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/BlockReferenceTest.php @@ -0,0 +1,31 @@ +assertEquals('foo', $node->getAttribute('name')); + } + + public function getTests() + { + return array( + array(new Twig_Node_BlockReference('foo', 1), <<displayBlock('foo', \$context, \$blocks); +EOF + ), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/BlockTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/BlockTest.php new file mode 100644 index 0000000..e7246dc --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/BlockTest.php @@ -0,0 +1,39 @@ +assertEquals($body, $node->getNode('body')); + $this->assertEquals('foo', $node->getAttribute('name')); + } + + public function getTests() + { + $body = new Twig_Node_Text('foo', 1); + $node = new Twig_Node_Block('foo', $body, 1); + + return array( + array($node, <<assertEquals($expr, $node->getNode('expr')); + } + + public function getTests() + { + $tests = array(); + + $expr = new Twig_Node_Expression_Constant('foo', 1); + $node = new Twig_Node_Do($expr, 1); + $tests[] = array($node, "// line 1\n\"foo\";"); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ArrayTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ArrayTest.php new file mode 100644 index 0000000..4f83ab1 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ArrayTest.php @@ -0,0 +1,37 @@ +assertEquals($foo, $node->getNode(1)); + } + + public function getTests() + { + $elements = array( + new Twig_Node_Expression_Constant('foo', 1), + new Twig_Node_Expression_Constant('bar', 1), + + new Twig_Node_Expression_Constant('bar', 1), + new Twig_Node_Expression_Constant('foo', 1), + ); + $node = new Twig_Node_Expression_Array($elements, 1); + + return array( + array($node, 'array("foo" => "bar", "bar" => "foo")'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/AssignNameTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/AssignNameTest.php new file mode 100644 index 0000000..bf365de --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/AssignNameTest.php @@ -0,0 +1,29 @@ +assertEquals('foo', $node->getAttribute('name')); + } + + public function getTests() + { + $node = new Twig_Node_Expression_AssignName('foo', 1); + + return array( + array($node, '$context["foo"]'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/AddTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/AddTest.php new file mode 100644 index 0000000..02310a1 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/AddTest.php @@ -0,0 +1,34 @@ +assertEquals($left, $node->getNode('left')); + $this->assertEquals($right, $node->getNode('right')); + } + + public function getTests() + { + $left = new Twig_Node_Expression_Constant(1, 1); + $right = new Twig_Node_Expression_Constant(2, 1); + $node = new Twig_Node_Expression_Binary_Add($left, $right, 1); + + return array( + array($node, '(1 + 2)'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/AndTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/AndTest.php new file mode 100644 index 0000000..2df3c8e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/AndTest.php @@ -0,0 +1,34 @@ +assertEquals($left, $node->getNode('left')); + $this->assertEquals($right, $node->getNode('right')); + } + + public function getTests() + { + $left = new Twig_Node_Expression_Constant(1, 1); + $right = new Twig_Node_Expression_Constant(2, 1); + $node = new Twig_Node_Expression_Binary_And($left, $right, 1); + + return array( + array($node, '(1 && 2)'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/ConcatTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/ConcatTest.php new file mode 100644 index 0000000..759e482 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/ConcatTest.php @@ -0,0 +1,34 @@ +assertEquals($left, $node->getNode('left')); + $this->assertEquals($right, $node->getNode('right')); + } + + public function getTests() + { + $left = new Twig_Node_Expression_Constant(1, 1); + $right = new Twig_Node_Expression_Constant(2, 1); + $node = new Twig_Node_Expression_Binary_Concat($left, $right, 1); + + return array( + array($node, '(1 . 2)'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/DivTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/DivTest.php new file mode 100644 index 0000000..0e54b10 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/DivTest.php @@ -0,0 +1,34 @@ +assertEquals($left, $node->getNode('left')); + $this->assertEquals($right, $node->getNode('right')); + } + + public function getTests() + { + $left = new Twig_Node_Expression_Constant(1, 1); + $right = new Twig_Node_Expression_Constant(2, 1); + $node = new Twig_Node_Expression_Binary_Div($left, $right, 1); + + return array( + array($node, '(1 / 2)'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/FloorDivTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/FloorDivTest.php new file mode 100644 index 0000000..5813dce --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/FloorDivTest.php @@ -0,0 +1,34 @@ +assertEquals($left, $node->getNode('left')); + $this->assertEquals($right, $node->getNode('right')); + } + + public function getTests() + { + $left = new Twig_Node_Expression_Constant(1, 1); + $right = new Twig_Node_Expression_Constant(2, 1); + $node = new Twig_Node_Expression_Binary_FloorDiv($left, $right, 1); + + return array( + array($node, '(int) floor((1 / 2))'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/ModTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/ModTest.php new file mode 100644 index 0000000..4c663c7 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/ModTest.php @@ -0,0 +1,34 @@ +assertEquals($left, $node->getNode('left')); + $this->assertEquals($right, $node->getNode('right')); + } + + public function getTests() + { + $left = new Twig_Node_Expression_Constant(1, 1); + $right = new Twig_Node_Expression_Constant(2, 1); + $node = new Twig_Node_Expression_Binary_Mod($left, $right, 1); + + return array( + array($node, '(1 % 2)'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/MulTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/MulTest.php new file mode 100644 index 0000000..e92c95e --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/MulTest.php @@ -0,0 +1,34 @@ +assertEquals($left, $node->getNode('left')); + $this->assertEquals($right, $node->getNode('right')); + } + + public function getTests() + { + $left = new Twig_Node_Expression_Constant(1, 1); + $right = new Twig_Node_Expression_Constant(2, 1); + $node = new Twig_Node_Expression_Binary_Mul($left, $right, 1); + + return array( + array($node, '(1 * 2)'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/OrTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/OrTest.php new file mode 100644 index 0000000..ec37c83 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/OrTest.php @@ -0,0 +1,34 @@ +assertEquals($left, $node->getNode('left')); + $this->assertEquals($right, $node->getNode('right')); + } + + public function getTests() + { + $left = new Twig_Node_Expression_Constant(1, 1); + $right = new Twig_Node_Expression_Constant(2, 1); + $node = new Twig_Node_Expression_Binary_Or($left, $right, 1); + + return array( + array($node, '(1 || 2)'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/SubTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/SubTest.php new file mode 100644 index 0000000..061cb27 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Binary/SubTest.php @@ -0,0 +1,34 @@ +assertEquals($left, $node->getNode('left')); + $this->assertEquals($right, $node->getNode('right')); + } + + public function getTests() + { + $left = new Twig_Node_Expression_Constant(1, 1); + $right = new Twig_Node_Expression_Constant(2, 1); + $node = new Twig_Node_Expression_Binary_Sub($left, $right, 1); + + return array( + array($node, '(1 - 2)'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/CallTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/CallTest.php new file mode 100644 index 0000000..28c8148 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/CallTest.php @@ -0,0 +1,147 @@ + 'function', 'name' => 'date')); + $this->assertEquals(array('U', null), $node->getArguments('date', array('format' => 'U', 'timestamp' => null))); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Positional arguments cannot be used after named arguments for function "date". + */ + public function testGetArgumentsWhenPositionalArgumentsAfterNamedArguments() + { + $node = new Twig_Tests_Node_Expression_Call(array(), array('type' => 'function', 'name' => 'date')); + $node->getArguments('date', array('timestamp' => 123456, 'Y-m-d')); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Argument "format" is defined twice for function "date". + */ + public function testGetArgumentsWhenArgumentIsDefinedTwice() + { + $node = new Twig_Tests_Node_Expression_Call(array(), array('type' => 'function', 'name' => 'date')); + $node->getArguments('date', array('Y-m-d', 'format' => 'U')); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unknown argument "unknown" for function "date(format, timestamp)". + */ + public function testGetArgumentsWithWrongNamedArgumentName() + { + $node = new Twig_Tests_Node_Expression_Call(array(), array('type' => 'function', 'name' => 'date')); + $node->getArguments('date', array('Y-m-d', 'timestamp' => null, 'unknown' => '')); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unknown arguments "unknown1", "unknown2" for function "date(format, timestamp)". + */ + public function testGetArgumentsWithWrongNamedArgumentNames() + { + $node = new Twig_Tests_Node_Expression_Call(array(), array('type' => 'function', 'name' => 'date')); + $node->getArguments('date', array('Y-m-d', 'timestamp' => null, 'unknown1' => '', 'unknown2' => '')); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Argument "case_sensitivity" could not be assigned for function "substr_compare(main_str, str, offset, length, case_sensitivity)" because it is mapped to an internal PHP function which cannot determine default value for optional argument "length". + */ + public function testResolveArgumentsWithMissingValueForOptionalArgument() + { + if (defined('HHVM_VERSION')) { + $this->markTestSkipped('Skip under HHVM as the behavior is not the same as plain PHP (which is an edge case anyway)'); + } + + $node = new Twig_Tests_Node_Expression_Call(array(), array('type' => 'function', 'name' => 'substr_compare')); + $node->getArguments('substr_compare', array('abcd', 'bc', 'offset' => 1, 'case_sensitivity' => true)); + } + + public function testResolveArgumentsOnlyNecessaryArgumentsForCustomFunction() + { + $node = new Twig_Tests_Node_Expression_Call(array(), array('type' => 'function', 'name' => 'custom_function')); + + $this->assertEquals(array('arg1'), $node->getArguments(array($this, 'customFunction'), array('arg1' => 'arg1'))); + } + + public function testGetArgumentsForStaticMethod() + { + $node = new Twig_Tests_Node_Expression_Call(array(), array('type' => 'function', 'name' => 'custom_static_function')); + $this->assertEquals(array('arg1'), $node->getArguments(__CLASS__.'::customStaticFunction', array('arg1' => 'arg1'))); + } + + /** + * @expectedException LogicException + * @expectedExceptionMessage The last parameter of "Twig_Tests_Node_Expression_CallTest::customFunctionWithArbitraryArguments" for function "foo" must be an array with default value, eg. "array $arg = array()". + */ + public function testResolveArgumentsWithMissingParameterForArbitraryArguments() + { + $node = new Twig_Tests_Node_Expression_Call(array(), array('type' => 'function', 'name' => 'foo', 'is_variadic' => true)); + $node->getArguments(array($this, 'customFunctionWithArbitraryArguments'), array()); + } + + public static function customStaticFunction($arg1, $arg2 = 'default', $arg3 = array()) + { + } + + public function customFunction($arg1, $arg2 = 'default', $arg3 = array()) + { + } + + public function customFunctionWithArbitraryArguments() + { + } + + /** + * @expectedException LogicException + * @expectedExceptionMessageRegExp #^The last parameter of "custom_Twig_Tests_Node_Expression_CallTest_function" for function "foo" must be an array with default value, eg\. "array \$arg \= array\(\)"\.$# + */ + public function testResolveArgumentsWithMissingParameterForArbitraryArgumentsOnFunction() + { + $node = new Twig_Tests_Node_Expression_Call(array(), array('type' => 'function', 'name' => 'foo', 'is_variadic' => true)); + $node->getArguments('custom_Twig_Tests_Node_Expression_CallTest_function', array()); + } + + /** + * @expectedException LogicException + * @expectedExceptionMessageRegExp #^The last parameter of "CallableTestClass\:\:__invoke" for function "foo" must be an array with default value, eg\. "array \$arg \= array\(\)"\.$# + */ + public function testResolveArgumentsWithMissingParameterForArbitraryArgumentsOnObject() + { + $node = new Twig_Tests_Node_Expression_Call(array(), array('type' => 'function', 'name' => 'foo', 'is_variadic' => true)); + $node->getArguments(new CallableTestClass(), array()); + } +} + +class Twig_Tests_Node_Expression_Call extends Twig_Node_Expression_Call +{ + public function getArguments($callable, $arguments) + { + return parent::getArguments($callable, $arguments); + } +} + +class CallableTestClass +{ + public function __invoke($required) + { + } +} + +function custom_Twig_Tests_Node_Expression_CallTest_function($required) +{ +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ConditionalTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ConditionalTest.php new file mode 100644 index 0000000..a3e8bad --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ConditionalTest.php @@ -0,0 +1,38 @@ +assertEquals($expr1, $node->getNode('expr1')); + $this->assertEquals($expr2, $node->getNode('expr2')); + $this->assertEquals($expr3, $node->getNode('expr3')); + } + + public function getTests() + { + $tests = array(); + + $expr1 = new Twig_Node_Expression_Constant(1, 1); + $expr2 = new Twig_Node_Expression_Constant(2, 1); + $expr3 = new Twig_Node_Expression_Constant(3, 1); + $node = new Twig_Node_Expression_Conditional($expr1, $expr2, $expr3, 1); + $tests[] = array($node, '((1) ? (2) : (3))'); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ConstantTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ConstantTest.php new file mode 100644 index 0000000..2ff9318 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ConstantTest.php @@ -0,0 +1,30 @@ +assertEquals('foo', $node->getAttribute('value')); + } + + public function getTests() + { + $tests = array(); + + $node = new Twig_Node_Expression_Constant('foo', 1); + $tests[] = array($node, '"foo"'); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/FilterTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/FilterTest.php new file mode 100644 index 0000000..773375c --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/FilterTest.php @@ -0,0 +1,154 @@ +assertEquals($expr, $node->getNode('node')); + $this->assertEquals($name, $node->getNode('filter')); + $this->assertEquals($args, $node->getNode('arguments')); + } + + public function getTests() + { + $environment = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $environment->addFilter(new Twig_SimpleFilter('bar', 'bar', array('needs_environment' => true))); + $environment->addFilter(new Twig_SimpleFilter('barbar', 'twig_tests_filter_barbar', array('needs_context' => true, 'is_variadic' => true))); + + $tests = array(); + + $expr = new Twig_Node_Expression_Constant('foo', 1); + $node = $this->createFilter($expr, 'upper'); + $node = $this->createFilter($node, 'number_format', array(new Twig_Node_Expression_Constant(2, 1), new Twig_Node_Expression_Constant('.', 1), new Twig_Node_Expression_Constant(',', 1))); + + if (function_exists('mb_get_info')) { + $tests[] = array($node, 'twig_number_format_filter($this->env, twig_upper_filter($this->env, "foo"), 2, ".", ",")'); + } else { + $tests[] = array($node, 'twig_number_format_filter($this->env, strtoupper("foo"), 2, ".", ",")'); + } + + // named arguments + $date = new Twig_Node_Expression_Constant(0, 1); + $node = $this->createFilter($date, 'date', array( + 'timezone' => new Twig_Node_Expression_Constant('America/Chicago', 1), + 'format' => new Twig_Node_Expression_Constant('d/m/Y H:i:s P', 1), + )); + $tests[] = array($node, 'twig_date_format_filter($this->env, 0, "d/m/Y H:i:s P", "America/Chicago")'); + + // skip an optional argument + $date = new Twig_Node_Expression_Constant(0, 1); + $node = $this->createFilter($date, 'date', array( + 'timezone' => new Twig_Node_Expression_Constant('America/Chicago', 1), + )); + $tests[] = array($node, 'twig_date_format_filter($this->env, 0, null, "America/Chicago")'); + + // underscores vs camelCase for named arguments + $string = new Twig_Node_Expression_Constant('abc', 1); + $node = $this->createFilter($string, 'reverse', array( + 'preserve_keys' => new Twig_Node_Expression_Constant(true, 1), + )); + $tests[] = array($node, 'twig_reverse_filter($this->env, "abc", true)'); + $node = $this->createFilter($string, 'reverse', array( + 'preserveKeys' => new Twig_Node_Expression_Constant(true, 1), + )); + $tests[] = array($node, 'twig_reverse_filter($this->env, "abc", true)'); + + // filter as an anonymous function + if (PHP_VERSION_ID >= 50300) { + $node = $this->createFilter(new Twig_Node_Expression_Constant('foo', 1), 'anonymous'); + $tests[] = array($node, 'call_user_func_array($this->env->getFilter(\'anonymous\')->getCallable(), array("foo"))'); + } + + // needs environment + $node = $this->createFilter($string, 'bar'); + $tests[] = array($node, 'bar($this->env, "abc")', $environment); + + $node = $this->createFilter($string, 'bar', array(new Twig_Node_Expression_Constant('bar', 1))); + $tests[] = array($node, 'bar($this->env, "abc", "bar")', $environment); + + // arbitrary named arguments + $node = $this->createFilter($string, 'barbar'); + $tests[] = array($node, 'twig_tests_filter_barbar($context, "abc")', $environment); + + $node = $this->createFilter($string, 'barbar', array('foo' => new Twig_Node_Expression_Constant('bar', 1))); + $tests[] = array($node, 'twig_tests_filter_barbar($context, "abc", null, null, array("foo" => "bar"))', $environment); + + $node = $this->createFilter($string, 'barbar', array('arg2' => new Twig_Node_Expression_Constant('bar', 1))); + $tests[] = array($node, 'twig_tests_filter_barbar($context, "abc", null, "bar")', $environment); + + $node = $this->createFilter($string, 'barbar', array( + new Twig_Node_Expression_Constant('1', 1), + new Twig_Node_Expression_Constant('2', 1), + new Twig_Node_Expression_Constant('3', 1), + 'foo' => new Twig_Node_Expression_Constant('bar', 1), + )); + $tests[] = array($node, 'twig_tests_filter_barbar($context, "abc", "1", "2", array(0 => "3", "foo" => "bar"))', $environment); + + return $tests; + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unknown argument "foobar" for filter "date(format, timezone)" at line 1. + */ + public function testCompileWithWrongNamedArgumentName() + { + $date = new Twig_Node_Expression_Constant(0, 1); + $node = $this->createFilter($date, 'date', array( + 'foobar' => new Twig_Node_Expression_Constant('America/Chicago', 1), + )); + + $compiler = $this->getCompiler(); + $compiler->compile($node); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Value for argument "from" is required for filter "replace". + */ + public function testCompileWithMissingNamedArgument() + { + $value = new Twig_Node_Expression_Constant(0, 1); + $node = $this->createFilter($value, 'replace', array( + 'to' => new Twig_Node_Expression_Constant('foo', 1), + )); + + $compiler = $this->getCompiler(); + $compiler->compile($node); + } + + protected function createFilter($node, $name, array $arguments = array()) + { + $name = new Twig_Node_Expression_Constant($name, 1); + $arguments = new Twig_Node($arguments); + + return new Twig_Node_Expression_Filter($node, $name, $arguments, 1); + } + + protected function getEnvironment() + { + if (PHP_VERSION_ID >= 50300) { + return include 'PHP53/FilterInclude.php'; + } + + return parent::getEnvironment(); + } +} + +function twig_tests_filter_barbar($context, $string, $arg1 = null, $arg2 = null, array $args = array()) +{ +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/FunctionTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/FunctionTest.php new file mode 100644 index 0000000..2e82e2f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/FunctionTest.php @@ -0,0 +1,110 @@ +assertEquals($name, $node->getAttribute('name')); + $this->assertEquals($args, $node->getNode('arguments')); + } + + public function getTests() + { + $environment = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $environment->addFunction(new Twig_SimpleFunction('foo', 'foo', array())); + $environment->addFunction(new Twig_SimpleFunction('bar', 'bar', array('needs_environment' => true))); + $environment->addFunction(new Twig_SimpleFunction('foofoo', 'foofoo', array('needs_context' => true))); + $environment->addFunction(new Twig_SimpleFunction('foobar', 'foobar', array('needs_environment' => true, 'needs_context' => true))); + $environment->addFunction(new Twig_SimpleFunction('barbar', 'twig_tests_function_barbar', array('is_variadic' => true))); + + $tests = array(); + + $node = $this->createFunction('foo'); + $tests[] = array($node, 'foo()', $environment); + + $node = $this->createFunction('foo', array(new Twig_Node_Expression_Constant('bar', 1), new Twig_Node_Expression_Constant('foobar', 1))); + $tests[] = array($node, 'foo("bar", "foobar")', $environment); + + $node = $this->createFunction('bar'); + $tests[] = array($node, 'bar($this->env)', $environment); + + $node = $this->createFunction('bar', array(new Twig_Node_Expression_Constant('bar', 1))); + $tests[] = array($node, 'bar($this->env, "bar")', $environment); + + $node = $this->createFunction('foofoo'); + $tests[] = array($node, 'foofoo($context)', $environment); + + $node = $this->createFunction('foofoo', array(new Twig_Node_Expression_Constant('bar', 1))); + $tests[] = array($node, 'foofoo($context, "bar")', $environment); + + $node = $this->createFunction('foobar'); + $tests[] = array($node, 'foobar($this->env, $context)', $environment); + + $node = $this->createFunction('foobar', array(new Twig_Node_Expression_Constant('bar', 1))); + $tests[] = array($node, 'foobar($this->env, $context, "bar")', $environment); + + // named arguments + $node = $this->createFunction('date', array( + 'timezone' => new Twig_Node_Expression_Constant('America/Chicago', 1), + 'date' => new Twig_Node_Expression_Constant(0, 1), + )); + $tests[] = array($node, 'twig_date_converter($this->env, 0, "America/Chicago")'); + + // arbitrary named arguments + $node = $this->createFunction('barbar'); + $tests[] = array($node, 'twig_tests_function_barbar()', $environment); + + $node = $this->createFunction('barbar', array('foo' => new Twig_Node_Expression_Constant('bar', 1))); + $tests[] = array($node, 'twig_tests_function_barbar(null, null, array("foo" => "bar"))', $environment); + + $node = $this->createFunction('barbar', array('arg2' => new Twig_Node_Expression_Constant('bar', 1))); + $tests[] = array($node, 'twig_tests_function_barbar(null, "bar")', $environment); + + $node = $this->createFunction('barbar', array( + new Twig_Node_Expression_Constant('1', 1), + new Twig_Node_Expression_Constant('2', 1), + new Twig_Node_Expression_Constant('3', 1), + 'foo' => new Twig_Node_Expression_Constant('bar', 1), + )); + $tests[] = array($node, 'twig_tests_function_barbar("1", "2", array(0 => "3", "foo" => "bar"))', $environment); + + // function as an anonymous function + if (PHP_VERSION_ID >= 50300) { + $node = $this->createFunction('anonymous', array(new Twig_Node_Expression_Constant('foo', 1))); + $tests[] = array($node, 'call_user_func_array($this->env->getFunction(\'anonymous\')->getCallable(), array("foo"))'); + } + + return $tests; + } + + protected function createFunction($name, array $arguments = array()) + { + return new Twig_Node_Expression_Function($name, new Twig_Node($arguments), 1); + } + + protected function getEnvironment() + { + if (PHP_VERSION_ID >= 50300) { + return include 'PHP53/FunctionInclude.php'; + } + + return parent::getEnvironment(); + } +} + +function twig_tests_function_barbar($arg1 = null, $arg2 = null, array $args = array()) +{ +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/GetAttrTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/GetAttrTest.php new file mode 100644 index 0000000..2764478 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/GetAttrTest.php @@ -0,0 +1,50 @@ +addElement(new Twig_Node_Expression_Name('foo', 1)); + $args->addElement(new Twig_Node_Expression_Constant('bar', 1)); + $node = new Twig_Node_Expression_GetAttr($expr, $attr, $args, Twig_Template::ARRAY_CALL, 1); + + $this->assertEquals($expr, $node->getNode('node')); + $this->assertEquals($attr, $node->getNode('attribute')); + $this->assertEquals($args, $node->getNode('arguments')); + $this->assertEquals(Twig_Template::ARRAY_CALL, $node->getAttribute('type')); + } + + public function getTests() + { + $tests = array(); + + $expr = new Twig_Node_Expression_Name('foo', 1); + $attr = new Twig_Node_Expression_Constant('bar', 1); + $args = new Twig_Node_Expression_Array(array(), 1); + $node = new Twig_Node_Expression_GetAttr($expr, $attr, $args, Twig_Template::ANY_CALL, 1); + $tests[] = array($node, sprintf('%s%s, "bar", array())', $this->getAttributeGetter(), $this->getVariableGetter('foo', 1))); + + $node = new Twig_Node_Expression_GetAttr($expr, $attr, $args, Twig_Template::ARRAY_CALL, 1); + $tests[] = array($node, sprintf('%s%s, "bar", array(), "array")', $this->getAttributeGetter(), $this->getVariableGetter('foo', 1))); + + $args = new Twig_Node_Expression_Array(array(), 1); + $args->addElement(new Twig_Node_Expression_Name('foo', 1)); + $args->addElement(new Twig_Node_Expression_Constant('bar', 1)); + $node = new Twig_Node_Expression_GetAttr($expr, $attr, $args, Twig_Template::METHOD_CALL, 1); + $tests[] = array($node, sprintf('%s%s, "bar", array(0 => %s, 1 => "bar"), "method")', $this->getAttributeGetter(), $this->getVariableGetter('foo', 1), $this->getVariableGetter('foo'))); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/NameTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/NameTest.php new file mode 100644 index 0000000..70721a8 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/NameTest.php @@ -0,0 +1,43 @@ +assertEquals('foo', $node->getAttribute('name')); + } + + public function getTests() + { + $node = new Twig_Node_Expression_Name('foo', 1); + $context = new Twig_Node_Expression_Name('_context', 1); + + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('strict_variables' => true)); + $env1 = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('strict_variables' => false)); + + if (PHP_VERSION_ID >= 70000) { + $output = '($context["foo"] ?? $this->getContext($context, "foo"))'; + } elseif (PHP_VERSION_ID >= 50400) { + $output = '(isset($context["foo"]) ? $context["foo"] : $this->getContext($context, "foo"))'; + } else { + $output = '$this->getContext($context, "foo")'; + } + + return array( + array($node, "// line 1\n".$output, $env), + array($node, $this->getVariableGetter('foo', 1), $env1), + array($context, "// line 1\n\$context"), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/NullCoalesceTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/NullCoalesceTest.php new file mode 100644 index 0000000..a37490b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/NullCoalesceTest.php @@ -0,0 +1,31 @@ += 70000) { + $tests[] = array($node, "((// line 1\n\$context[\"foo\"]) ?? (2))"); + } elseif (PHP_VERSION_ID >= 50400) { + $tests[] = array($node, "(((// line 1\narray_key_exists(\"foo\", \$context) && !(null === (isset(\$context[\"foo\"]) ? \$context[\"foo\"] : null)))) ? ((isset(\$context[\"foo\"]) ? \$context[\"foo\"] : null)) : (2))"); + } else { + $tests[] = array($node, "(((// line 1\narray_key_exists(\"foo\", \$context) && !(null === \$this->getContext(\$context, \"foo\")))) ? (\$this->getContext(\$context, \"foo\")) : (2))"); + } + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/PHP53/FilterInclude.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/PHP53/FilterInclude.php new file mode 100644 index 0000000..b5394bc --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/PHP53/FilterInclude.php @@ -0,0 +1,6 @@ +addFilter(new Twig_SimpleFilter('anonymous', function () {})); + +return $env; diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/PHP53/FunctionInclude.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/PHP53/FunctionInclude.php new file mode 100644 index 0000000..e8f68c7 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/PHP53/FunctionInclude.php @@ -0,0 +1,6 @@ +addFunction(new Twig_SimpleFunction('anonymous', function () {})); + +return $env; diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/PHP53/TestInclude.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/PHP53/TestInclude.php new file mode 100644 index 0000000..9f818bc --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/PHP53/TestInclude.php @@ -0,0 +1,6 @@ +addTest(new Twig_SimpleTest('anonymous', function () {})); + +return $env; diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ParentTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ParentTest.php new file mode 100644 index 0000000..ab2bbe0 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/ParentTest.php @@ -0,0 +1,28 @@ +assertEquals('foo', $node->getAttribute('name')); + } + + public function getTests() + { + $tests = array(); + $tests[] = array(new Twig_Node_Expression_Parent('foo', 1), '$this->renderParentBlock("foo", $context, $blocks)'); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/TestTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/TestTest.php new file mode 100644 index 0000000..a5f96d2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/TestTest.php @@ -0,0 +1,82 @@ +assertEquals($expr, $node->getNode('node')); + $this->assertEquals($args, $node->getNode('arguments')); + $this->assertEquals($name, $node->getAttribute('name')); + } + + public function getTests() + { + $environment = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $environment->addTest(new Twig_SimpleTest('barbar', 'twig_tests_test_barbar', array('is_variadic' => true, 'need_context' => true))); + + $tests = array(); + + $expr = new Twig_Node_Expression_Constant('foo', 1); + $node = new Twig_Node_Expression_Test_Null($expr, 'null', new Twig_Node(array()), 1); + $tests[] = array($node, '(null === "foo")'); + + // test as an anonymous function + if (PHP_VERSION_ID >= 50300) { + $node = $this->createTest(new Twig_Node_Expression_Constant('foo', 1), 'anonymous', array(new Twig_Node_Expression_Constant('foo', 1))); + $tests[] = array($node, 'call_user_func_array($this->env->getTest(\'anonymous\')->getCallable(), array("foo", "foo"))'); + } + + // arbitrary named arguments + $string = new Twig_Node_Expression_Constant('abc', 1); + $node = $this->createTest($string, 'barbar'); + $tests[] = array($node, 'twig_tests_test_barbar("abc")', $environment); + + $node = $this->createTest($string, 'barbar', array('foo' => new Twig_Node_Expression_Constant('bar', 1))); + $tests[] = array($node, 'twig_tests_test_barbar("abc", null, null, array("foo" => "bar"))', $environment); + + $node = $this->createTest($string, 'barbar', array('arg2' => new Twig_Node_Expression_Constant('bar', 1))); + $tests[] = array($node, 'twig_tests_test_barbar("abc", null, "bar")', $environment); + + $node = $this->createTest($string, 'barbar', array( + new Twig_Node_Expression_Constant('1', 1), + new Twig_Node_Expression_Constant('2', 1), + new Twig_Node_Expression_Constant('3', 1), + 'foo' => new Twig_Node_Expression_Constant('bar', 1), + )); + $tests[] = array($node, 'twig_tests_test_barbar("abc", "1", "2", array(0 => "3", "foo" => "bar"))', $environment); + + return $tests; + } + + protected function createTest($node, $name, array $arguments = array()) + { + return new Twig_Node_Expression_Test($node, $name, new Twig_Node($arguments), 1); + } + + protected function getEnvironment() + { + if (PHP_VERSION_ID >= 50300) { + return include 'PHP53/TestInclude.php'; + } + + return parent::getEnvironment(); + } +} + +function twig_tests_test_barbar($string, $arg1 = null, $arg2 = null, array $args = array()) +{ +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Unary/NegTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Unary/NegTest.php new file mode 100644 index 0000000..b633371 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Unary/NegTest.php @@ -0,0 +1,32 @@ +assertEquals($expr, $node->getNode('node')); + } + + public function getTests() + { + $node = new Twig_Node_Expression_Constant(1, 1); + $node = new Twig_Node_Expression_Unary_Neg($node, 1); + + return array( + array($node, '-1'), + array(new Twig_Node_Expression_Unary_Neg($node, 1), '- -1'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Unary/NotTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Unary/NotTest.php new file mode 100644 index 0000000..d7c6f85 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Unary/NotTest.php @@ -0,0 +1,31 @@ +assertEquals($expr, $node->getNode('node')); + } + + public function getTests() + { + $node = new Twig_Node_Expression_Constant(1, 1); + $node = new Twig_Node_Expression_Unary_Not($node, 1); + + return array( + array($node, '!1'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Unary/PosTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Unary/PosTest.php new file mode 100644 index 0000000..057250f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/Expression/Unary/PosTest.php @@ -0,0 +1,31 @@ +assertEquals($expr, $node->getNode('node')); + } + + public function getTests() + { + $node = new Twig_Node_Expression_Constant(1, 1); + $node = new Twig_Node_Expression_Unary_Pos($node, 1); + + return array( + array($node, '+1'), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/ForTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/ForTest.php new file mode 100644 index 0000000..2bf4c7b --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/ForTest.php @@ -0,0 +1,191 @@ +setAttribute('with_loop', false); + + $this->assertEquals($keyTarget, $node->getNode('key_target')); + $this->assertEquals($valueTarget, $node->getNode('value_target')); + $this->assertEquals($seq, $node->getNode('seq')); + $this->assertTrue($node->getAttribute('ifexpr')); + $this->assertEquals('Twig_Node_If', get_class($node->getNode('body'))); + $this->assertEquals($body, $node->getNode('body')->getNode('tests')->getNode(1)->getNode(0)); + $this->assertFalse($node->hasNode('else')); + + $else = new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 1), 1); + $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1); + $node->setAttribute('with_loop', false); + $this->assertEquals($else, $node->getNode('else')); + } + + public function getTests() + { + $tests = array(); + + $keyTarget = new Twig_Node_Expression_AssignName('key', 1); + $valueTarget = new Twig_Node_Expression_AssignName('item', 1); + $seq = new Twig_Node_Expression_Name('items', 1); + $ifexpr = null; + $body = new Twig_Node(array(new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 1), 1)), array(), 1); + $else = null; + $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1); + $node->setAttribute('with_loop', false); + + $tests[] = array($node, <<getVariableGetter('items')}); +foreach (\$context['_seq'] as \$context["key"] => \$context["item"]) { + echo {$this->getVariableGetter('foo')}; +} +\$_parent = \$context['_parent']; +unset(\$context['_seq'], \$context['_iterated'], \$context['key'], \$context['item'], \$context['_parent'], \$context['loop']); +\$context = array_intersect_key(\$context, \$_parent) + \$_parent; +EOF + ); + + $keyTarget = new Twig_Node_Expression_AssignName('k', 1); + $valueTarget = new Twig_Node_Expression_AssignName('v', 1); + $seq = new Twig_Node_Expression_Name('values', 1); + $ifexpr = null; + $body = new Twig_Node(array(new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 1), 1)), array(), 1); + $else = null; + $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1); + $node->setAttribute('with_loop', true); + + $tests[] = array($node, <<getVariableGetter('values')}); +\$context['loop'] = array( + 'parent' => \$context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, +); +if (is_array(\$context['_seq']) || (is_object(\$context['_seq']) && \$context['_seq'] instanceof Countable)) { + \$length = count(\$context['_seq']); + \$context['loop']['revindex0'] = \$length - 1; + \$context['loop']['revindex'] = \$length; + \$context['loop']['length'] = \$length; + \$context['loop']['last'] = 1 === \$length; +} +foreach (\$context['_seq'] as \$context["k"] => \$context["v"]) { + echo {$this->getVariableGetter('foo')}; + ++\$context['loop']['index0']; + ++\$context['loop']['index']; + \$context['loop']['first'] = false; + if (isset(\$context['loop']['length'])) { + --\$context['loop']['revindex0']; + --\$context['loop']['revindex']; + \$context['loop']['last'] = 0 === \$context['loop']['revindex0']; + } +} +\$_parent = \$context['_parent']; +unset(\$context['_seq'], \$context['_iterated'], \$context['k'], \$context['v'], \$context['_parent'], \$context['loop']); +\$context = array_intersect_key(\$context, \$_parent) + \$_parent; +EOF + ); + + $keyTarget = new Twig_Node_Expression_AssignName('k', 1); + $valueTarget = new Twig_Node_Expression_AssignName('v', 1); + $seq = new Twig_Node_Expression_Name('values', 1); + $ifexpr = new Twig_Node_Expression_Constant(true, 1); + $body = new Twig_Node(array(new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 1), 1)), array(), 1); + $else = null; + $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1); + $node->setAttribute('with_loop', true); + + $tests[] = array($node, <<getVariableGetter('values')}); +\$context['loop'] = array( + 'parent' => \$context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, +); +foreach (\$context['_seq'] as \$context["k"] => \$context["v"]) { + if (true) { + echo {$this->getVariableGetter('foo')}; + ++\$context['loop']['index0']; + ++\$context['loop']['index']; + \$context['loop']['first'] = false; + } +} +\$_parent = \$context['_parent']; +unset(\$context['_seq'], \$context['_iterated'], \$context['k'], \$context['v'], \$context['_parent'], \$context['loop']); +\$context = array_intersect_key(\$context, \$_parent) + \$_parent; +EOF + ); + + $keyTarget = new Twig_Node_Expression_AssignName('k', 1); + $valueTarget = new Twig_Node_Expression_AssignName('v', 1); + $seq = new Twig_Node_Expression_Name('values', 1); + $ifexpr = null; + $body = new Twig_Node(array(new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 1), 1)), array(), 1); + $else = new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 1), 1); + $node = new Twig_Node_For($keyTarget, $valueTarget, $seq, $ifexpr, $body, $else, 1); + $node->setAttribute('with_loop', true); + + $tests[] = array($node, <<getVariableGetter('values')}); +\$context['_iterated'] = false; +\$context['loop'] = array( + 'parent' => \$context['_parent'], + 'index0' => 0, + 'index' => 1, + 'first' => true, +); +if (is_array(\$context['_seq']) || (is_object(\$context['_seq']) && \$context['_seq'] instanceof Countable)) { + \$length = count(\$context['_seq']); + \$context['loop']['revindex0'] = \$length - 1; + \$context['loop']['revindex'] = \$length; + \$context['loop']['length'] = \$length; + \$context['loop']['last'] = 1 === \$length; +} +foreach (\$context['_seq'] as \$context["k"] => \$context["v"]) { + echo {$this->getVariableGetter('foo')}; + \$context['_iterated'] = true; + ++\$context['loop']['index0']; + ++\$context['loop']['index']; + \$context['loop']['first'] = false; + if (isset(\$context['loop']['length'])) { + --\$context['loop']['revindex0']; + --\$context['loop']['revindex']; + \$context['loop']['last'] = 0 === \$context['loop']['revindex0']; + } +} +if (!\$context['_iterated']) { + echo {$this->getVariableGetter('foo')}; +} +\$_parent = \$context['_parent']; +unset(\$context['_seq'], \$context['_iterated'], \$context['k'], \$context['v'], \$context['_parent'], \$context['loop']); +\$context = array_intersect_key(\$context, \$_parent) + \$_parent; +EOF + ); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/IfTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/IfTest.php new file mode 100644 index 0000000..4ab0e4c --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/IfTest.php @@ -0,0 +1,88 @@ +assertEquals($t, $node->getNode('tests')); + $this->assertFalse($node->hasNode('else')); + + $else = new Twig_Node_Print(new Twig_Node_Expression_Name('bar', 1), 1); + $node = new Twig_Node_If($t, $else, 1); + $this->assertEquals($else, $node->getNode('else')); + } + + public function getTests() + { + $tests = array(); + + $t = new Twig_Node(array( + new Twig_Node_Expression_Constant(true, 1), + new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 1), 1), + ), array(), 1); + $else = null; + $node = new Twig_Node_If($t, $else, 1); + + $tests[] = array($node, <<getVariableGetter('foo')}; +} +EOF + ); + + $t = new Twig_Node(array( + new Twig_Node_Expression_Constant(true, 1), + new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 1), 1), + new Twig_Node_Expression_Constant(false, 1), + new Twig_Node_Print(new Twig_Node_Expression_Name('bar', 1), 1), + ), array(), 1); + $else = null; + $node = new Twig_Node_If($t, $else, 1); + + $tests[] = array($node, <<getVariableGetter('foo')}; +} elseif (false) { + echo {$this->getVariableGetter('bar')}; +} +EOF + ); + + $t = new Twig_Node(array( + new Twig_Node_Expression_Constant(true, 1), + new Twig_Node_Print(new Twig_Node_Expression_Name('foo', 1), 1), + ), array(), 1); + $else = new Twig_Node_Print(new Twig_Node_Expression_Name('bar', 1), 1); + $node = new Twig_Node_If($t, $else, 1); + + $tests[] = array($node, <<getVariableGetter('foo')}; +} else { + echo {$this->getVariableGetter('bar')}; +} +EOF + ); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/ImportTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/ImportTest.php new file mode 100644 index 0000000..36525b2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/ImportTest.php @@ -0,0 +1,40 @@ +assertEquals($macro, $node->getNode('expr')); + $this->assertEquals($var, $node->getNode('var')); + } + + public function getTests() + { + $tests = array(); + + $macro = new Twig_Node_Expression_Constant('foo.twig', 1); + $var = new Twig_Node_Expression_AssignName('macro', 1); + $node = new Twig_Node_Import($macro, $var, 1); + + $tests[] = array($node, <<loadTemplate("foo.twig", null, 1); +EOF + ); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/IncludeTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/IncludeTest.php new file mode 100644 index 0000000..d801f33 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/IncludeTest.php @@ -0,0 +1,83 @@ +assertFalse($node->hasNode('variables')); + $this->assertEquals($expr, $node->getNode('expr')); + $this->assertFalse($node->getAttribute('only')); + + $vars = new Twig_Node_Expression_Array(array(new Twig_Node_Expression_Constant('foo', 1), new Twig_Node_Expression_Constant(true, 1)), 1); + $node = new Twig_Node_Include($expr, $vars, true, false, 1); + $this->assertEquals($vars, $node->getNode('variables')); + $this->assertTrue($node->getAttribute('only')); + } + + public function getTests() + { + $tests = array(); + + $expr = new Twig_Node_Expression_Constant('foo.twig', 1); + $node = new Twig_Node_Include($expr, null, false, false, 1); + $tests[] = array($node, <<loadTemplate("foo.twig", null, 1)->display(\$context); +EOF + ); + + $expr = new Twig_Node_Expression_Conditional( + new Twig_Node_Expression_Constant(true, 1), + new Twig_Node_Expression_Constant('foo', 1), + new Twig_Node_Expression_Constant('foo', 1), + 0 + ); + $node = new Twig_Node_Include($expr, null, false, false, 1); + $tests[] = array($node, <<loadTemplate(((true) ? ("foo") : ("foo")), null, 1)->display(\$context); +EOF + ); + + $expr = new Twig_Node_Expression_Constant('foo.twig', 1); + $vars = new Twig_Node_Expression_Array(array(new Twig_Node_Expression_Constant('foo', 1), new Twig_Node_Expression_Constant(true, 1)), 1); + $node = new Twig_Node_Include($expr, $vars, false, false, 1); + $tests[] = array($node, <<loadTemplate("foo.twig", null, 1)->display(array_merge(\$context, array("foo" => true))); +EOF + ); + + $node = new Twig_Node_Include($expr, $vars, true, false, 1); + $tests[] = array($node, <<loadTemplate("foo.twig", null, 1)->display(array("foo" => true)); +EOF + ); + + $node = new Twig_Node_Include($expr, $vars, true, true, 1); + $tests[] = array($node, <<loadTemplate("foo.twig", null, 1)->display(array("foo" => true)); +} catch (Twig_Error_Loader \$e) { + // ignore missing template +} +EOF + ); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/MacroTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/MacroTest.php new file mode 100644 index 0000000..c7edfa2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/MacroTest.php @@ -0,0 +1,74 @@ +assertEquals($body, $node->getNode('body')); + $this->assertEquals($arguments, $node->getNode('arguments')); + $this->assertEquals('foo', $node->getAttribute('name')); + } + + public function getTests() + { + $body = new Twig_Node_Text('foo', 1); + $arguments = new Twig_Node(array( + 'foo' => new Twig_Node_Expression_Constant(null, 1), + 'bar' => new Twig_Node_Expression_Constant('Foo', 1), + ), array(), 1); + $node = new Twig_Node_Macro('foo', $body, $arguments, 1); + + if (PHP_VERSION_ID >= 50600) { + $declaration = ', ...$__varargs__'; + $varargs = '$__varargs__'; + } else { + $declaration = ''; + $varargs = 'func_num_args() > 2 ? array_slice(func_get_args(), 2) : array()'; + } + + return array( + array($node, <<env->mergeGlobals(array( + "foo" => \$__foo__, + "bar" => \$__bar__, + "varargs" => $varargs, + )); + + \$blocks = array(); + + ob_start(); + try { + echo "foo"; + } catch (Exception \$e) { + ob_end_clean(); + + throw \$e; + } catch (Throwable \$e) { + ob_end_clean(); + + throw \$e; + } + + return ('' === \$tmp = ob_get_clean()) ? '' : new Twig_Markup(\$tmp, \$this->env->getCharset()); +} +EOF + ), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/ModuleTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/ModuleTest.php new file mode 100644 index 0000000..54a8989 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/ModuleTest.php @@ -0,0 +1,223 @@ +assertEquals($body, $node->getNode('body')); + $this->assertEquals($blocks, $node->getNode('blocks')); + $this->assertEquals($macros, $node->getNode('macros')); + $this->assertEquals($parent, $node->getNode('parent')); + $this->assertEquals($source->getName(), $node->getTemplateName()); + } + + public function getTests() + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + + $tests = array(); + + $body = new Twig_Node_Text('foo', 1); + $extends = null; + $blocks = new Twig_Node(); + $macros = new Twig_Node(); + $traits = new Twig_Node(); + $source = new Twig_Source('{{ foo }}', 'foo.twig'); + + $node = new Twig_Node_Module($body, $extends, $blocks, $macros, $traits, new Twig_Node(array()), $source); + $tests[] = array($node, <<parent = false; + + \$this->blocks = array( + ); + } + + protected function doDisplay(array \$context, array \$blocks = array()) + { + // line 1 + echo "foo"; + } + + public function getTemplateName() + { + return "foo.twig"; + } + + public function getDebugInfo() + { + return array ( 19 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return \$this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("", "foo.twig", ""); + } +} +EOF + , $twig, true); + + $import = new Twig_Node_Import(new Twig_Node_Expression_Constant('foo.twig', 1), new Twig_Node_Expression_AssignName('macro', 1), 2); + + $body = new Twig_Node(array($import)); + $extends = new Twig_Node_Expression_Constant('layout.twig', 1); + + $node = new Twig_Node_Module($body, $extends, $blocks, $macros, $traits, new Twig_Node(array()), $source); + $tests[] = array($node, <<parent = \$this->loadTemplate("layout.twig", "foo.twig", 1); + \$this->blocks = array( + ); + } + + protected function doGetParent(array \$context) + { + return "layout.twig"; + } + + protected function doDisplay(array \$context, array \$blocks = array()) + { + // line 2 + \$context["macro"] = \$this->loadTemplate("foo.twig", "foo.twig", 2); + // line 1 + \$this->parent->display(\$context, array_merge(\$this->blocks, \$blocks)); + } + + public function getTemplateName() + { + return "foo.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 26 => 1, 24 => 2, 11 => 1,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return \$this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("", "foo.twig", ""); + } +} +EOF + , $twig, true); + + $set = new Twig_Node_Set(false, new Twig_Node(array(new Twig_Node_Expression_AssignName('foo', 4))), new Twig_Node(array(new Twig_Node_Expression_Constant('foo', 4))), 4); + $body = new Twig_Node(array($set)); + $extends = new Twig_Node_Expression_Conditional( + new Twig_Node_Expression_Constant(true, 2), + new Twig_Node_Expression_Constant('foo', 2), + new Twig_Node_Expression_Constant('foo', 2), + 2 + ); + + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('debug' => true)); + $node = new Twig_Node_Module($body, $extends, $blocks, $macros, $traits, new Twig_Node(array()), $source); + $tests[] = array($node, <<loadTemplate(((true) ? ("foo") : ("foo")), "foo.twig", 2); + } + + protected function doDisplay(array \$context, array \$blocks = array()) + { + // line 4 + \$context["foo"] = "foo"; + // line 2 + \$this->getParent(\$context)->display(\$context, array_merge(\$this->blocks, \$blocks)); + } + + public function getTemplateName() + { + return "foo.twig"; + } + + public function isTraitable() + { + return false; + } + + public function getDebugInfo() + { + return array ( 17 => 2, 15 => 4, 9 => 2,); + } + + /** @deprecated since 1.27 (to be removed in 2.0). Use getSourceContext() instead */ + public function getSource() + { + @trigger_error('The '.__METHOD__.' method is deprecated since version 1.27 and will be removed in 2.0. Use getSourceContext() instead.', E_USER_DEPRECATED); + + return \$this->getSourceContext()->getCode(); + } + + public function getSourceContext() + { + return new Twig_Source("{{ foo }}", "foo.twig", ""); + } +} +EOF + , $twig, true); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/PrintTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/PrintTest.php new file mode 100644 index 0000000..4e0990f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/PrintTest.php @@ -0,0 +1,29 @@ +assertEquals($expr, $node->getNode('expr')); + } + + public function getTests() + { + $tests = array(); + $tests[] = array(new Twig_Node_Print(new Twig_Node_Expression_Constant('foo', 1), 1), "// line 1\necho \"foo\";"); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/SandboxTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/SandboxTest.php new file mode 100644 index 0000000..56f4877 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/SandboxTest.php @@ -0,0 +1,44 @@ +assertEquals($body, $node->getNode('body')); + } + + public function getTests() + { + $tests = array(); + + $body = new Twig_Node_Text('foo', 1); + $node = new Twig_Node_Sandbox($body, 1); + + $tests[] = array($node, <<env->getExtension('Twig_Extension_Sandbox'); +if (!\$alreadySandboxed = \$sandbox->isSandboxed()) { + \$sandbox->enableSandbox(); +} +echo "foo"; +if (!\$alreadySandboxed) { + \$sandbox->disableSandbox(); +} +EOF + ); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/SandboxedPrintTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/SandboxedPrintTest.php new file mode 100644 index 0000000..8bc8a75 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/SandboxedPrintTest.php @@ -0,0 +1,33 @@ +assertEquals($expr, $node->getNode('expr')); + } + + public function getTests() + { + $tests = array(); + + $tests[] = array(new Twig_Node_SandboxedPrint(new Twig_Node_Expression_Constant('foo', 1), 1), <<env->getExtension('Twig_Extension_Sandbox')->ensureToStringAllowed("foo"); +EOF + ); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/SetTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/SetTest.php new file mode 100644 index 0000000..62ad280 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/SetTest.php @@ -0,0 +1,69 @@ +assertEquals($names, $node->getNode('names')); + $this->assertEquals($values, $node->getNode('values')); + $this->assertFalse($node->getAttribute('capture')); + } + + public function getTests() + { + $tests = array(); + + $names = new Twig_Node(array(new Twig_Node_Expression_AssignName('foo', 1)), array(), 1); + $values = new Twig_Node(array(new Twig_Node_Expression_Constant('foo', 1)), array(), 1); + $node = new Twig_Node_Set(false, $names, $values, 1); + $tests[] = array($node, <<env->getCharset()); +EOF + ); + + $names = new Twig_Node(array(new Twig_Node_Expression_AssignName('foo', 1)), array(), 1); + $values = new Twig_Node_Text('foo', 1); + $node = new Twig_Node_Set(true, $names, $values, 1); + $tests[] = array($node, <<env->getCharset()); +EOF + ); + + $names = new Twig_Node(array(new Twig_Node_Expression_AssignName('foo', 1), new Twig_Node_Expression_AssignName('bar', 1)), array(), 1); + $values = new Twig_Node(array(new Twig_Node_Expression_Constant('foo', 1), new Twig_Node_Expression_Name('bar', 1)), array(), 1); + $node = new Twig_Node_Set(false, $names, $values, 1); + $tests[] = array($node, <<getVariableGetter('bar')}); +EOF + ); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/SpacelessTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/SpacelessTest.php new file mode 100644 index 0000000..222ca09 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/SpacelessTest.php @@ -0,0 +1,37 @@ +
    foo
    ', 1))); + $node = new Twig_Node_Spaceless($body, 1); + + $this->assertEquals($body, $node->getNode('body')); + } + + public function getTests() + { + $body = new Twig_Node(array(new Twig_Node_Text('
    foo
    ', 1))); + $node = new Twig_Node_Spaceless($body, 1); + + return array( + array($node, <<
    foo
    "; +echo trim(preg_replace('/>\s+<', ob_get_clean())); +EOF + ), + ); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Node/TextTest.php b/system/vendor/twig/twig/test/Twig/Tests/Node/TextTest.php new file mode 100644 index 0000000..ceaf67f --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Node/TextTest.php @@ -0,0 +1,28 @@ +assertEquals('foo', $node->getAttribute('data')); + } + + public function getTests() + { + $tests = array(); + $tests[] = array(new Twig_Node_Text('foo', 1), "// line 1\necho \"foo\";"); + + return $tests; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/NodeVisitor/OptimizerTest.php b/system/vendor/twig/twig/test/Twig/Tests/NodeVisitor/OptimizerTest.php new file mode 100644 index 0000000..0a48e6d --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/NodeVisitor/OptimizerTest.php @@ -0,0 +1,124 @@ +getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + + $stream = $env->parse($env->tokenize(new Twig_Source('{{ block("foo") }}', 'index'))); + + $node = $stream->getNode('body')->getNode(0); + + $this->assertEquals('Twig_Node_Expression_BlockReference', get_class($node)); + $this->assertTrue($node->getAttribute('output')); + } + + public function testRenderParentBlockOptimizer() + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + + $stream = $env->parse($env->tokenize(new Twig_Source('{% extends "foo" %}{% block content %}{{ parent() }}{% endblock %}', 'index'))); + + $node = $stream->getNode('blocks')->getNode('content')->getNode(0)->getNode('body'); + + $this->assertEquals('Twig_Node_Expression_Parent', get_class($node)); + $this->assertTrue($node->getAttribute('output')); + } + + public function testRenderVariableBlockOptimizer() + { + if (PHP_VERSION_ID >= 50400) { + $this->markTestSkipped('not needed on PHP >= 5.4'); + } + + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false, 'autoescape' => false)); + $stream = $env->parse($env->tokenize(new Twig_Source('{{ block(name|lower) }}', 'index'))); + + $node = $stream->getNode('body')->getNode(0)->getNode(1); + + $this->assertEquals('Twig_Node_Expression_BlockReference', get_class($node)); + $this->assertTrue($node->getAttribute('output')); + } + + /** + * @dataProvider getTestsForForOptimizer + */ + public function testForOptimizer($template, $expected) + { + $env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('cache' => false)); + + $stream = $env->parse($env->tokenize(new Twig_Source($template, 'index'))); + + foreach ($expected as $target => $withLoop) { + $this->assertTrue($this->checkForConfiguration($stream, $target, $withLoop), sprintf('variable %s is %soptimized', $target, $withLoop ? 'not ' : '')); + } + } + + public function getTestsForForOptimizer() + { + return array( + array('{% for i in foo %}{% endfor %}', array('i' => false)), + + array('{% for i in foo %}{{ loop.index }}{% endfor %}', array('i' => true)), + + array('{% for i in foo %}{% for j in foo %}{% endfor %}{% endfor %}', array('i' => false, 'j' => false)), + + array('{% for i in foo %}{% include "foo" %}{% endfor %}', array('i' => true)), + + array('{% for i in foo %}{% include "foo" only %}{% endfor %}', array('i' => false)), + + array('{% for i in foo %}{% include "foo" with { "foo": "bar" } only %}{% endfor %}', array('i' => false)), + + array('{% for i in foo %}{% include "foo" with { "foo": loop.index } only %}{% endfor %}', array('i' => true)), + + array('{% for i in foo %}{% for j in foo %}{{ loop.index }}{% endfor %}{% endfor %}', array('i' => false, 'j' => true)), + + array('{% for i in foo %}{% for j in foo %}{{ loop.parent.loop.index }}{% endfor %}{% endfor %}', array('i' => true, 'j' => true)), + + array('{% for i in foo %}{% set l = loop %}{% for j in foo %}{{ l.index }}{% endfor %}{% endfor %}', array('i' => true, 'j' => false)), + + array('{% for i in foo %}{% for j in foo %}{{ foo.parent.loop.index }}{% endfor %}{% endfor %}', array('i' => false, 'j' => false)), + + array('{% for i in foo %}{% for j in foo %}{{ loop["parent"].loop.index }}{% endfor %}{% endfor %}', array('i' => true, 'j' => true)), + + array('{% for i in foo %}{{ include("foo") }}{% endfor %}', array('i' => true)), + + array('{% for i in foo %}{{ include("foo", with_context = false) }}{% endfor %}', array('i' => false)), + + array('{% for i in foo %}{{ include("foo", with_context = true) }}{% endfor %}', array('i' => true)), + + array('{% for i in foo %}{{ include("foo", { "foo": "bar" }, with_context = false) }}{% endfor %}', array('i' => false)), + + array('{% for i in foo %}{{ include("foo", { "foo": loop.index }, with_context = false) }}{% endfor %}', array('i' => true)), + ); + } + + public function checkForConfiguration(Twig_NodeInterface $node = null, $target, $withLoop) + { + if (null === $node) { + return; + } + + foreach ($node as $n) { + if ($n instanceof Twig_Node_For) { + if ($target === $n->getNode('value_target')->getAttribute('name')) { + return $withLoop == $n->getAttribute('with_loop'); + } + } + + $ret = $this->checkForConfiguration($n, $target, $withLoop); + if (null !== $ret) { + return $ret; + } + } + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/ParserTest.php b/system/vendor/twig/twig/test/Twig/Tests/ParserTest.php new file mode 100644 index 0000000..1bc2b09 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/ParserTest.php @@ -0,0 +1,198 @@ +getParser(); + $parser->setMacro('parent', $this->getMockBuilder('Twig_Node_Macro')->disableOriginalConstructor()->getMock()); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unknown "foo" tag. Did you mean "for" at line 1? + */ + public function testUnknownTag() + { + $stream = new Twig_TokenStream(array( + new Twig_Token(Twig_Token::BLOCK_START_TYPE, '', 1), + new Twig_Token(Twig_Token::NAME_TYPE, 'foo', 1), + new Twig_Token(Twig_Token::BLOCK_END_TYPE, '', 1), + new Twig_Token(Twig_Token::EOF_TYPE, '', 1), + )); + $parser = new Twig_Parser(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $parser->parse($stream); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unknown "foobar" tag at line 1. + */ + public function testUnknownTagWithoutSuggestions() + { + $stream = new Twig_TokenStream(array( + new Twig_Token(Twig_Token::BLOCK_START_TYPE, '', 1), + new Twig_Token(Twig_Token::NAME_TYPE, 'foobar', 1), + new Twig_Token(Twig_Token::BLOCK_END_TYPE, '', 1), + new Twig_Token(Twig_Token::EOF_TYPE, '', 1), + )); + $parser = new Twig_Parser(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $parser->parse($stream); + } + + /** + * @dataProvider getFilterBodyNodesData + */ + public function testFilterBodyNodes($input, $expected) + { + $parser = $this->getParser(); + + $this->assertEquals($expected, $parser->filterBodyNodes($input)); + } + + public function getFilterBodyNodesData() + { + return array( + array( + new Twig_Node(array(new Twig_Node_Text(' ', 1))), + new Twig_Node(array()), + ), + array( + $input = new Twig_Node(array(new Twig_Node_Set(false, new Twig_Node(), new Twig_Node(), 1))), + $input, + ), + array( + $input = new Twig_Node(array(new Twig_Node_Set(true, new Twig_Node(), new Twig_Node(array(new Twig_Node(array(new Twig_Node_Text('foo', 1))))), 1))), + $input, + ), + ); + } + + /** + * @dataProvider getFilterBodyNodesDataThrowsException + * @expectedException Twig_Error_Syntax + */ + public function testFilterBodyNodesThrowsException($input) + { + $parser = $this->getParser(); + + $parser->filterBodyNodes($input); + } + + public function getFilterBodyNodesDataThrowsException() + { + return array( + array(new Twig_Node_Text('foo', 1)), + array(new Twig_Node(array(new Twig_Node(array(new Twig_Node_Text('foo', 1)))))), + ); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage A template that extends another one cannot start with a byte order mark (BOM); it must be removed at line 1 + */ + public function testFilterBodyNodesWithBOM() + { + $parser = $this->getParser(); + $parser->filterBodyNodes(new Twig_Node_Text(chr(0xEF).chr(0xBB).chr(0xBF), 1)); + } + + public function testParseIsReentrant() + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array( + 'autoescape' => false, + 'optimizations' => 0, + )); + $twig->addTokenParser(new TestTokenParser()); + + $parser = new Twig_Parser($twig); + + $parser->parse(new Twig_TokenStream(array( + new Twig_Token(Twig_Token::BLOCK_START_TYPE, '', 1), + new Twig_Token(Twig_Token::NAME_TYPE, 'test', 1), + new Twig_Token(Twig_Token::BLOCK_END_TYPE, '', 1), + new Twig_Token(Twig_Token::VAR_START_TYPE, '', 1), + new Twig_Token(Twig_Token::NAME_TYPE, 'foo', 1), + new Twig_Token(Twig_Token::VAR_END_TYPE, '', 1), + new Twig_Token(Twig_Token::EOF_TYPE, '', 1), + ))); + + $this->assertNull($parser->getParent()); + } + + public function testGetVarName() + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array( + 'autoescape' => false, + 'optimizations' => 0, + )); + + $twig->parse($twig->tokenize(new Twig_Source(<<addToAssertionCount(1); + } + + protected function getParser() + { + $parser = new TestParser(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + $parser->setParent(new Twig_Node()); + $parser->stream = new Twig_TokenStream(array()); + + return $parser; + } +} + +class TestParser extends Twig_Parser +{ + public $stream; + + public function filterBodyNodes(Twig_NodeInterface $node) + { + return parent::filterBodyNodes($node); + } +} + +class TestTokenParser extends Twig_TokenParser +{ + public function parse(Twig_Token $token) + { + // simulate the parsing of another template right in the middle of the parsing of the current template + $this->parser->parse(new Twig_TokenStream(array( + new Twig_Token(Twig_Token::BLOCK_START_TYPE, '', 1), + new Twig_Token(Twig_Token::NAME_TYPE, 'extends', 1), + new Twig_Token(Twig_Token::STRING_TYPE, 'base', 1), + new Twig_Token(Twig_Token::BLOCK_END_TYPE, '', 1), + new Twig_Token(Twig_Token::EOF_TYPE, '', 1), + ))); + + $this->parser->getStream()->expect(Twig_Token::BLOCK_END_TYPE); + + return new Twig_Node(array()); + } + + public function getTag() + { + return 'test'; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/AbstractTest.php b/system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/AbstractTest.php new file mode 100644 index 0000000..da97f47 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/AbstractTest.php @@ -0,0 +1,101 @@ +getMockBuilder('Twig_Profiler_Profile')->disableOriginalConstructor()->getMock(); + + $profile->expects($this->any())->method('isRoot')->will($this->returnValue(true)); + $profile->expects($this->any())->method('getName')->will($this->returnValue('main')); + $profile->expects($this->any())->method('getDuration')->will($this->returnValue(1)); + $profile->expects($this->any())->method('getMemoryUsage')->will($this->returnValue(0)); + $profile->expects($this->any())->method('getPeakMemoryUsage')->will($this->returnValue(0)); + + $subProfiles = array( + $this->getIndexProfile( + array( + $this->getEmbeddedBlockProfile(), + $this->getEmbeddedTemplateProfile( + array( + $this->getIncludedTemplateProfile(), + ) + ), + $this->getMacroProfile(), + $this->getEmbeddedTemplateProfile( + array( + $this->getIncludedTemplateProfile(), + ) + ), + ) + ), + ); + + $profile->expects($this->any())->method('getProfiles')->will($this->returnValue($subProfiles)); + $profile->expects($this->any())->method('getIterator')->will($this->returnValue(new ArrayIterator($subProfiles))); + + return $profile; + } + + private function getIndexProfile(array $subProfiles = array()) + { + return $this->generateProfile('main', 1, true, 'template', 'index.twig', $subProfiles); + } + + private function getEmbeddedBlockProfile(array $subProfiles = array()) + { + return $this->generateProfile('body', 0.0001, false, 'block', 'embedded.twig', $subProfiles); + } + + private function getEmbeddedTemplateProfile(array $subProfiles = array()) + { + return $this->generateProfile('main', 0.0001, true, 'template', 'embedded.twig', $subProfiles); + } + + private function getIncludedTemplateProfile(array $subProfiles = array()) + { + return $this->generateProfile('main', 0.0001, true, 'template', 'included.twig', $subProfiles); + } + + private function getMacroProfile(array $subProfiles = array()) + { + return $this->generateProfile('foo', 0.0001, false, 'macro', 'index.twig', $subProfiles); + } + + /** + * @param string $name + * @param float $duration + * @param bool $isTemplate + * @param string $type + * @param string $templateName + * @param array $subProfiles + * + * @return Twig_Profiler_Profile + */ + private function generateProfile($name, $duration, $isTemplate, $type, $templateName, array $subProfiles = array()) + { + $profile = $this->getMockBuilder('Twig_Profiler_Profile')->disableOriginalConstructor()->getMock(); + + $profile->expects($this->any())->method('isRoot')->will($this->returnValue(false)); + $profile->expects($this->any())->method('getName')->will($this->returnValue($name)); + $profile->expects($this->any())->method('getDuration')->will($this->returnValue($duration)); + $profile->expects($this->any())->method('getMemoryUsage')->will($this->returnValue(0)); + $profile->expects($this->any())->method('getPeakMemoryUsage')->will($this->returnValue(0)); + $profile->expects($this->any())->method('isTemplate')->will($this->returnValue($isTemplate)); + $profile->expects($this->any())->method('getType')->will($this->returnValue($type)); + $profile->expects($this->any())->method('getTemplate')->will($this->returnValue($templateName)); + $profile->expects($this->any())->method('getProfiles')->will($this->returnValue($subProfiles)); + $profile->expects($this->any())->method('getIterator')->will($this->returnValue(new ArrayIterator($subProfiles))); + + return $profile; + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/BlackfireTest.php b/system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/BlackfireTest.php new file mode 100644 index 0000000..1a1b9d2 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/BlackfireTest.php @@ -0,0 +1,32 @@ +assertStringMatchesFormat(<<index.twig//1 %d %d %d +index.twig==>embedded.twig::block(body)//1 %d %d 0 +index.twig==>embedded.twig//2 %d %d %d +embedded.twig==>included.twig//2 %d %d %d +index.twig==>index.twig::macro(foo)//1 %d %d %d +EOF + , $dumper->dump($this->getProfile())); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/HtmlTest.php b/system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/HtmlTest.php new file mode 100644 index 0000000..66a68c4 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/HtmlTest.php @@ -0,0 +1,30 @@ +assertStringMatchesFormat(<<main %d.%dms/%d% +â”” index.twig %d.%dms/%d% + â”” embedded.twig::block(body) + â”” embedded.twig + │ â”” included.twig + â”” index.twig::macro(foo) + â”” embedded.twig + â”” included.twig + +EOF + , $dumper->dump($this->getProfile())); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/TextTest.php b/system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/TextTest.php new file mode 100644 index 0000000..e2ea165 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Profiler/Dumper/TextTest.php @@ -0,0 +1,30 @@ +assertStringMatchesFormat(<<dump($this->getProfile())); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Profiler/ProfileTest.php b/system/vendor/twig/twig/test/Twig/Tests/Profiler/ProfileTest.php new file mode 100644 index 0000000..f786f06 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Profiler/ProfileTest.php @@ -0,0 +1,100 @@ +assertEquals('template', $profile->getTemplate()); + $this->assertEquals('type', $profile->getType()); + $this->assertEquals('name', $profile->getName()); + } + + public function testIsRoot() + { + $profile = new Twig_Profiler_Profile('template', Twig_Profiler_Profile::ROOT); + $this->assertTrue($profile->isRoot()); + + $profile = new Twig_Profiler_Profile('template', Twig_Profiler_Profile::TEMPLATE); + $this->assertFalse($profile->isRoot()); + } + + public function testIsTemplate() + { + $profile = new Twig_Profiler_Profile('template', Twig_Profiler_Profile::TEMPLATE); + $this->assertTrue($profile->isTemplate()); + + $profile = new Twig_Profiler_Profile('template', Twig_Profiler_Profile::ROOT); + $this->assertFalse($profile->isTemplate()); + } + + public function testIsBlock() + { + $profile = new Twig_Profiler_Profile('template', Twig_Profiler_Profile::BLOCK); + $this->assertTrue($profile->isBlock()); + + $profile = new Twig_Profiler_Profile('template', Twig_Profiler_Profile::ROOT); + $this->assertFalse($profile->isBlock()); + } + + public function testIsMacro() + { + $profile = new Twig_Profiler_Profile('template', Twig_Profiler_Profile::MACRO); + $this->assertTrue($profile->isMacro()); + + $profile = new Twig_Profiler_Profile('template', Twig_Profiler_Profile::ROOT); + $this->assertFalse($profile->isMacro()); + } + + public function testGetAddProfile() + { + $profile = new Twig_Profiler_Profile(); + $profile->addProfile($a = new Twig_Profiler_Profile()); + $profile->addProfile($b = new Twig_Profiler_Profile()); + + $this->assertSame(array($a, $b), $profile->getProfiles()); + $this->assertSame(array($a, $b), iterator_to_array($profile)); + } + + public function testGetDuration() + { + $profile = new Twig_Profiler_Profile(); + usleep(1); + $profile->leave(); + + $this->assertTrue($profile->getDuration() > 0, sprintf('Expected duration > 0, got: %f', $profile->getDuration())); + } + + public function testSerialize() + { + $profile = new Twig_Profiler_Profile('template', 'type', 'name'); + $profile1 = new Twig_Profiler_Profile('template1', 'type1', 'name1'); + $profile->addProfile($profile1); + $profile->leave(); + $profile1->leave(); + + $profile2 = unserialize(serialize($profile)); + $profiles = $profile->getProfiles(); + $this->assertCount(1, $profiles); + $profile3 = $profiles[0]; + + $this->assertEquals($profile->getTemplate(), $profile2->getTemplate()); + $this->assertEquals($profile->getType(), $profile2->getType()); + $this->assertEquals($profile->getName(), $profile2->getName()); + $this->assertEquals($profile->getDuration(), $profile2->getDuration()); + + $this->assertEquals($profile1->getTemplate(), $profile3->getTemplate()); + $this->assertEquals($profile1->getType(), $profile3->getType()); + $this->assertEquals($profile1->getName(), $profile3->getName()); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/TemplateTest.php b/system/vendor/twig/twig/test/Twig/Tests/TemplateTest.php new file mode 100644 index 0000000..faa68c6 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/TemplateTest.php @@ -0,0 +1,737 @@ +getMockForAbstractClass('Twig_Template', array(), '', false); + $template->displayBlock('foo', array(), array('foo' => array(new stdClass(), 'foo'))); + } + + /** + * @dataProvider getAttributeExceptions + */ + public function testGetAttributeExceptions($template, $message) + { + $templates = array('index' => $template); + $env = new Twig_Environment(new Twig_Loader_Array($templates), array('strict_variables' => true)); + $template = $env->loadTemplate('index'); + + $context = array( + 'string' => 'foo', + 'null' => null, + 'empty_array' => array(), + 'array' => array('foo' => 'foo'), + 'array_access' => new Twig_TemplateArrayAccessObject(), + 'magic_exception' => new Twig_TemplateMagicPropertyObjectWithException(), + 'object' => new stdClass(), + ); + + try { + $template->render($context); + $this->fail('Accessing an invalid attribute should throw an exception.'); + } catch (Twig_Error_Runtime $e) { + $this->assertSame(sprintf($message, 'index'), $e->getMessage()); + } + } + + public function getAttributeExceptions() + { + return array( + array('{{ string["a"] }}', 'Impossible to access a key ("a") on a string variable ("foo") in "%s" at line 1.'), + array('{{ null["a"] }}', 'Impossible to access a key ("a") on a null variable in "%s" at line 1.'), + array('{{ empty_array["a"] }}', 'Key "a" does not exist as the array is empty in "%s" at line 1.'), + array('{{ array["a"] }}', 'Key "a" for array with keys "foo" does not exist in "%s" at line 1.'), + array('{{ array_access["a"] }}', 'Key "a" in object with ArrayAccess of class "Twig_TemplateArrayAccessObject" does not exist in "%s" at line 1.'), + array('{{ string.a }}', 'Impossible to access an attribute ("a") on a string variable ("foo") in "%s" at line 1.'), + array('{{ string.a() }}', 'Impossible to invoke a method ("a") on a string variable ("foo") in "%s" at line 1.'), + array('{{ null.a }}', 'Impossible to access an attribute ("a") on a null variable in "%s" at line 1.'), + array('{{ null.a() }}', 'Impossible to invoke a method ("a") on a null variable in "%s" at line 1.'), + array('{{ empty_array.a }}', 'Key "a" does not exist as the array is empty in "%s" at line 1.'), + array('{{ array.a }}', 'Key "a" for array with keys "foo" does not exist in "%s" at line 1.'), + array('{{ attribute(array, -10) }}', 'Key "-10" for array with keys "foo" does not exist in "%s" at line 1.'), + array('{{ array_access.a }}', 'Neither the property "a" nor one of the methods "a()", "geta()"/"isa()" or "__call()" exist and have public access in class "Twig_TemplateArrayAccessObject" in "%s" at line 1.'), + array('{% from _self import foo %}{% macro foo(obj) %}{{ obj.missing_method() }}{% endmacro %}{{ foo(array_access) }}', 'Neither the property "missing_method" nor one of the methods "missing_method()", "getmissing_method()"/"ismissing_method()" or "__call()" exist and have public access in class "Twig_TemplateArrayAccessObject" in "%s" at line 1.'), + array('{{ magic_exception.test }}', 'An exception has been thrown during the rendering of a template ("Hey! Don\'t try to isset me!") in "%s" at line 1.'), + array('{{ object["a"] }}', 'Impossible to access a key "a" on an object of class "stdClass" that does not implement ArrayAccess interface in "%s" at line 1.'), + ); + } + + /** + * @dataProvider getGetAttributeWithSandbox + */ + public function testGetAttributeWithSandbox($object, $item, $allowed) + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + $policy = new Twig_Sandbox_SecurityPolicy(array(), array(), array(/*method*/), array(/*prop*/), array()); + $twig->addExtension(new Twig_Extension_Sandbox($policy, !$allowed)); + $template = new Twig_TemplateTest($twig); + + try { + $template->getAttribute($object, $item, array(), 'any'); + + if (!$allowed) { + $this->fail(); + } else { + $this->addToAssertionCount(1); + } + } catch (Twig_Sandbox_SecurityError $e) { + if ($allowed) { + $this->fail(); + } else { + $this->addToAssertionCount(1); + } + + $this->assertContains('is not allowed', $e->getMessage()); + } + } + + public function getGetAttributeWithSandbox() + { + return array( + array(new Twig_TemplatePropertyObject(), 'defined', false), + array(new Twig_TemplatePropertyObject(), 'defined', true), + array(new Twig_TemplateMethodObject(), 'defined', false), + array(new Twig_TemplateMethodObject(), 'defined', true), + ); + } + + /** + * @group legacy + */ + public function testGetAttributeWithTemplateAsObject() + { + // to be removed in 2.0 + $twig = new Twig_Environment($this->getMockBuilder('Twig_TemplateTestLoaderInterface')->getMock()); + //$twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface', 'Twig_SourceContextLoaderInterface')->getMock()); + + $template = new Twig_TemplateTest($twig, 'index.twig'); + $template1 = new Twig_TemplateTest($twig, 'index1.twig'); + + $this->assertInstanceof('Twig_Markup', $template->getAttribute($template1, 'string')); + $this->assertEquals('some_string', $template->getAttribute($template1, 'string')); + + $this->assertInstanceof('Twig_Markup', $template->getAttribute($template1, 'true')); + $this->assertEquals('1', $template->getAttribute($template1, 'true')); + + $this->assertInstanceof('Twig_Markup', $template->getAttribute($template1, 'zero')); + $this->assertEquals('0', $template->getAttribute($template1, 'zero')); + + $this->assertNotInstanceof('Twig_Markup', $template->getAttribute($template1, 'empty')); + $this->assertSame('', $template->getAttribute($template1, 'empty')); + + $this->assertFalse($template->getAttribute($template1, 'env', array(), Twig_Template::ANY_CALL, true)); + $this->assertFalse($template->getAttribute($template1, 'environment', array(), Twig_Template::ANY_CALL, true)); + $this->assertFalse($template->getAttribute($template1, 'getEnvironment', array(), Twig_Template::METHOD_CALL, true)); + $this->assertFalse($template->getAttribute($template1, 'displayWithErrorHandling', array(), Twig_Template::METHOD_CALL, true)); + } + + /** + * @group legacy + * @expectedDeprecation Calling "string" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. + * @expectedDeprecation Calling "string" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. + * @expectedDeprecation Calling "true" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. + * @expectedDeprecation Calling "true" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. + * @expectedDeprecation Calling "zero" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. + * @expectedDeprecation Calling "zero" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. + * @expectedDeprecation Calling "empty" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. + * @expectedDeprecation Calling "empty" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. + * @expectedDeprecation Calling "renderBlock" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use block("name") instead). + * @expectedDeprecation Calling "displayBlock" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use block("name") instead). + * @expectedDeprecation Calling "hasBlock" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use "block("name") is defined" instead). + * @expectedDeprecation Calling "render" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use include("index.twig") instead). + * @expectedDeprecation Calling "display" on template "index.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use include("index.twig") instead). + * @expectedDeprecation Calling "renderBlock" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use block("name", template) instead). + * @expectedDeprecation Calling "displayBlock" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use block("name", template) instead). + * @expectedDeprecation Calling "hasBlock" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use "block("name", template) is defined" instead). + * @expectedDeprecation Calling "render" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use include("index1.twig") instead). + * @expectedDeprecation Calling "display" on template "index1.twig" from template "index.twig" is deprecated since version 1.28 and won't be supported anymore in 2.0. Use include("index1.twig") instead). + */ + public function testGetAttributeWithTemplateAsObjectForDeprecations() + { + // to be removed in 2.0 + $twig = new Twig_Environment($this->getMockBuilder('Twig_TemplateTestLoaderInterface')->getMock()); + //$twig = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface', 'Twig_SourceContextLoaderInterface')->getMock()); + + $template = new Twig_TemplateTest($twig, 'index.twig'); + $template1 = new Twig_TemplateTest($twig, 'index1.twig'); + + $this->assertInstanceof('Twig_Markup', $template->getAttribute($template1, 'string')); + $this->assertEquals('some_string', $template->getAttribute($template1, 'string')); + + $this->assertInstanceof('Twig_Markup', $template->getAttribute($template1, 'true')); + $this->assertEquals('1', $template->getAttribute($template1, 'true')); + + $this->assertInstanceof('Twig_Markup', $template->getAttribute($template1, 'zero')); + $this->assertEquals('0', $template->getAttribute($template1, 'zero')); + + $this->assertNotInstanceof('Twig_Markup', $template->getAttribute($template1, 'empty')); + $this->assertSame('', $template->getAttribute($template1, 'empty')); + + $blocks = array('name' => array($template1, 'block_name')); + + // trigger some deprecation notice messages to check them with @expectedDeprecation + $template->getAttribute($template, 'renderBlock', array('name', array(), $blocks)); + $template->getAttribute($template, 'displayBlock', array('name', array(), $blocks)); + $template->getAttribute($template, 'hasBlock', array('name', array())); + $template->getAttribute($template, 'render', array(array())); + $template->getAttribute($template, 'display', array(array())); + + $template->getAttribute($template1, 'renderBlock', array('name', array(), $blocks)); + $template->getAttribute($template1, 'displayBlock', array('name', array(), $blocks)); + $template->getAttribute($template1, 'hasBlock', array('name', array())); + $template->getAttribute($template1, 'render', array(array())); + $template->getAttribute($template1, 'display', array(array())); + + $this->assertFalse($template->getAttribute($template1, 'env', array(), Twig_Template::ANY_CALL, true)); + $this->assertFalse($template->getAttribute($template1, 'environment', array(), Twig_Template::ANY_CALL, true)); + $this->assertFalse($template->getAttribute($template1, 'getEnvironment', array(), Twig_Template::METHOD_CALL, true)); + $this->assertFalse($template->getAttribute($template1, 'displayWithErrorHandling', array(), Twig_Template::METHOD_CALL, true)); + } + + /** + * @group legacy + * @expectedDeprecation Silent display of undefined block "unknown" in template "index.twig" is deprecated since version 1.29 and will throw an exception in 2.0. Use the "block('unknown') is defined" expression to test for block existence. + * @expectedDeprecation Silent display of undefined block "unknown" in template "index.twig" is deprecated since version 1.29 and will throw an exception in 2.0. Use the "block('unknown') is defined" expression to test for block existence. + */ + public function testRenderBlockWithUndefinedBlock() + { + $twig = new Twig_Environment($this->getMockBuilder('Twig_TemplateTestLoaderInterface')->getMock()); + + $template = new Twig_TemplateTest($twig, 'index.twig'); + $template->renderBlock('unknown', array()); + $template->displayBlock('unknown', array()); + } + + public function testGetAttributeOnArrayWithConfusableKey() + { + $template = new Twig_TemplateTest(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + + $array = array('Zero', 'One', -1 => 'MinusOne', '' => 'EmptyString', '1.5' => 'FloatButString', '01' => 'IntegerButStringWithLeadingZeros'); + + $this->assertSame('Zero', $array[false]); + $this->assertSame('One', $array[true]); + $this->assertSame('One', $array[1.5]); + $this->assertSame('One', $array['1']); + $this->assertSame('MinusOne', $array[-1.5]); + $this->assertSame('FloatButString', $array['1.5']); + $this->assertSame('IntegerButStringWithLeadingZeros', $array['01']); + $this->assertSame('EmptyString', $array[null]); + + $this->assertSame('Zero', $template->getAttribute($array, false), 'false is treated as 0 when accessing an array (equals PHP behavior)'); + $this->assertSame('One', $template->getAttribute($array, true), 'true is treated as 1 when accessing an array (equals PHP behavior)'); + $this->assertSame('One', $template->getAttribute($array, 1.5), 'float is casted to int when accessing an array (equals PHP behavior)'); + $this->assertSame('One', $template->getAttribute($array, '1'), '"1" is treated as integer 1 when accessing an array (equals PHP behavior)'); + $this->assertSame('MinusOne', $template->getAttribute($array, -1.5), 'negative float is casted to int when accessing an array (equals PHP behavior)'); + $this->assertSame('FloatButString', $template->getAttribute($array, '1.5'), '"1.5" is treated as-is when accessing an array (equals PHP behavior)'); + $this->assertSame('IntegerButStringWithLeadingZeros', $template->getAttribute($array, '01'), '"01" is treated as-is when accessing an array (equals PHP behavior)'); + $this->assertSame('EmptyString', $template->getAttribute($array, null), 'null is treated as "" when accessing an array (equals PHP behavior)'); + } + + /** + * @dataProvider getGetAttributeTests + */ + public function testGetAttribute($defined, $value, $object, $item, $arguments, $type) + { + $template = new Twig_TemplateTest(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + + $this->assertEquals($value, $template->getAttribute($object, $item, $arguments, $type)); + } + + /** + * @dataProvider getGetAttributeTests + */ + public function testGetAttributeStrict($defined, $value, $object, $item, $arguments, $type, $exceptionMessage = null) + { + $template = new Twig_TemplateTest(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('strict_variables' => true))); + + if ($defined) { + $this->assertEquals($value, $template->getAttribute($object, $item, $arguments, $type)); + } else { + if (method_exists($this, 'expectException')) { + $this->expectException('Twig_Error_Runtime'); + if (null !== $exceptionMessage) { + $this->expectExceptionMessage($exceptionMessage); + } + } else { + $this->setExpectedException('Twig_Error_Runtime', $exceptionMessage); + } + $this->assertEquals($value, $template->getAttribute($object, $item, $arguments, $type)); + } + } + + /** + * @dataProvider getGetAttributeTests + */ + public function testGetAttributeDefined($defined, $value, $object, $item, $arguments, $type) + { + $template = new Twig_TemplateTest(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + + $this->assertEquals($defined, $template->getAttribute($object, $item, $arguments, $type, true)); + } + + /** + * @dataProvider getGetAttributeTests + */ + public function testGetAttributeDefinedStrict($defined, $value, $object, $item, $arguments, $type) + { + $template = new Twig_TemplateTest(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock(), array('strict_variables' => true))); + + $this->assertEquals($defined, $template->getAttribute($object, $item, $arguments, $type, true)); + } + + public function testGetAttributeCallExceptions() + { + $template = new Twig_TemplateTest(new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock())); + + $object = new Twig_TemplateMagicMethodExceptionObject(); + + $this->assertNull($template->getAttribute($object, 'foo')); + } + + public function getGetAttributeTests() + { + $array = array( + 'defined' => 'defined', + 'zero' => 0, + 'null' => null, + '1' => 1, + 'bar' => true, + 'baz' => 'baz', + '09' => '09', + '+4' => '+4', + ); + + $objectArray = new Twig_TemplateArrayAccessObject(); + $stdObject = (object) $array; + $magicPropertyObject = new Twig_TemplateMagicPropertyObject(); + $propertyObject = new Twig_TemplatePropertyObject(); + $propertyObject1 = new Twig_TemplatePropertyObjectAndIterator(); + $propertyObject2 = new Twig_TemplatePropertyObjectAndArrayAccess(); + $propertyObject3 = new Twig_TemplatePropertyObjectDefinedWithUndefinedValue(); + $methodObject = new Twig_TemplateMethodObject(); + $magicMethodObject = new Twig_TemplateMagicMethodObject(); + + $anyType = Twig_Template::ANY_CALL; + $methodType = Twig_Template::METHOD_CALL; + $arrayType = Twig_Template::ARRAY_CALL; + + $basicTests = array( + // array(defined, value, property to fetch) + array(true, 'defined', 'defined'), + array(false, null, 'undefined'), + array(false, null, 'protected'), + array(true, 0, 'zero'), + array(true, 1, 1), + array(true, 1, 1.0), + array(true, null, 'null'), + array(true, true, 'bar'), + array(true, 'baz', 'baz'), + array(true, '09', '09'), + array(true, '+4', '+4'), + ); + $testObjects = array( + // array(object, type of fetch) + array($array, $arrayType), + array($objectArray, $arrayType), + array($stdObject, $anyType), + array($magicPropertyObject, $anyType), + array($methodObject, $methodType), + array($methodObject, $anyType), + array($propertyObject, $anyType), + array($propertyObject1, $anyType), + array($propertyObject2, $anyType), + ); + + $tests = array(); + foreach ($testObjects as $testObject) { + foreach ($basicTests as $test) { + // properties cannot be numbers + if (($testObject[0] instanceof stdClass || $testObject[0] instanceof Twig_TemplatePropertyObject) && is_numeric($test[2])) { + continue; + } + + if ('+4' === $test[2] && $methodObject === $testObject[0]) { + continue; + } + + $tests[] = array($test[0], $test[1], $testObject[0], $test[2], array(), $testObject[1]); + } + } + + // additional properties tests + $tests = array_merge($tests, array( + array(true, null, $propertyObject3, 'foo', array(), $anyType), + )); + + // additional method tests + $tests = array_merge($tests, array( + array(true, 'defined', $methodObject, 'defined', array(), $methodType), + array(true, 'defined', $methodObject, 'DEFINED', array(), $methodType), + array(true, 'defined', $methodObject, 'getDefined', array(), $methodType), + array(true, 'defined', $methodObject, 'GETDEFINED', array(), $methodType), + array(true, 'static', $methodObject, 'static', array(), $methodType), + array(true, 'static', $methodObject, 'getStatic', array(), $methodType), + + array(true, '__call_undefined', $magicMethodObject, 'undefined', array(), $methodType), + array(true, '__call_UNDEFINED', $magicMethodObject, 'UNDEFINED', array(), $methodType), + )); + + // add the same tests for the any type + foreach ($tests as $test) { + if ($anyType !== $test[5]) { + $test[5] = $anyType; + $tests[] = $test; + } + } + + $methodAndPropObject = new Twig_TemplateMethodAndPropObject(); + + // additional method tests + $tests = array_merge($tests, array( + array(true, 'a', $methodAndPropObject, 'a', array(), $anyType), + array(true, 'a', $methodAndPropObject, 'a', array(), $methodType), + array(false, null, $methodAndPropObject, 'a', array(), $arrayType), + + array(true, 'b_prop', $methodAndPropObject, 'b', array(), $anyType), + array(true, 'b', $methodAndPropObject, 'B', array(), $anyType), + array(true, 'b', $methodAndPropObject, 'b', array(), $methodType), + array(true, 'b', $methodAndPropObject, 'B', array(), $methodType), + array(false, null, $methodAndPropObject, 'b', array(), $arrayType), + + array(false, null, $methodAndPropObject, 'c', array(), $anyType), + array(false, null, $methodAndPropObject, 'c', array(), $methodType), + array(false, null, $methodAndPropObject, 'c', array(), $arrayType), + )); + + // tests when input is not an array or object + $tests = array_merge($tests, array( + array(false, null, 42, 'a', array(), $anyType, 'Impossible to access an attribute ("a") on a integer variable ("42") in "index.twig".'), + array(false, null, 'string', 'a', array(), $anyType, 'Impossible to access an attribute ("a") on a string variable ("string") in "index.twig".'), + array(false, null, array(), 'a', array(), $anyType, 'Key "a" does not exist as the array is empty in "index.twig".'), + )); + + return $tests; + } +} + +class Twig_TemplateTest extends Twig_Template +{ + private $name; + + public function __construct(Twig_Environment $env, $name = 'index.twig') + { + parent::__construct($env); + self::$cache = array(); + $this->name = $name; + } + + public function getZero() + { + return 0; + } + + public function getEmpty() + { + return ''; + } + + public function getString() + { + return 'some_string'; + } + + public function getTrue() + { + return true; + } + + public function getTemplateName() + { + return $this->name; + } + + public function getDebugInfo() + { + return array(); + } + + protected function doGetParent(array $context) + { + return false; + } + + protected function doDisplay(array $context, array $blocks = array()) + { + } + + public function getAttribute($object, $item, array $arguments = array(), $type = Twig_Template::ANY_CALL, $isDefinedTest = false, $ignoreStrictCheck = false) + { + if (function_exists('twig_template_get_attributes')) { + return twig_template_get_attributes($this, $object, $item, $arguments, $type, $isDefinedTest, $ignoreStrictCheck); + } else { + return parent::getAttribute($object, $item, $arguments, $type, $isDefinedTest, $ignoreStrictCheck); + } + } + + public function block_name($context, array $blocks = array()) + { + } +} + +class Twig_TemplateArrayAccessObject implements ArrayAccess +{ + protected $protected = 'protected'; + + public $attributes = array( + 'defined' => 'defined', + 'zero' => 0, + 'null' => null, + '1' => 1, + 'bar' => true, + 'baz' => 'baz', + '09' => '09', + '+4' => '+4', + ); + + public function offsetExists($name) + { + return array_key_exists($name, $this->attributes); + } + + public function offsetGet($name) + { + return array_key_exists($name, $this->attributes) ? $this->attributes[$name] : null; + } + + public function offsetSet($name, $value) + { + } + + public function offsetUnset($name) + { + } +} + +class Twig_TemplateMagicPropertyObject +{ + public $defined = 'defined'; + + public $attributes = array( + 'zero' => 0, + 'null' => null, + '1' => 1, + 'bar' => true, + 'baz' => 'baz', + '09' => '09', + '+4' => '+4', + ); + + protected $protected = 'protected'; + + public function __isset($name) + { + return array_key_exists($name, $this->attributes); + } + + public function __get($name) + { + return array_key_exists($name, $this->attributes) ? $this->attributes[$name] : null; + } +} + +class Twig_TemplateMagicPropertyObjectWithException +{ + public function __isset($key) + { + throw new Exception('Hey! Don\'t try to isset me!'); + } +} + +class Twig_TemplatePropertyObject +{ + public $defined = 'defined'; + public $zero = 0; + public $null = null; + public $bar = true; + public $baz = 'baz'; + + protected $protected = 'protected'; +} + +class Twig_TemplatePropertyObjectAndIterator extends Twig_TemplatePropertyObject implements IteratorAggregate +{ + public function getIterator() + { + return new ArrayIterator(array('foo', 'bar')); + } +} + +class Twig_TemplatePropertyObjectAndArrayAccess extends Twig_TemplatePropertyObject implements ArrayAccess +{ + private $data = array( + 'defined' => 'defined', + 'zero' => 0, + 'null' => null, + 'bar' => true, + 'baz' => 'baz', + ); + + public function offsetExists($offset) + { + return array_key_exists($offset, $this->data); + } + + public function offsetGet($offset) + { + return $this->offsetExists($offset) ? $this->data[$offset] : 'n/a'; + } + + public function offsetSet($offset, $value) + { + } + + public function offsetUnset($offset) + { + } +} + +class Twig_TemplatePropertyObjectDefinedWithUndefinedValue +{ + public $foo; + + public function __construct() + { + $this->foo = @$notExist; + } +} + +class Twig_TemplateMethodObject +{ + public function getDefined() + { + return 'defined'; + } + + public function get1() + { + return 1; + } + + public function get09() + { + return '09'; + } + + public function getZero() + { + return 0; + } + + public function getNull() + { + } + + public function isBar() + { + return true; + } + + public function isBaz() + { + return 'should never be returned'; + } + + public function getBaz() + { + return 'baz'; + } + + protected function getProtected() + { + return 'protected'; + } + + public static function getStatic() + { + return 'static'; + } +} + +class Twig_TemplateMethodAndPropObject +{ + private $a = 'a_prop'; + + public function getA() + { + return 'a'; + } + + public $b = 'b_prop'; + + public function getB() + { + return 'b'; + } + + private $c = 'c_prop'; + + private function getC() + { + return 'c'; + } +} + +class Twig_TemplateMagicMethodObject +{ + public function __call($method, $arguments) + { + return '__call_'.$method; + } +} + +class Twig_TemplateMagicMethodExceptionObject +{ + public function __call($method, $arguments) + { + throw new BadMethodCallException(sprintf('Unknown method "%s".', $method)); + } +} + +class CExtDisablingNodeVisitor implements Twig_NodeVisitorInterface +{ + public function enterNode(Twig_NodeInterface $node, Twig_Environment $env) + { + if ($node instanceof Twig_Node_Expression_GetAttr) { + $node->setAttribute('disable_c_ext', true); + } + + return $node; + } + + public function leaveNode(Twig_NodeInterface $node, Twig_Environment $env) + { + return $node; + } + + public function getPriority() + { + return 0; + } +} + +// to be removed in 2.0 +interface Twig_TemplateTestLoaderInterface extends Twig_LoaderInterface, Twig_SourceContextLoaderInterface +{ +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/TemplateWrapperTest.php b/system/vendor/twig/twig/test/Twig/Tests/TemplateWrapperTest.php new file mode 100644 index 0000000..9cd1ced --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/TemplateWrapperTest.php @@ -0,0 +1,64 @@ + '{% block foo %}{% endblock %}', + 'index_with_use' => '{% use "imported" %}{% block foo %}{% endblock %}', + 'index_with_extends' => '{% extends "extended" %}{% block foo %}{% endblock %}', + 'imported' => '{% block imported %}{% endblock %}', + 'extended' => '{% block extended %}{% endblock %}', + ))); + + $wrapper = new Twig_TemplateWrapper($twig, $twig->loadTemplate('index')); + $this->assertTrue($wrapper->hasBlock('foo')); + $this->assertFalse($wrapper->hasBlock('bar')); + $this->assertEquals(array('foo'), $wrapper->getBlockNames()); + + $wrapper = new Twig_TemplateWrapper($twig, $twig->loadTemplate('index_with_use')); + $this->assertTrue($wrapper->hasBlock('foo')); + $this->assertTrue($wrapper->hasBlock('imported')); + $this->assertEquals(array('imported', 'foo'), $wrapper->getBlockNames()); + + $wrapper = new Twig_TemplateWrapper($twig, $twig->loadTemplate('index_with_extends')); + $this->assertTrue($wrapper->hasBlock('foo')); + $this->assertTrue($wrapper->hasBlock('extended')); + $this->assertEquals(array('foo', 'extended'), $wrapper->getBlockNames()); + } + + public function testRenderBlock() + { + $twig = new Twig_Environment(new Twig_Loader_Array(array( + 'index' => '{% block foo %}{{ foo }}{{ bar }}{% endblock %}', + ))); + $twig->addGlobal('bar', 'BAR'); + + $wrapper = new Twig_TemplateWrapper($twig, $twig->loadTemplate('index')); + $this->assertEquals('FOOBAR', $wrapper->renderBlock('foo', array('foo' => 'FOO'))); + } + + public function testDisplayBlock() + { + $twig = new Twig_Environment(new Twig_Loader_Array(array( + 'index' => '{% block foo %}{{ foo }}{{ bar }}{% endblock %}', + ))); + $twig->addGlobal('bar', 'BAR'); + + $wrapper = new Twig_TemplateWrapper($twig, $twig->loadTemplate('index')); + + ob_start(); + $wrapper->displayBlock('foo', array('foo' => 'FOO')); + + $this->assertEquals('FOOBAR', ob_get_clean()); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/TokenStreamTest.php b/system/vendor/twig/twig/test/Twig/Tests/TokenStreamTest.php new file mode 100644 index 0000000..88f39a1 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/TokenStreamTest.php @@ -0,0 +1,82 @@ +assertEquals('foo', $stream->getFilename()); + $this->assertEquals('{{ foo }}', $stream->getSource()); + $this->assertEquals('foo', $stream->getSourceContext()->getName()); + $this->assertEquals('{{ foo }}', $stream->getSourceContext()->getCode()); + } + + public function testNext() + { + $stream = new Twig_TokenStream(self::$tokens); + $repr = array(); + while (!$stream->isEOF()) { + $token = $stream->next(); + + $repr[] = $token->getValue(); + } + $this->assertEquals('1, 2, 3, 4, 5, 6, 7', implode(', ', $repr), '->next() advances the pointer and returns the current token'); + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unexpected end of template + */ + public function testEndOfTemplateNext() + { + $stream = new Twig_TokenStream(array( + new Twig_Token(Twig_Token::BLOCK_START_TYPE, 1, 1), + )); + while (!$stream->isEOF()) { + $stream->next(); + } + } + + /** + * @expectedException Twig_Error_Syntax + * @expectedExceptionMessage Unexpected end of template + */ + public function testEndOfTemplateLook() + { + $stream = new Twig_TokenStream(array( + new Twig_Token(Twig_Token::BLOCK_START_TYPE, 1, 1), + )); + while (!$stream->isEOF()) { + $stream->look(); + $stream->next(); + } + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/Util/DeprecationCollectorTest.php b/system/vendor/twig/twig/test/Twig/Tests/Util/DeprecationCollectorTest.php new file mode 100644 index 0000000..9f7d14d --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/Util/DeprecationCollectorTest.php @@ -0,0 +1,42 @@ +getMockBuilder('Twig_LoaderInterface')->getMock()); + $twig->addFunction(new Twig_SimpleFunction('deprec', array($this, 'deprec'), array('deprecated' => true))); + + $collector = new Twig_Util_DeprecationCollector($twig); + $deprecations = $collector->collect(new Twig_Tests_Util_Iterator()); + + $this->assertEquals(array('Twig Function "deprec" is deprecated in deprec.twig at line 1.'), $deprecations); + } + + public function deprec() + { + } +} + +class Twig_Tests_Util_Iterator implements IteratorAggregate +{ + public function getIterator() + { + return new ArrayIterator(array( + 'ok.twig' => '{{ foo }}', + 'deprec.twig' => '{{ deprec("foo") }}', + )); + } +} diff --git a/system/vendor/twig/twig/test/Twig/Tests/escapingTest.php b/system/vendor/twig/twig/test/Twig/Tests/escapingTest.php new file mode 100644 index 0000000..e5b9093 --- /dev/null +++ b/system/vendor/twig/twig/test/Twig/Tests/escapingTest.php @@ -0,0 +1,320 @@ + ''', + '"' => '"', + '<' => '<', + '>' => '>', + '&' => '&', + ); + + protected $htmlAttrSpecialChars = array( + '\'' => ''', + /* Characters beyond ASCII value 255 to unicode escape */ + 'Ä€' => 'Ā', + /* Immune chars excluded */ + ',' => ',', + '.' => '.', + '-' => '-', + '_' => '_', + /* Basic alnums excluded */ + 'a' => 'a', + 'A' => 'A', + 'z' => 'z', + 'Z' => 'Z', + '0' => '0', + '9' => '9', + /* Basic control characters and null */ + "\r" => ' ', + "\n" => ' ', + "\t" => ' ', + "\0" => '�', // should use Unicode replacement char + /* Encode chars as named entities where possible */ + '<' => '<', + '>' => '>', + '&' => '&', + '"' => '"', + /* Encode spaces for quoteless attribute protection */ + ' ' => ' ', + ); + + protected $jsSpecialChars = array( + /* HTML special chars - escape without exception to hex */ + '<' => '\\x3C', + '>' => '\\x3E', + '\'' => '\\x27', + '"' => '\\x22', + '&' => '\\x26', + /* Characters beyond ASCII value 255 to unicode escape */ + 'Ä€' => '\\u0100', + /* Immune chars excluded */ + ',' => ',', + '.' => '.', + '_' => '_', + /* Basic alnums excluded */ + 'a' => 'a', + 'A' => 'A', + 'z' => 'z', + 'Z' => 'Z', + '0' => '0', + '9' => '9', + /* Basic control characters and null */ + "\r" => '\\x0D', + "\n" => '\\x0A', + "\t" => '\\x09', + "\0" => '\\x00', + /* Encode spaces for quoteless attribute protection */ + ' ' => '\\x20', + ); + + protected $urlSpecialChars = array( + /* HTML special chars - escape without exception to percent encoding */ + '<' => '%3C', + '>' => '%3E', + '\'' => '%27', + '"' => '%22', + '&' => '%26', + /* Characters beyond ASCII value 255 to hex sequence */ + 'Ä€' => '%C4%80', + /* Punctuation and unreserved check */ + ',' => '%2C', + '.' => '.', + '_' => '_', + '-' => '-', + ':' => '%3A', + ';' => '%3B', + '!' => '%21', + /* Basic alnums excluded */ + 'a' => 'a', + 'A' => 'A', + 'z' => 'z', + 'Z' => 'Z', + '0' => '0', + '9' => '9', + /* Basic control characters and null */ + "\r" => '%0D', + "\n" => '%0A', + "\t" => '%09', + "\0" => '%00', + /* PHP quirks from the past */ + ' ' => '%20', + '~' => '~', + '+' => '%2B', + ); + + protected $cssSpecialChars = array( + /* HTML special chars - escape without exception to hex */ + '<' => '\\3C ', + '>' => '\\3E ', + '\'' => '\\27 ', + '"' => '\\22 ', + '&' => '\\26 ', + /* Characters beyond ASCII value 255 to unicode escape */ + 'Ä€' => '\\100 ', + /* Immune chars excluded */ + ',' => '\\2C ', + '.' => '\\2E ', + '_' => '\\5F ', + /* Basic alnums excluded */ + 'a' => 'a', + 'A' => 'A', + 'z' => 'z', + 'Z' => 'Z', + '0' => '0', + '9' => '9', + /* Basic control characters and null */ + "\r" => '\\D ', + "\n" => '\\A ', + "\t" => '\\9 ', + "\0" => '\\0 ', + /* Encode spaces for quoteless attribute protection */ + ' ' => '\\20 ', + ); + + protected $env; + + protected function setUp() + { + $this->env = new Twig_Environment($this->getMockBuilder('Twig_LoaderInterface')->getMock()); + } + + public function testHtmlEscapingConvertsSpecialChars() + { + foreach ($this->htmlSpecialChars as $key => $value) { + $this->assertEquals($value, twig_escape_filter($this->env, $key, 'html'), 'Failed to escape: '.$key); + } + } + + public function testHtmlAttributeEscapingConvertsSpecialChars() + { + foreach ($this->htmlAttrSpecialChars as $key => $value) { + $this->assertEquals($value, twig_escape_filter($this->env, $key, 'html_attr'), 'Failed to escape: '.$key); + } + } + + public function testJavascriptEscapingConvertsSpecialChars() + { + foreach ($this->jsSpecialChars as $key => $value) { + $this->assertEquals($value, twig_escape_filter($this->env, $key, 'js'), 'Failed to escape: '.$key); + } + } + + public function testJavascriptEscapingReturnsStringIfZeroLength() + { + $this->assertEquals('', twig_escape_filter($this->env, '', 'js')); + } + + public function testJavascriptEscapingReturnsStringIfContainsOnlyDigits() + { + $this->assertEquals('123', twig_escape_filter($this->env, '123', 'js')); + } + + public function testCssEscapingConvertsSpecialChars() + { + foreach ($this->cssSpecialChars as $key => $value) { + $this->assertEquals($value, twig_escape_filter($this->env, $key, 'css'), 'Failed to escape: '.$key); + } + } + + public function testCssEscapingReturnsStringIfZeroLength() + { + $this->assertEquals('', twig_escape_filter($this->env, '', 'css')); + } + + public function testCssEscapingReturnsStringIfContainsOnlyDigits() + { + $this->assertEquals('123', twig_escape_filter($this->env, '123', 'css')); + } + + public function testUrlEscapingConvertsSpecialChars() + { + foreach ($this->urlSpecialChars as $key => $value) { + $this->assertEquals($value, twig_escape_filter($this->env, $key, 'url'), 'Failed to escape: '.$key); + } + } + + /** + * Range tests to confirm escaped range of characters is within OWASP recommendation. + */ + + /** + * Only testing the first few 2 ranges on this prot. function as that's all these + * other range tests require. + */ + public function testUnicodeCodepointConversionToUtf8() + { + $expected = ' ~Þ™'; + $codepoints = array(0x20, 0x7e, 0x799); + $result = ''; + foreach ($codepoints as $value) { + $result .= $this->codepointToUtf8($value); + } + $this->assertEquals($expected, $result); + } + + /** + * Convert a Unicode Codepoint to a literal UTF-8 character. + * + * @param int $codepoint Unicode codepoint in hex notation + * + * @return string UTF-8 literal string + */ + protected function codepointToUtf8($codepoint) + { + if ($codepoint < 0x80) { + return chr($codepoint); + } + if ($codepoint < 0x800) { + return chr($codepoint >> 6 & 0x3f | 0xc0) + .chr($codepoint & 0x3f | 0x80); + } + if ($codepoint < 0x10000) { + return chr($codepoint >> 12 & 0x0f | 0xe0) + .chr($codepoint >> 6 & 0x3f | 0x80) + .chr($codepoint & 0x3f | 0x80); + } + if ($codepoint < 0x110000) { + return chr($codepoint >> 18 & 0x07 | 0xf0) + .chr($codepoint >> 12 & 0x3f | 0x80) + .chr($codepoint >> 6 & 0x3f | 0x80) + .chr($codepoint & 0x3f | 0x80); + } + throw new Exception('Codepoint requested outside of Unicode range.'); + } + + public function testJavascriptEscapingEscapesOwaspRecommendedRanges() + { + $immune = array(',', '.', '_'); // Exceptions to escaping ranges + for ($chr = 0; $chr < 0xFF; ++$chr) { + if ($chr >= 0x30 && $chr <= 0x39 + || $chr >= 0x41 && $chr <= 0x5A + || $chr >= 0x61 && $chr <= 0x7A) { + $literal = $this->codepointToUtf8($chr); + $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'js')); + } else { + $literal = $this->codepointToUtf8($chr); + if (in_array($literal, $immune)) { + $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'js')); + } else { + $this->assertNotEquals( + $literal, + twig_escape_filter($this->env, $literal, 'js'), + "$literal should be escaped!"); + } + } + } + } + + public function testHtmlAttributeEscapingEscapesOwaspRecommendedRanges() + { + $immune = array(',', '.', '-', '_'); // Exceptions to escaping ranges + for ($chr = 0; $chr < 0xFF; ++$chr) { + if ($chr >= 0x30 && $chr <= 0x39 + || $chr >= 0x41 && $chr <= 0x5A + || $chr >= 0x61 && $chr <= 0x7A) { + $literal = $this->codepointToUtf8($chr); + $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'html_attr')); + } else { + $literal = $this->codepointToUtf8($chr); + if (in_array($literal, $immune)) { + $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'html_attr')); + } else { + $this->assertNotEquals( + $literal, + twig_escape_filter($this->env, $literal, 'html_attr'), + "$literal should be escaped!"); + } + } + } + } + + public function testCssEscapingEscapesOwaspRecommendedRanges() + { + // CSS has no exceptions to escaping ranges + for ($chr = 0; $chr < 0xFF; ++$chr) { + if ($chr >= 0x30 && $chr <= 0x39 + || $chr >= 0x41 && $chr <= 0x5A + || $chr >= 0x61 && $chr <= 0x7A) { + $literal = $this->codepointToUtf8($chr); + $this->assertEquals($literal, twig_escape_filter($this->env, $literal, 'css')); + } else { + $literal = $this->codepointToUtf8($chr); + $this->assertNotEquals( + $literal, + twig_escape_filter($this->env, $literal, 'css'), + "$literal should be escaped!"); + } + } + } +} diff --git a/system/vendor/twig/twig/test/bootstrap.php b/system/vendor/twig/twig/test/bootstrap.php new file mode 100644 index 0000000..d167b67 --- /dev/null +++ b/system/vendor/twig/twig/test/bootstrap.php @@ -0,0 +1,21 @@ +Not Found +

    Sorry, but we did not find the page that you are looking for.

    + +{% endblock %} \ No newline at end of file diff --git a/themes/typemill/cover.twig b/themes/typemill/cover.twig new file mode 100644 index 0000000..b8ef2ea --- /dev/null +++ b/themes/typemill/cover.twig @@ -0,0 +1,15 @@ +{% extends '/partials/layoutCover.twig' %} + +{% block title %}{{ settings.title }}{% endblock %} + +{% block content %} + +
    + + {{ content }} + + Start + +
    + +{% endblock %} \ No newline at end of file diff --git a/themes/typemill/css/fontello/LICENSE.txt b/themes/typemill/css/fontello/LICENSE.txt new file mode 100644 index 0000000..de42058 --- /dev/null +++ b/themes/typemill/css/fontello/LICENSE.txt @@ -0,0 +1,12 @@ +Font license info + + +## Entypo + + Copyright (C) 2012 by Daniel Bruce + + Author: Daniel Bruce + License: SIL (http://scripts.sil.org/OFL) + Homepage: http://www.entypo.com + + diff --git a/themes/typemill/css/fontello/README.txt b/themes/typemill/css/fontello/README.txt new file mode 100644 index 0000000..beaab33 --- /dev/null +++ b/themes/typemill/css/fontello/README.txt @@ -0,0 +1,75 @@ +This webfont is generated by http://fontello.com open source project. + + +================================================================================ +Please, note, that you should obey original font licenses, used to make this +webfont pack. Details available in LICENSE.txt file. + +- Usually, it's enough to publish content of LICENSE.txt file somewhere on your + site in "About" section. + +- If your project is open-source, usually, it will be ok to make LICENSE.txt + file publicly available in your repository. + +- Fonts, used in Fontello, don't require a clickable link on your site. + But any kind of additional authors crediting is welcome. +================================================================================ + + +Comments on archive content +--------------------------- + +- /font/* - fonts in different formats + +- /css/* - different kinds of css, for all situations. Should be ok with + twitter bootstrap. Also, you can skip style and assign icon classes + directly to text elements, if you don't mind about IE7. + +- demo.html - demo file, to show your webfont content + +- LICENSE.txt - license info about source fonts, used to build your one. + +- config.json - keeps your settings. You can import it back into fontello + anytime, to continue your work + + +Why so many CSS files ? +----------------------- + +Because we like to fit all your needs :) + +- basic file, .css - is usually enough, it contains @font-face + and character code definitions + +- *-ie7.css - if you need IE7 support, but still don't wish to put char codes + directly into html + +- *-codes.css and *-ie7-codes.css - if you like to use your own @font-face + rules, but still wish to benefit from css generation. That can be very + convenient for automated asset build systems. When you need to update font - + no need to manually edit files, just override old version with archive + content. See fontello source code for examples. + +- *-embedded.css - basic css file, but with embedded WOFF font, to avoid + CORS issues in Firefox and IE9+, when fonts are hosted on the separate domain. + We strongly recommend to resolve this issue by `Access-Control-Allow-Origin` + server headers. But if you ok with dirty hack - this file is for you. Note, + that data url moved to separate @font-face to avoid problems with + + + + + + + +
    +

    + fontello + font demo +

    + +
    +
    +
    +
    icon-left-open-big0xe800
    +
    icon-right-open-big0xe801
    +
    +
    + + + \ No newline at end of file diff --git a/themes/typemill/css/fontello/font/fontello.eot b/themes/typemill/css/fontello/font/fontello.eot new file mode 100644 index 0000000000000000000000000000000000000000..cac85838e492a527f75a459e3f90e3eef706d31c GIT binary patch literal 5160 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 literal 0 HcmV?d00001 diff --git a/themes/typemill/css/fontello/font/fontello.svg b/themes/typemill/css/fontello/font/fontello.svg new file mode 100644 index 0000000..f3db961 --- /dev/null +++ b/themes/typemill/css/fontello/font/fontello.svg @@ -0,0 +1,14 @@ + + + +Copyright (C) 2017 by original authors @ fontello.com + + + + + + + + + + \ No newline at end of file diff --git a/themes/typemill/css/fontello/font/fontello.ttf b/themes/typemill/css/fontello/font/fontello.ttf new file mode 100644 index 0000000000000000000000000000000000000000..9b09b6f2aa403b146f0962809825cf02d6904fec GIT binary patch literal 4992 zcmd^CU2Ggz6+U-ocm1>eBX%6u+tRxo+jYFN8^>)NH+52X$Lmd+mTVj+?4&?vyg#~x?wv6SBI>6%Nuz4!(&dzVYy1{8|G~X-;nK00GxF>pk;p>6 zlHYWyJLcbh4Eaa6zm~sIm*GF|1&KP=(JxEYwavzNZd;Idh$7WBXS)jh0Aw3&=UVwz zDKk0r1d%og`R(2~BcWVR=_oXz5IzW>zIkk1kYep{_<*Z=;z>lfgE1pQ~LwPN)zFUNmQ zbm-rZzezmzZknbu6ev6OE$UlbdUb_H2{ZC8?td7I^2VA&ozQZRKp*!CXat2@+Q8Sv zZ3@BvR|D`wZ#7%-CpsMNsx8y^Kx0qM3pTMzL4}myL%tP&ilTdNCHa%xO6-h`+`kDEL!u_?Z0r7w z(GlFE!_D|O#$Vk2^MyD1=l?|!%?tYv|GaIp8*bT?b`PGgS9osTg)v@zk#-OLA7T{G z@Zn2iOXBx?AL0Jc>)<`dERFhnHd`B@Z9GRJyvO-EL?5(moq*i5%e&)5dsGLV_OS;2 zqK|{XulhJd5nAza82UGS+)Z&>^Kpa*>API@!7li@MnCkipaIeE;{f%Er+utJpYU-I z__U8hG%Q~8aTxl%kGtuL*!FRRCd9AJO7&K4V{N@IC(WaBX8QO^xq3@hpxW4S%F?-B zU$4}*<$^3#w(7-lxsuFRHd}bPxOTnl)LLSzy;7`gZ&bGA@#J(%l__o&YfimbVC&mA z)@JJUk}TCKn{vswE3382wPL=WT(8%wr;Z(KjbwjhQiZB?i)yriRIO8;Buzql6zvR- zx#M&aXcY_zW|Or+TjWp~8i%f9#JbnB4S4}~3DOp{MKH?1Ny_87`Ivqgj5Ule!%FS3 z-u+gtfL%lJY( zj1)LI_V9+?e~pm$shd{j+Zc1boa=TuBul(b6;6)8=IQo>HCprIo!S#U$EDak!e=ln!} zItfE%MxA9Vr(5V_sogPGh$tLS{NO6>BHE%Xl>T z-AyYZju1@D*p}&r?(jl*nW89XQ^_cTY(=TGaot&Lx`=$ta5aWe7~G!P!-IObX7to< zq+3hpVo^P2O~n$b*Kh-Yv?@4@3Dsv{0#d3T^A(;KfS$5cFH6gidLboLKg*ko#Y2fFKx-+NqS@k~| zsF#FFwAVlkD`QHD!_!`tlMiR*(XL~LJmJMT4UR}ZzFlz&92gesY4|7J5xjUtpL36i z!N4ZSMpBn@z5!da54vTtX+s5J6D+B0-pmUZb9Vw# zlhHeY32oF$@d4L~qZ0n$QD4H=!YV$xPq3*)ym^ubOuL{f&2$PlV*;iV1-310%>82= zgoIO9UvlQ6Iy@|4UT8couy=qH1i~j_5W5?>52287Ztsf(799*8_kzF^uMs}N9{56) zoa7uxcn?kZInd{knmJFcIf^lexiYWMMPm=Gcg*r*OmQ+=Ni})?G0r@P z=+C1)SaC39wRgQf)m{iBH7tnp}C(aQkm0R)3rja}hsUIXwnpJPr6T^E?cAj=#E7n#FgnK@?wE-{C}3Ue4- zW)6cZ%vk{VJaZW2n8Uzg4uh-AF#%p@4udZ+hrt(_!{AHIc?sYR<}k3C!@ywqH~ z)um7hv!^Krce(?jvx)FuFQahk-N1Y3?gH*ey-N#CtkI%7CU!33t8pjiYK292f~9vm j-^4$t3p;syI)Q?ZW9v>&K=e%A6?@-M!EfV5u}Jh^?Ol$V literal 0 HcmV?d00001 diff --git a/themes/typemill/css/fontello/font/fontello.woff b/themes/typemill/css/fontello/font/fontello.woff new file mode 100644 index 0000000000000000000000000000000000000000..a84ee82437a2f519f69e11e3b4c494fae791ea90 GIT binary patch literal 2820 zcmY*ac{o&k8$Jv}W-J*pmShbfV~}JEWz4HASt4NuGnU3qDDT8;XVfT5glwgSLXxSJ zAX_x6l@T_!T2yxV}slQjO27H&RyU0 zQ3?RSs}5=i5DL%%E*~+>KN!?Z0Dzwg_7BU(m`@%vaqX0l?r>_nOo29qW z_F)kOuvRD?hhh83}4=br~2UV2>{gueM47G z&on0y(g|VICj^Qp5R=k*0S$M48{kiE5V5$mmC@Sj+|ihpm{=}gsb_{m`T6l?qU+Fl zIDVeM2O4k@9i$fuEwI(&lkOwpa~&!{r@W~hh*%=gj4>Z#IS;cH5w2@d*Ic(b3(M!Ux1Iav zg+};T%`nfMnT|rl#ooxRn8T8J#7U5Gut%+HU`(I2#NIe;ak7>wOgjkw>Q!K!^?njP zVV6aNuYzZBZC+WHgz>_Q?->)5-phU?k)I67XO?7jRH%*fVMW&}W9GXDSfd2-GgsNL z&pEj_bUOM6_h)lVb}giyWID#H8(&l;WOhyPJBrojk389%cI=pv!{Y~a$HaciyBGPz ze{!^DHdUQI$O}>ZHmJHFT`FvDo1S`qn{a1C6RY|B zWgF{sw?kXHol@X)>CRr853>G^i~xhCY4uD}!Qym zgX@Q9qtCqZXd{0ac~|f@VA>(Z$HYT)uZNLi*Y|)^)rBWYMzGzL8p0L1QTtzvn(S@bdF?Y*U69qW%C(g_*JfIu z(}>8*BkN19)jmhqu)c-B8J+KeBeP1!7d958$tR{P26@pr+K1Y6lLSJyMBX!p^5s&7 zpzN<-mNoDEJ$UR}70++kUU~Zgja?^FuDhhW9`&g`=bqm+P_yUmoBkN9BG(r+eSDb_ za#F8fP{Oyo_4M+ui@%u2=zFAm&@}Rktze&A{EcYSqM^GT5j^3>z>yT2Kt?_(<6m$P?9Ci=dwJFb$mAH0L|I*S%7npRjGJLp0h;H zy-S2LFOwgsMs<5^3f>fX>%PsqVm-S)D5)JPV|==`elc|4<)231PYq_JnDcW72Ax$~ ze7f7O-Tx+=T1ry8cj#_x)X9P#7t^QP-p>yjGyusfgJ>?m3%&|rYl-_i-dYszXiVKxmX| zmfuAhNcQTV3b_OI?i_v^Y}qNYqI}?ddqd4s`|CYxc~^s_ljEz>2P!LX4tiDC-5Vnl zB?^{GUhvZu40JDDoQMjiGM=63LSupRc_&{V8;;HwrSP zh^f8Y%n**RhK66LqRA~NPWp~ZPVuzvPw1FLj6bH#IRTZwC`M+j^DKO?pGcDS9EweR zE7K|xiR7Tu=<<=sczSVkf=*$(0{ArD2wsX(17aC+P;cEd`Vb5MO*rx^B%Ub;)r~}| zu<&&c7Y0!*ZLeO>vL*|cGKiDC+gSUQgA?J+_GPKmtriQ`HeKQN_ML^F)D46VeAPec z`bL(;i7l7D62(WFG6~R^l=uQ6fm~0L+5A$*n&@c9Q5xvmJX|gy zy7RBz5Pm5SqtLD1Z8 z@f_aw6i@M^@Z6k@p>}|e!Zn9<(_jW^HzWftA6DxX(+jsQQzR`0J*Nb6iHQ^+4wbro znn&LUdBa3Yj{=x*04q%EnbQ-#K(H zioz|#_|m}d5^b{g@nF*_S#0HGFh~Bp?z0R}rq}4<)P{Whp0ycf!9$*~>`=j(9t7qs zuRkTijIMDZAGXqypEV=JRCWGNq@Cb~(EbtN%fH`D7tli^YJc zSHRTLS@DpL`?Kg4f7(A8Hrl7dbzVS&9uGK*$+*k*6P^t(zFBZRa8Etlcj3XwJ5dLI zM?4UpeqA47@_1~SEjn0#f9)f=bp1%Svyz8hs8KrN z)BkFv6__YAbNL=G+o z@8Xx0b}Kogi$Vt^B5%;HBaIZa%%G^O?m($No-%zkYWLU1EILmckr+07r;WWESx+xl z_EC<^WLg`Dg-T%{5alc@OoR=e4OT^rG>7+@c{f5|e;Ez2U9#Q}l>*@Bl~(}ZKf}G! A-~a#s literal 0 HcmV?d00001 diff --git a/themes/typemill/css/fontello/font/fontello.woff2 b/themes/typemill/css/fontello/font/fontello.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..9d51f947b8e2d618f50e3f00dd3219a51c620d41 GIT binary patch literal 2248 zcmV;(2sih4Pew8T0RR9100_tc4*&oF026=!00?pb0RR9100000000000000000000 z0000SR0dW6f_?}f36^jX2nvA^egQTDBm)c!2mk~i1%*uqNDP4n8(tDolx$Ls>}!mP z4D~A_Kx1SC!Lw<&ue<>8#1FYs6i@^KoEhK%01!O?t-aniGs~Ys#2Wxo1pk2Kx#|m$T%w>pwVbe2 zls{ycJIvmuBbR$#O_aVLKUdoMzl1U3z}Q-MnZL>I%Phg=I61-+u&iqxDm-LW0--7^ zT(zsOg>1SDH3_EeBOdUI?NboIr`f9FX^SFO8rwZSV}07;_Y1gt%4sPq*1gVQA}qm8 z+Qf|NuDrqmb+Z`o%-l|X(UQWWu{3g0vaRGh9PnvyR(Q=H8C_*A zZ8%R9MU|c$Zu*`WkXRzZHD%(646w2C}d_r+hHsn z*NL&v4lS3t$ITg%xbZ5AB&8``%7xgxwu)~NuG2R(l$LAC}L8kR+ObRWott@+M--- zQ=WDxU%OPGz3M{D;YxcgRFNuF#mrCw21>y|85k%B0~KJP5)4#mdDBkj4;=xONxgJnkj4Vm6+*m;dT za)Rs4P0(WzpP?CZ^vwC;h?mGzNaip2pkurCtTct`hNq>?x1y1V9WdHF!)t0qePi3x z7B4_Ji91C*ijvu~YK@?5%67bNpS(>D8pUy&7l&x*+CrFK-SBh(GBKu@@ImpoIcpnL z+HQ+Er!y?4dfg?Ah6FWY|BbwFcocuC!{VXRr->FGr+P&Jz)&HFm8=l z4QxGr`1m@enlO2~+8-0I$BM9%Z9nsLUkh+G(6J%7Bpxa0=`OCl)0_LV7He&rt1jHF zozpShow3b#-s{(DWROleYn@TC#jE%9R-WXrJT_AtUpCJj#;!h?>K>bKcpSBz>QWab zo1Xq_+ZTkv%FsJ z;jQ9UEKI|HVl?x(?)*&2Y};ew*s(6SB%U|Y5pLV{Xu;XiX+yNRYAl{{V`e+Xg6qTe=-NATEkWVXO*4anu-~w4%^LabvguwEoEsTdp)8Y zb3v{JjKG5y@&$na1{7MrAR=g?SP)2HK&b_U$e@LCL7;#El@>6H3R`k6bqT4HGWyms@Y^F?FQ%XW_gMr*^hTOp?daO~s=h;AB5<}i# z&}WV2?PmiyB!-+|>~Rg}yis38Lu?Ku+>u0=FV){A;Rq}6k0u+3i`EnNH@eDSRhckf z_Y(>diye5cev|k|o%pP=eYaOEs{lk5@ve_w+Rk@p`}Xm*hKg-A;7Hv0kyDRI8*bFN z@IiRzX=$j-MT%pzc| z%*JJ3nNJ-tdqA2yG-5p9B+q|kLZWz?A|^%9)T#y;tQsh@$ZQ@qRvjwy*%03=pt7%{ zyKWdMJc9nM0hk=0m;<{3D)=QbvI4Lw4VE44#a4WY)@zw zjmf9fHupFC7JT?}wJ6bIh@M7HBT8d5VoOn)9#OB)82`XW__C6xA}_WR`7jvbe2O)a zA=Fwuxv#`sZiunJJ ul > li +{ + text-transform: uppercase; + margin: 15px 0 5px; + font-size: 0.8em; + font-weight: 700; +} + +/************************ +* COVER * +************************/ +.cover h1{ + font-size: 3em; + font-weight: 700; +} +.cover .lead{ + font-size: 0.9em; + text-transform: uppercase; +} +.cover .lead a, a.readMore{ + display: inline-block; + min-width: 100px; + padding: 5px 10px; + margin: 25px 5px; + border-radius: 3px; + font-size: 0.8em; + line-height: 1.7em; + text-align: center; + text-decoration: none; +} +.cover.startpage h1{ + margin: 1em 0 0.6em; +} +.cover.startpage .breadcrumb{ + background: transparent; +} + +/************************ +* CHAPTER * +************************/ + +.chapter{ + text-align: center; +} +.chapterNumber{ + font-size: 1.2em; + padding: 1.5em; + margin: 0px +} +.chapter h1{ + text-transform: uppercase; + padding-bottom: 40px; + margin:0; +} + +/************************ +* ARTICLE * +************************/ + +article{ + padding: 30px 30px; + font-size: 1em; + line-height: 1.35em; +} + +/************************ +* PAGING / BREADCRUMB * +************************/ + +article .paging, article .breadcrumb{ + position: relative; + width: 100%; + padding: 5px 0; + font-size: 0.8em; + border-radius: 3px; + margin: 0 0 10px 0; + box-sizing: border-box; +} +article .breadcrumb{ + display: inline-block; + min-height: 40px; +} +article .paging a{ + display: inline-block; + border-radius: 3px; + padding: 5px 10px; + text-decoration: none; + width: 100%; + margin: 5px 0; + box-sizing: border-box; +} +article .breadcrumb a{ + text-decoration: none; + padding: 5px; +} +article .paging{ + margin: 50px 0 30px; +} +article .paging .next{ + text-align: right; +} +article .breadcrumb span{ + position: absolute; + top: 5px; +} +article .breadcrumb span a{ + display: inline-block; + padding: 0px; + border-radius: 50%; + width: 25px; + height: 25px; + text-align: center; +} +article .breadcrumb span.prev{ + left: 5px; +} +article .breadcrumb span.next{ + right: 5px; +} +article .breadcrumb ul{ + display: none; + list-style: none; + padding: 0; + margin: 0; +} +article .breadcrumb ul li{ + display: inline-block; + padding:0; + margin:0; +} +article .breadcrumb ul li:before{ + content: '>'; +} +article .breadcrumb ul li:first-child:before{ + content: ''; + padding:0; +} +article .breadcrumb button{ + display: block; + margin: auto; + border-radius: 3px; + padding: 5px; +} +/************************ +* FOOTER * +************************/ + +footer{ + font-size: 0.7em; + padding: 5px 30px; + box-sizing: border-box; +} +footer a{ + text-decoration: none; +} +footer p{ + line-height: 1.5em; +} + +/************************ +* CONTENT ELEMENTS * +************************/ + +pre,code{ + white-space: pre; +} +code{ + display: inline-block; + padding: 0 0.5em; + font-size: 0.8em; + line-height: 1.4em; + border-radius: 3px; +} +pre{ + padding: 10px; + display: block; + max-width: 100%; + overflow-x: auto; +} + +table{ + width: 100%; + border-collapse: collapse; +} +thead{ + border-bottom: 1px solid #e0474c; + border-top: 1px solid #e0474c; + background: #f9f8f6; + font-weight: 700; +} +tbody{} +tr{} +tr:nth-child(odd){ } +tr:nth-child(even){ background-color:#f9f8f6; } +td{ padding: 5px;} +th{ padding: 10px 0;} + + +dl{ + border-top: 1px solid #e0474c; + border-bottom: 1px solid #e0474c; + padding: 0.5em 0; + box-sizing: border-box; +} +dt,dd{ + width: 100%; + margin: 0; + padding: 3px 5px; + box-sizing: border-box; + display: inline-block; + vertical-align: top; +} +dt{ + font-weight: 700; +} +dt::after{ + content: ":"; +} +dd{ + width: 80% +} +ul,ol{ + padding-left: 0px; + margin-left: 18px; +} +blockquote{ + position: relative; + font-style: italic; + font-family: serif; + border-left: 4px solid #e0474c; + background: #f9f8f6; + margin: 0; + padding: 5px; +} +blockquote:before { + position: absolute; + left: 0px; + top: 20px; + color: #ccc; + content: open-quote; + font-size: 4em; +} +blockquote p{ + margin-left: 50px; +} +img{} +sup{} +cite{} +abbr{} +hr{} + +/************************ +* GitHub Ribbon * +************************/ + +.github a{ + color:#e0474c; + background:#f9f8f6; + text-decoration:none; + font-family: calibri,"Helvetica Neue",arial,sans-serif; + text-align:center; + font-weight:300; + padding:5px 30px; + font-size:1rem; + line-height:1.5rem; + position:relative; +} +.github a:hover{ + text-decoration: underline; +} + +/************************ +* RESPONSIVE * +************************/ +@media only screen and (min-width: 360px) { + .cover h1{ + font-size: 4em; + } + h1{ + margin: 1.6em 0 0.6em; + } + h2{ + margin: 1.4em 0 0.6em; + } +} +@media only screen and (min-width: 600px) { + .github{ + position:absolute; + display:block; + top:0; + right:0; + width:150px; + overflow:hidden; + height:150px; + z-index:9999; + } + .github a{ + background:#444; + color:#f9f8f6; + font-weight: 700; + width:150px; + position:absolute; + top:45px; + right:-45px; + transform:rotate(45deg); + -webkit-transform:rotate(45deg); + -ms-transform:rotate(45deg); + -moz-transform:rotate(45deg); + -o-transform:rotate(45deg); + box-shadow:1px 1px 2px rgba(0,0,0,0.8); + } + .github a:hover{ + text-decoration: none; + background:#e0474c; + color:#f9f8f6; + } + .github a::before,.github a::after{ + content:""; + width:100%; + display:block; + position:absolute; + top:1px; + left:0; + height:1px; + background:#f9f8f6; + } + .github a::after{ + bottom:1px; + top:auto; + } + .cover .lead a, a.readMore{ + min-width: 150px; + } + article .paging a{ + width: auto; + } + article .paging .next{ + float: right; + } + ul,ol{ + list-style-position: outside; + padding-left: 40px; + } + dd{ + width: 80%; + } + dt{ + width: 19%; + text-align: right; + } +} +@media only screen and (min-width: 980px) { + header p{ + margin: 20px 0; + } + .chapterNumber{ + margin: 40px 0px 0px; + } + .close{ + display: block; + max-height: none; + overflow: visible; + } + body{ + font-size: 20px; + } + header, aside{ + width: 20%; + margin-right: 5%; + float:left; + } + header{ + text-align: left; + } + aside{ + position: relative; + top: 0; + left: 0; + right: 0; + border-left: 0; + border-right: 0; + border-bottom: 0; + } + article,footer{ + width: 75%; + float: right; + } + footer{ + padding: 5px 90px; + } + article{ + padding: 30px 90px; + } + article .breadcrumb ul{ + display: inline-block; + } + article .breadcrumb span.prev{ + left: -40px; + } + article .breadcrumb span.next{ + right: -40px; + } + article .breadcrumb button{ + display: none; + } + .cover.startpage .breadcrumb{ + display:none; + } +} \ No newline at end of file diff --git a/themes/typemill/img/apple-touch-icon-144x144.png b/themes/typemill/img/apple-touch-icon-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..cb836ce1eae883a7f7ba761ed3ee28ab396a59e6 GIT binary patch literal 10865 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 Ze~e?!hxZXt-{9MX literal 0 HcmV?d00001 diff --git a/themes/typemill/img/mstile-144x144.png b/themes/typemill/img/mstile-144x144.png new file mode 100644 index 0000000000000000000000000000000000000000..cb836ce1eae883a7f7ba761ed3ee28ab396a59e6 GIT binary patch literal 10865 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 + {% if item.prevItem %} + + {% endif %} + + + {% if item.nextItem %} + + {% endif %} + + {% endif %} + + {% if(item.elementType == 'folder') %} + +
    + +
    Chapter {{ item.chapter }}
    + + {% if content is empty %} + +

    {{ item.name }}

    + + {% endif %} + + {{ content }} + + Start Reading +
    + + {% elseif item.elementType == 'file' %} + + {% if content is empty %} + +

    {{ item.name }}

    + + {% endif %} + + {{ content }} + + {% if item.prevItem or item.nextItem %} + +
    + {% if item.prevItem %} + {{ item.prevItem.name }} + {% endif %} + {% if item.nextItem %} + {{ item.nextItem.name }} + {% endif %} +
    + + {% endif %} + {% else %} + +
    + + + +

    {{ settings.title }}

    + +
    + {{ content }} + Start +
    + +
    + + {% endif %} + +{% endblock %} \ No newline at end of file diff --git a/themes/typemill/js/highlight/CHANGES.md b/themes/typemill/js/highlight/CHANGES.md new file mode 100644 index 0000000..0439d8a --- /dev/null +++ b/themes/typemill/js/highlight/CHANGES.md @@ -0,0 +1,1588 @@ +## Version 9.10.0 + +Apologies for missing the previous release cycle. Some thing just can't be +automated… Anyway, we're back! + +New languages: + +- *Hy* by [Sergey Sobko][] +- *Leaf* by [Hale Chan][] +- *N1QL* by [Andres Täht][] and [Rene Saarsoo][] + +Improvements: + +- *Rust* got updated with new keywords by [Kasper Andersen][] and then + significantly modernized even more by [Eduard-Mihai Burtescu][] (yes, @eddyb, + Rust core team member!) +- *Python* updated with f-literals by [Philipp A][]. +- *YAML* updated with unquoted strings support. +- *Gauss* updated with new keywords by [Matt Evans][]. +- *Lua* updated with new keywords by [Joe Blow][]. +- *Kotlin* updated with new keywords by [Philipp Hauer][]. +- *TypeScript* got highlighting of function params and updated keywords by + [Ike Ku][]. +- *Scheme* now correctly handles \`-quoted lists thanks to [Guannan Wei]. +- [Sam Wu][] fixed handling of `<<` in *C++* defines. + +[Philipp A]: https://github.com/flying-sheep +[Philipp Hauer]: https://github.com/phauer +[Sergey Sobko]: https://github.com/profitware +[Hale Chan]: https://github.com/halechan +[Matt Evans]: https://github.com/matthewevans +[Joe Blow]: https://github.com/mossarelli +[Kasper Andersen]: https://github.com/kasma1990 +[Eduard-Mihai Burtescu]: https://github.com/eddyb +[Andres Täht]: https://github.com/andrestaht +[Rene Saarsoo]: https://github.com/nene +[Philipp Hauer]: https://github.com/phauer +[Ike Ku]: https://github.com/dempfi +[Guannan Wei]: https://github.com/Kraks +[Sam Wu]: https://github.com/samsam2310 + + +## Version 9.9.0 + +New languages + +- *LLVM* by [Michael Rodler][] + +Improvements: + +- *TypeScript* updated with annotations and param lists inside constructors, by + [Raphael Parree][]. +- *CoffeeScript* updated with new keywords and fixed to recognize JavaScript + in \`\`\`, thanks to thanks to [Geoffrey Booth][]. +- Compiler directives in *Delphi* are now correctly highlighted as "meta". + +[Raphael Parree]: https://github.com/rparree +[Michael Rodler]: https://github.com/f0rki +[Geoffrey Booth]: https://github.com/GeoffreyBooth + + +## Version 9.8.0 "New York" + +This version is the second one that deserved a name. Because I'm in New York, +and the release isn't missing the deadline only because it's still Tuesday on +West Coast. + +New languages: + +- *Clean* by [Camil Staps][] +- *Flix* by [Magnus Madsen][] + +Improvements: + +- [Kenton Hamaluik][] did a comprehensive update for *Haxe*. +- New commands for *PowerShell* from [Nicolas Le Gall][]. +- [Jan T. Sott][] updated *NSIS*. +- *Java* and *Swift* support unicode characters in identifiers thanks to + [Alexander Lichter][]. + +[Camil Staps]: https://github.com/camilstaps +[Magnus Madsen]: https://github.com/magnus-madsen +[Kenton Hamaluik]: https://github.com/FuzzyWuzzie +[Nicolas Le Gall]: https://github.com/darkitty +[Jan T. Sott]: https://github.com/idleberg +[Alexander Lichter]: https://github.com/manniL + + +## Version 9.7.0 + +A comprehensive bugfix release. This is one of the best things about +highlight.js: even boring things keep getting better (even if slow). + +- VHDL updated with PSL keywords and uses more consistent styling. +- Nested C-style comments no longer break highlighting in many languages. +- JavaScript updated with `=>` functions, highlighted object attributes and + parsing within template string substitution blocks (`${...}`). +- Fixed another corner case with self-closing `` in JSX. +- Added `HEALTHCHECK` directive in Docker. +- Delphi updated with new Free Pascal keywords. +- Fixed digit separator parsing in C++. +- C# updated with new keywords and fixed to allow multiple identifiers within + generics `<...>`. +- Fixed another slow regex in Less. + + +## Version 9.6.0 + +New languages: + +- *ABNF* and *EBNF* by [Alex McKibben][] +- *Awk* by [Matthew Daly][] +- *SubUnit* by [Sergey Bronnikov][] + +New styles: + +- *Atom One* in both Dark and Light variants by [Daniel Gamage][] + +Plus, a few smaller updates for *Lasso*, *Elixir*, *C++* and *SQL*. + +[Alex McKibben]: https://github.com/mckibbenta +[Daniel Gamage]: https://github.com/danielgamage +[Matthew Daly]: https://github.com/matthewbdaly +[Sergey Bronnikov]: https://github.com/ligurio + + +## Version 9.5.0 + +New languages: + +- *Excel* by [Victor Zhou][] +- *Linden Scripting Language* by [Builder's Brewery][] +- *TAP* (Test Anything Protocol) by [Sergey Bronnikov][] +- *Pony* by [Joe Eli McIlvain][] +- *Coq* by [Stephan Boyer][] +- *dsconfig* and *LDIF* by [Jacob Childress][] + +New styles: + +- *Ocean Dark* by [Gavin Siu][] + +Notable changes: + +- [Minh Nguyá»…n][] added more built-ins to Objective C. +- [Jeremy Hull][] fixed corner cases in C++ preprocessor directives and Diff + comments. +- [Victor Zhou][] added support for digit separators in C++ numbers. + +[Gavin Siu]: https://github.com/gavsiu +[Builder's Brewery]: https://github.com/buildersbrewery +[Victor Zhou]: https://github.com/OiCMudkips +[Sergey Bronnikov]: https://github.com/ligurio +[Joe Eli McIlvain]: https://github.com/jemc +[Stephan Boyer]: https://github.com/boyers +[Jacob Childress]: https://github.com/braveulysses +[Minh Nguyá»…n]: https://github.com/1ec5 +[Jeremy Hull]: https://github.com/sourrust + + +## Version 9.4.0 + +New languages: + +- *PureBASIC* by [Tristano Ajmone][] +- *BNF* by [Oleg Efimov][] +- *Ada* by [Lars Schulna][] + +New styles: + +- *PureBASIC* by [Tristano Ajmone][] + +Improvements to existing languages and styles: + +- We now highlight function declarations in Go. +- [Taisuke Fujimoto][] contributed very convoluted rules for raw and + interpolated strings in C#. +- [Boone Severson][] updated Verilog to comply with IEEE 1800-2012 + SystemVerilog. +- [Victor Zhou][] improved rules for comments and strings in PowerShell files. +- [Janis Voigtländer][] updated the definition of Elm to version 0.17 of the + languages. Elm is now featured on the front page of . +- Special variable `$this` is highlighted as a keyword in PHP. +- `usize` and `isize` are now highlighted in Rust. +- Fixed labels and directives in x86 assembler. + +[Tristano Ajmone]: https://github.com/tajmone +[Taisuke Fujimoto]: https://github.com/temp-impl +[Oleg Efimov]: https://github.com/Sannis +[Boone Severson]: https://github.com/BooneJS +[Victor Zhou]: https://github.com/OiCMudkips +[Lars Schulna]: https://github.com/captain-hanuta +[Janis Voigtländer]: https://github.com/jvoigtlaender + + +## Version 9.3.0 + +New languages: + +- *Tagger Script* by [Philipp Wolfer][] +- *MoonScript* by [Billy Quith][] + +New styles: + +- *xt256* by [Herbert Shin][] + +Improvements to existing languages and styles: + +- More robust handling of unquoted HTML tag attributes +- Relevance tuning for QML which was unnecessary eager at seizing other + languages' code +- Improve GAMS language parsing +- Fixed a bunch of bugs around selectors in Less +- Kotlin's got a new definition for annotations, updated keywords and other + minor improvements +- Added `move` to Rust keywords +- Markdown now recognizes \`\`\`-fenced code blocks +- Improved detection of function declarations in C++ and C# + +[Philipp Wolfer]: https://github.com/phw +[Billy Quith]: https://github.com/billyquith +[Herbert Shin]: https://github.com/initbar + + +## Version 9.2.0 + +New languages: + +- *QML* by [John Foster][] +- *HTMLBars* by [Michael Johnston][] +- *CSP* by [Taras][] +- *Maxima* by [Robert Dodier][] + +New styles: + +- *Gruvbox* by [Qeole][] +- *Dracula* by [Denis Ciccale][] + +Improvements to existing languages and styles: + +- We now correctly handle JSX with arbitrary node tree depth. +- Argument list for `(lambda)` in Scheme is no longer highlighted as a function + call. +- Stylus syntax doesn't break on valid CSS. +- More correct handling of comments and strings and other improvements for + VimScript. +- More subtle work on the default style. +- We now use anonymous modules for AMD. +- `macro_rules!` is now recognized as a built-in in Rust. + +[John Foster]: https://github.com/jf990 +[Qeole]: https://github.com/Qeole +[Denis Ciccale]: https://github.com/dciccale +[Michael Johnston]: https://github.com/lastobelus +[Taras]: https://github.com/oxdef +[Robert Dodier]: https://github.com/robert-dodier + + +## Version 9.1.0 + +New languages: + +- *Stan* by [Brendan Rocks][] +- *BASIC* by [Raphaël Assénat][] +- *GAUSS* by [Matt Evans][] +- *DTS* by [Martin Braun][] +- *Arduino* by [Stefania Mellai][] + +New Styles: + +- *Arduino Light* by [Stefania Mellai][] + +Improvements to existing languages and styles: + +- Handle return type annotations in Python +- Allow shebang headers in Javascript +- Support strings in Rust meta +- Recognize `struct` as a class-level definition in Rust +- Recognize b-prefixed chars and strings in Rust +- Better numbers handling in Verilog + +[Brendan Rocks]: http://brendanrocks.com +[Raphaël Assénat]: https://github.com/raphnet +[Matt Evans]: https://github.com/matthewevans +[Martin Braun]: https://github.com/mbr0wn +[Stefania Mellai]: https://github.com/smellai + + +## Version 9.0.0 + +The new major version brings a reworked styling system. Highlight.js now defines +a limited set of highlightable classes giving a consistent result across all the +styles and languages. You can read a more detailed explanation and background in +the [tracking issue][#348] that started this long process back in May. + +This change is backwards incompatible for those who uses highlight.js with a +custom stylesheet. The [new style guide][sg] explains how to write styles +in this new world. + +Bundled themes have also suffered a significant amount of improvements and may +look different in places, but all the things now consistent and make more sense. +Among others, the Default style has got a refresh and will probably be tweaked +some more in next releases. Please do give your feedback in our +[issue tracker][issues]. + +New languages in this release: + +- *Caché Object Script* by [Nikita Savchenko][] +- *YAML* by [Stefan Wienert][] +- *MIPS Assembler* by [Nebuleon Fumika][] +- *HSP* by [prince][] + +Improvements to existing languages and styles: + +- ECMAScript 6 modules import now do not require closing semicolon. +- ECMAScript 6 classes constructors now highlighted. +- Template string support for Typescript, as for ECMAScript 6. +- Scala case classes params highlight fixed. +- Built-in names introduced in Julia v0.4 added by [Kenta Sato][]. +- Refreshed Default style. + +Other notable changes: + +- [Web workers support][webworkers] added bu [Jan Kühle][]. +- We now have tests for compressed browser builds as well. +- The building tool chain has been switched to node.js 4.x. and is now + shamelessly uses ES6 features all over the place, courtesy of [Jeremy Hull][]. +- License added to non-compressed browser build. + +[Jan Kühle]: https://github.com/frigus02 +[Stefan Wienert]: https://github.com/zealot128 +[Kenta Sato]: https://github.com/bicycle1885 +[Nikita Savchenko]: https://github.com/ZitRos +[webworkers]: https://github.com/isagalaev/highlight.js#web-workers +[Jeremy Hull]: https://github.com/sourrust +[#348]: https://github.com/isagalaev/highlight.js/issues/348 +[sg]: http://highlightjs.readthedocs.org/en/latest/style-guide.html +[issues]: https://github.com/isagalaev/highlight.js/issues +[Nebuleon Fumika]: https://github.com/Nebuleon +[prince]: https://github.com/prince-0203 + + +## Version 8.9.1 + +Some last-minute changes reverted due to strange bug with minified browser build: + +- Scala case classes params highlight fixed +- ECMAScript 6 modules import now do not require closing semicolon +- ECMAScript 6 classes constructors now highlighted +- Template string support for Typescript, as for ECMAScript 6 +- License added to not minified browser build + + +## Version 8.9.0 + +New languages: + +- *crmsh* by [Kristoffer Gronlund][] +- *SQF* by [Soren Enevoldsen][] + +[Kristoffer Gronlund]: https://github.com/krig +[Soren Enevoldsen]: https://github.com/senevoldsen90 + +Notable fixes and improvements to existing languages: + +- Added `abstract` and `namespace` keywords to TypeScript by [Daniel Rosenwasser][] +- Added `label` support to Dockerfile by [Ladislav Prskavec][] +- Crystal highlighting improved by [Tsuyusato Kitsune][] +- Missing Swift keywords added by [Nate Cook][] +- Improve detection of C block comments +- ~~Scala case classes params highlight fixed~~ +- ~~ECMAScript 6 modules import now do not require closing semicolon~~ +- ~~ECMAScript 6 classes constructors now highlighted~~ +- ~~Template string support for Typescript, as for ECMAScript 6~~ + +Other notable changes: + +- ~~License added to not minified browser build~~ + +[Kristoffer Gronlund]: https://github.com/krig +[Søren Enevoldsen]: https://github.com/senevoldsen90 +[Daniel Rosenwasser]: https://github.com/DanielRosenwasser +[Ladislav Prskavec]: https://github.com/abtris +[Tsuyusato Kitsune]: https://github.com/MakeNowJust +[Nate Cook]: https://github.com/natecook1000 + + +## Version 8.8.0 + +New languages: + +- *Golo* by [Philippe Charrière][] +- *GAMS* by [Stefan Bechert][] +- *IRPF90* by [Anthony Scemama][] +- *Access logs* by [Oleg Efimov][] +- *Crystal* by [Tsuyusato Kitsune][] + +Notable fixes and improvements to existing languages: + +- JavaScript highlighting no longer fails with ES6 default parameters +- Added keywords `async` and `await` to Python +- PHP heredoc support improved +- Allow preprocessor directives within C++ functions + +Other notable changes: + +- Change versions to X.Y.Z SemVer-compatible format +- Added ability to build all targets at once + +[Philippe Charrière]: https://github.com/k33g +[Stefan Bechert]: https://github.com/b-pos465 +[Anthony Scemama]: https://github.com/scemama +[Oleg Efimov]: https://github.com/Sannis +[Tsuyusato Kitsune]: https://github.com/MakeNowJust + + +## Version 8.7 + +New languages: + +- *Zephir* by [Oleg Efimov][] +- *Elm* by [Janis Voigtländer][] +- *XQuery* by [Dirk Kirsten][] +- *Mojolicious* by [Dotan Dimet][] +- *AutoIt* by Manh Tuan from [J2TeaM][] +- *Toml* (ini extension) by [Guillaume Gomez][] + +New styles: + +- *Hopscotch* by [Jan T. Sott][] +- *Grayscale* by [MY Sun][] + +Notable fixes and improvements to existing languages: + +- Fix encoding of images when copied over in certain builds +- Fix incorrect highlighting of the word "bug" in comments +- Treat decorators different from matrix multiplication in Python +- Fix traits inheritance highlighting in Rust +- Fix incorrect document +- Oracle keywords added to SQL language definition by [Vadimtro][] +- Postgres keywords added to SQL language definition by [Benjamin Auder][] +- Fix registers in x86asm being highlighted as a hex number +- Fix highlighting for numbers with a leading decimal point +- Correctly highlight numbers and strings inside of C/C++ macros +- C/C++ functions now support pointer, reference, and move returns + +[Oleg Efimov]: https://github.com/Sannis +[Guillaume Gomez]: https://github.com/GuillaumeGomez +[Janis Voigtländer]: https://github.com/jvoigtlaender +[Jan T. Sott]: https://github.com/idleberg +[Dirk Kirsten]: https://github.com/dirkk +[MY Sun]: https://github.com/simonmysun +[Vadimtro]: https://github.com/Vadimtro +[Benjamin Auder]: https://github.com/ghost +[Dotan Dimet]: https://github.com/dotandimet +[J2TeaM]: https://github.com/J2TeaM + + +## Version 8.6 + +New languages: + +- *C/AL* by [Kenneth Fuglsang][] +- *DNS zone file* by [Tim Schumacher][] +- *Ceylon* by [Lucas Werkmeister][] +- *OpenSCAD* by [Dan Panzarella][] +- *Inform7* by [Bruno Dias][] +- *armasm* by [Dan Panzarella][] +- *TP* by [Jay Strybis][] + +New styles: + +- *Atelier Cave*, *Atelier Estuary*, + *Atelier Plateau* and *Atelier Savanna* by [Bram de Haan][] +- *Github Gist* by [Louis Barranqueiro][] + +Notable fixes and improvements to existing languages: + +- Multi-line raw strings from C++11 are now supported +- Fix class names with dashes in HAML +- The `async` keyword from ES6/7 is now supported +- TypeScript functions handle type and parameter complexity better +- We unified phpdoc/javadoc/yardoc etc modes across all languages +- CSS .class selectors relevance was dropped to prevent wrong language detection +- Images is now included to CDN build +- Release process is now automated + +[Bram de Haan]: https://github.com/atelierbram +[Kenneth Fuglsang]: https://github.com/kfuglsang +[Louis Barranqueiro]: https://github.com/LouisBarranqueiro +[Tim Schumacher]: https://github.com/enko +[Lucas Werkmeister]: https://github.com/lucaswerkmeister +[Dan Panzarella]: https://github.com/pzl +[Bruno Dias]: https://github.com/sequitur +[Jay Strybis]: https://github.com/unreal + + +## Version 8.5 + +New languages: + +- *pf.conf* by [Peter Piwowarski][] +- *Julia* by [Kenta Sato][] +- *Prolog* by [Raivo Laanemets][] +- *Docker* by [Alexis Hénaut][] +- *Fortran* by [Anthony Scemama][] and [Thomas Applencourt][] +- *Kotlin* by [Sergey Mashkov][] + +New styles: + +- *Agate* by [Taufik Nurrohman][] +- *Darcula* by [JetBrains][] +- *Atelier Sulphurpool* by [Bram de Haan][] +- *Android Studio* by [Pedro Oliveira][] + +Notable fixes and improvements to existing languages: + +- ES6 features in JavaScript are better supported now by [Gu Yiling][]. +- Swift now recognizes body-less method definitions. +- Single expression functions `def foo, do: ... ` now work in Elixir. +- More uniform detection of built-in classes in Objective C. +- Fixes for number literals and processor directives in Rust. +- HTML ` + ``` + +- `tabReplace` and `useBR` that were used in different places are also unified + into the global options object and are to be set using `configure(options)`. + This function is documented in our [API docs][]. Also note that these + parameters are gone from `highlightBlock` and `fixMarkup` which are now also + rely on `configure`. + +- We removed public-facing (though undocumented) object `hljs.LANGUAGES` which + was used to register languages with the library in favor of two new methods: + `registerLanguage` and `getLanguage`. Both are documented in our [API docs][]. + +- Result returned from `highlight` and `highlightAuto` no longer contains two + separate attributes contributing to relevance score, `relevance` and + `keyword_count`. They are now unified in `relevance`. + +Another technically compatible change that nonetheless might need attention: + +- The structure of the NPM package was refactored, so if you had installed it + locally, you'll have to update your paths. The usual `require('highlight.js')` + works as before. This is contributed by [Dmitry Smolin][]. + +New features: + +- Languages now can be recognized by multiple names like "js" for JavaScript or + "html" for, well, HTML (which earlier insisted on calling it "xml"). These + aliases can be specified in the class attribute of the code container in your + HTML as well as in various API calls. For now there are only a few very common + aliases but we'll expand it in the future. All of them are listed in the + [class reference][cr]. + +- Language detection can now be restricted to a subset of languages relevant in + a given context — a web page or even a single highlighting call. This is + especially useful for node.js build that includes all the known languages. + Another example is a StackOverflow-style site where users specify languages + as tags rather than in the markdown-formatted code snippets. This is + documented in the [API reference][] (see methods `highlightAuto` and + `configure`). + +- Language definition syntax streamlined with [variants][] and + [beginKeywords][]. + +New languages and styles: + +- *Oxygene* by [Carlo Kok][] +- *Mathematica* by [Daniel KvasniÄka][] +- *Autohotkey* by [Seongwon Lee][] +- *Atelier* family of styles in 10 variants by [Bram de Haan][] +- *Paraíso* styles by [Jan T. Sott][] + +Miscellaneous improvements: + +- Highlighting `=>` prompts in Clojure. +- [Jeremy Hull][] fixed a lot of styles for consistency. +- Finally, highlighting PHP and HTML [mixed in peculiar ways][php-html]. +- Objective C and C# now properly highlight titles in method definition. +- Big overhaul of relevance counting for a number of languages. Please do report + bugs about mis-detection of non-trivial code snippets! + +[API reference]: http://highlightjs.readthedocs.org/en/latest/api.html + +[cr]: http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html +[api docs]: http://highlightjs.readthedocs.org/en/latest/api.html +[variants]: https://groups.google.com/d/topic/highlightjs/VoGC9-1p5vk/discussion +[beginKeywords]: https://github.com/isagalaev/highlight.js/commit/6c7fdea002eb3949577a85b3f7930137c7c3038d +[php-html]: https://twitter.com/highlightjs/status/408890903017689088 + +[Carlo Kok]: https://github.com/carlokok +[Bram de Haan]: https://github.com/atelierbram +[Daniel KvasniÄka]: https://github.com/dkvasnicka +[Dmitry Smolin]: https://github.com/dimsmol +[Jeremy Hull]: https://github.com/sourrust +[Seongwon Lee]: https://github.com/dlimpid +[Jan T. Sott]: https://github.com/idleberg + + +## Version 7.5 + +A catch-up release dealing with some of the accumulated contributions. This one +is probably will be the last before the 8.0 which will be slightly backwards +incompatible regarding some advanced use-cases. + +One outstanding change in this version is the addition of 6 languages to the +[hosted script][d]: Markdown, ObjectiveC, CoffeeScript, Apache, Nginx and +Makefile. It now weighs about 6K more but we're going to keep it under 30K. + +New languages: + +- OCaml by [Mehdi Dogguy][mehdid] and [Nicolas Braud-Santoni][nbraud] +- [LiveCode Server][lcs] by [Ralf Bitter][revig] +- Scilab by [Sylvestre Ledru][sylvestre] +- basic support for Makefile by [Ivan Sagalaev][isagalaev] + +Improvements: + +- Ruby's got support for characters like `?A`, `?1`, `?\012` etc. and `%r{..}` + regexps. +- Clojure now allows a function call in the beginning of s-expressions + `(($filter "myCount") (arr 1 2 3 4 5))`. +- Haskell's got new keywords and now recognizes more things like pragmas, + preprocessors, modules, containers, FFIs etc. Thanks to [Zena Treep][treep] + for the implementation and to [Jeremy Hull][sourrust] for guiding it. +- Miscellaneous fixes in PHP, Brainfuck, SCSS, Asciidoc, CMake, Python and F#. + +[mehdid]: https://github.com/mehdid +[nbraud]: https://github.com/nbraud +[revig]: https://github.com/revig +[lcs]: http://livecode.com/developers/guides/server/ +[sylvestre]: https://github.com/sylvestre +[isagalaev]: https://github.com/isagalaev +[treep]: https://github.com/treep +[sourrust]: https://github.com/sourrust +[d]: http://highlightjs.org/download/ + + +## New core developers + +The latest long period of almost complete inactivity in the project coincided +with growing interest to it led to a decision that now seems completely obvious: +we need more core developers. + +So without further ado let me welcome to the core team two long-time +contributors: [Jeremy Hull][] and [Oleg +Efimov][]. + +Hope now we'll be able to work through stuff faster! + +P.S. The historical commit is [here][1] for the record. + +[Jeremy Hull]: https://github.com/sourrust +[Oleg Efimov]: https://github.com/sannis +[1]: https://github.com/isagalaev/highlight.js/commit/f3056941bda56d2b72276b97bc0dd5f230f2473f + + +## Version 7.4 + +This long overdue version is a snapshot of the current source tree with all the +changes that happened during the past year. Sorry for taking so long! + +Along with the changes in code highlight.js has finally got its new home at +, moving from its cradle on Software Maniacs which it +outgrew a long time ago. Be sure to report any bugs about the site to +. + +On to what's new… + +New languages: + +- Handlebars templates by [Robin Ward][] +- Oracle Rules Language by [Jason Jacobson][] +- F# by [Joans Follesø][] +- AsciiDoc and Haml by [Dan Allen][] +- Lasso by [Eric Knibbe][] +- SCSS by [Kurt Emch][] +- VB.NET by [Poren Chiang][] +- Mizar by [Kelley van Evert][] + +[Robin Ward]: https://github.com/eviltrout +[Jason Jacobson]: https://github.com/jayce7 +[Joans Follesø]: https://github.com/follesoe +[Dan Allen]: https://github.com/mojavelinux +[Eric Knibbe]: https://github.com/EricFromCanada +[Kurt Emch]: https://github.com/kemch +[Poren Chiang]: https://github.com/rschiang +[Kelley van Evert]: https://github.com/kelleyvanevert + +New style themes: + +- Monokai Sublime by [noformnocontent][] +- Railscasts by [Damien White][] +- Obsidian by [Alexander Marenin][] +- Docco by [Simon Madine][] +- Mono Blue by [Ivan Sagalaev][] (uses a single color hue for everything) +- Foundation by [Dan Allen][] + +[noformnocontent]: http://nn.mit-license.org/ +[Damien White]: https://github.com/visoft +[Alexander Marenin]: https://github.com/ioncreature +[Simon Madine]: https://github.com/thingsinjars +[Ivan Sagalaev]: https://github.com/isagalaev + +Other notable changes: + +- Corrected many corner cases in CSS. +- Dropped Python 2 version of the build tool. +- Implemented building for the AMD format. +- Updated Rust keywords (thanks to [Dmitry Medvinsky][]). +- Literal regexes can now be used in language definitions. +- CoffeeScript highlighting is now significantly more robust and rich due to + input from [Cédric Néhémie][]. + +[Dmitry Medvinsky]: https://github.com/dmedvinsky +[Cédric Néhémie]: https://github.com/abe33 + + +## Version 7.3 + +- Since this version highlight.js no longer works in IE version 8 and older. + It's made it possible to reduce the library size and dramatically improve code + readability and made it easier to maintain. Time to go forward! + +- New languages: AppleScript (by [Nathan Grigg][ng] and [Dr. Drang][dd]) and + Brainfuck (by [Evgeny Stepanischev][bolk]). + +- Improvements to existing languages: + + - interpreter prompt in Python (`>>>` and `...`) + - @-properties and classes in CoffeeScript + - E4X in JavaScript (by [Oleg Efimov][oe]) + - new keywords in Perl (by [Kirk Kimmel][kk]) + - big Ruby syntax update (by [Vasily Polovnyov][vast]) + - small fixes in Bash + +- Also Oleg Efimov did a great job of moving all the docs for language and style + developers and contributors from the old wiki under the source code in the + "docs" directory. Now these docs are nicely presented at + . + +[ng]: https://github.com/nathan11g +[dd]: https://github.com/drdrang +[bolk]: https://github.com/bolknote +[oe]: https://github.com/Sannis +[kk]: https://github.com/kimmel +[vast]: https://github.com/vast + + +## Version 7.2 + +A regular bug-fix release without any significant new features. Enjoy! + + +## Version 7.1 + +A Summer crop: + +- [Marc Fornos][mf] made the definition for Clojure along with the matching + style Rainbow (which, of course, works for other languages too). +- CoffeeScript support continues to improve getting support for regular + expressions. +- Yoshihide Jimbo ported to highlight.js [five Tomorrow styles][tm] from the + [project by Chris Kempson][tm0]. +- Thanks to [Casey Duncun][cd] the library can now be built in the popular + [AMD format][amd]. +- And last but not least, we've got a fair number of correctness and consistency + fixes, including a pretty significant refactoring of Ruby. + +[mf]: https://github.com/mfornos +[tm]: http://jmblog.github.com/color-themes-for-highlightjs/ +[tm0]: https://github.com/ChrisKempson/Tomorrow-Theme +[cd]: https://github.com/caseman +[amd]: http://requirejs.org/docs/whyamd.html + + +## Version 7.0 + +The reason for the new major version update is a global change of keyword syntax +which resulted in the library getting smaller once again. For example, the +hosted build is 2K less than at the previous version while supporting two new +languages. + +Notable changes: + +- The library now works not only in a browser but also with [node.js][]. It is + installable with `npm install highlight.js`. [API][] docs are available on our + wiki. + +- The new unique feature (apparently) among syntax highlighters is highlighting + *HTTP* headers and an arbitrary language in the request body. The most useful + languages here are *XML* and *JSON* both of which highlight.js does support. + Here's [the detailed post][p] about the feature. + +- Two new style themes: a dark "south" *[Pojoaque][]* by Jason Tate and an + emulation of*XCode* IDE by [Angel Olloqui][ao]. + +- Three new languages: *D* by [Aleksandar RužiÄić][ar], *R* by [Joe Cheng][jc] + and *GLSL* by [Sergey Tikhomirov][st]. + +- *Nginx* syntax has become a million times smaller and more universal thanks to + remaking it in a more generic manner that doesn't require listing all the + directives in the known universe. + +- Function titles are now highlighted in *PHP*. + +- *Haskell* and *VHDL* were significantly reworked to be more rich and correct + by their respective maintainers [Jeremy Hull][sr] and [Igor Kalnitsky][ik]. + +And last but not least, many bugs have been fixed around correctness and +language detection. + +Overall highlight.js currently supports 51 languages and 20 style themes. + +[node.js]: http://nodejs.org/ +[api]: http://softwaremaniacs.org/wiki/doku.php/highlight.js:api +[p]: http://softwaremaniacs.org/blog/2012/05/10/http-and-json-in-highlight-js/en/ +[pojoaque]: http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html +[ao]: https://github.com/angelolloqui +[ar]: https://github.com/raleksandar +[jc]: https://github.com/jcheng5 +[st]: https://github.com/tikhomirov +[sr]: https://github.com/sourrust +[ik]: https://github.com/ikalnitsky + + +## Version 6.2 + +A lot of things happened in highlight.js since the last version! We've got nine +new contributors, the discussion group came alive, and the main branch on GitHub +now counts more than 350 followers. Here are most significant results coming +from all this activity: + +- 5 (five!) new languages: Rust, ActionScript, CoffeeScript, MatLab and + experimental support for markdown. Thanks go to [Andrey Vlasovskikh][av], + [Alexander Myadzel][am], [Dmytrii Nagirniak][dn], [Oleg Efimov][oe], [Denis + Bardadym][db] and [John Crepezzi][jc]. + +- 2 new style themes: Monokai by [Luigi Maselli][lm] and stylistic imitation of + another well-known highlighter Google Code Prettify by [Aahan Krish][ak]. + +- A vast number of [correctness fixes and code refactorings][log], mostly made + by [Oleg Efimov][oe] and [Evgeny Stepanischev][es]. + +[av]: https://github.com/vlasovskikh +[am]: https://github.com/myadzel +[dn]: https://github.com/dnagir +[oe]: https://github.com/Sannis +[db]: https://github.com/btd +[jc]: https://github.com/seejohnrun +[lm]: http://grigio.org/ +[ak]: https://github.com/geekpanth3r +[es]: https://github.com/bolknote +[log]: https://github.com/isagalaev/highlight.js/commits/ + + +## Version 6.1 — Solarized + +[Jeremy Hull][jh] has implemented my dream feature — a port of [Solarized][] +style theme famous for being based on the intricate color theory to achieve +correct contrast and color perception. It is now available for highlight.js in +both variants — light and dark. + +This version also adds a new original style Arta. Its author pumbur maintains a +[heavily modified fork of highlight.js][pb] on GitHub. + +[jh]: https://github.com/sourrust +[solarized]: http://ethanschoonover.com/solarized +[pb]: https://github.com/pumbur/highlight.js + + +## Version 6.0 + +New major version of the highlighter has been built on a significantly +refactored syntax. Due to this it's even smaller than the previous one while +supporting more languages! + +New languages are: + +- Haskell by [Jeremy Hull][sourrust] +- Erlang in two varieties — module and REPL — made collectively by [Nikolay + Zakharov][desh], [Dmitry Kovega][arhibot] and [Sergey Ignatov][ignatov] +- Objective C by [Valerii Hiora][vhbit] +- Vala by [Antono Vasiljev][antono] +- Go by [Stephan Kountso][steplg] + +[sourrust]: https://github.com/sourrust +[desh]: http://desh.su/ +[arhibot]: https://github.com/arhibot +[ignatov]: https://github.com/ignatov +[vhbit]: https://github.com/vhbit +[antono]: https://github.com/antono +[steplg]: https://github.com/steplg + +Also this version is marginally faster and fixes a number of small long-standing +bugs. + +Developer overview of the new language syntax is available in a [blog post about +recent beta release][beta]. + +[beta]: http://softwaremaniacs.org/blog/2011/04/25/highlight-js-60-beta/en/ + +P.S. New version is not yet available on a Yandex CDN, so for now you have to +download [your own copy][d]. + +[d]: /soft/highlight/en/download/ + + +## Version 5.14 + +Fixed bugs in HTML/XML detection and relevance introduced in previous +refactoring. + +Also test.html now shows the second best result of language detection by +relevance. + + +## Version 5.13 + +Past weekend began with a couple of simple additions for existing languages but +ended up in a big code refactoring bringing along nice improvements for language +developers. + +### For users + +- Description of C++ has got new keywords from the upcoming [C++ 0x][] standard. +- Description of HTML has got new tags from [HTML 5][]. +- CSS-styles have been unified to use consistent padding and also have lost + pop-outs with names of detected languages. +- [Igor Kalnitsky][ik] has sent two new language descriptions: CMake & VHDL. + +This makes total number of languages supported by highlight.js to reach 35. + +Bug fixes: + +- Custom classes on `
    ` tags are not being overridden anymore
    +- More correct highlighting of code blocks inside non-`
    ` containers:
    +  highlighter now doesn't insist on replacing them with its own container and
    +  just replaces the contents.
    +- Small fixes in browser compatibility and heuristics.
    +
    +[c++ 0x]: http://ru.wikipedia.org/wiki/C%2B%2B0x
    +[html 5]: http://en.wikipedia.org/wiki/HTML5
    +[ik]: http://kalnitsky.org.ua/
    +
    +### For developers
    +
    +The most significant change is the ability to include language submodes right
    +under `contains` instead of defining explicit named submodes in the main array:
    +
    +    contains: [
    +      'string',
    +      'number',
    +      {begin: '\\n', end: hljs.IMMEDIATE_RE}
    +    ]
    +
    +This is useful for auxiliary modes needed only in one place to define parsing.
    +Note that such modes often don't have `className` and hence won't generate a
    +separate `` in the resulting markup. This is similar in effect to
    +`noMarkup: true`. All existing languages have been refactored accordingly.
    +
    +Test file test.html has at last become a real test. Now it not only puts the
    +detected language name under the code snippet but also tests if it matches the
    +expected one. Test summary is displayed right above all language snippets.
    +
    +
    +## CDN
    +
    +Fine people at [Yandex][] agreed to host highlight.js on their big fast servers.
    +[Link up][l]!
    +
    +[yandex]: http://yandex.com/
    +[l]: http://softwaremaniacs.org/soft/highlight/en/download/
    +
    +
    +## Version 5.10 — "Paris".
    +
    +Though I'm on a vacation in Paris, I decided to release a new version with a
    +couple of small fixes:
    +
    +- Tomas Vitvar discovered that TAB replacement doesn't always work when used
    +  with custom markup in code
    +- SQL parsing is even more rigid now and doesn't step over SmallTalk in tests
    +
    +
    +## Version 5.9
    +
    +A long-awaited version is finally released.
    +
    +New languages:
    +
    +- Andrew Fedorov made a definition for Lua
    +- a long-time highlight.js contributor [Peter Leonov][pl] made a definition for
    +  Nginx config
    +- [Vladimir Moskva][vm] made a definition for TeX
    +
    +[pl]: http://kung-fu-tzu.ru/
    +[vm]: http://fulc.ru/
    +
    +Fixes for existing languages:
    +
    +- [Loren Segal][ls] reworked the Ruby definition and added highlighting for
    +  [YARD][] inline documentation
    +- the definition of SQL has become more solid and now it shouldn't be overly
    +  greedy when it comes to language detection
    +
    +[ls]: http://gnuu.org/
    +[yard]: http://yardoc.org/
    +
    +The highlighter has become more usable as a library allowing to do highlighting
    +from initialization code of JS frameworks and in ajax methods (see.
    +readme.eng.txt).
    +
    +Also this version drops support for the [WordPress][wp] plugin. Everyone is
    +welcome to [pick up its maintenance][p] if needed.
    +
    +[wp]: http://wordpress.org/
    +[p]: http://bazaar.launchpad.net/~isagalaev/+junk/highlight/annotate/342/src/wp_highlight.js.php
    +
    +
    +## Version 5.8
    +
    +- Jan Berkel has contributed a definition for Scala. +1 to hotness!
    +- All CSS-styles are rewritten to work only inside `
    ` tags to avoid
    +  conflicts with host site styles.
    +
    +
    +## Version 5.7.
    +
    +Fixed escaping of quotes in VBScript strings.
    +
    +
    +## Version 5.5
    +
    +This version brings a small change: now .ini-files allow digits, underscores and
    +square brackets in key names.
    +
    +
    +## Version 5.4
    +
    +Fixed small but upsetting bug in the packer which caused incorrect highlighting
    +of explicitly specified languages. Thanks to Andrew Fedorov for precise
    +diagnostics!
    +
    +
    +## Version 5.3
    +
    +The version to fulfil old promises.
    +
    +The most significant change is that highlight.js now preserves custom user
    +markup in code along with its own highlighting markup. This means that now it's
    +possible to use, say, links in code. Thanks to [Vladimir Dolzhenko][vd] for the
    +[initial proposal][1] and for making a proof-of-concept patch.
    +
    +Also in this version:
    +
    +- [Vasily Polovnyov][vp] has sent a GitHub-like style and has implemented
    +  support for CSS @-rules and Ruby symbols.
    +- Yura Zaripov has sent two styles: Brown Paper and School Book.
    +- Oleg Volchkov has sent a definition for [Parser 3][p3].
    +
    +[1]: http://softwaremaniacs.org/forum/highlightjs/6612/
    +[p3]: http://www.parser.ru/
    +[vp]: http://vasily.polovnyov.ru/
    +[vd]: http://dolzhenko.blogspot.com/
    +
    +
    +## Version 5.2
    +
    +- at last it's possible to replace indentation TABs with something sensible
    +  (e.g. 2 or 4 spaces)
    +- new keywords and built-ins for 1C by Sergey Baranov
    +- a couple of small fixes to Apache highlighting
    +
    +
    +## Version 5.1
    +
    +This is one of those nice version consisting entirely of new and shiny
    +contributions!
    +
    +- [Vladimir Ermakov][vooon] created highlighting for AVR Assembler
    +- [Ruslan Keba][rukeba] created highlighting for Apache config file. Also his
    +  original visual style for it is now available for all highlight.js languages
    +  under the name "Magula".
    +- [Shuen-Huei Guan][drake] (aka Drake) sent new keywords for RenderMan
    +  languages. Also thanks go to [Konstantin Evdokimenko][ke] for his advice on
    +  the matter.
    +
    +[vooon]: http://vehq.ru/about/
    +[rukeba]: http://rukeba.com/
    +[drake]: http://drakeguan.org/
    +[ke]: http://k-evdokimenko.moikrug.ru/
    +
    +
    +## Version 5.0
    +
    +The main change in the new major version of highlight.js is a mechanism for
    +packing several languages along with the library itself into a single compressed
    +file. Now sites using several languages will load considerably faster because
    +the library won't dynamically include additional files while loading.
    +
    +Also this version fixes a long-standing bug with Javascript highlighting that
    +couldn't distinguish between regular expressions and division operations.
    +
    +And as usually there were a couple of minor correctness fixes.
    +
    +Great thanks to all contributors! Keep using highlight.js.
    +
    +
    +## Version 4.3
    +
    +This version comes with two contributions from [Jason Diamond][jd]:
    +
    +- language definition for C# (yes! it was a long-missed thing!)
    +- Visual Studio-like highlighting style
    +
    +Plus there are a couple of minor bug fixes for parsing HTML and XML attributes.
    +
    +[jd]: http://jason.diamond.name/weblog/
    +
    +
    +## Version 4.2
    +
    +The biggest news is highlighting for Lisp, courtesy of Vasily Polovnyov. It's
    +somewhat experimental meaning that for highlighting "keywords" it doesn't use
    +any pre-defined set of a Lisp dialect. Instead it tries to highlight first word
    +in parentheses wherever it makes sense. I'd like to ask people programming in
    +Lisp to confirm if it's a good idea and send feedback to [the forum][f].
    +
    +Other changes:
    +
    +- Smalltalk was excluded from DEFAULT_LANGUAGES to save traffic
    +- [Vladimir Epifanov][voldmar] has implemented javascript style switcher for
    +  test.html
    +- comments now allowed inside Ruby function definition
    +- [MEL][] language from [Shuen-Huei Guan][drake]
    +- whitespace now allowed between `
    ` and ``
    +- better auto-detection of C++ and PHP
    +- HTML allows embedded VBScript (`<% .. %>`)
    +
    +[f]: http://softwaremaniacs.org/forum/highlightjs/
    +[voldmar]: http://voldmar.ya.ru/
    +[mel]: http://en.wikipedia.org/wiki/Maya_Embedded_Language
    +[drake]: http://drakeguan.org/
    +
    +
    +## Version 4.1
    +
    +Languages:
    +
    +- Bash from Vah
    +- DOS bat-files from Alexander Makarov (Sam)
    +- Diff files from Vasily Polovnyov
    +- Ini files from myself though initial idea was from Sam
    +
    +Styles:
    +
    +- Zenburn from Vladimir Epifanov, this is an imitation of a
    +  [well-known theme for Vim][zenburn].
    +- Ascetic from myself, as a realization of ideals of non-flashy highlighting:
    +  just one color in only three gradations :-)
    +
    +In other news. [One small bug][bug] was fixed, built-in keywords were added for
    +Python and C++ which improved auto-detection for the latter (it was shame that
    +[my wife's blog][alenacpp] had issues with it from time to time). And lastly
    +thanks go to Sam for getting rid of my stylistic comments in code that were
    +getting in the way of [JSMin][].
    +
    +[zenburn]: http://en.wikipedia.org/wiki/Zenburn
    +[alenacpp]: http://alenacpp.blogspot.com/
    +[bug]: http://softwaremaniacs.org/forum/viewtopic.php?id=1823
    +[jsmin]: http://code.google.com/p/jsmin-php/
    +
    +
    +## Version 4.0
    +
    +New major version is a result of vast refactoring and of many contributions.
    +
    +Visible new features:
    +
    +- Highlighting of embedded languages. Currently is implemented highlighting of
    +  Javascript and CSS inside HTML.
    +- Bundled 5 ready-made style themes!
    +
    +Invisible new features:
    +
    +- Highlight.js no longer pollutes global namespace. Only one object and one
    +  function for backward compatibility.
    +- Performance is further increased by about 15%.
    +
    +Changing of a major version number caused by a new format of language definition
    +files. If you use some third-party language files they should be updated.
    +
    +
    +## Version 3.5
    +
    +A very nice version in my opinion fixing a number of small bugs and slightly
    +increased speed in a couple of corner cases. Thanks to everybody who reports
    +bugs in he [forum][f] and by email!
    +
    +There is also a new language — XML. A custom XML formerly was detected as HTML
    +and didn't highlight custom tags. In this version I tried to make custom XML to
    +be detected and highlighted by its own rules. Which by the way include such
    +things as CDATA sections and processing instructions (``).
    +
    +[f]: http://softwaremaniacs.org/forum/viewforum.php?id=6
    +
    +
    +## Version 3.3
    +
    +[Vladimir Gubarkov][xonix] has provided an interesting and useful addition.
    +File export.html contains a little program that shows and allows to copy and
    +paste an HTML code generated by the highlighter for any code snippet. This can
    +be useful in situations when one can't use the script itself on a site.
    +
    +
    +[xonix]: http://xonixx.blogspot.com/
    +
    +
    +## Version 3.2 consists completely of contributions:
    +
    +- Vladimir Gubarkov has described SmallTalk
    +- Yuri Ivanov has described 1C
    +- Peter Leonov has packaged the highlighter as a Firefox extension
    +- Vladimir Ermakov has compiled a mod for phpBB
    +
    +Many thanks to you all!
    +
    +
    +## Version 3.1
    +
    +Three new languages are available: Django templates, SQL and Axapta. The latter
    +two are sent by [Dmitri Roudakov][1]. However I've almost entirely rewrote an
    +SQL definition but I'd never started it be it from the ground up :-)
    +
    +The engine itself has got a long awaited feature of grouping keywords
    +("keyword", "built-in function", "literal"). No more hacks!
    +
    +[1]: http://roudakov.ru/
    +
    +
    +## Version 3.0
    +
    +It is major mainly because now highlight.js has grown large and has become
    +modular. Now when you pass it a list of languages to highlight it will
    +dynamically load into a browser only those languages.
    +
    +Also:
    +
    +- Konstantin Evdokimenko of [RibKit][] project has created a highlighting for
    +  RenderMan Shading Language and RenderMan Interface Bytestream. Yay for more
    +  languages!
    +- Heuristics for C++ and HTML got better.
    +- I've implemented (at last) a correct handling of backslash escapes in C-like
    +  languages.
    +
    +There is also a small backwards incompatible change in the new version. The
    +function initHighlighting that was used to initialize highlighting instead of
    +initHighlightingOnLoad a long time ago no longer works. If you by chance still
    +use it — replace it with the new one.
    +
    +[RibKit]: http://ribkit.sourceforge.net/
    +
    +
    +## Version 2.9
    +
    +Highlight.js is a parser, not just a couple of regular expressions. That said
    +I'm glad to announce that in the new version 2.9 has support for:
    +
    +- in-string substitutions for Ruby -- `#{...}`
    +- strings from from numeric symbol codes (like #XX) for Delphi
    +
    +
    +## Version 2.8
    +
    +A maintenance release with more tuned heuristics. Fully backwards compatible.
    +
    +
    +## Version 2.7
    +
    +- Nikita Ledyaev presents highlighting for VBScript, yay!
    +- A couple of bugs with escaping in strings were fixed thanks to Mickle
    +- Ongoing tuning of heuristics
    +
    +Fixed bugs were rather unpleasant so I encourage everyone to upgrade!
    +
    +
    +## Version 2.4
    +
    +- Peter Leonov provides another improved highlighting for Perl
    +- Javascript gets a new kind of keywords — "literals". These are the words
    +  "true", "false" and "null"
    +
    +Also highlight.js homepage now lists sites that use the library. Feel free to
    +add your site by [dropping me a message][mail] until I find the time to build a
    +submit form.
    +
    +[mail]: mailto:Maniac@SoftwareManiacs.Org
    +
    +
    +## Version 2.3
    +
    +This version fixes IE breakage in previous version. My apologies to all who have
    +already downloaded that one!
    +
    +
    +## Version 2.2
    +
    +- added highlighting for Javascript
    +- at last fixed parsing of Delphi's escaped apostrophes in strings
    +- in Ruby fixed highlighting of keywords 'def' and 'class', same for 'sub' in
    +  Perl
    +
    +
    +## Version 2.0
    +
    +- Ruby support by [Anton Kovalyov][ak]
    +- speed increased by orders of magnitude due to new way of parsing
    +- this same way allows now correct highlighting of keywords in some tricky
    +  places (like keyword "End" at the end of Delphi classes)
    +
    +[ak]: http://anton.kovalyov.net/
    +
    +
    +## Version 1.0
    +
    +Version 1.0 of javascript syntax highlighter is released!
    +
    +It's the first version available with English description. Feel free to post
    +your comments and question to [highlight.js forum][forum]. And don't be afraid
    +if you find there some fancy Cyrillic letters -- it's for Russian users too :-)
    +
    +[forum]: http://softwaremaniacs.org/forum/viewforum.php?id=6
    diff --git a/themes/typemill/js/highlight/LICENSE b/themes/typemill/js/highlight/LICENSE
    new file mode 100644
    index 0000000..422deb7
    --- /dev/null
    +++ b/themes/typemill/js/highlight/LICENSE
    @@ -0,0 +1,24 @@
    +Copyright (c) 2006, Ivan Sagalaev
    +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 highlight.js 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 REGENTS 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 REGENTS AND 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/themes/typemill/js/highlight/README.md b/themes/typemill/js/highlight/README.md
    new file mode 100644
    index 0000000..9f76e6b
    --- /dev/null
    +++ b/themes/typemill/js/highlight/README.md
    @@ -0,0 +1,150 @@
    +# Highlight.js
    +
    +[![Build Status](https://travis-ci.org/isagalaev/highlight.js.svg?branch=master)](https://travis-ci.org/isagalaev/highlight.js)
    +
    +Highlight.js is a syntax highlighter written in JavaScript. It works in
    +the browser as well as on the server. It works with pretty much any
    +markup, doesn’t depend on any framework and has automatic language
    +detection.
    +
    +## Getting Started
    +
    +The bare minimum for using highlight.js on a web page is linking to the
    +library along with one of the styles and calling
    +[`initHighlightingOnLoad`][1]:
    +
    +```html
    +
    +
    +
    +```
    +
    +This will find and highlight code inside of `
    ` tags; it tries
    +to detect the language automatically. If automatic detection doesn’t
    +work for you, you can specify the language in the `class` attribute:
    +
    +```html
    +
    ...
    +``` + +The list of supported language classes is available in the [class +reference][2]. Classes can also be prefixed with either `language-` or +`lang-`. + +To disable highlighting altogether use the `nohighlight` class: + +```html +
    ...
    +``` + +## Custom Initialization + +When you need a bit more control over the initialization of +highlight.js, you can use the [`highlightBlock`][3] and [`configure`][4] +functions. This allows you to control *what* to highlight and *when*. + +Here’s an equivalent way to calling [`initHighlightingOnLoad`][1] using +jQuery: + +```javascript +$(document).ready(function() { + $('pre code').each(function(i, block) { + hljs.highlightBlock(block); + }); +}); +``` + +You can use any tags instead of `
    ` to mark up your code. If
    +you don't use a container that preserve line breaks you will need to
    +configure highlight.js to use the `
    ` tag: + +```javascript +hljs.configure({useBR: true}); + +$('div.code').each(function(i, block) { + hljs.highlightBlock(block); +}); +``` + +For other options refer to the documentation for [`configure`][4]. + + +## Web Workers + +You can run highlighting inside a web worker to avoid freezing the browser +window while dealing with very big chunks of code. + +In your main script: + +```javascript +addEventListener('load', function() { + var code = document.querySelector('#code'); + var worker = new Worker('worker.js'); + worker.onmessage = function(event) { code.innerHTML = event.data; } + worker.postMessage(code.textContent); +}) +``` + +In worker.js: + +```javascript +onmessage = function(event) { + importScripts('/highlight.pack.js'); + var result = self.hljs.highlightAuto(event.data); + postMessage(result.value); +} +``` + + +## Getting the Library + +You can get highlight.js as a hosted, or custom-build, browser script or +as a server module. Right out of the box the browser script supports +both AMD and CommonJS, so if you wish you can use RequireJS or +Browserify without having to build from source. The server module also +works perfectly fine with Browserify, but there is the option to use a +build specific to browsers rather than something meant for a server. +Head over to the [download page][5] for all the options. + +**Don't link to GitHub directly.** The library is not supposed to work straight +from the source, it requires building. If none of the pre-packaged options +work for you refer to the [building documentation][6]. + +**The CDN-hosted package doesn't have all the languages.** Otherwise it'd be +too big. If you don't see the language you need in the ["Common" section][5], +it can be added manually: + +```html + +``` + +**On Almond.** You need to use the optimizer to give the module a name. For +example: + +``` +r.js -o name=hljs paths.hljs=/path/to/highlight out=highlight.js +``` + + +## License + +Highlight.js is released under the BSD License. See [LICENSE][7] file +for details. + +## Links + +The official site for the library is at . + +Further in-depth documentation for the API and other topics is at +. + +Authors and contributors are listed in the [AUTHORS.en.txt][8] file. + +[1]: http://highlightjs.readthedocs.io/en/latest/api.html#inithighlightingonload +[2]: http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html +[3]: http://highlightjs.readthedocs.io/en/latest/api.html#highlightblock-block +[4]: http://highlightjs.readthedocs.io/en/latest/api.html#configure-options +[5]: https://highlightjs.org/download/ +[6]: http://highlightjs.readthedocs.io/en/latest/building-testing.html +[7]: https://github.com/isagalaev/highlight.js/blob/master/LICENSE +[8]: https://github.com/isagalaev/highlight.js/blob/master/AUTHORS.en.txt diff --git a/themes/typemill/js/highlight/README.ru.md b/themes/typemill/js/highlight/README.ru.md new file mode 100644 index 0000000..ac481d0 --- /dev/null +++ b/themes/typemill/js/highlight/README.ru.md @@ -0,0 +1,142 @@ +# Highlight.js + +Highlight.js — Ñто инÑтрумент Ð´Ð»Ñ Ð¿Ð¾Ð´Ñветки ÑинтакÑиÑа, напиÑанный на JavaScript. Он работает +и в браузере, и на Ñервере. Он работает Ñ Ð¿Ñ€Ð°ÐºÑ‚Ð¸Ñ‡ÐµÑки любой HTML разметкой, не +завиÑит от каких-либо фреймворков и умеет автоматичеÑки определÑть Ñзык. + + +## Ðачало работы + +Минимум, что нужно Ñделать Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ highlight.js на веб-Ñтранице — Ñто +подключить библиотеку, CSS-Ñтили и вызывать [`initHighlightingOnLoad`][1]: + +```html + + + +``` + +Библиотека найдёт и раÑкраÑит код внутри тегов `
    `, попытавшиÑÑŒ
    +автоматичеÑки определить Ñзык. Когда автоопределение не Ñрабатывает, можно Ñвно
    +указать Ñзык в атрибуте class:
    +
    +```html
    +
    ...
    +``` + +СпиÑок поддерживаемых клаÑÑов Ñзыков доÑтупен в [Ñправочнике по клаÑÑам][2]. +КлаÑÑ Ñ‚Ð°ÐºÐ¶Ðµ можно предварить префикÑами `language-` или `lang-`. + +Чтобы отключить подÑветку Ð´Ð»Ñ ÐºÐ°ÐºÐ¾Ð³Ð¾-то блока, иÑпользуйте клаÑÑ `nohighlight`: + +```html +
    ...
    +``` + +## Ð˜Ð½Ð¸Ñ†Ð¸Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ + +Чтобы иметь чуть больше ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ñ Ð·Ð° инициализацией подÑветки, вы можете +иÑпользовать функции [`highlightBlock`][3] и [`configure`][4]. Таким образом +можно управлÑть тем, *что* и *когда* подÑвечивать. + +Вот пример инициализации, Ñквивалентной вызову [`initHighlightingOnLoad`][1], но +Ñ Ð¸Ñпользованием jQuery: + +```javascript +$(document).ready(function() { + $('pre code').each(function(i, block) { + hljs.highlightBlock(block); + }); +}); +``` + +Ð’Ñ‹ можете иÑпользовать любые теги разметки вмеÑто `
    `. ЕÑли
    +иÑпользуете контейнер, не ÑохранÑющий переводы Ñтрок, вам нужно Ñказать
    +highlight.js иÑпользовать Ð´Ð»Ñ Ð½Ð¸Ñ… тег `
    `: + +```javascript +hljs.configure({useBR: true}); + +$('div.code').each(function(i, block) { + hljs.highlightBlock(block); +}); +``` + +Другие опции можно найти в документации функции [`configure`][4]. + + +## Web Workers + +ПодÑветку можно запуÑтить внутри web worker'а, чтобы окно +браузера не подтормаживало при работе Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼Ð¸ куÑками кода. + +Ð’ оÑновном Ñкрипте: + +```javascript +addEventListener('load', function() { + var code = document.querySelector('#code'); + var worker = new Worker('worker.js'); + worker.onmessage = function(event) { code.innerHTML = event.data; } + worker.postMessage(code.textContent); +}) +``` + +Ð’ worker.js: + +```javascript +onmessage = function(event) { + importScripts('/highlight.pack.js'); + var result = self.hljs.highlightAuto(event.data); + postMessage(result.value); +} +``` + + +## УÑтановка библиотеки + +Highlight.js можно иÑпользовать в браузере прÑмо Ñ CDN хоÑтинга или Ñкачать +индивидуальную Ñборку, а также уÑтановив модуль на Ñервере. Ðа +[Ñтранице загрузки][5] подробно опиÑаны вÑе варианты. + +**Ðе подключайте GitHub напрÑмую.** Библиотека не предназначена Ð´Ð»Ñ +иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² виде иÑходного кода, а требует отдельной Ñборки. ЕÑли вам не +подходит ни один из готовых вариантов, читайте [документацию по Ñборке][6]. + +**Файл на CDN Ñодержит не вÑе Ñзыки.** Иначе он будет Ñлишком большого размера. +ЕÑли нужного вам Ñзыка нет в [категории "Common"][5], можно дообавить его +вручную: + +```html + +``` + +**Про Almond.** Ðужно задать Ð¸Ð¼Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð² оптимизаторе, например: + +``` +r.js -o name=hljs paths.hljs=/path/to/highlight out=highlight.js +``` + + +## Ð›Ð¸Ñ†ÐµÐ½Ð·Ð¸Ñ + +Highlight.js раÑпроÑтранÑетÑÑ Ð¿Ð¾Ð´ лицензией BSD. Подробнее читайте файл +[LICENSE][7]. + + +## СÑылки + +Официальный Ñайт билиотеки раÑположен по адреÑу . + +Более Ð¿Ð¾Ð´Ñ€Ð¾Ð±Ð½Ð°Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð¿Ð¾ API и другим темам раÑположена на +. + +Ðвторы и контрибьюторы перечиÑлены в файле [AUTHORS.ru.txt][8] file. + +[1]: http://highlightjs.readthedocs.io/en/latest/api.html#inithighlightingonload +[2]: http://highlightjs.readthedocs.io/en/latest/css-classes-reference.html +[3]: http://highlightjs.readthedocs.io/en/latest/api.html#highlightblock-block +[4]: http://highlightjs.readthedocs.io/en/latest/api.html#configure-options +[5]: https://highlightjs.org/download/ +[6]: http://highlightjs.readthedocs.io/en/latest/building-testing.html +[7]: https://github.com/isagalaev/highlight.js/blob/master/LICENSE +[8]: https://github.com/isagalaev/highlight.js/blob/master/AUTHORS.ru.txt diff --git a/themes/typemill/js/highlight/highlight.pack.js b/themes/typemill/js/highlight/highlight.pack.js new file mode 100644 index 0000000..768c7af --- /dev/null +++ b/themes/typemill/js/highlight/highlight.pack.js @@ -0,0 +1,2 @@ +/*! highlight.js v9.10.0 | BSD3 License | git.io/hljslicense */ +!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(e){function n(e){return e.replace(/[&<>]/gm,function(e){return j[e]})}function t(e){return e.nodeName.toLowerCase()}function r(e,n){var t=e&&e.exec(n);return t&&0===t.index}function a(e){return k.test(e)}function i(e){var n,t,r,i,o=e.className+" ";if(o+=e.parentNode?e.parentNode.className:"",t=B.exec(o))return w(t[1])?t[1]:"no-highlight";for(o=o.split(/\s+/),n=0,r=o.length;r>n;n++)if(i=o[n],a(i)||w(i))return i}function o(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function u(e){var n=[];return function r(e,a){for(var i=e.firstChild;i;i=i.nextSibling)3===i.nodeType?a+=i.nodeValue.length:1===i.nodeType&&(n.push({event:"start",offset:a,node:i}),a=r(i,a),t(i).match(/br|hr|img|input/)||n.push({event:"stop",offset:a,node:i}));return a}(e,0),n}function c(e,r,a){function i(){return e.length&&r.length?e[0].offset!==r[0].offset?e[0].offset"}function u(e){l+=""}function c(e){("start"===e.event?o:u)(e.node)}for(var s=0,l="",f=[];e.length||r.length;){var g=i();if(l+=n(a.substring(s,g[0].offset)),s=g[0].offset,g===e){f.reverse().forEach(u);do c(g.splice(0,1)[0]),g=i();while(g===e&&g.length&&g[0].offset===s);f.reverse().forEach(o)}else"start"===g[0].event?f.push(g[0].node):f.pop(),c(g.splice(0,1)[0])}return l+n(a.substr(s))}function s(e){return e.v&&!e.cached_variants&&(e.cached_variants=e.v.map(function(n){return o(e,{v:null},n)})),e.cached_variants||e.eW&&[o(e)]||[e]}function l(e){function n(e){return e&&e.source||e}function t(t,r){return new RegExp(n(t),"m"+(e.cI?"i":"")+(r?"g":""))}function r(a,i){if(!a.compiled){if(a.compiled=!0,a.k=a.k||a.bK,a.k){var o={},u=function(n,t){e.cI&&(t=t.toLowerCase()),t.split(" ").forEach(function(e){var t=e.split("|");o[t[0]]=[n,t[1]?Number(t[1]):1]})};"string"==typeof a.k?u("keyword",a.k):x(a.k).forEach(function(e){u(e,a.k[e])}),a.k=o}a.lR=t(a.l||/\w+/,!0),i&&(a.bK&&(a.b="\\b("+a.bK.split(" ").join("|")+")\\b"),a.b||(a.b=/\B|\b/),a.bR=t(a.b),a.e||a.eW||(a.e=/\B|\b/),a.e&&(a.eR=t(a.e)),a.tE=n(a.e)||"",a.eW&&i.tE&&(a.tE+=(a.e?"|":"")+i.tE)),a.i&&(a.iR=t(a.i)),null==a.r&&(a.r=1),a.c||(a.c=[]),a.c=Array.prototype.concat.apply([],a.c.map(function(e){return s("self"===e?a:e)})),a.c.forEach(function(e){r(e,a)}),a.starts&&r(a.starts,i);var c=a.c.map(function(e){return e.bK?"\\.?("+e.b+")\\.?":e.b}).concat([a.tE,a.i]).map(n).filter(Boolean);a.t=c.length?t(c.join("|"),!0):{exec:function(){return null}}}}r(e)}function f(e,t,a,i){function o(e,n){var t,a;for(t=0,a=n.c.length;a>t;t++)if(r(n.c[t].bR,e))return n.c[t]}function u(e,n){if(r(e.eR,n)){for(;e.endsParent&&e.parent;)e=e.parent;return e}return e.eW?u(e.parent,n):void 0}function c(e,n){return!a&&r(n.iR,e)}function s(e,n){var t=N.cI?n[0].toLowerCase():n[0];return e.k.hasOwnProperty(t)&&e.k[t]}function p(e,n,t,r){var a=r?"":I.classPrefix,i='',i+n+o}function h(){var e,t,r,a;if(!E.k)return n(k);for(a="",t=0,E.lR.lastIndex=0,r=E.lR.exec(k);r;)a+=n(k.substring(t,r.index)),e=s(E,r),e?(B+=e[1],a+=p(e[0],n(r[0]))):a+=n(r[0]),t=E.lR.lastIndex,r=E.lR.exec(k);return a+n(k.substr(t))}function d(){var e="string"==typeof E.sL;if(e&&!L[E.sL])return n(k);var t=e?f(E.sL,k,!0,x[E.sL]):g(k,E.sL.length?E.sL:void 0);return E.r>0&&(B+=t.r),e&&(x[E.sL]=t.top),p(t.language,t.value,!1,!0)}function b(){y+=null!=E.sL?d():h(),k=""}function v(e){y+=e.cN?p(e.cN,"",!0):"",E=Object.create(e,{parent:{value:E}})}function m(e,n){if(k+=e,null==n)return b(),0;var t=o(n,E);if(t)return t.skip?k+=n:(t.eB&&(k+=n),b(),t.rB||t.eB||(k=n)),v(t,n),t.rB?0:n.length;var r=u(E,n);if(r){var a=E;a.skip?k+=n:(a.rE||a.eE||(k+=n),b(),a.eE&&(k=n));do E.cN&&(y+=C),E.skip||(B+=E.r),E=E.parent;while(E!==r.parent);return r.starts&&v(r.starts,""),a.rE?0:n.length}if(c(n,E))throw new Error('Illegal lexeme "'+n+'" for mode "'+(E.cN||"")+'"');return k+=n,n.length||1}var N=w(e);if(!N)throw new Error('Unknown language: "'+e+'"');l(N);var R,E=i||N,x={},y="";for(R=E;R!==N;R=R.parent)R.cN&&(y=p(R.cN,"",!0)+y);var k="",B=0;try{for(var M,j,O=0;;){if(E.t.lastIndex=O,M=E.t.exec(t),!M)break;j=m(t.substring(O,M.index),M[0]),O=M.index+j}for(m(t.substr(O)),R=E;R.parent;R=R.parent)R.cN&&(y+=C);return{r:B,value:y,language:e,top:E}}catch(T){if(T.message&&-1!==T.message.indexOf("Illegal"))return{r:0,value:n(t)};throw T}}function g(e,t){t=t||I.languages||x(L);var r={r:0,value:n(e)},a=r;return t.filter(w).forEach(function(n){var t=f(n,e,!1);t.language=n,t.r>a.r&&(a=t),t.r>r.r&&(a=r,r=t)}),a.language&&(r.second_best=a),r}function p(e){return I.tabReplace||I.useBR?e.replace(M,function(e,n){return I.useBR&&"\n"===e?"
    ":I.tabReplace?n.replace(/\t/g,I.tabReplace):""}):e}function h(e,n,t){var r=n?y[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}function d(e){var n,t,r,o,s,l=i(e);a(l)||(I.useBR?(n=document.createElementNS("http://www.w3.org/1999/xhtml","div"),n.innerHTML=e.innerHTML.replace(/\n/g,"").replace(//g,"\n")):n=e,s=n.textContent,r=l?f(l,s,!0):g(s),t=u(n),t.length&&(o=document.createElementNS("http://www.w3.org/1999/xhtml","div"),o.innerHTML=r.value,r.value=c(t,u(o),s)),r.value=p(r.value),e.innerHTML=r.value,e.className=h(e.className,l,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function b(e){I=o(I,e)}function v(){if(!v.called){v.called=!0;var e=document.querySelectorAll("pre code");E.forEach.call(e,d)}}function m(){addEventListener("DOMContentLoaded",v,!1),addEventListener("load",v,!1)}function N(n,t){var r=L[n]=t(e);r.aliases&&r.aliases.forEach(function(e){y[e]=n})}function R(){return x(L)}function w(e){return e=(e||"").toLowerCase(),L[e]||L[y[e]]}var E=[],x=Object.keys,L={},y={},k=/^(no-?highlight|plain|text)$/i,B=/\blang(?:uage)?-([\w-]+)\b/i,M=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,C="
    ",I={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0},j={"&":"&","<":"<",">":">"};return e.highlight=f,e.highlightAuto=g,e.fixMarkup=p,e.highlightBlock=d,e.configure=b,e.initHighlighting=v,e.initHighlightingOnLoad=m,e.registerLanguage=N,e.listLanguages=R,e.getLanguage=w,e.inherit=o,e.IR="[a-zA-Z]\\w*",e.UIR="[a-zA-Z_]\\w*",e.NR="\\b\\d+(\\.\\d+)?",e.CNR="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",e.BNR="\\b(0b[01]+)",e.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",e.BE={b:"\\\\[\\s\\S]",r:0},e.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[e.BE]},e.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[e.BE]},e.PWM={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|like)\b/},e.C=function(n,t,r){var a=e.inherit({cN:"comment",b:n,e:t,c:[]},r||{});return a.c.push(e.PWM),a.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),a},e.CLCM=e.C("//","$"),e.CBCM=e.C("/\\*","\\*/"),e.HCM=e.C("#","$"),e.NM={cN:"number",b:e.NR,r:0},e.CNM={cN:"number",b:e.CNR,r:0},e.BNM={cN:"number",b:e.BNR,r:0},e.CSSNM={cN:"number",b:e.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},e.RM={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[e.BE,{b:/\[/,e:/\]/,r:0,c:[e.BE]}]},e.TM={cN:"title",b:e.IR,r:0},e.UTM={cN:"title",b:e.UIR,r:0},e.METHOD_GUARD={b:"\\.\\s*"+e.UIR,r:0},e});hljs.registerLanguage("haskell",function(e){var i={v:[e.C("--","$"),e.C("{-","-}",{c:["self"]})]},a={cN:"meta",b:"{-#",e:"#-}"},l={cN:"meta",b:"^#",e:"$"},c={cN:"type",b:"\\b[A-Z][\\w']*",r:0},n={b:"\\(",e:"\\)",i:'"',c:[a,l,{cN:"type",b:"\\b[A-Z][\\w]*(\\((\\.\\.|,|\\w+)\\))?"},e.inherit(e.TM,{b:"[_a-z][\\w']*"}),i]},s={b:"{",e:"}",c:n.c};return{aliases:["hs"],k:"let in if then else case of where do module import hiding qualified type data newtype deriving class instance as default infix infixl infixr foreign export ccall stdcall cplusplus jvm dotnet safe unsafe family forall mdo proc rec",c:[{bK:"module",e:"where",k:"module where",c:[n,i],i:"\\W\\.|;"},{b:"\\bimport\\b",e:"$",k:"import qualified as hiding",c:[n,i],i:"\\W\\.|;"},{cN:"class",b:"^(\\s*)?(class|instance)\\b",e:"where",k:"class family instance where",c:[c,n,i]},{cN:"class",b:"\\b(data|(new)?type)\\b",e:"$",k:"data family type newtype deriving",c:[a,c,n,s,i]},{bK:"default",e:"$",c:[c,n,i]},{bK:"infix infixl infixr",e:"$",c:[e.CNM,i]},{b:"\\bforeign\\b",e:"$",k:"foreign import export ccall stdcall cplusplus jvm dotnet safe unsafe",c:[c,e.QSM,i]},{cN:"meta",b:"#!\\/usr\\/bin\\/env runhaskell",e:"$"},a,l,e.QSM,e.CNM,c,e.inherit(e.TM,{b:"^[_a-z][\\w']*"}),i,{b:"->|<-"}]}});hljs.registerLanguage("xml",function(s){var e="[A-Za-z0-9\\._:-]+",t={eW:!0,i:/`]+/}]}]}]};return{aliases:["html","xhtml","rss","atom","xjb","xsd","xsl","plist"],cI:!0,c:[{cN:"meta",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},s.C("",{r:10}),{b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{b:/<\?(php)?/,e:/\?>/,sL:"php",c:[{b:"/\\*",e:"\\*/",skip:!0}]},{cN:"tag",b:"|$)",e:">",k:{name:"style"},c:[t],starts:{e:"",rE:!0,sL:["css","xml"]}},{cN:"tag",b:"|$)",e:">",k:{name:"script"},c:[t],starts:{e:"",rE:!0,sL:["actionscript","javascript","handlebars","xml"]}},{cN:"meta",v:[{b:/<\?xml/,e:/\?>/,r:10},{b:/<\?\w+/,e:/\?>/}]},{cN:"tag",b:"",c:[{cN:"name",b:/[^\/><\s]+/,r:0},t]}]}});hljs.registerLanguage("css",function(e){var c="[a-zA-Z-][a-zA-Z0-9_-]*",t={b:/[A-Z\_\.\-]+\s*:/,rB:!0,e:";",eW:!0,c:[{cN:"attribute",b:/\S/,e:":",eE:!0,starts:{eW:!0,eE:!0,c:[{b:/[\w-]+\(/,rB:!0,c:[{cN:"built_in",b:/[\w-]+/},{b:/\(/,e:/\)/,c:[e.ASM,e.QSM]}]},e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"number",b:"#[0-9A-Fa-f]+"},{cN:"meta",b:"!important"}]}}]};return{cI:!0,i:/[=\/|'\$]/,c:[e.CBCM,{cN:"selector-id",b:/#[A-Za-z0-9_-]+/},{cN:"selector-class",b:/\.[A-Za-z0-9_-]+/},{cN:"selector-attr",b:/\[/,e:/\]/,i:"$"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{b:"@",e:"[{;]",i:/:/,c:[{cN:"keyword",b:/\w+/},{b:/\s/,eW:!0,eE:!0,r:0,c:[e.ASM,e.QSM,e.CSSNM]}]},{cN:"selector-tag",b:c,r:0},{b:"{",e:"}",i:/\S/,c:[e.CBCM,t]}]}});hljs.registerLanguage("makefile",function(e){var a={cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]};return{aliases:["mk","mak"],c:[e.HCM,{b:/^\w+\s*\W*=/,rB:!0,r:0,starts:{e:/\s*\W*=/,eE:!0,starts:{e:/$/,r:0,c:[a]}}},{cN:"section",b:/^[\w]+:\s*$/},{cN:"meta",b:/^\.PHONY:/,e:/$/,k:{"meta-keyword":".PHONY"},l:/[\.\w]+/},{b:/^\t+/,e:/$/,r:0,c:[e.QSM,a]}]}});hljs.registerLanguage("r",function(e){var r="([a-zA-Z]|\\.[a-zA-Z.])[a-zA-Z0-9._]*";return{c:[e.HCM,{b:r,l:r,k:{keyword:"function if in break next repeat else for return switch while try tryCatch stop warning require library attach detach source setMethod setGeneric setGroupGeneric setClass ...",literal:"NULL NA TRUE FALSE T F Inf NaN NA_integer_|10 NA_real_|10 NA_character_|10 NA_complex_|10"},r:0},{cN:"number",b:"0[xX][0-9a-fA-F]+[Li]?\\b",r:0},{cN:"number",b:"\\d+(?:[eE][+\\-]?\\d*)?L\\b",r:0},{cN:"number",b:"\\d+\\.(?!\\d)(?:i\\b)?",r:0},{cN:"number",b:"\\d+(?:\\.\\d*)?(?:[eE][+\\-]?\\d*)?i?\\b",r:0},{cN:"number",b:"\\.\\d+(?:[eE][+\\-]?\\d*)?i?\\b",r:0},{b:"`",e:"`",r:0},{cN:"string",c:[e.BE],v:[{b:'"',e:'"'},{b:"'",e:"'"}]}]}});hljs.registerLanguage("twig",function(e){var t={cN:"params",b:"\\(",e:"\\)"},a="attribute block constant cycle date dump include max min parent random range source template_from_string",r={bK:a,k:{name:a},r:0,c:[t]},c={b:/\|[A-Za-z_]+:?/,k:"abs batch capitalize convert_encoding date date_modify default escape first format join json_encode keys last length lower merge nl2br number_format raw replace reverse round slice sort split striptags title trim upper url_encode",c:[r]},s="autoescape block do embed extends filter flush for if import include macro sandbox set spaceless use verbatim";return s=s+" "+s.split(" ").map(function(e){return"end"+e}).join(" "),{aliases:["craftcms"],cI:!0,sL:"xml",c:[e.C(/\{#/,/#}/),{cN:"template-tag",b:/\{%/,e:/%}/,c:[{cN:"name",b:/\w+/,k:s,starts:{eW:!0,c:[c,r],r:0}}]},{cN:"template-variable",b:/\{\{/,e:/}}/,c:["self",c,r]}]}});hljs.registerLanguage("nginx",function(e){var r={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+e.UIR}]},b={eW:!0,l:"[a-z/_]+",k:{literal:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[e.HCM,{cN:"string",c:[e.BE,r],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{b:"([a-z]+):/",e:"\\s",eW:!0,eE:!0,c:[r]},{cN:"regexp",c:[e.BE,r],v:[{b:"\\s\\^",e:"\\s|{|;",rE:!0},{b:"~\\*?\\s+",e:"\\s|{|;",rE:!0},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},r]};return{aliases:["nginxconf"],c:[e.HCM,{b:e.UIR+"\\s+{",rB:!0,e:"{",c:[{cN:"section",b:e.UIR}],r:0},{b:e.UIR+"\\s",e:";|{",rB:!0,c:[{cN:"attribute",b:e.UIR,starts:b}],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("scss",function(e){var t="[a-zA-Z-][a-zA-Z0-9_-]*",i={cN:"variable",b:"(\\$"+t+")\\b"},r={cN:"number",b:"#[0-9A-Fa-f]+"};({cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:!0,i:"[^\\s]",starts:{eW:!0,eE:!0,c:[r,e.CSSNM,e.QSM,e.ASM,e.CBCM,{cN:"meta",b:"!important"}]}});return{cI:!0,i:"[=/|']",c:[e.CLCM,e.CBCM,{cN:"selector-id",b:"\\#[A-Za-z0-9_-]+",r:0},{cN:"selector-class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"selector-attr",b:"\\[",e:"\\]",i:"$"},{cN:"selector-tag",b:"\\b(a|abbr|acronym|address|area|article|aside|audio|b|base|big|blockquote|body|br|button|canvas|caption|cite|code|col|colgroup|command|datalist|dd|del|details|dfn|div|dl|dt|em|embed|fieldset|figcaption|figure|footer|form|frame|frameset|(h[1-6])|head|header|hgroup|hr|html|i|iframe|img|input|ins|kbd|keygen|label|legend|li|link|map|mark|meta|meter|nav|noframes|noscript|object|ol|optgroup|option|output|p|param|pre|progress|q|rp|rt|ruby|samp|script|section|select|small|span|strike|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|time|title|tr|tt|ul|var|video)\\b",r:0},{b:":(visited|valid|root|right|required|read-write|read-only|out-range|optional|only-of-type|only-child|nth-of-type|nth-last-of-type|nth-last-child|nth-child|not|link|left|last-of-type|last-child|lang|invalid|indeterminate|in-range|hover|focus|first-of-type|first-line|first-letter|first-child|first|enabled|empty|disabled|default|checked|before|after|active)"},{b:"::(after|before|choices|first-letter|first-line|repeat-index|repeat-item|selection|value)"},i,{cN:"attribute",b:"\\b(z-index|word-wrap|word-spacing|word-break|width|widows|white-space|visibility|vertical-align|unicode-bidi|transition-timing-function|transition-property|transition-duration|transition-delay|transition|transform-style|transform-origin|transform|top|text-underline-position|text-transform|text-shadow|text-rendering|text-overflow|text-indent|text-decoration-style|text-decoration-line|text-decoration-color|text-decoration|text-align-last|text-align|tab-size|table-layout|right|resize|quotes|position|pointer-events|perspective-origin|perspective|page-break-inside|page-break-before|page-break-after|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-y|overflow-x|overflow-wrap|overflow|outline-width|outline-style|outline-offset|outline-color|outline|orphans|order|opacity|object-position|object-fit|normal|none|nav-up|nav-right|nav-left|nav-index|nav-down|min-width|min-height|max-width|max-height|mask|marks|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|letter-spacing|left|justify-content|initial|inherit|ime-mode|image-orientation|image-resolution|image-rendering|icon|hyphens|height|font-weight|font-variant-ligatures|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-language-override|font-kerning|font-feature-settings|font-family|font|float|flex-wrap|flex-shrink|flex-grow|flex-flow|flex-direction|flex-basis|flex|filter|empty-cells|display|direction|cursor|counter-reset|counter-increment|content|column-width|column-span|column-rule-width|column-rule-style|column-rule-color|column-rule|column-gap|column-fill|column-count|columns|color|clip-path|clip|clear|caption-side|break-inside|break-before|break-after|box-sizing|box-shadow|box-decoration-break|bottom|border-width|border-top-width|border-top-style|border-top-right-radius|border-top-left-radius|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-radius|border-left-width|border-left-style|border-left-color|border-left|border-image-width|border-image-source|border-image-slice|border-image-repeat|border-image-outset|border-image|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-right-radius|border-bottom-left-radius|border-bottom-color|border-bottom|border|background-size|background-repeat|background-position|background-origin|background-image|background-color|background-clip|background-attachment|background-blend-mode|background|backface-visibility|auto|animation-timing-function|animation-play-state|animation-name|animation-iteration-count|animation-fill-mode|animation-duration|animation-direction|animation-delay|animation|align-self|align-items|align-content)\\b",i:"[^\\s]"},{b:"\\b(whitespace|wait|w-resize|visible|vertical-text|vertical-ideographic|uppercase|upper-roman|upper-alpha|underline|transparent|top|thin|thick|text|text-top|text-bottom|tb-rl|table-header-group|table-footer-group|sw-resize|super|strict|static|square|solid|small-caps|separate|se-resize|scroll|s-resize|rtl|row-resize|ridge|right|repeat|repeat-y|repeat-x|relative|progress|pointer|overline|outside|outset|oblique|nowrap|not-allowed|normal|none|nw-resize|no-repeat|no-drop|newspaper|ne-resize|n-resize|move|middle|medium|ltr|lr-tb|lowercase|lower-roman|lower-alpha|loose|list-item|line|line-through|line-edge|lighter|left|keep-all|justify|italic|inter-word|inter-ideograph|inside|inset|inline|inline-block|inherit|inactive|ideograph-space|ideograph-parenthesis|ideograph-numeric|ideograph-alpha|horizontal|hidden|help|hand|groove|fixed|ellipsis|e-resize|double|dotted|distribute|distribute-space|distribute-letter|distribute-all-lines|disc|disabled|default|decimal|dashed|crosshair|collapse|col-resize|circle|char|center|capitalize|break-word|break-all|bottom|both|bolder|bold|block|bidi-override|below|baseline|auto|always|all-scroll|absolute|table|table-cell)\\b"},{b:":",e:";",c:[i,r,e.CSSNM,e.QSM,e.ASM,{cN:"meta",b:"!important"}]},{b:"@",e:"[{;]",k:"mixin include extend for if else each while charset import debug media page content font-face namespace warn",c:[i,e.QSM,e.ASM,r,e.CSSNM,{b:"\\s[A-Za-z0-9_.-]+",r:0}]}]}});hljs.registerLanguage("clojure",function(e){var t={"builtin-name":"def defonce cond apply if-not if-let if not not= = < > <= >= == + / * - rem quot neg? pos? delay? symbol? keyword? true? false? integer? empty? coll? list? set? ifn? fn? associative? sequential? sorted? counted? reversible? number? decimal? class? distinct? isa? float? rational? reduced? ratio? odd? even? char? seq? vector? string? map? nil? contains? zero? instance? not-every? not-any? libspec? -> ->> .. . inc compare do dotimes mapcat take remove take-while drop letfn drop-last take-last drop-while while intern condp case reduced cycle split-at split-with repeat replicate iterate range merge zipmap declare line-seq sort comparator sort-by dorun doall nthnext nthrest partition eval doseq await await-for let agent atom send send-off release-pending-sends add-watch mapv filterv remove-watch agent-error restart-agent set-error-handler error-handler set-error-mode! error-mode shutdown-agents quote var fn loop recur throw try monitor-enter monitor-exit defmacro defn defn- macroexpand macroexpand-1 for dosync and or when when-not when-let comp juxt partial sequence memoize constantly complement identity assert peek pop doto proxy defstruct first rest cons defprotocol cast coll deftype defrecord last butlast sigs reify second ffirst fnext nfirst nnext defmulti defmethod meta with-meta ns in-ns create-ns import refer keys select-keys vals key val rseq name namespace promise into transient persistent! conj! assoc! dissoc! pop! disj! use class type num float double short byte boolean bigint biginteger bigdec print-method print-dup throw-if printf format load compile get-in update-in pr pr-on newline flush read slurp read-line subvec with-open memfn time re-find re-groups rand-int rand mod locking assert-valid-fdecl alias resolve ref deref refset swap! reset! set-validator! compare-and-set! alter-meta! reset-meta! commute get-validator alter ref-set ref-history-count ref-min-history ref-max-history ensure sync io! new next conj set! to-array future future-call into-array aset gen-class reduce map filter find empty hash-map hash-set sorted-map sorted-map-by sorted-set sorted-set-by vec vector seq flatten reverse assoc dissoc list disj get union difference intersection extend extend-type extend-protocol int nth delay count concat chunk chunk-buffer chunk-append chunk-first chunk-rest max min dec unchecked-inc-int unchecked-inc unchecked-dec-inc unchecked-dec unchecked-negate unchecked-add-int unchecked-add unchecked-subtract-int unchecked-subtract chunk-next chunk-cons chunked-seq? prn vary-meta lazy-seq spread list* str find-keyword keyword symbol gensym force rationalize"},r="a-zA-Z_\\-!.?+*=<>&#'",n="["+r+"]["+r+"0-9/;:]*",a="[-+]?\\d+(\\.\\d+)?",o={b:n,r:0},s={cN:"number",b:a,r:0},i=e.inherit(e.QSM,{i:null}),c=e.C(";","$",{r:0}),d={cN:"literal",b:/\b(true|false|nil)\b/},l={b:"[\\[\\{]",e:"[\\]\\}]"},m={cN:"comment",b:"\\^"+n},p=e.C("\\^\\{","\\}"),u={cN:"symbol",b:"[:]{1,2}"+n},f={b:"\\(",e:"\\)"},h={eW:!0,r:0},y={k:t,l:n,cN:"name",b:n,starts:h},b=[f,i,m,p,c,u,l,s,d,o];return f.c=[e.C("comment",""),y,h],h.c=b,l.c=b,{aliases:["clj"],i:/\S/,c:[f,i,m,p,c,u,l,s,d]}});hljs.registerLanguage("markdown",function(e){return{aliases:["md","mkdown","mkd"],c:[{cN:"section",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"quote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"^```w*s*$",e:"^```s*$"},{b:"`.+?`"},{b:"^( {4}| )",e:"$",r:0}]},{b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].*?[\\)\\]]",rB:!0,c:[{cN:"string",b:"\\[",e:"\\]",eB:!0,rE:!0,r:0},{cN:"link",b:"\\]\\(",e:"\\)",eB:!0,eE:!0},{cN:"symbol",b:"\\]\\[",e:"\\]",eB:!0,eE:!0}],r:10},{b:/^\[[^\n]+\]:/,rB:!0,c:[{cN:"symbol",b:/\[/,e:/\]/,eB:!0,eE:!0},{cN:"link",b:/:\s*/,e:/$/,eB:!0}]}]}});hljs.registerLanguage("diff",function(e){return{aliases:["patch"],c:[{cN:"meta",r:10,v:[{b:/^@@ +\-\d+,\d+ +\+\d+,\d+ +@@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"comment",v:[{b:/Index: /,e:/$/},{b:/={3,}/,e:/$/},{b:/^\-{3}/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+{3}/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"addition",b:"^\\!",e:"$"}]}});hljs.registerLanguage("php",function(e){var c={b:"\\$+[a-zA-Z_-ÿ][a-zA-Z0-9_-ÿ]*"},i={cN:"meta",b:/<\?(php)?|\?>/},t={cN:"string",c:[e.BE,i],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},e.inherit(e.ASM,{i:null}),e.inherit(e.QSM,{i:null})]},a={v:[e.BNM,e.CNM]};return{aliases:["php3","php4","php5","php6"],cI:!0,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[e.HCM,e.C("//","$",{c:[i]}),e.C("/\\*","\\*/",{c:[{cN:"doctag",b:"@[A-Za-z]+"}]}),e.C("__halt_compiler.+?;",!1,{eW:!0,k:"__halt_compiler",l:e.UIR}),{cN:"string",b:/<<<['"]?\w+['"]?$/,e:/^\w+;?$/,c:[e.BE,{cN:"subst",v:[{b:/\$\w+/},{b:/\{\$/,e:/\}/}]}]},i,{cN:"keyword",b:/\$this\b/},c,{b:/(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/},{cN:"function",bK:"function",e:/[;{]/,eE:!0,i:"\\$|\\[|%",c:[e.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",c,e.CBCM,t,a]}]},{cN:"class",bK:"class interface",e:"{",eE:!0,i:/[:\(\$"]/,c:[{bK:"extends implements"},e.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[e.UTM]},{bK:"use",e:";",c:[e.UTM]},{b:"=>"},t,a]}});hljs.registerLanguage("matlab",function(e){var a=[e.CNM,{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]}],s={r:0,c:[{b:/'['\.]*/}]};return{k:{keyword:"break case catch classdef continue else elseif end enumerated events for function global if methods otherwise parfor persistent properties return spmd switch try while",built_in:"sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal rosser toeplitz vander wilkinson"},i:'(//|"|#|/\\*|\\s+/\\w+)',c:[{cN:"function",bK:"function",e:"$",c:[e.UTM,{cN:"params",v:[{b:"\\(",e:"\\)"},{b:"\\[",e:"\\]"}]}]},{b:/[a-zA-Z_][a-zA-Z_0-9]*'['\.]*/,rB:!0,r:0,c:[{b:/[a-zA-Z_][a-zA-Z_0-9]*/,r:0},s.c[0]]},{b:"\\[",e:"\\]",c:a,r:0,starts:s},{b:"\\{",e:/}/,c:a,r:0,starts:s},{b:/\)/,r:0,starts:s},e.C("^\\s*\\%\\{\\s*$","^\\s*\\%\\}\\s*$"),e.C("\\%","$")].concat(a)}});hljs.registerLanguage("bash",function(e){var t={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)}/}]},s={cN:"string",b:/"/,e:/"/,c:[e.BE,t,{cN:"variable",b:/\$\(/,e:/\)/,c:[e.BE]}]},a={cN:"string",b:/'/,e:/'/};return{aliases:["sh","zsh"],l:/-?[a-z\._]+/,k:{keyword:"if then else elif fi for while in do done case esac function",literal:"true false",built_in:"break cd continue eval exec exit export getopts hash pwd readonly return shift test times trap umask unset alias bind builtin caller command declare echo enable help let local logout mapfile printf read readarray source type typeset ulimit unalias set shopt autoload bg bindkey bye cap chdir clone comparguments compcall compctl compdescribe compfiles compgroups compquote comptags comptry compvalues dirs disable disown echotc echoti emulate fc fg float functions getcap getln history integer jobs kill limit log noglob popd print pushd pushln rehash sched setcap setopt stat suspend ttyctl unfunction unhash unlimit unsetopt vared wait whence where which zcompile zformat zftp zle zmodload zparseopts zprof zpty zregexparse zsocket zstyle ztcp",_:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"meta",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:!0,c:[e.inherit(e.TM,{b:/\w[\w\d_]*/})],r:0},e.HCM,s,a,t]}});hljs.registerLanguage("json",function(e){var i={literal:"true false null"},n=[e.QSM,e.CNM],r={e:",",eW:!0,eE:!0,c:n,k:i},t={b:"{",e:"}",c:[{cN:"attr",b:/"/,e:/"/,c:[e.BE],i:"\\n"},e.inherit(r,{b:/:/})],i:"\\S"},c={b:"\\[",e:"\\]",c:[e.inherit(r)],i:"\\S"};return n.splice(n.length,0,t,c),{c:n,k:i,i:"\\S"}});hljs.registerLanguage("apache",function(e){var r={cN:"number",b:"[\\$%]\\d+"};return{aliases:["apacheconf"],cI:!0,c:[e.HCM,{cN:"section",b:""},{cN:"attribute",b:/\w+/,r:0,k:{nomarkup:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"meta",b:"\\s\\[",e:"\\]$"},{cN:"variable",b:"[\\$%]\\{",e:"\\}",c:["self",r]},r,e.QSM]}}],i:/\S/}});hljs.registerLanguage("ruby",function(e){var b="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?",r={keyword:"and then defined module in return redo if BEGIN retry end for self when next until do begin unless END rescue else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor",literal:"true false nil"},c={cN:"doctag",b:"@[A-Za-z]+"},a={b:"#<",e:">"},s=[e.C("#","$",{c:[c]}),e.C("^\\=begin","^\\=end",{c:[c],r:10}),e.C("^__END__","\\n$")],n={cN:"subst",b:"#\\{",e:"}",k:r},t={cN:"string",c:[e.BE,n],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/`/,e:/`/},{b:"%[qQwWx]?\\(",e:"\\)"},{b:"%[qQwWx]?\\[",e:"\\]"},{b:"%[qQwWx]?{",e:"}"},{b:"%[qQwWx]?<",e:">"},{b:"%[qQwWx]?/",e:"/"},{b:"%[qQwWx]?%",e:"%"},{b:"%[qQwWx]?-",e:"-"},{b:"%[qQwWx]?\\|",e:"\\|"},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/},{b:/<<(-?)\w+$/,e:/^\s*\w+$/}]},i={cN:"params",b:"\\(",e:"\\)",endsParent:!0,k:r},d=[t,a,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{b:"<\\s*",c:[{b:"("+e.IR+"::)?"+e.IR}]}].concat(s)},{cN:"function",bK:"def",e:"$|;",c:[e.inherit(e.TM,{b:b}),i].concat(s)},{b:e.IR+"::"},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"symbol",b:":(?!\\s)",c:[t,{b:b}],r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{cN:"params",b:/\|/,e:/\|/,k:r},{b:"("+e.RSR+"|unless)\\s*",c:[a,{cN:"regexp",c:[e.BE,n],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}].concat(s),r:0}].concat(s);n.c=d,i.c=d;var l="[>?]>",o="[\\w#]+\\(\\w+\\):\\d+:\\d+>",u="(\\w+-)?\\d+\\.\\d+\\.\\d(p\\d+)?[^>]+>",w=[{b:/^\s*=>/,starts:{e:"$",c:d}},{cN:"meta",b:"^("+l+"|"+o+"|"+u+")",starts:{e:"$",c:d}}];return{aliases:["rb","gemspec","podspec","thor","irb"],k:r,i:/\/\*/,c:s.concat(w).concat(d)}});hljs.registerLanguage("javascript",function(e){var r="[A-Za-z$_][0-9A-Za-z$_]*",t={keyword:"in of if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const export super debugger as async await static import from as",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require module console window document Symbol Set Map WeakSet WeakMap Proxy Reflect Promise"},a={cN:"number",v:[{b:"\\b(0[bB][01]+)"},{b:"\\b(0[oO][0-7]+)"},{b:e.CNR}],r:0},n={cN:"subst",b:"\\$\\{",e:"\\}",k:t,c:[]},c={cN:"string",b:"`",e:"`",c:[e.BE,n]};n.c=[e.ASM,e.QSM,c,a,e.RM];var s=n.c.concat([e.CBCM,e.CLCM]);return{aliases:["js","jsx"],k:t,c:[{cN:"meta",r:10,b:/^\s*['"]use (strict|asm)['"]/},{cN:"meta",b:/^#!/,e:/$/},e.ASM,e.QSM,c,e.CLCM,e.CBCM,a,{b:/[{,]\s*/,r:0,c:[{b:r+"\\s*:",rB:!0,r:0,c:[{cN:"attr",b:r,r:0}]}]},{b:"("+e.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[e.CLCM,e.CBCM,e.RM,{cN:"function",b:"(\\(.*?\\)|"+r+")\\s*=>",rB:!0,e:"\\s*=>",c:[{cN:"params",v:[{b:r},{b:/\(\s*\)/},{b:/\(/,e:/\)/,eB:!0,eE:!0,k:t,c:s}]}]},{b://,sL:"xml",c:[{b:/<\w+\s*\/>/,skip:!0},{b:/<\w+/,e:/(\/\w+|\w+\/)>/,skip:!0,c:[{b:/<\w+\s*\/>/,skip:!0},"self"]}]}],r:0},{cN:"function",bK:"function",e:/\{/,eE:!0,c:[e.inherit(e.TM,{b:r}),{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,c:s}],i:/\[|%/},{b:/\$[(.]/},e.METHOD_GUARD,{cN:"class",bK:"class",e:/[{;=]/,eE:!0,i:/[:"\[\]]/,c:[{bK:"extends"},e.UTM]},{bK:"constructor",e:/\{/,eE:!0}],i:/#(?!!)/}});hljs.registerLanguage("cpp",function(t){var e={cN:"keyword",b:"\\b[a-z\\d_]*_t\\b"},r={cN:"string",v:[{b:'(u8?|U)?L?"',e:'"',i:"\\n",c:[t.BE]},{b:'(u8?|U)?R"',e:'"',c:[t.BE]},{b:"'\\\\?.",e:"'",i:"."}]},s={cN:"number",v:[{b:"\\b(0b[01']+)"},{b:"\\b([\\d']+(\\.[\\d']*)?|\\.[\\d']+)(u|U|l|L|ul|UL|f|F|b|B)"},{b:"(-?)(\\b0[xX][a-fA-F0-9']+|(\\b[\\d']+(\\.[\\d']*)?|\\.[\\d']+)([eE][-+]?[\\d']+)?)"}],r:0},i={cN:"meta",b:/#\s*[a-z]+\b/,e:/$/,k:{"meta-keyword":"if else elif endif define undef warning error line pragma ifdef ifndef include"},c:[{b:/\\\n/,r:0},t.inherit(r,{cN:"meta-string"}),{cN:"meta-string",b:/<[^\n>]*>/,e:/$/,i:"\\n"},t.CLCM,t.CBCM]},a=t.IR+"\\s*\\(",c={keyword:"int float while private char catch import module export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long volatile static protected bool template mutable if public friend do goto auto void enum else break extern using class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue inline delete alignof constexpr decltype noexcept static_assert thread_local restrict _Bool complex _Complex _Imaginary atomic_bool atomic_char atomic_schar atomic_uchar atomic_short atomic_ushort atomic_int atomic_uint atomic_long atomic_ulong atomic_llong atomic_ullong new throw return",built_in:"std string cin cout cerr clog stdin stdout stderr stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc realloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf endl initializer_list unique_ptr",literal:"true false nullptr NULL"},n=[e,t.CLCM,t.CBCM,s,r];return{aliases:["c","cc","h","c++","h++","hpp"],k:c,i:"",k:c,c:["self",e]},{b:t.IR+"::",k:c},{v:[{b:/=/,e:/;/},{b:/\(/,e:/\)/},{bK:"new throw return else",e:/;/}],k:c,c:n.concat([{b:/\(/,e:/\)/,k:c,c:n.concat(["self"]),r:0}]),r:0},{cN:"function",b:"("+t.IR+"[\\*&\\s]+)+"+a,rB:!0,e:/[{;=]/,eE:!0,k:c,i:/[^\w\s\*&]/,c:[{b:a,rB:!0,c:[t.TM],r:0},{cN:"params",b:/\(/,e:/\)/,k:c,r:0,c:[t.CLCM,t.CBCM,r,s,e]},t.CLCM,t.CBCM,i]}]),exports:{preprocessor:i,strings:r,k:c}}});hljs.registerLanguage("objectivec",function(e){var t={cN:"built_in",b:"\\b(AV|CA|CF|CG|CI|CL|CM|CN|CT|MK|MP|MTK|MTL|NS|SCN|SK|UI|WK|XC)\\w+"},_={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign readwrite self @synchronized id typeof nonatomic super unichar IBOutlet IBAction strong weak copy in out inout bycopy byref oneway __strong __weak __block __autoreleasing @private @protected @public @try @property @end @throw @catch @finally @autoreleasepool @synthesize @dynamic @selector @optional @required @encode @package @import @defs @compatibility_alias __bridge __bridge_transfer __bridge_retained __bridge_retain __covariant __contravariant __kindof _Nonnull _Nullable _Null_unspecified __FUNCTION__ __PRETTY_FUNCTION__ __attribute__ getter setter retain unsafe_unretained nonnull nullable null_unspecified null_resettable class instancetype NS_DESIGNATED_INITIALIZER NS_UNAVAILABLE NS_REQUIRES_SUPER NS_RETURNS_INNER_POINTER NS_INLINE NS_AVAILABLE NS_DEPRECATED NS_ENUM NS_OPTIONS NS_SWIFT_UNAVAILABLE NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_END NS_REFINED_FOR_SWIFT NS_SWIFT_NAME NS_SWIFT_NOTHROW NS_DURING NS_HANDLER NS_ENDHANDLER NS_VALUERETURN NS_VOIDRETURN",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"BOOL dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"},i=/[a-zA-Z@][a-zA-Z0-9_]*/,n="@interface @class @protocol @implementation";return{aliases:["mm","objc","obj-c"],k:_,l:i,i:""}]}]},{cN:"class",b:"("+n.split(" ").join("|")+")\\b",e:"({|$)",eE:!0,k:n,l:i,c:[e.UTM]},{b:"\\."+e.UIR,r:0}]}});hljs.registerLanguage("go",function(e){var t={keyword:"break default func interface select case map struct chan else goto package switch const fallthrough if range type continue for import return var go defer bool byte complex64 complex128 float32 float64 int8 int16 int32 int64 string uint8 uint16 uint32 uint64 int uint uintptr rune",literal:"true false iota nil",built_in:"append cap close complex copy imag len make new panic print println real recover delete"};return{aliases:["golang"],k:t,i:">>|\.\.\.) /},c={cN:"subst",b:/\{/,e:/\}/,k:r,i:/#/},a={cN:"string",c:[e.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[b],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[b],r:10},{b:/(fr|rf|f)'''/,e:/'''/,c:[b,c]},{b:/(fr|rf|f)"""/,e:/"""/,c:[b,c]},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/},{b:/(b|br)"/,e:/"/},{b:/(fr|rf|f)'/,e:/'/,c:[c]},{b:/(fr|rf|f)"/,e:/"/,c:[c]},e.ASM,e.QSM]},s={cN:"number",r:0,v:[{b:e.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:e.CNR+"[lLjJ]?"}]},i={cN:"params",b:/\(/,e:/\)/,c:["self",b,s,a]};return c.c=[a,s,b],{aliases:["py","gyp"],k:r,i:/(<\/|->|\?)|=>/,c:[b,s,a,e.HCM,{v:[{cN:"function",bK:"def"},{cN:"class",bK:"class"}],e:/:/,i:/[${=;\n,]/,c:[e.UTM,i,{b:/->/,eW:!0,k:"None"}]},{cN:"meta",b:/^[\t ]*@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("ini",function(e){var b={cN:"string",c:[e.BE],v:[{b:"'''",e:"'''",r:10},{b:'"""',e:'"""',r:10},{b:'"',e:'"'},{b:"'",e:"'"}]};return{aliases:["toml"],cI:!0,i:/\S/,c:[e.C(";","$"),e.HCM,{cN:"section",b:/^\s*\[+/,e:/\]+/},{b:/^[a-z0-9\[\]_-]+\s*=\s*/,e:"$",rB:!0,c:[{cN:"attr",b:/[a-z0-9\[\]_-]+/},{b:/=/,eW:!0,r:0,c:[{cN:"literal",b:/\bon|off|true|false|yes|no\b/},{cN:"variable",v:[{b:/\$[\w\d"][\w\d_]*/},{b:/\$\{(.*?)}/}]},b,{cN:"number",b:/([\+\-]+)?[\d]+_[\d_]+/},e.NM]}]}]}});hljs.registerLanguage("java",function(e){var a="[À-ʸa-zA-Z_$][À-ʸa-zA-Z_$0-9]*",t=a+"(<"+a+"(\\s*,\\s*"+a+")*>)?",r="false synchronized int abstract float private char boolean static null if const for true while long strictfp finally protected import native final void enum else break transient catch instanceof byte super volatile case assert short package default double public try this switch continue throws protected public private module requires exports do",s="\\b(0[bB]([01]+[01_]+[01]+|[01]+)|0[xX]([a-fA-F0-9]+[a-fA-F0-9_]+[a-fA-F0-9]+|[a-fA-F0-9]+)|(([\\d]+[\\d_]+[\\d]+|[\\d]+)(\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))?|\\.([\\d]+[\\d_]+[\\d]+|[\\d]+))([eE][-+]?\\d+)?)[lLfF]?",c={cN:"number",b:s,r:0};return{aliases:["jsp"],k:r,i:/<\/|#/,c:[e.C("/\\*\\*","\\*/",{r:0,c:[{b:/\w+@/,r:0},{cN:"doctag",b:"@[A-Za-z]+"}]}),e.CLCM,e.CBCM,e.ASM,e.QSM,{cN:"class",bK:"class interface",e:/[{;=]/,eE:!0,k:"class interface",i:/[:"\[\]]/,c:[{bK:"extends implements"},e.UTM]},{bK:"new throw return else",r:0},{cN:"function",b:"("+t+"\\s+)+"+e.UIR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:r,c:[{b:e.UIR+"\\s*\\(",rB:!0,r:0,c:[e.UTM]},{cN:"params",b:/\(/,e:/\)/,k:r,r:0,c:[e.ASM,e.QSM,e.CNM,e.CBCM]},e.CLCM,e.CBCM]},c,{cN:"meta",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("coffeescript",function(e){var c={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super yield import export from as default await then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",built_in:"npm require console print module global window document"},n="[A-Za-z$_][0-9A-Za-z$_]*",r={cN:"subst",b:/#\{/,e:/}/,k:c},i=[e.BNM,e.inherit(e.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[e.BE]},{b:/'/,e:/'/,c:[e.BE]},{b:/"""/,e:/"""/,c:[e.BE,r]},{b:/"/,e:/"/,c:[e.BE,r]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[r,e.HCM]},{b:"//[gim]*",r:0},{b:/\/(?![ *])(\\\/|.)*?\/[gim]*(?=\W|$)/}]},{b:"@"+n},{sL:"javascript",eB:!0,eE:!0,v:[{b:"```",e:"```"},{b:"`",e:"`"}]}];r.c=i;var s=e.inherit(e.TM,{b:n}),t="(\\(.*\\))?\\s*\\B[-=]>",o={cN:"params",b:"\\([^\\(]",rB:!0,c:[{b:/\(/,e:/\)/,k:c,c:["self"].concat(i)}]};return{aliases:["coffee","cson","iced"],k:c,i:/\/\*/,c:i.concat([e.C("###","###"),e.HCM,{cN:"function",b:"^\\s*"+n+"\\s*=\\s*"+t,e:"[-=]>",rB:!0,c:[s,o]},{b:/[:\(,=]\s*/,r:0,c:[{cN:"function",b:t,e:"[-=]>",rB:!0,c:[o]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:!0,i:/[:="\[\]]/,c:[s]},s]},{b:n+":",e:":",rB:!0,rE:!0,r:0}])}});hljs.registerLanguage("less",function(e){var r="[\\w-]+",t="("+r+"|@{"+r+"})",a=[],c=[],s=function(e){return{cN:"string",b:"~?"+e+".*?"+e}},b=function(e,r,t){return{cN:e,b:r,r:t}},n={b:"\\(",e:"\\)",c:c,r:0};c.push(e.CLCM,e.CBCM,s("'"),s('"'),e.CSSNM,{b:"(url|data-uri)\\(",starts:{cN:"string",e:"[\\)\\n]",eE:!0}},b("number","#[0-9A-Fa-f]+\\b"),n,b("variable","@@?"+r,10),b("variable","@{"+r+"}"),b("built_in","~?`[^`]*?`"),{cN:"attribute",b:r+"\\s*:",e:":",rB:!0,eE:!0},{cN:"meta",b:"!important"});var i=c.concat({b:"{",e:"}",c:a}),o={bK:"when",eW:!0,c:[{bK:"and not"}].concat(c)},u={b:t+"\\s*:",rB:!0,e:"[;}]",r:0,c:[{cN:"attribute",b:t,e:":",eE:!0,starts:{eW:!0,i:"[<=$]",r:0,c:c}}]},l={cN:"keyword",b:"@(import|media|charset|font-face|(-[a-z]+-)?keyframes|supports|document|namespace|page|viewport|host)\\b",starts:{e:"[;{}]",rE:!0,c:c,r:0}},C={cN:"variable",v:[{b:"@"+r+"\\s*:",r:15},{b:"@"+r}],starts:{e:"[;}]",rE:!0,c:i}},p={v:[{b:"[\\.#:&\\[>]",e:"[;{}]"},{b:t,e:"{"}],rB:!0,rE:!0,i:"[<='$\"]",r:0,c:[e.CLCM,e.CBCM,o,b("keyword","all\\b"),b("variable","@{"+r+"}"),b("selector-tag",t+"%?",0),b("selector-id","#"+t),b("selector-class","\\."+t,0),b("selector-tag","&",0),{cN:"selector-attr",b:"\\[",e:"\\]"},{cN:"selector-pseudo",b:/:(:)?[a-zA-Z0-9\_\-\+\(\)"'.]+/},{b:"\\(",e:"\\)",c:i},{b:"!important"}]};return a.push(e.CLCM,e.CBCM,l,C,u,p),{cI:!0,i:"[=>'/<($\"]",c:a}});hljs.registerLanguage("cs",function(e){var i={keyword:"abstract as base bool break byte case catch char checked const continue decimal default delegate do double else enum event explicit extern finally fixed float for foreach goto if implicit in int interface internal is lock long object operator out override params private protected public readonly ref sbyte sealed short sizeof stackalloc static string struct switch this try typeof uint ulong unchecked unsafe ushort using virtual void volatile while nameof add alias ascending async await by descending dynamic equals from get global group into join let on orderby partial remove select set value var where yield",literal:"null false true"},r={cN:"string",b:'@"',e:'"',c:[{b:'""'}]},t=e.inherit(r,{i:/\n/}),a={cN:"subst",b:"{",e:"}",k:i},n=e.inherit(a,{i:/\n/}),c={cN:"string",b:/\$"/,e:'"',i:/\n/,c:[{b:"{{"},{b:"}}"},e.BE,n]},s={cN:"string",b:/\$@"/,e:'"',c:[{b:"{{"},{b:"}}"},{b:'""'},a]},o=e.inherit(s,{i:/\n/,c:[{b:"{{"},{b:"}}"},{b:'""'},n]});a.c=[s,c,r,e.ASM,e.QSM,e.CNM,e.CBCM],n.c=[o,c,t,e.ASM,e.QSM,e.CNM,e.inherit(e.CBCM,{i:/\n/})];var l={v:[s,c,r,e.ASM,e.QSM]},b=e.IR+"(<"+e.IR+"(\\s*,\\s*"+e.IR+")*>)?(\\[\\])?";return{aliases:["csharp"],k:i,i:/::/,c:[e.C("///","$",{rB:!0,c:[{cN:"doctag",v:[{b:"///",r:0},{b:""},{b:""}]}]}),e.CLCM,e.CBCM,{cN:"meta",b:"#",e:"$",k:{"meta-keyword":"if else elif endif define undef warning error line region endregion pragma checksum"}},l,e.CNM,{bK:"class interface",e:/[{;=]/,i:/[^\s:]/,c:[e.TM,e.CLCM,e.CBCM]},{bK:"namespace",e:/[{;=]/,i:/[^\s:]/,c:[e.inherit(e.TM,{b:"[a-zA-Z](\\.?\\w)*"}),e.CLCM,e.CBCM]},{bK:"new return throw await",r:0},{cN:"function",b:"("+b+"\\s+)+"+e.IR+"\\s*\\(",rB:!0,e:/[{;=]/,eE:!0,k:i,c:[{b:e.IR+"\\s*\\(",rB:!0,c:[e.TM],r:0},{cN:"params",b:/\(/,e:/\)/,eB:!0,eE:!0,k:i,r:0,c:[l,e.CNM,e.CBCM]},e.CLCM,e.CBCM]}]}});hljs.registerLanguage("sql",function(e){var t=e.C("--","$");return{cI:!0,i:/[<>{}*#]/,c:[{bK:"begin end start commit rollback savepoint lock alter create drop rename call delete do handler insert load replace select truncate update set show pragma grant merge describe use explain help declare prepare execute deallocate release unlock purge reset change stop analyze cache flush optimize repair kill install uninstall checksum restore check backup revoke comment",e:/;/,eW:!0,l:/[\w\.]+/,k:{keyword:"abort abs absolute acc acce accep accept access accessed accessible account acos action activate add addtime admin administer advanced advise aes_decrypt aes_encrypt after agent aggregate ali alia alias allocate allow alter always analyze ancillary and any anydata anydataset anyschema anytype apply archive archived archivelog are as asc ascii asin assembly assertion associate asynchronous at atan atn2 attr attri attrib attribu attribut attribute attributes audit authenticated authentication authid authors auto autoallocate autodblink autoextend automatic availability avg backup badfile basicfile before begin beginning benchmark between bfile bfile_base big bigfile bin binary_double binary_float binlog bit_and bit_count bit_length bit_or bit_xor bitmap blob_base block blocksize body both bound buffer_cache buffer_pool build bulk by byte byteordermark bytes cache caching call calling cancel capacity cascade cascaded case cast catalog category ceil ceiling chain change changed char_base char_length character_length characters characterset charindex charset charsetform charsetid check checksum checksum_agg child choose chr chunk class cleanup clear client clob clob_base clone close cluster_id cluster_probability cluster_set clustering coalesce coercibility col collate collation collect colu colum column column_value columns columns_updated comment commit compact compatibility compiled complete composite_limit compound compress compute concat concat_ws concurrent confirm conn connec connect connect_by_iscycle connect_by_isleaf connect_by_root connect_time connection consider consistent constant constraint constraints constructor container content contents context contributors controlfile conv convert convert_tz corr corr_k corr_s corresponding corruption cos cost count count_big counted covar_pop covar_samp cpu_per_call cpu_per_session crc32 create creation critical cross cube cume_dist curdate current current_date current_time current_timestamp current_user cursor curtime customdatum cycle data database databases datafile datafiles datalength date_add date_cache date_format date_sub dateadd datediff datefromparts datename datepart datetime2fromparts day day_to_second dayname dayofmonth dayofweek dayofyear days db_role_change dbtimezone ddl deallocate declare decode decompose decrement decrypt deduplicate def defa defau defaul default defaults deferred defi defin define degrees delayed delegate delete delete_all delimited demand dense_rank depth dequeue des_decrypt des_encrypt des_key_file desc descr descri describ describe descriptor deterministic diagnostics difference dimension direct_load directory disable disable_all disallow disassociate discardfile disconnect diskgroup distinct distinctrow distribute distributed div do document domain dotnet double downgrade drop dumpfile duplicate duration each edition editionable editions element ellipsis else elsif elt empty enable enable_all enclosed encode encoding encrypt end end-exec endian enforced engine engines enqueue enterprise entityescaping eomonth error errors escaped evalname evaluate event eventdata events except exception exceptions exchange exclude excluding execu execut execute exempt exists exit exp expire explain export export_set extended extent external external_1 external_2 externally extract failed failed_login_attempts failover failure far fast feature_set feature_value fetch field fields file file_name_convert filesystem_like_logging final finish first first_value fixed flash_cache flashback floor flush following follows for forall force form forma format found found_rows freelist freelists freepools fresh from from_base64 from_days ftp full function general generated get get_format get_lock getdate getutcdate global global_name globally go goto grant grants greatest group group_concat group_id grouping grouping_id groups gtid_subtract guarantee guard handler hash hashkeys having hea head headi headin heading heap help hex hierarchy high high_priority hosts hour http id ident_current ident_incr ident_seed identified identity idle_time if ifnull ignore iif ilike ilm immediate import in include including increment index indexes indexing indextype indicator indices inet6_aton inet6_ntoa inet_aton inet_ntoa infile initial initialized initially initrans inmemory inner innodb input insert install instance instantiable instr interface interleaved intersect into invalidate invisible is is_free_lock is_ipv4 is_ipv4_compat is_not is_not_null is_used_lock isdate isnull isolation iterate java join json json_exists keep keep_duplicates key keys kill language large last last_day last_insert_id last_value lax lcase lead leading least leaves left len lenght length less level levels library like like2 like4 likec limit lines link list listagg little ln load load_file lob lobs local localtime localtimestamp locate locator lock locked log log10 log2 logfile logfiles logging logical logical_reads_per_call logoff logon logs long loop low low_priority lower lpad lrtrim ltrim main make_set makedate maketime managed management manual map mapping mask master master_pos_wait match matched materialized max maxextents maximize maxinstances maxlen maxlogfiles maxloghistory maxlogmembers maxsize maxtrans md5 measures median medium member memcompress memory merge microsecond mid migration min minextents minimum mining minus minute minvalue missing mod mode model modification modify module monitoring month months mount move movement multiset mutex name name_const names nan national native natural nav nchar nclob nested never new newline next nextval no no_write_to_binlog noarchivelog noaudit nobadfile nocheck nocompress nocopy nocycle nodelay nodiscardfile noentityescaping noguarantee nokeep nologfile nomapping nomaxvalue nominimize nominvalue nomonitoring none noneditionable nonschema noorder nopr nopro noprom nopromp noprompt norely noresetlogs noreverse normal norowdependencies noschemacheck noswitch not nothing notice notrim novalidate now nowait nth_value nullif nulls num numb numbe nvarchar nvarchar2 object ocicoll ocidate ocidatetime ociduration ociinterval ociloblocator ocinumber ociref ocirefcursor ocirowid ocistring ocitype oct octet_length of off offline offset oid oidindex old on online only opaque open operations operator optimal optimize option optionally or oracle oracle_date oradata ord ordaudio orddicom orddoc order ordimage ordinality ordvideo organization orlany orlvary out outer outfile outline output over overflow overriding package pad parallel parallel_enable parameters parent parse partial partition partitions pascal passing password password_grace_time password_lock_time password_reuse_max password_reuse_time password_verify_function patch path patindex pctincrease pctthreshold pctused pctversion percent percent_rank percentile_cont percentile_disc performance period period_add period_diff permanent physical pi pipe pipelined pivot pluggable plugin policy position post_transaction pow power pragma prebuilt precedes preceding precision prediction prediction_cost prediction_details prediction_probability prediction_set prepare present preserve prior priority private private_sga privileges procedural procedure procedure_analyze processlist profiles project prompt protection public publishingservername purge quarter query quick quiesce quota quotename radians raise rand range rank raw read reads readsize rebuild record records recover recovery recursive recycle redo reduced ref reference referenced references referencing refresh regexp_like register regr_avgx regr_avgy regr_count regr_intercept regr_r2 regr_slope regr_sxx regr_sxy reject rekey relational relative relaylog release release_lock relies_on relocate rely rem remainder rename repair repeat replace replicate replication required reset resetlogs resize resource respect restore restricted result result_cache resumable resume retention return returning returns reuse reverse revoke right rlike role roles rollback rolling rollup round row row_count rowdependencies rowid rownum rows rtrim rules safe salt sample save savepoint sb1 sb2 sb4 scan schema schemacheck scn scope scroll sdo_georaster sdo_topo_geometry search sec_to_time second section securefile security seed segment select self sequence sequential serializable server servererror session session_user sessions_per_user set sets settings sha sha1 sha2 share shared shared_pool short show shrink shutdown si_averagecolor si_colorhistogram si_featurelist si_positionalcolor si_stillimage si_texture siblings sid sign sin size size_t sizes skip slave sleep smalldatetimefromparts smallfile snapshot some soname sort soundex source space sparse spfile split sql sql_big_result sql_buffer_result sql_cache sql_calc_found_rows sql_small_result sql_variant_property sqlcode sqldata sqlerror sqlname sqlstate sqrt square standalone standby start starting startup statement static statistics stats_binomial_test stats_crosstab stats_ks_test stats_mode stats_mw_test stats_one_way_anova stats_t_test_ stats_t_test_indep stats_t_test_one stats_t_test_paired stats_wsr_test status std stddev stddev_pop stddev_samp stdev stop storage store stored str str_to_date straight_join strcmp strict string struct stuff style subdate subpartition subpartitions substitutable substr substring subtime subtring_index subtype success sum suspend switch switchoffset switchover sync synchronous synonym sys sys_xmlagg sysasm sysaux sysdate sysdatetimeoffset sysdba sysoper system system_user sysutcdatetime table tables tablespace tan tdo template temporary terminated tertiary_weights test than then thread through tier ties time time_format time_zone timediff timefromparts timeout timestamp timestampadd timestampdiff timezone_abbr timezone_minute timezone_region to to_base64 to_date to_days to_seconds todatetimeoffset trace tracking transaction transactional translate translation treat trigger trigger_nestlevel triggers trim truncate try_cast try_convert try_parse type ub1 ub2 ub4 ucase unarchived unbounded uncompress under undo unhex unicode uniform uninstall union unique unix_timestamp unknown unlimited unlock unpivot unrecoverable unsafe unsigned until untrusted unusable unused update updated upgrade upped upper upsert url urowid usable usage use use_stored_outlines user user_data user_resources users using utc_date utc_timestamp uuid uuid_short validate validate_password_strength validation valist value values var var_samp varcharc vari varia variab variabl variable variables variance varp varraw varrawc varray verify version versions view virtual visible void wait wallet warning warnings week weekday weekofyear wellformed when whene whenev wheneve whenever where while whitespace with within without work wrapped xdb xml xmlagg xmlattributes xmlcast xmlcolattval xmlelement xmlexists xmlforest xmlindex xmlnamespaces xmlpi xmlquery xmlroot xmlschema xmlserialize xmltable xmltype xor year year_to_month years yearweek",literal:"true false null",built_in:"array bigint binary bit blob boolean char character date dec decimal float int int8 integer interval number numeric real record serial serial8 smallint text varchar varying void"},c:[{cN:"string",b:"'",e:"'",c:[e.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[e.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[e.BE]},e.CNM,e.CBCM,t]},e.CBCM,t]}});hljs.registerLanguage("perl",function(e){var t="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when",r={cN:"subst",b:"[$@]\\{",e:"\\}",k:t},s={b:"->{",e:"}"},n={v:[{b:/\$\d/},{b:/[\$%@](\^\w\b|#\w+(::\w+)*|{\w+}|\w+(::\w*)*)/},{b:/[\$%@][^\s\w{]/,r:0}]},i=[e.BE,r,n],o=[n,e.HCM,e.C("^\\=\\w","\\=cut",{eW:!0}),s,{cN:"string",c:i,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[e.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[e.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+e.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[e.HCM,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[e.BE],r:0}]},{cN:"function",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",eE:!0,r:5,c:[e.TM]},{b:"-\\w\\b",r:0},{b:"^__DATA__$",e:"^__END__$",sL:"mojolicious",c:[{b:"^@@.*",e:"$",cN:"comment"}]}];return r.c=o,s.c=o,{aliases:["pl","pm"],l:/[\w\.]+/,k:t,c:o}});hljs.registerLanguage("yaml",function(e){var b="true false yes no null",a="^[ \\-]*",r="[a-zA-Z_][\\w\\-]*",t={cN:"attr",v:[{b:a+r+":"},{b:a+'"'+r+'":'},{b:a+"'"+r+"':"}]},c={cN:"template-variable",v:[{b:"{{",e:"}}"},{b:"%{",e:"}"}]},l={cN:"string",r:0,v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:/\S+/}],c:[e.BE,c]};return{cI:!0,aliases:["yml","YAML","yaml"],c:[t,{cN:"meta",b:"^---s*$",r:10},{cN:"string",b:"[\\|>] *$",rE:!0,c:l.c,e:t.v[0].b},{b:"<%[%=-]?",e:"[%-]?%>",sL:"ruby",eB:!0,eE:!0,r:0},{cN:"type",b:"!!"+e.UIR},{cN:"meta",b:"&"+e.UIR+"$"},{cN:"meta",b:"\\*"+e.UIR+"$"},{cN:"bullet",b:"^ *-",r:0},e.HCM,{bK:b,k:{literal:b}},e.CNM,l]}}); \ No newline at end of file diff --git a/themes/typemill/js/highlight/styles/agate.css b/themes/typemill/js/highlight/styles/agate.css new file mode 100644 index 0000000..8d64547 --- /dev/null +++ b/themes/typemill/js/highlight/styles/agate.css @@ -0,0 +1,108 @@ +/*! + * Agate by Taufik Nurrohman + * ---------------------------------------------------- + * + * #ade5fc + * #a2fca2 + * #c6b4f0 + * #d36363 + * #fcc28c + * #fc9b9b + * #ffa + * #fff + * #333 + * #62c8f3 + * #888 + * + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #333; + color: white; +} + +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-code, +.hljs-emphasis { + font-style: italic; +} + +.hljs-tag { + color: #62c8f3; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-selector-id, +.hljs-selector-class { + color: #ade5fc; +} + +.hljs-string, +.hljs-bullet { + color: #a2fca2; +} + +.hljs-type, +.hljs-title, +.hljs-section, +.hljs-attribute, +.hljs-quote, +.hljs-built_in, +.hljs-builtin-name { + color: #ffa; +} + +.hljs-number, +.hljs-symbol, +.hljs-bullet { + color: #d36363; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color: #fcc28c; +} + +.hljs-comment, +.hljs-deletion, +.hljs-code { + color: #888; +} + +.hljs-regexp, +.hljs-link { + color: #c6b4f0; +} + +.hljs-meta { + color: #fc9b9b; +} + +.hljs-deletion { + background-color: #fc9b9b; + color: #333; +} + +.hljs-addition { + background-color: #a2fca2; + color: #333; +} + +.hljs a { + color: inherit; +} + +.hljs a:focus, +.hljs a:hover { + color: inherit; + text-decoration: underline; +} diff --git a/themes/typemill/js/highlight/styles/androidstudio.css b/themes/typemill/js/highlight/styles/androidstudio.css new file mode 100644 index 0000000..bc8e473 --- /dev/null +++ b/themes/typemill/js/highlight/styles/androidstudio.css @@ -0,0 +1,66 @@ +/* +Date: 24 Fev 2015 +Author: Pedro Oliveira +*/ + +.hljs { + color: #a9b7c6; + background: #282b2e; + display: block; + overflow-x: auto; + padding: 0.5em; +} + +.hljs-number, +.hljs-literal, +.hljs-symbol, +.hljs-bullet { + color: #6897BB; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-deletion { + color: #cc7832; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-link { + color: #629755; +} + +.hljs-comment, +.hljs-quote { + color: #808080; +} + +.hljs-meta { + color: #bbb529; +} + +.hljs-string, +.hljs-attribute, +.hljs-addition { + color: #6A8759; +} + +.hljs-section, +.hljs-title, +.hljs-type { + color: #ffc66d; +} + +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e8bf6a; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/arduino-light.css b/themes/typemill/js/highlight/styles/arduino-light.css new file mode 100644 index 0000000..4b8b7fd --- /dev/null +++ b/themes/typemill/js/highlight/styles/arduino-light.css @@ -0,0 +1,88 @@ +/* + +Arduino® Light Theme - Stefania Mellai + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #FFFFFF; +} + +.hljs, +.hljs-subst { + color: #434f54; +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-doctag, +.hljs-name { + color: #00979D; +} + +.hljs-built_in, +.hljs-literal, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #D35400; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #00979D; +} + +.hljs-type, +.hljs-string, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #005C5F; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-comment { + color: rgba(149,165,166,.8); +} + +.hljs-meta-keyword { + color: #728E00; +} + +.hljs-meta { + color: #728E00; + color: #434f54; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-function { + color: #728E00; +} + +.hljs-number { + color: #8A7B52; +} diff --git a/themes/typemill/js/highlight/styles/arta.css b/themes/typemill/js/highlight/styles/arta.css new file mode 100644 index 0000000..75ef3a9 --- /dev/null +++ b/themes/typemill/js/highlight/styles/arta.css @@ -0,0 +1,73 @@ +/* +Date: 17.V.2011 +Author: pumbur +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #222; +} + +.hljs, +.hljs-subst { + color: #aaa; +} + +.hljs-section { + color: #fff; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #444; +} + +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-regexp { + color: #ffcc33; +} + +.hljs-number, +.hljs-addition { + color: #00cc66; +} + +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-template-variable, +.hljs-attribute, +.hljs-link { + color: #32aaee; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #6644aa; +} + +.hljs-title, +.hljs-variable, +.hljs-deletion, +.hljs-template-tag { + color: #bb1166; +} + +.hljs-section, +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/themes/typemill/js/highlight/styles/ascetic.css b/themes/typemill/js/highlight/styles/ascetic.css new file mode 100644 index 0000000..48397e8 --- /dev/null +++ b/themes/typemill/js/highlight/styles/ascetic.css @@ -0,0 +1,45 @@ +/* + +Original style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: white; + color: black; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-symbol, +.hljs-bullet, +.hljs-section, +.hljs-addition, +.hljs-attribute, +.hljs-link { + color: #888; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #ccc; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-name, +.hljs-type, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/themes/typemill/js/highlight/styles/atelier-cave-dark.css b/themes/typemill/js/highlight/styles/atelier-cave-dark.css new file mode 100644 index 0000000..65428f3 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-cave-dark.css @@ -0,0 +1,83 @@ +/* Base16 Atelier Cave Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Cave Comment */ +.hljs-comment, +.hljs-quote { + color: #7e7887; +} + +/* Atelier-Cave Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-regexp, +.hljs-link, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #be4678; +} + +/* Atelier-Cave Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #aa573c; +} + +/* Atelier-Cave Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #2a9292; +} + +/* Atelier-Cave Blue */ +.hljs-title, +.hljs-section { + color: #576ddb; +} + +/* Atelier-Cave Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #955ae7; +} + +.hljs-deletion, +.hljs-addition { + color: #19171c; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #be4678; +} + +.hljs-addition { + background-color: #2a9292; +} + +.hljs { + display: block; + overflow-x: auto; + background: #19171c; + color: #8b8792; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-cave-light.css b/themes/typemill/js/highlight/styles/atelier-cave-light.css new file mode 100644 index 0000000..b419f9f --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-cave-light.css @@ -0,0 +1,85 @@ +/* Base16 Atelier Cave Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/cave) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Cave Comment */ +.hljs-comment, +.hljs-quote { + color: #655f6d; +} + +/* Atelier-Cave Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #be4678; +} + +/* Atelier-Cave Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #aa573c; +} + +/* Atelier-Cave Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #2a9292; +} + +/* Atelier-Cave Blue */ +.hljs-title, +.hljs-section { + color: #576ddb; +} + +/* Atelier-Cave Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #955ae7; +} + +.hljs-deletion, +.hljs-addition { + color: #19171c; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #be4678; +} + +.hljs-addition { + background-color: #2a9292; +} + +.hljs { + display: block; + overflow-x: auto; + background: #efecf4; + color: #585260; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-dune-dark.css b/themes/typemill/js/highlight/styles/atelier-dune-dark.css new file mode 100644 index 0000000..1684f52 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-dune-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Dune Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Dune Comment */ +.hljs-comment, +.hljs-quote { + color: #999580; +} + +/* Atelier-Dune Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d73737; +} + +/* Atelier-Dune Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b65611; +} + +/* Atelier-Dune Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #60ac39; +} + +/* Atelier-Dune Blue */ +.hljs-title, +.hljs-section { + color: #6684e1; +} + +/* Atelier-Dune Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b854d4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #20201d; + color: #a6a28c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-dune-light.css b/themes/typemill/js/highlight/styles/atelier-dune-light.css new file mode 100644 index 0000000..547719d --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-dune-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Dune Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Dune Comment */ +.hljs-comment, +.hljs-quote { + color: #7d7a68; +} + +/* Atelier-Dune Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d73737; +} + +/* Atelier-Dune Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b65611; +} + +/* Atelier-Dune Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #60ac39; +} + +/* Atelier-Dune Blue */ +.hljs-title, +.hljs-section { + color: #6684e1; +} + +/* Atelier-Dune Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b854d4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #fefbec; + color: #6e6b5e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-estuary-dark.css b/themes/typemill/js/highlight/styles/atelier-estuary-dark.css new file mode 100644 index 0000000..a5e5071 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-estuary-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Estuary Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Estuary Comment */ +.hljs-comment, +.hljs-quote { + color: #878573; +} + +/* Atelier-Estuary Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ba6236; +} + +/* Atelier-Estuary Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #ae7313; +} + +/* Atelier-Estuary Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7d9726; +} + +/* Atelier-Estuary Blue */ +.hljs-title, +.hljs-section { + color: #36a166; +} + +/* Atelier-Estuary Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #5f9182; +} + +.hljs-deletion, +.hljs-addition { + color: #22221b; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ba6236; +} + +.hljs-addition { + background-color: #7d9726; +} + +.hljs { + display: block; + overflow-x: auto; + background: #22221b; + color: #929181; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-estuary-light.css b/themes/typemill/js/highlight/styles/atelier-estuary-light.css new file mode 100644 index 0000000..1daee5d --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-estuary-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Estuary Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/estuary) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Estuary Comment */ +.hljs-comment, +.hljs-quote { + color: #6c6b5a; +} + +/* Atelier-Estuary Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ba6236; +} + +/* Atelier-Estuary Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #ae7313; +} + +/* Atelier-Estuary Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7d9726; +} + +/* Atelier-Estuary Blue */ +.hljs-title, +.hljs-section { + color: #36a166; +} + +/* Atelier-Estuary Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #5f9182; +} + +.hljs-deletion, +.hljs-addition { + color: #22221b; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ba6236; +} + +.hljs-addition { + background-color: #7d9726; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f4f3ec; + color: #5f5e4e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-forest-dark.css b/themes/typemill/js/highlight/styles/atelier-forest-dark.css new file mode 100644 index 0000000..0ef4fae --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-forest-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Forest Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Forest Comment */ +.hljs-comment, +.hljs-quote { + color: #9c9491; +} + +/* Atelier-Forest Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #f22c40; +} + +/* Atelier-Forest Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #df5320; +} + +/* Atelier-Forest Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7b9726; +} + +/* Atelier-Forest Blue */ +.hljs-title, +.hljs-section { + color: #407ee7; +} + +/* Atelier-Forest Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6666ea; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1b1918; + color: #a8a19f; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-forest-light.css b/themes/typemill/js/highlight/styles/atelier-forest-light.css new file mode 100644 index 0000000..bbedde1 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-forest-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Forest Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Forest Comment */ +.hljs-comment, +.hljs-quote { + color: #766e6b; +} + +/* Atelier-Forest Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #f22c40; +} + +/* Atelier-Forest Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #df5320; +} + +/* Atelier-Forest Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #7b9726; +} + +/* Atelier-Forest Blue */ +.hljs-title, +.hljs-section { + color: #407ee7; +} + +/* Atelier-Forest Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6666ea; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f1efee; + color: #68615e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-heath-dark.css b/themes/typemill/js/highlight/styles/atelier-heath-dark.css new file mode 100644 index 0000000..fe01ff7 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-heath-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Heath Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Heath Comment */ +.hljs-comment, +.hljs-quote { + color: #9e8f9e; +} + +/* Atelier-Heath Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca402b; +} + +/* Atelier-Heath Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #a65926; +} + +/* Atelier-Heath Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #918b3b; +} + +/* Atelier-Heath Blue */ +.hljs-title, +.hljs-section { + color: #516aec; +} + +/* Atelier-Heath Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #7b59c0; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1b181b; + color: #ab9bab; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-heath-light.css b/themes/typemill/js/highlight/styles/atelier-heath-light.css new file mode 100644 index 0000000..ee43786 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-heath-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Heath Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Heath Comment */ +.hljs-comment, +.hljs-quote { + color: #776977; +} + +/* Atelier-Heath Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca402b; +} + +/* Atelier-Heath Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #a65926; +} + +/* Atelier-Heath Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #918b3b; +} + +/* Atelier-Heath Blue */ +.hljs-title, +.hljs-section { + color: #516aec; +} + +/* Atelier-Heath Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #7b59c0; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f7f3f7; + color: #695d69; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-lakeside-dark.css b/themes/typemill/js/highlight/styles/atelier-lakeside-dark.css new file mode 100644 index 0000000..a937d3b --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-lakeside-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Lakeside Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Lakeside Comment */ +.hljs-comment, +.hljs-quote { + color: #7195a8; +} + +/* Atelier-Lakeside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d22d72; +} + +/* Atelier-Lakeside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #935c25; +} + +/* Atelier-Lakeside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #568c3b; +} + +/* Atelier-Lakeside Blue */ +.hljs-title, +.hljs-section { + color: #257fad; +} + +/* Atelier-Lakeside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6b6bb8; +} + +.hljs { + display: block; + overflow-x: auto; + background: #161b1d; + color: #7ea2b4; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-lakeside-light.css b/themes/typemill/js/highlight/styles/atelier-lakeside-light.css new file mode 100644 index 0000000..6c7e8f9 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-lakeside-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Lakeside Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Lakeside Comment */ +.hljs-comment, +.hljs-quote { + color: #5a7b8c; +} + +/* Atelier-Lakeside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #d22d72; +} + +/* Atelier-Lakeside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #935c25; +} + +/* Atelier-Lakeside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #568c3b; +} + +/* Atelier-Lakeside Blue */ +.hljs-title, +.hljs-section { + color: #257fad; +} + +/* Atelier-Lakeside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6b6bb8; +} + +.hljs { + display: block; + overflow-x: auto; + background: #ebf8ff; + color: #516d7b; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-plateau-dark.css b/themes/typemill/js/highlight/styles/atelier-plateau-dark.css new file mode 100644 index 0000000..3bb0526 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-plateau-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Plateau Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Plateau Comment */ +.hljs-comment, +.hljs-quote { + color: #7e7777; +} + +/* Atelier-Plateau Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca4949; +} + +/* Atelier-Plateau Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b45a3c; +} + +/* Atelier-Plateau Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #4b8b8b; +} + +/* Atelier-Plateau Blue */ +.hljs-title, +.hljs-section { + color: #7272ca; +} + +/* Atelier-Plateau Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8464c4; +} + +.hljs-deletion, +.hljs-addition { + color: #1b1818; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ca4949; +} + +.hljs-addition { + background-color: #4b8b8b; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1b1818; + color: #8a8585; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-plateau-light.css b/themes/typemill/js/highlight/styles/atelier-plateau-light.css new file mode 100644 index 0000000..5f0222b --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-plateau-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Plateau Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/plateau) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Plateau Comment */ +.hljs-comment, +.hljs-quote { + color: #655d5d; +} + +/* Atelier-Plateau Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #ca4949; +} + +/* Atelier-Plateau Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #b45a3c; +} + +/* Atelier-Plateau Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #4b8b8b; +} + +/* Atelier-Plateau Blue */ +.hljs-title, +.hljs-section { + color: #7272ca; +} + +/* Atelier-Plateau Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8464c4; +} + +.hljs-deletion, +.hljs-addition { + color: #1b1818; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #ca4949; +} + +.hljs-addition { + background-color: #4b8b8b; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f4ecec; + color: #585050; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-savanna-dark.css b/themes/typemill/js/highlight/styles/atelier-savanna-dark.css new file mode 100644 index 0000000..38f8314 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-savanna-dark.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Savanna Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Savanna Comment */ +.hljs-comment, +.hljs-quote { + color: #78877d; +} + +/* Atelier-Savanna Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #b16139; +} + +/* Atelier-Savanna Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #9f713c; +} + +/* Atelier-Savanna Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #489963; +} + +/* Atelier-Savanna Blue */ +.hljs-title, +.hljs-section { + color: #478c90; +} + +/* Atelier-Savanna Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #55859b; +} + +.hljs-deletion, +.hljs-addition { + color: #171c19; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #b16139; +} + +.hljs-addition { + background-color: #489963; +} + +.hljs { + display: block; + overflow-x: auto; + background: #171c19; + color: #87928a; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-savanna-light.css b/themes/typemill/js/highlight/styles/atelier-savanna-light.css new file mode 100644 index 0000000..1ccd7c6 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-savanna-light.css @@ -0,0 +1,84 @@ +/* Base16 Atelier Savanna Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/savanna) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Savanna Comment */ +.hljs-comment, +.hljs-quote { + color: #5f6d64; +} + +/* Atelier-Savanna Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #b16139; +} + +/* Atelier-Savanna Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #9f713c; +} + +/* Atelier-Savanna Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #489963; +} + +/* Atelier-Savanna Blue */ +.hljs-title, +.hljs-section { + color: #478c90; +} + +/* Atelier-Savanna Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #55859b; +} + +.hljs-deletion, +.hljs-addition { + color: #171c19; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #b16139; +} + +.hljs-addition { + background-color: #489963; +} + +.hljs { + display: block; + overflow-x: auto; + background: #ecf4ee; + color: #526057; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-seaside-dark.css b/themes/typemill/js/highlight/styles/atelier-seaside-dark.css new file mode 100644 index 0000000..df29949 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-seaside-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Seaside Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Seaside Comment */ +.hljs-comment, +.hljs-quote { + color: #809980; +} + +/* Atelier-Seaside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e6193c; +} + +/* Atelier-Seaside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #87711d; +} + +/* Atelier-Seaside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #29a329; +} + +/* Atelier-Seaside Blue */ +.hljs-title, +.hljs-section { + color: #3d62f5; +} + +/* Atelier-Seaside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ad2bee; +} + +.hljs { + display: block; + overflow-x: auto; + background: #131513; + color: #8ca68c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-seaside-light.css b/themes/typemill/js/highlight/styles/atelier-seaside-light.css new file mode 100644 index 0000000..9d960f2 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-seaside-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Seaside Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Seaside Comment */ +.hljs-comment, +.hljs-quote { + color: #687d68; +} + +/* Atelier-Seaside Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #e6193c; +} + +/* Atelier-Seaside Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #87711d; +} + +/* Atelier-Seaside Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #29a329; +} + +/* Atelier-Seaside Blue */ +.hljs-title, +.hljs-section { + color: #3d62f5; +} + +/* Atelier-Seaside Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ad2bee; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f4fbf4; + color: #5e6e5e; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-sulphurpool-dark.css b/themes/typemill/js/highlight/styles/atelier-sulphurpool-dark.css new file mode 100644 index 0000000..c2ab793 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-sulphurpool-dark.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Sulphurpool Dark - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Sulphurpool Comment */ +.hljs-comment, +.hljs-quote { + color: #898ea4; +} + +/* Atelier-Sulphurpool Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #c94922; +} + +/* Atelier-Sulphurpool Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #c76b29; +} + +/* Atelier-Sulphurpool Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #ac9739; +} + +/* Atelier-Sulphurpool Blue */ +.hljs-title, +.hljs-section { + color: #3d8fd1; +} + +/* Atelier-Sulphurpool Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6679cc; +} + +.hljs { + display: block; + overflow-x: auto; + background: #202746; + color: #979db4; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atelier-sulphurpool-light.css b/themes/typemill/js/highlight/styles/atelier-sulphurpool-light.css new file mode 100644 index 0000000..96c47d0 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atelier-sulphurpool-light.css @@ -0,0 +1,69 @@ +/* Base16 Atelier Sulphurpool Light - Theme */ +/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool) */ +/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ + +/* Atelier-Sulphurpool Comment */ +.hljs-comment, +.hljs-quote { + color: #6b7394; +} + +/* Atelier-Sulphurpool Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-regexp, +.hljs-link, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #c94922; +} + +/* Atelier-Sulphurpool Orange */ +.hljs-number, +.hljs-meta, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #c76b29; +} + +/* Atelier-Sulphurpool Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet { + color: #ac9739; +} + +/* Atelier-Sulphurpool Blue */ +.hljs-title, +.hljs-section { + color: #3d8fd1; +} + +/* Atelier-Sulphurpool Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #6679cc; +} + +.hljs { + display: block; + overflow-x: auto; + background: #f5f7ff; + color: #5e6687; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/atom-one-dark.css b/themes/typemill/js/highlight/styles/atom-one-dark.css new file mode 100644 index 0000000..1616aaf --- /dev/null +++ b/themes/typemill/js/highlight/styles/atom-one-dark.css @@ -0,0 +1,96 @@ +/* + +Atom One Dark by Daniel Gamage +Original One Dark Syntax theme from https://github.com/atom/one-dark-syntax + +base: #282c34 +mono-1: #abb2bf +mono-2: #818896 +mono-3: #5c6370 +hue-1: #56b6c2 +hue-2: #61aeee +hue-3: #c678dd +hue-4: #98c379 +hue-5: #e06c75 +hue-5-2: #be5046 +hue-6: #d19a66 +hue-6-2: #e6c07b + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #abb2bf; + background: #282c34; +} + +.hljs-comment, +.hljs-quote { + color: #5c6370; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #c678dd; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e06c75; +} + +.hljs-literal { + color: #56b6c2; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #98c379; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #e6c07b; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #d19a66; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #61aeee; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/themes/typemill/js/highlight/styles/atom-one-light.css b/themes/typemill/js/highlight/styles/atom-one-light.css new file mode 100644 index 0000000..d5bd1d2 --- /dev/null +++ b/themes/typemill/js/highlight/styles/atom-one-light.css @@ -0,0 +1,96 @@ +/* + +Atom One Light by Daniel Gamage +Original One Light Syntax theme from https://github.com/atom/one-light-syntax + +base: #fafafa +mono-1: #383a42 +mono-2: #686b77 +mono-3: #a0a1a7 +hue-1: #0184bb +hue-2: #4078f2 +hue-3: #a626a4 +hue-4: #50a14f +hue-5: #e45649 +hue-5-2: #c91243 +hue-6: #986801 +hue-6-2: #c18401 + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #383a42; + background: #fafafa; +} + +.hljs-comment, +.hljs-quote { + color: #a0a1a7; + font-style: italic; +} + +.hljs-doctag, +.hljs-keyword, +.hljs-formula { + color: #a626a4; +} + +.hljs-section, +.hljs-name, +.hljs-selector-tag, +.hljs-deletion, +.hljs-subst { + color: #e45649; +} + +.hljs-literal { + color: #0184bb; +} + +.hljs-string, +.hljs-regexp, +.hljs-addition, +.hljs-attribute, +.hljs-meta-string { + color: #50a14f; +} + +.hljs-built_in, +.hljs-class .hljs-title { + color: #c18401; +} + +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-type, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-number { + color: #986801; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-meta, +.hljs-selector-id, +.hljs-title { + color: #4078f2; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/themes/typemill/js/highlight/styles/brown-paper.css b/themes/typemill/js/highlight/styles/brown-paper.css new file mode 100644 index 0000000..f0197b9 --- /dev/null +++ b/themes/typemill/js/highlight/styles/brown-paper.css @@ -0,0 +1,64 @@ +/* + +Brown Paper style from goldblog.com.ua (c) Zaripov Yura + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background:#b7a68e url(./brown-papersq.png); +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color:#005599; + font-weight:bold; +} + +.hljs, +.hljs-subst { + color: #363c69; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link, +.hljs-name { + color: #2c009f; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta, +.hljs-deletion { + color: #802022; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/themes/typemill/js/highlight/styles/brown-papersq.png b/themes/typemill/js/highlight/styles/brown-papersq.png new file mode 100644 index 0000000000000000000000000000000000000000..3813903dbf9fa7b1fb5bd11d9534c06667d9056f GIT binary patch literal 18198 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
    G3S-EN>9CM!{YB*|;6wg-K3V?)eR((z#1 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 literal 0 HcmV?d00001 diff --git a/themes/typemill/js/highlight/styles/codepen-embed.css b/themes/typemill/js/highlight/styles/codepen-embed.css new file mode 100644 index 0000000..195c4a0 --- /dev/null +++ b/themes/typemill/js/highlight/styles/codepen-embed.css @@ -0,0 +1,60 @@ +/* + codepen.io Embed Theme + Author: Justin Perry + Original theme - https://github.com/chriskempson/tomorrow-theme +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #222; + color: #fff; +} + +.hljs-comment, +.hljs-quote { + color: #777; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-regexp, +.hljs-meta, +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-params, +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-deletion { + color: #ab875d; +} + +.hljs-section, +.hljs-title, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-type, +.hljs-attribute { + color: #9b869b; +} + +.hljs-string, +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #8f9c6c; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/color-brewer.css b/themes/typemill/js/highlight/styles/color-brewer.css new file mode 100644 index 0000000..7934d98 --- /dev/null +++ b/themes/typemill/js/highlight/styles/color-brewer.css @@ -0,0 +1,71 @@ +/* + +Colorbrewer theme +Original: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock +Ported by Fabrício Tavares de Oliveira + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fff; +} + +.hljs, +.hljs-subst { + color: #000; +} + +.hljs-string, +.hljs-meta, +.hljs-symbol, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #756bb1; +} + +.hljs-comment, +.hljs-quote { + color: #636363; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-bullet, +.hljs-link { + color: #31a354; +} + +.hljs-deletion, +.hljs-variable { + color: #88f; +} + + + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-doctag, +.hljs-type, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-strong { + color: #3182bd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-attribute { + color: #e6550d; +} diff --git a/themes/typemill/js/highlight/styles/darcula.css b/themes/typemill/js/highlight/styles/darcula.css new file mode 100644 index 0000000..be182d0 --- /dev/null +++ b/themes/typemill/js/highlight/styles/darcula.css @@ -0,0 +1,77 @@ +/* + +Darcula color scheme from the JetBrains family of IDEs + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #2b2b2b; +} + +.hljs { + color: #bababa; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-link, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #6896ba; +} + +.hljs-code, +.hljs-selector-class { + color: #a6e22e; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-attribute, +.hljs-name, +.hljs-variable { + color: #cb7832; +} + +.hljs-params { + color: #b9b9b9; +} + +.hljs-string { + color: #6a8759; +} + +.hljs-subst, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-symbol, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #e0c46c; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #7f7f7f; +} diff --git a/themes/typemill/js/highlight/styles/dark.css b/themes/typemill/js/highlight/styles/dark.css new file mode 100644 index 0000000..b4724f5 --- /dev/null +++ b/themes/typemill/js/highlight/styles/dark.css @@ -0,0 +1,63 @@ +/* + +Dark style from softwaremaniacs.org (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #444; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-section, +.hljs-link { + color: white; +} + +.hljs, +.hljs-subst { + color: #ddd; +} + +.hljs-string, +.hljs-title, +.hljs-name, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #d88; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #777; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/themes/typemill/js/highlight/styles/darkula.css b/themes/typemill/js/highlight/styles/darkula.css new file mode 100644 index 0000000..f4646c3 --- /dev/null +++ b/themes/typemill/js/highlight/styles/darkula.css @@ -0,0 +1,6 @@ +/* + Deprecated due to a typo in the name and left here for compatibility purpose only. + Please use darcula.css instead. +*/ + +@import url('darcula.css'); diff --git a/themes/typemill/js/highlight/styles/default.css b/themes/typemill/js/highlight/styles/default.css new file mode 100644 index 0000000..f1bfade --- /dev/null +++ b/themes/typemill/js/highlight/styles/default.css @@ -0,0 +1,99 @@ +/* + +Original highlight.js style (c) Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #F0F0F0; +} + + +/* Base color: saturation 0; */ + +.hljs, +.hljs-subst { + color: #444; +} + +.hljs-comment { + color: #888888; +} + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold; +} + + +/* User color: hue: 0 */ + +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000; +} + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; +} + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060; +} + + +/* Language color: hue: 90; */ + +.hljs-literal { + color: #78A960; +} + +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300; +} + + +/* Meta color: hue: 200 */ + +.hljs-meta { + color: #1f7199; +} + +.hljs-meta-string { + color: #4d99bf; +} + + +/* Misc effects */ + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/docco.css b/themes/typemill/js/highlight/styles/docco.css new file mode 100644 index 0000000..db366be --- /dev/null +++ b/themes/typemill/js/highlight/styles/docco.css @@ -0,0 +1,97 @@ +/* +Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars) +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #000; + background: #f8f8ff; +} + +.hljs-comment, +.hljs-quote { + color: #408080; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-subst { + color: #954121; +} + +.hljs-number { + color: #40a070; +} + +.hljs-string, +.hljs-doctag { + color: #219161; +} + +.hljs-selector-id, +.hljs-selector-class, +.hljs-section, +.hljs-type { + color: #19469d; +} + +.hljs-params { + color: #00f; +} + +.hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-variable, +.hljs-template-variable { + color: #008080; +} + +.hljs-regexp, +.hljs-link { + color: #b68; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/dracula.css b/themes/typemill/js/highlight/styles/dracula.css new file mode 100644 index 0000000..d591db6 --- /dev/null +++ b/themes/typemill/js/highlight/styles/dracula.css @@ -0,0 +1,76 @@ +/* + +Dracula Theme v1.2.0 + +https://github.com/zenorocha/dracula-theme + +Copyright 2015, All rights reserved + +Code licensed under the MIT license +http://zenorocha.mit-license.org + +@author Éverton Ribeiro +@author Zeno Rocha + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #282a36; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-section, +.hljs-link { + color: #8be9fd; +} + +.hljs-function .hljs-keyword { + color: #ff79c6; +} + +.hljs, +.hljs-subst { + color: #f8f8f2; +} + +.hljs-string, +.hljs-title, +.hljs-name, +.hljs-type, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #f1fa8c; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #6272a4; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/themes/typemill/js/highlight/styles/far.css b/themes/typemill/js/highlight/styles/far.css new file mode 100644 index 0000000..2b3f87b --- /dev/null +++ b/themes/typemill/js/highlight/styles/far.css @@ -0,0 +1,71 @@ +/* + +FAR Style (c) MajestiC + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000080; +} + +.hljs, +.hljs-subst { + color: #0ff; +} + +.hljs-string, +.hljs-attribute, +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition { + color: #ff0; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-variable { + color: #fff; +} + +.hljs-comment, +.hljs-quote, +.hljs-doctag, +.hljs-deletion { + color: #888; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #0f0; +} + +.hljs-meta { + color: #008080; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/themes/typemill/js/highlight/styles/foundation.css b/themes/typemill/js/highlight/styles/foundation.css new file mode 100644 index 0000000..f1fe64b --- /dev/null +++ b/themes/typemill/js/highlight/styles/foundation.css @@ -0,0 +1,88 @@ +/* +Description: Foundation 4 docs style for highlight.js +Author: Dan Allen +Website: http://foundation.zurb.com/docs/ +Version: 1.0 +Date: 2013-04-02 +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #eee; color: black; +} + +.hljs-link, +.hljs-emphasis, +.hljs-attribute, +.hljs-addition { + color: #070; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong, +.hljs-string, +.hljs-deletion { + color: #d14; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-quote, +.hljs-comment { + color: #998; + font-style: italic; +} + +.hljs-section, +.hljs-title { + color: #900; +} + +.hljs-class .hljs-title, +.hljs-type { + color: #458; +} + +.hljs-variable, +.hljs-template-variable { + color: #336699; +} + +.hljs-bullet { + color: #997700; +} + +.hljs-meta { + color: #3344bb; +} + +.hljs-code, +.hljs-number, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag { + color: #099; +} + +.hljs-regexp { + background-color: #fff0ff; + color: #880088; +} + +.hljs-symbol { + color: #990073; +} + +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #007700; +} diff --git a/themes/typemill/js/highlight/styles/github-gist.css b/themes/typemill/js/highlight/styles/github-gist.css new file mode 100644 index 0000000..155f0b9 --- /dev/null +++ b/themes/typemill/js/highlight/styles/github-gist.css @@ -0,0 +1,71 @@ +/** + * GitHub Gist Theme + * Author : Louis Barranqueiro - https://github.com/LouisBarranqueiro + */ + +.hljs { + display: block; + background: white; + padding: 0.5em; + color: #333333; + overflow-x: auto; +} + +.hljs-comment, +.hljs-meta { + color: #969896; +} + +.hljs-string, +.hljs-variable, +.hljs-template-variable, +.hljs-strong, +.hljs-emphasis, +.hljs-quote { + color: #df5000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #a71d5d; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute { + color: #0086b3; +} + +.hljs-section, +.hljs-name { + color: #63a35c; +} + +.hljs-tag { + color: #333333; +} + +.hljs-title, +.hljs-attr, +.hljs-selector-id, +.hljs-selector-class, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #795da3; +} + +.hljs-addition { + color: #55a532; + background-color: #eaffea; +} + +.hljs-deletion { + color: #bd2c00; + background-color: #ffecec; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/themes/typemill/js/highlight/styles/github.css b/themes/typemill/js/highlight/styles/github.css new file mode 100644 index 0000000..791932b --- /dev/null +++ b/themes/typemill/js/highlight/styles/github.css @@ -0,0 +1,99 @@ +/* + +github.com style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #998; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal, +.hljs-variable, +.hljs-template-variable, +.hljs-tag .hljs-attr { + color: #008080; +} + +.hljs-string, +.hljs-doctag { + color: #d14; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #900; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-type, +.hljs-class .hljs-title { + color: #458; + font-weight: bold; +} + +.hljs-tag, +.hljs-name, +.hljs-attribute { + color: #000080; + font-weight: normal; +} + +.hljs-regexp, +.hljs-link { + color: #009926; +} + +.hljs-symbol, +.hljs-bullet { + color: #990073; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #0086b3; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + background: #fdd; +} + +.hljs-addition { + background: #dfd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/googlecode.css b/themes/typemill/js/highlight/styles/googlecode.css new file mode 100644 index 0000000..884ad63 --- /dev/null +++ b/themes/typemill/js/highlight/styles/googlecode.css @@ -0,0 +1,89 @@ +/* + +Google Code style (c) Aahan Krish + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: white; + color: black; +} + +.hljs-comment, +.hljs-quote { + color: #800; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-section, +.hljs-title, +.hljs-name { + color: #008; +} + +.hljs-variable, +.hljs-template-variable { + color: #660; +} + +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-regexp { + color: #080; +} + +.hljs-literal, +.hljs-symbol, +.hljs-bullet, +.hljs-meta, +.hljs-number, +.hljs-link { + color: #066; +} + +.hljs-title, +.hljs-doctag, +.hljs-type, +.hljs-attr, +.hljs-built_in, +.hljs-builtin-name, +.hljs-params { + color: #606; +} + +.hljs-attribute, +.hljs-subst { + color: #000; +} + +.hljs-formula { + background-color: #eee; + font-style: italic; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #9B703F +} + +.hljs-addition { + background-color: #baeeba; +} + +.hljs-deletion { + background-color: #ffc8bd; +} + +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/themes/typemill/js/highlight/styles/grayscale.css b/themes/typemill/js/highlight/styles/grayscale.css new file mode 100644 index 0000000..5376f34 --- /dev/null +++ b/themes/typemill/js/highlight/styles/grayscale.css @@ -0,0 +1,101 @@ +/* + +grayscale style (c) MY Sun + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #333; + background: #fff; +} + +.hljs-comment, +.hljs-quote { + color: #777; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-subst { + color: #333; + font-weight: bold; +} + +.hljs-number, +.hljs-literal { + color: #777; +} + +.hljs-string, +.hljs-doctag, +.hljs-formula { + color: #333; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAJ0lEQVQIW2O8e/fufwYGBgZBQUEQxcCIIfDu3Tuwivfv30NUoAsAALHpFMMLqZlPAAAAAElFTkSuQmCC) repeat; +} + +.hljs-title, +.hljs-section, +.hljs-selector-id { + color: #000; + font-weight: bold; +} + +.hljs-subst { + font-weight: normal; +} + +.hljs-class .hljs-title, +.hljs-type, +.hljs-name { + color: #333; + font-weight: bold; +} + +.hljs-tag { + color: #333; +} + +.hljs-regexp { + color: #333; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAICAYAAADA+m62AAAAPUlEQVQYV2NkQAN37979r6yszIgujiIAU4RNMVwhuiQ6H6wQl3XI4oy4FMHcCJPHcDS6J2A2EqUQpJhohQDexSef15DBCwAAAABJRU5ErkJggg==) repeat; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAKElEQVQIW2NkQAO7d+/+z4gsBhJwdXVlhAvCBECKwIIwAbhKZBUwBQA6hBpm5efZsgAAAABJRU5ErkJggg==) repeat; +} + +.hljs-built_in, +.hljs-builtin-name { + color: #000; + text-decoration: underline; +} + +.hljs-meta { + color: #999; + font-weight: bold; +} + +.hljs-deletion { + color: #fff; + background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAADCAYAAABS3WWCAAAAE0lEQVQIW2MMDQ39zzhz5kwIAQAyxweWgUHd1AAAAABJRU5ErkJggg==) repeat; +} + +.hljs-addition { + color: #000; + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAALUlEQVQYV2N89+7dfwYk8P79ewZBQUFkIQZGOiu6e/cuiptQHAPl0NtNxAQBAM97Oejj3Dg7AAAAAElFTkSuQmCC) repeat; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/gruvbox-dark.css b/themes/typemill/js/highlight/styles/gruvbox-dark.css new file mode 100644 index 0000000..f563811 --- /dev/null +++ b/themes/typemill/js/highlight/styles/gruvbox-dark.css @@ -0,0 +1,108 @@ +/* + +Gruvbox style (dark) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #282828; +} + +.hljs, +.hljs-subst { + color: #ebdbb2; +} + +/* Gruvbox Red */ +.hljs-deletion, +.hljs-formula, +.hljs-keyword, +.hljs-link, +.hljs-selector-tag { + color: #fb4934; +} + +/* Gruvbox Blue */ +.hljs-built_in, +.hljs-emphasis, +.hljs-name, +.hljs-quote, +.hljs-strong, +.hljs-title, +.hljs-variable { + color: #83a598; +} + +/* Gruvbox Yellow */ +.hljs-attr, +.hljs-params, +.hljs-template-tag, +.hljs-type { + color: #fabd2f; +} + +/* Gruvbox Purple */ +.hljs-builtin-name, +.hljs-doctag, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +/* Gruvbox Orange */ +.hljs-code, +.hljs-meta, +.hljs-regexp, +.hljs-selector-id, +.hljs-template-variable { + color: #fe8019; +} + +/* Gruvbox Green */ +.hljs-addition, +.hljs-meta-string, +.hljs-section, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-string, +.hljs-symbol { + color: #b8bb26; +} + +/* Gruvbox Aqua */ +.hljs-attribute, +.hljs-bullet, +.hljs-class, +.hljs-function, +.hljs-function .hljs-keyword, +.hljs-meta-keyword, +.hljs-selector-pseudo, +.hljs-tag { + color: #8ec07c; +} + +/* Gruvbox Gray */ +.hljs-comment { + color: #928374; +} + +/* Gruvbox Purple */ +.hljs-link_label, +.hljs-literal, +.hljs-number { + color: #d3869b; +} + +.hljs-comment, +.hljs-emphasis { + font-style: italic; +} + +.hljs-section, +.hljs-strong, +.hljs-tag { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/gruvbox-light.css b/themes/typemill/js/highlight/styles/gruvbox-light.css new file mode 100644 index 0000000..ff45468 --- /dev/null +++ b/themes/typemill/js/highlight/styles/gruvbox-light.css @@ -0,0 +1,108 @@ +/* + +Gruvbox style (light) (c) Pavel Pertsev (original style at https://github.com/morhetz/gruvbox) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fbf1c7; +} + +.hljs, +.hljs-subst { + color: #3c3836; +} + +/* Gruvbox Red */ +.hljs-deletion, +.hljs-formula, +.hljs-keyword, +.hljs-link, +.hljs-selector-tag { + color: #9d0006; +} + +/* Gruvbox Blue */ +.hljs-built_in, +.hljs-emphasis, +.hljs-name, +.hljs-quote, +.hljs-strong, +.hljs-title, +.hljs-variable { + color: #076678; +} + +/* Gruvbox Yellow */ +.hljs-attr, +.hljs-params, +.hljs-template-tag, +.hljs-type { + color: #b57614; +} + +/* Gruvbox Purple */ +.hljs-builtin-name, +.hljs-doctag, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +/* Gruvbox Orange */ +.hljs-code, +.hljs-meta, +.hljs-regexp, +.hljs-selector-id, +.hljs-template-variable { + color: #af3a03; +} + +/* Gruvbox Green */ +.hljs-addition, +.hljs-meta-string, +.hljs-section, +.hljs-selector-attr, +.hljs-selector-class, +.hljs-string, +.hljs-symbol { + color: #79740e; +} + +/* Gruvbox Aqua */ +.hljs-attribute, +.hljs-bullet, +.hljs-class, +.hljs-function, +.hljs-function .hljs-keyword, +.hljs-meta-keyword, +.hljs-selector-pseudo, +.hljs-tag { + color: #427b58; +} + +/* Gruvbox Gray */ +.hljs-comment { + color: #928374; +} + +/* Gruvbox Purple */ +.hljs-link_label, +.hljs-literal, +.hljs-number { + color: #8f3f71; +} + +.hljs-comment, +.hljs-emphasis { + font-style: italic; +} + +.hljs-section, +.hljs-strong, +.hljs-tag { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/hopscotch.css b/themes/typemill/js/highlight/styles/hopscotch.css new file mode 100644 index 0000000..32e60d2 --- /dev/null +++ b/themes/typemill/js/highlight/styles/hopscotch.css @@ -0,0 +1,83 @@ +/* + * Hopscotch + * by Jan T. Sott + * https://github.com/idleberg/Hopscotch + * + * This work is licensed under the Creative Commons CC0 1.0 Universal License + */ + +/* Comment */ +.hljs-comment, +.hljs-quote { + color: #989498; +} + +/* Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-attribute, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-deletion { + color: #dd464c; +} + +/* Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params { + color: #fd8b19; +} + +/* Yellow */ +.hljs-class .hljs-title { + color: #fdcc59; +} + +/* Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #8fc13e; +} + +/* Aqua */ +.hljs-meta { + color: #149b93; +} + +/* Blue */ +.hljs-function, +.hljs-section, +.hljs-title { + color: #1290bf; +} + +/* Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #c85e7c; +} + +.hljs { + display: block; + background: #322931; + color: #b9b5b8; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/hybrid.css b/themes/typemill/js/highlight/styles/hybrid.css new file mode 100644 index 0000000..29735a1 --- /dev/null +++ b/themes/typemill/js/highlight/styles/hybrid.css @@ -0,0 +1,102 @@ +/* + +vim-hybrid theme by w0ng (https://github.com/w0ng/vim-hybrid) + +*/ + +/*background color*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #1d1f21; +} + +/*selection color*/ +.hljs::selection, +.hljs span::selection { + background: #373b41; +} + +.hljs::-moz-selection, +.hljs span::-moz-selection { + background: #373b41; +} + +/*foreground color*/ +.hljs { + color: #c5c8c6; +} + +/*color: fg_yellow*/ +.hljs-title, +.hljs-name { + color: #f0c674; +} + +/*color: fg_comment*/ +.hljs-comment, +.hljs-meta, +.hljs-meta .hljs-keyword { + color: #707880; +} + +/*color: fg_red*/ +.hljs-number, +.hljs-symbol, +.hljs-literal, +.hljs-deletion, +.hljs-link { + color: #cc6666 +} + +/*color: fg_green*/ +.hljs-string, +.hljs-doctag, +.hljs-addition, +.hljs-regexp, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #b5bd68; +} + +/*color: fg_purple*/ +.hljs-attribute, +.hljs-code, +.hljs-selector-id { + color: #b294bb; +} + +/*color: fg_blue*/ +.hljs-keyword, +.hljs-selector-tag, +.hljs-bullet, +.hljs-tag { + color: #81a2be; +} + +/*color: fg_aqua*/ +.hljs-subst, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8abeb7; +} + +/*color: fg_orange*/ +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-quote, +.hljs-section, +.hljs-selector-class { + color: #de935f; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/idea.css b/themes/typemill/js/highlight/styles/idea.css new file mode 100644 index 0000000..3bf1892 --- /dev/null +++ b/themes/typemill/js/highlight/styles/idea.css @@ -0,0 +1,97 @@ +/* + +Intellij Idea-like styling (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #000; + background: #fff; +} + +.hljs-subst, +.hljs-title { + font-weight: normal; + color: #000; +} + +.hljs-comment, +.hljs-quote { + color: #808080; + font-style: italic; +} + +.hljs-meta { + color: #808000; +} + +.hljs-tag { + background: #efefef; +} + +.hljs-section, +.hljs-name, +.hljs-literal, +.hljs-keyword, +.hljs-selector-tag, +.hljs-type, +.hljs-selector-id, +.hljs-selector-class { + font-weight: bold; + color: #000080; +} + +.hljs-attribute, +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: bold; + color: #0000ff; +} + +.hljs-number, +.hljs-regexp, +.hljs-link { + font-weight: normal; +} + +.hljs-string { + color: #008000; + font-weight: bold; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-formula { + color: #000; + background: #d0eded; + font-style: italic; +} + +.hljs-doctag { + text-decoration: underline; +} + +.hljs-variable, +.hljs-template-variable { + color: #660e7a; +} + +.hljs-addition { + background: #baeeba; +} + +.hljs-deletion { + background: #ffc8bd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/ir-black.css b/themes/typemill/js/highlight/styles/ir-black.css new file mode 100644 index 0000000..bd4c755 --- /dev/null +++ b/themes/typemill/js/highlight/styles/ir-black.css @@ -0,0 +1,73 @@ +/* + IR_Black style (c) Vasily Mikhailitchenko +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000; + color: #f8f8f8; +} + +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #7c7c7c; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-tag, +.hljs-name { + color: #96cbfe; +} + +.hljs-attribute, +.hljs-selector-id { + color: #ffffb6; +} + +.hljs-string, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition { + color: #a8ff60; +} + +.hljs-subst { + color: #daefa3; +} + +.hljs-regexp, +.hljs-link { + color: #e9c062; +} + +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-doctag { + color: #ffffb6; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-variable, +.hljs-template-variable, +.hljs-literal { + color: #c6c5fe; +} + +.hljs-number, +.hljs-deletion { + color:#ff73fd; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/kimbie.dark.css b/themes/typemill/js/highlight/styles/kimbie.dark.css new file mode 100644 index 0000000..d139cb5 --- /dev/null +++ b/themes/typemill/js/highlight/styles/kimbie.dark.css @@ -0,0 +1,74 @@ +/* + Name: Kimbie (dark) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ + +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #d6baad; +} + +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958; +} + +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32; +} + +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431; +} + +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a; +} + +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a; +} + +.hljs { + display: block; + overflow-x: auto; + background: #221a0f; + color: #d3af86; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/kimbie.light.css b/themes/typemill/js/highlight/styles/kimbie.light.css new file mode 100644 index 0000000..04ff6ed --- /dev/null +++ b/themes/typemill/js/highlight/styles/kimbie.light.css @@ -0,0 +1,74 @@ +/* + Name: Kimbie (light) + Author: Jan T. Sott + License: Creative Commons Attribution-ShareAlike 4.0 Unported License + URL: https://github.com/idleberg/Kimbie-highlight.js +*/ + +/* Kimbie Comment */ +.hljs-comment, +.hljs-quote { + color: #a57a4c; +} + +/* Kimbie Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-meta { + color: #dc3958; +} + +/* Kimbie Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion, +.hljs-link { + color: #f79a32; +} + +/* Kimbie Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #f06431; +} + +/* Kimbie Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #889b4a; +} + +/* Kimbie Purple */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-function { + color: #98676a; +} + +.hljs { + display: block; + overflow-x: auto; + background: #fbebd4; + color: #84613d; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/magula.css b/themes/typemill/js/highlight/styles/magula.css new file mode 100644 index 0000000..44dee5e --- /dev/null +++ b/themes/typemill/js/highlight/styles/magula.css @@ -0,0 +1,70 @@ +/* +Description: Magula style for highligh.js +Author: Ruslan Keba +Website: http://rukeba.com/ +Version: 1.0 +Date: 2009-01-03 +Music: Aphex Twin / Xtal +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background-color: #f4f4f4; +} + +.hljs, +.hljs-subst { + color: black; +} + +.hljs-string, +.hljs-title, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #050; +} + +.hljs-comment, +.hljs-quote { + color: #777; +} + +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-type, +.hljs-link { + color: #800; +} + +.hljs-deletion, +.hljs-meta { + color: #00e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-tag, +.hljs-name { + font-weight: bold; + color: navy; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/mono-blue.css b/themes/typemill/js/highlight/styles/mono-blue.css new file mode 100644 index 0000000..884c97c --- /dev/null +++ b/themes/typemill/js/highlight/styles/mono-blue.css @@ -0,0 +1,59 @@ +/* + Five-color theme from a single blue hue. +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #eaeef3; +} + +.hljs { + color: #00193a; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-title, +.hljs-section, +.hljs-doctag, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-comment { + color: #738191; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-literal, +.hljs-type, +.hljs-addition, +.hljs-tag, +.hljs-quote, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #0048ab; +} + +.hljs-meta, +.hljs-subst, +.hljs-symbol, +.hljs-regexp, +.hljs-attribute, +.hljs-deletion, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-bullet { + color: #4c81c9; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/themes/typemill/js/highlight/styles/monokai-sublime.css b/themes/typemill/js/highlight/styles/monokai-sublime.css new file mode 100644 index 0000000..2864170 --- /dev/null +++ b/themes/typemill/js/highlight/styles/monokai-sublime.css @@ -0,0 +1,83 @@ +/* + +Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #23241f; +} + +.hljs, +.hljs-tag, +.hljs-subst { + color: #f8f8f2; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal, +.hljs-link { + color: #ae81ff; +} + +.hljs-code, +.hljs-title, +.hljs-section, +.hljs-selector-class { + color: #a6e22e; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-name, +.hljs-attr { + color: #f92672; +} + +.hljs-symbol, +.hljs-attribute { + color: #66d9ef; +} + +.hljs-params, +.hljs-class .hljs-title { + color: #f8f8f2; +} + +.hljs-string, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-variable { + color: #e6db74; +} + +.hljs-comment, +.hljs-deletion, +.hljs-meta { + color: #75715e; +} diff --git a/themes/typemill/js/highlight/styles/monokai.css b/themes/typemill/js/highlight/styles/monokai.css new file mode 100644 index 0000000..775d53f --- /dev/null +++ b/themes/typemill/js/highlight/styles/monokai.css @@ -0,0 +1,70 @@ +/* +Monokai style - ported by Luigi Maselli - http://grigio.org +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #272822; color: #ddd; +} + +.hljs-tag, +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-strong, +.hljs-name { + color: #f92672; +} + +.hljs-code { + color: #66d9ef; +} + +.hljs-class .hljs-title { + color: white; +} + +.hljs-attribute, +.hljs-symbol, +.hljs-regexp, +.hljs-link { + color: #bf79db; +} + +.hljs-string, +.hljs-bullet, +.hljs-subst, +.hljs-title, +.hljs-section, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #a6e22e; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #75715e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-selector-id { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/obsidian.css b/themes/typemill/js/highlight/styles/obsidian.css new file mode 100644 index 0000000..356630f --- /dev/null +++ b/themes/typemill/js/highlight/styles/obsidian.css @@ -0,0 +1,88 @@ +/** + * Obsidian style + * ported by Alexander Marenin (http://github.com/ioncreature) + */ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #282b2e; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-selector-id { + color: #93c763; +} + +.hljs-number { + color: #ffcd22; +} + +.hljs { + color: #e0e2e4; +} + +.hljs-attribute { + color: #668bb0; +} + +.hljs-code, +.hljs-class .hljs-title, +.hljs-section { + color: white; +} + +.hljs-regexp, +.hljs-link { + color: #d39745; +} + +.hljs-meta { + color: #557182; +} + +.hljs-tag, +.hljs-name, +.hljs-bullet, +.hljs-subst, +.hljs-emphasis, +.hljs-type, +.hljs-built_in, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable { + color: #8cbbad; +} + +.hljs-string, +.hljs-symbol { + color: #ec7600; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion { + color: #818e96; +} + +.hljs-selector-class { + color: #A082BD +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/ocean.css b/themes/typemill/js/highlight/styles/ocean.css new file mode 100644 index 0000000..5901581 --- /dev/null +++ b/themes/typemill/js/highlight/styles/ocean.css @@ -0,0 +1,74 @@ +/* Ocean Dark Theme */ +/* https://github.com/gavsiu */ +/* Original theme - https://github.com/chriskempson/base16 */ + +/* Ocean Comment */ +.hljs-comment, +.hljs-quote { + color: #65737e; +} + +/* Ocean Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #bf616a; +} + +/* Ocean Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #d08770; +} + +/* Ocean Yellow */ +.hljs-attribute { + color: #ebcb8b; +} + +/* Ocean Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #a3be8c; +} + +/* Ocean Blue */ +.hljs-title, +.hljs-section { + color: #8fa1b3; +} + +/* Ocean Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b48ead; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2b303b; + color: #c0c5ce; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/paraiso-dark.css b/themes/typemill/js/highlight/styles/paraiso-dark.css new file mode 100644 index 0000000..e729240 --- /dev/null +++ b/themes/typemill/js/highlight/styles/paraiso-dark.css @@ -0,0 +1,72 @@ +/* + Paraíso (dark) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ + +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #8d8687; +} + +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155; +} + +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15; +} + +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418; +} + +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685; +} + +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2f1e2e; + color: #a39e9b; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/paraiso-light.css b/themes/typemill/js/highlight/styles/paraiso-light.css new file mode 100644 index 0000000..944857c --- /dev/null +++ b/themes/typemill/js/highlight/styles/paraiso-light.css @@ -0,0 +1,72 @@ +/* + Paraíso (light) + Created by Jan T. Sott (http://github.com/idleberg) + Inspired by the art of Rubens LP (http://www.rubenslp.com.br) +*/ + +/* Paraíso Comment */ +.hljs-comment, +.hljs-quote { + color: #776e71; +} + +/* Paraíso Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-link, +.hljs-meta { + color: #ef6155; +} + +/* Paraíso Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-deletion { + color: #f99b15; +} + +/* Paraíso Yellow */ +.hljs-title, +.hljs-section, +.hljs-attribute { + color: #fec418; +} + +/* Paraíso Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #48b685; +} + +/* Paraíso Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #815ba4; +} + +.hljs { + display: block; + overflow-x: auto; + background: #e7e9db; + color: #4f424c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/pojoaque.css b/themes/typemill/js/highlight/styles/pojoaque.css new file mode 100644 index 0000000..2e07847 --- /dev/null +++ b/themes/typemill/js/highlight/styles/pojoaque.css @@ -0,0 +1,83 @@ +/* + +Pojoaque Style by Jason Tate +http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html +Based on Solarized Style from http://ethanschoonover.com/solarized + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + color: #dccf8f; + background: url(./pojoaque.jpg) repeat scroll left top #181914; +} + +.hljs-comment, +.hljs-quote { + color: #586e75; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-addition { + color: #b64926; +} + +.hljs-number, +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #468966; +} + +.hljs-title, +.hljs-section, +.hljs-built_in, +.hljs-name { + color: #ffb03b; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type, +.hljs-tag { + color: #b58900; +} + +.hljs-attribute { + color: #b89859; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link, +.hljs-subst, +.hljs-meta { + color: #cb4b16; +} + +.hljs-deletion { + color: #dc322f; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #d3a60c; +} + +.hljs-formula { + background: #073642; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/pojoaque.jpg b/themes/typemill/js/highlight/styles/pojoaque.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9c07d4ab40b6d77e90ff69f0012bcd33b21d31c3 GIT binary patch literal 1186 zcmZXSe^8Tk9LK-kXFs3)f@f?)Cddzw3v4wdZyXQ;4x3=;Ja*N#%n9ik!UGmt9H3k0 zJST|5jOc(ID$FQt3C?jQZBws#kXolO1lg9Pba9BB=Q+UEBX!nY@6Uhl&+ofe$Q$y5 z@ci`~)&qzDP(lOiQ5p?p z(`j^e7!yUAVHk%K#^GQXn?s0=VLYCI$HRoe=xCuZ>A6A3@sxEP#XqNFpIb=0)KQ#Nss_tD17;m4@$JKL;LR|K|QF3f%!L5+s(9Ft8SQ zG|~pGpEGFW5Z|OA)-O@mNHy-g@7m8JTf?kl@vUKBGmw)Y*9sDRNr3PN!IKefWaydTe1D zjzpyzPnD3}hBNaS4aFX7=0&~I*Hu7#4au@qVBglH#-m;QFOx_`=j z{EqRY#Eh*yoWP^pa4H>8GH{rO?!_+xwL0(k4yL^D%^nBkJ*UI;Lx;ped8d|f*S_s@ z3~ilcRC(&NT#9Gn#UD;o^EYSMXDMf%XcUi3>;WXXD-QX3P9wMyP7eA&RS{)h5{??W3^Rq=goFJ>?lA~J- zdYe>!xvYLW*fPT0RK7wsJRg^?x#W1*GP9_f`6t>QD_X>0d!owyN>nO2?U5}|3?hX_UZYT@^>S!9eB~bZ9U`q;`U)@L670o1g z`Hd}h<_WRvUc|n*%v4Hbb-4tJD40iyF^q%g*&!6>hkYDvi-{Uc4yTM zzcthN4Z{ka!+F_KzYV#yWi;c^X^q6g`pD8cp?$Kl?hCz0s^a|mH%P!CF%*<6k^~i` zT5Mi-t5-frUcHkk^Qh}+N)Kz1&Bi95`oNc|quI>tUi~BY>xcF9(%tv2i{G6kE9*q~ qCoAGl20`)w0rdgp9H%Q=M5|p`hOhFz6$I%Y&ncY8>c?7PXyh+SL&XXJ literal 0 HcmV?d00001 diff --git a/themes/typemill/js/highlight/styles/purebasic.css b/themes/typemill/js/highlight/styles/purebasic.css new file mode 100644 index 0000000..5ce9b9e --- /dev/null +++ b/themes/typemill/js/highlight/styles/purebasic.css @@ -0,0 +1,96 @@ +/* + +PureBASIC native IDE style ( version 1.0 - April 2016 ) + +by Tristano Ajmone + +Public Domain + +NOTE_1: PureBASIC code syntax highlighting only applies the following classes: + .hljs-comment + .hljs-function + .hljs-keywords + .hljs-string + .hljs-symbol + + Other classes are added here for the benefit of styling other languages with the look and feel of PureBASIC native IDE style. + If you need to customize a stylesheet for PureBASIC only, remove all non-relevant classes -- PureBASIC-related classes are followed by + a "--- used for PureBASIC ... ---" comment on same line. + +NOTE_2: Color names provided in comments were derived using "Name that Color" online tool: + http://chir.ag/projects/name-that-color +*/ + +.hljs { /* Common set of rules required by highlight.js (don'r remove!) */ + display: block; + overflow-x: auto; + padding: 0.5em; + background: #FFFFDF; /* Half and Half (approx.) */ +/* --- Uncomment to add PureBASIC native IDE styled font! + font-family: Consolas; +*/ +} + +.hljs, /* --- used for PureBASIC base color --- */ +.hljs-type, /* --- used for PureBASIC Procedures return type --- */ +.hljs-function, /* --- used for wrapping PureBASIC Procedures definitions --- */ +.hljs-name, +.hljs-number, +.hljs-attr, +.hljs-params, +.hljs-subst { + color: #000000; /* Black */ +} + +.hljs-comment, /* --- used for PureBASIC Comments --- */ +.hljs-regexp, +.hljs-section, +.hljs-selector-pseudo, +.hljs-addition { + color: #00AAAA; /* Persian Green (approx.) */ +} + +.hljs-title, /* --- used for PureBASIC Procedures Names --- */ +.hljs-tag, +.hljs-variable, +.hljs-code { + color: #006666; /* Blue Stone (approx.) */ +} + +.hljs-keyword, /* --- used for PureBASIC Keywords --- */ +.hljs-class, +.hljs-meta-keyword, +.hljs-selector-class, +.hljs-built_in, +.hljs-builtin-name { + color: #006666; /* Blue Stone (approx.) */ + font-weight: bold; +} + +.hljs-string, /* --- used for PureBASIC Strings --- */ +.hljs-selector-attr { + color: #0080FF; /* Azure Radiance (approx.) */ +} + +.hljs-symbol, /* --- used for PureBASIC Constants --- */ +.hljs-link, +.hljs-deletion, +.hljs-attribute { + color: #924B72; /* Cannon Pink (approx.) */ +} + +.hljs-meta, +.hljs-literal, +.hljs-selector-id { + color: #924B72; /* Cannon Pink (approx.) */ + font-weight: bold; +} + +.hljs-strong, +.hljs-name { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/themes/typemill/js/highlight/styles/qtcreator_dark.css b/themes/typemill/js/highlight/styles/qtcreator_dark.css new file mode 100644 index 0000000..7aa56a3 --- /dev/null +++ b/themes/typemill/js/highlight/styles/qtcreator_dark.css @@ -0,0 +1,83 @@ +/* + +Qt Creator dark color scheme + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000000; +} + +.hljs, +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #aaaaaa; +} + +.hljs-strong, +.hljs-emphasis { + color: #a8a8a2; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #ff55ff; +} + +.hljs-code +.hljs-selector-class { + color: #aaaaff; +} + +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #ffff55; +} + +.hljs-attribute { + color: #ff5555; +} + +.hljs-variable, +.hljs-params, +.hljs-class .hljs-title { + color: #8888ff; +} + +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #ff55ff; +} + +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #55ffff; +} diff --git a/themes/typemill/js/highlight/styles/qtcreator_light.css b/themes/typemill/js/highlight/styles/qtcreator_light.css new file mode 100644 index 0000000..1efa2c6 --- /dev/null +++ b/themes/typemill/js/highlight/styles/qtcreator_light.css @@ -0,0 +1,83 @@ +/* + +Qt Creator light color scheme + +*/ + + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #ffffff; +} + +.hljs, +.hljs-subst, +.hljs-tag, +.hljs-title { + color: #000000; +} + +.hljs-strong, +.hljs-emphasis { + color: #000000; +} + +.hljs-bullet, +.hljs-quote, +.hljs-number, +.hljs-regexp, +.hljs-literal { + color: #000080; +} + +.hljs-code +.hljs-selector-class { + color: #800080; +} + +.hljs-emphasis, +.hljs-stronge, +.hljs-type { + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-function, +.hljs-section, +.hljs-symbol, +.hljs-name { + color: #808000; +} + +.hljs-attribute { + color: #800000; +} + +.hljs-variable, +.hljs-params, +.hljs-class .hljs-title { + color: #0055AF; +} + +.hljs-string, +.hljs-selector-id, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-type, +.hljs-built_in, +.hljs-builtin-name, +.hljs-template-tag, +.hljs-template-variable, +.hljs-addition, +.hljs-link { + color: #008000; +} + +.hljs-comment, +.hljs-meta, +.hljs-deletion { + color: #008000; +} diff --git a/themes/typemill/js/highlight/styles/railscasts.css b/themes/typemill/js/highlight/styles/railscasts.css new file mode 100644 index 0000000..008cdc5 --- /dev/null +++ b/themes/typemill/js/highlight/styles/railscasts.css @@ -0,0 +1,106 @@ +/* + +Railscasts-like style (c) Visoft, Inc. (Damien White) + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #232323; + color: #e6e1dc; +} + +.hljs-comment, +.hljs-quote { + color: #bc9458; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag { + color: #c26230; +} + +.hljs-string, +.hljs-number, +.hljs-regexp, +.hljs-variable, +.hljs-template-variable { + color: #a5c261; +} + +.hljs-subst { + color: #519f50; +} + +.hljs-tag, +.hljs-name { + color: #e8bf6a; +} + +.hljs-type { + color: #da4939; +} + + +.hljs-symbol, +.hljs-bullet, +.hljs-built_in, +.hljs-builtin-name, +.hljs-attr, +.hljs-link { + color: #6d9cbe; +} + +.hljs-params { + color: #d0d0ff; +} + +.hljs-attribute { + color: #cda869; +} + +.hljs-meta { + color: #9b859d; +} + +.hljs-title, +.hljs-section { + color: #ffc66d; +} + +.hljs-addition { + background-color: #144212; + color: #e6e1dc; + display: inline-block; + width: 100%; +} + +.hljs-deletion { + background-color: #600; + color: #e6e1dc; + display: inline-block; + width: 100%; +} + +.hljs-selector-class { + color: #9b703f; +} + +.hljs-selector-id { + color: #8b98ab; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-link { + text-decoration: underline; +} diff --git a/themes/typemill/js/highlight/styles/rainbow.css b/themes/typemill/js/highlight/styles/rainbow.css new file mode 100644 index 0000000..905eb8e --- /dev/null +++ b/themes/typemill/js/highlight/styles/rainbow.css @@ -0,0 +1,85 @@ +/* + +Style with support for rainbow parens + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #474949; + color: #d1d9e1; +} + + +.hljs-comment, +.hljs-quote { + color: #969896; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-type, +.hljs-addition { + color: #cc99cc; +} + +.hljs-number, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #f99157; +} + +.hljs-string, +.hljs-doctag, +.hljs-regexp { + color: #8abeb7; +} + +.hljs-title, +.hljs-name, +.hljs-section, +.hljs-built_in { + color: #b5bd68; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-selector-id, +.hljs-class .hljs-title { + color: #ffcc66; +} + +.hljs-section, +.hljs-name, +.hljs-strong { + font-weight: bold; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-link { + color: #f99157; +} + +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + background: #eee8d5; +} + +.hljs-attr, +.hljs-attribute { + color: #81a2be; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/themes/typemill/js/highlight/styles/school-book.css b/themes/typemill/js/highlight/styles/school-book.css new file mode 100644 index 0000000..964b51d --- /dev/null +++ b/themes/typemill/js/highlight/styles/school-book.css @@ -0,0 +1,72 @@ +/* + +School Book style from goldblog.com.ua (c) Zaripov Yura + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 15px 0.5em 0.5em 30px; + font-size: 11px; + line-height:16px; +} + +pre{ + background:#f6f6ae url(./school-book.png); + border-top: solid 2px #d2e8b9; + border-bottom: solid 1px #d2e8b9; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color:#005599; + font-weight:bold; +} + +.hljs, +.hljs-subst { + color: #3e5915; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-symbol, +.hljs-bullet, +.hljs-attribute, +.hljs-built_in, +.hljs-builtin-name, +.hljs-addition, +.hljs-variable, +.hljs-template-tag, +.hljs-template-variable, +.hljs-link { + color: #2c009f; +} + +.hljs-comment, +.hljs-quote, +.hljs-deletion, +.hljs-meta { + color: #e60415; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal, +.hljs-doctag, +.hljs-title, +.hljs-section, +.hljs-type, +.hljs-name, +.hljs-selector-id, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/themes/typemill/js/highlight/styles/school-book.png b/themes/typemill/js/highlight/styles/school-book.png new file mode 100644 index 0000000000000000000000000000000000000000..956e9790a0e2c079b3d568348ff3accd1d9cac30 GIT binary patch literal 486 zcmeAS@N?(olHy`uVBq!ia0y~yV7?7x3vjRjNjAS6Ga$v1?&#~tz_9*=IcwKTAYZb? zHKHUqKdq!Zu_%?nF(p4KRlzeiF+DXXH8G{K@MNkD0|R4)r;B4q#jQ7Ycl#YS5MfK$ z?b^fh#qmaEhFDxvyThwfhdfkOPApt1lr{NA;Vr%uzxJuVIyzm(ed_8_-0$LLU})H&o5Re&aDemE>EG#(|F^t9_pa-H z_Mf?rMVrs}-M?S|?ZdY@c6s41zy8~}@a{v&#Ea7V)wJ$+#K|u$5UvWCdFLwGac}6w{_s*=8A6L7Rfc|9gboFyt I=akR{0OLZ+qyPW_ literal 0 HcmV?d00001 diff --git a/themes/typemill/js/highlight/styles/solarized-dark.css b/themes/typemill/js/highlight/styles/solarized-dark.css new file mode 100644 index 0000000..b4c0da1 --- /dev/null +++ b/themes/typemill/js/highlight/styles/solarized-dark.css @@ -0,0 +1,84 @@ +/* + +Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #002b36; + color: #839496; +} + +.hljs-comment, +.hljs-quote { + color: #586e75; +} + +/* Solarized Green */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #859900; +} + +/* Solarized Cyan */ +.hljs-number, +.hljs-string, +.hljs-meta .hljs-meta-string, +.hljs-literal, +.hljs-doctag, +.hljs-regexp { + color: #2aa198; +} + +/* Solarized Blue */ +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #268bd2; +} + +/* Solarized Yellow */ +.hljs-attribute, +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type { + color: #b58900; +} + +/* Solarized Orange */ +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-link { + color: #cb4b16; +} + +/* Solarized Red */ +.hljs-built_in, +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + background: #073642; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/solarized-light.css b/themes/typemill/js/highlight/styles/solarized-light.css new file mode 100644 index 0000000..fdcfcc7 --- /dev/null +++ b/themes/typemill/js/highlight/styles/solarized-light.css @@ -0,0 +1,84 @@ +/* + +Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fdf6e3; + color: #657b83; +} + +.hljs-comment, +.hljs-quote { + color: #93a1a1; +} + +/* Solarized Green */ +.hljs-keyword, +.hljs-selector-tag, +.hljs-addition { + color: #859900; +} + +/* Solarized Cyan */ +.hljs-number, +.hljs-string, +.hljs-meta .hljs-meta-string, +.hljs-literal, +.hljs-doctag, +.hljs-regexp { + color: #2aa198; +} + +/* Solarized Blue */ +.hljs-title, +.hljs-section, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class { + color: #268bd2; +} + +/* Solarized Yellow */ +.hljs-attribute, +.hljs-attr, +.hljs-variable, +.hljs-template-variable, +.hljs-class .hljs-title, +.hljs-type { + color: #b58900; +} + +/* Solarized Orange */ +.hljs-symbol, +.hljs-bullet, +.hljs-subst, +.hljs-meta, +.hljs-meta .hljs-keyword, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-link { + color: #cb4b16; +} + +/* Solarized Red */ +.hljs-built_in, +.hljs-deletion { + color: #dc322f; +} + +.hljs-formula { + background: #eee8d5; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/sunburst.css b/themes/typemill/js/highlight/styles/sunburst.css new file mode 100644 index 0000000..f56dd5e --- /dev/null +++ b/themes/typemill/js/highlight/styles/sunburst.css @@ -0,0 +1,102 @@ +/* + +Sunburst-like style (c) Vasily Polovnyov + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #000; + color: #f8f8f8; +} + +.hljs-comment, +.hljs-quote { + color: #aeaeae; + font-style: italic; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-type { + color: #e28964; +} + +.hljs-string { + color: #65b042; +} + +.hljs-subst { + color: #daefa3; +} + +.hljs-regexp, +.hljs-link { + color: #e9c062; +} + +.hljs-title, +.hljs-section, +.hljs-tag, +.hljs-name { + color: #89bdff; +} + +.hljs-class .hljs-title, +.hljs-doctag { + text-decoration: underline; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-number { + color: #3387cc; +} + +.hljs-params, +.hljs-variable, +.hljs-template-variable { + color: #3e87e3; +} + +.hljs-attribute { + color: #cda869; +} + +.hljs-meta { + color: #8996a8; +} + +.hljs-formula { + background-color: #0e2231; + color: #f8f8f8; + font-style: italic; +} + +.hljs-addition { + background-color: #253b22; + color: #f8f8f8; +} + +.hljs-deletion { + background-color: #420e09; + color: #f8f8f8; +} + +.hljs-selector-class { + color: #9b703f; +} + +.hljs-selector-id { + color: #8b98ab; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/tomorrow-night-blue.css b/themes/typemill/js/highlight/styles/tomorrow-night-blue.css new file mode 100644 index 0000000..78e59cc --- /dev/null +++ b/themes/typemill/js/highlight/styles/tomorrow-night-blue.css @@ -0,0 +1,75 @@ +/* Tomorrow Night Blue Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #7285b7; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #ff9da4; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #ffc58f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #ffeead; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #d1f1a9; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #bbdaff; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #ebbbff; +} + +.hljs { + display: block; + overflow-x: auto; + background: #002451; + color: white; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/tomorrow-night-bright.css b/themes/typemill/js/highlight/styles/tomorrow-night-bright.css new file mode 100644 index 0000000..e05af8a --- /dev/null +++ b/themes/typemill/js/highlight/styles/tomorrow-night-bright.css @@ -0,0 +1,74 @@ +/* Tomorrow Night Bright Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #969896; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #d54e53; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #e78c45; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #e7c547; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #b9ca4a; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #7aa6da; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #c397d8; +} + +.hljs { + display: block; + overflow-x: auto; + background: black; + color: #eaeaea; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/tomorrow-night-eighties.css b/themes/typemill/js/highlight/styles/tomorrow-night-eighties.css new file mode 100644 index 0000000..08fd51c --- /dev/null +++ b/themes/typemill/js/highlight/styles/tomorrow-night-eighties.css @@ -0,0 +1,74 @@ +/* Tomorrow Night Eighties Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #999999; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #f2777a; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f99157; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #ffcc66; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #99cc99; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #6699cc; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #cc99cc; +} + +.hljs { + display: block; + overflow-x: auto; + background: #2d2d2d; + color: #cccccc; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/tomorrow-night.css b/themes/typemill/js/highlight/styles/tomorrow-night.css new file mode 100644 index 0000000..ddd270a --- /dev/null +++ b/themes/typemill/js/highlight/styles/tomorrow-night.css @@ -0,0 +1,75 @@ +/* Tomorrow Night Theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #969896; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #cc6666; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #de935f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #f0c674; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #b5bd68; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #81a2be; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #b294bb; +} + +.hljs { + display: block; + overflow-x: auto; + background: #1d1f21; + color: #c5c8c6; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/tomorrow.css b/themes/typemill/js/highlight/styles/tomorrow.css new file mode 100644 index 0000000..026a62f --- /dev/null +++ b/themes/typemill/js/highlight/styles/tomorrow.css @@ -0,0 +1,72 @@ +/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ + +/* Tomorrow Comment */ +.hljs-comment, +.hljs-quote { + color: #8e908c; +} + +/* Tomorrow Red */ +.hljs-variable, +.hljs-template-variable, +.hljs-tag, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-regexp, +.hljs-deletion { + color: #c82829; +} + +/* Tomorrow Orange */ +.hljs-number, +.hljs-built_in, +.hljs-builtin-name, +.hljs-literal, +.hljs-type, +.hljs-params, +.hljs-meta, +.hljs-link { + color: #f5871f; +} + +/* Tomorrow Yellow */ +.hljs-attribute { + color: #eab700; +} + +/* Tomorrow Green */ +.hljs-string, +.hljs-symbol, +.hljs-bullet, +.hljs-addition { + color: #718c00; +} + +/* Tomorrow Blue */ +.hljs-title, +.hljs-section { + color: #4271ae; +} + +/* Tomorrow Purple */ +.hljs-keyword, +.hljs-selector-tag { + color: #8959a8; +} + +.hljs { + display: block; + overflow-x: auto; + background: white; + color: #4d4d4c; + padding: 0.5em; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/vs.css b/themes/typemill/js/highlight/styles/vs.css new file mode 100644 index 0000000..c5d07d3 --- /dev/null +++ b/themes/typemill/js/highlight/styles/vs.css @@ -0,0 +1,68 @@ +/* + +Visual Studio-like style based on original C# coloring by Jason Diamond + +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: white; + color: black; +} + +.hljs-comment, +.hljs-quote, +.hljs-variable { + color: #008000; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-built_in, +.hljs-name, +.hljs-tag { + color: #00f; +} + +.hljs-string, +.hljs-title, +.hljs-section, +.hljs-attribute, +.hljs-literal, +.hljs-template-tag, +.hljs-template-variable, +.hljs-type, +.hljs-addition { + color: #a31515; +} + +.hljs-deletion, +.hljs-selector-attr, +.hljs-selector-pseudo, +.hljs-meta { + color: #2b91af; +} + +.hljs-doctag { + color: #808080; +} + +.hljs-attr { + color: #f00; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #00b0e8; +} + + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/js/highlight/styles/xcode.css b/themes/typemill/js/highlight/styles/xcode.css new file mode 100644 index 0000000..43dddad --- /dev/null +++ b/themes/typemill/js/highlight/styles/xcode.css @@ -0,0 +1,93 @@ +/* + +XCode style (c) Angel Garcia + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #fff; + color: black; +} + +.hljs-comment, +.hljs-quote { + color: #006a00; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-literal { + color: #aa0d91; +} + +.hljs-name { + color: #008; +} + +.hljs-variable, +.hljs-template-variable { + color: #660; +} + +.hljs-string { + color: #c41a16; +} + +.hljs-regexp, +.hljs-link { + color: #080; +} + +.hljs-title, +.hljs-tag, +.hljs-symbol, +.hljs-bullet, +.hljs-number, +.hljs-meta { + color: #1c00cf; +} + +.hljs-section, +.hljs-class .hljs-title, +.hljs-type, +.hljs-attr, +.hljs-built_in, +.hljs-builtin-name, +.hljs-params { + color: #5c2699; +} + +.hljs-attribute, +.hljs-subst { + color: #000; +} + +.hljs-formula { + background-color: #eee; + font-style: italic; +} + +.hljs-addition { + background-color: #baeeba; +} + +.hljs-deletion { + background-color: #ffc8bd; +} + +.hljs-selector-id, +.hljs-selector-class { + color: #9b703f; +} + +.hljs-doctag, +.hljs-strong { + font-weight: bold; +} + +.hljs-emphasis { + font-style: italic; +} diff --git a/themes/typemill/js/highlight/styles/xt256.css b/themes/typemill/js/highlight/styles/xt256.css new file mode 100644 index 0000000..58df82c --- /dev/null +++ b/themes/typemill/js/highlight/styles/xt256.css @@ -0,0 +1,92 @@ + +/* + xt256.css + + Contact: initbar [at] protonmail [dot] ch + : github.com/initbar +*/ + +.hljs { + display: block; + overflow-x: auto; + color: #eaeaea; + background: #000; + padding: 0.5; +} + +.hljs-subst { + color: #eaeaea; +} + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} + +.hljs-builtin-name, +.hljs-type { + color: #eaeaea; +} + +.hljs-params { + color: #da0000; +} + +.hljs-literal, +.hljs-number, +.hljs-name { + color: #ff0000; + font-weight: bolder; +} + +.hljs-comment { + color: #969896; +} + +.hljs-selector-id, +.hljs-quote { + color: #00ffff; +} + +.hljs-template-variable, +.hljs-variable, +.hljs-title { + color: #00ffff; + font-weight: bold; +} + +.hljs-selector-class, +.hljs-keyword, +.hljs-symbol { + color: #fff000; +} + +.hljs-string, +.hljs-bullet { + color: #00ff00; +} + +.hljs-tag, +.hljs-section { + color: #000fff; +} + +.hljs-selector-tag { + color: #000fff; + font-weight: bold; +} + +.hljs-attribute, +.hljs-built_in, +.hljs-regexp, +.hljs-link { + color: #ff00ff; +} + +.hljs-meta { + color: #fff; + font-weight: bolder; +} diff --git a/themes/typemill/js/highlight/styles/zenburn.css b/themes/typemill/js/highlight/styles/zenburn.css new file mode 100644 index 0000000..07be502 --- /dev/null +++ b/themes/typemill/js/highlight/styles/zenburn.css @@ -0,0 +1,80 @@ +/* + +Zenburn style from voldmar.ru (c) Vladimir Epifanov +based on dark.css by Ivan Sagalaev + +*/ + +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #3f3f3f; + color: #dcdcdc; +} + +.hljs-keyword, +.hljs-selector-tag, +.hljs-tag { + color: #e3ceab; +} + +.hljs-template-tag { + color: #dcdcdc; +} + +.hljs-number { + color: #8cd0d3; +} + +.hljs-variable, +.hljs-template-variable, +.hljs-attribute { + color: #efdcbc; +} + +.hljs-literal { + color: #efefaf; +} + +.hljs-subst { + color: #8f8f8f; +} + +.hljs-title, +.hljs-name, +.hljs-selector-id, +.hljs-selector-class, +.hljs-section, +.hljs-type { + color: #efef8f; +} + +.hljs-symbol, +.hljs-bullet, +.hljs-link { + color: #dca3a3; +} + +.hljs-deletion, +.hljs-string, +.hljs-built_in, +.hljs-builtin-name { + color: #cc9393; +} + +.hljs-addition, +.hljs-comment, +.hljs-quote, +.hljs-meta { + color: #7f9f7f; +} + + +.hljs-emphasis { + font-style: italic; +} + +.hljs-strong { + font-weight: bold; +} diff --git a/themes/typemill/partials/footer.twig b/themes/typemill/partials/footer.twig new file mode 100644 index 0000000..79f4a3a --- /dev/null +++ b/themes/typemill/partials/footer.twig @@ -0,0 +1,8 @@ +{% set nowYear = "now"|date("Y") %} +{% if settings.year is empty or settings.year == nowYear %} + {% set copyrightYears = nowYear %} +{% else %} + {% set copyrightYears = settings.year ~ ' - ' ~ nowYear %} +{% endif %} + +

    {{ settings.copyright }} by {{ settings.author }}, {{ copyrightYears }}. All Rights Reserved. Built with TYPEMILL.

    \ No newline at end of file diff --git a/themes/typemill/partials/layout.twig b/themes/typemill/partials/layout.twig new file mode 100644 index 0000000..282ac0f --- /dev/null +++ b/themes/typemill/partials/layout.twig @@ -0,0 +1,65 @@ + + + + + {% block title %}{% endblock %} + + + + + + + + + + + + + + + + + + + + +
    +
    +

    {{ settings.title }}

    +
    +
    + {% block content %}{% endblock %} +
    + +
    + {% include 'partials/footer.twig' %} +
    +
    + + + + + \ No newline at end of file diff --git a/themes/typemill/partials/layoutCover.twig b/themes/typemill/partials/layoutCover.twig new file mode 100644 index 0000000..7c9595c --- /dev/null +++ b/themes/typemill/partials/layoutCover.twig @@ -0,0 +1,31 @@ + + + + + {% block title %}{% endblock %} + + + + + + + + + + + + + + + + + + + + +
    +

    {{ settings.title }}

    + {% block content %}{% endblock %} +
    + + \ No newline at end of file diff --git a/themes/typemill/partials/navigation.twig b/themes/typemill/partials/navigation.twig new file mode 100644 index 0000000..cec78f5 --- /dev/null +++ b/themes/typemill/partials/navigation.twig @@ -0,0 +1,29 @@ +{% macro loop_over(navigation) %} + + {% import _self as macros %} + + {% for element in navigation %} + {% if element.activeParent %} +
  • + {% elseif element.active %} +
  • + {% else %} +
  • + {% endif %} + {% if element.elementType == 'folder' %} + {{ element.name|title }} +
      + {{ macros.loop_over(element.folderContent) }} +
    + {% else %} + {{ element.name|title }} + {% endif %} +
  • + {% endfor %} +{% endmacro %} + +{% import _self as macros %} + + \ No newline at end of file diff --git a/themes/typemill/typemill-large.jpg b/themes/typemill/typemill-large.jpg new file mode 100644 index 0000000000000000000000000000000000000000..71c0e6907085f59a8f681e0ac1ee3ca88456f350 GIT binary patch literal 71627 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

    MUhdC6B5E|{B`IRO4A+&4VnL?T#Fl_g`sv#| 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

    wUl^<5CBKlmiw4Yfdt!Aq&mcPSKUVe7<4|XrD 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 literal 0 HcmV?d00001 diff --git a/typemill.zip b/typemill.zip new file mode 100644 index 0000000000000000000000000000000000000000..b1bee137918746f16584395c375df04f1f0d101e GIT binary patch literal 2808824 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

    E= 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%0D&s;$rDykd`Lsa`)H?PZv zi}Y}P(m$x(;+mT`;U)Gy`I?wrPD7*Ka2MG~gc3H7(sp=SS3_fQb~aE$dxrNE81B&B) z?VUuEIjYp8+T{#CyT7nZQ~{!kkQLss43%&{=HawSztmE>6W zL??$~p`VAs9C~!+6qeo{@TQIa2> zy=fG=EXPl*)0`|Y)|=v+LApFl~$X4-qc4V&9}cwx?xs$8m)h>5d_Jy}7>fgD z3^dx!n6hXI7-1^9y3snmYG_VU98Re)Fgbhlns@-Nf z(U+K@#BD}FLH|bK(%H~Z!EzBzW#!O*WryFoYPg{ho%LsK26lSJ89SV(X!rpjc(b!u;<$zud+p=N@2Hdn+}DJ^X%+wrsr|f)O!hc zCuH}4UkivZV^)i`li=x22dp;B@O79xm#orcwBAMJ zre(Ex@4keTZEPjr8cb3K%rBT`(S8ccbG7S?`MwyNUPJ2hw!)?)zH$hPj3u=8ly}OB|nzG09wx^*z?(QGHfRcj}LM|7G z8{s1yc+Ka!K-x3)M$8t)@N9-lHwVVPuBr;ncWH4k_Fak8BIbZmYBj$OS+WjJu|uf; zo{*A}+BKEN9Wt(BQY#o~tU;Vw7vwUj)8W%Ly^lJ4j;iUY*`kpf%RNd|jecIvhReyx zMNUz3?(RMgHm5Kz?L|L*02CK9-e-FHZo?Yye&qVF069H02e6r$ncKx^Lpri4B|*}4 z08@(V-(?PNZkmev`nv6%9c)a@?~V?3+>DHPAEV!GVJS^0f8+nz+n*ddpGEk zKQm&V-Fr=`eA(RGE6*S$eLx{lt1mebdV3i}Bl zryBRM6Q?RG%Ys$?%q)$&Z93bk8%FWn)(6C#Zq#x$_`t^44>{T-sIi=Xk=)^+f-jKW z169QBzsP9Ns2CYTR?A>Jd%AKLQ}Hx?`Gz)b9?*2QSgCt`?OFz_rxg4rV<;Xra7x?t z8gkaxgYG?)Qe-NZnw?A4&mS`zJjaR5#6!B0k^q9n4#I(RQ&XSUuQ<{JG7K$5%om4jimyi$(dTiT4)hxlCl7h+gsnasj5ht)tq((1-m7;6NmTyG_;@f1>$ItH0$hv0&r}Y(A2DAXih|M zzO{ElRX}J!90b{>!fxv(idzhc)|a_qf_Xvvl;OYMh%O2UXL1NmS*lcu1jxO`XH5@$ z!yf7vVor31G?3OH)*>v3w9XyJnj!^$gSw3sF9?tDAxB{pRj@=$jE8#MFu$7G`r3eb zgKQ(qhlOW6L|}`X#{^Bv>O*LZ!6J=uH^N=MDRrr0bpmzx_j5Gklw;-34I zZ^C>rQ5&ah;uaRBrq0joYg*aHZf^t19&3S|(*4&gKJ*PE*pnVAeXIE$M z+M$c{dxnaS1`b4IE}K3KetbdeXUdwe`NIEX()dU7gqDk6SDSP+A=*yooVPGzy|d4DK8P5?9KBrp8!^<``Otj^Sm zTFRgBp!Z^Wqt|C7d?2!Z_<6n9T=bn9+01du0eDb&Vqm-YuLNnOeYo(~e~#tzfSDLs zS?e8l$2M1PY8x6*kdZSJps$Aru8ur!jwROy$Z?T6wcejKIkc>Bx%~b6_rSv165}Mz zuT#(Ru*2Q0LF0jolQW9hp}l2?a_>86KE3F=;f}{8a~IO(!(kv#Ow0Cd zhEjP#sn0hcA>Y?94fS590~UqakWrlzH_yRPo<@$*!_+6$I>5P&)xWCkGH-DS=O*HcZE*w?+B^d)?1q(~uTVGZd zWn*-3Fa?*`*K&zim+Xl2X8dAP+dW&D%Ri zPwuiSekC%D`G55J_f^-)v? z7vg(F&X(ql>dH#*hnxAi88NEst4<+67+{Axdl|Im*VX-KC4dnnT3lR|l#qyN9%W@f z%Rp^M5h0Vk5%c=l+RAP0xSs!`ysoaXF|V!7TaTZSLT=DH!S&s0q@WG1BidJ89;$Z zN@R)|o8D0F|NI*$P&&K!0alA?@5AJcGkj%0{l}64Isxl>k$QQ0fuIA?EZo{~mpmlvuO-;>A%n^P3pPe3Y zj_&Tf2ppKiup9cP!#?$kON-Rh)SO&gv8GCF=cvemdUppU)MqFd=Ii=`&2AMv^RWZy zG_2S}hkIuIxq<9UT%4$|tWs?35fQkbe#lq$zx77ol6?tr5U91Hl08-resGH!{`vX` zz_X0%RKxGn?vVFwXk}Fvvn76yUQXS6S~*z+GKD`w_kL4T52;pYVabxQ+OE>H#{GCt zPe+AaBi+`D0b6Om%8!8z9FZ zI0d#;@PJmq3GdzV#uD`KUo~Uw{FzJFvlYaxU1b0x6b;Ey8umbA72w9J!@B}okL_K2 zBwyP*D<~*9D6yanovN-TmpmZ(PGUS)!SnWdp~1F83?3256?C4IH0Q*Yw?SQk0FAfs zK8P$@>t{LH_bpCg^uxIdVKFnBy+Y^1xx}P|g6l9FAZg;PZ6k%|R{?WhQXa@ZOBtaD zYP4Bk`SoI)nbC0S)d=jc&ahEpAr{evaKP6kNS_V}L~ieHBe0cowh^ha*(~FR_W_vW zPvg$5^JO0E)tw&9R$)WXImN>T9hVvIqd2M@IXP zYV=*w>4HY=`-v}t4=#Bp7zi-fAkj4>Y28F;PBwm>EVgZR#BPt|;lOqPyb7&;#0lW8 zH;B7@&2-`<*wdP=9uK@aoOivs)PrI}-%AusNf$Cr5hKe%$VQ@TJnj1NyNT%Ia$YjFvkS1xX_0t>GjAabB7 z5>n@H$w^SYsbb3hJ{(JwHz@A3idTO9crhNV@)i2$<<)|*JB2kb4{K6#a)a@3Qovth zNwW2eJN*gAF%GztEGdc1h8R?EK%$U|Le!=((J9WhU(yh-6GDTS&wx_g$>;C#q^2SR z>SS;&p#ji7e28Ds_nkEK*PT$*CK3!%MQIe#XAYgKZUs;t?qKdh zw{jkHTk)>k&yl$;=gNX&AY*}~bPJ5BVE5yR-3!o84V$$^0>Kn)P*Ct(g*JYu5P=I< zSju@a=+JpPo~kpDz9AyLg*tbc zYlK>iuebT9#|x;PF_1+@!md=3&DmLzN*|kL^3JeAo$1QyE85!IpPy}e4d94Mv=I4m z@UNdC^ECrK;l_R_3oi?EdeYq#2L=WnE;vx5!MQrSR)1@y$B5rZWh$#kyh9@-6#I>I zM4BQX44n7V!h%L~L*$R1oy(RryPGn>-@gkAAVr2v*upv3zg3wz7}QJ}#XDyYL;8n6 ziebkI`|a-THl3{|jzA@8+uM^siRtT;c%DRDIn{C^Mu3aJSfMWCxMby|!b1Ng#1}^5 zK5~vJou?9d(U>zM*EqM-;mH2ybB0#^{M3}e*+nP^ zDFRjMN!^%x_oSwl7995c>T2Y#JcwP}C^x<=g*C=K5^@f{PcZ1SmRtXR{p0wpT;_VQ z99WQ_-v?kJD(b3cr4|`|b8T&{$0RXUc~g@DoMfr_uD6AIOJ@Njg6VRdDR-cZ7(Q%h zNUm9jo+TZzQGcRe4%+xbq)NMl?$}-#pWnBTWyhVGb!PaJy|JQU3cLV22?281QvD>X z!3M1=yI6CbJ5mxPC?=dpe%XTnzfUf$V#D_AX-Y?+*xgip&ai)UvEC60FoEEgSlC!N z=j-im78Y^8BHg8nN5ig8aW0EvryZR3PwpJio`QD$=%6*ZzXarjbr)Qwa>WKd1uB}bSEAE_AR8%BWG-KzsyT2di7Sq>(#sK{Yy@R<^^JO)RWZNNLJSN5*~5<< zDZ|d`t}LFms^QU{0f2Q=3HX=3!hVfw}?6EN`5~1FGPGlbg|zs1;S`TLv%?9 zVSzvmVyG&igks__Gc$(>pfg1veG#$VW-&TEJzc9Y4D1N8#G^63YNN%%{AsAN1fJhd z`(1PeVag)N79bPSJhTlHHpHJ#5Y3e?4(cyhpN`-<$%`o+Vd@}L28>BFyD5BYZFJUx z6T@)8XLKh;hsrptenDJPpvHy7O#lVYBX(KTT*1RbOLv8oj8qk6Y_TcemA+V&NL@?X zLPL`XM^Q;h?vEbFfQ678b1YF*z-Vl2SR`Y~mX1;s36btV;Y53PEg>HET9}tPFo2B& z_lj(|usjbRxKmBU=Q_v5zB`6Wtj1!;&LXr~m_`(BHtr#S^Ra~L4H}0iI^j?51;Bbu zfH{SWt6fXcVrf*U(~YP4yOUq;f3jz1=hViT+C{ROy0#vRQ_+i6U@GHo+oXv%Gni;o<(^tMNk~S{!JR!vNaWyEN3hoY5yE zY?BhAluTGOt{hcUB+KkY8C{l6Td>!+=8Jy=h+HtoUZQn#aZ$6|WTdvk@6Mw$D@&J$ zhv)mIJ4NT;H1@RB9p@O6k!l7rBvP-lQInkP?2VOlg2WML@*L5|Z&f_Iy=1E9ez3_b zH|CamY#q#$CY);Q;5;);W}LblrpODHD20Dwi1;?|nywQ@M&i~;zCS-hzV!?Yv`kxk zYpolxVM9hmw%@ERsL8FVtu?f;0PVS^V&Rs&n2s@z!JeF?mZ~57_k!Pyn$hHIQ(n3QL-~@ZhSyH*2`l zONOkj^2x}^s9W83`8-p^*Va$)T3fg;9o*(!R8&_>#OKi&9>8K@SoMMYmZGaha*Qk=PoIOgYp^iY~buzX=nie_VLJw7?fKuc?3X^9N=!rHia z5LkpUGH|swcGmBT)l_CF?rwvGpi;1q%WHsH7#7#(*s)0>6jZ9DMpEvyWT!ZQ$)LfQ zig|_z6}S^GrR?aaZmKRR$%ph^Qxi9(vwZtONH$Wh#I02qdv6b9>me>~EE>3b-neO& zB2N|qB{gx9-1SqZtpQylT0uMGTe8T1~B;U?Z z_?~>7SGg(F?OYc|i>YhvN%I3j4paBO$y&?m+37u<`?t)wS+pU(eooSHtZg7cgwWK` z$k&-+-*7jX+Y2}iR2mx@uZruwLWBuy^7jWa4Gu1Lugvq^g?;I77AA)E+8-rh;}-0s z^imB1UUxzxzlW@psAsP-Ffs-#5s>8gfv#a8YLM*8N=t1lEQGY< z9>Wg@p1w>5{Xq^D84>0DjCT_p985(;)qa0kR#72t=ytwlI(1?T$th*11|}2q37Ga7 zXy1YSll3c1hv>%q@Yl4ZFg85yD!0&Z zS^N~j?8udD1@CU}+L1FYYA1_m_xb(v)s>TGl}>Aeqot;%CO6hlR+#D<1{@S*Z*GIN zlZy-KUrE&Tgr+!XxU|%q3j(5O@dByN@-_k$(XxaEv7Lj%QbY*2*V5IU&-l^F$=HX3 z$ugF+*qs}s<=@>oVL_BJ!N!!Ci=PTXjR_>z(u85RdT=nN^(7vP$I9_UZp+xqu;20E z5J9;q3mRKlYg;vu&?}%QZq~FvWzmnhkXXyh+`s3KNKr`b;yhi{)vd-1M+)o4yhgU# zB~*2Fu@OQkyOm5$x5tY?^}CDoI6p?JTMIqv#JpvQ$TY)n0x*V^+@}zfe9@$3Q#sGq zn^DtM=ZM%UlN0%NHFcvO=C2~TQolQ?AdIGj zq~b!0AtkG;V*(hZrEOV;!ezy-_ZziNJ?ury8^h}kIV!iBUEBZg8fHYO$>Wd3M6<(H!vF2G2c zv*4(^(6Hn>+#5^PW=iopW#p3Gz=B&28{CPse2O43K|^4y0~5phL{}uj!_L0zz)gxM zLT1_AD@BQc5K2|DK{j$w*l?-C8pbTc?P_mpEA9q2P1)p1$3&MECNWK+FzR*x@oi5Z zMTc(jrj<)8dhGGos9QOqq*`h<3bF;*dEQjso;)++T(YurU5M|-Uxq1(zrMbTiwC#1wt|pMaFUR3@>wC`qQBq> zHWcffnlQRzL=A46CAL;|5)~=XVVm@yTyDEYf16!gJRro^R?(zMlGhK086$XBG#)i!XyUEfVwh zYp{xC<2N*QNw3hQTo`EvEN)Aeb{%egWxb8*X@3xzsY7E`)!Edp>fA{pB^Eu(ye$c_ zM2Z6&WyZ(4OjMYpw8;xaZ1A7)BxM$Lza%JOQ3&Ipf3aZ^oE#tP{oGHBGu>7Nt0luI zCw2|VN03!GDsr3U4u{l|7@&6L$4Z7vgC<|HLG#1JGtu%fC$_j;MdU5h}blWflAH&M#*x(o3(hNTWiGQ zxoP9^wJ-hHYFXZcctS`hDk_SdlRa$yt4N|S0@L>wr?$8+T}~qH?IH2GMNQ z)zuG+(TR;L9_viQV0-`Ym^sfRC#!S+PMm6AuTI!Df?7DanL^sb-kTwelQ2#w9>0-E zmPsNIM~kO0mQ7(4R+E=!$Zg04Q^{tcvMfp#!k65|wVI!wPr&MluB-5jm;QXYFr|cQ z=s)~pd8Q~1MFo8~SO?CYee0)$7-F(tci)JwqoZTfOY$~g?M1L!Wn!T6a;s#SaIAQB zEsPaho**h8J(gW8r;VkhLkC_UP@s9p%Oi`y-<$w1C_Iu#Cg8-Pv)U7X4Z~-HJFe;K z(rdYpJWEYU`kS(yfRXhAc8Kh`i)_}b|1uyAqPEP*fAMa8qDNO07Vero0vuj>Nq*zN zi<^cE2&>>OFLGf zczCoMY-{iY zWm=tXc5j|s>;AiIp2hlMA|Y9Dluz$t%jYv2M-i-#p3r|%K8G71S>6vvMiT{?t&v*) z#rl5H;MnNH9x0RD$2JgFNf&WlanJ}=V<#7nge8ZrxV#&bRJ1q>B5rFUk7cC?yr{zW zzO5QJ>eM_Mr0&hHu_(|=nMZc#BS%wHwXGCbT0!!tJi&lE@u7Ou^3p*;`1?HHPiop| zRNOkRs+%eIC8O@P^l1j|vW_DVg(ese961B=2Bg4S)Jl?Jo7>hV;{)JKn&fZf@_luem~hgFbT+)3sal%u8@ z=h@He&6~H@IBEE{yL52PWNSnC=~F+GlvtA{ z8qih-kQw2FaYv%Y%@Bk80K{|;DwMbP^i;Q+&)zp%c1d9%h!hbQC*O(VPU#Y?(pX*V zC?WmY-CkmD;Go34Ys2FJc7Jzs*CuejwzdXXVU|L-{kyNu+3_(mJ^htuXQz+P$jFFb zkYhV~ZDY5-4Pzpe7rH8a5&$LIb&{nfPBRDh$RsN-cy*SWT|U9k&^Q%TY@Ed!6`o$6 z4%ove?L@~_ot>fu)8z2Y!v$P;l^Q1l15j*!?^>;qzV1A$pXaeZTJ9~3{-G``=3-CM z+1-R*5YpDByNRB*2r4ANBa|AQ7>|rVIJ?`rl%o9lRngVxe9)uuTXfu%-0khH@s@+3 zp}+N9vJ^FX?6kqaN324Vd-L0El5yJPO$&1VUTY+7E?Kg=NB_H&HDjE&s;RBKJU3U! z#K3(?PeU)n0$YaaDlVC6{994BO5v|m8e0@C>a%<;6?OGs1|J_ECCe6QnjhCrMY?`h zS7d#CTMj1P{AqH#dwbi=8t3H1>SjcCf#!Cc9>>pm@MRuohwx{ zNs@;8A2*c=n$YiA(G5oZCM2UVD*F-GDCz=*-}=jQP`#8JsKso4OK}Kd>Wl#rb#V`awK}*HOWo6PUK8gj}ZO)cnUe7@4ou^OMD2NstGG!?t`1trL zW`cCowcN4dY@&+iyN8nQUpR%fg&0-2vjkc(g_V`#8@owR10|};N@<4!r&m|4IS+&? zmu#8{f+@Iq<_;7_1rNG@e0&V6sj5P*gXh|| ztk+_kvb~i}alXG18rnO+4Jv%q!|?F%FiP$3>kFu^wi}46Qo_Q;7ETmylOM$&OW^t= z{3nc)5CK0rM2w9`@bmP?xA`ac?j0?QM})%sE-sB|t|*}bTwI!EDuc$Kp}w$aq3(;3 za@LHdj|?8#z?S8BD@&nlYR)9`@kA)=!YH1X<=pHl#3Tuk{+k(N={|{IXbH;91S@uT znoQ?3{JMG~QqI7J`_bI1{>7+WG=`u^rFE;aexO1~MB&D}|8(qA3n+^a+S^BTf90ld zQcd3RB70-aL=Q_*3MPuJ0g~sELX@6{?c%>~1+s7rXd(&>rXNi&)86k)M-kja;Iy@Nh6;W;oB!8C(VJ5=ZPEcD3$4y!wfT?jN>W8; zFFBT$iSMtCbh&rWw1|(Uk+3O0^vlIRj?r9f-Xsxfi$-SBi%ewR!Mk_TH%HAwsQ%Gu zi%rri2(1oHebMk1bCvhM^{qVPMO9l%G5_mRJ6vAda+iqa)E2+2j{I?3s9JtRIgFK_ zNd!c$p=q=I-)_OHNIL>JvPi%FCS5g6lNbjU5w=D2Rdf!Ck}WLH|9VuZrR+A$QxQ}( z)#MsnMic+nER4relotXEA$Z!NunJ@usZyq6az^Z?L4~EYOBr>>#t=TMWZpwfoftj| zLx%WDa%Cf99diKB!+l%~51MY|u5V-^yhaznF>N2#_^)5)+(L~HSrDVfOv%>can8ph z(+hu!rVYJ5`d!-U?u(zZV||>Ftgh*J-D(H--(4Is6JgdppG_UJlOv0y{~De7vE`&W zg;$}HnSdjcs;+vEbJy^n-rap{`YW*aoB64b_B-7%NU|Mx<8!Hm-*6wd(bLW*Y)J4h zfDyq{oLGRV%cJ;T^EF^#g+A5(saWTcR{Z!5ek)AF6kP-)V!2Q}sUWYPE&ku&i3$K$ zmpxDd1^44vj!srhIH59;|LaZKg`YVCR<{lu&tzlB^@n3{vTq17a2?UP!r37{bdjei z-eVVkB|C@KT?|qjK$RcN$JJ5)JG@HM1ERI;AyK#^2<0;RfPZT z56tA+Nq39cg(D**|7g=1BW-VL5%^zAHv@i;B_hp_?KOnZz=?G<>Uzt5Y`Ac=^qJ8| zSFkr7NSk#Ha$EWx?GPtNt!h5={aB3r^Wa2T+)=aAq8YOjTiUN_lzRN(Ggnj;ltH7< zZzucxi5v&0ZrtJGD3SlaS8y#Ok7C6^uVl7Nt$cP^i8yxHs1^qo*Tuy}n5owWB^2_t zdD`Oi@DPA*gy8&=63Hr!o!y?lxg#bBukWW>usVs0Z|{~6hLl1}UKavTSmJ}hUaN*~ zXKkIGy7#Ud(<=g%x=o!`D_a|Wkjf?(o%b7YtPs+_z+ZlX9=W=8(8QoCoCMDhbNDCI zHV<|)?|)<`UZ6)>Tc6zA+|V;rczO=puMb;T*x(Tp5D*fIVd3G8Y-2ipgxa~ey;WCJ%U`m!we=Rv z8Q-6qpKoq%bZl%{Utbp$El5cvFqZ=UmX+b(2A~^gsjFijomni-&x;QlQY|IMWYw3L ziw0`Otx}qMH*-Ep)0az&nb(xsX*K*vlL9;jK+GCNNl9~AS;Ua{_;_?8BHJm9#1TS5 zLOi^~&`Wj>4oZyhu57`7QZ8y%VTfXXof>-(n8um-i4|4pAt8MRpb5bcVPIgj7*p6} zwe8Byptys;vDjC5mYxw_Srwlk$RQ?gMYM@e$kFldasVyy~HBerE5#3PZO&xK| z&XM0I@JWR&?c)~UXA8ots^X8AT3TO69y5qa?Ziw9=}^QG-+J#x=qRtKm|dn5GGO(8 zu@)1Bge2r@W*@scK0BM8o(6Bby}3aME{LNHLLG+h>ni-Y-`gj+ERw03<%`wa6~~u%BQBF=s!Cnvf-38V<$~& zYD!5+NYIM%j0_D4QKCV!($vHi@sq^A|9sva>;EqdPO0DHD&BXmta$0J6up!h*GF8+ z<#o8_)3MAh?x*o4%^*Meyqb?2dOPfziHIh>EgPGgzpJZb5+fqyU;@GM`oJL&p>(N> zhX6`3pwLO4=(=HGsGpmg^WzH(XyNw5Z*LC<3-0X|4uVn!&y#XBfTy4k72CCPS%SIv|5*tgM_2snj$S6>)zSwJcNkTn@9bvkO6UaBwKA1_i|{%j1C$ z`O6z*W@Zwyt(#g|iGYw&rWY4WX0hvG6R3ZRbB{a=uSk_vfA!o(PxV)p&DD zfxPtG-|lSxS9n)lNqWQ~63%>*XJYs-%NGJ@;B#;>g^SIsuF~KqG&DB4AqLNps(o3n zkN%o1qbYF|VMU++MN4gVK~!0JJ-<+|SIu#X;yiC5H{DWxLOOBMep;Hb{3K!mnBXd0 zV(obJ2OC${Q^L>wz2Wf84KR%kE0nXEc^XBJUqNOl8ZgA zM>-}Z;91E&HWn7Nw6qrX_9Qt{Zfb#*qjw)jya*;amtK>2%mdL|-O98BckA_Nx~ z7h?v~(b1JvRdIa&9RF2YOABPeHlo3^IQRE2sZ5L$d0|~0+xbp7CQTgHXzVmEC1qhp z$J)vY!EGBdCl(x(oVd6=a`Z?baNN$P;|f}pRH2&pRQ>(QoJphFT}Vo5>Xp^iveMFx z2^b|H`|Ii==hoKMrB`PmrKhLgU2LK{U0q!rUz|k7#tz#;eB$Bb3(Qf-=8jKF0&O_} zq8u0)`26$~L&y^V;}_z5I7OCsbN@@so#o%Fp}cV3m#p(@opmN+29)xSU8qJ7C|&yI?ULKS=fBjO6VdwP1>-`{U}aF1#^ zI>HCiA&p`-`8D(F>+4P}Hn@|M)Asf@==0Ij@ZrtTY#=0Lxs_EI^Z60kHO?*zJgP#U z!P@LBMLVuZIR!6oTXC@j=h^hNq)wV&-^RuUDLv9mNJvO2oZWW5c%&brwDbtT=ZH9r zc!4ZG+koQzGd}L`lfh|kXKAS*Ee%|OkYx&Tau73ZX;K1)>_#8J>8-7;KmRh4EKE#} z^`C(zCWbagmDSO{Kp25eQ>7>)qQiUTDeHw>>aXf0b0^1AS;qE9&@S&cf7)AGE_eCx zMZp9}%gR#BA%0|OEN6H)a2gt#gT1|YEkAn|v*py%h6bo+p%g?Vcn)z^!h`+2z1{tf zrSjoB)aM(WUcy2>Z7wI>Psa@GOofOA0u+<_1=3p}(;1#G(&HssC5$r`i_X zUqa$ot*W)_VPM6@#br~Nb(_3-V9W@C>s_he-Bs2K54v4<+w{4amK=^DNsWy}fBI;! z6%_?B;OydZw%&f<{r+mN>{#oK_gB-w!9iO)&A&@<=wT{uO2F$5F1WAZ=B9bW_xYNo ztEXjkVIibfk({Xf{%rI8s3hm??U*4KCPBda0fgJ`YIq8(8!WXm+RbUiil?EWfj4+| zcGjv>tweczcGAy^Byn_hh8{ln0My1s&m9jtB|03`F`)}E-J))y6a^ol@SqrUTQU6m ze!g4|*Yy}08XDC;EKL`*M6mk7tEsH!@Oq7w5yi9#@=3Yhed~5 z0IVvis_+T%>4U_X5p4_$8(Jir8nCXcy&Gxd$MN;$pD24QgJyMZDQP({?MTKG@Lmq53mB=W zu)y4Lz4wu>cpbO7kG*0Acop7GEO~vzKcw;LIoDbQ`^+vE;08oseo|0`tJPrbbUjOS zCZHmrJ=3zKr84X5HCoMwAb;957bcCW6BZVZ{rZL{aT2+;MGDEs*G>@{3ktpb_fMaB#5a=jKqPDM35)ntH-In3#!FvMC0IV(!GT2RkP_dq?UjDiHhM zyM42M$D-0AyP-My`M`!~46mu;6;RJt!zBsGgh* z4-a3V`Fo?*7`CsuIrdy23hM0iG(PD?g?>4T0tM`n*3itXSd1+w*3WpR2Tbez?YZoY&1V?o{C9Tg;MPpEwm0Wurxdo5`tT#jz=#Nh znx3^a2;+ZKE$T~nRU?0E9k%*#_1q1YXNp=|JwAFu*Y1?H{y0bmb<(6C<=I6TTF~O_0WgU>2BZ zr>J^^tK?#52Lj3ipeB8GjXx`MVKXGe#Cj&`f-PFK$H&LH4eFQcZfysksS-yhe?|7B z>oB+G)q$DN5j&}=t75|O0?EVw8=E8^F|nSGPGwmh*}DSHJXviF5nl*>P)NxB!2#q> z97}$|c&-Xp>GQd8c`0#)YN%-=CU%f3zYz)7z2D#1Vpr+obLgU50E0rU?}!PVKBS-WmGRo_?m zIjAg^ML#AH4pp|esO0zeW@ZM4iu`;LMht(Q$*iv|7zp4vtc*5x78ZULfSn7)0JQ+` zKoGx7qmW6;*l0ORo#~&Yn8gcSBLOA^sJW_#2ai@&S2fB~v=`KhDB0N9sJFL|zqXlaZQ4OCGd~^SwKYvC?kGBUS4FD2k(hQh-bpsN(!| zwB_kkWd|O#EX4oY4iY1|>1@QqjQ7 zG=*W%`vAHtmS&w8`{K6!b0;bYz1-)m}WYJdBdXN7}<14a$?22|yS`wp@LsyiGv zqTgSsWI!ixKC`j)ML&P^QG5Di4_4yG4MKbj5FV)(1Qq4wfvd@!#vb+vE-m-;fSDs8 zB0A1GMg?qjks`1`1jw4Nu!F1Da6*8^D!G3@f}*U2WFsFd7cwY)JA6@bFCSVAQMQjd2)%16y}0Ajw7oP-^7nkM&M)i$G0~ToK`d~%#o_(*BQtS@ zSa6Bf{{9`Y-e9+Q;b9hf=;`Hp5)f;^8n~75!c81DyIujyd=RMl6J~`p6{uPQp*1HD z`9WT3Mi9;ontUMlU-II5x%(U&9G1^|2*E(LruIjQJhg&d#pO z`Dn)acW0CPrI88EH4zKq9|Kn6pD&Ks*w`3|;8JB#(b4flV6qz!ZqI?eyR&DBzpY9p zCu$|$$keBdunLMxN+JgL<>r#g%Z~#L<%|IJz1e021S+knP*qn} zR#!#*Rx7f=k(!$NUib6;c)sFbJR>yr^70ZnIy!^P_W0sln`KJ2`*EU0{1$e zp5K%WEy87VbW)hMU{rLBjFqLOVG$8^jg5n8fBza#LhO3p z&TIbo@x$86ih$r)-{+P?TUh5llfshXV%zmL?2-KVTvnE@2XZMQCP{7W$J$|H3OQ|E-RO$RukRhz z)yxyQJx51JvZ>7C&wnN+B>sjHd%~rbu(dgXYxlssPMF*S`C; z2}o$=T~Hb(oHb$+gEBdzn-Yx_ z&D!x1uK`Zcksp6~@kUAu78iH9y~X=SUXWj2Uf$5y7)!)Q>_NpwM~8nJ3hsuPcJWUh8p@FDvLdt1X9wn{Cq+*7_p&sa6E9nkM^b5 zSXez1C5k!V-?g-~;(B0FiT(C^nNw0y{ucZ=m>kdfN^;)`=qnZYso=}Mejo?~0jXt- zR^7z~TgGXt4;mR6`RC8~&o1ytNOMzjP+)nlNT{foEXUf~+KK{=#wI3EnL*v4iSc>t zzwg#;MM6f->%}7= z2uPC<_)X7XU0Tt7Gb6jOu+Rc!@x$#0Kq;a)KRP;<>91b=jJ{r<)|<4;X_=ig*`}qX z38-kQxY5bVUpYpk{_h6o@y+~hw^p$L`tIIQxFbpd`cU868b26L&LqjL`@lSqNC$f? z4Gc)%hhPKKIy?J;*w5Oxx4+-i(7-;o_~n;eR1AX#RModetMxV)ydgp&LRMM`T&KGF zjG}IH?>ZLbvt-j09gR#{+)^6G zZFO~fZEb7mAI{#Yvn`zyq^YVZiX|@}T{s|igd!1WK>8P=H04gdADqSf4=@*q#OyxMztfiO2e2pSmp z^$YI=eobM+m>e;1W_I@V_4VN4AydGssh|L|^muz)L~o8}@I0eqIWB0g~NMZFFo5ZLEJbv4i~d^c2b!EY|hh`+avL5n;wQ zQs~o1X&k}XSeY$sEENC#ZEtAk{~QyCtunv32*^zipBqYeEr6n+1 zzrNmJYHvY_5D+GTS$s>+a8!)vuyb>B<8oA#=_tvk92^|f&{!x{Gcw9gOg^f*8W@d-?qf=&Rs{_0c4C~e19gG(LzaGek$XI`W|Lp8+ zApNv>0;8X(3+>Mh4}VFD_jlzGW->e55SN*@Hc3ZU_wq9{Gs-=LdxzQhx4+8L(jx)T zi2VHg1fMbh^WwBy3tIL3+vD#CjVOfxq$y(J^MpJy&Wvb?*z=IN#ZZL&ty~pACTTG+ zzok^aPKBjmwNsIZ&NAViM^<`|ygA|_U=?2}nmUaq2|vRlJ* zet!P=_*lvTHwglTor;8!1IdDnb#!)haoB{-5xzC?h@F)ro$3ggkcbEyJ6Xs;3a3%j z)y?=>czuNT_2j8HKXR?it~fA1Mxv}3q=o52xTCMO6)XO&-nD|Te3jZ+-@fB=2${g~}ix|r31e{bcmBy#$AarqLIA#GVb>9xB8ER2z`3^;! zRFzuNRzOTW{2md9@!!qBuhBUs=Cqp1>zw$~E~z+g*>3rcnl*DAe9b2!*e)e<9N5$1 z=W1NDu)3-Fv}Vfd#stK~8|`ivwm+(XnD_|;gZz1EZqE7NU;oQq1OxAdx<#%Rxu)J8GkfdF7r}fcQ2jH)aJAo=11Ew?x1b6gN8e^NR+nfIAIkdTl-nU6?I-y$PhY)O5+ z8pZyBh{&12q|cfu*~?An`u#f}+ZhI&LN@Q9Sp|4TTybb9Ed0>HH98|F=fa;qr-#!8 zO-)Uj)jGoPogEzxPJo{dy8iefnbg+C3+UTyi6Sm8uDPix6&2NZ+80TAdE{FF!uefq zXv_a>IV2<|0@00uo?c0^5EI=I5Fuz6IJ`)ZT0WT!E=u^Y5bj-Ok3QvZyFICB<`3hVscv)r2fUNgG@<#~I1TUlHClTtwdb8t{mSQrF_J_rIWO)TJKf0*V@p`uW^+F77ic%x;Mar<8h!j~89xxif5}lJgjWJW)&02tiI0!3 zCO2RXk#@@J_IRH5J21k5y@!AdSsopo09d}iw@0>lw%QC?`0o-F-|zQj`xcAW<7)Tc zKUNiP_kX}kE2Mt@{5rGTVELsyR+fl}sE6CYRL7bA(RC(b8`b!y1D|WsHmh#<>mB7mX_ACv-Y+Y z7GNplr^7Ap?$f0$_r41Nf#1TM!>+6tU2rXhvPEJne{v$^tntV}i5)^#Jy5t`kw0fV( zwOnPR6&m%PV(#vMaP)C|9+EV6Sag9r9!_&) zb0#67^~bB!`2#mMw-n01R3%+S#Yu~8p8^P`cppe`m0SsR_2eu*H{Z8M^MP7EFcjq` z`_1#69nq*jqp=7vnXqzrC~O3ZS{-ffdKfRF?0~Kx3>P_WA1oa7 z20bGqI|oNq#c%taYj8z4B{j9eii&opz0pJ(#h5507M&J2k6tVjc-(S8RYJi?y9;+s z;xH@YGZF)TFf%i^v|8lXz$1yL=#e?9IL48b|J~Y(Pfh)>ZfV8x_O@qoD39@Z&ACLr z`6>+l+g$|?mxy$7O}dxQk%FuItvliGfDYj8eEgnQWo2d5pFiFF@BA<|fIR_o7)bMD zsVv&b#-;6hZfXJc!Z%^;dHL7OAJ5U3Lo2 z;?PjBcAI}zOUZEmI?>Ka`$gCN!%i&Iw+6UgghKn?j*bohShlyfQIXgez)z}!MRP*PJ@>$bZ(v!uTHMlA?IMZQOS zWk7=rYPITODJUp*?%_l#C?WG-`gT8)(R{0C%n{6gIUB^)|G9%~Fa^}-`-=5%@H`OJ zO_7j*7Sh^}@c{WG#2K;6Uvfha2F5CQ7m$gBQPQe{IChzpL1HZz#ySqV_1kPaa&<}1 zcKUnK7iOW(6ocU@&9krBWgjaC{vY0bZx8yUxMU7!wmy$Exph ztFEA+08A%kWuQ2|`})4MULRy-W!|5^wiXsPw6)26|DG|Z0zBjH=7#;t7ghL9`uKgPloZ#yQyz13n#X01U8kcNs?5u~I|Vtp zl}2maz!A!^K!*Ur5q1G!^meeShH! zYS~A^S&xjfT9JUVf+#PWniq@YJxbv=X6NUZ^V|Rw0k92B%*41jvVgAF&*$cVX1RKn7Z8*JBC%_T3eNMNx z5r~ag@r9TX5hMHhM1Y9V6A@Z+0A$J_k$8XqE^i%OqO61j3^8117koUt8lKZuUteRr z^S|_Hp=G6EQ9#iEWkH1#2@3;*g`FlvIBZp3jxfU|CX|!6WeE7Eu7H3hE-qVVP>YFn zLwm;a7bto8^n4d?|9A^Tn4@_`09{Yt01#Q)bsVT=P zlFesxdJpaHijj`j0hC_qn`7#Kk_n+3~DOL#Jx#T0&3Rmh3GLS>wl`luSJ z%F6TGPQz-$T%qBPmAMu^ZeR7AyktIk+qC@>Z$4t!bn(Y>dqqA$;|G;ogRo0sQ5mahZpZpC7s*E_^N zs{sS*xG%>V-b7B2kxp6>71R@Op1AmWz7_-(3CEk}w{!>CpWNd@(Ef7AE* z3)B4~T!6Yyr^TUnW##GlqI>xBWz_$%be3UNcHI`H zySrPuq(M>|M7mQzKpG^ZL%JIQX^`$NX$k4>2I&TA&)V;I_~|A3?6u|`;~vk79Zdgt zRMn}staG;9*3{anC-IOS%K@WLQr`45b&-@K4TpX zJTfv?g2?w-!k;WG8g1q)OG`_ut2t3oQ8@{|gbi#1D9I9XjSx^9A0A1nSQPSm5e__A z@5~lH<&v=^&~4_u!`ZywS*Y2jqSk$_l7D^eQjMojNwrFXq?yv8fbg13)SGA|XlWOA zJ1Hs7)C_JORlbA6eSZtkAdc-8qv;V5&J${~va(uQbKK*?l5VmHCH}7B+Bo4-w;5U+{Xdj4 ztgWpbDF*iT_5ep{%W5b0`?tP(r!*9M24eBj^0Hw8%)r9(@*6?H3WFA$k)Xcr*Do(G z0Pg@1`G1?Lt$lh51bvH&su&a%69dxf-xQSfFlOF{+FGtSvd~`WjY^|BnY|O+-zjX2 z)II)x>KhuuV`~Beprr=n)zzol+l585l_PSgo{3FB1iQFGKCG>&kua1~s}8wNEnt;J zl+{qumqmoXy}X^{=Y;y_F;0vRWplCBpNx;6^Lk4q$=W+s){V5_N)z(l{1C$vuD}IE zKpxgi?;hyvfyd2I%6ISHK~viD@(~5z@t++ZKb^Lnp`oKgzw3&5c<^*KVkPjq8l7)# zZ54=RlnZ)d$I+>C-0Z;=z4LE2+jU%+)zqZp0H}zS5a^N;_T?aHodS^u)>D$88D-{i zKDzKks^@L5zVaHvP)fO#d77t670m$kRA zjICkpJDzt1NQA?kW0RA^OU}*A5RsA&3`o>KL!$<$cXv~pP*D+XM&UBN$7-q+*asQJ zB=_d<;D8Vhui(dzz^mGD^-&Q~aM^-FLNI6IpK^1l{o8@y?z}fJ z2?`FLotpy*`r_WZOV`B21k|aiDa;+FbaZ$)unNf-P?GTX_a686K(cl$vo;#{_xFKa z4#gGJshgOa<55u9+t@5mOvEK7o}7prW+?$I8h0qGs0g@mq_|0M_y)h77%qM|lxZy! z^1gL2^H8R!1do0dQ_~G0bN<+1M^sqY`!j0j$DehtBR~o!a=BSBi=Eu#Z}F$)B=nc0 z!wJw6FMNJ}zI*KbyRNURU!_|I_#4p@usXB|ur%=qHvL9MxhC?yS8Qx-Pr)V74M2K` zcmoVTSLLwl5}1&~Nuo4M04X(hR%FEEDkLExF;(E7A||Gw??kJptfX+Q@3x@b%{=S) zd+K$z>1|`fLWJ~+x`{|y`o|8DCKi&6NH>jAtsxc7mRA8lb2A=>IIN$tuC5JKa(J+r zeBvl+G*L6CPnu-EQ$FMhoABn~2L^D++t5*Cqk81VFzSE)TnEP7na*Co!g4#!JN|LU z*NVwRRkbTG9s5^aCr$eg1Ox;OO2NR3wcnpLLNO>Q66CVHFNaV+d?xKZ0u@W zjKix)T~pKb<;jCDS5H#SVrqCtr2J^%jgo6h>g`T6Zh{mJV0p5ET*=x7mP z;T`3k4Up=a?5yAzGKE|ZK_gOhe!!R|N78{TaCu4_udA$*JKS8(IZAY||B@8>3t zN`1L)3JD3Bn3(W~Md2S`Uq1`B8 zHaU6u)%s7gx;Rp<(|Qfovv<@Jzkcnxr9ji6xBvLNRr$r9Y+bLo%B@r%53({XB7$d# zRZ8X4P?XQzYQMC!q(?_^1fs~%!OiV0Be0E?h%jxQHm(WLz3g3fpa$#HR< zoD-B-SmN!-gDHaQt2__uFYo$IUuTd1>pXQ`S)$KX3F9>XAUaDvCHIT-r2Zv!T4;|gk&XD@mpK(eGVrnrZ64ypL%i@`t`oKVM z=~vQG&0rXWDL9yz(!Qlqu8euuKRkJ*cqwttD6XoCy+pKB5a=Qzn$E~%uBeC#HQC+$Aw`VU za9Weg$G@NzS(P7MgP+xd(0d!Cy3FiMdy=H&9G4=8^Z@VMOBrvPl+-`@`p4-Xm%?qfnig0+ne`0!4& zj*^falyLheC&UyKB^4EsF);`$Q1jwqo2l%Z^cZN@4D|F{=I`E((8dbmU}Ho75Oh6E zYH3M(!o-mf8}!^APNwv^#;!&X%o1=i?T^4Gudh!VEE$TC`{8)Cjh~bA+}4UQed5Aw049~S8~P3hIWR4T{LS9Z4jw6K zBv%*f?d|RUpMd*6W0?Tid$n;|%8fcmp#77Jl(QRaYkMSoeT@_pm=A4CO}V^uBHAm- zueQ67*qs@kNekIahosjfR8~iL@H3n9T5;j5pfE=>_%Xd5Z;$s+BYZl1fTn_Ej30-T zn!;{qVQw1*%i-VvB7Yp5oOI)OPH5Yk{XfatMi)0%`qd`TF&|%qfeJl6?cs2o+wv{< z^uR#79e;V)pUnUI^()jz$5_a#j9ARjUNEOZJ`ZRDn8iD%r|blgf5x+8VUvn-bDiF$ zsX|F1LZPFf`4=K7(^i(0d{UWEklMNUl0`w$C1pdJK`V;^yA+3Ukx)qGs^eg3`9^?q zVt#&pVFr(o@?R>U5f!bEgsu5U1SNOSddb^1R|`}1Q(Bg*+5){ada zV!3)T%w;Nm{-jv(J6^a5hK3G%^ZQL}NjXcQ%YTcPOFzo#^U5w*BtLaZx-P@%#LLm4 zsA;SD_&kG@=Jj(uzo;lwhH*8##f4{NBF>hu=jFv0KnoRWnvS%K$icPRr%#{Wy^G4D zQQwoG1vyDX#4xR&##e?24dG%(o=mIbZYwfY_)<Yas$hK7=gTL-E#Ikhxw$^;Jwcf8b~DAC%6aq&i(Ph3M)vsc2|*%@?a zZLj9UpWhsv?MJ^kRB278bno^BZsr4BexpFLGcxS64tKIDV%#bLIEXf7i{-%skrX>g##F1DPHgAIH?G zhGH5R7?_`%qq^wp>)YG=L4A-RTTpE|PN8N}AU?N1OhR(H-bopzrLMj@IT_$`cxWx* zker+xW^ZERpODX9rd9C(lHB&z7VsRT4#O7b!nU@ys!lP6H~+;F93rG7y7wYb9)sk; zf?v)j0B@n9pwQCL03!b)Owm=An+qMDqZVeQsVVQoLgAfKR)hYWyMHO|7&DKLsqt_ zqGEJv3a2YT#>&9~(;M0hva~}J@1OXcjND_2&{AM=ejYJ>a&8WR4UlH8n3NPRFK--{ z0Gd;L5@-!|b=-v7#zrko&C%gum>@{=S_N`qU|>)Y5fT!TmB|NR2?+^Nk>ZdaT-|#E z*!%u(FT>$`W+vp8+!=9gK0dxKayaookQv2a%}DF&62FoVRK;=Bk&!`|09}>povdP9 z09vU%-39g&CMKr$q~pN=rQbI(zn_hbV<6l8142ua3H(!8nS(wNISkH#hCD%0T|GY} zsVzKV$L;h)wp(ZsYt}HlEJeR$N&RB!zkY(!8|(ycP=H zI9&Wzp5T*C@DMr3U`3)=_IayN{eiK=^0yxKVVjwSzR&v2VUg z^J@NT#VCzk<_?WG%=#xYSf!InY5&?eaWvVI(S4C%toGxj6aa!m*(5tgU!`y*^#WB_AIj88DGO9|2`-ZEsIH zuX$gMMqFN&{7J~p{s-CcV~iIw-(Su7@P0e}=QI7%N!EY+_;`fN*H!-VyrDeP)6)al zd%Qn#Q@hfjq^e5HWuH^Sz(Cleyr7_&*GNW6?ERY~Tzk z>`Owbr~n5Rl6kkeZ-F^9(o(`YT1=L$1Ld}mu_y{MD^9pM<>SKx$dU0g8yg$y$|qE7 zrr0_93VJayF{J$VbkrH?>A&!l_Yk3V=zE#Ge}|z?ybkOAbM?`lexfUmJaBP&nV*-h zcF`6WH?i^dwz2WwvR6?@2l-RbOxz_AEgBly{=vZ}2NM)K_CE|MflnXp?CkADe<{cz zBGZ&~i@`(|rjHs@X8z1ekJx8TQ5X|Pws)XBoaLe}z62>KB*nv9DJ zPslQalo#?}C{j66g9pBlk&vWkW&L#CRq$?i+aJjzptD|We8nWd$A87ZAoj4IZ<5}+v=rFW)3oNPsHB8mAwo}|{$Hl@*^cHPq!$Jf zYO-s$+z8Zk^F4I~5Jn=hZ40NB5Cel901-46)U z@8N)}suX+3- z@9`)pVWNp|1}4^Tnj2JXsHHUrJPL&6-`f}B_g1!SY!y~bgd8Ec$cC*h2SW_m#igYP z^>z!@o2%~su69$~RQJ*k58I!-H4+6}?7fkqWs9Yw#PuOse1zmAPR zTc|OE9Ld_g0s{Y9FOhObkxr7Yu`w-8_j1!u%n?cw&*@L}Wb4nLYqR|~o&TPzyop}D zDtsjR8ypl8h|Jjx)H0CH9|@%C4Q{j){9Sw^q}RfTaBxt(oa|e73Oo2Y_|2Oe-LP3% z6hsPV@?SwZVFeE4jr<_+WK zjEl`qwB_jLkmFr?#{sa2-wh3zSy+Zx455Y>>;9~)tcX*am&yPTW+EaXN=m|`vkt?h$a)UQaKuUUabW~QJS8Fza z;d-Nrc+vTMn^93=Co796r>I4HpX$CLxG|p}D{>2jBp^toU6#TF?ncD(x_FopLp3xs zH2yfl;is;;A!tt^K&OX?dIlOn3dBStdb+yUt!i+9>Cgq^s*~;{cG(|cb#{}Tsg@vzv&1~jUPb_zJK_Q$0 zvk?;qNSB3S6y0M0?86)Y_8mJ`|OO8i0Dfd-+L2vNi*8Tx1>L)2>5t-g5&|M z4Gm09sc|A+OvSW)-Wws#iOtTY^gjle2&aJ@yjnf$b=D#K!`#t0>_+tYTK)1A^Ov%` zJoIE>be9O-8#t=dc_%2&(vp(+({qthkoxiQ@mC0`s9-iKH-AuZGGRK&&n_*Y;Q8Jc zri$~`l59rVe)0yK9*cJdbt-PzW3*A!ErHDZp07b_&U`q!chf~anETDTUv@Kha>to^ z9Q!=&*uE@3-rk8J76j2F z_DP}q?J`Q6Kc4<|_Wt#x83Q>vWM`z(INjV1If_ruS70u>tgoVii8|VaML3Lqk`WMC zI5>1#O`1j-b-q0O?&|tiZtPa=F5t8!<>CSu1#v-cy{l_+k@%dB@<);Eh&dM&G|}bj z_XB;uObe716u5YKM@L4`Fp#msr3GR)&rQF4QB|FcyZ-x8X;cYkXk(wPtw=UtaBvX( zB}jIFK89rh6!YP@s;Vkf-icOEPam2fH#e6cC8e2(s;D;<)9-pxRy*;v$OD4JqaNBn74_L6$8&~F~Iuuyxh3BxcpTmfE=Lv#l;15 z9Sxf37RMVBoBr0m{rzn*`91vC`_wGJ$S~gN{k5^iBx~33_yt$vYFqG5?$VygdJq->Dq37f|{FP)%&QwFRZ6 zQ|o@BJzcDc0zS!{M;l{l)Gw5g{0{_BfL$+)Z9ihlZ@EE#`gF3 z#32GqzoDVQUySOpLvPx~J~^M0SNZfB zRSpt6Wr&W_jaDHq3|C2++1S98fvNp_e*Nc5S1YyhX??tkq4tat>}(Vk(ao{AwCi7m z7wOyb4AsOi0{*6j|E-52ds0t)Ad!cQUa7eYM)D zsj3bE!W|iDpA56Mw&rim9kq*_xe7dtidhHMs_WQdaGy9lJX~j&x=-pXBKgQ)N{SD; zVn9*ZciR|#_%^M`2W!?2>mqw?VSxw>%Rg3toskg<1%-=?3s{c>E;)Yx_EnR^`q-bV z+Pd1C>l;FL0|6eMBmgc(MwJCTONca{_U~iz^0rE6%kT@l1|iE#%gdzQrKQXu*C)hh z85yY6x*lmsZC-u(iW6R0c^U|hYTi#oOf3KI9iTPCHa9kZ4q93>6BCo(5Oi4BuPrV4 zqSM%fLozZlF!m}$Te_t!ErKAdD=TBl1AzbWX>r2i=uy5plx1d;FXAR9)wQ)9bt6)$X=`WOu_?@bofKp) z)yK>1&THNL(>_Grrd|nV0*1)2*^vSX<~z(QC>4NNygW0V|9mk&MF0&i%k1cwDSN9Z zBeVAekBUJdjASe1v=s!xOlPNKM>Yik%pZ$Bg0xwyCm zez`qao}ZlDJl({mpm_geHiUtAOg{pu6B>I}z9XyxT&>JDw>~?<*plI7~J6rPlRN84C$vW?}-N z9U_FsVV$4bJN#bm|K#Q6frJRpY7oYi=)*ZXGo$kN?(T~t{?^>=Z0=T0S#2%XPGNbu z@WeVL8Cg`je*ze<92O;|(XcS2nXRJimpAUG1|L%{8M3{(GO{WDJLI~0dKx0Spt?#8 z%t2jKb9#CjHXX|Jyau#iQ`7i><&18b4(r&^5VWT7-G=1GH|aVOWfU3g1)*PKiaj|R8Bv&60kGGul%mp=a&dFRKtX}=qCQP{rMRPr zgO88i3L|!ZKMJOZdco?;7ac}Cnw^8`A}4RnL+&|H`AoDNmm62Og-K>%Vp8pLz@-sAYGHG< z?=N-##7B42^%XN}@zirpR88$L4-&!EeMU8e2$!H$SA7GJ0kGoB@HcJ7pP2ef#0p;y zf+EK+u&D#&cXW8@xH36;v1pkMtvivWJ3MT{K@mH@yo`#_Gm9yD*9Clj^W*5kzyJd` zH!fWeD;|C_Q2cD~OZhG>CnqNbg<;4SJ^@BpSz%q4iR(9w@4yHR2@$>D!DVA(gF;t> z%|Bl2cq1xGp`DSTk5^zbgpMw2Y#bwWU*F_+zncm&lVkx0G0{r(hu&#rF}8R)C~@(w zxHv3+e*U3}xbmN2f!Ekje(}D3eqs~n9DetaEx{gc@A>XYXqc+$eNJ%^I_cDO7 zS65H^RPoy_wR`j%84=rH&tu-CnT0u!9KBUTFKC{Zk!^IPHQ(9VTA!xX2 zK*Y>^IFxyqlJ)1;*|Ido;Qiv>5IOC78n-1V;OOY+-Hsad(YTS((e14*AcaI|7Ct^A z#an&hxF%HMAs|a74#BZMJsefh#LH=GgJ&jO5x@0?Zhm@sJhLjhxp4*23Gk8kfh~I6 z@7Y;RiB<*^Ma9U>%uGdR~mOxM3a30 z4L@jOH#<2Aq6$^U1N1fmB4RiH+S(eh9tpRani_9W%BO){X9+&Bf7iGu+dDh;E(dCk z`qtLW@AY)P$;!%(XYgZcZd+T=@$(1>2v7+#e@prn#@y7{NPve|ZrDa}?RI;t%el4H zAMo*GVF^>oSDYbG`R}tu(J!ax=1MCop_lLP?{#%`$=|r4jRJ{7Z4Zl5dB2gGoBKge zk7VTSN}r{<`Q5`qUOE()3BfQj+A|mr3E#hTYFNsrxE{os-_jM`nM;vF-yd2fSx1OW z?)VpqlSeZ%nplkw4?DZMMn*(%>m5hO$#aEiORx(W&jC6vGz^fN|6SCy73 z$jgV@PU!3FqZ-uJ)U=c}(X@!b3^)pWe|hnpT7ZKIX!m*-l>>+r$$$IjPtj^Z+xNE{ zW;HsT9LH#NuWgD& zXqZXI&J6>TGt7t(<-eA-1D^q?hMMU+UEB2rhiJleJZ*V^Szl>+`N-Iq=SBeH*-#2> zqMM6LltkGP48cd%|6a~YYooZ7eMgo;D01k0o?Bft8%hvgysxdj1VU<*%zoPP@5Rn? zJWE|wtERd>EIRrGJ5p0ab5@WHO83i`FK+M0dY7AU2i^m$gNBB#J4wBAkH7O4)f2cE z*>FMb!zCvt$Ep^WmcDskOiO_<0duA~ObM%lvQ1_%S>ar4FAd?489DF3WF41-bNSaJcdl~ zx_ckX)jT~z3&d+v+OAE%$Y5N(u@b44Jl;R)XfahK3mh36nI0eOhUS@|m(a zn`W2imseMBdNIY!&7WemF94Lbw6rCrVzX$K`#U8hCcb$CKR3q*_~GH~c1qB5TP9BvZ>HNZi9Qs?{n^4I^=``z7yYNcj z@5pf^or69jrR9q)2#OM|XpyWk7F=nyiEneyuMfDlC@w;7j(|kszvxs*FVC_?3~XQA zd%t>B2*U5%N-&t*))D&B(|Ap|G*Bk(J0! zxQRVL{Cw<pxZ&yI#OCoNUKHJN_TtPb2Y+f|RR%^{`9di^{66Z~}4&Czk)R9?=y_1#d_X(l*1Jw3gp@a!@=Pp7cm-_A@zDGv^*;T zD&$3~ot@q4>Z-ri(OiYPMa|$Z@AvQDgJM$_d#(qj5I6%}5*ZnpkU*0?KzktP{`d3w z)fMCme**%jUr0!a!=-5aN%A&+G&R=ykKCTEQxXvYr83si3ds{a?}DvVV`65ye36Sd z9P{=p@S%e2w0{%UVdW>~>XlCU>658bY+>O?4Gj%dRqWI<>8G~J<5?nrr_<8Xmh_hTCSfBa z9QHFOd<;J?!k+9F+wZlcr~6woD?8)fNNsZr-R2c_V9wfErAbOk#>dBlVTl#FU1<6I zN9rxLcxiJpk(8#kcIvlp`^U!ys;VUgeK6hTz=Q7Y z<-PY#74Etb9!0uesI_h~;(L~{Mt%{0@ijIyB zrS#uz?1BOacFK%+Fj=69C-5YM1uze}czLC9;Sn|qKo^Nqb;*j4ue5v)Fa`954E1|z z%GuFT1*il~JSS09KmhcsSFg5U$pZqka%jv0lDd`m-(r93-SlsAOdhp>t((!%?Di06 zF^^!qzPW+6LqK>yKnM{pyKUqPwDISrllJbTC2Eddn^-P6@^scF`s3*`Vn)|M4XK|` z`7FSn++zSV`QB}Y0uG2nhjY;T@Zke7F)=$kJ5}!e)t}#MbZV>1F!4=IO)T%uAG?Pv zs~HXdw^3#!-3s+B($zbgRO8{!u2U*pf>Nki^M2`{T` z`I{_vZ7WLNjQOs!mYdQJ0H~(!9&dE4ZusA{a z3jzg3=;*F<5sQRqHU}PxWo4I=k`h2vn)op9^3u{g7ddIK_955_<8u}8R1eca`MQrm z1Ew{49_^o8Mtm-|`rDtLh}k}aLbBE)5qz(tWMgHOgPvhcV2xv&Ct6c%{}y7A8WPqK zqGlHN+lHXL-oEWI&hj&&!vSLgImy47C;fw--qqC=XzS$UYn!=p5Drhz&em%`qFzi% z(cz)QQi{c#gWo)wuS#ta?n%W<1z80ah{pWL_0;a~dyjjA%DvlAN-c9PQ2T(S8|{|0 zfN)c0Q{lNeEL5wmi~sAnzp~{c4gcM#&i(o|K-ICq^Xi^`i`fHw{M|@G4v@Xyetx+A zB%wV&oRfTe>-J|XQ*uQqgYOjs10f-yyE`gm8v{`MhuNG~%PdTWe{#~U`H)-r_@8VU z{JfR^a@Nf$bddz)*xc7bj;MVg!qowK(54Qz|6C=v%C2C z5)v#bC27^v#~V&dxX zHuxm47&9|70*7QDKYldWaun$3@OdZQ9~2a{wr1qO!C?~Zy#j_y*2{~<#s+-M*CD&k zEdZxrx`V{-W+x`Sazwoxqs&X(j-HJY% zM?{onB`B*eXWe&+Q(;U>OguV193JN&;uYS0uq@&~c$#PR+p(WaYomFvhG1VN!R35ur)7SYARwg+mxzJJE z6Z7*^Gv;+R2>tN6d7g05%R8!3KgA1L|Jq4Do2V+~zRL5hK4r!T%?IhZkNT?b>gp;o zBJ%n9X=Qa4B#)%zcc! zLa&aBA_A`G;^LyCuOAzAH?52~vBF`nuN?DdZw~}S5@O;_jwqY6GxbGnq-lQs+42fOWPH55 zq$DJAF=$noIy&ZdcKrnyc*PWfrw52O1+oZ2l97-_n6I*BHMkh3La%IQe(|{Tpa{q* zD7-~)Zf$)ps^#jcDKCFe`|R&#z8t=_ZCh+Y4K+S}py*g&s+|3gpHEB!XF3ZFgl%$LX~(EmhU{IfU6> z1lE!Z!dC^L(cmWqbu|7eX}inb7&i&Hyl0$sAgszPDlc$RmhqGO+*52-C-dJnzSlTD zjrpEb06y*hT)cZ1#n7A&vTS~S-dMJn`~F0(DkZu>i}UWE-cZWWz`nk|tC=rp7`Au_QqG#!r*_Zkto#9z9?vZbVJ;fJx*o0KC(Yr}RO!Dr@ znG4tuG@hD=RZIGo2{YAY-a|DjbE!Kul`@A_4;4cYeOr z_)2y;C>+#9iu;J~aGxC=;{*m67NH1fh!$nuCSVJg8<`Re4E;$2`UPM*A0z$SH>%aK zv9X#yCTJy7bYuXwaZ&IH2(2wG@pbtdwmS~q=DY7cACjC!eiFKt<|Q6#e>`ogCn%=4 ztE2klkB5h6{;_D%8hZaisHiA4bxmI0cUUVp2`;gj)#W3+t1J3v)DT%A(4$ClVBqzAzAzB^XAPPQux2O zw=a7c4sp?ePfzL+5~u{MgM))zClLmtSt1!7_L_^Shy;XJSHL^-y(s?a6WN?H&>m`1R{&XJ>UaHB=Oo^73*l zdJZu$F6QC2F^Xu>Vi%xcOE)%1VylN(a&WaXvmddQv5G?pE_im@hJXFC0O194Iz*g$ zqk6hXS?u3aN~*E%Zc(=H;lZhvhT78g2sdD?9D)s)jM250&kR@$OoGH+E+>8)iXf%job0y@87iBGM=8ECQPLI`eagiNWzM&=MkU?_N`Br z8eUKdvj`Odhp4OLHp>W);y|D6><~5o1c>+Z=g-H#X9Kgc&Q#}Df5zF2+P_#?A*~?b zaPhrHsDe%C5K~m4}bd&CM~Xn8wW>KX?Y()kByBDEqf&wRBJ&&K~oc_8 zffq*Njv%Mwd7?2`zB#>lg3 zKGIuWa>VZ{Z*6UzZm-C=GoXU#{K=DY}F2X`%@6aXeLb*hRdGct}k9dio{r9XV2u7%4vI6e-7A9`ZuRCjdboInpM zC@MnSfQ8v=r6oG{ca38)!%d7pSs``ndIKlvTz!7hw7yj|prQF{C|7EbbpHvmuu%(g zSeTNq9KHMPNSgA$8;%*Mj8U0Naf?B58ylA6g{7snb`RJhC^b%u+a6shDLH?_Kx%FR z0)m-<7r5v(Im7}DjqUKU?!4B{%`*9rw5-q76KuIxux6v_yr@BRf-&qXK*0tVbc~h# zUYs}FbY{Dfzh=Zgx8 z>1bKFC9OlQ(LOy%QihaHtIWqGcRZ4@Qo&b4MQs6)IX#VGhR=c#<+EMzZ-uXcoP5g? zA)VDRGQzMI|7c43giT5sX$K1nOP5<#hFT9}w}ID;VnWSA`&Hdrlrj~E7>a-vEe#7a z=iK7rYqOB+R@Wm(EQ@YyBv>A3gn(#AOe%;R^@GSNE!~`Cu4#Kt){-Pgjx8cA>{x+~ z6BXu#Fa-TLGRg)eG+$}>_($v?F(qZ}$k!ATY6b?xzPwt(*w?s?a4WCotUrt$><$ zbUfF0Y6^)(Nv0?>#8% z!=ocJej1v*rY3%7F17bYKU+(gMX5m~3i19Nx-1IR;`M9jU-Bt>dU^>UVH_St^ikpi z!>6M|%LXbXC$EH#gd~1QO-((B6NMG4+tSiv%hy(39(CtwWo`YI{_!EiXJA_ch&x(B z>RHX}*D$#%%F39_jIJ6Qc&zzW3v+-nMCGAFpBtQ8HnFj_w6xF=U{m4|(b1zzl!p8g zNSbQ0R?hD6sT&UhO*9g*0RW`WT&)!Ao|v^n#H6Wjte;NAPK_!=;lk) zznaxHhB1X)0b$EPPtVN61d{;7EPzW_S9f1GfP+Cf3re+rVBqVBf}$d{JdQd%JiLIt zDP$Ml=jR7ridai~`x>(WjFrO;qK)*Q0o`MnZ;~~W)YaABN=nL?Zx6(7S2Z?{LG~`C zz=PJo1ZYGAZS_7&ID9=K2IJ@}<{BcW{P?$kPO<0f#EJ?wlT*mrtxOP1_fMZk9o9^M zO9q|304DHa1LbNHd-v|Kc*}3pgLmRqX9qu%~*Rt_VKy zb*G!Ks;f^ci{1x8POK3ESyrL>QOZm+rN3V}!+RmIH1{8U>#&WPXDwTiO5GrtfBd+6 ze7v$a$%Kb8ggt>{@^P+QS22b4H5b>fkfV{b6@t^AU{qqX7KsaOvyhMwFp*TGn3$N- z(uF?jK22^XdVt^v2~)?$Fv6LFCgUS2NMf0_mX(C5Fij(&C6o1u z2`nc$)Mg%j{(*7ax$0=T<9IV&eKD^DRpFoQej6<_aGlpOD?4 zy1u?ZY$}`*gW>kKxJ~STIrNj$sUVGXXnC=3?3>REJ{q8M6%`c$mnGd5eo#bhYH$BO zYQaA<|G8xa@Oy1-Z9qW4Op?YYVq#9*yzc@|G@P6uMO+WY=TpVLQcUqz4P&a!LVG82 zHNp)(Lyy<(R*sx3{;yQlIFQwcRIZ3MTGchvIjBo!6gdH!Ygb;1B2V+MRg60us~Wf$aw_C z6tuT}Bp8Sudsp{&ze`Fsui6|_)}*)Nr~9hlKSj#Ao_U2o01{vjl&5!%u`?*9WG!9S zHX+2vPu{$-GyfPs)zQ(>e9`sFd?cjXB(8=G;H61oWhHyH4A8J;eJ0pJinctHb+E+y)0Fc&7}TNNVHfPf>GuNl92g&^7V~ z=VZESacJ(;igcj`@2dlXz6fWvw+pAKh-Lca;y!k#f6>T_`EO&sCubCIx5VL4X2fAP zGsuh7)SC_SMzsFYH;m9WThhpdzV{JvFa-bai)M)92S^0?v#|eGCyky|VNzyxLTZ1} z5aQ1oO8+rYRf6gD69LKV_2x3FM_O z=H&-Z^X<1q-fBvg;Zk|Aq7TJ@9gms#GM?uSq6Du3B{ z{@P}S`7k}2*d}*uA+M@h)6}F*g#|pyv1KJUm)gVQ9#GHAi!Xv?%x}ByN^vTyKNobL zYpBU2Qlpx8+B}!$l+}t4zkeqK*dZu5!v;C}uBi#RNJle0J3Dr}*ba_`m6h(Q``+8v z$?0_rZs^|ITya&2n%Yu@WA*@UPELPCaZzL`JV{AOgXYUiXV7geG}T|B!hqM6=I8fr zI)aX+ODs%CNN8_wPhry!v8Cd!RyWd;VRtezqBsU|bwj{DxpY`z1!qC}rJ%+Af_{+23QSXmkQgF5jEJXAis>?}3f}XE3CM9Y8e0!`*N}2&6 zIpXq?T~tg!fN0;}6LPn73Wu@p7uV+9X?rG``pZG=Oi{a3vf<<7yQg_{4>e~>W7He zPgAb6gHH!?o*)e*I5#vk8MnHGm$!Zu?i(2R@YofQ4Fdzy`FPqkHHCA0y4p6svI0pL zK0ZE>jbb=>ctImw$Dx$I&Ca{SKYq~LLUx|96`%?%H#w|BzPvc_;@;lEr!t&#McKZs7NhAPpZDH1*v!X~IS0S_y#Diym6bKiANkH5 zzC4_t(NI;%=o+7T*5PASoBg|S{tzFZ4hsv5E(Hx3N0bi2FE%FPbS%HS{)Oj*7=!dq zGr6Slhs;kXEU)nI0iw#nef|4HS_~Zx^!Y(SK`Sf5@bDhFDq%vMo;Rf}!NHxKVt2n5 z7w>}!jiBE77gidy1eRt~8>P|5~Bl zslGnd??$_2NAH&>cuP)s}4Jb;64g zy1l(^_VHtfX+H|$;H1+ssY88uk%rfoFaBOB?1n<0f3Q^BK4v($xw%BKYU}6_ou+7( zX?5K1WthksuX_wulSx*#x34TOF9T%Q{uK=+Kv)0qH^EjBUg2j~S7|0kL_nw8MsHtH z{qyzp9T&br+c+pG%7US8Xh8piJIkfcsu7=;2NM_ndlvx?uKnTAMvlY{YZagh@7KVh zq9WMeQ2GG)n#HhfXG>@K?N`2Oxi9I6@w%wN&5B49ZWXqk{n~{_@a=(fE-fv6>ldY9 zW#a%zZ;80WgM$%Lu={CUI+BuKnVEhAtE6bJ+%>pARx`@fgRHup0GYdJFAlG0Ms{Ias&OTYHk|Gn^Alb+XDj#EtF zFKmrv=7M28UH^xxf*dF1EgSFk?G6ck0uWni+4Gs%0w_XY+e|g?EIJ6Nbvi=guP$k7 zYii=h|3D5Z|9A55V{5CYIh^~K&2(aJ$9`y`K2br8y1|4Ufg1VYU^0d9R6@|zK}t*) z%;Gx-!R854#4XT{bVVj{3)ESa1%38iA$7Sq;$*{$;p;dFcAB%BO=WBb>?P~~EV%X* zd`GJN-(ssLIGmoJix0n1%Az00YoLBuj%P_5 z2E>(?mF4H<5wPh=2}jP&&ITB$UZE1Q13<)Y6V2|naR7k5RQ*BH(o$AI0dfqWG8n)_ z>Th&(bYdc`j}{i5US6^?GJHHdBk8;>w6wG$BE5ryjBIRnFHiT)KbmVH=Yy(%GN7ui+rl(RcXtTVf^?ns z)EhT9x1t}ryU+qYK0eRS&uw~%CjclgIr#X9!o}#a-v^Nok55mtF*1tnG#*c7#L&^@ z3@^^j!5FJ)Ya2D&YD!4(77*a$gTIu(Syn9}A>q%TKebg=62=P^)zxS|LdYM#r?aIq zpZ|#rbkE+w+l7-qROu_o)L52=?-A`Nf57-QU07uTy~X>uYH(t**X0$3%hy4Febq0RbToQ6!7Q1UR%YX(tr!%Jk&;E(%;81ION&Wg`~hy{J;~>%VwV`N4L;HwVL( z`#IloLr?b$b8M`vMCm7myNLJ!`ntZk@o;eoAq#uM${G=X{|Tg=)uko$osaNE=-2&h z@_Y3L47d>Hq$kS5(817owI|`I%7^rEBXnGbJCQU47h^_(5NMa0Vge~IJf zbB2jpv#`)re!oG2(wVJAD!&}w>Gj-KlDr`lhD~Hch%z@f??VI1lKiiwrpD1cSk>j~ z3=4OcqNUI?%AcR#a671X2@a;8Ry@9%x*~cvS_>DF%cK`_<2FkuSk#{kVM_e}?na)T zo|-8`gZz;k8XC&M!Es64T3BdywbgBwpsl6V1HvQlFbu9^AaHf4y zsh7n!70lxku{#R64fUu$V32)^ZJAqX^q}b-h$+xhHY(ZsOlD1XY-%F zJ|ZUtd0BXVJWzA!HjYRi>Py1HX=`DW#%FJnbsp7D4x9Rsc>9bYMNts+VDTkL_8FZe*~H{Ypj zj?!$xIm{S5aVhYC@1CGD)Gx{s>9&8QXk=uxBj)YxZLe=HFVFN#-TCR^=JC-V5iv3* zCI03 zjzDTHRnC?A`{fIyOv_DbpPH|_@5n{YhN5whMvni0uK~!&$;k=B`QCdaP!zxgA+vzM zzu(33mPbdyv~TKhRLzghR~uyx|JIwq2ve-M|NUul{=84|!p_MF`zK#ThKY*GJ$ ze}Aj-@kYB_Uj4wp0A#X18=I4HUM_EZq(~wI0M@KJ2YY*a6O)XTl&{&@v5z0`7Zw-a zuiax&b8~ZRX=`t{xeR{$hD^1;x2K{lvoH0x4w>*gUkO12J+&~AO!ukPe$~{>>|>LPNS~>Z5!-Lnh(fQ~ zveAL0smBo%DLuZ5@u+xK6~(l&%X>a5yhR!R1Fp=cs zoQ&Xkd#R?$%D)0NOxQzJe#q*$+uV5h8( zM>lkFsh6RpzIBOd%M$At9+rFx2*6%G77=OqiB1i0VSH>16&+npF63ifqx~ueHWZ%? zxY=b+#$)K6MPjU6@3^G9mtpJ41UwZQ);Bjd=jMk?!+xB3oJZA!e0y!To+nN)KJIdHyih|f`x@0vbz_m9m8cs=0BR6 zdSQ)5LiZMAtL*Ib)3>*GbaYfzP4fQQ!}sddtFdYo23q)9@DG@lXgn#O7=C2Gqp~ta zJnR%^Lvu4;QwY>bS#>r1*M%ilaL3^Mh2wd6cp&Q$C9ktPoOeU(>)*yFjvEdI0;DiE zKiC`olt3mREdJJ*!|x>L?}6sRf^Dq{_Y}LSkUQ9hkZ^;Bf{mxj~tYh zlQV5xm01`cKRp;v>0_1vNsQn7XCAt|^vY(OIvE++n5>6~hm#YVPyVZqH8nNB_8`yb z#>S9PP{g5da8f{!KR!74l953*`vE-?H?6!PGbb%#fA9vMrz`kfIYUJ!w<*pHp2K0; zYZ`vUPiH*+OWx0SCC6%fn7-eJifHZZejr+4cK;)Ic@|Su9bbWb-;14o@#yGR`1trI zrWmBWiOI>PHa2fEuKcx!M@C$DxlZh^m<+D>{Cc0Xl$5q6CaxzkIKO@S2Ch(op2LsR z(|UIg)#JdxK|3r~-3GWjJz3dTXOL0VUdF(f2g)id{d|23B!DcWq@;+8juD4Ly>?EG zkB?7F!;c#6>kA$>?GFXtwJQ{cnX;g(OAv;amzP~r19N0>&_GH`OHWTv?wpL=9`2tE z*`nU0C1mx+itF7wOl_rj=$ZP)Mzh9B&>2|R?a66rBSv}2pb=w<=2A8BGBZC6p$VPX zo;FwnHv$qO)`(1Ow3?Q({7KLj@zd)Pb)186j6{h_m9(k3nXVG8U?)!scV=b=vy02? zQa^FEPvm7JF6*zq@UL-4bMvsqJh#^=?Eoz7gSkX4X{@%D2TSbF)%dVS-!05CEIQ$O zyp!|T{;0NJEh$45Ck7}{kWI@VAi%_g>Y=wU7%D_0Sh%^RW~zT{YhmFX6&3X41E`=s zzkkncwlp>6QAk?7-;$YYcRN-|sno9Rao&aT)w;g3IXyl3Yof@2Tae{{lwmb6IH=GaS>KH@ec17LJbS&f}Al znid=(x=`r^M*g#_!^PmfHWn6ERrwnmLyZ-em-}3w)B{aZR#vvKIP4^rfTyMvnH(8; z{rdID?5wJ`HV+L=q29{Hzi3(6yqctsR-*~IU#Nr%TU!Z!hS^`= z-7MCvUR(&u%gf7taq3ysGunpIXJBJuW2;qBS65V?R#8=zVjLbGmRVj};$~#52>*U@ zc`9m|i0FY9Hxwpe{yeUe=x7U*%Fo9K?GM6Usii0__T*OqZCTmq7V=)RN{?l%s(MOE z>AJEKO3+KTYQ(i%?Z<^%P1xz*6_u3s{&eo`?Saa9dVE}}H8N6Di$SzdW~+@O;odP) za;)j?-9B5aL_tOomAA04U}T)|OGfs=k$7!{lQzt4>$`$AKcm8x)$O~;2#8j7KOC62 za<$$u|2&>5HckrYE?-~Ywe@wWh_|imUM?=4UT!H#Nj2prYz7?*>+7HVrRcFJjlZX{ zuue^h2z_=@HO}koB>DN{*FlbSN+S3;$XZEBv!7X@%1_1Af}*U3$6F&c{#%ogD|G9n z$`zE9kO+3o@w?;`!Alt3cji@9RYgE}u#Qh1GRid>99rRJVq&7B8y?soCFQn?=P~M| z7fDG=YYBRJR^>)SK=?3(9W4O_iijvfgbv^dxDkZ1ii*Rc)2od^{LVWgaU_Ln0W2&m zaAQ+bm#3HY_04a&IAPzzBOt`1ex&!#S7E?Jj*Pej0`c($83jdAK|yxToVfYRUIZqx z#we~IDZ`sLZ@IVvHqPElR*i=NI@oM=GWu1^_gl2Qz8*`H_7_ZUMn-fcJG?*}q)sD$ zP3;XpA~cZSm90)Mwmt%qHf7pp$}(%S|8^G1TIXA<1FCWB_PqFjnb6xy@z7gUb#BQ@ z&^2t#4rNF?(O~i2QbxW|Kw|9Ha|<$VXX9uR0G-<2^zTu0o4oIk`QbGlo}R2abt0OY zsnb_5^!N8HgoK!H30-+l4i3zntV*k^t4m6_IWE7m^=fEol~flxSUR@23`VrHaJ%2q zjCw~S5cd4q8p2wei2V>JIJYsNR@ILZ#JZH?menaiA7&cm>?dZq}M#Q+&xA&o6GML-*zZlb#M`aqX z%&jPk-93kwTTP*D2&{e|E2@nsB_`|QU#AgOD8 zur;=p(aI4ew6n9@lYb&;3h)_?CmS+4Ih`-Xx?9w4HSF?!!$n8O_TK2j2jBbOhmq)H zzkmLeQB?Hs^1?yxO!|gM;V)9M2OXfonuk4=Bj^L!#Vz|W0Wz9kPZ`AmZp5I?dH1W= z7W6q}x{%EB>}*m>%AjRqZs3Cr9$sp|zgy@|=%fzJPk2~F_qXd#W;pGW)6+&R_BOV* zA2c);It4t(#=k?>`TQA(F)=am@e%f!v}ehP{SGO^?6=;-0$K`bBBdhh%oY#+qN*!ucktBqE< zLC-!wMuXv%q9v$FnX#tH2jeQr%DgYuxG2BhUaS`u7GPszPvyRUAN1@`H~gX`h*&?F z!HIY3}L3+A+E z5ZR6Z#opSQS{p$S(N$I5JwNZVJ^c3cFG#=M6kaaIRJh@lL&AOCQW5|2V7}(V?zPoX+&2aWiP`3G_5`XHU}Hq^w^m7 z%I4=%dZKH{c`+cBBGCffu(7if;N{&hg)zdMSY9T0_wjPEuMf(TnT4faM1*uabSBvd zIxH58t(F}grMS45v#2-;F&Jx1LH#_1>;Q2>Y>Rnfl1`a}kB_gUq=dIDKYw;<%h13e zuEBoo8uk7W=X1$``9M#6JoT#6+qa_FP{KsIx}@5m>1R#yyMUm|efuT@e=i!B zPYF_19XC6BURfC}J$2mb*wFw=a|rPIO-a**{P2fLy>Od51^&YTta zzH@bT1(*mU`OEvF51u>$QReLGYBVV)$B|tQ1k$X@k;|Q(JP}H$ASlYUwY6Xx1Jl)& z6*xphFE1||R9&f~O|NYs_mjNOf4?ifPVxD%#3EtNp-DnaOiV&z0^J2;#~#`%gVjZi z9S!V>ZeNIZZfy;j7Uu5c^z`UcxQ?)}@ULILqM~$YTQ^OU9)GT_M;m#FS-yJpON7om zhZjauTbtgFOfGtPL{?T-G=_mJMx-HR0&ilwO zhYRh=So8$9v7uomB#t1jsY>DB^7nDYs()zj1I+F1Q48c06jW4AlEdwqnwr8kH;v&p zve41dBO)SrYK$mIiD5olTU&1c5}lpRZ>&V=TwGifDFA?|p{WT-+Q-kYv$HcYB4S|b zY|(DaHwY*?OrT4~JM*XzMVC>3lC9G=~EZ|IdsQFAlboLGl3+d==x2r->Sy$&flA}NB-#F$KLLjyut zzNHHADouosAzeg7#CvQFO*Zo-+1c3(3mO3dLVkY#uCLvT1~gPdL>Ca4+d4ZXrKGrd z+;|)}kg~P|?lwV0eYGN##ImmQUPmqEkFYpmec7cDyC{9Tx?)KE_Qjo_~WUNKgGyn!TXXlMX}2_6CEgGJa)=Bo?t+T5I)$j7AFpYP7t zdLPavFV-Q8C+cWugG!>atMh)zXC{>u6%}1w{<8&=Lul(MrJYKy6hEv#&*3dD(8^Z^ zpS8{`8hi;Lo`#wn8;gyOCMPAGo1d3F#>K~fO+%xntt~AqOLKO5iWMypO#AK7?} zQnGYr-B9&BrabMpEE&3IdSmC-V?sS^0nc}NU7Pqu0 zt!z#ndx0;Q9|Vj}XXluQQOC%LB66_bC=7r%CQ_IJo+UxAUBur)mIViI9dBdf-~~36 z-s_uNpy#)@H#Ro5-@cExPh_7SUMOCTk4H@(r+@xDkt6hPoauv&O?hbOfZ2)iOTsfP zpAT*!mlRk1iFTMqZ*;3Q6Q>#px4n$Kyt15vn)b3zk3Ynb#7wE3Cf<$mxgBK-`e0iD z-z;BgYs=0)r<2G3(V&B1dU|$Nqua>OB#<>&PN!b|H9I?=T!{Z2Z=3Ipt%i@77Xu*9hKaCZ_R**hp*#w+7jHT2PE#}(+;=+c<+I|t7`+m(t**TAs}%!*4DUqcvO5k zBX0tPgrw=|(IY`DIotnHSyrZ_p}(=X8g1|H;c<90@R>`2$|i4XqumV%Ok~3G!52Lp znWY#dWqFbgH$>Hd!{m1)r9hN`+@nBjV}V0%`}~e|%AKaYjZ4 zA207?{bg=a$_D+jYvPn!X=W&7)up@h&zr8RLPs-lLnZ~i+oaZ2uk8R5BBIs#dAFyv z=6=!HV)=9qPEJv(p-=qr6uiz*R3Q?O=S}fIE;qV-U=?mxd!Hp^!@|Sy@bPzKcPL)| zBF-FNpU#)CF>ms zmqe#TT=t%}a&j&%kRW7oHgfYLI6wB<9qQZm%QJ>KWby<@Lj$jTa+~)r>Ohti_>x4L z+1c6cpk55B#s-f0IW;}K4?&N=q*>Gdty<;gj~N9$aqS=s!~KNDI{R@JEKu!G-QV9Y zbD8DTLnRfAE}cLQRQ2E8RYF`G-D3FMW`{>*Z|xNbiTyM)(fgxpMm@BcNRHb*abn}+ zXLNtXyJzNNeB=FpLQd!M2#766R}9j@O6oZ7CgayoheuE=;(O4pAPB^ zSMK9H7>j$g_V)kZRbbfUGoXq*b4dhF)6>(x)@%n03(IEEGjWXa`SWLU3ybRNDpE2s z4|n(2xVUk~F;7p=m8}K~c@rv~N>_e0m}P@_~@Lb9IG*QdZ-3JoU$0 z5ODY1RuIMgu`{oTrlcet8d_Xl9_7L0@NjW+@!>-pNp06}ISmb3d2NF79mZhy+&cUO zez#JHkVle6=NCL&z$igiAfe`8y&R+{>l+xXudRm&&^T?1CPlSLAZmgrmdb>c44DZG za{dScrZg?K!{!6BSm5od6|JMP^7KRo=lhpOH(>w4Ns!%jWzEfabpw`-(cvM_ffCT& z-M4FYAkPVST|#C)q$DS|^xl_bX0GK3`6XtQlt_gQ=^nrhnc16%p<)(@Vej-RzkmAN zMg1AO*O0#bfH5kFp-^!}1#vu- zdLQZK3g|)DZc=}^WeuyMn*>cVM7z;ul%RS$Mh^LalKa4Ib?){5hN58xtpEu^>&UUg^6W% z5JNX|-UlgBVuC+8#HsIHtK+6=VMsDsFAo!)7>mEzY2ieTSDY?11NlCkhhvj*BNMFQ76NwJs+Q|q{ zq&2JbTH|-tC?v;%rrB~Y<>E2|xW2(I(Mq?Jl|6gq&H#&3?<@bc(U!1LlCn`w-U5XP z6JqS_oH%S60wu!Tc2`wZHS-d}7#kal3DpJT3d0{ILA?=YYioO={{7pxiOEULAR-s& zJa1t>c0ZS+? zl~#Z@`fpv_#NOV%Xvpo)j~_o=^!KQ`yQ=IXnt-3ui6w`lk5l5iDlyZTii-~>(MY#A zZh~JQW2~sC__wmMa-G$12y^wLB4~I_l8J&ZYJ0L9hlht{h_CKQ1-&uP;km_H#tY)g z@IQxFmCY|MN-{#jDCHyZhG#-2Qo#aDeq&k4^G1yX3F;&nEv?&D-c!myb3fC2+9*(T?)>p&pg)}jN`jCpgiKjj;QPqM z&MxxW_r>$(?oPhv$WH|Zum8169{=!>A+wxzijPW{m4H+hFJ#kMLRmO*XWCR#b;{$T zf5VWXs*8)LXur^4YxE5XPIXOPd1bkk{f5Jm96{n;Bm8*XO46-`a&#p#AH#^4HuM}|vENXd0c$Cnlr6}7dsy%BUv z5Cko!r>RLt7YKd5pYYGm&#zQA{Nrm-3S-B{eVKqd8@QDe6(`5w!=aSL@)IX5TU%Q( zq7Yo38j@z zgq&@$xmUX-Lr8ewniU=CRR)sB%IF)~NQZ_rbeKoa(A*s?5y3R#b{ zyP=ZKKy6;M&3D-XK}x!^Z;W>b)^~U1)0yjAy`Ti!+uBG4JO!z#3-aq{U4~q#PhR3F z-sdDHp6nPq+1U8pp6fzoo$-eWnJBj*r#kEKPf}Qz^kop)Che*P`tc;dLV6>M$BA6fTSQgWWjaTwY`m_H zJy3fYM6;vm++M%C%h1r!hX-H%Pe7L=!or}w7~`zJijJL(9=pe}PnSN%2OagZqzPsA4Eh#}*faTg_1ZfevPWZvvN)Zh)8pLl(`OyS2H#aYO z^uaQzmJe{D(o?p%sK&FqOpN@Yk~frk1<|cGpI|L4El+>^5a8#}=lAXCEG{l4irsbO zVr4Z{R$iXo?u{_u?*%342O=F&$BVrU1dy)yA?>kb$23kH>Hnl%wg^y1Lky zn5pqeuD5SRaiKz(VPD2a=!eqN(+fXdU0k3c>6HEbF^x5qBZN2wJ3=PpYp+5JV+dg5 z@bE}T3lIGrl?QqY6sR|yzxVe}0XLeM2M;%pldq#O6p*gp+}`(0_4m)Nto#KzlFCT~ z1U!(_>shd)v%h|gE(|$1I7nO4+M6H);fIr*-T$n-G?@48+qaZ;x&TW-w7!mx*=ry4 zjq)1f;wD=h))5d9p=V4?T0L}`p^Ti2YKP!q>kwSPzf=J6m;j77Hc;738&}8Pr;J}? zb_O8!!sNKSy90GqP*gPWnc8UQCBei*QlViLmwx`{Jd1{kn#N{SAMnq!jC#eC5~D-xnwqm#g{9K1{OmJq-;INfr2^E)kG=A(EGpPVRngGU0B}tzDx%;| zP!JvM4a=X|p55MhJ_QW2MaPr9e}4QkZDVJr-MCsk$V7ApbZwWB5^pa*OCQVqOy=wM zBB&8ZOUtFDErg1nx3`w;gh)ih*o^dSS9|9Z`@hmy^y1NZPp)l#^UD@IJakyHdRbeK z&AV~e!PdcdrKG0^RWXt-g#P}Zt9!B8ncm0Ht{tte2sjE?YmO%Q8)Cx_rRUl+#n{`6<&=5B94-}2NsySic*RBzWocfs%T{vM~# zMG6<=NJ76;c6WbwiIxnlTOXx(5c3(mG}sQv^6BX*XOZROUhY>}eG>}{i;(5 zS#B@0`)F2lDafM^)mY=rMxV@<=IfW|Z6k;)gFt?=!@fQUl3!Ljn-QSFn?HYQD=P*3 zZmVS8v2%1qMvnG>j1+TQ6T#!(X@; z7_srLm=8R>Vi*s*NL_xvsB7F%&A29@s?nk%S_+D7PAjFzFgO~{fbM{k#>gQxEiIc} zR}^HFSv~qvS}%8Z^y|BX%#udT+rxw5Pfw?xBt9m$C1{4j>VuH{+tm$PHhB2#%(hM@ zAVA1koDy?~t+OLDtg50)qByByu$gjeqTc1t2$}}XxA?x5VcqPtR;O*y3mu)Es?KkI zje33k`nA2ios6t2gLTj>5;-P@g+;#zj#kXI%+~lEB)&fJ`nPY#5Lm6bI*GYu&qRcr zbwHm{65^5I<7=s@g;p)0RrUaJrsklgq=ahH*4K}X4T)^izif9q1{cC{@`p)r@)rpB5{%BTJ(uzo@F|qiWTZn;e^4(X533ImW80t##tq)>GMR z#v)lSfh=I8bRObMKEJSG?_dFMPfYZho*r?tvA+H-Z(d6aes>!%ri=`tm4eF3?@LQ*naVtjxg^Ccret%nun51*9yaxeN_P_t%1uv4E??)lyIb#Nni85UZR5b+OkUGQy_M8kHs?%F}h+c_f133Eg4Ug&k{KAEniwjQ^`b3nO zHtzccD?Tskq>YAoQ8kdg=vTHFA$00XPzr4`{QUfCgSE+=c6_81M%zr?Au%_ET1f`|v^+h*6KpqNKXjX!F?EJnj z5Eyu2A&u#-Crlev*QZY?97YD37A7{)0&p2c)vGd!TeBwyM4z-ElaN4+>kSgfNy><> zNUA!Lzd=-Uc6Rpm<|VXVn2Z(hzq{OATU&#iw7$R$fMI@a4yI{idzk=}(A&r;42t6A zPwtC9Xyb@p^4~?7U42XDJ87{pvOP!nIUD7WwR*=`uKo{U*b||U6+LLsnv%*@B_-Up z)k4m0^71I$I?QS2a{rzxy1EopRmaE1P6BBF;on|gQ_7pKB-`353#*g#7yNf($ytBi zVwr9(juS}253rjnP2>#5vT^$*Au#xhPPktWlswoFa_inCWfyNRY^YNwS$}>}4iSO8 z9P~?7_GWBhW8*RRDID-HF-GIy;DCruiiCkt zn#y^I6$LO9hwWI+w6~DPg@RX}8&pJ8rTeQLjtqspqZogJH?L$D{(Ne6chzb@Nn-m; zOI=S3Ed}%LM7M!uobcC%i?+H(Z+gkjevGiPnxd5ZqH@K!*y2iSNFk}|tW;@pbL!ul z+n-+?%*+Cw9&VtMtS8SFQ4wg~y?e(ZWFQ`}BI&2&?d_&M-{J8C7#J)J%$kqjn|i&% zsHmuX0k1S>!&pbcT`aHDWI7RO-+ytX4Gj%!J%2-~n11a4(9_okX=-6+=I2>uZQ!3t zo}uuEv&Bjba>2Hl?f3kzM+OHAJN0z*^&3E1dhF`@85Q;NulEH78M&gOqM@k?{K6;T zM$kf_>6)`YT=BUH3JLXYHAYg=M}F^cJ63{+4?j6MX=z!Sn``KOx^M!xwWk>!2*(b3 zGc7e0Bv4*j+M(_3p!?s4+BN#8=jTIgdxz;pO7il6m-d}`^;+!5CnteNtk#)`gJNj- zpr-cwcHK!G@rQ^Ai>srfBNClV3ReUwgMx*I#!dRX0#_(NNl8gdtL0<2Q1w={#p_$| zp1x@eWA}rxq}4_%D@*fW?Ftgi&GV&&g$Y+TnnF47aev{L z`{P`zdL2NKZTOd$m+0lUq|(g56qA$pfKC1Gr;OFp(Fv{@voK{R z1kt&zHG1CvO}(85_U6h8A%V7sjxEx}esgJYF%}JIpZ9@}yltzKlap&}5A(|J!*v^Y zu@w~W|A<#aJ`wW$Mgn~c>1{9XmO`{diH{#YCf6*Ftnt5o{hFE@MyToQ*MO6Y^%Zz+ zpm_PEh+-_LNQv0JM6@Xz{hEx7j37sT{8;d6<`(Vxj%sSyZ3vqt zK|#G4*S(%xbZvj#B z@L+uT#1y{S(!ySxgH`@`kl@do0ypJnu0s8j-;-pmYkRWE>@~b>ddO8G;)>gDtLvUJ9l8;ll?JYPgxjMLZ-pP}U-b_K6

    !n)KphzVq*i28HS~Aq=O(28lD=8615z286%Iueg|oQ z;mwGc ztwJ_VQRTgkMv6_u$dn1iVXHxmuWM;R!GpL>5&fN?D;`-Ev06y{Y_x#xCKxd21b#xNsoy@`+gY`^R#5Yc=s;W;|K0j(M zNE~MV_cS>n;J=S#9-&eGFW6fn5AM55e2s}Yi?%;G;n;=z@Dm&o5C|5{qisVY;sb}o zx!`A;k;+Scw|P#dBA(8HzX->O5)(PxE8_C{268|zho*-0R~4ae(xbA%%5yHv6@HMt z5SyK71$7T$8yIM(7gv0%Dl5Z{c@j}mePW$X!%-n9X8P})zKHrVg8lKb z-k_a{3{L5I@{5y`FO)jq0$N)$tX=|C^!a_Tv$F#`A?4@yuUuVJs9T5zBP}iU$^T&N zhJ=Thn3!T6`TX=^es(Ddz#QbD@EH{i70N)$@-lKE?YQNcq}xPcD>cYEd}4x&8OEHJ zWs#V;_{_uF>grcsmjcKJG+ONFFfl5nT_;6FG;R<&Nr;IxG&N-*uhBKFm=7C~C(!F2 zI2M8Gft*N3J}R0$fG~GJyTz=&G=ZewLdMr)M>H(H0Ee~#1A+PZ9? zH~l-E3zfvsCBr^wt>)%t1OMm3DiI$(J|Fn|7cOOvxz9)C(elvWQj4 za`AW>1UZL}M4c<<_TtAN?H zYYip!0|K4~1_r>bx%JEe&C&JvvV(9hJ>?V`v9_{OCRh=zA}1G#M65L0}r0%mNV&8X6iVBv?YX!8|%GEv>1^-QGSscRO@>+na_}IIw6Egh~cR26jyi zS|_~dg2F-`hqdd4d1V^GWKM1l-H0ct*CL<$!& zpmT-{1&eqm4*q`jbfB*gpP7FHtz3qguQha_<)%np;3*><6Q6g7VmCRtaL^JlpM8It9 zDAy58!2IkT9G*6gCeMh^l9G~ib#=!u`k2@$`!+W8X^D;5pGgP^rY9!O+mCYuyq*Oc z9+>JneHRA@2WMwh-?9IUs;uw+s;#fa=ph|5-ZeT#WQ$G7u<8go3F+)1t{ejubzylK zHhxq9<%IOF$Jd|tk1;VZ<#gI=Y8*eu?7qbO_m2C%q$&<7pTg^(IJI1MOXgNqkbOtM zsmL$MK_!r)ON)!oFE2|=>hcK)L^9>vhBboDS!wh5fuB(t-Ww7U;^WgUDk@s3T}^D` z1_*Y;l65b+T^}2ASn_P4Spfl?A*wMzBbw1=q2?OUpt}P6{5gSVZ)PATvoM8yC z{hL!25u&&rpSHjnwz25KY#tSve#D_V#vHuERzJxV#qC=3h=t!LOsa2J9( z<KoP2iSZCvPRzOB5G22tST257D{8GS9Kg}J#@ z`@w%(*!!X;EhEFj@9yqE3CG6AbH|R2k3+W?6&Fhuhz^P9zxicPPb>F&EkO(|?1k*< zscw}ECV!@X%h7&|mf!p5&Ugxa&%et~-Np^b%RA|YzTmcu_w_+>^&NZZ>ga@G;SCwl zeEa?#=-ko4L0el}qOL`on&0iY&+V!e$T9Vw>`ctf;by|fnB?UZS*js}(ZLO3h54MG zK3G*zah5M03Ci$z8e-Jz1BV^$oiwjBaARpuWe9?fr@o@RllXuHxgO&zYH(M3YI}2( zs8IF!`OqdRB6Z$oW`%%jSxIAzO-!J5BrE|6V4{+qpPk9Q9^XaA$HUt-q+YG5s*-qZ z62`4{$Fx9lui&w8UfCHxn(#G3k}2`O9d~f-z1sU64tf;0+2iJ!F;?XXzN)BWW6J$FeW&NuGbtgz;J%_3{t7WU`PBX| z;pe}(NQoI4_tQboDc>EQ4^otYV#1%?pEpj+Y;0|9#a_EpqGSG9C{Nkk9GLdHdi~@G z^h6QOZ#15)?hn8OY9~?AQpc?>*{MBOTwGkJF=}d>TBBZc%LkX2!0Zk(V#tVDODn7N z)YPxS0mME*cbi`0%Y_mQJEIgq+1c5+WMqmBzb1LMgS!B>y1Kbxxh~fjj7<<2`G@qT zvl>8_adSe%#l)c8j73ckHrn0D$jCr~yEs3G%nj6<&VB!$1Fr&cFOAK%O_fOdFlB6{d*^;D?sCbQ{Yv2-HsH1I>p6# zOJ#ok?@Xt|fpBQIqlvd~->&uqbed1$z^tsV)38zlYWOxbrbCIF_{OEtYC7;J!%CD7 zCIqTpC6b)Hk?!(aV)-Wmww=$Rp)gQm{r#e{3VrcPN`OX#p8w210n;V_1o%{RWE~E@Qt$#+_;V(Cu{FtmQ?j6W=ngh1s&Oh1YlQ2i$ZhP7ZES7F6p(Z% zF%nnxoVruf($MimcXD#bIXq=lUImS_uAqTDpn#f4`^VK4JtCH2eE-S$Im|1E^_B}DIR`JlZD6ReO)oDlY@8?}Bo!4EK^{18 zK46O~Vlc5QTA7()cg4ioP0|ZX!g0f6w*xslIi&T+axD)xHzOl@uRr2?_wR2^ot_tr zY;2{iGamzrvb}A@_@n-}gwQIC)5>i2WT_fQ=ANI*uJw(P(d!b`#nuj9jH;rny`88v zIi%+qP8Eo9!w^gZWISPNYHHgrK*O~LoxVSoSXk5bw6wI|;3td@8gXY$?mAa6GSMk% zx%6JHHkNjD@PqWS!U>;iq@z<-Q9(?GgF{XZzKjEC=PbxsyNYO?d3jLK!5lvK_rR2S zeSXubnP_VRpQOxhX=wrM{rKoVGxsgEGC4&Z7&Y)77y_1uosSrGEcbwI%=J6mZJr)( z#t^8fyAl$nd!KLE!l+b`;2=jXm~acxnDvLkpPrr$9TVN_J_X%w!7|7H*xEKyPuudl zk_@I@=v=fIPqUYAF&mBd%XAAcqp#n`HrgKQaS4o;Ki5fnuBoT3^m@gWD8eBYEP|96 zCUV{3uJZu%>4oBg_8(>%8NLqY;h(jHoYhrMt0~mRZJ+53&f}rc(eI4r244+;=OUt$ z_L2CYwR5|GEYX{=44mlwFMD<72NsM~ddavzg6dXoj>v*Fs)W8iH&GscFf}W2dEs zyFXuV#drZR3BO&m2%lL86BjqE>cEvx4q(mU*%@*W$2)dj=bx0=l&!I`v2}Iqe~E7O zbagXQQaC-%G|ZV)yPJ>{uW$a?mDP@hn2BRxU|7@D=Jpr((ckSVpeQovgrR<@docJi z5gIPA?Iqx~$4bI&@vTC$((`;}c5(4(2q$5`r^jKPyL`d?>ER!!m94;k7mJnJ?|%*9 zL|ysaU3^Rw`t^6eTiS*m=hcY;WFhTz-XxHViwmL?JdPV}?x$*#pTYIo2LE^Jx-Y4% zWt(0n!(|>9!Kp*WlSjtSH^zEGNgHEFJA?NgG{<2k)HF6u)UeG?O{Ghf18Ex#6_w3M zspmMyPx#6G4nOeR%G#b7IK38ogL+dRd3kv$sgXa^@28m@2Ig0N{QQF+ zMIIco?HnBNMmA4`tgwjqKFiTDN{VALzsjnOLa)QXpA{WM#F2aLHVSW6-jtu;Q?DBD zXD%&`_&B$sOynN#% ztjH%3Kev|%G_<%ltLc%Qv@Yw}g270PtMyi=n+i?I;bE)koYYJi0Re%eiOtQY{e<^Q zii*13zBiXbe(~f&OINTo9F)A3K@an}4^I^(B}b{+hUHaN3oQ=%`Wpf-?H7Q4%{g>) z%~@DjoVuPL;(jcTE@#Lp_Y&jbdHg<*HKhHBW&s<2FqJ3mJ``0NjJj0d8?-=r5Wq1? z87^i*&E?|Zfrf&Df{N;YUO(y^_*c{$!x5;!#l^+IPswS)KMJ7CdV6~hZtWgD5fBj0 zgSp;OQ&XFoni7+cxS)qC{n*^xJUl!U78d3$zP-Iwbmha}X_ldxfG^TutgNWmX#;)I z?))sc1gM^pZcY#sluRt?&Zv}>l*&7k6VJzDTU$FOM#hbejj)nWXJ@t`t>u@O_w;Nn zEHvHCU@$=4TG-pi`q$whe>6a%VOv;QG9`d)jR+~T;t3th$jEr5XfcMk9PPWnR1`wf z(bjhD$WdNi*X#sQB<}JG&E%-ase0~+CjCumP@~C-iTOdRMcYn^GBGjjGBK~O zu0H+Hwz4iWl!7r?!{>n8p{7^L?z7qM@@dSiW!o^F&e@cd90tB`(BiLaYPuIo#F@ud zs`Pch_0yRyce)c0$1U>!=_;*JkU*}8rXba?#OVO`SF0^}G*59E4veI0}$9xg6XcYS^R62+|Bv#X%o zQsQnLzmWdN=eu4u7M5WaK2W}k6`HQ?UHSP`Y-|`yHxu*9D4P{|E-Ll(x&GJ|E8TwD zA|icm(?ax4pT!#o25F21YrB5iDk@Gs+>lTz5D^g#s7_?_HP+Y90&`ees%dZcft-$5 zhDLHJUEkT!VHkLC@mcOC)cHGpe#lw&YUS@37{;cjF}}-Lc!`?qKEk8aU643+@i}ez zQ&3QxkTq;JyB*Uc2>u3W4B7IV@iTOGwgUmxJvJmPRPx$VW37WS%1fWpTq5NCtLYVMuQj;4sHljLh?x2qjf7iAPw(a8=`MU37tmxFJP%Ln@88H&dc0mK`i{1? zjDl*oM}bl%3NJ#v2NziDns4g8a1jKsiMf&*e-h44O)0e%?ibFm-<}jE@bmJHnKv99 z9IVs5F%hhon2M|OefPD zmf^tgcPnJcCeRe&yP1hSO+`fw4cHcG-w(I_pSZdd%g@KP;}jFB>t7{PK`&9p1&Q>< zlL>Heaz6P7WMyS}UTsaIs7q!l#(Q zF+4hoNU=-wW2t&DRD-d(p&|2qkZ=_PC1v00umz|z!|4OX(Ia79yz1$ZWx`-a3(cU<-mle(6%&pkiL}um3N(I;Ex$QuANs~F9!7br z+XQ;At2L&WduXhl)v8f5jxOHD5?FDl=o zPA;bA*g-R(0f>JDf~dMcL7AAE0@-;4`eI1+d*CoQI5^t z8SCIUx8QeuvObi;r&xc*XrkH58h3Y&i$*kRxi8<9?*jRDbvCY8R$2-qU4)!`4hnr{ zoJXzR*4D<*+dDKgl6#-KhV+9sj7}=XJ;>t zli4UZ&ya)JTPb^c93Ny)2uwMI33V~Q#R9e9&#zx4rKP3H9N3tcL+Y5wQz@w2t3d|^ zwTg0m!rAD)lCrLt9IY9ISXc9~7?eR~r+8bwGZgYn7lf zlwLjXEv0&%HGf>`3ckC$drsLHFje|jyP+vI`Rh%N3{_civ5k$5PQBenKOL6nFb=w!@$7D zdB`N{H8!+=k@|k-=0S{h?h=`^0)#kt8h91QK`s2q_C^XWs z?fQ9cR76CVv)GmY-9IXHRqPerRA|t1?A6+35*mA1#LKSmo5>1)b1N(U*y8A9u_#)p z5JcU|um@Y8(v{dz1eY92o$;wDB8y7DTi(LSNX|CTt&yy+UrkIWkDiYt%ct-PU$4bI zUiB9c5)$^uPz6|xcdK@FQLCutf9PyiP*AY9-5>&*-hyqM_d zUKl*R{JiwzZ0uLp5d$;*8A?-dNJv*l+r!OnFgh_KJv{*tk(}B`GD=}@*M-(glj~oc z?LQtLo~Qe7Y=dHX@;od@tIhX%XR_q6y-XJvB@vq*3VyTaD+A^ZfDgu@M*>%>KyQFT zeq+;i+4ya}_jGC1D7cDdS@+eeS3vwey1NGszIfx=F*&*3{&?G-lO3J&gzL?UW=wbc z<)RN9cdmm9x)_bWICXyC+ImNRqZJ7J1)_5PCKh2nxCi5{8Nny%vu%%r1h?_=ar~*L zG|Ze8pZs}vU#n?o=xA#rAtBNDxwyD!YEJ7TKa%;OksfLOqQBW!h2_DCsXF*=AU3L)S)-58l{DW%zUq36L9#`_eFyozrVM)v%3q_57a!R z{}pawN~gX@XWriaesKJ|@bF3oHX%X5Y*-!x!$<{uD+ShLdyp9`Dh}a`23<_rxnu*{ z=Qy!JSQlTe+_fIh@ATKxUjV64LsPfJK~e7AyW`_yu~$w}IBZEDLVgDvM;fB3Qki%R z{1ijNz*s+1XJ~V#`_A=4=mJ%qSQ=bMkIp2F5IB>ARH?;x6V_#MV!)OfV+Q&#m z9DAbq$x}=Q1VlLgCy0}soSwq=E=)P|#s&x9aX9L=`8ILAW`^$(ym3V7wn^Xk2k0F+ z8JQ6i`0O*93JQPDwqr3_yuH1l)@ZS9_4&vqOdom?QG=fF{9IQmKR9rp`N-#S2?n`y z#^vM3Dj9+&l!zXW<@Igh&j`XkZgqZv~?#GOcyu zZ0J4mR9?EOJCGqaHlSj%{J3x}rY0jPHE2cKKp^f!iqL%k0#c#>>-X@mVT*ei2rEZw z2f)oD!@~pB-<*v|bm44*%#4HT3;#Lc>sOWB(4QULlmLNE`=bfhHlIIx)?rOe1u|kU z55}<5$B+2l+MOlQR6@w4pHaoq%Ylje1&Zbs6wtLcGvG$t9G7Xu_^lX>@t8@Z!ab zz`(#OB8EUpW8n|)zne8zSF8LTKb;BnFCP(VoN^pKx|x~Gdi#!phtOx9zTaP&o+l&tHB(>}Wv zt?K%Rt{VCTIj_1X^vo{sS%rm#yXFJ_l^h*)0deKw<5R5+c}$s9PI=w(?&yUCcd^FzLC}54o|D?r%r2s_Qu7eUN*F1iH~Ir1xFYY}tr=J7QwE&$S0Ey?ChwLWquzj)%u3v7v9)fvVzb+n6XH!1H}D@ofT;CXd#ZODV zeIqi4p3x{NE5Ev{zP`H3_5`|35@a(0ro5)6h8qIGlWtv=%5GsgHz+FGMEplSiUhtH zvi|Tmg8{lCA=9KTbS+v*O^tw<*aI*|61U~e?QKDBZmNjiESRI&Su)M#Imh<2xVV4o z>*l7WA3Ut_7Lt2;NEBZG;70a(@4!~_5$A)1tm3f|Z2>uUyjdf%&+ z=VF0ke>ga1dO;clGWJGTc=EQayu8ix*hJ1oZYI7GpaAI2qz~@fV|m--1*R)kRichiHZN|67YlI zYV-a3_b`m0pdg>eFc^HtEKqO*`}0j70rCP-Vp5PaZl76O3&-cHuCBZeM&Ddm5C*zS zMn)zsA#r+os@!EeT^<}7ik@~;wE_t4l$hfgGIH^A+caow*`+S@>m$WU@$ix6-lhUF zI&enE!ZOzQq^ds=)o12^4 z1Kr1m+d~P-OtPb|q}&$1cgOv>xGR8dJ|`LLX30G{cJc6NsH<{wcI)N9dLhUU1SLlF z!RN3+a(rxznuD*#A-|wN!erTOKon?H511qd zZKf&=A4g@V#79}ot0yKV)JrtPu4d=vs@?=V+>I9~(sai$DP}`qG;AdvIvN_tiaJ%k zUj7CK#>O;kn4wX2IXR}(XokMWQl64M+o}aXT!n;MU?7#uRhjlX>2du4E=0T&QjMy; ze|I3n{qb~Xrx=8>Q}LbYq}m~~VQDt;PTCv0mNDUECwdQvjV}<3jSV7zmjFNlNmg>W z-fUz`MFzjeH57xCmX^VnX}RsFDJlY*up}ZR1hb3u?Ah;R9(45dbc2r;!yq+@GY%lo zGDNvyc?|yk&Bn|O*U2iAJT9N84ggpztgKZP`T6-U7!HbtiOK5Y!{OuN4=-*ZAt6pa zO%ew5qQB2>4=vn=jWi3&n_?fHvnOlXjb&e-MMFKpc8Z4 zZHhjkcDlH^sUN=P;P}(k)wS43^I;NaeRb6Y{Ij>md{J6dgiGPPQ)}IIq{&aj%F1eo zMckti9UUDba>E>PS)oe&*!qF7rokgDENnSA*OY{y>XrEGm4D>o1D;3@vGMU?NR3$Z z|1ONS78XPwj$ zf^G=(#SN2C6D@7+Y!V#ETDS?dgv8`O(fDURzLyIghThu@S;It7YruVuKaP=eaX65O zq2*azsHmuT>h1pX%ODX#vu1X8caI5)leY{*y2=BE`i&Wm@(1sTATtnq0TXet4aN+5oc`K+Q@;7#^Mox+UuqsB=_I%!LNW3@&zT zIXqI*CbwM;X5!Sn)!s;#rZ=>-Pi1cAKMoI?RfC$#mc-0(zvdhCX8#&2d31pl{gO*p_vPIrKc&Vr8HTEp+#poOiUA{rpFCnvkKxcC4Sn9gl=xq0#YeTrH*cBB*vQe;%Tku?X1=a9~h zA(F&1X1Eb zIXcf?J_BL?r4|&1O09)AI>n}tAb|{Z#KjXXx(Se`1>S~2>Txa|{-;c}mKEqu4#9UT zH8VXWB_$kka$N(1KdNG`iMfl%@*f>E#F@1u9TR>ajMsR}z<);sl=afpt+24r%Gw$? z#M{Q+erRwIcdWLdftZlc-PILEf@N)ey_j$K=T8<64!m#g<>Y{Ic*>C;_nb$%OSwY3 zU&FH0PF%gLlT_DXvB*Sqez)#c<5Ok2fK;$4_?=GH20<(Xwhq5@+TLDN6o#m%XsMl@ z-TV))nu3DOFXVh|U|P&-EQV%VefXeuhl|3DjQQ#;?g#VX=Us1+%^;2O-rqwIWGt7} z1k5Tcks>ilz7{m4`&AAUIzQZb%}j=1l53RdxUKet11tx6*M2d(3+&@1D=VmKPIh+S zfMtb+T2&@UA_~A9IG1+$3I(&tD6NwT$NC4#Q}q0#N?fz;L2S>)%xPvn5FEdkyOjtpSU|9;mH zN ze}&Q^R8`~R z;^aSkI5|04)&k-WBq$2Nfxh4QWFid>O>FFVWJH9>%~sChsbCzc9?jm1&RY444+A)y zT%eyq{%IxW#JEtfL6SkjvoJSDLPGZT^64%lKnrefZwDS|VPT{q2n?+&(w}bQ6c+pQ$WJ1V0~C z#Tstaop3|9NlR}E1wwgnz+q@8nvOP>vJ$oSr$z=DS}_tANTJuz@bng=t-tDOV5W0? zJdP<4gJm^bi@M>0E64PdQZ1vP@%FMiv(Ib#*uQR)4FC z^+hXNN3Z>PD+4}{nsIM52EMj=UQSSJRv-c=y-R8YoM&?|GQ80y@QFhIUyC5p}M}ko!y(CdGc~{U-@{1 zAMZ}5rlz_F`=_QjL`BmP=%9?d=tp7Js&A;&0K?xxg>YRVgYdDFKHK>}=nOI6pskc6PqYkL8RQPtj2HAs@nIHmSoUXR^P^v&pe*OkPXrL0+!FRuY{bFTd zIcU9HtgU_Bm{^+K^?UxVX*1o{#zyet#s_2L6~JH{f6`b9s09R?GO61O3kSx=@JO3m zT3VW#UWoW!@wH!Lo|GybcOYVS@KhMKAgA~qbw2kvT>OIn88SUR3BM%1#r@zzqbusR zgoK3h06_AEfX91(fBzq;(%FjxVKT@_fW0Z7;+SHRiYO>3w6%#W8W=1tHavP%Ht_NA z9G{+J9$hxn){fMx$Dp0}v+LG_FoBtkm=KrR{Py;iO4yq~!_3weefM)(ZC%~V z1i1m6H+x;d=vSV1SI+cD7Z(RxTW>|cFsbH4I}14seteIO4aCT@8cD=gW;!Yh4@W(L z>Wf9SU9CofBq${*dAIKvfR2VH=(a;Z!9h*^#Ak4LIN&av2@j7Wn`FuNR9;pV<--QuOGFT-XvF z7Qznl_)pb3A0%WX8U{2((Qb`sEUYE}TlNZuRvFPDV_Akh6fw{Y{1~07ub+!Cnn`jh zpR3Q#&p&(qnS3Zi6ubNs3^+XlL#F}}yUw#;pq^@~tD6toZYv=yEOH$1>jfDZ8BIXV zYJ8vaSlTZvEroVcv!dXi6qT2Mlgm4z)YOFUmF2cOwZ7QQu!p`2C}L-K*ZBQ_`(&~D z{{Fs_FclS57(rWgeSHWy$d8=?$tfwIW)Tq)R}^Kb;|5_8dh=es(2}N>mVcL@&w!|2 zp^SIQeEj&)QC&kT#uPvlo*lOC-`N>YFR#BdGjD$pq@~R~L#=Fyk0+qWOllIqf@%gY z{!7`A6vS|bpW>nl@1a9~-b34++tQ*7x@K#uL)_BR(xX9T&BWH)I`FTnn_FIfzW<}& z8#_dW(;j@$KqmPl2m>8mPHip5l!@cv$n4n3hy=EjBosuCD;d!n+|sT6hNTeM6&-bE z0#efL48QvIvAk!@WG?VkV@3)}Ng*M~VamR~Z_reAbja|?SoWIB$}mwYIcHRWAiR4Q zUJwf3VPk|hLp{7PoiII`$c>F>_hHbu0IXSJ3jU-51TwEPb z)k=$t(FB&mprx?u$J<|zDLl4B^}TYrJv1eD)lDrW=%O{i+xq&XfrFMV)mr11#wNlR z%Sx6q`IFPAoHBq+r-@20uBx!G7-dz%GgSCI1a6Q1}vJbVe{ZewEu z2zqpQxR?XB=$(_R>sbP;W~$ne_!v?TvsS52!VShofxrdfegwvWL3jr1@Y7KSJZs%? zOR;<0OI}@FU4EirN>ZW3ssTUTXa*Ikj`Pw3IZ<&Wl5IqKKO8a?sb}x~M0kc-hPg>` z>N#LyB?-`b>;e8VrHDm>UR~W#N6j23%?N-Me=`EL=+&Y;1p;{P#ArVwN2&)U57i6H3ek&#@>xH<-c2iur0wR04Vf#Zv`@KBLmE1ErI=Xv&VhawPEG&DSaF(A^!9I2r*f9K}f&&J+|AS3_b-~eg{hE0BGC@?Va zvnkK(*Qp|I#jULXf?Epy`R&h6+!GSJesSY=FOWaJSn++P~C6IoNf+Z9v$Jd1)J?Hv@lU~9c4V;SsEB{u-Tk$ zC{~GZa&oSyJiWjpBm~0D?&x?JaQ81x#Jvs#WB|r5guP#La1ix=$~QVqTk>O?ZwEG9 z#Yk(i1A+bIbCr|SK=`e0~?|J^YYEH~&mc5`E+-n$kP8h1y&G)vyM>+1IkrpD#83*kZ;vrhEc8W+X)scP4|`O zLjDVH|6aP_LSFYi2e`5afJ`Bk9~Xo;ZEdgRjz9?(BNk9!q3dVq)lPp>1;+E`=jv=V z!H88tsHv&xUC}x;A07|@IPma(Ta^pxBq1RYue`gz@9ydX3CY~lbgl*Ch-5Ns-#QBRHoGv?0jC4C49X3VJ*Zz>d+Va|qQD+tO4*)3-ne*piV9)I zF-LFW&2G-NA08fb8yw2Y%iW!wJ2kFYgoJMQ{??S0vBS!SMIYZlAb2Ua&#wZm*AvUj z%b8UyEErED1qwbSeU6_o_4MRt+mGaID`e*MaB}_Owo5ej`}-?84h}5yZpWkfrW$^< zEY|zW<70Jo^%=UK;S^Xe1mok+e;XW(e} z^Vd7ypSJw6PHpWvFRz73k$5O+hBZ&3%>jen`Zbw}kP=|@#AB|KUcp2LI;sote0Z$> zZ?4|@yO3HLqSWEdhyaSS-}j8hv$A8h zX<>A7AZ`HC~da!t1C62W*E1;-UU$Nq;-x zYlqlIMtJU8pd&)R^mRzI@T2r)2M22+^9mHptpXmNdUl4FRSg3Aj+D1x|HgDyf88$L z_0#m2ef(N|;Bs*^H9eNZ5o+m7L}9b{FJwOLi+J^7k8UGDMV;Rdhibmd`Fk^hS5-T> z+|26i>`X*d0C$^{#?1VQiFuz$<+FJWknsE=NHGh zl*5K&3$B+Iu?P1$b2qmYZ{EFI)A))?YZqHzUWE~D?YC0N7NGXm!4F>FB|A5_I-WUb zBz{1i3yooIH0YUD)AIWHLZa_W><^9nj+`lrs7o_|p#TX*CInvDH;| zYw8g6g%FINhZpiEh*C(TdJy8Hweuu{sK8|>6qt0aOL+HprI1G0d&Hk{)rZPSbV)Mv zY@nz~uK^n0ROaE^x9ZJ*g$Xs&(|eewVRMA$IKq^91%b?_JdYlm4SQ%_Tr2v%*WRQg z$K|5OXXqqf0mORL($+uSIiAI@#_`B|MwXf!$hfAvJ`2!@1j2z~VPk`X%xXsKHy;X} zclISb%X4cSL*M4_`~3$n(lM`2M~K;v`unXJ>FL|y{JE=bZ36V3j=2Os{ItEZK!}G_ zM;1}bB0EDN0J-@-kYTRK2Mw>aE3I3gd0j_e`yd3GsEbthaY=b($^!!$AEkbM&{}Nd zrQ}!EHfLEo^Cz>XHlbbS*3c9IpVkvrk6kgl3?7b#rK(L3&6*K`#y1PadCa-q-{II;l&u%+FEna4@?93XI=O?PtGQ=8$$<7hJnbriagp&${=@F zrf14yr@PU8zxbK?7_3BMtyHCJ%XGYt4^TA|N5ivT7vN;H6mbpS#m&h{X*KjbsC>#% zp}#(fd*u-!;8{;sdYKV;Z+UJl%`H~BxB8iP%))IMJs5WW`xcZ-JVKL8_ z$O5W*x_J9w3EDls_D0#-+tWXpa`qc6xKMWsD=6Ha)fqIb|AoXy7qI+ccUK&;7Hoif z5UtP+cMvv}zqu{YWYp9oXudc0z8?_*J0aT==`{IhY^v`ypXlJBe6sY{lw6wSeBE^YcBu<;lAA`c?N=izK z$W*a*7rgwKc?t7=pC3PwhsM3gt|0Fg4#4q(q`t)4TXt_8T5jDQS5{U=Lq~EwpX8^x zC`nMUzZ|}|Os42L%Z`wKRBUlw!5hxrEMz03kw^Ysr@+nn{#w}ZlLvA`NrZn}7A0wKEEpc_at>5U_P~aB%SZVTJOgk_8Az zE5>0m=mQO;)35FAtP>XI_ggx2@>v!bLGa_FpcJBi!9hl4>;t=kEmt&@hy_7nfC)?D zWZuVi6crWaq~z$SZUFLDXr*AEt2Av}?BEK%p`#K4XyMP9Z&mA?N>`|vAIyScL1G@mwrBNtcblwg!ed=|Vl!2j6LuCn& zga?Fn`VW%3bZ6J4Zc1Sg2zh{-Ilv|cfq;u^_qXAJ0c4FlJx`=z#?F%&ATPQEqC!|c*mb=mKE|r# zwL2R3_U|N7kJ4^hAE1z)$nHcwO*S^wTD%w6Uos+@mEQ;%)7|b?;wV^5dqOL2VD(q^ z)6a3VZke+W_=li#ioE6<#MF*=^WmB8SHH@hAYn{YlgE-0}hGVV)<$Hs2w z*oIY)yEPO&+utxzGXraW0@z3c5=@+p((<4nOxSZ->%XAcp*B|@TfBXZMeOLHsi+Kn zmgt=ab1Dt^Ur0$~Fhop6&YZng(mpTZJf=xviQeAc4h{~gRyknXts_avAvR2N-#Tyk z)l@lgu!@KNgyCuDCzPK!W>$7d^p6)yY!J0z3YT_}%e3zG)$UN8^ zUvzYIRK$fQV}T?;92d}DiY z2n{OP#f86LHyw?1gxuH9Peoao8NUr3&<;jpdEyms7c3m_TvM~WJUa07emzTQo{pYg z9s}M}a5#5tR#^3BaCA9-f!?37anaG5H3anL^kYatgG0kr@J0&_U~d|#1A&k z^|k&FDB@Gs4Eu7bbfc%hNdf^%PN+0Q_?G2b<lk;u-ZU2z0&$`| z>?}hLuNL^d(?zh>R;LdD%giy?SnhJfZoQ3dshUFg< zD+YBhEAUJe~Uj19xBlZFf|$*b}P1l%uh*u%4dC)#u1|;87WJHpMZrnUG8UHiO@r_QGe5P|B9o)|1V(5OYvU=$LsW=84crzyx%Y7lDNi~N0k z4KnC?ikXg8S24;!XxKY{-tFPG4P*@GDPf2W1qF3Sb~gclh=kOdepED|r9F=!*@)~# zDHg(#lI17IH~7Y+gp})SR-|S;YMWN_fpKw^=ntb_eye(ldV11dIh$g} ztR6)Zjws41pjCjFYrg{d+Ma$`fKrAZ^7gjZBf0%ltgEb@lBQqCT=?|ZDV%Skf#OXf=B3f% zCQr&9#P+$l8AMYZ!ntuA_nAa6cqe%^uAm4P4FciaQQ$`R0FETtEjub>rg$bOU#PJL z|7|!4d}ND(U7ZXe;cs`eI*Hcy3WoKYXONv9P={-;csIwrn`)v zF1*fl@*5T>x+{6U`# zF?`H%aX=_j$e|$GmtWckI+ZFlly63}r2V}LoOA*NXKaQ)&3*K=MSFyZis;Rm!z0Ij zYg{FV<>@mzFE?Y0NZdL#+np#188kPzfKSu_5@H{v2_fd7EB&rM1&dg4Bw7bLWntV< z-d*%)bgNWNPUX$im#fek&)qehJ?}J~TXdVEW=a9>0NYjNH^T#AP)cfb&M{`eA4 z(2=l2y}o%lxrOM5BPt?6A$rAjSPSsm*0%)^>8tAMf(-syVWlFaql>BQsxGZs@&bh4U+LOMzwD(noQsDLU? z6FIe>!2skQi|^ZGQ$773MohraQtLkIIGMD{S@&M3K1-apZmdBd8N}@7=2{`G<+03R)#s=g? z*tp{A_8$=jCMTn9U2hgwcdYw8_qe~7S6*J@=_@Kavfwf&mF;oM+(KFHU!FNS=|b|0 zZ}BaS_mvhG92f$K-gb0`pPG}mU-*2^9-SXtD2cJH?wH?1zpl=Ye@!bw2;m+B&3tW+ zj72$ebQzOJC|u`nJCa2$+uPS|w6t$FH3gWetFyCx>d`w8kr)6v@Se7QsOV_DQq@;f zV0UYr2}(QvSvdINJD~+=cIqu$c=~*N`$J8f2La(E`Qqa34z{B=ya`1__{SsqE?Ez= zSgL4LeSN)<%ykg&HBCqF=>e$z@yU^iFBFjVuO$t=$D^9Gj%e9{L9i>hSzBZA(4q*r z;WPAS6og$1nCVBM8bH(=v1D_*AslOcHwzLM*T&|fh1uz)B0aJlYHp4i@ZDQ{ z>(AZ7iy1>!QvFd0c~aI<(bH2y#)KesQ08HObI2rb550$S+T2f!P#93yTG{v(tIj1mk^h%3D+k*T z16@42fKKfFLXPfd)oC_P2(s-ync5!-h{sv-q(!o6$3@b$bRk$NcgdCc`T5=5yf5mk zJ%3DB`@%wFQ?yV3sh`Vitb+BqIqy|9k2$w&b^FtJ=LRIc{gXCR?^kdUzWXXs3TMpB zk>C)-KJoqvQdZVh%4^vW1Mvoe@zsEKOy$81$TAud8U_Xm3~GDld?y0~aIvK!NvN1% z?)K-sou#GrM42iw=V+~#kVa&Bxs!Vp74bxTexEyfeH9UY3%5F4eGn%@BHh>W~!`Hl*uZUl`iw5|L$3Sa1|2Rep|N9`9aneRdZ> z_EJvUJ*>8eLA()pbSQ*ja0bS=kcSxYBAA}!2|?r`P5|phLnrDZQ9`XTr^|XL0gh^_7lzP!bx2`Kc~7 zl)e{gPqyFTV0YWx*zHw4`XhydBd8W11&WUd{M}Ye&Hy*~Pchl?Aj$pU@*V3)c~O&8 zZt`Ov`7alltG2DJO`^ZqdnAI;?neUZsOl=cV50S;_cb9R4`2++?jwTf8*w;YlnG-;P0p^nW(~(xmQaIn6BQw zYIZ~Q$Its{2+!K?Q%F7djiErl#uxhQ!6mpoP1b~AV>+)5?`G6u^_YGu`O)wx3MYbJ z#$KkcHQk~Q!)Y2rRlUVRj@Hnmb`U4N0QJFKb^XjP4@Z=4H2UaI5BAiu^sYuDrAhn) z9F&^eeH(D(ju}XDlPOt|r%*qd4Jr`3@k5{XB(fGaV=HM+{5j*054+`hy;820Aud~2 zycC-+HuTkew7#}Y7#~+WmY^FJ4WB9oF;qSjV*m;WFf0qz=4 zDCrzhG+r)bdZ;$zzPNwNB)N?wGR@KVvoQRDr8a+AuH5a|wXyKrMF&T_AP48+F9h@l zJ902ep1i}Du!^!2B!&=ia2LnAN+w6e4iq|LfUO!!Mm~TgOyJPw4zaaG8ZABxo>3d& zwxN&MYo@A9(f0&WaqYIa9Fs>}n986mZSzMJU~V51TqMBI$o(tH#k@-u0;#WbOQH;Mh1OiBa(OgS_Z-aYW>JW6A@YUqWIC z8czn3fg|Rnlwo;GOkYT04-5Q>{o41#TgP%K_m|VcySEXit~;}XRC9)i%ZB9ILZ@Xe}@(aE?br7IYqvc+&c9#+ealYMrs{rzJID#8}7u}y#@ z;4@v%41OTgb_Hlr@G9JKwwuLY5!|UVe&+NBa2AT}_Cbh(`)?3K+=}0z>f$J;`MnN{ zf^is-eNm+{?$J1nwn*g)%JcZ$X6d2k^e8A>Nap9c)O+B6XfRz9OtmmUtL7^g>OBptSn*ZK$$=9ib-^xZjgY6 zn%Edfe?7`-Z?0x<;2A(8Fx#Bl5zaR%80yBo#&z=ck=+LRG>*KC7qO7*l>X|n-Kcj+ zO{slhzPz?=57ZPq+rc1;*zq{V`DjevH6B40j+s6Hhe*e{*0A!*Y$0(@PKavLVLx?D zm(cm}2_4;F?2%@x6~P5N?7la_{nQtCA(7oKFs<*MK}c02mrI^zRp6C@?k~T$jK13{ zOOgBIt=JO)BtS8kr(`;J_T5Vd?~HNDEs2~Cikm3(s!siKf<|yXu1&bCguF=BDb$}W z&R*D75$0fm?5AGUtgDsDU@ESXq+G0z2YyDS=48s+al?dkP4GGeHfYSwo0i3UfsVsj z$0viER+8N_pWH7|4b^&SQU<|ss9{p8o!r_lf-(&OZJR)e|J*K9y2AcQ%d_W}+r$=U zI3<5T;C+f0(_fHb%@~}L{y_CtPSzOv%eYw$bwY_Z{zJ?B0VTDoFNM<=`b4mF_*s@o zl(zTqdC%iW)mdsUS6b=^$3F8pmgcaIpXX#>HCGj}M-ob9ydTbq!c^?4Y{Okejj6$( z?Xv?f>QHBQ{EEmMJKfL6CY|@C8VHV#j*>qmbqRfE>0^bKgaaFiZ3MrE7`C~>tj`sA z$*0$vV|DC8kdh*J_~EgMzV1!g86*F}9*)YFYv{?@3f*=XSllh)RDVRpDMC$$ApG`Q#O_EW z(O3m>6Cx3u}lBRvB;_a%XzDODY)7?iTJBzC&EOGJ7Ih| z5bf9LUSEcULhgi+c;^yEjh@OQ9?$6|V)}K;$Ep3Tufs2J%=A-=(uNaxgBpT~_PFB~ zg8-QD;)p|Y?Q9E1@iP*>g>RTm7t>*3uNEQUy+HiPB)x+kxS=tqewPq9eF5SGUZDh8 zUfQu)EKiWHo+RaXT1<|&j{rp(P%tzgARs6pV7EwVhaQIS8o;jyz#s(-S1(61J1bjT z1``K+S2KH821bK_|I5nW)XbCK&QvY7!G6#X?w3dIVKM!QMvBMzJTP=If*v<_1gQGg z`gxm*r!SlxB*xY8+*w!J^X_W@+Vk0%QQMva`!~!XVLR>FBvex-sE7&7>}QBinyT7q zF~vPXmmsThUNxPEP2Z(skQ^o13r>1*V_MJ}Xp2{K6u^)aphEoGB_sRcWO|ay^<^k6 z;9QKfq|D8`#^aLZ8NTO_?Ry)tYx~3z&0Y;_!&@Eu3-&^Kr3?3;;sOE5gu6-uB>eXe z3E{?4DzNcx-l8wUf@ZA|-=^65 zb0Lg6n=02(BedzyuO*hx~TUce0oZ}=O?Blk{n@9?YrWzIVI+WRda6JiC zuty-e(DthGN|)>}dh7f}=S;#Sv=~_&xzRWwFxGW1xqHm_`-bE>U{?1axRyGTG*vEU z{StO?-vsiJJi~^vlsTC2Jct_dBDG9~$+U7md{kPmV3(hOBAitrg^zZmFwrnQe|v{7 zsLDmEZFmUZvn!kNfGUPL74e)!P0Ji-n36~72AwG>sOw8n-Fw@zr%Btdp+X;xIsP_O zxW0y8$^HWVk5zjvj+H)7D69zw2LjTD2LfXI7gvpm&dMIJ2W)MPT&*1J0n3%5zGc77 zj^wvjXLuOK8PyVvK@aj$BbB)vvV>u!Oy~$ht8rMXsZuDdTt#WH$0BlhS{t?64-zUl z`#YP9#p1B^NeG7|xb@Ncu|QRLt{18clYsy8ZKx}2OQ)bGUf)xXO?)AsAo)PMS{?JS z27Ms1Yo4QWan!U0CLlYFh;VjeY&0lG@jdCiea!s^qLS z7M&XXtvBo+9lk z?5XbJ{KBCHpgeeJUgzvB?sD#IPQ9ILt~O=-K);=+eOsA@ejgo`@<95qVS=?&QG(&V zCW+#=-)^|l&XMuHZ^4)&(6GG^6|B7xBRvtH+TCGgR8o0qXqGC>jgzRggI80 zOmI`BRj_mU2*<|v(TTa#WL;-RJUs&&g)X6tFEY1jl>{^XN$I0yMb!pMfk1Dq6_`o8+%B%sP7qV~)kF73-)z^xmj#OO-f;$t^ZmT;I!ni#yi&iHbg*0yZ&SLJOvF?|dqC$?X&q8W>ad);m?5MZxQraBN zc;3nQ`HMw*rEp3E<@xgip!JpG!|$!9Bp{I+TWHLbt<1f1qJwq&5N3;U4vG9h9X&9( zN+>Nt&g|lWdodhIC^PfQMx4|04`~f=6NFAOzI}+M&|Y@L&eOlSTydT1NiHZ(vT;&> zcF0@C77WuurX!IJ(;yZdNE1vF#-h;DqHSX=7r6iF9nYp1(k$$mE+S@~6-J`|8QCb) z4~#u|+d&FwpA0j|Je%x$nT$C8m?7~;q5U<01XXIf&Wov8r^%U2TkW;v&I8q_CzD45JRj$N@5DMbk;(#529=LGp7P z!lb4Hej47SOh1h3Q%!*+#!*uYix2%YN;F?3YqNraQEx)=WqE>Ru#e-L;5_BYwW06Cv0s>qw|PODCtDAO)6%u544Vbn2pawYUj8R-coi#wt~N zfC9A`G3ppS;%S(z9BIu8CX@(OR{v*2ZuAyb<|6Y2O69~mx&5zCs*kZu36Sin>-Z6v z0!}Q&ywI3KfgAoPc#DPxM@L)Z%pYa6wxS^JfeI}H(@RJ+Jb8RCn%d>b>+)NvaeP64 zmc!1k4#?fzz)SrfsO6r!-Eu40y2N|r6cw+P*GOBKBoR15Xa7u&66R6|NrR%P{uKY) zo8~mTt$1vm|0F7SXjwTY{vid=ZgJNwp5pqXN)wYC#>wXcgZ2Zc75e?Oi;hMZzh3pKu7MZM^cXAVL`Ru)DQ*jOq7Td@Zqg7#9C+crJc$jK>E0=N zV)(g24~1^5#2zLGgUj&e2pPiu5tzrd=e8H;A zWgSMM0bxnse>&RB3S*@WAl2wqL4kmpAb^0F{>7u6na<_kF8P1l!hUL7k=x=(erp22U!hK;zw?o#U)P``ljSG0%FFwUxVY!M+naHC(09QBIawpV(gCka<#7AO@AC4TnhPh>x#GJRObN^u zu*g`|z1y}}wa3=dKG*q#%n`Bxmjet2T@QP2&^lI*Vp|0&!twN_5-n#r6zi$BJao!g zja%!tq?*jhiF|mKrku5?OxYQO6;@n((%Gq^!~`G1O$LQYajI>;lGqw5R1#~x7-{SX^+r>iZ5>D=bVjI#w4?N?& zwcH#G`gxXtD~TWw!A%lg5F#aAROpS+Uk4WNkYoW<1*Z+7dzmTFzUil+ zuh+gVBp6(X`|qxW5OnA)*%^@LLS z&v(J}ZUXbVnsXk>xDy>%v*Imhyc;qoVrJ=bOg{-H*h z>1&nS_fJaf%g(P9M6LPv`+hIb&ly?G?WXrB#GB-f{e-X}&r0oCLSx{5lpi zV0kwpX2&$&Q$&znG>tQ&W8D}Ci`~L}IP&95rUlp-dePUU3Fp{}sYzTyY!Mf0CQXKU zNb3b|d{yR#FUD@CIrvei!vpD2LGpgKtQ&xk^co$5d3%YF&mgWIMaDJ zTe+G!yZk3WaSC|&RMu*s2LLFj0B0EE|NJljOaL&1iOs*klYfASBsqs=LAcP{SM*d) zASK*^f;4@kuv%3s9YOE{X~}4gBU1^f(W&UBu7kCs3{qR6Nu%SrvAP_MJ2O`|NQEGw z`~#r9U{sg}%3LonI54QN{-3)+X5ZTTzw`yMKnlP&P_v)5QQ^)dt_Au@%3kyohElxs zz&?@uPw0J%9bH{J=^||?r{JH}bxt;8uBcK^=zL-5yq~iS519mK^d;Z9>KxO~fkiA{ zkI$NIxuX*;L(wwJr{l=hXfyiZef_?CpB?*l)Z>Biog91R+4GS(i^?acQR8H!&!`&6yp|T(uZ-@s(JPw| z5nVv}gR)Pmyf=Nq!O>w|q*2HWm)Rt-N8ap|v1Drx=gK;xu?QCVZu{)%N=KfPW^+;2 zaf}*qPJAfSz+4;=RhH>^KGV6CkJD{B2egqy|8uca(_pf#^o(6c`G>ovhgrtjO43J9 zxEc`Ht#yyprr0OqD!SST!9VvA6c80)D`?y?qTWIR0qr9L0nz>oTY;I*&dAx+!Q&s` zBt~<~dAl9iPv2k6CWTst8XkQ^3jcUG*5hbBDG_B&nkr?gr36@N8jhE=pG;6GsmyN< z^Z5Bm#<^3-nX|}N?ZXh!$;vhFhM)6}X{X#=rG1usV(+oY-m*qbC0-{M)nUxQloxr` zb|Pysxw2rNvYJgzbAEN%TTijI#HWd=g+5x^3g0v75Z&C*Ib=Y|*1gl!XJIitQ*OdCClRq95!p!LiL;pjTw zc0g!^CAfixIz_L=xc}DHli2`UDw0o6=gWa$%W` z9Lx?o?BJ&hLhwV9u^{pvPsb^ro~obDH7>y}e_E`)_b|s`-F=yKWc%ah2Lt}tto<4| zM<<&A2}m^Q+yJ>4g``%(JxQkn>JiTlx=E)4nS^RCl2?h{4;qDPS!D~c2Vy>Zrj{}< zht@mD^H>GW43+(k$lfP>O z&b>)&`UX&oZCe73%5gO~#34f>W8)tz-R`*PbiZ8bQ^mvI|A=kZuu1kojx${fX4u@r zs;`9iq1Ad!%?~W0l?Axdok%OAzmF0f_Oh8WWs>)QqUO{pYu(%7y{3Xz$nJ8ohsBjl zJW^S>dTgGXIfxQ>Y^~NRU90CMej*r`jUqqM29v}z<{k*nMyLG5SF?h7^Yn0$6D+C0 z63Dlkq{DsLRigyagR`B#Xe^E~OM3phHTV1%(aGjv>Ukl?6u4Tz2{ilW*=~ZbK|Ie6 z+?YL^=OGzgyaLa8?|ijNw$o4pY0+01J>=fHnqa~|PM|DGWnKk#5(r#ZtlwTdexu4!+teLs^{ezx!%*C_;LeR{j_o7MPxB_=@s_aX+})bn-iO6QO)qZ8nu>TvLiU$ zd~g{e@br@FmSH7A{9*CPO2``ymu95Dd#6=XGSsfL8SprNpGvG?p~F2hZ!Njk{KUr8 z+smbFpVVTX(u_IX6DV+1f_?TSsmGMj2+G@tf*Z-aRcF^0oO|T5drt*>W=~z3*~m2A zTGxyKmY+XySoqZnzexbi=hx=&6gFU+2$vJP84(WExmanb7h#WxQ-6;MeJ+x9aXOad z2KBfy0$xkkjtH}g?I>S^fGN4Ikpmf^^ytGtOp_yC%Z#CQ@|35ku(4tC#>(iH_)!CX zKP*Yoz;v?+7yTlr5Q9J`xN%Mwg3x0}4QOtgAf^;E9k8;8>0#1@N6T4O=WEz~MxNTl z4k-HsdDM_lLg^CYe92=Gk6b@9Qu@)KA^is>b`;2vQ-cVO#LJ=Qqco|fCNz=fzR`Dk&WW3+mA~X^Kq}hsvk0f;zNXk&NB?vpeb^W^D z_5MmZ5Cn^>bA~v&V5T(Ne_TZ#h{D|2_ehoVOv)mZ-Z-a1-X5&Wdfr ziXl5jU;R?p1VTSLar^xzhnG|v__pKk@!dfG0s~COwIW}sUAe!u8(|fJQ>wJ{W`7#L zADO*YzP(q*B=GhmGDXzCyZi3Xj8D zmwl)JC07zveCUPf%$qh2Gp>|gWC|e?{OfrJdO@2_X}*WGzRFVTGU4>< z7mUg7_ZR{BhK_G}WgU>n4)cSF`)3?NcLi2Id&f8sS2{a%^(C zR8_j(-xi~(tJzgvGsuKfyoF!7=UZ~>o^fMBw#*rDE8YC54D(S6OxI<*@s^!LOHSnt zrY^& zw{dkIWdth7EqN!9tGi5H%@EWTAMs$*lZi62Li@THZI^6L%LQM47ICzXuk& zGNHd}2g`Q|_I`9;Ch;Y(@@oG;+m|2lur-K$!L6qI z_E?h0BLDt(0~89VA7D73eile{102#r02e3U|7n%_IW$I0}!; zC2{*P;VrzTqW9(zS1fguZn+iOHXRAgU_0GP4G9`;k0_t3iIWPq>lQz&)kz>eVum9nQ6toQDj*ApR&IyEx%mTJR{1HjG|x zU$_}(B}QaLNkf`dTbReH64VK*5Eo47k5DL43y~`JQdtEiCTOBTV8x^EB?SV=F}{0< zk)rbhNL#l5<3$H}K1q+1XAG*M5nt}u%;eNI9 zB-qpT?{XV}No6(%EzE&LukuyJgV?+sLro=`w^5%(Wn3%p zr^?eO5<`Omx$2wU^KSL(DQ39F4e|Tf2+0?M<>bf_kQCWCe5&@qfZqqE$jy!XQ_9^!in_sL@mI^d&rhps=ENqd~&gidCgKrlBcK} zGs#TO$>Pa2jjijyqJ7uZw{U$I!<)31y^O)eSt zE}#DIZ@hUv-R9w?&_qSt!#jmMld_Trv-EJ8?9w4@W*WaIrg}+?O$&TMFv}thHFVx; z-{*7Kne*Zx{|cb_Y9dGA&#~fvE~}S_xBq3u#5z%f;p8H~DcWLD*u}}t$gDqgG&xWf zGPmv+3%R8oP+Z=F47?MUpnghk47&tRvIdiYnQ3iC`aPa85d`mIN5CjeS;Nn2(F^_9 z_a75j8yO-^#pX^C1em}Az@Ye_&y|0IcDiYye}H!Ic|V2wC|r1bk^1={SRvh2bK|gB zY^l=K-CYRYejlD}DN!dG+hk`wHM#yu7EuAPGv>ZsVa7Kc5LmOb`r9{FFTF!xzlVK+ z{R*JD4P^l=8&OG7&GUq|uKp0aGW}mD z-A!H3VM`pz_pEMx5b6@BF&^Y1${@N~&KgoaVbC77@4}Tg0yD|u+E0=^^6Po_CV}{O z@lRl_gfbfP0{NWQ4p(P-r`u~~S!evRkhR3si~ z1b!?yEzUv}zlY7;3hZp})>d6!N8g;hLhh}StFC}D|DaR8p{;kaj}Rf75X61$6vF3M z@aM27%ELW*5|52pDb2T3ZnP&@3%=Z(X}r;c(JI4}RXYF<7m}EbJ8<&uDE*U|@wfH| z4irg)7(Q_ZhMt5rWMwF!C|R3#Tb1&M-<|Nx1{o zj9LewolMTTEe?k=+GmoZ?L}8fD7Bx{OSAcKx?(L7jC9<}o_maXd~-@IWp^?Im7fE@ zDkcdQ(D38~gS_G|&1S|c=Rc5@=g6uq$LG`WPhD#2m6xFh`NXz(=;SE1hK= zB92?P)gHqU=l#q5<%CuTqrG9vfINrE$jyhCN;y=w|4#51XOhvZbiH3RvB_n zh+3ID8w1s-)0i&iUhf&t>0{G`L{&#QLS@0K$EE}u1S7ef$@HJBa8$>&BQef^_}!6W zN|?6I0?NrCTsS@rWB=nQlD{&zb7|m7iZDe9d>Wb83YEdCxaDpGvSi@hnbqZaQS%}% zq@$27UJE*p3GLNnvoPMPnr@ZCBz`V6S>*LP6JPww5K>XcwM8Yzt_G$A9Twl-y?R&% znle5PE8se+s=K<0dMen((1oz*upddMC`czxZfrD+b(WeME?L1efpU4FDVyIQ0AD8) z=A$AATo|739-V61?A@_NZ9YRx!bhi&wFjm#Fnn4c^QP&; zruOq)(nx(c%1ytdL+vNq)z#)16;qd}k(dx8=wES?_)J{yEo@Xf;?8 zjNDA+?+9*e~bK#LIP$347aa*PI6}5m3n>&qC^S4PpWGs^b`NFw555KE*NHy}A z@Hy42ROF_0uXt^s)2XPZSR;A#5iOK#<&;;&k4mXjf8Dm{wxT7j-HQFY8$}eNjaWpy zEefpeYlm@9j7C!wO0-^E@hyOI%5`iJ$qr&U$S}gS8`p^IWp^|vl+Qc$*j%hr zsplH8*cPckI%<{|y(usVVbx-r1_({UT4|aa85|;3h6TN~yT`;B25Nt^Qm zqop77tQU(+_N=hU_=E1O1woBx;z_$b!`|lZ?@S&j>krE3_rw7gBOz{Hp>9d`7Grip z778rs*S_t0S&)FGUILKY%Qeq^!^7FA9y5`H@*Mc{moS1o#s%By>)xYd3>@{Nk5n3} z{wO7peJoiG~* zg1mK!bgPp*3J!L1?Kkgz8v>KwVe|f&Ajj9L?IE65iC^4SUjCJlM&R0ejI#&-X3&8c7qiN@W%YpKh{fX`(4Zji8LtSeCqoID#ijXO?SlpsR z2o)5*c_Lk{actaSqviOycZ;3)PCk|P1ScB#!u)so9nN4eW*e=eytt&Ma@Dm-t%~wc zK{*x7tfO0FN;g-T+*VAu%+yRdEwR!up;(`aj*5k>=lj)9wvJ^pBXjjoJ~7p!v3PS5 zt$7o-W4=nenv{;rKG3}-HB&%PeLs&4SBl0&nYyH2T&EIlLpnJHvVxkn*w_PK%)+%P z6@hIdr*@ccC|8!MCwYE`CeCBrjb_8iXthUo^9n#J*%daM~NEP&aEuui9*V1b(V_mD)PPzB5PB% zd-lO(&J3QEPyrXzEGyd0n2c;tdJ8JB%3Ig#5yWz^ePofdkxrWuIC2m8TD@cuW8P#^ zv+gGUJa4iSiA(F8S!;+n|B%6|*ED6}!48h%r*RYa+^4y9qBluFQsnc-dJWfrU`@XG zl%mlaG46a%{DpzelRd~0- z-W@@h!r(94COixMB?4M5gBo#N`oUH8XKgV#kPBK@bz|7AcU`Kpg{x9V+Y9&0G-5GLQhG5kF4-&U6kup0WCbYXcs|5;@({P(0wKpKzvbnPl&;&Uy0=^aQ z&_=})C3oBGjP|vHRoZ!ec-t*DbEmUK;dI|k0xr~nUH#%6F+ZnPg05CV_NRX)M1=Ubkb=vb4E&lQ_x z76~Bu9|?G~?fb|VJV{bpQ{u_}w#+(orrxN7SX=YU(?#n#o>~I6>1|iKoyFyDHcL;< zkHQ}MiFukhmMr_*j?Aegag0;79z|3Dq-J_Ogdv6GWCrNz8ZAIF_exdTxocPs7%V^hXMlD0+=c zO=ieYwW6>mt`NNHJbXHxQuh@GyFO+1EC_DKK$G(o#%7shs%K=D!H`^}L9W=!Hm*t$ z>Rsm}3h&utB*IQ?m8=rZ8yHWcaY1-rkqF{>|Bj}U0)tF{?uN|BXl2=?o106tP=R%y zqAep;4YO zOC4)jInq21Vf%#-z(-0;jxVMxONetHqfrQ9h(41Jwz=yJy@B%OE9|)G+4xyd*?KIC zHb_U94Lo>krJyDFYwKt$@cjlaX;pt z*)R$sD^$9y=It$*VQgKp=ZO)HpI;BE#3ce9E_*Uca8@)q77!$GW8>fZn(dzg^eD^z z9Lhm^M$WbuTBw!^Hwp#jDE#0kX>^V?%;dbQ9tom*p{!2}w< z!vTeZhzoqRz%a1(0xe?hq(iy=T^2xdq_8>KsR1Dm*@gtCKS|TbG>~EEy-yz)O_h)%UkMb-Bp_=dT8By>__IO zqB3@2`W@}*{EI|O^nM!!vA2s}Wm32EwC-}q2ysFvj_!(OA?{w>=b_qb{xCUZ)k!@1 z;Ctxnw@rpm-C0kT4AGi{jfLafpVt_jRqxAho@~JZlmgEd45ELUJs|uZOH=J~O3SZ> zt+$Q4oDQ1jUZ+!KI`%Lcu-jzKt(yahHhMOH%}PIW)gzsp8bj6uGHHN~Gr~F7c$GoV z;NU2Zv)x%Ko2oxM;V<~MB0AP2R*$f%7r#926Fjw1-1`27@bb+oO5$#Z2B-u8_HhFU zFYN!bXq1J{$qc|c{Wo00TZzYZgCB0|g9ge-+>%2gL~4zzu+$%nGMyIBJUnHZXRFLL z$>{4np#;&FRh>4{)eCSe!gs1Fp?2DvIog2IVO;n4^7d5g>JZNEEQ3Y($>Eq8R;4cgP8WQblMv=?hRIjaw5W(utCB(yG5~mBs`N9?z zp;adV=L93y60grZss?n)Wayfj^$QAoh&wIXDH7*b1mowPr--gUwj0Lw)_0{<^Y3W^ zNYvoZ18(#$Qvl;MC!6tedD<}P*V!U50j=?ftJBzbDhJ38s?Gs~WQ~C}8AK`V7z)uB z)94JHmer!LKT+{4#hAJt&OwE2f(yA>ada^1K8kl^fp)%p!wK(7O*CIwMF{Gc=9t@< zuUa;m@v4)HzrIiTfTQQxRLJO`^C)8Z$GW1tVBy*1h=vpr5$8{P78*^voc3t<-e(Vm z4wURGgh+{GKflA=ShUpCk!vip9K#&k(cA+Ivt5fjWSNY`pq**x=ns_diU#|xP%A>; z@`mFL*<+cHGSaSjufO!4Q-Y2EP(K@c8qko%rE9N8H-UBq$0;LhzCB5$76KO1!P}Kw z4{U2+*F_p>!!#dF;ws#?d_w#ek^|E4?@WvT64Cq5kp}DEpM4j72XlP`0Nni-{)LBW zltgNnDQq!d8-W2pLc#ypcKXjh$;e9gcLF&eq*0FPLI~hT3VQd9_-Qo7c+e4 zC&Gr`a_G~E)ZgJ*O4Pa}W70i|Yln<83Q<&^J?k}eTZDJMj^x2qB{r%uevRShlt#*x zw9cdX69dmQm9ARZ{YM^3RLqJN9D&D3)g2_dHI@MvuNwhkKb848VX4q8S zDYWwb2n?iyd$!(e%7~d$uD7=T+X`RAvsS}i?_nNZ-%Z@cdZL2uKNc1Wh|(-d;<-bm zEd?<9Gk}QxuUCPC&dAu&(81j9?~G~Vs5%4y5GVwAY$Pk?`g;2(dx11Dhe^8T#jO>{ zFe%I5u9L)}knndJx_Wi;p_^6D@#NQ_$`N~`1CJzW;sii(qG#LWH;~XXF25D;VWuGM zonJ(`Qp><*dI#u-@~V}ndlS4DwrX0t2&XZ}@VTUiZNH-(*=oPXsZ)&89MMz`43zi@ zxpUD=kMsHK}()#Y!IFlVl{hW^5^YBpph%#0Rg(5WS`b#DT3u@Fe=_H7~W>VQ=d z5en3=vKHyU-9|a@!HafyiEgCgP13S_V!s z?j#3pD6gFmrlOY5sL4gH5-hra;|O$$3

    4`emAE5=ij?8Q`1YfbeaFv|( z%d=f4vm4s|=pMrfo9;uJgUNex&qPjG;PfwgiEmki4%F%?i7ID5#SVV1=+u6N{wn^E zG*q#rNK}||Zv&g;iNFWT+f>Vuz6=BI^$rWV792lcV^Tvj@P01B@z5)Pl3E#UM{0?; zLuNg= z{-y#)wiuQn_UuH^u6gX~*Jaxm$ms2?HuWxW{spAP;{L>O=v?>QJDPprIEWhP6;>_A zp&}+L`to|F25V^KUG?So!ppZ6XglM9*dAI!5OOI5<6)%x5Q1uiDEk!~=RKG4hs5aX z%zPBzrC-s0s{lp=cjGsPVZ1B;wqmH0cHl z_L$!pOa=YJ1vZm1JG(F~#!=jM2#el(83D8~oMuRs^NSv>$Nm^~GZL2JTT>yamKB4V zNynV?UNVTJ!}oKi85#|o56JgLX*)>aY2f8*;$7674^len;UScV21GY*#+qr&k}-iY zPTvt9*sAN?C+@BperY|hx;@8q)eGy^rMkM8mk;UB)+3XR2;u$cQ`2ltHaW}q`G7{x zPq7|iUNvN(P5g{!)_z2Y=VawakJOU%2;Y6X&hCzc(PSxV_^QqeU7g{iwV3+Nj-c?E zxoW)W?B^CL(!1P^P?ZI=zF__t>M8#T$~LvUI8F8NGG?xpy@zDf#eU^Fdij3+^l^E6 z%j%-CXP$MWbud{WsH|iWI?l;1xBq80`!ECf#PdZ;t;j=b5$%pmi{DFCnmN)w;^CBn z|7{o)2*V2cE~2d9?=y27wNK$zi&R233JSZYaQ5K!Wfz)!*x@kJAr~Jmys-Idw_DC{ zgAakBU`AMRan&ZdV=?IEKE`TvgdgHU`@j)68`Y%U1X6gM^HT+li3P3(Ot+cx2sp3PeYhdpf z_?}V@6pQynIJJLM={iB2)Dl<_r9HGx5SeXmghGfF;{uk-3VkO{rI81YgsO-2qb98h1W{}+erGWyxrs}2w2NwbY0qPkp^3ADhR&i- z$A$G|HchI3)<_cFyLrN=mmazyzKo(}(b~IdxC( z-uS*}7P$VKkr?$f(>Z>xyr~x>!Tx6_70l-ch*X{)_XMPIF4wJj0Hckz*i8L0gah#w znn8HLY>Y^rvRKKYes(QYatg%-+!vqWNLz<<<>BKzkkJ!vQLvv-Lqd~?B9Y2_@M9ld zd695>Hkl8Dh_`hLC#j1XoUxWq_CdV(g{?&s*#U|%NKI?6IQ9eR`uaxl2P>K|z2h4l1y;~{FVoo_ZgKc1>#MoVUZ63SXb~w24IwP#`8QZ} z1}%7N9gnahQ@P$8*Il%&ttP72D?t!4TXf7n&7`lZ1cOohVMP)1btj#L;YD7>IX zJMs^&KG(A;7lXh1zz0j*oF&-ac=l@XXG9od?-IP;{#q}@e65D_7j`y4g^hbOw$SZY zUB_#c&hYm-W6zDf(M7lqUJ==$L@^-LX%;p6kjujT{c_ zM0RQPkC2>}-=gvxcqNlv?|K)z<^UP1k?AR2Pjt6y5rN+>2V)z z)}K!H2Tgf=_MH1=%ZJD_+CE0#qvv7vzC9K1IbF|ZTBq4r`9;>^<`U}=xx;;!!nooL z`;OvG|322V2{fBiJNaX^-L+FvGh1Ge^o@B-QI9bK><|8xMbse z->5^0OqtN};>MaXSz=50neO4z(Wxc_qSH1UL!<7JQRv;H?fQ>|Jcw$KU){t}qqGSA zZ$^w`)$1N27z6KI5JsTARnkvUvX0EkZBLo$wSt$mEe{cn5^n+xCW1&{G)RZw%af}3 zt{^31JJd|k@X@8zrFNG3I6WQs&RpY0@Dh!|GD*Z_Rkf#oma!^1*@+XdNs#r7i>G-V&n+H$gg{HwI9W|v z98FwuRp>D;i%H}|*8Q;5Vpy}gFY~OBDwspf(S=^`&NMZ7(An(c!H~~tuJf})$R6`B z&;}2W7fJRp><}SWqQf6T2M*dAqyrFW(lw@Lv%tH-VXd@e5MY&)c54j0#v4VMcSA1r{2@M081VV-JTqACqqa!-5%@9R114`aJL zrs1Yd#Mf_aQ3EE(ZN`Z1c|Ap+B4m_%sCZ;Q%$yQrzp4YMcbIw_;Hab2@Os# z^X!O-V*G76-hMS-40s5CeUJvj}u^ayQVgMqNQ-Fy4uf0-MIs?Fm9*hhfoUIK2 zzNvP6pH1N3$n;)AVbm=!SLgy3e0jf%T4+tEY%p-v$Q96!b~@C43OtUbZ)M%`^6k+v zK9bWas-h8)95{95zXQCeEW13tGSrY;`gmvLpE$14fr#qqXORNPhr4(MEvOx4T_nK4 z{Cw!kL0(&(R{PN1?QDMTtn2_5ID3RWnU0ATSFP{?x|5{yz@7Kxtq%K8h0q-Nmptp zDsC)ty@naA)R?>O6zdeyMW`ZADSPJ^COL%@F*KpbhY84QkB&!tV$TgkSxvVMM6pm9 z3vIPO8=AbAvRd9*%r*$7sC|I^YvC>3q9hbX;U>WVG%8KR{~rtgofSZ^axpjkN9Aai zsw5yNK;j+gG1w&(hZA;~H{1oI4B#>Hx5nJk!q^azl5Cs`A%;(=Hw62<#zT0_HCo!J zmO**7&n7SxJ-G?D9*W@1TQYm-Jgzkstqne8^!0^Yvg+SsgdAWG(X7q{50yKY`qegX zH!G>JTE&V#+2|1FUzEbh-m8RwtysG&r;#1F5QjaD3yCo%OH@iQyRJq`i%%tSCQJ`g zO$(9+W&*e22^(|(emcaS&6&}!`|YVch;<`BpY~wcV=97~i7CDH_W>F;@g>SVG0><%XuF22y6ZMC|1c!IY!tIOME!z3?J^qZ?PV347kM}MN(Y&|28uvwgzm8)7MPUAFaCX^$w z*{laP(;0PTJ>5ma6m=U!#R}QoE=xPT{j5NRD0Wt^8;ucN$JCyNm>8YV%X$Xv!y0q$u3w_hJ-?qUm0lsSeyjtCn zLr#BUz)6-`@VyWI7%Qu~#jsDc-mf_y79|isQDTW=- z2!;on;$H!I$*n(PLU2Pdq7(^0zWe{gfftGf^DPKeuNtPwu2x8Rgv6FeAYZ%}uAAd9 z(<2bgF#FA9Pio;g&&U*n4Np-QwMIgxqs0J!nt5Fpt%`N08hJlRQ*xtR_4I-3(2a(_ z3iX38s4DXJ2F3Xh#d$e8pMNBT^6RZZn-)mJUQ#qrHV;c`u5^4bdM_U{6+YMEgTa7N znkYK@)%D)@q_2s$m$fx@u;Ok!>#QlPN_gGv*os?fcvob1HlNZ|FX*A*wIm(@U4D>5 zEWzUxtIT21*Z!uofQFssXkaeiS57BPX&oXB&FO8UP-Q8e^AeV)`T2_jU$Vl>LXoA) z5zWP0VFT?zkWjKoDY0T-G__3JVCL;9G+%5h#jm7{b%42Q56f)S%dv+5lf#@`Jl$dQ z-jeW;sRXgE!#T`UQQ^KLN8{I5V&7dMY*KbhQ~Xu+eG`+pPxTcL6^$3uTIf2f7Q?CN zv}cnEg0lNS-wq_j0_U^gK}tzC7!69;GZ$=XTi21&e0dv}_!A#92<&nvovxs9{bWS} z&lEJah{16}-Zxe3!;6X z66}B!C2UyU6)y7FV+}bml37K+k)MI91C5$L0b-0UQRP$WM~L{-h=wo_THuq;Aai@Q_kWeb=qjW#!l;} z_C@GRO6OJG^*XdEp+gLy0$KmU?W2M0R@T%$yF4tWcE3*~ITYV~WMky_2hU7(8CGk`B&f>pVh#Z)FfqwZv;0g$*KN6*ey=<5kUnPp*!D29SMH} zb3F8VD(y@K+G07RPMn|3>k+LY^?)4WMASH zR8A~V>qbU0x2RTy)9BCZM2|kLTpR0M@5S2W1Mwz;(_7e z$rn-4{6lMG=nj$)@$}Zjy~4Zcp|r6XRQ&@pXc`u~Sy#I_#jcc@EDjXAD!Td5FB!px z>PyS_-{P}2;$fm?XL|65%B*Xw;_LX#9cv_&1?P(3EDLZ-Gp!E&H=h+53@}N#Rw-k! z6j75;CX)Iv!8uMjrsaQ21Z9VyiBYot`O9<4P!=I^cMuzC1b9AO0rFomtN$l}^FMfz ztWiubevC+9p1O5=Mo?u` zy+hn-`0oBDuEqBX8aU^<>*d^?&R_i&6(CXJ=*z zrF0GEqOnZG9FrAabH((Dx-%P;PF+}Lu+9+_j^`yae?E44Wf4kJXd^P}NuruNd$!wE z#BYS7escbauR4FAoI03<@39raC(|D&eB%G}V{#_(?> zYHg*dn0-;C?t8SNwTYNR{X{L|%PG*Q*@(J$YnT4II-JwWGtsLjq;0yEPPJ}}$!Qr< zQajhBXH{d~x#5aHa%0VLsRHW)ibRhN44PlYM%-DU+NOWxTUb_Ap3!2`RqBhcRJe=Y z!paj>mML15{HtwpMb$0vw52!_pq={Ke1zC{w3FZ!)1{hUsyyUeF`XZs=CluF(gO-~ zuAOI24?U39uD#qalQ*fSs}UP<5O^g<eAJ%XBir_-KxRRWY;5A#!oq^lcgGV;TLdvPTl}*YU7wFE z>MliItOu2;+a2Gx#QJ4fa?7opsOMqz>}BM(%W9|7_&OWZ^=FNSLx^oeF42;UH{C`%oNPu?L4FUm``{2{G7?5s#rZgm*OUUr2giWYFx$0Z4PA%7xe4*Q7RxeKLe@?|xX#$v~&l?fjnh{&sWFm{ zHQ$7e?}G+&&J~o<0mYh2T!|p2-*b#J+9q{RvAx~p70GWIfM?qY$#L@vOR=oT#@A3{ z&l)C;x}?pB&NG=Xfuzl|QkpWY>l+Ini?uM5fj)3++a@u|)CMIES#_3iO-Z}={L76a z_-KnI*yVIZy&DX==#D1pi;d%_z!7r5lZs}3waWJ`(n=mt=ef5_=n7v@`zZ|9%Ws`4 z43gXwy-ZrDA6glz96E=OfYDF9iJeze3JaQ3(I6PfWB8qL%*hKQJsj(j6fGWe1GEn>#>~>Zi4xgSm~< zf9y`cnTx)mJ79OBPcXrN2*B~r@s>cXGT1N$6B4^DAAr{zI)N}_|0MS0{K0U%?z6qK z*VH4$0%VhHUpXFf;4eR9e>6mfH3a;f;gF~>P4dI1GVwPb6S(b*pK#2wZHnTMVxgHXbgZuA{H502YpxW8;Z{^N( z09)+@(A!$&S{8>B>0|SQrg*=wSzdhU3Fm{f=k^9>PNb56f>*t#5HBypBNsb5)jK-8(eJ>b98UTkmdTb)KKrbO3Boba~ zZ)z*&mm#W}yobXs>FVG?8(e3E$J3@|wy4lVN5iK+kzz6}a_;x^dnNQ7`eQP9w6mfT z9|GDY#T_Y{)O;}5vmRcxhgS!2dZn$f0@eDudS{ub`N#DRLuZH$VRHDF zeS>(O3vbG(Q?%&YpM(#5g@~qe;cldUZF&iXVdM&lMqp{J-tAu5rX(PA@D;{{n|zN# zbgcT)(HkC|a>#~B=VKr+7Q%0L=EZSJi___}#+e zp`Bye`9=M)SfHOMdbBAgrHsft3)G4C4r*>Z?N%h8qetmFH&4uesujBE+B}z_EaNzB z6A?yye46!>p3(7hp)yu$!j~{}c$$feQKeMWq)1DXdXBn6EP_b%D4vLtOJ^Lcp2tn_ zKq0r;bE%d*M9IG%Uw!pw&;7B0$dLOEK?Q|Bo4w69LfWM1u$q^L?(wIBh5P~BXo~ar zjO{T^8Y`Y^@l8+a zxLc+t@GQ0Ijxd#DGI^+!+u8OvNA8D(GhBn@xumaR=WwPddB`p3aeeiLmC)0rpylbG z1mpFf1(Zl?@llLW$HXJa`etotb0y}%xv>x0M9B~Cg*}0^s#<%mPd9lb=MR6JIMcWd zT->;hygn5g)3*;#>f7-ZRUjA2PCT;&tIts0*+2QpI$t6ToSdC}JRG`nH2xl`qd zDLPVQ;)k7kETgfiRg@R^SUx%LA}oWeL((c3NWa8YG5eo6j;_?^-GZh!Iw!1SxR`e@%9b9p8VM z>JZCd3AN8ZoxuPFiU5NBUn%kr4bcCC_W=j)+PxpGC-4;jtb_y#Td<*KvB*NzTrl5L zqAlzC{MlI@tGPk^4GW`$6WWS367(Tl{UF8rY)n~Ns1PsSeBBKl>**2OwudgfJu&1zpFRIZQI}>zLy^9m~^Iy7G zSX)aJ(E(}vZ2`Rig7R10|F6z=W_AsA45O60NBc+A5_Ggvv=Yi;v97mp5wWUrvx;&n z4Ar#sKc|)$B&Q_D80KYZ>BeTpWToanE#zCs3!w#x7RyO7&`#IUlaI~K0$!h7{t}2m zMA%7030jEQ0Pqevz?%;BuYdm+A6Z`VZ}>$w<{LpsrUv8Ih_SwHL=}qx-o~gz11EJe zilu!eA(iIa&T}oZM7uR6oap_FPGZMGWJ@SfzqTu)E}!o!MAh0EQdM^DWeDGAX$jTl z_U1OrFo8AHva}v3+;GMgEN*9Z{u%SCr(y499!?`)8eBdoPgn2Qiyy2FW>eOM6A(O} z!n_eK5_zk)*YftR9U>Rlih8u$Y{!)si{fJZ%aaQW@YTMa-m(t6$#Zxiy9d}0;71+J z8>@reY2;4mxs4dc@3_B*9c91iY!vXU(|}f$;DY#PgK`mOVdHAsK0mOJEuVGbSYv%Z zr4zWGMvnB4$ogdl>+R)$AAl_;SX=tT-CHr$B5rRT+96N31^~mv9tpnWg5yM2}&?!R-`?2 ziJO#O6|G}QulhF1;B}K)q;ld(@PO}TX-dSpsZxRsDbiaGg$zi|C`*FGu)4PrJcKmM zetdhN>tr+&!b8iYI^^E&TUJGGTGVRG#(i}hC#6wSl0JEYitb~B)PVt2t0c0TtofrX zF3K(HcS?f1A-dJV+VRny)k%Y zka6>#+mCEDV5TJoEzDm(ZU+7m-bDeLr~$j}i97Uhc1uI6mx7>J7{OE;JRkm7#jU>dQqPi499j+nx{4;E$IOYJdzD6{Rh zC$7$1$NDh;OiqrE?KFw>Cffa0=t^| zn2;xlh8iaEK+fG7)ssyC%s9Hn@4&i_&V32d zgP4d+nyo!DA6oA;?VBZtLSAXg#pu<_Q@OK9fuNy4r^A>M3KYqSqVY%ZmV7XRF3vgb zd*8P*DM?XWr3`=7)Ia7+F8YTL&`v6t#JCEavy3hn(TR2bqWTJ8cH(97b8BI5ZCZwN zjTS({3cJP3DjO~!1MgsXdC<9spq8-hEw3Y@SO$COqZXN~q4P!tFkp`q^<>?-m$`~L z8fk11DQE6VbRMr~6YEnHa(%Yas#?J0ay(;?DgIMbN2zU;%MBY8N!|J#8XzDA43`i#^Os+A?+wPt;ZxlG1MBEXSx(!eEL@6ROPKa3w-h_73+3geV7$?bJ8(gK)A2ucbGSHdT}!`vTUySM!iAazpZ31< zdC(C|%Vry1>6*$VmL=z{tbLD{~;b^`@&`G!u)2Xq7n_ zI&(qjj>haVJE1X4>|0pkgWEdu8{F&LLZDWNT~XX4qeV$Grjp|bxv~;4g;N-nH`}I2*lD%*t&if;Nz$SKP*&v=i#iKeFg#)}5i&Yk{ z&q0K`<#E>=m~F|^msZaZNC&+~f`7b10qIbHkpR55{(1b{EA$^A{9jesd#Y~Mb0a=$=p2K?AeIc4S>c`)B=JDgh#TvzR|YY|0&6j6-rQ-u8sFA6(8uAlG7 z%;W2gJbME)K?duEZ$CadXC}0C{sglKE;sJytZ^$wSlOOLz6ShB{quexd#KB87;SK4 zJ>|SsbT74-3O^w%vSj>cd+6xibS6hzM~mB6lzwz6^G`wHR64Tu_k@N3mt^u_vt7h0 z_eXIzAv5K8rHCv8h4|F`BX~^sC0bwB5$S4uR3fqomMewZkobgK=dw`SjYoFJy8!o0m$3vbVTv~e;0iQoB zeN&M9Dm1-3F0;v-Bv?FW!|jC(K0qfhA{p%0qIH`M&qB@@Bz+z6TLW+WaF!O_dQTR7 z)##epepyhjkfTuCL$ZsDe41&S?Pw+py?5QYT-V&=vQKMOA89qA55WaXy=czciWVKK z51H5%x!Lf-5)tO?<{Pn$M26Vx)zs_MC2WOACa4f^zzu~`;U5BM-3@5X>dC4!{nRF? z9*|8?&#E$`6IaZN%PvTFY2V^% ztcim~Q|HTp-pO2giehy@o{5ET_3Fc}Jdh>pk0MIYVeL%JMA9}psel_;tiM+zkLP;& zaU%1^g1qMlwS!wvi1`8AP8=?9(RMN%Zw+`AV1^qSzt-dVOc@% zcz(1Vq)_=q7S~BWeJvoD;!Q5xsPBP2rf-=dJ2b=0bm*(Cc?*{*ZDv^$6)yK&p`=v1 z6;T-5TFaypryaa@s&FGcJ1K3tq`=?yjNau)c(i+j#!X^!@kIOG&T&>25#JHlnP77pK(9CK##fQ@oAQd#CIo^apF2b?of)8 z`|Y^H?)HF!Hl)nv^yghJ{mE@@dxR?r)cd&d(IYlcQY-TzAa2?G2%Xq8$dJ-lxuwbs z!ce9OH2(MmXt4hR|QoM+n6DtXWOFGo?yBxD0V4kbsYCY0#mv3 zz;lLG4VEz@J^s-!7pEUGs9?QfHlffjbvSuiW-vxHE{*hJ8(f)_%>W*X#6w=j{KC(l zwx74aem|!&CjgzMAHZ&1vZvU%-YXM{st^7OgjrkwqMdhw_(TNpPW0zx_B!W@`5MeF zb{d|(eAqY9aVTl-_RxugT8hGUl`M~$m`Kn>oxj+vE|7|C_Tl*gO-8m3o=u_-S=|5W zI#zW=+3rEu$K>o8w_T})4Gul+Y~ozC_YyALO{q}8Dp-9>sVC4!_!s(>Fx0Ic(z8rX zGE+k?RZT0z6RB3uRIaZLWo!EB$Z~NzaCX62#EDeSKNL>jh-)P zZqKpZh)KQaJO3?K^6={{tz82%C9mx_Ao@^U(Up|r*U?Ix(=ILYrkBiJ;ke!RE|cvr zL(5FgkrX#j#1&it>3wH{A&a8m2RE<|cmChs2Go)t4t5VG$2JB$SMUFCEX)-aM8$}d-=@(n_A^G?SSn6{1`WsHQ$5n^ARuqH?W@o%OR1fs2tr(B9L^Si&c1@{RaJ~8-F61Q$H*eO;>IzZ(vU$=^CF2t2Nd zLS^N!{~A0T**%){ZIHvpjUhPQc4ABw7xr0MMtUN`c2B%`KRz@l9dxT>UA=D%mxB}g z=uUh}N5FaQL-zkcvw^rXP<-8o?=n4Z*tKzpoG)eC7xd z>OxY)1t;S62IW&>j`2BRo$GyV?@3YDfiG<4;BB|hb`}QR{TzD32$y4>!jS`%-&owg z2fk{4#OT6`F}j@+ph|nTE-}k3(SjO9i_0*)yD4iypwF24q_;@x8{rPGZIACqAoliI zxybS6$9XKJs8i;*0fO%Y`hq|CSmKny6;S3M!Hv*d-3mfFHwQhcP3~?v?Up^>MnU(2 zMc~a3Z+$kG?eh6cY%|TGwF*!b8tOXY>Lz#d^&ql2anU#QQ8@qC{KsihjD#D*SO6Y? zN5Ta7stM_T?`nmvmB?voM^Y7b<`BVCxpY=ZDE%-m|OM190Bl>B8d)Uv~D^W5l2dU<7b)LIfBW!P-dy!ymco-Kg&e z1@Z6V0iM)aefAJhloKjY6wr6WKK@YjqZ%kh7w@oW7i0)S`T;_be1~}y9}x1*pyzqI zwtPE2T|x}s81&}u@hhu*ff26RGcW7Sg13hzUcT#8%8#N9?|HIiR3SqVgr~V{JdNW?UX0GB{XyjS|Fk_;W#JNfd zp`nADToAp{M9wkpIaF{TR5BnUaz0m|9TmC_e*l*Wt56zZ$HVZp4Pl5~Aj2X0^2Vi( zv}k;iWINv7|Ez;mpqBZxcAK!h^{v8t$2u3jaud3>hNNO^>uQl-UmB6{t&&JFE*i#p zd7|bd&t#5Kio@|qDKs$@G6w1Q`qg^sY~*Si4-%H-dH>;82&~5B=jHf*lp&ZTASEA` zpSUf6?PE9V0uzfk!^zF;c6>uiIzLQ{Y7?cH&J8+fA0f~K!aqX?RdOqkw(#cnEvK4K z$NTeg;&CgI>#@Q=2_-hjrr98vo?BL3{|759_yBW=xx$`oAox<<}#&1$72bB415R}H@j2qn6O3-_?-{y#A8QloQ z)!cLqBX49FKRyn5=f$m5&5p6NrIq6H_(Dg7yij))XXJek&h{tgA{A>)m-s5m0?gXu ze`5(K&UotTvN{)5GfV*$Zz`N04_Bin4L@|GFJK?^E2%<&S*gNN9RaZ>B|9gwj0Gt`@mIptQ3~Q85Eh-*ynZS4lg9t6uMZ*HNT7` zGh)&~C|i6TFQ%2JosEj0LN}s@=cfB3b^j&bz9?lk#pillgup=_{x}<3YZCEQ4{Vpl zEDRNs!U@y^Dy2pYoo_WdsxWfRGddvMo0Cs-`S>GZoBd&G-BTRX8WvMY?#YZI^w#_b zH_lbZ;xPe292%IK?UYwWzwv}d+iHVl^8V4jv7v52i@8+!_Mt0^LTziFc_`|78S+oz6w7US*I!ruf#Tcm(^4L$dVyip5 zubmLtUBkPRou0%V2T~%P9IT(8y0Qmndc4_NuwLUy5rcM-o2-Z5BG1-U7N9m^!z zBo#Y}XwnqTgW5Xc$w_{3WKEIO+s8@d;X0-XI$n1bjCbK?ae8+YpLk>x{boGfAy0FO zFw{(PuxqxV&SZ9skFz4Q?pMSP8CB+R4tan>%g!NHvD9~_hQ|F+is-fcxgbxMdeTnI zaaqSeg8yo~sp`quswS#AJULs~1QW9Xw>8YvzChRXAknoXiq6QIV9#hTS;1dRs-^?m z;ZEHFgTwd3Oj2t>{(N~AVzyUePJ0$hd8Iw*Mbz9@zHKih=otv&cid6FeQXCoL4&(LSBP~!cq^!YUZ)?Emy-#G;?x`y z1Lqmtc+OWQ_*0b%t4}(Yh)$1%uS=UGngIogNA)Te*7tAGiF%N{0a|}n&kQBIn;9W# z!<9CBkgpLp?TZivz(vNnA<%d%!(`koPL%PQ3l92^()2Aa5z zIC5AhNk+s}6dUA$E1iXdwk}-+$M)o8AIjb_y7Fe*9**sFY};lB9ox2Tb?lC9+fFCxq+{E* zZTsDQ&bjwI=Z@#TclpnOmKzaKBw1|D`U&h&q1jf&!B4$7Lzu2sj(@l<7p;iKWb5munwh#&P1@quq}0eY%PScjmQd{11|(ewGdj~!iD(qe z^%hg&kV2Oy6A?o{)c?-Vt@9EJp`CC;Ev;0e!4yutlMpCrU_X}1uEA56Wv5&k*m6Aw zWs=`OZtdH^mial=!UR)dWREa_#XKWh5Rcx!e-;2NSGma=r2yVQzPpZmg;k~_e7FkK z`y25w0^GVTJcKcZ(Xi5i2Fe^fVooEH&G4ig;fa397BVUFX#oP(d(sF48i!u1+rJep zp^9@e=@y(a{&@`UL5V~Ne3lPI%aQ9UhJs`1)>dd-5#CYqIn8hyyH-J8w!%xxN_zNx z!d}{L0+@i6ye=S`;h9^T)%&RhV~f->nWI~^OzL`I5Xi36Ku`$brE456@JY?I->x8am>Lfu_9vPi(!fjaE zD#5;_REH`iiq_xbwO?_qvG$$@756aP__6BrzVskD!}J1wbIL~T6t_?_MiOAx));ox zQfL76)v(A#*B*hWFEZG|pzsuD*XM^<=_t$|lM9(IYq)}Z^`y=WPU>$+e3YkRW~x=z z-~3oOe>Pz3z_A-xy{@?C*z|p$Pq^*;#9ogc+zs8n+K-TP>l;kkHcAPpK!?9#kF%O` zD&#Jdz7$~wO)?;Du`UIkL~h|4d;-7v0BaH31otL5dQI*qNib?uk-xZBO>*_)+&xgf z$^L2u9yw#36|twXYq)JC&h?A#k$J~zFFhw)9on23&(bkEoi=?( zW9aC~QxhoO9r%t9bHb=kk@*pE&I4Mt2VJ{E0FZ zk~L?3F%g=pj5Bj=kaJ}&NP`c+1oYmEkUv95t}0cmX5~qtXUIq?CAPud>o4#Ebz0KF z<{Y=0v$YxvA9GRr4OKbz+Hlq2l=1Q0(OYfr;HO}TOvv0j%~-VT(HP_v=$SDr`y)bJ z+kMyrIHQtbzt?e-w2K&4t z^Zc2F?4yp|7CK`PSy9=iUoX@hY9eD!8EMwei&1mt2295FWt5+v9s?$Nq(ACzp^|5R zXae7+j{Few1)ou395`Cc#iHhpq68@JTji!mmjF^QC{`^#f}3`~EM&kTeQ2{KVV>~1 z80HA}d$fRM>qrjaO0f&%R`T1Bvg+vwy_ZkdfQjD*5Ee~f{;*wOdxL;h zU7!WZ%5~gcA{ucp4{#j~w{;(LzropCPZL|juqiWew!I!@i$@~!7iY_JSs^91CUO)J z2Ki+KU+IY=pBUJJ_j}!V+W(R3>72LGU#_I+fgZ@Q}#OD^`5GpEJ=EHcEYHho-w z+dkIS0c^bg6QNtupIjy0$;xZq+`V-qKBDp~9tTw(A5qoiqKNDbnxY?#|F@XrVBdAS zW)21-$oi{_nsmfKqj_z-hFnY0-t%ZQNWCAe+THod@6lqn9jW*Glk@bmP8{R^jR=PV zYRHS0^n?xA@&ka7vk-xR=>HEF$^(GN|LMjoH5<8IPNWZQ(vLtnp;P0UqRPg{A^~LB z2z2NNBnFBqAQju4CjJ>xE1oY1*PC_&3}Lf$xS?}G+$`CPW&;UX?T)I|HB~kH))Okj zD6;hUNe8zXfy9gTL(KH^>@dpZrdjAzlXK$=aYfp;HHLV##sg}O9oLn2)CrMPA`?rA z90O3kQ@nC$7UHK?a;H{!Pl@xKsL*N39{D11sBtB4L@TjxX8lPQDDH|TaWn`q(y}UW zW>=Ki=XYP@ceTyCSt)#(sFpZ)!@bT(?1U{e$Xern&n}apCQ~`%A3<|=JH4OZ+!c-^ zAt{YhW%u>iRX%lr+1q(SU6uAkguqhP{EteM7;^xThjwXH4)gSvp zpu)_;Olb3@=jTqwLJ_FP6jqtFag}XC9PA~=q}r2AJm!MOLCM@vh>?Bhtp0Q2`pYZ~ z2z$lk6C_fMSDA4!u03qXFBa$hhn%9imXw1QjmwNIB9V=|b00y_jAfZD&}HxLZ4G3K zZ}umqju+qR*UeC|T*ZuF4@skXGco3|sxSGJd zlmouEU{18~<8wW2As}0+crby$Ev|5h1ww|f9J%aOeu90g==A7!2X~=})q0AM-k}S{ z_Z#aT_)nMDGrMiqtUf0#bDVD0pxzrVxDQAP@qD5|2WPs{ShD7;y#7h1*jmxA^JGCU zapqhf7-2-ohpJr24BhvB{m|G|E-sBApNg}q{uz>pmro=;mIOwnQs4{fmUW=yT}t^8 z*myOB+hb6|$xO?gny~j78-oiRTR{VEcN3Hwl+K4_x-WnSnxEOGeD)Q=YuorN3b zyS7Wez~o}iKj>omz`o)Ep^b-SU0yJc5ae8HBo?ddvB6z6< zqPV0Eq&J9G7qDVEW^XGY^@Rwzi@FtqCCXJELa>uNOQD%ROuRunRH6iRf~ZI1OqI}r zVRkQ6A7=@)XykgrJd`E*@g#IjYfnTQeG7apd)FnP-=O<-#8>Xi}}$elAp~#VP-T629EZA(@dNPN*;s!|y2iI`u9tTSBoFPeVoJUkLP3m?gWa zwM?y%KgnYoQU&VRE|}3(Fr!xu&_M<$Lz+_2mU(viaWlj)4u}?|jV(Pw)xRekS8J|m z?sj#EvTfBsW&{WBp;lVY=@PF@9R)F#dqA*uF%K`}e8B$uX04PPEm@7*c!dIp(jkmO|$wMI6;9d3jiPUeC^+t~fJHR<%~OpwpD%;(qk(D~fX? zhFTDNU=JonfP$+-!EEn4@=GL;Q6FlgPkjsFFvdS6fDbn$2GdsjHKcm$|3PHIj9!ak zW5;J__p`p=dyF`hHeS4*6*%wU8Bey8wltQnD^7qTU?=vf>}V(R5dCBOQ&nt&G6b$_ z0eLGm3?OE`pM?Ih4hkPOV?Dg=Oiojpm%y_Xz!F3m=~8X5n90?}hwR+ARX0GWdHOZ? zDt!<^m`m;#w7HO>;7?^fPdk0if@xvIrEheK^~Nv>toTN@seT-uFn#172&e@V6QsXl z%IpfF8Ywm#W`h>n#|IC;P5f@NeZ;D~)S6Vkzu1EMo#EV_#iMYQQizh7(Z%D3vA;p? zB2C);E6Az-?&lhd$3w0QD^SK=_VnKIeIvc^Ps?OuSgJDo*gbSjR`}T^DHEfO63<11GvPSnFz{22mm_Uoxg%T*Vec z=HleiJ>pFmg_o3} z9xa!FRo5sh9H6>`soi2PDPFz>b-#TxgryJWxXwROkY z2%g-Qa>wm}<}u*8>-mZZDaHf&)%)>%vGd|#&R=IzOb0V3!5x~o0GWj88%w|;p()}} z-3DJQKR=0=>-9Ee#O_^KwA#-LlUwu+`5qkcj&Ckxq$HXJEhvwE5VJsGx4kifaq&Dw zV{aFsyNB;7wk3^kqH>EzrumYusWNHG!C9c_u;+7oxo1u`X&zN&fad3V5pKtntG=W~MY1<&TecA7ZwD-ta@?UCr4yPL!%%&PN zO^?kjs0>%+iOs(dX(F>J&W(Ys?RE34=k#$WY(OErsKAzEF2+ih%TpPW^HO%yX1nQJ zgzJJ{E_~F|_r1+Vbs8VxmB3b#;l07&zTMZgmAsX=><4vh(g$4U>x!kiWhF=7MY;+` z3zu{gFIz%XN!eJ~f*+0g-33CqY{*E&4{>JGH3sTd@X}{pnukgE97UAzE{0WN5N@Eg zVJhp~+ng9qDsd72EqV?F6j1x0_msawE6Layn^^x9bVO<%ExGgU?a~Hte|82us1g26 zO#as-VFM#`lRp=eBxN1D6#*nKh_KJvD0yo!0r%2$NEl>d<*+&QyxX%i^5gL@0UZr%RbbMP*i`$41}0p=Os-68pD2_#=Y%${1|K_Fe1>%mavc z^X?Y?&jk=|FV>EYnVblIzaD#?MbB4+YZkARPa?A7!=Jk;y94jL0-tl*l3%eA z$$GUp@oBcji1@{UC1+c*Vf^5-J;AT_6_4|4=q?!}Zop6C40?|qgUuP#dSv)$=6$9h zQWW)AgNv;v8WEze(@^*Do@V!zHXRfkGb>cs<(7yX%Hjqo$eA-^bcy5$F4c;qq{TEM zLZSzC?}=?i8Eob6WBMjiHacO~A5UK0aJa4V76jd)KA&JTFLhB?sQ3!;Mnej;=S}em z&bd{c(>p9E9MmwDLr7qb<;tH?8pjJ?U*==0r4Y@J(;OUT8cv3J2yS-Ta5gt}S8gBgW@7Nw zuqP<%ylCKUv7qzc=>s%isY;w*01E-|aW??X)xWD3|7)p={zKX7&ssg#c$M1~NBLM5 ze?x@Fu)!S))UYW0WemE5IhCIUx#QqTgF=+x+{F=Xw2Z)lJo?$8qVs-7V*Jp!qK805 zbX;A1_?R?0AtyF$RNwxy9Szbco2)yip+Y73_W5YnaHPQ6&l8}tIz7H0YTtyiNudyH za%PPzZo3q3um;EIG$1V%#F2H;AluAOcPMEiBz^ZJy9?#$z}z*A_=32(;a( zSWG`)F1=Rz7p>!N^lyf|#3;a4pL*1+-G{J=DsxSk&x2VGE`zS|s8HH$%3PY;RyWRF z-L&Y47!ZG;8n~+2$GR-P-j2>DoKB{6uIps!;_Bh|im8(Y77CVKVK3igqxAGW5{1Ff zHK797sPH51uFMxM)eajs;HwJQkl2UjVBbN{t^-2V)$BkI2O_`8`{>i4UG79p^{)j| zMzldpEK+r0!TbP6&7BoDGS3Ni=l~i@lhHn>z4#oZ@DPQ9FP>$jSPNk)hXMQ8LPf3Z zLPaM6Te0erP3FPg#q;+`p<6*c{+5!JkM=_T11qRYel=;!r*4c1201<^9m`#8K~qPN zv?f~uk@ssu!&7!(80GCSDo3x)LJK0ZPlD)`MN?#ch52(=$l2_8D59f?fM^Yn$Xf8Q zQS4rJ4JyNa-gIQVozq|3bkm6 zR^KAF;}=2E>EUz#>-J)O)z@|7cd&Rm$D&!58)iH*gZU6pO14#P!$2-_NriDIA}xsf zGtTnhY*m2hZ{m2--tZMs&GKjFD0&a$XxMZYjfO?#^PI|LS-ed%XUUl_{TymQKH@oS z$C4lzUzVoqUx&QFV0BCcy7%5srNQZ6?273R7bwV(+tbmmPR`o^ILLAryObN zmAk8BgR(}^WE2R*&%&Sg9M}8^Fr5aaD}0hNqe}X_1pZ| zEdJeDC6hGzbcikbOUil!v!jzCF{68P#VYKO{O;Xblj9-{t>kbmS|#7Y*7ZPN&Dqb( z3mH}6eaa0Xd;*<{Q#Uoa5T$Ee(YYznjByT~qUl6JYTVAsF2;-E){t0G=|WtD7`WvX zENU1_p;4F|OZAoYrHY&+@+`iht(vGxrdgGTr5*z(U8JIwkhcc0LJkuw60J@ZQm3jP4$@sTm z&T}fc*ywEBuaFBJikiR5GMzZ)E1K1ALo+rak!tzO}>D zhf}_w_lCDMhccQxlZ5gtvW}+lf^g(FigU~>de=GHdyFz?tJNPr=&$uGSAB=2pDjM% zCfRzH?GEu4JM4N^MR%-RwH*E>1G9HT`{n4A1digAw_dEa9v?1rGQmq_O{D-`$-w(P zn9-sbPfQo3GZD!9ieb3B7^%I5_x@ou$%Q+*+SEUVO))DPwdR5)qyO|M z@uwma4ljC(Y^Lc73?i2Ztu@YmiwT|Bs!h` zxvU{48IaMc>b~huBC#s7rpT&fg_JyCPlqTAaU3H{3nQb0E}DVLEv?CD7^@Od*p9hE zKeN6}LXHJQn|br3nA4+fL?TzMad@I6X%|K9+1(76T-KldXcrHEk$S@?lhm$w;SKe^!->Zzj?xs)LZ$zUQ=mq z@63v*LuUu8#H%CW4L9~>9RV2|4Eb!eM5_sV(AIX+o1yvK4Uy_m8I!eXGQwyH+Cyk$382->f zseW-Y^)|V}Ri$JFs%{`xkqvKkWe9TV=%bs6ZrqXDd;M)rh@9X=1&n-0^62Jw#$gba zDDiLsc6VMCkRRbIBG1_n35F@l=2k zSM+n;TSnt4$KFjZUFWb|#M}zD&3&C&SFp~bKA3LAsuW_PJja_nT3@KyCiavh^>}OE zj8|<)Zyt#TZ%QK|8n3!;+Fsy7p0#2>U_WWIk*s#P-NU9is(N zlHd!PXObwK;FG_tjZy>}%uZCZk!$k{EVk%k3nC znFmJZ{&;O;@mYb28IhIK`?OeV?%?x(mxKTuJ9Yo}okbCVvG@-PcguP;$zO76yVd~z z2LcBE-+YIEO){{z`11|^)#o|02&rTpPAF-b!;GC3?kM;+}zJM_)I%Hx;& zFJ%;180YgDB`MaqdsJBFd6zHpbLtvohotBjG)GjWS|$fYg{q}A<|iv?CCN`@2gR19 zpe{#(L2UlT7RR@a%d5bD0XTSuL`&9M(T&yt{+~Kv&HVrTPd5|8f2@^QIamOVeE%ff zncI?pdQ@Xu2!5;B784IG+j4+!auyrRbz8G$B7|Ub8pq|k`xv(Zh6pqnJc!h#dF~jy zi;1(&mt3aRFkF7myV;Zgi@84WFy1z&FsK0+Ye}t$IF;yZF$t;RF=WYS2ir-nVDC(Z zWejq-m|y{8;N9)no##5drhKrJ&cvf}MYa!ERJGK4i0=H>j^~z@4i%vYlwSR5JX)8R zI3{IPiWc}-QlGyV+Y0Cw!t?yaK?g827_d41?v?Dndw&3*#9L9u3h)Zc*Btw~)hj@k zIF;4hl-M6E)Er!x!Ys*Hm6H0)wKgg0?UhSU#wiS;=li9^QEyEK?`RmueKGL*`PU=3 z08Dh!C9%8nC#$xQ$KA3{awLzX)J3DCI$!v>0Jy<6@u z$FCpuej?-bAS^byMzHqRatOk*@{pai%XvJnYRZpaE*#yp^6n-b% zr~_q;$J4md)T^tzO4wud(h(wG-&bRh9^FY^ISObJWl_ncveR#PUKi>0N45#wN#1ei zAy%n73ZxT<0?_OGdfIJ-lP#0Odc+~2S}fBMaZNuV@rO7y>&ieOS`i9*R2g{4jw7+b zWrnn8S{JGwG8NL|-?n5N%pjHD*s-^qG7Yqu@+pz{A(-(4At2Ib6J^w4oTFq)OLQcz z)5KA+XTB@}!9uPQb{{8BLd#NQTr=rpI4DEnYA8--ayf6QBz9;Hzlq+q5zO=0T>r91X+X(1=ShZ7#o5FUr{$~ zINpM4#U6}h_s)`L#xkcJlD!^OI;R&LxTFfFKdDFq1;IE1Lvumhbf=CDZoNZ@C+B3E z_I7#Zy0y(N{Af*^aNotWITWWwv~^=0?9YH1YK~Ipy0Vy}0sHO`uHo-6C;yrR=nVV| zyaAvO!iX8X-L7_Rb0lOFo=kws)*8#{0V?B960aZe6K(Z5D4PtaEZhI+85r2gIYexX36I!$ry?rNv9Mj@+VezwJkubZ`7uI02+Ej<)}SZTP!p z#ebP&Xkq)8E=R`y;XJ~>i9`RI2ms#L+c}y1yGQb$Ui2=y=K4dimkAjEq3iOmHq8Gy z`@h_&XJl>Q$ zhll8U7$xWq4rPf&2Ss}rzl_nTmZ%Gj(f9wHHliUKcv|Im|-Kg zS`H9R@tRaS3zP?E`&qQmdkvv0a7EBlyq<|VS7@!+-PsJ2k2o<}+soL%qQ~|bg`^15 zG@Zk@FtWrF>_E}`5`)VmS}wS$zsnGX*e7&Xy=OV8HCpSpQr`=EuU9$uVZTPjhWQqr zJs_}Ya~T<`z}TORN651A0>VwI5vP`rKjy=%gkE^7!9D8ipCnsC&T&lY-;cttizQ5) z#kVYp4d>9;5k(5>W_DU`-tHMK8Iph6_7^PHA3qE=_Oven>>mcC0381>egG)bn>g7U z7y;<`0M3Yt)v@Yf{1S3`OEVEH4?FwjH*T{938foZrxU8=eP~^F~fadby>%iFxoatoe;AeG~5IG`v z2?xj0Ncw2>7{SDjn9+mfQUn#hT@lqsA&1g)dB3LD-Jh@_r_li@juS07n0DR2RI4}aFG88gV+DH{Oz3_S^wdt_-V=Bf4J$( zFHC39wl((>B?C=d${zuQV3G^jRo&!N6lOTyp0l>+OPE=|#0j52E;D1-zN(7!ry^)5`*u_?L!d^UiL z$~Tcp4t#LpF`S*`qzg}^2tlQj?d(mTT|dC}JDwdVHLs~zNTG5^i={f-T<~3zIuDyM z!Rr;}K8*s|K976N0wXE39c?(!py_0`^Hll4MEuP5dyPds010Tek01-^6NVr}D zMrO2Wmh~RKSipMYQ+Z|(In6WVUXC;jtuvrwTzBI0PqsbvwYZv3GuK@Drvt9t;nLjt zm13Ye2YrGBhNkZ_k(MB=N_NUk>JVUJisF10>pDczu66no2O|Zgrjdt!PgBlr+o>`~ zyRR3I}JvO z+7Qd@4GM0l{BG)JI~enZLf~)AXtpQOXp{3!yGK7YDg0;%aQH?P%M4D^r=yiHe%#KJ` zc{n*E%k2IDWq}JX=`uPK=0EV!q5aAR_q8wcki`w#Rv_$%YfyIZA@`JX%TuszwTVf; z4fa7|(c&?Epuyib0+oT3U(zJEz%Qt48mlLAo2%R$b$(2B@cLY~*<}W%74Irjw_)*y zd+9NK&>xl61~n_IVEf9^o(DG{g1JhxcaD$D_lF&LY6N!#3NX6a4SQY(A@cr+LqoAe z`Aiy!2veXRuMQ|)1a#+irB306?CjxV#ckPmCTwbJHT(I3Dn*Ilx5MfR0#a~l?MIC4 z5ZK$~21^1I==+4ONCs)^wy8Zy+sVSUZ<8*%CFM1~;~99k35fkJov_Gl7l>Q9F+{ss z_ljD&-<0)HvS)qknv#T&3K)=C=f$JdVg*W-c} zF{hsbXMN1n9$*jAJ~&FTwx@6y&E+m=gV^loM2zs2kw%l58f*I|s-N^FqtFjN0SEa9 zEK9mlMs!e?!qei&&H7|AnJs+FpD&?O5AzK!aq?CDDomZX=I--YFiv$!3QmuyaO^8+ zwO@&|S7jRTu8h|1zW^>*t|%Z+R3(NT)84D=i@2eacAakOGc|4 zYj^AU^NDKXlJHs=|6v=FQdxqeJ*aP0W<$1ylQ~NG3COz+Vx+a%KUec-lTaj9r~+%j zW;R$a0U?lj&-QdU%Nn=&7M{u*B(N4o*^|C88ZLIA{62X%(KBqNW8TQL6;@H#ltSri zx$Z~iE;ABz!B9ICNjBrrBcG615^k-ch$2zBaYc%1c@t)J4xkc$$q@MZeh+io7-?VD z%IQZZOjR_}Fai9HYQPXy#j}hkJ;(r_?p(RErjxk5EFELF|LHHZ(SHtfg`C9S39vvw z5v+fYZ2F&BpzxnGRvG|*HgWv3d(O4A0D2MVK9er(>F%ii z_Sx0IjPt$eC(ehaVEEw6Jbqma=-;*{58XLx<|TQKkMlqtB;7hDk3b*IoFXN4_)`1L zPkT7C7tEtC0a(IFbbHymZz2BTegC;XGy~R{ENLi(mBNZz95akJ!c=5Js6P6J%nK9- zM%NfPFia?b{ITw@8sac zoj2B3wr~nKT6T<@ZKuY+=(QiX4YQWX=$_XpyGf%#!HwYKdSD$jp8;=9@+lM8H9@6%oU1 zyf7C>0bw0%5&F**-SlY3Xz~v?mHPXMDPclTp1DU`z+nf*y|D3SIEe*7QwryElyQpc zrXuWGoc`agz7$Y_l=@vcq}B!9(K5G4fkBcfgi#`M$$%^n5H`1Ncda6k-cq7+0Yz*| zfZ*o$QKR6Je8pKHF-8%^f_2Qcfk4SqsDA3|3L3M(o$N9$&4&}-9h**uql>dIThHtz zH6GA66h)ur<1Q43|7}7&O)hif7%fE~x-0WlyFQIbGO(V<^jxN|dt{7bq|NACV^6C7sctr}y8Xp0C{T=|Xt5A{FDd zJ9n>-{JJSf(qs~E(6XXGoC@n`m4e=4O{uB5Ed~yzdp(nBZ;Dz_mZ3?((@mU7K)dmu zA$U8TQm>1x^i`tkB6x)3uRDGZqF*{1D?~73LKX(FElEhdBY4bkbvWDrC9|m%mV?QU7YanRM>22M;VfF?7>p_T;6uW1CEOjHyZ| zM547}tyr0ZV6%zbRE?eLX@O1`R=*^2L%p;)n`A52T*5w@UmBJLViE}vEo!rnvJs`;E;sFGU# znbFj`@DneCth7rV!32VOR0<3@!X?s>&)>PGmXi>U8|Mt|3r>15Ep**lmprB+|8YHd zzwFlT>kkYNON5ESa3fOI!93G>dt&ymE-|a}5R_75>4aZiA1bIWwVz1e;MFuuG7nYe zvG-Uej0~%z7XsgY8kf>g8{y|Evg0s>f5$UoC!5tD)i#qhcZHZ02TG1_$#blb>ODVkU>zD$`3JZo$!qn?k zt;({0wa@IGXUR6I9X9Kp#2uL%vN9fQWnNB!ZTU-v2H&SRo5p0b)r+tVa%{xonRN zM}onM`*FlZsmq3=s=7H4DX(WWtbOWqVrIzIqrfDkA(`^B1BG$S-Ab1uDEWg$v=^Q! z!<6>!rBkp=A3!hRU(tI&4o*Zc5iNOH{z=szOms~Rvo#U+k};h!?SA5jEeYS4i}N! z#tNDj*Q-oixa`lA;Y$^AKBjwQ)${;yBzL(WM#4E+-itnHIo2VF&N_{Ch_(S>#lTi* zfvVp>2{s6M?n}QT%-aoI?NRmJi`E)<;|Y~HP%3XFH=BS8>!&8MJ1hxb`s53`V(S}V z=|A$H_*h!TOdP_eSQ75Wsdz}vOJ{15^h)A?&>!>l-cr}%70yYn=F0hxJ1mD6^TciQ z`k8|c{fa0(JlOY-xZLU;?=zdvAY<66}H1tj_k-NE*FqJpP+Doc3(B(rT zjW0(sZlYm_7!%!zryHuLnJ@r8#M8hA)%+%47Rq^LEZ=V5#W zTA#8ai)?)bu4IDGi{&=W;^ibSnP}_b(t_+h;DTacCd8u#K6*F`TXF!|fTKABq(EG+s z<2gnNz1f2*Y>?Gdic%IrSjHvKk&;ZnG_^s{4$!$#k-_nMRLp0i9HItCx(n&JWz@$_ONOMTeqi;O^?{Fw5nZh>g4G$v`RUD~WX?~c`w)`WMxVAV zbDP2Cs(MkQCm|E^G74i8udM4It^B0ahv7Q#6sj!)CTh6zu6$^dYPs*eg^g@9ajQkByYu&s~)? zj5k+&sLjpyLzg8@Xaj3SdIZ=-1yZmkBCy0)S9??Y<2uhOClQbQ(Q(_gx3G5) zx@J>{+rs_8()?_VShsFox`PMey@3`Npg}(24C+T0=F~hMWy+|;qLb9jt~~~e^TLNm zbF)r6j(1I|1>Lsq=(R7bdIRUvhzJK5UJovTxldb(%OS-n) zR+C(aWAQAu-@QjAX;ZWj9?$*H{RZxnhHJ9$Gz~(@fqQjL24tU=3>0og^3ENha-}>Bl%p`tDK&X)4x60}qLH$8VG&ijvoStv3?!PR@`r9A18UagOdb%eO$DKFA=)tT$^bYlWxoKc*F1?V5+8XTjG*oz~+rp=w*3 zCc?pA3hAzsxX`a|fx z@+9N8ba@fnefs>1P{cm4+e9gRj2&#@R&^1-)^*oX_{@ z)LK1$8(m*D2&}JkfsvhN5Dr?WWmtu+hty5*iY5wEOYgxxv*PeuhR)!pzTLZ??DLhy zWosG$bp*QFbyJlE#2B%deMC)Lkn9}>A9v|%NapXhw-EfSsgEa+^nzV;JXMMrar#V^ z+sqxzUkrZrBUCh>)93yyoWJbGak8i*i1};h!k=n)zF}OY2jF(RE&umjX#X?6x3C3V zjR75j#`Km>cDCo*HZiO0C?6Yof@dZ8wqz0CQ~Y_X(^+N0_iDwxAaPqQ1Qg~pH8gI* zZfw`u4w^S(<4v>}l7Gjw3r@cy!Op~bnTqqX;Ko1i^MLt&CVhr?Mg-9=^?&gxX!{{6 z)Z;`ZrN-6PvNp2T5GiIs+;>q|UZFWU7$cERCyx6*07693{{ZgMI#OzGwc6^HQx9QMz84DP_fG!+I|zd(NbzVGMLsV%=)IMS!mKxTF!~l z#bt+?u2FmRC*NY7i&%rS(yTes3Wf?^=cNE5akd-iC!OX45XGqYI&e;%$;c_SbS`#I z-?cI0oWfm|O3z_X4SIfvtCaEC*9uCjjES*naB%-Pw*d?Uqz@sev*1wZ; z%0F6uA-mi}%F;g+`qXI9Mj8$X-ldr8&hWyJXi}=-h)D@u z4$+mC6)&HYiW8vZ5#*d%;)x}aWwIgZyj^_+8&Xah)d$qfmmt1EWRz$qrJ=LfnC}uW z{%{JYo;CTdha;sJO(*_E?adLKT^==gk#+@!TtCxvnwcR?><$*CASO(2S`Z6n7EY(L zbz}Y`x{6?i*8Id?A<;q_+Z~6jndc!^&Lp()iWDv@>sfpGH^CZ{kGtiqa7 zUc>T&W%XG`>#QS=;7~zV;a*AS!j7@?c3V4af9*xC=_%#qzjw=vO+SX2Zz{6Nb-RZU zi7yZ;`@pPlOvt`!LY`x=T*QdpF@zD+ff*j*iki&*P$;rS6AM**3a`O1NU!W?^#Gg2 z2>JaD%;7mmx0Xx_#M~!Jmm()syDs<8B0hm~8FcR8I}EWhmpZki(T@k8A}%wd*i@kzLfOpFa%tb`H^+9^_JPXCFkYu#%=^EC=rQ*?l zI_4>fXcS1_R;T*_ZdC~{b(JgpmzXAmm)3F)HRn6aEsN$sNj()U2s>BqB`_Qau$r7FHC`b29HyEB_yD?-*oj)2(Zk zZQHhO+qSJ$w$>`!wr$(C%~iHtUGMJRr@!-cpA*rsch8tJV*VOWMm`xCBgeS%zR5z) zcHAI#2DeWEKs|N;94PV+28WeZGoNWRTY^-F*($>WQP)Dk>I}epKS$CT`D-ODV8HmH zU`HOYJOxHuwk=y!6->FgD>`NLAdZo)X%*lYmoN^Q*$RchfJl0 zdVc%Do=#dce7;LMe(gS(?_FTwolO-_JME=L-v9&gY_??_FwBma8C7?|rE0O|eXdE~euW{Tx(;sHB7Z93qe3 zEVf813T#(p`3*P{uokfAG^_~pDaa8;ByvnbjI!<27S_Jsj~R;9<_Xe+Pjr0sf{8%@ zi^b>wQk~~31TH2tA1|)S>PYNSX1?N8_MI2g-${$I=1tnT>6++$CV9Vd$Je1Zp|C|5 z;!wB>d2lH!r$e&hiJN5Fnw)nUebgIM^Pb2QjJwfLCkXW7LObK;!p%`ous)>ES=PrP zuINfb&PrmGKHjQT)3U}vz->G8_Se%FOL6I6ku85KBd0x&+63=j`sAO)XsjSOQ70>ba zt$1|-VJWPH{PDurtYo{0&l7E=a{5H6^zKyiOh1lW<2BZ}nZZ^1V&mMAqSMKy`Q~dY zxzF8?$QP{+ql;7$ZI0U);qEd&v0bY+&mf4IYJC;u3#)Y|p1>IXlCct!$N(_Ed+@vjX0u$>>DDAka>`>WFV2CMHC}X16HIvN|SXG57$FEHEH=vplZWPk2chBc(A!f zhLL@FjH9Yaq09TDSQ`GspTULdosow-{=fzeQASU4Pg{R%+V*FNoJQr`0WPt8CB zxlv&AFpUazT*X)}NTBE!E6S8RBfzg@6SupDi&Ep|-Ot3;shx=WB`|gS*~RmC{TAlJ z%K`OT5AYb{B|JwZ&G0OTBpvY$>COG-U`(!H!(f<=MVHT6Xqk;)wga;~;}WGE$u(Kb zMcONQ`4@c};)?Dx<9vKY))ejJaFiBDDEMw_uQDQ^WBe~5 zztBhUq?4IaFoyqJS6g-eb#P;+F6l(+^}<}p#hbI;>22OS!^&H9W>sf~$43& zvz|A{xFFx3DoaZ>jT7mLk|f`owp{Abu$=xx2O*S7V;8=vy!Bh+m2&mjfJo-)DksDX zKf(S?p1sM+>BXVuB4%od55&X+{z%9)zx8^0gqRu2C6HFn^@xRw?t_(Z{Mnm+VqN@Y zgZcH++b>4dn4f(I69c*pS!@{S@JLRSe#9CLR(58gE+%Rgjui)k1x84IfDSfH*#GN- zp?2CMz#jdZEsPQ6m|{HJf9tUt8a-sqXLMQ4qs(8niU6T)#X>4LM9CNv}vR(*Z@QK9m4Rh3|3rf5JnFEzeq4R85r@*gO2Rd1ZtY-_cKc(qO`Rad;=6IDS z=}_4@Y9fH~PfXjT0!M(8QcTSvVOUEDrq`RKB=Iy42M}hoTEf|4bFRl-V2*+70{uNH zXFC5dzT>>^HJ~aqQ%QmzIEY6n3xy<~Q zpP>61UxFXz46k=#=M1c1SFz8fUouN)XT4qYj=zs&;F&p->PYq)B0xB9pQ!L>Xa5cc zRIL1jizn9z9Io)E+#k&nGHmKaH(4V9qU1_r%)U>r`I;@i9P@rmg&wPMnG3n_%w4N* zL2zCc0*S8@XVqqJYO%fcDvI87voO^%LMQ;?#di#71k1I!f4=7Pe)juM*606h^ARjT z06YG)`RIN$xBh2+_MZ-$sV)7#A7W%Ag+=9*MRgUW?e~9tN{-bdJ*|pLy>>DrWp3?i ziANIuS|AB`LNSI<<$t|rK{jqxqfp-Qbg!6*a`ec4t&+RjCucQUZ-E!VZH;6Z^mnntp{STCVf%@OB15 z%%xL|NU1A6-tHea71^VkVG%M6Z-~*KRM}*B!NVE8(=cf;aW#O??$w6t2?JTQO)?8O zoul5>Vq_lz_;iJbfd_oh^u3xE%16f2*#ew7z;gd-e~AJKd5vTy}_M5nHz+nAj(*R%x_I z46XZUo`?9yr=({eI32ZuDt~+xY{_~aJgD4FtFscOQbpB~hK_^EI3j$fbXG-?v2Hrg z#QLfKm^O%ltDr7}YqgpqDKutJ9V3rqjUtf+D~Gdv@yOVP8Y>%kAwN$bS*z+ka(@t( z_4jV}Av;PqR<{m__(_-L3phbyrfO)=ah(2i$jZmRAmaays8Rm!$RayuLrXhTN7^65 zJ5xt{hkpUqNdAp<rnd z_)lQ(KMEHv(X!Hm|5z-4qUMnY*%jsuS;aU*%R4F4R2gAJq%mPSQ;f^EPjY8BNkMr zwiKX+GEg>*V4`?a+VIam15yiY_o96hDNMuB$v1p(va&LRHVq*$H}$aVfY;| zjooY!57^y4Ka9P;rt(h)Gh!zEi!;Q(uMdI$+8mnL8~;z&tbg9nhc66w^AECZh7JIr z`ri=!A7zaHSd^0gEOxUWeD24yr%U6fjVy-ddtAejaq(Mb6)Dpd|IB&L1qYllcF>lN zBAmou>`)<{b;!^>IC)9*+pC9}xl@1OEQLRC&nsJOAi zodfy!PJK%0w(0byN}Rv*W@5C3q=IRBH7-j#B|_LZrKU*}R2%z4ex^q#(I!<)+@=BX z$y$jfMFm62N9dOu6>9UDxeJ!{aw=^MZEv#kQud_`Mzrkfn*u&b%4KL`7@)?>`(jGQ zq^E%*^JT`Eo_#yFAyJUeR(+1S6Z0g|K5k;Daqch!>mBQ*wNUqXpa_+poJPm>Ja`Jv& z-H*)7!MX+95aUA;LtDa#^xI)@fzwRl;5`F!6eKx4uGt(l(p{=Z zs>?KK{#03Yr)A=9^GG5k_3Dcvl`v z=umRtKt;Eg)`2?h3LqVHEO$>MkEBnJ_>S+BYHeO5y^jDKK?>sixyONC*Pj&l22hO< zhy^%H3KZsLPRHZK$&e@%Dro1z4>%V`n(P2@m|tX;_O6YWIT zMhlGPqO~!*>h#uh$*lFa%Wu-IABBJ&lr6>CleSeVL*SiH)91ZjY%*vPmdmwItLnNq zvHz-l1qV6NR3^yO>E+j5rWx!d>YYV(CLM9?2W`#nEy7I_A~oeDU)b{fRtF@pG001f zx_u2sPz8|E0oCKN5TjL(HpX0>_`q-hFue8DpWsli(`4N|r7B=g+~L7|oe6vOC>r;& zl2AuTn*fTr76nAd3UP2`;V+&xzK#xZzJUyjTo5CgLFEU7Kj-p2^1A}S7vc5j>Gwtd)Vs%Hf|XE2a7_)GED$Vi7qhwV6a*CtL(18WAWfOjI042W^PMz zpfbHqs02r+qCaoXBgb|CV?@y9*B909i6N84mskgSd)eKD8d{3&ZZP>GF9`p`4j>&c zmatS;VmS9+^*djvF5Ii>-7P?aGts+w7iJFm!s%qX4chfoJ9ER;tc|z5R*lt_3$N@8 z(p?i~Dpg{s07f~oM@c1k+xP}jXxwXf-$53wI4UPnu z@#Kq*1jhQqpWg^BN%fc++xO22l>L2#l_Aj(VZdYLMw|!29HVAY7ob_OhSOQR~K%+ zR@o-Kl}6>1=W6uHD9E9i70f-bI17mbuE)3F%)h;tQWHLO zI$S5i%$*i~76f-q1|*mmxyZk~C+4f8-b(baaNHu9cZ~qJdl_)V(24lyrbz34hGUY% z=kf03?iKk<@hmWmz}j~*N*cuq5H04&heC=l)2-iazkRKK66zPGZrgEzYekOQ%mhVM zIHBf11)=jQnm4n+SX2gdSU9?ns5;06j%65eAG%Kc;%bhC(a*n;(u_)Y?}{Zo;x7rv zo>;}U`nt(~l9uBlqTG&aSl82A7dHuvA)_4am5%qGddf@9sHmZdR=E;`X1nlg0@)V1 zt6Oek-6}3e<{o&QFnI=bh!w_CX{%cYe(xa&jd9zso4fAwd3C#rIK{T=XK6^p8U z?`InMz$1%P-2QF<<@vV6U7!i(X=a(O@Ut~fQ`n_Sf9vA_pS&0r>5^`+&bOcgfJ0n! za~CxfqBBQp-|?ex#Hr8ZBYs>x?hmHpe>HS$JiVEf+v+( za9+}15>AgG9Y|tDLQW!1xdZu-{;v zw#L9jZQG)sbmrt?y7xObQ!I}RFNQ+4=#V4W@e=gI9yo5nY{I|GlI8Wp_8t@oRjubb zw4k1M3t^zMO-y>1`w*2*O8F$WQ}c@ZR%SpIZl7)cW2ir=gI!oMc0GwFd3PzO_qMP1 zoLh8Qu*y! z`~X1lVus*q`vaFSZ0M==C{UXu@K*30o%sEY%W36*=Q|{VQa~S%LLb2$VW-)H&K^pUSu_7dtI zyKLM}_0(Bd``oVJyGfJ#5{Ah7fwpWrp}uHdlaIm#*L8~jpa*+gxO2sF8CV<7_tS}; z(Re-Tju&SIC%Bt=nHH~k-7DFTLert326_m6X&L0i#*L~)w&b_wO5u|pT^tgLAN78F zH6leHT>r25pw4=XCAh>8m+*x0}ictEs&qAX!n< z)(F)Gy|BVCC*hia3L%o=*C98{?>6E#>Y_NKnZB2@w|8W|cIT&PRoqPPDRO$6cyoBT z?)_{2-?A*Rd=(Fe+GrlaSJQ_q1$&2)Gy2jiU%5`1SKIGzU^^mrl6RZGui;$0Q%u$Q zA6%vopIvT%1vt<2@ze>OzfP^11kK(ak*eC(SI$MojXKikwVkZh{NCR(77~0;}Xm>Ap+ckQ;$JdcZ%89|5&A}yY!>pWv!4o0M9 zK;Pst()aSJP5foVmRT_QXvi@wwYJvQE2rgpKCdpqK&FBfUd1}L6t=r?W8jK}AOvn; z9aA|VZoiSO3O80--(OzR$L89f zX=wLjLy-nRuO5^s22Tu~W0WQPS6vkFQ(g1sHiC7<==>I7-Alcn^nOw4l(k{-Po7Xv{9K)X^mH>T{VjC-UL-AbUOI(9LMB((L zD4C-gppzUTk&lU`S3yyRF={(vrMHFb zg5eI1pRpBRGnPkO&bcjr#blFN3r!=N?&AuJMT4)l5x(oHq#YaLzzh+?s)%x-yMb#A zEm&%1u{;W`L3EdXEJkw80!#=C>VZ!s#m4L9WvpCYHd3|cpJti~B7Q8lUq<{sc;W^$ zfnt-^UbS&FxeQ~tyT-)Dwo&1%G{u3t;h^ijaAsp>A>txxiSlkfZXH{$rt@o$%wU2~ zsuMN|Nhs3CDC-MkXiEl+3}mAHZBK4&q0qBxEDhjZdMkZ2MK73~>i72wA^%`}G>dsd z&B~&p;k%`3I$D`?hbfG7xba&Gebd`*YKoiO(qe$A& z8yfDA93Iy9)xZUY=|xa6U`q#XgY3Rb-pQXgy)tW`nmP&Bnp$*wjjh|~5Bn?94FVZ_ zyB9phsTP8r>xNW$fjoGf+ieg*ct(%_b&@obc6w`qh3c>mpIzl73q<`0I!(nf9iI_c zzqy993FkeMFrS3@B2I9)RmV%d=IBJ}6;)K07@FF7_(Ogdm%ZzmY%W|`&JfG=!YyNj zUkzfC=i|E{yF_G0*W7CNp`Rii=l9&A!3G0$WLbCE2+>#Ow^e@jy>}*R%9sbTXdL3p zSAXMBd-GH$$3(1MWHL2<(?nG}h=uTM1G?U^K;fwm61)K9<5|+h+I`+`aoJXV8ty;S>8Q>U#eW=t}<$IfIC)jj6ezvnj2Oy}k91_kyiSlbWpk!H*m8 zxjKxu6o|N3a|zf9VUuoUfVWLTt0*D}0&NrxTVrXwiq7Zzw1R%}rLK+QB6b`wLJMSKb_+p&mwbsJNy3F-zC?{e z4HDMTeR-M8MNpD<2O%^In?V5xZCVr!=i0KqIWCzI=l*E;SmhEyilS$en}A>#aE>oC zC&Bm7#5jqU`@MqAB&f7%n&!jcT&_hC6oq`k{tn^cC?_Tw0c2WcvM=3HuQHSq8e(HW zZDIRUNycBE(!Gs~hnhBp@zroo^M6aa4VLzxbNK6VIQI%;A(8z4l>Gg;{qlXS)u3Cy z=r)G+vQ>gkcz?W~Fj@Z?7%1@b)%t4JTUsA1*^T01gAiX;yH-Fybkw2v^U!&PshNp-og_$#p*j|YSPX{bVKxXCw(W&d zNqZguRX8`Au+lMUXOcZtvMI4B6g`-mv036jro#$;9B zFO1n(efmS=FPRKOJIrg#q#r#k5gXtz;}^31amn3+@RXE)+wDfidK#64_BQz)3lB6I zxvhA{Cwik}M8ur-(#N>`CuQi;uq!6xpu(~TGLZU)xv=FHtmYR#iu$I1ngoMy2Zs;l z<@^L(KFgbMF$&U!=oBh*Ytr&-m`6HRYbnkBy=wEc3ZyBrR3Gh$#(*B6bMg%lKo5-- zMN^YwL9CAs+Zg}vPkrJ1%W74EKa}T+wgAlBQu$B{} zTmh%7dBGCuB&C+JbR{uU!k(aOs zWhb|KXINjyM2glqU5|nnvd>WtA-^#5f(cg$U`qJ>-a;8A%oR;1`|wBGw%^~Qdm4X4 zS9v(V%jUO0Fbn{!R&h?H>H+L1;A`pzb!PCjDw2zeiJ5KShTUY`sd=GbrX8XqN`}f;9F3zo%8U%cAJ{ekw-bQ zrd7hwoG2}s9~mH5y_K4E9vT=vR1!uiaYls)jwpHEi*FNZj7DQm6OD?tWLO2EOBYY* zK^blQY0$42hI*+S(kQmKLwI|ms3umhYD`Oxqz^(iyA$z1!w@$3 z+oF6l3(dq@yz1f&mx!Ns+=h#;LbpMbH?b@krNYPlFZRM-h3M6I!r;SaN}z3ec$MQ! zE$}4^q$sLWMx~Z-z^-*_j#YnE$Rx{GLMsahCY_Vh*PLl-T?fBfxGV0PDI|-U4sq3w zA6fhix)?73PYP2oS)u_vF+}lodC5g5n=4b3^Y!p{FN^Ax-@cY?-oyRaXAXF@qYJ<+ zOwdrotZXm5Xpqu4ZSKXk_@6+Ix=Xh#!0J>a6+kAM^#ky@7Vb~n(momTAqareHz~1l zRcchxlEOhP4~YQqg#Y@>IhzkwtI-AOBf^ZQwFRRi-q{k`%X6=Tty!|NpE;}3myGg4 zE=OXCbojhCb40}q@x$!*f{r8kaZPT@@+QEAV&RtnGtPrsSNgJ}9ee0uq*W$f3RNT= z&>gyW3dNcm8Z1sbyf?sa3JWCNjIeexgWCz9YSS~5hx=9s@Ep@#USwf?`TVglnUJH~ z0(S8w5$P$Gh!u#hl5UokMGUvc3JM+~-_NaYq&sL1LMA1xB{q1-V|XYw6?et2w*@(F zfXUS`#)&}3HEufc6<^DXxmH*Bz=O;~@YXspRpltO{fnVCXY3B7orSJZe%IuGL(N<> zFko_u7Va;{3`KujuVa4=alXAv3voF;petEQ%9G?+nJ+67qpHX%ik_k1qREOAU*J zJ#-+HG#1_oi*02Dis*?UO9tX8HBF9;^at4L5=iJWShcDrx$>dT*W%nCCe35E0iw#f zj2|hN$f+roz%Oeoz3Y0ijk_pSW|SdejId(qp%A6LkxI9fCNE8uQQDNmiL)xi*oA}L zH_6{#15c7f3;3019G8h7>K8srP)|WRX`=||uEv$%f`&Ww;&g4tQ0wpn@~u(E?_Y(v zlA}~`J>bBpuO6nmpTQQaV@G;adRtZ(kY(o^IungtI`uexGpc9JS z8MN&2L*$7Sk$aaz@c;*^^ASC?+I+~EA%3@H8iy;!YT&f26cCXV4#~tbKbVCUT<3u( zC;gtr4qYR>2(K-mIi8#u@Y04jOg<|Y0}MI*8_k)bA}=;b(6^sF4o=onB&^CSJlO)F zM{pNC{Sln15)cw@5i~Dpx;!SAHr~B<&hn?@fo8pd@`#xJsWURn_WXb`s7{Y1xK&Uy z+N2G_Ns`<5IY{nnP)K|J>MM!IJ9dFP!ci7zuh23z!6yFoDD##f>{x~$!OVGvWn zp!sq&&UXHRjmL}y+C?v#iyj|*-GORa+21`_pj!=I6Qg$0nJj@F=n-5`*A6$up%)Ge z#8d#|bb<+~zAM zIZ|;$*fWvRaJ3cm<=mVnGil{3~o_G-2+d zvmC3LYiXXl8J$uKrzI^-O{gtwdwAj{CC}4Wn|=;##fPX}A+PdR&giXf-`l^zpXDv( z=S&S1QmS?5pO$aSO)Y%O4*sOZY8fye( z7Hu@{(4*Bro20%zp09+4l*XNkfd(Wc`3qBbi*5;v;bYugOYE9+rQO&wBF?Cu?(!a& zadY-z!RKVEn5+fEz&)8UG&l&|d2aVnGQz7*<8tA@tDmv+A7@8lAbcG#B;a%Z-SJ?R zb|FGjO>PYql`kpB;J~twW&4tTKrU;)1~6EN@0#SSEeIrYIz7C%N0KO`eh2hF+P+;I zyIotubjZ~d>zYyw*SHp=!QLpuwReeXQ(~7dp<@<>h^R(U&Sk z$wdOuTmiN2M$Oo|p5jRJ=;oa7l$Jzj`S$Bj+)SVm@ao zRM7{8r5q73lrIfn;Zpbyo=Y_woa%}GM&P7rJQ$~y|1UK++Sz;;f|bZrxH#Gou!0>N z^%ke~5n9+UmOMwgFDj-c%fR~&fVl-8zeT^V(Ch{OuK+2GRX+!ZC9SJk)Z!Sud6k7S z$QKj#RsLTk)PnZW2-kEX%57JuK|l7aQ?h1F+0KI^u7+Ytgt1)Ga43iSdT-khv|e@;p~)7JAk)wMc(D87W^{>{)B@ zeAobD@s$?^dN5v<55I2he1TZvu_5mCVcfo?{W!i&f=4_?0uc%~;H7%CT3;lz&Q=v? znuF`w+vr=BR|7=tx~34UP#PHjcGlZ1X>=`@(Rjn+Ps1uy-;)BJbGp7tdO`7}TFNDL zn8U%pMtZ=fo#6p;NOr_X-dv4!0Gs4E%BtEW>Q#F$XP3#)B6Kx1G*iqo7*EL5fKI$@ z9x$?ncT+ypZ=u4=SR3Qa;kZ{_{T$UUUSt}z=IMo4iL-s4KZf4zgc{5sE|n$Wb^+7w zob_XQyKax=dtR?9$gedkXDm*?)xB`6>)7Kcu4@Fpp0hb*Cs(uy!MoY8+QFi`2uDsD ztvCs_8j7g_hMMHgf+6rrr&PM^>FPVQczW}5%=slc;8ct*jCXmNzw?+bE)E~`a0Q>+ z5k*J=c9s>m!DU0Y3rQYacdiaKue1c@PZi72sS-Dm8+?7Ld%3`tPfVRmMR0g_s?o_d zl)P?poC^*jZXkC2m4SZ{DO=sHPz7s{0sgj=g+MmHm?37B{YPJ^E;TwHu~?%;qyoF< z5ScV4UlGVH)$%gJsk3y3oYmM8o2^+BiX!8|W)a456(iFGT;$ub(|n?#(YCRP_Mf%` zW)QKQTaGS2%udC<{47~cBa}3ZCx37Vz7;1h^o2>!&YVc?9N3!7hC9U~iRq0pV?6iV+ zB`a?G2QSm9#dbR5@OYVP+U{6l;673ItKo7>8-2F3zjt~dztOh7ex)uJBe4_D&3bt7 zXRN@0e?O#kGMvVHR(hn!dw)a}$ zesXrr+{*470{`@psnxupYeD-_E$m<15!;?A8+Zf%zJOzP1+XHn}{tDDB(#eHXKZc5NIn_o<;n z^;-mi7?fFbvf5dOEY~?$pFjHY3q4Cy2DHU6A@M9dWu){ui0CuO_NBVEgz}W3d z1-x%k-H^@j8fUf;p_QIrrt$h7WD$d*(hSx0iNEO=vl#h1MflW`UeZ5r$ngK(>Q^iV z8u&tPD@)jdk1)SF_ca2sdqltJQzgJwfD>2Z_tx;xqrxPHm5^yp`MuiLtrn0wz`-zt zgZ1i88{N|0?5AVkEIyh6jOCv!ncOu|qDuX`h20U(B}SWt3~T~nj7wXj(e=RTF{){; ze4zttVQ_=WpzHtS%vUIw>Gj;2Udz!wQr0V~Rs?;%RT^haJpS?gxcX{!NGZ#UxOMhP z$6f#OT?eB6zcnp?4BUSz0Y8WT|M3z3`S-unQ2Tcf@BfMB{RetwY5QXY_wNLjm}xvQ zogn}~xCsEj&-cIUA^#U_XzKW*gkxu}|360bqh@Ajp4bYipfk5jx5^QKV6h1#nXr3R z9n~T20Mxg|+lK|+ha1?@(V-1-g|@l1$2!(^FF)0p?kT(kIK6FsZMsvBTuDG49V`_3 z!|cwIkoNw}(*^m-Js>7pdp!5vFbsgVS|SK^S!+Lzj89NCV7u?OH2!bC=m8)wLI58I ze?*X8aG?HJK%*M~CJlW8nfGrRCr_Q4ZdH2mdY@2-klGau+C?o=Y?{aMv>b4bGUpY? zLY@27NLC-pdJ;!R&TdzZdT2iuMouiSMEL-Nd+?B85<=r0;{1D!S1CtF5o;*QwN)Os z0$p zpVk|LGkOcwp48qhILpOH#ZaWb?aC^&z0&mD^X@+3?e>f`YXf_0Y!h3^671YPfP&7( z_4JtCQJdDbXl36stci$P2N0*}<_$-U3G>vJkE8$;UlNE?ljJ>5&-8~sPMdCY<${Er zWcZYw*%1q08c%(zn0`5f;%U>JT6LCS2|@x% z2(@F<#VE024D(&i5JVTFj;@o7Hj*GBmZ2$fbIi)Z*D*Cj9@5dPPFJC$tEe#1tKe__ zv5Qzu=2scN5+<6BAxg&?S(%u2@y>}ccGpQkKe#{a+O!+TokW(GKvHQlLG_dfWy~&B zVd|j4YVHb@*l8#vXxge;9sj=T6j>A#>2neW5SV-*7ePsHC_%@R+kNR`a3O7l& zM>auG>A$->9(@ZPeo)q#7FJDgcF$~6dVacNTjIB9r-9Qrs)HR~vuT63k6N2>8=Lfj z;?ODq9|4;PY0ulmBWt3gmjeAogtu1;>5b1@1bSEo9b~k3|LTLTzo3L1uw2pPz)gJ6 zsbW-8G;yDa51ub8%O&Ei)MmF*e2+$Msv<`D9RaI^nJ=bJ)kT0$(Tkc#S||pi8JH@r-T2LzCT|^614HfJ+;#mXdIdu12-l@UloxHAfLXb zxz1(`3JYiV`Q51>k01op?wa!Q*1*jtBOcuh<{lWJ6q;j|iPoR`3+^@&?Gk=+MHo-U z7>4{CMNNX>h=cbik*$Le@dg;WgfW^Xr0q-Kar5o@>z6j^W;2w)UO3gvbFK_8Ze{hH z%j=*W17MpAx%ez_CXcS9vEyP82Griaw&#>8f@Cm^+EsSCur%zTD1!F!^DU>S5!MNm zJpl%ohx5KZ&oA5c?TcgW+R2P|>zhWgXTh+~qScYXf}c=e*e7dV)G2q-!1gyO{p%RD z$0Xz|IN;_tu!}TLVB;qH>GCy9x7PgPbX+Fk*>o$(t^5kTAq2pg4h~$?El3!DHf9xR z@*qR7+fSs!C=#-%xwhjoZ?9M)OiTgPP`01lQVV2Ntr*3xp97=1R`k+hRdwUsS{CX- z?5X{TLI|`KY$nc;ZnLUzPf_Fm4tHWd6jD}H{LvqK3X|g_N#yotmSz7=?2F~tn*W+$ zQEuVTJnT=)peFkUo9}O!@vGoESxOFfm8RPD?UFA(9yhB9kx#>vMl+#TujO+lUBT{e z-Z}+8vxyv=x(~k&|0Zhj%M1bnHCVf506J)_K7K3KeIo!ME%nt?igp}7fQ}6e8iI4MLewhy_6nik6f|W6UmBYVX8qr0UU!eSGitWIC?Cbk5%KO)Y8cN^NV$s_V zReW=GHuN(fQwvxcx~H#uWU9vMLcTUKnw}z|SfA<4lIZz&DZgxoM`T^t`Cq%~QP*w9 z^Z7#?K6XSFnZ%^f2|aC&R+_=A7~dJtEyf9%c|jjyEd_!8mBh&CBpCrYSm4KqfIMYb z8Wv1&Fy$pp<}n#1!7!p(`2C`qT#(uH{H*qY=Y&S+NB~{@ce%6P{xqDx85`l5*f&^} zh?Qfp1rUV+$KL)*d4XOqE!`YhDK;GC+nb5L+UrQUm`Um5E|n}*F*i_$rph$0_|}Lw zTGEv#eC>$p;Vv13ej6E=><=YnWu?*SyHFt=6EGIvwR7zYtyOlMOW)UcbIShOi0Ja% zLda6&xE9CtqL+uSKbshg)EQniGB(6{#^>*bt}ecGC~emtS9zomJeTj@6|>Gf1`W@e z>htWInMt)Y`?Oh(bS%G=#zw2Wl&Spjk^a`iOtu+O;A=x)d-u05MTs4EB%>4VP8QlOiEHa_fqQf;)zv>owWhec!A%)m89l-+3|A$^e#E( z=R6z23L+u)g7u6l4mL7%!=1PmQAtoA>V2>~11P;8?XGEAEY@!J5$DK-k!~a%ar3tQ zL(sS=)X273($LW>gUOumzOFGi5WY`Kh6ba)Dm&W?+(nkW;i+$KQCy4sC^bK{mSgLKAD_~fnEe}o*X*MPoWY3sNvr{_Y52PKrf_rMG%6(V<#X14ZVLSQrILrXE7(^ecN18mQkAlypUjb7VbFI^X?OtI5ah~S^0oMmeB8PrG^9acPN&4E{A}?mz#cikJB~GpMG5D1lBP3jO;^Y40Y? zUrPaeTGCshV$^ng(CkWhOCTx|cV0kR@%Z8}r=U|&G+Y)IcE1(IQ&)K#8=Fyum>;N` z(?+(a`9v|!j;$)&mT3R54sVhcYMyFzluyQHgp|jBkU=PiZxMBI{vN!eSU*{ch6UxQ zGJL1FY@E5pvjDON+1R>7CMxE-irCZd8KT%`gNvIUTZOg-|4fW)9F!R$%?7>d;S$Wi zz;NU4);7Ca>(i>xq7P$;yDy(Ia#iQ^nf;iO8g*ZpQ|cBF^`tH-6gptAyFX!-jrGJ$MoRFmcuL^D=V-y7jY$Su3WReBlMYR z`*CUD#J~jS5wLJ<6H_e%`BQWwmX01Km$@vFHQ0*EUYVSV0D}60VNriT40}u?^jSv# z#%msA9~0x8z^vAY6&V8T;6RFl$=W3-Bg88s3e8+-di?bnNs}{Pa>2%N^D_?;GVllJ zgX132fVm70LuC;aeObGCtZ|Sa>8vK_CJ+{M2l&$Ybhjf^w2I0+T&5n*i&DNcTTyOM z@Mh*f=vD8$$UM&leh>qqR};en#Fy5Rg0fQIL(l0979j%i#a6v8AR+v-e1INMVw$if z9$oYMWF>;NA{G#!Y1j3w9kiw-WJ5oHH9yY4Re<~Pr2wh8^SXFPL~{d~9b?tCLsTRa z0-E%10jppxeB$fk{uKxy?v&a~06&2D7&X;&>E&Xk6J$hhTZ*_ej{yN*S2G9%@-B8O zFSGR!)?%L3i>&0l+q2$Ij^k%ZEI!jgwz9J*i%*yWMu*052i7SLY4zfqQWn|q)(-Cx zYietH<1dKPR&?$I-zrsQ`2)Dj!TkJubWIe(;FupzZene_W9<}hr*X{#ew($la@Q6p zRoJCQ%OM}uwS?2&-XJb)4}C@2yfyy6Y)`Gp(GAS^YHLl!tXlUq>uL|qE-t9-2alcd zx<6%#Flx%?qV|`(aAr(TkZ`0xFwmfNt zN*%aXXDxgZ#;!N^kbU+d%FuWYn{2LFi3nCIfy2Xqn^$EoMMXssoaM*$qKy~u)YMe_ z+-&sO5Hq-t%Q>8RG>z@$MGj%!L{frw z0ImGII<%`Y6!7WLH^-}qezDG(lW#q|AZco?E&XbZnV!oFG)FJR~jd09KZyhL|4K zRXj&=1C?m=lR89t!^@!e*J{wC4^<6@#IM}4t{du|LyKo4mS-M|EF;PCDB&BV|I1$adPGn=w5(As>Ln6t4^`Cx{pY?DDNz=wi>NhrB#_Z+kPPl?tBChoF)(?+pI|U&ORAjs~6Qb*`oB7 z1S>oGJN9Ix(2e-LA9wxq1C|=jQFBmBFmW3#L@#3T6jk9MPeXMXbKIz$RXuIDPjM|-wfjkJ~*PvIVLZaf7yp;_CqGJ+IZZZRrYHqHmN%D)a+siWly|mh`<<|I$3mJugBZt;E!86vDft&S%n)Vs|9{@Q(#=p7f zx)CnT(BhcR?^WFbAVU05HTAo5gQ0HGp7RmvEG<0CutkS4K7^WCxQZ~Nl4R?~S6r^o z%5q!?n9FY4ZxvNEj?+AjDtICg*5}Emvz(z&8$+2?vv@daI?lHmU3{w*I@9HjF7Qx} z=3cAMOZz&^I0e?x0kg$ z@tu_YMX$3jcb{pOfre93ozI#D;9}C+9;qb{? z*EvJ!iC@aQMr7nh=R+;b$gJ%GILxPHhwYEI6R9rCTq(4iEe~fyrJobm4l{huW%O<%-TQ7A8b~;A zrO7xqz#mJ*5|{l2b#?peXLLR0AU~tYzZPwcVF7Fkp)H(==D1H;^=~PVu=~~C)KK3C zL;Q|EOthT}74`)uSn|9bqb8K+IqNF4V{};lEHai~YNH_N{5SfNV4834ff-07uJ0@~ zm^iHcXp3$7G0jlMDSED!T=d37B*DrBd_>c^=Ekwqu@F^vIRPC+NE2P9!nR{#>(kwS za{{*}7AS-f6az0;T5jq7dj7C-h`y8pc)MRIQTzOKANodApFrYtew_#$BkN>@sdyGA zwON43K+F1^n`|w`XO3*`sUmRhP#^}@Z#t|^-aj4x^DP@wWdjV>8Yp&0Ryd=rqZJ4? zF#Sq;MQM1&E5x_YUXe!o(TjOcs-|F#TemR{{24w&b&fccl{(dQ#vc+M)n3J|nv5|X zqBOA?k|{=m!q4OKRVj!I#CalUYQ1*{0S{r{! zDsa052n5ztuZqj2nG7Cyjq05&K;y=>P>`2q&Q8z|QNL&aQ%UElhaxTY#zJVxy3EWx z6!}^X(qRX#P$eLS!#m?yB~fMrVgtSj^HJej3{!ELp9uyh-UpiopH&F@gd9|qy-L@5 zpJ~uX-CQI&RU)JYB=j(D$?GKpP6nfEqVP&}7$Od}VA9!WMDk|qlJUaa(@Tk_}l z09*;sRazwKzU@~Ol5qKJ-FEVE#P~dESR=w@fvK*aJJ4ti$ea#NcumCZXzBn8p#@6F zDmn_Ii4PTwLu+Rg#Q&+eD#VC>?en*i(+$_M#n=&MI!r~f;2=PpBEEwMRp+~MU|VHc zriqF{ax<)0d!C_`RoSvcO;w5H`sp`Rdd5#=z-W2M&0bNN6gCG%=G#Q-Bt6s7t%^r@ z-B2)eM24tMe%?<$qj9X3Rb3WSCic1*Z{3I12`J*`HQyXhe+=f_{}b&rI>7rDNJqZ zy8OpOnqeLdRB&>Iu$@df+)08qAwzG)0;hD(Gf8+WLq5k0=Z&xKve~p*fql#)!8h|3 zWx=ya7)-5Foca^{T^8+- zd`gr_<1j*^G~e`3H>Os`J%MvZcpN zk*vso8$_R3pBYbh!*fl)fYb_HJh)`5i=WhY0uMMyT%?UNzn4$t~tP zuC{FlC3%k|Tp7)Tcono%a3zsjzaw~8n+nN*TXj1%Az{bUiuKkbCNMXZ9v6U>$mkU# zvcg^_aQdZlvzfE3@3t0zr}gNE&JPJ^#f;=U)DN6Z8qE2Y9*GE+KpBwZJF1?LYbQrS zHPTX#f-eWgWi<4X-j(YT+kWoiEETs>EG|ePtF|*|VJ@LHFI?0K1%LQG8HOchd!pBe z#YvTwgyr(KQQraA*Bt3~K@OY?xzcgcF4$!ZsC_HWyv~)y_a85*en~G;CXyw(d#_rx z4(275>Smo)XnmG>xAXZ^D{?P>YFy+Pt@4-lElYk-T*e3a5tn#T{$Z9_&f*WC8Da+c z;9D+j(kf-vDcfOEX{B%`quzSHsdk;oS4q8q?!n(#GGy73aB*PPyz^a%F=Hl=H-=x1 zEsoR>Ud_*MS$MZ;Rl`TZ)YNN(Ey5TYWd8loUg1^ z#2Rq$t)oI*nXAfxnyk+vROQ93#<`Ldhs=l7`@>v)hz^gb2~}eH`0zh>bY0?^jy_xq zXz8`|?2Y($ZHU{(nYHQ7JkC_j(Z23FboN+G%IM7~2;JZusyuZq)^Ry-C7;C^Fu z0jvLq?!HWtKb~o<=USIqCDXvZ#a=yX^T`Ho-7SN--Ps1V8VDnhjaACogo*^#&Lo8n-CBt1leh6*M-7i zp0pIEK^2w~0=}ayD z6&9<-3(KleTQpIBU4)Wp>BH%9EvHZPRqt?d0Nx7S)*gjuGrR<72jn3Vzzligi2K7Z zGaC~b4?d&$Q+HXwjome3%fK!Z=~0$_gsTF0XK2{g^lVNoEezSWWl<2QT1_4sBdVP& z_X;3j?Z8fVZT~4+DgnPV1M({?^|qLHy;wp6ddYcaB;G{e7sAWbhJ$w)KOxw_M#p-! zNYP?fKG^mM78C;}{9#1DalzMAAjf^JJi1VPLl6K!nOT_@hFA%~omPbLtrYzny^D-+1b$Pf||qERm;=J(`O zXZ2+uPACdOPnVYA#98&}?0UQkCqn+b>M2A!n2%E?vJCr-02!VOlNwXJ(AnpTLuXfaYUryr~ez5VdufSZSB)1He1txq5OS=Q5& z*W$G3eXG7d)A(d5)e_{Rc*Nk{-H%`?s6x4Uc@x$SdN!|l+gwlAW2lt-soTBu7<>A@ zn=oj~aIDWTje9LE_4}7In1ao3Z8ryF;~AWWKFIdLuS2kMT9HsvD}Ck(J&^$G_+qb` zuY>cA4j7LsepWYDi4PJ-4@TkP;f38W zo2%b;vDRFZr)%i8i1P-=zoO1dbAxuNpUn>TOB#J~G95DIq_mQ?3) z=qDVHtYA74CH^=?2&cphj=^ibelqQ;MPDUX_qi3(JlosbBVaLU$3yE-A7Xb})@}s8 zwaTnTTofdShcdFBs|=Va1ta;P8jRg-J(d>W{rl5TBpv$(V1eczDcQo?slHJ}d){Zvc%6+>L1v(@}( zcJ}9oo6{4~!|_Z0F>Pz9#{j_>Sq+Vh$c9epCpNQxBlXe;C5VM-Rsg?Ze39RZ&}mVc zuDm`U6CmYwr1VtuSdS~q*py1np=niXgM@^2KVbs@&cS&)wRZForKmVKzTtg+S`1#Y<*mY~u z13nAsdo7a;*`4Ve*^jRcx~qBV-tJY(WG4vic&zJFMe3S?NTgKc_wJ@BmPY$HvCeb`316A!y4qCyHf1eHT;#i*wu?ewBrPc$Lk5dJ%(Z(D?)({uUK=6;tfCSsf+EZ975#iH4}b9- zxe17;)1q-{S*G3`u6pA?Td~WKanJWMuGGoiUDYcPJ5)M)^uO!NA?>)PzL_Eqezlhh zR+^xv_{{0K_9o>_lp|$Z=fq-t&Yqg)=9}0b)?uF`3jg&{l7fR>o{<6p67{-U5)8Cy zaTFaJsBS%J#9Q}BHUcqEL(7`3brm#rH)Za_jweF-!^6YG?r3??KQclK1}2X9#N_9G z3~DV?X!TTo9FI#p$+tN_l~gC+P1x|V{BB&L(-Eo4YTJwtE8o8@SyFq_Hp@9w?!>}g z`z?K%2{(bnFhPb%ny_a%O8Sto{D*BUOiHPlQgpIlBt(k3_|UKcpY)T69nn~RQ=-by zAkp`WH{4r2IdXvxI@&XQrY@B`PR;BrGOdLIn~r}$w9eyf^Y94rGPkV-tUif zx7jy3G~KQC*JQa{54F|I6&Ds0V#@d_^$H7qNoES>_Z z3|fo<@z-|laQ-|?&x#@WuH$eFWU{2qmOSxqUCK02Gcg*x(x(16Kj#&#v@-Imo@Qbz zy40?zaA&U_9yO%!Wbl16is~xe?pdOl_uz7I@9zI4F1XXg);GaP50ZXAa|W`(q2)3q z21;be>Uao@8vQx!+!U8#{gIJMkXU`MG+MFpprzd1z9etltWGMOj1|p%^iw?uNrxJZ zyAzj`5xhtXY57!rsuK8|zprs)8GW^f z<3lBtkkSR&jaFLMZleVwsgIV}4{^)Io-w$r#Qq3VG7{+$r%s-`Ik)%8KAl#qvDK$V z_ifLj$ZV)lA1H3j)0TDzi_3qM&U|N-Tww1)KNRNARq7eAe zFg7s-XS9^6Qnlm|Yqd0O*X*4G;a(R#1?e`snHEk^FjRt~zUkO~kbSYSo*0H7F&tQ1 zzVK8hgq;jjQJjI~N=eFjl}-B~)^Ui$HcUl=$a zw*_i(@kCeX6L@v~Q+-s0C_MMJzW8h|I~sg|7Q&9Hdo%@sDa7hKC8 zAMr>KtwwRgWti7~IP+DIGtvqXHz!*5da%Y+n~DGUu@}d`y5vc|AH;7q_@F`6gzW zBEtpTn&TyXnQ;>F1{6>}P(baB>{Ih!VQm}Rv>T=kjhu@IcdN8|8&O&&@#->m|6ZIQ zdle5&nT$WyMX55E3%9fy5gUNhm^Y?~Iz3MHy)y8kXJElF1O`l!H~f@wulgd=8U-Xv zo#D1ZdUemxT3^M>ZgFKTc51Y~Vkq2?J7+D%?*3S2d4M1cV||rq{+`APs@!msZJ;FhFQ_MUD(-dbCy4{-%z=EcNlpzHn{X{3{?r z5?=D}B^$DN7H)z!3m8wVS?^bk{LdwmZkaky<+09^Mc={*ul5U z6Y$G`+AR%kmN&J>QX~UmV`^Z;)XljMkp*dQvX@4a1*zL%&JV^E_s(Dj`EGZjsB^g95s?vOO?B#Y+*M=A3`VcR`z`*9? zq#H-Vj%mJCTJ~`gepmYqRFck&cyv~8nyK01^H{vA%H_CC@gZ~~H=kWuwh97=PtUw& zuTI9rbK0k8nLeQGk;`#5D;A9?(G~U@k2ThK%vLSCa*Hf9OSyLFl|p6~rNv@1V?e|d}Q_S;R@UIGVn+VgMQmYEN_ zJGg>5;z$#v=9}&hJ-_qZTcU2D!3wCUjd%VwYWl*e=dRrIW`_2tM{k;VIT-7E1#tpZ zR?CcgpT5bq9{c#arXLEwgh~9z7AyL4G&DuZX5ZZuQG$A4bJE^Wg=fva<>R@p>{R$Y zdPT6taYiA*IRO*e6&0eT9I{}$uv_w_T`q&SEzL)Dz_9@N+3qyc_0?0~VpiK-jske2 z1gVM)s};ncO+_bN*8KNAoK0!mY$qA_6ua+;D>SsLZt1U zY(_gk1O7J*gqx+5x}*`dxxsf=Fk^FMdLNyZ$fn8nS7M-0tCc`yTqfq?vS_Qb{Bj;%66$wM z+-6Qx=}p40XlCe*YR|bvQ&(uD<^Ph9bVtxp-+GsKC1IIKzae<+!hGm8?*bX0;S$Li zmn(w~`?URe<}Wvj$A@k2qC^ngH?ZB19YX~%CWD^}&U3rQMLf5DrnTc0c&Ay`9YBJs zIMn2o$fs4<)C0#E;9Aebyx=$tt`wkHVV- zzZe)nfOrgipoTJO;L;q7&3MfHr~p=Dxi8Zk1^$?Tzz&VoB!{(~EMcd1^cjGx6QWVlLveP{JpRXRn4muR9g1dL#4k?nl`W_budi^!?w zq3avHe*g225`8E=eC?#i-dIkpH9RaCY=u4<3yTh-mf+_vLeK5qnwy5G_zz%w^pO(w z8cS6o#)L(a!I+AdWB$Mu9Y#a+7vUhBz3C;ab#~hoGpL7N8Qo&#KH?HS%vGQ1f4dL~0!7?)Bq8k(a}r0g928PeC4FXqKq$Hw$HP*H?b~Aq<)9o1%JP80VhUd#J}H{9SgQ_5!Ggey_>IPsiLl6HxmDp`tO#iV>g0 z0+GXzvy&@>gSI#b2@5tj2imdY=;;HX1V5O13RpJQ5MFpmGEgqpMvQMT;2%ty%6ipf zZ+1W(+@EAPnX=YR{$h%3e1{bpDI(dqY+1YENp0L01SuJikyXmRez~BaLazDKfx^i? zBrUR!d$Io_>cw$TGZKt@?|*!`;7^R)Biwz_h*dNSDjy|EzYWxQv^AGMfK~-AP^&b5 z7_HyJmcR3gHT^8A#~F2jo}s7T-3GuvN9uh*-@XYIe11bRj7X-72{h;GiKgzGLDyLm zjDPM~_IhTEJhTBk7abKYpq6IhAsBZcW?mo|?6zps=^%LAf@t1N>F5_B^e7nambn=p0|=3EqOwl-4BKoblVy0_WYoL?S>shn*Ntz7`Ft%m7OS=GdX9 zp3}cOWd0y2zb+q&r|~HP`b>zWGIxvgpz6gTx!G$hDv;=BN|2~b!&;1^lgJ`NW^{Wk z*Qxr0Ivk%2kSY_tQvn=O&nYN#i_cU+6<+oWSf9MyEp*cRzzFyLIr{3qMQuSsTe3GAzE58T7Hd zH4vl(etEQa?8B&>kw-EhnV~!Qk)f@k=*r-ben#x^C(-7w#}?XPN92KA$a*NgH-Q&T zcn=$PB#0UMpbVMwqYh+3Pu27DB6)?9PnIpWjMSgxPlAldrm+QQ{*`3c)kS3pBGxG0TR77AHUxQrK- zVd)fD=O*CJ5kJ?#;6EgLKjhCl;4Swg#Vc;|S(cKL&P>msEkznNUe2jiRYjZE7+AlN zS;y3$$&tzG_!S#%d^a+sOVS8DjJ~QJJhUz&U}&^@TdJrZ=K9=ZQyvXUAz!bt9{Jo_ zypRYg#sBA6Y`exb9|=38?DuduP^0>+Ev034=E3uqqM@`$BoOxCh|lKo+W+b-rmF4y zQqG(Ao*FjrJ<3XpfEBD9+K-Fee@AibmUjx}(<8z*g3^*E}Q2NLnrjQ#~I)LH7I z#Z(e-`oeMFuadCVWy)5qMP>Azbw(>_LHrXb_-z;L5pb>*W!3O)dPj$BJnY=RXMG72 zhw7Z))!%VyXntM7x3DUiKQajd)#i);vri<+w(xCQEX zjy1Vi=v5kS?j{u)c~7={k}=Q8ms-iujqH!)Aq*J zu%OUdzx{XTI9;;P*})FPtn8h&yrR%%EyD@@UxaRATXsKcM3m`ux%>(f^IH-@_%X;( z3ysbj#4&8*HHO}cqtG{NvDLKPux(xbvwm1~g&XQB_c}OFihxy`VKlyF=`TS{wCi zz0Kd0WJr!1Pe{+l;Gs+Io*B?Myg z{zVJL-v~rKc#;395FwOPe{-V}cwgi%C+~l`HuL6hB9LnPmxmP}{@tbZ?=DJj$`?#x z(#}Fuj%KHww^YP?pD!O=5xNF<#eE9tAAMUek4&{+s6PLrq@IPag2h+A_ikUIlsrCY z{^fD`k4KY!)@F;A?*B#XtX5u8c;=(`m)EcixCD{;RTA z5EQtR$#Rl2?A?!*^p!hRUILzfe70Kn`lemIo7`t2r+CoIgq?{inO`@erq=duBwsgw z_ug^2n^+~C7RAoA8Snb*E)R6kKev^XhG$L>Jlwr8o+N4L*aB}jpEHgN&^_gvkG&oq zTXyB6O>`0*9p{5uDWH4TX13&kO9|h_piKhDt8L`}MtV~^XG<-#|M2uOlBv2X(k|xd zxj|gnO-IxL^S>G_Cx3m1k{WnStR3^nn+Z_I;OKoeCw%ue%^mVXFW~3XJLw7ck(D_$ zD2J4tT`HuYz7&iis3zrvR2rVg42h8y+emwo~8C2nRtCJBV8Jw$=MvJ*3IKcc`ONkF+#p<&zVYcylPqqh&hbPST+JLjfAGZeJ5-`V*#4|hzY~S z*b}FSG8v|!Ay=O=uTt-Z>lCYIwetK1Mftt;K!4j}RPk%SBjL6TxS0d)vySEJ&Dg)p zQLtIxQr?J6%f=c5>qr_)yqH6?hN>l7i<6;zr*ossq4wx!%%voGlSoR5e{OIz`3({f zyBCntr)H>z_0sgnew;c}!HzVLx!vXPbVOpsDn2U#H?NUKkRU%=T&IsjY*(Pd0I>GQ&U(3 zw9D@K`Cx8DX{POBZPu3-VO-7^nqr zaxIjZYSp1T%~)ObsBH>;)Yec9DM3|+8&1_y_0Yv8r@ECyCs`^Gv?Vq%MnW*94du*9 zUU4W+if#S37_c4MRaXI-gbhiY;aLg!q6gI+DvCq4Lc_@(0$csYx0k@pfDA8S=D1(v zP?GdF-8=J%at>k3_wL(Vf5M5v{k!wQf2$|Y ze^DcH?y<$v(Qw)k<544LIfc5{hW#>mK$I#N+O-CPn0;sxbQd!ZNQA~JA2~`y`J!~D z*HX;4GF8BT=ZJy#g}b?UG-er)62V;ixi(JSm?+3!g}J&n)Ee*ls4^i|Qh6?t4R;52 zD-fN~f47dM*|_7NbL1Fg){O+Wt+x^G7&PJi6WAZdu=Chef(-_%g{voa)h=(xzzp*D zl>Hz!T(=W206JRKGBqN5g^CxTV&z@YLIVOnq@QYnStgOYH?9f=agcw0X{&NT4nO+%RE30VG6g?EC+8n!i7+rW2%T_y z8!xOEp(-~$;fIHtRu$K(WmvG%%|Q(?D0X2fEuTAFEK4Y_=-Hg~-z;c_^LGfa&HsN4 z0p0%{0*1tl21kcqcO4uo&QgLck)d&cJzl#_M5dPgx3ZP2c%uP5P|o7SwGQK-dgtc8 zE^JoPC5vt=tQ}_&5fJ46fVR~{CMHngYC8X9|LmB@RHA3vu!8+!TWF!A$3E>iWwmn1 z>KywNo65$*$tl2+Wo4O<_N3&huA{;@x8O%5+sr>c$Mm%7E%NzhU2V6o9EU%bs*S5G zd7ORn`ca#Ee*POw&MkvF9&Q*b$H4W0_mpQbbZ%L^(a<@G_rrOqQdZGzI5G^@ip~+V z4?R~awYZlO&YD3Eg*fy|V95aJZ~z?{{@>HVVRHggVRO*P<;KSR9e3Ct#-%&UqPaQA znt4VJBy#9L<)SmlO88obOEY&x`*1UZXq?~7rYp8H{s=$r_iB88rFXuq(~G?ViMc=O z$up?^7PkBJRc5o&$F7-@>m}Kz937J?Ey9=~n^0N6J_fjWgrKBj-qf>G0t5`rvDJwU zlF#~uP^)rhQPMlkQUddl1w$!4uZ2f~>0<}lrjOeK{Ul&vj#jY1~+D)^;fdz+gV*5MfmeHNb5BqcGgL_1zyNU!`q zniCw$=EqWd0E%w5Z2)Sh_iMSEQld(&A@>2kbD36h4>->Yf)p?PTZ^Xh4@7T&+P8;n z6y1rs9ZMngpR)GtzZ(Nj31mFzTShhjx(76L9mnw=9wXnwzq7Kd)LVJk#UI@qBu<$J z6&6vq&VD0>TBusq9|km9x|5zCPnV>uJ<#jF@@wFw#k%9pg!b1A0{Z)-Ewm2H7ZKp% z_k5EH{zv+l|mhHYK5V=wr%ulH*nuv z(eSVaw7&d$V{y?mR7rp@{E`O;SIlFUKv{;yqEqBF%XFLeB|{DVH$z#y&olzlL$9Kx zdjSh^(@Np!*x{&0+-MkT>{0171k#|8D(1(=eE4OoI+a@!YxRo|SewoB_p}L^1;5<9 zcRuxx6F9`QNSWpo{XZW@*nvzB%#Aancr!0wY%XfsI5(P?>mB3lz0IZ8j!{D9bL!Dmui8n_-?x=VYy`Ss>dO{kLIS`p$>gLP&5pW&hjHXhy7~z?Rk7U6W(3K z)vs!5)jMbsnyysn zfi$g`s%LX-7AlUF#k}{JwPIBM(oo6MLFG!UyQ}ts!~JiM^{+?%d(;2Ff5W_>5#(lW z<<$EqMhPGGB_!!LK34GMw2fzni?XogeSpJT0zASjvKQc5{XM~36BC4y7cSkxV{EP(s;g=c{hu+`b#AOWty`adD+T5MZ6fUVl$cS zM9iV8n2NlRid;#;Ylokv55o4<8*wQt_aUy{NNVKp?6fw>^^dHqZ`s)i%+l)5aZ?pM zoS(nSyI(Gdl=U}3dNHW`q`j^uew{|ad_zm;foAUY^Z8Qe!^2G%QvQfMaK-npo-fTW zXIie6waSfKQDv10BGM^D(aK1~>Lk9i3BOwQ>Pr72aE5}LrQu2lH5dZyq@{<7EZdT zh1Zd6p5o9dR_)#OyFA>p>X6X? zYV0k;qWZ#jVNeMrhfaY32@wzw=^l`7=@J;aQ#!?=8IexuMp|k>>6Y&9Mq+3;&Y$~Kf z^#4Z0Xi5MPPYq8tHbycZnOrIFtps2GB>Jy_*kFM!BEgW&QXIsw_s5dEoWhSqTvQ^$ zExSfqIXPZOJqIpKHs5y@LCLs3X7EA(Z7CEX>~(x)lQxUiWR!NAw}0AWE9nH(E}dl9yMI-`XFjg=zC7-5dK)@3E9aqA&J!OF zOb0AG#iq79vp<_-o({LR@*V&?IW1tBAMM>|GXD+k-|%YYV-U5za;YI22tFM{ePGf3 zS8My-*&8djU;&`04A+v~9%y<}GyQdAhQ{`!wpcGK^%6V)9AUKz~c zU-UQjWDg_nj^Pi<7f33-wX1_&gAbZVLd`E`oO;Sn5Z-+rM}CgG)Q-QBsFnPX)ehV2 zuCo*|4vVJ(*FTnal!N`XNmXJ0^CkGQ^;fi|IAop$bGp%mqd$%JjviFvVVAjc)P45G zo|UK^%LFxgL+5Ww7RsBg-YJ;}{}L zix(pI_lsu*velXU?#~4f=22}cBNrl06-K${&x3=1@Zm9~D+&MeeM^ex*Hk!+ zMdklD*N~7zo9MbZ1(qmHId2F2G$kN>Y{UX44#Y1f%TM8W!BRf)6)}xLo*K`jXO-)& zUdnr4_y)EU+Gsl9@U@6!xB0m%Z*#g*3ph&JvfRi0``%8u{poRS1zw%L({%H*_gJiU zHP>(BBC&yV=oc#G{FW)d+fS}jXR>*6`vwLp300n*jkMG*^KyJBkuPgpCXx2B&dzD6 zzbsg!sleP}dEF*QB@3i2%!Hirg2X`K_Gvd6VvrM2S>IuYwoiD#P4JQQM|epbkFMH?lt05K`fdKnQpKe zJq3}19DdysA;o_j4VM^vl^P#;->MumoPKQ5SUD8l+D*j#Mj;gx6R$`5vsxIY}oWjlkQGSV#twtph~D}0^6s4c+(88=4kyC7`LftwPVv1nOtux_rjGFNnW|@~v@VtcIjNR$T~XL3 zV?oWOrufr%iRbj|*L!mhqDa7CurefuU6PnO8V+O;74q)%G-)JV5)N7+3jNF zd>m8UPY((+2n2$|z*^}{m)d&2Uy$iB4FZ7(U%FxMV?m)GGBeao3sW0%l~5JG!eE7g z>ysVM&~X}eww~XB36nqciM4{wPD)WzqgLnh6Zd#u0HJgZtVb1;cIhpR-|RGS@$)8E z+DRTv0YealM0^lv!m?(Bn9J-n75ZtvU4|gbX$~D2OaQDE1R-{k81?ZyQd1R&!lV23 z*DqIPAR2lgddH?0Z&X|CXDl=7VkQJC=(5qJ zARTRSFOGuMw#u@5fLe_x3gmj){FHT9|dr{LcrdB0Pi(u28u6d_BJR|zF%n_erIp5mPK7g?38DP!bA zhnUd%it_rC$&up7)JoQGbKY%2pB18;p;Ee`TIf2V0@UVwU}qQO#Io+)mI|R5Ac>t{ z#xS6Vf+sU<81K+>EH;|e`G3LjTu<9nd*3-SB(ol9%VzM>x4&9r)YDn_p7|4ob%JA( zyyxyr160e&#h3@EQSXC{NbQD-^yJ05v8qUSL;-uhKrw?fqsxTvO+uB6jW<~K#P7R! z+(;bfoAegdO+@w33OzZ1<_-$Z&2i*KFgoit=8$K`{y~@2Gh)zLOnUO;q0;0>2lj^!jj{?Ck?+ZQuwN$c z?A#2ekjf#j0mlicTDd5qck!>)Rj+&QULj$I1yr<3b010(7_iF| z46rqI55w?oBb$7F_!nzQw!n~9P9VkkvWja3npMu@{M$)F7P37L4*-J4XGo(rRP07M zJC|u!ALyJXu?th#pKL@;LekZPfo32)kK-U#&2XK$CZmDeX2AzNO-C#f+$f-nZWnKu z_R}bUOsBBcm4JuFqk72;M#zYKA=3Q=f9XL-c)feNT<#}7c4*rS~5jCrlerv%_hlf z&!yY!6l#|B~G$IgOWd4i7g-A>6PG?BEdMMy%FdOPek@_+%UxYhy_Asben}}3F z3Ypv=Nd{JkcNiymo0=f$FcyO=*g<9feh8H??jlnEPOj3-BMW>l!D~q zRf?AsSoCr_<-ZOj<&uIxa`UL-tPR&XcD4-5kc&&2i)0ZdMpHt;p)jHgf@bY-z&J9Q zbvF_A!*;ENvABP>Bzs!OOK74C6%+>WOHn;{p;~=e^GbX{J6gt>8@g~p^nJPUi|D6d z0)U1_6%MjquYS%sZO|$^6#V9u%gmmC{|EQKXH~qdZtFi!%%V=a#BR#PJWU~qbpGG2 z*8=_{pY>YT*I;(aLCpurjb6BU#Xf1Y{r;fxos$>@3{<7q&G157pe}KGE)=gb&EAC{ zxvoY@dHTq8W8x66o%&$Gh|<^LE$L~B!GOM`a`3k|Xm29+nRi{U zu#DPv?W;NYSf?ZGk<2j*q|b`3Ud4dVj%K<$fOgd!+}$xVQA*{ulV`UbE5+*3C}i6Bg;ZYveyr$(YPS^YSm6Q^wLq_@l|s^ z&UO%dJ?m}h6e|^aA7$C1cVrk6z$6$luW#G94IM)RbG3(&5BYo=>kKLiF}Q*yA-L0$ zR$x8U4XIs9rEF;w*g3Y1e-VI*5Liva6J=|Q3a4-uaQ<&>CJ8`|Stu|Uf*zIN1HedL zfjr8=WN_9B3U<5rZE*jC@L2ut$p&FhVo(cv@$mMcj=2~*EZvN7$({gsVc_^vF z0s)ZRv>?W`b|Z7N#Xs9lN**PVxjN*``+keLqlr7)$vQj4Y~9?%fGr}`)~h-_Y`1s+ zVN2ey!Q^Wjn!KMF9`E3>_*_Y6EQY_;mRgdneB}ZxR*EG>SiA{F1z&3c8=QuKkW9yG5aq8+xoTE@zOb* ziD_$*NKrGeRR=apV6+25Q3Nw>(dTCWI>+YCP2v6Q9;d;bZuHu~!qsM~!*{t?KJfQj zlP_~|!2B`4HYMJgaM2m5fS_DD5)x02DtRjli9P9^qmP<>%$Cw?NhK?-Pi$PjEViX= zIeL5FoNV;3MAXde9$%PNqyIZbcoW*;14RInSx?L06qi&rY!12i?y8 z(R_ZmIcoJh-TX~zPk|Z*>_rC7)V95PdZ-zi4(dZ{jF{ec+*Rtu_(5~Jpag31_>x79y z7tDv802RLME599)vSMmd;dTiZmLY2l-f0mLHultYcxxcums(y@Fmd1AX0TFd$fW@=gbIyZz*#IchQbbj_77r z;xjP6Kip(}pCGH<-v7XkJ8QI|ZQ<(BVGvIO7H>?b!eK&y)K{lYjxF7X4)*r?h5>Z> z$is-E$fv$ar#h8Ml8rsSfBVp7Y+*!1)ZpMyz&Jk_%rQoM4JqcPQ%y6{&v*g0@~*>4 z4B@(#)-NUomkdLLi6+wo<-Py8FKoS1guD=Wi+w-d*aWjrIymP}E)$+gkdOfSRcaNT zQ3pZw8XF6I@&K80xHJoB`bp(2S7hx=b#k#sIjs8()ng~ zuViRg_#)D1^-1}_9A(Y|mFX+)aZa76w)qCiMgn}JaLE=N%*eY`(T)%PeP+2}eU5|i|16YtjI|I` z->VEcX{y%;)g10k2`ceQ!$l`{2Qcn~X>pHy(Df~uLhxvEbSmK*$nIi_?(~0rif)2P z)x+F>IlQ*T1r|KR!;F%=fnpfb#7%v^UuqpFZwOn|<20g^#=C@Kz5JdfYLtx16v#Q+ zwx2pQ&e5$yfAs&wu1$O;DAM1_d60E?Hz}m{((480VNud&syP)SNRu`c!!6`(F2!2p zstX9)-uq`ectV*pTBp31>IkobaynLk%u=@yE~CpSuo~{itmf2qleaCKE@^NYZl34& zwaa@ExD9KD?z7$lV}Vey zu}wSCf0UEI22DZ}|6VdxrRKZlPB8&uo+o z$k2TyzSJtki=K0Cqqh(&Xpd-sYqx?f4Yw{}kah{B=e)H?`gI^1#u@bMF!>^Y5RL6` zsLUst6pBQ=IiwW_$NtI;o-N;fUR6)v+*U%uU~$5U5^q0Yr6d^-}0A^ zw6VPbSr;L!a($l8^mQesPlCA_N1{pfyJ zzY(lO10%|PNB9y60|I*Lk572>eJhh(+I@<8NkEgrAfvwb0F;OpdF3KjNXW*@4*q?a3Lf053njUf+x{dryvE z_YqU2xAS7lJtzD8?#Mq^XOT+w4gq?&gc2SmCWq-n@iu5xtnK%iB!}AZ(}00-QRH}c zv8H>f#Af>hwSN4Y;-l}RIB5Y??%X2lCY^I(9YgWT=?w4ew@}j8jpcxIdFbN<=N~}( z;#?O-EXV~>S8jLGGM_L3Mi4E1iP7|fR~o$3JusWQo<2MX$%qB-epjiAVT*d`Q^bM( z2O0F=n$SS_yMDNIeDT)$w>^BdS;WY|frR{F`d{VK?6Y~!g5NAEgy-w=)7M*Jw=pl@ ztt6{i)mO0G_LsO80Sy>~S$SK}*r3GRm3@^{k_x?%VT%Z(`$UrP8{wVjCMO9p@n^3%IXbi0EtkmLks(>xo zeY?D>%H-rHU!iej5W^yy5Ku+0eY*m_Sa%Z9LO$F5N>k4+F%?u&G&UXw$a()`k(dk8 zjPPKK!}R3X+hHT|!V{ms+6Q`1lP`b^d{>(|M4+`24_jTAhBBxmDeKQstPV#hE0_}U z!(tcem~#%Y^*yb`78@TR;TAFJBcuP~V##y&*ngspuN74m7-{I+oBBiu0b+w;P0O_l zk~a*K=x~+r;d0-VtogV6we|gNxAR)Dj%<_0B_Hth5%!*&Y6}vT*bE?sq62% zI5Io%{0b5ePrs5z@!UO}oxCQI*cU{Mtk!(`z4@|%m`((}S(@2HG-5KUwQGVDHxisj zQq*WY*$B%yBU=IEwzOCSgC=EkGb<~f+rlK1gP$qO2;6jTa;3w!J8

    T|*U;De$s8EeU;ry-;Jsxh^o(lnQ0uG|3@5 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Π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

    GeZa{pAs*wG-fbNvsYS9c zOvoO`P--IgwqNrox>RicQ%ezyKuKO!<+0`71j#)9(>M^dW2uYhpAN({B``0WvE?(Z zm9QL6G3SN=jCDH>FIL8u9$ijvlSE)IhQ?Ua})Z2S*@ZDC#J?=oj^F zvFfKhmp)rves4~feS)_FA)`3Pfz-a!L4gfO9)$pZ{#_$XrTK!+879sbr6l&VzD1P| zeNTrZOuk+=bnNER9pi!?$9oFdWq~2EdlY%^*zrDOflknGnGG;|kaFxOPN3_5P7y?q z+foWE90%Q$^!pwB5G!dBUGJ6RIJllQ>ssh(j_=Pfs$xj zr`;Gn1aExNa-JEdTkyKdvGo-%LpUnEFCDHwVOy;(mEWukWuaZBdjg!)BYoaDPZ`a) zH`v+smDN&tB9vqHEeEGNAL#OuNd9~xsB>;`AS>Yk<_iqrsmO(}3A zTA5q~zB~FC_YUVQFHucLsnAdr9r=oVibIK;A?;SSdr(HrtphZ9ZSxWH>LkuO97l?r zIy(7RoG@(6&3AvNq03q7#~6N-KC9Cl7}WZgZ_2$FhAp>?5XMb?y9<>$K?yiVJgYI9 zauTn#@<5AQhz9R6xD|a(%94_2kP@Kn09F;wui?dyotgJ1bAP^c_`$kH)&*s?g{k+L zC#Yf-?yS9?21%>EI|917&}P&>39*wtZ1Dc!v_z2|=el;Hs2JtSVAf;vFy|4MQ$foAs#T?);-BI`9S10+d8(p)eSaYg<70fuT`!eRg&2~tS9zk)2gQng0Qg-57NXn`RIIU3x9(G zdzd*nt%;8ZaFDktvg(rPHmSU#Xl~hds0O%giSUEamk33UB0U46TuXV~@6oN3sp%H|A9zO(R<3gxZkc;EKCS;; zR>A(yT9A`2gey1&-6PJsmdUQAs>Uran+-qtjOj5T# zXh!H*1z9&rPGO|abHKyEdHCE!QBR>r+1vUSQ1#jpX)4z7>ByeO2d4y$pdI7Yb0|b8 zBF22F=5HoiDG@(=>(8&tn}db>DFxLYC3PBu0+3qzv;04IzlWZL#*@3)DDELHrFE(- z@7)BW?xPl9GRaFovcaY2LR@0P|%d88yf?hu8I*(@OXWVqbQ1m=k9nZJM|Lr%c8`&YPK({X$s$%k2GkfV}O z62i1*z#^;enL?kG&)aymCx>zOIZ*v=yNO&GWzGVcc8*?~a|l8#J*W&6Vep-{*rdEVlGUWMh=URN z^HY$u3M){5I&8W9aa5d$(>skQBkaxOJX!S2J;R-4GP?v?nQ$V)oS znNX8DJv@L<{y!%5TBYZZw+q>MpzgGFVSF>)G23no^t*04K*?FsEaxeoW24k{qyL+jS zF12$+A~K~Hsv~QxTX$Jd8DC=SH?yH(fE5PA1=;~n(gdJl05juJZNnhMjW2OhThW!H z$z}se2Z?KTz~aeOy)&TV@hAS>SxZv6Vm30|DKmj~VVZq-H*!%3w=kG~9boGOAGj=Q zy^pD5lR3=vo|`SKETOmk_a%`$;0>Pq~B}<=g zh+7S#eRpOY-3(D`d{Gq2N=>EE&lFjmOw4W|-^uH-WP#GoO3A?rwbC7w;lh=!FD9f{ zZ?(v@LObQLg$hm`-M*)WiaT8WkaC1k+7PUM*XWTUab3y2NI0F6xd4t=6tnB3P7N|q z7|L*plBjTvrL0}!^bxQ!67iBP8Q{>)YCsSI+uriNuPaAVfo=QC>5B?{43O4cl}c9( znaECu1nz^1-xEH&)$h_zgGtKQJ;t)fg=QzRBnLIPY##&U$swTzfwF8toVg%-n0hwN z!6KZmG$b_Mx*$%h6nyrGrvVvZ7x!4-gICur9Tzz2MP8apOL`fwc*$fj!#s8U* zefZ`jL3le~FWYTjgb)(&sOMEO+l@bx$%`_L!h3cr`F zHz8DyM>Gm(7aXQ)*$iI0d2nWYkx|itVm;+%6s$hm+h6F2+0N#()QIGkPlB^j?^M?_ zMR@H1nK7Gm5s21KbDi&;8iby1@71YKo@V~E)KfS9uw-q%8hSQl^mH5wn~1&%&Eb1` zoB6t;7L(VM#JqS@o5F#7N_w=JLpQu4;2;`U%$x~mE_G9xy6sVbrFLgu!f;_py)>`o zdmbFDr4AS7fHpSGk>OgEtCH>&y2ht?Gj$Pct=u`7rUK12ICAW-OYZUnCm)QtLRCmM zv2L(;-(})^!6Sg>o+%%;^bw}Dap8BWJ*-bB9!P_nBOd~pJ}yh;YmBR>r+2nUWkr9L ztYVPo6}b4qs*D;O{cyvXIr(E9(}J6*iW<52WFP+av?Y~xsz09=|LEf%?G{)&_C+S- z3qE8{R4~m}F$AMy%N+Ngh@=_*{OB*9<5>rsqob8=o8x5|Luw&fipcs4o)5=LMINIH z72N~%A}dQxhNz5JmCrlNS43NAF^Idj+KMSJb;g#GPh>-FnJ-2pgw1$N!(UJeR|b4R zidD)Va$O2bi%MRB$~_XVZtm_1o#ta*z7OGVty{M?OAReQ?hyk+Op{OK;X;XojsxVM z+g_i|9B;83H+#A!gd&%$yt!xgtIwL3S6bZ7+rY`a7&%{0&)-SASvh044dP;JqzB5N zvMv&3@YSZSOi(}$mSj<*IhH9_BdUZP#^fcYYNCE40@74bbWYgdiCk$d#9XtYP%k0< zycvQFwXHb6epsc7@Ej(=?8KomYd6XpoahLI;m@tm7u`~uZe zRBZ>!6t0sfdQM$%31)m+6k_kbm&%gc?HH%Ei*DMaq1RQAdJVC@y8sF8#=HC6ziT~FxqZSmR%#i#l5ZATBW|=*O1PW9=iN}@$m)0$a>|C<|4*GnjBmk_a=Mu_1NlF}+ z?@@Zh;}1Q~m}y8ITiWUuEu(x|fX9M17;nV zNJvX8y0s<5l<>$kiVbz{?Q+`@CM`c#z6Fiol%fJhPL-iEIcC=~BeSDM;e$6o@8VQl zV30O4-8G5WsU;ly4T;sR*C3Eh_7xc@`h@`fama&^@enRNCr%$$mTHp~WYCsoa5KT6 z9r}S`RmqiaD6nX@6Oyb~Cuy^0gPf=-iV|z}mu*i14uRDO2N?v*NM#I{u7xH?^K?xr3{p8(~wVt;yf;RVUZw|-JD|k{7tA>}%*!_T9Vd#}jJ#tO6 zi0PTW9588dyC#D{6nSvq&n^RbcYLRx?D5$oGZNPP9!1m=XlyQc_H4$rh*O~5oyxOW z(6IB38~m&%&f8L1DWRlDZQbpat^}e1r9vre2YOO|-q@kcgbS!q7IK{gQ_MZDMR#H# z=3DKdj1g|>&1;8Yg+a*FiK&dGIzt6!qq2DYb%rYg2a~djQKT$S_4AXLx$}wlEmATia+4|L zGC91P0kOxso{MXvCOc*mrq#E(d>AWLbDBPDtkLijN0d8ImbEh?d;RP8atipmZ~$7n zNBMDZ-`B_vUz#mQR8MboKS|6r%S8_D17gmP?84c9@Zr*242=N8FX?tXi!OUI;U+(&S4O<#NnB=iaP%U|jelYNyF0%n;MsbaAuz%3K#0;zXHAsk1|BY1n@~GGc~azqHNByiue$UQe8}$oRRL zTbk&4tIkx%Vt6g66&>o!Zk>ql?;Rdv=byd5$0s1TUl@@fAh7juxpRz;`+Qp;7^CNZ zxpPDyaB+a1$}g$D77<=<1X6=h6H_ zD@gI`5C>Mrg1HP1ANe{rJ7-IFsygQRGsMN;Hm8)ko3qVxdsSz%0M=`UwS%o|i-WB+ z;Cc!s$>UQoKyG5ohprJ+{d;Qsg&upM20uY6{d8yGM&NJrr@?8M?+0AtP>-HAxqL8P zTi(1t@xt6$eHBHsVWoyL<;>&NmR+uI*6BtKk81YvDHZuROMU^U$$^m~`d6Bps}T+2 z&)KMho3n@#b1o_e#?zGNQ^;&liGn_e|LKD)3$sK!60DqIfTCwLiCPTvb|Opy2@4xaPY-d;-Cd1hwp;c5j0*%Z z7o>rIYF}xdEJ^st#i1VDFb)xel2K+T3f~}Y+j2?S z4NzGTo;eG#{0NFx!w3v~?O;UYMKA?IK|)geKmnj&*4mt6@X+SZ-v)bo@4mS2XMPX6 z^D_vcyMIaUhI0h!Lif||sIPiaLvzlqKF#8 zH`<2{B47TlFLYwP7dh2-ElesrSbUO45Q#V<&OeeA<;aUtczlE??iY;PawS^1$koY4 zH%1?qKwpwc??3l1HYJosmxVu1sWFyga@ePl)ta-56mo47CiGQN2SvEULYykLrq8p6S*P)Wfg zX7dXzIiGM>Y$GGb3)nv!#d=GYv{87Zg>uA%_0z?cZ+@RY`4tWT6f`*Hj}cg7Jq{m1 z&QQSL-a9aT`uL#cSM*|?#^!Y(nf()e}KO8suSzWy7e;Oim(iQ7-6ZX}eNQGuE zTWjniK>JhjlmUvG@FLYbP~In8ue(lM-zMny9!;Uw>|&uom7PJCtSTuLM3cOV0{b_i)Lxx(cs_H(h1-#)DkE0TM6F+qSg)g_w@~>9P(P_S zen&+j6;WRqyNuMrNqWTOt>DjWgl?fTrohnJ(|m3xZ3jq|Dn)-vcRRTrIGCs=wL1Q7 zgg8URBG6ATNS`cD$x6u`Ps&hJPR>co(E|fn_e0M9Tl$%jnwDXZlT~O@ru_Hl7X(>d z7aF<~y40&waT81$N5ql@$e<90rSTuRFr#hjyv2_Em-YvGcs01V8e{8vdwac+Rq9fg zIf>Oa+mB00-2$qWvs5y**r+VxW6Qn)NC**(jNH{O6GIv#aHN;FD+-(ucWlbT{x;y7 ztj|kI8e_p1axYB_Jr5qjad$Z`QRm8J4$rCKVX%cD-u*J!kCuBW`1@wA2<^oOiHuZ7 z*{KO01o_PwyEOUjKrXqudpd5AJ_7VYXiFk**LZHN&adh#1{?yxK=P^&os906 zN%r@dy9mbV)?CKpw2U-nbs{^_vpL^4`L{j3hh=5>y=R>((9d|5Yy7(wDl*S0>($<; zyPqsZ?-(ggy+Kg-7VS%8GDbXPFz%lX`MCinWkEFQ)YX zPj zkvZFwKCApOwz;gN_~Yse2T5da(Hi}rRXm6k?8Z}skTHJ;>?xtKAo2U@^_9WvhkS0Y zmq@>zkcOe72r7f2XE-YeYKdQk7zfgM6sjkOj1``@KIi#;(zo5?fS=bN{>Q+_ksvnD zwwk_SUmy<(O+)s0H38g0y7JTRF!WQeF>Wqf-gZw~fr-RTQtFRh8Sbs+H1>u0OhBmE ze%$Q0*!VUH*)}w38%R7dCpfobveO9&+*%9n!|_*kx5vxJ17IMzqN_xw0SGcWfXU|g zmyg>W*U+iCPoeq_6o1)U^Zoh0bMPFf5B_0O*c?B9o~CX*IvCu=Oxkd*(_sm0JIsgR ztOQznK~VuDge6VRRN^V9j%}$(yhmQ3N#9)Z@~Mi`pK0}liXoq9`3XTzR3j~W6Ne_L`r~D)7&KxSi&sP*4~ojUf5(hALf-`KT*r@~uFE!jW?kTp$TI z@Fp%`BAAcMEAH?=?kw2zXmBj^T*?!U?<{ObiR0M%%(YoG`U8uqz$fHERVNjQ; z;STz*O~paSnkMuIxi`}%?p0S-#8WsHSjkaSC3IHliRloWh{;n6b@3^u7Ub9Pxp5A- zMF~Ry;4}){*WLD9os(`G)5mR%3QR5Ok%YTKptsuPX*$^ziM~lzJcM&tIz4MoByi(X zulD*R;Th&9OR}7nf^_YPA2pdgKDq)ON$VW2KbE5W4+=SXX zuIFAhtETqB4d-!SEO90{39`DBA#~Q+)YYdu#@DRO3JAGVY{JVea}pA#VS|>@;)m8X zlv{ZzHKMafYwbhz1qMv~kEb~#M_&^eFcb(F0aTKAK}p~$&QI0#2-nlm2GkymV_!k_ z#OkB!VJW`%wcWftPTIek5?Hn%kXM>vk&9o{tYD{JCS95FmgZn__k;?27Ue8@_TiTM z#>{*aJSm~dJ)x!)o+%3}@C6`yn;-`RDRA4q{1<=g9c|nlInNdPWVyq7DnMu4`i@|o zat}bq1lws&@*bvX?}M>w^8~&D3b4cS01!C`_X_zI;d^#=)%i9f`@ z+S;)03u`nVruWr+zvET?=OP)7N;_#Eb>Rk4^F$BaY+8Pb9>dvS4{rUbwDZO>MVji# zzQGFi?8kijiL6}u0kaOi$R3R46xn#rp!eIhd43?aN-u)ZN!3JyWedy(RysK*s)?PI zx0+67HSx0B>UsTZbbLFnvuJ`9tpdbYa?Sl*Z7O-Tqq~|7dhe9 zue`XfpUwL0m4?qS<1eRtM%&P5b(OXR>t0v{3yUgGS(!a-OjOzc=1xyza7YR+#9+W3 zncvCvEW4@YIMB|r<<%Dt(b1Puf@8OwCM~|swMWi;M);-jCdv;ebI9E@fLxtrv+h3B^>R*@N8Ap-&q zd9?E6kANwR7!|Ymat$V2m3)~eJ(b3=+7iMFxI{}jxkzi?ma%C*!7jWwo9o32BCaW6 zq%xP3XU2P5ikWmBIBkh|D{Zvg!##12JndGGfXfvV4AA%NI#wLJPR@ZNurg$}#@{PF zIa$m6>{QCt95cp;$;2G7w)DC z66)2Y81E||{&TxX+Tw#6snorkL6j;X?ppPu73!|X6ttJ3dV}N!_2hnK;H$w+v2Hr2 z7?5m;mD+~Ynkbz;#ZzuL)maSiMoR9T1_b2GEkXk&3=U@_Ek_G*<0PAAzOLo#Dk{I? zXg}2L;m{CkB*E+^pVgSo80&PHiMhoRf0c5=J&U~~Gn)f-mMOc59d2^wB$_d5F3)Su z5RNIl{iofz<-c4&s6%rb3G~j9OFbVW5;v48+loE+Nvuogguv~e(MS}h!;J9gMe1NM zA1X#Qpr+QMlIvqOTMXrbsx2Sge{5T{M;1*uWUbY2jRdOiJ1bbNi$GCwRMT!*rSlZU z;Cv7fDqd<1fcz`K{oo#XE6QCU*tm~OYJut8J^KY&#ug{V6Taf_?Ghurvz(yKcw3De zVG|K^b+m>qgJHoWKB%xE$ULcu*-bkY*kQ(~0{u}3QpkC?|FcGOJ0 zS0t$gsFcT+?WR+&T5MnBYE~S6L^-yZb%c;|-!l}dLN5}d40h-IJU_Q??e`3HrCZYG zRPKG2U0+k2RqX(W&2%!y2iDg}xmX7Q(F^fRwbIdjLU+M8qLs?vHX&E^46M!?iWt$T zyz2TZkB}#yBppeUTgrT^$Xmc?n~5Wv_&n=!&~7p)=zdn%w02XNp%)LR7O9?$0y-x_ z&EB+|SXN?slW>V{C-~Adaj3_VxXMj4`c7EhM4y)JwD$vx3HsHN=K6?&K%W6w*aQ&o zJ<&!~t7Lt>U2k(&4~O4Z*IjuGyIjm;=u%oPBiY$?I#p9~TJUH+xvM;wd_JQa%pLCE zOul{121a*=cG{(hy5=Y6Z)(tDz9T?6)<|rVNA3~`X1!?B)9t4s&ZSWy8DyZ5(s~f+ zGKq<67L&=%-bA+7+Tr)9LUzSP74O25I$iHd`l?Rhkx4cuH)Axx+=per%oZp*hQIaViBt zy7(RlhrBhCBoJ0K5oIrL69el#0=y!CxKP1A&v8M` z+tRHVu}JHsJKBYzxPfm{Ed5h(7J@xEu^XYZ)<%kX+(!e{-}Fql)!rOI(Pv@&X0^_~ zdq7vRx%_H09(GTTE$6CyZ=51eqk#giO+B3*%hz<*H5aG=vd0?_&vgA&7zR65RRcBt z-Y|RjducR{%VP?iY+bz$P)~;J|6BpGKbO3JhaEl-adh=p!57cny}sKzzTNuPaQmFH z?l-uj)II1j-u<+bWa3JuKA}2yj9$&h2-(9d=LOhX2qmx+VM`frrIt5^cae4?7O*Ep z@~_|nSV?md2=Ps*uL0gc4AavZZ8Od@W-o8sJuZx=8%IQ+{8{(D==nGyZACBl4urj_ z!&PLK`QuQFXvjfv$OUpSggJFc!`JOO7sJ)h_E5&;ojSOW`eD^F)EYq?KcE6^SDvTA zAZco?OLT~#*O&^7am&=o75!o11Qq{Zrbwkc@Hki(z=ium<3X*7JT)FC*QCA75 z?%xq&(8c{K)IirpHW*o=?yJq$5NnA|M#t($*NOs)gW#K=@OrTov7Azj)H3^R`bOem z>4I8Fl19fS$Tau2i)621ojq7wt(-^*xiuuTay}lC6!hbF$!0ZFife_|j!~*bCb9n^ zgpm*~OpM|(JbqwZOqUW;%8@L!l^`mXEt?8GeX7dzY{xKt_mP7(m2cq7FZUk5cJ#=8 zgHoHL0v~)P*h3sPu+$E$w>?yF|6HdAB`F)osnJBeAwD%*cGZRjbj8*5&5&P)b;em~ zZJRYHTD{kf13bpnT^q>QM#d<=Y?u0%N(FFXqOti|RcJ;!s+3i@MxSI;!ml3!z8LnFUZOu%+q=3Uajf<>UE9b6|o{GT%*8aW0SRz{*Zx>kdouj)Y zD1xulm!K^^(7l{&pe<4{f@m;Z7}^dQFwyT*2w@N-P6|I7INbY^DW+K?|gCSVWqXOs&$ga8^lOa!3b%YDK~Z?SygL$ z)v(<(i99aT>X1XY)w$EJG(yFRG{KGZ9+S(ro*nIc@(Wa>-1^$OdkM`WNO z4o@NI(Hc;2@H~7MJI8jT#6ct*yRrh3{dxul{$|BvdIG5~25F44s`r(2GSA5| z62wArL?ChbAY6+AafYl@CNm2>25D(ldKk)XmRmnVDd;Q;(qkFnVYVBR{p&ox3)o9; zIdggnEqm;elR{0HsHsKa{`j2> zEzahB+V?ZD8Qn;>AN;r7=q+zdWU)5SZW*7tjP-f(4vLTTJF`dgeNiU1f|6CXtPxOA zp%?P=ztnFD90#04*Rues>$>Kw%6YzEciklOBKW*^yy97UrJW6<((Sqy^OPsqg<(;2 zcCd`?4n6id9^Xfb#sk?E2)~nPxI}|Zw7|J+mcL`|ay5o+zG|+rq|y9`4!)TaH7QaE z4pr+5eq4*R^(8Ve+t8kor5VEu*?2e|Cq;4-OqnLKL0$yH;sbviQ@y=W(0oib^uL-+ za=dJ4#IgeNM}N1oV~tW!)Q<@ z4`6P!dUkl6aM16ziGx5)8p&X?(CD6Mlk`m^G~1PJ3(|?R+S!UHZGpA_uF-0}l?h0- zI0SW5J=SpR76*MY%=TI}wBcx{cHyDD!1-rSfkN}b%oXe--lXE(q1VoGEVPk7c^Pew ze*Op=qi=hEztQ~q*zeb=6VU7FIhZTkHzri7p2-((m;ldWQv72s_~u z2^y2E^|r3tuZ#&&9JiFHq`r?#L~x%;{NvZv$37Aa;}Kdf$<)EBr8Qmx1#O&9e_np) z$GLw-&T3^NkRmZ3i8@`-AVhBzqCjjvXkL);Z5=3qu2@uPcVBjc}` z$W9)lsa4);3cja>`;Hvw&m{NuAq?Ty@5dTJyosz`CvqpvTrKi9_>*^`%1m$hZ$Hxh z_vd{VXmQ;R;8**NYa%_I`Ol|RRLJ6C=>YQU`}^n7pX4udzu65LDUB_pVqYw{c~+ND zPzN@*t4xQVa%D*KK%eQVykN(WLsBkD>e~n zXtR}S%8+o=mvXA>s0{5=mum88Q;GA5lcs(R{gFDP(8yDXT40)=n-et1Sj^)?5SpZ5U|-($(R^inJQn!)$acU0?BMl-s}o0$3{S*DRO&+h z0LiIkcLOxs8U-+ZEvvec&u-30z^ZYPw`oN-SPqk}3|q_RT2s|R8(v^kT~d};VQv=x z*{s0aI18dQ&X1RtvJ#6ZeLfbSYMwYqMNZ<-Hf0IySWH^e!Wl^aySklZppB*QQr`d! zv}hg9_XjLc$|HMAk)_W~B)FBH0@5Kc{NM69`1AH~;ngCDD-C@xSQ)gaqLBRqgI>pk zjv5#_jfJ#b>`E^!7?3+5azh`T2e50Roc$IfZ0PL=8m(@1M1!V9n{GC3o9nru=1piI zB|D0B3Yk!0*VSHJV-GCP6S1I|f!`TX6D&NnsLc)o&2UpB*ktQGCypy=GuVndntqb5 zMjYFl3A}?FF#M+ok!bFzuxid_gT9MsZ?e-J3dWb_H9#JcGAS$Lf8Vij`zx2YPyMWH; zG_HUC$s{=P({!@O9jZ)YrmAxq>?oX(?+#2nxCxgml<06vpkD@GkoxDj(#u{k{OEo> zWti_EWgmw3Y60_?r=Kt=*1l24W(I#xzf zmP%GkijqX!bc_w{V09^kY7R*bRAQ}GM?pW)KqXvS{UIo zu?A5uQCnA;cR@ZIWqN*1H9Y5yUSXcEX}E}0YJiTSfwqs5jZEFR5w@u$f;2* zT5TXyOHk1kXb<3~hPv??B}y4O>e=bJCN<_|7DZ*r8JSsyiD{WOHE1};r544;wxdR> zaZ1XWDOx4T*|`Y@>Q*&sDrz~k#v^4QkgUYz!^FcySwhpXk%@?XfJZjFWd>J;+i$WD zBEb+Z!6cif0RZ91hr^8EiX?Bo68ndu%ry}416!VT0MLJ$nrshu1n`lZik^}Jp`n6m zwMlyb*QjhoZZRVIruG@JV_pU8?knk#%g8T=lt+#^%_$ zd3&BkF%@Mv&*I|o`77N_63&xPRG|`WQeHCB!JElGpJ^eIb~wSep7HM2NF;Hu>)P>S zUY{&h^5H{!lf1vhIAMN4iYjAX(AnPWm06fp(oGXer)Z#zq9hFvA~FV~>2Bg~b^7sV zf)Q8A9=aO#qclbj^)zx+TR{@-rlxzylC4!X5)fBc08YQ<}(DNszOx~7@ zk77PBq&jtYwZ%6I#9{}DzNzbIH`Ke+#HlYJwBYde7kS~X{x;56!VDVX&63yAZ|yCZ zhK{1%5c&dZbV5X)$yHqwht5$V&=7aNPUWW9daLF_H55l%l}n7(Ggxre>5(0hh+Wlk z^a*159kXd7whf11_-N(bq0LZte0b#6;Mdow-B!f*WBFwye!fwrR3qfj+0Bl&`YO(A zKSQ}+2cD#_$FA{zDwErZO!1?xLzv1$7+0TNH& zoTpGH!OPdc6d}ZEO|#~o$icm?*0oZOVEu1C`@iPV0z|CLn_mNEbEE|ke&(|%2<__r z3Qb?x!D0qlpoUS(0!^QJ*0qk^|0FiNu?{F8Mp)2({&+3G-lPTowSZ7?)ln$KCa>e% zypVvf5ROBi~+R9lrZD0flPrmDx5guOrXxFiOvsEDk=e`l$4-A z891=WjsK_MtLiua@^&P}0Et0Fj3|iGg%Q!q-n60B{8yQLM7*KEBd~x*aSPAlpo;xd zeG#iBIHEb1E1Z9vTG`el5Cl)J8d>b-d%lUj=cAvKfc7&^g13^NEVLKGBbzQ-=pPdW zcH0fu2W=<$NP~_+Y``oh|EsSmpC#os`r$D{k3!P0!T@O~l8|y6oTS}vYdt~XN%9K} zGiCW&NE54PIN1BK(sH&8UlH5gfry;J>nZQog)d3LKb7tO$zqW74Evuj1`Cbd0AME7 ziY--XFCxBOg2_0rB-5#XX$(iauNH1fHd!L8(p9#DjV>f-k}FV5%sCyyekxjv(EN

    +-pv@^8J3;!8nD2#sY9kqkWg%&R!iu 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

    j8|~JYxoQbS6OWApkQXmptMpor>a7e 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

    DJAu}B#D8JFXsayDY$nsLYR@qCy!ARhzkYV5v> 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�{jqHrGur9Y`%-W? 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⪻GG0D6cR6eN=_ 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≪5Fw(+4x8s`0HaAzl|4~w-vCxTMQGMkF=771@ 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,=Cr>WU6^DCR;91k%EO<+h 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%0DFQ0mFZFG-NJm<6BmMOm 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%0AwYD@l@su8cSz&>y;if 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%0A7%uAo`kC) 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 O-^HAM@4c#lfBhd@+&;Vj literal 0 HcmV?d00001

    SU@%or1MZjw)A@|59UBd@nWGS%VJ- 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